git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* [ANNOUNCE] Git v2.45.0-rc0
@ 2024-04-19 17:14  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2024-04-19 17:14 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

An early preview release Git v2.45.0-rc0 is now available for
testing at the usual places.  It is comprised of 481 non-merge
commits since v2.44.0, contributed by 77 people, 32 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.45.0-rc0' 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.44.0 are as follows.
Welcome to the Git development community!

  Ahelenia Ziemiańska, Angelo Dureghello, Aryan Gupta, Benjamin
  Flesch, Bo Anderson, Brian C Tracy, Brian Lyles, Bruno Haible,
  Chuck Lever, Dario Gjorgjevski, Dirk Gouders, Eugenio Gigante,
  Florian Schmidt, Haritha D, Harmen Stoppels, Jean-Rémy Falleri,
  Jiamu Sun, Jonas Wunderlich, Jonathan Davies, Julio Bacellari,
  Kipras Melnikovas, Matthew Rollings, Max Gautier, mirth hickford,
  Paweł Dominiak, Pi Fisher, Ralph Seichter, Richard Macklin,
  shejialuo, Steven Jeuris, Tiago Pascoal, and Vincenzo Mezzela.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Alexander Shopov, Beat Bolli, brian m. carlson, Chandra Pratap,
  Christian Couder, Derrick Stolee, Dragan Simic, Elijah Newren,
  Eric Sunshine, Eric W. Biederman, Ghanshyam Thakkar, Han Young,
  Jakub Wilk, Jean-Noël Avila, Jeff Hostetler, Jeff King,
  Johannes Schindelin, Johannes Sixt, John Cai, Josh Steadmon,
  Josh Triplett, Junio C Hamano, Justin Tobler, Karthik Nayak,
  Kristoffer Haugsbakk, Kyle Lippincott, Kyle Meyer, Linus Arver,
  Manlio Perillo, Matthias Aßhauer, M Hickford, Michael Lohmann,
  Michael Osipov, Mike Hommey, Patrick Steinhardt, Peter Hutterer,
  Philippe Blain, Phillip Wood, René Scharfe, Rubén Justo,
  Sergey Organov, SZEDER Gábor, Taylor Blau, Ville Skyttä,
  and Yasushi SHOJI.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.45 Release Notes (draft)
===============================

Backward Compatibility Notes

UI, Workflows & Features

 * Integrate the reftable code into the refs framework as a backend.
   With "git init --ref-format=reftable", hopefully it would be a lot
   more efficient to manage a repository with many references.

 * "git checkout -p" and friends learned that that "@" is a synonym
   for "HEAD".

 * Variants of vimdiff learned to honor mergetool.<variant>.layout
   settings.

 * "git reflog" learned a "list" subcommand that enumerates known reflogs.

 * When a merge conflicted at a submodule, merge-ort backend used to
   unconditionally give a lengthy message to suggest how to resolve
   it.  Now the message can be squelched as an advice message.

 * "git for-each-ref" learned "--include-root-refs" option to show
   even the stuff outside the 'refs/' hierarchy.

 * "git rev-list --missing=print" has learned to optionally take
   "--allow-missing-tips", which allows the objects at the starting
   points to be missing.

 * "git merge-tree" has learned that the three trees involved in the
   3-way merge only need to be trees, not necessarily commits.

 * "git log --merge" learned to pay attention to CHERRY_PICK_HEAD and
   other kinds of *_HEAD pseudorefs.

 * Platform specific tweaks for OS/390 has been added to
   config.mak.uname.

 * Users with safe.bareRepository=explicit can still work from within
   $GIT_DIR of a seconary worktree (which resides at .git/worktrees/$name/)
   of the primary worktree without explicitly specifying the $GIT_DIR
   environment variable or the --git-dir=<path> option.

 * The output format for dates "iso-strict" has been tweaked to show
   a time in the Zulu timezone with "Z" suffix, instead of "+00:00".

 * "git diff" and friends learned two extra configuration variables,
   diff.srcPrefix and diff.dstPrefix.

 * The status.showUntrackedFiles configuration variable had a name
   that tempts users to set a Boolean value expressed in our usual
   "false", "off", and "0", but it only took "no".  This has been
   corrected so "true" and its synonyms are taken as "normal", while
   "false" and its synonyms are taken as "no".

 * Remove an ancient and not well maintained Hg-to-git migration
   script from contrib/.

 * Hints that suggest what to do after resolving conflicts can now be
   squelched by disabling advice.mergeConflict.

 * Allow git-cherry-pick(1) to automatically drop redundant commits via
   a new `--empty` option, similar to the `--empty` options for
   git-rebase(1) and git-am(1). Includes a soft deprecation of
   `--keep-redundant-commits` as well as some related docs changes and
   sequencer code cleanup.

 * "git config" learned "--comment=<message>" option to leave a
   comment immediately after the "variable = value" on the same line
   in the configuration file.

 * core.commentChar used to be limited to a single byte, but has been
   updated to allow an arbitrary multi-byte sequence.

 * "git add -p" and other "interactive hunk selection" UI has learned to
   skip showing the hunk immediately after it has already been shown, and
   an additional action to explicitly ask to reshow the current hunk.

 * "git pack-refs" learned the "--auto" option, which is a useful
   addition to be triggered from "git gc --auto".

 * "git add -u <pathspec>" and "git commit [-i] <pathspec>" did not
   diagnose a pathspec element that did not match any files in certain
   situations, unlike "git add <pathspec>" did.

 * The userdiff patterns for C# has been updated.


Performance, Internal Implementation, Development Support etc.

 * The code to iterate over refs with the reftable backend has seen
   some optimization.

 * More tests that are marked as "ref-files only" have been updated to
   improve test coverage of reftable backend.

 * Some parts of command line completion script (in contrib/) have
   been micro-optimized.

 * The way placeholders are to be marked-up in documentation have been
   specified; use "_<placeholder>_" to typeset the word inside a pair
   of <angle-brakets> emphasized.

 * "git --no-lazy-fetch cmd" allows to run "cmd" while disabling lazy
   fetching of objects from the promisor remote, which may be handy
   for debugging.

 * The implementation in "git clean" that makes "-n" and "-i" ignore
   clean.requireForce has been simplified, together with the
   documentation.

 * The code to iterate over refs with the reftable backend has seen
   some optimization.

 * Uses of xwrite() helper have been audited and updated for better
   error checking and simpler code.

 * Some trace2 events that lacked def_param have learned to show it,
   enriching the output.

 * The parse-options code that deals with abbreviated long option
   names have been cleaned up.

 * The code in reftable backend that creates new table files works
   better with the tempfile framework to avoid leaving cruft after a
   failure.

 * The reftable code has its own custom binary search function whose
   comparison callback has an unusual interface, which caused the
   binary search to degenerate into a linear search, which has been
   corrected.

 * The code to iterate over reflogs in the reftable has been optimized
   to reduce memory allocation and deallocation.

 * Work to support a repository that work with both SHA-1 and SHA-256
   hash algorithms has started.

 * A new fuzz target that exercises config parsing code has been
   added.

 * Fix the way recently added tests interpolate variables defined
   outside them, and document the best practice to help future
   developers.

 * Introduce an experimental protocol for contributors to propose the
   topic description to be used in the "What's cooking" report, the
   merge commit message for the topic, and in the release notes and
   document it in the SubmittingPatches document.

 * The t/README file now gives a hint on running individual tests in
   the "t/" directory with "make t<num>-*.sh t<num>-*.sh".
   (merge 8d383806fc pb/test-scripts-are-build-targets later to maint).

 * The "hint:" messages given by the advice mechanism, when given a
   message with a blank line, left a line with trailing whitespace,
   which has been cleansed.

 * Documentation rules has been explicitly described how to mark-up
   literal parts and a few manual pages have been updated as examples.

 * The .editorconfig file has been taught that a Makefile uses HT
   indentation.

 * t-prio-queue test has been cleaned up by using C99 compound
   literals; this is meant to also serve as a weather-balloon to smoke
   out folks with compilers who have trouble compiling code that uses
   the feature.

 * Windows binary used to decide the use of unix-domain socket at
   build time, but it learned to make the decision at runtime instead.

 * The "shared repository" test in the t0610 reftable test failed
   under restrictive umask setting (e.g. 007), which has been
   corrected.

 * Document and apply workaround for a buggy version of dash that
   mishandles "local var=val" construct.

 * The codepaths that reach date_mode_from_type() have been updated to
   pass "struct date_mode" by value to make them thread safe.

 * The strategy to compact multiple tables of reftables after many
   operations accumulate many entries has been improved to avoid
   accumulating too many tables uncollected.


Fixes since v2.44
-----------------

 * "git apply" on a filesystem without filemode support have learned
   to take a hint from what is in the index for the path, even when
   not working with the "--index" or "--cached" option, when checking
   the executable bit match what is required by the preimage in the
   patch.
   (merge 45b625142d cp/apply-core-filemode later to maint).

 * "git column" has been taught to reject negative padding value, as
   it would lead to nonsense behaviour including division by zero.
   (merge 76fb807faa kh/column-reject-negative-padding later to maint).

 * "git am --help" now tells readers what actions are available in
   "git am --whitespace=<action>", in addition to saying that the
   option is passed through to the underlying "git apply".
   (merge a171dac734 jc/am-whitespace-doc later to maint).

 * "git tag --column" failed to check the exit status of its "git
   column" invocation, which has been corrected.
   (merge 92e66478fc rj/tag-column-fix later to maint).

 * Credential helper based on libsecret (in contrib/) has been updated
   to handle an empty password correctly.
   (merge 8f1f2023b7 mh/libsecret-empty-password-fix later to maint).

 * "git difftool --dir-diff" learned to honor the "--trust-exit-code"
   option; it used to always exit with 0 and signalled success.
   (merge eb84c8b6ce ps/difftool-dir-diff-exit-code later to maint).

 * The code incorrectly attempted to use textconv cache when asked,
   even when we are not running in a repository, which has been
   corrected.
   (merge affe355fe7 jk/textconv-cache-outside-repo-fix later to maint).

 * Remove an empty file that shouldn't have been added in the first
   place.
   (merge 4f66942215 js/remove-cruft-files later to maint).

 * The logic to access reflog entries by date and number had ugly
   corner cases at the boundaries, which have been cleaned up.
   (merge 5edd126720 jk/reflog-special-cases-fix later to maint).

 * An error message from "git upload-pack", which responds to "git
   fetch" requests, had a trialing NUL in it, which has been
   corrected.
   (merge 3f4c7a0805 sg/upload-pack-error-message-fix later to maint).

 * Clarify wording in the CodingGuidelines that requires <git-compat-util.h>
   to be the first header file.
   (merge 4e89f0e07c jc/doc-compat-util later to maint).

 * "git commit -v --cleanup=scissors" used to add the scissors line
   twice in the log message buffer, which has been corrected.
   (merge e90cc075cc jt/commit-redundant-scissors-fix later to maint).

 * A custom remote helper no longer cannot access the newly created
   repository during "git clone", which is a regression in Git 2.44.
   This has been corrected.
   (merge 199f44cb2e ps/remote-helper-repo-initialization-fix later to maint).

 * Various parts of upload-pack has been updated to bound the resource
   consumption relative to the size of the repository to protect from
   abusive clients.
   (merge 6cd05e768b jk/upload-pack-bounded-resources later to maint).

 * The upload-pack program, when talking over v2, accepted the
   packfile-uris protocol extension from the client, even if it did
   not advertise the capability, which has been corrected.
   (merge a922bfa3b5 jk/upload-pack-v2-capability-cleanup later to maint).

 * Make sure failure return from merge_bases_many() is properly caught.
   (merge 25fd20eb44 js/merge-base-with-missing-commit later to maint).

 * FSMonitor client code was confused when FSEvents were given in a
   different case on a case-insensitive filesystem, which has been
   corrected.
   (merge 29c139ce78 jh/fsmonitor-icase-corner-case-fix later to maint).

 * The "core.commentChar" configuration variable only allows an ASCII
   character, which was not clearly documented, which has been
   corrected.
   (merge fb7c556f58 kh/doc-commentchar-is-a-byte later to maint).

 * With release 2.44 we got rid of all uses of test_i18ngrep and there
   is no in-flight topic that adds a new use of it.  Make a call to
   test_i18ngrep a hard failure, so that we can remove it at the end
   of this release cycle.
   (merge 381a83dfa3 jc/test-i18ngrep later to maint).

 * The command line completion script (in contrib/) learned to
   complete "git reflog" better.
   (merge 1284f9cc11 rj/complete-reflog later to maint).

 * The logic to complete the command line arguments to "git worktree"
   subcommand (in contrib/) has been updated to correctly honor things
   like "git -C dir" etc.
   (merge 3574816d98 rj/complete-worktree-paths-fix later to maint).

 * When git refuses to create a branch because the proposed branch
   name is not a valid refname, an advice message is given to refer
   the user to exact naming rules.
   (merge 8fbd903e58 kh/branch-ref-syntax-advice later to maint).

 * Code simplification by getting rid of code that sets an environment
   variable that is no longer used.
   (merge 72a8d3f027 pw/rebase-i-ignore-cherry-pick-help-environment later to maint).

 * The code to find the effective end of log message can fall into an
   endless loop, which has been corrected.
   (merge 2541cba2d6 fs/find-end-of-log-message-fix later to maint).

 * Mark-ups used in the documentation has been improved for
   consistency.
   (merge 45d5ed3e50 ja/doc-markup-fixes later to maint).

 * The status.showUntrackedFiles configuration variable was
   incorrectly documented to accept "false", which has been corrected.

 * Leaks from "git restore" have been plugged.
   (merge 2f64da0790 rj/restore-plug-leaks later to maint).

 * "git bugreport --no-suffix" was not supported and instead
   segfaulted, which has been corrected.
   (merge b3b57c69da js/bugreport-no-suffix-fix later to maint).

 * The documentation for "%(trailers[:options])" placeholder in the
   "--pretty" option of commands in the "git log" family has been
   updated.
   (merge bff85a338c bl/doc-key-val-sep-fix later to maint).

 * "git checkout --conflict=bad" reported a bad conflictStyle as if it
   were given to a configuration variable; it has been corrected to
   report that the command line option is bad.
   (merge 5a99c1ac1a pw/checkout-conflict-errorfix later to maint).

 * Code clean-up in the "git log" machinery that implements custom log
   message formatting.
   (merge 1c10b8e5b0 jk/pretty-subject-cleanup later to maint).

 * "git config" corrupted literal HT characters written in the
   configuration file as part of a value, which has been corrected.
   (merge e6895c3f97 ds/config-internal-whitespace-fix later to maint).

 * A unit test for reftable code tried to enumerate all files in a
   directory after reftable operations and expected to see nothing but
   the files it wanted to leave there, but was fooled by .nfs* cruft
   files left, which has been corrected.
   (merge 0068aa7946 ps/reftable-unit-test-nfs-workaround later to maint).

 * The implementation and documentation of "object-format" option
   exchange between the Git itself and its remote helpers did not
   quite match, which has been corrected.

 * The "--pretty=<shortHand>" option of the commands in the "git log"
   family, defined as "[pretty] shortHand = <expansion>" should have
   been looked up case insensitively, but was not, which has been
   corrected.
   (merge f999d5188b bl/pretty-shorthand-config-fix later to maint).

 * "git apply" failed to extract the filename the patch applied to,
   when the change was about an empty file created in or deleted from
   a directory whose name ends with a SP, which has been corrected.
   (merge 776ffd1a30 jc/apply-parse-diff-git-header-names-fix later to maint).

 * Update a more recent tutorial doc.
   (merge 95ab557b4b dg/myfirstobjectwalk-updates later to maint).

 * The test script had an incomplete and ineffective attempt to avoid
   clobbering the testing user's real crontab (and its equivalents),
   which has been completed.
   (merge 73cb87773b es/test-cron-safety later to maint).

 * Use advice_if_enabled() API to rewrite a simple pattern to
   call advise() after checking advice_enabled().
   (merge 6412d01527 rj/use-adv-if-enabled later to maint).

 * Another "set -u" fix for the bash prompt (in contrib/) script.
   (merge d7805bc743 vs/complete-with-set-u-fix later to maint).

 * "git checkout/switch --detach foo", after switching to the detached
   HEAD state, gave the tracking information for the 'foo' branch,
   which was pointless.

 * "git apply" has been updated to lift the hardcoded pathname length
   limit, which in turn allowed a mksnpath() function that is no
   longer used.
   (merge 708f7e0590 rs/apply-lift-path-length-limit later to maint).

 * A file descriptor leak in an error codepath, used when "git apply
   --reject" fails to create the *.rej file, has been corrected.
   (merge 2b1f456adf rs/apply-reject-fd-leakfix later to maint).

 * A config parser callback function fell through instead of returning
   after recognising and processing a variable, wasting cycles, which
   has been corrected.
   (merge a816ccd642 ds/fetch-config-parse-microfix later to maint).

 * Fix was added to work around a regression in libcURL 8.7.0 (which has
   already been fixed in their tip of the tree).
   (merge 92a209bf24 jk/libcurl-8.7-regression-workaround later to maint).

 * The variable that holds the value read from the core.excludefile
   configuration variable used to leak, which has been corrected.
   (merge 0e0fefb29f jc/unleak-core-excludesfile later to maint).

 * vreportf(), which is usede by error() and friends, has been taught
   to give the error message printf-format string when its vsnprintf()
   call fails, instead of showing nothing useful to identify the
   nature of the error.
   (merge c63adab961 rs/usage-fallback-to-show-message-format later to maint).

 * Adjust to an upcoming changes to GNU make that breaks our Makefiles.
   (merge 227b8fd902 tb/make-indent-conditional-with-non-spaces later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge f0e578c69c rs/use-xstrncmpz later to maint).
   (merge 83e6eb7d7a ba/credential-test-clean-fix later to maint).
   (merge 64562d784d jb/doc-interactive-singlekey-do-not-need-perl later to maint).
   (merge c431a235e2 cp/t9146-use-test-path-helpers later to maint).
   (merge 82d75402d5 ds/doc-send-email-capitalization later to maint).
   (merge 41bff66e35 jc/doc-add-placeholder-fix later to maint).
   (merge 6835f0efe9 jw/remote-doc-typofix later to maint).
   (merge 244001aa20 hs/rebase-not-in-progress later to maint).
   (merge 2ca6c07db2 jc/no-include-of-compat-util-from-headers later to maint).
   (merge 87bd7fbb9c rs/fetch-simplify-with-starts-with later to maint).
   (merge f39addd0d9 rs/name-rev-with-mempool later to maint).
   (merge 9a97b43e03 rs/submodule-prefix-simplify later to maint).
   (merge 40b8076462 ak/rebase-autosquash later to maint).
   (merge 3223204456 eg/add-uflags later to maint).
   (merge 5f78d52dce es/config-doc-sort-sections later to maint).
   (merge 781fb7b4c2 as/option-names-in-messages later to maint).
   (merge 51d41dc243 jk/doc-remote-helpers-markup-fix later to maint).
   (merge e1aaf309db pb/ci-win-artifact-names-fix later to maint).
   (merge ad538c61da jc/index-pack-fsck-levels later to maint).
   (merge 67471bc704 ja/doc-formatting-fix later to maint).
   (merge 86f9ce7dd6 bl/doc-config-fixes later to maint).
   (merge 0d527842b7 az/grep-group-error-message-update later to maint).
   (merge 7c43bdf07b rs/strbuf-expand-bad-format later to maint).
   (merge 8b68b48d5c ds/typofix-core-config-doc later to maint).
   (merge 39bb692152 rs/imap-send-use-xsnprintf later to maint).
   (merge 8d320cec60 jc/t2104-style-fixes later to maint).
   (merge b4454d5a7b pw/t3428-cleanup later to maint).
   (merge 84a7c33a4b pf/commitish-committish later to maint).
   (merge 8882ee9d68 la/mailmap-entry later to maint).

----------------------------------------------------------------

Changes since v2.44.0 are as follows:

Ahelenia Ziemiańska (1):
      grep: improve errors for unmatched ( and )

Alexander Shopov (4):
      transport-helper.c: trivial fix of error message
      builtin/remote.c: trivial fix of error message
      builtin/clone.c: trivial fix of message
      revision.c: trivial fix to message

Aryan Gupta (1):
      tests: modernize the test script t0010-racy-git.sh

Beat Bolli (25):
      completion: use awk for filtering the config entries
      date: make "iso-strict" conforming for the UTC timezone
      t0006: add more tests with a negative TZ offset
      doc: avoid redundant use of cat
      contrib/subtree/t: avoid redundant use of cat
      t/lib-cvs.sh: avoid redundant use of cat
      t/annotate-tests.sh: avoid redundant use of cat
      t/perf: avoid redundant use of cat
      t/t0*: avoid redundant uses of cat
      t/t1*: avoid redundant uses of cat
      t/t3*: avoid redundant uses of cat
      t/t4*: avoid redundant uses of cat
      t/t5*: avoid redundant uses of cat
      t/t6*: avoid redundant uses of cat
      t/t7*: avoid redundant use of cat
      t/t8*: avoid redundant use of cat
      t/t9*: avoid redundant uses of cat
      t/t1*: merge a "grep | sed" pipeline
      t/t3*: merge a "grep | awk" pipeline
      t/t4*: merge a "grep | sed" pipeline
      t/t5*: merge a "grep | sed" pipeline
      t/t8*: merge "grep | sed" pipelines
      t/t9*: merge "grep | sed" pipelines
      contrib/coverage-diff: avoid redundant pipelines
      git-quiltimport: avoid an unnecessary subshell

Bo Anderson (5):
      t/lib-credential: clean additional credential
      osxkeychain: replace deprecated SecKeychain API
      osxkeychain: erase all matching credentials
      osxkeychain: erase matching passwords only
      osxkeychain: store new attributes

Brian C Tracy (1):
      fuzz: add fuzzer for config parsing

Brian Lyles (13):
      docs: clarify file options in git-config `--edit`
      docs: fix typo in git-config `--default`
      docs: correct trailer `key_value_separator` description
      docs: adjust trailer `separator` and `key_value_separator` language
      pretty: update tests to use `test_config`
      pretty: find pretty formats case-insensitively
      docs: address inaccurate `--empty` default with `--exec`
      docs: clean up `--empty` formatting in git-rebase(1) and git-am(1)
      rebase: update `--empty=ask` to `--empty=stop`
      sequencer: handle unborn branch with `--allow-empty`
      sequencer: do not require `allow_empty` for redundant commit options
      cherry-pick: enforce `--keep-redundant-commits` incompatibility
      cherry-pick: add `--empty` for more robust redundant commit handling

Chandra Pratap (2):
      apply: ignore working tree filemode when !core.filemode
      t9146: replace test -d/-e/-f with appropriate test_path_is_* function

Christian Couder (5):
      revision: clarify a 'return NULL' in get_reference()
      oidset: refactor oidset_insert_from_set()
      t6022: fix 'test' style and 'even though' typo
      rev-list: allow missing tips with --missing=[print|allow*]
      revision: fix --missing=[print|allow*] for annotated tags

Derrick Stolee (1):
      fetch: return when parsing submodule.recurse

Dirk Gouders (6):
      Documentation/user-manual.txt: example for generating object hashes
      MyFirstObjectWalk: use additional arg in config_fn_t
      MyFirstObjectWalk: fix misspelled "builtins/"
      MyFirstObjectWalk: fix filtered object walk
      MyFirstObjectWalk: fix description for counting omitted objects
      MyFirstObjectWalk: add stderr to pipe processing

Dragan Simic (8):
      documentation: send-email: use camel case consistently
      config: minor addition of whitespace
      config: really keep value-internal whitespace verbatim
      t1300: add more tests for whitespace and inline comments
      config.txt: describe handling of whitespace further
      grep docs: describe --recurse-submodules further and improve formatting a bit
      grep docs: describe --no-index further and improve formatting a bit
      config: fix some small capitalization issues, as spotted

Eric Sunshine (2):
      docs: sort configuration variable groupings alphabetically
      test-lib: fix non-functioning GIT_TEST_MAINT_SCHEDULER fallback

Eric W. Biederman (23):
      object-file-convert: stubs for converting from one object format to another
      oid-array: teach oid-array to handle multiple kinds of oids
      object-names: support input of oids in any supported hash
      repository: add a compatibility hash algorithm
      loose: compatibilty short name support
      object-file: update the loose object map when writing loose objects
      object-file: add a compat_oid_in parameter to write_object_file_flags
      commit: convert mergetag before computing the signature of a commit
      commit: export add_header_signature to support handling signatures on tags
      tag: sign both hashes
      object: factor out parse_mode out of fast-import and tree-walk into in object.h
      object-file-convert: don't leak when converting tag objects
      object-file-convert: convert commits that embed signed tags
      object-file: update object_info_extended to reencode objects
      rev-parse: add an --output-object-format parameter
      builtin/cat-file: let the oid determine the output algorithm
      tree-walk: init_tree_desc take an oid to get the hash algorithm
      object-file: handle compat objects in check_object_signature
      builtin/ls-tree: let the oid determine the output algorithm
      test-lib: compute the compatibility hash so tests may use it
      t1006: rename sha1 to oid
      t1006: test oid compatibility with cat-file
      t1016-compatObjectFormat: add tests to verify the conversion between objects

Eugenio Gigante (1):
      add: use unsigned type for collection of bits

Florian Schmidt (1):
      wt-status: don't find scissors line beyond buf len

Ghanshyam Thakkar (5):
      add-patch: classify '@' as a synonym for 'HEAD'
      add -p tests: remove PERL prerequisites
      setup: remove unnecessary variable
      builtin/commit: error out when passing untracked path with -i
      builtin/add: error out when passing untracked path with -u

Haritha D (1):
      build: support z/OS (OS/390).

Harmen Stoppels (1):
      rebase: make warning less passive aggressive

Jakub Wilk (1):
      git-remote.txt: fix typo

Jean-Noël Avila (17):
      doc: git-rev-parse: enforce command-line description syntax
      doc: close unclosed angle-bracket of a placeholder in git-clone doc
      doc: end sentences with full-stop
      doc: clarify the format of placeholders
      doc: git-init: format verbatim parts
      doc: git-init: format placeholders
      doc: git-init: rework definition lists
      doc: git-init: rework config item init.templateDir
      doc: git-clone: format verbatim words
      doc: git-clone: format placeholders
      doc: format alternatives in synopsis
      doc: fix some placeholders formating
      doc: rework CodingGuidelines with new formatting rules
      doc: allow literal and emphasis format in doc vs help tests
      doc: git-init: apply new documentation formatting guidelines
      doc: git-clone: apply new documentation formatting guidelines
      doc: git-clone: do not autoreference the manpage in itself

Jeff Hostetler (17):
      name-hash: add index_dir_find()
      t7527: add case-insensitve test for FSMonitor
      fsmonitor: refactor refresh callback on directory events
      fsmonitor: clarify handling of directory events in callback helper
      fsmonitor: refactor refresh callback for non-directory events
      dir: create untracked_cache_invalidate_trimmed_path()
      fsmonitor: refactor untracked-cache invalidation
      fsmonitor: move untracked-cache invalidation into helper functions
      fsmonitor: return invalidated cache-entry count on directory event
      fsmonitor: remove custom loop from non-directory path handler
      fsmonitor: return invalidated cache-entry count on non-directory event
      fsmonitor: trace the new invalidated cache-entry count
      fsmonitor: refactor bit invalidation in refresh callback
      fsmonitor: support case-insensitive events
      t0211: demonstrate missing 'def_param' events for certain commands
      trace2: avoid emitting 'def_param' set more than once
      trace2: emit 'def_param' set with 'cmd_name' event

Jeff King (51):
      t0303: check that helper_test_clean removes all credentials
      userdiff: skip textconv caching when not in a repository
      Revert "refs: allow @{n} to work with n-sized reflog"
      get_oid_basic(): special-case ref@{n} for oldest reflog entry
      read_ref_at(): special-case ref@{0} for an empty reflog
      upload-pack: drop separate v2 "haves" array
      upload-pack: switch deepen-not list to an oid_array
      upload-pack: use oidset for deepen_not list
      upload-pack: use a strmap for want-ref lines
      upload-pack: accept only a single packfile-uri line
      upload-pack: always turn off save_commit_buffer
      upload-pack: use PARSE_OBJECT_SKIP_HASH_CHECK in more places
      upload-pack: free tree buffers after parsing
      upload-pack: use repository struct to get config
      upload-pack: centralize setup of sideband-all config
      upload-pack: use existing config mechanism for advertisement
      upload-pack: only accept packfile-uris if we advertised it
      doc/gitremote-helpers: fix missing single-quote
      config: forbid newline as core.commentChar
      strbuf: simplify comment-handling in add_lines() helper
      strbuf: avoid static variables in strbuf_add_commented_lines()
      commit: refactor base-case of adjust_comment_line_char()
      strbuf: avoid shadowing global comment_line_char name
      environment: store comment_line_char as a string
      strbuf: accept a comment string for strbuf_stripspace()
      strbuf: accept a comment string for strbuf_commented_addf()
      strbuf: accept a comment string for strbuf_add_commented_lines()
      prefer comment_line_str to comment_line_char for printing
      find multi-byte comment chars in NUL-terminated strings
      find multi-byte comment chars in unterminated buffers
      sequencer: handle multi-byte comment characters when writing todo list
      wt-status: drop custom comment-char stringification
      environment: drop comment_line_char compatibility macro
      config: allow multi-byte core.commentChar
      shortlog: stop setting pp.print_email_subject
      pretty: split oneline and email subject printing
      pretty: drop print_email_subject flag
      log: do not set up extra_headers for non-email formats
      format-patch: return an allocated string from log_write_email_headers()
      format-patch: simplify after-subject MIME header handling
      doc/gitremote-helpers: fix more missing single-quotes
      transport-helper: use write helpers more consistently
      transport-helper: drop "object-format <algo>" option
      transport-helper: send "true" value for object-format option
      contrib: drop hg-to-git script
      format-patch: fix leak of empty header string
      rebase: use child_process_clear() to clean
      config: add core.commentString
      http: reset POSTFIELDSIZE when clearing curl handle
      INSTALL: bump libcurl version to 7.21.3
      remote-curl: add Transfer-Encoding header only for older curl

Jiamu Sun (1):
      bugreport.c: fix a crash in `git bugreport` with `--no-suffix` option

Johannes Schindelin (22):
      merge-tree: accept 3 trees as arguments
      merge-tree: fail with a non-zero exit code on missing tree objects
      merge-ort: do check `parse_tree()`'s return value
      t4301: verify that merge-tree fails on missing blob objects
      Always check `parse_tree*()`'s return value
      cache-tree: avoid an unnecessary check
      fill_tree_descriptor(): mark error message for translation
      neue: remove a bogus empty file
      commit-reach(paint_down_to_common): plug two memory leaks
      commit-reach(repo_in_merge_bases_many): optionally expect missing commits
      commit-reach(repo_in_merge_bases_many): report missing commits
      commit-reach(paint_down_to_common): prepare for handling shallow commits
      commit-reach(paint_down_to_common): start reporting errors
      commit-reach(merge_bases_many): pass on "missing commits" errors
      commit-reach(get_merge_bases_many_0): pass on "missing commits" errors
      commit-reach(repo_get_merge_bases): pass on "missing commits" errors
      commit-reach(get_octopus_merge_bases): pass on "missing commits" errors
      commit-reach(repo_get_merge_bases_many): pass on "missing commits" errors
      commit-reach(repo_get_merge_bases_many_dirty): pass on errors
      merge-recursive: prepare for `merge_submodule()` to report errors
      merge-ort/merge-recursive: do report errors in `merge_submodule()`
      merge-tree: fix argument type of the `--merge-base` option

John Cai (1):
      t5300: fix test_with_bad_commit()

Jonas Wunderlich (1):
      doc: status.showUntrackedFiles does not take "false"

Josh Triplett (2):
      commit: avoid redundant scissor line with --cleanup=scissors -v
      commit: unify logic to avoid multiple scissors lines when merging

Julio Bacellari (1):
      doc: remove outdated information about interactive.singleKey

Junio C Hamano (61):
      apply: correctly reverse patch's pre- and post-image mode bits
      apply: code simplification
      t9210: do not rely on lazy fetching to fail
      git: --no-lazy-fetch option
      doc: add shortcut to "am --whitespace=<action>"
      doc: apply the new placeholder rules to git-add documentation
      compat: drop inclusion of <git-compat-util.h>
      Start the 2.45 cycle
      git: document GIT_NO_REPLACE_OBJECTS environment variable
      doc: clarify the wording on <git-compat-util.h> requirement
      git: extend --no-lazy-fetch to work across subprocesses
      The second batch
      The third batch
      test_i18ngrep: hard deprecate and forbid its use
      unpack: replace xwrite() loop with write_in_full()
      sideband: avoid short write(2)
      repack: check error writing to pack-objects subprocess
      clean: further clean-up of implementation around "--force"
      The fourth batch
      The fifth batch
      setup: notice more types of implicit bare repositories
      The sixth batch
      status: unify parsing of --untracked= and status.showUntrackedFiles
      status: allow --untracked=false and friends
      The seventh batch
      The eighth batch
      config: fix --comment formatting
      config: allow tweaking whitespace between value and comment
      diff.*Prefix: use camelCase in the doc and test titles
      The ninth batch
      apply: parse names out of "diff --git" more carefully
      The tenth batch
      The eleventh batch
      SubmittingPatches: release-notes entry experiment
      The twelfth batch
      t4126: make sure a directory with SP at the end is usable
      t4126: fix "funny directory name" test on Windows (again)
      advice: omit trailing whitespace
      checkout: omit "tracking" information on a detached HEAD
      The thirteenth batch
      t2104: style fixes
      The fourteenth batch
      revision: optionally record matches with pathspec elements
      The fifteenth batch
      CodingGuidelines: describe "export VAR=VAL" rule
      CodingGuidelines: quote assigned value in 'local var=$val'
      t: local VAR="VAL" (quote positional parameters)
      t: local VAR="VAL" (quote command substitution)
      t: local VAR="VAL" (quote ${magic-reference})
      t: teach lint that RHS of 'local VAR=VAL' needs to be quoted
      t0610: local VAR="VAL" fix
      t1016: local VAR="VAL" fix
      config: do not leak excludes_file
      Makefile(s): do not enforce "all indents must be done with tab"
      The sixteenth batch
      t2104: style fixes
      The seventeenth batch
      The eighteenth batch
      The ninteenth batch
      The twentieth batch
      Git 2.45-rc0

Justin Tobler (3):
      reftable/stack: expose option to disable auto-compaction
      reftable/stack: add env to disable autocompaction
      reftable/stack: use geometric table compaction

Karthik Nayak (7):
      refs: introduce `is_pseudoref()` and `is_headref()`
      refs: extract out `loose_fill_ref_dir_regular_file()`
      refs: introduce `refs_for_each_include_root_refs()`
      ref-filter: rename 'FILTER_REFS_ALL' to 'FILTER_REFS_REGULAR'
      for-each-ref: add new option to include root refs
      update-ref: use {old,new}-oid instead of {old,new}value
      githooks: use {old,new}-oid instead of {old,new}-value

Kipras Melnikovas (1):
      mergetools: vimdiff: use correct tool's name when reading mergetool config

Kristoffer Haugsbakk (9):
      column: disallow negative padding
      column: guard against negative padding
      gitcli: drop mention of “non-dashed form”
      config: document `core.commentChar` as ASCII-only
      t3200: improve test style
      advice: make all entries stylistically consistent
      advice: use backticks for verbatim
      advice: use double quotes for regular quoting
      branch: advise about ref syntax rules

Linus Arver (10):
      trailer: free trailer_info _after_ all related usage
      shortlog: add test for de-duplicating folded trailers
      trailer: rename functions to use 'trailer'
      trailer: reorder format_trailers_from_commit() parameters
      trailer: move interpret_trailers() to interpret-trailers.c
      trailer_info_get(): reorder parameters
      format_trailers(): use strbuf instead of FILE
      format_trailer_info(): move "fast path" to caller
      format_trailers_from_commit(): indirectly call trailer_info_get()
      mailmap: change primary address for Linus Arver

M Hickford (1):
      libsecret: retrieve empty password

Matthias Aßhauer (1):
      Win32: detect unix socket support at runtime

Max Gautier (1):
      editorconfig: add Makefiles to "text files"

Michael Lohmann (2):
      revision: ensure MERGE_HEAD is a ref in prepare_show_merge
      revision: implement `git log --merge` also for rebase/cherry-pick/revert

Patrick Steinhardt (84):
      refs: introduce reftable backend
      ci: add jobs to test with the reftable backend
      refs/reftable: fix leak when copying reflog fails
      reftable/record: introduce function to compare records by key
      reftable/merged: allocation-less dropping of shadowed records
      reftable/merged: skip comparison for records of the same subiter
      reftable/pq: allocation-less comparison of entry keys
      reftable/block: swap buffers instead of copying
      reftable/record: don't try to reallocate ref record name
      reftable/reader: add comments to `table_iter_next()`
      t: move tests exercising the "files" backend
      t0410: convert tests to use DEFAULT_REPO_FORMAT prereq
      t1400: exercise reflog with gaps with reftable backend
      t1404: make D/F conflict tests compatible with reftable backend
      t1405: remove unneeded cleanup step
      t2011: exercise D/F conflicts with HEAD with the reftable backend
      t7003: ensure filter-branch prunes reflogs with the reftable backend
      git-difftool--helper: honor `--trust-exit-code` with `--dir-diff`
      dir-iterator: pass name to `prepare_next_entry_data()` directly
      dir-iterator: support iteration in sorted order
      refs/files: sort reflogs returned by the reflog iterator
      refs/files: sort merged worktree and common reflogs
      refs: always treat iterators as ordered
      refs: drop unused params from the reflog iterator callback
      refs: stop resolving ref corresponding to reflogs
      builtin/reflog: introduce subcommand to list reflogs
      builtin/clone: allow remote helpers to detect repo
      refs/reftable: don't fail empty transactions in repo without HEAD
      reftable/pq: use `size_t` to track iterator index
      reftable/merged: make `merged_iter` structure private
      reftable/merged: advance subiter on subsequent iteration
      reftable/merged: make subiters own their records
      reftable/merged: remove unnecessary null check for subiters
      reftable/merged: handle subiter cleanup on close only
      reftable/merged: circumvent pqueue with single subiter
      reftable/merged: avoid duplicate pqueue emptiness check
      reftable/record: reuse refname when decoding
      reftable/record: reuse refname when copying
      reftable/record: decode keys in place
      reftable: allow inlining of a few functions
      refs/reftable: precompute prefix length
      refs/reftable: reload correct stack when creating reflog iter
      reftable/record: convert old and new object IDs to arrays
      reftable/record: avoid copying author info
      reftable/record: reuse refnames when decoding log records
      reftable/record: reuse message when decoding log records
      reftable/record: use scratch buffer when decoding records
      refs/reftable: track last log record name via strbuf
      t0610: remove unused variable assignment
      lockfile: report when rollback fails
      reftable/stack: register new tables as tempfiles
      reftable/stack: register lockfiles during compaction
      reftable/stack: register compacted tables as tempfiles
      reftable/record: fix memory leak when decoding object records
      reftable/block: fix binary search over restart counter
      t5601: exercise clones with "includeIf.*.onbranch"
      reftable: fix tests being broken by NFS' delete-after-close semantics
      t7800: improve test descriptions with empty arguments
      t7800: use single quotes for test bodies
      t/README: document how to loop around test cases
      reftable/stack: fix error handling in `reftable_stack_init_addition()`
      reftable/error: discern locked/outdated errors
      reftable/stack: use error codes when locking fails during compaction
      reftable/stack: gracefully handle failed auto-compaction due to locks
      refs/reftable: print errors on compaction failure
      t/helper: drop pack-refs wrapper
      refs: move `struct pack_refs_opts` to where it's used
      refs: remove `PACK_REFS_ALL` flag
      refs/reftable: expose auto compaction via new flag
      builtin/pack-refs: release allocated memory
      builtin/pack-refs: introduce new "--auto" flag
      builtin/gc: move `struct maintenance_run_opts`
      t6500: extract objects with "17" prefix
      builtin/gc: forward git-gc(1)'s `--auto` flag when packing refs
      builtin/gc: pack refs when using `git maintenance run --auto`
      reftable/basics: fix return type of `binsearch()` to be `size_t`
      reftable/basics: improve `binsearch()` test
      reftable/refname: refactor binary search over refnames
      reftable/block: refactor binary search over restart points
      reftable/block: fix error handling when searching restart points
      reftable/record: extract function to decode key lengths
      reftable/block: avoid decoding keys when searching restart points
      t0610: make `--shared=` tests reusable
      t0610: execute git-pack-refs(1) with specified umask

Peter Hutterer (1):
      diff: add diff.srcPrefix and diff.dstPrefix configuration variables

Philippe Blain (5):
      merge-ort: turn submodule conflict suggestions into an advice
      ci(github): make Windows test artifacts name unique
      sequencer: allow disabling conflict advice
      builtin/am: allow disabling conflict advice
      t/README: mention test files are make targets

Phillip Wood (9):
      rebase -i: stop setting GIT_CHERRY_PICK_HELP
      xdiff-interface: refactor parsing of merge.conflictstyle
      merge-ll: introduce LL_MERGE_OPTIONS_INIT
      merge options: add a conflict style member
      checkout: cleanup --conflict=<style> parsing
      checkout: fix interaction between --conflict and --merge
      t3428: modernize test setup
      t3428: use test_commit_message
      t3428: restore coverage for "apply" backend

Pi Fisher (1):
      typo: replace 'commitish' with 'committish'

Ralph Seichter (1):
      config: add --comment option to add a comment

René Scharfe (28):
      use xstrncmpz()
      fetch: convert strncmp() with strlen() to starts_with()
      mem-pool: add mem_pool_strfmt()
      name-rev: use mem_pool_strfmt()
      submodule: use strvec_pushf() for --submodule-prefix
      t-ctype: allow NUL anywhere in the specification string
      t-ctype: simplify EOF check
      t-ctype: align output of i
      t-ctype: avoid duplicating class names
      parse-options: recognize abbreviated negated option with arg
      parse-options: set arg of abbreviated option lazily
      parse-options: factor out register_abbrev() and struct parsed_option
      parse-options: detect ambiguous self-negation
      parse-options: normalize arg and long_name before comparison
      parse-options: rearrange long_name matching code
      t-prio-queue: shorten array index message
      t-prio-queue: check result array bounds
      factor out strbuf_expand_bad_format()
      cat-file: use strbuf_expand_bad_format()
      midx: use strvec_pushf() for pack-objects base name
      mem-pool: use st_add() in mem_pool_strvfmt()
      imap-send: use xsnprintf to format command
      t-prio-queue: simplify using compound literals
      apply: avoid fixed-size buffer in create_one_file()
      path: remove mksnpath()
      apply: don't leak fd on fdopen() error
      usage: report vsnprintf(3) failure
      date: make DATE_MODE thread-safe

Richard Macklin (1):
      rebase: fix typo in autosquash documentation

Rubén Justo (13):
      tag: error when git-column fails
      completion: fix __git_complete_worktree_paths
      completion: reflog with implicit "show"
      completion: reflog show <log-options>
      completion: introduce __git_find_subcommand
      completion: factor out __git_resolve_builtins
      completion: reflog subcommands and options
      checkout: plug some leaks in git-restore
      add-patch: introduce 'p' in interactive-patch
      add-patch: do not print hunks repeatedly
      add: use advise_if_enabled for ADVICE_ADD_IGNORED_FILE
      add: use advise_if_enabled for ADVICE_ADD_EMPTY_PATHSPEC
      add: use advise_if_enabled for ADVICE_ADD_EMBEDDED_REPO

SZEDER Gábor (1):
      upload-pack: don't send null character in abort message to the client

Sergey Organov (1):
      clean: improve -n and -f implementation and documentation

Steven Jeuris (1):
      userdiff: better method/property matching for C#

Taylor Blau (8):
      Documentation/config/pack.txt: fix broken AsciiDoc mark-up
      upload-pack: disallow object-info capability by default
      midx-write: move writing-related functions from midx.c
      midx-write.c: factor out common want_included_pack() routine
      midx-write.c: check count of packs to repack after grouping
      midx-write.c: use `--stdin-packs` when repacking
      t/t7700-repack.sh: fix test breakages with `GIT_TEST_MULTI_PACK_INDEX=1 `
      Makefile(s): avoid recipe prefix in conditional statements

Ville Skyttä (2):
      completion: fix prompt with unset SHOWCONFLICTSTATE in nounset mode
      completion: protect prompt against unset SHOWUPSTREAM in nounset mode

Vincenzo Mezzela (1):
      t7301: use test_path_is_(missing|file)

brian m. carlson (7):
      loose: add a mapping between SHA-1 and SHA-256 for loose objects
      commit: write commits for both hashes
      cache: add a function to read an OID of a specific algorithm
      object-file-convert: add a function to convert trees between algorithms
      object-file-convert: convert tag objects when writing
      object-file-convert: convert commit objects when writing
      repository: implement extensions.compatObjectFormat

shejialuo (1):
      t9117: prefer test_path_* helper functions



^ permalink raw reply	[relevance 3%]

* Re: [PATCH 0/7] reftable: memory optimizations for reflog iteration
  2024-03-11 19:41  0% ` Josh Steadmon
@ 2024-03-11 23:25  0%   ` Patrick Steinhardt
  0 siblings, 0 replies; 162+ results
From: Patrick Steinhardt @ 2024-03-11 23:25 UTC (permalink / raw)
  To: Josh Steadmon, git

[-- Attachment #1: Type: text/plain, Size: 2317 bytes --]

On Mon, Mar 11, 2024 at 12:41:19PM -0700, Josh Steadmon wrote:
> On 2024.03.05 13:10, Patrick Steinhardt wrote:
> > Hi,
> > 
> > this patch series does the same as all the preceding patch series that
> > optimized how the reftable library iterates through refs, but for
> > reflogs instead.
> > 
> > The goal of this patch series is to arrive at a constant number of
> > allocations when iterating refs. This is achieved in mostly the same way
> > we did it for ref iteration, namely by reusing already-allocated memory.
> > Overall, this brings us down from 8 allocations per reflog record to
> > essentially 0 allocations per reflog. Iterating through 1 million
> > reflogs with `git reflog list` thus goes down from 8.068m allocations to
> > only around 68.5k.
> > 
> > This series is built on top of "master" at b387623c12 (The third batch,
> > 2024-03-01) with Junio's "ps/reftable-iteration-perf-part2" at
> > 43f70eaea0 (refs/reftable: precompute prefix length, 2024-03-04) merged
> > into it.
> > 
> > Patrick
> > 
> > Patrick Steinhardt (7):
> >   refs/reftable: reload correct stack when creating reflog iter
> >   reftable/record: convert old and new object IDs to arrays
> >   reftable/record: avoid copying author info
> >   reftable/record: reuse refnames when decoding log records
> >   reftable/record: reuse message when decoding log records
> >   reftable/record: use scratch buffer when decoding records
> >   refs/reftable: track last log record name via strbuf
> > 
> >  refs/reftable-backend.c    |  52 +++++----------
> >  reftable/block.c           |   4 +-
> >  reftable/block.h           |   2 +
> >  reftable/merged_test.c     |  11 ++--
> >  reftable/readwrite_test.c  |  62 +++++++-----------
> >  reftable/record.c          | 129 ++++++++++++++-----------------------
> >  reftable/record.h          |   5 +-
> >  reftable/record_test.c     |  68 ++++++++++---------
> >  reftable/reftable-record.h |   6 +-
> >  reftable/stack_test.c      |  26 ++++----
> >  10 files changed, 154 insertions(+), 211 deletions(-)
> > 
> > -- 
> > 2.44.0
> > 
> 
> This series looks good to me (with one request that we add a test for
> patch #1 if possible).
> 
> Reviewed-by: Josh Steadmon <steadmon@google.com>

Thanks for your review!

Patrick

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[relevance 0%]

* Re: [PATCH 0/7] reftable: memory optimizations for reflog iteration
  2024-03-05 12:10  4% [PATCH 0/7] reftable: memory optimizations for reflog iteration Patrick Steinhardt
@ 2024-03-11 19:41  0% ` Josh Steadmon
  2024-03-11 23:25  0%   ` Patrick Steinhardt
  0 siblings, 1 reply; 162+ results
From: Josh Steadmon @ 2024-03-11 19:41 UTC (permalink / raw)
  To: Patrick Steinhardt; +Cc: git

On 2024.03.05 13:10, Patrick Steinhardt wrote:
> Hi,
> 
> this patch series does the same as all the preceding patch series that
> optimized how the reftable library iterates through refs, but for
> reflogs instead.
> 
> The goal of this patch series is to arrive at a constant number of
> allocations when iterating refs. This is achieved in mostly the same way
> we did it for ref iteration, namely by reusing already-allocated memory.
> Overall, this brings us down from 8 allocations per reflog record to
> essentially 0 allocations per reflog. Iterating through 1 million
> reflogs with `git reflog list` thus goes down from 8.068m allocations to
> only around 68.5k.
> 
> This series is built on top of "master" at b387623c12 (The third batch,
> 2024-03-01) with Junio's "ps/reftable-iteration-perf-part2" at
> 43f70eaea0 (refs/reftable: precompute prefix length, 2024-03-04) merged
> into it.
> 
> Patrick
> 
> Patrick Steinhardt (7):
>   refs/reftable: reload correct stack when creating reflog iter
>   reftable/record: convert old and new object IDs to arrays
>   reftable/record: avoid copying author info
>   reftable/record: reuse refnames when decoding log records
>   reftable/record: reuse message when decoding log records
>   reftable/record: use scratch buffer when decoding records
>   refs/reftable: track last log record name via strbuf
> 
>  refs/reftable-backend.c    |  52 +++++----------
>  reftable/block.c           |   4 +-
>  reftable/block.h           |   2 +
>  reftable/merged_test.c     |  11 ++--
>  reftable/readwrite_test.c  |  62 +++++++-----------
>  reftable/record.c          | 129 ++++++++++++++-----------------------
>  reftable/record.h          |   5 +-
>  reftable/record_test.c     |  68 ++++++++++---------
>  reftable/reftable-record.h |   6 +-
>  reftable/stack_test.c      |  26 ++++----
>  10 files changed, 154 insertions(+), 211 deletions(-)
> 
> -- 
> 2.44.0
> 

This series looks good to me (with one request that we add a test for
patch #1 if possible).

Reviewed-by: Josh Steadmon <steadmon@google.com>


^ permalink raw reply	[relevance 0%]

* [PATCH 0/7] reftable: memory optimizations for reflog iteration
@ 2024-03-05 12:10  4% Patrick Steinhardt
  2024-03-11 19:41  0% ` Josh Steadmon
  0 siblings, 1 reply; 162+ results
From: Patrick Steinhardt @ 2024-03-05 12:10 UTC (permalink / raw)
  To: git

[-- Attachment #1: Type: text/plain, Size: 1826 bytes --]

Hi,

this patch series does the same as all the preceding patch series that
optimized how the reftable library iterates through refs, but for
reflogs instead.

The goal of this patch series is to arrive at a constant number of
allocations when iterating refs. This is achieved in mostly the same way
we did it for ref iteration, namely by reusing already-allocated memory.
Overall, this brings us down from 8 allocations per reflog record to
essentially 0 allocations per reflog. Iterating through 1 million
reflogs with `git reflog list` thus goes down from 8.068m allocations to
only around 68.5k.

This series is built on top of "master" at b387623c12 (The third batch,
2024-03-01) with Junio's "ps/reftable-iteration-perf-part2" at
43f70eaea0 (refs/reftable: precompute prefix length, 2024-03-04) merged
into it.

Patrick

Patrick Steinhardt (7):
  refs/reftable: reload correct stack when creating reflog iter
  reftable/record: convert old and new object IDs to arrays
  reftable/record: avoid copying author info
  reftable/record: reuse refnames when decoding log records
  reftable/record: reuse message when decoding log records
  reftable/record: use scratch buffer when decoding records
  refs/reftable: track last log record name via strbuf

 refs/reftable-backend.c    |  52 +++++----------
 reftable/block.c           |   4 +-
 reftable/block.h           |   2 +
 reftable/merged_test.c     |  11 ++--
 reftable/readwrite_test.c  |  62 +++++++-----------
 reftable/record.c          | 129 ++++++++++++++-----------------------
 reftable/record.h          |   5 +-
 reftable/record_test.c     |  68 ++++++++++---------
 reftable/reftable-record.h |   6 +-
 reftable/stack_test.c      |  26 ++++----
 10 files changed, 154 insertions(+), 211 deletions(-)

-- 
2.44.0


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[relevance 4%]

* [ANNOUNCE] Git v2.44.0
@ 2024-02-23 17:17  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2024-02-23 17:17 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

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:

    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 <branch>" 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 <branch> [<start-point>]" 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 <stdbool.h> 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 <pathspec>" and "git commit -i
   <pathspec>" 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=<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 <ptr, length> 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=<msg-id>=<severity>...
      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 <branch>" 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: majordomo@vger.kernel.org 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=<n>' 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 <expr> -a/-o <expr>`
      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 <oldbranch> 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



^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.44.0-rc2
@ 2024-02-20 17:09  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2024-02-20 17:09 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

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 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 <branch>" 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 <branch> [<start-point>]" 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 <stdbool.h> 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 <pathspec>" and "git commit -i
   <pathspec>" 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=<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 <ptr, length> 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=<msg-id>=<severity>...
      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 <branch>" 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: majordomo@vger.kernel.org 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=<n>' 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 <expr> -a/-o <expr>`
      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 <oldbranch> 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



^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.44.0-rc1
@ 2024-02-14 17:04  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2024-02-14 17:04 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

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:

    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 <branch>" 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 <branch> [<start-point>]" 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 <stdbool.h> 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 <pathspec>" and "git commit -i
   <pathspec>" 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=<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 <ptr, length> 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=<msg-id>=<severity>...
      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 <branch>" 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: majordomo@vger.kernel.org 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=<n>' 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 <expr> -a/-o <expr>`
      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 <oldbranch> 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



^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.44.0-rc0
@ 2024-02-09 17:24  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2024-02-09 17:24 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

An early preview release Git v2.44.0-rc0 is now available for
testing at the usual places.  It is comprised of 432 non-merge
commits since v2.43.0, contributed by 67 people, 30 of which are new
faces [*].  Unlike previous cycles, I plan only for one release
candidate in the middle of next week until the final release around
the 20th.

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-rc0' 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, Nikolay Borisov, Nikolay Edigaryev, Ondrej
  Pohorelsky, Sam Delmerico, Shreyansh Paliwal, Sören Krecker,
  Stan Hu, Tamino Bauknecht, Wilfred Hughes, Willem Verstraeten,
  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,
  M Hickford, Oswald Buddenhagen, Patrick Steinhardt, Philippe
  Blain, Phillip Wood, 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 <branch>" 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 <branch> [<start-point>]" 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.


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 <stdbool.h> 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 <pathspec>" and "git commit -i
   <pathspec>" 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.


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".
   (merge 0aabeaa562 tc/show-ref-exists-fix later to maint).

 * 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.
   (merge 1c5bc6971e en/diffcore-delta-final-line-fix later to maint).

 * 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.
   (merge 457f96252f rs/parse-options-with-keep-unknown-abbrev-fix later to maint).

 * "git archive --remote=<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.
   (merge 85a9a63c92 jk/diff-external-with-no-index later to maint).

 * Rewrite //-comments to /* comments */ in files whose comments
   prevalently use the latter.
   (merge de65079d7b jc/comment-style-fixes later to maint).

 * 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 <ptr, length> with a wrong length, which has been corrected.
   (merge 156e28b36d jh/sparse-index-expand-to-path-fix 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 8f50984cf4 ne/doc-filter-blob-limit-fix later to maint).
   (merge f10b0989b8 la/strvec-comment-fix later to maint).
   (merge 8430b438f6 vd/fsck-submodule-url-test later to maint).
   (merge f10031fadd nb/rebase-x-shell-docfix later to maint).
   (merge af3d2c160f jc/majordomo-to-subspace later to maint).
   (merge ee9895b0ff sd/negotiate-trace-fix later to maint).
   (merge 976d0251ce jc/coc-whitespace-fix later to maint).
   (merge 9023198280 jt/p4-spell-re-with-raw-string later to maint).
   (merge 36c9c44fa4 tb/pack-bitmap-drop-unused-struct-member later to maint).
   (merge 19ed0dff8f js/win32-retry-pipe-write-on-enospc 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 (2):
      doc: use singular form of repeatable path arg
      doc: refer to pathspec instead of path

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 (11):
      cmake: also build unit tests
      unit-tests: do not mistake `.pdb` files for being executable
      unit-tests: do show relative file paths
      artifacts-tar: when including `.dll` files, don't forget the unit-tests
      cmake: fix typo in variable name
      cmake: use test names instead of full paths
      cmake: handle also unit tests
      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

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=<msg-id>=<severity>...
      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 (44):
      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 <branch>" 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: majordomo@vger.kernel.org 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
      t/Makefile: say the default target upfront
      The fourteenth batch
      The fifteenth batch
      Git 2.43.1
      Git 2.44-rc0

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=<n>' explainer

Patrick Steinhardt (124):
      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 <expr> -a/-o <expr>`
      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

Philippe Blain (6):
      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

Phillip Wood (1):
      unit tests: add TAP unit test framework

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 <oldbranch> 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 (27):
      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`

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 (14):
      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

Zach FettersMoore (1):
      subtree: fix split processing with multiple subtrees present



^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.43.0
@ 2023-11-20 17:01  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-11-20 17:01 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

The latest feature release Git v2.43.0 is now available at the
usual places.  It is comprised of 464 non-merge commits since
v2.42.0, contributed by 80 people, 17 of which are new faces [*].

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.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.42.0 are as follows.
Welcome to the Git development community!

  Aditya Neelamraju, Alyssa Ross, Caleb Hill, Dorcas AnonoLitunya,
  Dragan Simic, Isoken June Ibizugbe, Jan Alexander Steffens
  (heftig), Javier Mora, ks1322 ks1322, Mark Ruvald Pedersen,
  Matthew McClain, Naomi Ibe, Romain Chossart, Tang Yuyi, Vipul
  Kumar, 王常新, and 谢致邦 (XIE Zhibang).

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alexander Shopov, Andrei Rybak,
  Andy Koppe, Arkadii Yakovets, Bagas Sanjaya, Beat Bolli, brian
  m. carlson, Calvin Wan, Christian Couder, Christian Hesse,
  Derrick Stolee, Drew DeVault, Elijah Newren, Emily Shaffer,
  Emir SARI, Eric W. Biederman, Eric Wong, Evan Gates, Han Young,
  Hariom Verma, Jacob Abel, Jacob Stopak, Jason Hatton, Jean-Noël
  Avila, Jeff King, Johannes Schindelin, John Cai, Jordi Mas,
  Josh Soref, Josip Sokcevic, Junio C Hamano, Karthik Nayak,
  Kate Golovanova, Kousik Sanagavarapu, Kristoffer Haugsbakk,
  Linus Arver, Mark Levedahl, Martin Ågren, Martin Storsjö,
  M Hickford, Michael Strawbridge, Michal Suchanek, Oswald
  Buddenhagen, Patrick Steinhardt, Peter Krefting, Philippe Blain,
  Phillip Wood, Ralf Thielow, Randall S. Becker, René Scharfe,
  Robert Coup, Rubén Justo, Sergey Organov, Shuqi Liang, Stefan
  Haller, Štěpán Němec, Taylor Blau, Teng Long, Todd Zullinger,
  Victoria Dye, Wesley Schwengle, 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.43 Release Notes
=======================

Backward Compatibility Notes

 * The "--rfc" option of "git format-patch" used to be a valid way to
   override an earlier "--subject-prefix=<something>" on the command
   line and replace it with "[RFC PATCH]", but from this release, it
   merely prefixes the string "RFC " in front of the given subject
   prefix.  If you are negatively affected by this change, please use
   "--subject-prefix=PATCH --rfc" as a replacement.

 * In Git 2.42, "git rev-list --stdin" learned to take non-revisions
   (like "--not") from the standard input, but the way such a "--not" was
   handled was quite confusing, which has been rethought.  The updated
   rule is that "--not" given from the command line only affects revs
   given from the command line that comes but not revs read from the
   standard input, and "--not" read from the standard input affects
   revs given from the standard input and not revs given from the
   command line.

UI, Workflows & Features

 * A message written in olden time prevented a branch from getting
   checked out, saying it is already checked out elsewhere. But these
   days, we treat a branch that is being bisected or rebased just like
   a branch that is checked out and protect it from getting modified
   with the same codepath.  The message has been rephrased to say that
   the branch is "in use" to avoid confusion.

 * Hourly and other schedules of "git maintenance" jobs are randomly
   distributed now.

 * "git cmd -h" learned to signal which options can be negated by
   listing such options like "--[no-]opt".

 * The way authentication related data other than passwords (e.g.,
   oauth token and password expiration data) are stored in libsecret
   keyrings has been rethought.

 * Update the libsecret and wincred credential helpers to correctly
   match which credential to erase; they erased the wrong entry in
   some cases.

 * Git GUI updates.

 * "git format-patch" learned a new "--description-file" option that
   lets cover letter description to be fed; this can be used on
   detached HEAD where there is no branch description available, and
   also can override the branch description if there is one.

 * Use of the "--max-pack-size" option to allow multiple packfiles to
   be created is now supported even when we are sending unreachable
   objects to cruft packs.

 * "git format-patch --rfc --subject-prefix=<foo>" used to ignore the
   "--subject-prefix" option and used "[RFC PATCH]"; now we will add
   "RFC" prefix to whatever subject prefix is specified.

 * "git log --format" has been taught the %(decorate) placeholder for
   further customization over what the "--decorate" option offers.

 * The default log message created by "git revert", when reverting a
   commit that records a revert, has been tweaked, to encourage people
   to describe complex "revert of revert of revert" situations better in
   their own words.

 * The command-line completion support (in contrib/) learned to
   complete "git commit --trailer=" for possible trailer keys.

 * "git update-index" learned the "--show-index-version" option to
   inspect the index format version used by the on-disk index file.

 * "git diff" learned the "diff.statNameWidth" configuration variable,
   to give the default width for the name part in the "--stat" output.

 * "git range-diff --notes=foo" compared "log --notes=foo --notes" of
   the two ranges, instead of using just the specified notes tree,
   which has been corrected to use only the specified notes tree.

 * The command line completion script (in contrib/) can be told to
   complete aliases by including ": git <cmd> ;" in the alias to tell
   it that the alias should be completed in a similar way to how "git
   <cmd>" is completed.  The parsing code for the alias has been
   loosened to allow ';' without an extra space before it.

 * "git for-each-ref" and friends learned to apply mailmap to
   authorname and other fields in a more flexible way than using
   separate placeholder letters like %a[eElL] every time we want to
   come up with small variants.

 * "git repack" machinery learned to pay attention to the "--filter="
   option.

 * "git repack" learned the "--max-cruft-size" option to prevent cruft
   packs from growing without bounds.

 * "git merge-tree" learned to take strategy backend specific options
   via the "-X" option, like "git merge" does.

 * "git log" and friends learned the "--dd" option that is a
   short-hand for "--diff-merges=first-parent -p".

 * The attribute subsystem learned to honor the "attr.tree"
   configuration variable that specifies which tree to read the
   .gitattributes files from.

 * "git merge-file" learns a mode to read three variants of the
   contents to be merged from blob objects.


Performance, Internal Implementation, Development Support etc.

 * "git check-attr" has been taught to work better with sparse-index.

 * It may be tempting to leave the help text NULL for a command line
   option that is either hidden or too obvious, but "git subcmd -h"
   and "git subcmd --help-all" would have segfaulted if done so.  Now
   the help text is truly optional.

 * Tests that are known to pass with LSan are now marked as such.

 * Flaky "git p4" tests, as well as "git svn" tests, are now skipped
   in the (rather expensive) sanitizer CI job.

 * Tests with LSan from time to time seem to emit harmless messages
   that make our tests unnecessarily flaky; we work around it by
   filtering the uninteresting output.

 * Unused parameters to functions are marked as such, and/or removed,
   in order to bring us closer to "-Wunused-parameter" clean.

 * The code to keep track of existing packs in the repository while
   repacking has been refactored.

 * The "streaming" interface used for bulk-checkin codepath has been
   narrowed to take only blob objects for now, with no real loss of
   functionality.

 * GitHub CI workflow has learned to trigger Coverity check.

 * Test coverage for trailers has been improved.

 * The code to iterate over loose references has been optimized to
   reduce the number of lstat() system calls.

 * The codepaths that read "chunk" formatted files have been corrected
   to pay attention to the chunk size and notice broken files.

 * Replace macos-12 used at GitHub CI with macos-13.
   (merge 682a868f67 js/ci-use-macos-13 later to maint).


Fixes since v2.42
-----------------

 * Overly long label names used in the sequencer machinery are now
   chopped to fit under filesystem limitation.

 * Scalar updates.

 * Tweak GitHub Actions CI so that pushing the same commit to multiple
   branch tips at the same time will not waste building and testing
   the same thing twice.

 * The commit-graph verification code that detects a mixture of zero and
   non-zero generation numbers has been updated.

 * "git diff -w --exit-code" with various options did not work
   correctly, which has been corrected.

 * The "transfer.unpackLimit" configuration variable ought to be used
   as a fallback, but overrode the more specific "fetch.unpackLimit"
   and "receive.unpackLimit" configuration variables by mistake, which
   has been corrected.

 * The use of API between two calls to require_clean_work_tree() from
   the sequencer code has been cleaned up for consistency.

 * "git diff --no-such-option" and other corner cases around the exit
   status of the "diff" command have been corrected.

 * "git for-each-ref --sort='contents:size'" sorted the refs according
   to size numerically, giving a ref that points at a blob twelve-byte
   (12) long before showing a blob hundred-byte (100) long, which has
   been corrected.

 * We now limit the depth of the tree objects and maximum length of
   pathnames recorded in tree objects.
   (merge 4d5693ba05 jk/tree-name-and-depth-limit later to maint).

 * Various fixes to the behavior of "rebase -i", when the command got
   interrupted by conflicting changes, have been made.

 * References from a description of the `--patch` option in various
   manual pages have been simplified and improved.

 * "git grep -e A --no-or -e B" is accepted, even though the negation
   of the "--or" option did not mean anything, which has been tightened.

 * The completion script (in contrib/) has been taught to treat the
   "-t" option to "git checkout" and "git switch" just like the
   "--track" option, to complete remote-tracking branches.

 * "git diff --no-index -R <(one) <(two)" did not work correctly,
   which has been corrected.

 * "git maintenance" timers' implementation has been updated, based on
   systemd timers, to work with WSL.

 * "git diff --cached" codepath did not fill the necessary stat
   information for a file when fsmonitor knows it is clean and ended
   up behaving as if it were not clean, which has been corrected.

 * How "alias.foo = : git cmd ; aliased-command-string" should be
   spelled with necessary whitespace around punctuation marks to work
   has been more clearly documented (but this will be moot with newer
   versions of Git where the parsing rules have been improved).

 * HTTP Header redaction code has been adjusted for a newer version of
   cURL library that shows its traces differently from earlier
   versions.

 * An error message given by "git send-email", when given a malformed
   address, did not show the offending address, which has been corrected.

 * UBSan options were not propagated through the test framework to git
   run via the httpd, unlike ASan options, which has been corrected.

 * "checkout --merge -- path" and "update-index --unresolve path" did
   not resurrect conflicted state that was resolved to remove path,
   but now they do.
   (merge 5bdedac3c7 jc/unresolve-removal later to maint).

 * The display width table for unicode characters has been updated for
   Unicode 15.1
   (merge 872976c37e bb/unicode-width-table-15 later to maint).

 * Update mailmap entry for Derrick.
   (merge 6e5457d8c7 ds/mailmap-entry-update later to maint).

 * In the ".gitmodules" files, submodules are keyed by their names,
   and the path to the submodule whose name is $name is specified by
   the submodule.$name.path variable.  There were a few codepaths that
   mixed the name and path up when consulting the submodule database,
   which have been corrected.  It took long for these bugs to be found
   as the name of a submodule initially is the same as its path, and
   the problem does not surface until it is moved to a different path,
   which apparently happens very rarely.

 * "git diff --merge-base X other args..." insisted that X must be a
   commit and errored out when given an annotated tag that peels to a
   commit, but we only need it to be a committish.  This has been
   corrected.
   (merge 4adceb5a29 ar/diff-index-merge-base-fix later to maint).

 * "git merge-tree" used to segfault when the "--attr-source"
   option is used, which has been corrected.
   (merge e95bafc52f jc/merge-ort-attr-index-fix later to maint).

 * Unlike "git log --pretty=%D", "git log --pretty="%(decorate)" did
   not auto-initialize the decoration subsystem, which has been
   corrected.

 * Feeding "git stash store" with a random commit that was not created
   by "git stash create" now errors out.
   (merge d9b6634589 jc/fail-stash-to-store-non-stash later to maint).

 * The index file has room only for the lower 32-bit of the file size in
   the cached stat information, which means cached stat information
   will have 0 in its sd_size member for a file whose size is a multiple
   of 4GiB.  This is mistaken for a racily clean path.  Avoid it by
   storing a bogus sd_size value instead for such files.
   (merge 5143ac07b1 bc/racy-4gb-files later to maint).

 * "git p4" tried to store symlinks to LFS when told, but has been
   fixed not to do so, because it does not make sense.
   (merge 10c89a02b0 mm/p4-symlink-with-lfs later to maint).

 * The codepath to handle recipient addresses `git send-email
   --compose` learns from the user was completely broken, which has
   been corrected.
   (merge 3ec6167567 jk/send-email-fix-addresses-from-composed-messages later to maint).

 * "cd sub && git grep -f patterns" tried to read "patterns" file at
   the top level of the working tree; it has been corrected to read
   "sub/patterns" instead.

 * "git reflog expire --single-worktree" has been broken for the past
   20 months or so, which has been corrected.

 * "git send-email" did not have certain pieces of data computed yet
   when it tried to validate the outgoing messages and its recipient
   addresses, which has been sorted out.

 * "git bugreport" learned to complain when it received a command line
   argument that it will not use.

 * The codepath to traverse the commit-graph learned to notice that a
   commit is missing (e.g., corrupt repository lost an object), even
   though it knows something about the commit (like its parents) from
   what is in commit-graph.
   (merge 7a5d604443 ps/do-not-trust-commit-graph-blindly-for-existence later to maint).

 * "git rev-list --missing" did not work for missing commit objects,
   which has been corrected.

 * "git rev-list --unpacked --objects" failed to exclude packed
   non-commit objects, which has been corrected.
   (merge 7b3c8e9f38 tb/rev-list-unpacked-fix later to maint).

 * "To dereference" and "to peel" were sometimes used in in-code
   comments and documentation but without description in the glossary.
   (merge 893dce2ffb vd/glossary-dereference-peel later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge c2c349a15c xz/commit-title-soft-limit-doc later to maint).
   (merge 1bd809938a tb/format-pack-doc-update later to maint).
   (merge 8f81532599 an/clang-format-typofix later to maint).
   (merge 3ca86adc2d la/strvec-header-fix later to maint).
   (merge 6789275d37 jc/test-i18ngrep later to maint).
   (merge 9972cd6004 ps/leakfixes later to maint).
   (merge 46edab516b tz/send-email-helpfix later to maint).

----------------------------------------------------------------

Changes since v2.42.0 are as follows:

Aditya Neelamraju (1):
      clang-format: fix typo in comment

Alexander Shopov (1):
      l10n: bg.po: Updated Bulgarian translation (5579t)

Alyssa Ross (1):
      diff: fix --merge-base with annotated tags

Andrei Rybak (1):
      SubmittingPatches: call gitk's command "Copy commit reference"

Andy Koppe (8):
      pretty-formats: enclose options in angle brackets
      decorate: refactor format_decorations()
      decorate: avoid some unnecessary color overhead
      decorate: color each token separately
      pretty: add %(decorate[:<options>]) format
      pretty: add pointer and tag options to %(decorate)
      decorate: use commit color for HEAD arrow
      pretty: fix ref filtering for %(decorate) formats

Arkadii Yakovets (1):
      l10n: update uk localization for v2.43

Bagas Sanjaya (1):
      l10n: po-id for 2.43 (round 1)

Beat Bolli (1):
      unicode: update the width tables to Unicode 15.1

Caleb Hill (1):
      git-clean doc: fix "without do cleaning" typo

Calvin Wan (4):
      hex-ll: separate out non-hash-algo functions
      wrapper: reduce scope of remove_or_warn()
      config: correct bad boolean env value error message
      parse: separate out parsing functions from config.h

Christian Couder (9):
      pack-objects: allow `--filter` without `--stdout`
      t/helper: add 'find-pack' test-tool
      repack: refactor finishing pack-objects command
      repack: refactor finding pack prefix
      pack-bitmap-write: rebuild using new bitmap when remapping
      repack: add `--filter=<filter-spec>` option
      gc: add `gc.repackFilter` config option
      repack: implement `--filter-to` for storing filtered out objects
      gc: add `gc.repackFilterTo` config option

Christian Hesse (2):
      t/lib-gpg: forcibly run a trustdb update
      t/t6300: drop magic filtering

Derrick Stolee (13):
      upload-pack: fix race condition in error messages
      maintenance: add get_random_minute()
      maintenance: use random minute in launchctl scheduler
      maintenance: use random minute in Windows scheduler
      maintenance: use random minute in cron scheduler
      maintenance: swap method locations
      maintenance: use random minute in systemd scheduler
      maintenance: fix systemd schedule overlaps
      maintenance: update schedule before config
      scalar: add --[no-]src option
      setup: add discover_git_directory_reason()
      scalar reconfigure: help users remove buggy repos
      mailmap: change primary address for Derrick Stolee

Dorcas AnonoLitunya (1):
      t7601: use "test_path_is_file" etc. instead of "test -f"

Dragan Simic (2):
      diff --stat: add config option to limit filename width
      diff --stat: set the width defaults in a helper function

Drew DeVault (1):
      format-patch: --rfc honors what --subject-prefix sets

Elijah Newren (26):
      documentation: wording improvements
      documentation: fix small error
      documentation: fix typos
      documentation: fix apostrophe usage
      documentation: add missing words
      documentation: remove extraneous words
      documentation: fix subject/verb agreement
      documentation: employ consistent verb tense for a list
      documentation: fix verb tense
      documentation: fix adjective vs. noun
      documentation: fix verb vs. noun
      documentation: fix singular vs. plural
      documentation: whitespace is already generally plural
      documentation: fix choice of article
      documentation: add missing article
      documentation: remove unnecessary hyphens
      documentation: add missing hyphens
      documentation: use clearer prepositions
      documentation: fix punctuation
      documentation: fix capitalization
      documentation: fix whitespace issues
      documentation: add some commas where they are helpful
      documentation: add missing fullstops
      documentation: add missing quotes
      documentation: add missing parenthesis
      RelNotes: minor wording fixes in 2.43.0 release notes

Emily Shaffer (2):
      t0091-bugreport: stop using i18ngrep
      bugreport: reject positional arguments

Emir SARI (1):
      l10n: tr: v2.43.0

Eric W. Biederman (1):
      bulk-checkin: only support blobs in index_bulk_checkin

Eric Wong (1):
      treewide: fix various bugs w/ OpenSSL 3+ EVP API

Evan Gates (1):
      git-config: fix misworded --type=path explanation

Han Young (1):
      show doc: redirect user to git log manual instead of git diff-tree

Isoken June Ibizugbe (1):
      builtin/branch.c: adjust error messages to coding guidelines

Jacob Abel (1):
      builtin/worktree.c: fix typo in "forgot fetch" msg

Jacob Stopak (1):
      Include gettext.h in MyFirstContribution tutorial

Jan Alexander Steffens (heftig) (6):
      submodule--helper: use submodule_from_path in set-{url,branch}
      submodule--helper: return error from set-url when modifying failed
      t7419: actually test the branch switching
      t7419, t7420: use test_cmp_config instead of grepping .gitmodules
      t7419: test that we correctly handle renamed submodules
      t7420: test that we correctly handle renamed submodules

Jason Hatton (1):
      Prevent git from rehashing 4GiB files

Javier Mora (2):
      git-status.txt: fix minor asciidoc format issue
      doc/git-bisect: clarify `git bisect run` syntax

Jean-Noël Avila (1):
      l10n: fr: v2.43.0 rnd 2

Jeff King (114):
      hashmap: use expected signatures for comparison functions
      diff-files: avoid negative exit value
      diff: show usage for unknown builtin_diff_files() options
      diff: die when failing to read index in git-diff builtin
      diff: drop useless return from run_diff_{files,index} functions
      diff: drop useless return values in git-diff helpers
      diff: drop useless "status" parameter from diff_result_code()
      commit-graph: verify swapped zero/non-zero generation cases
      test-lib: ignore uninteresting LSan output
      sequencer: use repository parameter in short_commit_name()
      sequencer: mark repository argument as unused
      ref-filter: mark unused parameters in parser callbacks
      pack-bitmap: mark unused parameters in show_object callback
      worktree: mark unused parameters in each_ref_fn callback
      commit-graph: mark unused data parameters in generation callbacks
      ls-tree: mark unused parameter in callback
      stash: mark unused parameter in diff callback
      trace2: mark unused us_elapsed_absolute parameters
      trace2: mark unused config callback parameter
      test-trace2: mark unused argv/argc parameters
      grep: mark unused parameter in output function
      add-interactive: mark unused callback parameters
      negotiator/noop: mark unused callback parameters
      worktree: mark unused parameters in noop repair callback
      imap-send: mark unused parameters with NO_OPENSSL
      grep: mark unused parmaeters in pcre fallbacks
      credential: mark unused parameter in urlmatch callback
      fetch: mark unused parameter in ref_transaction callback
      bundle-uri: mark unused parameters in callbacks
      gc: mark unused descriptors in scheduler callbacks
      update-ref: mark unused parameter in parser callbacks
      ci: allow branch selection through "vars"
      ci: deprecate ci/config/allow-ref script
      merge: make xopts a strvec
      merge: simplify parsing of "-n" option
      format-patch: use OPT_STRING_LIST for to/cc options
      tree-walk: reduce stack size for recursive functions
      tree-walk: drop MAX_TRAVERSE_TREES macro
      tree-walk: rename "error" variable
      fsck: detect very large tree pathnames
      add core.maxTreeDepth config
      traverse_trees(): respect max_allowed_tree_depth
      read_tree(): respect max_allowed_tree_depth
      list-objects: respect max_allowed_tree_depth
      tree-diff: respect max_allowed_tree_depth
      lower core.maxTreeDepth default to 2048
      checkout-index: delay automatic setting of to_tempfile
      parse-options: prefer opt->value to globals in callbacks
      parse-options: mark unused "opt" parameter in callbacks
      merge: do not pass unused opt->value parameter
      parse-options: add more BUG_ON() annotations
      interpret-trailers: mark unused "unset" parameters in option callbacks
      parse-options: mark unused parameters in noop callback
      merge-ort: drop custom err() function
      merge-ort: stop passing "opt" to read_oid_strbuf()
      merge-ort: drop unused parameters from detect_and_process_renames()
      merge-ort: drop unused "opt" parameter from merge_check_renames_reusable()
      http: factor out matching of curl http/2 trace lines
      http: update curl http/2 info matching for curl 8.3.0
      merge-ort: lowercase a few error messages
      fsmonitor: prefer repo_git_path() to git_pathdup()
      fsmonitor/win32: drop unused parameters
      fsmonitor: mark some maybe-unused parameters
      fsmonitor/win32: mark unused parameter in fsm_os__incompatible()
      fsmonitor: mark unused parameters in stub functions
      fsmonitor/darwin: mark unused parameters in system callback
      fsmonitor: mark unused hashmap callback parameters
      run-command: mark unused parameters in start_bg_wait callbacks
      test-lib: set UBSAN_OPTIONS to match ASan
      commit-graph: factor out chain opening function
      commit-graph: check mixed generation validation when loading chain file
      t5324: harmonize sha1/sha256 graph chain corruption
      commit-graph: detect read errors when verifying graph chain
      commit-graph: tighten chain size check
      commit-graph: report incomplete chains during verification
      t6700: mark test as leak-free
      commit-reach: free temporary list in get_octopus_merge_bases()
      merge: free result of repo_get_merge_bases()
      commit-graph: move slab-clearing to close_commit_graph()
      commit-graph: free all elements of graph chain
      commit-graph: delay base_graph assignment in add_graph_to_chain()
      commit-graph: free graph struct that was not added to chain
      commit-graph: free write-context entries before overwriting
      commit-graph: free write-context base_graph_name during cleanup
      commit-graph: clear oidset after finishing write
      decorate: add clear_decoration() function
      revision: clear decoration structs during release_revisions()
      daemon: free listen_addr before returning
      repack: free existing_cruft array after use
      chunk-format: note that pair_chunk() is unsafe
      t: add library for munging chunk-format files
      midx: stop ignoring malformed oid fanout chunk
      commit-graph: check size of oid fanout chunk
      midx: check size of oid lookup chunk
      commit-graph: check consistency of fanout table
      midx: check size of pack names chunk
      midx: enforce chunk alignment on reading
      midx: check size of object offset chunk
      midx: bounds-check large offset chunk
      midx: check size of revindex chunk
      commit-graph: check size of commit data chunk
      commit-graph: detect out-of-bounds extra-edges pointers
      commit-graph: bounds-check base graphs chunk
      commit-graph: check size of generations chunk
      commit-graph: bounds-check generation overflow chunk
      commit-graph: check bounds when accessing BDAT chunk
      commit-graph: check bounds when accessing BIDX chunk
      commit-graph: detect out-of-order BIDX offsets
      chunk-format: drop pair_chunk_unsafe()
      t5319: make corrupted large-offset test more robust
      doc/send-email: mention handling of "reply-to" with --compose
      Revert "send-email: extract email-parsing code into a subroutine"
      send-email: handle to/cc/bcc from --compose message
      t: avoid perl's pack/unpack "Q" specifier

Johannes Schindelin (19):
      windows: ignore empty `PATH` elements
      is_Cygwin: avoid `exec`ing anything
      Move is_<platform> functions to the beginning
      Move the `_which` function (almost) to the top
      Work around Tcl's default `PATH` lookup
      rebase: allow overriding the maximal length of the generated labels
      ci: avoid building from the same commit in parallel
      ci(linux-asan-ubsan): let's save some time
      var: avoid a segmentation fault when `HOME` is unset
      completion(switch/checkout): treat --track and -t the same
      maintenance(systemd): support the Windows Subsystem for Linux
      ci: add a GitHub workflow to submit Coverity scans
      coverity: cache the Coverity Build Tool
      coverity: allow overriding the Coverity project
      coverity: support building on Windows
      coverity: allow running on macOS
      coverity: detect and report when the token or project is incorrect
      max_tree_depth: lower it for MSVC to avoid stack overflows
      ci: upgrade to using macos-13

John Cai (3):
      merge-ort: initialize repo in index state
      attr: read attributes from HEAD when bare repo
      attr: add attr.tree for setting the treeish to read attributes from

Jordi Mas (1):
      l10n: Update Catalan translation

Josh Soref (1):
      Documentation/git-status: add missing line breaks

Josip Sokcevic (1):
      diff-lib: fix check_removed when fsmonitor is on

Junio C Hamano (57):
      update-index: do not read HEAD and MERGE_HEAD unconditionally
      resolve-undo: allow resurrecting conflicted state that resolved to deletion
      update-index: use unmerge_index_entry() to support removal
      update-index: remove stale fallback code for "--unresolve"
      checkout/restore: refuse unmerging paths unless checking out of the index
      checkout/restore: add basic tests for --merge
      checkout: allow "checkout -m path" to unmerge removed paths
      mv: fix error for moving directory to another
      diff: move the fallback "--exit-code" code down
      diff: mode-only change should be noticed by "--patch -w --exit-code"
      diff: teach "--stat -w --exit-code" to notice differences
      t4040: remove test that succeeded for a wrong reason
      pretty-formats: define "literal formatting code"
      diff: spell DIFF_INDEX_CACHED out when calling run_diff_index()
      diff: the -w option breaks --exit-code for --raw and other output modes
      transfer.unpackLimit: fetch/receive.unpackLimit takes precedence
      Start the 2.43 cycle
      The second batch for 2.43
      The extra batch to update credenthal helpers
      The third batch
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      update-index doc: v4 is OK with JGit and libgit2
      update-index: add --show-index-version
      test-tool: retire "index-version"
      The eighth batch
      The ninth batch
      The tenth batch
      The eleventh batch
      completion: loosen and document the requirement around completing alias
      The twelfth batch
      The thirteenth batch
      The fourteenth batch
      The fifteenth batch
      doc: update list archive reference to use lore.kernel.org
      The sixteenth batch
      merge: introduce {copy|clear}_merge_options()
      stash: be careful what we store
      grep: -f <path> is relative to $cwd
      The seventeenth batch
      The eighteenth batch
      commit: do not use cryptic "new_index" in end-user facing messages
      The nineteenth batch
      am: align placeholder for --whitespace option with apply
      The twentieth batch
      The twenty-first batch
      The twenty-second batch
      test framework: further deprecate test_i18ngrep
      Git 2.42.1
      tests: teach callers of test_i18ngrep to use test_grep
      A bit more before -rc1
      Prepare for -rc1
      Git 2.43-rc1
      Git 2.43-rc2
      Git 2.43

Karthik Nayak (3):
      revision: rename bit to `do_not_die_on_missing_objects`
      rev-list: move `show_commit()` to the bottom
      rev-list: add commit object support in `--missing` option

Kousik Sanagavarapu (4):
      ref-filter: sort numerically when ":size" is used
      t/t6300: cleanup test_atom
      t/t6300: introduce test_bad_atom
      ref-filter: add mailmap support

Kristoffer Haugsbakk (2):
      range-diff: treat notes like `log`
      grep: die gracefully when outside repository

Linus Arver (17):
      trailer tests: make test cases self-contained
      trailer test description: this tests --where=after, not --where=before
      trailer: add tests to check defaulting behavior with --no-* flags
      trailer doc: narrow down scope of --where and related flags
      trailer: trailer location is a place, not an action
      trailer --no-divider help: describe usual "---" meaning
      trailer --parse help: expose aliased options
      trailer --only-input: prefer "configuration variables" over "rules"
      trailer --parse docs: add explanation for its usefulness
      trailer --unfold help: prefer "reformat" over "join"
      trailer doc: emphasize the effect of configuration variables
      trailer doc: separator within key suppresses default separator
      trailer doc: <token> is a <key> or <keyAlias>, not both
      trailer: separate public from internal portion of trailer_iterator
      trailer: split process_input_file into separate pieces
      trailer: split process_command_line_args into separate functions
      strvec: drop unnecessary include of hex.h

M Hickford (3):
      credential/libsecret: store new attributes
      credential/libsecret: erase matching creds only
      credential/wincred: erase matching creds only

Mark Levedahl (6):
      git gui Makefile - remove Cygwin modifications
      git-gui - remove obsolete Cygwin specific code
      git-gui - use cygstart to browse on Cygwin
      git-gui - use mkshortcut on Cygwin
      git-gui - re-enable use of hook scripts
      git-gui - use git-hook, honor core.hooksPath

Mark Ruvald Pedersen (1):
      sequencer: truncate labels to accommodate loose refs

Martin Ågren (1):
      git-merge-file doc: drop "-file" from argument placeholders

Matthew McClain (1):
      git-p4 shouldn't attempt to store symlinks in LFS

Michael Strawbridge (1):
      send-email: move validation code below process_address_list

Michal Suchanek (1):
      git-push doc: more visibility for -q option

Naomi Ibe (1):
      builtin/add.c: clean up die() messages

Oswald Buddenhagen (16):
      t/lib-rebase: set_fake_editor(): fix recognition of reset's short command
      t/lib-rebase: set_fake_editor(): handle FAKE_LINES more consistently
      sequencer: simplify allocation of result array in todo_list_rearrange_squash()
      t/lib-rebase: improve documentation of set_fake_editor()
      t9001: fix indentation in test_no_confirm()
      format-patch: add --description-file option
      sequencer: rectify empty hint in call of require_clean_work_tree()
      sequencer: beautify subject of reverts of reverts
      git-revert.txt: add discussion
      sequencer: fix error message on failure to copy SQUASH_MSG
      t3404-rebase-interactive.sh: fix typos in title of a rewording test
      sequencer: remove unreachable exit condition in pick_commits()
      am: fix error message in parse_opt_show_current_patch()
      rebase: simplify code related to imply_merge()
      rebase: handle --strategy via imply_merge() as well
      rebase: move parse_opt_keep_empty() down

Patrick Steinhardt (23):
      upload-pack: fix exit code when denying fetch of unreachable object ID
      revision: make pseudo-opt flags read via stdin behave consistently
      doc/git-worktree: mention "refs/rewritten" as per-worktree refs
      doc/git-repack: fix syntax for `-g` shorthand option
      doc/git-repack: don't mention nonexistent "--unpacked" option
      commit-graph: introduce envvar to disable commit existence checks
      commit: detect commits that exist in commit-graph but not in the ODB
      builtin/show-ref: convert pattern to a local variable
      builtin/show-ref: split up different subcommands
      builtin/show-ref: fix leaking string buffer
      builtin/show-ref: fix dead code when passing patterns
      builtin/show-ref: refactor `--exclude-existing` options
      builtin/show-ref: stop using global variable to count matches
      builtin/show-ref: stop using global vars for `show_one()`
      builtin/show-ref: refactor options for patterns subcommand
      builtin/show-ref: ensure mutual exclusiveness of subcommands
      builtin/show-ref: explicitly spell out different modes in synopsis
      builtin/show-ref: add new mode to check for reference existence
      t: use git-show-ref(1) to check for ref existence
      test-bloom: stop setting up Git directory twice
      shallow: fix memory leak when registering shallow roots
      setup: refactor `upgrade_repository_format()` to have common exit
      setup: fix leaking repository format

Peter Krefting (1):
      l10n: sv.po: Update Swedish translation (5579t)

Philippe Blain (3):
      completion: commit: complete configured trailer tokens
      completion: commit: complete trailers tokens more robustly
      completion: improve doc for complex aliases

Phillip Wood (7):
      rebase -i: move unlink() calls
      rebase -i: remove patch file after conflict resolution
      sequencer: use rebase_path_message()
      sequencer: factor out part of pick_commits()
      rebase: fix rewritten list for failed pick
      rebase --continue: refuse to commit after failed command
      rebase -i: fix adding failed command to the todo list

Ralf Thielow (1):
      l10n: Update German translation

René Scharfe (18):
      subtree: disallow --no-{help,quiet,debug,branch,message}
      t1502, docs: disallow --no-help
      t1502: move optionspec help output to a file
      t1502: test option negation
      parse-options: show negatability of options in short help
      parse-options: factor out usage_indent() and usage_padding()
      parse-options: no --[no-]no-...
      parse-options: simplify usage_padding()
      parse-options: allow omitting option help text
      name-rev: use OPT_HIDDEN_BOOL for --peel-tag
      grep: use OPT_INTEGER_F for --max-depth
      grep: reject --no-or
      diff --no-index: fix -R with stdin
      parse-options: drop unused parse_opt_ctx_t member
      parse-options: make CMDMODE errors more precise
      am: simplify --show-current-patch handling
      am, rebase: fix arghelp syntax of --empty
      reflog: fix expire --single-worktree

Robert Coup (1):
      upload-pack: add tracing for fetches

Rubén Justo (2):
      branch: error message deleting a branch in use
      branch: error message checking out a branch in use

Sergey Organov (4):
      doc/diff-options: fix link to generating patch section
      diff-merges: improve --diff-merges documentation
      diff-merges: introduce '--dd' option
      completion: complete '--dd'

Shuqi Liang (3):
      t1092: add tests for 'git check-attr'
      attr.c: read attributes in a sparse directory
      check-attr: integrate with sparse-index

Tang Yuyi (1):
      merge-tree: add -X strategy option

Taylor Blau (28):
      repack: move `pack_geometry` struct to the stack
      commit-graph: introduce `commit_graph_generation_from_graph()`
      t/t5318-commit-graph.sh: test generation zero transitions during fsck
      commit-graph: avoid repeated mixed generation number warnings
      leak tests: mark a handful of tests as leak-free
      leak tests: mark t3321-notes-stripspace.sh as leak-free
      leak tests: mark t5583-push-branches.sh as leak-free
      builtin/pack-objects.c: remove unnecessary strbuf_reset()
      builtin/pack-objects.c: support `--max-pack-size` with `--cruft`
      Documentation/gitformat-pack.txt: remove multi-cruft packs alternative
      Documentation/gitformat-pack.txt: drop mixed version section
      builtin/repack.c: extract structure to store existing packs
      builtin/repack.c: extract marking packs for deletion
      builtin/repack.c: extract redundant pack cleanup for --geometric
      builtin/repack.c: extract redundant pack cleanup for existing packs
      builtin/repack.c: extract `has_existing_non_kept_packs()`
      builtin/repack.c: store existing cruft packs separately
      builtin/repack.c: avoid directly inspecting "util"
      builtin/repack.c: extract common cruft pack loop
      git-send-email.perl: avoid printing undef when validating addresses
      t7700: split cruft-related tests to t7704
      builtin/repack.c: parse `--max-pack-size` with OPT_MAGNITUDE
      builtin/repack.c: implement support for `--max-cruft-size`
      builtin/repack.c: avoid making cruft packs preferred
      Documentation/gitformat-pack.txt: fix typo
      Documentation/gitformat-pack.txt: fix incorrect MIDX documentation
      list-objects: drop --unpacked non-commit objects from results
      pack-bitmap: drop --unpacked non-commit objects from results

Teng Long (1):
      l10n: zh_CN: for git 2.43.0-rc1

Todd Zullinger (3):
      RelNotes: minor typo fixes in 2.43.0 draft
      RelNotes: improve wording of credential helper notes
      send-email: remove stray characters from usage

Victoria Dye (5):
      ref-cache.c: fix prefix matching in ref iteration
      dir.[ch]: expose 'get_dtype'
      dir.[ch]: add 'follow_symlink' arg to 'get_dtype'
      files-backend.c: avoid stat in 'loose_fill_ref_dir'
      glossary: add definitions for dereference & peel

Vipul Kumar (1):
      git-gui: Fix a typo in README

Wesley Schwengle (2):
      git-push.txt: fix grammar
      git-svn: drop FakeTerm hack

Yi-Jyun Pan (1):
      l10n: zh-TW: Git 2.43.0-rc1

brian m. carlson (2):
      t: add a test helper to truncate files
      merge-file: add an option to process object IDs

Ævar Arnfjörð Bjarmason (1):
      Makefiles: change search through $(MAKEFLAGS) for GNU make 4.4

Štěpán Němec (6):
      doc: fix some typos, grammar and wording issues
      doc/diff-options: improve wording of the log.diffMerges mention
      git-jump: admit to passing merge mode args to ls-files
      doc/gitk: s/sticked/stuck/
      t/README: fix multi-prerequisite example
      doc/cat-file: make synopsis and description less confusing

王常新 (1):
      merge-ort.c: fix typo 'neeed' to 'needed'

谢致邦 (XIE Zhibang) (2):
      doc: correct the 50 characters soft limit
      doc: correct the 50 characters soft limit (+)



^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.43.0-rc2
@ 2023-11-14 17:25  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-11-14 17:25 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.43.0-rc2 is now available for testing at
the usual places.  It is comprised of 451 non-merge commits since
v2.42.0, contributed by 71 people, 17 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.43.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.42.0 are as follows.
Welcome to the Git development community!

  Aditya Neelamraju, Alyssa Ross, Caleb Hill, Dorcas AnonoLitunya,
  Dragan Simic, Isoken June Ibizugbe, Jan Alexander Steffens
  (heftig), Javier Mora, ks1322 ks1322, Mark Ruvald Pedersen,
  Matthew McClain, Naomi Ibe, Romain Chossart, Tang Yuyi, Vipul
  Kumar, 王常新, and 谢致邦 (XIE Zhibang).

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Andrei Rybak, Andy Koppe, Bagas
  Sanjaya, Beat Bolli, brian m. carlson, Calvin Wan, Christian
  Couder, Christian Hesse, Derrick Stolee, Drew DeVault, Elijah
  Newren, Emily Shaffer, Eric W. Biederman, Eric Wong, Evan
  Gates, Han Young, Hariom Verma, Jacob Abel, Jacob Stopak,
  Jason Hatton, Jeff King, Johannes Schindelin, John Cai,
  Josh Soref, Josip Sokcevic, Junio C Hamano, Karthik Nayak,
  Kousik Sanagavarapu, Kristoffer Haugsbakk, Linus Arver, Mark
  Levedahl, Martin Ågren, Martin Storsjö, M Hickford, Michael
  Strawbridge, Michal Suchanek, Oswald Buddenhagen, Patrick
  Steinhardt, Philippe Blain, Phillip Wood, Randall S. Becker,
  René Scharfe, Robert Coup, Rubén Justo, Sergey Organov, Shuqi
  Liang, Stefan Haller, Štěpán Němec, Taylor Blau, Teng Long,
  Todd Zullinger, Victoria Dye, and Wesley Schwengle.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.43 Release Notes (draft)
===============================

Backward Compatibility Notes

 * The "--rfc" option of "git format-patch" used to be a valid way to
   override an earlier "--subject-prefix=<something>" on the command
   line and replace it with "[RFC PATCH]", but from this release, it
   merely prefixes the string "RFC " in front of the given subject
   prefix.  If you are negatively affected by this change, please use
   "--subject-prefix=PATCH --rfc" as a replacement.

 * "git rev-list --stdin" learned to take non-revisions (like "--not")
   recently from the standard input, but the way such a "--not" was
   handled was quite confusing, which has been rethought.  The updated
   rule is that "--not" given from the command line only affects revs
   given from the command line that comes but not revs read from the
   standard input, and "--not" read from the standard input affects
   revs given from the standard input and not revs given from the
   command line.

UI, Workflows & Features

 * A message written in olden time prevented a branch from getting
   checked out saying it is already checked out elsewhere, but these
   days, we treat a branch that is being bisected or rebased just like
   a branch that is checked out and protect it.  Rephrase the message
   to say that the branch is in use.

 * Hourly and other schedules of "git maintenance" jobs are randomly
   distributed now.

 * "git cmd -h" learned to signal which options can be negated by
   listing such options like "--[no-]opt".

 * The way authentication related data other than passwords (e.g.,
   oauth token and password expiration data) are stored in libsecret
   keyrings has been rethought.

 * Update the libsecret and wincred credential helpers to correctly
   match which credential to erase; they erased the wrong entry in
   some cases.

 * Git GUI updates.

 * "git format-patch" learns a way to feed cover letter description,
   that (1) can be used on detached HEAD where there is no branch
   description available, and (2) also can override the branch
   description if there is one.

 * Use of --max-pack-size to allow multiple packfiles to be created is
   now supported even when we are sending unreachable objects to cruft
   packs.

 * "git format-patch --rfc --subject-prefix=<foo>" used to ignore the
   "--subject-prefix" option and used "[RFC PATCH]"; now we will add
   "RFC" prefix to whatever subject prefix is specified.

 * "git log --format" has been taught the %(decorate) placeholder.

 * The default log message created by "git revert", when reverting a
   commit that records a revert, has been tweaked, to encourage people
   to describe complex "revert of revert of revert" situations better in
   their own words.

 * The command-line completion support (in contrib/) learned to
   complete "git commit --trailer=" for possible trailer keys.

 * "git update-index" learns "--show-index-version" to inspect
   the index format version used by the on-disk index file.

 * "git diff" learned diff.statNameWidth configuration variable, to
   give the default width for the name part in the "--stat" output.

 * "git range-diff --notes=foo" compared "log --notes=foo --notes" of
   the two ranges, instead of using just the specified notes tree.

 * The command line completion script (in contrib/) can be told to
   complete aliases by including ": git <cmd> ;" in the alias to tell
   it that the alias should be completed in a similar way to how "git <cmd>" is
   completed.  The parsing code for the alias has been loosened to
   allow ';' without an extra space before it.

 * "git for-each-ref" and friends learned to apply mailmap to
   authorname and other fields.

 * "git repack" machinery learns to pay attention to the "--filter="
   option.

 * "git repack" learned "--max-cruft-size" to prevent cruft packs from
   growing without bounds.

 * "git merge-tree" learned to take strategy backend specific options
   via the "-X" option, like "git merge" does.

 * "git log" and friends learned "--dd" that is a short-hand for
   "--diff-merges=first-parent -p".

 * The attribute subsystem learned to honor `attr.tree` configuration
   that specifies which tree to read the .gitattributes files from.

 * "git merge-file" learns a mode to read three contents to be merged
   from blob objects.


Performance, Internal Implementation, Development Support etc.

 * "git check-attr" has been taught to work better with sparse-index.

 * It may be tempting to leave the help text NULL for a command line
   option that is either hidden or too obvious, but "git subcmd -h"
   and "git subcmd --help-all" would have segfaulted if done so.  Now
   the help text is optional.

 * Tests that are known to pass with LSan are now marked as such.

 * Flaky "git p4" tests, as well as "git svn" tests, are now skipped
   in the (rather expensive) sanitizer CI job.

 * Tests with LSan from time to time seem to emit harmless messages
   that make our tests unnecessarily flaky; we work around it by
   filtering the uninteresting output.

 * Unused parameters to functions are marked as such, and/or removed,
   in order to bring us closer to -Wunused-parameter clean.

 * The code to keep track of existing packs in the repository while
   repacking has been refactored.

 * The "streaming" interface used for bulk-checkin codepath has been
   narrowed to take only blob objects for now, with no real loss of
   functionality.

 * GitHub CI workflow has learned to trigger Coverity check.

 * Test coverage for trailers has been improved.

 * The code to iterate over loose references has been optimized to
   reduce the number of lstat() system calls.

 * The codepaths that read "chunk" formatted files have been corrected
   to pay attention to the chunk size and notice broken files.

 * Replace macos-12 used at GitHub CI with macos-13.
   (merge 682a868f67 js/ci-use-macos-13 later to maint).


Fixes since v2.42
-----------------

 * Overly long label names used in the sequencer machinery are now
   chopped to fit under filesystem limitation.

 * Scalar updates.

 * Tweak GitHub Actions CI so that pushing the same commit to multiple
   branch tips at the same time will not waste building and testing
   the same thing twice.

 * The commit-graph verification code that detects a mixture of zero and
   non-zero generation numbers has been updated.

 * "git diff -w --exit-code" with various options did not work
   correctly, which is being addressed.

 * transfer.unpackLimit ought to be used as a fallback, but overrode
   fetch.unpackLimit and receive.unpackLimit instead.

 * The use of API between two calls to require_clean_work_tree() from
   the sequencer code has been cleaned up for consistency.

 * "git diff --no-such-option" and other corner cases around the exit
   status of the "diff" command have been corrected.

 * "git for-each-ref --sort='contents:size'" sorts the refs according
   to size numerically, giving a ref that points at a blob twelve-byte
   (12) long before showing a blob hundred-byte (100) long.

 * We now limit the depth of the tree objects and maximum length of
   pathnames recorded in tree objects.
   (merge 4d5693ba05 jk/tree-name-and-depth-limit later to maint).

 * Various fixes to the behavior of "rebase -i" when the command got
   interrupted by conflicting changes.

 * References from a description of the `--patch` option in various
   manual pages have been simplified and improved.

 * "git grep -e A --no-or -e B" is accepted, even though the negation
   of "or" did not mean anything, which has been tightened.

 * The completion script (in contrib/) has been taught to treat the
   "-t" option to "git checkout" and "git switch" just like the
   "--track" option, to complete remote-tracking branches.

 * "git diff --no-index -R <(one) <(two)" did not work correctly,
   which has been corrected.

 * Update "git maintenance" timers' implementation based on systemd
   timers to work with WSL.

 * "git diff --cached" codepath did not fill the necessary stat
   information for a file when fsmonitor knows it is clean and ended
   up behaving as if it is not clean, which has been corrected.

 * Clarify how "alias.foo = : git cmd ; aliased-command-string" should be
   spelled with necessary whitespace around punctuation marks to
   work.

 * HTTP Header redaction code has been adjusted for a newer version of
   cURL library that shows its traces differently from earlier
   versions.

 * An error message given by "git send-email" when given a malformed
   address did not give correct information, which has been corrected.

 * UBSan options were not propagated through the test framework to git
   run via the httpd, unlike ASan options, which has been corrected.

 * "checkout --merge -- path" and "update-index --unresolve path" did
   not resurrect conflicted state that was resolved to remove path,
   but now they do.
   (merge 5bdedac3c7 jc/unresolve-removal later to maint).

 * The display width table for unicode characters has been updated for
   Unicode 15.1
   (merge 872976c37e bb/unicode-width-table-15 later to maint).

 * Update mailmap entry for Derrick.
   (merge 6e5457d8c7 ds/mailmap-entry-update later to maint).

 * In .gitmodules files, submodules are keyed by their names, and the
   path to the submodule whose name is $name is specified by the
   submodule.$name.path variable.  There were a few codepaths that
   mixed the name and path up when consulting the submodule database,
   which have been corrected.  It took long for these bugs to be found
   as the name of a submodule initially is the same as its path, and
   the problem does not surface until it is moved to a different path,
   which apparently happens very rarely.

 * "git diff --merge-base X other args..." insisted that X must be a
   commit and errored out when given an annotated tag that peels to a
   commit, but we only need it to be a committish.  This has been
   corrected.
   (merge 4adceb5a29 ar/diff-index-merge-base-fix later to maint).

 * Fix "git merge-tree" to stop segfaulting when the --attr-source
   option is used.
   (merge e95bafc52f jc/merge-ort-attr-index-fix later to maint).

 * Unlike "git log --pretty=%D", "git log --pretty="%(decorate)" did
   not auto-initialize the decoration subsystem, which has been
   corrected.

 * Feeding "git stash store" with a random commit that was not created
   by "git stash create" now errors out.
   (merge d9b6634589 jc/fail-stash-to-store-non-stash later to maint).

 * The index file has room only for the lower 32-bit of the file size in
   the cached stat information, which means cached stat information
   will have 0 in its sd_size member for a file whose size is a multiple
   of 4GiB.  This is mistaken for a racily clean path.  Avoid it by
   storing a bogus sd_size value instead for such files.
   (merge 5143ac07b1 bc/racy-4gb-files later to maint).

 * "git p4" tried to store symlinks to LFS when told, but has been
   fixed not to do so, because it does not make sense.
   (merge 10c89a02b0 mm/p4-symlink-with-lfs later to maint).

 * The codepath to handle recipient addresses `git send-email
   --compose` learns from the user was completely broken, which has
   been corrected.
   (merge 3ec6167567 jk/send-email-fix-addresses-from-composed-messages later to maint).

 * "cd sub && git grep -f patterns" tried to read "patterns" file at
   the top level of the working tree; it has been corrected to read
   "sub/patterns" instead.


 * "git reflog expire --single-worktree" has been broken for the past
   20 months or so, which has been corrected.

 * "git send-email" did not have certain pieces of data computed yet
   when it tried to validate the outgoing messages and its recipient
   addresses, which has been sorted out.

 * "git bugreport" learned to complain when it received a command line
   argument that it will not use.

 * The codepath to traverse the commit-graph learned to notice that a
   commit is missing (e.g., corrupt repository lost an object), even
   though it knows something about the commit (like its parents) from
   what is in commit-graph.
   (merge 7a5d604443 ps/do-not-trust-commit-graph-blindly-for-existence later to maint).

 * "git rev-list --missing" did not work for missing commit objects,
   which has been corrected.

 * "git rev-list --unpacked --objects" failed to exclude packed
   non-commit objects, which has been corrected.
   (merge 7b3c8e9f38 tb/rev-list-unpacked-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge c2c349a15c xz/commit-title-soft-limit-doc later to maint).
   (merge 1bd809938a tb/format-pack-doc-update later to maint).
   (merge 8f81532599 an/clang-format-typofix later to maint).
   (merge 3ca86adc2d la/strvec-header-fix later to maint).
   (merge 6789275d37 jc/test-i18ngrep later to maint).
   (merge 9972cd6004 ps/leakfixes later to maint).

----------------------------------------------------------------

Changes since v2.42.0 are as follows:

Aditya Neelamraju (1):
      clang-format: fix typo in comment

Alyssa Ross (1):
      diff: fix --merge-base with annotated tags

Andrei Rybak (1):
      SubmittingPatches: call gitk's command "Copy commit reference"

Andy Koppe (8):
      pretty-formats: enclose options in angle brackets
      decorate: refactor format_decorations()
      decorate: avoid some unnecessary color overhead
      decorate: color each token separately
      pretty: add %(decorate[:<options>]) format
      pretty: add pointer and tag options to %(decorate)
      decorate: use commit color for HEAD arrow
      pretty: fix ref filtering for %(decorate) formats

Beat Bolli (1):
      unicode: update the width tables to Unicode 15.1

Caleb Hill (1):
      git-clean doc: fix "without do cleaning" typo

Calvin Wan (4):
      hex-ll: separate out non-hash-algo functions
      wrapper: reduce scope of remove_or_warn()
      config: correct bad boolean env value error message
      parse: separate out parsing functions from config.h

Christian Couder (9):
      pack-objects: allow `--filter` without `--stdout`
      t/helper: add 'find-pack' test-tool
      repack: refactor finishing pack-objects command
      repack: refactor finding pack prefix
      pack-bitmap-write: rebuild using new bitmap when remapping
      repack: add `--filter=<filter-spec>` option
      gc: add `gc.repackFilter` config option
      repack: implement `--filter-to` for storing filtered out objects
      gc: add `gc.repackFilterTo` config option

Christian Hesse (2):
      t/lib-gpg: forcibly run a trustdb update
      t/t6300: drop magic filtering

Derrick Stolee (13):
      upload-pack: fix race condition in error messages
      maintenance: add get_random_minute()
      maintenance: use random minute in launchctl scheduler
      maintenance: use random minute in Windows scheduler
      maintenance: use random minute in cron scheduler
      maintenance: swap method locations
      maintenance: use random minute in systemd scheduler
      maintenance: fix systemd schedule overlaps
      maintenance: update schedule before config
      scalar: add --[no-]src option
      setup: add discover_git_directory_reason()
      scalar reconfigure: help users remove buggy repos
      mailmap: change primary address for Derrick Stolee

Dorcas AnonoLitunya (1):
      t7601: use "test_path_is_file" etc. instead of "test -f"

Dragan Simic (2):
      diff --stat: add config option to limit filename width
      diff --stat: set the width defaults in a helper function

Drew DeVault (1):
      format-patch: --rfc honors what --subject-prefix sets

Elijah Newren (26):
      documentation: wording improvements
      documentation: fix small error
      documentation: fix typos
      documentation: fix apostrophe usage
      documentation: add missing words
      documentation: remove extraneous words
      documentation: fix subject/verb agreement
      documentation: employ consistent verb tense for a list
      documentation: fix verb tense
      documentation: fix adjective vs. noun
      documentation: fix verb vs. noun
      documentation: fix singular vs. plural
      documentation: whitespace is already generally plural
      documentation: fix choice of article
      documentation: add missing article
      documentation: remove unnecessary hyphens
      documentation: add missing hyphens
      documentation: use clearer prepositions
      documentation: fix punctuation
      documentation: fix capitalization
      documentation: fix whitespace issues
      documentation: add some commas where they are helpful
      documentation: add missing fullstops
      documentation: add missing quotes
      documentation: add missing parenthesis
      RelNotes: minor wording fixes in 2.43.0 release notes

Emily Shaffer (2):
      t0091-bugreport: stop using i18ngrep
      bugreport: reject positional arguments

Eric W. Biederman (1):
      bulk-checkin: only support blobs in index_bulk_checkin

Eric Wong (1):
      treewide: fix various bugs w/ OpenSSL 3+ EVP API

Evan Gates (1):
      git-config: fix misworded --type=path explanation

Han Young (1):
      show doc: redirect user to git log manual instead of git diff-tree

Isoken June Ibizugbe (1):
      builtin/branch.c: adjust error messages to coding guidelines

Jacob Abel (1):
      builtin/worktree.c: fix typo in "forgot fetch" msg

Jacob Stopak (1):
      Include gettext.h in MyFirstContribution tutorial

Jan Alexander Steffens (heftig) (6):
      submodule--helper: use submodule_from_path in set-{url,branch}
      submodule--helper: return error from set-url when modifying failed
      t7419: actually test the branch switching
      t7419, t7420: use test_cmp_config instead of grepping .gitmodules
      t7419: test that we correctly handle renamed submodules
      t7420: test that we correctly handle renamed submodules

Jason Hatton (1):
      Prevent git from rehashing 4GiB files

Javier Mora (2):
      git-status.txt: fix minor asciidoc format issue
      doc/git-bisect: clarify `git bisect run` syntax

Jeff King (114):
      hashmap: use expected signatures for comparison functions
      diff-files: avoid negative exit value
      diff: show usage for unknown builtin_diff_files() options
      diff: die when failing to read index in git-diff builtin
      diff: drop useless return from run_diff_{files,index} functions
      diff: drop useless return values in git-diff helpers
      diff: drop useless "status" parameter from diff_result_code()
      commit-graph: verify swapped zero/non-zero generation cases
      test-lib: ignore uninteresting LSan output
      sequencer: use repository parameter in short_commit_name()
      sequencer: mark repository argument as unused
      ref-filter: mark unused parameters in parser callbacks
      pack-bitmap: mark unused parameters in show_object callback
      worktree: mark unused parameters in each_ref_fn callback
      commit-graph: mark unused data parameters in generation callbacks
      ls-tree: mark unused parameter in callback
      stash: mark unused parameter in diff callback
      trace2: mark unused us_elapsed_absolute parameters
      trace2: mark unused config callback parameter
      test-trace2: mark unused argv/argc parameters
      grep: mark unused parameter in output function
      add-interactive: mark unused callback parameters
      negotiator/noop: mark unused callback parameters
      worktree: mark unused parameters in noop repair callback
      imap-send: mark unused parameters with NO_OPENSSL
      grep: mark unused parmaeters in pcre fallbacks
      credential: mark unused parameter in urlmatch callback
      fetch: mark unused parameter in ref_transaction callback
      bundle-uri: mark unused parameters in callbacks
      gc: mark unused descriptors in scheduler callbacks
      update-ref: mark unused parameter in parser callbacks
      ci: allow branch selection through "vars"
      ci: deprecate ci/config/allow-ref script
      merge: make xopts a strvec
      merge: simplify parsing of "-n" option
      format-patch: use OPT_STRING_LIST for to/cc options
      tree-walk: reduce stack size for recursive functions
      tree-walk: drop MAX_TRAVERSE_TREES macro
      tree-walk: rename "error" variable
      fsck: detect very large tree pathnames
      add core.maxTreeDepth config
      traverse_trees(): respect max_allowed_tree_depth
      read_tree(): respect max_allowed_tree_depth
      list-objects: respect max_allowed_tree_depth
      tree-diff: respect max_allowed_tree_depth
      lower core.maxTreeDepth default to 2048
      checkout-index: delay automatic setting of to_tempfile
      parse-options: prefer opt->value to globals in callbacks
      parse-options: mark unused "opt" parameter in callbacks
      merge: do not pass unused opt->value parameter
      parse-options: add more BUG_ON() annotations
      interpret-trailers: mark unused "unset" parameters in option callbacks
      parse-options: mark unused parameters in noop callback
      merge-ort: drop custom err() function
      merge-ort: stop passing "opt" to read_oid_strbuf()
      merge-ort: drop unused parameters from detect_and_process_renames()
      merge-ort: drop unused "opt" parameter from merge_check_renames_reusable()
      http: factor out matching of curl http/2 trace lines
      http: update curl http/2 info matching for curl 8.3.0
      merge-ort: lowercase a few error messages
      fsmonitor: prefer repo_git_path() to git_pathdup()
      fsmonitor/win32: drop unused parameters
      fsmonitor: mark some maybe-unused parameters
      fsmonitor/win32: mark unused parameter in fsm_os__incompatible()
      fsmonitor: mark unused parameters in stub functions
      fsmonitor/darwin: mark unused parameters in system callback
      fsmonitor: mark unused hashmap callback parameters
      run-command: mark unused parameters in start_bg_wait callbacks
      test-lib: set UBSAN_OPTIONS to match ASan
      commit-graph: factor out chain opening function
      commit-graph: check mixed generation validation when loading chain file
      t5324: harmonize sha1/sha256 graph chain corruption
      commit-graph: detect read errors when verifying graph chain
      commit-graph: tighten chain size check
      commit-graph: report incomplete chains during verification
      t6700: mark test as leak-free
      commit-reach: free temporary list in get_octopus_merge_bases()
      merge: free result of repo_get_merge_bases()
      commit-graph: move slab-clearing to close_commit_graph()
      commit-graph: free all elements of graph chain
      commit-graph: delay base_graph assignment in add_graph_to_chain()
      commit-graph: free graph struct that was not added to chain
      commit-graph: free write-context entries before overwriting
      commit-graph: free write-context base_graph_name during cleanup
      commit-graph: clear oidset after finishing write
      decorate: add clear_decoration() function
      revision: clear decoration structs during release_revisions()
      daemon: free listen_addr before returning
      repack: free existing_cruft array after use
      chunk-format: note that pair_chunk() is unsafe
      t: add library for munging chunk-format files
      midx: stop ignoring malformed oid fanout chunk
      commit-graph: check size of oid fanout chunk
      midx: check size of oid lookup chunk
      commit-graph: check consistency of fanout table
      midx: check size of pack names chunk
      midx: enforce chunk alignment on reading
      midx: check size of object offset chunk
      midx: bounds-check large offset chunk
      midx: check size of revindex chunk
      commit-graph: check size of commit data chunk
      commit-graph: detect out-of-bounds extra-edges pointers
      commit-graph: bounds-check base graphs chunk
      commit-graph: check size of generations chunk
      commit-graph: bounds-check generation overflow chunk
      commit-graph: check bounds when accessing BDAT chunk
      commit-graph: check bounds when accessing BIDX chunk
      commit-graph: detect out-of-order BIDX offsets
      chunk-format: drop pair_chunk_unsafe()
      t5319: make corrupted large-offset test more robust
      doc/send-email: mention handling of "reply-to" with --compose
      Revert "send-email: extract email-parsing code into a subroutine"
      send-email: handle to/cc/bcc from --compose message
      t: avoid perl's pack/unpack "Q" specifier

Johannes Schindelin (19):
      windows: ignore empty `PATH` elements
      is_Cygwin: avoid `exec`ing anything
      Move is_<platform> functions to the beginning
      Move the `_which` function (almost) to the top
      Work around Tcl's default `PATH` lookup
      rebase: allow overriding the maximal length of the generated labels
      ci: avoid building from the same commit in parallel
      ci(linux-asan-ubsan): let's save some time
      var: avoid a segmentation fault when `HOME` is unset
      completion(switch/checkout): treat --track and -t the same
      maintenance(systemd): support the Windows Subsystem for Linux
      ci: add a GitHub workflow to submit Coverity scans
      coverity: cache the Coverity Build Tool
      coverity: allow overriding the Coverity project
      coverity: support building on Windows
      coverity: allow running on macOS
      coverity: detect and report when the token or project is incorrect
      max_tree_depth: lower it for MSVC to avoid stack overflows
      ci: upgrade to using macos-13

John Cai (3):
      merge-ort: initialize repo in index state
      attr: read attributes from HEAD when bare repo
      attr: add attr.tree for setting the treeish to read attributes from

Josh Soref (1):
      Documentation/git-status: add missing line breaks

Josip Sokcevic (1):
      diff-lib: fix check_removed when fsmonitor is on

Junio C Hamano (56):
      update-index: do not read HEAD and MERGE_HEAD unconditionally
      resolve-undo: allow resurrecting conflicted state that resolved to deletion
      update-index: use unmerge_index_entry() to support removal
      update-index: remove stale fallback code for "--unresolve"
      checkout/restore: refuse unmerging paths unless checking out of the index
      checkout/restore: add basic tests for --merge
      checkout: allow "checkout -m path" to unmerge removed paths
      mv: fix error for moving directory to another
      diff: move the fallback "--exit-code" code down
      diff: mode-only change should be noticed by "--patch -w --exit-code"
      diff: teach "--stat -w --exit-code" to notice differences
      t4040: remove test that succeeded for a wrong reason
      pretty-formats: define "literal formatting code"
      diff: spell DIFF_INDEX_CACHED out when calling run_diff_index()
      diff: the -w option breaks --exit-code for --raw and other output modes
      transfer.unpackLimit: fetch/receive.unpackLimit takes precedence
      Start the 2.43 cycle
      The second batch for 2.43
      The extra batch to update credenthal helpers
      The third batch
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      update-index doc: v4 is OK with JGit and libgit2
      update-index: add --show-index-version
      test-tool: retire "index-version"
      The eighth batch
      The ninth batch
      The tenth batch
      The eleventh batch
      completion: loosen and document the requirement around completing alias
      The twelfth batch
      The thirteenth batch
      The fourteenth batch
      The fifteenth batch
      doc: update list archive reference to use lore.kernel.org
      The sixteenth batch
      merge: introduce {copy|clear}_merge_options()
      stash: be careful what we store
      grep: -f <path> is relative to $cwd
      The seventeenth batch
      The eighteenth batch
      commit: do not use cryptic "new_index" in end-user facing messages
      The nineteenth batch
      am: align placeholder for --whitespace option with apply
      The twentieth batch
      The twenty-first batch
      The twenty-second batch
      test framework: further deprecate test_i18ngrep
      Git 2.42.1
      tests: teach callers of test_i18ngrep to use test_grep
      A bit more before -rc1
      Prepare for -rc1
      Git 2.43-rc1
      Git 2.43-rc2

Karthik Nayak (3):
      revision: rename bit to `do_not_die_on_missing_objects`
      rev-list: move `show_commit()` to the bottom
      rev-list: add commit object support in `--missing` option

Kousik Sanagavarapu (4):
      ref-filter: sort numerically when ":size" is used
      t/t6300: cleanup test_atom
      t/t6300: introduce test_bad_atom
      ref-filter: add mailmap support

Kristoffer Haugsbakk (2):
      range-diff: treat notes like `log`
      grep: die gracefully when outside repository

Linus Arver (17):
      trailer tests: make test cases self-contained
      trailer test description: this tests --where=after, not --where=before
      trailer: add tests to check defaulting behavior with --no-* flags
      trailer doc: narrow down scope of --where and related flags
      trailer: trailer location is a place, not an action
      trailer --no-divider help: describe usual "---" meaning
      trailer --parse help: expose aliased options
      trailer --only-input: prefer "configuration variables" over "rules"
      trailer --parse docs: add explanation for its usefulness
      trailer --unfold help: prefer "reformat" over "join"
      trailer doc: emphasize the effect of configuration variables
      trailer doc: separator within key suppresses default separator
      trailer doc: <token> is a <key> or <keyAlias>, not both
      trailer: separate public from internal portion of trailer_iterator
      trailer: split process_input_file into separate pieces
      trailer: split process_command_line_args into separate functions
      strvec: drop unnecessary include of hex.h

M Hickford (3):
      credential/libsecret: store new attributes
      credential/libsecret: erase matching creds only
      credential/wincred: erase matching creds only

Mark Levedahl (6):
      git gui Makefile - remove Cygwin modifications
      git-gui - remove obsolete Cygwin specific code
      git-gui - use cygstart to browse on Cygwin
      git-gui - use mkshortcut on Cygwin
      git-gui - re-enable use of hook scripts
      git-gui - use git-hook, honor core.hooksPath

Mark Ruvald Pedersen (1):
      sequencer: truncate labels to accommodate loose refs

Martin Ågren (1):
      git-merge-file doc: drop "-file" from argument placeholders

Matthew McClain (1):
      git-p4 shouldn't attempt to store symlinks in LFS

Michael Strawbridge (1):
      send-email: move validation code below process_address_list

Michal Suchanek (1):
      git-push doc: more visibility for -q option

Naomi Ibe (1):
      builtin/add.c: clean up die() messages

Oswald Buddenhagen (16):
      t/lib-rebase: set_fake_editor(): fix recognition of reset's short command
      t/lib-rebase: set_fake_editor(): handle FAKE_LINES more consistently
      sequencer: simplify allocation of result array in todo_list_rearrange_squash()
      t/lib-rebase: improve documentation of set_fake_editor()
      t9001: fix indentation in test_no_confirm()
      format-patch: add --description-file option
      sequencer: rectify empty hint in call of require_clean_work_tree()
      sequencer: beautify subject of reverts of reverts
      git-revert.txt: add discussion
      sequencer: fix error message on failure to copy SQUASH_MSG
      t3404-rebase-interactive.sh: fix typos in title of a rewording test
      sequencer: remove unreachable exit condition in pick_commits()
      am: fix error message in parse_opt_show_current_patch()
      rebase: simplify code related to imply_merge()
      rebase: handle --strategy via imply_merge() as well
      rebase: move parse_opt_keep_empty() down

Patrick Steinhardt (23):
      upload-pack: fix exit code when denying fetch of unreachable object ID
      revision: make pseudo-opt flags read via stdin behave consistently
      doc/git-worktree: mention "refs/rewritten" as per-worktree refs
      doc/git-repack: fix syntax for `-g` shorthand option
      doc/git-repack: don't mention nonexistent "--unpacked" option
      commit-graph: introduce envvar to disable commit existence checks
      commit: detect commits that exist in commit-graph but not in the ODB
      builtin/show-ref: convert pattern to a local variable
      builtin/show-ref: split up different subcommands
      builtin/show-ref: fix leaking string buffer
      builtin/show-ref: fix dead code when passing patterns
      builtin/show-ref: refactor `--exclude-existing` options
      builtin/show-ref: stop using global variable to count matches
      builtin/show-ref: stop using global vars for `show_one()`
      builtin/show-ref: refactor options for patterns subcommand
      builtin/show-ref: ensure mutual exclusiveness of subcommands
      builtin/show-ref: explicitly spell out different modes in synopsis
      builtin/show-ref: add new mode to check for reference existence
      t: use git-show-ref(1) to check for ref existence
      test-bloom: stop setting up Git directory twice
      shallow: fix memory leak when registering shallow roots
      setup: refactor `upgrade_repository_format()` to have common exit
      setup: fix leaking repository format

Philippe Blain (3):
      completion: commit: complete configured trailer tokens
      completion: commit: complete trailers tokens more robustly
      completion: improve doc for complex aliases

Phillip Wood (7):
      rebase -i: move unlink() calls
      rebase -i: remove patch file after conflict resolution
      sequencer: use rebase_path_message()
      sequencer: factor out part of pick_commits()
      rebase: fix rewritten list for failed pick
      rebase --continue: refuse to commit after failed command
      rebase -i: fix adding failed command to the todo list

René Scharfe (18):
      subtree: disallow --no-{help,quiet,debug,branch,message}
      t1502, docs: disallow --no-help
      t1502: move optionspec help output to a file
      t1502: test option negation
      parse-options: show negatability of options in short help
      parse-options: factor out usage_indent() and usage_padding()
      parse-options: no --[no-]no-...
      parse-options: simplify usage_padding()
      parse-options: allow omitting option help text
      name-rev: use OPT_HIDDEN_BOOL for --peel-tag
      grep: use OPT_INTEGER_F for --max-depth
      grep: reject --no-or
      diff --no-index: fix -R with stdin
      parse-options: drop unused parse_opt_ctx_t member
      parse-options: make CMDMODE errors more precise
      am: simplify --show-current-patch handling
      am, rebase: fix arghelp syntax of --empty
      reflog: fix expire --single-worktree

Robert Coup (1):
      upload-pack: add tracing for fetches

Rubén Justo (2):
      branch: error message deleting a branch in use
      branch: error message checking out a branch in use

Sergey Organov (4):
      doc/diff-options: fix link to generating patch section
      diff-merges: improve --diff-merges documentation
      diff-merges: introduce '--dd' option
      completion: complete '--dd'

Shuqi Liang (3):
      t1092: add tests for 'git check-attr'
      attr.c: read attributes in a sparse directory
      check-attr: integrate with sparse-index

Tang Yuyi (1):
      merge-tree: add -X strategy option

Taylor Blau (28):
      repack: move `pack_geometry` struct to the stack
      commit-graph: introduce `commit_graph_generation_from_graph()`
      t/t5318-commit-graph.sh: test generation zero transitions during fsck
      commit-graph: avoid repeated mixed generation number warnings
      leak tests: mark a handful of tests as leak-free
      leak tests: mark t3321-notes-stripspace.sh as leak-free
      leak tests: mark t5583-push-branches.sh as leak-free
      builtin/pack-objects.c: remove unnecessary strbuf_reset()
      builtin/pack-objects.c: support `--max-pack-size` with `--cruft`
      Documentation/gitformat-pack.txt: remove multi-cruft packs alternative
      Documentation/gitformat-pack.txt: drop mixed version section
      builtin/repack.c: extract structure to store existing packs
      builtin/repack.c: extract marking packs for deletion
      builtin/repack.c: extract redundant pack cleanup for --geometric
      builtin/repack.c: extract redundant pack cleanup for existing packs
      builtin/repack.c: extract `has_existing_non_kept_packs()`
      builtin/repack.c: store existing cruft packs separately
      builtin/repack.c: avoid directly inspecting "util"
      builtin/repack.c: extract common cruft pack loop
      git-send-email.perl: avoid printing undef when validating addresses
      t7700: split cruft-related tests to t7704
      builtin/repack.c: parse `--max-pack-size` with OPT_MAGNITUDE
      builtin/repack.c: implement support for `--max-cruft-size`
      builtin/repack.c: avoid making cruft packs preferred
      Documentation/gitformat-pack.txt: fix typo
      Documentation/gitformat-pack.txt: fix incorrect MIDX documentation
      list-objects: drop --unpacked non-commit objects from results
      pack-bitmap: drop --unpacked non-commit objects from results

Todd Zullinger (2):
      RelNotes: minor typo fixes in 2.43.0 draft
      RelNotes: improve wording of credential helper notes

Victoria Dye (4):
      ref-cache.c: fix prefix matching in ref iteration
      dir.[ch]: expose 'get_dtype'
      dir.[ch]: add 'follow_symlink' arg to 'get_dtype'
      files-backend.c: avoid stat in 'loose_fill_ref_dir'

Vipul Kumar (1):
      git-gui: Fix a typo in README

Wesley Schwengle (2):
      git-push.txt: fix grammar
      git-svn: drop FakeTerm hack

brian m. carlson (2):
      t: add a test helper to truncate files
      merge-file: add an option to process object IDs

Ævar Arnfjörð Bjarmason (1):
      Makefiles: change search through $(MAKEFLAGS) for GNU make 4.4

Štěpán Němec (6):
      doc: fix some typos, grammar and wording issues
      doc/diff-options: improve wording of the log.diffMerges mention
      git-jump: admit to passing merge mode args to ls-files
      doc/gitk: s/sticked/stuck/
      t/README: fix multi-prerequisite example
      doc/cat-file: make synopsis and description less confusing

王常新 (1):
      merge-ort.c: fix typo 'neeed' to 'needed'

谢致邦 (XIE Zhibang) (2):
      doc: correct the 50 characters soft limit
      doc: correct the 50 characters soft limit (+)



^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.43.0-rc1
@ 2023-11-08 17:33  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-11-08 17:33 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.43.0-rc1 is now available for testing at
the usual places.  It is comprised of 449 non-merge commits since
v2.42.0, contributed by 71 people, 17 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.43.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.42.0 are as follows.
Welcome to the Git development community!

  Aditya Neelamraju, Alyssa Ross, Caleb Hill, Dorcas AnonoLitunya,
  Dragan Simic, Isoken June Ibizugbe, Jan Alexander Steffens
  (heftig), Javier Mora, ks1322 ks1322, Mark Ruvald Pedersen,
  Matthew McClain, Naomi Ibe, Romain Chossart, Tang Yuyi, Vipul
  Kumar, 王常新, and 谢致邦 (XIE Zhibang).

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Andrei Rybak, Andy Koppe, Bagas
  Sanjaya, Beat Bolli, brian m. carlson, Calvin Wan, Christian
  Couder, Christian Hesse, Derrick Stolee, Drew DeVault, Elijah
  Newren, Emily Shaffer, Eric W. Biederman, Eric Wong, Evan
  Gates, Han Young, Hariom Verma, Jacob Abel, Jacob Stopak,
  Jason Hatton, Jeff King, Johannes Schindelin, John Cai,
  Josh Soref, Josip Sokcevic, Junio C Hamano, Karthik Nayak,
  Kousik Sanagavarapu, Kristoffer Haugsbakk, Linus Arver, Mark
  Levedahl, Martin Ågren, Martin Storsjö, M Hickford, Michael
  Strawbridge, Michal Suchanek, Oswald Buddenhagen, Patrick
  Steinhardt, Philippe Blain, Phillip Wood, Randall S. Becker,
  René Scharfe, Robert Coup, Rubén Justo, Sergey Organov, Shuqi
  Liang, Stefan Haller, Štěpán Němec, Taylor Blau, Teng Long,
  Todd Zullinger, Victoria Dye, and Wesley Schwengle.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.43 Release Notes (draft)
===============================

Backward Compatibility Notes

 * The "--rfc" option of "git format-patch" used to be a valid way to
   override an earlier "--subject-prefix=<something>" on the command
   line and replace it with "[RFC PATCH]", but from this release, it
   merely prefixes the string "RFC " in front of the given subject
   prefix.  If you are negatively affected by this change, please use
   "--subject-prefix=PATCH --rfc" as a replacement.

 * "git rev-list --stdin" learned to take non-revisions (like "--not")
   recently from the standard input, but the way such a "--not" was
   handled was quite confusing, which has been rethought.  The updated
   rule is that "--not" given from the command line only affects revs
   given from the command line that comes but not revs read from the
   standard input, and "--not" read from the standard input affects
   revs given from the standard input and not revs given from the
   command line.

UI, Workflows & Features

 * A message written in olden time prevented a branch from getting
   checked out saying it is already checked out elsewhere, but these
   days, we treat a branch that is being bisected or rebased just like
   a branch that is checked out and protect it.  Rephrase the message
   to say that the branch is in use.

 * Hourly and other schedule of "git maintenance" jobs are randomly
   distributed now.

 * "git cmd -h" learned to signal which options can be negated by
   listing such options like "--[no-]opt".

 * The way authentication related data other than passwords (e.g.
   oath token and password expiration data) are stored in libsecret
   keyrings has been rethought.

 * Update the libsecret and wincred credential helpers to correctly
   match which credential to erase; they erased the wrong entry in
   some cases.

 * Git GUI updates.

 * "git format-patch" learns a way to feed cover letter description,
   that (1) can be used on detached HEAD where there is no branch
   description available, and (2) also can override the branch
   description if there is one.

 * Use of --max-pack-size to allow multiple packfiles to be created is
   now supported even when we are sending unreachable objects to cruft
   packs.

 * "git format-patch --rfc --subject-prefix=<foo>" used to ignore the
   "--subject-prefix" option and used "[RFC PATCH]"; now we will add
   "RFC" prefix to whatever subject prefix is specified.

 * "git log --format" has been taught the %(decorate) placeholder.

 * The default log message created by "git revert", when reverting a
   commit that records a revert, has been tweaked, to encourage people
   describe complex "revert of revert of revert" situation better in
   their own words.

 * The command-line completion support (in contrib/) learned to
   complete "git commit --trailer=" for possible trailer keys.

 * "git update-index" learns "--show-index-version" to inspect
   the index format version used by the on-disk index file.

 * "git diff" learned diff.statNameWidth configuration variable, to
   give the default width for the name part in the "--stat" output.

 * "git range-diff --notes=foo" compared "log --notes=foo --notes" of
   the two ranges, instead of using just the specified notes tree.

 * The command line completion script (in contrib/) can be told to
   complete aliases by including ": git <cmd> ;" in the alias to tell
   it that the alias should be completed similar to how "git <cmd>" is
   completed.  The parsing code for the alias as been loosened to
   allow ';' without an extra space before it.

 * "git for-each-ref" and friends learned to apply mailmap to
   authorname and other fields.

 * "git repack" machinery learns to pay attention to the "--filter="
   option.

 * "git repack" learned "--max-cruft-size" to prevent cruft packs from
   growing without bounds.

 * "git merge-tree" learned to take strategy backend specific options
   via the "-X" option, like "git merge" does.

 * "git log" and friends learned "--dd" that is a short-hand for
   "--diff-merges=first-parent -p".

 * The attribute subsystem learned to honor `attr.tree` configuration
   that specifies which tree to read the .gitattributes files from.

 * "git merge-file" learns a mode to read three contents to be merged
   from blob objects.


Performance, Internal Implementation, Development Support etc.

 * "git check-attr" has been taught to work better with sparse-index.

 * It may be tempting to leave the help text NULL for a command line
   option that is either hidden or too obvious, but "git subcmd -h"
   and "git subcmd --help-all" would have segfaulted if done so.  Now
   the help text is optional.

 * Tests that are known to pass with LSan are now marked as such.

 * Flaky "git p4" tests, as well as "git svn" tests, are now skipped
   in the (rather expensive) sanitizer CI job.

 * Tests with LSan from time to time seem to emit harmless message
   that makes our tests unnecessarily flaky; we work it around by
   filtering the uninteresting output.

 * Unused parameters to functions are marked as such, and/or removed,
   in order to bring us closer to -Wunused-parameter clean.

 * The code to keep track of existing packs in the repository while
   repacking has been refactored.

 * The "streaming" interface used for bulk-checkin codepath has been
   narrowed to take only blob objects for now, with no real loss of
   functionality.

 * GitHub CI workflow has learned to trigger Coverity check.

 * Test coverage for trailers has been improved.

 * The code to iterate over loose references have been optimized to
   reduce the number of lstat() system calls.

 * The codepaths that read "chunk" formatted files have been corrected
   to pay attention to the chunk size and notice broken files.

 * Replace macos-12 used at GitHub CI with macos-13.
   (merge 682a868f67 js/ci-use-macos-13 later to maint).


Fixes since v2.42
-----------------

 * Overly long label names used in the sequencer machinery are now
   chopped to fit under filesystem limitation.

 * Scalar updates.

 * Tweak GitHub Actions CI so that pushing the same commit to multiple
   branch tips at the same time will not waste building and testing
   the same thing twice.

 * The commit-graph verification code that detects mixture of zero and
   non-zero generation numbers has been updated.

 * "git diff -w --exit-code" with various options did not work
   correctly, which is being addressed.

 * transfer.unpackLimit ought to be used as a fallback, but overrode
   fetch.unpackLimit and receive.unpackLimit instead.

 * The use of API between two calls to require_clean_work_tree() from
   the sequencer code has been cleaned up for consistency.

 * "git diff --no-such-option" and other corner cases around the exit
   status of the "diff" command has been corrected.

 * "git for-each-ref --sort='contents:size'" sorts the refs according
   to size numerically, giving a ref that points at a blob twelve-byte
   (12) long before showing a blob hundred-byte (100) long.

 * We now limit depth of the tree objects and maximum length of
   pathnames recorded in tree objects.
   (merge 4d5693ba05 jk/tree-name-and-depth-limit later to maint).

 * Various fixes to the behavior of "rebase -i" when the command got
   interrupted by conflicting changes.

 * References from description of the `--patch` option in various
   manual pages have been simplified and improved.

 * "git grep -e A --no-or -e B" is accepted, even though the negation
   of "or" did not mean anything, which has been tightened.

 * The completion script (in contrib/) has been taught to treat the
   "-t" option to "git checkout" and "git switch" just like the
   "--track" option, to complete remote-tracking branches.

 * "git diff --no-index -R <(one) <(two)" did not work correctly,
   which has been corrected.

 * Update "git maintenance" timers' implementation based on systemd
   timers to work with WSL.

 * "git diff --cached" codepath did not fill the necessary stat
   information for a file when fsmonitor knows it is clean and ended
   up behaving as if it is not clean, which has been corrected.

 * Clarify how "alias.foo = : git cmd ; aliased-command-string" should
   be spelled with necessary whitespaces around punctuation marks to
   work.

 * HTTP Header redaction code has been adjusted for a newer version of
   cURL library that shows its traces differently from earlier
   versions.

 * An error message given by "git send-email" when given a malformed
   address did not give correct information, which has been corrected.

 * UBSan options were not propagated through the test framework to git
   run via the httpd, unlike ASan options, which has been corrected.

 * "checkout --merge -- path" and "update-index --unresolve path" did
   not resurrect conflicted state that was resolved to remove path,
   but now they do.
   (merge 5bdedac3c7 jc/unresolve-removal later to maint).

 * The display width table for unicode characters has been updated for
   Unicode 15.1
   (merge 872976c37e bb/unicode-width-table-15 later to maint).

 * Update mailmap entry for Derrick.
   (merge 6e5457d8c7 ds/mailmap-entry-update later to maint).

 * In .gitmodules files, submodules are keyed by their names, and the
   path to the submodule whose name is $name is specified by the
   submodule.$name.path variable.  There were a few codepaths that
   mixed the name and path up when consulting the submodule database,
   which have been corrected.  It took long for these bugs to be found
   as the name of a submodule initially is the same as its path, and
   the problem does not surface until it is moved to a different path,
   which apparently happens very rarely.

 * "git diff --merge-base X other args..." insisted that X must be a
   commit and errored out when given an annotated tag that peels to a
   commit, but we only need it to be a committish.  This has been
   corrected.
   (merge 4adceb5a29 ar/diff-index-merge-base-fix later to maint).

 * Fix "git merge-tree" to stop segfaulting when the --attr-source
   option is used.
   (merge e95bafc52f jc/merge-ort-attr-index-fix later to maint).

 * Unlike "git log --pretty=%D", "git log --pretty="%(decorate)" did
   not auto-initialize the decoration subsystem, which has been
   corrected.

 * Feeding "git stash store" with a random commit that was not created
   by "git stash create" now errors out.
   (merge d9b6634589 jc/fail-stash-to-store-non-stash later to maint).

 * The index file has room only for lower 32-bit of the file size in
   the cached stat information, which means cached stat information
   will have 0 in its sd_size member for a file whose size is multiple
   of 4GiB.  This is mistaken for a racily clean path.  Avoid it by
   storing a bogus sd_size value instead for such files.
   (merge 5143ac07b1 bc/racy-4gb-files later to maint).

 * "git p4" tried to store symlinks to LFS when told, but has been
   fixed not to do so, because it does not make sense.
   (merge 10c89a02b0 mm/p4-symlink-with-lfs later to maint).

 * The codepath to handle recipient addresses `git send-email
   --compose` learns from the user was completely broken, which has
   been corrected.
   (merge 3ec6167567 jk/send-email-fix-addresses-from-composed-messages later to maint).

 * "cd sub && git grep -f patterns" tried to read "patterns" file at
   the top level of the working tree; it has been corrected to read
   "sub/patterns" instead.


 * "git reflog expire --single-worktree" has been broken for the past
   20 months or so, which has been corrected.

 * "git send-email" did not have certain pieces of data computed yet
   when it tried to validate the outging messages and its recipient
   addresses, which has been sorted out.

 * "git bugreport" learned to complain when it received a command line
   argument that it will not use.

 * The codepath to traverse the commit-graph learned to notice that a
   commit is missing (e.g., corrupt repository lost an object), even
   though it knows something about the commit (like its parents) from
   what is in commit-graph.
   (merge 7a5d604443 ps/do-not-trust-commit-graph-blindly-for-existence later to maint).

 * "git rev-list --missing" did not work for missing commit objects,
   which has been corrected.

 * "git rev-list --unpacked --objects" failed to exclude packed
   non-commit objects, which has been corrected.
   (merge 7b3c8e9f38 tb/rev-list-unpacked-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge c2c349a15c xz/commit-title-soft-limit-doc later to maint).
   (merge 1bd809938a tb/format-pack-doc-update later to maint).
   (merge 8f81532599 an/clang-format-typofix later to maint).
   (merge 3ca86adc2d la/strvec-header-fix later to maint).
   (merge 6789275d37 jc/test-i18ngrep later to maint).
   (merge 9972cd6004 ps/leakfixes later to maint).

----------------------------------------------------------------

Changes since v2.42.0 are as follows:

Aditya Neelamraju (1):
      clang-format: fix typo in comment

Alyssa Ross (1):
      diff: fix --merge-base with annotated tags

Andrei Rybak (1):
      SubmittingPatches: call gitk's command "Copy commit reference"

Andy Koppe (8):
      pretty-formats: enclose options in angle brackets
      decorate: refactor format_decorations()
      decorate: avoid some unnecessary color overhead
      decorate: color each token separately
      pretty: add %(decorate[:<options>]) format
      pretty: add pointer and tag options to %(decorate)
      decorate: use commit color for HEAD arrow
      pretty: fix ref filtering for %(decorate) formats

Beat Bolli (1):
      unicode: update the width tables to Unicode 15.1

Caleb Hill (1):
      git-clean doc: fix "without do cleaning" typo

Calvin Wan (4):
      hex-ll: separate out non-hash-algo functions
      wrapper: reduce scope of remove_or_warn()
      config: correct bad boolean env value error message
      parse: separate out parsing functions from config.h

Christian Couder (9):
      pack-objects: allow `--filter` without `--stdout`
      t/helper: add 'find-pack' test-tool
      repack: refactor finishing pack-objects command
      repack: refactor finding pack prefix
      pack-bitmap-write: rebuild using new bitmap when remapping
      repack: add `--filter=<filter-spec>` option
      gc: add `gc.repackFilter` config option
      repack: implement `--filter-to` for storing filtered out objects
      gc: add `gc.repackFilterTo` config option

Christian Hesse (2):
      t/lib-gpg: forcibly run a trustdb update
      t/t6300: drop magic filtering

Derrick Stolee (13):
      upload-pack: fix race condition in error messages
      maintenance: add get_random_minute()
      maintenance: use random minute in launchctl scheduler
      maintenance: use random minute in Windows scheduler
      maintenance: use random minute in cron scheduler
      maintenance: swap method locations
      maintenance: use random minute in systemd scheduler
      maintenance: fix systemd schedule overlaps
      maintenance: update schedule before config
      scalar: add --[no-]src option
      setup: add discover_git_directory_reason()
      scalar reconfigure: help users remove buggy repos
      mailmap: change primary address for Derrick Stolee

Dorcas AnonoLitunya (1):
      t7601: use "test_path_is_file" etc. instead of "test -f"

Dragan Simic (2):
      diff --stat: add config option to limit filename width
      diff --stat: set the width defaults in a helper function

Drew DeVault (1):
      format-patch: --rfc honors what --subject-prefix sets

Elijah Newren (25):
      documentation: wording improvements
      documentation: fix small error
      documentation: fix typos
      documentation: fix apostrophe usage
      documentation: add missing words
      documentation: remove extraneous words
      documentation: fix subject/verb agreement
      documentation: employ consistent verb tense for a list
      documentation: fix verb tense
      documentation: fix adjective vs. noun
      documentation: fix verb vs. noun
      documentation: fix singular vs. plural
      documentation: whitespace is already generally plural
      documentation: fix choice of article
      documentation: add missing article
      documentation: remove unnecessary hyphens
      documentation: add missing hyphens
      documentation: use clearer prepositions
      documentation: fix punctuation
      documentation: fix capitalization
      documentation: fix whitespace issues
      documentation: add some commas where they are helpful
      documentation: add missing fullstops
      documentation: add missing quotes
      documentation: add missing parenthesis

Emily Shaffer (2):
      t0091-bugreport: stop using i18ngrep
      bugreport: reject positional arguments

Eric W. Biederman (1):
      bulk-checkin: only support blobs in index_bulk_checkin

Eric Wong (1):
      treewide: fix various bugs w/ OpenSSL 3+ EVP API

Evan Gates (1):
      git-config: fix misworded --type=path explanation

Han Young (1):
      show doc: redirect user to git log manual instead of git diff-tree

Isoken June Ibizugbe (1):
      builtin/branch.c: adjust error messages to coding guidelines

Jacob Abel (1):
      builtin/worktree.c: fix typo in "forgot fetch" msg

Jacob Stopak (1):
      Include gettext.h in MyFirstContribution tutorial

Jan Alexander Steffens (heftig) (6):
      submodule--helper: use submodule_from_path in set-{url,branch}
      submodule--helper: return error from set-url when modifying failed
      t7419: actually test the branch switching
      t7419, t7420: use test_cmp_config instead of grepping .gitmodules
      t7419: test that we correctly handle renamed submodules
      t7420: test that we correctly handle renamed submodules

Jason Hatton (1):
      Prevent git from rehashing 4GiB files

Javier Mora (2):
      git-status.txt: fix minor asciidoc format issue
      doc/git-bisect: clarify `git bisect run` syntax

Jeff King (114):
      hashmap: use expected signatures for comparison functions
      diff-files: avoid negative exit value
      diff: show usage for unknown builtin_diff_files() options
      diff: die when failing to read index in git-diff builtin
      diff: drop useless return from run_diff_{files,index} functions
      diff: drop useless return values in git-diff helpers
      diff: drop useless "status" parameter from diff_result_code()
      commit-graph: verify swapped zero/non-zero generation cases
      test-lib: ignore uninteresting LSan output
      sequencer: use repository parameter in short_commit_name()
      sequencer: mark repository argument as unused
      ref-filter: mark unused parameters in parser callbacks
      pack-bitmap: mark unused parameters in show_object callback
      worktree: mark unused parameters in each_ref_fn callback
      commit-graph: mark unused data parameters in generation callbacks
      ls-tree: mark unused parameter in callback
      stash: mark unused parameter in diff callback
      trace2: mark unused us_elapsed_absolute parameters
      trace2: mark unused config callback parameter
      test-trace2: mark unused argv/argc parameters
      grep: mark unused parameter in output function
      add-interactive: mark unused callback parameters
      negotiator/noop: mark unused callback parameters
      worktree: mark unused parameters in noop repair callback
      imap-send: mark unused parameters with NO_OPENSSL
      grep: mark unused parmaeters in pcre fallbacks
      credential: mark unused parameter in urlmatch callback
      fetch: mark unused parameter in ref_transaction callback
      bundle-uri: mark unused parameters in callbacks
      gc: mark unused descriptors in scheduler callbacks
      update-ref: mark unused parameter in parser callbacks
      ci: allow branch selection through "vars"
      ci: deprecate ci/config/allow-ref script
      merge: make xopts a strvec
      merge: simplify parsing of "-n" option
      format-patch: use OPT_STRING_LIST for to/cc options
      tree-walk: reduce stack size for recursive functions
      tree-walk: drop MAX_TRAVERSE_TREES macro
      tree-walk: rename "error" variable
      fsck: detect very large tree pathnames
      add core.maxTreeDepth config
      traverse_trees(): respect max_allowed_tree_depth
      read_tree(): respect max_allowed_tree_depth
      list-objects: respect max_allowed_tree_depth
      tree-diff: respect max_allowed_tree_depth
      lower core.maxTreeDepth default to 2048
      checkout-index: delay automatic setting of to_tempfile
      parse-options: prefer opt->value to globals in callbacks
      parse-options: mark unused "opt" parameter in callbacks
      merge: do not pass unused opt->value parameter
      parse-options: add more BUG_ON() annotations
      interpret-trailers: mark unused "unset" parameters in option callbacks
      parse-options: mark unused parameters in noop callback
      merge-ort: drop custom err() function
      merge-ort: stop passing "opt" to read_oid_strbuf()
      merge-ort: drop unused parameters from detect_and_process_renames()
      merge-ort: drop unused "opt" parameter from merge_check_renames_reusable()
      http: factor out matching of curl http/2 trace lines
      http: update curl http/2 info matching for curl 8.3.0
      merge-ort: lowercase a few error messages
      fsmonitor: prefer repo_git_path() to git_pathdup()
      fsmonitor/win32: drop unused parameters
      fsmonitor: mark some maybe-unused parameters
      fsmonitor/win32: mark unused parameter in fsm_os__incompatible()
      fsmonitor: mark unused parameters in stub functions
      fsmonitor/darwin: mark unused parameters in system callback
      fsmonitor: mark unused hashmap callback parameters
      run-command: mark unused parameters in start_bg_wait callbacks
      test-lib: set UBSAN_OPTIONS to match ASan
      commit-graph: factor out chain opening function
      commit-graph: check mixed generation validation when loading chain file
      t5324: harmonize sha1/sha256 graph chain corruption
      commit-graph: detect read errors when verifying graph chain
      commit-graph: tighten chain size check
      commit-graph: report incomplete chains during verification
      t6700: mark test as leak-free
      commit-reach: free temporary list in get_octopus_merge_bases()
      merge: free result of repo_get_merge_bases()
      commit-graph: move slab-clearing to close_commit_graph()
      commit-graph: free all elements of graph chain
      commit-graph: delay base_graph assignment in add_graph_to_chain()
      commit-graph: free graph struct that was not added to chain
      commit-graph: free write-context entries before overwriting
      commit-graph: free write-context base_graph_name during cleanup
      commit-graph: clear oidset after finishing write
      decorate: add clear_decoration() function
      revision: clear decoration structs during release_revisions()
      daemon: free listen_addr before returning
      repack: free existing_cruft array after use
      chunk-format: note that pair_chunk() is unsafe
      t: add library for munging chunk-format files
      midx: stop ignoring malformed oid fanout chunk
      commit-graph: check size of oid fanout chunk
      midx: check size of oid lookup chunk
      commit-graph: check consistency of fanout table
      midx: check size of pack names chunk
      midx: enforce chunk alignment on reading
      midx: check size of object offset chunk
      midx: bounds-check large offset chunk
      midx: check size of revindex chunk
      commit-graph: check size of commit data chunk
      commit-graph: detect out-of-bounds extra-edges pointers
      commit-graph: bounds-check base graphs chunk
      commit-graph: check size of generations chunk
      commit-graph: bounds-check generation overflow chunk
      commit-graph: check bounds when accessing BDAT chunk
      commit-graph: check bounds when accessing BIDX chunk
      commit-graph: detect out-of-order BIDX offsets
      chunk-format: drop pair_chunk_unsafe()
      t5319: make corrupted large-offset test more robust
      doc/send-email: mention handling of "reply-to" with --compose
      Revert "send-email: extract email-parsing code into a subroutine"
      send-email: handle to/cc/bcc from --compose message
      t: avoid perl's pack/unpack "Q" specifier

Johannes Schindelin (19):
      windows: ignore empty `PATH` elements
      is_Cygwin: avoid `exec`ing anything
      Move is_<platform> functions to the beginning
      Move the `_which` function (almost) to the top
      Work around Tcl's default `PATH` lookup
      rebase: allow overriding the maximal length of the generated labels
      ci: avoid building from the same commit in parallel
      ci(linux-asan-ubsan): let's save some time
      var: avoid a segmentation fault when `HOME` is unset
      completion(switch/checkout): treat --track and -t the same
      maintenance(systemd): support the Windows Subsystem for Linux
      ci: add a GitHub workflow to submit Coverity scans
      coverity: cache the Coverity Build Tool
      coverity: allow overriding the Coverity project
      coverity: support building on Windows
      coverity: allow running on macOS
      coverity: detect and report when the token or project is incorrect
      max_tree_depth: lower it for MSVC to avoid stack overflows
      ci: upgrade to using macos-13

John Cai (3):
      merge-ort: initialize repo in index state
      attr: read attributes from HEAD when bare repo
      attr: add attr.tree for setting the treeish to read attributes from

Josh Soref (1):
      Documentation/git-status: add missing line breaks

Josip Sokcevic (1):
      diff-lib: fix check_removed when fsmonitor is on

Junio C Hamano (55):
      update-index: do not read HEAD and MERGE_HEAD unconditionally
      resolve-undo: allow resurrecting conflicted state that resolved to deletion
      update-index: use unmerge_index_entry() to support removal
      update-index: remove stale fallback code for "--unresolve"
      checkout/restore: refuse unmerging paths unless checking out of the index
      checkout/restore: add basic tests for --merge
      checkout: allow "checkout -m path" to unmerge removed paths
      mv: fix error for moving directory to another
      diff: move the fallback "--exit-code" code down
      diff: mode-only change should be noticed by "--patch -w --exit-code"
      diff: teach "--stat -w --exit-code" to notice differences
      t4040: remove test that succeeded for a wrong reason
      pretty-formats: define "literal formatting code"
      diff: spell DIFF_INDEX_CACHED out when calling run_diff_index()
      diff: the -w option breaks --exit-code for --raw and other output modes
      transfer.unpackLimit: fetch/receive.unpackLimit takes precedence
      Start the 2.43 cycle
      The second batch for 2.43
      The extra batch to update credenthal helpers
      The third batch
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      update-index doc: v4 is OK with JGit and libgit2
      update-index: add --show-index-version
      test-tool: retire "index-version"
      The eighth batch
      The ninth batch
      The tenth batch
      The eleventh batch
      completion: loosen and document the requirement around completing alias
      The twelfth batch
      The thirteenth batch
      The fourteenth batch
      The fifteenth batch
      doc: update list archive reference to use lore.kernel.org
      The sixteenth batch
      merge: introduce {copy|clear}_merge_options()
      stash: be careful what we store
      grep: -f <path> is relative to $cwd
      The seventeenth batch
      The eighteenth batch
      commit: do not use cryptic "new_index" in end-user facing messages
      The nineteenth batch
      am: align placeholder for --whitespace option with apply
      The twentieth batch
      The twenty-first batch
      The twenty-second batch
      test framework: further deprecate test_i18ngrep
      Git 2.42.1
      tests: teach callers of test_i18ngrep to use test_grep
      A bit more before -rc1
      Prepare for -rc1
      Git 2.43-rc1

Karthik Nayak (3):
      revision: rename bit to `do_not_die_on_missing_objects`
      rev-list: move `show_commit()` to the bottom
      rev-list: add commit object support in `--missing` option

Kousik Sanagavarapu (4):
      ref-filter: sort numerically when ":size" is used
      t/t6300: cleanup test_atom
      t/t6300: introduce test_bad_atom
      ref-filter: add mailmap support

Kristoffer Haugsbakk (2):
      range-diff: treat notes like `log`
      grep: die gracefully when outside repository

Linus Arver (17):
      trailer tests: make test cases self-contained
      trailer test description: this tests --where=after, not --where=before
      trailer: add tests to check defaulting behavior with --no-* flags
      trailer doc: narrow down scope of --where and related flags
      trailer: trailer location is a place, not an action
      trailer --no-divider help: describe usual "---" meaning
      trailer --parse help: expose aliased options
      trailer --only-input: prefer "configuration variables" over "rules"
      trailer --parse docs: add explanation for its usefulness
      trailer --unfold help: prefer "reformat" over "join"
      trailer doc: emphasize the effect of configuration variables
      trailer doc: separator within key suppresses default separator
      trailer doc: <token> is a <key> or <keyAlias>, not both
      trailer: separate public from internal portion of trailer_iterator
      trailer: split process_input_file into separate pieces
      trailer: split process_command_line_args into separate functions
      strvec: drop unnecessary include of hex.h

M Hickford (3):
      credential/libsecret: store new attributes
      credential/libsecret: erase matching creds only
      credential/wincred: erase matching creds only

Mark Levedahl (6):
      git gui Makefile - remove Cygwin modifications
      git-gui - remove obsolete Cygwin specific code
      git-gui - use cygstart to browse on Cygwin
      git-gui - use mkshortcut on Cygwin
      git-gui - re-enable use of hook scripts
      git-gui - use git-hook, honor core.hooksPath

Mark Ruvald Pedersen (1):
      sequencer: truncate labels to accommodate loose refs

Martin Ågren (1):
      git-merge-file doc: drop "-file" from argument placeholders

Matthew McClain (1):
      git-p4 shouldn't attempt to store symlinks in LFS

Michael Strawbridge (1):
      send-email: move validation code below process_address_list

Michal Suchanek (1):
      git-push doc: more visibility for -q option

Naomi Ibe (1):
      builtin/add.c: clean up die() messages

Oswald Buddenhagen (16):
      t/lib-rebase: set_fake_editor(): fix recognition of reset's short command
      t/lib-rebase: set_fake_editor(): handle FAKE_LINES more consistently
      sequencer: simplify allocation of result array in todo_list_rearrange_squash()
      t/lib-rebase: improve documentation of set_fake_editor()
      t9001: fix indentation in test_no_confirm()
      format-patch: add --description-file option
      sequencer: rectify empty hint in call of require_clean_work_tree()
      sequencer: beautify subject of reverts of reverts
      git-revert.txt: add discussion
      sequencer: fix error message on failure to copy SQUASH_MSG
      t3404-rebase-interactive.sh: fix typos in title of a rewording test
      sequencer: remove unreachable exit condition in pick_commits()
      am: fix error message in parse_opt_show_current_patch()
      rebase: simplify code related to imply_merge()
      rebase: handle --strategy via imply_merge() as well
      rebase: move parse_opt_keep_empty() down

Patrick Steinhardt (23):
      upload-pack: fix exit code when denying fetch of unreachable object ID
      revision: make pseudo-opt flags read via stdin behave consistently
      doc/git-worktree: mention "refs/rewritten" as per-worktree refs
      doc/git-repack: fix syntax for `-g` shorthand option
      doc/git-repack: don't mention nonexistent "--unpacked" option
      commit-graph: introduce envvar to disable commit existence checks
      commit: detect commits that exist in commit-graph but not in the ODB
      builtin/show-ref: convert pattern to a local variable
      builtin/show-ref: split up different subcommands
      builtin/show-ref: fix leaking string buffer
      builtin/show-ref: fix dead code when passing patterns
      builtin/show-ref: refactor `--exclude-existing` options
      builtin/show-ref: stop using global variable to count matches
      builtin/show-ref: stop using global vars for `show_one()`
      builtin/show-ref: refactor options for patterns subcommand
      builtin/show-ref: ensure mutual exclusiveness of subcommands
      builtin/show-ref: explicitly spell out different modes in synopsis
      builtin/show-ref: add new mode to check for reference existence
      t: use git-show-ref(1) to check for ref existence
      test-bloom: stop setting up Git directory twice
      shallow: fix memory leak when registering shallow roots
      setup: refactor `upgrade_repository_format()` to have common exit
      setup: fix leaking repository format

Philippe Blain (3):
      completion: commit: complete configured trailer tokens
      completion: commit: complete trailers tokens more robustly
      completion: improve doc for complex aliases

Phillip Wood (7):
      rebase -i: move unlink() calls
      rebase -i: remove patch file after conflict resolution
      sequencer: use rebase_path_message()
      sequencer: factor out part of pick_commits()
      rebase: fix rewritten list for failed pick
      rebase --continue: refuse to commit after failed command
      rebase -i: fix adding failed command to the todo list

René Scharfe (18):
      subtree: disallow --no-{help,quiet,debug,branch,message}
      t1502, docs: disallow --no-help
      t1502: move optionspec help output to a file
      t1502: test option negation
      parse-options: show negatability of options in short help
      parse-options: factor out usage_indent() and usage_padding()
      parse-options: no --[no-]no-...
      parse-options: simplify usage_padding()
      parse-options: allow omitting option help text
      name-rev: use OPT_HIDDEN_BOOL for --peel-tag
      grep: use OPT_INTEGER_F for --max-depth
      grep: reject --no-or
      diff --no-index: fix -R with stdin
      parse-options: drop unused parse_opt_ctx_t member
      parse-options: make CMDMODE errors more precise
      am: simplify --show-current-patch handling
      am, rebase: fix arghelp syntax of --empty
      reflog: fix expire --single-worktree

Robert Coup (1):
      upload-pack: add tracing for fetches

Rubén Justo (2):
      branch: error message deleting a branch in use
      branch: error message checking out a branch in use

Sergey Organov (4):
      doc/diff-options: fix link to generating patch section
      diff-merges: improve --diff-merges documentation
      diff-merges: introduce '--dd' option
      completion: complete '--dd'

Shuqi Liang (3):
      t1092: add tests for 'git check-attr'
      attr.c: read attributes in a sparse directory
      check-attr: integrate with sparse-index

Tang Yuyi (1):
      merge-tree: add -X strategy option

Taylor Blau (28):
      repack: move `pack_geometry` struct to the stack
      commit-graph: introduce `commit_graph_generation_from_graph()`
      t/t5318-commit-graph.sh: test generation zero transitions during fsck
      commit-graph: avoid repeated mixed generation number warnings
      leak tests: mark a handful of tests as leak-free
      leak tests: mark t3321-notes-stripspace.sh as leak-free
      leak tests: mark t5583-push-branches.sh as leak-free
      builtin/pack-objects.c: remove unnecessary strbuf_reset()
      builtin/pack-objects.c: support `--max-pack-size` with `--cruft`
      Documentation/gitformat-pack.txt: remove multi-cruft packs alternative
      Documentation/gitformat-pack.txt: drop mixed version section
      builtin/repack.c: extract structure to store existing packs
      builtin/repack.c: extract marking packs for deletion
      builtin/repack.c: extract redundant pack cleanup for --geometric
      builtin/repack.c: extract redundant pack cleanup for existing packs
      builtin/repack.c: extract `has_existing_non_kept_packs()`
      builtin/repack.c: store existing cruft packs separately
      builtin/repack.c: avoid directly inspecting "util"
      builtin/repack.c: extract common cruft pack loop
      git-send-email.perl: avoid printing undef when validating addresses
      t7700: split cruft-related tests to t7704
      builtin/repack.c: parse `--max-pack-size` with OPT_MAGNITUDE
      builtin/repack.c: implement support for `--max-cruft-size`
      builtin/repack.c: avoid making cruft packs preferred
      Documentation/gitformat-pack.txt: fix typo
      Documentation/gitformat-pack.txt: fix incorrect MIDX documentation
      list-objects: drop --unpacked non-commit objects from results
      pack-bitmap: drop --unpacked non-commit objects from results

Todd Zullinger (2):
      RelNotes: minor typo fixes in 2.43.0 draft
      RelNotes: improve wording of credential helper notes

Victoria Dye (4):
      ref-cache.c: fix prefix matching in ref iteration
      dir.[ch]: expose 'get_dtype'
      dir.[ch]: add 'follow_symlink' arg to 'get_dtype'
      files-backend.c: avoid stat in 'loose_fill_ref_dir'

Vipul Kumar (1):
      git-gui: Fix a typo in README

Wesley Schwengle (2):
      git-push.txt: fix grammar
      git-svn: drop FakeTerm hack

brian m. carlson (2):
      t: add a test helper to truncate files
      merge-file: add an option to process object IDs

Ævar Arnfjörð Bjarmason (1):
      Makefiles: change search through $(MAKEFLAGS) for GNU make 4.4

Štěpán Němec (6):
      doc: fix some typos, grammar and wording issues
      doc/diff-options: improve wording of the log.diffMerges mention
      git-jump: admit to passing merge mode args to ls-files
      doc/gitk: s/sticked/stuck/
      t/README: fix multi-prerequisite example
      doc/cat-file: make synopsis and description less confusing

王常新 (1):
      merge-ort.c: fix typo 'neeed' to 'needed'

谢致邦 (XIE Zhibang) (2):
      doc: correct the 50 characters soft limit
      doc: correct the 50 characters soft limit (+)



^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.43.0-rc0
@ 2023-11-02 17:36  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-11-02 17:36 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

An early preview release Git v2.43.0-rc0 is now available for
testing at the usual places.  It is comprised of 399 non-merge
commits since v2.42.0, contributed by 61 people, 16 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.43.0-rc0' 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.42.0 are as follows.
Welcome to the Git development community!

  Alyssa Ross, Caleb Hill, Dorcas AnonoLitunya, Dragan Simic,
  Isoken June Ibizugbe, Jan Alexander Steffens (heftig), Javier
  Mora, ks1322 ks1322, Mark Ruvald Pedersen, Matthew McClain,
  Naomi Ibe, Romain Chossart, Tang Yuyi, Vipul Kumar, 王常新,
  and 谢致邦 (XIE Zhibang).

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Andy Koppe, Bagas Sanjaya,
  Beat Bolli, brian m. carlson, Calvin Wan, Christian Couder,
  Christian Hesse, Derrick Stolee, Drew DeVault, Elijah Newren,
  Eric W. Biederman, Eric Wong, Evan Gates, Han Young, Hariom
  Verma, Jacob Abel, Jason Hatton, Jeff King, Johannes Schindelin,
  John Cai, Josh Soref, Josip Sokcevic, Junio C Hamano, Kousik
  Sanagavarapu, Kristoffer Haugsbakk, Linus Arver, Mark Levedahl,
  Martin Storsjö, M Hickford, Michal Suchanek, Oswald Buddenhagen,
  Patrick Steinhardt, Philippe Blain, Phillip Wood, René Scharfe,
  Rubén Justo, Sergey Organov, Shuqi Liang, Stefan Haller,
  Štěpán Němec, Taylor Blau, Teng Long, Victoria Dye, and
  Wesley Schwengle.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.43 Release Notes (draft)
===============================

Backward Compatibility Notes

 * The "--rfc" option of "git format-patch" used to be a valid way to
   override an earlier "--subject-prefix=<something>" on the command
   line and replace it with "[RFC PATCH]", but from this release, it
   merely prefixes the string "RFC " in front of the given subject
   prefix.  If you are negatively affected by this change, please use
   "--subject-prefix=PATCH --rfc" as a replacement.

 * "git rev-list --stdin" learned to take non-revisions (like "--not")
   recently from the standard input, but the way such a "--not" was
   handled was quite confusing, which has been rethought.  The updated
   rule is that "--not" given from the command line only affects revs
   given from the command line that comes but not revs read from the
   standard input, and "--not" read from the standard input affects
   revs given from the stanrdard input and not revs given from the
   command line.

UI, Workflows & Features

 * A message written in olden time prevented a branch from getting
   checked out saying it is already checked out elsewhere, but these
   days, we treat a branch that is being bisected or rebased just like
   a branch that is checked out and protect it.  Rephrase the message
   to say that the branch is in use.

 * Hourly and other schedule of "git maintenance" jobs are randomly
   distributed now.

 * "git cmd -h" learned to signal which options can be negated by
   listing such options like "--[no-]opt".

 * The way authentication related data other than passwords (e.g.
   oath token and password expiration data) are stored in libsecret
   keyrings has been rethought.

 * Update two credential helpers to correctly match which credential
   to erase; they dropped not the ones with stale password.

 * Git GUI updates.

 * "git format-patch" learns a way to feed cover letter description,
   that (1) can be used on detached HEAD where there is no branch
   description available, and (2) also can override the branch
   description if there is one.

 * Use of --max-pack-size to allow multiple packfiles to be created is
   now supported even when we are sending unreachable objects to cruft
   packs.

 * "git format-patch --rfc --subject-prefix=<foo>" used to ignore the
   "--subject-prefix" option and used "[RFC PATCH]"; now we will add
   "RFC" prefix to whatever subject prefix is specified.

 * "git log --format" has been taught the %(decorate) placeholder.

 * The default log message created by "git revert", when reverting a
   commit that records a revert, has been tweaked, to encourage people
   describe complex "revert of revert of revert" situation better in
   their own words.

 * The command-line complation support (in contrib/) learned to
   complete "git commit --trailer=" for possible trailer keys.

 * "git update-index" learns "--show-index-version" to inspect
   the index format version used by the on-disk index file.

 * "git diff" learned diff.statNameWidth configuration variable, to
   give the default width for the name part in the "--stat" output.

 * "git range-diff --notes=foo" compared "log --notes=foo --notes" of
   the two ranges, instead of using just the specified notes tree.

 * The command line completion script (in contrib/) can be told to
   complete aliases by including ": git <cmd> ;" in the alias to tell
   it that the alias should be completed similar to how "git <cmd>" is
   completed.  The parsing code for the alias as been loosened to
   allow ';' without an extra space before it.

 * "git for-each-ref" and friends learned to apply mailmap to
   authorname and other fields.

 * "git repack" machinery learns to pay attention to the "--filter="
   option.

 * "git repack" learned "--max-cruft-size" to prevent cruft packs from
   growing without bounds.

 * "git merge-tree" learned to take strategy backend specific options
   via the "-X" option, like "git merge" does.

 * "git log" and friends learned "--dd" that is a short-hand for
   "--diff-merges=first-parent -p".

 * The attribute subsystem learned to honor `attr.tree` configuration
   that specifies which tree to read the .gitattributes files from.


Performance, Internal Implementation, Development Support etc.

 * "git check-attr" has been taught to work better with sparse-index.

 * It may be tempting to leave the help text NULL for a command line
   option that is either hidden or too obvious, but "git subcmd -h"
   and "git subcmd --help-all" would have segfaulted if done so.  Now
   the help text is optional.

 * Tests that are known to pass with LSan are now marked as such.
   (merge 5fafe8c95f tb/mark-more-tests-as-leak-free later to maint).

 * Flaky "git p4" tests, as well as "git svn" tests, are now skipped
   in the (rather expensive) sanitizer CI job.
   (merge 6ba913629f js/ci-san-skip-p4-and-svn-tests later to maint).

 * Tests with LSan from time to time seem to emit harmless message
   that makes our tests unnecessarily flaky; we work it around by
   filtering the uninteresting output.
   (merge 370ef7e40d jk/test-lsan-denoise-output later to maint).

 * Unused parameters to functions are marked as such, and/or removed,
   in order to bring us closer to -Wunused-parameter clean.

 * The code to keep track of existing packs in the repository while
   repacking has been refactored.

 * The "streaming" interface used for bulk-checkin codepath has been
   narrowed to take only blob objects for now, with no real loss of
   functionality.

 * GitHub CI workflow has learned to trigger Coverity check.
   (merge 3349520e1a js/ci-coverity later to maint).

 * Test coverage for trailers has been improved.

 * The code to iterate over loose references have been optimized to
   reduce the number of lstat() system calls.
   (merge 2cdb796101 vd/loose-ref-iteration-optimization later to maint).

 * The codepaths that read "chunk" formatted files have been corrected
   to pay attention to the chunk size and notice broken files.


Fixes since v2.42
-----------------

 * Overly long label names used in the sequencer machinery are now
   chopped to fit under filesystem limitation.
   (merge ac300bda10 mp/rebase-label-length-limit later to maint).

 * Scalar updates.
   (merge f9a547d3a7 ds/scalar-updates later to maint).

 * Tweak GitHub Actions CI so that pushing the same commit to multiple
   branch tips at the same time will not waste building and testing
   the same thing twice.
   (merge 99fe06cbfd jc/ci-skip-same-commit later to maint).

 * The commit-graph verification code that detects mixture of zero and
   non-zero generation numbers has been updated.
   (merge db6044d762 tb/commit-graph-verify-fix later to maint).

 * "git diff -w --exit-code" with various options did not work
   correctly, which is being addressed.
   (merge a64f8b2595 jc/diff-exit-code-with-w-fixes later to maint).

 * transfer.unpackLimit ought to be used as a fallback, but overrode
   fetch.unpackLimit and receive.unpackLimit instead.
   (merge f3d33f8cfe ts/unpacklimit-config-fix later to maint).

 * The use of API between two calls to require_clean_work_tree() from
   the sequencer code has been cleaned up for consistency.
   (merge a9b5955e07 ob/sequencer-empty-hint-fix later to maint).

 * "git diff --no-such-option" and other corner cases around the exit
   status of the "diff" command has been corrected.
   (merge 5cc6b2d70b jk/diff-result-code-cleanup later to maint).

 * "git for-each-ref --sort='contents:size'" sorts the refs according
   to size numerically, giving a ref that points at a blob twelve-byte
   (12) long before showing a blob hundred-byte (100) long.
   (merge 6d79cd8474 ks/ref-filter-sort-numerically later to maint).

 * We now limit depth of the tree objects and maximum length of
   pathnames recorded in tree objects.
   (merge 4d5693ba05 jk/tree-name-and-depth-limit later to maint).

 * Various fixes to the behavior of "rebase -i" when the command got
   interrupted by conflicting changes.
   (merge 203573b024 pw/rebase-i-after-failure later to maint).

 * References from description of the `--patch` option in various
   manual pages have been simplified and improved.
   (merge 11422f23e3 so/diff-doc-for-patch-update later to maint).

 * "git grep -e A --no-or -e B" is accepted, even though the negation
   of "or" did not mean anything, which has been tightened.
   (merge aae8558b10 rs/grep-no-no-or later to maint).

 * The completion script (in contrib/) has been taught to treat the
   "-t" option to "git checkout" and "git switch" just like the
   "--track" option, to complete remote-tracking branches.
   (merge 9f892830d6 js/complete-checkout-t later to maint).

 * "git diff --no-index -R <(one) <(two)" did not work correctly,
   which has been corrected.
   (merge 48944f214c pw/diff-no-index-from-named-pipes later to maint).

 * Update "git maintenance" timers' implementation based on systemd
   timers to work with WSL.
   (merge 5e8515e8e8 js/systemd-timers-wsl-fix later to maint).

 * "git diff --cached" codepath did not fill the necessary stat
   information for a file when fsmonitor knows it is clean and ended
   up behaving as if it is not clean, which has been corrected.
   (merge 6a044a2048 js/diff-cached-fsmonitor-fix later to maint).

 * Clarify how "alias.foo = : git cmd ; aliased-command-string" should
   be spelled with necessary whitespaces around punctuation marks to
   work.
   (merge 4333267995 pb/completion-aliases-doc later to maint).

 * HTTP Header redaction code has been adjusted for a newer version of
   cURL library that shows its traces differently from earlier
   versions.
   (merge 0763c3a2c4 jk/redact-h2h3-headers-fix later to maint).

 * An error message given by "git send-email" when given a malformed
   address did not give correct information, which has been corrected.
   (merge 12288cc44e tb/send-email-extract-valid-address-error-message-fix later to maint).

 * UBSan options were not propagated through the test framework to git
   run via the httpd, unlike ASan options, which has been corrected.
   (merge 252d693797 jk/test-pass-ubsan-options-to-http-test later to maint).

 * "checkout --merge -- path" and "update-index --unresolve path" did
   not resurrect conflicted state that was resolved to remove path,
   but now they do.
   (merge 5bdedac3c7 jc/unresolve-removal later to maint).

 * The display width table for unicode characters has been updated for
   Unicode 15.1
   (merge 872976c37e bb/unicode-width-table-15 later to maint).

 * Update mailmap entry for Derrick.
   (merge 6e5457d8c7 ds/mailmap-entry-update later to maint).

 * In .gitmodules files, submodules are keyed by their names, and the
   path to the submodule whose name is $name is specified by the
   submodule.$name.path variable.  There were a few codepaths that
   mixed the name and path up when consulting the submodule database,
   which have been corrected.  It took long for these bugs to be found
   as the name of a submodule initially is the same as its path, and
   the problem does not surface until it is moved to a different path,
   which apparently happens very rarely.

 * "git diff --merge-base X other args..." insisted that X must be a
   commit and errored out when given an annotated tag that peels to a
   commit, but we only need it to be a committish.  This has been
   corrected.
   (merge 4adceb5a29 ar/diff-index-merge-base-fix later to maint).

 * Fix "git merge-tree" to stop segfaulting when the --attr-source
   option is used.
   (merge e95bafc52f jc/merge-ort-attr-index-fix later to maint).

 * Unlike "git log --pretty=%D", "git log --pretty="%(decorate)" did
   not auto-initialize the decoration subsystem, which has been
   corrected.

 * Feeding "git stash store" with a random commit that was not created
   by "git stash create" now errors out.
   (merge d9b6634589 jc/fail-stash-to-store-non-stash later to maint).

 * The index file has room only for lower 32-bit of the file size in
   the cached stat information, which means cached stat information
   will have 0 in its sd_size member for a file whose size is multiple
   of 4GiB.  This is mistaken for a racily clean path.  Avoid it by
   storing a bogus sd_size value instead for such files.
   (merge 5143ac07b1 bc/racy-4gb-files later to maint).

 * "git p4" tried to store symlinks to LFS when told, but has been
   fixed not to do so, because it does not make sense.
   (merge 10c89a02b0 mm/p4-symlink-with-lfs later to maint).

 * The codepath to handle recipient addresses `git send-email
   --compose` learns from the user was completely broken, which has
   been corrected.
   (merge 3ec6167567 jk/send-email-fix-addresses-from-composed-messages later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge fd3ba590d8 ws/git-push-doc-grammofix later to maint).
   (merge 5f33a843de ds/upload-pack-error-sequence-fix later to maint).
   (merge beaa1d952b jk/function-pointer-mismatches-fix later to maint).
   (merge b46d806ea5 ob/t9001-indent-fix later to maint).
   (merge fdc9914c28 ja/worktree-orphan later to maint).
   (merge c2cbefc510 jc/mv-d-to-d-error-message-fix later to maint).
   (merge d0fc552bfc ch/t6300-verify-commit-test-cleanup later to maint).
   (merge aa4b83dd5e ws/git-svn-retire-faketerm later to maint).
   (merge edf80d23f1 jk/ci-retire-allow-ref later to maint).
   (merge 256a94ef6c bc/more-git-var later to maint).
   (merge 82af2c639c ob/sequencer-reword-error-message later to maint).
   (merge 2a63c79dae rs/grep-parseopt-simplify later to maint).
   (merge 078c42531e rs/name-rev-use-opt-hidden-bool later to maint).
   (merge 63642d58b4 ob/sequencer-remove-dead-code later to maint).
   (merge 8aae489756 ob/t3404-typofix later to maint).
   (merge 58be11432e eg/config-type-path-docfix later to maint).
   (merge 563f339d98 ch/clean-docfix later to maint).
   (merge 4fbe83fcd9 hy/doc-show-is-like-log-not-diff-tree later to maint).
   (merge 43abaaf008 ob/am-msgfix later to maint).
   (merge c2c349a15c xz/commit-title-soft-limit-doc later to maint).
   (merge f4cbb32c27 rs/parse-opt-ctx-cleanup later to maint).
   (merge badf2fe1c3 jk/decoration-and-other-leak-fixes later to maint).
   (merge cebfaaa333 sn/cat-file-doc-update later to maint).
   (merge 8b3aa36f5a ps/rewritten-is-per-worktree-doc later to maint).
   (merge ffbf6a748d jc/update-list-references-to-lore later to maint).
   (merge 14d569b1a7 jc/am-doc-whitespace-action-fix later to maint).
   (merge 48399e9cf0 ni/die-message-fix-for-git-add later to maint).
   (merge ca3285dd69 ps/git-repack-doc-fixes later to maint).
   (merge 243c79fdc7 wx/merge-ort-comment-typofix later to maint).
   (merge a060705d94 jc/commit-new-underscore-index-fix later to maint).
   (merge f6d83e2115 ms/doc-push-fix later to maint).

----------------------------------------------------------------

Changes since v2.42.0 are as follows:

Alyssa Ross (1):
      diff: fix --merge-base with annotated tags

Andy Koppe (8):
      pretty-formats: enclose options in angle brackets
      decorate: refactor format_decorations()
      decorate: avoid some unnecessary color overhead
      decorate: color each token separately
      pretty: add %(decorate[:<options>]) format
      pretty: add pointer and tag options to %(decorate)
      decorate: use commit color for HEAD arrow
      pretty: fix ref filtering for %(decorate) formats

Beat Bolli (1):
      unicode: update the width tables to Unicode 15.1

Caleb Hill (1):
      git-clean doc: fix "without do cleaning" typo

Calvin Wan (4):
      hex-ll: separate out non-hash-algo functions
      wrapper: reduce scope of remove_or_warn()
      config: correct bad boolean env value error message
      parse: separate out parsing functions from config.h

Christian Couder (9):
      pack-objects: allow `--filter` without `--stdout`
      t/helper: add 'find-pack' test-tool
      repack: refactor finishing pack-objects command
      repack: refactor finding pack prefix
      pack-bitmap-write: rebuild using new bitmap when remapping
      repack: add `--filter=<filter-spec>` option
      gc: add `gc.repackFilter` config option
      repack: implement `--filter-to` for storing filtered out objects
      gc: add `gc.repackFilterTo` config option

Christian Hesse (2):
      t/lib-gpg: forcibly run a trustdb update
      t/t6300: drop magic filtering

Derrick Stolee (13):
      upload-pack: fix race condition in error messages
      maintenance: add get_random_minute()
      maintenance: use random minute in launchctl scheduler
      maintenance: use random minute in Windows scheduler
      maintenance: use random minute in cron scheduler
      maintenance: swap method locations
      maintenance: use random minute in systemd scheduler
      maintenance: fix systemd schedule overlaps
      maintenance: update schedule before config
      scalar: add --[no-]src option
      setup: add discover_git_directory_reason()
      scalar reconfigure: help users remove buggy repos
      mailmap: change primary address for Derrick Stolee

Dorcas AnonoLitunya (1):
      t7601: use "test_path_is_file" etc. instead of "test -f"

Dragan Simic (2):
      diff --stat: add config option to limit filename width
      diff --stat: set the width defaults in a helper function

Drew DeVault (1):
      format-patch: --rfc honors what --subject-prefix sets

Elijah Newren (25):
      documentation: wording improvements
      documentation: fix small error
      documentation: fix typos
      documentation: fix apostrophe usage
      documentation: add missing words
      documentation: remove extraneous words
      documentation: fix subject/verb agreement
      documentation: employ consistent verb tense for a list
      documentation: fix verb tense
      documentation: fix adjective vs. noun
      documentation: fix verb vs. noun
      documentation: fix singular vs. plural
      documentation: whitespace is already generally plural
      documentation: fix choice of article
      documentation: add missing article
      documentation: remove unnecessary hyphens
      documentation: add missing hyphens
      documentation: use clearer prepositions
      documentation: fix punctuation
      documentation: fix capitalization
      documentation: fix whitespace issues
      documentation: add some commas where they are helpful
      documentation: add missing fullstops
      documentation: add missing quotes
      documentation: add missing parenthesis

Eric W. Biederman (1):
      bulk-checkin: only support blobs in index_bulk_checkin

Eric Wong (1):
      treewide: fix various bugs w/ OpenSSL 3+ EVP API

Evan Gates (1):
      git-config: fix misworded --type=path explanation

Han Young (1):
      show doc: redirect user to git log manual instead of git diff-tree

Isoken June Ibizugbe (1):
      builtin/branch.c: adjust error messages to coding guidelines

Jacob Abel (1):
      builtin/worktree.c: fix typo in "forgot fetch" msg

Jan Alexander Steffens (heftig) (6):
      submodule--helper: use submodule_from_path in set-{url,branch}
      submodule--helper: return error from set-url when modifying failed
      t7419: actually test the branch switching
      t7419, t7420: use test_cmp_config instead of grepping .gitmodules
      t7419: test that we correctly handle renamed submodules
      t7420: test that we correctly handle renamed submodules

Jason Hatton (1):
      Prevent git from rehashing 4GiB files

Javier Mora (2):
      git-status.txt: fix minor asciidoc format issue
      doc/git-bisect: clarify `git bisect run` syntax

Jeff King (113):
      hashmap: use expected signatures for comparison functions
      diff-files: avoid negative exit value
      diff: show usage for unknown builtin_diff_files() options
      diff: die when failing to read index in git-diff builtin
      diff: drop useless return from run_diff_{files,index} functions
      diff: drop useless return values in git-diff helpers
      diff: drop useless "status" parameter from diff_result_code()
      commit-graph: verify swapped zero/non-zero generation cases
      test-lib: ignore uninteresting LSan output
      sequencer: use repository parameter in short_commit_name()
      sequencer: mark repository argument as unused
      ref-filter: mark unused parameters in parser callbacks
      pack-bitmap: mark unused parameters in show_object callback
      worktree: mark unused parameters in each_ref_fn callback
      commit-graph: mark unused data parameters in generation callbacks
      ls-tree: mark unused parameter in callback
      stash: mark unused parameter in diff callback
      trace2: mark unused us_elapsed_absolute parameters
      trace2: mark unused config callback parameter
      test-trace2: mark unused argv/argc parameters
      grep: mark unused parameter in output function
      add-interactive: mark unused callback parameters
      negotiator/noop: mark unused callback parameters
      worktree: mark unused parameters in noop repair callback
      imap-send: mark unused parameters with NO_OPENSSL
      grep: mark unused parmaeters in pcre fallbacks
      credential: mark unused parameter in urlmatch callback
      fetch: mark unused parameter in ref_transaction callback
      bundle-uri: mark unused parameters in callbacks
      gc: mark unused descriptors in scheduler callbacks
      update-ref: mark unused parameter in parser callbacks
      ci: allow branch selection through "vars"
      ci: deprecate ci/config/allow-ref script
      merge: make xopts a strvec
      merge: simplify parsing of "-n" option
      format-patch: use OPT_STRING_LIST for to/cc options
      tree-walk: reduce stack size for recursive functions
      tree-walk: drop MAX_TRAVERSE_TREES macro
      tree-walk: rename "error" variable
      fsck: detect very large tree pathnames
      add core.maxTreeDepth config
      traverse_trees(): respect max_allowed_tree_depth
      read_tree(): respect max_allowed_tree_depth
      list-objects: respect max_allowed_tree_depth
      tree-diff: respect max_allowed_tree_depth
      lower core.maxTreeDepth default to 2048
      checkout-index: delay automatic setting of to_tempfile
      parse-options: prefer opt->value to globals in callbacks
      parse-options: mark unused "opt" parameter in callbacks
      merge: do not pass unused opt->value parameter
      parse-options: add more BUG_ON() annotations
      interpret-trailers: mark unused "unset" parameters in option callbacks
      parse-options: mark unused parameters in noop callback
      merge-ort: drop custom err() function
      merge-ort: stop passing "opt" to read_oid_strbuf()
      merge-ort: drop unused parameters from detect_and_process_renames()
      merge-ort: drop unused "opt" parameter from merge_check_renames_reusable()
      http: factor out matching of curl http/2 trace lines
      http: update curl http/2 info matching for curl 8.3.0
      merge-ort: lowercase a few error messages
      fsmonitor: prefer repo_git_path() to git_pathdup()
      fsmonitor/win32: drop unused parameters
      fsmonitor: mark some maybe-unused parameters
      fsmonitor/win32: mark unused parameter in fsm_os__incompatible()
      fsmonitor: mark unused parameters in stub functions
      fsmonitor/darwin: mark unused parameters in system callback
      fsmonitor: mark unused hashmap callback parameters
      run-command: mark unused parameters in start_bg_wait callbacks
      test-lib: set UBSAN_OPTIONS to match ASan
      commit-graph: factor out chain opening function
      commit-graph: check mixed generation validation when loading chain file
      t5324: harmonize sha1/sha256 graph chain corruption
      commit-graph: detect read errors when verifying graph chain
      commit-graph: tighten chain size check
      commit-graph: report incomplete chains during verification
      t6700: mark test as leak-free
      commit-reach: free temporary list in get_octopus_merge_bases()
      merge: free result of repo_get_merge_bases()
      commit-graph: move slab-clearing to close_commit_graph()
      commit-graph: free all elements of graph chain
      commit-graph: delay base_graph assignment in add_graph_to_chain()
      commit-graph: free graph struct that was not added to chain
      commit-graph: free write-context entries before overwriting
      commit-graph: free write-context base_graph_name during cleanup
      commit-graph: clear oidset after finishing write
      decorate: add clear_decoration() function
      revision: clear decoration structs during release_revisions()
      daemon: free listen_addr before returning
      repack: free existing_cruft array after use
      chunk-format: note that pair_chunk() is unsafe
      t: add library for munging chunk-format files
      midx: stop ignoring malformed oid fanout chunk
      commit-graph: check size of oid fanout chunk
      midx: check size of oid lookup chunk
      commit-graph: check consistency of fanout table
      midx: check size of pack names chunk
      midx: enforce chunk alignment on reading
      midx: check size of object offset chunk
      midx: bounds-check large offset chunk
      midx: check size of revindex chunk
      commit-graph: check size of commit data chunk
      commit-graph: detect out-of-bounds extra-edges pointers
      commit-graph: bounds-check base graphs chunk
      commit-graph: check size of generations chunk
      commit-graph: bounds-check generation overflow chunk
      commit-graph: check bounds when accessing BDAT chunk
      commit-graph: check bounds when accessing BIDX chunk
      commit-graph: detect out-of-order BIDX offsets
      chunk-format: drop pair_chunk_unsafe()
      t5319: make corrupted large-offset test more robust
      doc/send-email: mention handling of "reply-to" with --compose
      Revert "send-email: extract email-parsing code into a subroutine"
      send-email: handle to/cc/bcc from --compose message

Johannes Schindelin (17):
      windows: ignore empty `PATH` elements
      is_Cygwin: avoid `exec`ing anything
      Move is_<platform> functions to the beginning
      Move the `_which` function (almost) to the top
      Work around Tcl's default `PATH` lookup
      rebase: allow overriding the maximal length of the generated labels
      ci: avoid building from the same commit in parallel
      ci(linux-asan-ubsan): let's save some time
      var: avoid a segmentation fault when `HOME` is unset
      completion(switch/checkout): treat --track and -t the same
      maintenance(systemd): support the Windows Subsystem for Linux
      ci: add a GitHub workflow to submit Coverity scans
      coverity: cache the Coverity Build Tool
      coverity: allow overriding the Coverity project
      coverity: support building on Windows
      coverity: allow running on macOS
      coverity: detect and report when the token or project is incorrect

John Cai (3):
      merge-ort: initialize repo in index state
      attr: read attributes from HEAD when bare repo
      attr: add attr.tree for setting the treeish to read attributes from

Josh Soref (1):
      Documentation/git-status: add missing line breaks

Josip Sokcevic (1):
      diff-lib: fix check_removed when fsmonitor is on

Junio C Hamano (49):
      update-index: do not read HEAD and MERGE_HEAD unconditionally
      resolve-undo: allow resurrecting conflicted state that resolved to deletion
      update-index: use unmerge_index_entry() to support removal
      update-index: remove stale fallback code for "--unresolve"
      checkout/restore: refuse unmerging paths unless checking out of the index
      checkout/restore: add basic tests for --merge
      checkout: allow "checkout -m path" to unmerge removed paths
      mv: fix error for moving directory to another
      diff: move the fallback "--exit-code" code down
      diff: mode-only change should be noticed by "--patch -w --exit-code"
      diff: teach "--stat -w --exit-code" to notice differences
      t4040: remove test that succeeded for a wrong reason
      pretty-formats: define "literal formatting code"
      diff: spell DIFF_INDEX_CACHED out when calling run_diff_index()
      diff: the -w option breaks --exit-code for --raw and other output modes
      transfer.unpackLimit: fetch/receive.unpackLimit takes precedence
      Start the 2.43 cycle
      The second batch for 2.43
      The extra batch to update credenthal helpers
      The third batch
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      update-index doc: v4 is OK with JGit and libgit2
      update-index: add --show-index-version
      test-tool: retire "index-version"
      The eighth batch
      The ninth batch
      The tenth batch
      The eleventh batch
      completion: loosen and document the requirement around completing alias
      The twelfth batch
      The thirteenth batch
      The fourteenth batch
      The fifteenth batch
      doc: update list archive reference to use lore.kernel.org
      The sixteenth batch
      merge: introduce {copy|clear}_merge_options()
      stash: be careful what we store
      The seventeenth batch
      The eighteenth batch
      commit: do not use cryptic "new_index" in end-user facing messages
      The nineteenth batch
      am: align placeholder for --whitespace option with apply
      The twentieth batch
      The twenty-first batch
      The twenty-second batch
      Git 2.42.1

Kousik Sanagavarapu (4):
      ref-filter: sort numerically when ":size" is used
      t/t6300: cleanup test_atom
      t/t6300: introduce test_bad_atom
      ref-filter: add mailmap support

Kristoffer Haugsbakk (2):
      range-diff: treat notes like `log`
      grep: die gracefully when outside repository

Linus Arver (16):
      trailer tests: make test cases self-contained
      trailer test description: this tests --where=after, not --where=before
      trailer: add tests to check defaulting behavior with --no-* flags
      trailer doc: narrow down scope of --where and related flags
      trailer: trailer location is a place, not an action
      trailer --no-divider help: describe usual "---" meaning
      trailer --parse help: expose aliased options
      trailer --only-input: prefer "configuration variables" over "rules"
      trailer --parse docs: add explanation for its usefulness
      trailer --unfold help: prefer "reformat" over "join"
      trailer doc: emphasize the effect of configuration variables
      trailer doc: separator within key suppresses default separator
      trailer doc: <token> is a <key> or <keyAlias>, not both
      trailer: separate public from internal portion of trailer_iterator
      trailer: split process_input_file into separate pieces
      trailer: split process_command_line_args into separate functions

M Hickford (3):
      credential/libsecret: store new attributes
      credential/libsecret: erase matching creds only
      credential/wincred: erase matching creds only

Mark Levedahl (6):
      git gui Makefile - remove Cygwin modifications
      git-gui - remove obsolete Cygwin specific code
      git-gui - use cygstart to browse on Cygwin
      git-gui - use mkshortcut on Cygwin
      git-gui - re-enable use of hook scripts
      git-gui - use git-hook, honor core.hooksPath

Mark Ruvald Pedersen (1):
      sequencer: truncate labels to accommodate loose refs

Matthew McClain (1):
      git-p4 shouldn't attempt to store symlinks in LFS

Michal Suchanek (1):
      git-push doc: more visibility for -q option

Naomi Ibe (1):
      builtin/add.c: clean up die() messages

Oswald Buddenhagen (16):
      t/lib-rebase: set_fake_editor(): fix recognition of reset's short command
      t/lib-rebase: set_fake_editor(): handle FAKE_LINES more consistently
      sequencer: simplify allocation of result array in todo_list_rearrange_squash()
      t/lib-rebase: improve documentation of set_fake_editor()
      t9001: fix indentation in test_no_confirm()
      format-patch: add --description-file option
      sequencer: rectify empty hint in call of require_clean_work_tree()
      sequencer: beautify subject of reverts of reverts
      git-revert.txt: add discussion
      sequencer: fix error message on failure to copy SQUASH_MSG
      t3404-rebase-interactive.sh: fix typos in title of a rewording test
      sequencer: remove unreachable exit condition in pick_commits()
      am: fix error message in parse_opt_show_current_patch()
      rebase: simplify code related to imply_merge()
      rebase: handle --strategy via imply_merge() as well
      rebase: move parse_opt_keep_empty() down

Patrick Steinhardt (5):
      upload-pack: fix exit code when denying fetch of unreachable object ID
      revision: make pseudo-opt flags read via stdin behave consistently
      doc/git-worktree: mention "refs/rewritten" as per-worktree refs
      doc/git-repack: fix syntax for `-g` shorthand option
      doc/git-repack: don't mention nonexistent "--unpacked" option

Philippe Blain (3):
      completion: commit: complete configured trailer tokens
      completion: commit: complete trailers tokens more robustly
      completion: improve doc for complex aliases

Phillip Wood (7):
      rebase -i: move unlink() calls
      rebase -i: remove patch file after conflict resolution
      sequencer: use rebase_path_message()
      sequencer: factor out part of pick_commits()
      rebase: fix rewritten list for failed pick
      rebase --continue: refuse to commit after failed command
      rebase -i: fix adding failed command to the todo list

René Scharfe (14):
      subtree: disallow --no-{help,quiet,debug,branch,message}
      t1502, docs: disallow --no-help
      t1502: move optionspec help output to a file
      t1502: test option negation
      parse-options: show negatability of options in short help
      parse-options: factor out usage_indent() and usage_padding()
      parse-options: no --[no-]no-...
      parse-options: simplify usage_padding()
      parse-options: allow omitting option help text
      name-rev: use OPT_HIDDEN_BOOL for --peel-tag
      grep: use OPT_INTEGER_F for --max-depth
      grep: reject --no-or
      diff --no-index: fix -R with stdin
      parse-options: drop unused parse_opt_ctx_t member

Rubén Justo (2):
      branch: error message deleting a branch in use
      branch: error message checking out a branch in use

Sergey Organov (4):
      doc/diff-options: fix link to generating patch section
      diff-merges: improve --diff-merges documentation
      diff-merges: introduce '--dd' option
      completion: complete '--dd'

Shuqi Liang (3):
      t1092: add tests for 'git check-attr'
      attr.c: read attributes in a sparse directory
      check-attr: integrate with sparse-index

Tang Yuyi (1):
      merge-tree: add -X strategy option

Taylor Blau (24):
      repack: move `pack_geometry` struct to the stack
      commit-graph: introduce `commit_graph_generation_from_graph()`
      t/t5318-commit-graph.sh: test generation zero transitions during fsck
      commit-graph: avoid repeated mixed generation number warnings
      leak tests: mark a handful of tests as leak-free
      leak tests: mark t3321-notes-stripspace.sh as leak-free
      leak tests: mark t5583-push-branches.sh as leak-free
      builtin/pack-objects.c: remove unnecessary strbuf_reset()
      builtin/pack-objects.c: support `--max-pack-size` with `--cruft`
      Documentation/gitformat-pack.txt: remove multi-cruft packs alternative
      Documentation/gitformat-pack.txt: drop mixed version section
      builtin/repack.c: extract structure to store existing packs
      builtin/repack.c: extract marking packs for deletion
      builtin/repack.c: extract redundant pack cleanup for --geometric
      builtin/repack.c: extract redundant pack cleanup for existing packs
      builtin/repack.c: extract `has_existing_non_kept_packs()`
      builtin/repack.c: store existing cruft packs separately
      builtin/repack.c: avoid directly inspecting "util"
      builtin/repack.c: extract common cruft pack loop
      git-send-email.perl: avoid printing undef when validating addresses
      t7700: split cruft-related tests to t7704
      builtin/repack.c: parse `--max-pack-size` with OPT_MAGNITUDE
      builtin/repack.c: implement support for `--max-cruft-size`
      builtin/repack.c: avoid making cruft packs preferred

Victoria Dye (4):
      ref-cache.c: fix prefix matching in ref iteration
      dir.[ch]: expose 'get_dtype'
      dir.[ch]: add 'follow_symlink' arg to 'get_dtype'
      files-backend.c: avoid stat in 'loose_fill_ref_dir'

Vipul Kumar (1):
      git-gui: Fix a typo in README

Wesley Schwengle (2):
      git-push.txt: fix grammar
      git-svn: drop FakeTerm hack

brian m. carlson (1):
      t: add a test helper to truncate files

Ævar Arnfjörð Bjarmason (1):
      Makefiles: change search through $(MAKEFLAGS) for GNU make 4.4

Štěpán Němec (6):
      doc: fix some typos, grammar and wording issues
      doc/diff-options: improve wording of the log.diffMerges mention
      git-jump: admit to passing merge mode args to ls-files
      doc/gitk: s/sticked/stuck/
      t/README: fix multi-prerequisite example
      doc/cat-file: make synopsis and description less confusing

王常新 (1):
      merge-ort.c: fix typo 'neeed' to 'needed'

谢致邦 (XIE Zhibang) (2):
      doc: correct the 50 characters soft limit
      doc: correct the 50 characters soft limit (+)



^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.42.0
@ 2023-08-21 18:12  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-08-21 18:12 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

The latest feature release Git v2.42.0 is now available at the
usual places.  It is comprised of 453 non-merge commits since
v2.41.0, contributed by 78 people, 17 of which are new faces [*].

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.42.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.41.0 are as follows.
Welcome to the Git development community!

  Adam Majer, Andreas Herrmann, Greg Alexander, Han Young, Jacob
  Abel, Jan Klötzke, Jim Pryor, Johan Ruokangas, Josh Sref,
  Josip Sokcevic, Louis Strous, Lumynous, Petar Vutov, Premek
  Vysoky, Sebastian Thiel, Tribo Dar, and Vinayak Dev.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  , Alejandro R. Sedeño, Alex Henrie, Arkadii Yakovets, Bagas
  Sanjaya, Beat Bolli, brian m. carlson, Calvin Wan, Carlo Marcelo
  Arenas Belón, Christian Couder, D. Ben Knoble, Derrick Stolee,
  Dimitriy Ryazantcev, Elijah Newren, Emir SARI, Eric Sunshine,
  Eric Wong, Glen Choo, Hariom Verma, Jacob Keller, Jaydeep Das,
  Jean-Noël Avila, Jeff King, Johannes Schindelin, John Cai,
  Jonathan Nieder, Jonathan Tan, Jordi Mas, Junio C Hamano,
  Kate Golovanova, Kousik Sanagavarapu, Kristoffer Haugsbakk,
  Linus Arver, Martin Ågren, Matthew Hughes, Matthias Aßhauer, M
  Hickford, Michael Haggerty, Mike Hommey, Nsengiyumva Wilberforce,
  Oswald Buddenhagen, Patrick Steinhardt, Peter Krefting,
  Philippe Blain, Phillip Wood, Ralf Thielow, Randall S. Becker,
  René Scharfe, Rubén Justo, Sean Allred, Shuqi Liang, SZEDER
  Gábor, Taylor Blau, Teng Long, Todd Zullinger, Toon Claes,
  Torsten Bögershausen, Victoria Dye, Yi-Jyun Pan, Yuyi Wang,
  and ZheNing Hu.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.42 Release Notes
=======================

UI, Workflows & Features

 * "git pack-refs" learns "--include" and "--exclude" to tweak the ref
   hierarchy to be packed using pattern matching.

 * 'git worktree add' learned how to create a worktree based on an
   orphaned branch with `--orphan`.

 * "git pack-objects" learned to invoke a new hook program that
   enumerates extra objects to be used as anchoring points to keep
   otherwise unreachable objects in cruft packs.

 * Add more "git var" for toolsmiths to learn various locations Git is
   configured with either via the configuration or hard-coded defaults.

 * 'git notes append' was taught '--separator' to specify string to insert
   between paragraphs.

 * The "git for-each-ref" family of commands learned placeholders
   related to GPG signature verification.

 * "git diff --no-index" learned to read from named pipes as if they
   were regular files, to allow "git diff <(process) <(substitution)"
   some shells support.

 * Help newbies by suggesting that there are cases where force-pushing
   is a valid and sensible thing to update a branch at a remote
   repository, rather than reconciling with merge/rebase.

 * "git blame --contents=file" has been taught to work in a bare
   repository.

 * "git branch -f X" to repoint the branch X said that X was "checked
   out" in another worktree, even when branch X was not and instead
   being bisected or rebased.  The message was reworded to say the
   branch was "in use".

 * Tone down the warning on SHA-256 repositories being an experimental
   curiosity.  We do not have support for them to interoperate with
   traditional SHA-1 repositories, but at this point, we do not plan
   to make breaking changes to SHA-256 repositories and there is no
   longer need for such a strongly phrased warning.


Performance, Internal Implementation, Development Support etc.

 * "git diff-tree" has been taught to take advantage of the
   sparse-index feature.

 * Clang's sanitizer implementation seems to work better than GCC's.
   (merge d88d727143 jk/ci-use-clang-for-sanitizer-jobs later to maint).

 * The object traversal using reachability bitmap done by
   "pack-object" has been tweaked to take advantage of the fact that
   using "boundary" commits as representative of all the uninteresting
   ones can save quite a lot of object enumeration.

 * discover_git_directory() no longer touches the_repository.

 * "git worktree" learned to work better with sparse index feature.

 * When the external merge driver is killed by a signal, its output
   should not be trusted as a resolution with conflicts that is
   proposed by the driver, but the code did.

 * The set-up code for the get_revision() API now allows feeding
   options like --all and --not in the --stdin mode.

 * Move functions that are not about pure string manipulation out of
   strbuf.[ch]

 * "imap-send" codepaths got cleaned up to get rid of unused
   parameters.

 * Enumerating refs in the packed-refs file, while excluding refs that
   match certain patterns, has been optimized.

 * Mark-up unused parameters in the code so that we can eventually
   enable -Wunused-parameter by default.

 * Instead of inventing a custom counter variables for debugging,
   use existing trace2 facility in the fsync customization codepath.

 * "git branch --list --format=<format>" and friends are taught
   a new "%(describe)" placeholder.

 * Clarify how to choose the starting point for a new topic in
   developer guidance document.

 * The implementation of "get_sha1_hex()" that reads a hexadecimal
   string that spells a full object name has been extended to cope
   with any hash function used in the repository, but the "sha1" in
   its name survived.  Rename it to get_hash_hex(), a name that is
   more consistent within its friends like get_hash_hex_algop().

 * Command line parser fix, and a small parse-options API update.


Fixes since v2.41
-----------------

 * "git tag" learned to leave the "$GIT_DIR/TAG_EDITMSG" file when the
   command failed, so that the user can salvage what they typed.
   (merge 08c12ec1d0 kh/keep-tag-editmsg-upon-failure later to maint).

 * The "-s" (silent, squelch) option of the "diff" family of commands
   did not interact with other options that specify the output format
   well.  This has been cleaned up so that it will clear all the
   formatting options given before.
   (merge 9d484b92ed jc/diff-s-with-other-options later to maint).

 * Update documentation regarding Coccinelle patches.
   (merge 3bd0097cfc gc/doc-cocci-updates later to maint).

 * Some atoms that can be used in "--format=<format>" for "git ls-tree"
   were not supported by "git ls-files", even though they were relevant
   in the context of the latter.
   (merge 4d28c4f75f zh/ls-files-format-atoms later to maint).

 * Document more pseudo-refs and teach the command line completion
   machinery to complete AUTO_MERGE.
   (merge 982ff3a649 pb/complete-and-document-auto-merge-and-friends later to maint).

 * "git submodule" code trusted the data coming from the config (and
   the in-tree .gitmodules file) too much without validating, leading
   to NULL dereference if the user mucks with a repository (e.g.
   submodule.<name>.url is removed).  This has been corrected.
   (merge fbc806acd1 tb/submodule-null-deref-fix later to maint).

 * The value of config.worktree is per-repository, but has been kept
   in a singleton global variable per process. This has been OK as
   most Git operations interacted with a single repository at a time,
   but not right for operations like recursive "grep" that want to
   access multiple repositories from a single process without forking.

   The global variable has been eliminated and made into a member in
   the per-repository data structure.
   (merge 3867f6d650 vd/worktree-config-is-per-repository later to maint).

 * "git [-c log.follow=true] log [--follow] ':(glob)f**'" used to barf.
   (merge 8260bc5902 jk/log-follow-with-non-literal-pathspec later to maint).

 * Introduce a mechanism to disable replace refs globally and per
   repository.
   (merge 9c7d1b057f ds/disable-replace-refs later to maint).

 * "git cat-file --batch" and friends learned "-Z" that uses NUL
   delimiter for both input and output.
   (merge f79e18849b ps/cat-file-null-output later to maint).

 * The reimplemented "git add -i" did not honor color.ui configuration.
   (merge 6f74648cea ds/add-i-color-configuration-fix later to maint).

 * Compilation fix for platforms without D_TYPE in struct dirent.
   (merge 03bf92b9bf as/dtype-compilation-fix later to maint).

 * Suggest to refrain from using hex literals that are non-portable
   when writing printf(1) format strings.
   (merge f0b68f0546 jt/doc-use-octal-with-printf later to maint).

 * Simplify error message when run-command fails to start a command.
   (merge 6d224ac286 rs/run-command-exec-error-on-noent later to maint).

 * Gracefully deal with a stale MIDX file that lists a packfile that
   no longer exists.
   (merge 06f3867865 tb/open-midx-bitmap-fallback later to maint).

 * Even when diff.ignoreSubmodules tells us to ignore submodule
   changes, "git commit" with an index that already records changes to
   submodules should include the submodule changes in the resulting
   commit, but it did not.
   (merge 5768478edc js/defeat-ignore-submodules-config-with-explicit-addition later to maint).

 * When "git commit --trailer=..." invokes the interpret-trailers
   machinery, it knows what it feeds to interpret-trailers is a full
   log message without any patch, but failed to express that by
   passing the "--no-divider" option, which has been corrected.
   (merge be3d654343 jk/commit-use-no-divider-with-interpret-trailers later to maint).

 * Avoid breakage of "git pack-objects --cruft" due to inconsistency
   between the way the code enumerates packfiles in the repository.
   (merge 73320e49ad tb/collect-pack-filenames-fix later to maint).

 * We create .pack and then .idx, we consider only packfiles that have
   .idx usable (those with only .pack are not ready yet), so we should
   remove .idx before removing .pack for consistency.
   (merge 0dd1324a73 ds/remove-idx-before-pack later to maint).

 * Partially revert a sanity check that the rest of the config code
   was not ready, to avoid triggering it in a corner case.
   (merge a53f43f900 gc/config-partial-submodule-kvi-fix later to maint).

 * "git apply" punts when it is fed too large a patch input; the error
   message it gives when it happens has been clarified.
   (merge 42612e18d2 pw/apply-too-large later to maint).

 * During a cherry-pick or revert session that works on multiple
   commits, "git status" did not give correct information, which has
   been corrected.
   (merge a096a889f4 jk/cherry-pick-revert-status later to maint).

 * A few places failed to differentiate the case where the index is
   truly empty (nothing added) and we haven't yet read from the
   on-disk index file, which have been corrected.
   (merge 2ee045eea1 js/empty-index-fixes later to maint).

 * "git bugreport" tests did not test what it wanted to test, which
   has been corrected.
   (merge 1aa92b8500 ma/t0091-fixup later to maint).

 * Code snippets in a tutorial document no longer compiled after
   recent header shuffling, which have been corrected.
   (merge bbd7c7b7c0 vd/adjust-mfow-doc-to-updated-headers later to maint).

 * "git ls-files '(attr:X)D/'" that triggers the common prefix
   optimization codepath failed to read from "D/.gitattributes",
   which has been corrected.
   (merge f4a8fde057 jc/pathspec-match-with-common-prefix later to maint).

 * "git fsck --no-progress" still spewed noise from the commit-graph
   subsystem, which has been corrected.
   (merge 9281cd07f0 tb/fsck-no-progress later to maint).

 * Various offset computation in the code that accesses the packfiles
   and other data in the object layer has been hardened against
   arithmetic overflow, especially on 32-bit systems.
   (merge 9a25cad7e0 tb/object-access-overflow-protection later to maint).

 * Names of MinGW header files are spelled in mixed case in some
   source files, but the build host can be using case sensitive
   filesystem with header files with their name spelled in all
   lowercase.
   (merge 4a53d0d0bc mh/mingw-case-sensitive-build later to maint).

 * Update message mark-up for i18n in "git bundle".
   (merge bbb6acd998 dk/bundle-i18n-more later to maint).

 * "git tag --list --points-at X" showed tags that directly refers to
   object X, but did not list a tag that points at such a tag, which
   has been corrected.

 * "./configure --with-expat=no" did not work as a way to refuse use
   of the expat library on a system with the library installed, which
   has been corrected.
   (merge fb8f7269c2 ah/autoconf-fixes later to maint).

 * When the user edits "rebase -i" todo file so that it starts with a
   "fixup", which would make it invalid, the command truncated the
   rest of the file before giving an error and returning the control
   back to the user.  Stop truncating to make it easier to correct
   such a malformed todo file.
   (merge 9645a087c2 ah/sequencer-rewrite-todo-fix later to maint).

 * Rewrite the description of giving a custom command to the
   submodule.<name>.update configuration variable.
   (merge 7cebc5bd78 pv/doc-submodule-update-settings later to maint).

 * Adjust to OpenSSL 3+, which deprecates its SHA-1 functions based on
   its traditional API, by using its EVP API instead.
   (merge bda9c12073 ew/hash-with-openssl-evp later to maint).

 * Exclude "." from the set of characters to be removed from the
   beginning and the end of the human-readable name.
   (merge 1c04cb0744 bc/ident-dot-is-no-longer-crud-letter later to maint).

 * "git bisect visualize" stopped running "gitk" on Git for Windows
   when the command was reimplemented in C around Git 2.34 timeframe.
   This has been corrected.
   (merge fff1594fa7 ma/locate-in-path-for-windows later to maint).

 * "git rebase -i" with a series of squash/fixup, when one of the
   steps stopped in conflicts and ended up getting skipped, did not
   handle the accumulated commit log messages, which has been
   corrected.
   (merge 6ce7afe163 pw/rebase-skip-commit-message-fix later to maint).

 * Adjust to newer Term::ReadLine to prevent it from breaking
   the interactive prompt code in send-email.
   (merge c016726c2d jk/send-email-with-new-readline later to maint).

 * Windows updates.
   (merge 0050f8e401 ds/maintenance-on-windows-fix later to maint).

 * Correct use of lstat() that assumed a failing call would not
   clobber the statbuf.
   (merge 72695d8214 st/mv-lstat-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 51f9d2e563 sa/doc-ls-remote later to maint).
   (merge c6d26a9dda jk/format-patch-message-id-unleak later to maint).
   (merge f7e063f326 ps/fetch-cleanups later to maint).
   (merge e4cf013468 tl/quote-problematic-arg-for-clarity later to maint).
   (merge 20025fdfc7 tz/test-ssh-verifytime-fix later to maint).
   (merge e48a21df65 tz/test-fix-pthreads-prereq later to maint).
   (merge 68b51172e3 mh/commit-reach-get-reachable-plug-leak later to maint).
   (merge aeee1408ce kh/use-default-notes-doc later to maint).
   (merge 3b8724bce6 jc/test-modernization later to maint).
   (merge 447a3b7331 jc/test-modernization-2 later to maint).
   (merge d57fa7fc73 la/doc-interpret-trailers later to maint).
   (merge 548afb0d9a la/docs-typofixes later to maint).
   (merge 3744ffcbcd rs/doc-ls-tree-hex-literal later to maint).
   (merge 6c26da8404 mh/credential-erase-improvements later to maint).
   (merge 78e56cff69 tz/lib-gpg-prereq-fix later to maint).
   (merge 80d32e84b5 rj/leakfixes later to maint).
   (merge 0a868031ed pb/complete-diff-options later to maint).
   (merge d4f28279ad jc/doc-hash-object-types later to maint).
   (merge 1876a5ae15 ks/t4205-test-describe-with-abbrev-fix later to maint).
   (merge 6e6a529b57 jk/fsck-indices-in-worktrees later to maint).
   (merge 3e81b896f7 rs/packet-length-simplify later to maint).
   (merge 4c9cb51fe7 mh/doc-credential-helpers later to maint).
   (merge 3437f549dd jr/gitignore-doc-example-markup later to maint).
   (merge 947ebd62a0 jc/am-parseopt-fix later to maint).
   (merge e12cb98e1e jc/branch-parseopt-fix later to maint).
   (merge d6f598e443 jc/gitignore-doc-pattern-markup later to maint).
   (merge a2dad4868b jc/transport-parseopt-fix later to maint).
   (merge 68cbb20e73 jc/parse-options-show-branch later to maint).
   (merge 3821eb6c3d jc/parse-options-reset later to maint).
   (merge c48af99a3e bb/trace2-comment-fix later to maint).
   (merge c95ae3ff9c rs/describe-parseopt-fix later to maint).
   (merge 36f76d2a25 rs/pack-objects-parseopt-fix later to maint).
   (merge 30c8c55cbf jc/tree-walk-drop-base-offset later to maint).
   (merge d089a06421 rs/bundle-parseopt-cleanup later to maint).
   (merge 823839bda1 ew/sha256-gcrypt-leak-fixes later to maint).
   (merge a5c01603b3 bc/ignore-clangd-cache later to maint).
   (merge 12009a182b js/allow-t4000-to-be-indented-with-spaces later to maint).
   (merge b3dcd24b8a jc/send-email-pre-process-fix later to maint).

----------------------------------------------------------------

Changes since v2.41.0 are as follows:

Adam Majer (1):
      doc: sha256 is no longer experimental

Alejandro R. Sedeño (1):
      statinfo.h: move DTYPE defines from dir.h

Alex Henrie (4):
      wt-status: don't show divergence advice when committing
      remote: don't imply that integration is always required before pushing
      push: don't imply that integration is always required before pushing
      sequencer: finish parsing the todo list despite an invalid first line

Andreas Herrmann (3):
      configure.ac: don't overwrite NO_EXPAT option
      configure.ac: don't overwrite NO_CURL option
      configure.ac: always save NO_ICONV to config.status

Arkadii Yakovets (1):
      l10n: uk: update translation (2.42.0)

Bagas Sanjaya (1):
      l10n: po-id for 2.42 (round 1)

Beat Bolli (2):
      trace2: fix a comment
      wrapper: use trace2 counters to collect fsync stats

Calvin Wan (13):
      strbuf: clarify API boundary
      strbuf: clarify dependency
      abspath: move related functions to abspath
      credential-store: move related functions to credential-store file
      object-name: move related functions to object-name
      path: move related function to path
      strbuf: remove global variable
      git-compat-util: move strbuf.c funcs to its header
      git-compat-util: move wrapper.c funcs to its header
      sane-ctype.h: create header for sane-ctype macros
      kwset: move translation table from ctype
      treewide: remove unnecessary includes for wrapper.h
      git-compat-util: move alloc macros to git-compat-util.h

D. Ben Knoble (2):
      i18n: mark more bundle.c strings for translation
      t4002: fix "diff can read from stdin" syntax

Derrick Stolee (7):
      add: check color.ui for interactive add
      add: test use of brackets when color is disabled
      repository: create disable_replace_refs()
      replace-objects: create wrapper around setting
      repository: create read_replace_refs setting
      packfile: delete .idx files before .pack files
      builtin/repack.c: only repack `.pack`s that exist

Dimitriy Ryazantcev (1):
      l10n: ru.po: update Russian translation

Elijah Newren (28):
      init-db: document existing bug with core.bare in template config
      init-db: remove unnecessary global variable
      init-db, clone: change unnecessary global into passed parameter
      setup: adopt shared init-db & clone code
      read-cache: move shared commit and ls-files code
      add: modify add_files_to_cache() to avoid globals
      read-cache: move shared add/checkout/commit code
      statinfo: move stat_{data,validity} functions from cache/read-cache
      run-command.h: move declarations for run-command.c from cache.h
      name-hash.h: move declarations for name-hash.c from cache.h
      sparse-index.h: move declarations for sparse-index.c from cache.h
      preload-index.h: move declarations for preload-index.c from elsewhere
      diff.h: move declaration for global in diff.c from cache.h
      merge.h: move declarations for merge.c from cache.h
      repository.h: move declaration of the_index from cache.h
      read-cache*.h: move declarations for read-cache.c functions from cache.h
      cache.h: remove this no-longer-used header
      log-tree: replace include of revision.h with simple forward declaration
      repository: remove unnecessary include of path.h
      diff.h: remove unnecessary include of oidset.h
      list-objects-filter-options.h: remove unneccessary include
      builtin.h: remove unneccessary includes
      git-compat-util.h: remove unneccessary include of wildmatch.h
      merge-ll: rename from ll-merge
      khash: name the structs that khash declares
      object-store-ll.h: split this header out of object-store.h
      hash-ll, hashmap: move oidhash() to hash-ll
      fsmonitor-ll.h: split this header out of fsmonitor.h

Emir SARI (1):
      l10n: tr: git 2.42.0

Eric Sunshine (1):
      fsck: avoid misleading variable name

Eric Wong (5):
      sha256/gcrypt: fix build with SANITIZE=leak
      sha256/gcrypt: fix memory leak with SHA-256 repos
      sha256/gcrypt: die on gcry_md_open failures
      sha256: avoid functions deprecated in OpenSSL 3+
      avoid SHA-1 functions deprecated in OpenSSL 3+

Glen Choo (16):
      cocci: add headings to and reword README
      cocci: codify authoring and reviewing practices
      setup.c: don't setup in discover_git_directory()
      config: don't BUG when both kvi and source are set
      config: inline git_color_default_config
      urlmatch.h: use config_fn_t type
      config: add ctx arg to config_fn_t
      config.c: pass ctx in configsets
      config: pass ctx with config files
      config.c: pass ctx with CLI config
      trace2: plumb config kvi
      config: pass kvi to die_bad_number()
      config.c: remove config_reader from configsets
      config: add kvi.path, use it to evaluate includes
      config: pass source to config_parser_event_fn_t
      mailmap: change primary address for Glen Choo

Han Young (1):
      blame: allow --contents to work with bare repo

Jacob Abel (11):
      worktree add: include -B in usage docs
      t2400: cleanup created worktree in test
      t2400: refactor "worktree add" opt exclusion tests
      t2400: add tests to verify --quiet
      worktree add: add --orphan flag
      worktree add: introduce "try --orphan" hint
      worktree add: extend DWIM to infer --orphan
      worktree add: emit warn when there is a bad HEAD
      t2400: drop no-op `--sq` from rev-parse call
      builtin/worktree.c: convert tab in advice to space
      t2400: rewrite regex to avoid unintentional PCRE

Jacob Keller (1):
      fix cherry-pick/revert status when doing multiple commits

Jan Klötzke (1):
      ref-filter: handle nested tags in --points-at option

Jean-Noël Avila (2):
      l10n: fr v2.42.0 rnd 1
      l10n: fr v2.42.0 rnd 2

Jeff King (41):
      format-patch: free rev.message_id when exiting
      format-patch: free elements of rev.ref_message_ids list
      pathspec: factor out magic-to-name function
      diff: factor out --follow pathspec check
      diff: detect pathspec magic not supported by --follow
      ci: use clang for ASan/UBSan checks
      ci: run ASan/UBSan in a single job
      ci: drop linux-clang job
      commit: pass --no-divider to interpret-trailers
      http: handle both "h2" and "h2h3" in curl info lines
      var: mark unused parameters in git_var callbacks
      imap-send: use server conf argument in setup_curl()
      imap-send: drop unused parameter from imap_cmd_cb callback
      imap-send: drop unused fields from imap_cmd_cb
      refs.c: rename `ref_filter`
      ref-filter.h: provide `REF_FILTER_INIT`
      ref-filter: clear reachable list pointers after freeing
      ref-filter: add `ref_filter_clear()`
      ref-filter.c: parameterize match functions over patterns
      test-ref-store: drop unimplemented reflog-expire command
      do_for_each_ref_helper(): mark unused repository parameter
      http: mark unused parameters in curl callbacks
      http-push: mark unused parameter in xml callback
      am: mark unused keep_cr parameters
      count-objects: mark unused parameter in alternates callback
      revisions: drop unused "opt" parameter in "tweak" callbacks
      fsck: mark unused parameters in various fsck callbacks
      merge-tree: mark unused parameter in traverse callback
      replace: mark unused parameter in ref callback
      replace: mark unused parameter in each_mergetag_fn callback
      rev-parse: mark unused parameter in for_each_abbrev callback
      tag: mark unused parameters in each_tag_name_fn callbacks
      t/helper: mark unused callback void data parameters
      ref-filter: avoid parsing tagged objects in match_points_at()
      ref-filter: avoid parsing non-tags in match_points_at()
      ref-filter: simplify return type of match_points_at
      send-email: drop FakeTerm hack
      send-email: avoid creating more than one Term::ReadLine object
      repack: free geometry struct
      t4053: avoid writing to unopened pipe
      fsck: use enum object_type for fsck_walk callback

Johan Ruokangas (1):
      gitignore.txt: use backticks instead of double quotes

Johannes Schindelin (6):
      do_read_index(): always mark index as initialized unless erroring out
      split-index: accept that a base index can be empty
      commit -a -m: allow the top-level tree to become empty again
      t0040: declare non-tab indentation to be okay in this script
      win32: add a helper to run `git.exe` without a foreground window
      git maintenance: avoid console window in scheduled tasks on Windows

John Cai (34):
      docs: clarify git-pack-refs --all will pack all refs
      pack-refs: teach --exclude option to exclude refs from being packed
      pack-refs: teach pack-refs --include option
      t0000-basic: modernize test format
      t0030-stripspace: modernize test format
      t3210-pack-refs: modernize test format
      t1001-read-tree-m-2way: modernize test format
      t1002-read-tree-m-u-2way: modernize test format
      t1006-cat-file: modernize test format
      t3500-cherry: modernize test format
      t3700-add: modernize test format
      t3903-stash: modernize test format
      t4002-diff-basic: modernize test format
      t4003-diff-rename-1: modernize test format
      t4004-diff-rename-symlink: modernize test format
      t4202-log: modernize test format
      t4206-log-follow-harder-copies: modernize test format
      t5300-pack-object: modernize test format
      t5301-sliding-window: modernize test format
      t5303-pack-corruption-resilience: modernize test format
      t5306-pack-nobase: modernize test format
      t6050-replace: modernize test format
      t7101-reset-empty-subdirs: modernize test format
      t7110-reset-merge: modernize test format
      t7111-reset-table: modernize test format
      t7201-co: modernize test format
      t7508-status: modernize test format
      t7600-merge: modernize test format
      t7700-repack: modernize test format
      t9100-git-svn-basic: modernize test format
      t9104-git-svn-follow-parent: modernize test format
      t9200-git-cvsexportcommit: modernize test format
      t9400-git-cvsserver-server: modernize test format
      docs: add git hash-object -t option's possible values

Jonathan Tan (1):
      CodingGuidelines: use octal escapes, not hex

Jordi Mas (1):
      l10n: Update Catalan translation

Josip Sokcevic (1):
      diff-lib: honor override_submodule_config flag bit

Junio C Hamano (48):
      diff: fix interaction between the "-s" option and other options
      show-branch doc: say <ref>, not <reference>
      Start the 2.42 cycle
      The second batch for 2.42
      The third batch
      ll-merge: killing the external merge driver aborts the merge
      The fourth batch
      t6406: skip "external merge driver getting killed by a signal" test on Windows
      The fifth batch
      The sixth batch
      The seventh batch
      The eighth batch
      t6135: attr magic with path pattern
      tree-walk: lose base_offset that is never used in tree_entry_interesting
      tree-walk: drop unused base_offset from do_match()
      The ninth batch
      dir: match "attr" pathspec magic with correct paths
      The tenth batch
      The eleventh batch
      The twelfth batch
      gitignore.txt: mark up explanation of patterns consistently
      am: simplify parsing of "--[no-]keep-cr"
      branch: reject "--no-all" and "--no-remotes" early
      parse-options: introduce OPT_IPVERSION()
      fetch: reject --no-ipv[46]
      show-branch: --no-sparse should give dense output
      short help: allow multi-line opthelp
      remote: simplify "remote add --tags" help text
      short help: allow a gap smaller than USAGE_GAP
      show-branch: reject --[no-](topo|date)-order
      reset: reject --no-(mixed|soft|hard|merge|keep) option
      The thirteenth batch
      branch: update the message to refuse touching a branch in-use
      hex: retire get_sha1_hex()
      The fourteenth batch
      SubmittingPatches: choice of base for fixing an older maintenance track
      The fifteenth batch
      SubmittingPatches: explain why 'next' and above are inappropriate base
      SubmittingPatches: use of older maintenance tracks is an exception
      The sixteenth batch
      MyFirstContribution: refrain from self-iterating too much
      The seventeenth batch
      The eighteenth batch
      Git 2.42-rc0
      A few more topics before -rc1
      Git 2.42-rc1
      Git 2.42-rc2
      Git 2.42

Kousik Sanagavarapu (5):
      t/lib-gpg: introduce new prereq GPG2
      ref-filter: add new "signature" atom
      t4205: correctly test %(describe:abbrev=...)
      ref-filter: add multiple-option parsing functions
      ref-filter: add new "describe" atom

Kristoffer Haugsbakk (5):
      doc: tag: document `TAG_EDITMSG`
      t/t7004-tag: add regression test for successful tag creation
      tag: keep the message file in case ref transaction fails
      notes: update documentation for `use_default_notes`
      notes: move the documentation to the struct

Linus Arver (15):
      docs: typofixes
      doc: trailer: fix grammar
      doc: trailer: swap verb order
      doc: trailer: drop "commit message part" phrasing
      doc: trailer: examples: avoid the word "message" by itself
      doc: trailer: remove redundant phrasing
      doc: trailer: use angle brackets for <token> and <value>
      doc: trailer.<token>.command: emphasize deprecation
      doc: trailer: mention 'key' in DESCRIPTION
      doc: trailer: add more examples in DESCRIPTION
      SubmittingPatches: reword awkward phrasing
      SubmittingPatches: discuss subsystems separately from git.git
      SubmittingPatches: de-emphasize branches as starting points
      SubmittingPatches: emphasize need to communicate non-default starting points
      SubmittingPatches: simplify guidance for choosing a starting point

M Hickford (3):
      credential: avoid erasing distinct password
      credential: erase all matching credentials
      doc: gitcredentials: link to helper list

Martin Ågren (5):
      t0091-bugreport.sh: actually verify some content of report
      notes doc: split up run-on sentences
      notes doc: tidy up `--no-stripspace` paragraph
      show-ref doc: fix carets in monospace
      rev-list-options: fix typo in `--stdin` documentation

Matthias Aßhauer (3):
      run-command: conditionally define locate_in_PATH()
      compat/mingw: implement a native locate_in_PATH()
      docs: update when `git bisect visualize` uses `gitk`

Mike Hommey (2):
      commit-reach: fix memory leak in get_reachable_subset()
      mingw: use lowercase includes for some Windows headers

Oswald Buddenhagen (2):
      advice: handle "rebase" in error_resolve_conflict()
      t9001: remove excessive GIT_SEND_EMAIL_NOTTY=1

Patrick Steinhardt (17):
      fetch: drop unused DISPLAY_FORMAT_UNKNOWN enum value
      fetch: drop unneeded NULL-check for `remote_ref`
      fetch: pass through `fetch_config` directly
      fetch: use `fetch_config` to store "fetch.prune" value
      fetch: use `fetch_config` to store "fetch.pruneTags" value
      fetch: use `fetch_config` to store "fetch.showForcedUpdates" value
      fetch: use `fetch_config` to store "fetch.recurseSubmodules" value
      fetch: use `fetch_config` to store "fetch.parallel" value
      fetch: use `fetch_config` to store "submodule.fetchJobs" value
      t1006: don't strip timestamps from expected results
      t1006: modernize test style to use `test_cmp`
      strbuf: provide CRLF-aware helper to read until a specified delimiter
      cat-file: simplify reading from standard input
      cat-file: add option '-Z' that delimits input and output with NUL
      revision: reorder `read_revisions_from_stdin()`
      revision: small readability improvement for reading from stdin
      revision: handle pseudo-opts in `--stdin` mode

Petar Vutov (1):
      doc: highlight that .gitmodules does not support !command

Peter Krefting (1):
      l10n: sv.po: Update Swedish translation 5549t0f0u

Philippe Blain (30):
      revisions.txt: use description list for special refs
      revisions.txt: document more special refs
      completion: complete REVERT_HEAD and BISECT_HEAD
      git-merge.txt: modernize word choice in "True merge" section
      Documentation: document AUTO_MERGE
      completion: complete AUTO_MERGE
      completion: add comments describing __git_diff_* globals
      completion: complete --break-rewrites
      completion: complete --cc
      completion: complete --combined-all-paths
      completion: complete --compact-summary
      completion: complete --default-prefix
      completion: complete --find-copies
      completion: complete --find-object
      completion: complete --find-renames
      completion: complete --function-context
      completion: complete --ignore-matching-lines
      completion: complete --irreversible-delete
      completion: complete --ita-invisible-in-index and --ita-visible-in-index
      completion: complete --line-prefix
      completion: complete --no-relative
      completion: complete --no-stat
      completion: complete --output
      completion: complete --output-indicator-{context,new,old}
      completion: complete --unified
      completion: complete --ws-error-highlight
      completion: move --pickaxe-{all,regex} to __git_diff_common_options
      completion: complete --diff-merges, its options and --no-diff-merges
      completion: complete --remerge-diff
      diff.c: mention completion above add_diff_options

Phillip Wood (7):
      apply: improve error messages when reading patch
      diff --no-index: refuse to compare stdin to a directory
      diff --no-index: die on error reading stdin
      t4054: test diff --no-index with stdin
      diff --no-index: support reading from named pipes
      rebase --skip: fix commit message clean up when skipping squash
      t4053: avoid race when killing background processes

Ralf Thielow (1):
      l10n: Update German translation

René Scharfe (20):
      t1800: loosen matching of error message for bad shebang
      run-command: report exec error even on ENOENT
      ls-tree: fix documentation of %x format placeholder
      pretty: factor out expand_separator()
      strbuf: factor out strbuf_expand_step()
      replace strbuf_expand_dict_cb() with strbuf_expand_step()
      replace strbuf_expand() with strbuf_expand_step()
      strbuf: simplify strbuf_expand_literal_cb()
      ls-tree: simplify prefix handling
      pretty: avoid double negative in format_commit_item()
      pkt-line: add size parameter to packet_length()
      pretty: use strchr(3) in userformat_find_requirements()
      t6300: fix setup with GPGSSH but without GPG
      strbuf: use skip_prefix() in strbuf_addftime()
      ls-tree: fix --no-full-name
      describe: fix --no-exact-match
      pack-objects: fix --no-keep-true-parents
      pack-objects: fix --no-quiet
      bundle: use OPT_PASSTHRU_ARGV
      parse-options: disallow negating OPTION_SET_INT 0

Rubén Justo (11):
      config: fix a leak in git_config_copy_or_rename_section_in_file
      remote: fix a leak in query_matches_negative_refspec
      branch: fix a leak in dwim_and_setup_tracking
      branch: fix a leak in inherit_tracking
      branch: fix a leak in check_tracking_branch
      branch: fix a leak in setup_tracking
      rev-parse: fix a leak with --abbrev-ref
      branch: fix a leak in setup_tracking
      branch: fix a leak in cmd_branch
      config: fix a leak in git_config_copy_or_rename_section_in_file
      tests: mark as passing with SANITIZE=leak

Sean Allred (5):
      show-ref doc: update for internal consistency
      ls-remote doc: remove redundant --tags example
      ls-remote doc: show peeled tags in examples
      ls-remote doc: explain what each example does
      ls-remote doc: document the output format

Sebastian Thiel (1):
      mv: handle lstat() failure correctly

Shuqi Liang (2):
      diff-tree: integrate with sparse index
      worktree: integrate with sparse-index

Taylor Blau (53):
      object: add object_array initializer helper function
      pack-bitmap.c: extract `fill_in_bitmap()`
      pack-bitmap.c: use commit boundary during bitmap traversal
      builtin/submodule--helper.c: handle missing submodule URLs
      builtin/repack.c: only collect fully-formed packs
      reachable.c: extract `obj_is_recent()`
      gc: introduce `gc.recentObjectsHook`
      pack-bitmap.c: gracefully degrade on failure to load MIDX'd pack
      t7701: make annotated tag unreachable
      fsck: suppress commit-graph output with `--no-progress`
      fsck: suppress MIDX output with `--no-progress`
      commit-graph.c: extract `verify_one_commit_graph()`
      commit-graph.c: iteratively verify commit-graph chains
      commit-graph.c: pass progress to `verify_one_commit_graph()`
      commit-graph.c: avoid duplicated progress output during `verify`
      builtin/for-each-ref.c: add `--exclude` option
      refs: plumb `exclude_patterns` argument throughout
      refs/packed-backend.c: refactor `find_reference_location()`
      refs/packed-backend.c: implement jump lists to avoid excluded pattern(s)
      refs/packed-backend.c: add trace2 counters for jump list
      revision.h: store hidden refs in a `strvec`
      refs.h: let `for_each_namespaced_ref()` take excluded patterns
      refs.h: implement `hidden_refs_to_excludes()`
      builtin/receive-pack.c: avoid enumerating hidden references
      upload-pack.c: avoid enumerating hidden refs where possible
      ls-refs.c: avoid enumerating hidden refs where possible
      builtin/repack.c: avoid dir traversal in `collect_pack_filenames()`
      packfile.c: prevent overflow in `nth_packed_object_id()`
      packfile.c: prevent overflow in `load_idx()`
      packfile.c: use checked arithmetic in `nth_packed_object_offset()`
      midx.c: use `size_t`'s for fanout nr and alloc
      midx.c: prevent overflow in `nth_midxed_object_oid()`
      midx.c: prevent overflow in `nth_midxed_offset()`
      midx.c: store `nr`, `alloc` variables as `size_t`'s
      midx.c: prevent overflow in `write_midx_internal()`
      midx.c: prevent overflow in `fill_included_packs_batch()`
      pack-bitmap.c: ensure that eindex lookups don't overflow
      commit-graph.c: prevent overflow in `write_commit_graph_file()`
      commit-graph.c: prevent overflow in add_graph_to_chain()
      commit-graph.c: prevent overflow in `load_oid_from_graph()`
      commit-graph.c: prevent overflow in `fill_commit_graph_info()`
      commit-graph.c: prevent overflow in `fill_commit_in_graph()`
      commit-graph.c: prevent overflow in `load_tree_for_commit()`
      commit-graph.c: prevent overflow in `split_graph_merge_strategy()`
      commit-graph.c: prevent overflow in `merge_commit_graph()`
      commit-graph.c: prevent overflow in `write_commit_graph()`
      commit-graph.c: prevent overflow in `verify_commit_graph()`
      t/lib-commit-graph.sh: allow `graph_read_expect()` in sub-directories
      t/lib-commit-graph.sh: avoid directory change in `graph_git_behavior()`
      t5318: avoid top-level directory changes
      t5328: avoid top-level directory changes
      t/lib-commit-graph.sh: avoid sub-shell in `graph_git_behavior()`
      Documentation/RelNotes/2.42.0.txt: typofix

Teng Long (10):
      surround %s with quotes when failed to lookup commit
      notes.c: cleanup 'strbuf_grow' call in 'append_edit'
      notes.c: use designated initializers for clarity
      t3321: add test cases about the notes stripspace behavior
      notes.c: introduce '--separator=<paragraph-break>' option
      notes.c: append separator instead of insert by pos
      notes.c: introduce "--[no-]stripspace" option
      notes: introduce "--no-separator" option
      l10n: zh_CN: v2.42.0 round 1
      l10n: zh_CN: 2.42.0 round 2

Todd Zullinger (3):
      trace2 tests: fix PTHREADS prereq
      t/lib-gpg: fix ssh-keygen -Y check-novalidate with openssh-9.0
      t/lib-gpg: require GPGSSH for GPGSSH_VERIFYTIME prereq

Victoria Dye (3):
      config: use gitdir to get worktree config
      config: pass 'repo' directly to 'config_with_options()'
      repository: move 'repository_format_worktree_config' to repo scope

Vinayak Dev (1):
      docs: add necessary headers to Documentation/MFOW.txt

Yi-Jyun Pan (1):
      l10n: zh_TW.po: Git 2.42

ZheNing Hu (1):
      ls-files: align format atoms with ls-tree

brian m. carlson (9):
      t: add a function to check executable bit
      var: add support for listing the shell
      var: format variable structure with C99 initializers
      var: adjust memory allocation for strings
      attr: expose and rename accessor functions
      var: add attributes files locations
      var: add config file locations
      ident: don't consider '.' a crud
      gitignore: ignore clangd .cache directory


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.42.0-rc2
@ 2023-08-15 21:22  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-08-15 21:22 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.42.0-rc2 is now available for testing at
the usual places.  It is comprised of 435 non-merge commits since
v2.41.0, contributed by 67 people, 16 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.42.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.41.0 are as follows.
Welcome to the Git development community!

  Adam Majer, Andreas Herrmann, Greg Alexander, Han Young, Jacob
  Abel, Jan Klötzke, Jim Pryor, Johan Ruokangas, Josh Sref, Josip
  Sokcevic, Louis Strous, Petar Vutov, Premek Vysoky, Sebastian
  Thiel, Tribo Dar, and Vinayak Dev.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Alejandro R. Sedeño, Alex Henrie, Beat Bolli, brian m. carlson,
  Calvin Wan, Carlo Marcelo Arenas Belón, Christian Couder, D. Ben
  Knoble, Derrick Stolee, Elijah Newren, Eric Sunshine, Eric Wong,
  Glen Choo, Hariom Verma, Jacob Keller, Jaydeep Das, Jeff King,
  Johannes Schindelin, John Cai, Jonathan Nieder, Jonathan Tan,
  Junio C Hamano, Kousik Sanagavarapu, Kristoffer Haugsbakk, Linus
  Arver, Martin Ågren, Matthew Hughes, Matthias Aßhauer, M Hickford,
  Michael Haggerty, Mike Hommey, Nsengiyumva Wilberforce, Oswald
  Buddenhagen, Patrick Steinhardt, Philippe Blain, Phillip Wood,
  Randall S. Becker, René Scharfe, Rubén Justo, Sean Allred, Shuqi
  Liang, SZEDER Gábor, Taylor Blau, Teng Long, Todd Zullinger, Toon
  Claes, Torsten Bögershausen, Victoria Dye, Yuyi Wang, and ZheNing
  Hu.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.42 Release Notes (draft)
===============================

UI, Workflows & Features

 * "git pack-refs" learns "--include" and "--exclude" to tweak the ref
   hierarchy to be packed using pattern matching.

 * 'git worktree add' learned how to create a worktree based on an
   orphaned branch with `--orphan`.

 * "git pack-objects" learned to invoke a new hook program that
   enumerates extra objects to be used as anchoring points to keep
   otherwise unreachable objects in cruft packs.

 * Add more "git var" for toolsmiths to learn various locations Git is
   configured with either via the configuration or hardcoded defaults.

 * 'git notes append' was taught '--separator' to specify string to insert
   between paragraphs.

 * The "git for-each-ref" family of commands learned placeholders
   related to GPG signature verification.

 * "git diff --no-index" learned to read from named pipes as if they
   were regular files, to allow "git diff <(process) <(substitution)"
   some shells support.

 * Help newbies by suggesting that there are cases where force-pushing
   is a valid and sensible thing to update a branch at a remote
   repository, rather than reconciling with merge/rebase.

 * "git blame --contents=file" has been taught to work in a bare
   repository.

 * "git branch -f X" to repoint the branch X said that X was "checked
   out" in another worktree, even when branch X was not and instead
   being bisected or rebased.  The message was reworded to say the
   branch was "in use".

 * Tone down the warning on SHA-256 repositories being an experimental
   curiosity.  We do not have support for them to interoperate with
   traditional SHA-1 repositories, but at this point, we do not plan
   to make breaking changes to SHA-256 repositories and there is no
   longer need for such a strongly phrased warning.


Performance, Internal Implementation, Development Support etc.

 * "git diff-tree" has been taught to take advantage of the
   sparse-index feature.

 * Clang's sanitizer implementation seems to work better than GCC's.
   (merge d88d727143 jk/ci-use-clang-for-sanitizer-jobs later to maint).

 * The object traversal using reachability bitmap done by
   "pack-object" has been tweaked to take advantage of the fact that
   using "boundary" commits as representative of all the uninteresting
   ones can save quite a lot of object enumeration.

 * discover_git_directory() no longer touches the_repository.

 * "git worktree" learned to work better with sparse index feature.

 * When the external merge driver is killed by a signal, its output
   should not be trusted as a resolution with conflicts that is
   proposed by the driver, but the code did.

 * The set-up code for the get_revision() API now allows feeding
   options like --all and --not in the --stdin mode.

 * Move functions that are not about pure string manipulation out of
   strbuf.[ch]

 * "imap-send" codepaths got cleaned up to get rid of unused
   parameters.

 * Enumerating refs in the packed-refs file, while excluding refs that
   match certain patterns, has been optimized.

 * Mark-up unused parameters in the code so that we can eventually
   enable -Wunused-parameter by default.

 * Instead of inventing a custom counter variables for debugging,
   use existing trace2 facility in the fsync customization codepath.

 * "git branch --list --format=<format>" and friends are taught
   a new "%(describe)" placeholder.

 * Clarify how to choose the starting point for a new topic in
   developer guidance document.

 * The implementation of "get_sha1_hex()" that reads a hexadecimal
   string that spells a full object name has been extended to cope
   with any hash function used in the repository, but the "sha1" in
   its name survived.  Rename it to get_hash_hex(), a name that is
   more consistent within its friends like get_hash_hex_algop().

 * Command line parser fix, and a small parse-options API update.


Fixes since v2.41
-----------------

 * "git tag" learned to leave the "$GIT_DIR/TAG_EDITMSG" file when the
   command failed, so that the user can salvage what they typed.
   (merge 08c12ec1d0 kh/keep-tag-editmsg-upon-failure later to maint).

 * The "-s" (silent, squelch) option of the "diff" family of commands
   did not interact with other options that specify the output format
   well.  This has been cleaned up so that it will clear all the
   formatting options given before.
   (merge 9d484b92ed jc/diff-s-with-other-options later to maint).

 * Update documentation regarding Coccinelle patches.
   (merge 3bd0097cfc gc/doc-cocci-updates later to maint).

 * Some atoms that can be used in "--format=<format>" for "git ls-tree"
   were not supported by "git ls-files", even though they were relevant
   in the context of the latter.
   (merge 4d28c4f75f zh/ls-files-format-atoms later to maint).

 * Document more pseudo-refs and teach the command line completion
   machinery to complete AUTO_MERGE.
   (merge 982ff3a649 pb/complete-and-document-auto-merge-and-friends later to maint).

 * "git submodule" code trusted the data coming from the config (and
   the in-tree .gitmodules file) too much without validating, leading
   to NULL dereference if the user mucks with a repository (e.g.
   submodule.<name>.url is removed).  This has been corrected.
   (merge fbc806acd1 tb/submodule-null-deref-fix later to maint).

 * The value of config.worktree is per-repository, but has been kept
   in a singleton global variable per process. This has been OK as
   most Git operations interacted with a single repository at a time,
   but not right for operations like recursive "grep" that want to
   access multiple repositories from a single process without forking.

   The global variable has been eliminated and made into a member in
   the per-repository data structure.
   (merge 3867f6d650 vd/worktree-config-is-per-repository later to maint).

 * "git [-c log.follow=true] log [--follow] ':(glob)f**'" used to barf.
   (merge 8260bc5902 jk/log-follow-with-non-literal-pathspec later to maint).

 * Introduce a mechanism to disable replace refs globally and per
   repository.
   (merge 9c7d1b057f ds/disable-replace-refs later to maint).

 * "git cat-file --batch" and friends learned "-Z" that uses NUL
   delimiter for both input and output.
   (merge f79e18849b ps/cat-file-null-output later to maint).

 * The reimplemented "git add -i" did not honor color.ui configuration.
   (merge 6f74648cea ds/add-i-color-configuration-fix later to maint).

 * Compilation fix for platforms without D_TYPE in struct dirent.
   (merge 03bf92b9bf as/dtype-compilation-fix later to maint).

 * Suggest to refrain from using hex literals that are non-portable
   when writing printf(1) format strings.
   (merge f0b68f0546 jt/doc-use-octal-with-printf later to maint).

 * Simplify error message when run-command fails to start a command.
   (merge 6d224ac286 rs/run-command-exec-error-on-noent later to maint).

 * Gracefully deal with a stale MIDX file that lists a packfile that
   no longer exists.
   (merge 06f3867865 tb/open-midx-bitmap-fallback later to maint).

 * Even when diff.ignoreSubmodules tells us to ignore submodule
   changes, "git commit" with an index that already records changes to
   submodules should include the submodule changes in the resulting
   commit, but it did not.
   (merge 5768478edc js/defeat-ignore-submodules-config-with-explicit-addition later to maint).

 * When "git commit --trailer=..." invokes the interpret-trailers
   machinery, it knows what it feeds to interpret-trailers is a full
   log message without any patch, but failed to express that by
   passing the "--no-divider" option, which has been corrected.
   (merge be3d654343 jk/commit-use-no-divider-with-interpret-trailers later to maint).

 * Avoid breakage of "git pack-objects --cruft" due to inconsistency
   between the way the code enumerates packfiles in the repository.
   (merge 73320e49ad tb/collect-pack-filenames-fix later to maint).

 * We create .pack and then .idx, we consider only packfiles that have
   .idx usable (those with only .pack are not ready yet), so we should
   remove .idx before removing .pack for consistency.
   (merge 0dd1324a73 ds/remove-idx-before-pack later to maint).

 * Partially revert a sanity check that the rest of the config code
   was not ready, to avoid triggering it in a corner case.
   (merge a53f43f900 gc/config-partial-submodule-kvi-fix later to maint).

 * "git apply" punts when it is fed too large a patch input; the error
   message it gives when it happens has been clarified.
   (merge 42612e18d2 pw/apply-too-large later to maint).

 * During a cherry-pick or revert session that works on multiple
   commits, "git status" did not give correct information, which has
   been corrected.
   (merge a096a889f4 jk/cherry-pick-revert-status later to maint).

 * A few places failed to differentiate the case where the index is
   truly empty (nothing added) and we haven't yet read from the
   on-disk index file, which have been corrected.
   (merge 2ee045eea1 js/empty-index-fixes later to maint).

 * "git bugreport" tests did not test what it wanted to test, which
   has been corrected.
   (merge 1aa92b8500 ma/t0091-fixup later to maint).

 * Code snippets in a tutorial document no longer compiled after
   recent header shuffling, which have been corrected.
   (merge bbd7c7b7c0 vd/adjust-mfow-doc-to-updated-headers later to maint).

 * "git ls-files '(attr:X)D/'" that triggers the common prefix
   optimization codepath failed to read from "D/.gitattributes",
   which has been corrected.
   (merge f4a8fde057 jc/pathspec-match-with-common-prefix later to maint).

 * "git fsck --no-progress" still spewed noise from the commit-graph
   subsystem, which has been corrected.
   (merge 9281cd07f0 tb/fsck-no-progress later to maint).

 * Various offset computation in the code that accesses the packfiles
   and other data in the object layer has been hardened against
   arithmetic overflow, especially on 32-bit systems.
   (merge 9a25cad7e0 tb/object-access-overflow-protection later to maint).

 * Names of MinGW header files are spelled in mixed case in some
   source files, but the build host can be using case sensitive
   filesystem with header files with their name spelled in all
   lowercase.
   (merge 4a53d0d0bc mh/mingw-case-sensitive-build later to maint).

 * Update message mark-up for i18n in "git bundle".
   (merge bbb6acd998 dk/bundle-i18n-more later to maint).

 * "git tag --list --points-at X" showed tags that directly refers to
   object X, but did not list a tag that points at such a tag, which
   has been corrected.

 * "./configure --with-expat=no" did not work as a way to refuse use
   of the expat library on a system with the library installed, which
   has been corrected.
   (merge fb8f7269c2 ah/autoconf-fixes later to maint).

 * When the user edits "rebase -i" todo file so that it starts with a
   "fixup", which would make it invalid, the command truncated the
   rest of the file before giving an error and returning the control
   back to the user.  Stop truncating to make it easier to correct
   such a malformed todo file.
   (merge 9645a087c2 ah/sequencer-rewrite-todo-fix later to maint).

 * Rewrite the description of giving a custom command to the
   submodule.<name>.update configuration variable.
   (merge 7cebc5bd78 pv/doc-submodule-update-settings later to maint).

 * Adjust to OpenSSL 3+, which deprecates its SHA-1 functions based on
   its traditional API, by using its EVP API instead.
   (merge bda9c12073 ew/hash-with-openssl-evp later to maint).

 * Exclude "." from the set of characters to be removed from the
   beginning and the end of the human-readable name.
   (merge 1c04cb0744 bc/ident-dot-is-no-longer-crud-letter later to maint).

 * "git bisect visualize" stopped running "gitk" on Git for Windows
   when the command was reimplemented in C around Git 2.34 timeframe.
   This has been corrected.
   (merge fff1594fa7 ma/locate-in-path-for-windows later to maint).

 * "git rebase -i" with a series of squash/fixup, when one of the
   steps stopped in conflicts and ended up getting skipped, did not
   handle the accumulated commit log messages, which has been
   corrected.
   (merge 6ce7afe163 pw/rebase-skip-commit-message-fix later to maint).

 * Adjust to newer Term::ReadLine to prevent it from breaking
   the interactive prompt code in send-email.
   (merge c016726c2d jk/send-email-with-new-readline later to maint).

 * Windows updates.
   (merge 0050f8e401 ds/maintenance-on-windows-fix later to maint).

 * Correct use of lstat() that assumed a failing call would not
   clobber the statbuf.
   (merge 72695d8214 st/mv-lstat-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 51f9d2e563 sa/doc-ls-remote later to maint).
   (merge c6d26a9dda jk/format-patch-message-id-unleak later to maint).
   (merge f7e063f326 ps/fetch-cleanups later to maint).
   (merge e4cf013468 tl/quote-problematic-arg-for-clarity later to maint).
   (merge 20025fdfc7 tz/test-ssh-verifytime-fix later to maint).
   (merge e48a21df65 tz/test-fix-pthreads-prereq later to maint).
   (merge 68b51172e3 mh/commit-reach-get-reachable-plug-leak later to maint).
   (merge aeee1408ce kh/use-default-notes-doc later to maint).
   (merge 3b8724bce6 jc/test-modernization later to maint).
   (merge 447a3b7331 jc/test-modernization-2 later to maint).
   (merge d57fa7fc73 la/doc-interpret-trailers later to maint).
   (merge 548afb0d9a la/docs-typofixes later to maint).
   (merge 3744ffcbcd rs/doc-ls-tree-hex-literal later to maint).
   (merge 6c26da8404 mh/credential-erase-improvements later to maint).
   (merge 78e56cff69 tz/lib-gpg-prereq-fix later to maint).
   (merge 80d32e84b5 rj/leakfixes later to maint).
   (merge 0a868031ed pb/complete-diff-options later to maint).
   (merge d4f28279ad jc/doc-hash-object-types later to maint).
   (merge 1876a5ae15 ks/t4205-test-describe-with-abbrev-fix later to maint).
   (merge 6e6a529b57 jk/fsck-indices-in-worktrees later to maint).
   (merge 3e81b896f7 rs/packet-length-simplify later to maint).
   (merge 4c9cb51fe7 mh/doc-credential-helpers later to maint).
   (merge 3437f549dd jr/gitignore-doc-example-markup later to maint).
   (merge 947ebd62a0 jc/am-parseopt-fix later to maint).
   (merge e12cb98e1e jc/branch-parseopt-fix later to maint).
   (merge d6f598e443 jc/gitignore-doc-pattern-markup later to maint).
   (merge a2dad4868b jc/transport-parseopt-fix later to maint).
   (merge 68cbb20e73 jc/parse-options-show-branch later to maint).
   (merge 3821eb6c3d jc/parse-options-reset later to maint).
   (merge c48af99a3e bb/trace2-comment-fix later to maint).
   (merge c95ae3ff9c rs/describe-parseopt-fix later to maint).
   (merge 36f76d2a25 rs/pack-objects-parseopt-fix later to maint).
   (merge 30c8c55cbf jc/tree-walk-drop-base-offset later to maint).
   (merge d089a06421 rs/bundle-parseopt-cleanup later to maint).
   (merge 823839bda1 ew/sha256-gcrypt-leak-fixes later to maint).
   (merge a5c01603b3 bc/ignore-clangd-cache later to maint).
   (merge 12009a182b js/allow-t4000-to-be-indented-with-spaces later to maint).
   (merge b3dcd24b8a jc/send-email-pre-process-fix later to maint).

----------------------------------------------------------------

Changes since v2.41.0 are as follows:

Adam Majer (1):
      doc: sha256 is no longer experimental

Alejandro R. Sedeño (1):
      statinfo.h: move DTYPE defines from dir.h

Alex Henrie (4):
      wt-status: don't show divergence advice when committing
      remote: don't imply that integration is always required before pushing
      push: don't imply that integration is always required before pushing
      sequencer: finish parsing the todo list despite an invalid first line

Andreas Herrmann (3):
      configure.ac: don't overwrite NO_EXPAT option
      configure.ac: don't overwrite NO_CURL option
      configure.ac: always save NO_ICONV to config.status

Beat Bolli (2):
      trace2: fix a comment
      wrapper: use trace2 counters to collect fsync stats

Calvin Wan (13):
      strbuf: clarify API boundary
      strbuf: clarify dependency
      abspath: move related functions to abspath
      credential-store: move related functions to credential-store file
      object-name: move related functions to object-name
      path: move related function to path
      strbuf: remove global variable
      git-compat-util: move strbuf.c funcs to its header
      git-compat-util: move wrapper.c funcs to its header
      sane-ctype.h: create header for sane-ctype macros
      kwset: move translation table from ctype
      treewide: remove unnecessary includes for wrapper.h
      git-compat-util: move alloc macros to git-compat-util.h

D. Ben Knoble (2):
      i18n: mark more bundle.c strings for translation
      t4002: fix "diff can read from stdin" syntax

Derrick Stolee (7):
      add: check color.ui for interactive add
      add: test use of brackets when color is disabled
      repository: create disable_replace_refs()
      replace-objects: create wrapper around setting
      repository: create read_replace_refs setting
      packfile: delete .idx files before .pack files
      builtin/repack.c: only repack `.pack`s that exist

Elijah Newren (28):
      init-db: document existing bug with core.bare in template config
      init-db: remove unnecessary global variable
      init-db, clone: change unnecessary global into passed parameter
      setup: adopt shared init-db & clone code
      read-cache: move shared commit and ls-files code
      add: modify add_files_to_cache() to avoid globals
      read-cache: move shared add/checkout/commit code
      statinfo: move stat_{data,validity} functions from cache/read-cache
      run-command.h: move declarations for run-command.c from cache.h
      name-hash.h: move declarations for name-hash.c from cache.h
      sparse-index.h: move declarations for sparse-index.c from cache.h
      preload-index.h: move declarations for preload-index.c from elsewhere
      diff.h: move declaration for global in diff.c from cache.h
      merge.h: move declarations for merge.c from cache.h
      repository.h: move declaration of the_index from cache.h
      read-cache*.h: move declarations for read-cache.c functions from cache.h
      cache.h: remove this no-longer-used header
      log-tree: replace include of revision.h with simple forward declaration
      repository: remove unnecessary include of path.h
      diff.h: remove unnecessary include of oidset.h
      list-objects-filter-options.h: remove unneccessary include
      builtin.h: remove unneccessary includes
      git-compat-util.h: remove unneccessary include of wildmatch.h
      merge-ll: rename from ll-merge
      khash: name the structs that khash declares
      object-store-ll.h: split this header out of object-store.h
      hash-ll, hashmap: move oidhash() to hash-ll
      fsmonitor-ll.h: split this header out of fsmonitor.h

Eric Sunshine (1):
      fsck: avoid misleading variable name

Eric Wong (5):
      sha256/gcrypt: fix build with SANITIZE=leak
      sha256/gcrypt: fix memory leak with SHA-256 repos
      sha256/gcrypt: die on gcry_md_open failures
      sha256: avoid functions deprecated in OpenSSL 3+
      avoid SHA-1 functions deprecated in OpenSSL 3+

Glen Choo (16):
      cocci: add headings to and reword README
      cocci: codify authoring and reviewing practices
      setup.c: don't setup in discover_git_directory()
      config: don't BUG when both kvi and source are set
      config: inline git_color_default_config
      urlmatch.h: use config_fn_t type
      config: add ctx arg to config_fn_t
      config.c: pass ctx in configsets
      config: pass ctx with config files
      config.c: pass ctx with CLI config
      trace2: plumb config kvi
      config: pass kvi to die_bad_number()
      config.c: remove config_reader from configsets
      config: add kvi.path, use it to evaluate includes
      config: pass source to config_parser_event_fn_t
      mailmap: change primary address for Glen Choo

Han Young (1):
      blame: allow --contents to work with bare repo

Jacob Abel (11):
      worktree add: include -B in usage docs
      t2400: cleanup created worktree in test
      t2400: refactor "worktree add" opt exclusion tests
      t2400: add tests to verify --quiet
      worktree add: add --orphan flag
      worktree add: introduce "try --orphan" hint
      worktree add: extend DWIM to infer --orphan
      worktree add: emit warn when there is a bad HEAD
      t2400: drop no-op `--sq` from rev-parse call
      builtin/worktree.c: convert tab in advice to space
      t2400: rewrite regex to avoid unintentional PCRE

Jacob Keller (1):
      fix cherry-pick/revert status when doing multiple commits

Jan Klötzke (1):
      ref-filter: handle nested tags in --points-at option

Jeff King (40):
      format-patch: free rev.message_id when exiting
      format-patch: free elements of rev.ref_message_ids list
      pathspec: factor out magic-to-name function
      diff: factor out --follow pathspec check
      diff: detect pathspec magic not supported by --follow
      ci: use clang for ASan/UBSan checks
      ci: run ASan/UBSan in a single job
      ci: drop linux-clang job
      commit: pass --no-divider to interpret-trailers
      http: handle both "h2" and "h2h3" in curl info lines
      var: mark unused parameters in git_var callbacks
      imap-send: use server conf argument in setup_curl()
      imap-send: drop unused parameter from imap_cmd_cb callback
      imap-send: drop unused fields from imap_cmd_cb
      refs.c: rename `ref_filter`
      ref-filter.h: provide `REF_FILTER_INIT`
      ref-filter: clear reachable list pointers after freeing
      ref-filter: add `ref_filter_clear()`
      ref-filter.c: parameterize match functions over patterns
      test-ref-store: drop unimplemented reflog-expire command
      do_for_each_ref_helper(): mark unused repository parameter
      http: mark unused parameters in curl callbacks
      http-push: mark unused parameter in xml callback
      am: mark unused keep_cr parameters
      count-objects: mark unused parameter in alternates callback
      revisions: drop unused "opt" parameter in "tweak" callbacks
      fsck: mark unused parameters in various fsck callbacks
      merge-tree: mark unused parameter in traverse callback
      replace: mark unused parameter in ref callback
      replace: mark unused parameter in each_mergetag_fn callback
      rev-parse: mark unused parameter in for_each_abbrev callback
      tag: mark unused parameters in each_tag_name_fn callbacks
      t/helper: mark unused callback void data parameters
      ref-filter: avoid parsing tagged objects in match_points_at()
      ref-filter: avoid parsing non-tags in match_points_at()
      ref-filter: simplify return type of match_points_at
      send-email: drop FakeTerm hack
      send-email: avoid creating more than one Term::ReadLine object
      repack: free geometry struct
      t4053: avoid writing to unopened pipe

Johan Ruokangas (1):
      gitignore.txt: use backticks instead of double quotes

Johannes Schindelin (6):
      do_read_index(): always mark index as initialized unless erroring out
      split-index: accept that a base index can be empty
      commit -a -m: allow the top-level tree to become empty again
      t0040: declare non-tab indentation to be okay in this script
      win32: add a helper to run `git.exe` without a foreground window
      git maintenance: avoid console window in scheduled tasks on Windows

John Cai (34):
      docs: clarify git-pack-refs --all will pack all refs
      pack-refs: teach --exclude option to exclude refs from being packed
      pack-refs: teach pack-refs --include option
      t0000-basic: modernize test format
      t0030-stripspace: modernize test format
      t3210-pack-refs: modernize test format
      t1001-read-tree-m-2way: modernize test format
      t1002-read-tree-m-u-2way: modernize test format
      t1006-cat-file: modernize test format
      t3500-cherry: modernize test format
      t3700-add: modernize test format
      t3903-stash: modernize test format
      t4002-diff-basic: modernize test format
      t4003-diff-rename-1: modernize test format
      t4004-diff-rename-symlink: modernize test format
      t4202-log: modernize test format
      t4206-log-follow-harder-copies: modernize test format
      t5300-pack-object: modernize test format
      t5301-sliding-window: modernize test format
      t5303-pack-corruption-resilience: modernize test format
      t5306-pack-nobase: modernize test format
      t6050-replace: modernize test format
      t7101-reset-empty-subdirs: modernize test format
      t7110-reset-merge: modernize test format
      t7111-reset-table: modernize test format
      t7201-co: modernize test format
      t7508-status: modernize test format
      t7600-merge: modernize test format
      t7700-repack: modernize test format
      t9100-git-svn-basic: modernize test format
      t9104-git-svn-follow-parent: modernize test format
      t9200-git-cvsexportcommit: modernize test format
      t9400-git-cvsserver-server: modernize test format
      docs: add git hash-object -t option's possible values

Jonathan Tan (1):
      CodingGuidelines: use octal escapes, not hex

Josip Sokcevic (1):
      diff-lib: honor override_submodule_config flag bit

Junio C Hamano (47):
      diff: fix interaction between the "-s" option and other options
      show-branch doc: say <ref>, not <reference>
      Start the 2.42 cycle
      The second batch for 2.42
      The third batch
      ll-merge: killing the external merge driver aborts the merge
      The fourth batch
      t6406: skip "external merge driver getting killed by a signal" test on Windows
      The fifth batch
      The sixth batch
      The seventh batch
      The eighth batch
      t6135: attr magic with path pattern
      tree-walk: lose base_offset that is never used in tree_entry_interesting
      tree-walk: drop unused base_offset from do_match()
      The ninth batch
      dir: match "attr" pathspec magic with correct paths
      The tenth batch
      The eleventh batch
      The twelfth batch
      gitignore.txt: mark up explanation of patterns consistently
      am: simplify parsing of "--[no-]keep-cr"
      branch: reject "--no-all" and "--no-remotes" early
      parse-options: introduce OPT_IPVERSION()
      fetch: reject --no-ipv[46]
      show-branch: --no-sparse should give dense output
      short help: allow multi-line opthelp
      remote: simplify "remote add --tags" help text
      short help: allow a gap smaller than USAGE_GAP
      show-branch: reject --[no-](topo|date)-order
      reset: reject --no-(mixed|soft|hard|merge|keep) option
      The thirteenth batch
      branch: update the message to refuse touching a branch in-use
      hex: retire get_sha1_hex()
      The fourteenth batch
      SubmittingPatches: choice of base for fixing an older maintenance track
      The fifteenth batch
      SubmittingPatches: explain why 'next' and above are inappropriate base
      SubmittingPatches: use of older maintenance tracks is an exception
      The sixteenth batch
      MyFirstContribution: refrain from self-iterating too much
      The seventeenth batch
      The eighteenth batch
      Git 2.42-rc0
      A few more topics before -rc1
      Git 2.42-rc1
      Git 2.42-rc2

Kousik Sanagavarapu (5):
      t/lib-gpg: introduce new prereq GPG2
      ref-filter: add new "signature" atom
      t4205: correctly test %(describe:abbrev=...)
      ref-filter: add multiple-option parsing functions
      ref-filter: add new "describe" atom

Kristoffer Haugsbakk (5):
      doc: tag: document `TAG_EDITMSG`
      t/t7004-tag: add regression test for successful tag creation
      tag: keep the message file in case ref transaction fails
      notes: update documentation for `use_default_notes`
      notes: move the documentation to the struct

Linus Arver (15):
      docs: typofixes
      doc: trailer: fix grammar
      doc: trailer: swap verb order
      doc: trailer: drop "commit message part" phrasing
      doc: trailer: examples: avoid the word "message" by itself
      doc: trailer: remove redundant phrasing
      doc: trailer: use angle brackets for <token> and <value>
      doc: trailer.<token>.command: emphasize deprecation
      doc: trailer: mention 'key' in DESCRIPTION
      doc: trailer: add more examples in DESCRIPTION
      SubmittingPatches: reword awkward phrasing
      SubmittingPatches: discuss subsystems separately from git.git
      SubmittingPatches: de-emphasize branches as starting points
      SubmittingPatches: emphasize need to communicate non-default starting points
      SubmittingPatches: simplify guidance for choosing a starting point

M Hickford (3):
      credential: avoid erasing distinct password
      credential: erase all matching credentials
      doc: gitcredentials: link to helper list

Martin Ågren (1):
      t0091-bugreport.sh: actually verify some content of report

Matthias Aßhauer (3):
      run-command: conditionally define locate_in_PATH()
      compat/mingw: implement a native locate_in_PATH()
      docs: update when `git bisect visualize` uses `gitk`

Mike Hommey (2):
      commit-reach: fix memory leak in get_reachable_subset()
      mingw: use lowercase includes for some Windows headers

Oswald Buddenhagen (2):
      advice: handle "rebase" in error_resolve_conflict()
      t9001: remove excessive GIT_SEND_EMAIL_NOTTY=1

Patrick Steinhardt (17):
      fetch: drop unused DISPLAY_FORMAT_UNKNOWN enum value
      fetch: drop unneeded NULL-check for `remote_ref`
      fetch: pass through `fetch_config` directly
      fetch: use `fetch_config` to store "fetch.prune" value
      fetch: use `fetch_config` to store "fetch.pruneTags" value
      fetch: use `fetch_config` to store "fetch.showForcedUpdates" value
      fetch: use `fetch_config` to store "fetch.recurseSubmodules" value
      fetch: use `fetch_config` to store "fetch.parallel" value
      fetch: use `fetch_config` to store "submodule.fetchJobs" value
      t1006: don't strip timestamps from expected results
      t1006: modernize test style to use `test_cmp`
      strbuf: provide CRLF-aware helper to read until a specified delimiter
      cat-file: simplify reading from standard input
      cat-file: add option '-Z' that delimits input and output with NUL
      revision: reorder `read_revisions_from_stdin()`
      revision: small readability improvement for reading from stdin
      revision: handle pseudo-opts in `--stdin` mode

Petar Vutov (1):
      doc: highlight that .gitmodules does not support !command

Philippe Blain (30):
      revisions.txt: use description list for special refs
      revisions.txt: document more special refs
      completion: complete REVERT_HEAD and BISECT_HEAD
      git-merge.txt: modernize word choice in "True merge" section
      Documentation: document AUTO_MERGE
      completion: complete AUTO_MERGE
      completion: add comments describing __git_diff_* globals
      completion: complete --break-rewrites
      completion: complete --cc
      completion: complete --combined-all-paths
      completion: complete --compact-summary
      completion: complete --default-prefix
      completion: complete --find-copies
      completion: complete --find-object
      completion: complete --find-renames
      completion: complete --function-context
      completion: complete --ignore-matching-lines
      completion: complete --irreversible-delete
      completion: complete --ita-invisible-in-index and --ita-visible-in-index
      completion: complete --line-prefix
      completion: complete --no-relative
      completion: complete --no-stat
      completion: complete --output
      completion: complete --output-indicator-{context,new,old}
      completion: complete --unified
      completion: complete --ws-error-highlight
      completion: move --pickaxe-{all,regex} to __git_diff_common_options
      completion: complete --diff-merges, its options and --no-diff-merges
      completion: complete --remerge-diff
      diff.c: mention completion above add_diff_options

Phillip Wood (7):
      apply: improve error messages when reading patch
      diff --no-index: refuse to compare stdin to a directory
      diff --no-index: die on error reading stdin
      t4054: test diff --no-index with stdin
      diff --no-index: support reading from named pipes
      rebase --skip: fix commit message clean up when skipping squash
      t4053: avoid race when killing background processes

René Scharfe (20):
      t1800: loosen matching of error message for bad shebang
      run-command: report exec error even on ENOENT
      ls-tree: fix documentation of %x format placeholder
      pretty: factor out expand_separator()
      strbuf: factor out strbuf_expand_step()
      replace strbuf_expand_dict_cb() with strbuf_expand_step()
      replace strbuf_expand() with strbuf_expand_step()
      strbuf: simplify strbuf_expand_literal_cb()
      ls-tree: simplify prefix handling
      pretty: avoid double negative in format_commit_item()
      pkt-line: add size parameter to packet_length()
      pretty: use strchr(3) in userformat_find_requirements()
      t6300: fix setup with GPGSSH but without GPG
      strbuf: use skip_prefix() in strbuf_addftime()
      ls-tree: fix --no-full-name
      describe: fix --no-exact-match
      pack-objects: fix --no-keep-true-parents
      pack-objects: fix --no-quiet
      bundle: use OPT_PASSTHRU_ARGV
      parse-options: disallow negating OPTION_SET_INT 0

Rubén Justo (11):
      config: fix a leak in git_config_copy_or_rename_section_in_file
      remote: fix a leak in query_matches_negative_refspec
      branch: fix a leak in dwim_and_setup_tracking
      branch: fix a leak in inherit_tracking
      branch: fix a leak in check_tracking_branch
      branch: fix a leak in setup_tracking
      rev-parse: fix a leak with --abbrev-ref
      branch: fix a leak in setup_tracking
      branch: fix a leak in cmd_branch
      config: fix a leak in git_config_copy_or_rename_section_in_file
      tests: mark as passing with SANITIZE=leak

Sean Allred (5):
      show-ref doc: update for internal consistency
      ls-remote doc: remove redundant --tags example
      ls-remote doc: show peeled tags in examples
      ls-remote doc: explain what each example does
      ls-remote doc: document the output format

Sebastian Thiel (1):
      mv: handle lstat() failure correctly

Shuqi Liang (2):
      diff-tree: integrate with sparse index
      worktree: integrate with sparse-index

Taylor Blau (53):
      object: add object_array initializer helper function
      pack-bitmap.c: extract `fill_in_bitmap()`
      pack-bitmap.c: use commit boundary during bitmap traversal
      builtin/submodule--helper.c: handle missing submodule URLs
      builtin/repack.c: only collect fully-formed packs
      reachable.c: extract `obj_is_recent()`
      gc: introduce `gc.recentObjectsHook`
      pack-bitmap.c: gracefully degrade on failure to load MIDX'd pack
      t7701: make annotated tag unreachable
      fsck: suppress commit-graph output with `--no-progress`
      fsck: suppress MIDX output with `--no-progress`
      commit-graph.c: extract `verify_one_commit_graph()`
      commit-graph.c: iteratively verify commit-graph chains
      commit-graph.c: pass progress to `verify_one_commit_graph()`
      commit-graph.c: avoid duplicated progress output during `verify`
      builtin/for-each-ref.c: add `--exclude` option
      refs: plumb `exclude_patterns` argument throughout
      refs/packed-backend.c: refactor `find_reference_location()`
      refs/packed-backend.c: implement jump lists to avoid excluded pattern(s)
      refs/packed-backend.c: add trace2 counters for jump list
      revision.h: store hidden refs in a `strvec`
      refs.h: let `for_each_namespaced_ref()` take excluded patterns
      refs.h: implement `hidden_refs_to_excludes()`
      builtin/receive-pack.c: avoid enumerating hidden references
      upload-pack.c: avoid enumerating hidden refs where possible
      ls-refs.c: avoid enumerating hidden refs where possible
      builtin/repack.c: avoid dir traversal in `collect_pack_filenames()`
      packfile.c: prevent overflow in `nth_packed_object_id()`
      packfile.c: prevent overflow in `load_idx()`
      packfile.c: use checked arithmetic in `nth_packed_object_offset()`
      midx.c: use `size_t`'s for fanout nr and alloc
      midx.c: prevent overflow in `nth_midxed_object_oid()`
      midx.c: prevent overflow in `nth_midxed_offset()`
      midx.c: store `nr`, `alloc` variables as `size_t`'s
      midx.c: prevent overflow in `write_midx_internal()`
      midx.c: prevent overflow in `fill_included_packs_batch()`
      pack-bitmap.c: ensure that eindex lookups don't overflow
      commit-graph.c: prevent overflow in `write_commit_graph_file()`
      commit-graph.c: prevent overflow in add_graph_to_chain()
      commit-graph.c: prevent overflow in `load_oid_from_graph()`
      commit-graph.c: prevent overflow in `fill_commit_graph_info()`
      commit-graph.c: prevent overflow in `fill_commit_in_graph()`
      commit-graph.c: prevent overflow in `load_tree_for_commit()`
      commit-graph.c: prevent overflow in `split_graph_merge_strategy()`
      commit-graph.c: prevent overflow in `merge_commit_graph()`
      commit-graph.c: prevent overflow in `write_commit_graph()`
      commit-graph.c: prevent overflow in `verify_commit_graph()`
      t/lib-commit-graph.sh: allow `graph_read_expect()` in sub-directories
      t/lib-commit-graph.sh: avoid directory change in `graph_git_behavior()`
      t5318: avoid top-level directory changes
      t5328: avoid top-level directory changes
      t/lib-commit-graph.sh: avoid sub-shell in `graph_git_behavior()`
      Documentation/RelNotes/2.42.0.txt: typofix

Teng Long (8):
      surround %s with quotes when failed to lookup commit
      notes.c: cleanup 'strbuf_grow' call in 'append_edit'
      notes.c: use designated initializers for clarity
      t3321: add test cases about the notes stripspace behavior
      notes.c: introduce '--separator=<paragraph-break>' option
      notes.c: append separator instead of insert by pos
      notes.c: introduce "--[no-]stripspace" option
      notes: introduce "--no-separator" option

Todd Zullinger (3):
      trace2 tests: fix PTHREADS prereq
      t/lib-gpg: fix ssh-keygen -Y check-novalidate with openssh-9.0
      t/lib-gpg: require GPGSSH for GPGSSH_VERIFYTIME prereq

Victoria Dye (3):
      config: use gitdir to get worktree config
      config: pass 'repo' directly to 'config_with_options()'
      repository: move 'repository_format_worktree_config' to repo scope

Vinayak Dev (1):
      docs: add necessary headers to Documentation/MFOW.txt

ZheNing Hu (1):
      ls-files: align format atoms with ls-tree

brian m. carlson (9):
      t: add a function to check executable bit
      var: add support for listing the shell
      var: format variable structure with C99 initializers
      var: adjust memory allocation for strings
      attr: expose and rename accessor functions
      var: add attributes files locations
      var: add config file locations
      ident: don't consider '.' a crud
      gitignore: ignore clangd .cache directory


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.42.0-rc1
@ 2023-08-10 16:45  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-08-10 16:45 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.42.0-rc1 is now available for testing at
the usual places.  It is comprised of 422 non-merge commits since
v2.41.0, contributed by 63 people, 15 of which are new faces [*].

There are still some corners to be rounded before everything is
ready to go, but I've already extended -rc1 by a day, so let's not
wait for the regression fixes we already know of but haven't got
around to.  They will be in 'master' before -rc2 is tagged.  On the
other hand, changes that are not about fixing new regressions
introduced during this cycle are to be postponed until the next
cycle.

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.42.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.41.0 are as follows.
Welcome to the Git development community!

  Adam Majer, Andreas Herrmann, Greg Alexander, Han Young, Jacob
  Abel, Jan Klötzke, Jim Pryor, Johan Ruokangas, Josh Sref,
  Josip Sokcevic, Louis Strous, Petar Vutov, Premek Vysoky,
  Tribo Dar, and Vinayak Dev.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Alejandro R. Sedeño, Alex Henrie, Beat Bolli, brian m. carlson,
  Calvin Wan, Christian Couder, D. Ben Knoble, Derrick Stolee,
  Elijah Newren, Eric Sunshine, Eric Wong, Glen Choo, Hariom Verma,
  Jacob Keller, Jaydeep Das, Jeff King, Johannes Schindelin, John
  Cai, Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kousik
  Sanagavarapu, Kristoffer Haugsbakk, Linus Arver, Martin Ågren,
  Matthew Hughes, Matthias Aßhauer, M Hickford, Michael Haggerty,
  Mike Hommey, Nsengiyumva Wilberforce, Patrick Steinhardt, Philippe
  Blain, Phillip Wood, Randall S. Becker, René Scharfe, Rubén Justo,
  Sean Allred, Shuqi Liang, SZEDER Gábor, Taylor Blau, Teng Long,
  Todd Zullinger, Toon Claes, Torsten Bögershausen, Victoria Dye,
  and ZheNing Hu.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.42 Release Notes (draft)
===============================

UI, Workflows & Features

 * "git pack-refs" learns "--include" and "--exclude" to tweak the ref
   hierarchy to be packed using pattern matching.

 * 'git worktree add' learned how to create a worktree based on an
   orphaned branch with `--orphan`.

 * "git pack-objects" learned to invoke a new hook program that
   enumerates extra objects to be used as anchoring points to keep
   otherwise unreachable objects in cruft packs.

 * Add more "git var" for toolsmiths to learn various locations Git is
   configured with either via the configuration or hardcoded defaults.

 * 'git notes append' was taught '--separator' to specify string to insert
   between paragraphs.

 * The "git for-each-ref" family of commands learned placeholders
   related to GPG signature verification.

 * "git diff --no-index" learned to read from named pipes as if they
   were regular files, to allow "git diff <(process) <(substitution)"
   some shells support.

 * Help newbies by suggesting that there are cases where force-pushing
   is a valid and sensible thing to update a branch at a remote
   repository, rather than reconciling with merge/rebase.

 * "git blame --contents=file" has been taught to work in a bare
   repository.

 * "git branch -f X" to repoint the branch X said that X was "checked
   out" in another worktree, even when branch X was not and instead
   being bisected or rebased.  The message was reworded to say the
   branch was "in use".

 * Tone down the warning on SHA-256 repositories being an experimental
   curiosity.  We do not have support for them to interoperate with
   traditional SHA-1 repositories, but at this point, we do not plan
   to make breaking changes to SHA-256 repositories and there is no
   longer need for such a strongly phrased warning.


Performance, Internal Implementation, Development Support etc.

 * "git diff-tree" has been taught to take advantage of the
   sparse-index feature.

 * Clang's sanitizer implementation seems to work better than GCC's.
   (merge d88d727143 jk/ci-use-clang-for-sanitizer-jobs later to maint).

 * The object traversal using reachability bitmap done by
   "pack-object" has been tweaked to take advantage of the fact that
   using "boundary" commits as representative of all the uninteresting
   ones can save quite a lot of object enumeration.

 * discover_git_directory() no longer touches the_repository.

 * "git worktree" learned to work better with sparse index feature.

 * When the external merge driver is killed by a signal, its output
   should not be trusted as a resolution with conflicts that is
   proposed by the driver, but the code did.

 * The set-up code for the get_revision() API now allows feeding
   options like --all and --not in the --stdin mode.

 * Move functions that are not about pure string manipulation out of
   strbuf.[ch]

 * "imap-send" codepaths got cleaned up to get rid of unused
   parameters.

 * Enumerating refs in the packed-refs file, while excluding refs that
   match certain patterns, has been optimized.

 * Mark-up unused parameters in the code so that we can eventually
   enable -Wunused-parameter by default.

 * Instead of inventing a custom counter variables for debugging,
   use existing trace2 facility in the fsync customization codepath.

 * "git branch --list --format=<format>" and friends are taught
   a new "%(describe)" placeholder.

 * Clarify how to choose the starting point for a new topic in
   developer guidance document.

 * The implementation of "get_sha1_hex()" that reads a hexadecimal
   string that spells a full object name has been extended to cope
   with any hash function used in the repository, but the "sha1" in
   its name survived.  Rename it to get_hash_hex(), a name that is
   more consistent within its friends like get_hash_hex_algop().

 * Command line parser fix, and a small parse-options API update.


Fixes since v2.41
-----------------

 * "git tag" learned to leave the "$GIT_DIR/TAG_EDITMSG" file when the
   command failed, so that the user can salvage what they typed.
   (merge 08c12ec1d0 kh/keep-tag-editmsg-upon-failure later to maint).

 * The "-s" (silent, squelch) option of the "diff" family of commands
   did not interact with other options that specify the output format
   well.  This has been cleaned up so that it will clear all the
   formatting options given before.
   (merge 9d484b92ed jc/diff-s-with-other-options later to maint).

 * Update documentation regarding Coccinelle patches.
   (merge 3bd0097cfc gc/doc-cocci-updates later to maint).

 * Some atoms that can be used in "--format=<format>" for "git ls-tree"
   were not supported by "git ls-files", even though they were relevant
   in the context of the latter.
   (merge 4d28c4f75f zh/ls-files-format-atoms later to maint).

 * Document more pseudo-refs and teach the command line completion
   machinery to complete AUTO_MERGE.
   (merge 982ff3a649 pb/complete-and-document-auto-merge-and-friends later to maint).

 * "git submodule" code trusted the data coming from the config (and
   the in-tree .gitmodules file) too much without validating, leading
   to NULL dereference if the user mucks with a repository (e.g.
   submodule.<name>.url is removed).  This has been corrected.
   (merge fbc806acd1 tb/submodule-null-deref-fix later to maint).

 * The value of config.worktree is per-repository, but has been kept
   in a singleton global variable per process. This has been OK as
   most Git operations interacted with a single repository at a time,
   but not right for operations like recursive "grep" that want to
   access multiple repositories from a single process without forking.

   The global variable has been eliminated and made into a member in
   the per-repository data structure.
   (merge 3867f6d650 vd/worktree-config-is-per-repository later to maint).

 * "git [-c log.follow=true] log [--follow] ':(glob)f**'" used to barf.
   (merge 8260bc5902 jk/log-follow-with-non-literal-pathspec later to maint).

 * Introduce a mechanism to disable replace refs globally and per
   repository.
   (merge 9c7d1b057f ds/disable-replace-refs later to maint).

 * "git cat-file --batch" and friends learned "-Z" that uses NUL
   delimiter for both input and output.
   (merge f79e18849b ps/cat-file-null-output later to maint).

 * The reimplemented "git add -i" did not honor color.ui configuration.
   (merge 6f74648cea ds/add-i-color-configuration-fix later to maint).

 * Compilation fix for platforms without D_TYPE in struct dirent.
   (merge 03bf92b9bf as/dtype-compilation-fix later to maint).

 * Suggest to refrain from using hex literals that are non-portable
   when writing printf(1) format strings.
   (merge f0b68f0546 jt/doc-use-octal-with-printf later to maint).

 * Simplify error message when run-command fails to start a command.
   (merge 6d224ac286 rs/run-command-exec-error-on-noent later to maint).

 * Gracefully deal with a stale MIDX file that lists a packfile that
   no longer exists.
   (merge 06f3867865 tb/open-midx-bitmap-fallback later to maint).

 * Even when diff.ignoreSubmodules tells us to ignore submodule
   changes, "git commit" with an index that already records changes to
   submodules should include the submodule changes in the resulting
   commit, but it did not.
   (merge 5768478edc js/defeat-ignore-submodules-config-with-explicit-addition later to maint).

 * When "git commit --trailer=..." invokes the interpret-trailers
   machinery, it knows what it feeds to interpret-trailers is a full
   log message without any patch, but failed to express that by
   passing the "--no-divider" option, which has been corrected.
   (merge be3d654343 jk/commit-use-no-divider-with-interpret-trailers later to maint).

 * Avoid breakage of "git pack-objects --cruft" due to inconsistency
   between the way the code enumerates packfiles in the repository.
   (merge 73320e49ad tb/collect-pack-filenames-fix later to maint).

 * We create .pack and then .idx, we consider only packfiles that have
   .idx usable (those with only .pack are not ready yet), so we should
   remove .idx before removing .pack for consistency.
   (merge 0dd1324a73 ds/remove-idx-before-pack later to maint).

 * Partially revert a sanity check that the rest of the config code
   was not ready, to avoid triggering it in a corner case.
   (merge a53f43f900 gc/config-partial-submodule-kvi-fix later to maint).

 * "git apply" punts when it is fed too large a patch input; the error
   message it gives when it happens has been clarified.
   (merge 42612e18d2 pw/apply-too-large later to maint).

 * During a cherry-pick or revert session that works on multiple
   commits, "git status" did not give correct information, which has
   been corrected.
   (merge a096a889f4 jk/cherry-pick-revert-status later to maint).

 * A few places failed to differentiate the case where the index is
   truly empty (nothing added) and we haven't yet read from the
   on-disk index file, which have been corrected.
   (merge 2ee045eea1 js/empty-index-fixes later to maint).

 * "git bugreport" tests did not test what it wanted to test, which
   has been corrected.
   (merge 1aa92b8500 ma/t0091-fixup later to maint).

 * Code snippets in a tutorial document no longer compiled after
   recent header shuffling, which have been corrected.
   (merge bbd7c7b7c0 vd/adjust-mfow-doc-to-updated-headers later to maint).

 * "git ls-files '(attr:X)D/'" that triggers the common prefix
   optimization codepath failed to read from "D/.gitattributes",
   which has been corrected.
   (merge f4a8fde057 jc/pathspec-match-with-common-prefix later to maint).

 * "git fsck --no-progress" still spewed noise from the commit-graph
   subsystem, which has been corrected.
   (merge 9281cd07f0 tb/fsck-no-progress later to maint).

 * Various offset computation in the code that accesses the packfiles
   and other data in the object layer has been hardened against
   arithmetic overflow, especially on 32-bit systems.
   (merge 9a25cad7e0 tb/object-access-overflow-protection later to maint).

 * Names of MinGW header files are spelled in mixed case in some
   source files, but the build host can be using case sensitive
   filesystem with header files with their name spelled in all
   lowercase.
   (merge 4a53d0d0bc mh/mingw-case-sensitive-build later to maint).

 * Update message mark-up for i18n in "git bundle".
   (merge bbb6acd998 dk/bundle-i18n-more later to maint).

 * "git tag --list --points-at X" showed tags that directly refers to
   object X, but did not list a tag that points at such a tag, which
   has been corrected.

 * "./configure --with-expat=no" did not work as a way to refuse use
   of the expat library on a system with the library installed, which
   has been corrected.
   (merge fb8f7269c2 ah/autoconf-fixes later to maint).

 * When the user edits "rebase -i" todo file so that it starts with a
   "fixup", which would make it invalid, the command truncated the
   rest of the file before giving an error and returning the control
   back to the user.  Stop truncating to make it easier to correct
   such a malformed todo file.
   (merge 9645a087c2 ah/sequencer-rewrite-todo-fix later to maint).

 * Rewrite the description of giving a custom command to the
   submodule.<name>.update configuration variable.
   (merge 7cebc5bd78 pv/doc-submodule-update-settings later to maint).

 * Adjust to OpenSSL 3+, which deprecates its SHA-1 functions based on
   its traditional API, by using its EVP API instead.
   (merge bda9c12073 ew/hash-with-openssl-evp later to maint).

 * Exclude "." from the set of characters to be removed from the
   beginning and the end of the human-readable name.
   (merge 1c04cb0744 bc/ident-dot-is-no-longer-crud-letter later to maint).

 * "git bisect visualize" stopped running "gitk" on Git for Windows
   when the command was reimplemented in C around Git 2.34 timeframe.
   This has been corrected.
   (merge fff1594fa7 ma/locate-in-path-for-windows later to maint).

 * "git rebase -i" with a series of squash/fixup, when one of the
   steps stopped in conflicts and ended up getting skipped, did not
   handle the accumulated commit log messages, which has been
   corrected.
   (merge 6ce7afe163 pw/rebase-skip-commit-message-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 51f9d2e563 sa/doc-ls-remote later to maint).
   (merge c6d26a9dda jk/format-patch-message-id-unleak later to maint).
   (merge f7e063f326 ps/fetch-cleanups later to maint).
   (merge e4cf013468 tl/quote-problematic-arg-for-clarity later to maint).
   (merge 20025fdfc7 tz/test-ssh-verifytime-fix later to maint).
   (merge e48a21df65 tz/test-fix-pthreads-prereq later to maint).
   (merge 68b51172e3 mh/commit-reach-get-reachable-plug-leak later to maint).
   (merge aeee1408ce kh/use-default-notes-doc later to maint).
   (merge 3b8724bce6 jc/test-modernization later to maint).
   (merge 447a3b7331 jc/test-modernization-2 later to maint).
   (merge d57fa7fc73 la/doc-interpret-trailers later to maint).
   (merge 548afb0d9a la/docs-typofixes later to maint).
   (merge 3744ffcbcd rs/doc-ls-tree-hex-literal later to maint).
   (merge 6c26da8404 mh/credential-erase-improvements later to maint).
   (merge 78e56cff69 tz/lib-gpg-prereq-fix later to maint).
   (merge 80d32e84b5 rj/leakfixes later to maint).
   (merge 0a868031ed pb/complete-diff-options later to maint).
   (merge d4f28279ad jc/doc-hash-object-types later to maint).
   (merge 1876a5ae15 ks/t4205-test-describe-with-abbrev-fix later to maint).
   (merge 6e6a529b57 jk/fsck-indices-in-worktrees later to maint).
   (merge 3e81b896f7 rs/packet-length-simplify later to maint).
   (merge 4c9cb51fe7 mh/doc-credential-helpers later to maint).
   (merge 3437f549dd jr/gitignore-doc-example-markup later to maint).
   (merge 947ebd62a0 jc/am-parseopt-fix later to maint).
   (merge e12cb98e1e jc/branch-parseopt-fix later to maint).
   (merge d6f598e443 jc/gitignore-doc-pattern-markup later to maint).
   (merge a2dad4868b jc/transport-parseopt-fix later to maint).
   (merge 68cbb20e73 jc/parse-options-show-branch later to maint).
   (merge 3821eb6c3d jc/parse-options-reset later to maint).
   (merge c48af99a3e bb/trace2-comment-fix later to maint).
   (merge c95ae3ff9c rs/describe-parseopt-fix later to maint).
   (merge 36f76d2a25 rs/pack-objects-parseopt-fix later to maint).
   (merge 30c8c55cbf jc/tree-walk-drop-base-offset later to maint).
   (merge d089a06421 rs/bundle-parseopt-cleanup later to maint).
   (merge 823839bda1 ew/sha256-gcrypt-leak-fixes later to maint).
   (merge a5c01603b3 bc/ignore-clangd-cache later to maint).

----------------------------------------------------------------

Changes since v2.41.0 are as follows:

Adam Majer (1):
      doc: sha256 is no longer experimental

Alejandro R. Sedeño (1):
      statinfo.h: move DTYPE defines from dir.h

Alex Henrie (4):
      wt-status: don't show divergence advice when committing
      remote: don't imply that integration is always required before pushing
      push: don't imply that integration is always required before pushing
      sequencer: finish parsing the todo list despite an invalid first line

Andreas Herrmann (3):
      configure.ac: don't overwrite NO_EXPAT option
      configure.ac: don't overwrite NO_CURL option
      configure.ac: always save NO_ICONV to config.status

Beat Bolli (2):
      trace2: fix a comment
      wrapper: use trace2 counters to collect fsync stats

Calvin Wan (13):
      strbuf: clarify API boundary
      strbuf: clarify dependency
      abspath: move related functions to abspath
      credential-store: move related functions to credential-store file
      object-name: move related functions to object-name
      path: move related function to path
      strbuf: remove global variable
      git-compat-util: move strbuf.c funcs to its header
      git-compat-util: move wrapper.c funcs to its header
      sane-ctype.h: create header for sane-ctype macros
      kwset: move translation table from ctype
      treewide: remove unnecessary includes for wrapper.h
      git-compat-util: move alloc macros to git-compat-util.h

D. Ben Knoble (2):
      i18n: mark more bundle.c strings for translation
      t4002: fix "diff can read from stdin" syntax

Derrick Stolee (7):
      add: check color.ui for interactive add
      add: test use of brackets when color is disabled
      repository: create disable_replace_refs()
      replace-objects: create wrapper around setting
      repository: create read_replace_refs setting
      packfile: delete .idx files before .pack files
      builtin/repack.c: only repack `.pack`s that exist

Elijah Newren (28):
      init-db: document existing bug with core.bare in template config
      init-db: remove unnecessary global variable
      init-db, clone: change unnecessary global into passed parameter
      setup: adopt shared init-db & clone code
      read-cache: move shared commit and ls-files code
      add: modify add_files_to_cache() to avoid globals
      read-cache: move shared add/checkout/commit code
      statinfo: move stat_{data,validity} functions from cache/read-cache
      run-command.h: move declarations for run-command.c from cache.h
      name-hash.h: move declarations for name-hash.c from cache.h
      sparse-index.h: move declarations for sparse-index.c from cache.h
      preload-index.h: move declarations for preload-index.c from elsewhere
      diff.h: move declaration for global in diff.c from cache.h
      merge.h: move declarations for merge.c from cache.h
      repository.h: move declaration of the_index from cache.h
      read-cache*.h: move declarations for read-cache.c functions from cache.h
      cache.h: remove this no-longer-used header
      log-tree: replace include of revision.h with simple forward declaration
      repository: remove unnecessary include of path.h
      diff.h: remove unnecessary include of oidset.h
      list-objects-filter-options.h: remove unneccessary include
      builtin.h: remove unneccessary includes
      git-compat-util.h: remove unneccessary include of wildmatch.h
      merge-ll: rename from ll-merge
      khash: name the structs that khash declares
      object-store-ll.h: split this header out of object-store.h
      hash-ll, hashmap: move oidhash() to hash-ll
      fsmonitor-ll.h: split this header out of fsmonitor.h

Eric Sunshine (1):
      fsck: avoid misleading variable name

Eric Wong (5):
      sha256/gcrypt: fix build with SANITIZE=leak
      sha256/gcrypt: fix memory leak with SHA-256 repos
      sha256/gcrypt: die on gcry_md_open failures
      sha256: avoid functions deprecated in OpenSSL 3+
      avoid SHA-1 functions deprecated in OpenSSL 3+

Glen Choo (16):
      cocci: add headings to and reword README
      cocci: codify authoring and reviewing practices
      setup.c: don't setup in discover_git_directory()
      config: don't BUG when both kvi and source are set
      config: inline git_color_default_config
      urlmatch.h: use config_fn_t type
      config: add ctx arg to config_fn_t
      config.c: pass ctx in configsets
      config: pass ctx with config files
      config.c: pass ctx with CLI config
      trace2: plumb config kvi
      config: pass kvi to die_bad_number()
      config.c: remove config_reader from configsets
      config: add kvi.path, use it to evaluate includes
      config: pass source to config_parser_event_fn_t
      mailmap: change primary address for Glen Choo

Han Young (1):
      blame: allow --contents to work with bare repo

Jacob Abel (11):
      worktree add: include -B in usage docs
      t2400: cleanup created worktree in test
      t2400: refactor "worktree add" opt exclusion tests
      t2400: add tests to verify --quiet
      worktree add: add --orphan flag
      worktree add: introduce "try --orphan" hint
      worktree add: extend DWIM to infer --orphan
      worktree add: emit warn when there is a bad HEAD
      t2400: drop no-op `--sq` from rev-parse call
      builtin/worktree.c: convert tab in advice to space
      t2400: rewrite regex to avoid unintentional PCRE

Jacob Keller (1):
      fix cherry-pick/revert status when doing multiple commits

Jan Klötzke (1):
      ref-filter: handle nested tags in --points-at option

Jeff King (36):
      format-patch: free rev.message_id when exiting
      format-patch: free elements of rev.ref_message_ids list
      pathspec: factor out magic-to-name function
      diff: factor out --follow pathspec check
      diff: detect pathspec magic not supported by --follow
      ci: use clang for ASan/UBSan checks
      ci: run ASan/UBSan in a single job
      ci: drop linux-clang job
      commit: pass --no-divider to interpret-trailers
      http: handle both "h2" and "h2h3" in curl info lines
      var: mark unused parameters in git_var callbacks
      imap-send: use server conf argument in setup_curl()
      imap-send: drop unused parameter from imap_cmd_cb callback
      imap-send: drop unused fields from imap_cmd_cb
      refs.c: rename `ref_filter`
      ref-filter.h: provide `REF_FILTER_INIT`
      ref-filter: clear reachable list pointers after freeing
      ref-filter: add `ref_filter_clear()`
      ref-filter.c: parameterize match functions over patterns
      test-ref-store: drop unimplemented reflog-expire command
      do_for_each_ref_helper(): mark unused repository parameter
      http: mark unused parameters in curl callbacks
      http-push: mark unused parameter in xml callback
      am: mark unused keep_cr parameters
      count-objects: mark unused parameter in alternates callback
      revisions: drop unused "opt" parameter in "tweak" callbacks
      fsck: mark unused parameters in various fsck callbacks
      merge-tree: mark unused parameter in traverse callback
      replace: mark unused parameter in ref callback
      replace: mark unused parameter in each_mergetag_fn callback
      rev-parse: mark unused parameter in for_each_abbrev callback
      tag: mark unused parameters in each_tag_name_fn callbacks
      t/helper: mark unused callback void data parameters
      ref-filter: avoid parsing tagged objects in match_points_at()
      ref-filter: avoid parsing non-tags in match_points_at()
      ref-filter: simplify return type of match_points_at

Johan Ruokangas (1):
      gitignore.txt: use backticks instead of double quotes

Johannes Schindelin (3):
      do_read_index(): always mark index as initialized unless erroring out
      split-index: accept that a base index can be empty
      commit -a -m: allow the top-level tree to become empty again

John Cai (34):
      docs: clarify git-pack-refs --all will pack all refs
      pack-refs: teach --exclude option to exclude refs from being packed
      pack-refs: teach pack-refs --include option
      t0000-basic: modernize test format
      t0030-stripspace: modernize test format
      t3210-pack-refs: modernize test format
      t1001-read-tree-m-2way: modernize test format
      t1002-read-tree-m-u-2way: modernize test format
      t1006-cat-file: modernize test format
      t3500-cherry: modernize test format
      t3700-add: modernize test format
      t3903-stash: modernize test format
      t4002-diff-basic: modernize test format
      t4003-diff-rename-1: modernize test format
      t4004-diff-rename-symlink: modernize test format
      t4202-log: modernize test format
      t4206-log-follow-harder-copies: modernize test format
      t5300-pack-object: modernize test format
      t5301-sliding-window: modernize test format
      t5303-pack-corruption-resilience: modernize test format
      t5306-pack-nobase: modernize test format
      t6050-replace: modernize test format
      t7101-reset-empty-subdirs: modernize test format
      t7110-reset-merge: modernize test format
      t7111-reset-table: modernize test format
      t7201-co: modernize test format
      t7508-status: modernize test format
      t7600-merge: modernize test format
      t7700-repack: modernize test format
      t9100-git-svn-basic: modernize test format
      t9104-git-svn-follow-parent: modernize test format
      t9200-git-cvsexportcommit: modernize test format
      t9400-git-cvsserver-server: modernize test format
      docs: add git hash-object -t option's possible values

Jonathan Tan (1):
      CodingGuidelines: use octal escapes, not hex

Josip Sokcevic (1):
      diff-lib: honor override_submodule_config flag bit

Junio C Hamano (46):
      diff: fix interaction between the "-s" option and other options
      show-branch doc: say <ref>, not <reference>
      Start the 2.42 cycle
      The second batch for 2.42
      The third batch
      ll-merge: killing the external merge driver aborts the merge
      The fourth batch
      t6406: skip "external merge driver getting killed by a signal" test on Windows
      The fifth batch
      The sixth batch
      The seventh batch
      The eighth batch
      t6135: attr magic with path pattern
      tree-walk: lose base_offset that is never used in tree_entry_interesting
      tree-walk: drop unused base_offset from do_match()
      The ninth batch
      dir: match "attr" pathspec magic with correct paths
      The tenth batch
      The eleventh batch
      The twelfth batch
      gitignore.txt: mark up explanation of patterns consistently
      am: simplify parsing of "--[no-]keep-cr"
      branch: reject "--no-all" and "--no-remotes" early
      parse-options: introduce OPT_IPVERSION()
      fetch: reject --no-ipv[46]
      show-branch: --no-sparse should give dense output
      short help: allow multi-line opthelp
      remote: simplify "remote add --tags" help text
      short help: allow a gap smaller than USAGE_GAP
      show-branch: reject --[no-](topo|date)-order
      reset: reject --no-(mixed|soft|hard|merge|keep) option
      The thirteenth batch
      branch: update the message to refuse touching a branch in-use
      hex: retire get_sha1_hex()
      The fourteenth batch
      SubmittingPatches: choice of base for fixing an older maintenance track
      The fifteenth batch
      SubmittingPatches: explain why 'next' and above are inappropriate base
      SubmittingPatches: use of older maintenance tracks is an exception
      The sixteenth batch
      MyFirstContribution: refrain from self-iterating too much
      The seventeenth batch
      The eighteenth batch
      Git 2.42-rc0
      A few more topics before -rc1
      Git 2.42-rc1

Kousik Sanagavarapu (5):
      t/lib-gpg: introduce new prereq GPG2
      ref-filter: add new "signature" atom
      t4205: correctly test %(describe:abbrev=...)
      ref-filter: add multiple-option parsing functions
      ref-filter: add new "describe" atom

Kristoffer Haugsbakk (5):
      doc: tag: document `TAG_EDITMSG`
      t/t7004-tag: add regression test for successful tag creation
      tag: keep the message file in case ref transaction fails
      notes: update documentation for `use_default_notes`
      notes: move the documentation to the struct

Linus Arver (15):
      docs: typofixes
      doc: trailer: fix grammar
      doc: trailer: swap verb order
      doc: trailer: drop "commit message part" phrasing
      doc: trailer: examples: avoid the word "message" by itself
      doc: trailer: remove redundant phrasing
      doc: trailer: use angle brackets for <token> and <value>
      doc: trailer.<token>.command: emphasize deprecation
      doc: trailer: mention 'key' in DESCRIPTION
      doc: trailer: add more examples in DESCRIPTION
      SubmittingPatches: reword awkward phrasing
      SubmittingPatches: discuss subsystems separately from git.git
      SubmittingPatches: de-emphasize branches as starting points
      SubmittingPatches: emphasize need to communicate non-default starting points
      SubmittingPatches: simplify guidance for choosing a starting point

M Hickford (3):
      credential: avoid erasing distinct password
      credential: erase all matching credentials
      doc: gitcredentials: link to helper list

Martin Ågren (1):
      t0091-bugreport.sh: actually verify some content of report

Matthias Aßhauer (3):
      run-command: conditionally define locate_in_PATH()
      compat/mingw: implement a native locate_in_PATH()
      docs: update when `git bisect visualize` uses `gitk`

Mike Hommey (2):
      commit-reach: fix memory leak in get_reachable_subset()
      mingw: use lowercase includes for some Windows headers

Patrick Steinhardt (17):
      fetch: drop unused DISPLAY_FORMAT_UNKNOWN enum value
      fetch: drop unneeded NULL-check for `remote_ref`
      fetch: pass through `fetch_config` directly
      fetch: use `fetch_config` to store "fetch.prune" value
      fetch: use `fetch_config` to store "fetch.pruneTags" value
      fetch: use `fetch_config` to store "fetch.showForcedUpdates" value
      fetch: use `fetch_config` to store "fetch.recurseSubmodules" value
      fetch: use `fetch_config` to store "fetch.parallel" value
      fetch: use `fetch_config` to store "submodule.fetchJobs" value
      t1006: don't strip timestamps from expected results
      t1006: modernize test style to use `test_cmp`
      strbuf: provide CRLF-aware helper to read until a specified delimiter
      cat-file: simplify reading from standard input
      cat-file: add option '-Z' that delimits input and output with NUL
      revision: reorder `read_revisions_from_stdin()`
      revision: small readability improvement for reading from stdin
      revision: handle pseudo-opts in `--stdin` mode

Petar Vutov (1):
      doc: highlight that .gitmodules does not support !command

Philippe Blain (30):
      revisions.txt: use description list for special refs
      revisions.txt: document more special refs
      completion: complete REVERT_HEAD and BISECT_HEAD
      git-merge.txt: modernize word choice in "True merge" section
      Documentation: document AUTO_MERGE
      completion: complete AUTO_MERGE
      completion: add comments describing __git_diff_* globals
      completion: complete --break-rewrites
      completion: complete --cc
      completion: complete --combined-all-paths
      completion: complete --compact-summary
      completion: complete --default-prefix
      completion: complete --find-copies
      completion: complete --find-object
      completion: complete --find-renames
      completion: complete --function-context
      completion: complete --ignore-matching-lines
      completion: complete --irreversible-delete
      completion: complete --ita-invisible-in-index and --ita-visible-in-index
      completion: complete --line-prefix
      completion: complete --no-relative
      completion: complete --no-stat
      completion: complete --output
      completion: complete --output-indicator-{context,new,old}
      completion: complete --unified
      completion: complete --ws-error-highlight
      completion: move --pickaxe-{all,regex} to __git_diff_common_options
      completion: complete --diff-merges, its options and --no-diff-merges
      completion: complete --remerge-diff
      diff.c: mention completion above add_diff_options

Phillip Wood (6):
      apply: improve error messages when reading patch
      diff --no-index: refuse to compare stdin to a directory
      diff --no-index: die on error reading stdin
      t4054: test diff --no-index with stdin
      diff --no-index: support reading from named pipes
      rebase --skip: fix commit message clean up when skipping squash

René Scharfe (19):
      t1800: loosen matching of error message for bad shebang
      run-command: report exec error even on ENOENT
      ls-tree: fix documentation of %x format placeholder
      pretty: factor out expand_separator()
      strbuf: factor out strbuf_expand_step()
      replace strbuf_expand_dict_cb() with strbuf_expand_step()
      replace strbuf_expand() with strbuf_expand_step()
      strbuf: simplify strbuf_expand_literal_cb()
      ls-tree: simplify prefix handling
      pretty: avoid double negative in format_commit_item()
      pkt-line: add size parameter to packet_length()
      pretty: use strchr(3) in userformat_find_requirements()
      t6300: fix setup with GPGSSH but without GPG
      strbuf: use skip_prefix() in strbuf_addftime()
      ls-tree: fix --no-full-name
      describe: fix --no-exact-match
      pack-objects: fix --no-keep-true-parents
      pack-objects: fix --no-quiet
      bundle: use OPT_PASSTHRU_ARGV

Rubén Justo (11):
      config: fix a leak in git_config_copy_or_rename_section_in_file
      remote: fix a leak in query_matches_negative_refspec
      branch: fix a leak in dwim_and_setup_tracking
      branch: fix a leak in inherit_tracking
      branch: fix a leak in check_tracking_branch
      branch: fix a leak in setup_tracking
      rev-parse: fix a leak with --abbrev-ref
      branch: fix a leak in setup_tracking
      branch: fix a leak in cmd_branch
      config: fix a leak in git_config_copy_or_rename_section_in_file
      tests: mark as passing with SANITIZE=leak

Sean Allred (5):
      show-ref doc: update for internal consistency
      ls-remote doc: remove redundant --tags example
      ls-remote doc: show peeled tags in examples
      ls-remote doc: explain what each example does
      ls-remote doc: document the output format

Shuqi Liang (2):
      diff-tree: integrate with sparse index
      worktree: integrate with sparse-index

Taylor Blau (53):
      object: add object_array initializer helper function
      pack-bitmap.c: extract `fill_in_bitmap()`
      pack-bitmap.c: use commit boundary during bitmap traversal
      builtin/submodule--helper.c: handle missing submodule URLs
      builtin/repack.c: only collect fully-formed packs
      reachable.c: extract `obj_is_recent()`
      gc: introduce `gc.recentObjectsHook`
      pack-bitmap.c: gracefully degrade on failure to load MIDX'd pack
      t7701: make annotated tag unreachable
      fsck: suppress commit-graph output with `--no-progress`
      fsck: suppress MIDX output with `--no-progress`
      commit-graph.c: extract `verify_one_commit_graph()`
      commit-graph.c: iteratively verify commit-graph chains
      commit-graph.c: pass progress to `verify_one_commit_graph()`
      commit-graph.c: avoid duplicated progress output during `verify`
      builtin/for-each-ref.c: add `--exclude` option
      refs: plumb `exclude_patterns` argument throughout
      refs/packed-backend.c: refactor `find_reference_location()`
      refs/packed-backend.c: implement jump lists to avoid excluded pattern(s)
      refs/packed-backend.c: add trace2 counters for jump list
      revision.h: store hidden refs in a `strvec`
      refs.h: let `for_each_namespaced_ref()` take excluded patterns
      refs.h: implement `hidden_refs_to_excludes()`
      builtin/receive-pack.c: avoid enumerating hidden references
      upload-pack.c: avoid enumerating hidden refs where possible
      ls-refs.c: avoid enumerating hidden refs where possible
      builtin/repack.c: avoid dir traversal in `collect_pack_filenames()`
      packfile.c: prevent overflow in `nth_packed_object_id()`
      packfile.c: prevent overflow in `load_idx()`
      packfile.c: use checked arithmetic in `nth_packed_object_offset()`
      midx.c: use `size_t`'s for fanout nr and alloc
      midx.c: prevent overflow in `nth_midxed_object_oid()`
      midx.c: prevent overflow in `nth_midxed_offset()`
      midx.c: store `nr`, `alloc` variables as `size_t`'s
      midx.c: prevent overflow in `write_midx_internal()`
      midx.c: prevent overflow in `fill_included_packs_batch()`
      pack-bitmap.c: ensure that eindex lookups don't overflow
      commit-graph.c: prevent overflow in `write_commit_graph_file()`
      commit-graph.c: prevent overflow in add_graph_to_chain()
      commit-graph.c: prevent overflow in `load_oid_from_graph()`
      commit-graph.c: prevent overflow in `fill_commit_graph_info()`
      commit-graph.c: prevent overflow in `fill_commit_in_graph()`
      commit-graph.c: prevent overflow in `load_tree_for_commit()`
      commit-graph.c: prevent overflow in `split_graph_merge_strategy()`
      commit-graph.c: prevent overflow in `merge_commit_graph()`
      commit-graph.c: prevent overflow in `write_commit_graph()`
      commit-graph.c: prevent overflow in `verify_commit_graph()`
      t/lib-commit-graph.sh: allow `graph_read_expect()` in sub-directories
      t/lib-commit-graph.sh: avoid directory change in `graph_git_behavior()`
      t5318: avoid top-level directory changes
      t5328: avoid top-level directory changes
      t/lib-commit-graph.sh: avoid sub-shell in `graph_git_behavior()`
      Documentation/RelNotes/2.42.0.txt: typofix

Teng Long (8):
      surround %s with quotes when failed to lookup commit
      notes.c: cleanup 'strbuf_grow' call in 'append_edit'
      notes.c: use designated initializers for clarity
      t3321: add test cases about the notes stripspace behavior
      notes.c: introduce '--separator=<paragraph-break>' option
      notes.c: append separator instead of insert by pos
      notes.c: introduce "--[no-]stripspace" option
      notes: introduce "--no-separator" option

Todd Zullinger (3):
      trace2 tests: fix PTHREADS prereq
      t/lib-gpg: fix ssh-keygen -Y check-novalidate with openssh-9.0
      t/lib-gpg: require GPGSSH for GPGSSH_VERIFYTIME prereq

Victoria Dye (3):
      config: use gitdir to get worktree config
      config: pass 'repo' directly to 'config_with_options()'
      repository: move 'repository_format_worktree_config' to repo scope

Vinayak Dev (1):
      docs: add necessary headers to Documentation/MFOW.txt

ZheNing Hu (1):
      ls-files: align format atoms with ls-tree

brian m. carlson (9):
      t: add a function to check executable bit
      var: add support for listing the shell
      var: format variable structure with C99 initializers
      var: adjust memory allocation for strings
      attr: expose and rename accessor functions
      var: add attributes files locations
      var: add config file locations
      ident: don't consider '.' a crud
      gitignore: ignore clangd .cache directory



^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.42.0-rc0
@ 2023-08-04 19:30  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-08-04 19:30 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

An early preview release Git v2.42.0-rc0 is now available for
testing at the usual places.  It is comprised of 401 non-merge
commits since v2.41.0, contributed by 59 people, 13 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.42.0-rc0' 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.41.0 are as follows.
Welcome to the Git development community!

  Andreas Herrmann, Greg Alexander, Han Young, Jacob Abel, Jan
  Klötzke, Jim Pryor, Johan Ruokangas, Josh Sref, Josip Sokcevic,
  Petar Vutov, Premek Vysoky, Tribo Dar, and Vinayak Dev.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  , Alejandro R. Sedeño, Alex Henrie, Beat Bolli, brian
  m. carlson, Calvin Wan, Christian Couder, D. Ben Knoble, Derrick
  Stolee, Elijah Newren, Eric Sunshine, Glen Choo, Hariom Verma,
  Jacob Keller, Jaydeep Das, Jeff King, Johannes Schindelin,
  John Cai, Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kousik
  Sanagavarapu, Kristoffer Haugsbakk, Linus Arver, Martin Ågren,
  Matthew Hughes, M Hickford, Michael Haggerty, Mike Hommey,
  Nsengiyumva Wilberforce, Patrick Steinhardt, Philippe Blain,
  Phillip Wood, Randall S. Becker, René Scharfe, Rubén Justo,
  Sean Allred, Shuqi Liang, SZEDER Gábor, Taylor Blau, Teng Long,
  Todd Zullinger, Toon Claes, Torsten Bögershausen, Victoria Dye,
  and ZheNing Hu.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.42 Release Notes (draft)
===============================

UI, Workflows & Features

 * "git pack-refs" learns "--include" and "--exclude" to tweak the ref
   hierarchy to be packed using pattern matching.

 * 'git worktree add' learned how to create a worktree based on an
   orphaned branch with `--orphan`.

 * "git pack-objects" learned to invoke a new hook program that
   enumerates extra objects to be used as anchoring points to keep
   otherwise unreachable objects in cruft packs.

 * Add more "git var" for toolsmiths to learn various locations Git is
   configured with either via the configuration or hardcoded defaults.

 * 'git notes append' was taught '--separator' to specify string to insert
   between paragraphs.

 * The "git for-each-ref" family of commands learned placeholders
   related to GPG signature verification.

 * "git diff --no-index" learned to read from named pipes as if they
   were regular files, to allow "git diff <(process) <(substitution)"
   some shells support.

 * Help newbies by suggesting that there are cases where force-pushing
   is a valid and sensible thing to update a branch at a remote
   repository, rather than reconciling with merge/rebase.

 * "git blame --contents=file" has been taught to work in a bare
   repository.

 * "git branch -f X" to repoint the branch X said that X was "checked
   out" in another worktree, even when branch X was not and instead
   being bisected or rebased.  The message was reworded to say the
   branch was "in use".


Performance, Internal Implementation, Development Support etc.

 * "git diff-tree" has been taught to take advantage of the
   sparse-index feature.

 * Clang's sanitizer implementation seems to work better than GCC's.
   (merge d88d727143 jk/ci-use-clang-for-sanitizer-jobs later to maint).

 * The object traversal using reachability bitmap done by
   "pack-object" has been tweaked to take advantage of the fact that
   using "boundary" commits as representative of all the uninteresting
   ones can save quite a lot of object enumeration.

 * discover_git_directory() no longer touches the_repository.

 * "git worktree" learned to work better with sparse index feature.

 * When the external merge driver is killed by a signal, its output
   should not be trusted as a resolution with conflicts that is
   proposed by the driver, but the code did.

 * The set-up code for the get_revision() API now allows feeding
   options like --all and --not in the --stdin mode.

 * Move functions that are not about pure string manipulation out of
   strbuf.[ch]

 * "imap-send" codepaths got cleaned up to get rid of unused
   parameters.

 * Enumerating refs in the packed-refs file, while excluding refs that
   match certain patterns, has been optimized.

 * Mark-up unused parameters in the code so that we can eventually
   enable -Wunused-parameter by default.

 * Instead of inventing a custom counter variables for debugging,
   use existing trace2 facility in the fsync customization codepath.

 * "git branch --list --format=<format>" and friends are taught
   a new "%(describe)" placeholder.

 * Clarify how to choose the starting point for a new topic in
   developer guidance document.

 * The implementation of "get_sha1_hex()" that reads a hexadecimal
   string that spells a full object name has been extended to cope
   with any hash function used in the repository, but the "sha1" in
   its name survived.  Rename it to get_hash_hex(), a name that is
   more consistent within its friends like get_hash_hex_algop().

 * Command line parser fix, and a small parse-options API update.


Fixes since v2.41
-----------------

 * "git tag" learned to leave the "$GIT_DIR/TAG_EDITMSG" file when the
   command failed, so that the user can salvage what they typed.
   (merge 08c12ec1d0 kh/keep-tag-editmsg-upon-failure later to maint).

 * The "-s" (silent, squelch) option of the "diff" family of commands
   did not interact with other options that specify the output format
   well.  This has been cleaned up so that it will clear all the
   formatting options given before.
   (merge 9d484b92ed jc/diff-s-with-other-options later to maint).

 * Update documentation regarding Coccinelle patches.
   (merge 3bd0097cfc gc/doc-cocci-updates later to maint).

 * Some atoms that can be used in "--format=<format>" for "git ls-tree"
   were not supported by "git ls-files", even though they were relevant
   in the context of the latter.
   (merge 4d28c4f75f zh/ls-files-format-atoms later to maint).

 * Document more pseudo-refs and teach the command line completion
   machinery to complete AUTO_MERGE.
   (merge 982ff3a649 pb/complete-and-document-auto-merge-and-friends later to maint).

 * "git submodule" code trusted the data coming from the config (and
   the in-tree .gitmodules file) too much without validating, leading
   to NULL dereference if the user mucks with a repository (e.g.
   submodule.<name>.url is removed).  This has been corrected.
   (merge fbc806acd1 tb/submodule-null-deref-fix later to maint).

 * The value of config.worktree is per-repository, but has been kept
   in a singleton global variable per process. This has been OK as
   most Git operations interacted with a single repository at a time,
   but not right for operations like recursive "grep" that want to
   access multiple repositories from a single process without forking.

   The global variable has been eliminated and made into a member in
   the per-repository data structure.
   (merge 3867f6d650 vd/worktree-config-is-per-repository later to maint).

 * "git [-c log.follow=true] log [--follow] ':(glob)f**'" used to barf.
   (merge 8260bc5902 jk/log-follow-with-non-literal-pathspec later to maint).

 * Introduce a mechanism to disable replace refs globally and per
   repository.
   (merge 9c7d1b057f ds/disable-replace-refs later to maint).

 * "git cat-file --batch" and friends learned "-Z" that uses NUL
   delimiter for both input and output.
   (merge f79e18849b ps/cat-file-null-output later to maint).

 * The reimplemented "git add -i" did not honor color.ui configuration.
   (merge 6f74648cea ds/add-i-color-configuration-fix later to maint).

 * Compilation fix for platforms without D_TYPE in struct dirent.
   (merge 03bf92b9bf as/dtype-compilation-fix later to maint).

 * Suggest to refrain from using hex literals that are non-portable
   when writing printf(1) format strings.
   (merge f0b68f0546 jt/doc-use-octal-with-printf later to maint).

 * Simplify error message when run-command fails to start a command.
   (merge 6d224ac286 rs/run-command-exec-error-on-noent later to maint).

 * Gracefully deal with a stale MIDX file that lists a packfile that
   no longer exists.
   (merge 06f3867865 tb/open-midx-bitmap-fallback later to maint).

 * Even when diff.ignoreSubmodules tells us to ignore submodule
   changes, "git commit" with an index that already records changes to
   submodules should include the submodule changes in the resulting
   commit, but it did not.
   (merge 5768478edc js/defeat-ignore-submodules-config-with-explicit-addition later to maint).

 * When "git commit --trailer=..." invokes the interpret-trailers
   machinery, it knows what it feeds to interpret-trailers is a full
   log message without any patch, but failed to express that by
   passing the "--no-divider" option, which has been corrected.
   (merge be3d654343 jk/commit-use-no-divider-with-interpret-trailers later to maint).

 * Avoid breakage of "git pack-objects --cruft" due to inconsistency
   between the way the code enumerates packfiles in the repository.
   (merge 73320e49ad tb/collect-pack-filenames-fix later to maint).

 * We create .pack and then .idx, we consider only packfiles that have
   .idx usable (those with only .pack are not ready yet), so we should
   remove .idx before removing .pack for consistency.
   (merge 0dd1324a73 ds/remove-idx-before-pack later to maint).

 * Partially revert a sanity check that the rest of the config code
   was not ready, to avoid triggering it in a corner case.
   (merge a53f43f900 gc/config-partial-submodule-kvi-fix later to maint).

 * "git apply" punts when it is fed too large a patch input; the error
   message it gives when it happens has been clarified.
   (merge 42612e18d2 pw/apply-too-large later to maint).

 * During a cherry-pick or revert session that works on multiple
   commits, "git status" did not give correct information, which has
   been corrected.
   (merge a096a889f4 jk/cherry-pick-revert-status later to maint).

 * A few places failed to differentiate the case where the index is
   truly empty (nothing added) and we haven't yet read from the
   on-disk index file, which have been corrected.
   (merge 2ee045eea1 js/empty-index-fixes later to maint).

 * "git bugreport" tests did not test what it wanted to test, which
   has been corrected.
   (merge 1aa92b8500 ma/t0091-fixup later to maint).

 * Code snippets in a tutorial document no longer compiled after
   recent header shuffling, which have been corrected.
   (merge bbd7c7b7c0 vd/adjust-mfow-doc-to-updated-headers later to maint).

 * "git ls-files '(attr:X)D/'" that triggers the common prefix
   optimization codepath failed to read from "D/.gitattributes",
   which has been corrected.
   (merge f4a8fde057 jc/pathspec-match-with-common-prefix later to maint).

 * "git fsck --no-progress" still spewed noise from the commit-graph
   subsystem, which has been corrected.
   (merge 9281cd07f0 tb/fsck-no-progress later to maint).

 * Various offset computation in the code that accesses the packfiles
   and other data in the object layer has been hardened against
   arithmetic overflow, especially on 32-bit systems.
   (merge 9a25cad7e0 tb/object-access-overflow-protection later to maint).

 * Names of MinGW header files are spelled in mixed case in some
   source files, but the build host can be using case sensitive
   filesystem with header files with their name spelled in all
   lowercase.
   (merge 4a53d0d0bc mh/mingw-case-sensitive-build later to maint).

 * Update message mark-up for i18n in "git bundle".
   (merge bbb6acd998 dk/bundle-i18n-more later to maint).

 * "git tag --list --points-at X" showed tags that directly refers to
   object X, but did not list a tag that points at such a tag, which
   has been corrected.

 * "./configure --with-expat=no" did not work as a way to refuse use
   of the expat library on a system with the library installed, which
   has been corrected.
   (merge fb8f7269c2 ah/autoconf-fixes later to maint).

 * When the user edits "rebase -i" todo file so that it starts with a
   "fixup", which would make it invalid, the command truncated the
   rest of the file before giving an error and returning the control
   back to the user.  Stop truncating to make it easier to correct
   such a malformed todo file.
   (merge 9645a087c2 ah/sequencer-rewrite-todo-fix later to maint).

 * Rewrite the description of giving a custom command to the
   submodule.<name>.update configuration variable.
   (merge 7cebc5bd78 pv/doc-submodule-update-settings later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 51f9d2e563 sa/doc-ls-remote later to maint).
   (merge c6d26a9dda jk/format-patch-message-id-unleak later to maint).
   (merge f7e063f326 ps/fetch-cleanups later to maint).
   (merge e4cf013468 tl/quote-problematic-arg-for-clarity later to maint).
   (merge 20025fdfc7 tz/test-ssh-verifytime-fix later to maint).
   (merge e48a21df65 tz/test-fix-pthreads-prereq later to maint).
   (merge 68b51172e3 mh/commit-reach-get-reachable-plug-leak later to maint).
   (merge aeee1408ce kh/use-default-notes-doc later to maint).
   (merge 3b8724bce6 jc/test-modernization later to maint).
   (merge 447a3b7331 jc/test-modernization-2 later to maint).
   (merge d57fa7fc73 la/doc-interpret-trailers later to maint).
   (merge 548afb0d9a la/docs-typofixes later to maint).
   (merge 3744ffcbcd rs/doc-ls-tree-hex-literal later to maint).
   (merge 6c26da8404 mh/credential-erase-improvements later to maint).
   (merge 78e56cff69 tz/lib-gpg-prereq-fix later to maint).
   (merge 80d32e84b5 rj/leakfixes later to maint).
   (merge 0a868031ed pb/complete-diff-options later to maint).
   (merge d4f28279ad jc/doc-hash-object-types later to maint).
   (merge 1876a5ae15 ks/t4205-test-describe-with-abbrev-fix later to maint).
   (merge 6e6a529b57 jk/fsck-indices-in-worktrees later to maint).
   (merge 3e81b896f7 rs/packet-length-simplify later to maint).
   (merge 4c9cb51fe7 mh/doc-credential-helpers later to maint).
   (merge 3437f549dd jr/gitignore-doc-example-markup later to maint).
   (merge 947ebd62a0 jc/am-parseopt-fix later to maint).
   (merge e12cb98e1e jc/branch-parseopt-fix later to maint).
   (merge d6f598e443 jc/gitignore-doc-pattern-markup later to maint).
   (merge a2dad4868b jc/transport-parseopt-fix later to maint).
   (merge 68cbb20e73 jc/parse-options-show-branch later to maint).
   (merge 3821eb6c3d jc/parse-options-reset later to maint).
   (merge c48af99a3e bb/trace2-comment-fix later to maint).
   (merge c95ae3ff9c rs/describe-parseopt-fix later to maint).
   (merge 36f76d2a25 rs/pack-objects-parseopt-fix later to maint).
   (merge 30c8c55cbf jc/tree-walk-drop-base-offset later to maint).

----------------------------------------------------------------

Changes since v2.41.0 are as follows:

Alejandro R. Sedeño (1):
      statinfo.h: move DTYPE defines from dir.h

Alex Henrie (4):
      wt-status: don't show divergence advice when committing
      remote: don't imply that integration is always required before pushing
      push: don't imply that integration is always required before pushing
      sequencer: finish parsing the todo list despite an invalid first line

Andreas Herrmann (3):
      configure.ac: don't overwrite NO_EXPAT option
      configure.ac: don't overwrite NO_CURL option
      configure.ac: always save NO_ICONV to config.status

Beat Bolli (2):
      trace2: fix a comment
      wrapper: use trace2 counters to collect fsync stats

Calvin Wan (13):
      strbuf: clarify API boundary
      strbuf: clarify dependency
      abspath: move related functions to abspath
      credential-store: move related functions to credential-store file
      object-name: move related functions to object-name
      path: move related function to path
      strbuf: remove global variable
      git-compat-util: move strbuf.c funcs to its header
      git-compat-util: move wrapper.c funcs to its header
      sane-ctype.h: create header for sane-ctype macros
      kwset: move translation table from ctype
      treewide: remove unnecessary includes for wrapper.h
      git-compat-util: move alloc macros to git-compat-util.h

D. Ben Knoble (2):
      i18n: mark more bundle.c strings for translation
      t4002: fix "diff can read from stdin" syntax

Derrick Stolee (7):
      add: check color.ui for interactive add
      add: test use of brackets when color is disabled
      repository: create disable_replace_refs()
      replace-objects: create wrapper around setting
      repository: create read_replace_refs setting
      packfile: delete .idx files before .pack files
      builtin/repack.c: only repack `.pack`s that exist

Elijah Newren (28):
      init-db: document existing bug with core.bare in template config
      init-db: remove unnecessary global variable
      init-db, clone: change unnecessary global into passed parameter
      setup: adopt shared init-db & clone code
      read-cache: move shared commit and ls-files code
      add: modify add_files_to_cache() to avoid globals
      read-cache: move shared add/checkout/commit code
      statinfo: move stat_{data,validity} functions from cache/read-cache
      run-command.h: move declarations for run-command.c from cache.h
      name-hash.h: move declarations for name-hash.c from cache.h
      sparse-index.h: move declarations for sparse-index.c from cache.h
      preload-index.h: move declarations for preload-index.c from elsewhere
      diff.h: move declaration for global in diff.c from cache.h
      merge.h: move declarations for merge.c from cache.h
      repository.h: move declaration of the_index from cache.h
      read-cache*.h: move declarations for read-cache.c functions from cache.h
      cache.h: remove this no-longer-used header
      log-tree: replace include of revision.h with simple forward declaration
      repository: remove unnecessary include of path.h
      diff.h: remove unnecessary include of oidset.h
      list-objects-filter-options.h: remove unneccessary include
      builtin.h: remove unneccessary includes
      git-compat-util.h: remove unneccessary include of wildmatch.h
      merge-ll: rename from ll-merge
      khash: name the structs that khash declares
      object-store-ll.h: split this header out of object-store.h
      hash-ll, hashmap: move oidhash() to hash-ll
      fsmonitor-ll.h: split this header out of fsmonitor.h

Eric Sunshine (1):
      fsck: avoid misleading variable name

Glen Choo (15):
      cocci: add headings to and reword README
      cocci: codify authoring and reviewing practices
      setup.c: don't setup in discover_git_directory()
      config: don't BUG when both kvi and source are set
      config: inline git_color_default_config
      urlmatch.h: use config_fn_t type
      config: add ctx arg to config_fn_t
      config.c: pass ctx in configsets
      config: pass ctx with config files
      config.c: pass ctx with CLI config
      trace2: plumb config kvi
      config: pass kvi to die_bad_number()
      config.c: remove config_reader from configsets
      config: add kvi.path, use it to evaluate includes
      config: pass source to config_parser_event_fn_t

Han Young (1):
      blame: allow --contents to work with bare repo

Jacob Abel (11):
      worktree add: include -B in usage docs
      t2400: cleanup created worktree in test
      t2400: refactor "worktree add" opt exclusion tests
      t2400: add tests to verify --quiet
      worktree add: add --orphan flag
      worktree add: introduce "try --orphan" hint
      worktree add: extend DWIM to infer --orphan
      worktree add: emit warn when there is a bad HEAD
      t2400: drop no-op `--sq` from rev-parse call
      builtin/worktree.c: convert tab in advice to space
      t2400: rewrite regex to avoid unintentional PCRE

Jacob Keller (1):
      fix cherry-pick/revert status when doing multiple commits

Jan Klötzke (1):
      ref-filter: handle nested tags in --points-at option

Jeff King (36):
      format-patch: free rev.message_id when exiting
      format-patch: free elements of rev.ref_message_ids list
      pathspec: factor out magic-to-name function
      diff: factor out --follow pathspec check
      diff: detect pathspec magic not supported by --follow
      ci: use clang for ASan/UBSan checks
      ci: run ASan/UBSan in a single job
      ci: drop linux-clang job
      commit: pass --no-divider to interpret-trailers
      http: handle both "h2" and "h2h3" in curl info lines
      var: mark unused parameters in git_var callbacks
      imap-send: use server conf argument in setup_curl()
      imap-send: drop unused parameter from imap_cmd_cb callback
      imap-send: drop unused fields from imap_cmd_cb
      refs.c: rename `ref_filter`
      ref-filter.h: provide `REF_FILTER_INIT`
      ref-filter: clear reachable list pointers after freeing
      ref-filter: add `ref_filter_clear()`
      ref-filter.c: parameterize match functions over patterns
      test-ref-store: drop unimplemented reflog-expire command
      do_for_each_ref_helper(): mark unused repository parameter
      http: mark unused parameters in curl callbacks
      http-push: mark unused parameter in xml callback
      am: mark unused keep_cr parameters
      count-objects: mark unused parameter in alternates callback
      revisions: drop unused "opt" parameter in "tweak" callbacks
      fsck: mark unused parameters in various fsck callbacks
      merge-tree: mark unused parameter in traverse callback
      replace: mark unused parameter in ref callback
      replace: mark unused parameter in each_mergetag_fn callback
      rev-parse: mark unused parameter in for_each_abbrev callback
      tag: mark unused parameters in each_tag_name_fn callbacks
      t/helper: mark unused callback void data parameters
      ref-filter: avoid parsing tagged objects in match_points_at()
      ref-filter: avoid parsing non-tags in match_points_at()
      ref-filter: simplify return type of match_points_at

Johan Ruokangas (1):
      gitignore.txt: use backticks instead of double quotes

Johannes Schindelin (3):
      do_read_index(): always mark index as initialized unless erroring out
      split-index: accept that a base index can be empty
      commit -a -m: allow the top-level tree to become empty again

John Cai (34):
      docs: clarify git-pack-refs --all will pack all refs
      pack-refs: teach --exclude option to exclude refs from being packed
      pack-refs: teach pack-refs --include option
      t0000-basic: modernize test format
      t0030-stripspace: modernize test format
      t3210-pack-refs: modernize test format
      t1001-read-tree-m-2way: modernize test format
      t1002-read-tree-m-u-2way: modernize test format
      t1006-cat-file: modernize test format
      t3500-cherry: modernize test format
      t3700-add: modernize test format
      t3903-stash: modernize test format
      t4002-diff-basic: modernize test format
      t4003-diff-rename-1: modernize test format
      t4004-diff-rename-symlink: modernize test format
      t4202-log: modernize test format
      t4206-log-follow-harder-copies: modernize test format
      t5300-pack-object: modernize test format
      t5301-sliding-window: modernize test format
      t5303-pack-corruption-resilience: modernize test format
      t5306-pack-nobase: modernize test format
      t6050-replace: modernize test format
      t7101-reset-empty-subdirs: modernize test format
      t7110-reset-merge: modernize test format
      t7111-reset-table: modernize test format
      t7201-co: modernize test format
      t7508-status: modernize test format
      t7600-merge: modernize test format
      t7700-repack: modernize test format
      t9100-git-svn-basic: modernize test format
      t9104-git-svn-follow-parent: modernize test format
      t9200-git-cvsexportcommit: modernize test format
      t9400-git-cvsserver-server: modernize test format
      docs: add git hash-object -t option's possible values

Jonathan Tan (1):
      CodingGuidelines: use octal escapes, not hex

Josip Sokcevic (1):
      diff-lib: honor override_submodule_config flag bit

Junio C Hamano (44):
      diff: fix interaction between the "-s" option and other options
      show-branch doc: say <ref>, not <reference>
      Start the 2.42 cycle
      The second batch for 2.42
      The third batch
      ll-merge: killing the external merge driver aborts the merge
      The fourth batch
      t6406: skip "external merge driver getting killed by a signal" test on Windows
      The fifth batch
      The sixth batch
      The seventh batch
      The eighth batch
      t6135: attr magic with path pattern
      tree-walk: lose base_offset that is never used in tree_entry_interesting
      tree-walk: drop unused base_offset from do_match()
      The ninth batch
      dir: match "attr" pathspec magic with correct paths
      The tenth batch
      The eleventh batch
      The twelfth batch
      gitignore.txt: mark up explanation of patterns consistently
      am: simplify parsing of "--[no-]keep-cr"
      branch: reject "--no-all" and "--no-remotes" early
      parse-options: introduce OPT_IPVERSION()
      fetch: reject --no-ipv[46]
      show-branch: --no-sparse should give dense output
      short help: allow multi-line opthelp
      remote: simplify "remote add --tags" help text
      short help: allow a gap smaller than USAGE_GAP
      show-branch: reject --[no-](topo|date)-order
      reset: reject --no-(mixed|soft|hard|merge|keep) option
      The thirteenth batch
      branch: update the message to refuse touching a branch in-use
      hex: retire get_sha1_hex()
      The fourteenth batch
      SubmittingPatches: choice of base for fixing an older maintenance track
      The fifteenth batch
      SubmittingPatches: explain why 'next' and above are inappropriate base
      SubmittingPatches: use of older maintenance tracks is an exception
      The sixteenth batch
      MyFirstContribution: refrain from self-iterating too much
      The seventeenth batch
      The eighteenth batch
      Git 2.42-rc0

Kousik Sanagavarapu (5):
      t/lib-gpg: introduce new prereq GPG2
      ref-filter: add new "signature" atom
      t4205: correctly test %(describe:abbrev=...)
      ref-filter: add multiple-option parsing functions
      ref-filter: add new "describe" atom

Kristoffer Haugsbakk (5):
      doc: tag: document `TAG_EDITMSG`
      t/t7004-tag: add regression test for successful tag creation
      tag: keep the message file in case ref transaction fails
      notes: update documentation for `use_default_notes`
      notes: move the documentation to the struct

Linus Arver (15):
      docs: typofixes
      doc: trailer: fix grammar
      doc: trailer: swap verb order
      doc: trailer: drop "commit message part" phrasing
      doc: trailer: examples: avoid the word "message" by itself
      doc: trailer: remove redundant phrasing
      doc: trailer: use angle brackets for <token> and <value>
      doc: trailer.<token>.command: emphasize deprecation
      doc: trailer: mention 'key' in DESCRIPTION
      doc: trailer: add more examples in DESCRIPTION
      SubmittingPatches: reword awkward phrasing
      SubmittingPatches: discuss subsystems separately from git.git
      SubmittingPatches: de-emphasize branches as starting points
      SubmittingPatches: emphasize need to communicate non-default starting points
      SubmittingPatches: simplify guidance for choosing a starting point

M Hickford (3):
      credential: avoid erasing distinct password
      credential: erase all matching credentials
      doc: gitcredentials: link to helper list

Martin Ågren (1):
      t0091-bugreport.sh: actually verify some content of report

Mike Hommey (2):
      commit-reach: fix memory leak in get_reachable_subset()
      mingw: use lowercase includes for some Windows headers

Patrick Steinhardt (17):
      fetch: drop unused DISPLAY_FORMAT_UNKNOWN enum value
      fetch: drop unneeded NULL-check for `remote_ref`
      fetch: pass through `fetch_config` directly
      fetch: use `fetch_config` to store "fetch.prune" value
      fetch: use `fetch_config` to store "fetch.pruneTags" value
      fetch: use `fetch_config` to store "fetch.showForcedUpdates" value
      fetch: use `fetch_config` to store "fetch.recurseSubmodules" value
      fetch: use `fetch_config` to store "fetch.parallel" value
      fetch: use `fetch_config` to store "submodule.fetchJobs" value
      t1006: don't strip timestamps from expected results
      t1006: modernize test style to use `test_cmp`
      strbuf: provide CRLF-aware helper to read until a specified delimiter
      cat-file: simplify reading from standard input
      cat-file: add option '-Z' that delimits input and output with NUL
      revision: reorder `read_revisions_from_stdin()`
      revision: small readability improvement for reading from stdin
      revision: handle pseudo-opts in `--stdin` mode

Petar Vutov (1):
      doc: highlight that .gitmodules does not support !command

Philippe Blain (30):
      revisions.txt: use description list for special refs
      revisions.txt: document more special refs
      completion: complete REVERT_HEAD and BISECT_HEAD
      git-merge.txt: modernize word choice in "True merge" section
      Documentation: document AUTO_MERGE
      completion: complete AUTO_MERGE
      completion: add comments describing __git_diff_* globals
      completion: complete --break-rewrites
      completion: complete --cc
      completion: complete --combined-all-paths
      completion: complete --compact-summary
      completion: complete --default-prefix
      completion: complete --find-copies
      completion: complete --find-object
      completion: complete --find-renames
      completion: complete --function-context
      completion: complete --ignore-matching-lines
      completion: complete --irreversible-delete
      completion: complete --ita-invisible-in-index and --ita-visible-in-index
      completion: complete --line-prefix
      completion: complete --no-relative
      completion: complete --no-stat
      completion: complete --output
      completion: complete --output-indicator-{context,new,old}
      completion: complete --unified
      completion: complete --ws-error-highlight
      completion: move --pickaxe-{all,regex} to __git_diff_common_options
      completion: complete --diff-merges, its options and --no-diff-merges
      completion: complete --remerge-diff
      diff.c: mention completion above add_diff_options

Phillip Wood (5):
      apply: improve error messages when reading patch
      diff --no-index: refuse to compare stdin to a directory
      diff --no-index: die on error reading stdin
      t4054: test diff --no-index with stdin
      diff --no-index: support reading from named pipes

René Scharfe (18):
      t1800: loosen matching of error message for bad shebang
      run-command: report exec error even on ENOENT
      ls-tree: fix documentation of %x format placeholder
      pretty: factor out expand_separator()
      strbuf: factor out strbuf_expand_step()
      replace strbuf_expand_dict_cb() with strbuf_expand_step()
      replace strbuf_expand() with strbuf_expand_step()
      strbuf: simplify strbuf_expand_literal_cb()
      ls-tree: simplify prefix handling
      pretty: avoid double negative in format_commit_item()
      pkt-line: add size parameter to packet_length()
      pretty: use strchr(3) in userformat_find_requirements()
      t6300: fix setup with GPGSSH but without GPG
      strbuf: use skip_prefix() in strbuf_addftime()
      ls-tree: fix --no-full-name
      describe: fix --no-exact-match
      pack-objects: fix --no-keep-true-parents
      pack-objects: fix --no-quiet

Rubén Justo (11):
      config: fix a leak in git_config_copy_or_rename_section_in_file
      remote: fix a leak in query_matches_negative_refspec
      branch: fix a leak in dwim_and_setup_tracking
      branch: fix a leak in inherit_tracking
      branch: fix a leak in check_tracking_branch
      branch: fix a leak in setup_tracking
      rev-parse: fix a leak with --abbrev-ref
      branch: fix a leak in setup_tracking
      branch: fix a leak in cmd_branch
      config: fix a leak in git_config_copy_or_rename_section_in_file
      tests: mark as passing with SANITIZE=leak

Sean Allred (5):
      show-ref doc: update for internal consistency
      ls-remote doc: remove redundant --tags example
      ls-remote doc: show peeled tags in examples
      ls-remote doc: explain what each example does
      ls-remote doc: document the output format

Shuqi Liang (2):
      diff-tree: integrate with sparse index
      worktree: integrate with sparse-index

Taylor Blau (48):
      object: add object_array initializer helper function
      pack-bitmap.c: extract `fill_in_bitmap()`
      pack-bitmap.c: use commit boundary during bitmap traversal
      builtin/submodule--helper.c: handle missing submodule URLs
      builtin/repack.c: only collect fully-formed packs
      reachable.c: extract `obj_is_recent()`
      gc: introduce `gc.recentObjectsHook`
      pack-bitmap.c: gracefully degrade on failure to load MIDX'd pack
      t7701: make annotated tag unreachable
      fsck: suppress commit-graph output with `--no-progress`
      fsck: suppress MIDX output with `--no-progress`
      commit-graph.c: extract `verify_one_commit_graph()`
      commit-graph.c: iteratively verify commit-graph chains
      commit-graph.c: pass progress to `verify_one_commit_graph()`
      commit-graph.c: avoid duplicated progress output during `verify`
      builtin/for-each-ref.c: add `--exclude` option
      refs: plumb `exclude_patterns` argument throughout
      refs/packed-backend.c: refactor `find_reference_location()`
      refs/packed-backend.c: implement jump lists to avoid excluded pattern(s)
      refs/packed-backend.c: add trace2 counters for jump list
      revision.h: store hidden refs in a `strvec`
      refs.h: let `for_each_namespaced_ref()` take excluded patterns
      refs.h: implement `hidden_refs_to_excludes()`
      builtin/receive-pack.c: avoid enumerating hidden references
      upload-pack.c: avoid enumerating hidden refs where possible
      ls-refs.c: avoid enumerating hidden refs where possible
      builtin/repack.c: avoid dir traversal in `collect_pack_filenames()`
      packfile.c: prevent overflow in `nth_packed_object_id()`
      packfile.c: prevent overflow in `load_idx()`
      packfile.c: use checked arithmetic in `nth_packed_object_offset()`
      midx.c: use `size_t`'s for fanout nr and alloc
      midx.c: prevent overflow in `nth_midxed_object_oid()`
      midx.c: prevent overflow in `nth_midxed_offset()`
      midx.c: store `nr`, `alloc` variables as `size_t`'s
      midx.c: prevent overflow in `write_midx_internal()`
      midx.c: prevent overflow in `fill_included_packs_batch()`
      pack-bitmap.c: ensure that eindex lookups don't overflow
      commit-graph.c: prevent overflow in `write_commit_graph_file()`
      commit-graph.c: prevent overflow in add_graph_to_chain()
      commit-graph.c: prevent overflow in `load_oid_from_graph()`
      commit-graph.c: prevent overflow in `fill_commit_graph_info()`
      commit-graph.c: prevent overflow in `fill_commit_in_graph()`
      commit-graph.c: prevent overflow in `load_tree_for_commit()`
      commit-graph.c: prevent overflow in `split_graph_merge_strategy()`
      commit-graph.c: prevent overflow in `merge_commit_graph()`
      commit-graph.c: prevent overflow in `write_commit_graph()`
      commit-graph.c: prevent overflow in `verify_commit_graph()`
      Documentation/RelNotes/2.42.0.txt: typofix

Teng Long (8):
      surround %s with quotes when failed to lookup commit
      notes.c: cleanup 'strbuf_grow' call in 'append_edit'
      notes.c: use designated initializers for clarity
      t3321: add test cases about the notes stripspace behavior
      notes.c: introduce '--separator=<paragraph-break>' option
      notes.c: append separator instead of insert by pos
      notes.c: introduce "--[no-]stripspace" option
      notes: introduce "--no-separator" option

Todd Zullinger (3):
      trace2 tests: fix PTHREADS prereq
      t/lib-gpg: fix ssh-keygen -Y check-novalidate with openssh-9.0
      t/lib-gpg: require GPGSSH for GPGSSH_VERIFYTIME prereq

Victoria Dye (3):
      config: use gitdir to get worktree config
      config: pass 'repo' directly to 'config_with_options()'
      repository: move 'repository_format_worktree_config' to repo scope

Vinayak Dev (1):
      docs: add necessary headers to Documentation/MFOW.txt

ZheNing Hu (1):
      ls-files: align format atoms with ls-tree

brian m. carlson (7):
      t: add a function to check executable bit
      var: add support for listing the shell
      var: format variable structure with C99 initializers
      var: adjust memory allocation for strings
      attr: expose and rename accessor functions
      var: add attributes files locations
      var: add config file locations


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.41.0
@ 2023-06-01 10:11  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-06-01 10:11 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

The latest feature release Git v2.41.0 is now available at the
usual places.  It is comprised of 542 non-merge commits since
v2.40.0, contributed by 95 people, 29 of which are new faces [*].

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.41.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.40.0 are as follows.
Welcome to the Git development community!

  Adam Johnson, André Baptista, Andy Koppe, Arkadii Yakovets,
  Benjamin Jorand, Clement Mabileau, Corentin Garcia, Cristian Le,
  Daniel Watson, D. Ben Knoble, Douglas Anderson, Edwin Kofler,
  Jonas Haag, Jouke Witteveen, Kate Golovanova, Matthias Görgens,
  Maxim Cournoyer, Michael Henry, Michael Strawbridge, Nico Rieck,
  Peter Dave Hello, Raghul Nanth A, Rolf Eike Beer, Shuqi Liang,
  Siddharth Singh, Stanislav Malishevskiy, Stephane Odul, Vítor
  Pinho, and Xin Xing.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alexander Shopov, Alex Henrie,
  Andreas Schwab, Andrei Rybak, Bagas Sanjaya, Beat Bolli, brian
  m. carlson, Christian Hesse, Daniel Santos, Derrick Stolee,
  Elijah Newren, Emily Shaffer, Emir SARI, Eric Sunshine, Eric
  Wong, Fangyi Zhou, Felipe Contreras, Glen Choo, Han Xin, Jacob
  Keller, Jean-Noël Avila, Jeff King, Jiang Xin, Joakim Petersen,
  Johannes Schindelin, Johannes Sixt, John Cai, John Keeping,
  Jordi Mas, Josh Soref, Junio C Hamano, Kristoffer Haugsbakk,
  Linus Arver, Linus Torvalds, Martin Ågren, Mathias Krause,
  Matthew John Cheetham, Matthias Rüster, M Hickford, Michael
  J Gruber, Mike Hommey, Oswald Buddenhagen, Øystein Walle,
  Patrick Steinhardt, Paul Eggert, Peter Krefting, Philippe Blain,
  Phillip Wood, Ralf Thielow, Randall S. Becker, René Scharfe,
  Robin Jarry, Rubén Justo, RyotaK, Sohom Datta, SZEDER Gábor,
  Tao Klerks, Taylor Blau, Teng Long, Todd Zullinger, Torsten
  Bögershausen, William Sprent, Yi-Jyun Pan, ZheNing Hu,
  and 依云.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.41 Release Notes
=======================

UI, Workflows & Features

 * Allow information carried on the WWW-Authenticate header to be
   passed to the credential helpers.

 * A new "fetch.hideRefs" option can be used to exclude specified refs
   from "rev-list --objects --stdin --not --all" traversal for
   checking object connectivity, most useful when there are many
   unrelated histories in a single repository.

 * "git push" has been taught to allow deletion of refs with one-level
   names to help repairing a repository who acquired such a ref by
   mistake.  In general, we don't encourage use of such a ref, and
   creation or update to such a ref is rejected as before.

 * Allow "git bisect reset" to check out the original branch when the
   branch is already checked out in a different worktree linked to the
   same repository.

 * A few subcommands have been taught to stop users from working on a
   branch that is being used in another worktree linked to the same
   repository.

 * "git format-patch" learned to write a log-message only output file
   for empty commits.

 * "git format-patch" honors the src/dst prefixes set to nonstandard
   values with configuration variables like "diff.noprefix", causing
   receiving end of the patch that expects the standard -p1 format to
   break.  "format-patch" has been taught to ignore end-user configuration
   and always use the standard prefixes.

   This is a backward compatibility breaking change.

 * Lift the limitation that colored prompts can only be used with
   PROMPT_COMMAND mode.

 * "git blame --contents=<file> <rev> -- <path>" used to be forbidden,
   but now it finds the origins of lines starting at <file> contents
   through the history that leads to <rev>.

 * "git pack-redundant" gave a warning when run, as the command has
   outlived its usefulness long ago and is nominated for future
   removal.  Now we escalate to give an error.

 * "git clone" from an empty repository learned to propagate the
   choice of the hash algorithm from the source repository to the
   newly created repository over any one of the v0/v1/v2 protocol.

 * "git mergetool" and "git difftool" learns a new configuration
   guiDefault to optionally favor configured guitool over non-gui-tool
   automatically when $DISPLAY is set.

 * "git branch -d origin/master" would say "no such branch", but it is
   likely a missed "-r" if refs/remotes/origin/master exists.  The
   command has been taught to give such a hint in its error message.

 * Clean-up of the code path that deals with merge strategy option
   handling in "git rebase".

 * "git clone --local" stops copying from an original repository that
   has symbolic links inside its $GIT_DIR; an error message when that
   happens has been updated.

 * The "--format=..." option of "git for-each-ref", "git branch", and
   "git tag" commands learn "--omit-empty" to hide refs whose
   formatting results in an empty string from the output.

 * The sendemail-validate validate hook learned to pass the total
   number of input files and where in the sequence each invocation is
   via environment variables.

 * When "gc" needs to retain unreachable objects, packing them into
   cruft packs (instead of exploding them into loose object files) has
   been offered as a more efficient option for some time.  Now the use
   of cruft packs has been made the default and no longer considered
   an experimental feature.

 * The output given by "git blame" that attributes a line to contents
   taken from the file specified by the "--contents" option shows it
   differently from a line attributed to the working tree file.

 * "git send-email" learned to give the e-mail headers to the validate
   hook by passing an extra argument from the command line.

 * The credential subsystem learns to help OAuth framework.

 * The titles of manual pages used to be chomped at an unreasonably
   short limit, which has been removed.

 * Error messages given when working on an unborn branch that is
   checked out in another worktree have been improved.

 * The documentation was misleading about the interaction between
   GIT_DEFAULT_HASH and "git clone", which has been clarified to
   stress that the variable is to be ignored by the command.

 * "git send-email" learned "--header-cmd=<cmd>" that can inject
   arbitrary e-mail header lines to the outgoing messages.

 * "git fsck" learned to detect bit-flip breakages in the reachability
   bitmap files.

 * The "--stdin" option of "git name-rev" has been replaced with
   the "--annotate-stdin" option more than a year ago.  We stop
   advertising it in the "git name-rev -h" output.

 * "git push --all" gained an alias "git push --branches".

 * "git fetch" learned the "--porcelain" option that emits what it did
   in a machine-parseable format.

 * "git --attr-source=<tree> cmd $args" is a new way to have any
   command to read attributes not from the working tree but from the
   given tree object.


Performance, Internal Implementation, Development Support etc.

 * Code clean-up to clarify directory traversal API.

 * Code clean-up to clarify the rule that "git-compat-util.h" must be
   the first to be included.

 * More work towards -Wunused.

 * Instead of forcing each command to choose to honor GPG related
   configuration variables, make the subsystem lazily initialize
   itself.

 * Remove workaround for ancient versions of DocBook to make it work
   correctly with groff, which has not been necessary since docbook
   1.76 from 2010.

 * Code clean-up to include and/or uninclude parse-options.h file as
   needed.

 * The code path that reports what "git fetch" did to each ref has
   been cleaned up.

 * Assorted config API updates.

 * A few configuration variables to tell the cURL library that
   different types of ssl-cert and ssl-key are in use have been added.

 * Split key function and data structure definitions out of cache.h to
   new header files and adjust the users.

 * "git fetch --all" does not have to download and handle the same
   bundleURI over and over, which has been corrected.

 * "git sparse-checkout" command learns a debugging aid for the sparse
   rule definitions.

 * "git write-tree" learns to work better with sparse-index.

 * The on-disk reverse index that allows mapping from the pack offset
   to the object name for the object stored at the offset has been
   enabled by default.

 * "git fsck" learned to validate the on-disk pack reverse index files.

 * strtok() and strtok_r() are banned in this codebase.

 * The detect-compilers script to help auto-tweaking the build system
   had trouble working with compilers whose version number has extra
   suffixes.  The script has been taught that certain suffixes (like
   "-win32" in "gcc 10-win32") can be safely stripped as they share
   the same features and bugs with the version without the suffix.

 * ctype tests have been taught to test EOF, too.

 * The implementation of credential helpers used fgets() over fixed
   size buffers to read protocol messages, causing the remainder of
   the folded long line to trigger unexpected behaviour, which has
   been corrected.

 * The implementation of the default "negotiator", used to find common
   ancestor over the network for object tranfer, used to be recursive;
   it was updated to be iterative to conserve stackspace usage.

 * Our custom callout formatter is no longer used in the documentation
   formatting toolchain, as the upstream default ones give better
   output these days.

 * The tracing mechanism learned to notice and report when
   auto-discovered bare repositories are being used, as allowing so
   without explicitly stating the user intends to do so (with setting
   GIT_DIR for example) can be used with social engineering as an
   attack vector.

 * "git diff-files" learned not to expand sparse-index unless needed.


Fixes since v2.40
-----------------

 * "git fsck" learned to check the index files in other worktrees,
   just like "git gc" honors them as anchoring points.
   (merge 8d3e7eac52 jk/fsck-indices-in-worktrees later to maint).

 * Fix a segfaulting loop.  The function and its caller may need
   further clean-up.
   (merge c5773dc078 ew/commit-reach-clean-up-flags-fix later to maint).

 * "git restore" supports options like "--ours" that are only
   meaningful during a conflicted merge, but these options are only
   meaningful when updating the working tree files.  These options are
   marked to be incompatible when both "--staged" and "--worktree" are
   in effect.
   (merge ee8a88826a ak/restore-both-incompatible-with-conflicts later to maint).

 * Simplify UI to control progress meter given by "git bundle" command.
   (merge 8b95521edb jk/bundle-progress later to maint).

 * "git bundle" learned that "-" is a common way to say that the input
   comes from the standard input and/or the output goes to the
   standard output.  It used to work only for output and only from the
   root level of the working tree.
   (merge 0bbe10313e jk/bundle-use-dash-for-stdfiles later to maint).

 * Once we start running, we assumed that the list of alternate object
   databases would never change.  Hook into the machinery used to
   update the list of packfiles during runtime to update this list as
   well.
   (merge e2d003dbed ds/reprepare-alternates-when-repreparing-packfiles later to maint).

 * The code to parse "git rebase -X<opt>" was not prepared to see an
   unparsable option string, which has been corrected.
   (merge 15a4cc912e ab/fix-strategy-opts-parsing later to maint).

 * "git add -p" while the index is unmerged sometimes failed to parse
   the diff output it internally produces and died, which has been
   corrected.
   (merge 28d1122f9c jk/add-p-unmerged-fix later to maint).

 * Fix for a "ls-files --format="%(path)" that produced nonsense
   output, which was a bug in 2.38.
   (merge cfb62dd006 aj/ls-files-format-fix later to maint).

 * "git receive-pack" that responds to "git push" requests failed to
   clean a stale lockfile when killed in the middle, which has been
   corrected.
   (merge c55c30669c ps/receive-pack-unlock-before-die later to maint).

 * "git rev-parse --quiet foo@{u}", or anything that asks @{u} to be
   parsed with GET_OID_QUIETLY option, did not quietly fail, which has
   been corrected.
   (merge dfbfdc521d fc/oid-quietly-parse-upstream later to maint).

 * Transports that do not support protocol v2 did not correctly fall
   back to protocol v0 under certain conditions, which has been
   corrected.
   (merge eaa0fd6584 jk/fix-proto-downgrade-to-v0 later to maint).

 * time(2) on glib 2.31+, especially on Linux, goes out of sync with
   higher resolution timers used for gettimeofday(2) and by the
   filesystem.  Replace all calls to it with a git_time() wrapper and
   (merge 370ddcbc89 pe/time-use-gettimeofday later to maint).

 * Code clean-up to use designated initializers in parse-options API.
   (merge 353e6d4554 sg/parse-options-h-initializers later to maint).

 * A recent-ish change to allow unicode character classes to be used
   with "grep -P" triggered a JIT bug in older pcre2 libraries.
   The problematic change in Git built with these older libraries has
   been disabled to work around the bug.
   (merge 14b9a04479 mk/workaround-pcre-jit-ucp-bug later to maint).

 * The wildmatch library code unlearns exponential behaviour it
   acquired some time ago since it was borrowed from rsync.
   (merge 3dc0b7f0dc pw/wildmatch-fixes later to maint).

 * The index files can become corrupt under certain conditions when
   the split-index feature is in use, especially together with
   fsmonitor, which have been corrected.
   (merge 061dd722dc js/split-index-fixes later to maint).

 * Document what the pathname-looking strings in "rev-list --object"
   output are for and what they mean.
   (merge 15364d2a3c jk/document-rev-list-object-name later to maint).

 * Fix unnecessary truncation of generation numbers used in-core.
   (merge d3af1c193d ps/ahead-behind-truncation-fix later to maint).

 * Code clean-up around the use of the_repository.
   (merge 4a93b899c1 ab/remove-implicit-use-of-the-repository later to maint).

 * Consistently spell "Message-ID" as such, not "Message-Id".
   (merge ba4324c4e1 jc/spell-id-in-both-caps-in-message-id later to maint).

 * Correct use of an uninitialized structure member.
   (merge dc12ee77ab jx/cap-object-info-uninitialized-fix later to maint).

 * Tests had a few places where we ignored PERL_PATH and blindly used
   /usr/bin/perl, which have been corrected.
   (merge c1917156a0 jk/use-perl-path-consistently later to maint).

 * Documentation mark-up fix.
   (merge 78b6369e67 la/mfc-markup-fix later to maint).

 * Doc toolchain update to remove old workaround for AsciiDoc.
   (merge 8806120de6 fc/remove-header-workarounds-for-asciidoc later to maint).

 * The userdiff regexp patterns for various filetypes that are built
   into the system have been updated to avoid triggering regexp errors
   from UTF-8 aware regex engines.
   (merge be39144954 rs/userdiff-multibyte-regex later to maint).

 * The approxidate() API has been simplified by losing an extra
   function that did the same thing as another one.
   (merge 8a7f0b666f rs/remove-approxidate-relative later to maint).

 * Code clean-up to replace a hardcoded constant with a CPP macro.
   (merge c870de6502 rs/get-tar-commit-id-use-defined-const later to maint).

 * Doc build simplification.
   (merge 9a09ed3229 fc/doc-stop-using-manversion later to maint).

 * "git archive" run from a subdirectory mishandled attributes and
   paths outside the current directory.
   (merge 92b1dd1b9e rs/archive-from-subdirectory-fixes later to maint).

 * The code to parse capability list for v0 on-wire protocol fell into
   an infinite loop when a capability appears multiple times, which
   has been corrected.

 * Geometric repacking ("git repack --geometric=<n>") in a repository
   that borrows from an alternate object database had various corner
   case bugs, which have been corrected.
   (merge d85cd18777 ps/fix-geom-repack-with-alternates later to maint).

 * The "%GT" placeholder for the "--format" option of "git log" and
   friends caused BUG() to trigger on a commit signed with an unknown
   key, which has been corrected.
   (merge 7891e46585 jk/gpg-trust-level-fix later to maint).

 * The completion script used to use bare "read" without the "-r"
   option to read the contents of various state files, which risked
   getting confused with backslashes in them.  This has been
   corrected.
   (merge 197152098a ek/completion-use-read-r-to-read-literally later to maint).

 * A small API fix to the ort merge strategy backend.
   (merge 000c4ceca7 en/ort-finalize-after-0-merges-fix later to maint).

 * The commit object parser has been taught to be a bit more lenient
   to parse timestamps on the author/committer line with a malformed
   author/committer ident.
   (merge 90ef0f14eb jk/parse-commit-with-malformed-ident later to maint).

 * Retitle a test script with an overly narrow name.
   (merge 8bb19c14fb ob/t3501-retitle later to maint).

 * Doc update to clarify how text and eol attributes interact to
   specify the end-of-line conversion.
   (merge 6696077ace ah/doc-attributes-text later to maint).

 * Gitk updates from GfW project.
   (merge 99e70f3077 js/gitk-fixes-from-gfw later to maint).

 * "git diff --dirstat" leaked memory, which has been plugged.
   (merge 83973981eb jc/dirstat-plug-leaks later to maint).

 * "git merge-tree" reads the basic configuration, which can be used
    by git forges to disable replace-refs feature.
   (merge b6551feadf ds/merge-tree-use-config later to maint).

 * A few bugs in the sequencer machinery that results in miscounting
   the steps have been corrected.
   (merge 170eea9750 js/rebase-count-fixes later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge f7111175df as/doc-markup-fix later to maint).
   (merge 90ff7c9898 fc/test-aggregation-clean-up later to maint).
   (merge 9b0c7f308a jc/am-doc-refer-to-format-patch later to maint).
   (merge b10cbdac4c bb/unicode-width-table-15 later to maint).
   (merge 3457b50e8c ab/retire-scripted-add-p later to maint).
   (merge d52fcf493b ds/p2000-fix-grep-sparse later to maint).
   (merge ec063d2591 ss/hashmap-typofix later to maint).
   (merge 1aaed69d11 rs/archive-mtime later to maint).
   (merge 2da2cc9b28 ob/rollback-after-commit-lock-failure later to maint).
   (merge 54dbd0933b ob/sequencer-save-head-simplify later to maint).
   (merge a93cbe8d78 ar/test-cleanup-unused-file-creation later to maint).
   (merge cc48ddd937 jk/chainlint-fixes later to maint).
   (merge 4833b08426 ow/ref-format-remove-unused-member later to maint).
   (merge d0ea2ca1cf dw/doc-submittingpatches-grammofix later to maint).
   (merge fd72637423 ar/t2024-checkout-output-fix later to maint).
   (merge d45cbe3fe0 ob/sequencer-i18n-fix later to maint).
   (merge b734fe49fd ob/messages-capitalize-exception later to maint).
   (merge ad353d7e77 ma/gittutorial-fixes later to maint).
   (merge a5855fd8d4 ar/test-cleanup-unused-file-creation-part2 later to maint).
   (merge 0c5308af30 sd/doc-gitignore-and-rm-cached later to maint).
   (merge cbb83daeaf kh/doc-interpret-trailers-updates later to maint).
   (merge 3d77fbb664 ar/config-count-tests-updates later to maint).
   (merge b7cf25c8f4 jc/t9800-fix-use-of-show-s-raw later to maint).

----------------------------------------------------------------

Changes since v2.40.0 are as follows:

Adam Johnson (1):
      ls-files: fix "--format" output of relative paths

Alex Henrie (5):
      rebase: add documentation and test for --no-rebase-merges
      rebase: deprecate --rebase-merges=""
      rebase: add a config option for --rebase-merges
      format-patch: correct documentation of --thread without an argument
      docs: rewrite the documentation of the text and eol attributes

Alexander Shopov (1):
      l10n: bg.po: Updated Bulgarian translation (5515t)

Andreas Schwab (1):
      git-merge-tree.txt: replace spurious HTML entity

Andrei Rybak (19):
      t1005: assert output of ls-files
      t1006: assert error output of cat-file
      t1010: don't create unused files
      t1302: don't create unused file
      t1400: assert output of update-ref
      t1404: don't create unused file
      t1507: assert output of rev-parse
      t3060: fix mention of function prune_index
      t2107: fix mention of the_index.cache_changed
      t2024: fix loose/strict local base branch DWIM test
      t1300: drop duplicate test
      t1300: check stderr for "ignores pairs" tests
      t1300: add tests for missing keys
      t0300: don't create unused file
      t1300: fix config file syntax error descriptions
      t1300: don't create unused files
      t1450: don't create unused files
      t1502: don't create unused files
      t2019: don't create unused files

Andy Koppe (1):
      restore: fault --staged --worktree with merge opts

Arkadii Yakovets (3):
      l10n: uk: add initial translation
      l10n: uk: remove stale lines
      l10n: update uk localization

Bagas Sanjaya (1):
      l10n: po-id for 2.41 (round 1)

Beat Bolli (1):
      unicode: update the width tables to Unicode 15

Benjamin Jorand (1):
      l10n: fr: fix translation of stash save help

Christian Hesse (1):
      imap-send: include strbuf.h

Clement Mabileau (1):
      branch: improve error log on branch not found by checking remotes refs

Corentin Garcia (1):
      doc/git-config: add unit for http.lowSpeedLimit

Daniel Santos (1):
      l10n: TEAMS: Update pt_PT repo link

Daniel Watson (1):
      SubmittingPatches: clarify MUA discussion with "the"

Derrick Stolee (19):
      object-file: reprepare alternates when necessary
      for-each-ref: add --stdin option
      for-each-ref: explicitly test no matches
      commit-graph: refactor compute_topological_levels()
      commit-graph: simplify compute_generation_numbers()
      commit-graph: return generation from memory
      commit-reach: implement ahead_behind() logic
      for-each-ref: add ahead-behind format atom
      commit-reach: add tips_reachable_from_bases()
      p2000: remove stray '--sparse' flag from test
      fetch: download bundles once, even with --all
      ci: update 'static-analysis' to Ubuntu 22.04
      fsck: create scaffolding for rev-index checks
      fsck: check rev-index checksums
      fsck: check rev-index position values
      fsck: validate .rev file header
      fsck: verify checksums of all .bitmap files
      fsck: use local repository
      merge-tree: load default git config

Edwin Kofler (1):
      completion: suppress unwanted unescaping of `read`

Elijah Newren (94):
      treewide: ensure one of the appropriate headers is sourced first
      treewide: remove unnecessary git-compat-util.h includes in headers
      treewide: remove unnecessary cache.h includes
      treewide: remove unnecessary cache.h includes in source files
      alloc.h: move ALLOC_GROW() functions from cache.h
      hash.h: move some oid-related declarations from cache.h
      hex.h: move some hex-related declarations from cache.h
      cache.h: remove dependence on hex.h; make other files include it explicitly
      pretty.h: move has_non_ascii() declaration from commit.h
      ident.h: move ident-related declarations out of cache.h
      object.h: stop depending on cache.h; make cache.h depend on object.h
      dir.h: refactor to no longer need to include cache.h
      object-store.h: move struct object_info from cache.h
      replace-object.h: move read_replace_refs declaration from cache.h to here
      treewide: replace cache.h with more direct headers, where possible
      Remove unnecessary includes of builtin.h
      diff.h: remove unnecessary include of object.h
      t2021: fix platform-specific leftover cruft
      unpack-trees: heed requests to overwrite ignored files
      dir: separate public from internal portion of dir_struct
      dir: add a usage note to exclude_per_dir
      dir: mark output only fields of dir_struct as such
      unpack-trees: clean up some flow control
      sparse-checkout: avoid using internal API of unpack-trees
      sparse-checkout: avoid using internal API of unpack-trees, take 2
      unpack_trees: start splitting internal fields from public API
      unpack-trees: mark fields only used internally as internal
      unpack-trees: rewrap a few overlong lines from previous patch
      unpack-trees: special case read-tree debugging as internal usage
      unpack-trees: add usage notices around df_conflict_entry
      treewide: remove unnecessary cache.h inclusion from a few headers
      treewide: be explicit about dependence on gettext.h
      treewide: remove unnecessary inclusion of gettext.h
      treewide: remove unnecessary cache.h inclusion from several sources
      environment: move comment_line_char from cache.h
      abspath.h: move absolute path functions from cache.h
      cache.h: remove expand_user_path()
      path.h: move function declarations for path.c functions from cache.h
      wrapper.h: move declarations for wrapper.c functions from cache.h
      treewide: remove unnecessary includes of cache.h
      environment.h: move declarations for environment.c functions from cache.h
      treewide: remove cache.h inclusion due to environment.h changes
      setup.h: move declarations for setup.c functions from cache.h
      treewide: remove cache.h inclusion due to setup.h changes
      write-or-die.h: move declarations for write-or-die.c functions from cache.h
      csum-file.h: remove unnecessary inclusion of cache.h
      treewide: be explicit about dependence on trace.h & trace2.h
      treewide: be explicit about dependence on advice.h
      treewide: be explicit about dependence on convert.h
      treewide: be explicit about dependence on pack-revindex.h
      treewide: be explicit about dependence on oid-array.h
      treewide: be explicit about dependence on mem-pool.h
      treewide: remove unnecessary cache.h inclusion
      object-name.h: move declarations for object-name.c functions from cache.h
      treewide: remove cache.h inclusion due to object-name.h changes
      git-zlib: move declarations for git-zlib functions from cache.h
      treewide: remove cache.h inclusion due to git-zlib changes
      object-file.h: move declarations for object-file.c functions from cache.h
      treewide: remove cache.h inclusion due to object-file.h changes
      object.h: move some inline functions and defines from cache.h
      treewide: remove cache.h inclusion due to object.h changes
      editor: move editor-related functions and declarations into common file
      treewide: remove cache.h inclusion due to editor.h changes
      pager.h: move declarations for pager.c functions from cache.h
      treewide: remove cache.h inclusion due to pager.h changes
      cache.h: remove unnecessary includes
      treewide: remove double forward declaration of read_in_full
      treewide: reduce includes of cache.h in other headers
      mailmap, quote: move declarations of global vars to correct unit
      protocol.h: move definition of DEFAULT_GIT_PORT from cache.h
      treewide: be explicit about dependence on strbuf.h
      symlinks.h: move declarations for symlinks.c functions from cache.h
      packfile.h: move pack_window and pack_entry from cache.h
      server-info.h: move declarations for server-info.c functions from cache.h
      copy.h: move declarations for copy.c functions from cache.h
      base85.h: move declarations for base85.c functions from cache.h
      pkt-line.h: move declarations for pkt-line.c functions from cache.h
      match-trees.h: move declarations for match-trees.c functions from cache.h
      ws.h: move declarations for ws.c functions from cache.h
      versioncmp.h: move declarations for versioncmp.c functions from cache.h
      dir.h: move DTYPE defines from cache.h
      tree-diff.c: move S_DIFFTREE_IFXMIN_NEQ define from cache.h
      hash-ll.h: split out of hash.h to remove dependency on repository.h
      cache,tree: move cmp_cache_name_compare from tree.[ch] to read-cache.c
      cache,tree: move basic name compare functions from read-cache to tree
      treewide: remove cache.h inclusion due to previous changes
      cache.h: remove unnecessary headers
      fsmonitor: reduce includes of cache.h
      commit.h: reduce unnecessary includes
      object-store.h: reduce unnecessary includes
      diff.h: reduce unnecessary includes
      reftable: ensure git-compat-util.h is the first (indirect) include
      merge-ort: fix calling merge_finalize() with no intermediate merge
      t5583: fix shebang line

Emily Shaffer (1):
      mailmap: change primary address for Emily Shaffer

Emir SARI (1):
      l10n: tr: Update Turkish translations for 2.41.0

Eric Sunshine (1):
      tests: diagnose unclosed here-doc in chainlint.pl

Eric Wong (3):
      commit-reach: avoid NULL dereference
      fetch: support hideRefs to speed up connectivity checks
      fetch: pass --no-write-fetch-head to subprocesses

Fangyi Zhou (1):
      rebase: fix capitalisation autoSquash in i18n string

Felipe Contreras (16):
      advice: add diverging advice for novices
      test: simplify counts aggregation
      test: don't print aggregate-results command
      object-name: fix quiet @{u} parsing
      completion: prompt: use generic colors
      doc: remove GNU troff workaround
      doc: remove manpage-base-url workaround
      doc: asciidoc: remove custom header macro
      doc: simplify man version
      doc: set actual revdate for manpages
      doc: git-checkout: trivial callout cleanup
      doc: git-checkout: reorganize examples
      doc: remove custom callouts format
      doc: manpage: remove maximum title length
      doc: doc-diff: specify date
      test: rev-parse-upstream: add missing cmp

Glen Choo (10):
      config.c: plumb config_source through static fns
      config.c: don't assign to "cf_global" directly
      config.c: create config_reader and the_reader
      config.c: plumb the_reader through callbacks
      config.c: remove current_config_kvi
      config.c: remove current_parsing_scope
      config: report cached filenames in die_bad_number()
      config.c: rename "struct config_source cf"
      clone: error specifically with --local and symlinked objects
      setup: trace bare repository setups

Han Xin (2):
      negotiator/default: avoid stack overflow
      negotiator/skipping: fix some problems in mark_common()

Jacob Keller (2):
      blame: allow --contents to work with non-HEAD commit
      blame: use different author name for fake commit generated by --contents

Jean-Noël Avila (2):
      l10n: fr.po v2.41.0 rnd1
      l10n: fr.po v2.41.0 rnd2

Jeff King (90):
      ref-filter: drop unused atom parameter from get_worktree_path()
      ls-refs: drop config caching
      serve: use repository pointer to get config
      serve: mark unused parameters in virtual functions
      object-name: mark unused parameters in disambiguate callbacks
      http-backend: mark argc/argv unused
      http-backend: mark unused parameters in virtual functions
      ref-filter: mark unused callback parameters
      mark "pointless" data pointers in callbacks
      run-command: mark error routine parameters as unused
      mark unused parameters in signal handlers
      list-objects: mark unused callback parameters
      for_each_object: mark unused callback parameters
      prio-queue: mark unused parameters in comparison functions
      notes: mark unused callback parameters
      fetch-pack: mark unused parameter in callback function
      rewrite_parents(): mark unused callback parameter
      for_each_commit_graft(): mark unused callback parameter
      userformat_want_item(): mark unused parameter
      run_processes_parallel: mark unused callback parameters
      help: mark unused parameter in git_unknown_cmd_config()
      fsck: factor out index fsck
      fsck: check index files in all worktrees
      fsck: mention file path for index errors
      fsck: check even zero-entry index files
      drop pure pass-through config callbacks
      bundle: turn on --all-progress-implied by default
      bundle: let "-" mean stdin for reading operations
      bundle: document handling of "-" as stdin
      parse-options: consistently allocate memory in fix_filename()
      parse-options: use prefix_filename_except_for_dash() helper
      diff: factor out src/dst prefix setup
      t4013: add tests for diff prefix options
      diff: add --default-prefix option
      format-patch: do not respect diff.noprefix
      format-patch: add format.noprefix option
      add-patch: handle "* Unmerged path" lines
      http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
      http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
      range-diff: drop useless "offset" variable from read_patches()
      http: support CURLOPT_PROTOCOLS_STR
      range-diff: handle unterminated lines in read_patches()
      range-diff: use ssize_t for parsed "len" in read_patches()
      rebase: prefer --default-prefix to --{src,dst}-prefix for format-patch
      mailmap: drop debugging code
      http: drop unused parameter from start_object_request()
      http: mark unused parameter in fill_active_slot() callbacks
      transport: mark unused parameters in fetch_refs_from_bundle()
      git_connect(): fix corner cases in downgrading v2 to v0
      fast-export: drop const when storing anonymized values
      fast-export: simplify initialization of anonymized hashmaps
      fast-export: factor out anonymized_entry creation
      fast-export: de-obfuscate --anonymize-map handling
      fast-export: drop data parameter from anonymous generators
      fast-export: drop unused parameter from anonymize_commit_message()
      Makefile: force -O0 when compiling with SANITIZE=leak
      pack-redundant: escalate deprecation warning to an error
      docs: document caveats of rev-list's object-name output
      fast-import: fix file access when run from subdir
      builtins: always pass prefix to parse_options()
      builtins: annotate always-empty prefix parameters
      builtins: mark unused prefix parameters
      mark "argv" as unused when we check argc
      t/helper: mark unused argv/argc arguments
      parse-options: drop parse_opt_unknown_cb()
      pack-redundant: document deprecation
      tests: run internal chain-linter under "make test"
      tests: replace chainlint subshell with a function
      tests: drop here-doc check from internal chain-linter
      tests: skip test_eval_ in internal chain-lint
      t/lib-httpd: pass PERL_PATH to CGI scripts
      v0 protocol: fix infinite loop when parsing multi-valued capabilities
      t5512: stop referring to "v1" protocol
      v0 protocol: fix sha1/sha256 confusion for capabilities^{}
      t5512: add v2 support for "ls-remote --symref" test
      t5512: allow any protocol version for filtered symref test
      t5512: test "ls-remote --heads --symref" filtering with v0 and v2
      v0 protocol: use size_t for capability length/offset
      gpg-interface: set trust level of missing key to "undefined"
      notes: clean up confusing NULL checks in init_notes()
      fetch_bundle_uri(): drop pointless NULL check
      t4212: avoid putting git on left-hand side of pipe
      parse_commit(): parse timestamp from end of line
      parse_commit(): handle broken whitespace-only timestamp
      parse_commit(): describe more date-parsing failure modes
      doc-diff: drop SOURCE_DATE_EPOCH override
      t7001: avoid git on upstream of pipe
      t7001: use "ls-files --format" instead of "cut"
      t: drop "verbose" helper function
      t/lib-httpd: make CGIPassAuth support conditional

Jiang Xin (5):
      github-actions: run gcc-8 on ubuntu-20.04 image
      ci: remove the pipe after "p4 -V" to catch errors
      ci: use the same version of p4 on both Linux and macOS
      ci: install python on ubuntu
      object-info: init request_info before reading arg

Johannes Schindelin (31):
      compat/win32/syslog: fix use-after-realloc
      nedmalloc: avoid new compile error
      t0033: GETTEXT_POISON fix
      t0003: GETTEXT_POISON fix, part 1
      t0003: GETTEXT_POISON fix, conclusion
      t5619: GETTEXT_POISON fix
      t5604: GETTEXT_POISON fix, part 1
      t5604: GETTEXT_POISON fix, conclusion
      clone.c: avoid "exceeds maximum object size" error with GCC v12.x
      split-index & fsmonitor: demonstrate a bug
      split-index; stop abusing the `base_oid` to strip the "link" extension
      fsmonitor: avoid overriding `cache_changed` bits
      unpack-trees: take care to propagate the split-index flag
      t3701: we don't need no Perl for `add -i` anymore
      t5563: prevent "ambiguous redirect"
      apply --reject: overwrite existing `.rej` symlink if it exists
      gettext: avoid using gettext if the locale dir is not present
      tests: avoid using `test_i18ncmp`
      Git 2.31.8
      Git 2.32.7
      Git 2.33.8
      Git 2.34.8
      Git 2.35.8
      Git 2.36.6
      Git 2.37.7
      Git 2.38.5
      Git 2.39.3
      Git 2.40.1
      gitk: prevent overly long command lines
      rebase --update-refs: fix loops
      rebase -r: fix the total number shown in the progress

John Cai (2):
      name-rev: make --stdin hidden
      attr: teach "--attr-source=<tree>" global option to "git"

John Keeping (1):
      format-patch: output header for empty commits

Jordi Mas (2):
      l10n: Update Catalan translation
      l10n: Update Catalan translation

Josh Soref (1):
      subtree: support long global flags

Jouke Witteveen (1):
      send-email docs: Remove mention of discontinued gmail feature

Junio C Hamano (39):
      gpg-interface: lazily initialize and read the configuration
      bundle: don't blindly apply prefix_filename() to "-"
      Start the 2.41 cycle
      The second batch
      am: refer to format-patch in the documentation
      The third batch
      http.c: clear the 'finished' member once we are done with it
      The fourth batch
      The fifth batch
      The sixth batch
      e-mail workflow: Message-ID is spelled with ID in both capital letters
      The seventh batch
      clone: propagate object-format when cloning from void
      The eighth batch
      The ninth batch
      The tenth batch
      The eleventh batch
      The twelfth batch
      The thirteenth batch
      doc: GIT_DEFAULT_HASH is and will be ignored during "clone"
      The fourteenth batch
      The fifteenth batch
      The sixteenth batch
      diff: refactor common tail part of dirstat computation
      diff: plug leaks in dirstat
      t9800: correct misuse of 'show -s --raw' in a test
      The seventeenth batch
      The eighteenth batch
      Git 2.41-rc0
      tests: do not negate test_path_exists
      t2021: do not negate test_path_is_dir
      test: do not negate test_path_is_* to assert absense
      A bit more before -rc1
      send-email: clear the $message_id after validation
      t9001: mark the script as no longer leak checker clean
      Git 2.41-rc1
      A few more topics after 2.41-rc1
      Git 2.41-rc2
      Git 2.41

Kristoffer Haugsbakk (5):
      config: tell the user that we expect an ASCII character
      doc: interpret-trailers: don’t use heredoc in examples
      doc: interpret-trailers: use input redirection
      doc: interpret-trailers: don’t use deprecated config
      doc: interpret-trailers: fix example

Linus Arver (1):
      MyFirstContribution: render literal *

M Hickford (3):
      credential/wincred: include wincred.h
      credential/wincred: store password_expiry_utc
      credential: new attribute oauth_refresh_token

Martin Ågren (2):
      gittutorial: drop early mention of origin
      gittutorial: wrap literal examples in backticks

Mathias Krause (1):
      grep: work around UTF-8 related JIT bug in PCRE2 <= 10.34

Matthew John Cheetham (3):
      t5563: add tests for basic and anoymous HTTP access
      http: read HTTP WWW-Authenticate response headers
      credential: add WWW-Authenticate header to cred requests

Maxim Cournoyer (3):
      send-email: extract execute_cmd from recipients_cmd
      send-email: add --header-cmd, --no-header-cmd options
      send-email: detect empty blank lines in command output

Michael J Gruber (1):
      t3070: make chain lint tester happy

Michael Strawbridge (2):
      send-email: refactor header generation functions
      send-email: expose header information to git-send-email's sendemail-validate hook

Mike Hommey (1):
      Handle some compiler versions containing a dash

Nico Rieck (1):
      gitk: escape file paths before piping to git log

Oswald Buddenhagen (5):
      sequencer: remove pointless rollback_lock_file()
      sequencer: rewrite save_head() in terms of write_message()
      sequencer: actually translate report in do_exec()
      messages: capitalization and punctuation exceptions
      t/t3501-revert-cherry-pick.sh: clarify scope of the file

Patrick Steinhardt (27):
      receive-pack: fix stale packfile locks when dying
      fetch: move reference width calculation into `display_state`
      fetch: move output format into `display_state`
      fetch: pass the full local reference name to `format_display`
      fetch: centralize handling of per-reference format
      fetch: centralize logic to print remote URL
      fetch: centralize printing of reference updates
      commit-graph: fix truncated generation numbers
      midx: fix segfault with no packs and invalid preferred pack
      repack: fix trying to use preferred pack in alternates
      repack: fix generating multi-pack-index with only non-local packs
      pack-objects: split out `--stdin-packs` tests into separate file
      pack-objects: fix error when packing same pack twice
      pack-objects: fix error when same packfile is included and excluded
      pack-objects: extend test coverage of `--stdin-packs` with alternates
      t/helper: allow chmtime to print verbosely without modifying mtime
      repack: honor `-l` when calculating pack geometry
      repack: disable writing bitmaps when doing a local repack
      fetch: fix `--no-recurse-submodules` with multi-remote fetches
      fetch: split out tests for output format
      fetch: add a test to exercise invalid output formats
      fetch: print left-hand side when fetching HEAD:foo
      fetch: refactor calculation of the display table width
      fetch: introduce `display_format` enum
      fetch: lift up parsing of "fetch.output" config variable
      fetch: move option related variables into main function
      fetch: introduce machine-parseable "porcelain" output format

Paul Eggert (1):
      git-compat-util: use gettimeofday(2) for time(2)

Peter Krefting (1):
      l10n: sv.po: Update Swedish translation (5515t0f0u)

Phillip Wood (8):
      wildmatch: fix exponential behavior
      wildmatch: avoid undefined behavior
      wildmatch: hide internal return values
      rebase: stop reading and writing unnecessary strategy state
      sequencer: use struct strvec to store merge strategy options
      rebase -m: cleanup --strategy-option handling
      rebase -m: fix serialization of strategy options
      rebase: remove a couple of redundant strategy tests

Raghul Nanth A (1):
      describe: enable sparse index for describe

Ralf Thielow (1):
      l10n: Update German translation

René Scharfe (6):
      archive: improve support for running in subdirectory
      t5000: use check_mtime()
      userdiff: support regexec(3) with multi-byte support
      date: remove approxidate_relative()
      get-tar-commit-id: use TYPEFLAG_GLOBAL_HEADER instead of magic value
      test-ctype: check EOF

Robin Jarry (1):
      send-email: export patch counters in validate environment

Rubén Justo (10):
      bisect: fix "reset" when branch is checked out elsewhere
      worktree: introduce is_shared_symref()
      branch: fix die_if_checked_out() when ignore_current_worktree
      rebase: refuse to switch to a branch already checked out elsewhere (test)
      switch: reject if the branch is already checked out elsewhere (test)
      branch: test for failures while renaming branches
      branch: use get_worktrees() in copy_or_rename_branch()
      branch: description for orphan branch errors
      branch: rename orphan branches in any worktree
      branch: avoid unnecessary worktrees traversals

SZEDER Gábor (6):
      treewide: include parse-options.h in source files
      treewide: remove unnecessary inclusions of parse-options.h from headers
      parse-options.h: use consistent name for the callback parameters
      parse-options.h: rename _OPT_CONTAINS_OR_WITH()'s parameters
      parse-options.h: use designated initializers in OPT_* macros
      cocci: remove 'unused.cocci'

Shuqi Liang (4):
      write-tree: integrate with sparse index
      t1092: update a write-tree test
      t1092: add tests for `git diff-files`
      diff-files: integrate with sparse index

Siddharth Singh (1):
      hashmap.h: fix minor typo

Sohom Datta (1):
      docs: clarify git rm --cached function in gitignore note

Stanislav Malishevskiy (1):
      http: add support for different sslcert and sslkey types.

Tao Klerks (1):
      mergetool: new config guiDefault supports auto-toggling gui by DISPLAY

Taylor Blau (37):
      commit-graph: introduce `ensure_generations_valid()`
      pack-write.c: plug a leak in stage_tmp_packfiles()
      t5325: mark as leak-free
      pack-revindex: make `load_pack_revindex` take a repository
      pack-revindex: introduce GIT_TEST_REV_INDEX_DIE_ON_DISK
      pack-revindex: introduce `pack.readReverseIndex`
      config: enable `pack.writeReverseIndex` by default
      t: invert `GIT_TEST_WRITE_REV_INDEX`
      t1300: demonstrate failure when renaming sections with long lines
      config: avoid fixed-sized buffer when renaming/deleting a section
      config.c: avoid integer truncation in `copy_or_rename_section_in_file()`
      config.c: disallow overly-long lines in `copy_or_rename_section_in_file()`
      Git 2.30.9
      pack-write.c: plug a leak in stage_tmp_packfiles()
      builtin/repack.c: fix incorrect reference to '-C'
      builtin/gc.c: ignore cruft packs with `--keep-largest-pack`
      t/t5304-prune.sh: prepare for `gc --cruft` by default
      t/t6501-freshen-objects.sh: prepare for `gc --cruft` by default
      t/t6500-gc.sh: refactor cruft pack tests
      t/t6500-gc.sh: add additional test cases
      t/t9300-fast-import.sh: prepare for `gc --cruft` by default
      builtin/gc.c: make `gc.cruftPacks` enabled by default
      repository.h: drop unused `gc_cruft_packs`
      string-list: multi-delimiter `string_list_split_in_place()`
      string-list: introduce `string_list_setlen()`
      t/helper/test-hashmap.c: avoid using `strtok()`
      t/helper/test-oidmap.c: avoid using `strtok()`
      t/helper/test-json-writer.c: avoid using `strtok()`
      banned.h: mark `strtok()` and `strtok_r()` as banned
      credential.c: store "wwwauth[]" values in `credential_read()`
      t/lib-credential.sh: ensure credential helpers handle long headers
      contrib/credential: avoid fixed-size buffer in osxkeychain
      contrib/credential: remove 'gnome-keyring' credential helper
      contrib/credential: .gitignore libsecret build artifacts
      contrib/credential: avoid fixed-size buffer in libsecret
      contrib/credential: embiggen fixed-size buffer in wincred
      run-command.c: fix missing include under `NO_PTHREADS`

Teng Long (2):
      push: introduce '--branches' option
      l10n: zh_CN: Git 2.41.0 round #1

William Sprent (2):
      builtin/sparse-checkout: remove NEED_WORK_TREE flag
      builtin/sparse-checkout: add check-rules command

Yi-Jyun Pan (1):
      l10n: zh_TW.po: Git 2.41.0

ZheNing Hu (2):
      receive-pack: fix funny ref error messsage
      push: allow delete single-level ref

brian m. carlson (1):
      upload-pack: advertise capabilities when cloning empty repos

Ævar Arnfjörð Bjarmason (33):
      auto-crlf tests: don't lose exit code in loops and outside tests
      t/lib-patch-mode.sh: fix ignored exit codes
      tests: don't lose exit status with "(cd ...; test <op> $(git ...))"
      tests: don't lose "git" exit codes in "! ( git ... | grep )"
      tests: don't lose exit status with "test <op> $(git ...)"
      tests: don't lose misc "git" exit codes
      sequencer.c: fix overflow & segfault in parse_strategy_opts()
      cocci: remove dead rule from "the_repository.pending.cocci"
      cocci: fix incorrect & verbose "the_repository" rules
      cocci: sort "the_repository" rules by header
      cocci: add missing "the_repository" macros to "pending"
      cocci: apply the "cache.h" part of "the_repository.pending"
      cocci: apply the "commit-reach.h" part of "the_repository.pending"
      cocci: apply the "commit.h" part of "the_repository.pending"
      cocci: apply the "diff.h" part of "the_repository.pending"
      cocci: apply the "object-store.h" part of "the_repository.pending"
      cocci: apply the "pretty.h" part of "the_repository.pending"
      cocci: apply the "packfile.h" part of "the_repository.pending"
      cocci: apply the "promisor-remote.h" part of "the_repository.pending"
      cocci: apply the "refs.h" part of "the_repository.pending"
      cocci: apply the "rerere.h" part of "the_repository.pending"
      cocci: apply the "revision.h" part of "the_repository.pending"
      post-cocci: adjust comments for recent repo_* migration
      libs: use "struct repository *" argument, not "the_repository"
      config tests: cover blind spots in git_die_config() tests
      config tests: add "NULL" tests for *_get_value_multi()
      config API: add and use a "git_config_get()" family of functions
      versioncmp.c: refactor config reading next commit
      config API: have *_multi() return an "int" and take a "dest"
      for-each-repo: error on bad --config
      config API users: test for *_get_value_multi() segfaults
      config API: add "string" version of *_value_multi(), fix segfaults
      for-each-repo: with bad config, don't conflate <path> and <cmd>

Øystein Walle (2):
      ref-filter: remove unused ref_format member
      branch, for-each-ref, tag: add option to omit empty lines


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.41.0-rc2
@ 2023-05-24 21:41  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-05-24 21:41 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.41.0-rc2 is now available for testing at
the usual places.  It is comprised of 525 non-merge commits since
v2.40.0, contributed by 80 people, 25 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.41.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.40.0 are as follows.
Welcome to the Git development community!

  Adam Johnson, André Baptista, Andy Koppe, Clement Mabileau,
  Corentin Garcia, Cristian Le, Daniel Watson, D. Ben Knoble,
  Douglas Anderson, Edwin Kofler, Jonas Haag, Jouke Witteveen,
  Matthias Görgens, Maxim Cournoyer, Michael Henry, Michael
  Strawbridge, Nico Rieck, Raghul Nanth A, Rolf Eike Beer, Shuqi
  Liang, Siddharth Singh, Stanislav Malishevskiy, Stephane Odul,
  Vítor Pinho, and Xin Xing.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alex Henrie, Andreas Schwab,
  Andrei Rybak, Beat Bolli, brian m. carlson, Christian Hesse,
  Derrick Stolee, Elijah Newren, Emily Shaffer, Eric Sunshine,
  Eric Wong, Fangyi Zhou, Felipe Contreras, Glen Choo, Han Xin,
  Jacob Keller, Jeff King, Jiang Xin, Joakim Petersen, Johannes
  Schindelin, Johannes Sixt, John Cai, John Keeping, Josh Soref,
  Junio C Hamano, Kristoffer Haugsbakk, Linus Arver, Linus
  Torvalds, Martin Ågren, Mathias Krause, Matthew John Cheetham,
  M Hickford, Michael J Gruber, Mike Hommey, Oswald Buddenhagen,
  Øystein Walle, Patrick Steinhardt, Paul Eggert, Philippe Blain,
  Phillip Wood, Randall S. Becker, René Scharfe, Robin Jarry,
  Rubén Justo, RyotaK, Sohom Datta, SZEDER Gábor, Tao Klerks,
  Taylor Blau, Teng Long, Todd Zullinger, Torsten Bögershausen,
  William Sprent, and ZheNing Hu.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.41 Release Notes (draft)
===============================

UI, Workflows & Features

 * Allow information carried on the WWW-Authenticate header to be
   passed to the credential helpers.

 * A new "fetch.hideRefs" option can be used to exclude specified refs
   from "rev-list --objects --stdin --not --all" traversal for
   checking object connectivity, most useful when there are many
   unrelated histories in a single repository.

 * "git push" has been taught to allow deletion of refs with one-level
   names to help repairing a repository who acquired such a ref by
   mistake.  In general, we don't encourage use of such a ref, and
   creation or update to such a ref is rejected as before.

 * Allow "git bisect reset" to check out the original branch when the
   branch is already checked out in a different worktree linked to the
   same repository.

 * A few subcommands have been taught to stop users from working on a
   branch that is being used in another worktree linked to the same
   repository.

 * "git format-patch" learned to write a log-message only output file
   for empty commits.

 * "git format-patch" honors the src/dst prefixes set to nonstandard
   values with configuration variables like "diff.noprefix", causing
   receiving end of the patch that expects the standard -p1 format to
   break.  "format-patch" has been taught to ignore end-user configuration
   and always use the standard prefixes.

   This is a backward compatibility breaking change.

 * Lift the limitation that colored prompts can only be used with
   PROMPT_COMMAND mode.

 * "git blame --contents=<file> <rev> -- <path>" used to be forbidden,
   but now it finds the origins of lines starting at <file> contents
   through the history that leads to <rev>.

 * "git pack-redundant" gave a warning when run, as the command has
   outlived its usefulness long ago and is nominated for future
   removal.  Now we escalate to give an error.

 * "git clone" from an empty repository learned to propagate the
   choice of the hash algorithm from the source repository to the
   newly created repository over any one of the v0/v1/v2 protocol.

 * "git mergetool" and "git difftool" learns a new configuration
   guiDefault to optionally favor configured guitool over non-gui-tool
   automatically when $DISPLAY is set.

 * "git branch -d origin/master" would say "no such branch", but it is
   likely a missed "-r" if refs/remotes/origin/master exists.  The
   command has been taught to give such a hint in its error message.

 * Clean-up of the code path that deals with merge strategy option
   handling in "git rebase".

 * "git clone --local" stops copying from an original repository that
   has symbolic links inside its $GIT_DIR; an error message when that
   happens has been updated.

 * The "--format=..." option of "git for-each-ref", "git branch", and
   "git tag" commands learn "--omit-empty" to hide refs whose
   formatting results in an empty string from the output.

 * The sendemail-validate validate hook learned to pass the total
   number of input files and where in the sequence each invocation is
   via environment variables.

 * When "gc" needs to retain unreachable objects, packing them into
   cruft packs (instead of exploding them into loose object files) has
   been offered as a more efficient option for some time.  Now the use
   of cruft packs has been made the default and no longer considered
   an experimental feature.

 * The output given by "git blame" that attributes a line to contents
   taken from the file specified by the "--contents" option shows it
   differently from a line attributed to the working tree file.

 * "git send-email" learned to give the e-mail headers to the validate
   hook by passing an extra argument from the command line.

 * The credential subsystem learns to help OAuth framework.

 * The titles of manual pages used to be chomped at an unreasonably
   short limit, which has been removed.

 * Error messages given when working on an unborn branch that is
   checked out in another worktree have been improved.

 * The documentation was misleading about the interaction between
   GIT_DEFAULT_HASH and "git clone", which has been clarified to
   stress that the variable is to be ignored by the command.

 * "git send-email" learned "--header-cmd=<cmd>" that can inject
   arbitrary e-mail header lines to the outgoing messages.

 * "git fsck" learned to detect bit-flip breakages in the reachability
   bitmap files.

 * The "--stdin" option of "git name-rev" has been replaced with
   the "--annotate-stdin" option more than a year ago.  We stop
   advertising it in the "git name-rev -h" output.

 * "git push --all" gained an alias "git push --branches".

 * "git fetch" learned the "--porcelain" option that emits what it did
   in a machine-parseable format.

 * "git --attr-source=<tree> cmd $args" is a new way to have any
   command to read attributes not from the working tree but from the
   given tree object.


Performance, Internal Implementation, Development Support etc.

 * Code clean-up to clarify directory traversal API.

 * Code clean-up to clarify the rule that "git-compat-util.h" must be
   the first to be included.

 * More work towards -Wunused.

 * Instead of forcing each command to choose to honor GPG related
   configuration variables, make the subsystem lazily initialize
   itself.

 * Remove workaround for ancient versions of DocBook to make it work
   correctly with groff, which has not been necessary since docbook
   1.76 from 2010.

 * Code clean-up to include and/or uninclude parse-options.h file as
   needed.

 * The code path that reports what "git fetch" did to each ref has
   been cleaned up.

 * Assorted config API updates.

 * A few configuration variables to tell the cURL library that
   different types of ssl-cert and ssl-key are in use have been added.

 * Split key function and data structure definitions out of cache.h to
   new header files and adjust the users.

 * "git fetch --all" does not have to download and handle the same
   bundleURI over and over, which has been corrected.

 * "git sparse-checkout" command learns a debugging aid for the sparse
   rule definitions.

 * "git write-tree" learns to work better with sparse-index.

 * The on-disk reverse index that allows mapping from the pack offset
   to the object name for the object stored at the offset has been
   enabled by default.

 * "git fsck" learned to validate the on-disk pack reverse index files.

 * strtok() and strtok_r() are banned in this codebase.

 * The detect-compilers script to help auto-tweaking the build system
   had trouble working with compilers whose version number has extra
   suffixes.  The script has been taught that certain suffixes (like
   "-win32" in "gcc 10-win32") can be safely stripped as they share
   the same features and bugs with the version without the suffix.

 * ctype tests have been taught to test EOF, too.

 * The implementation of credential helpers used fgets() over fixed
   size buffers to read protocol messages, causing the remainder of
   the folded long line to trigger unexpected behaviour, which has
   been corrected.

 * The implementation of the default "negotiator", used to find common
   ancestor over the network for object tranfer, used to be recursive;
   it was updated to be iterative to conserve stackspace usage.

 * Our custom callout formatter is no longer used in the documentation
   formatting toolchain, as the upstream default ones give better
   output these days.

 * The tracing mechanism learned to notice and report when
   auto-discovered bare repositories are being used, as allowing so
   without explicitly stating the user intends to do so (with setting
   GIT_DIR for example) can be used with social engineering as an
   attack vector.

 * "git diff-files" learned not to expand sparse-index unless needed.


Fixes since v2.40
-----------------

 * "git fsck" learned to check the index files in other worktrees,
   just like "git gc" honors them as anchoring points.
   (merge 8d3e7eac52 jk/fsck-indices-in-worktrees later to maint).

 * Fix a segfaulting loop.  The function and its caller may need
   further clean-up.
   (merge c5773dc078 ew/commit-reach-clean-up-flags-fix later to maint).

 * "git restore" supports options like "--ours" that are only
   meaningful during a conflicted merge, but these options are only
   meaningful when updating the working tree files.  These options are
   marked to be incompatible when both "--staged" and "--worktree" are
   in effect.
   (merge ee8a88826a ak/restore-both-incompatible-with-conflicts later to maint).

 * Simplify UI to control progress meter given by "git bundle" command.
   (merge 8b95521edb jk/bundle-progress later to maint).

 * "git bundle" learned that "-" is a common way to say that the input
   comes from the standard input and/or the output goes to the
   standard output.  It used to work only for output and only from the
   root level of the working tree.
   (merge 0bbe10313e jk/bundle-use-dash-for-stdfiles later to maint).

 * Once we start running, we assumed that the list of alternate object
   databases would never change.  Hook into the machinery used to
   update the list of packfiles during runtime to update this list as
   well.
   (merge e2d003dbed ds/reprepare-alternates-when-repreparing-packfiles later to maint).

 * The code to parse "git rebase -X<opt>" was not prepared to see an
   unparsable option string, which has been corrected.
   (merge 15a4cc912e ab/fix-strategy-opts-parsing later to maint).

 * "git add -p" while the index is unmerged sometimes failed to parse
   the diff output it internally produces and died, which has been
   corrected.
   (merge 28d1122f9c jk/add-p-unmerged-fix later to maint).

 * Fix for a "ls-files --format="%(path)" that produced nonsense
   output, which was a bug in 2.38.
   (merge cfb62dd006 aj/ls-files-format-fix later to maint).

 * "git receive-pack" that responds to "git push" requests failed to
   clean a stale lockfile when killed in the middle, which has been
   corrected.
   (merge c55c30669c ps/receive-pack-unlock-before-die later to maint).

 * "git rev-parse --quiet foo@{u}", or anything that asks @{u} to be
   parsed with GET_OID_QUIETLY option, did not quietly fail, which has
   been corrected.
   (merge dfbfdc521d fc/oid-quietly-parse-upstream later to maint).

 * Transports that do not support protocol v2 did not correctly fall
   back to protocol v0 under certain conditions, which has been
   corrected.
   (merge eaa0fd6584 jk/fix-proto-downgrade-to-v0 later to maint).

 * time(2) on glib 2.31+, especially on Linux, goes out of sync with
   higher resolution timers used for gettimeofday(2) and by the
   filesystem.  Replace all calls to it with a git_time() wrapper and
   (merge 370ddcbc89 pe/time-use-gettimeofday later to maint).

 * Code clean-up to use designated initializers in parse-options API.
   (merge 353e6d4554 sg/parse-options-h-initializers later to maint).

 * A recent-ish change to allow unicode character classes to be used
   with "grep -P" triggered a JIT bug in older pcre2 libraries.
   The problematic change in Git built with these older libraries has
   been disabled to work around the bug.
   (merge 14b9a04479 mk/workaround-pcre-jit-ucp-bug later to maint).

 * The wildmatch library code unlearns exponential behaviour it
   acquired some time ago since it was borrowed from rsync.
   (merge 3dc0b7f0dc pw/wildmatch-fixes later to maint).

 * The index files can become corrupt under certain conditions when
   the split-index feature is in use, especially together with
   fsmonitor, which have been corrected.
   (merge 061dd722dc js/split-index-fixes later to maint).

 * Document what the pathname-looking strings in "rev-list --object"
   output are for and what they mean.
   (merge 15364d2a3c jk/document-rev-list-object-name later to maint).

 * Fix unnecessary truncation of generation numbers used in-core.
   (merge d3af1c193d ps/ahead-behind-truncation-fix later to maint).

 * Code clean-up around the use of the_repository.
   (merge 4a93b899c1 ab/remove-implicit-use-of-the-repository later to maint).

 * Consistently spell "Message-ID" as such, not "Message-Id".
   (merge ba4324c4e1 jc/spell-id-in-both-caps-in-message-id later to maint).

 * Correct use of an uninitialized structure member.
   (merge dc12ee77ab jx/cap-object-info-uninitialized-fix later to maint).

 * Tests had a few places where we ignored PERL_PATH and blindly used
   /usr/bin/perl, which have been corrected.
   (merge c1917156a0 jk/use-perl-path-consistently later to maint).

 * Documentation mark-up fix.
   (merge 78b6369e67 la/mfc-markup-fix later to maint).

 * Doc toolchain update to remove old workaround for AsciiDoc.
   (merge 8806120de6 fc/remove-header-workarounds-for-asciidoc later to maint).

 * The userdiff regexp patterns for various filetypes that are built
   into the system have been updated to avoid triggering regexp errors
   from UTF-8 aware regex engines.
   (merge be39144954 rs/userdiff-multibyte-regex later to maint).

 * The approxidate() API has been simplified by losing an extra
   function that did the same thing as another one.
   (merge 8a7f0b666f rs/remove-approxidate-relative later to maint).

 * Code clean-up to replace a hardcoded constant with a CPP macro.
   (merge c870de6502 rs/get-tar-commit-id-use-defined-const later to maint).

 * Doc build simplification.
   (merge 9a09ed3229 fc/doc-stop-using-manversion later to maint).

 * "git archive" run from a subdirectory mishandled attributes and
   paths outside the current directory.
   (merge 92b1dd1b9e rs/archive-from-subdirectory-fixes later to maint).

 * The code to parse capability list for v0 on-wire protocol fell into
   an infinite loop when a capability appears multiple times, which
   has been corrected.

 * Geometric repacking ("git repack --geometric=<n>") in a repository
   that borrows from an alternate object database had various corner
   case bugs, which have been corrected.
   (merge d85cd18777 ps/fix-geom-repack-with-alternates later to maint).

 * The "%GT" placeholder for the "--format" option of "git log" and
   friends caused BUG() to trigger on a commit signed with an unknown
   key, which has been corrected.
   (merge 7891e46585 jk/gpg-trust-level-fix later to maint).

 * The completion script used to use bare "read" without the "-r"
   option to read the contents of various state files, which risked
   getting confused with backslashes in them.  This has been
   corrected.
   (merge 197152098a ek/completion-use-read-r-to-read-literally later to maint).

 * A small API fix to the ort merge strategy backend.
   (merge 000c4ceca7 en/ort-finalize-after-0-merges-fix later to maint).

 * The commit object parser has been taught to be a bit more lenient
   to parse timestamps on the author/committer line with a malformed
   author/committer ident.
   (merge 90ef0f14eb jk/parse-commit-with-malformed-ident later to maint).

 * Retitle a test script with an overly narrow name.
   (merge 8bb19c14fb ob/t3501-retitle later to maint).

 * Doc update to clarify how text and eol attributes interact to
   specify the end-of-line conversion.
   (merge 6696077ace ah/doc-attributes-text later to maint).

 * Gitk updates from GfW project.
   (merge 99e70f3077 js/gitk-fixes-from-gfw later to maint).

 * "git diff --dirstat" leaked memory, which has been plugged.
   (merge 83973981eb jc/dirstat-plug-leaks later to maint).

 * "git merge-tree" reads the basic configuration, which can be used
    by git forges to disable replace-refs feature.
   (merge b6551feadf ds/merge-tree-use-config later to maint).

 * A few bugs in the sequencer machinery that results in miscounting
   the steps have been corrected.
   (merge 170eea9750 js/rebase-count-fixes later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge f7111175df as/doc-markup-fix later to maint).
   (merge 90ff7c9898 fc/test-aggregation-clean-up later to maint).
   (merge 9b0c7f308a jc/am-doc-refer-to-format-patch later to maint).
   (merge b10cbdac4c bb/unicode-width-table-15 later to maint).
   (merge 3457b50e8c ab/retire-scripted-add-p later to maint).
   (merge d52fcf493b ds/p2000-fix-grep-sparse later to maint).
   (merge ec063d2591 ss/hashmap-typofix later to maint).
   (merge 1aaed69d11 rs/archive-mtime later to maint).
   (merge 2da2cc9b28 ob/rollback-after-commit-lock-failure later to maint).
   (merge 54dbd0933b ob/sequencer-save-head-simplify later to maint).
   (merge a93cbe8d78 ar/test-cleanup-unused-file-creation later to maint).
   (merge cc48ddd937 jk/chainlint-fixes later to maint).
   (merge 4833b08426 ow/ref-format-remove-unused-member later to maint).
   (merge d0ea2ca1cf dw/doc-submittingpatches-grammofix later to maint).
   (merge fd72637423 ar/t2024-checkout-output-fix later to maint).
   (merge d45cbe3fe0 ob/sequencer-i18n-fix later to maint).
   (merge b734fe49fd ob/messages-capitalize-exception later to maint).
   (merge ad353d7e77 ma/gittutorial-fixes later to maint).
   (merge a5855fd8d4 ar/test-cleanup-unused-file-creation-part2 later to maint).
   (merge 0c5308af30 sd/doc-gitignore-and-rm-cached later to maint).
   (merge cbb83daeaf kh/doc-interpret-trailers-updates later to maint).
   (merge 3d77fbb664 ar/config-count-tests-updates later to maint).
   (merge b7cf25c8f4 jc/t9800-fix-use-of-show-s-raw later to maint).

----------------------------------------------------------------

Changes since v2.40.0 are as follows:

Adam Johnson (1):
      ls-files: fix "--format" output of relative paths

Alex Henrie (5):
      rebase: add documentation and test for --no-rebase-merges
      rebase: deprecate --rebase-merges=""
      rebase: add a config option for --rebase-merges
      format-patch: correct documentation of --thread without an argument
      docs: rewrite the documentation of the text and eol attributes

Andreas Schwab (1):
      git-merge-tree.txt: replace spurious HTML entity

Andrei Rybak (19):
      t1005: assert output of ls-files
      t1006: assert error output of cat-file
      t1010: don't create unused files
      t1302: don't create unused file
      t1400: assert output of update-ref
      t1404: don't create unused file
      t1507: assert output of rev-parse
      t3060: fix mention of function prune_index
      t2107: fix mention of the_index.cache_changed
      t2024: fix loose/strict local base branch DWIM test
      t1300: drop duplicate test
      t1300: check stderr for "ignores pairs" tests
      t1300: add tests for missing keys
      t0300: don't create unused file
      t1300: fix config file syntax error descriptions
      t1300: don't create unused files
      t1450: don't create unused files
      t1502: don't create unused files
      t2019: don't create unused files

Andy Koppe (1):
      restore: fault --staged --worktree with merge opts

Beat Bolli (1):
      unicode: update the width tables to Unicode 15

Christian Hesse (1):
      imap-send: include strbuf.h

Clement Mabileau (1):
      branch: improve error log on branch not found by checking remotes refs

Corentin Garcia (1):
      doc/git-config: add unit for http.lowSpeedLimit

Daniel Watson (1):
      SubmittingPatches: clarify MUA discussion with "the"

Derrick Stolee (19):
      object-file: reprepare alternates when necessary
      for-each-ref: add --stdin option
      for-each-ref: explicitly test no matches
      commit-graph: refactor compute_topological_levels()
      commit-graph: simplify compute_generation_numbers()
      commit-graph: return generation from memory
      commit-reach: implement ahead_behind() logic
      for-each-ref: add ahead-behind format atom
      commit-reach: add tips_reachable_from_bases()
      p2000: remove stray '--sparse' flag from test
      fetch: download bundles once, even with --all
      ci: update 'static-analysis' to Ubuntu 22.04
      fsck: create scaffolding for rev-index checks
      fsck: check rev-index checksums
      fsck: check rev-index position values
      fsck: validate .rev file header
      fsck: verify checksums of all .bitmap files
      fsck: use local repository
      merge-tree: load default git config

Edwin Kofler (1):
      completion: suppress unwanted unescaping of `read`

Elijah Newren (94):
      treewide: ensure one of the appropriate headers is sourced first
      treewide: remove unnecessary git-compat-util.h includes in headers
      treewide: remove unnecessary cache.h includes
      treewide: remove unnecessary cache.h includes in source files
      alloc.h: move ALLOC_GROW() functions from cache.h
      hash.h: move some oid-related declarations from cache.h
      hex.h: move some hex-related declarations from cache.h
      cache.h: remove dependence on hex.h; make other files include it explicitly
      pretty.h: move has_non_ascii() declaration from commit.h
      ident.h: move ident-related declarations out of cache.h
      object.h: stop depending on cache.h; make cache.h depend on object.h
      dir.h: refactor to no longer need to include cache.h
      object-store.h: move struct object_info from cache.h
      replace-object.h: move read_replace_refs declaration from cache.h to here
      treewide: replace cache.h with more direct headers, where possible
      Remove unnecessary includes of builtin.h
      diff.h: remove unnecessary include of object.h
      t2021: fix platform-specific leftover cruft
      unpack-trees: heed requests to overwrite ignored files
      dir: separate public from internal portion of dir_struct
      dir: add a usage note to exclude_per_dir
      dir: mark output only fields of dir_struct as such
      unpack-trees: clean up some flow control
      sparse-checkout: avoid using internal API of unpack-trees
      sparse-checkout: avoid using internal API of unpack-trees, take 2
      unpack_trees: start splitting internal fields from public API
      unpack-trees: mark fields only used internally as internal
      unpack-trees: rewrap a few overlong lines from previous patch
      unpack-trees: special case read-tree debugging as internal usage
      unpack-trees: add usage notices around df_conflict_entry
      treewide: remove unnecessary cache.h inclusion from a few headers
      treewide: be explicit about dependence on gettext.h
      treewide: remove unnecessary inclusion of gettext.h
      treewide: remove unnecessary cache.h inclusion from several sources
      environment: move comment_line_char from cache.h
      abspath.h: move absolute path functions from cache.h
      cache.h: remove expand_user_path()
      path.h: move function declarations for path.c functions from cache.h
      wrapper.h: move declarations for wrapper.c functions from cache.h
      treewide: remove unnecessary includes of cache.h
      environment.h: move declarations for environment.c functions from cache.h
      treewide: remove cache.h inclusion due to environment.h changes
      setup.h: move declarations for setup.c functions from cache.h
      treewide: remove cache.h inclusion due to setup.h changes
      write-or-die.h: move declarations for write-or-die.c functions from cache.h
      csum-file.h: remove unnecessary inclusion of cache.h
      treewide: be explicit about dependence on trace.h & trace2.h
      treewide: be explicit about dependence on advice.h
      treewide: be explicit about dependence on convert.h
      treewide: be explicit about dependence on pack-revindex.h
      treewide: be explicit about dependence on oid-array.h
      treewide: be explicit about dependence on mem-pool.h
      treewide: remove unnecessary cache.h inclusion
      object-name.h: move declarations for object-name.c functions from cache.h
      treewide: remove cache.h inclusion due to object-name.h changes
      git-zlib: move declarations for git-zlib functions from cache.h
      treewide: remove cache.h inclusion due to git-zlib changes
      object-file.h: move declarations for object-file.c functions from cache.h
      treewide: remove cache.h inclusion due to object-file.h changes
      object.h: move some inline functions and defines from cache.h
      treewide: remove cache.h inclusion due to object.h changes
      editor: move editor-related functions and declarations into common file
      treewide: remove cache.h inclusion due to editor.h changes
      pager.h: move declarations for pager.c functions from cache.h
      treewide: remove cache.h inclusion due to pager.h changes
      cache.h: remove unnecessary includes
      treewide: remove double forward declaration of read_in_full
      treewide: reduce includes of cache.h in other headers
      mailmap, quote: move declarations of global vars to correct unit
      protocol.h: move definition of DEFAULT_GIT_PORT from cache.h
      treewide: be explicit about dependence on strbuf.h
      symlinks.h: move declarations for symlinks.c functions from cache.h
      packfile.h: move pack_window and pack_entry from cache.h
      server-info.h: move declarations for server-info.c functions from cache.h
      copy.h: move declarations for copy.c functions from cache.h
      base85.h: move declarations for base85.c functions from cache.h
      pkt-line.h: move declarations for pkt-line.c functions from cache.h
      match-trees.h: move declarations for match-trees.c functions from cache.h
      ws.h: move declarations for ws.c functions from cache.h
      versioncmp.h: move declarations for versioncmp.c functions from cache.h
      dir.h: move DTYPE defines from cache.h
      tree-diff.c: move S_DIFFTREE_IFXMIN_NEQ define from cache.h
      hash-ll.h: split out of hash.h to remove dependency on repository.h
      cache,tree: move cmp_cache_name_compare from tree.[ch] to read-cache.c
      cache,tree: move basic name compare functions from read-cache to tree
      treewide: remove cache.h inclusion due to previous changes
      cache.h: remove unnecessary headers
      fsmonitor: reduce includes of cache.h
      commit.h: reduce unnecessary includes
      object-store.h: reduce unnecessary includes
      diff.h: reduce unnecessary includes
      reftable: ensure git-compat-util.h is the first (indirect) include
      merge-ort: fix calling merge_finalize() with no intermediate merge
      t5583: fix shebang line

Emily Shaffer (1):
      mailmap: change primary address for Emily Shaffer

Eric Sunshine (1):
      tests: diagnose unclosed here-doc in chainlint.pl

Eric Wong (3):
      commit-reach: avoid NULL dereference
      fetch: support hideRefs to speed up connectivity checks
      fetch: pass --no-write-fetch-head to subprocesses

Fangyi Zhou (1):
      rebase: fix capitalisation autoSquash in i18n string

Felipe Contreras (16):
      advice: add diverging advice for novices
      test: simplify counts aggregation
      test: don't print aggregate-results command
      object-name: fix quiet @{u} parsing
      completion: prompt: use generic colors
      doc: remove GNU troff workaround
      doc: remove manpage-base-url workaround
      doc: asciidoc: remove custom header macro
      doc: simplify man version
      doc: set actual revdate for manpages
      doc: git-checkout: trivial callout cleanup
      doc: git-checkout: reorganize examples
      doc: remove custom callouts format
      doc: manpage: remove maximum title length
      doc: doc-diff: specify date
      test: rev-parse-upstream: add missing cmp

Glen Choo (10):
      config.c: plumb config_source through static fns
      config.c: don't assign to "cf_global" directly
      config.c: create config_reader and the_reader
      config.c: plumb the_reader through callbacks
      config.c: remove current_config_kvi
      config.c: remove current_parsing_scope
      config: report cached filenames in die_bad_number()
      config.c: rename "struct config_source cf"
      clone: error specifically with --local and symlinked objects
      setup: trace bare repository setups

Han Xin (2):
      negotiator/default: avoid stack overflow
      negotiator/skipping: fix some problems in mark_common()

Jacob Keller (2):
      blame: allow --contents to work with non-HEAD commit
      blame: use different author name for fake commit generated by --contents

Jeff King (90):
      ref-filter: drop unused atom parameter from get_worktree_path()
      ls-refs: drop config caching
      serve: use repository pointer to get config
      serve: mark unused parameters in virtual functions
      object-name: mark unused parameters in disambiguate callbacks
      http-backend: mark argc/argv unused
      http-backend: mark unused parameters in virtual functions
      ref-filter: mark unused callback parameters
      mark "pointless" data pointers in callbacks
      run-command: mark error routine parameters as unused
      mark unused parameters in signal handlers
      list-objects: mark unused callback parameters
      for_each_object: mark unused callback parameters
      prio-queue: mark unused parameters in comparison functions
      notes: mark unused callback parameters
      fetch-pack: mark unused parameter in callback function
      rewrite_parents(): mark unused callback parameter
      for_each_commit_graft(): mark unused callback parameter
      userformat_want_item(): mark unused parameter
      run_processes_parallel: mark unused callback parameters
      help: mark unused parameter in git_unknown_cmd_config()
      fsck: factor out index fsck
      fsck: check index files in all worktrees
      fsck: mention file path for index errors
      fsck: check even zero-entry index files
      drop pure pass-through config callbacks
      bundle: turn on --all-progress-implied by default
      bundle: let "-" mean stdin for reading operations
      bundle: document handling of "-" as stdin
      parse-options: consistently allocate memory in fix_filename()
      parse-options: use prefix_filename_except_for_dash() helper
      diff: factor out src/dst prefix setup
      t4013: add tests for diff prefix options
      diff: add --default-prefix option
      format-patch: do not respect diff.noprefix
      format-patch: add format.noprefix option
      add-patch: handle "* Unmerged path" lines
      http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
      http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
      range-diff: drop useless "offset" variable from read_patches()
      http: support CURLOPT_PROTOCOLS_STR
      range-diff: handle unterminated lines in read_patches()
      range-diff: use ssize_t for parsed "len" in read_patches()
      rebase: prefer --default-prefix to --{src,dst}-prefix for format-patch
      mailmap: drop debugging code
      http: drop unused parameter from start_object_request()
      http: mark unused parameter in fill_active_slot() callbacks
      transport: mark unused parameters in fetch_refs_from_bundle()
      git_connect(): fix corner cases in downgrading v2 to v0
      fast-export: drop const when storing anonymized values
      fast-export: simplify initialization of anonymized hashmaps
      fast-export: factor out anonymized_entry creation
      fast-export: de-obfuscate --anonymize-map handling
      fast-export: drop data parameter from anonymous generators
      fast-export: drop unused parameter from anonymize_commit_message()
      Makefile: force -O0 when compiling with SANITIZE=leak
      pack-redundant: escalate deprecation warning to an error
      docs: document caveats of rev-list's object-name output
      fast-import: fix file access when run from subdir
      builtins: always pass prefix to parse_options()
      builtins: annotate always-empty prefix parameters
      builtins: mark unused prefix parameters
      mark "argv" as unused when we check argc
      t/helper: mark unused argv/argc arguments
      parse-options: drop parse_opt_unknown_cb()
      pack-redundant: document deprecation
      tests: run internal chain-linter under "make test"
      tests: replace chainlint subshell with a function
      tests: drop here-doc check from internal chain-linter
      tests: skip test_eval_ in internal chain-lint
      t/lib-httpd: pass PERL_PATH to CGI scripts
      v0 protocol: fix infinite loop when parsing multi-valued capabilities
      t5512: stop referring to "v1" protocol
      v0 protocol: fix sha1/sha256 confusion for capabilities^{}
      t5512: add v2 support for "ls-remote --symref" test
      t5512: allow any protocol version for filtered symref test
      t5512: test "ls-remote --heads --symref" filtering with v0 and v2
      v0 protocol: use size_t for capability length/offset
      gpg-interface: set trust level of missing key to "undefined"
      notes: clean up confusing NULL checks in init_notes()
      fetch_bundle_uri(): drop pointless NULL check
      t4212: avoid putting git on left-hand side of pipe
      parse_commit(): parse timestamp from end of line
      parse_commit(): handle broken whitespace-only timestamp
      parse_commit(): describe more date-parsing failure modes
      doc-diff: drop SOURCE_DATE_EPOCH override
      t7001: avoid git on upstream of pipe
      t7001: use "ls-files --format" instead of "cut"
      t: drop "verbose" helper function
      t/lib-httpd: make CGIPassAuth support conditional

Jiang Xin (5):
      github-actions: run gcc-8 on ubuntu-20.04 image
      ci: remove the pipe after "p4 -V" to catch errors
      ci: use the same version of p4 on both Linux and macOS
      ci: install python on ubuntu
      object-info: init request_info before reading arg

Johannes Schindelin (31):
      compat/win32/syslog: fix use-after-realloc
      nedmalloc: avoid new compile error
      t0033: GETTEXT_POISON fix
      t0003: GETTEXT_POISON fix, part 1
      t0003: GETTEXT_POISON fix, conclusion
      t5619: GETTEXT_POISON fix
      t5604: GETTEXT_POISON fix, part 1
      t5604: GETTEXT_POISON fix, conclusion
      clone.c: avoid "exceeds maximum object size" error with GCC v12.x
      split-index & fsmonitor: demonstrate a bug
      split-index; stop abusing the `base_oid` to strip the "link" extension
      fsmonitor: avoid overriding `cache_changed` bits
      unpack-trees: take care to propagate the split-index flag
      t3701: we don't need no Perl for `add -i` anymore
      t5563: prevent "ambiguous redirect"
      apply --reject: overwrite existing `.rej` symlink if it exists
      gettext: avoid using gettext if the locale dir is not present
      tests: avoid using `test_i18ncmp`
      Git 2.31.8
      Git 2.32.7
      Git 2.33.8
      Git 2.34.8
      Git 2.35.8
      Git 2.36.6
      Git 2.37.7
      Git 2.38.5
      Git 2.39.3
      Git 2.40.1
      gitk: prevent overly long command lines
      rebase --update-refs: fix loops
      rebase -r: fix the total number shown in the progress

John Cai (2):
      name-rev: make --stdin hidden
      attr: teach "--attr-source=<tree>" global option to "git"

John Keeping (1):
      format-patch: output header for empty commits

Josh Soref (1):
      subtree: support long global flags

Jouke Witteveen (1):
      send-email docs: Remove mention of discontinued gmail feature

Junio C Hamano (38):
      gpg-interface: lazily initialize and read the configuration
      bundle: don't blindly apply prefix_filename() to "-"
      Start the 2.41 cycle
      The second batch
      am: refer to format-patch in the documentation
      The third batch
      http.c: clear the 'finished' member once we are done with it
      The fourth batch
      The fifth batch
      The sixth batch
      e-mail workflow: Message-ID is spelled with ID in both capital letters
      The seventh batch
      clone: propagate object-format when cloning from void
      The eighth batch
      The ninth batch
      The tenth batch
      The eleventh batch
      The twelfth batch
      The thirteenth batch
      doc: GIT_DEFAULT_HASH is and will be ignored during "clone"
      The fourteenth batch
      The fifteenth batch
      The sixteenth batch
      diff: refactor common tail part of dirstat computation
      diff: plug leaks in dirstat
      t9800: correct misuse of 'show -s --raw' in a test
      The seventeenth batch
      The eighteenth batch
      Git 2.41-rc0
      tests: do not negate test_path_exists
      t2021: do not negate test_path_is_dir
      test: do not negate test_path_is_* to assert absense
      A bit more before -rc1
      send-email: clear the $message_id after validation
      t9001: mark the script as no longer leak checker clean
      Git 2.41-rc1
      A few more topics after 2.41-rc1
      Git 2.41-rc2

Kristoffer Haugsbakk (5):
      config: tell the user that we expect an ASCII character
      doc: interpret-trailers: don’t use heredoc in examples
      doc: interpret-trailers: use input redirection
      doc: interpret-trailers: don’t use deprecated config
      doc: interpret-trailers: fix example

Linus Arver (1):
      MyFirstContribution: render literal *

M Hickford (3):
      credential/wincred: include wincred.h
      credential/wincred: store password_expiry_utc
      credential: new attribute oauth_refresh_token

Martin Ågren (2):
      gittutorial: drop early mention of origin
      gittutorial: wrap literal examples in backticks

Mathias Krause (1):
      grep: work around UTF-8 related JIT bug in PCRE2 <= 10.34

Matthew John Cheetham (3):
      t5563: add tests for basic and anoymous HTTP access
      http: read HTTP WWW-Authenticate response headers
      credential: add WWW-Authenticate header to cred requests

Maxim Cournoyer (3):
      send-email: extract execute_cmd from recipients_cmd
      send-email: add --header-cmd, --no-header-cmd options
      send-email: detect empty blank lines in command output

Michael J Gruber (1):
      t3070: make chain lint tester happy

Michael Strawbridge (2):
      send-email: refactor header generation functions
      send-email: expose header information to git-send-email's sendemail-validate hook

Mike Hommey (1):
      Handle some compiler versions containing a dash

Nico Rieck (1):
      gitk: escape file paths before piping to git log

Oswald Buddenhagen (5):
      sequencer: remove pointless rollback_lock_file()
      sequencer: rewrite save_head() in terms of write_message()
      sequencer: actually translate report in do_exec()
      messages: capitalization and punctuation exceptions
      t/t3501-revert-cherry-pick.sh: clarify scope of the file

Patrick Steinhardt (27):
      receive-pack: fix stale packfile locks when dying
      fetch: move reference width calculation into `display_state`
      fetch: move output format into `display_state`
      fetch: pass the full local reference name to `format_display`
      fetch: centralize handling of per-reference format
      fetch: centralize logic to print remote URL
      fetch: centralize printing of reference updates
      commit-graph: fix truncated generation numbers
      midx: fix segfault with no packs and invalid preferred pack
      repack: fix trying to use preferred pack in alternates
      repack: fix generating multi-pack-index with only non-local packs
      pack-objects: split out `--stdin-packs` tests into separate file
      pack-objects: fix error when packing same pack twice
      pack-objects: fix error when same packfile is included and excluded
      pack-objects: extend test coverage of `--stdin-packs` with alternates
      t/helper: allow chmtime to print verbosely without modifying mtime
      repack: honor `-l` when calculating pack geometry
      repack: disable writing bitmaps when doing a local repack
      fetch: fix `--no-recurse-submodules` with multi-remote fetches
      fetch: split out tests for output format
      fetch: add a test to exercise invalid output formats
      fetch: print left-hand side when fetching HEAD:foo
      fetch: refactor calculation of the display table width
      fetch: introduce `display_format` enum
      fetch: lift up parsing of "fetch.output" config variable
      fetch: move option related variables into main function
      fetch: introduce machine-parseable "porcelain" output format

Paul Eggert (1):
      git-compat-util: use gettimeofday(2) for time(2)

Phillip Wood (8):
      wildmatch: fix exponential behavior
      wildmatch: avoid undefined behavior
      wildmatch: hide internal return values
      rebase: stop reading and writing unnecessary strategy state
      sequencer: use struct strvec to store merge strategy options
      rebase -m: cleanup --strategy-option handling
      rebase -m: fix serialization of strategy options
      rebase: remove a couple of redundant strategy tests

Raghul Nanth A (1):
      describe: enable sparse index for describe

René Scharfe (6):
      archive: improve support for running in subdirectory
      t5000: use check_mtime()
      userdiff: support regexec(3) with multi-byte support
      date: remove approxidate_relative()
      get-tar-commit-id: use TYPEFLAG_GLOBAL_HEADER instead of magic value
      test-ctype: check EOF

Robin Jarry (1):
      send-email: export patch counters in validate environment

Rubén Justo (10):
      bisect: fix "reset" when branch is checked out elsewhere
      worktree: introduce is_shared_symref()
      branch: fix die_if_checked_out() when ignore_current_worktree
      rebase: refuse to switch to a branch already checked out elsewhere (test)
      switch: reject if the branch is already checked out elsewhere (test)
      branch: test for failures while renaming branches
      branch: use get_worktrees() in copy_or_rename_branch()
      branch: description for orphan branch errors
      branch: rename orphan branches in any worktree
      branch: avoid unnecessary worktrees traversals

SZEDER Gábor (6):
      treewide: include parse-options.h in source files
      treewide: remove unnecessary inclusions of parse-options.h from headers
      parse-options.h: use consistent name for the callback parameters
      parse-options.h: rename _OPT_CONTAINS_OR_WITH()'s parameters
      parse-options.h: use designated initializers in OPT_* macros
      cocci: remove 'unused.cocci'

Shuqi Liang (4):
      write-tree: integrate with sparse index
      t1092: update a write-tree test
      t1092: add tests for `git diff-files`
      diff-files: integrate with sparse index

Siddharth Singh (1):
      hashmap.h: fix minor typo

Sohom Datta (1):
      docs: clarify git rm --cached function in gitignore note

Stanislav Malishevskiy (1):
      http: add support for different sslcert and sslkey types.

Tao Klerks (1):
      mergetool: new config guiDefault supports auto-toggling gui by DISPLAY

Taylor Blau (37):
      commit-graph: introduce `ensure_generations_valid()`
      pack-write.c: plug a leak in stage_tmp_packfiles()
      t5325: mark as leak-free
      pack-revindex: make `load_pack_revindex` take a repository
      pack-revindex: introduce GIT_TEST_REV_INDEX_DIE_ON_DISK
      pack-revindex: introduce `pack.readReverseIndex`
      config: enable `pack.writeReverseIndex` by default
      t: invert `GIT_TEST_WRITE_REV_INDEX`
      t1300: demonstrate failure when renaming sections with long lines
      config: avoid fixed-sized buffer when renaming/deleting a section
      config.c: avoid integer truncation in `copy_or_rename_section_in_file()`
      config.c: disallow overly-long lines in `copy_or_rename_section_in_file()`
      Git 2.30.9
      pack-write.c: plug a leak in stage_tmp_packfiles()
      builtin/repack.c: fix incorrect reference to '-C'
      builtin/gc.c: ignore cruft packs with `--keep-largest-pack`
      t/t5304-prune.sh: prepare for `gc --cruft` by default
      t/t6501-freshen-objects.sh: prepare for `gc --cruft` by default
      t/t6500-gc.sh: refactor cruft pack tests
      t/t6500-gc.sh: add additional test cases
      t/t9300-fast-import.sh: prepare for `gc --cruft` by default
      builtin/gc.c: make `gc.cruftPacks` enabled by default
      repository.h: drop unused `gc_cruft_packs`
      string-list: multi-delimiter `string_list_split_in_place()`
      string-list: introduce `string_list_setlen()`
      t/helper/test-hashmap.c: avoid using `strtok()`
      t/helper/test-oidmap.c: avoid using `strtok()`
      t/helper/test-json-writer.c: avoid using `strtok()`
      banned.h: mark `strtok()` and `strtok_r()` as banned
      credential.c: store "wwwauth[]" values in `credential_read()`
      t/lib-credential.sh: ensure credential helpers handle long headers
      contrib/credential: avoid fixed-size buffer in osxkeychain
      contrib/credential: remove 'gnome-keyring' credential helper
      contrib/credential: .gitignore libsecret build artifacts
      contrib/credential: avoid fixed-size buffer in libsecret
      contrib/credential: embiggen fixed-size buffer in wincred
      run-command.c: fix missing include under `NO_PTHREADS`

Teng Long (1):
      push: introduce '--branches' option

William Sprent (2):
      builtin/sparse-checkout: remove NEED_WORK_TREE flag
      builtin/sparse-checkout: add check-rules command

ZheNing Hu (2):
      receive-pack: fix funny ref error messsage
      push: allow delete single-level ref

brian m. carlson (1):
      upload-pack: advertise capabilities when cloning empty repos

Ævar Arnfjörð Bjarmason (33):
      auto-crlf tests: don't lose exit code in loops and outside tests
      t/lib-patch-mode.sh: fix ignored exit codes
      tests: don't lose exit status with "(cd ...; test <op> $(git ...))"
      tests: don't lose "git" exit codes in "! ( git ... | grep )"
      tests: don't lose exit status with "test <op> $(git ...)"
      tests: don't lose misc "git" exit codes
      sequencer.c: fix overflow & segfault in parse_strategy_opts()
      cocci: remove dead rule from "the_repository.pending.cocci"
      cocci: fix incorrect & verbose "the_repository" rules
      cocci: sort "the_repository" rules by header
      cocci: add missing "the_repository" macros to "pending"
      cocci: apply the "cache.h" part of "the_repository.pending"
      cocci: apply the "commit-reach.h" part of "the_repository.pending"
      cocci: apply the "commit.h" part of "the_repository.pending"
      cocci: apply the "diff.h" part of "the_repository.pending"
      cocci: apply the "object-store.h" part of "the_repository.pending"
      cocci: apply the "pretty.h" part of "the_repository.pending"
      cocci: apply the "packfile.h" part of "the_repository.pending"
      cocci: apply the "promisor-remote.h" part of "the_repository.pending"
      cocci: apply the "refs.h" part of "the_repository.pending"
      cocci: apply the "rerere.h" part of "the_repository.pending"
      cocci: apply the "revision.h" part of "the_repository.pending"
      post-cocci: adjust comments for recent repo_* migration
      libs: use "struct repository *" argument, not "the_repository"
      config tests: cover blind spots in git_die_config() tests
      config tests: add "NULL" tests for *_get_value_multi()
      config API: add and use a "git_config_get()" family of functions
      versioncmp.c: refactor config reading next commit
      config API: have *_multi() return an "int" and take a "dest"
      for-each-repo: error on bad --config
      config API users: test for *_get_value_multi() segfaults
      config API: add "string" version of *_value_multi(), fix segfaults
      for-each-repo: with bad config, don't conflate <path> and <cmd>

Øystein Walle (2):
      ref-filter: remove unused ref_format member
      branch, for-each-ref, tag: add option to omit empty lines



^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.41.0-rc1
@ 2023-05-19 17:39  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-05-19 17:39 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.41.0-rc1 is now available for testing at
the usual places.  It is comprised of 516 non-merge commits since
v2.40.0, contributed by 79 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.41.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.40.0 are as
follows.  Welcome to the Git development community!

  Adam Johnson, André Baptista, Andy Koppe, Clement Mabileau,
  Cristian Le, Daniel Watson, D. Ben Knoble, Douglas Anderson,
  Edwin Kofler, Jonas Haag, Jouke Witteveen, Matthias Görgens,
  Maxim Cournoyer, Michael Henry, Michael Strawbridge, Nico
  Rieck, Raghul Nanth A, Rolf Eike Beer, Shuqi Liang, Siddharth
  Singh, Stanislav Malishevskiy, Stephane Odul, Vítor Pinho,
  and Xin Xing.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alex Henrie, Andreas Schwab,
  Andrei Rybak, Beat Bolli, brian m. carlson, Christian Hesse,
  Derrick Stolee, Elijah Newren, Emily Shaffer, Eric Sunshine,
  Eric Wong, Fangyi Zhou, Felipe Contreras, Glen Choo, Han Xin,
  Jacob Keller, Jeff King, Jiang Xin, Joakim Petersen, Johannes
  Schindelin, Johannes Sixt, John Cai, John Keeping, Josh Soref,
  Junio C Hamano, Kristoffer Haugsbakk, Linus Arver, Linus
  Torvalds, Martin Ågren, Mathias Krause, Matthew John Cheetham,
  M Hickford, Michael J Gruber, Mike Hommey, Oswald Buddenhagen,
  Øystein Walle, Patrick Steinhardt, Paul Eggert, Philippe Blain,
  Phillip Wood, Randall S. Becker, René Scharfe, Robin Jarry,
  Rubén Justo, RyotaK, Sohom Datta, SZEDER Gábor, Tao Klerks,
  Taylor Blau, Teng Long, Todd Zullinger, Torsten Bögershausen,
  William Sprent, and ZheNing Hu.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.41 Release Notes (draft)
===============================

UI, Workflows & Features

 * Allow information carried on the WWW-Authenticate header to be
   passed to the credential helpers.

 * A new "fetch.hideRefs" option can be used to exclude specified refs
   from "rev-list --objects --stdin --not --all" traversal for
   checking object connectivity, most useful when there are many
   unrelated histories in a single repository.

 * "git push" has been taught to allow deletion of refs with one-level
   names to help repairing a repository who acquired such a ref by
   mistake.  In general, we don't encourage use of such a ref, and
   creation or update to such a ref is rejected as before.

 * Allow "git bisect reset" to check out the original branch when the
   branch is already checked out in a different worktree linked to the
   same repository.

 * A few subcommands have been taught to stop users from working on a
   branch that is being used in another worktree linked to the same
   repository.

 * "git format-patch" learned to write a log-message only output file
   for empty commits.

 * "git format-patch" honors the src/dst prefixes set to nonstandard
   values with configuration variables like "diff.noprefix", causing
   receiving end of the patch that expects the standard -p1 format to
   break.  "format-patch" has been taught to ignore end-user configuration
   and always use the standard prefixes.

   This is a backward compatibility breaking change.

 * Lift the limitation that colored prompts can only be used with
   PROMPT_COMMAND mode.

 * "git blame --contents=<file> <rev> -- <path>" used to be forbidden,
   but now it finds the origins of lines starting at <file> contents
   through the history that leads to <rev>.

 * "git pack-redundant" gave a warning when run, as the command has
   outlived its usefulness long ago and is nominated for future
   removal.  Now we escalate to give an error.

 * "git clone" from an empty repository learned to propagate the
   choice of the hash algorithm from the source repository to the
   newly created repository over any one of the v0/v1/v2 protocol.

 * "git mergetool" and "git difftool" learns a new configuration
   guiDefault to optionally favor configured guitool over non-gui-tool
   automatically when $DISPLAY is set.

 * "git branch -d origin/master" would say "no such branch", but it is
   likely a missed "-r" if refs/remotes/origin/master exists.  The
   command has been taught to give such a hint in its error message.

 * Clean-up of the code path that deals with merge strategy option
   handling in "git rebase".

 * "git clone --local" stops copying from an original repository that
   has symbolic links inside its $GIT_DIR; an error message when that
   happens has been updated.

 * "git branch --format=..." and "git format-patch --format=..."
   learns "--omit-empty" to hide refs that whose formatting result
   becomes an empty string from the output.

 * The sendemail-validate validate hook learned to pass the total
   number of input files and where in the sequence each invocation is
   via environment variables.

 * When "gc" needs to retain unreachable objects, packing them into
   cruft packs (instead of exploding them into loose object files) has
   been offered as a more efficient option for some time.  Now the use
   of cruft packs has been made the default and no longer considered
   an experimental feature.

 * The output given by "git blame" that attributes a line to contents
   taken from the file specified by the "--contents" option shows it
   differently from a line attributed to the working tree file.

 * "git send-email" learned to give the e-mail headers to the validate
   hook by passing an extra argument from the command line.

 * The credential subsystem learns to help OAuth framework.

 * The titles of manual pages used to be chomped at an unreasonably
   short limit, which has been removed.

 * Error messages given when working on an unborn branch that is
   checked out in another worktree have been improved.

 * The documentation was misleading about the interaction between
   GIT_DEFAULT_HASH and "git clone", which has been clarified to
   stress that the variable is to be ignored by the command.

 * "git send-email" learned "--header-cmd=<cmd>" that can inject
   arbitrary e-mail header lines to the outgoing messages.

 * "git fsck" learned to detect bit-flip breakages in the reachability
   bitmap files.

 * The "--stdin" option of "git name-rev" has been replaced with
   the "--annotate-stdin" option more than a year ago.  We stop
   advertising it in the "git name-rev -h" output.

 * "git push --all" gained an alias "git push --branches".

 * "git fetch" learned the "--porcelain" option that emits what it did
   in a machine-parseable format.

 * "git --attr-source=<tree> cmd $args" is a new way to have any
   command to read attributes not from the working tree but from the
   given tree object.


Performance, Internal Implementation, Development Support etc.

 * Code clean-up to clarify directory traversal API.

 * Code clean-up to clarify the rule that "git-compat-util.h" must be
   the first to be included.

 * More work towards -Wunused.

 * Instead of forcing each command to choose to honor GPG related
   configuration variables, make the subsystem lazily initialize
   itself.

 * Remove workaround for ancient versions of DocBook to make it work
   correctly with groff, which has not been necessary since docbook
   1.76 from 2010.

 * Code clean-up to include and/or uninclude parse-options.h file as
   needed.

 * The code path that reports what "git fetch" did to each ref has
   been cleaned up.

 * Assorted config API updates.

 * A few configuration variables to tell the cURL library that
   different types of ssl-cert and ssl-key are in use have been added.

 * Split key function and data structure definitions out of cache.h to
   new header files and adjust the users.

 * "git fetch --all" does not have to download and handle the same
   bundleURI over and over, which has been corrected.

 * "git sparse-checkout" command learns a debugging aid for the sparse
   rule definitions.

 * "git write-tree" learns to work better with sparse-index.

 * The on-disk reverse index that allows mapping from the pack offset
   to the object name for the object stored at the offset has been
   enabled by default.

 * "git fsck" learned to validate the on-disk pack reverse index files.

 * strtok() and strtok_r() are banned in this codebase.

 * The detect-compilers script to help auto-tweaking the build system
   had trouble working with compilers whose version number has extra
   suffixes.  The script has been taught that certain suffixes (like
   "-win32" in "gcc 10-win32") can be safely stripped as they share
   the same features and bugs with the version without the suffix.

 * ctype tests have been taught to test EOF, too.

 * The implementation of credential helpers used fgets() over fixed
   size buffers to read protocol messages, causing the remainder of
   the folded long line to trigger unexpected behaviour, which has
   been corrected.

 * The implementation of the default "negotiator", used to find common
   ancestor over the network for object tranfer, used to be recursive;
   it was updated to be iterative to conserve stackspace usage.

 * Our custom callout formatter is no longer used in the documentation
   formatting toolchain, as the upstream default ones give better
   output these days.

 * The tracing mechanism learned to notice and report when
   auto-discovered bare repositories are being used, as allowing so
   without explicitly stating the user intends to do so (with setting
   GIT_DIR for example) can be used with social engineering as an
   attack vector.

 * "git diff-files" learned not to expand sparse-index unless needed.


Fixes since v2.40
-----------------

 * "git fsck" learned to check the index files in other worktrees,
   just like "git gc" honors them as anchoring points.
   (merge 8d3e7eac52 jk/fsck-indices-in-worktrees later to maint).

 * Fix a segfaulting loop.  The function and its caller may need
   further clean-up.
   (merge c5773dc078 ew/commit-reach-clean-up-flags-fix later to maint).

 * "git restore" supports options like "--ours" that are only
   meaningful during a conflicted merge, but these options are only
   meaningful when updating the working tree files.  These options are
   marked to be incompatible when both "--staged" and "--worktree" are
   in effect.
   (merge ee8a88826a ak/restore-both-incompatible-with-conflicts later to maint).

 * Simplify UI to control progress meter given by "git bundle" command.
   (merge 8b95521edb jk/bundle-progress later to maint).

 * "git bundle" learned that "-" is a common way to say that the input
   comes from the standard input and/or the output goes to the
   standard output.  It used to work only for output and only from the
   root level of the working tree.
   (merge 0bbe10313e jk/bundle-use-dash-for-stdfiles later to maint).

 * Once we start running, we assumed that the list of alternate object
   databases would never change.  Hook into the machinery used to
   update the list of packfiles during runtime to update this list as
   well.
   (merge e2d003dbed ds/reprepare-alternates-when-repreparing-packfiles later to maint).

 * The code to parse "git rebase -X<opt>" was not prepared to see an
   unparsable option string, which has been corrected.
   (merge 15a4cc912e ab/fix-strategy-opts-parsing later to maint).

 * "git add -p" while the index is unmerged sometimes failed to parse
   the diff output it internally produces and died, which has been
   corrected.
   (merge 28d1122f9c jk/add-p-unmerged-fix later to maint).

 * Fix for a "ls-files --format="%(path)" that produced nonsense
   output, which was a bug in 2.38.
   (merge cfb62dd006 aj/ls-files-format-fix later to maint).

 * "git receive-pack" that responds to "git push" requests failed to
   clean a stale lockfile when killed in the middle, which has been
   corrected.
   (merge c55c30669c ps/receive-pack-unlock-before-die later to maint).

 * "git rev-parse --quiet foo@{u}", or anything that asks @{u} to be
   parsed with GET_OID_QUIETLY option, did not quietly fail, which has
   been corrected.
   (merge dfbfdc521d fc/oid-quietly-parse-upstream later to maint).

 * Transports that do not support protocol v2 did not correctly fall
   back to protocol v0 under certain conditions, which has been
   corrected.
   (merge eaa0fd6584 jk/fix-proto-downgrade-to-v0 later to maint).

 * time(2) on glib 2.31+, especially on Linux, goes out of sync with
   higher resolution timers used for gettimeofday(2) and by the
   filesystem.  Replace all calls to it with a git_time() wrapper and
   (merge 370ddcbc89 pe/time-use-gettimeofday later to maint).

 * Code clean-up to use designated initializers in parse-options API.
   (merge 353e6d4554 sg/parse-options-h-initializers later to maint).

 * A recent-ish change to allow unicode character classes to be used
   with "grep -P" triggered a JIT bug in older pcre2 libraries.
   The problematic change in Git built with these older libraries has
   been disabled to work around the bug.
   (merge 14b9a04479 mk/workaround-pcre-jit-ucp-bug later to maint).

 * The wildmatch library code unlearns exponential behaviour it
   acquired some time ago since it was borrowed from rsync.
   (merge 3dc0b7f0dc pw/wildmatch-fixes later to maint).

 * The index files can become corrupt under certain conditions when
   the split-index feature is in use, especially together with
   fsmonitor, which have been corrected.
   (merge 061dd722dc js/split-index-fixes later to maint).

 * Document what the pathname-looking strings in "rev-list --object"
   output are for and what they mean.
   (merge 15364d2a3c jk/document-rev-list-object-name later to maint).

 * Fix unnecessary truncation of generation numbers used in-core.
   (merge d3af1c193d ps/ahead-behind-truncation-fix later to maint).

 * Code clean-up around the use of the_repository.
   (merge 4a93b899c1 ab/remove-implicit-use-of-the-repository later to maint).

 * Consistently spell "Message-ID" as such, not "Message-Id".
   (merge ba4324c4e1 jc/spell-id-in-both-caps-in-message-id later to maint).

 * Correct use of an uninitialized structure member.
   (merge dc12ee77ab jx/cap-object-info-uninitialized-fix later to maint).

 * Tests had a few places where we ignored PERL_PATH and blindly used
   /usr/bin/perl, which have been corrected.
   (merge c1917156a0 jk/use-perl-path-consistently later to maint).

 * Documentation mark-up fix.
   (merge 78b6369e67 la/mfc-markup-fix later to maint).

 * Doc toolchain update to remove old workaround for AsciiDoc.
   (merge 8806120de6 fc/remove-header-workarounds-for-asciidoc later to maint).

 * The userdiff regexp patterns for various filetypes that are built
   into the system have been updated to avoid triggering regexp errors
   from UTF-8 aware regex engines.
   (merge be39144954 rs/userdiff-multibyte-regex later to maint).

 * The approxidate() API has been simplified by losing an extra
   function that did the same thing as another one.
   (merge 8a7f0b666f rs/remove-approxidate-relative later to maint).

 * Code clean-up to replace a hardcoded constant with a CPP macro.
   (merge c870de6502 rs/get-tar-commit-id-use-defined-const later to maint).

 * Doc build simplification.
   (merge 9a09ed3229 fc/doc-stop-using-manversion later to maint).

 * "git archive" run from a subdirectory mishandled attributes and
   paths outside the current directory.
   (merge 92b1dd1b9e rs/archive-from-subdirectory-fixes later to maint).

 * The code to parse capability list for v0 on-wire protocol fell into
   an infinite loop when a capability appears multiple times, which
   has been corrected.

 * Geometric repacking ("git repack --geometric=<n>") in a repository
   that borrows from an alternate object database had various corner
   case bugs, which have been corrected.
   (merge d85cd18777 ps/fix-geom-repack-with-alternates later to maint).

 * The "%GT" placeholder for the "--format" option of "git log" and
   friends caused BUG() to trigger on a commit signed with an unknown
   key, which has been corrected.
   (merge 7891e46585 jk/gpg-trust-level-fix later to maint).

 * The completion script used to use bare "read" without the "-r"
   option to read the contents of various state files, which risked
   getting confused with backslashes in them.  This has been
   corrected.
   (merge 197152098a ek/completion-use-read-r-to-read-literally later to maint).

 * A small API fix to the ort merge strategy backend.
   (merge 000c4ceca7 en/ort-finalize-after-0-merges-fix later to maint).

 * The commit object parser has been taught to be a bit more lenient
   to parse timestamps on the author/committer line with a malformed
   author/committer ident.
   (merge 90ef0f14eb jk/parse-commit-with-malformed-ident later to maint).

 * Retitle a test script with an overly narrow name.
   (merge 8bb19c14fb ob/t3501-retitle later to maint).

 * Doc update to clarify how text and eol attributes interact to
   specify the end-of-line conversion.
   (merge 6696077ace ah/doc-attributes-text later to maint).

 * Gitk updates from GfW project.
   (merge 99e70f3077 js/gitk-fixes-from-gfw later to maint).

 * "git diff --dirstat" leaked memory, which has been plugged.
   (merge 83973981eb jc/dirstat-plug-leaks later to maint).

 * "git merge-tree" reads the basic configuration, which can be used
    by git forges to disable replace-refs feature.
   (merge b6551feadf ds/merge-tree-use-config later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge f7111175df as/doc-markup-fix later to maint).
   (merge 90ff7c9898 fc/test-aggregation-clean-up later to maint).
   (merge 9b0c7f308a jc/am-doc-refer-to-format-patch later to maint).
   (merge b10cbdac4c bb/unicode-width-table-15 later to maint).
   (merge 3457b50e8c ab/retire-scripted-add-p later to maint).
   (merge d52fcf493b ds/p2000-fix-grep-sparse later to maint).
   (merge ec063d2591 ss/hashmap-typofix later to maint).
   (merge 1aaed69d11 rs/archive-mtime later to maint).
   (merge 2da2cc9b28 ob/rollback-after-commit-lock-failure later to maint).
   (merge 54dbd0933b ob/sequencer-save-head-simplify later to maint).
   (merge a93cbe8d78 ar/test-cleanup-unused-file-creation later to maint).
   (merge cc48ddd937 jk/chainlint-fixes later to maint).
   (merge 4833b08426 ow/ref-format-remove-unused-member later to maint).
   (merge d0ea2ca1cf dw/doc-submittingpatches-grammofix later to maint).
   (merge fd72637423 ar/t2024-checkout-output-fix later to maint).
   (merge d45cbe3fe0 ob/sequencer-i18n-fix later to maint).
   (merge b734fe49fd ob/messages-capitalize-exception later to maint).
   (merge ad353d7e77 ma/gittutorial-fixes later to maint).
   (merge a5855fd8d4 ar/test-cleanup-unused-file-creation-part2 later to maint).
   (merge 0c5308af30 sd/doc-gitignore-and-rm-cached later to maint).
   (merge cbb83daeaf kh/doc-interpret-trailers-updates later to maint).
   (merge 3d77fbb664 ar/config-count-tests-updates later to maint).
   (merge b7cf25c8f4 jc/t9800-fix-use-of-show-s-raw later to maint).

----------------------------------------------------------------

Changes since v2.40.0 are as follows:

Adam Johnson (1):
      ls-files: fix "--format" output of relative paths

Alex Henrie (5):
      rebase: add documentation and test for --no-rebase-merges
      rebase: deprecate --rebase-merges=""
      rebase: add a config option for --rebase-merges
      format-patch: correct documentation of --thread without an argument
      docs: rewrite the documentation of the text and eol attributes

Andreas Schwab (1):
      git-merge-tree.txt: replace spurious HTML entity

Andrei Rybak (19):
      t1005: assert output of ls-files
      t1006: assert error output of cat-file
      t1010: don't create unused files
      t1302: don't create unused file
      t1400: assert output of update-ref
      t1404: don't create unused file
      t1507: assert output of rev-parse
      t3060: fix mention of function prune_index
      t2107: fix mention of the_index.cache_changed
      t2024: fix loose/strict local base branch DWIM test
      t1300: drop duplicate test
      t1300: check stderr for "ignores pairs" tests
      t1300: add tests for missing keys
      t0300: don't create unused file
      t1300: fix config file syntax error descriptions
      t1300: don't create unused files
      t1450: don't create unused files
      t1502: don't create unused files
      t2019: don't create unused files

Andy Koppe (1):
      restore: fault --staged --worktree with merge opts

Beat Bolli (1):
      unicode: update the width tables to Unicode 15

Christian Hesse (1):
      imap-send: include strbuf.h

Clement Mabileau (1):
      branch: improve error log on branch not found by checking remotes refs

Daniel Watson (1):
      SubmittingPatches: clarify MUA discussion with "the"

Derrick Stolee (19):
      object-file: reprepare alternates when necessary
      for-each-ref: add --stdin option
      for-each-ref: explicitly test no matches
      commit-graph: refactor compute_topological_levels()
      commit-graph: simplify compute_generation_numbers()
      commit-graph: return generation from memory
      commit-reach: implement ahead_behind() logic
      for-each-ref: add ahead-behind format atom
      commit-reach: add tips_reachable_from_bases()
      p2000: remove stray '--sparse' flag from test
      fetch: download bundles once, even with --all
      ci: update 'static-analysis' to Ubuntu 22.04
      fsck: create scaffolding for rev-index checks
      fsck: check rev-index checksums
      fsck: check rev-index position values
      fsck: validate .rev file header
      fsck: verify checksums of all .bitmap files
      fsck: use local repository
      merge-tree: load default git config

Edwin Kofler (1):
      completion: suppress unwanted unescaping of `read`

Elijah Newren (94):
      treewide: ensure one of the appropriate headers is sourced first
      treewide: remove unnecessary git-compat-util.h includes in headers
      treewide: remove unnecessary cache.h includes
      treewide: remove unnecessary cache.h includes in source files
      alloc.h: move ALLOC_GROW() functions from cache.h
      hash.h: move some oid-related declarations from cache.h
      hex.h: move some hex-related declarations from cache.h
      cache.h: remove dependence on hex.h; make other files include it explicitly
      pretty.h: move has_non_ascii() declaration from commit.h
      ident.h: move ident-related declarations out of cache.h
      object.h: stop depending on cache.h; make cache.h depend on object.h
      dir.h: refactor to no longer need to include cache.h
      object-store.h: move struct object_info from cache.h
      replace-object.h: move read_replace_refs declaration from cache.h to here
      treewide: replace cache.h with more direct headers, where possible
      Remove unnecessary includes of builtin.h
      diff.h: remove unnecessary include of object.h
      t2021: fix platform-specific leftover cruft
      unpack-trees: heed requests to overwrite ignored files
      dir: separate public from internal portion of dir_struct
      dir: add a usage note to exclude_per_dir
      dir: mark output only fields of dir_struct as such
      unpack-trees: clean up some flow control
      sparse-checkout: avoid using internal API of unpack-trees
      sparse-checkout: avoid using internal API of unpack-trees, take 2
      unpack_trees: start splitting internal fields from public API
      unpack-trees: mark fields only used internally as internal
      unpack-trees: rewrap a few overlong lines from previous patch
      unpack-trees: special case read-tree debugging as internal usage
      unpack-trees: add usage notices around df_conflict_entry
      treewide: remove unnecessary cache.h inclusion from a few headers
      treewide: be explicit about dependence on gettext.h
      treewide: remove unnecessary inclusion of gettext.h
      treewide: remove unnecessary cache.h inclusion from several sources
      environment: move comment_line_char from cache.h
      abspath.h: move absolute path functions from cache.h
      cache.h: remove expand_user_path()
      path.h: move function declarations for path.c functions from cache.h
      wrapper.h: move declarations for wrapper.c functions from cache.h
      treewide: remove unnecessary includes of cache.h
      environment.h: move declarations for environment.c functions from cache.h
      treewide: remove cache.h inclusion due to environment.h changes
      setup.h: move declarations for setup.c functions from cache.h
      treewide: remove cache.h inclusion due to setup.h changes
      write-or-die.h: move declarations for write-or-die.c functions from cache.h
      csum-file.h: remove unnecessary inclusion of cache.h
      treewide: be explicit about dependence on trace.h & trace2.h
      treewide: be explicit about dependence on advice.h
      treewide: be explicit about dependence on convert.h
      treewide: be explicit about dependence on pack-revindex.h
      treewide: be explicit about dependence on oid-array.h
      treewide: be explicit about dependence on mem-pool.h
      treewide: remove unnecessary cache.h inclusion
      object-name.h: move declarations for object-name.c functions from cache.h
      treewide: remove cache.h inclusion due to object-name.h changes
      git-zlib: move declarations for git-zlib functions from cache.h
      treewide: remove cache.h inclusion due to git-zlib changes
      object-file.h: move declarations for object-file.c functions from cache.h
      treewide: remove cache.h inclusion due to object-file.h changes
      object.h: move some inline functions and defines from cache.h
      treewide: remove cache.h inclusion due to object.h changes
      editor: move editor-related functions and declarations into common file
      treewide: remove cache.h inclusion due to editor.h changes
      pager.h: move declarations for pager.c functions from cache.h
      treewide: remove cache.h inclusion due to pager.h changes
      cache.h: remove unnecessary includes
      treewide: remove double forward declaration of read_in_full
      treewide: reduce includes of cache.h in other headers
      mailmap, quote: move declarations of global vars to correct unit
      protocol.h: move definition of DEFAULT_GIT_PORT from cache.h
      treewide: be explicit about dependence on strbuf.h
      symlinks.h: move declarations for symlinks.c functions from cache.h
      packfile.h: move pack_window and pack_entry from cache.h
      server-info.h: move declarations for server-info.c functions from cache.h
      copy.h: move declarations for copy.c functions from cache.h
      base85.h: move declarations for base85.c functions from cache.h
      pkt-line.h: move declarations for pkt-line.c functions from cache.h
      match-trees.h: move declarations for match-trees.c functions from cache.h
      ws.h: move declarations for ws.c functions from cache.h
      versioncmp.h: move declarations for versioncmp.c functions from cache.h
      dir.h: move DTYPE defines from cache.h
      tree-diff.c: move S_DIFFTREE_IFXMIN_NEQ define from cache.h
      hash-ll.h: split out of hash.h to remove dependency on repository.h
      cache,tree: move cmp_cache_name_compare from tree.[ch] to read-cache.c
      cache,tree: move basic name compare functions from read-cache to tree
      treewide: remove cache.h inclusion due to previous changes
      cache.h: remove unnecessary headers
      fsmonitor: reduce includes of cache.h
      commit.h: reduce unnecessary includes
      object-store.h: reduce unnecessary includes
      diff.h: reduce unnecessary includes
      reftable: ensure git-compat-util.h is the first (indirect) include
      merge-ort: fix calling merge_finalize() with no intermediate merge
      t5583: fix shebang line

Emily Shaffer (1):
      mailmap: change primary address for Emily Shaffer

Eric Sunshine (1):
      tests: diagnose unclosed here-doc in chainlint.pl

Eric Wong (3):
      commit-reach: avoid NULL dereference
      fetch: support hideRefs to speed up connectivity checks
      fetch: pass --no-write-fetch-head to subprocesses

Fangyi Zhou (1):
      rebase: fix capitalisation autoSquash in i18n string

Felipe Contreras (16):
      advice: add diverging advice for novices
      test: simplify counts aggregation
      test: don't print aggregate-results command
      object-name: fix quiet @{u} parsing
      completion: prompt: use generic colors
      doc: remove GNU troff workaround
      doc: remove manpage-base-url workaround
      doc: asciidoc: remove custom header macro
      doc: simplify man version
      doc: set actual revdate for manpages
      doc: git-checkout: trivial callout cleanup
      doc: git-checkout: reorganize examples
      doc: remove custom callouts format
      doc: manpage: remove maximum title length
      doc: doc-diff: specify date
      test: rev-parse-upstream: add missing cmp

Glen Choo (10):
      config.c: plumb config_source through static fns
      config.c: don't assign to "cf_global" directly
      config.c: create config_reader and the_reader
      config.c: plumb the_reader through callbacks
      config.c: remove current_config_kvi
      config.c: remove current_parsing_scope
      config: report cached filenames in die_bad_number()
      config.c: rename "struct config_source cf"
      clone: error specifically with --local and symlinked objects
      setup: trace bare repository setups

Han Xin (2):
      negotiator/default: avoid stack overflow
      negotiator/skipping: fix some problems in mark_common()

Jacob Keller (2):
      blame: allow --contents to work with non-HEAD commit
      blame: use different author name for fake commit generated by --contents

Jeff King (90):
      ref-filter: drop unused atom parameter from get_worktree_path()
      ls-refs: drop config caching
      serve: use repository pointer to get config
      serve: mark unused parameters in virtual functions
      object-name: mark unused parameters in disambiguate callbacks
      http-backend: mark argc/argv unused
      http-backend: mark unused parameters in virtual functions
      ref-filter: mark unused callback parameters
      mark "pointless" data pointers in callbacks
      run-command: mark error routine parameters as unused
      mark unused parameters in signal handlers
      list-objects: mark unused callback parameters
      for_each_object: mark unused callback parameters
      prio-queue: mark unused parameters in comparison functions
      notes: mark unused callback parameters
      fetch-pack: mark unused parameter in callback function
      rewrite_parents(): mark unused callback parameter
      for_each_commit_graft(): mark unused callback parameter
      userformat_want_item(): mark unused parameter
      run_processes_parallel: mark unused callback parameters
      help: mark unused parameter in git_unknown_cmd_config()
      fsck: factor out index fsck
      fsck: check index files in all worktrees
      fsck: mention file path for index errors
      fsck: check even zero-entry index files
      drop pure pass-through config callbacks
      bundle: turn on --all-progress-implied by default
      bundle: let "-" mean stdin for reading operations
      bundle: document handling of "-" as stdin
      parse-options: consistently allocate memory in fix_filename()
      parse-options: use prefix_filename_except_for_dash() helper
      diff: factor out src/dst prefix setup
      t4013: add tests for diff prefix options
      diff: add --default-prefix option
      format-patch: do not respect diff.noprefix
      format-patch: add format.noprefix option
      add-patch: handle "* Unmerged path" lines
      http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
      http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
      range-diff: drop useless "offset" variable from read_patches()
      http: support CURLOPT_PROTOCOLS_STR
      range-diff: handle unterminated lines in read_patches()
      range-diff: use ssize_t for parsed "len" in read_patches()
      rebase: prefer --default-prefix to --{src,dst}-prefix for format-patch
      mailmap: drop debugging code
      http: drop unused parameter from start_object_request()
      http: mark unused parameter in fill_active_slot() callbacks
      transport: mark unused parameters in fetch_refs_from_bundle()
      git_connect(): fix corner cases in downgrading v2 to v0
      fast-export: drop const when storing anonymized values
      fast-export: simplify initialization of anonymized hashmaps
      fast-export: factor out anonymized_entry creation
      fast-export: de-obfuscate --anonymize-map handling
      fast-export: drop data parameter from anonymous generators
      fast-export: drop unused parameter from anonymize_commit_message()
      Makefile: force -O0 when compiling with SANITIZE=leak
      pack-redundant: escalate deprecation warning to an error
      docs: document caveats of rev-list's object-name output
      fast-import: fix file access when run from subdir
      builtins: always pass prefix to parse_options()
      builtins: annotate always-empty prefix parameters
      builtins: mark unused prefix parameters
      mark "argv" as unused when we check argc
      t/helper: mark unused argv/argc arguments
      parse-options: drop parse_opt_unknown_cb()
      pack-redundant: document deprecation
      tests: run internal chain-linter under "make test"
      tests: replace chainlint subshell with a function
      tests: drop here-doc check from internal chain-linter
      tests: skip test_eval_ in internal chain-lint
      t/lib-httpd: pass PERL_PATH to CGI scripts
      v0 protocol: fix infinite loop when parsing multi-valued capabilities
      t5512: stop referring to "v1" protocol
      v0 protocol: fix sha1/sha256 confusion for capabilities^{}
      t5512: add v2 support for "ls-remote --symref" test
      t5512: allow any protocol version for filtered symref test
      t5512: test "ls-remote --heads --symref" filtering with v0 and v2
      v0 protocol: use size_t for capability length/offset
      gpg-interface: set trust level of missing key to "undefined"
      notes: clean up confusing NULL checks in init_notes()
      fetch_bundle_uri(): drop pointless NULL check
      t4212: avoid putting git on left-hand side of pipe
      parse_commit(): parse timestamp from end of line
      parse_commit(): handle broken whitespace-only timestamp
      parse_commit(): describe more date-parsing failure modes
      doc-diff: drop SOURCE_DATE_EPOCH override
      t7001: avoid git on upstream of pipe
      t7001: use "ls-files --format" instead of "cut"
      t: drop "verbose" helper function
      t/lib-httpd: make CGIPassAuth support conditional

Jiang Xin (5):
      github-actions: run gcc-8 on ubuntu-20.04 image
      ci: remove the pipe after "p4 -V" to catch errors
      ci: use the same version of p4 on both Linux and macOS
      ci: install python on ubuntu
      object-info: init request_info before reading arg

Johannes Schindelin (29):
      compat/win32/syslog: fix use-after-realloc
      nedmalloc: avoid new compile error
      t0033: GETTEXT_POISON fix
      t0003: GETTEXT_POISON fix, part 1
      t0003: GETTEXT_POISON fix, conclusion
      t5619: GETTEXT_POISON fix
      t5604: GETTEXT_POISON fix, part 1
      t5604: GETTEXT_POISON fix, conclusion
      clone.c: avoid "exceeds maximum object size" error with GCC v12.x
      split-index & fsmonitor: demonstrate a bug
      split-index; stop abusing the `base_oid` to strip the "link" extension
      fsmonitor: avoid overriding `cache_changed` bits
      unpack-trees: take care to propagate the split-index flag
      t3701: we don't need no Perl for `add -i` anymore
      t5563: prevent "ambiguous redirect"
      apply --reject: overwrite existing `.rej` symlink if it exists
      gettext: avoid using gettext if the locale dir is not present
      tests: avoid using `test_i18ncmp`
      Git 2.31.8
      Git 2.32.7
      Git 2.33.8
      Git 2.34.8
      Git 2.35.8
      Git 2.36.6
      Git 2.37.7
      Git 2.38.5
      Git 2.39.3
      Git 2.40.1
      gitk: prevent overly long command lines

John Cai (2):
      name-rev: make --stdin hidden
      attr: teach "--attr-source=<tree>" global option to "git"

John Keeping (1):
      format-patch: output header for empty commits

Josh Soref (1):
      subtree: support long global flags

Jouke Witteveen (1):
      send-email docs: Remove mention of discontinued gmail feature

Junio C Hamano (33):
      gpg-interface: lazily initialize and read the configuration
      bundle: don't blindly apply prefix_filename() to "-"
      Start the 2.41 cycle
      The second batch
      am: refer to format-patch in the documentation
      The third batch
      http.c: clear the 'finished' member once we are done with it
      The fourth batch
      The fifth batch
      The sixth batch
      e-mail workflow: Message-ID is spelled with ID in both capital letters
      The seventh batch
      clone: propagate object-format when cloning from void
      The eighth batch
      The ninth batch
      The tenth batch
      The eleventh batch
      The twelfth batch
      The thirteenth batch
      doc: GIT_DEFAULT_HASH is and will be ignored during "clone"
      The fourteenth batch
      The fifteenth batch
      The sixteenth batch
      diff: refactor common tail part of dirstat computation
      diff: plug leaks in dirstat
      t9800: correct misuse of 'show -s --raw' in a test
      The seventeenth batch
      The eighteenth batch
      Git 2.41-rc0
      A bit more before -rc1
      send-email: clear the $message_id after validation
      t9001: mark the script as no longer leak checker clean
      Git 2.41-rc1

Kristoffer Haugsbakk (5):
      config: tell the user that we expect an ASCII character
      doc: interpret-trailers: don’t use heredoc in examples
      doc: interpret-trailers: use input redirection
      doc: interpret-trailers: don’t use deprecated config
      doc: interpret-trailers: fix example

Linus Arver (1):
      MyFirstContribution: render literal *

M Hickford (3):
      credential/wincred: include wincred.h
      credential/wincred: store password_expiry_utc
      credential: new attribute oauth_refresh_token

Martin Ågren (2):
      gittutorial: drop early mention of origin
      gittutorial: wrap literal examples in backticks

Mathias Krause (1):
      grep: work around UTF-8 related JIT bug in PCRE2 <= 10.34

Matthew John Cheetham (3):
      t5563: add tests for basic and anoymous HTTP access
      http: read HTTP WWW-Authenticate response headers
      credential: add WWW-Authenticate header to cred requests

Maxim Cournoyer (3):
      send-email: extract execute_cmd from recipients_cmd
      send-email: add --header-cmd, --no-header-cmd options
      send-email: detect empty blank lines in command output

Michael J Gruber (1):
      t3070: make chain lint tester happy

Michael Strawbridge (2):
      send-email: refactor header generation functions
      send-email: expose header information to git-send-email's sendemail-validate hook

Mike Hommey (1):
      Handle some compiler versions containing a dash

Nico Rieck (1):
      gitk: escape file paths before piping to git log

Oswald Buddenhagen (5):
      sequencer: remove pointless rollback_lock_file()
      sequencer: rewrite save_head() in terms of write_message()
      sequencer: actually translate report in do_exec()
      messages: capitalization and punctuation exceptions
      t/t3501-revert-cherry-pick.sh: clarify scope of the file

Patrick Steinhardt (27):
      receive-pack: fix stale packfile locks when dying
      fetch: move reference width calculation into `display_state`
      fetch: move output format into `display_state`
      fetch: pass the full local reference name to `format_display`
      fetch: centralize handling of per-reference format
      fetch: centralize logic to print remote URL
      fetch: centralize printing of reference updates
      commit-graph: fix truncated generation numbers
      midx: fix segfault with no packs and invalid preferred pack
      repack: fix trying to use preferred pack in alternates
      repack: fix generating multi-pack-index with only non-local packs
      pack-objects: split out `--stdin-packs` tests into separate file
      pack-objects: fix error when packing same pack twice
      pack-objects: fix error when same packfile is included and excluded
      pack-objects: extend test coverage of `--stdin-packs` with alternates
      t/helper: allow chmtime to print verbosely without modifying mtime
      repack: honor `-l` when calculating pack geometry
      repack: disable writing bitmaps when doing a local repack
      fetch: fix `--no-recurse-submodules` with multi-remote fetches
      fetch: split out tests for output format
      fetch: add a test to exercise invalid output formats
      fetch: print left-hand side when fetching HEAD:foo
      fetch: refactor calculation of the display table width
      fetch: introduce `display_format` enum
      fetch: lift up parsing of "fetch.output" config variable
      fetch: move option related variables into main function
      fetch: introduce machine-parseable "porcelain" output format

Paul Eggert (1):
      git-compat-util: use gettimeofday(2) for time(2)

Phillip Wood (8):
      wildmatch: fix exponential behavior
      wildmatch: avoid undefined behavior
      wildmatch: hide internal return values
      rebase: stop reading and writing unnecessary strategy state
      sequencer: use struct strvec to store merge strategy options
      rebase -m: cleanup --strategy-option handling
      rebase -m: fix serialization of strategy options
      rebase: remove a couple of redundant strategy tests

Raghul Nanth A (1):
      describe: enable sparse index for describe

René Scharfe (6):
      archive: improve support for running in subdirectory
      t5000: use check_mtime()
      userdiff: support regexec(3) with multi-byte support
      date: remove approxidate_relative()
      get-tar-commit-id: use TYPEFLAG_GLOBAL_HEADER instead of magic value
      test-ctype: check EOF

Robin Jarry (1):
      send-email: export patch counters in validate environment

Rubén Justo (10):
      bisect: fix "reset" when branch is checked out elsewhere
      worktree: introduce is_shared_symref()
      branch: fix die_if_checked_out() when ignore_current_worktree
      rebase: refuse to switch to a branch already checked out elsewhere (test)
      switch: reject if the branch is already checked out elsewhere (test)
      branch: test for failures while renaming branches
      branch: use get_worktrees() in copy_or_rename_branch()
      branch: description for orphan branch errors
      branch: rename orphan branches in any worktree
      branch: avoid unnecessary worktrees traversals

SZEDER Gábor (6):
      treewide: include parse-options.h in source files
      treewide: remove unnecessary inclusions of parse-options.h from headers
      parse-options.h: use consistent name for the callback parameters
      parse-options.h: rename _OPT_CONTAINS_OR_WITH()'s parameters
      parse-options.h: use designated initializers in OPT_* macros
      cocci: remove 'unused.cocci'

Shuqi Liang (3):
      write-tree: integrate with sparse index
      t1092: add tests for `git diff-files`
      diff-files: integrate with sparse index

Siddharth Singh (1):
      hashmap.h: fix minor typo

Sohom Datta (1):
      docs: clarify git rm --cached function in gitignore note

Stanislav Malishevskiy (1):
      http: add support for different sslcert and sslkey types.

Tao Klerks (1):
      mergetool: new config guiDefault supports auto-toggling gui by DISPLAY

Taylor Blau (37):
      commit-graph: introduce `ensure_generations_valid()`
      pack-write.c: plug a leak in stage_tmp_packfiles()
      t5325: mark as leak-free
      pack-revindex: make `load_pack_revindex` take a repository
      pack-revindex: introduce GIT_TEST_REV_INDEX_DIE_ON_DISK
      pack-revindex: introduce `pack.readReverseIndex`
      config: enable `pack.writeReverseIndex` by default
      t: invert `GIT_TEST_WRITE_REV_INDEX`
      t1300: demonstrate failure when renaming sections with long lines
      config: avoid fixed-sized buffer when renaming/deleting a section
      config.c: avoid integer truncation in `copy_or_rename_section_in_file()`
      config.c: disallow overly-long lines in `copy_or_rename_section_in_file()`
      Git 2.30.9
      pack-write.c: plug a leak in stage_tmp_packfiles()
      builtin/repack.c: fix incorrect reference to '-C'
      builtin/gc.c: ignore cruft packs with `--keep-largest-pack`
      t/t5304-prune.sh: prepare for `gc --cruft` by default
      t/t6501-freshen-objects.sh: prepare for `gc --cruft` by default
      t/t6500-gc.sh: refactor cruft pack tests
      t/t6500-gc.sh: add additional test cases
      t/t9300-fast-import.sh: prepare for `gc --cruft` by default
      builtin/gc.c: make `gc.cruftPacks` enabled by default
      repository.h: drop unused `gc_cruft_packs`
      string-list: multi-delimiter `string_list_split_in_place()`
      string-list: introduce `string_list_setlen()`
      t/helper/test-hashmap.c: avoid using `strtok()`
      t/helper/test-oidmap.c: avoid using `strtok()`
      t/helper/test-json-writer.c: avoid using `strtok()`
      banned.h: mark `strtok()` and `strtok_r()` as banned
      credential.c: store "wwwauth[]" values in `credential_read()`
      t/lib-credential.sh: ensure credential helpers handle long headers
      contrib/credential: avoid fixed-size buffer in osxkeychain
      contrib/credential: remove 'gnome-keyring' credential helper
      contrib/credential: .gitignore libsecret build artifacts
      contrib/credential: avoid fixed-size buffer in libsecret
      contrib/credential: embiggen fixed-size buffer in wincred
      run-command.c: fix missing include under `NO_PTHREADS`

Teng Long (1):
      push: introduce '--branches' option

William Sprent (2):
      builtin/sparse-checkout: remove NEED_WORK_TREE flag
      builtin/sparse-checkout: add check-rules command

ZheNing Hu (2):
      receive-pack: fix funny ref error messsage
      push: allow delete single-level ref

brian m. carlson (1):
      upload-pack: advertise capabilities when cloning empty repos

Ævar Arnfjörð Bjarmason (33):
      auto-crlf tests: don't lose exit code in loops and outside tests
      t/lib-patch-mode.sh: fix ignored exit codes
      tests: don't lose exit status with "(cd ...; test <op> $(git ...))"
      tests: don't lose "git" exit codes in "! ( git ... | grep )"
      tests: don't lose exit status with "test <op> $(git ...)"
      tests: don't lose misc "git" exit codes
      sequencer.c: fix overflow & segfault in parse_strategy_opts()
      cocci: remove dead rule from "the_repository.pending.cocci"
      cocci: fix incorrect & verbose "the_repository" rules
      cocci: sort "the_repository" rules by header
      cocci: add missing "the_repository" macros to "pending"
      cocci: apply the "cache.h" part of "the_repository.pending"
      cocci: apply the "commit-reach.h" part of "the_repository.pending"
      cocci: apply the "commit.h" part of "the_repository.pending"
      cocci: apply the "diff.h" part of "the_repository.pending"
      cocci: apply the "object-store.h" part of "the_repository.pending"
      cocci: apply the "pretty.h" part of "the_repository.pending"
      cocci: apply the "packfile.h" part of "the_repository.pending"
      cocci: apply the "promisor-remote.h" part of "the_repository.pending"
      cocci: apply the "refs.h" part of "the_repository.pending"
      cocci: apply the "rerere.h" part of "the_repository.pending"
      cocci: apply the "revision.h" part of "the_repository.pending"
      post-cocci: adjust comments for recent repo_* migration
      libs: use "struct repository *" argument, not "the_repository"
      config tests: cover blind spots in git_die_config() tests
      config tests: add "NULL" tests for *_get_value_multi()
      config API: add and use a "git_config_get()" family of functions
      versioncmp.c: refactor config reading next commit
      config API: have *_multi() return an "int" and take a "dest"
      for-each-repo: error on bad --config
      config API users: test for *_get_value_multi() segfaults
      config API: add "string" version of *_value_multi(), fix segfaults
      for-each-repo: with bad config, don't conflate <path> and <cmd>

Øystein Walle (2):
      ref-filter: remove unused ref_format member
      branch, for-each-ref, tag: add option to omit empty lines


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.41.0-rc0
@ 2023-05-16  3:42  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-05-16  3:42 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

An early preview release Git v2.41.0-rc0 is now available for
testing at the usual places.  It is comprised of 507 non-merge
commits since v2.40.0, contributed by 74 people, 23 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.41.0-rc0' 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.40.0 are as follows.
Welcome to the Git development community!

  Adam Johnson, André Baptista, Andy Koppe, Clement Mabileau,
  Cristian Le, Daniel Watson, D. Ben Knoble, Edwin Kofler, Jonas
  Haag, Jouke Witteveen, Matthias Görgens, Maxim Cournoyer,
  Michael Henry, Michael Strawbridge, Nico Rieck, Raghul Nanth
  A, Rolf Eike Beer, Shuqi Liang, Siddharth Singh, Stanislav
  Malishevskiy, Stephane Odul, Vítor Pinho, and Xin Xing.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alex Henrie, Andreas Schwab, Andrei
  Rybak, Beat Bolli, Derrick Stolee, Elijah Newren, Emily Shaffer,
  Eric Sunshine, Eric Wong, Fangyi Zhou, Felipe Contreras, Glen
  Choo, Han Xin, Jacob Keller, Jeff King, Jiang Xin, Joakim
  Petersen, Johannes Schindelin, Johannes Sixt, John Cai, John
  Keeping, Josh Soref, Junio C Hamano, Kristoffer Haugsbakk, Linus
  Arver, Linus Torvalds, Martin Ågren, Mathias Krause, Matthew
  John Cheetham, M Hickford, Michael J Gruber, Mike Hommey, Oswald
  Buddenhagen, Øystein Walle, Patrick Steinhardt, Paul Eggert,
  Philippe Blain, Phillip Wood, René Scharfe, Robin Jarry,
  Rubén Justo, RyotaK, Sohom Datta, SZEDER Gábor, Tao Klerks,
  Taylor Blau, Teng Long, Torsten Bögershausen, William Sprent,
  and ZheNing Hu.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.41 Release Notes (draft)
===============================

UI, Workflows & Features

 * Allow information carried on the WWW-AUthenticate header to be
   passed to the credential helpers.

 * A new "fetch.hideRefs" option can be used to exclude specified refs
   from "rev-list --objects --stdin --not --all" traversal for
   checking object connectivity, most useful when there are many
   unrelated histories in a single repository.

 * "git push" has been taught to allow deletion of refs with one-level
   names to help repairing a repository who acquired such a ref by
   mistake.  In general, we don't encourage use of such a ref, and
   creation or update to such a ref is rejected as before.

 * Allow "git bisect reset" to check out the original branch when the
   branch is already checked out in a different worktree linked to the
   same repository.

 * A few subcommands have been taught to stop users from working on a
   branch that is being used in another worktree linked to the same
   repository.

 * "git format-patch" learned to write a log-message only output file
   for empty commits.

 * "git format-patch" honors the src/dst prefixes set to nonstandard
   values with configuration variables like "diff.noprefix", causing
   receiving end of the patch that expects the standard -p1 format to
   break.  "format-patch" has been taught to ignore end-user configuration
   and always use the standard prefixes.

   This is a backward compatibility breaking change.

 * Lift the limitation that colored prompts can only be used with
   PROMPT_COMMAND mode.

 * "git blame --contents=<file> <rev> -- <path>" used to be forbidden,
   but now it finds the origins of lines starting at <file> contents
   through the history that leads to <rev>.

 * "git pack-redundant" gave a warning when run, as the command has
   outlived its usefulness long ago and is nominated for future
   removal.  Now we escalate to give an error.

 * "git clone" from an empty repository learned to propagate the
   choice of the hash algorithm from the source repository to the
   newly created repository.

 * "git mergetool" and "git difftool" learns a new configuration
   guiDefault to optionally favor configured guitool over non-gui-tool
   automatically when $DISPLAY is set.

 * "git branch -d origin/master" would say "no such branch", but it is
   likely a missed "-r" if refs/remotes/origin/master exists.  The
   command has been taught to give such a hint in its error message.

 * Clean-up of the code path that deals with merge strategy option
   handling in "git rebase".

 * "git clone --local" stops copying from an original repository that
   has symbolic links inside its $GIT_DIR; an error message when that
   happens has been updated.

 * "git branch --format=..." and "git format-patch --format=..."
   learns "--omit-empty" to hide refs that whose formatting result
   becomes an empty string from the output.

 * The sendemail-validate validate hook learned to pass the total
   number of input files and where in the sequence each invocation is
   via environment variables.

 * When "gc" needs to retain unreachable objects, packing them into
   cruft packs (instead of exploding them into loose object files) has
   been offered as a more efficient option for some time.  Now the use
   of cruft packs has been made the default and no longer considered
   an experimental feature.

 * The output given by "git blame" that attributes a line to contents
   taken from the file specified by the "--contents" option shows it
   differently from a line attributed to the working tree file.

 * "git send-email" learned to give the e-mail headers to the validate
   hook by passing an extra argument from the command line.

 * The credential subsystem learns to help OAuth framework.

 * The titles of manual pages used to be chomped at an unreasonably
   short limit, which has been removed.

 * Error messages given when working on an unborn branch that is
   checked out in another worktree have been improved.

 * The documentation was misleading about the interaction between
   GIT_DEFAULT_HASH and "git clone", which has been clarified to
   stress that the variable is to be ignored by the command.

 * "git send-email" learned "--header-cmd=<cmd>" that can inject
   arbitrary e-mail header lines to the outgoing messages.

 * "git fsck" learned to detect bit-flip breakages in the reachability
   bitmap files.

 * The "--stdin" option of "git name-rev" has been replaced with
   the "--annotate-stdin" option more than a year ago.  We stop
   advertising it in the "git name-rev -h" output.

 * "git push --all" gained an alias "git push --branches".

 * "git fetch" learned the "--porcelain" option that emits what it did
   in a machine-parseable format.


Performance, Internal Implementation, Development Support etc.

 * Code clean-up to clarify directory traversal API.

 * Code clean-up to clarify the rule that "git-compat-util.h" must be
   the first to be included.

 * More work towards -Wunused.

 * Instead of forcing each command to choose to honor GPG related
   configuration variables, make the subsystem lazily initialize
   itself.

 * Remove workaround for ancient versions of DocBook to make it work
   correctly with groff, which has not been necessary since docbook
   1.76 from 2010.

 * Code clean-up to include and/or uninclude parse-options.h file as
   needed.

 * The code path that reports what "git fetch" did to each ref has
   been cleaned up.

 * Assorted config API updates.

 * A few configuration variables to tell the cURL library that
   different types of ssl-cert and ssl-key are in use have been added.

 * Split key function and data structure definitions out of cache.h to
   new header files and adjust the users.

 * "git fetch --all" does not have to download and handle the same
   bundleURI over and over, which has been corrected.

 * "git sparse-checkout" command learns a debugging aid for the sparse
   rule definitions.

 * "git write-tree" learns to work better with sparse-index.

 * The on-disk reverse index that allows mapping from the pack offset
   to the object name for the object stored at the offset has been
   enabled by default.

 * "git fsck" learned to validate the on-disk pack reverse index files.

 * strtok() and strtok_r() are banned in this codebase.

 * The detect-compilers script to help auto-tweaking the build system
   had trouble working with compilers whose version number has extra
   suffixes.  The script has been taught that certain suffixes (like
   "-win32" in "gcc 10-win32") can be safely stripped as they share
   the same features and bugs with the version without the suffix.

 * ctype tests have been taught to test EOF, too.

 * The implementation of credential helpers used fgets() over fixed
   size buffers to read protocol messages, causing the remainder of
   the folded long line to trigger unexpected behaviour, which has
   been corrected.

 * The implementation of the default "negotiator", used to find common
   ancestor over the network for object tranfer, used to be recursive;
   it was updated to be iterative to conserve stackspace usage.

 * Our custom callout formatter is no longer used in the documentation
   formatting toolchain, as the upstream default ones give better
   output these days.

 * The tracing mechanism learned to notice and report when
   auto-discovered bare repositories are being used, as allowing so
   without explicitly stating the user intends to do so (with setting
   GIT_DIR for example) can be used with social engineering as an
   attack vector.

 * "git diff-files" learned not to expand sparse-index unless needed.


Fixes since v2.40
-----------------

 * "git fsck" learned to check the index files in other worktrees,
   just like "git gc" honors them as anchoring points.
   (merge 8d3e7eac52 jk/fsck-indices-in-worktrees later to maint).

 * Fix a segfaulting loop.  The function and its caller may need
   further clean-up.
   (merge c5773dc078 ew/commit-reach-clean-up-flags-fix later to maint).

 * "git restore" supports options like "--ours" that are only
   meaningful during a conflicted merge, but these options are only
   meaningful when updating the working tree files.  These options are
   marked to be incompatible when both "--staged" and "--worktree" are
   in effect.
   (merge ee8a88826a ak/restore-both-incompatible-with-conflicts later to maint).

 * Simplify UI to control progress meter given by "git bundle" command.
   (merge 8b95521edb jk/bundle-progress later to maint).

 * "git bundle" learned that "-" is a common way to say that the input
   comes from the standard input and/or the output goes to the
   standard output.  It used to work only for output and only from the
   root level of the working tree.
   (merge 0bbe10313e jk/bundle-use-dash-for-stdfiles later to maint).

 * Once we start running, we assumed that the list of alternate object
   databases would never change.  Hook into the machinery used to
   update the list of packfiles during runtime to update this list as
   well.
   (merge e2d003dbed ds/reprepare-alternates-when-repreparing-packfiles later to maint).

 * The code to parse "git rebase -X<opt>" was not prepared to see an
   unparsable option string, which has been corrected.
   (merge 15a4cc912e ab/fix-strategy-opts-parsing later to maint).

 * "git add -p" while the index is unmerged sometimes failed to parse
   the diff output it internally produces and died, which has been
   corrected.
   (merge 28d1122f9c jk/add-p-unmerged-fix later to maint).

 * Fix for a "ls-files --format="%(path)" that produced nonsense
   output, which was a bug in 2.38.
   (merge cfb62dd006 aj/ls-files-format-fix later to maint).

 * "git receive-pack" that responds to "git push" requests failed to
   clean a stale lockfile when killed in the middle, which has been
   corrected.
   (merge c55c30669c ps/receive-pack-unlock-before-die later to maint).

 * "git rev-parse --quiet foo@{u}", or anything that asks @{u} to be
   parsed with GET_OID_QUIETLY option, did not quietly fail, which has
   been corrected.
   (merge dfbfdc521d fc/oid-quietly-parse-upstream later to maint).

 * Transports that do not support protocol v2 did not correctly fall
   back to protocol v0 under certain conditions, which has been
   corrected.
   (merge eaa0fd6584 jk/fix-proto-downgrade-to-v0 later to maint).

 * time(2) on glib 2.31+, especially on Linux, goes out of sync with
   higher resolution timers used for gettimeofday(2) and by the
   filesystem.  Replace all calls to it with a git_time() wrapper and
   (merge 370ddcbc89 pe/time-use-gettimeofday later to maint).

 * Code clean-up to use designated initializers in parse-options API.
   (merge 353e6d4554 sg/parse-options-h-initializers later to maint).

 * A recent-ish change to allow unicode character classes to be used
   with "grep -P" triggered a JIT bug in older pcre2 libraries.
   The problematic change in Git built with these older libraries has
   been disabled to work around the bug.
   (merge 14b9a04479 mk/workaround-pcre-jit-ucp-bug later to maint).

 * The wildmatch library code unlearns exponential behaviour it
   acquired some time ago since it was borrowed from rsync.
   (merge 3dc0b7f0dc pw/wildmatch-fixes later to maint).

 * The index files can become corrupt under certain conditions when
   the split-index feature is in use, especially together with
   fsmonitor, which have been corrected.
   (merge 061dd722dc js/split-index-fixes later to maint).

 * Document what the pathname-looking strings in "rev-list --object"
   output are for and what they mean.
   (merge 15364d2a3c jk/document-rev-list-object-name later to maint).

 * Fix unnecessary truncation of generation numbers used in-core.
   (merge d3af1c193d ps/ahead-behind-truncation-fix later to maint).

 * Code clean-up around the use of the_repository.
   (merge 4a93b899c1 ab/remove-implicit-use-of-the-repository later to maint).

 * Consistently spell "Message-ID" as such, not "Message-Id".
   (merge ba4324c4e1 jc/spell-id-in-both-caps-in-message-id later to maint).

 * Correct use of an uninitialized structure member.
   (merge dc12ee77ab jx/cap-object-info-uninitialized-fix later to maint).

 * Tests had a few places where we ignored PERL_PATH and blindly used
   /usr/bin/perl, which have been corrected.
   (merge c1917156a0 jk/use-perl-path-consistently later to maint).

 * Documentation mark-up fix.
   (merge 78b6369e67 la/mfc-markup-fix later to maint).

 * Doc toolchain update to remove old workaround for AsciiDoc.
   (merge 8806120de6 fc/remove-header-workarounds-for-asciidoc later to maint).

 * The userdiff regexp patterns for various filetypes that are built
   into the system have been updated to avoid triggering regexp errors
   from UTF-8 aware regex engines.
   (merge be39144954 rs/userdiff-multibyte-regex later to maint).

 * The approxidate() API has been simplified by losing an extra
   function that did the same thing as another one.
   (merge 8a7f0b666f rs/remove-approxidate-relative later to maint).

 * Code clean-up to replace a hardcoded constant with a CPP macro.
   (merge c870de6502 rs/get-tar-commit-id-use-defined-const later to maint).

 * Doc build simplification.
   (merge 9a09ed3229 fc/doc-stop-using-manversion later to maint).

 * "git archive" run from a subdirectory mishandled attributes and
   paths outside the current directory.
   (merge 92b1dd1b9e rs/archive-from-subdirectory-fixes later to maint).

 * The code to parse capability list for v0 on-wire protocol fell into
   an infinite loop when a capability appears multiple times, which
   has been corrected.

 * Geometric repacking ("git repack --geometric=<n>") in a repository
   that borrows from an alternate object database had various corner
   case bugs, which have been corrected.
   (merge d85cd18777 ps/fix-geom-repack-with-alternates later to maint).

 * The "%GT" placeholder for the "--format" option of "git log" and
   friends caused BUG() to trigger on a commit signed with an unknown
   key, which has been corrected.
   (merge 7891e46585 jk/gpg-trust-level-fix later to maint).

 * The completion script used to use bare "read" without the "-r"
   option to read the contents of various state files, which risked
   getting confused with backslashes in them.  This has been
   corrected.
   (merge 197152098a ek/completion-use-read-r-to-read-literally later to maint).

 * A small API fix to the ort merge strategy backend.
   (merge 000c4ceca7 en/ort-finalize-after-0-merges-fix later to maint).

 * The commit object parser has been taught to be a bit more lenient
   to parse timestamps on the author/committer line with a malformed
   author/committer ident.
   (merge 90ef0f14eb jk/parse-commit-with-malformed-ident later to maint).

 * Retitle a test script with an overly narrow name.
   (merge 8bb19c14fb ob/t3501-retitle later to maint).

 * Doc update to clarify how text and eol attributes interact to
   specify the end-of-line conversion.
   (merge 6696077ace ah/doc-attributes-text later to maint).

 * Gitk updates from GfW project.
   (merge 99e70f3077 js/gitk-fixes-from-gfw later to maint).

 * "git diff --dirstat" leaked memory, which has been plugged.
   (merge 83973981eb jc/dirstat-plug-leaks later to maint).

 * "git merge-tree" reads the basic configuration, which can be used
    by git forges to disable replace-refs feature.
   (merge b6551feadf ds/merge-tree-use-config later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge f7111175df as/doc-markup-fix later to maint).
   (merge 90ff7c9898 fc/test-aggregation-clean-up later to maint).
   (merge 9b0c7f308a jc/am-doc-refer-to-format-patch later to maint).
   (merge b10cbdac4c bb/unicode-width-table-15 later to maint).
   (merge 3457b50e8c ab/retire-scripted-add-p later to maint).
   (merge d52fcf493b ds/p2000-fix-grep-sparse later to maint).
   (merge ec063d2591 ss/hashmap-typofix later to maint).
   (merge 1aaed69d11 rs/archive-mtime later to maint).
   (merge 2da2cc9b28 ob/rollback-after-commit-lock-failure later to maint).
   (merge 54dbd0933b ob/sequencer-save-head-simplify later to maint).
   (merge a93cbe8d78 ar/test-cleanup-unused-file-creation later to maint).
   (merge cc48ddd937 jk/chainlint-fixes later to maint).
   (merge 4833b08426 ow/ref-format-remove-unused-member later to maint).
   (merge d0ea2ca1cf dw/doc-submittingpatches-grammofix later to maint).
   (merge fd72637423 ar/t2024-checkout-output-fix later to maint).
   (merge d45cbe3fe0 ob/sequencer-i18n-fix later to maint).
   (merge b734fe49fd ob/messages-capitalize-exception later to maint).
   (merge ad353d7e77 ma/gittutorial-fixes later to maint).
   (merge a5855fd8d4 ar/test-cleanup-unused-file-creation-part2 later to maint).
   (merge 0c5308af30 sd/doc-gitignore-and-rm-cached later to maint).
   (merge cbb83daeaf kh/doc-interpret-trailers-updates later to maint).
   (merge 3d77fbb664 ar/config-count-tests-updates later to maint).
   (merge b7cf25c8f4 jc/t9800-fix-use-of-show-s-raw later to maint).

----------------------------------------------------------------

Changes since v2.40.0 are as follows:

Adam Johnson (1):
      ls-files: fix "--format" output of relative paths

Alex Henrie (5):
      rebase: add documentation and test for --no-rebase-merges
      rebase: deprecate --rebase-merges=""
      rebase: add a config option for --rebase-merges
      format-patch: correct documentation of --thread without an argument
      docs: rewrite the documentation of the text and eol attributes

Andreas Schwab (1):
      git-merge-tree.txt: replace spurious HTML entity

Andrei Rybak (19):
      t1005: assert output of ls-files
      t1006: assert error output of cat-file
      t1010: don't create unused files
      t1302: don't create unused file
      t1400: assert output of update-ref
      t1404: don't create unused file
      t1507: assert output of rev-parse
      t3060: fix mention of function prune_index
      t2107: fix mention of the_index.cache_changed
      t2024: fix loose/strict local base branch DWIM test
      t1300: drop duplicate test
      t1300: check stderr for "ignores pairs" tests
      t1300: add tests for missing keys
      t0300: don't create unused file
      t1300: fix config file syntax error descriptions
      t1300: don't create unused files
      t1450: don't create unused files
      t1502: don't create unused files
      t2019: don't create unused files

Andy Koppe (1):
      restore: fault --staged --worktree with merge opts

Beat Bolli (1):
      unicode: update the width tables to Unicode 15

Clement Mabileau (1):
      branch: improve error log on branch not found by checking remotes refs

Daniel Watson (1):
      SubmittingPatches: clarify MUA discussion with "the"

Derrick Stolee (19):
      object-file: reprepare alternates when necessary
      for-each-ref: add --stdin option
      for-each-ref: explicitly test no matches
      commit-graph: refactor compute_topological_levels()
      commit-graph: simplify compute_generation_numbers()
      commit-graph: return generation from memory
      commit-reach: implement ahead_behind() logic
      for-each-ref: add ahead-behind format atom
      commit-reach: add tips_reachable_from_bases()
      p2000: remove stray '--sparse' flag from test
      fetch: download bundles once, even with --all
      ci: update 'static-analysis' to Ubuntu 22.04
      fsck: create scaffolding for rev-index checks
      fsck: check rev-index checksums
      fsck: check rev-index position values
      fsck: validate .rev file header
      fsck: verify checksums of all .bitmap files
      fsck: use local repository
      merge-tree: load default git config

Edwin Kofler (1):
      completion: suppress unwanted unescaping of `read`

Elijah Newren (94):
      treewide: ensure one of the appropriate headers is sourced first
      treewide: remove unnecessary git-compat-util.h includes in headers
      treewide: remove unnecessary cache.h includes
      treewide: remove unnecessary cache.h includes in source files
      alloc.h: move ALLOC_GROW() functions from cache.h
      hash.h: move some oid-related declarations from cache.h
      hex.h: move some hex-related declarations from cache.h
      cache.h: remove dependence on hex.h; make other files include it explicitly
      pretty.h: move has_non_ascii() declaration from commit.h
      ident.h: move ident-related declarations out of cache.h
      object.h: stop depending on cache.h; make cache.h depend on object.h
      dir.h: refactor to no longer need to include cache.h
      object-store.h: move struct object_info from cache.h
      replace-object.h: move read_replace_refs declaration from cache.h to here
      treewide: replace cache.h with more direct headers, where possible
      Remove unnecessary includes of builtin.h
      diff.h: remove unnecessary include of object.h
      t2021: fix platform-specific leftover cruft
      unpack-trees: heed requests to overwrite ignored files
      dir: separate public from internal portion of dir_struct
      dir: add a usage note to exclude_per_dir
      dir: mark output only fields of dir_struct as such
      unpack-trees: clean up some flow control
      sparse-checkout: avoid using internal API of unpack-trees
      sparse-checkout: avoid using internal API of unpack-trees, take 2
      unpack_trees: start splitting internal fields from public API
      unpack-trees: mark fields only used internally as internal
      unpack-trees: rewrap a few overlong lines from previous patch
      unpack-trees: special case read-tree debugging as internal usage
      unpack-trees: add usage notices around df_conflict_entry
      treewide: remove unnecessary cache.h inclusion from a few headers
      treewide: be explicit about dependence on gettext.h
      treewide: remove unnecessary inclusion of gettext.h
      treewide: remove unnecessary cache.h inclusion from several sources
      environment: move comment_line_char from cache.h
      abspath.h: move absolute path functions from cache.h
      cache.h: remove expand_user_path()
      path.h: move function declarations for path.c functions from cache.h
      wrapper.h: move declarations for wrapper.c functions from cache.h
      treewide: remove unnecessary includes of cache.h
      environment.h: move declarations for environment.c functions from cache.h
      treewide: remove cache.h inclusion due to environment.h changes
      setup.h: move declarations for setup.c functions from cache.h
      treewide: remove cache.h inclusion due to setup.h changes
      write-or-die.h: move declarations for write-or-die.c functions from cache.h
      csum-file.h: remove unnecessary inclusion of cache.h
      treewide: be explicit about dependence on trace.h & trace2.h
      treewide: be explicit about dependence on advice.h
      treewide: be explicit about dependence on convert.h
      treewide: be explicit about dependence on pack-revindex.h
      treewide: be explicit about dependence on oid-array.h
      treewide: be explicit about dependence on mem-pool.h
      treewide: remove unnecessary cache.h inclusion
      object-name.h: move declarations for object-name.c functions from cache.h
      treewide: remove cache.h inclusion due to object-name.h changes
      git-zlib: move declarations for git-zlib functions from cache.h
      treewide: remove cache.h inclusion due to git-zlib changes
      object-file.h: move declarations for object-file.c functions from cache.h
      treewide: remove cache.h inclusion due to object-file.h changes
      object.h: move some inline functions and defines from cache.h
      treewide: remove cache.h inclusion due to object.h changes
      editor: move editor-related functions and declarations into common file
      treewide: remove cache.h inclusion due to editor.h changes
      pager.h: move declarations for pager.c functions from cache.h
      treewide: remove cache.h inclusion due to pager.h changes
      cache.h: remove unnecessary includes
      treewide: remove double forward declaration of read_in_full
      treewide: reduce includes of cache.h in other headers
      mailmap, quote: move declarations of global vars to correct unit
      protocol.h: move definition of DEFAULT_GIT_PORT from cache.h
      treewide: be explicit about dependence on strbuf.h
      symlinks.h: move declarations for symlinks.c functions from cache.h
      packfile.h: move pack_window and pack_entry from cache.h
      server-info.h: move declarations for server-info.c functions from cache.h
      copy.h: move declarations for copy.c functions from cache.h
      base85.h: move declarations for base85.c functions from cache.h
      pkt-line.h: move declarations for pkt-line.c functions from cache.h
      match-trees.h: move declarations for match-trees.c functions from cache.h
      ws.h: move declarations for ws.c functions from cache.h
      versioncmp.h: move declarations for versioncmp.c functions from cache.h
      dir.h: move DTYPE defines from cache.h
      tree-diff.c: move S_DIFFTREE_IFXMIN_NEQ define from cache.h
      hash-ll.h: split out of hash.h to remove dependency on repository.h
      cache,tree: move cmp_cache_name_compare from tree.[ch] to read-cache.c
      cache,tree: move basic name compare functions from read-cache to tree
      treewide: remove cache.h inclusion due to previous changes
      cache.h: remove unnecessary headers
      fsmonitor: reduce includes of cache.h
      commit.h: reduce unnecessary includes
      object-store.h: reduce unnecessary includes
      diff.h: reduce unnecessary includes
      reftable: ensure git-compat-util.h is the first (indirect) include
      merge-ort: fix calling merge_finalize() with no intermediate merge
      t5583: fix shebang line

Emily Shaffer (1):
      mailmap: change primary address for Emily Shaffer

Eric Sunshine (1):
      tests: diagnose unclosed here-doc in chainlint.pl

Eric Wong (3):
      commit-reach: avoid NULL dereference
      fetch: support hideRefs to speed up connectivity checks
      fetch: pass --no-write-fetch-head to subprocesses

Fangyi Zhou (1):
      rebase: fix capitalisation autoSquash in i18n string

Felipe Contreras (16):
      advice: add diverging advice for novices
      test: simplify counts aggregation
      test: don't print aggregate-results command
      object-name: fix quiet @{u} parsing
      completion: prompt: use generic colors
      doc: remove GNU troff workaround
      doc: remove manpage-base-url workaround
      doc: asciidoc: remove custom header macro
      doc: simplify man version
      doc: set actual revdate for manpages
      doc: git-checkout: trivial callout cleanup
      doc: git-checkout: reorganize examples
      doc: remove custom callouts format
      doc: manpage: remove maximum title length
      doc: doc-diff: specify date
      test: rev-parse-upstream: add missing cmp

Glen Choo (10):
      config.c: plumb config_source through static fns
      config.c: don't assign to "cf_global" directly
      config.c: create config_reader and the_reader
      config.c: plumb the_reader through callbacks
      config.c: remove current_config_kvi
      config.c: remove current_parsing_scope
      config: report cached filenames in die_bad_number()
      config.c: rename "struct config_source cf"
      clone: error specifically with --local and symlinked objects
      setup: trace bare repository setups

Han Xin (2):
      negotiator/default: avoid stack overflow
      negotiator/skipping: fix some problems in mark_common()

Jacob Keller (2):
      blame: allow --contents to work with non-HEAD commit
      blame: use different author name for fake commit generated by --contents

Jeff King (89):
      ref-filter: drop unused atom parameter from get_worktree_path()
      ls-refs: drop config caching
      serve: use repository pointer to get config
      serve: mark unused parameters in virtual functions
      object-name: mark unused parameters in disambiguate callbacks
      http-backend: mark argc/argv unused
      http-backend: mark unused parameters in virtual functions
      ref-filter: mark unused callback parameters
      mark "pointless" data pointers in callbacks
      run-command: mark error routine parameters as unused
      mark unused parameters in signal handlers
      list-objects: mark unused callback parameters
      for_each_object: mark unused callback parameters
      prio-queue: mark unused parameters in comparison functions
      notes: mark unused callback parameters
      fetch-pack: mark unused parameter in callback function
      rewrite_parents(): mark unused callback parameter
      for_each_commit_graft(): mark unused callback parameter
      userformat_want_item(): mark unused parameter
      run_processes_parallel: mark unused callback parameters
      help: mark unused parameter in git_unknown_cmd_config()
      fsck: factor out index fsck
      fsck: check index files in all worktrees
      fsck: mention file path for index errors
      fsck: check even zero-entry index files
      drop pure pass-through config callbacks
      bundle: turn on --all-progress-implied by default
      bundle: let "-" mean stdin for reading operations
      bundle: document handling of "-" as stdin
      parse-options: consistently allocate memory in fix_filename()
      parse-options: use prefix_filename_except_for_dash() helper
      diff: factor out src/dst prefix setup
      t4013: add tests for diff prefix options
      diff: add --default-prefix option
      format-patch: do not respect diff.noprefix
      format-patch: add format.noprefix option
      add-patch: handle "* Unmerged path" lines
      http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
      http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
      range-diff: drop useless "offset" variable from read_patches()
      http: support CURLOPT_PROTOCOLS_STR
      range-diff: handle unterminated lines in read_patches()
      range-diff: use ssize_t for parsed "len" in read_patches()
      rebase: prefer --default-prefix to --{src,dst}-prefix for format-patch
      mailmap: drop debugging code
      http: drop unused parameter from start_object_request()
      http: mark unused parameter in fill_active_slot() callbacks
      transport: mark unused parameters in fetch_refs_from_bundle()
      git_connect(): fix corner cases in downgrading v2 to v0
      fast-export: drop const when storing anonymized values
      fast-export: simplify initialization of anonymized hashmaps
      fast-export: factor out anonymized_entry creation
      fast-export: de-obfuscate --anonymize-map handling
      fast-export: drop data parameter from anonymous generators
      fast-export: drop unused parameter from anonymize_commit_message()
      Makefile: force -O0 when compiling with SANITIZE=leak
      pack-redundant: escalate deprecation warning to an error
      docs: document caveats of rev-list's object-name output
      fast-import: fix file access when run from subdir
      builtins: always pass prefix to parse_options()
      builtins: annotate always-empty prefix parameters
      builtins: mark unused prefix parameters
      mark "argv" as unused when we check argc
      t/helper: mark unused argv/argc arguments
      parse-options: drop parse_opt_unknown_cb()
      pack-redundant: document deprecation
      tests: run internal chain-linter under "make test"
      tests: replace chainlint subshell with a function
      tests: drop here-doc check from internal chain-linter
      tests: skip test_eval_ in internal chain-lint
      t/lib-httpd: pass PERL_PATH to CGI scripts
      v0 protocol: fix infinite loop when parsing multi-valued capabilities
      t5512: stop referring to "v1" protocol
      v0 protocol: fix sha1/sha256 confusion for capabilities^{}
      t5512: add v2 support for "ls-remote --symref" test
      t5512: allow any protocol version for filtered symref test
      t5512: test "ls-remote --heads --symref" filtering with v0 and v2
      v0 protocol: use size_t for capability length/offset
      gpg-interface: set trust level of missing key to "undefined"
      notes: clean up confusing NULL checks in init_notes()
      fetch_bundle_uri(): drop pointless NULL check
      t4212: avoid putting git on left-hand side of pipe
      parse_commit(): parse timestamp from end of line
      parse_commit(): handle broken whitespace-only timestamp
      parse_commit(): describe more date-parsing failure modes
      doc-diff: drop SOURCE_DATE_EPOCH override
      t7001: avoid git on upstream of pipe
      t7001: use "ls-files --format" instead of "cut"
      t: drop "verbose" helper function

Jiang Xin (5):
      github-actions: run gcc-8 on ubuntu-20.04 image
      ci: remove the pipe after "p4 -V" to catch errors
      ci: use the same version of p4 on both Linux and macOS
      ci: install python on ubuntu
      object-info: init request_info before reading arg

Johannes Schindelin (29):
      compat/win32/syslog: fix use-after-realloc
      nedmalloc: avoid new compile error
      t0033: GETTEXT_POISON fix
      t0003: GETTEXT_POISON fix, part 1
      t0003: GETTEXT_POISON fix, conclusion
      t5619: GETTEXT_POISON fix
      t5604: GETTEXT_POISON fix, part 1
      t5604: GETTEXT_POISON fix, conclusion
      clone.c: avoid "exceeds maximum object size" error with GCC v12.x
      split-index & fsmonitor: demonstrate a bug
      split-index; stop abusing the `base_oid` to strip the "link" extension
      fsmonitor: avoid overriding `cache_changed` bits
      unpack-trees: take care to propagate the split-index flag
      t3701: we don't need no Perl for `add -i` anymore
      t5563: prevent "ambiguous redirect"
      apply --reject: overwrite existing `.rej` symlink if it exists
      gettext: avoid using gettext if the locale dir is not present
      tests: avoid using `test_i18ncmp`
      Git 2.31.8
      Git 2.32.7
      Git 2.33.8
      Git 2.34.8
      Git 2.35.8
      Git 2.36.6
      Git 2.37.7
      Git 2.38.5
      Git 2.39.3
      Git 2.40.1
      gitk: prevent overly long command lines

John Cai (1):
      name-rev: make --stdin hidden

John Keeping (1):
      format-patch: output header for empty commits

Josh Soref (1):
      subtree: support long global flags

Jouke Witteveen (1):
      send-email docs: Remove mention of discontinued gmail feature

Junio C Hamano (29):
      gpg-interface: lazily initialize and read the configuration
      bundle: don't blindly apply prefix_filename() to "-"
      Start the 2.41 cycle
      The second batch
      am: refer to format-patch in the documentation
      The third batch
      http.c: clear the 'finished' member once we are done with it
      The fourth batch
      The fifth batch
      The sixth batch
      e-mail workflow: Message-ID is spelled with ID in both capital letters
      The seventh batch
      clone: propagate object-format when cloning from void
      The eighth batch
      The ninth batch
      The tenth batch
      The eleventh batch
      The twelfth batch
      The thirteenth batch
      doc: GIT_DEFAULT_HASH is and will be ignored during "clone"
      The fourteenth batch
      The fifteenth batch
      The sixteenth batch
      diff: refactor common tail part of dirstat computation
      diff: plug leaks in dirstat
      t9800: correct misuse of 'show -s --raw' in a test
      The seventeenth batch
      The eighteenth batch
      Git 2.41-rc0

Kristoffer Haugsbakk (5):
      config: tell the user that we expect an ASCII character
      doc: interpret-trailers: don’t use heredoc in examples
      doc: interpret-trailers: use input redirection
      doc: interpret-trailers: don’t use deprecated config
      doc: interpret-trailers: fix example

Linus Arver (1):
      MyFirstContribution: render literal *

M Hickford (3):
      credential/wincred: include wincred.h
      credential/wincred: store password_expiry_utc
      credential: new attribute oauth_refresh_token

Martin Ågren (2):
      gittutorial: drop early mention of origin
      gittutorial: wrap literal examples in backticks

Mathias Krause (1):
      grep: work around UTF-8 related JIT bug in PCRE2 <= 10.34

Matthew John Cheetham (3):
      t5563: add tests for basic and anoymous HTTP access
      http: read HTTP WWW-Authenticate response headers
      credential: add WWW-Authenticate header to cred requests

Maxim Cournoyer (3):
      send-email: extract execute_cmd from recipients_cmd
      send-email: add --header-cmd, --no-header-cmd options
      send-email: detect empty blank lines in command output

Michael J Gruber (1):
      t3070: make chain lint tester happy

Michael Strawbridge (2):
      send-email: refactor header generation functions
      send-email: expose header information to git-send-email's sendemail-validate hook

Mike Hommey (1):
      Handle some compiler versions containing a dash

Nico Rieck (1):
      gitk: escape file paths before piping to git log

Oswald Buddenhagen (5):
      sequencer: remove pointless rollback_lock_file()
      sequencer: rewrite save_head() in terms of write_message()
      sequencer: actually translate report in do_exec()
      messages: capitalization and punctuation exceptions
      t/t3501-revert-cherry-pick.sh: clarify scope of the file

Patrick Steinhardt (27):
      receive-pack: fix stale packfile locks when dying
      fetch: move reference width calculation into `display_state`
      fetch: move output format into `display_state`
      fetch: pass the full local reference name to `format_display`
      fetch: centralize handling of per-reference format
      fetch: centralize logic to print remote URL
      fetch: centralize printing of reference updates
      commit-graph: fix truncated generation numbers
      midx: fix segfault with no packs and invalid preferred pack
      repack: fix trying to use preferred pack in alternates
      repack: fix generating multi-pack-index with only non-local packs
      pack-objects: split out `--stdin-packs` tests into separate file
      pack-objects: fix error when packing same pack twice
      pack-objects: fix error when same packfile is included and excluded
      pack-objects: extend test coverage of `--stdin-packs` with alternates
      t/helper: allow chmtime to print verbosely without modifying mtime
      repack: honor `-l` when calculating pack geometry
      repack: disable writing bitmaps when doing a local repack
      fetch: fix `--no-recurse-submodules` with multi-remote fetches
      fetch: split out tests for output format
      fetch: add a test to exercise invalid output formats
      fetch: print left-hand side when fetching HEAD:foo
      fetch: refactor calculation of the display table width
      fetch: introduce `display_format` enum
      fetch: lift up parsing of "fetch.output" config variable
      fetch: move option related variables into main function
      fetch: introduce machine-parseable "porcelain" output format

Paul Eggert (1):
      git-compat-util: use gettimeofday(2) for time(2)

Phillip Wood (8):
      wildmatch: fix exponential behavior
      wildmatch: avoid undefined behavior
      wildmatch: hide internal return values
      rebase: stop reading and writing unnecessary strategy state
      sequencer: use struct strvec to store merge strategy options
      rebase -m: cleanup --strategy-option handling
      rebase -m: fix serialization of strategy options
      rebase: remove a couple of redundant strategy tests

Raghul Nanth A (1):
      describe: enable sparse index for describe

René Scharfe (6):
      archive: improve support for running in subdirectory
      t5000: use check_mtime()
      userdiff: support regexec(3) with multi-byte support
      date: remove approxidate_relative()
      get-tar-commit-id: use TYPEFLAG_GLOBAL_HEADER instead of magic value
      test-ctype: check EOF

Robin Jarry (1):
      send-email: export patch counters in validate environment

Rubén Justo (10):
      bisect: fix "reset" when branch is checked out elsewhere
      worktree: introduce is_shared_symref()
      branch: fix die_if_checked_out() when ignore_current_worktree
      rebase: refuse to switch to a branch already checked out elsewhere (test)
      switch: reject if the branch is already checked out elsewhere (test)
      branch: test for failures while renaming branches
      branch: use get_worktrees() in copy_or_rename_branch()
      branch: description for orphan branch errors
      branch: rename orphan branches in any worktree
      branch: avoid unnecessary worktrees traversals

SZEDER Gábor (6):
      treewide: include parse-options.h in source files
      treewide: remove unnecessary inclusions of parse-options.h from headers
      parse-options.h: use consistent name for the callback parameters
      parse-options.h: rename _OPT_CONTAINS_OR_WITH()'s parameters
      parse-options.h: use designated initializers in OPT_* macros
      cocci: remove 'unused.cocci'

Shuqi Liang (3):
      write-tree: integrate with sparse index
      t1092: add tests for `git diff-files`
      diff-files: integrate with sparse index

Siddharth Singh (1):
      hashmap.h: fix minor typo

Sohom Datta (1):
      docs: clarify git rm --cached function in gitignore note

Stanislav Malishevskiy (1):
      http: add support for different sslcert and sslkey types.

Tao Klerks (1):
      mergetool: new config guiDefault supports auto-toggling gui by DISPLAY

Taylor Blau (36):
      commit-graph: introduce `ensure_generations_valid()`
      pack-write.c: plug a leak in stage_tmp_packfiles()
      t5325: mark as leak-free
      pack-revindex: make `load_pack_revindex` take a repository
      pack-revindex: introduce GIT_TEST_REV_INDEX_DIE_ON_DISK
      pack-revindex: introduce `pack.readReverseIndex`
      config: enable `pack.writeReverseIndex` by default
      t: invert `GIT_TEST_WRITE_REV_INDEX`
      t1300: demonstrate failure when renaming sections with long lines
      config: avoid fixed-sized buffer when renaming/deleting a section
      config.c: avoid integer truncation in `copy_or_rename_section_in_file()`
      config.c: disallow overly-long lines in `copy_or_rename_section_in_file()`
      Git 2.30.9
      pack-write.c: plug a leak in stage_tmp_packfiles()
      builtin/repack.c: fix incorrect reference to '-C'
      builtin/gc.c: ignore cruft packs with `--keep-largest-pack`
      t/t5304-prune.sh: prepare for `gc --cruft` by default
      t/t6501-freshen-objects.sh: prepare for `gc --cruft` by default
      t/t6500-gc.sh: refactor cruft pack tests
      t/t6500-gc.sh: add additional test cases
      t/t9300-fast-import.sh: prepare for `gc --cruft` by default
      builtin/gc.c: make `gc.cruftPacks` enabled by default
      repository.h: drop unused `gc_cruft_packs`
      string-list: multi-delimiter `string_list_split_in_place()`
      string-list: introduce `string_list_setlen()`
      t/helper/test-hashmap.c: avoid using `strtok()`
      t/helper/test-oidmap.c: avoid using `strtok()`
      t/helper/test-json-writer.c: avoid using `strtok()`
      banned.h: mark `strtok()` and `strtok_r()` as banned
      credential.c: store "wwwauth[]" values in `credential_read()`
      t/lib-credential.sh: ensure credential helpers handle long headers
      contrib/credential: avoid fixed-size buffer in osxkeychain
      contrib/credential: remove 'gnome-keyring' credential helper
      contrib/credential: .gitignore libsecret build artifacts
      contrib/credential: avoid fixed-size buffer in libsecret
      contrib/credential: embiggen fixed-size buffer in wincred

Teng Long (1):
      push: introduce '--branches' option

William Sprent (2):
      builtin/sparse-checkout: remove NEED_WORK_TREE flag
      builtin/sparse-checkout: add check-rules command

ZheNing Hu (2):
      receive-pack: fix funny ref error messsage
      push: allow delete single-level ref

Ævar Arnfjörð Bjarmason (33):
      auto-crlf tests: don't lose exit code in loops and outside tests
      t/lib-patch-mode.sh: fix ignored exit codes
      tests: don't lose exit status with "(cd ...; test <op> $(git ...))"
      tests: don't lose "git" exit codes in "! ( git ... | grep )"
      tests: don't lose exit status with "test <op> $(git ...)"
      tests: don't lose misc "git" exit codes
      sequencer.c: fix overflow & segfault in parse_strategy_opts()
      cocci: remove dead rule from "the_repository.pending.cocci"
      cocci: fix incorrect & verbose "the_repository" rules
      cocci: sort "the_repository" rules by header
      cocci: add missing "the_repository" macros to "pending"
      cocci: apply the "cache.h" part of "the_repository.pending"
      cocci: apply the "commit-reach.h" part of "the_repository.pending"
      cocci: apply the "commit.h" part of "the_repository.pending"
      cocci: apply the "diff.h" part of "the_repository.pending"
      cocci: apply the "object-store.h" part of "the_repository.pending"
      cocci: apply the "pretty.h" part of "the_repository.pending"
      cocci: apply the "packfile.h" part of "the_repository.pending"
      cocci: apply the "promisor-remote.h" part of "the_repository.pending"
      cocci: apply the "refs.h" part of "the_repository.pending"
      cocci: apply the "rerere.h" part of "the_repository.pending"
      cocci: apply the "revision.h" part of "the_repository.pending"
      post-cocci: adjust comments for recent repo_* migration
      libs: use "struct repository *" argument, not "the_repository"
      config tests: cover blind spots in git_die_config() tests
      config tests: add "NULL" tests for *_get_value_multi()
      config API: add and use a "git_config_get()" family of functions
      versioncmp.c: refactor config reading next commit
      config API: have *_multi() return an "int" and take a "dest"
      for-each-repo: error on bad --config
      config API users: test for *_get_value_multi() segfaults
      config API: add "string" version of *_value_multi(), fix segfaults
      for-each-repo: with bad config, don't conflate <path> and <cmd>

Øystein Walle (2):
      ref-filter: remove unused ref_format member
      branch, for-each-ref, tag: add option to omit empty lines


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.40.0
@ 2023-03-13 17:48  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-03-13 17:48 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

The latest feature release Git v2.40.0 is now available at the
usual places.  It is comprised of 472 non-merge commits since
v2.39.0, contributed by 88 people, 30 of which are new faces [*].

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.40.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.39.0 are as follows.
Welcome to the Git development community!

  Adam Szkoda, Alison Winters, Ashutosh Pandey, Carl Baldwin,
  Daniël Haazen, Drew Noakes, Eric Sesterhenn, Gwyneth Morgan,
  Harshil-Jani, Hubert Jasudowicz, idriss fekir, Kostya Farber,
  Marco Nenciarini, Markus Vervier, Matheus Tavares Bernardino,
  Mathias Krause, Pat LaVarre, Peter Grayson, Rudy Rigot, Seija,
  Seija Kijin, Simon Gerber, Thierry Reding, toon@iotcl.com, Wes
  Lord, Yukai Chou, Yutaro Ohno, yvvdwf, Zhang Yi, and 孟子易.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alexander Shopov, Andrei Rybak, Bagas
  Sanjaya, Calvin Wan, Carlo Marcelo Arenas Belón, Christian
  Couder, Chris. Webster, Derrick Stolee, Đoàn Trần Công
  Danh, Elijah Newren, Emily Shaffer, Emir SARI, Eric Sunshine,
  Eric Wong, Erik Cervin Edin, Fangyi Zhou, Glen Choo, Jean-Noël
  Avila, Jeff Hostetler, Jeff King, Jiang Xin, Joern Schneeweisz,
  Johannes Schindelin, Johannes Sixt, John Cai, Jonathan Tan,
  Jordi Mas, Junio C Hamano, Karthik Nayak, Kevin Willford, Kyle
  Meyer, Kyle Zhao, Lars Kellogg-Stedman, Martin Ågren, Matthias
  Aßhauer, Matthias Rüster, M Hickford, Patrick Steinhardt,
  Peter Krefting, Philip Oakley, Philippe Blain, Phillip Wood,
  Ralf Thielow, Randall S. Becker, René Scharfe, Rubén Justo,
  Sean Allred, Siddharth Asthana, Sven Strickroth, SZEDER Gábor,
  Taylor Blau, Teng Long, Torsten Bögershausen, William Sprent,
  Yoichi Nakayama, ZheNing Hu, and 依云.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.40 Release Notes
=======================

UI, Workflows & Features

 * "merge-tree" learns a new `--merge-base` option.

 * "git jump" (in contrib/) learned to present the "quickfix list" to
   its standard output (instead of letting it consumed by the editor
   it invokes), and learned to also drive emacs/emacsclient.

 * "git var UNKNOWN_VARIABLE" and "git var VARIABLE" with the variable
   given an empty value used to behave identically.  Now the latter
   just gives an empty output, while the former still gives an error
   message.

 * Introduce a case insensitive mode to the Bash completion helpers.

 * The advice message given by "git status" when it takes long time to
   enumerate untracked paths has been updated.

 * Just like "git var GIT_EDITOR" abstracts the complex logic to
   choose which editor gets used behind it, "git var" now give support
   to GIT_SEQUENCE_EDITOR.

 * "git format-patch" learned to honor format.mboxrd even when sending
   patches to the standard output stream,

 * 'cat-file' gains mailmap support for its '--batch-check' and '-s'
   options.

 * Conditionally skip the pre-applypatch and applypatch-msg hooks when
   applying patches with 'git am'.

 * Introduce an optional configuration to allow the trailing hash that
   protects the index file from bit flipping.

 * "git check-attr" learned to take an optional tree-ish to read the
   .gitattributes file from.

 * "scalar" learned to give progress bar.

 * "grep -P" learned to use Unicode Character Property to grok
   character classes when processing \b and \w etc.

 * "git rebase" often ignored incompatible options instead of
   complaining, which has been corrected.

 * "scalar" warns but continues when its periodic maintenance
   feature cannot be enabled.

 * The bundle-URI subsystem adds support for creation-token heuristics
   to help incremental fetches.

 * Userdiff regexp update for Java language.

 * "git fetch --jobs=0" used to hit a BUG(), which has been corrected
   to use the available CPUs.

 * An invalid label or ref in the "rebase -i" todo file used to
   trigger an runtime error. SUch an error is now diagnosed while the
   todo file is parsed.

 * The "diff" drivers specified by the "diff" attribute attached to
   paths can now specify which algorithm (e.g. histogram) to use.

 * "git range-diff" learned --abbrev=<num> option.

 * "git archive HEAD^{tree}" records the paths with the current
   timestamp in the archive, making it harder to obtain a stable
   output.  The command learned the --mtime option to specify an
   arbitrary timestamp (e.g. --mtime="@0 +0000" for the epoch).

 * The credential subsystem learned that a password may have an
   explicit expiration.

 * The format.attach configuration variable lacked a way to override a
   value defined in a lower-priority configuration file (e.g. the
   system one) by redefining it in a higher-priority configuration
   file.  Now, setting format.attach to an empty string means show the
   patch inline in the e-mail message, without using MIME attachment.

   This is a backward incompatible change.


Performance, Internal Implementation, Development Support etc.

 * `git bisect` becomes a builtin.

 * The pack-bitmap machinery is taught to log the paths of redundant
   bitmap(s) to trace2 instead of stderr.

 * Use the SHA1DC implementation on macOS, just like other platforms,
   by default.

 * Even in a repository with promisor remote, it is useless to
   attempt to lazily attempt fetching an object that is expected to be
   commit, because no "filter" mode omits commit objects.  Take
   advantage of this assumption to fail fast on errors.

 * Stop using "git --super-prefix" and narrow the scope of its use to
   the submodule--helper.

 * Stop running win+VS build by default.

 * CI updates.  We probably want a clean-up to move the long shell
   script embedded in yaml file into a separate file, but that can
   come later.

 * Use `git diff --no-index` as a test_cmp on Windows.

   We'd probably need to revisit "do we really want to, and have to,
   lose CRLF vs LF?" later, at which time we may be able to further
   clean this up by replacing "git diff --no-index" with "diff -u".

 * Avoid unnecessary builds in CI, with settings configured in
   ci-config.

 * Plug leaks in sequencer subsystem and its users.

 * In-tree .gitattributes update to match the way we recommend our
   users to mark a file as text.
   (merge 1f34e0cd3d po/attributes-text later to maint).

 * Finally retire the scripted "git add -p/-i" implementation and have
   everybody use the one reimplemented in C.


Fixes since v2.39
-----------------

 * Various leak fixes.

 * Fix a bug where `pack-objects` would not respect multiple `--filter`
   arguments when invoked directly.
   (merge d4f7036887 rs/multi-filter-args later to maint).

 * Make fsmonitor more robust to avoid the flakiness seen in t7527.
   (merge 6692d45477 jh/t7527-unflake-by-forcing-cookie later to maint).

 * Stop using deprecated macOS API in fsmonitor.
   (merge b0226007f0 jh/fsmonitor-darwin-modernize later to maint).

 * Redefining system functions for a few functions did not follow our
   usual "implement git_foo() and #define foo(args) git_foo(args)"
   pattern, which has broken build for some folks.

 * The way the diff machinery prepares the options array for the
   parse_options API has been refactored to avoid resource leaks.
   (merge 189e97bc4b rs/diff-parseopts later to maint).

 * Correct pthread API usage.
   (merge 786e67611d sx/pthread-error-check-fix later to maint).

 * The code to auto-correct a misspelt subcommand unnecessarily called
   into git_default_config() from the early config codepath, which was
   a no-no.  This has bee corrected.
   (merge 0918d08887 sg/help-autocorrect-config-fix later to maint).

 * "git http-fetch" (which is rarely used) forgot to identify itself
   in the trace2 output.
   (merge 7abb43cbc8 jt/http-fetch-trace2-report-name later to maint).

 * The output from "git diff --stat" on an unmerged path lost the
   terminating LF in Git 2.39, which has been corrected.
   (merge 209d9cb011 pg/diff-stat-unmerged-regression-fix later to maint).

 * "git pull -v --recurse-submodules" attempted to pass "-v" down to
   underlying "git submodule update", which did not understand the
   request and barfed, which has been corrected.
   (merge 6f65f84766 ss/pull-v-recurse-fix later to maint).

 * When given a pattern that matches an empty string at the end of a
   line, the code to parse the "git diff" line-ranges fell into an
   infinite loop, which has been corrected.

 * Fix the sequence to fsync $GIT_DIR/packed-refs file that forgot to
   flush its output to the disk..

 * Fix to a small regression in 2.38 days.

 * "git diff --relative" did not mix well with "git diff --ext-diff",
   which has been corrected.

 * The logic to see if we are using the "cone" mode by checking the
   sparsity patterns has been tightened to avoid mistaking a pattern
   that names a single file as specifying a cone.

 * Deal with a few deprecation warning from cURL library.

 * Doc update for environment variables set when hooks are invoked.

 * Document ORIG_HEAD a bit more.

 * "git ls-tree --format='%(path) %(path)' $tree $path" showed the
   path three times, which has been corrected.

 * Remove "git env--helper" and demote it to a test-tool subcommand.
   (merge 4a1baacd46 ab/test-env-helper later to maint).

 * Newer regex library macOS stopped enabling GNU-like enhanced BRE,
   where '\(A\|B\)' works as alternation, unless explicitly asked with
   the REG_ENHANCED flag.  "git grep" now can be compiled to do so, to
   retain the old behaviour.

 * Pthread emulation on Win32 leaked thread handle when a thread is
   joined.
   (merge 238a9dfe86 sk/win32-close-handle-upon-pthread-join later to maint).

 * "git send-email -v 3" used to be expanded to "git send-email
   --validate 3" when the user meant to pass them down to
   "format-patch", which has been corrected.
   (merge 8774aa56ad km/send-email-with-v-reroll-count later to maint).

 * Document that "branch -f <branch>" disables only the safety to
   avoid recreating an existing branch.

 * "git fetch <group>", when "<group>" of remotes lists the same
   remote twice, unnecessarily failed when parallel fetching was
   enabled, which has been corrected.
   (merge 06a668cb90 cw/fetch-remote-group-with-duplication later to maint).

 * Clarify how "checkout -b/-B" and "git branch [-f]" are similar but
   different in the documentation.

 * "git hash-object" now checks that the resulting object is well
   formed with the same code as "git fsck".
   (merge 8e4309038f jk/hash-object-fsck later to maint).

 * Improve the error message given when private key is not loaded in
   the ssh agent in the codepath to sign with an ssh key.
   (merge dce7b31126 as/ssh-signing-improve-key-missing-error later to maint).

 * Adjust "git request-pull" to strip embedded signature from signed
   tags to notice non-PGP signatures.
   (merge a9cad02538 gm/request-pull-with-non-pgp-signed-tags later to maint).

 * Remove support for MSys, which now lags way behind MSys2.
   (merge 2987407f3c hj/remove-msys-support later to maint).

 * Fix use of CreateThread() API call made early in the windows
   start-up code.
   (merge 592bcab61b sk/winansi-createthread-fix later to maint).

 * "git pack-objects" learned to release delta-island bitmap data when
   it is done using it, saving peak heap memory usage.
   (merge 647982bb71 ew/free-island-marks later to maint).

 * In an environment where dynamically generated code is prohibited to
   run (e.g. SELinux), failure to JIT pcre patterns is expected.  Fall
   back to interpreted execution in such a case.
   (merge 50b6ad55b0 cb/grep-fallback-failing-jit later to maint).

 * "git name-rev" heuristics update.
   (merge b2182a8730 en/name-rev-make-taggerdate-much-less-important later to maint).

 * Remove more remaining uses of macros that relies on the_index
   singleton instance without explicitly spelling it out.

 * Remove unnecessary explicit sizing of strbuf.
   (merge 93ea118bed rs/cache-tree-strbuf-growth-fix later to maint).

 * Doc update.
   (merge d9ec3b0dc0 jk/doc-ls-remote-matching later to maint).

 * Error messages given upon a signature verification failure used to
   discard the errors from underlying gpg program, which has been
   corrected.
   (merge ad6b320756 js/gpg-errors later to maint).

 * Update --date=default documentation.
   (merge 9deef088ae rd/doc-default-date-format later to maint).

 * A test helper had a single write(2) of 256kB, which was too big for
   some platforms (e.g. NonStop), which has been corrected by using
   xwrite() wrapper appropriately.
   (merge 58eab6ff13 jc/genzeros-avoid-raw-write later to maint).

 * sscanf(3) used in "git symbolic-ref --short" implementation found
   to be not working reliably on macOS in UTF-8 locales.  Rewrite the
   code to avoid sscanf() altogether to work it around.
   (merge 613bef56b8 jk/shorten-unambiguous-ref-wo-sscanf later to maint).

 * Various fix-ups on HTTP tests.
   (merge 8f2146dbf1 jk/http-test-fixes later to maint).

 * Fixes to code that parses the todo file used in "rebase -i".
   (merge 666b6e1135 pw/rebase-i-parse-fix later to maint).

 * Test library clean-up.
   (merge c600a91c94 ar/test-lib-remove-stale-comment later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 4eb1ccecd4 dh/mingw-ownership-check-typofix later to maint).
   (merge f95526419b ar/typofix-gitattributes-doc later to maint).
   (merge 27875aeec9 km/doc-branch-start-point later to maint).
   (merge 35c194dc57 es/t1509-root-fixes later to maint).
   (merge 7b341645e3 pw/ci-print-failure-name-fix later to maint).
   (merge bcb71d45bf jx/t1301-updates later to maint).
   (merge ebdc46c242 jc/doc-diff-patch.txt later to maint).
   (merge a87a20cbb4 ar/test-cleanup later to maint).
   (merge f5156f1885 ar/bisect-doc-update later to maint).
   (merge fca2d86c97 jk/interop-error later to maint).
   (merge cf4936ed74 tl/ls-tree-code-clean-up later to maint).
   (merge dcb47e52b0 en/t6426-todo-cleanup later to maint).
   (merge 5b8db44bdd jc/format-patch-v-unleak later to maint).
   (merge 590b636737 jk/hash-object-literally-fd-leak later to maint).
   (merge 5458ba0a4d tb/t0003-invoke-dd-more-portably later to maint).
   (merge 70661d288b ar/markup-em-dash later to maint).
   (merge e750951e74 en/ls-files-doc-update later to maint).
   (merge 4f542975d1 mh/doc-credential-cache-only-in-core later to maint).
   (merge 3a2ebaebc7 gc/index-format-doc later to maint).
   (merge b08edf709d jk/httpd-test-updates later to maint).
   (merge d85e9448dd wl/new-command-doc later to maint).
   (merge d912a603ed kf/t5000-modernise later to maint).
   (merge e65b868d07 rs/size-t-fixes later to maint).
   (merge 3eb1e1ca9a ab/config-h-remove-unused later to maint).
   (merge d390e08076 cw/doc-pushurl-vs-url later to maint).
   (merge 567342fc77 rs/ctype-test later to maint).
   (merge d35d8f2e7a ap/t2015-style-update later to maint).

----------------------------------------------------------------

Changes since v2.39.0 are as follows:

Adam Szkoda (1):
      ssh signing: better error message when key not in agent

Alexander Shopov (1):
      l10n: bg.po: Updated Bulgarian translation (5490t)

Alison Winters (2):
      completion: add optional ignore-case when matching refs
      completion: add case-insensitive match of pseudorefs

Andrei Rybak (12):
      gitattributes.txt: fix typo in "comma separated"
      *: fix typos which duplicate a word
      git-bisect-lk2009: update java code conventions link
      git-bisect-lk2009: update nist report link
      t6003: uncomment test '--max-age=c3, --topo-order'
      t6422: drop commented out code
      t7527: use test_when_finished in 'case insensitive+preserving'
      Documentation: render dash correctly
      userdiff: support Java type parameters
      userdiff: support Java record types
      userdiff: support Java sealed classes
      test-lib: drop comment about test_description

Ashutosh Pandey (1):
      t2015-checkout-unborn.sh: changes the style for cd

Bagas Sanjaya (1):
      l10n: po-id for 2.40 (round 1)

Calvin Wan (2):
      fetch: fix duplicate remote parallel fetch bug
      Documentation: clarify multiple pushurls vs urls

Carlo Marcelo Arenas Belón (2):
      test-lib: add prerequisite for 64-bit platforms
      grep: correctly identify utf-8 characters with \{b,w} in -P

Chris. Webster (3):
      ci (check-whitespace): suggest fixes for errors
      ci (check-whitespace): add links to job output
      ci (check-whitespace): move to actions/checkout@v3

Daniël Haazen (1):
      mingw: fix typo in an error message from ownership check

Derrick Stolee (25):
      transport: rename got_remote_heads
      bundle-uri: serve bundle.* keys from config
      strbuf: introduce strbuf_strip_file_from_path()
      bundle-uri: allow relative URLs in bundle lists
      bundle-uri: download bundles from an advertised list
      clone: unbundle the advertised bundles
      hashfile: allow skipping the hash function
      read-cache: add index.skipHash config option
      test-lib-functions: add helper for trailing hash
      features: feature.manyFiles implies fast index writes
      t1600: fix racy index.skipHash test
      t: allow 'scalar' in test_must_fail
      t921*: test scalar behavior starting maintenance
      scalar: only warn when background maintenance fails
      bundle: test unbundling with incomplete history
      bundle: verify using check_connected()
      t5558: add tests for creationToken heuristic
      bundle-uri: parse bundle.heuristic=creationToken
      bundle-uri: parse bundle.<id>.creationToken values
      bundle-uri: download in creationToken order
      clone: set fetch.bundleURI if appropriate
      bundle-uri: drop bundle.flag from design doc
      fetch: fetch from an external bundle URI
      bundle-uri: store fetch.bundleCreationToken
      bundle-uri: test missing bundles with heuristic

Elijah Newren (16):
      ls-files: add missing documentation for --resolve-undo option
      ls-files: clarify descriptions of file selection options
      ls-files: clarify descriptions of status tags for -t
      ls-files: guide folks to --exclude-standard over other --exclude* options
      t6426: fix TODO about making test more comprehensive
      rebase: mark --update-refs as requiring the merge backend
      rebase: flag --apply and --merge as incompatible
      rebase: remove --allow-empty-message from incompatible opts
      rebase: fix docs about incompatibilities with --root
      rebase: fix incompatiblity checks for --[no-]reapply-cherry-picks
      rebase: add coverage of other incompatible options
      rebase: clarify the OPT_CMDMODE incompatibilities
      rebase: fix formatting of rebase --reapply-cherry-picks option in docs
      rebase: put rebase_options initialization in single place
      rebase: provide better error message for apply options vs. merge config
      name-rev: fix names by dropping taggerdate workaround

Emily Shaffer (4):
      run-command: allow stdin for run_processes_parallel
      hook API: support passing stdin to hooks, convert am's 'post-rewrite'
      sequencer: use the new hook API for the simpler "post-rewrite" call
      hook: support a --to-stdin=<path> option

Emir SARI (1):
      l10n: tr: Update Turkish translations for v.2.40.0

Eric Sunshine (4):
      t1509: fix failing "root work tree" test due to owner-check
      t1509: make "setup" test more robust
      t1509: facilitate repeated script invocations
      githooks: discuss Git operations in foreign repositories

Eric Wong (2):
      format-patch: support format.mboxrd with --stdout
      delta-islands: free island_marks and bitmaps

Fangyi Zhou (1):
      l10n: zh_CN v2.40.0 round 1

Glen Choo (2):
      read-tree + fetch tests: test failing "--super-prefix" interaction
      docs: document zero bits in index "mode"

Gwyneth Morgan (2):
      request-pull: filter out SSH/X.509 tag signatures
      signature-format.txt: note SSH and X.509 signature delimiters

Harshil-Jani (2):
      mingw: remove duplicate `USE_NED_ALLOCATOR` directive
      mingw: remove msysGit/MSYS1 support

Jean-Noël Avila (3):
      l10n: fr: fix some typos
      l10n: fr: v2.40.0 rnd 1
      l10n: fr: v2.40.0 rnd 2

Jeff Hostetler (2):
      fsmonitor: fix race seen in t7527
      fsmonitor: eliminate call to deprecated FSEventStream function

Jeff King (74):
      git-jump: move valid-mode check earlier
      pack-bitmap.c: break out of the bitmap loop early if not tracing
      pack-bitmap.c: trace bitmap ignore logs when midx-bitmap is found
      git-compat-util: avoid redefining system function names
      git-compat-util: undefine system names before redeclaring them
      server_supports_v2(): use a separate function for die_on_error
      ls-refs: use repository parameter to iterate refs
      blob: drop unused parts of parse_blob_buffer()
      list-objects: drop process_gitlink() function
      ws: drop unused parameter from ws_blank_line()
      xdiff: drop unused parameter in def_ff()
      xdiff: mark unused parameter in xdl_call_hunk_func()
      diff: mark unused parameters in callbacks
      list-objects-filter: mark unused parameters in virtual functions
      userdiff: mark unused parameter in internal callback
      ref-filter: reject arguments to %(HEAD)
      ref-filter: factor out "%(foo) does not take arguments" errors
      ref-filter: factor out "unrecognized %(foo) arg" errors
      ref-filter: truncate atom names in error messages
      ref-filter: convert email atom parser to use err_bad_arg()
      test-bundle-uri: drop unused variables
      diff: use filespec path to set up tempfiles for ext-diff
      diff: clean up external-diff argv setup
      diff: drop "name" parameter from prepare_temp_file()
      convert trivial uses of strncmp() to starts_with()
      convert trivial uses of strncmp() to skip_prefix()
      object-file: inline calls to read_object()
      streaming: inline call to read_object_file_extended()
      read_object_file_extended(): drop lookup_replace option
      repo_read_object_file(): stop wrapping read_object_file_extended()
      packfile: inline custom read_object()
      object-file: fix indent-with-space
      t/interop: report which vanilla git command failed
      http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
      http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
      http: support CURLOPT_PROTOCOLS_STR
      t1007: modernize malformed object tests
      t1006: stop using 0-padded timestamps
      t7030: stop using invalid tag name
      t: use hash-object --literally when created malformed objects
      fsck: provide a function to fsck buffer without object struct
      hash-object: use fsck for object checks
      hash-object: fix descriptor leak with --literally
      fsck: do not assume NUL-termination of buffers
      t/lib-httpd: bump required apache version to 2.2
      t/lib-httpd: bump required apache version to 2.4
      t/lib-httpd: drop SSLMutex config
      t/lib-httpd: increase ssl key size to 2048 bits
      http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
      http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
      http: support CURLOPT_PROTOCOLS_STR
      doc/ls-remote: cosmetic cleanups for examples
      doc/ls-remote: clarify pattern format
      shorten_unambiguous_ref(): avoid integer truncation
      shorten_unambiguous_ref(): use NUM_REV_PARSE_RULES constant
      shorten_unambiguous_ref(): avoid sscanf()
      add basic http proxy tests
      t0066: drop setup of "dir5"
      t5541: run "used receive-pack service" test earlier
      t5541: stop marking "used receive-pack service" test as v0 only
      t5541: simplify and move "no empty path components" test
      t5551: drop redundant grep for Accept-Language
      t5551: lower-case headers in expected curl trace
      t5551: handle HTTP/2 when checking curl trace
      t5551: stop forcing clone to run with v0 protocol
      t5551: handle v2 protocol when checking curl trace
      t5551: handle v2 protocol in upload-pack service test
      t5551: simplify expected cookie file
      t5551: handle v2 protocol in cookie test
      t5551: drop curl trace lines without headers
      t/lib-httpd: respect $HTTPD_PROTO in expect_askpass()
      t/lib-httpd: enable HTTP/2 "h2" protocol, not just h2c
      t5559: fix test failures with LIB_HTTPD_SSL
      t5559: make SSL/TLS the default

Jiang Xin (3):
      t1301: fix wrong template dir for git-init
      t1301: use test_when_finished for cleanup
      t1301: do not change $CWD in "shared=all" test case

Johannes Schindelin (24):
      bisect--helper: handle states directly
      Turn `git bisect` into a full built-in
      t0021: use Windows-friendly `pwd`
      tests(mingw): avoid very slow `mingw_test_cmp`
      ci: only run win+VS build & tests in Git for Windows' fork
      bisect--helper: simplify exit code computation
      bisect: verify that a bogus option won't try to start a bisection
      bisect run: fix the error message
      bisect: remove Cogito-related code
      bisect: no longer try to clean up left-over `.git/head-name` files
      fsck: document the new `gitattributes` message IDs
      attr: adjust a mismatched data type
      attr: adjust a mismatched data type
      Git 2.31.7
      Git 2.32.6
      Git 2.33.7
      Git 2.34.7
      Git 2.35.7
      Git 2.36.5
      Git 2.37.6
      Git 2.38.4
      Git 2.39.2
      t7510: add a test case that does not need gpg
      gpg: do show gpg's error message upon failure

Johannes Sixt (1):
      t3920: don't ignore errors of more than one command with `|| true`

John Cai (4):
      docs: link generating patch sections
      attr: fix instructions on how to check attrs
      diff: consolidate diff algorithm option parsing
      diff: teach diff to read algorithm from diff driver

Jonathan Tan (5):
      http-fetch: invoke trace2_cmd_name()
      object-file: remove OBJECT_INFO_IGNORE_LOOSE
      object-file: refactor map_loose_object_1()
      object-file: emit corruption errors when detected
      commit: don't lazy-fetch commits

Jordi Mas (1):
      l10n: Update Catalan translation

Junio C Hamano (43):
      Git 2.30.7
      Git 2.31.6
      Git 2.32.5
      Git 2.33.6
      Git 2.34.6
      Git 2.35.6
      Git 2.36.4
      Git 2.37.5
      Git 2.38.3
      Git 2.39.1
      Start the 2.40 cycle
      The first batch for 2.40
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      The sixth batch
      format-patch: unleak "-v <num>"
      The seventh batch
      branch: document `-f` and linked worktree behaviour
      checkout: document -b/-B to highlight the differences from "git branch"
      The eighth batch
      The ninth batch
      The tenth batch
      The eleventh batch
      The twelfth batch
      The thirteenth batch
      Git 2.30.8
      The fourteenth batch
      The fifteenth batch
      Prepare for 2.39.3 just in case
      The sixteenth batch
      rev-list: clarify git-log default date format
      test-genzeros: avoid raw write(2)
      format.attach: allow empty value to disable multi-part messages
      The seventeenth batch
      Git 2.40-rc0
      A few more topics post 2.40-rc0
      A bit more before 2.40-rc1
      A bit more before 2.40-rc1
      Git 2.40-rc1
      Git 2.40-rc2
      Git 2.40

Karthik Nayak (2):
      t0003: move setup for `--all` into new block
      attr: add flag `--source` to work with tree-ish

Kostya Farber (1):
      t5000: modernise archive and :(glob) test

Kyle Meyer (2):
      send-email: relay '-v N' to format-patch
      doc/git-branch: fix --force description typo

Kyle Zhao (3):
      merge-tree.c: add --merge-base=<commit> option
      merge-tree.c: allow specifying the merge-base when --stdin is passed
      docs: fix description of the `--merge-base` option

Lars Kellogg-Stedman (1):
      line-range: fix infinite loop bug with '$' regex

M Hickford (2):
      Documentation: clarify that cache forgets credentials if the system restarts
      credential: new attribute password_expiry_utc

Martin Ågren (1):
      git-cat-file.txt: fix list continuations rendering literally

Mathias Krause (1):
      grep: fall back to interpreter if JIT memory allocation fails

Matthias Aßhauer (1):
      fetch: choose a sensible default with --jobs=0 again

Patrick Steinhardt (28):
      attr: fix overflow when upserting attribute with overly long name
      attr: fix out-of-bounds read with huge attribute names
      attr: fix integer overflow when parsing huge attribute names
      attr: fix out-of-bounds write when parsing huge number of attributes
      attr: fix out-of-bounds read with unreasonable amount of patterns
      attr: fix integer overflow with more than INT_MAX macros
      attr: harden allocation against integer overflows
      attr: fix silently splitting up lines longer than 2048 bytes
      attr: ignore attribute lines exceeding 2048 bytes
      attr: ignore overly large gitattributes files
      pretty: fix out-of-bounds write caused by integer overflow
      pretty: fix out-of-bounds read when left-flushing with stealing
      pretty: fix out-of-bounds read when parsing invalid padding format
      pretty: fix adding linefeed when placeholder is not expanded
      pretty: fix integer overflow in wrapping format
      utf8: fix truncated string lengths in `utf8_strnwidth()`
      utf8: fix returning negative string width
      utf8: fix overflow when returning string width
      utf8: fix checking for glyph width in `strbuf_utf8_replace()`
      utf8: refactor `strbuf_utf8_replace` to not rely on preallocated buffer
      pretty: restrict input lengths for padding and wrapping formats
      fsck: refactor `fsck_blob()` to allow for more checks
      fsck: pull out function to check a set of blobs
      fsck: move checks for gitattributes
      fsck: implement checks for gitattributes
      refs: fix corruption by not correctly syncing packed-refs to disk
      apply: fix writing behind newly created symbolic links
      delta-islands: fix segfault when freeing island marks

Peter Grayson (1):
      diff: fix regression with --stat and unmerged file

Peter Krefting (1):
      l10n: sv.po: Update Swedish translation (5490t0f0u)

Philip Oakley (6):
      doc: pretty-formats: separate parameters from placeholders
      doc: pretty-formats: delineate `%<|(` parameter values
      doc: pretty-formats document negative column alignments
      doc: pretty-formats describe use of ellipsis in truncation
      doc: pretty-formats note wide char limitations, and add tests
      .gitattributes: include `text` attribute for eol attributes

Philippe Blain (6):
      git-cherry-pick.txt: do not use 'ORIG_HEAD' in example
      git-reset.txt: mention 'ORIG_HEAD' in the Description
      git-merge.txt: mention 'ORIG_HEAD' in the Description
      revisions.txt: be explicit about commands writing 'ORIG_HEAD'
      git-rebase.txt: add a note about 'ORIG_HEAD' being overwritten
      branch: improve advice when --recurse-submodules fails

Phillip Wood (5):
      ci(github): restore "print test failures" step name
      rebase: cleanup "--exec" option handling
      rebase -i: check labels and refs when parsing todo list
      rebase -i: match whole word in is_command()
      rebase -i: fix parsing of "fixup -C<commit>"

Ralf Thielow (1):
      l10n: update German translation

René Scharfe (31):
      t5317: stop losing return codes of git ls-files
      t5317: demonstrate failure to handle multiple --filter options
      pack-objects: fix handling of multiple --filter options
      pack-objects: simplify --filter handling
      list-objects-filter: remove OPT_PARSE_LIST_OBJECTS_FILTER_INIT()
      t4205: don't exit test script on failure
      diff: factor out add_diff_options()
      diff: use add_diff_options() in diff_opt_parse()
      diff: remove parseopts member from struct diff_options
      list-objects-filter: plug pattern_list leak
      t3920: support CR-eating grep
      reflog: clear leftovers in reflog_expiry_cleanup()
      commit: skip already cleared parents in clear_commit_marks_1()
      am: don't pass strvec to apply_parse_options()
      object-file: inline write_buffer()
      use enhanced basic regular expressions on macOS
      mingw: make argv2 in try_shell_exec() non-const
      factor out BARF_UNLESS_COPYABLE
      do full type check in BARF_UNLESS_COPYABLE
      add DUP_ARRAY
      use DUP_ARRAY
      ls-tree: fix expansion of repeated %(path)
      ls-tree: remove dead store and strbuf for quote_c_style()
      read-cache: use size_t for {base,df}_name_compare()
      pack-objects: use strcspn(3) in name_cmp_len()
      cache-tree: fix strbuf growth in prime_cache_tree_rec()
      test-ctype: test isascii
      test-ctype: test islower and isupper
      test-ctype: test iscntrl, ispunct, isxdigit and isprint
      archive: add --mtime
      range-diff: avoid compiler warning when char is unsigned

Rubén Justo (1):
      branch: force-copy a branch to itself via @{-1} is a no-op

Rudy Rigot (1):
      status: modernize git-status "slow untracked files" advice

SZEDER Gábor (1):
      tests: make 'test_oid' print trailing newline

Sean Allred (3):
      var: do not print usage() with a correct invocation
      var: allow GIT_EDITOR to return null
      var: add GIT_SEQUENCE_EDITOR variable

Seija (1):
      maintenance: compare output of pthread functions for inequality with 0

Seija Kijin (6):
      git: remove duplicate includes
      win32: use _endthreadex to terminate threads, not ExitThread
      win32: prepare pthread.c for change by formatting
      win32: close handles of threads that have been joined
      merge: break out of all_strategy loop when strategy is found
      compat/winansi: check for errors of CreateThread() correctly

Siddharth Asthana (2):
      cat-file: add mailmap support to -s option
      cat-file: add mailmap support to --batch-check option

Simon Gerber (1):
      help.c: fix autocorrect in work tree for bare repository

Sven Strickroth (1):
      submodule: accept -v for the update command

Taylor Blau (5):
      ci: avoid unnecessary builds
      t5619: demonstrate clone_local() with ambiguous transport
      clone: delay picking a transport until after get_repo_path()
      dir-iterator: prevent top-level symlinks without FOLLOW_SYMLINKS
      dir-iterator: drop unused `DIR_ITERATOR_FOLLOW_SYMLINKS`

Teng Long (5):
      pack-bitmap.c: remove unnecessary "open_pack_index()" calls
      pack-bitmap.c: avoid exposing absolute paths
      ls-tree: cleanup the redundant SPACE
      t3104: remove shift code in 'test_ls_tree_format'
      range-diff: let '--abbrev' option takes effect

Thierry Reding (1):
      am: allow passing --no-verify flag

Torsten Bögershausen (1):
      t0003: call dd with portable blocksize

Wes Lord (1):
      new-command.txt: update reference to builtin docs

William Sprent (1):
      dir: check for single file cone patterns

Yoichi Nakayama (2):
      git-jump: add an optional argument '--stdout'
      git-jump: invoke emacs/emacsclient

Yukai Chou (1):
      doc: fix non-existent config name

Yutaro Ohno (1):
      doc: add "git switch -c" as another option on detached HEAD

Zhang Yi (1):
      t9700: modernize test scripts

ZheNing Hu (1):
      scalar: show progress if stderr refers to a terminal

idriss fekir (1):
      trace.c, git.c: remove unnecessary parameter to trace_repo_setup()

Ævar Arnfjörð Bjarmason (90):
      bisect tests: test for v2.30.0 "bisect run" regressions
      bisect: refactor bisect_run() to match CodingGuidelines
      bisect test: test exit codes on bad usage
      bisect--helper: emit usage for "git bisect"
      bisect; remove unused "git-bisect.sh" and ".gitignore" entry
      tests: mark tests as passing with SANITIZE=leak
      {reset,merge}: call discard_index() before returning
      commit: discard partial cache before (re-)reading it
      read-cache.c: clear and free "sparse_checkout_patterns"
      dir.c: free "ident" and "exclude_per_dir" in "struct untracked_cache"
      built-ins & libs & helpers: add/move destructors, fix leaks
      unpack-file: fix ancient leak in create_temp_file()
      revision API: call graph_clear() in release_revisions()
      ls-files: fix a --with-tree memory leak
      sequencer.c: fix "opts->strategy" leak in read_strategy_opts()
      connected.c: free the "struct packed_git"
      rebase: don't leak on "--abort"
      cherry-pick: free "struct replay_opts" members
      revert: fix parse_options_concat() leak
      built-ins: use free() not UNLEAK() if trivial, rm dead code
      t5314: check exit code of "git"
      t7600: don't ignore "rev-parse" exit code in helper
      t4023: fix ignored exit codes of git
      Makefile: use sha1collisiondetection by default on OSX and Darwin
      bundle: don't segfault on "git bundle <subcmd>"
      protocol v2: add server-side "bundle-uri" skeleton
      t: create test harness for 'bundle-uri' command
      clone: request the 'bundle-uri' command when available
      bundle-uri client: add boolean transfer.bundleURI setting
      bundle-uri client: add helper for testing server
      submodule absorbgitdirs tests: add missing "Migrating git..." tests
      submodule.c & submodule--helper: pass along "super_prefix" param
      submodule--helper: don't use global --super-prefix in "absorbgitdirs"
      submodule--helper: convert "foreach" to its own "--super-prefix"
      submodule--helper: convert "sync" to its own "--super-prefix"
      submodule--helper: convert "status" to its own "--super-prefix"
      submodule--helper: convert "{update,clone}" to their own "--super-prefix"
      read-tree: add "--super-prefix" option, eliminate global
      builtin/bundle.c: remove superfluous "newargc" variable
      bundle <cmd>: have usage_msg_opt() note the missing "<file>"
      builtin/difftool.c: { 0 }-initialize rather than using memset()
      sparse-index.c: expand_to_path() can assume non-NULL "istate"
      sparse-index API: BUG() out on NULL ensure_full_index()
      read-cache.c: refactor set_new_index_sparsity() for subsequent commit
      bisect--helper: make the order consistently `argc, argv`
      ls-tree: don't use "show_tree_data" for "fast" callbacks
      ls-tree: use a "struct options"
      ls-tree: fold "show_tree_data" into "cb" struct
      ls-tree: make "line_termination" less generic
      env-helper: move this built-in to "test-tool env-helper"
      cache API: add a "INDEX_STATE_INIT" macro/function, add release_index()
      treewide: always have a valid "index_state.repo" member
      add: remove "add.interactive.useBuiltin" & Perl "git add--interactive"
      add API: remove run_add_interactive() wrapper function
      docs & comments: replace mentions of "git-add--interactive.perl"
      tests: mark tests as passing with SANITIZE=leak
      bundle.c: don't leak the "args" in the "struct child_process"
      commit-graph: use free_commit_graph() instead of UNLEAK()
      clone: use free() instead of UNLEAK()
      various: add missing clear_pathspec(), fix leaks
      name-rev: don't xstrdup() an already dup'd string
      repack: fix leaks on error with "goto cleanup"
      worktree: fix a trivial leak in prune_worktrees()
      http-backend.c: fix "dir" and "cmd_arg" leaks in cmd_main()
      http-backend.c: fix cmd_main() memory leak, refactor reg{exec,free}()
      commit-graph: fix a parse_options_concat() leak
      show-branch: free() allocated "head" before return
      builtin/merge.c: use fixed strings, not "strbuf", fix leak
      builtin/merge.c: free "&buf" on "Your local changes..." error
      grep.c: refactor free_grep_patterns()
      grep API: plug memory leaks by freeing "header_list"
      receive-pack: release the linked "struct command *" list
      push: refactor refspec_append_mapped() for subsequent leak-fix
      push: free_refs() the "local_refs" in set_refspecs()
      rebase: use "cleanup" pattern in do_interactive_rebase()
      sequencer.c: split up sequencer_remove_state()
      sequencer API users: fix get_replay_opts() leaks
      builtin/revert.c: move free-ing of "revs" to replay_opts_release()
      builtin/rebase.c: fix "options.onto_name" leak
      sequencer.c: always free() the "msgbuf" in do_pick_commit()
      builtin/rebase.c: free() "options.strategy_opts"
      commit.c: free() revs.commit in get_fork_point()
      config.h: remove unused git_configset_add_parameters()
      run-command.c: remove dead assignment in while-loop
      builtin/rm.c: use narrower "USE_THE_INDEX_VARIABLE"
      cocci & cache.h: fully apply "active_nr" part of index-compatibility
      cocci & cache.h: apply pending "index_cache_pos" rule
      cocci & cache-tree.h: migrate "write_cache_as_tree" to "*_index_*"
      cache-tree API: remove redundant update_main_cache_tree()
      cocci & cache.h: remove "USE_THE_INDEX_COMPATIBILITY_MACROS"

Đoàn Trần Công Danh (6):
      bisect: fix output regressions in v2.30.0
      bisect run: keep some of the post-v2.30.0 output
      bisect-run: verify_good: account for non-negative exit status
      bisect--helper: identify as bisect when report error
      bisect--helper: log: allow arbitrary number of arguments
      date.c: allow ISO 8601 reduced precision times


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.40.0-rc2
@ 2023-03-07 19:47  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-03-07 19:47 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.40.0-rc2 is now available for testing at
the usual places.  It is comprised of 461 non-merge commits since
v2.39.0, contributed by 78 people, 30 of which are new faces [*].

Relative to 2.40-rc1, there is one fix to make "git range-diff
--abbrev=<number>" option work on platforms whose char is unsigned.

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.40.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.39.0 are as follows.
Welcome to the Git development community!

  Adam Szkoda, Alison Winters, Ashutosh Pandey, Carl Baldwin,
  Daniël Haazen, Drew Noakes, Eric Sesterhenn, Gwyneth Morgan,
  Harshil-Jani, Hubert Jasudowicz, idriss fekir, Kostya Farber,
  Marco Nenciarini, Markus Vervier, Matheus Tavares Bernardino,
  Mathias Krause, Pat LaVarre, Peter Grayson, Rudy Rigot, Seija,
  Seija Kijin, Simon Gerber, Thierry Reding, toon@iotcl.com, Wes
  Lord, Yukai Chou, Yutaro Ohno, yvvdwf, Zhang Yi, and 孟子易.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Andrei Rybak, Calvin Wan, Carlo
  Marcelo Arenas Belón, Christian Couder, Chris. Webster,
  Derrick Stolee, Đoàn Trần Công Danh, Elijah Newren,
  Emily Shaffer, Eric Sunshine, Eric Wong, Erik Cervin Edin, Glen
  Choo, Jeff Hostetler, Jeff King, Jiang Xin, Joern Schneeweisz,
  Johannes Schindelin, Johannes Sixt, John Cai, Jonathan Tan,
  Junio C Hamano, Karthik Nayak, Kevin Willford, Kyle Meyer, Kyle
  Zhao, Lars Kellogg-Stedman, Martin Ågren, Matthias Aßhauer,
  M Hickford, Patrick Steinhardt, Philip Oakley, Philippe Blain,
  Phillip Wood, Randall S. Becker, René Scharfe, Rubén Justo,
  Sean Allred, Siddharth Asthana, Sven Strickroth, SZEDER Gábor,
  Taylor Blau, Teng Long, Torsten Bögershausen, William Sprent,
  Yoichi Nakayama, and ZheNing Hu.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.40 Release Notes (draft)
===============================

UI, Workflows & Features

 * "merge-tree" learns a new `--merge-base` option.

 * "git jump" (in contrib/) learned to present the "quickfix list" to
   its standard output (instead of letting it consumed by the editor
   it invokes), and learned to also drive emacs/emacsclient.

 * "git var UNKNOWN_VARIABLE" and "git var VARIABLE" with the variable
   given an empty value used to behave identically.  Now the latter
   just gives an empty output, while the former still gives an error
   message.

 * Introduce a case insensitive mode to the Bash completion helpers.

 * The advice message given by "git status" when it takes long time to
   enumerate untracked paths has been updated.

 * Just like "git var GIT_EDITOR" abstracts the complex logic to
   choose which editor gets used behind it, "git var" now give support
   to GIT_SEQUENCE_EDITOR.

 * "git format-patch" learned to honor format.mboxrd even when sending
   patches to the standard output stream,

 * 'cat-file' gains mailmap support for its '--batch-check' and '-s'
   options.

 * Conditionally skip the pre-applypatch and applypatch-msg hooks when
   applying patches with 'git am'.

 * Introduce an optional configuration to allow the trailing hash that
   protects the index file from bit flipping.

 * "git check-attr" learned to take an optional tree-ish to read the
   .gitattributes file from.

 * "scalar" learned to give progress bar.

 * "grep -P" learned to use Unicode Character Property to grok
   character classes when processing \b and \w etc.

 * "git rebase" often ignored incompatible options instead of
   complaining, which has been corrected.

 * "scalar" warns but continues when its periodic maintenance
   feature cannot be enabled.

 * The bundle-URI subsystem adds support for creation-token heuristics
   to help incremental fetches.

 * Userdiff regexp update for Java language.

 * "git fetch --jobs=0" used to hit a BUG(), which has been corrected
   to use the available CPUs.

 * An invalid label or ref in the "rebase -i" todo file used to
   trigger an runtime error. SUch an error is now diagnosed while the
   todo file is parsed.

 * The "diff" drivers specified by the "diff" attribute attached to
   paths can now specify which algorithm (e.g. histogram) to use.

 * "git range-diff" learned --abbrev=<num> option.

 * "git archive HEAD^{tree}" records the paths with the current
   timestamp in the archive, making it harder to obtain a stable
   output.  The command learned the --mtime option to specify an
   arbitrary timestamp (e.g. --mtime="@0 +0000" for the epoch).

 * The credential subsystem learned that a password may have an
   explicit expiration.

 * The format.attach configuration variable lacked a way to override a
   value defined in a lower-priority configuration file (e.g. the
   system one) by redefining it in a higher-priority configuration
   file.  Now, setting format.attach to an empty string means show the
   patch inline in the e-mail message, without using MIME attachment.

   This is a backward incompatible change.


Performance, Internal Implementation, Development Support etc.

 * `git bisect` becomes a builtin.

 * The pack-bitmap machinery is taught to log the paths of redundant
   bitmap(s) to trace2 instead of stderr.

 * Use the SHA1DC implementation on macOS, just like other platforms,
   by default.

 * Even in a repository with promisor remote, it is useless to
   attempt to lazily attempt fetching an object that is expected to be
   commit, because no "filter" mode omits commit objects.  Take
   advantage of this assumption to fail fast on errors.

 * Stop using "git --super-prefix" and narrow the scope of its use to
   the submodule--helper.

 * Stop running win+VS build by default.

 * CI updates.  We probably want a clean-up to move the long shell
   script embedded in yaml file into a separate file, but that can
   come later.

 * Use `git diff --no-index` as a test_cmp on Windows.

   We'd probably need to revisit "do we really want to, and have to,
   lose CRLF vs LF?" later, at which time we may be able to further
   clean this up by replacing "git diff --no-index" with "diff -u".

 * Avoid unnecessary builds in CI, with settings configured in
   ci-config.

 * Plug leaks in sequencer subsystem and its users.

 * In-tree .gitattributes update to match the way we recommend our
   users to mark a file as text.
   (merge 1f34e0cd3d po/attributes-text later to maint).

 * Finally retire the scripted "git add -p/-i" implementation and have
   everybody use the one reimplemented in C.


Fixes since v2.39
-----------------

 * Various leak fixes.

 * Fix a bug where `pack-objects` would not respect multiple `--filter`
   arguments when invoked directly.
   (merge d4f7036887 rs/multi-filter-args later to maint).

 * Make fsmonitor more robust to avoid the flakiness seen in t7527.
   (merge 6692d45477 jh/t7527-unflake-by-forcing-cookie later to maint).

 * Stop using deprecated macOS API in fsmonitor.
   (merge b0226007f0 jh/fsmonitor-darwin-modernize later to maint).

 * Redefining system functions for a few functions did not follow our
   usual "implement git_foo() and #define foo(args) git_foo(args)"
   pattern, which has broken build for some folks.

 * The way the diff machinery prepares the options array for the
   parse_options API has been refactored to avoid resource leaks.
   (merge 189e97bc4b rs/diff-parseopts later to maint).

 * Correct pthread API usage.
   (merge 786e67611d sx/pthread-error-check-fix later to maint).

 * The code to auto-correct a misspelt subcommand unnecessarily called
   into git_default_config() from the early config codepath, which was
   a no-no.  This has bee corrected.
   (merge 0918d08887 sg/help-autocorrect-config-fix later to maint).

 * "git http-fetch" (which is rarely used) forgot to identify itself
   in the trace2 output.
   (merge 7abb43cbc8 jt/http-fetch-trace2-report-name later to maint).

 * The output from "git diff --stat" on an unmerged path lost the
   terminating LF in Git 2.39, which has been corrected.
   (merge 209d9cb011 pg/diff-stat-unmerged-regression-fix later to maint).

 * "git pull -v --recurse-submodules" attempted to pass "-v" down to
   underlying "git submodule update", which did not understand the
   request and barfed, which has been corrected.
   (merge 6f65f84766 ss/pull-v-recurse-fix later to maint).

 * When given a pattern that matches an empty string at the end of a
   line, the code to parse the "git diff" line-ranges fell into an
   infinite loop, which has been corrected.

 * Fix the sequence to fsync $GIT_DIR/packed-refs file that forgot to
   flush its output to the disk..

 * Fix to a small regression in 2.38 days.

 * "git diff --relative" did not mix well with "git diff --ext-diff",
   which has been corrected.

 * The logic to see if we are using the "cone" mode by checking the
   sparsity patterns has been tightened to avoid mistaking a pattern
   that names a single file as specifying a cone.

 * Deal with a few deprecation warning from cURL library.

 * Doc update for environment variables set when hooks are invoked.

 * Document ORIG_HEAD a bit more.

 * "git ls-tree --format='%(path) %(path)' $tree $path" showed the
   path three times, which has been corrected.

 * Remove "git env--helper" and demote it to a test-tool subcommand.
   (merge 4a1baacd46 ab/test-env-helper later to maint).

 * Newer regex library macOS stopped enabling GNU-like enhanced BRE,
   where '\(A\|B\)' works as alternation, unless explicitly asked with
   the REG_ENHANCED flag.  "git grep" now can be compiled to do so, to
   retain the old behaviour.

 * Pthread emulation on Win32 leaked thread handle when a thread is
   joined.
   (merge 238a9dfe86 sk/win32-close-handle-upon-pthread-join later to maint).

 * "git send-email -v 3" used to be expanded to "git send-email
   --validate 3" when the user meant to pass them down to
   "format-patch", which has been corrected.
   (merge 8774aa56ad km/send-email-with-v-reroll-count later to maint).

 * Document that "branch -f <branch>" disables only the safety to
   avoid recreating an existing branch.

 * "git fetch <group>", when "<group>" of remotes lists the same
   remote twice, unnecessarily failed when parallel fetching was
   enabled, which has been corrected.
   (merge 06a668cb90 cw/fetch-remote-group-with-duplication later to maint).

 * Clarify how "checkout -b/-B" and "git branch [-f]" are similar but
   different in the documentation.

 * "git hash-object" now checks that the resulting object is well
   formed with the same code as "git fsck".
   (merge 8e4309038f jk/hash-object-fsck later to maint).

 * Improve the error message given when private key is not loaded in
   the ssh agent in the codepath to sign with an ssh key.
   (merge dce7b31126 as/ssh-signing-improve-key-missing-error later to maint).

 * Adjust "git request-pull" to strip embedded signature from signed
   tags to notice non-PGP signatures.
   (merge a9cad02538 gm/request-pull-with-non-pgp-signed-tags later to maint).

 * Remove support for MSys, which now lags way behind MSys2.
   (merge 2987407f3c hj/remove-msys-support later to maint).

 * Fix use of CreateThread() API call made early in the windows
   start-up code.
   (merge 592bcab61b sk/winansi-createthread-fix later to maint).

 * "git pack-objects" learned to release delta-island bitmap data when
   it is done using it, saving peak heap memory usage.
   (merge 647982bb71 ew/free-island-marks later to maint).

 * In an environment where dynamically generated code is prohibited to
   run (e.g. SELinux), failure to JIT pcre patterns is expected.  Fall
   back to interpreted execution in such a case.
   (merge 50b6ad55b0 cb/grep-fallback-failing-jit later to maint).

 * "git name-rev" heuristics update.
   (merge b2182a8730 en/name-rev-make-taggerdate-much-less-important later to maint).

 * Remove more remaining uses of macros that relies on the_index
   singleton instance without explicitly spelling it out.

 * Remove unnecessary explicit sizing of strbuf.
   (merge 93ea118bed rs/cache-tree-strbuf-growth-fix later to maint).

 * Doc update.
   (merge d9ec3b0dc0 jk/doc-ls-remote-matching later to maint).

 * Error messages given upon a signature verification failure used to
   discard the errors from underlying gpg program, which has been
   corrected.
   (merge ad6b320756 js/gpg-errors later to maint).

 * Update --date=default documentation.
   (merge 9deef088ae rd/doc-default-date-format later to maint).

 * A test helper had a single write(2) of 256kB, which was too big for
   some platforms (e.g. NonStop), which has been corrected by using
   xwrite() wrapper appropriately.
   (merge 58eab6ff13 jc/genzeros-avoid-raw-write later to maint).

 * sscanf(3) used in "git symbolic-ref --short" implementation found
   to be not working reliably on macOS in UTF-8 locales.  Rewrite the
   code to avoid sscanf() altogether to work it around.
   (merge 613bef56b8 jk/shorten-unambiguous-ref-wo-sscanf later to maint).

 * Various fix-ups on HTTP tests.
   (merge 8f2146dbf1 jk/http-test-fixes later to maint).

 * Fixes to code that parses the todo file used in "rebase -i".
   (merge 666b6e1135 pw/rebase-i-parse-fix later to maint).

 * Test library clean-up.
   (merge c600a91c94 ar/test-lib-remove-stale-comment later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 4eb1ccecd4 dh/mingw-ownership-check-typofix later to maint).
   (merge f95526419b ar/typofix-gitattributes-doc later to maint).
   (merge 27875aeec9 km/doc-branch-start-point later to maint).
   (merge 35c194dc57 es/t1509-root-fixes later to maint).
   (merge 7b341645e3 pw/ci-print-failure-name-fix later to maint).
   (merge bcb71d45bf jx/t1301-updates later to maint).
   (merge ebdc46c242 jc/doc-diff-patch.txt later to maint).
   (merge a87a20cbb4 ar/test-cleanup later to maint).
   (merge f5156f1885 ar/bisect-doc-update later to maint).
   (merge fca2d86c97 jk/interop-error later to maint).
   (merge cf4936ed74 tl/ls-tree-code-clean-up later to maint).
   (merge dcb47e52b0 en/t6426-todo-cleanup later to maint).
   (merge 5b8db44bdd jc/format-patch-v-unleak later to maint).
   (merge 590b636737 jk/hash-object-literally-fd-leak later to maint).
   (merge 5458ba0a4d tb/t0003-invoke-dd-more-portably later to maint).
   (merge 70661d288b ar/markup-em-dash later to maint).
   (merge e750951e74 en/ls-files-doc-update later to maint).
   (merge 4f542975d1 mh/doc-credential-cache-only-in-core later to maint).
   (merge 3a2ebaebc7 gc/index-format-doc later to maint).
   (merge b08edf709d jk/httpd-test-updates later to maint).
   (merge d85e9448dd wl/new-command-doc later to maint).
   (merge d912a603ed kf/t5000-modernise later to maint).
   (merge e65b868d07 rs/size-t-fixes later to maint).
   (merge 3eb1e1ca9a ab/config-h-remove-unused later to maint).
   (merge d390e08076 cw/doc-pushurl-vs-url later to maint).
   (merge 567342fc77 rs/ctype-test later to maint).
   (merge d35d8f2e7a ap/t2015-style-update later to maint).

----------------------------------------------------------------

Changes since v2.39.0 are as follows:

Adam Szkoda (1):
      ssh signing: better error message when key not in agent

Alison Winters (2):
      completion: add optional ignore-case when matching refs
      completion: add case-insensitive match of pseudorefs

Andrei Rybak (12):
      gitattributes.txt: fix typo in "comma separated"
      *: fix typos which duplicate a word
      git-bisect-lk2009: update java code conventions link
      git-bisect-lk2009: update nist report link
      t6003: uncomment test '--max-age=c3, --topo-order'
      t6422: drop commented out code
      t7527: use test_when_finished in 'case insensitive+preserving'
      Documentation: render dash correctly
      userdiff: support Java type parameters
      userdiff: support Java record types
      userdiff: support Java sealed classes
      test-lib: drop comment about test_description

Ashutosh Pandey (1):
      t2015-checkout-unborn.sh: changes the style for cd

Calvin Wan (2):
      fetch: fix duplicate remote parallel fetch bug
      Documentation: clarify multiple pushurls vs urls

Carlo Marcelo Arenas Belón (2):
      test-lib: add prerequisite for 64-bit platforms
      grep: correctly identify utf-8 characters with \{b,w} in -P

Chris. Webster (3):
      ci (check-whitespace): suggest fixes for errors
      ci (check-whitespace): add links to job output
      ci (check-whitespace): move to actions/checkout@v3

Daniël Haazen (1):
      mingw: fix typo in an error message from ownership check

Derrick Stolee (25):
      transport: rename got_remote_heads
      bundle-uri: serve bundle.* keys from config
      strbuf: introduce strbuf_strip_file_from_path()
      bundle-uri: allow relative URLs in bundle lists
      bundle-uri: download bundles from an advertised list
      clone: unbundle the advertised bundles
      hashfile: allow skipping the hash function
      read-cache: add index.skipHash config option
      test-lib-functions: add helper for trailing hash
      features: feature.manyFiles implies fast index writes
      t1600: fix racy index.skipHash test
      t: allow 'scalar' in test_must_fail
      t921*: test scalar behavior starting maintenance
      scalar: only warn when background maintenance fails
      bundle: test unbundling with incomplete history
      bundle: verify using check_connected()
      t5558: add tests for creationToken heuristic
      bundle-uri: parse bundle.heuristic=creationToken
      bundle-uri: parse bundle.<id>.creationToken values
      bundle-uri: download in creationToken order
      clone: set fetch.bundleURI if appropriate
      bundle-uri: drop bundle.flag from design doc
      fetch: fetch from an external bundle URI
      bundle-uri: store fetch.bundleCreationToken
      bundle-uri: test missing bundles with heuristic

Elijah Newren (16):
      ls-files: add missing documentation for --resolve-undo option
      ls-files: clarify descriptions of file selection options
      ls-files: clarify descriptions of status tags for -t
      ls-files: guide folks to --exclude-standard over other --exclude* options
      t6426: fix TODO about making test more comprehensive
      rebase: mark --update-refs as requiring the merge backend
      rebase: flag --apply and --merge as incompatible
      rebase: remove --allow-empty-message from incompatible opts
      rebase: fix docs about incompatibilities with --root
      rebase: fix incompatiblity checks for --[no-]reapply-cherry-picks
      rebase: add coverage of other incompatible options
      rebase: clarify the OPT_CMDMODE incompatibilities
      rebase: fix formatting of rebase --reapply-cherry-picks option in docs
      rebase: put rebase_options initialization in single place
      rebase: provide better error message for apply options vs. merge config
      name-rev: fix names by dropping taggerdate workaround

Emily Shaffer (4):
      run-command: allow stdin for run_processes_parallel
      hook API: support passing stdin to hooks, convert am's 'post-rewrite'
      sequencer: use the new hook API for the simpler "post-rewrite" call
      hook: support a --to-stdin=<path> option

Eric Sunshine (4):
      t1509: fix failing "root work tree" test due to owner-check
      t1509: make "setup" test more robust
      t1509: facilitate repeated script invocations
      githooks: discuss Git operations in foreign repositories

Eric Wong (2):
      format-patch: support format.mboxrd with --stdout
      delta-islands: free island_marks and bitmaps

Glen Choo (2):
      read-tree + fetch tests: test failing "--super-prefix" interaction
      docs: document zero bits in index "mode"

Gwyneth Morgan (2):
      request-pull: filter out SSH/X.509 tag signatures
      signature-format.txt: note SSH and X.509 signature delimiters

Harshil-Jani (2):
      mingw: remove duplicate `USE_NED_ALLOCATOR` directive
      mingw: remove msysGit/MSYS1 support

Jeff Hostetler (2):
      fsmonitor: fix race seen in t7527
      fsmonitor: eliminate call to deprecated FSEventStream function

Jeff King (74):
      git-jump: move valid-mode check earlier
      pack-bitmap.c: break out of the bitmap loop early if not tracing
      pack-bitmap.c: trace bitmap ignore logs when midx-bitmap is found
      git-compat-util: avoid redefining system function names
      git-compat-util: undefine system names before redeclaring them
      server_supports_v2(): use a separate function for die_on_error
      ls-refs: use repository parameter to iterate refs
      blob: drop unused parts of parse_blob_buffer()
      list-objects: drop process_gitlink() function
      ws: drop unused parameter from ws_blank_line()
      xdiff: drop unused parameter in def_ff()
      xdiff: mark unused parameter in xdl_call_hunk_func()
      diff: mark unused parameters in callbacks
      list-objects-filter: mark unused parameters in virtual functions
      userdiff: mark unused parameter in internal callback
      ref-filter: reject arguments to %(HEAD)
      ref-filter: factor out "%(foo) does not take arguments" errors
      ref-filter: factor out "unrecognized %(foo) arg" errors
      ref-filter: truncate atom names in error messages
      ref-filter: convert email atom parser to use err_bad_arg()
      test-bundle-uri: drop unused variables
      diff: use filespec path to set up tempfiles for ext-diff
      diff: clean up external-diff argv setup
      diff: drop "name" parameter from prepare_temp_file()
      convert trivial uses of strncmp() to starts_with()
      convert trivial uses of strncmp() to skip_prefix()
      object-file: inline calls to read_object()
      streaming: inline call to read_object_file_extended()
      read_object_file_extended(): drop lookup_replace option
      repo_read_object_file(): stop wrapping read_object_file_extended()
      packfile: inline custom read_object()
      object-file: fix indent-with-space
      t/interop: report which vanilla git command failed
      http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
      http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
      http: support CURLOPT_PROTOCOLS_STR
      t1007: modernize malformed object tests
      t1006: stop using 0-padded timestamps
      t7030: stop using invalid tag name
      t: use hash-object --literally when created malformed objects
      fsck: provide a function to fsck buffer without object struct
      hash-object: use fsck for object checks
      hash-object: fix descriptor leak with --literally
      fsck: do not assume NUL-termination of buffers
      t/lib-httpd: bump required apache version to 2.2
      t/lib-httpd: bump required apache version to 2.4
      t/lib-httpd: drop SSLMutex config
      t/lib-httpd: increase ssl key size to 2048 bits
      http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
      http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
      http: support CURLOPT_PROTOCOLS_STR
      doc/ls-remote: cosmetic cleanups for examples
      doc/ls-remote: clarify pattern format
      shorten_unambiguous_ref(): avoid integer truncation
      shorten_unambiguous_ref(): use NUM_REV_PARSE_RULES constant
      shorten_unambiguous_ref(): avoid sscanf()
      add basic http proxy tests
      t0066: drop setup of "dir5"
      t5541: run "used receive-pack service" test earlier
      t5541: stop marking "used receive-pack service" test as v0 only
      t5541: simplify and move "no empty path components" test
      t5551: drop redundant grep for Accept-Language
      t5551: lower-case headers in expected curl trace
      t5551: handle HTTP/2 when checking curl trace
      t5551: stop forcing clone to run with v0 protocol
      t5551: handle v2 protocol when checking curl trace
      t5551: handle v2 protocol in upload-pack service test
      t5551: simplify expected cookie file
      t5551: handle v2 protocol in cookie test
      t5551: drop curl trace lines without headers
      t/lib-httpd: respect $HTTPD_PROTO in expect_askpass()
      t/lib-httpd: enable HTTP/2 "h2" protocol, not just h2c
      t5559: fix test failures with LIB_HTTPD_SSL
      t5559: make SSL/TLS the default

Jiang Xin (3):
      t1301: fix wrong template dir for git-init
      t1301: use test_when_finished for cleanup
      t1301: do not change $CWD in "shared=all" test case

Johannes Schindelin (24):
      bisect--helper: handle states directly
      Turn `git bisect` into a full built-in
      t0021: use Windows-friendly `pwd`
      tests(mingw): avoid very slow `mingw_test_cmp`
      ci: only run win+VS build & tests in Git for Windows' fork
      bisect--helper: simplify exit code computation
      bisect: verify that a bogus option won't try to start a bisection
      bisect run: fix the error message
      bisect: remove Cogito-related code
      bisect: no longer try to clean up left-over `.git/head-name` files
      fsck: document the new `gitattributes` message IDs
      attr: adjust a mismatched data type
      attr: adjust a mismatched data type
      Git 2.31.7
      Git 2.32.6
      Git 2.33.7
      Git 2.34.7
      Git 2.35.7
      Git 2.36.5
      Git 2.37.6
      Git 2.38.4
      Git 2.39.2
      t7510: add a test case that does not need gpg
      gpg: do show gpg's error message upon failure

Johannes Sixt (1):
      t3920: don't ignore errors of more than one command with `|| true`

John Cai (4):
      docs: link generating patch sections
      attr: fix instructions on how to check attrs
      diff: consolidate diff algorithm option parsing
      diff: teach diff to read algorithm from diff driver

Jonathan Tan (5):
      http-fetch: invoke trace2_cmd_name()
      object-file: remove OBJECT_INFO_IGNORE_LOOSE
      object-file: refactor map_loose_object_1()
      object-file: emit corruption errors when detected
      commit: don't lazy-fetch commits

Junio C Hamano (42):
      Git 2.30.7
      Git 2.31.6
      Git 2.32.5
      Git 2.33.6
      Git 2.34.6
      Git 2.35.6
      Git 2.36.4
      Git 2.37.5
      Git 2.38.3
      Git 2.39.1
      Start the 2.40 cycle
      The first batch for 2.40
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      The sixth batch
      format-patch: unleak "-v <num>"
      The seventh batch
      branch: document `-f` and linked worktree behaviour
      checkout: document -b/-B to highlight the differences from "git branch"
      The eighth batch
      The ninth batch
      The tenth batch
      The eleventh batch
      The twelfth batch
      The thirteenth batch
      Git 2.30.8
      The fourteenth batch
      The fifteenth batch
      Prepare for 2.39.3 just in case
      The sixteenth batch
      rev-list: clarify git-log default date format
      test-genzeros: avoid raw write(2)
      format.attach: allow empty value to disable multi-part messages
      The seventeenth batch
      Git 2.40-rc0
      A few more topics post 2.40-rc0
      A bit more before 2.40-rc1
      A bit more before 2.40-rc1
      Git 2.40-rc1
      Git 2.40-rc2

Karthik Nayak (2):
      t0003: move setup for `--all` into new block
      attr: add flag `--source` to work with tree-ish

Kostya Farber (1):
      t5000: modernise archive and :(glob) test

Kyle Meyer (2):
      send-email: relay '-v N' to format-patch
      doc/git-branch: fix --force description typo

Kyle Zhao (3):
      merge-tree.c: add --merge-base=<commit> option
      merge-tree.c: allow specifying the merge-base when --stdin is passed
      docs: fix description of the `--merge-base` option

Lars Kellogg-Stedman (1):
      line-range: fix infinite loop bug with '$' regex

M Hickford (2):
      Documentation: clarify that cache forgets credentials if the system restarts
      credential: new attribute password_expiry_utc

Martin Ågren (1):
      git-cat-file.txt: fix list continuations rendering literally

Mathias Krause (1):
      grep: fall back to interpreter if JIT memory allocation fails

Matthias Aßhauer (1):
      fetch: choose a sensible default with --jobs=0 again

Patrick Steinhardt (28):
      attr: fix overflow when upserting attribute with overly long name
      attr: fix out-of-bounds read with huge attribute names
      attr: fix integer overflow when parsing huge attribute names
      attr: fix out-of-bounds write when parsing huge number of attributes
      attr: fix out-of-bounds read with unreasonable amount of patterns
      attr: fix integer overflow with more than INT_MAX macros
      attr: harden allocation against integer overflows
      attr: fix silently splitting up lines longer than 2048 bytes
      attr: ignore attribute lines exceeding 2048 bytes
      attr: ignore overly large gitattributes files
      pretty: fix out-of-bounds write caused by integer overflow
      pretty: fix out-of-bounds read when left-flushing with stealing
      pretty: fix out-of-bounds read when parsing invalid padding format
      pretty: fix adding linefeed when placeholder is not expanded
      pretty: fix integer overflow in wrapping format
      utf8: fix truncated string lengths in `utf8_strnwidth()`
      utf8: fix returning negative string width
      utf8: fix overflow when returning string width
      utf8: fix checking for glyph width in `strbuf_utf8_replace()`
      utf8: refactor `strbuf_utf8_replace` to not rely on preallocated buffer
      pretty: restrict input lengths for padding and wrapping formats
      fsck: refactor `fsck_blob()` to allow for more checks
      fsck: pull out function to check a set of blobs
      fsck: move checks for gitattributes
      fsck: implement checks for gitattributes
      refs: fix corruption by not correctly syncing packed-refs to disk
      apply: fix writing behind newly created symbolic links
      delta-islands: fix segfault when freeing island marks

Peter Grayson (1):
      diff: fix regression with --stat and unmerged file

Philip Oakley (6):
      doc: pretty-formats: separate parameters from placeholders
      doc: pretty-formats: delineate `%<|(` parameter values
      doc: pretty-formats document negative column alignments
      doc: pretty-formats describe use of ellipsis in truncation
      doc: pretty-formats note wide char limitations, and add tests
      .gitattributes: include `text` attribute for eol attributes

Philippe Blain (6):
      git-cherry-pick.txt: do not use 'ORIG_HEAD' in example
      git-reset.txt: mention 'ORIG_HEAD' in the Description
      git-merge.txt: mention 'ORIG_HEAD' in the Description
      revisions.txt: be explicit about commands writing 'ORIG_HEAD'
      git-rebase.txt: add a note about 'ORIG_HEAD' being overwritten
      branch: improve advice when --recurse-submodules fails

Phillip Wood (5):
      ci(github): restore "print test failures" step name
      rebase: cleanup "--exec" option handling
      rebase -i: check labels and refs when parsing todo list
      rebase -i: match whole word in is_command()
      rebase -i: fix parsing of "fixup -C<commit>"

René Scharfe (31):
      t5317: stop losing return codes of git ls-files
      t5317: demonstrate failure to handle multiple --filter options
      pack-objects: fix handling of multiple --filter options
      pack-objects: simplify --filter handling
      list-objects-filter: remove OPT_PARSE_LIST_OBJECTS_FILTER_INIT()
      t4205: don't exit test script on failure
      diff: factor out add_diff_options()
      diff: use add_diff_options() in diff_opt_parse()
      diff: remove parseopts member from struct diff_options
      list-objects-filter: plug pattern_list leak
      t3920: support CR-eating grep
      reflog: clear leftovers in reflog_expiry_cleanup()
      commit: skip already cleared parents in clear_commit_marks_1()
      am: don't pass strvec to apply_parse_options()
      object-file: inline write_buffer()
      use enhanced basic regular expressions on macOS
      mingw: make argv2 in try_shell_exec() non-const
      factor out BARF_UNLESS_COPYABLE
      do full type check in BARF_UNLESS_COPYABLE
      add DUP_ARRAY
      use DUP_ARRAY
      ls-tree: fix expansion of repeated %(path)
      ls-tree: remove dead store and strbuf for quote_c_style()
      read-cache: use size_t for {base,df}_name_compare()
      pack-objects: use strcspn(3) in name_cmp_len()
      cache-tree: fix strbuf growth in prime_cache_tree_rec()
      test-ctype: test isascii
      test-ctype: test islower and isupper
      test-ctype: test iscntrl, ispunct, isxdigit and isprint
      archive: add --mtime
      range-diff: avoid compiler warning when char is unsigned

Rubén Justo (1):
      branch: force-copy a branch to itself via @{-1} is a no-op

Rudy Rigot (1):
      status: modernize git-status "slow untracked files" advice

SZEDER Gábor (1):
      tests: make 'test_oid' print trailing newline

Sean Allred (3):
      var: do not print usage() with a correct invocation
      var: allow GIT_EDITOR to return null
      var: add GIT_SEQUENCE_EDITOR variable

Seija (1):
      maintenance: compare output of pthread functions for inequality with 0

Seija Kijin (6):
      git: remove duplicate includes
      win32: use _endthreadex to terminate threads, not ExitThread
      win32: prepare pthread.c for change by formatting
      win32: close handles of threads that have been joined
      merge: break out of all_strategy loop when strategy is found
      compat/winansi: check for errors of CreateThread() correctly

Siddharth Asthana (2):
      cat-file: add mailmap support to -s option
      cat-file: add mailmap support to --batch-check option

Simon Gerber (1):
      help.c: fix autocorrect in work tree for bare repository

Sven Strickroth (1):
      submodule: accept -v for the update command

Taylor Blau (5):
      ci: avoid unnecessary builds
      t5619: demonstrate clone_local() with ambiguous transport
      clone: delay picking a transport until after get_repo_path()
      dir-iterator: prevent top-level symlinks without FOLLOW_SYMLINKS
      dir-iterator: drop unused `DIR_ITERATOR_FOLLOW_SYMLINKS`

Teng Long (5):
      pack-bitmap.c: remove unnecessary "open_pack_index()" calls
      pack-bitmap.c: avoid exposing absolute paths
      ls-tree: cleanup the redundant SPACE
      t3104: remove shift code in 'test_ls_tree_format'
      range-diff: let '--abbrev' option takes effect

Thierry Reding (1):
      am: allow passing --no-verify flag

Torsten Bögershausen (1):
      t0003: call dd with portable blocksize

Wes Lord (1):
      new-command.txt: update reference to builtin docs

William Sprent (1):
      dir: check for single file cone patterns

Yoichi Nakayama (2):
      git-jump: add an optional argument '--stdout'
      git-jump: invoke emacs/emacsclient

Yukai Chou (1):
      doc: fix non-existent config name

Yutaro Ohno (1):
      doc: add "git switch -c" as another option on detached HEAD

Zhang Yi (1):
      t9700: modernize test scripts

ZheNing Hu (1):
      scalar: show progress if stderr refers to a terminal

idriss fekir (1):
      trace.c, git.c: remove unnecessary parameter to trace_repo_setup()

Ævar Arnfjörð Bjarmason (90):
      bisect tests: test for v2.30.0 "bisect run" regressions
      bisect: refactor bisect_run() to match CodingGuidelines
      bisect test: test exit codes on bad usage
      bisect--helper: emit usage for "git bisect"
      bisect; remove unused "git-bisect.sh" and ".gitignore" entry
      tests: mark tests as passing with SANITIZE=leak
      {reset,merge}: call discard_index() before returning
      commit: discard partial cache before (re-)reading it
      read-cache.c: clear and free "sparse_checkout_patterns"
      dir.c: free "ident" and "exclude_per_dir" in "struct untracked_cache"
      built-ins & libs & helpers: add/move destructors, fix leaks
      unpack-file: fix ancient leak in create_temp_file()
      revision API: call graph_clear() in release_revisions()
      ls-files: fix a --with-tree memory leak
      sequencer.c: fix "opts->strategy" leak in read_strategy_opts()
      connected.c: free the "struct packed_git"
      rebase: don't leak on "--abort"
      cherry-pick: free "struct replay_opts" members
      revert: fix parse_options_concat() leak
      built-ins: use free() not UNLEAK() if trivial, rm dead code
      t5314: check exit code of "git"
      t7600: don't ignore "rev-parse" exit code in helper
      t4023: fix ignored exit codes of git
      Makefile: use sha1collisiondetection by default on OSX and Darwin
      bundle: don't segfault on "git bundle <subcmd>"
      protocol v2: add server-side "bundle-uri" skeleton
      t: create test harness for 'bundle-uri' command
      clone: request the 'bundle-uri' command when available
      bundle-uri client: add boolean transfer.bundleURI setting
      bundle-uri client: add helper for testing server
      submodule absorbgitdirs tests: add missing "Migrating git..." tests
      submodule.c & submodule--helper: pass along "super_prefix" param
      submodule--helper: don't use global --super-prefix in "absorbgitdirs"
      submodule--helper: convert "foreach" to its own "--super-prefix"
      submodule--helper: convert "sync" to its own "--super-prefix"
      submodule--helper: convert "status" to its own "--super-prefix"
      submodule--helper: convert "{update,clone}" to their own "--super-prefix"
      read-tree: add "--super-prefix" option, eliminate global
      builtin/bundle.c: remove superfluous "newargc" variable
      bundle <cmd>: have usage_msg_opt() note the missing "<file>"
      builtin/difftool.c: { 0 }-initialize rather than using memset()
      sparse-index.c: expand_to_path() can assume non-NULL "istate"
      sparse-index API: BUG() out on NULL ensure_full_index()
      read-cache.c: refactor set_new_index_sparsity() for subsequent commit
      bisect--helper: make the order consistently `argc, argv`
      ls-tree: don't use "show_tree_data" for "fast" callbacks
      ls-tree: use a "struct options"
      ls-tree: fold "show_tree_data" into "cb" struct
      ls-tree: make "line_termination" less generic
      env-helper: move this built-in to "test-tool env-helper"
      cache API: add a "INDEX_STATE_INIT" macro/function, add release_index()
      treewide: always have a valid "index_state.repo" member
      add: remove "add.interactive.useBuiltin" & Perl "git add--interactive"
      add API: remove run_add_interactive() wrapper function
      docs & comments: replace mentions of "git-add--interactive.perl"
      tests: mark tests as passing with SANITIZE=leak
      bundle.c: don't leak the "args" in the "struct child_process"
      commit-graph: use free_commit_graph() instead of UNLEAK()
      clone: use free() instead of UNLEAK()
      various: add missing clear_pathspec(), fix leaks
      name-rev: don't xstrdup() an already dup'd string
      repack: fix leaks on error with "goto cleanup"
      worktree: fix a trivial leak in prune_worktrees()
      http-backend.c: fix "dir" and "cmd_arg" leaks in cmd_main()
      http-backend.c: fix cmd_main() memory leak, refactor reg{exec,free}()
      commit-graph: fix a parse_options_concat() leak
      show-branch: free() allocated "head" before return
      builtin/merge.c: use fixed strings, not "strbuf", fix leak
      builtin/merge.c: free "&buf" on "Your local changes..." error
      grep.c: refactor free_grep_patterns()
      grep API: plug memory leaks by freeing "header_list"
      receive-pack: release the linked "struct command *" list
      push: refactor refspec_append_mapped() for subsequent leak-fix
      push: free_refs() the "local_refs" in set_refspecs()
      rebase: use "cleanup" pattern in do_interactive_rebase()
      sequencer.c: split up sequencer_remove_state()
      sequencer API users: fix get_replay_opts() leaks
      builtin/revert.c: move free-ing of "revs" to replay_opts_release()
      builtin/rebase.c: fix "options.onto_name" leak
      sequencer.c: always free() the "msgbuf" in do_pick_commit()
      builtin/rebase.c: free() "options.strategy_opts"
      commit.c: free() revs.commit in get_fork_point()
      config.h: remove unused git_configset_add_parameters()
      run-command.c: remove dead assignment in while-loop
      builtin/rm.c: use narrower "USE_THE_INDEX_VARIABLE"
      cocci & cache.h: fully apply "active_nr" part of index-compatibility
      cocci & cache.h: apply pending "index_cache_pos" rule
      cocci & cache-tree.h: migrate "write_cache_as_tree" to "*_index_*"
      cache-tree API: remove redundant update_main_cache_tree()
      cocci & cache.h: remove "USE_THE_INDEX_COMPATIBILITY_MACROS"

Đoàn Trần Công Danh (6):
      bisect: fix output regressions in v2.30.0
      bisect run: keep some of the post-v2.30.0 output
      bisect-run: verify_good: account for non-negative exit status
      bisect--helper: identify as bisect when report error
      bisect--helper: log: allow arbitrary number of arguments
      date.c: allow ISO 8601 reduced precision times


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.40.0-rc1
@ 2023-03-01 17:40  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-03-01 17:40 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.40.0-rc1 is now available for testing at
the usual places.  It is comprised of 458 non-merge commits since
v2.39.0, contributed by 78 people, 30 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.40.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.39.0 are as follows.
Welcome to the Git development community!

  Adam Szkoda, Alison Winters, Ashutosh Pandey, Carl Baldwin,
  Daniël Haazen, Drew Noakes, Eric Sesterhenn, Gwyneth Morgan,
  Harshil-Jani, Hubert Jasudowicz, idriss fekir, Kostya Farber,
  Marco Nenciarini, Markus Vervier, Matheus Tavares Bernardino,
  Mathias Krause, Pat LaVarre, Peter Grayson, Rudy Rigot, Seija,
  Seija Kijin, Simon Gerber, Thierry Reding, toon@iotcl.com, Wes
  Lord, Yukai Chou, Yutaro Ohno, yvvdwf, Zhang Yi, and 孟子易.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Andrei Rybak, Calvin Wan, Carlo
  Marcelo Arenas Belón, Christian Couder, Chris. Webster,
  Derrick Stolee, Đoàn Trần Công Danh, Elijah Newren,
  Emily Shaffer, Eric Sunshine, Eric Wong, Erik Cervin Edin, Glen
  Choo, Jeff Hostetler, Jeff King, Jiang Xin, Joern Schneeweisz,
  Johannes Schindelin, Johannes Sixt, John Cai, Jonathan Tan,
  Junio C Hamano, Karthik Nayak, Kevin Willford, Kyle Meyer, Kyle
  Zhao, Lars Kellogg-Stedman, Martin Ågren, Matthias Aßhauer,
  M Hickford, Patrick Steinhardt, Philip Oakley, Philippe Blain,
  Phillip Wood, Randall S. Becker, René Scharfe, Rubén Justo,
  Sean Allred, Siddharth Asthana, Sven Strickroth, SZEDER Gábor,
  Taylor Blau, Teng Long, Torsten Bögershausen, William Sprent,
  Yoichi Nakayama, and ZheNing Hu.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.40 Release Notes (draft)
===============================

UI, Workflows & Features

 * "merge-tree" learns a new `--merge-base` option.

 * "git jump" (in contrib/) learned to present the "quickfix list" to
   its standard output (instead of letting it consumed by the editor
   it invokes), and learned to also drive emacs/emacsclient.

 * "git var UNKNOWN_VARIABLE" and "git var VARIABLE" with the variable
   given an empty value used to behave identically.  Now the latter
   just gives an empty output, while the former still gives an error
   message.

 * Introduce a case insensitive mode to the Bash completion helpers.

 * The advice message given by "git status" when it takes long time to
   enumerate untracked paths has been updated.

 * Just like "git var GIT_EDITOR" abstracts the complex logic to
   choose which editor gets used behind it, "git var" now give support
   to GIT_SEQUENCE_EDITOR.

 * "git format-patch" learned to honor format.mboxrd even when sending
   patches to the standard output stream,

 * 'cat-file' gains mailmap support for its '--batch-check' and '-s'
   options.

 * Conditionally skip the pre-applypatch and applypatch-msg hooks when
   applying patches with 'git am'.

 * Introduce an optional configuration to allow the trailing hash that
   protects the index file from bit flipping.

 * "git check-attr" learned to take an optional tree-ish to read the
   .gitattributes file from.

 * "scalar" learned to give progress bar.

 * "grep -P" learned to use Unicode Character Property to grok
   character classes when processing \b and \w etc.

 * "git rebase" often ignored incompatible options instead of
   complaining, which has been corrected.

 * "scalar" warns but continues when its periodic maintenance
   feature cannot be enabled.

 * The bundle-URI subsystem adds support for creation-token heuristics
   to help incremental fetches.

 * Userdiff regexp update for Java language.

 * "git fetch --jobs=0" used to hit a BUG(), which has been corrected
   to use the available CPUs.

 * An invalid label or ref in the "rebase -i" todo file used to
   trigger an runtime error. SUch an error is now diagnosed while the
   todo file is parsed.

 * The "diff" drivers specified by the "diff" attribute attached to
   paths can now specify which algorithm (e.g. histogram) to use.

 * "git range-diff" learned --abbrev=<num> option.

 * "git archive HEAD^{tree}" records the paths with the current
   timestamp in the archive, making it harder to obtain a stable
   output.  The command learned the --mtime option to specify an
   arbitrary timestamp (e.g. --mtime="@0 +0000" for the epoch).

 * The credential subsystem learned that a password may have an
   explicit expiration.

 * The format.attach configuration variable lacked a way to override a
   value defined in a lower-priority configuration file (e.g. the
   system one) by redefining it in a higher-priority configuration
   file.  Now, setting format.attach to an empty string means show the
   patch inline in the e-mail message, without using MIME attachment.

   This is a backward incompatible change.


Performance, Internal Implementation, Development Support etc.

 * `git bisect` becomes a builtin.

 * The pack-bitmap machinery is taught to log the paths of redundant
   bitmap(s) to trace2 instead of stderr.

 * Use the SHA1DC implementation on macOS, just like other platforms,
   by default.

 * Even in a repository with promisor remote, it is useless to
   attempt to lazily attempt fetching an object that is expected to be
   commit, because no "filter" mode omits commit objects.  Take
   advantage of this assumption to fail fast on errors.

 * Stop using "git --super-prefix" and narrow the scope of its use to
   the submodule--helper.

 * Stop running win+VS build by default.

 * CI updates.  We probably want a clean-up to move the long shell
   script embedded in yaml file into a separate file, but that can
   come later.

 * Use `git diff --no-index` as a test_cmp on Windows.

   We'd probably need to revisit "do we really want to, and have to,
   lose CRLF vs LF?" later, at which time we may be able to further
   clean this up by replacing "git diff --no-index" with "diff -u".

 * Avoid unnecessary builds in CI, with settings configured in
   ci-config.

 * Plug leaks in sequencer subsystem and its users.

 * In-tree .gitattributes update to match the way we recommend our
   users to mark a file as text.
   (merge 1f34e0cd3d po/attributes-text later to maint).

 * Finally retire the scripted "git add -p/-i" implementation and have
   everybody use the one reimplemented in C.


Fixes since v2.39
-----------------

 * Various leak fixes.

 * Fix a bug where `pack-objects` would not respect multiple `--filter`
   arguments when invoked directly.
   (merge d4f7036887 rs/multi-filter-args later to maint).

 * Make fsmonitor more robust to avoid the flakiness seen in t7527.
   (merge 6692d45477 jh/t7527-unflake-by-forcing-cookie later to maint).

 * Stop using deprecated macOS API in fsmonitor.
   (merge b0226007f0 jh/fsmonitor-darwin-modernize later to maint).

 * Redefining system functions for a few functions did not follow our
   usual "implement git_foo() and #define foo(args) git_foo(args)"
   pattern, which has broken build for some folks.

 * The way the diff machinery prepares the options array for the
   parse_options API has been refactored to avoid resource leaks.
   (merge 189e97bc4b rs/diff-parseopts later to maint).

 * Correct pthread API usage.
   (merge 786e67611d sx/pthread-error-check-fix later to maint).

 * The code to auto-correct a misspelt subcommand unnecessarily called
   into git_default_config() from the early config codepath, which was
   a no-no.  This has bee corrected.
   (merge 0918d08887 sg/help-autocorrect-config-fix later to maint).

 * "git http-fetch" (which is rarely used) forgot to identify itself
   in the trace2 output.
   (merge 7abb43cbc8 jt/http-fetch-trace2-report-name later to maint).

 * The output from "git diff --stat" on an unmerged path lost the
   terminating LF in Git 2.39, which has been corrected.
   (merge 209d9cb011 pg/diff-stat-unmerged-regression-fix later to maint).

 * "git pull -v --recurse-submodules" attempted to pass "-v" down to
   underlying "git submodule update", which did not understand the
   request and barfed, which has been corrected.
   (merge 6f65f84766 ss/pull-v-recurse-fix later to maint).

 * When given a pattern that matches an empty string at the end of a
   line, the code to parse the "git diff" line-ranges fell into an
   infinite loop, which has been corrected.

 * Fix the sequence to fsync $GIT_DIR/packed-refs file that forgot to
   flush its output to the disk..

 * Fix to a small regression in 2.38 days.

 * "git diff --relative" did not mix well with "git diff --ext-diff",
   which has been corrected.

 * The logic to see if we are using the "cone" mode by checking the
   sparsity patterns has been tightened to avoid mistaking a pattern
   that names a single file as specifying a cone.

 * Deal with a few deprecation warning from cURL library.

 * Doc update for environment variables set when hooks are invoked.

 * Document ORIG_HEAD a bit more.

 * "git ls-tree --format='%(path) %(path)' $tree $path" showed the
   path three times, which has been corrected.

 * Remove "git env--helper" and demote it to a test-tool subcommand.
   (merge 4a1baacd46 ab/test-env-helper later to maint).

 * Newer regex library macOS stopped enabling GNU-like enhanced BRE,
   where '\(A\|B\)' works as alternation, unless explicitly asked with
   the REG_ENHANCED flag.  "git grep" now can be compiled to do so, to
   retain the old behaviour.

 * Pthread emulation on Win32 leaked thread handle when a thread is
   joined.
   (merge 238a9dfe86 sk/win32-close-handle-upon-pthread-join later to maint).

 * "git send-email -v 3" used to be expanded to "git send-email
   --validate 3" when the user meant to pass them down to
   "format-patch", which has been corrected.
   (merge 8774aa56ad km/send-email-with-v-reroll-count later to maint).

 * Document that "branch -f <branch>" disables only the safety to
   avoid recreating an existing branch.

 * "git fetch <group>", when "<group>" of remotes lists the same
   remote twice, unnecessarily failed when parallel fetching was
   enabled, which has been corrected.
   (merge 06a668cb90 cw/fetch-remote-group-with-duplication later to maint).

 * Clarify how "checkout -b/-B" and "git branch [-f]" are similar but
   different in the documentation.

 * "git hash-object" now checks that the resulting object is well
   formed with the same code as "git fsck".
   (merge 8e4309038f jk/hash-object-fsck later to maint).

 * Improve the error message given when private key is not loaded in
   the ssh agent in the codepath to sign with an ssh key.
   (merge dce7b31126 as/ssh-signing-improve-key-missing-error later to maint).

 * Adjust "git request-pull" to strip embedded signature from signed
   tags to notice non-PGP signatures.
   (merge a9cad02538 gm/request-pull-with-non-pgp-signed-tags later to maint).

 * Remove support for MSys, which now lags way behind MSys2.
   (merge 2987407f3c hj/remove-msys-support later to maint).

 * Fix use of CreateThread() API call made early in the windows
   start-up code.
   (merge 592bcab61b sk/winansi-createthread-fix later to maint).

 * "git pack-objects" learned to release delta-island bitmap data when
   it is done using it, saving peak heap memory usage.
   (merge 647982bb71 ew/free-island-marks later to maint).

 * In an environment where dynamically generated code is prohibited to
   run (e.g. SELinux), failure to JIT pcre patterns is expected.  Fall
   back to interpreted execution in such a case.
   (merge 50b6ad55b0 cb/grep-fallback-failing-jit later to maint).

 * "git name-rev" heuristics update.
   (merge b2182a8730 en/name-rev-make-taggerdate-much-less-important later to maint).

 * Remove more remaining uses of macros that relies on the_index
   singleton instance without explicitly spelling it out.

 * Remove unnecessary explicit sizing of strbuf.
   (merge 93ea118bed rs/cache-tree-strbuf-growth-fix later to maint).

 * Doc update.
   (merge d9ec3b0dc0 jk/doc-ls-remote-matching later to maint).

 * Error messages given upon a signature verification failure used to
   discard the errors from underlying gpg program, which has been
   corrected.
   (merge ad6b320756 js/gpg-errors later to maint).

 * Update --date=default documentation.
   (merge 9deef088ae rd/doc-default-date-format later to maint).

 * A test helper had a single write(2) of 256kB, which was too big for
   some platforms (e.g. NonStop), which has been corrected by using
   xwrite() wrapper appropriately.
   (merge 58eab6ff13 jc/genzeros-avoid-raw-write later to maint).

 * sscanf(3) used in "git symbolic-ref --short" implementation found
   to be not working reliably on macOS in UTF-8 locales.  Rewrite the
   code to avoid sscanf() altogether to work it around.
   (merge 613bef56b8 jk/shorten-unambiguous-ref-wo-sscanf later to maint).

 * Various fix-ups on HTTP tests.
   (merge 8f2146dbf1 jk/http-test-fixes later to maint).

 * Fixes to code that parses the todo file used in "rebase -i".
   (merge 666b6e1135 pw/rebase-i-parse-fix later to maint).

 * Test library clean-up.
   (merge c600a91c94 ar/test-lib-remove-stale-comment later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 4eb1ccecd4 dh/mingw-ownership-check-typofix later to maint).
   (merge f95526419b ar/typofix-gitattributes-doc later to maint).
   (merge 27875aeec9 km/doc-branch-start-point later to maint).
   (merge 35c194dc57 es/t1509-root-fixes later to maint).
   (merge 7b341645e3 pw/ci-print-failure-name-fix later to maint).
   (merge bcb71d45bf jx/t1301-updates later to maint).
   (merge ebdc46c242 jc/doc-diff-patch.txt later to maint).
   (merge a87a20cbb4 ar/test-cleanup later to maint).
   (merge f5156f1885 ar/bisect-doc-update later to maint).
   (merge fca2d86c97 jk/interop-error later to maint).
   (merge cf4936ed74 tl/ls-tree-code-clean-up later to maint).
   (merge dcb47e52b0 en/t6426-todo-cleanup later to maint).
   (merge 5b8db44bdd jc/format-patch-v-unleak later to maint).
   (merge 590b636737 jk/hash-object-literally-fd-leak later to maint).
   (merge 5458ba0a4d tb/t0003-invoke-dd-more-portably later to maint).
   (merge 70661d288b ar/markup-em-dash later to maint).
   (merge e750951e74 en/ls-files-doc-update later to maint).
   (merge 4f542975d1 mh/doc-credential-cache-only-in-core later to maint).
   (merge 3a2ebaebc7 gc/index-format-doc later to maint).
   (merge b08edf709d jk/httpd-test-updates later to maint).
   (merge d85e9448dd wl/new-command-doc later to maint).
   (merge d912a603ed kf/t5000-modernise later to maint).
   (merge e65b868d07 rs/size-t-fixes later to maint).
   (merge 3eb1e1ca9a ab/config-h-remove-unused later to maint).
   (merge d390e08076 cw/doc-pushurl-vs-url later to maint).
   (merge 567342fc77 rs/ctype-test later to maint).
   (merge d35d8f2e7a ap/t2015-style-update later to maint).

----------------------------------------------------------------

Changes since v2.39.0 are as follows:

Adam Szkoda (1):
      ssh signing: better error message when key not in agent

Alison Winters (2):
      completion: add optional ignore-case when matching refs
      completion: add case-insensitive match of pseudorefs

Andrei Rybak (12):
      gitattributes.txt: fix typo in "comma separated"
      *: fix typos which duplicate a word
      git-bisect-lk2009: update java code conventions link
      git-bisect-lk2009: update nist report link
      t6003: uncomment test '--max-age=c3, --topo-order'
      t6422: drop commented out code
      t7527: use test_when_finished in 'case insensitive+preserving'
      Documentation: render dash correctly
      userdiff: support Java type parameters
      userdiff: support Java record types
      userdiff: support Java sealed classes
      test-lib: drop comment about test_description

Ashutosh Pandey (1):
      t2015-checkout-unborn.sh: changes the style for cd

Calvin Wan (2):
      fetch: fix duplicate remote parallel fetch bug
      Documentation: clarify multiple pushurls vs urls

Carlo Marcelo Arenas Belón (2):
      test-lib: add prerequisite for 64-bit platforms
      grep: correctly identify utf-8 characters with \{b,w} in -P

Chris. Webster (3):
      ci (check-whitespace): suggest fixes for errors
      ci (check-whitespace): add links to job output
      ci (check-whitespace): move to actions/checkout@v3

Daniël Haazen (1):
      mingw: fix typo in an error message from ownership check

Derrick Stolee (25):
      transport: rename got_remote_heads
      bundle-uri: serve bundle.* keys from config
      strbuf: introduce strbuf_strip_file_from_path()
      bundle-uri: allow relative URLs in bundle lists
      bundle-uri: download bundles from an advertised list
      clone: unbundle the advertised bundles
      hashfile: allow skipping the hash function
      read-cache: add index.skipHash config option
      test-lib-functions: add helper for trailing hash
      features: feature.manyFiles implies fast index writes
      t1600: fix racy index.skipHash test
      t: allow 'scalar' in test_must_fail
      t921*: test scalar behavior starting maintenance
      scalar: only warn when background maintenance fails
      bundle: test unbundling with incomplete history
      bundle: verify using check_connected()
      t5558: add tests for creationToken heuristic
      bundle-uri: parse bundle.heuristic=creationToken
      bundle-uri: parse bundle.<id>.creationToken values
      bundle-uri: download in creationToken order
      clone: set fetch.bundleURI if appropriate
      bundle-uri: drop bundle.flag from design doc
      fetch: fetch from an external bundle URI
      bundle-uri: store fetch.bundleCreationToken
      bundle-uri: test missing bundles with heuristic

Elijah Newren (16):
      ls-files: add missing documentation for --resolve-undo option
      ls-files: clarify descriptions of file selection options
      ls-files: clarify descriptions of status tags for -t
      ls-files: guide folks to --exclude-standard over other --exclude* options
      t6426: fix TODO about making test more comprehensive
      rebase: mark --update-refs as requiring the merge backend
      rebase: flag --apply and --merge as incompatible
      rebase: remove --allow-empty-message from incompatible opts
      rebase: fix docs about incompatibilities with --root
      rebase: fix incompatiblity checks for --[no-]reapply-cherry-picks
      rebase: add coverage of other incompatible options
      rebase: clarify the OPT_CMDMODE incompatibilities
      rebase: fix formatting of rebase --reapply-cherry-picks option in docs
      rebase: put rebase_options initialization in single place
      rebase: provide better error message for apply options vs. merge config
      name-rev: fix names by dropping taggerdate workaround

Emily Shaffer (4):
      run-command: allow stdin for run_processes_parallel
      hook API: support passing stdin to hooks, convert am's 'post-rewrite'
      sequencer: use the new hook API for the simpler "post-rewrite" call
      hook: support a --to-stdin=<path> option

Eric Sunshine (4):
      t1509: fix failing "root work tree" test due to owner-check
      t1509: make "setup" test more robust
      t1509: facilitate repeated script invocations
      githooks: discuss Git operations in foreign repositories

Eric Wong (2):
      format-patch: support format.mboxrd with --stdout
      delta-islands: free island_marks and bitmaps

Glen Choo (2):
      read-tree + fetch tests: test failing "--super-prefix" interaction
      docs: document zero bits in index "mode"

Gwyneth Morgan (1):
      request-pull: filter out SSH/X.509 tag signatures

Harshil-Jani (2):
      mingw: remove duplicate `USE_NED_ALLOCATOR` directive
      mingw: remove msysGit/MSYS1 support

Jeff Hostetler (2):
      fsmonitor: fix race seen in t7527
      fsmonitor: eliminate call to deprecated FSEventStream function

Jeff King (74):
      git-jump: move valid-mode check earlier
      pack-bitmap.c: break out of the bitmap loop early if not tracing
      pack-bitmap.c: trace bitmap ignore logs when midx-bitmap is found
      git-compat-util: avoid redefining system function names
      git-compat-util: undefine system names before redeclaring them
      server_supports_v2(): use a separate function for die_on_error
      ls-refs: use repository parameter to iterate refs
      blob: drop unused parts of parse_blob_buffer()
      list-objects: drop process_gitlink() function
      ws: drop unused parameter from ws_blank_line()
      xdiff: drop unused parameter in def_ff()
      xdiff: mark unused parameter in xdl_call_hunk_func()
      diff: mark unused parameters in callbacks
      list-objects-filter: mark unused parameters in virtual functions
      userdiff: mark unused parameter in internal callback
      ref-filter: reject arguments to %(HEAD)
      ref-filter: factor out "%(foo) does not take arguments" errors
      ref-filter: factor out "unrecognized %(foo) arg" errors
      ref-filter: truncate atom names in error messages
      ref-filter: convert email atom parser to use err_bad_arg()
      test-bundle-uri: drop unused variables
      diff: use filespec path to set up tempfiles for ext-diff
      diff: clean up external-diff argv setup
      diff: drop "name" parameter from prepare_temp_file()
      convert trivial uses of strncmp() to starts_with()
      convert trivial uses of strncmp() to skip_prefix()
      object-file: inline calls to read_object()
      streaming: inline call to read_object_file_extended()
      read_object_file_extended(): drop lookup_replace option
      repo_read_object_file(): stop wrapping read_object_file_extended()
      packfile: inline custom read_object()
      object-file: fix indent-with-space
      t/interop: report which vanilla git command failed
      http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
      http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
      http: support CURLOPT_PROTOCOLS_STR
      t1007: modernize malformed object tests
      t1006: stop using 0-padded timestamps
      t7030: stop using invalid tag name
      t: use hash-object --literally when created malformed objects
      fsck: provide a function to fsck buffer without object struct
      hash-object: use fsck for object checks
      hash-object: fix descriptor leak with --literally
      fsck: do not assume NUL-termination of buffers
      t/lib-httpd: bump required apache version to 2.2
      t/lib-httpd: bump required apache version to 2.4
      t/lib-httpd: drop SSLMutex config
      t/lib-httpd: increase ssl key size to 2048 bits
      http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
      http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
      http: support CURLOPT_PROTOCOLS_STR
      doc/ls-remote: cosmetic cleanups for examples
      doc/ls-remote: clarify pattern format
      shorten_unambiguous_ref(): avoid integer truncation
      shorten_unambiguous_ref(): use NUM_REV_PARSE_RULES constant
      shorten_unambiguous_ref(): avoid sscanf()
      add basic http proxy tests
      t0066: drop setup of "dir5"
      t5541: run "used receive-pack service" test earlier
      t5541: stop marking "used receive-pack service" test as v0 only
      t5541: simplify and move "no empty path components" test
      t5551: drop redundant grep for Accept-Language
      t5551: lower-case headers in expected curl trace
      t5551: handle HTTP/2 when checking curl trace
      t5551: stop forcing clone to run with v0 protocol
      t5551: handle v2 protocol when checking curl trace
      t5551: handle v2 protocol in upload-pack service test
      t5551: simplify expected cookie file
      t5551: handle v2 protocol in cookie test
      t5551: drop curl trace lines without headers
      t/lib-httpd: respect $HTTPD_PROTO in expect_askpass()
      t/lib-httpd: enable HTTP/2 "h2" protocol, not just h2c
      t5559: fix test failures with LIB_HTTPD_SSL
      t5559: make SSL/TLS the default

Jiang Xin (3):
      t1301: fix wrong template dir for git-init
      t1301: use test_when_finished for cleanup
      t1301: do not change $CWD in "shared=all" test case

Johannes Schindelin (24):
      bisect--helper: handle states directly
      Turn `git bisect` into a full built-in
      t0021: use Windows-friendly `pwd`
      tests(mingw): avoid very slow `mingw_test_cmp`
      ci: only run win+VS build & tests in Git for Windows' fork
      bisect--helper: simplify exit code computation
      bisect: verify that a bogus option won't try to start a bisection
      bisect run: fix the error message
      bisect: remove Cogito-related code
      bisect: no longer try to clean up left-over `.git/head-name` files
      fsck: document the new `gitattributes` message IDs
      attr: adjust a mismatched data type
      attr: adjust a mismatched data type
      Git 2.31.7
      Git 2.32.6
      Git 2.33.7
      Git 2.34.7
      Git 2.35.7
      Git 2.36.5
      Git 2.37.6
      Git 2.38.4
      Git 2.39.2
      t7510: add a test case that does not need gpg
      gpg: do show gpg's error message upon failure

Johannes Sixt (1):
      t3920: don't ignore errors of more than one command with `|| true`

John Cai (4):
      docs: link generating patch sections
      attr: fix instructions on how to check attrs
      diff: consolidate diff algorithm option parsing
      diff: teach diff to read algorithm from diff driver

Jonathan Tan (5):
      http-fetch: invoke trace2_cmd_name()
      object-file: remove OBJECT_INFO_IGNORE_LOOSE
      object-file: refactor map_loose_object_1()
      object-file: emit corruption errors when detected
      commit: don't lazy-fetch commits

Junio C Hamano (41):
      Git 2.30.7
      Git 2.31.6
      Git 2.32.5
      Git 2.33.6
      Git 2.34.6
      Git 2.35.6
      Git 2.36.4
      Git 2.37.5
      Git 2.38.3
      Git 2.39.1
      Start the 2.40 cycle
      The first batch for 2.40
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      The sixth batch
      format-patch: unleak "-v <num>"
      The seventh batch
      branch: document `-f` and linked worktree behaviour
      checkout: document -b/-B to highlight the differences from "git branch"
      The eighth batch
      The ninth batch
      The tenth batch
      The eleventh batch
      The twelfth batch
      The thirteenth batch
      Git 2.30.8
      The fourteenth batch
      The fifteenth batch
      Prepare for 2.39.3 just in case
      The sixteenth batch
      rev-list: clarify git-log default date format
      test-genzeros: avoid raw write(2)
      format.attach: allow empty value to disable multi-part messages
      The seventeenth batch
      Git 2.40-rc0
      A few more topics post 2.40-rc0
      A bit more before 2.40-rc1
      A bit more before 2.40-rc1
      Git 2.40-rc1

Karthik Nayak (2):
      t0003: move setup for `--all` into new block
      attr: add flag `--source` to work with tree-ish

Kostya Farber (1):
      t5000: modernise archive and :(glob) test

Kyle Meyer (2):
      send-email: relay '-v N' to format-patch
      doc/git-branch: fix --force description typo

Kyle Zhao (3):
      merge-tree.c: add --merge-base=<commit> option
      merge-tree.c: allow specifying the merge-base when --stdin is passed
      docs: fix description of the `--merge-base` option

Lars Kellogg-Stedman (1):
      line-range: fix infinite loop bug with '$' regex

M Hickford (2):
      Documentation: clarify that cache forgets credentials if the system restarts
      credential: new attribute password_expiry_utc

Martin Ågren (1):
      git-cat-file.txt: fix list continuations rendering literally

Mathias Krause (1):
      grep: fall back to interpreter if JIT memory allocation fails

Matthias Aßhauer (1):
      fetch: choose a sensible default with --jobs=0 again

Patrick Steinhardt (28):
      attr: fix overflow when upserting attribute with overly long name
      attr: fix out-of-bounds read with huge attribute names
      attr: fix integer overflow when parsing huge attribute names
      attr: fix out-of-bounds write when parsing huge number of attributes
      attr: fix out-of-bounds read with unreasonable amount of patterns
      attr: fix integer overflow with more than INT_MAX macros
      attr: harden allocation against integer overflows
      attr: fix silently splitting up lines longer than 2048 bytes
      attr: ignore attribute lines exceeding 2048 bytes
      attr: ignore overly large gitattributes files
      pretty: fix out-of-bounds write caused by integer overflow
      pretty: fix out-of-bounds read when left-flushing with stealing
      pretty: fix out-of-bounds read when parsing invalid padding format
      pretty: fix adding linefeed when placeholder is not expanded
      pretty: fix integer overflow in wrapping format
      utf8: fix truncated string lengths in `utf8_strnwidth()`
      utf8: fix returning negative string width
      utf8: fix overflow when returning string width
      utf8: fix checking for glyph width in `strbuf_utf8_replace()`
      utf8: refactor `strbuf_utf8_replace` to not rely on preallocated buffer
      pretty: restrict input lengths for padding and wrapping formats
      fsck: refactor `fsck_blob()` to allow for more checks
      fsck: pull out function to check a set of blobs
      fsck: move checks for gitattributes
      fsck: implement checks for gitattributes
      refs: fix corruption by not correctly syncing packed-refs to disk
      apply: fix writing behind newly created symbolic links
      delta-islands: fix segfault when freeing island marks

Peter Grayson (1):
      diff: fix regression with --stat and unmerged file

Philip Oakley (6):
      doc: pretty-formats: separate parameters from placeholders
      doc: pretty-formats: delineate `%<|(` parameter values
      doc: pretty-formats document negative column alignments
      doc: pretty-formats describe use of ellipsis in truncation
      doc: pretty-formats note wide char limitations, and add tests
      .gitattributes: include `text` attribute for eol attributes

Philippe Blain (6):
      git-cherry-pick.txt: do not use 'ORIG_HEAD' in example
      git-reset.txt: mention 'ORIG_HEAD' in the Description
      git-merge.txt: mention 'ORIG_HEAD' in the Description
      revisions.txt: be explicit about commands writing 'ORIG_HEAD'
      git-rebase.txt: add a note about 'ORIG_HEAD' being overwritten
      branch: improve advice when --recurse-submodules fails

Phillip Wood (5):
      ci(github): restore "print test failures" step name
      rebase: cleanup "--exec" option handling
      rebase -i: check labels and refs when parsing todo list
      rebase -i: match whole word in is_command()
      rebase -i: fix parsing of "fixup -C<commit>"

René Scharfe (30):
      t5317: stop losing return codes of git ls-files
      t5317: demonstrate failure to handle multiple --filter options
      pack-objects: fix handling of multiple --filter options
      pack-objects: simplify --filter handling
      list-objects-filter: remove OPT_PARSE_LIST_OBJECTS_FILTER_INIT()
      t4205: don't exit test script on failure
      diff: factor out add_diff_options()
      diff: use add_diff_options() in diff_opt_parse()
      diff: remove parseopts member from struct diff_options
      list-objects-filter: plug pattern_list leak
      t3920: support CR-eating grep
      reflog: clear leftovers in reflog_expiry_cleanup()
      commit: skip already cleared parents in clear_commit_marks_1()
      am: don't pass strvec to apply_parse_options()
      object-file: inline write_buffer()
      use enhanced basic regular expressions on macOS
      mingw: make argv2 in try_shell_exec() non-const
      factor out BARF_UNLESS_COPYABLE
      do full type check in BARF_UNLESS_COPYABLE
      add DUP_ARRAY
      use DUP_ARRAY
      ls-tree: fix expansion of repeated %(path)
      ls-tree: remove dead store and strbuf for quote_c_style()
      read-cache: use size_t for {base,df}_name_compare()
      pack-objects: use strcspn(3) in name_cmp_len()
      cache-tree: fix strbuf growth in prime_cache_tree_rec()
      test-ctype: test isascii
      test-ctype: test islower and isupper
      test-ctype: test iscntrl, ispunct, isxdigit and isprint
      archive: add --mtime

Rubén Justo (1):
      branch: force-copy a branch to itself via @{-1} is a no-op

Rudy Rigot (1):
      status: modernize git-status "slow untracked files" advice

SZEDER Gábor (1):
      tests: make 'test_oid' print trailing newline

Sean Allred (3):
      var: do not print usage() with a correct invocation
      var: allow GIT_EDITOR to return null
      var: add GIT_SEQUENCE_EDITOR variable

Seija (1):
      maintenance: compare output of pthread functions for inequality with 0

Seija Kijin (6):
      git: remove duplicate includes
      win32: use _endthreadex to terminate threads, not ExitThread
      win32: prepare pthread.c for change by formatting
      win32: close handles of threads that have been joined
      merge: break out of all_strategy loop when strategy is found
      compat/winansi: check for errors of CreateThread() correctly

Siddharth Asthana (2):
      cat-file: add mailmap support to -s option
      cat-file: add mailmap support to --batch-check option

Simon Gerber (1):
      help.c: fix autocorrect in work tree for bare repository

Sven Strickroth (1):
      submodule: accept -v for the update command

Taylor Blau (5):
      ci: avoid unnecessary builds
      t5619: demonstrate clone_local() with ambiguous transport
      clone: delay picking a transport until after get_repo_path()
      dir-iterator: prevent top-level symlinks without FOLLOW_SYMLINKS
      dir-iterator: drop unused `DIR_ITERATOR_FOLLOW_SYMLINKS`

Teng Long (5):
      pack-bitmap.c: remove unnecessary "open_pack_index()" calls
      pack-bitmap.c: avoid exposing absolute paths
      ls-tree: cleanup the redundant SPACE
      t3104: remove shift code in 'test_ls_tree_format'
      range-diff: let '--abbrev' option takes effect

Thierry Reding (1):
      am: allow passing --no-verify flag

Torsten Bögershausen (1):
      t0003: call dd with portable blocksize

Wes Lord (1):
      new-command.txt: update reference to builtin docs

William Sprent (1):
      dir: check for single file cone patterns

Yoichi Nakayama (2):
      git-jump: add an optional argument '--stdout'
      git-jump: invoke emacs/emacsclient

Yukai Chou (1):
      doc: fix non-existent config name

Yutaro Ohno (1):
      doc: add "git switch -c" as another option on detached HEAD

Zhang Yi (1):
      t9700: modernize test scripts

ZheNing Hu (1):
      scalar: show progress if stderr refers to a terminal

idriss fekir (1):
      trace.c, git.c: remove unnecessary parameter to trace_repo_setup()

Ævar Arnfjörð Bjarmason (90):
      bisect tests: test for v2.30.0 "bisect run" regressions
      bisect: refactor bisect_run() to match CodingGuidelines
      bisect test: test exit codes on bad usage
      bisect--helper: emit usage for "git bisect"
      bisect; remove unused "git-bisect.sh" and ".gitignore" entry
      tests: mark tests as passing with SANITIZE=leak
      {reset,merge}: call discard_index() before returning
      commit: discard partial cache before (re-)reading it
      read-cache.c: clear and free "sparse_checkout_patterns"
      dir.c: free "ident" and "exclude_per_dir" in "struct untracked_cache"
      built-ins & libs & helpers: add/move destructors, fix leaks
      unpack-file: fix ancient leak in create_temp_file()
      revision API: call graph_clear() in release_revisions()
      ls-files: fix a --with-tree memory leak
      sequencer.c: fix "opts->strategy" leak in read_strategy_opts()
      connected.c: free the "struct packed_git"
      rebase: don't leak on "--abort"
      cherry-pick: free "struct replay_opts" members
      revert: fix parse_options_concat() leak
      built-ins: use free() not UNLEAK() if trivial, rm dead code
      t5314: check exit code of "git"
      t7600: don't ignore "rev-parse" exit code in helper
      t4023: fix ignored exit codes of git
      Makefile: use sha1collisiondetection by default on OSX and Darwin
      bundle: don't segfault on "git bundle <subcmd>"
      protocol v2: add server-side "bundle-uri" skeleton
      t: create test harness for 'bundle-uri' command
      clone: request the 'bundle-uri' command when available
      bundle-uri client: add boolean transfer.bundleURI setting
      bundle-uri client: add helper for testing server
      submodule absorbgitdirs tests: add missing "Migrating git..." tests
      submodule.c & submodule--helper: pass along "super_prefix" param
      submodule--helper: don't use global --super-prefix in "absorbgitdirs"
      submodule--helper: convert "foreach" to its own "--super-prefix"
      submodule--helper: convert "sync" to its own "--super-prefix"
      submodule--helper: convert "status" to its own "--super-prefix"
      submodule--helper: convert "{update,clone}" to their own "--super-prefix"
      read-tree: add "--super-prefix" option, eliminate global
      builtin/bundle.c: remove superfluous "newargc" variable
      bundle <cmd>: have usage_msg_opt() note the missing "<file>"
      builtin/difftool.c: { 0 }-initialize rather than using memset()
      sparse-index.c: expand_to_path() can assume non-NULL "istate"
      sparse-index API: BUG() out on NULL ensure_full_index()
      read-cache.c: refactor set_new_index_sparsity() for subsequent commit
      bisect--helper: make the order consistently `argc, argv`
      ls-tree: don't use "show_tree_data" for "fast" callbacks
      ls-tree: use a "struct options"
      ls-tree: fold "show_tree_data" into "cb" struct
      ls-tree: make "line_termination" less generic
      env-helper: move this built-in to "test-tool env-helper"
      cache API: add a "INDEX_STATE_INIT" macro/function, add release_index()
      treewide: always have a valid "index_state.repo" member
      add: remove "add.interactive.useBuiltin" & Perl "git add--interactive"
      add API: remove run_add_interactive() wrapper function
      docs & comments: replace mentions of "git-add--interactive.perl"
      tests: mark tests as passing with SANITIZE=leak
      bundle.c: don't leak the "args" in the "struct child_process"
      commit-graph: use free_commit_graph() instead of UNLEAK()
      clone: use free() instead of UNLEAK()
      various: add missing clear_pathspec(), fix leaks
      name-rev: don't xstrdup() an already dup'd string
      repack: fix leaks on error with "goto cleanup"
      worktree: fix a trivial leak in prune_worktrees()
      http-backend.c: fix "dir" and "cmd_arg" leaks in cmd_main()
      http-backend.c: fix cmd_main() memory leak, refactor reg{exec,free}()
      commit-graph: fix a parse_options_concat() leak
      show-branch: free() allocated "head" before return
      builtin/merge.c: use fixed strings, not "strbuf", fix leak
      builtin/merge.c: free "&buf" on "Your local changes..." error
      grep.c: refactor free_grep_patterns()
      grep API: plug memory leaks by freeing "header_list"
      receive-pack: release the linked "struct command *" list
      push: refactor refspec_append_mapped() for subsequent leak-fix
      push: free_refs() the "local_refs" in set_refspecs()
      rebase: use "cleanup" pattern in do_interactive_rebase()
      sequencer.c: split up sequencer_remove_state()
      sequencer API users: fix get_replay_opts() leaks
      builtin/revert.c: move free-ing of "revs" to replay_opts_release()
      builtin/rebase.c: fix "options.onto_name" leak
      sequencer.c: always free() the "msgbuf" in do_pick_commit()
      builtin/rebase.c: free() "options.strategy_opts"
      commit.c: free() revs.commit in get_fork_point()
      config.h: remove unused git_configset_add_parameters()
      run-command.c: remove dead assignment in while-loop
      builtin/rm.c: use narrower "USE_THE_INDEX_VARIABLE"
      cocci & cache.h: fully apply "active_nr" part of index-compatibility
      cocci & cache.h: apply pending "index_cache_pos" rule
      cocci & cache-tree.h: migrate "write_cache_as_tree" to "*_index_*"
      cache-tree API: remove redundant update_main_cache_tree()
      cocci & cache.h: remove "USE_THE_INDEX_COMPATIBILITY_MACROS"

Đoàn Trần Công Danh (6):
      bisect: fix output regressions in v2.30.0
      bisect run: keep some of the post-v2.30.0 output
      bisect-run: verify_good: account for non-negative exit status
      bisect--helper: identify as bisect when report error
      bisect--helper: log: allow arbitrary number of arguments
      date.c: allow ISO 8601 reduced precision times


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.40.0-rc0
@ 2023-02-24 20:24  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2023-02-24 20:24 UTC (permalink / raw)
  To: git; +Cc: git-packagers

An early preview release Git v2.40.0-rc0 is now available for
testing at the usual places.  It is comprised of 417 non-merge
commits since v2.39.0, contributed by 71 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.40.0-rc0' 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.39.0 are as follows.
Welcome to the Git development community!

  Adam Szkoda, Alison Winters, Carl Baldwin, Daniël Haazen, Eric
  Sesterhenn, Gwyneth Morgan, Harshil-Jani, Hubert Jasudowicz,
  Kostya Farber, Marco Nenciarini, Markus Vervier, Mathias Krause,
  Pat LaVarre, Peter Grayson, Rudy Rigot, Seija, Seija Kijin,
  Simon Gerber, Thierry Reding, toon@iotcl.com, Wes Lord, Yukai
  Chou, Yutaro Ohno, and yvvdwf.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Andrei Rybak, Calvin Wan, Carlo
  Marcelo Arenas Belón, Christian Couder, Chris. Webster,
  Derrick Stolee, Đoàn Trần Công Danh, Elijah Newren,
  Emily Shaffer, Eric Sunshine, Eric Wong, Erik Cervin Edin, Glen
  Choo, Jeff Hostetler, Jeff King, Jiang Xin, Joern Schneeweisz,
  Johannes Schindelin, Johannes Sixt, John Cai, Jonathan Tan,
  Junio C Hamano, Karthik Nayak, Kevin Willford, Kyle Meyer,
  Kyle Zhao, Lars Kellogg-Stedman, Martin Ågren, M Hickford,
  Patrick Steinhardt, Philip Oakley, Philippe Blain, Phillip
  Wood, Randall S. Becker, René Scharfe, Rubén Justo, Sean
  Allred, Siddharth Asthana, Sven Strickroth, SZEDER Gábor,
  Taylor Blau, Teng Long, Torsten Bögershausen, William Sprent,
  Yoichi Nakayama, and ZheNing Hu.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.40 Release Notes (draft)
===============================

UI, Workflows & Features

 * "merge-tree" learns a new `--merge-base` option.

 * "git jump" (in contrib/) learned to present the "quickfix list" to
   its standard output (instead of letting it consumed by the editor
   it invokes), and learned to also drive emacs/emacsclient.

 * "git var UNKNOWN_VARIABLE" and "git var VARIABLE" with the variable
   given an empty value used to behave identically.  Now the latter
   just gives an empty output, while the former still gives an error
   message.

 * Introduce a case insensitive mode to the Bash completion helpers.

 * The advice message given by "git status" when it takes long time to
   enumerate untracked paths has been updated.

 * Just like "git var GIT_EDITOR" abstracts the complex logic to
   choose which editor gets used behind it, "git var" now give support
   to GIT_SEQUENCE_EDITOR.

 * "git format-patch" learned to honor format.mboxrd even when sending
   patches to the standard output stream,

 * 'cat-file' gains mailmap support for its '--batch-check' and '-s'
   options.

 * Conditionally skip the pre-applypatch and applypatch-msg hooks when
   applying patches with 'git am'.

 * Introduce an optional configuration to allow the trailing hash that
   protects the index file from bit flipping.

 * "git check-attr" learned to take an optional tree-ish to read the
   .gitattributes file from.

 * "scalar" learned to give progress bar.

 * "grep -P" learned to use Unicode Character Property to grok
   character classes when processing \b and \w etc.

 * "git rebase" often ignored incompatible options instead of
   complaining, which has been corrected.

 * "scalar" warns but continues when its periodic maintenance
   feature cannot be enabled.

 * The bundle-URI subsystem adds support for creation-token heuristics
   to help incremental fetches.

 * Userdiff regexp update for Java language.


Performance, Internal Implementation, Development Support etc.

 * `git bisect` becomes a builtin.

 * The pack-bitmap machinery is taught to log the paths of redundant
   bitmap(s) to trace2 instead of stderr.

 * Use the SHA1DC implementation on macOS, just like other platforms,
   by default.

 * Even in a repository with promisor remote, it is useless to
   attempt to lazily attempt fetching an object that is expected to be
   commit, because no "filter" mode omits commit objects.  Take
   advantage of this assumption to fail fast on errors.

 * Stop using "git --super-prefix" and narrow the scope of its use to
   the submodule--helper.

 * Stop running win+VS build by default.

 * CI updates.  We probably want a clean-up to move the long shell
   script embedded in yaml file into a separate file, but that can
   come later.

 * Use `git diff --no-index` as a test_cmp on Windows.

   We'd probably need to revisit "do we really want to, and have to,
   lose CRLF vs LF?" later, at which time we may be able to further
   clean this up by replacing "git diff --no-index" with "diff -u".

 * Avoid unnecessary builds in CI, with settings configured in
   ci-config.

 * Plug leaks in sequencer subsystem and its users.

 * In-tree .gitattributes update to match the way we recommend our
   users to mark a file as text.
   (merge 1f34e0cd3d po/attributes-text later to maint).

 * Finally retire the scripted "git add -p/-i" implementation and have
   everybody use the one reimplemented in C.


Fixes since v2.39
-----------------

 * Various leak fixes.

 * Fix a bug where `pack-objects` would not respect multiple `--filter`
   arguments when invoked directly.
   (merge d4f7036887 rs/multi-filter-args later to maint).

 * Make fsmonitor more robust to avoid the flakiness seen in t7527.
   (merge 6692d45477 jh/t7527-unflake-by-forcing-cookie later to maint).

 * Stop using deprecated macOS API in fsmonitor.
   (merge b0226007f0 jh/fsmonitor-darwin-modernize later to maint).

 * Redefining system functions for a few functions did not follow our
   usual "implement git_foo() and #define foo(args) git_foo(args)"
   pattern, which has broken build for some folks.

 * The way the diff machinery prepares the options array for the
   parse_options API has been refactored to avoid resource leaks.
   (merge 189e97bc4b rs/diff-parseopts later to maint).

 * Correct pthread API usage.
   (merge 786e67611d sx/pthread-error-check-fix later to maint).

 * The code to auto-correct a misspelt subcommand unnecessarily called
   into git_default_config() from the early config codepath, which was
   a no-no.  This has bee corrected.
   (merge 0918d08887 sg/help-autocorrect-config-fix later to maint).

 * "git http-fetch" (which is rarely used) forgot to identify itself
   in the trace2 output.
   (merge 7abb43cbc8 jt/http-fetch-trace2-report-name later to maint).

 * The output from "git diff --stat" on an unmerged path lost the
   terminating LF in Git 2.39, which has been corrected.
   (merge 209d9cb011 pg/diff-stat-unmerged-regression-fix later to maint).

 * "git pull -v --recurse-submodules" attempted to pass "-v" down to
   underlying "git submodule update", which did not understand the
   request and barfed, which has been corrected.
   (merge 6f65f84766 ss/pull-v-recurse-fix later to maint).

 * When given a pattern that matches an empty string at the end of a
   line, the code to parse the "git diff" line-ranges fell into an
   infinite loop, which has been corrected.

 * Fix the sequence to fsync $GIT_DIR/packed-refs file that forgot to
   flush its output to the disk..

 * Fix to a small regression in 2.38 days.

 * "git diff --relative" did not mix well with "git diff --ext-diff",
   which has been corrected.

 * The logic to see if we are using the "cone" mode by checking the
   sparsity patterns has been tightened to avoid mistaking a pattern
   that names a single file as specifying a cone.

 * Deal with a few deprecation warning from cURL library.

 * Doc update for environment variables set when hooks are invoked.

 * Document ORIG_HEAD a bit more.

 * "git ls-tree --format='%(path) %(path)' $tree $path" showed the
   path three times, which has been corrected.

 * Remove "git env--helper" and demote it to a test-tool subcommand.
   (merge 4a1baacd46 ab/test-env-helper later to maint).

 * Newer regex library macOS stopped enabling GNU-like enhanced BRE,
   where '\(A\|B\)' works as alternation, unless explicitly asked with
   the REG_ENHANCED flag.  "git grep" now can be compiled to do so, to
   retain the old behaviour.

 * Pthread emulation on Win32 leaked thread handle when a thread is
   joined.
   (merge 238a9dfe86 sk/win32-close-handle-upon-pthread-join later to maint).

 * "git send-email -v 3" used to be expanded to "git send-email
   --validate 3" when the user meant to pass them down to
   "format-patch", which has been corrected.
   (merge 8774aa56ad km/send-email-with-v-reroll-count later to maint).

 * Document that "branch -f <branch>" disables only the safety to
   avoid recreating an existing branch.

 * "git fetch <group>", when "<group>" of remotes lists the same
   remote twice, unnecessarily failed when parallel fetching was
   enabled, which has been corrected.
   (merge 06a668cb90 cw/fetch-remote-group-with-duplication later to maint).

 * Clarify how "checkout -b/-B" and "git branch [-f]" are similar but
   different in the documentation.

 * "git hash-object" now checks that the resulting object is well
   formed with the same code as "git fsck".
   (merge 8e4309038f jk/hash-object-fsck later to maint).

 * Improve the error message given when private key is not loaded in
   the ssh agent in the codepath to sign with an ssh key.
   (merge dce7b31126 as/ssh-signing-improve-key-missing-error later to maint).

 * Adjust "git request-pull" to strip embedded signature from signed
   tags to notice non-PGP signatures.
   (merge a9cad02538 gm/request-pull-with-non-pgp-signed-tags later to maint).

 * Remove support for MSys, which now lags way behind MSys2.
   (merge 2987407f3c hj/remove-msys-support later to maint).

 * Fix use of CreateThread() API call made early in the windows
   start-up code.
   (merge 592bcab61b sk/winansi-createthread-fix later to maint).

 * "git pack-objects" learned to release delta-island bitmap data when
   it is done using it, saving peak heap memory usage.
   (merge 647982bb71 ew/free-island-marks later to maint).

 * In an environment where dynamically generated code is prohibited to
   run (e.g. SELinux), failure to JIT pcre patterns is expected.  Fall
   back to interpreted execution in such a case.
   (merge 50b6ad55b0 cb/grep-fallback-failing-jit later to maint).

 * "git name-rev" heuristics update.
   (merge b2182a8730 en/name-rev-make-taggerdate-much-less-important later to maint).

 * Remove more remaining uses of macros that relies on the_index
   singleton instance without explicitly spelling it out.

 * Remove unnecessary explicit sizing of strbuf.
   (merge 93ea118bed rs/cache-tree-strbuf-growth-fix later to maint).

 * Doc update.
   (merge d9ec3b0dc0 jk/doc-ls-remote-matching later to maint).

 * Error messages given upon a signature verification failure used to
   discard the errors from underlying gpg program, which has been
   corrected.
   (merge ad6b320756 js/gpg-errors later to maint).

 * Update --date=default documentation.
   (merge 9deef088ae rd/doc-default-date-format later to maint).

 * A test helper had a single write(2) of 256kB, which was too big for
   some platforms (e.g. NonStop), which has been corrected by using
   xwrite() wrapper appropriately.
   (merge 58eab6ff13 jc/genzeros-avoid-raw-write later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 4eb1ccecd4 dh/mingw-ownership-check-typofix later to maint).
   (merge f95526419b ar/typofix-gitattributes-doc later to maint).
   (merge 27875aeec9 km/doc-branch-start-point later to maint).
   (merge 35c194dc57 es/t1509-root-fixes later to maint).
   (merge 7b341645e3 pw/ci-print-failure-name-fix later to maint).
   (merge bcb71d45bf jx/t1301-updates later to maint).
   (merge ebdc46c242 jc/doc-diff-patch.txt later to maint).
   (merge a87a20cbb4 ar/test-cleanup later to maint).
   (merge f5156f1885 ar/bisect-doc-update later to maint).
   (merge fca2d86c97 jk/interop-error later to maint).
   (merge cf4936ed74 tl/ls-tree-code-clean-up later to maint).
   (merge dcb47e52b0 en/t6426-todo-cleanup later to maint).
   (merge 5b8db44bdd jc/format-patch-v-unleak later to maint).
   (merge 590b636737 jk/hash-object-literally-fd-leak later to maint).
   (merge 5458ba0a4d tb/t0003-invoke-dd-more-portably later to maint).
   (merge 70661d288b ar/markup-em-dash later to maint).
   (merge e750951e74 en/ls-files-doc-update later to maint).
   (merge 4f542975d1 mh/doc-credential-cache-only-in-core later to maint).
   (merge 3a2ebaebc7 gc/index-format-doc later to maint).
   (merge b08edf709d jk/httpd-test-updates later to maint).
   (merge d85e9448dd wl/new-command-doc later to maint).
   (merge d912a603ed kf/t5000-modernise later to maint).
   (merge e65b868d07 rs/size-t-fixes later to maint).
   (merge 3eb1e1ca9a ab/config-h-remove-unused later to maint).
   (merge d390e08076 cw/doc-pushurl-vs-url later to maint).
   (merge 567342fc77 rs/ctype-test later to maint).

----------------------------------------------------------------

Changes since v2.39.0 are as follows:

Adam Szkoda (1):
      ssh signing: better error message when key not in agent

Alison Winters (2):
      completion: add optional ignore-case when matching refs
      completion: add case-insensitive match of pseudorefs

Andrei Rybak (11):
      gitattributes.txt: fix typo in "comma separated"
      *: fix typos which duplicate a word
      git-bisect-lk2009: update java code conventions link
      git-bisect-lk2009: update nist report link
      t6003: uncomment test '--max-age=c3, --topo-order'
      t6422: drop commented out code
      t7527: use test_when_finished in 'case insensitive+preserving'
      Documentation: render dash correctly
      userdiff: support Java type parameters
      userdiff: support Java record types
      userdiff: support Java sealed classes

Calvin Wan (2):
      fetch: fix duplicate remote parallel fetch bug
      Documentation: clarify multiple pushurls vs urls

Carlo Marcelo Arenas Belón (2):
      test-lib: add prerequisite for 64-bit platforms
      grep: correctly identify utf-8 characters with \{b,w} in -P

Chris. Webster (3):
      ci (check-whitespace): suggest fixes for errors
      ci (check-whitespace): add links to job output
      ci (check-whitespace): move to actions/checkout@v3

Daniël Haazen (1):
      mingw: fix typo in an error message from ownership check

Derrick Stolee (25):
      transport: rename got_remote_heads
      bundle-uri: serve bundle.* keys from config
      strbuf: introduce strbuf_strip_file_from_path()
      bundle-uri: allow relative URLs in bundle lists
      bundle-uri: download bundles from an advertised list
      clone: unbundle the advertised bundles
      hashfile: allow skipping the hash function
      read-cache: add index.skipHash config option
      test-lib-functions: add helper for trailing hash
      features: feature.manyFiles implies fast index writes
      t1600: fix racy index.skipHash test
      t: allow 'scalar' in test_must_fail
      t921*: test scalar behavior starting maintenance
      scalar: only warn when background maintenance fails
      bundle: test unbundling with incomplete history
      bundle: verify using check_connected()
      t5558: add tests for creationToken heuristic
      bundle-uri: parse bundle.heuristic=creationToken
      bundle-uri: parse bundle.<id>.creationToken values
      bundle-uri: download in creationToken order
      clone: set fetch.bundleURI if appropriate
      bundle-uri: drop bundle.flag from design doc
      fetch: fetch from an external bundle URI
      bundle-uri: store fetch.bundleCreationToken
      bundle-uri: test missing bundles with heuristic

Elijah Newren (16):
      ls-files: add missing documentation for --resolve-undo option
      ls-files: clarify descriptions of file selection options
      ls-files: clarify descriptions of status tags for -t
      ls-files: guide folks to --exclude-standard over other --exclude* options
      t6426: fix TODO about making test more comprehensive
      rebase: mark --update-refs as requiring the merge backend
      rebase: flag --apply and --merge as incompatible
      rebase: remove --allow-empty-message from incompatible opts
      rebase: fix docs about incompatibilities with --root
      rebase: fix incompatiblity checks for --[no-]reapply-cherry-picks
      rebase: add coverage of other incompatible options
      rebase: clarify the OPT_CMDMODE incompatibilities
      rebase: fix formatting of rebase --reapply-cherry-picks option in docs
      rebase: put rebase_options initialization in single place
      rebase: provide better error message for apply options vs. merge config
      name-rev: fix names by dropping taggerdate workaround

Emily Shaffer (4):
      run-command: allow stdin for run_processes_parallel
      hook API: support passing stdin to hooks, convert am's 'post-rewrite'
      sequencer: use the new hook API for the simpler "post-rewrite" call
      hook: support a --to-stdin=<path> option

Eric Sunshine (4):
      t1509: fix failing "root work tree" test due to owner-check
      t1509: make "setup" test more robust
      t1509: facilitate repeated script invocations
      githooks: discuss Git operations in foreign repositories

Eric Wong (2):
      format-patch: support format.mboxrd with --stdout
      delta-islands: free island_marks and bitmaps

Glen Choo (2):
      read-tree + fetch tests: test failing "--super-prefix" interaction
      docs: document zero bits in index "mode"

Gwyneth Morgan (1):
      request-pull: filter out SSH/X.509 tag signatures

Harshil-Jani (2):
      mingw: remove duplicate `USE_NED_ALLOCATOR` directive
      mingw: remove msysGit/MSYS1 support

Jeff Hostetler (2):
      fsmonitor: fix race seen in t7527
      fsmonitor: eliminate call to deprecated FSEventStream function

Jeff King (53):
      git-jump: move valid-mode check earlier
      pack-bitmap.c: break out of the bitmap loop early if not tracing
      pack-bitmap.c: trace bitmap ignore logs when midx-bitmap is found
      git-compat-util: avoid redefining system function names
      git-compat-util: undefine system names before redeclaring them
      server_supports_v2(): use a separate function for die_on_error
      ls-refs: use repository parameter to iterate refs
      blob: drop unused parts of parse_blob_buffer()
      list-objects: drop process_gitlink() function
      ws: drop unused parameter from ws_blank_line()
      xdiff: drop unused parameter in def_ff()
      xdiff: mark unused parameter in xdl_call_hunk_func()
      diff: mark unused parameters in callbacks
      list-objects-filter: mark unused parameters in virtual functions
      userdiff: mark unused parameter in internal callback
      ref-filter: reject arguments to %(HEAD)
      ref-filter: factor out "%(foo) does not take arguments" errors
      ref-filter: factor out "unrecognized %(foo) arg" errors
      ref-filter: truncate atom names in error messages
      ref-filter: convert email atom parser to use err_bad_arg()
      test-bundle-uri: drop unused variables
      diff: use filespec path to set up tempfiles for ext-diff
      diff: clean up external-diff argv setup
      diff: drop "name" parameter from prepare_temp_file()
      convert trivial uses of strncmp() to starts_with()
      convert trivial uses of strncmp() to skip_prefix()
      object-file: inline calls to read_object()
      streaming: inline call to read_object_file_extended()
      read_object_file_extended(): drop lookup_replace option
      repo_read_object_file(): stop wrapping read_object_file_extended()
      packfile: inline custom read_object()
      object-file: fix indent-with-space
      t/interop: report which vanilla git command failed
      http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
      http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
      http: support CURLOPT_PROTOCOLS_STR
      t1007: modernize malformed object tests
      t1006: stop using 0-padded timestamps
      t7030: stop using invalid tag name
      t: use hash-object --literally when created malformed objects
      fsck: provide a function to fsck buffer without object struct
      hash-object: use fsck for object checks
      hash-object: fix descriptor leak with --literally
      fsck: do not assume NUL-termination of buffers
      t/lib-httpd: bump required apache version to 2.2
      t/lib-httpd: bump required apache version to 2.4
      t/lib-httpd: drop SSLMutex config
      t/lib-httpd: increase ssl key size to 2048 bits
      http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT
      http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION
      http: support CURLOPT_PROTOCOLS_STR
      doc/ls-remote: cosmetic cleanups for examples
      doc/ls-remote: clarify pattern format

Jiang Xin (3):
      t1301: fix wrong template dir for git-init
      t1301: use test_when_finished for cleanup
      t1301: do not change $CWD in "shared=all" test case

Johannes Schindelin (24):
      bisect--helper: handle states directly
      Turn `git bisect` into a full built-in
      t0021: use Windows-friendly `pwd`
      tests(mingw): avoid very slow `mingw_test_cmp`
      ci: only run win+VS build & tests in Git for Windows' fork
      bisect--helper: simplify exit code computation
      bisect: verify that a bogus option won't try to start a bisection
      bisect run: fix the error message
      bisect: remove Cogito-related code
      bisect: no longer try to clean up left-over `.git/head-name` files
      fsck: document the new `gitattributes` message IDs
      attr: adjust a mismatched data type
      attr: adjust a mismatched data type
      Git 2.31.7
      Git 2.32.6
      Git 2.33.7
      Git 2.34.7
      Git 2.35.7
      Git 2.36.5
      Git 2.37.6
      Git 2.38.4
      Git 2.39.2
      t7510: add a test case that does not need gpg
      gpg: do show gpg's error message upon failure

Johannes Sixt (1):
      t3920: don't ignore errors of more than one command with `|| true`

John Cai (2):
      docs: link generating patch sections
      attr: fix instructions on how to check attrs

Jonathan Tan (5):
      http-fetch: invoke trace2_cmd_name()
      object-file: remove OBJECT_INFO_IGNORE_LOOSE
      object-file: refactor map_loose_object_1()
      object-file: emit corruption errors when detected
      commit: don't lazy-fetch commits

Junio C Hamano (36):
      Git 2.30.7
      Git 2.31.6
      Git 2.32.5
      Git 2.33.6
      Git 2.34.6
      Git 2.35.6
      Git 2.36.4
      Git 2.37.5
      Git 2.38.3
      Git 2.39.1
      Start the 2.40 cycle
      The first batch for 2.40
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      The sixth batch
      format-patch: unleak "-v <num>"
      The seventh batch
      branch: document `-f` and linked worktree behaviour
      checkout: document -b/-B to highlight the differences from "git branch"
      The eighth batch
      The ninth batch
      The tenth batch
      The eleventh batch
      The twelfth batch
      The thirteenth batch
      Git 2.30.8
      The fourteenth batch
      The fifteenth batch
      Prepare for 2.39.3 just in case
      The sixteenth batch
      rev-list: clarify git-log default date format
      test-genzeros: avoid raw write(2)
      The seventeenth batch
      Git 2.40-rc0

Karthik Nayak (2):
      t0003: move setup for `--all` into new block
      attr: add flag `--source` to work with tree-ish

Kostya Farber (1):
      t5000: modernise archive and :(glob) test

Kyle Meyer (2):
      send-email: relay '-v N' to format-patch
      doc/git-branch: fix --force description typo

Kyle Zhao (3):
      merge-tree.c: add --merge-base=<commit> option
      merge-tree.c: allow specifying the merge-base when --stdin is passed
      docs: fix description of the `--merge-base` option

Lars Kellogg-Stedman (1):
      line-range: fix infinite loop bug with '$' regex

M Hickford (1):
      Documentation: clarify that cache forgets credentials if the system restarts

Martin Ågren (1):
      git-cat-file.txt: fix list continuations rendering literally

Mathias Krause (1):
      grep: fall back to interpreter if JIT memory allocation fails

Patrick Steinhardt (27):
      attr: fix overflow when upserting attribute with overly long name
      attr: fix out-of-bounds read with huge attribute names
      attr: fix integer overflow when parsing huge attribute names
      attr: fix out-of-bounds write when parsing huge number of attributes
      attr: fix out-of-bounds read with unreasonable amount of patterns
      attr: fix integer overflow with more than INT_MAX macros
      attr: harden allocation against integer overflows
      attr: fix silently splitting up lines longer than 2048 bytes
      attr: ignore attribute lines exceeding 2048 bytes
      attr: ignore overly large gitattributes files
      pretty: fix out-of-bounds write caused by integer overflow
      pretty: fix out-of-bounds read when left-flushing with stealing
      pretty: fix out-of-bounds read when parsing invalid padding format
      pretty: fix adding linefeed when placeholder is not expanded
      pretty: fix integer overflow in wrapping format
      utf8: fix truncated string lengths in `utf8_strnwidth()`
      utf8: fix returning negative string width
      utf8: fix overflow when returning string width
      utf8: fix checking for glyph width in `strbuf_utf8_replace()`
      utf8: refactor `strbuf_utf8_replace` to not rely on preallocated buffer
      pretty: restrict input lengths for padding and wrapping formats
      fsck: refactor `fsck_blob()` to allow for more checks
      fsck: pull out function to check a set of blobs
      fsck: move checks for gitattributes
      fsck: implement checks for gitattributes
      refs: fix corruption by not correctly syncing packed-refs to disk
      apply: fix writing behind newly created symbolic links

Peter Grayson (1):
      diff: fix regression with --stat and unmerged file

Philip Oakley (6):
      doc: pretty-formats: separate parameters from placeholders
      doc: pretty-formats: delineate `%<|(` parameter values
      doc: pretty-formats document negative column alignments
      doc: pretty-formats describe use of ellipsis in truncation
      doc: pretty-formats note wide char limitations, and add tests
      .gitattributes: include `text` attribute for eol attributes

Philippe Blain (6):
      git-cherry-pick.txt: do not use 'ORIG_HEAD' in example
      git-reset.txt: mention 'ORIG_HEAD' in the Description
      git-merge.txt: mention 'ORIG_HEAD' in the Description
      revisions.txt: be explicit about commands writing 'ORIG_HEAD'
      git-rebase.txt: add a note about 'ORIG_HEAD' being overwritten
      branch: improve advice when --recurse-submodules fails

Phillip Wood (2):
      ci(github): restore "print test failures" step name
      rebase: cleanup "--exec" option handling

René Scharfe (29):
      t5317: stop losing return codes of git ls-files
      t5317: demonstrate failure to handle multiple --filter options
      pack-objects: fix handling of multiple --filter options
      pack-objects: simplify --filter handling
      list-objects-filter: remove OPT_PARSE_LIST_OBJECTS_FILTER_INIT()
      t4205: don't exit test script on failure
      diff: factor out add_diff_options()
      diff: use add_diff_options() in diff_opt_parse()
      diff: remove parseopts member from struct diff_options
      list-objects-filter: plug pattern_list leak
      t3920: support CR-eating grep
      reflog: clear leftovers in reflog_expiry_cleanup()
      commit: skip already cleared parents in clear_commit_marks_1()
      am: don't pass strvec to apply_parse_options()
      object-file: inline write_buffer()
      use enhanced basic regular expressions on macOS
      mingw: make argv2 in try_shell_exec() non-const
      factor out BARF_UNLESS_COPYABLE
      do full type check in BARF_UNLESS_COPYABLE
      add DUP_ARRAY
      use DUP_ARRAY
      ls-tree: fix expansion of repeated %(path)
      ls-tree: remove dead store and strbuf for quote_c_style()
      read-cache: use size_t for {base,df}_name_compare()
      pack-objects: use strcspn(3) in name_cmp_len()
      cache-tree: fix strbuf growth in prime_cache_tree_rec()
      test-ctype: test isascii
      test-ctype: test islower and isupper
      test-ctype: test iscntrl, ispunct, isxdigit and isprint

Rubén Justo (1):
      branch: force-copy a branch to itself via @{-1} is a no-op

Rudy Rigot (1):
      status: modernize git-status "slow untracked files" advice

SZEDER Gábor (1):
      tests: make 'test_oid' print trailing newline

Sean Allred (3):
      var: do not print usage() with a correct invocation
      var: allow GIT_EDITOR to return null
      var: add GIT_SEQUENCE_EDITOR variable

Seija (1):
      maintenance: compare output of pthread functions for inequality with 0

Seija Kijin (6):
      git: remove duplicate includes
      win32: use _endthreadex to terminate threads, not ExitThread
      win32: prepare pthread.c for change by formatting
      win32: close handles of threads that have been joined
      merge: break out of all_strategy loop when strategy is found
      compat/winansi: check for errors of CreateThread() correctly

Siddharth Asthana (2):
      cat-file: add mailmap support to -s option
      cat-file: add mailmap support to --batch-check option

Simon Gerber (1):
      help.c: fix autocorrect in work tree for bare repository

Sven Strickroth (1):
      submodule: accept -v for the update command

Taylor Blau (4):
      ci: avoid unnecessary builds
      t5619: demonstrate clone_local() with ambiguous transport
      clone: delay picking a transport until after get_repo_path()
      dir-iterator: prevent top-level symlinks without FOLLOW_SYMLINKS

Teng Long (4):
      pack-bitmap.c: remove unnecessary "open_pack_index()" calls
      pack-bitmap.c: avoid exposing absolute paths
      ls-tree: cleanup the redundant SPACE
      t3104: remove shift code in 'test_ls_tree_format'

Thierry Reding (1):
      am: allow passing --no-verify flag

Torsten Bögershausen (1):
      t0003: call dd with portable blocksize

Wes Lord (1):
      new-command.txt: update reference to builtin docs

William Sprent (1):
      dir: check for single file cone patterns

Yoichi Nakayama (2):
      git-jump: add an optional argument '--stdout'
      git-jump: invoke emacs/emacsclient

Yukai Chou (1):
      doc: fix non-existent config name

Yutaro Ohno (1):
      doc: add "git switch -c" as another option on detached HEAD

ZheNing Hu (1):
      scalar: show progress if stderr refers to a terminal

Ævar Arnfjörð Bjarmason (90):
      bisect tests: test for v2.30.0 "bisect run" regressions
      bisect: refactor bisect_run() to match CodingGuidelines
      bisect test: test exit codes on bad usage
      bisect--helper: emit usage for "git bisect"
      bisect; remove unused "git-bisect.sh" and ".gitignore" entry
      tests: mark tests as passing with SANITIZE=leak
      {reset,merge}: call discard_index() before returning
      commit: discard partial cache before (re-)reading it
      read-cache.c: clear and free "sparse_checkout_patterns"
      dir.c: free "ident" and "exclude_per_dir" in "struct untracked_cache"
      built-ins & libs & helpers: add/move destructors, fix leaks
      unpack-file: fix ancient leak in create_temp_file()
      revision API: call graph_clear() in release_revisions()
      ls-files: fix a --with-tree memory leak
      sequencer.c: fix "opts->strategy" leak in read_strategy_opts()
      connected.c: free the "struct packed_git"
      rebase: don't leak on "--abort"
      cherry-pick: free "struct replay_opts" members
      revert: fix parse_options_concat() leak
      built-ins: use free() not UNLEAK() if trivial, rm dead code
      t5314: check exit code of "git"
      t7600: don't ignore "rev-parse" exit code in helper
      t4023: fix ignored exit codes of git
      Makefile: use sha1collisiondetection by default on OSX and Darwin
      bundle: don't segfault on "git bundle <subcmd>"
      protocol v2: add server-side "bundle-uri" skeleton
      t: create test harness for 'bundle-uri' command
      clone: request the 'bundle-uri' command when available
      bundle-uri client: add boolean transfer.bundleURI setting
      bundle-uri client: add helper for testing server
      submodule absorbgitdirs tests: add missing "Migrating git..." tests
      submodule.c & submodule--helper: pass along "super_prefix" param
      submodule--helper: don't use global --super-prefix in "absorbgitdirs"
      submodule--helper: convert "foreach" to its own "--super-prefix"
      submodule--helper: convert "sync" to its own "--super-prefix"
      submodule--helper: convert "status" to its own "--super-prefix"
      submodule--helper: convert "{update,clone}" to their own "--super-prefix"
      read-tree: add "--super-prefix" option, eliminate global
      builtin/bundle.c: remove superfluous "newargc" variable
      bundle <cmd>: have usage_msg_opt() note the missing "<file>"
      builtin/difftool.c: { 0 }-initialize rather than using memset()
      sparse-index.c: expand_to_path() can assume non-NULL "istate"
      sparse-index API: BUG() out on NULL ensure_full_index()
      read-cache.c: refactor set_new_index_sparsity() for subsequent commit
      bisect--helper: make the order consistently `argc, argv`
      ls-tree: don't use "show_tree_data" for "fast" callbacks
      ls-tree: use a "struct options"
      ls-tree: fold "show_tree_data" into "cb" struct
      ls-tree: make "line_termination" less generic
      env-helper: move this built-in to "test-tool env-helper"
      cache API: add a "INDEX_STATE_INIT" macro/function, add release_index()
      treewide: always have a valid "index_state.repo" member
      add: remove "add.interactive.useBuiltin" & Perl "git add--interactive"
      add API: remove run_add_interactive() wrapper function
      docs & comments: replace mentions of "git-add--interactive.perl"
      tests: mark tests as passing with SANITIZE=leak
      bundle.c: don't leak the "args" in the "struct child_process"
      commit-graph: use free_commit_graph() instead of UNLEAK()
      clone: use free() instead of UNLEAK()
      various: add missing clear_pathspec(), fix leaks
      name-rev: don't xstrdup() an already dup'd string
      repack: fix leaks on error with "goto cleanup"
      worktree: fix a trivial leak in prune_worktrees()
      http-backend.c: fix "dir" and "cmd_arg" leaks in cmd_main()
      http-backend.c: fix cmd_main() memory leak, refactor reg{exec,free}()
      commit-graph: fix a parse_options_concat() leak
      show-branch: free() allocated "head" before return
      builtin/merge.c: use fixed strings, not "strbuf", fix leak
      builtin/merge.c: free "&buf" on "Your local changes..." error
      grep.c: refactor free_grep_patterns()
      grep API: plug memory leaks by freeing "header_list"
      receive-pack: release the linked "struct command *" list
      push: refactor refspec_append_mapped() for subsequent leak-fix
      push: free_refs() the "local_refs" in set_refspecs()
      rebase: use "cleanup" pattern in do_interactive_rebase()
      sequencer.c: split up sequencer_remove_state()
      sequencer API users: fix get_replay_opts() leaks
      builtin/revert.c: move free-ing of "revs" to replay_opts_release()
      builtin/rebase.c: fix "options.onto_name" leak
      sequencer.c: always free() the "msgbuf" in do_pick_commit()
      builtin/rebase.c: free() "options.strategy_opts"
      commit.c: free() revs.commit in get_fork_point()
      config.h: remove unused git_configset_add_parameters()
      run-command.c: remove dead assignment in while-loop
      builtin/rm.c: use narrower "USE_THE_INDEX_VARIABLE"
      cocci & cache.h: fully apply "active_nr" part of index-compatibility
      cocci & cache.h: apply pending "index_cache_pos" rule
      cocci & cache-tree.h: migrate "write_cache_as_tree" to "*_index_*"
      cache-tree API: remove redundant update_main_cache_tree()
      cocci & cache.h: remove "USE_THE_INDEX_COMPATIBILITY_MACROS"

Đoàn Trần Công Danh (6):
      bisect: fix output regressions in v2.30.0
      bisect run: keep some of the post-v2.30.0 output
      bisect-run: verify_good: account for non-negative exit status
      bisect--helper: identify as bisect when report error
      bisect--helper: log: allow arbitrary number of arguments
      date.c: allow ISO 8601 reduced precision times


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.39.0
@ 2022-12-12 13:43  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-12-12 13:43 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

The latest feature release Git v2.39.0 is now available at the
usual places.  It is comprised of 483 non-merge commits since
v2.38.0, contributed by 86 people, 31 of which are new faces [*].

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.39.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.38.0 are as follows.
Welcome to the Git development community!

  Alexander Kanavin, Alexander Meshcheryakov, Andreas Hasenack,
  Anh Le, Arthur Chan, Daniel Sonbolian, Debra Obondo, Diomidis
  Spinellis, Erik Cervin Edin, Hank Leininger, herr.kaste, John
  A. Leuenhagen, Julia Ramer, Kevin Backhouse, Kousik Sanagavarapu,
  Lukáš Doktor, Martin Englund, M Hickford, Michael V. Scovetta,
  Noah Betzen, Nsengiyumva Wilberforce, orygaw, Oscar Dominguez,
  Ronan Pigott, Rubén Justo, Sotir Danailov, srz_zumix, Stefano
  Rivera, Tim Jaacks, Vincent Bernat, and Vlad-Stefan Harbuz.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  정재우, Ævar Arnfjörð Bjarmason, Alejandro R. Sedeño,
  Alexander Shopov, Alex Henrie, Bagas Sanjaya, Derrick Stolee,
  Đoàn Trần Công Danh, Elijah Newren, Emily Shaffer, Emir
  SARI, Eric DeCosta, Eric Sunshine, Eric Wong, Fangyi Zhou,
  Glen Choo, Han-Wen Nienhuys, Jan Pokorný, Jean-Noël Avila,
  Jeff Hostetler, Jeff King, Jerry Zhang, Jiang Xin, Johannes
  Altmanninger, Johannes Schindelin, John Cai, Jonathan Tan,
  Jordi Mas, Julien Moutinho, Junio C Hamano, Kyle Meyer, Martin
  Ågren, Martin von Zweigbergk, Matheus Tavares, Matthew John
  Cheetham, Matthias Rüster, Michael J Gruber, Michael McClimon,
  Patrick Steinhardt, Paul Smith, Peter Krefting, Philip Oakley,
  Philippe Blain, Phillip Wood, Ralf Thielow, Randall S. Becker,
  René Scharfe, Sergey Organov, Shaoxuan Yuan, SZEDER Gábor,
  Taylor Blau, Torsten Bögershausen, Victoria Dye, Yi-Jyun Pan,
  and 依云.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.39 Release Notes
=======================

UI, Workflows & Features
------------------------

 * "git grep" learned to expand the sparse-index more lazily and on
   demand in a sparse checkout.

 * By default, use of fsmonitor on a repository on networked
   filesystem is disabled. Add knobs to make it workable on macOS.

 * After checking out a "branch" that is a symbolic-ref that points at
   another branch, "git symbolic-ref HEAD" reports the underlying
   branch, not the symbolic-ref the user gave checkout as argument.
   The command learned the "--no-recurse" option to stop after
   dereferencing a symbolic-ref only once.

 * "git branch --edit-description @{-1}" is now a way to edit branch
   description of the branch you were on before switching to the
   current branch.

 * "git merge-tree --stdin" is a new way to request a series of merges
   and report the merge results.

 * "git shortlog" learned to group by the "format" string.

 * A new "--include-whitespace" option is added to "git patch-id", and
   existing bugs in the internal patch-id logic that did not match
   what "git patch-id" produces have been corrected.

 * Enable gc.cruftpacks by default for those who opt into
   feature.experimental setting.

 * "git repack" learns to send cruft objects out of the way into
   packfiles outside the repository.

 * 'scalar reconfigure -a' is taught to automatically remove
   scalar.repo entires which no longer exist.

 * Redact headers from cURL's h2h3 module in GIT_CURL_VERBOSE and
   others.

 * 'git maintenance register' is taught to write configuration to an
   arbitrary path, and 'git for-each-repo' is taught to expand tilde
   characters in paths.

 * When creating new notes, the template used to get a stray empty
   newline, which has been removed.

 * "git receive-pack" used to use all the local refs as the boundary for
   checking connectivity of the data "git push" sent, but now it uses
   only the refs that it advertised to the pusher. In a repository with
   the .hideRefs configuration, this reduces the resources needed to
   perform the check.

 * With '--recurse-submodules=on-demand', all submodules are
   recursively pushed.


Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------

 * With a bit of header twiddling, use the native regexp library on
   macOS instead of the compat/ one.

 * Prepare for GNU [ef]grep that throw warning of their uses.

 * Sources related to fuzz testing have been moved down to their own
   directory.

 * Most credential helpers ignored unknown entries in a credential
   description, but a few died upon seeing them.  The latter were
   taught to ignore them, too

 * "scalar unregister" in a repository that is already been
   unregistered reported an error.

 * Remove error detection from a function that fetches from promisor
   remotes, and make it die when such a fetch fails to bring all the
   requested objects, to give an early failure to various operations.

 * Update CodingGuidelines to clarify what features to use and avoid
   in C99.

 * Avoid false-positive from LSan whose assumption may be broken with
   higher optimization levels.

 * Enable address and undefined sanitizer tasks at GitHub Actions CI.

 * More UNUSED annotation to help using -Wunused option with the
   compiler.
   (merge 4b992f0a24 jk/unused-anno-more later to maint).

 * Rewrite a deep recursion in the skipping negotiator to use a loop
   with on-heap prio queue to avoid stack wastage.

 * Add documentation for message IDs in fsck error messages.

 * Define the logical elements of a "bundle list", data structure to
   store them in-core, format to transfer them, and code to parse
   them.

 * The role the security mailing list plays in an embargoed release
   has been documented.

 * Two new facilities, "timer" and "counter", are introduced to the
   trace2 API.

 * Code simplification by using strvec_pushf() instead of building an
   argument in a separate strbuf.

 * Make sure generated dependency file is stably sorted to help
   developers debugging their build issues.

 * The glossary entries for "commit-graph file" and "reachability
   bitmap" have been added.

 * Various tests exercising the transfer.credentialsInUrl
   configuration are taught to avoid making requests which require
   resolving localhost to reduce CI-flakiness.

 * A redundant diagnostic message is dropped from test_path_is_missing().

 * Simplify the run-command API.

 * Update the actions/github-script dependency in CI to avoid a
   deprecation warning.

 * Progress on being able to initialize a rev_info struct with a
   macro.

 * Add trace2 counters to the region to clear skip worktree bits in a
   sparse checkout.

 * Modernize test script to avoid "test -f" and friends.

 * Avoid calling 'cache_tree_update()' when doing so would be
   redundant.

 * Update the credential-cache documentation to provide a more
   realistic example.

 * Makefile comments updates and reordering to clarify knobs used to
   choose SHA implementations.

 * A design document for sparse-checkout's future directions has been
   added.

 * Teach chainlint.pl to annotate the original test definition instead
   of the token stream.

 * "make coccicheck" is time consuming. It has been made to run more
   incrementally.

 * `parse_object()` has been hardened to check for the existence of a
   suspected blob object.

 * The build procedure has been adjusted to GNUmake version 4.4, which
   made some changes to how pattern rule with multiple targets are
   handled.


Fixes since v2.38
-----------------

 * The codepath that reads from the index v4 had unaligned memory
   accesses, which has been corrected.

 * Fix messages incorrectly marked for translation.

 * "git fsck" failed to release contents of tree objects already used
   from the memory, which has been fixed.

 * "git clone" did not like to see the "--bare" and the "--origin"
   options used together without a good reason.

 * "git remote rename" failed to rename a remote without fetch
   refspec, which has been corrected.

 * Documentation on various Boolean GIT_* environment variables have
   been clarified.

 * "git rebase -i" can mistakenly attempt to apply a fixup to a commit
   itself, which has been corrected.

 * "git multi-pack-index repack/expire" used to repack unreachable
   cruft into a new pack, which have been corrected.

 * In read-only repositories, "git merge-tree" tried to come up with a
   merge result tree object, which it failed (which is not wrong) and
   led to a segfault (which is bad), which has been corrected.

 * Force C locale while running tests around httpd to make sure we can
   find expected error messages in the log.

 * Fix a logic in "mailinfo -b" that miscomputed the length of a
   substring, which lead to an out-of-bounds access.

 * The codepath to sign learned to report errors when it fails to read
   from "ssh-keygen".

 * Code clean-up that results in plugging a leak.

 * "GIT_EDITOR=: git branch --edit-description" resulted in failure,
   which has been corrected.

 * The code to clean temporary object directories (used for
   quarantine) tried to remove them inside its signal handler, which
   was a no-no.

 * Update comment in the Makefile about the RUNTIME_PREFIX config knob.

 * Clarify that "the sentence after <area>: prefix does not begin with
   a capital letter" rule applies only to the commit title.

 * "git branch --edit-description" on an unborn branch misleadingly
   said that no such branch exists, which has been corrected.

 * Work around older clang that warns against C99 zero initialization
   syntax for struct.

 * Giving "--invert-grep" and "--all-match" without "--grep" to the
   "git log" command resulted in an attempt to access grep pattern
   expression structure that has not been allocated, which has been
   corrected.
   (merge db84376f98 ab/grep-simplify-extended-expression later to maint).

 * "git diff rev^!" did not show combined diff to go to the rev from
   its parents.
   (merge a79c6b6081 rs/diff-caret-bang-with-parents later to maint).

 * Allow configuration files in "protected" scopes to include other
   configuration files.
   (merge ecec57b3c9 gc/bare-repo-discovery later to maint).

 * Give a bit more diversity to macOS CI by using sha1dc in one of the
   jobs (the other one tests Apple Common Crypto).
   (merge 1ad5c3df35 jc/ci-osx-with-sha1dc later to maint).

 * A bugfix with tracing support in midx codepath
   (merge e9c3839944 tb/midx-bitmap-selection-fix later to maint).

 * When geometric repacking feature is in use together with the
   --pack-kept-objects option, we lost packs marked with .keep files.
   (merge 197443e80a tb/save-keep-pack-during-geometric-repack later to maint).

 * Move a global variable added as a hack during regression fixes to
   its proper place in the API.
   (merge 0b0ab95f17 ab/run-hook-api-cleanup later to maint).

 * Update to build procedure with VS using CMake/CTest.
   (merge c858750b41 js/cmake-updates later to maint).

 * The short-help text shown by "git cmd -h" and the synopsis text
   shown at the beginning of "git help cmd" have been made more
   consistent.

 * When creating a multi-pack bitmap, remove per-pack bitmap files
   unconditionally as they will never be consulted.
   (merge 55d902cd61 tb/remove-unused-pack-bitmap later to maint).

 * Fix a longstanding syntax error in Git.pm error codepath.

 * "git diff --stat" etc. were invented back when everything was ASCII
   and strlen() was a way to measure the display width of a string;
   adjust them to compute the display width assuming UTF-8 pathnames.
   (merge ce8529b2bb tb/diffstat-with-utf8-strwidth later to maint).

 * "git branch --edit-description" can exit with status -1 which is
   not a good practice; it learned to use 1 as everybody else instead.

 * "git apply" limits its input to a bit less than 1 GiB.

 * Merging a branch with directory renames into a branch that changes
   the directory to a symlink was mishandled by the ort merge
   strategy, which has been corrected.

 * A bugfix to "git subtree" in its split and merge features.

 * Fix some bugs in the reflog messages when rebasing and changes the
   reflog messages of "rebase --apply" to match "rebase --merge" with
   the aim of making the reflog easier to parse.

 * "git rebase --keep-base" used to discard the commits that are
   already cherry-picked to the upstream, even when "keep-base" meant
   that the base, on top of which the history is being rebuilt, does
   not yet include these cherry-picked commits.  The --keep-base
   option now implies --reapply-cherry-picks and --no-fork-point
   options.

 * The way "git repack" created temporary files when it received a
   signal was prone to deadlocking, which has been corrected.

 * Various tests exercising the transfer.credentialsInUrl
   configuration are taught to avoid making requests which require
   resolving localhost to reduce CI-flakiness.

 * The adjust_shared_perm() helper function learned to refrain from
   setting the "g+s" bit on directories when it is not necessary.

 * "git archive" mistakenly complained twice about a missing
   executable, which has been corrected.

 * Fix a bug where `git branch -d` did not work on an orphaned HEAD.

 * `git rebase --update-refs` would delete references when all
   `update-ref` commands in the sequencer were removed, which has been
   corrected.

 * Fix a regression in the bisect-helper which mistakenly treats
   arguments to the command given to 'git bisect run' as arguments to
   the helper.

 * Correct an error where `git rebase` would mistakenly use a branch or
   tag named "refs/rewritten/xyz" when missing a rebase label.

 * Assorted fixes of parsing end-user input as integers.
   (merge 14770cf0de pw/config-int-parse-fixes later to maint).

 * "git prune" may try to iterate over .git/objects/pack for trash
   files to remove in it, and loudly fail when the directory is
   missing, which is not necessary.  The command has been taught to
   ignore such a failure.
   (merge 6974765352 ew/prune-with-missing-objects-pack later to maint).

 * Add one more candidate directory that may house httpd modules while
   running tests.
   (merge 1c7dc23d41 es/locate-httpd-module-location-in-test later to maint).

 * A handful of leaks in the line-log machinery have been plugged.

 * The format of a line in /proc/cpuinfo that describes a CPU on s390x
   looked different from everybody else, and the code in chainlint.pl
   failed to parse it.
   (merge 1f51b77f4f ah/chainlint-cpuinfo-parse-fix later to maint).

 * Adjust the GitHub CI to newer ubuntu release.
   (merge 0d3507f3e7 jx/ci-ubuntu-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 413bc6d20a ds/cmd-main-reorder later to maint).
   (merge 8d2863e4ed nw/t1002-cleanup later to maint).
   (merge 7c2dc122f9 rs/list-objects-filter-leakfix later to maint).
   (merge 288fcb1c94 zk/push-use-bitmaps later to maint).
   (merge 42db324c0f km/merge-recursive-typofix later to maint).

----------------------------------------------------------------

Changes since v2.38.0 are as follows:

Alejandro R. Sedeño (1):
      git-compat-util.h: GCC deprecated message arg only in GCC 4.5+

Alex Henrie (2):
      fsmonitor--daemon: don't translate literal commands
      push: improve grammar of branch.autoSetupMerge advice

Alexander Shopov (1):
      l10n: bg.po: Updated Bulgarian translation (5501t)

Andreas Hasenack (1):
      chainlint.pl: fix /proc/cpuinfo regexp

Anh Le (2):
      index: add trace2 region for clear skip worktree
      index: raise a bug if the index is materialised more than once

Arthur Chan (1):
      fuzz: reorganise the path for existing oss-fuzz fuzzers

Bagas Sanjaya (1):
      l10n: po-id for 2.39 (round 1)

Daniel Sonbolian (1):
      git.c: improve code readability in cmd_main()

Debra Obondo (1):
      t7001-mv.sh: modernizing test script using functions

Derrick Stolee (15):
      maintenance: add 'unregister --force'
      scalar: make 'unregister' idempotent
      gc: replace config subprocesses with API calls
      string-list: document iterator behavior on NULL input
      bundle-uri: fix technical doc issues
      bundle-uri: use plain string in find_temp_filename()
      bundle-uri: create bundle_list struct and helpers
      bundle-uri: create base key-value pair parsing
      bundle-uri: parse bundle list in config format
      bundle-uri: limit recursion depth for bundle lists
      bundle: properly clear all revision flags
      bundle-uri: fetch a list of bundles
      bundle: add flags to verify_bundle()
      bundle-uri: quiet failed unbundlings
      bundle-uri: suppress stderr from remote-https

Diomidis Spinellis (1):
      grep: fix multibyte regex handling under macOS

Elijah Newren (4):
      merge-ort: fix bug with dir rename vs change dir to symlink
      merge-tree: update documentation for differences in -z output
      merge-tree: support multiple batched merges with --stdin
      sparse-checkout.txt: new document with sparse-checkout directions

Emily Shaffer (2):
      gc: add tests for --cruft and friends
      config: let feature.experimental imply gc.cruftPacks=true

Emir SARI (1):
      l10n: tr: v2.39.0 updates

Eric DeCosta (6):
      fsmonitor: refactor filesystem checks to common interface
      fsmonitor: relocate socket file if .git directory is remote
      fsmonitor: avoid socket location check if using hook
      fsmonitor: deal with synthetic firmlinks on macOS
      fsmonitor: check for compatability before communicating with fsmonitor
      fsmonitor: add documentation for allowRemote and socketDir options

Eric Sunshine (9):
      check-non-portable-shell: detect obsolescent egrep/fgrep
      chainlint: add explanatory comments
      chainlint: tighten accuracy when consuming input stream
      chainlint: latch start/end position of each token
      chainlint: annotate original test definition rather than token stream
      chainlint: sidestep impoverished macOS "terminfo"
      chainlint: latch line numbers at which each token starts and ends
      chainlint: prefix annotated test definition with line numbers
      lib-httpd: extend module location auto-detection

Eric Wong (2):
      delta-islands: free island-related data after use
      prune: quiet ENOENT on missing directories

Fangyi Zhou (1):
      l10n: zh_CN v2.39.0 round 1

Glen Choo (3):
      config: respect includes in protected config
      http: redact curl h2h3 headers in info
      object-file: use real paths when adding alternates

Han-Wen Nienhuys (1):
      refs: unify parse_worktree_ref() and ref_type()

Jean-Noël Avila (2):
      i18n: fix command template placeholder format
      l10n: fr: v2.39 rnd 1

Jeff Hostetler (9):
      config.mak.dev: disable suggest braces error on old clang versions
      trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx
      tr2tls: clarify TLS terminology
      api-trace2.txt: elminate section describing the public trace2 API
      trace2: rename the thread_name argument to trace2_thread_start
      trace2: improve thread-name documentation in the thread-context
      trace2: convert ctx.thread_name from strbuf to pointer
      trace2: add stopwatch timers
      trace2: add global counter mechanism

Jeff King (43):
      fsck: free tree buffers after walking unreachable objects
      fsck: turn off save_commit_buffer
      parse_object_buffer(): respect save_commit_buffer
      clone: allow "--bare" with "-o"
      remote: handle rename of remote without fetch refspec
      shell: add basic tests
      shell: limit size of interactive commands
      sequencer: detect author name errors in read_author_script()
      test-submodule: inline resolve_relative_url() function
      multi-pack-index: avoid writing to global in option callback
      commit: avoid writing to global in option callback
      attr: drop DEBUG_ATTR code
      dir: use fspathncmp() in pl_hashmap_cmp()
      fsmonitor: fix leak of warning message
      diffstat_consume(): assert non-zero length
      submodule--helper: drop unused argc from module_list_compute()
      update-index: drop unused argc from do_reupdate()
      mark unused parameters in trivial compat functions
      object-file: mark unused parameters in hash_unknown functions
      string-list: mark unused callback parameters
      date: mark unused parameters in handler functions
      apply: mark unused parameters in handlers
      apply: mark unused parameters in noop error/warning routine
      convert: mark unused parameter in null stream filter
      diffcore-pickaxe: mark unused parameters in pickaxe functions
      ll-merge: mark unused parameters in callbacks
      Makefile: force -O0 when compiling with SANITIZE=leak
      repack: convert "names" util bitfield to array
      repack: populate extension bits incrementally
      repack: expand error message for missing pack files
      repack: use tempfiles for signal cleanup
      repack: drop remove_temporary_files()
      Git.pm: trust rev-parse to find bare repositories
      t7700: annotate cruft-pack failure with ok=sigpipe
      shortlog: accept `--date`-related options
      Makefile: force -O0 when compiling with SANITIZE=leak
      t5516: move plaintext-password tests from t5601 and t5516
      ref-filter: fix parsing of signatures without blank lines
      ref-filter: fix parsing of signatures with CRLF and no body
      branch: gracefully handle '-d' on orphan HEAD
      t: run t5551 tests with both HTTP and HTTP/2
      parse_object(): drop extra "has" check before checking object type
      parse_object(): check on-disk type of suspected blob

Jerry Zhang (6):
      patch-id: fix stable patch id for binary / header-only
      patch-id: use stable patch-id for rebases
      builtin: patch-id: fix patch-id with binary diffs
      patch-id: fix patch-id for mode changes
      builtin: patch-id: add --verbatim as a command mode
      builtin: patch-id: remove unused diff-tree prefix

Jiang Xin (5):
      t5516: fail to run in verbose mode
      github-actions: run gcc-8 on ubuntu-20.04 image
      ci: remove the pipe after "p4 -V" to catch errors
      ci: use the same version of p4 on both Linux and macOS
      ci: install python on ubuntu

Johannes Altmanninger (1):
      sequencer: avoid dropping fixup commit that targets self via commit-ish

Johannes Schindelin (14):
      merge-ort: fix segmentation fault in read-only repositories
      merge-ort: return early when failing to write a blob
      cmake: make it easier to diagnose regressions in CTest runs
      cmake: copy the merge tools for testing
      add -p: avoid ambiguous signed/unsigned comparison
      cmake: avoid editing t/test-lib.sh
      cmake: increase time-out for a long-running test
      t5516/t5601: be less strict about the number of credential warnings
      scalar reconfigure -a: remove stale `scalar.repo` entries
      ci: use a newer `github-script` version
      tests(scalar): tighten the stale `scalar.repo` test some
      ci: avoid using deprecated {up,down}load-artifacts Action
      RelNotes: a couple of typofixes
      ci: use a newer `github-script` version

John Cai (3):
      tmp-objdir: skip clean up when handling a signal
      fsck: remove the unused BAD_TAG_OBJECT
      fsck: document msg-id

Jonathan Tan (4):
      promisor-remote: remove a return value
      promisor-remote: die upon failing fetch
      negotiator/skipping: avoid stack overflow
      Doc: document push.recurseSubmodules=only

Jordi Mas (1):
      l10n: Update Catalan translation

Julia Ramer (1):
      embargoed releases: also describe the git-security list and the process

Junio C Hamano (32):
      environ: document GIT_SSL_NO_VERIFY
      environ: explain Boolean environment variables
      environ: GIT_FLUSH should be made a usual Boolean
      environ: simplify description of GIT_INDEX_FILE
      environ: GIT_INDEX_VERSION affects not just a new repository
      branch: do not fail a no-op --edit-desc
      SubmittingPatches: use usual capitalization in the log message body
      Start 2.39 cycle
      symbolic-ref: teach "--[no-]recurse" option
      The (real) first batch for 2.39
      The second batch
      The third batch
      The fourth batch
      ci: add address and undefined sanitizer tasks
      ci: use DC_SHA1=YesPlease on osx-clang job for CI
      The fifth batch
      diff: leave NEEDWORK notes in show_stats() function
      fsck: remove the unused MISSING_TREE_OBJECT
      Documentation: add lint-fsck-msgids
      Downmerge a handful of topics for 2.38.2
      The sixth batch
      Downmerge a bit more for 2.38.2
      The seventh batch
      The eighth batch
      adjust_shared_perm(): leave g+s alone when the group does not matter
      Git 2.39-rc0
      Another batch before -rc1
      A bit more before -rc1
      Git 2.39-rc1
      Git 2.39-rc2
      Git 2.38.2
      Git 2.39

Kevin Backhouse (1):
      alias.c: reject too-long cmdline strings in split_cmdline()

Kousik Sanagavarapu (1):
      repository-version.txt: partialClone casing change

Kyle Meyer (1):
      merge-recursive: fix variable typo in error message

M Hickford (4):
      Documentation/gitcredentials.txt: mention password alternatives
      Documentation: increase example cache timeout to 1 hour
      docs: clarify that credential discards unrecognised attributes
      Docs: describe how a credential-generating helper works

Martin Ågren (1):
      test-lib-functions: drop redundant diagnostic print

Matheus Tavares (1):
      mailmap: update email address of Matheus Tavares

Matthew John Cheetham (3):
      wincred: ignore unknown lines (do not die)
      netrc: ignore unknown lines (do not die)
      osxkeychain: clarify that we ignore unknown lines

Michael J Gruber (1):
      notes: avoid empty line in template

Michael McClimon (1):
      Git.pm: add semicolon after catch statement

Noah Betzen (1):
      mergetool.txt: typofix 'overwriten' -> 'overwritten'

Nsengiyumva Wilberforce (1):
      t1002: modernize outdated conditional

Oscar Dominguez (1):
      ci(main): upgrade actions/checkout to v3

Patrick Steinhardt (7):
      refs: fix memory leak when parsing hideRefs config
      refs: get rid of global list of hidden refs
      revision: move together exclusion-related functions
      revision: introduce struct to handle exclusions
      revision: add new parameter to exclude hidden refs
      rev-parse: add `--exclude-hidden=` option
      receive-pack: only use visible refs for connectivity check

Paul Smith (1):
      Makefile: avoid multiple patterns when recipes generate one file

Peter Krefting (1):
      l10n: sv.po: Update Swedish translation (5501t0f0)

Philip Oakley (4):
      doc: use "commit-graph" hyphenation consistently
      doc: use 'object database' not ODB or abbreviation
      glossary: add "commit graph" description
      glossary: add reachability bitmap description

Philippe Blain (9):
      test-lib-functions: mark 'test_commit' variables as 'local'
      subtree: use 'git rev-parse --verify [--quiet]' for better error messages
      subtree: add 'die_incompatible_opt' function to reduce duplication
      subtree: prefix die messages with 'fatal'
      subtree: define a variable before its first use in 'find_latest_squash'
      subtree: use named variables instead of "$@" in cmd_pull
      subtree: process 'git-subtree-split' trailer in separate function
      subtree: fix squash merging after annotated tag was squashed merged
      subtree: fix split after annotated tag was squashed merged

Phillip Wood (26):
      mailinfo -b: fix an out of bounds access
      ssh signing: return an error when signature cannot be read
      t3435: remove redundant test case
      t3416: tighten two tests
      t3416: set $EDITOR in subshell
      rebase: be stricter when reading state files containing oids
      rebase: store orig_head as a commit
      rebase: rename merge_base to branch_base
      rebase: factor out branch_base calculation
      rebase --keep-base: imply --reapply-cherry-picks
      rebase --keep-base: imply --no-fork-point
      rebase --apply: remove duplicated code
      t3406: rework rebase reflog tests
      rebase --merge: fix reflog when continuing
      rebase --merge: fix reflog message after skipping
      rebase --apply: respect GIT_REFLOG_ACTION
      rebase --apply: make reflog messages match rebase --merge
      rebase --abort: improve reflog message
      rebase: cleanup action handling
      sequencer: stop exporting GIT_REFLOG_ACTION
      rebase: stop exporting GIT_REFLOG_ACTION
      git_parse_unsigned: reject negative values
      config: require at least one digit when parsing numbers
      git_parse_signed(): avoid integer overflow
      sequencer: unify label lookup
      sequencer: tighten label lookups

Ralf Thielow (1):
      l10n: de.po: update German translation

René Scharfe (21):
      revision: use strtol_i() for exclude_parent
      revisions.txt: unspecify order of resolved parts of ^!
      diff: support ^! for merges
      gc: simplify maintenance_task_pack_refs()
      t/lib-httpd: pass LANG and LC_ALL to Apache
      bisect--helper: plug strvec leak
      archive: deduplicate verbose printing
      submodule: use strvec_pushf() for --super-prefix
      run-command: fix return value comment
      am: simplify building "show" argument list
      bisect: simplify building "checkout" argument list
      bisect--helper: factor out do_bisect_run()
      sequencer: simplify building argument list in do_exec()
      use child_process member "args" instead of string array variable
      use child_process members "args" and "env" directly
      replace and remove run_command_v_opt_cd_env()
      replace and remove run_command_v_opt_tr2()
      replace and remove run_command_v_opt_cd_env_tr2()
      replace and remove run_command_v_opt()
      archive-tar: report filter start error only once
      list-objects-filter: plug combine_filter_data leak

Ronan Pigott (2):
      for-each-repo: interpolate repo path arguments
      maintenance: add option to register in a specific config

Rubén Justo (5):
      ref-filter.c: fix a leak in get_head_description
      branch: description for non-existent branch errors
      branch: support for shortcuts like @{-1}, completed
      branch: error copying or renaming a detached HEAD
      branch: error code with --edit-description

SZEDER Gábor (4):
      Documentation/build-docdep.perl: generate sorted output
      line-log: free diff queue when processing non-merge commits
      line-log: free the diff queues' arrays when processing merge commits
      diff.c: use diff_free_queue()

Sergey Organov (3):
      diff-merges: cleanup func_by_opt()
      diff-merges: cleanup set_diff_merges()
      diff-merges: clarify log.diffMerges documentation

Shaoxuan Yuan (1):
      builtin/grep.c: integrate with sparse index

Sotir Danailov (1):
      docs: git-send-email: difference between ssl and tls smtp-encryption

Taylor Blau (64):
      Documentation/git-multi-pack-index.txt: fix typo
      Documentation/git-multi-pack-index.txt: clarify expire behavior
      midx.c: prevent `expire` from removing the cruft pack
      midx.c: avoid cruft packs with `repack --batch-size=0`
      midx.c: replace `xcalloc()` with `CALLOC_ARRAY()`
      midx.c: remove unnecessary loop condition
      midx.c: avoid cruft packs with non-zero `repack --batch-size`
      builtin/clone.c: disallow `--local` clones with symlinks
      t/lib-submodule-update.sh: allow local submodules
      t/t1NNN: allow local submodules
      t/2NNNN: allow local submodules
      t/t3NNN: allow local submodules
      t/t4NNN: allow local submodules
      t/t5NNN: allow local submodules
      t/t6NNN: allow local submodules
      t/t7NNN: allow local submodules
      t/t9NNN: allow local submodules
      transport: make `protocol.file.allow` be "user" by default
      t1092: prepare for changing protocol.file.allow
      t2080: prepare for changing protocol.file.allow
      t1092: prepare for changing protocol.file.allow
      t2080: prepare for changing protocol.file.allow
      t3207: prepare for changing protocol.file.allow
      t5516: prepare for changing protocol.file.allow
      t5537: prepare for changing protocol.file.allow
      t7814: prepare for changing protocol.file.allow
      t3206: prepare for changing protocol.file.allow
      t5537: prepare for changing protocol.file.allow
      Git 2.30.6
      Git 2.31.5
      Git 2.32.4
      Git 2.33.5
      Git 2.34.5
      Git 2.35.5
      Git 2.36.3
      t7527: prepare for changing protocol.file.allow
      Git 2.37.4
      Git 2.38.1
      midx.c: fix whitespace typo
      midx.c: consider annotated tags during bitmap selection
      midx.c: instrument MIDX and bitmap generation with trace2 regions
      pack-bitmap-write.c: instrument number of reused bitmaps
      builtin/repack.c: remove redundant pack-based bitmaps
      repack: don't remove .keep packs with `--pack-kept-objects`
      builtin/repack.c: pass "out" to `prepare_pack_objects`
      builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`
      builtin/repack.c: write cruft packs to arbitrary locations
      builtin/repack.c: implement `--expire-to` for storing pruned objects
      shortlog: make trailer insertion a noop when appropriate
      shortlog: extract `--group` fragment for translation
      shortlog: support arbitrary commit format `--group`s
      shortlog: extract `shortlog_finish_setup()`
      shortlog: implement `--group=author` in terms of `--group=<format>`
      shortlog: implement `--group=committer` in terms of `--group=<format>`
      apply: reject patches larger than ~1 GiB
      Documentation/howto/maintain-git.txt: fix Meta/redo-jch.sh invocation
      The ninth batch
      Documentation: build redo-jch.sh from master..jch
      Documentation: build redo-seen.sh from jch..seen
      The tenth batch
      The eleventh batch
      The twelfth batch
      builtin/gc.c: fix use-after-free in maintenance_unregister()
      The thirteenth batch

Torsten Bögershausen (1):
      diff.c: use utf8_strwidth() to count display width

Victoria Dye (8):
      read-cache: avoid misaligned reads in index v4
      rebase --update-refs: avoid unintended ref deletion
      cache-tree: add perf test comparing update and prime
      unpack-trees: add 'skip_cache_tree_update' option
      reset: use 'skip_cache_tree_update' option
      read-tree: use 'skip_cache_tree_update' option
      rebase: use 'skip_cache_tree_update' option
      rebase --update-refs: avoid unintended ref deletion

Vincent Bernat (1):
      ls-files: fix --ignored and --killed flags in synopsis

Vlad-Stefan Harbuz (1):
      Documentation: fix typo

Yi-Jyun Pan (1):
      l10n: zh_TW.po: Git 2.39-rc2

srz_zumix (1):
      fsmonitor--daemon: on macOS support symlink

Ævar Arnfjörð Bjarmason (118):
      test-lib: have SANITIZE=leak imply TEST_NO_MALLOC_CHECK
      CodingGuidelines: update for C99
      CodingGuidelines: mention dynamic C99 initializer elements
      CodingGuidelines: allow declaring variables in for loops
      CodingGuidelines: mention C99 features we can't use
      grep.c: remove "extended" in favor of "pattern_expression", fix segfault
      CodingGuidelines: recommend against unportable C99 struct syntax
      bundle-uri: create "key=value" line parsing
      bundle-uri: unit test "key=value" parsing
      run-command test helper: use "else if" pattern
      run-command API: have "run_processes_parallel{,_tr2}()" return void
      run-command tests: use "return", not "exit"
      run-command API: make "n" parameter a "size_t"
      run-command API: don't fall back on online_cpus()
      run-command.c: use designated init for pp_init(), add "const"
      run-command API: have run_process_parallel() take an "opts" struct
      run-command API: move *_tr2() users to "run_processes_parallel()"
      run-command.c: make "struct parallel_processes" const if possible
      run-command.c: don't copy *_fn to "struct parallel_processes"
      run-command.c: don't copy "ungroup" to "struct parallel_processes"
      run-command.c: don't copy "data" to "struct parallel_processes"
      run-command.c: use "opts->processes", not "pp->max_processes"
      run-command.c: pass "opts" further down, and use "opts->processes"
      run-command.c: remove "max_processes", add "const" to signal() handler
      tests: assert *.txt SYNOPSIS and -h output
      CodingGuidelines: update and clarify command-line conventions
      builtin/bundle.c: indent with tabs
      bundle: define subcommand -h in terms of command -h
      doc SYNOPSIS: don't use ' for subcommands
      doc SYNOPSIS: consistently use ' for commands
      built-ins: consistently add "\n" between "usage" and options
      doc txt & -h consistency: word-wrap
      doc txt & -h consistency: fix incorrect alternates syntax
      doc txt & -h consistency: add "-z" to cat-file "-h"
      doc txt & -h consistency: balance unbalanced "[" and "]"
      doc txt & -h consistency: correct padding around "[]()"
      stash doc SYNOPSIS & -h: correct padding around "[]()"
      doc txt & -h consistency: use "<options>", not "<options>..."
      doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
      doc txt & -h consistency: fix mismatching labels
      doc txt & -h consistency: add or fix optional "--" syntax
      doc txt & -h consistency: make output order consistent
      doc txt & -h consistency: add missing options and labels
      doc txt & -h consistency: make "rerere" consistent
      doc txt & -h consistency: make "read-tree" consistent
      doc txt & -h consistency: make "bundle" consistent
      doc txt & -h consistency: use "git foo" form, not "git-foo"
      doc txt & -h consistency: add missing options
      doc txt & -h consistency: make "stash" consistent
      doc txt & -h consistency: make "annotate" consistent
      doc txt & -h consistency: use "[<label>...]" for "zero or more"
      doc txt & -h consistency: make "diff-tree" consistent
      doc txt & -h consistency: make "commit" consistent
      reflog doc: list real subcommands up-front
      worktree: define subcommand -h in terms of command -h
      doc txt & -h consistency: make "worktree" consistent
      tests: start asserting that *.txt SYNOPSIS matches -h output
      tests: assert consistent whitespace in -h output
      fsmonitor OSX: compile with DC_SHA1=YesPlease
      merge: remove always-the-same "verbose" arguments
      hook tests: fix redirection logic error in 96e7225b310
      submodule tests: reset "trace.out" between "grep" invocations
      run-command tests: test stdout of run_command_parallel()
      Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)
      cocci rules: remove unused "F" metavariable from pending rule
      Makefile: add ability to TAB-complete cocci *.patch rules
      Makefile: have "coccicheck" re-run if flags change
      Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
      cocci: split off include-less "tests" from SPATCH_FLAGS
      cocci: split off "--all-includes" from SPATCH_FLAGS
      cocci: make "coccicheck" rule incremental
      cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
      Makefile: copy contrib/coccinelle/*.cocci to build/
      cocci rules: remove <id>'s from rules that don't need them
      cocci: run against a generated ALL.cocci
      spatchcache: add a ccache-alike for "spatch"
      Makefile: always (re)set DC_SHA1 on fallback
      INSTALL: remove discussion of SHA-1 backends
      Makefile: correct DC_SHA1 documentation
      Makefile: create and use sections for "define" flag listing
      Makefile: rephrase the discussion of *_SHA1 knobs
      Makefile: document default SHA-256 backend
      Makefile: document SHA-1 and SHA-256 default and selection order
      Makefile & test-tool: replace "DC_SHA1" variable with a "define"
      Makefile: document default SHA-1 backend on OSX
      Makefile: discuss SHAttered in *_SHA{1,256} discussion
      submodule--helper: move "config" to a test-tool
      submodule tests: add tests for top-level flag output
      submodule--helper: fix a memory leak in "status"
      submodule tests: test for a "foreach" blind-spot
      submodule.c: refactor recursive block out of absorb function
      submodule API & "absorbgitdirs": remove "----recursive" option
      submodule--helper: remove --prefix from "absorbgitdirs"
      submodule--helper: drop "update --prefix <pfx>" for "-C <pfx> update"
      submodule--helper: use OPT_SUBCOMMAND() API
      revisions API: extend the nascent REV_INFO_INIT macro
      t7610: fix flaky timeout issue, don't clone from example.com
      Makefile: don't create a ".build/.build/" for cocci, fix output
      maintenance --unregister: fix uninit'd data use & -Wdeclaration-after-statement
      t7610: use "file:///dev/null", not "/dev/null", fixes MinGW
      cache.h: remove unused "the_index" compat macros
      builtin/{grep,log}.: don't define "USE_THE_INDEX_COMPATIBILITY_MACROS"
      cocci & cache.h: remove rarely used "the_index" compat macros
      read-cache API & users: make discard_index() return void
      cocci: add a index-compatibility.pending.cocci
      cocci & cache.h: apply a selection of "pending" index-compatibility
      cocci & cache.h: apply variable section of "pending" index-compatibility
      cocci: apply "pending" index-compatibility to "t/helper/*.c"
      {builtin/*,repository}.c: add & use "USE_THE_INDEX_VARIABLE"
      cache.h & test-tool.h: add & use "USE_THE_INDEX_VARIABLE"
      cocci: apply "pending" index-compatibility to some "builtin/*.c"
      parse_object(): simplify blob conditional
      trace2 tests: guard pthread test with "PTHREAD"
      Makefiles: change search through $(MAKEFLAGS) for GNU make 4.4
      cocci: avoid "should ... be a metavariable" warnings
      CI: upgrade to macos-12, and pin OSX version
      CI: don't explicitly pick "bash" shell outside of Windows, fix regression
      CI: migrate away from deprecated "set-output" syntax

Đoàn Trần Công Danh (8):
      CodingGuidelines: allow grep -E
      t: remove \{m,n\} from BRE grep usage
      t: convert egrep usage to "grep -E"
      t: convert fgrep usage to "grep -F"
      Makefile: clarify runtime relative gitexecdir
      bisect--helper: remove unused options
      bisect--helper: move all subcommands into their own functions
      bisect--helper: parse subcommand with OPT_SUBCOMMAND


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.39.0-rc2
@ 2022-12-06  4:00  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-12-06  4:00 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.39.0-rc2 is now available for testing at
the usual places.  It is comprised of 463 non-merge commits since
v2.38.0, contributed by 74 people, 30 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.39.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.38.0 are as follows.
Welcome to the Git development community!

  Alexander Kanavin, Alexander Meshcheryakov, Andreas Hasenack,
  Anh Le, Arthur Chan, Daniel Sonbolian, Debra Obondo, Diomidis
  Spinellis, Erik Cervin Edin, Hank Leininger, herr.kaste, John
  A. Leuenhagen, Julia Ramer, Kevin Backhouse, Kousik Sanagavarapu,
  Lukáš Doktor, Martin Englund, M Hickford, Michael V. Scovetta,
  Noah Betzen, Nsengiyumva Wilberforce, orygaw, Ronan Pigott,
  Rubén Justo, Sotir Danailov, srz_zumix, Stefano Rivera, Tim
  Jaacks, Vincent Bernat, and Vlad-Stefan Harbuz.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alejandro R. Sedeño, Alex Henrie, Derrick
  Stolee, Đoàn Trần Công Danh, Elijah Newren, Emily Shaffer, Eric
  DeCosta, Eric Sunshine, Eric Wong, Glen Choo, Han-Wen Nienhuys,
  Jan Pokorný, Jean-Noël Avila, Jeff Hostetler, Jeff King, Jerry
  Zhang, Jiang Xin, Johannes Altmanninger, Johannes Schindelin, John
  Cai, Jonathan Tan, Julien Moutinho, Junio C Hamano, Kyle Meyer,
  Martin Ågren, Martin von Zweigbergk, Matthew John Cheetham,
  Michael J Gruber, Michael McClimon, Patrick Steinhardt, Paul
  Smith, Philip Oakley, Philippe Blain, Phillip Wood, Randall
  S. Becker, René Scharfe, Sergey Organov, Shaoxuan Yuan, SZEDER
  Gábor, Taylor Blau, Torsten Bögershausen, 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.39 Release Notes (draft)
===============================

UI, Workflows & Features
------------------------

 * "git grep" learned to expand the sparse-index more lazily and on
   demand in a sparse checkout.

 * By default, use of fsmonitor on a repository on networked
   filesystem is disabled. Add knobs to make it workable on macOS.

 * After checking out a "branch" that is a symbolic-ref that points at
   another branch, "git symbolic-ref HEAD" reports the underlying
   branch, not the symbolic-ref the user gave checkout as argument.
   The command learned the "--no-recurse" option to stop after
   dereferencing a symbolic-ref only once.

 * "git branch --edit-description @{-1}" is now a way to edit branch
   description of the branch you were on before switching to the
   current branch.

 * "git merge-tree --stdin" is a new way to request a series of merges
   and report the merge results.

 * "git shortlog" learned to group by the "format" string.

 * A new "--include-whitespace" option is added to "git patch-id", and
   existing bugs in the internal patch-id logic that did not match
   what "git patch-id" produces have been corrected.

 * Enable gc.cruftpacks by default for those who opt into
   feature.experimental setting.

 * "git repack" learns to send cruft objects out of the way into
   packfiles outside the repository.

 * 'scalar reconfigure -a' is taught to automatically remove
   scalar.repo entires which no longer exist.

 * Redact headers from cURL's h2h3 module in GIT_CURL_VERBOSE and
   others.

 * 'git maintenance register' is taught to write configuration to an
   arbitrary path, and 'git for-each-repo' is taught to expand tilde
   characters in paths.

 * When creating new notes, the template used to get a stray empty
   newline, which has been removed.

 * "git receive-pack" used to use all the local refs as the boundary for
   checking connectivity of the data "git push" sent, but now it uses
   only the refs that it advertised to the pusher. In a repository with
   the .hideRefs configuration, this reduces the resources needed to
   perform the check.

 * With '--recurse-submodules=on-demand', all submodules are
   recursively pushed.


Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------

 * With a bit of header twiddling, use the native regexp library on
   macOS instead of the compat/ one.

 * Prepare for GNU [ef]grep that throw warning of their uses.

 * Sources related to fuzz testing have been moved down to their own
   directory.

 * Most credential helpers ignored unknown entries in a credential
   description, but a few died upon seeing them.  The latter were
   taught to ignore them, too

 * "scalar unregister" in a repository that is already been
   unregistered reported an error.

 * Remove error detection from a function that fetches from promisor
   remotes, and make it die when such a fetch fails to bring all the
   requested objects, to give an early failure to various operations.

 * Update CodingGuidelines to clarify what features to use and avoid
   in C99.

 * Avoid false-positive from LSan whose assumption may be broken with
   higher optimization levels.

 * Enable address and undefined sanitizer tasks at GitHub Actions CI.

 * More UNUSED annotation to help using -Wunused option with the
   compiler.
   (merge 4b992f0a24 jk/unused-anno-more later to maint).

 * Rewrite a deep recursion in the skipping negotiator to use a loop
   with on-heap prio queue to avoid stack wastage.

 * Add documentation for message IDs in fsck error messages.

 * Define the logical elements of a "bundle list", data structure to
   store them in-core, format to transfer them, and code to parse
   them.

 * The role the security mailing list plays in an embargoed release
   has been documented.

 * Two new facilities, "timer" and "counter", are introduced to the
   trace2 API.

 * Code simplification by using strvec_pushf() instead of building an
   argument in a separate strbuf.

 * Make sure generated dependency file is stably sorted to help
   developers debugging their build issues.

 * The glossary entries for "commit-graph file" and "reachability
   bitmap" have been added.

 * Various tests exercising the transfer.credentialsInUrl
   configuration are taught to avoid making requests which require
   resolving localhost to reduce CI-flakiness.

 * A redundant diagnostic message is dropped from test_path_is_missing().

 * Simplify the run-command API.

 * Update the actions/github-script dependency in CI to avoid a
   deprecation warning.

 * Progress on being able to initialize a rev_info struct with a
   macro.

 * Add trace2 counters to the region to clear skip worktree bits in a
   sparse checkout.

 * Modernize test script to avoid "test -f" and friends.

 * Avoid calling 'cache_tree_update()' when doing so would be
   redundant.

 * Update the credential-cache documentation to provide a more
   realistic example.

 * Makefile comments updates and reordering to clarify knobs used to
   choose SHA implementations.

 * A design document for sparse-checkout's future directions has been
   added.

 * Teach chainlint.pl to annotate the original test definition instead
   of the token stream.

 * "make coccicheck" is time consuming. It has been made to run more
   incrementally.

 * `parse_object()` has been hardened to check for the existence of a
   suspected blob object.

 * The build procedure has been adjusted to GNUmake version 4.4, which
   made some changes to how pattern rule with multiple targets are
   handled.


Fixes since v2.38
-----------------

 * The codepath that reads from the index v4 had unaligned memory
   accesses, which has been corrected.

 * Fix messages incorrectly marked for translation.

 * "git fsck" failed to release contents of tree objects already used
   from the memory, which has been fixed.

 * "git clone" did not like to see the "--bare" and the "--origin"
   options used together without a good reason.

 * "git remote rename" failed to rename a remote without fetch
   refspec, which has been corrected.

 * Documentation on various Boolean GIT_* environment variables have
   been clarified.

 * "git rebase -i" can mistakenly attempt to apply a fixup to a commit
   itself, which has been corrected.

 * "git multi-pack-index repack/expire" used to repack unreachable
   cruft into a new pack, which have been corrected.

 * In read-only repositories, "git merge-tree" tried to come up with a
   merge result tree object, which it failed (which is not wrong) and
   led to a segfault (which is bad), which has been corrected.

 * Force C locale while running tests around httpd to make sure we can
   find expected error messages in the log.

 * Fix a logic in "mailinfo -b" that miscomputed the length of a
   substring, which lead to an out-of-bounds access.

 * The codepath to sign learned to report errors when it fails to read
   from "ssh-keygen".

 * Code clean-up that results in plugging a leak.

 * "GIT_EDITOR=: git branch --edit-description" resulted in failure,
   which has been corrected.

 * The code to clean temporary object directories (used for
   quarantine) tried to remove them inside its signal handler, which
   was a no-no.

 * Update comment in the Makefile about the RUNTIME_PREFIX config knob.

 * Clarify that "the sentence after <area>: prefix does not begin with
   a capital letter" rule applies only to the commit title.

 * "git branch --edit-description" on an unborh branch misleadingly
   said that no such branch exists, which has been corrected.

 * Work around older clang that warns against C99 zero initialization
   syntax for struct.

 * Giving "--invert-grep" and "--all-match" without "--grep" to the
   "git log" command resulted in an attempt to access grep pattern
   expression structure that has not been allocated, which has been
   corrected.
   (merge db84376f98 ab/grep-simplify-extended-expression later to maint).

 * "git diff rev^!" did not show combined diff to go to the rev from
   its parents.
   (merge a79c6b6081 rs/diff-caret-bang-with-parents later to maint).

 * Allow configuration files in "protected" scopes to include other
   configuration files.
   (merge ecec57b3c9 gc/bare-repo-discovery later to maint).

 * Give a bit more diversity to macOS CI by using sha1dc in one of the
   jobs (the other one tests Apple Common Crypto).
   (merge 1ad5c3df35 jc/ci-osx-with-sha1dc later to maint).

 * A bugfix with tracing support in midx codepath
   (merge e9c3839944 tb/midx-bitmap-selection-fix later to maint).

 * When geometric repacking feature is in use together with the
   --pack-kept-objects option, we lost packs marked with .keep files.
   (merge 197443e80a tb/save-keep-pack-during-geometric-repack later to maint).

 * Move a global variable added as a hack during regression fixes to
   its proper place in the API.
   (merge 0b0ab95f17 ab/run-hook-api-cleanup later to maint).

 * Update to build procedure with VS using CMake/CTest.
   (merge c858750b41 js/cmake-updates later to maint).

 * The short-help text shown by "git cmd -h" and the synopsis text
   shown at the beginning of "git help cmd" have been made more
   consistent.

 * When creating a multi-pack bitmap, remove per-pack bitmap files
   unconditionally as they will never be consulted.
   (merge 55d902cd61 tb/remove-unused-pack-bitmap later to maint).

 * Fix a longstanding syntax error in Git.pm error codepath.

 * "git diff --stat" etc. were invented back when everything was ASCII
   and strlen() was a way to measure the display width of a string;
   adjust them to compute the display width assuming UTF-8 pathnames.
   (merge ce8529b2bb tb/diffstat-with-utf8-strwidth later to maint).

 * "git branch --edit-description" can exit with status -1 which is
   not a good practice; it learned to use 1 as everybody else instead.

 * "git apply" limits its input to a bit less than 1 GiB.

 * Merging a branch with directory renames into a branch that changes
   the directory to a symlink was mishandled by the ort merge
   strategy, which has been corrected.

 * A bugfix to "git subtree" in its split and merge features.

 * Fix some bugs in the reflog messages when rebasing and changes the
   reflog messages of "rebase --apply" to match "rebase --merge" with
   the aim of making the reflog easier to parse.

 * "git rebase --keep-base" used to discard the commits that are
   already cherry-picked to the upstream, even when "keep-base" meant
   that the base, on top of which the history is being rebuilt, does
   not yet include these cherry-picked commits.  The --keep-base
   option now implies --reapply-cherry-picks and --no-fork-point
   options.

 * The way "git repack" creared temporary files when it received a
   signal was prone to deadlocking, which has been corrected.

 * Various tests exercising the transfer.credentialsInUrl
   configuration are taught to avoid making requests which require
   resolving localhost to reduce CI-flakiness.

 * The adjust_shared_perm() helper function learned to refrain from
   setting the "g+s" bit on directories when it is not necessary.

 * "git archive" mistakenly complained twice about a missing
   executable, which has been corrected.

 * Fix a bug where `git branch -d` did not work on an orphaned HEAD.

 * `git rebase --update-refs` would delete references when all
   `update-ref` commands in the sequencer were removed, which has been
   corrected.

 * Fix a regression in the bisect-helper which mistakenly treats
   arguments to the command given to 'git bisect run' as arguments to
   the helper.

 * Correct an error where `git rebase` would mistakenly use a branch or
   tag named "refs/rewritten/xyz" when missing a rebase label.

 * Assorted fixes of parsing end-user input as integers.
   (merge 14770cf0de pw/config-int-parse-fixes later to maint).

 * "git prune" may try to iterate over .git/objects/pack for trash
   files to remove in it, and loudly fail when the directory is
   missing, which is not necessary.  The command has been taught to
   ignore such a failure.
   (merge 6974765352 ew/prune-with-missing-objects-pack later to maint).

 * Add one more candidate directory that may house httpd modules while
   running tests.
   (merge 1c7dc23d41 es/locate-httpd-module-location-in-test later to maint).

 * A handful of leaks in the line-log machinery have been plugged.

 * The format of a line in /proc/cpuinfo that describes a CPU on s390x
   looked different from everybody else, and the code in chainlint.pl
   failed to parse it.
   (merge 1f51b77f4f ah/chainlint-cpuinfo-parse-fix later to maint).

 * Adjust the GitHub CI to newer ubuntu release.
   (merge 0d3507f3e7 jx/ci-ubuntu-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 413bc6d20a ds/cmd-main-reorder later to maint).
   (merge 8d2863e4ed nw/t1002-cleanup later to maint).
   (merge 7c2dc122f9 rs/list-objects-filter-leakfix later to maint).
   (merge 288fcb1c94 zk/push-use-bitmaps later to maint).
   (merge 42db324c0f km/merge-recursive-typofix later to maint).

----------------------------------------------------------------

Changes since v2.38.0 are as follows:

Alejandro R. Sedeño (1):
      git-compat-util.h: GCC deprecated message arg only in GCC 4.5+

Alex Henrie (2):
      fsmonitor--daemon: don't translate literal commands
      push: improve grammar of branch.autoSetupMerge advice

Andreas Hasenack (1):
      chainlint.pl: fix /proc/cpuinfo regexp

Anh Le (2):
      index: add trace2 region for clear skip worktree
      index: raise a bug if the index is materialised more than once

Arthur Chan (1):
      fuzz: reorganise the path for existing oss-fuzz fuzzers

Daniel Sonbolian (1):
      git.c: improve code readability in cmd_main()

Debra Obondo (1):
      t7001-mv.sh: modernizing test script using functions

Derrick Stolee (15):
      maintenance: add 'unregister --force'
      scalar: make 'unregister' idempotent
      gc: replace config subprocesses with API calls
      string-list: document iterator behavior on NULL input
      bundle-uri: fix technical doc issues
      bundle-uri: use plain string in find_temp_filename()
      bundle-uri: create bundle_list struct and helpers
      bundle-uri: create base key-value pair parsing
      bundle-uri: parse bundle list in config format
      bundle-uri: limit recursion depth for bundle lists
      bundle: properly clear all revision flags
      bundle-uri: fetch a list of bundles
      bundle: add flags to verify_bundle()
      bundle-uri: quiet failed unbundlings
      bundle-uri: suppress stderr from remote-https

Diomidis Spinellis (1):
      grep: fix multibyte regex handling under macOS

Elijah Newren (4):
      merge-ort: fix bug with dir rename vs change dir to symlink
      merge-tree: update documentation for differences in -z output
      merge-tree: support multiple batched merges with --stdin
      sparse-checkout.txt: new document with sparse-checkout directions

Emily Shaffer (2):
      gc: add tests for --cruft and friends
      config: let feature.experimental imply gc.cruftPacks=true

Eric DeCosta (6):
      fsmonitor: refactor filesystem checks to common interface
      fsmonitor: relocate socket file if .git directory is remote
      fsmonitor: avoid socket location check if using hook
      fsmonitor: deal with synthetic firmlinks on macOS
      fsmonitor: check for compatability before communicating with fsmonitor
      fsmonitor: add documentation for allowRemote and socketDir options

Eric Sunshine (9):
      check-non-portable-shell: detect obsolescent egrep/fgrep
      chainlint: add explanatory comments
      chainlint: tighten accuracy when consuming input stream
      chainlint: latch start/end position of each token
      chainlint: annotate original test definition rather than token stream
      chainlint: sidestep impoverished macOS "terminfo"
      chainlint: latch line numbers at which each token starts and ends
      chainlint: prefix annotated test definition with line numbers
      lib-httpd: extend module location auto-detection

Eric Wong (2):
      delta-islands: free island-related data after use
      prune: quiet ENOENT on missing directories

Glen Choo (3):
      config: respect includes in protected config
      http: redact curl h2h3 headers in info
      object-file: use real paths when adding alternates

Han-Wen Nienhuys (1):
      refs: unify parse_worktree_ref() and ref_type()

Jean-Noël Avila (1):
      i18n: fix command template placeholder format

Jeff Hostetler (9):
      config.mak.dev: disable suggest braces error on old clang versions
      trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx
      tr2tls: clarify TLS terminology
      api-trace2.txt: elminate section describing the public trace2 API
      trace2: rename the thread_name argument to trace2_thread_start
      trace2: improve thread-name documentation in the thread-context
      trace2: convert ctx.thread_name from strbuf to pointer
      trace2: add stopwatch timers
      trace2: add global counter mechanism

Jeff King (43):
      fsck: free tree buffers after walking unreachable objects
      fsck: turn off save_commit_buffer
      parse_object_buffer(): respect save_commit_buffer
      clone: allow "--bare" with "-o"
      remote: handle rename of remote without fetch refspec
      shell: add basic tests
      shell: limit size of interactive commands
      sequencer: detect author name errors in read_author_script()
      test-submodule: inline resolve_relative_url() function
      multi-pack-index: avoid writing to global in option callback
      commit: avoid writing to global in option callback
      attr: drop DEBUG_ATTR code
      dir: use fspathncmp() in pl_hashmap_cmp()
      fsmonitor: fix leak of warning message
      diffstat_consume(): assert non-zero length
      submodule--helper: drop unused argc from module_list_compute()
      update-index: drop unused argc from do_reupdate()
      mark unused parameters in trivial compat functions
      object-file: mark unused parameters in hash_unknown functions
      string-list: mark unused callback parameters
      date: mark unused parameters in handler functions
      apply: mark unused parameters in handlers
      apply: mark unused parameters in noop error/warning routine
      convert: mark unused parameter in null stream filter
      diffcore-pickaxe: mark unused parameters in pickaxe functions
      ll-merge: mark unused parameters in callbacks
      Makefile: force -O0 when compiling with SANITIZE=leak
      repack: convert "names" util bitfield to array
      repack: populate extension bits incrementally
      repack: expand error message for missing pack files
      repack: use tempfiles for signal cleanup
      repack: drop remove_temporary_files()
      Git.pm: trust rev-parse to find bare repositories
      t7700: annotate cruft-pack failure with ok=sigpipe
      shortlog: accept `--date`-related options
      Makefile: force -O0 when compiling with SANITIZE=leak
      t5516: move plaintext-password tests from t5601 and t5516
      ref-filter: fix parsing of signatures without blank lines
      ref-filter: fix parsing of signatures with CRLF and no body
      branch: gracefully handle '-d' on orphan HEAD
      t: run t5551 tests with both HTTP and HTTP/2
      parse_object(): drop extra "has" check before checking object type
      parse_object(): check on-disk type of suspected blob

Jerry Zhang (6):
      patch-id: fix stable patch id for binary / header-only
      patch-id: use stable patch-id for rebases
      builtin: patch-id: fix patch-id with binary diffs
      patch-id: fix patch-id for mode changes
      builtin: patch-id: add --verbatim as a command mode
      builtin: patch-id: remove unused diff-tree prefix

Jiang Xin (5):
      t5516: fail to run in verbose mode
      github-actions: run gcc-8 on ubuntu-20.04 image
      ci: remove the pipe after "p4 -V" to catch errors
      ci: use the same version of p4 on both Linux and macOS
      ci: install python on ubuntu

Johannes Altmanninger (1):
      sequencer: avoid dropping fixup commit that targets self via commit-ish

Johannes Schindelin (11):
      merge-ort: fix segmentation fault in read-only repositories
      merge-ort: return early when failing to write a blob
      cmake: make it easier to diagnose regressions in CTest runs
      cmake: copy the merge tools for testing
      add -p: avoid ambiguous signed/unsigned comparison
      cmake: avoid editing t/test-lib.sh
      cmake: increase time-out for a long-running test
      t5516/t5601: be less strict about the number of credential warnings
      scalar reconfigure -a: remove stale `scalar.repo` entries
      ci: use a newer `github-script` version
      tests(scalar): tighten the stale `scalar.repo` test some

John Cai (3):
      tmp-objdir: skip clean up when handling a signal
      fsck: remove the unused BAD_TAG_OBJECT
      fsck: document msg-id

Jonathan Tan (4):
      promisor-remote: remove a return value
      promisor-remote: die upon failing fetch
      negotiator/skipping: avoid stack overflow
      Doc: document push.recurseSubmodules=only

Julia Ramer (1):
      embargoed releases: also describe the git-security list and the process

Junio C Hamano (30):
      environ: document GIT_SSL_NO_VERIFY
      environ: explain Boolean environment variables
      environ: GIT_FLUSH should be made a usual Boolean
      environ: simplify description of GIT_INDEX_FILE
      environ: GIT_INDEX_VERSION affects not just a new repository
      branch: do not fail a no-op --edit-desc
      SubmittingPatches: use usual capitalization in the log message body
      Start 2.39 cycle
      symbolic-ref: teach "--[no-]recurse" option
      The (real) first batch for 2.39
      The second batch
      The third batch
      The fourth batch
      ci: add address and undefined sanitizer tasks
      ci: use DC_SHA1=YesPlease on osx-clang job for CI
      The fifth batch
      diff: leave NEEDWORK notes in show_stats() function
      fsck: remove the unused MISSING_TREE_OBJECT
      Documentation: add lint-fsck-msgids
      Downmerge a handful of topics for 2.38.2
      The sixth batch
      Downmerge a bit more for 2.38.2
      The seventh batch
      The eighth batch
      adjust_shared_perm(): leave g+s alone when the group does not matter
      Git 2.39-rc0
      Another batch before -rc1
      A bit more before -rc1
      Git 2.39-rc1
      Git 2.39-rc2

Kevin Backhouse (1):
      alias.c: reject too-long cmdline strings in split_cmdline()

Kousik Sanagavarapu (1):
      repository-version.txt: partialClone casing change

Kyle Meyer (1):
      merge-recursive: fix variable typo in error message

M Hickford (4):
      Documentation/gitcredentials.txt: mention password alternatives
      Documentation: increase example cache timeout to 1 hour
      docs: clarify that credential discards unrecognised attributes
      Docs: describe how a credential-generating helper works

Martin Ågren (1):
      test-lib-functions: drop redundant diagnostic print

Matthew John Cheetham (3):
      wincred: ignore unknown lines (do not die)
      netrc: ignore unknown lines (do not die)
      osxkeychain: clarify that we ignore unknown lines

Michael J Gruber (1):
      notes: avoid empty line in template

Michael McClimon (1):
      Git.pm: add semicolon after catch statement

Noah Betzen (1):
      mergetool.txt: typofix 'overwriten' -> 'overwritten'

Nsengiyumva Wilberforce (1):
      t1002: modernize outdated conditional

Patrick Steinhardt (7):
      refs: fix memory leak when parsing hideRefs config
      refs: get rid of global list of hidden refs
      revision: move together exclusion-related functions
      revision: introduce struct to handle exclusions
      revision: add new parameter to exclude hidden refs
      rev-parse: add `--exclude-hidden=` option
      receive-pack: only use visible refs for connectivity check

Paul Smith (1):
      Makefile: avoid multiple patterns when recipes generate one file

Philip Oakley (4):
      doc: use "commit-graph" hyphenation consistently
      doc: use 'object database' not ODB or abbreviation
      glossary: add "commit graph" description
      glossary: add reachability bitmap description

Philippe Blain (9):
      test-lib-functions: mark 'test_commit' variables as 'local'
      subtree: use 'git rev-parse --verify [--quiet]' for better error messages
      subtree: add 'die_incompatible_opt' function to reduce duplication
      subtree: prefix die messages with 'fatal'
      subtree: define a variable before its first use in 'find_latest_squash'
      subtree: use named variables instead of "$@" in cmd_pull
      subtree: process 'git-subtree-split' trailer in separate function
      subtree: fix squash merging after annotated tag was squashed merged
      subtree: fix split after annotated tag was squashed merged

Phillip Wood (26):
      mailinfo -b: fix an out of bounds access
      ssh signing: return an error when signature cannot be read
      t3435: remove redundant test case
      t3416: tighten two tests
      t3416: set $EDITOR in subshell
      rebase: be stricter when reading state files containing oids
      rebase: store orig_head as a commit
      rebase: rename merge_base to branch_base
      rebase: factor out branch_base calculation
      rebase --keep-base: imply --reapply-cherry-picks
      rebase --keep-base: imply --no-fork-point
      rebase --apply: remove duplicated code
      t3406: rework rebase reflog tests
      rebase --merge: fix reflog when continuing
      rebase --merge: fix reflog message after skipping
      rebase --apply: respect GIT_REFLOG_ACTION
      rebase --apply: make reflog messages match rebase --merge
      rebase --abort: improve reflog message
      rebase: cleanup action handling
      sequencer: stop exporting GIT_REFLOG_ACTION
      rebase: stop exporting GIT_REFLOG_ACTION
      git_parse_unsigned: reject negative values
      config: require at least one digit when parsing numbers
      git_parse_signed(): avoid integer overflow
      sequencer: unify label lookup
      sequencer: tighten label lookups

René Scharfe (21):
      revision: use strtol_i() for exclude_parent
      revisions.txt: unspecify order of resolved parts of ^!
      diff: support ^! for merges
      gc: simplify maintenance_task_pack_refs()
      t/lib-httpd: pass LANG and LC_ALL to Apache
      bisect--helper: plug strvec leak
      archive: deduplicate verbose printing
      submodule: use strvec_pushf() for --super-prefix
      run-command: fix return value comment
      am: simplify building "show" argument list
      bisect: simplify building "checkout" argument list
      bisect--helper: factor out do_bisect_run()
      sequencer: simplify building argument list in do_exec()
      use child_process member "args" instead of string array variable
      use child_process members "args" and "env" directly
      replace and remove run_command_v_opt_cd_env()
      replace and remove run_command_v_opt_tr2()
      replace and remove run_command_v_opt_cd_env_tr2()
      replace and remove run_command_v_opt()
      archive-tar: report filter start error only once
      list-objects-filter: plug combine_filter_data leak

Ronan Pigott (2):
      for-each-repo: interpolate repo path arguments
      maintenance: add option to register in a specific config

Rubén Justo (5):
      ref-filter.c: fix a leak in get_head_description
      branch: description for non-existent branch errors
      branch: support for shortcuts like @{-1}, completed
      branch: error copying or renaming a detached HEAD
      branch: error code with --edit-description

SZEDER Gábor (4):
      Documentation/build-docdep.perl: generate sorted output
      line-log: free diff queue when processing non-merge commits
      line-log: free the diff queues' arrays when processing merge commits
      diff.c: use diff_free_queue()

Sergey Organov (3):
      diff-merges: cleanup func_by_opt()
      diff-merges: cleanup set_diff_merges()
      diff-merges: clarify log.diffMerges documentation

Shaoxuan Yuan (1):
      builtin/grep.c: integrate with sparse index

Sotir Danailov (1):
      docs: git-send-email: difference between ssl and tls smtp-encryption

Taylor Blau (64):
      Documentation/git-multi-pack-index.txt: fix typo
      Documentation/git-multi-pack-index.txt: clarify expire behavior
      midx.c: prevent `expire` from removing the cruft pack
      midx.c: avoid cruft packs with `repack --batch-size=0`
      midx.c: replace `xcalloc()` with `CALLOC_ARRAY()`
      midx.c: remove unnecessary loop condition
      midx.c: avoid cruft packs with non-zero `repack --batch-size`
      builtin/clone.c: disallow `--local` clones with symlinks
      t/lib-submodule-update.sh: allow local submodules
      t/t1NNN: allow local submodules
      t/2NNNN: allow local submodules
      t/t3NNN: allow local submodules
      t/t4NNN: allow local submodules
      t/t5NNN: allow local submodules
      t/t6NNN: allow local submodules
      t/t7NNN: allow local submodules
      t/t9NNN: allow local submodules
      transport: make `protocol.file.allow` be "user" by default
      t1092: prepare for changing protocol.file.allow
      t2080: prepare for changing protocol.file.allow
      t1092: prepare for changing protocol.file.allow
      t2080: prepare for changing protocol.file.allow
      t3207: prepare for changing protocol.file.allow
      t5516: prepare for changing protocol.file.allow
      t5537: prepare for changing protocol.file.allow
      t7814: prepare for changing protocol.file.allow
      t3206: prepare for changing protocol.file.allow
      t5537: prepare for changing protocol.file.allow
      Git 2.30.6
      Git 2.31.5
      Git 2.32.4
      Git 2.33.5
      Git 2.34.5
      Git 2.35.5
      Git 2.36.3
      t7527: prepare for changing protocol.file.allow
      Git 2.37.4
      Git 2.38.1
      midx.c: fix whitespace typo
      midx.c: consider annotated tags during bitmap selection
      midx.c: instrument MIDX and bitmap generation with trace2 regions
      pack-bitmap-write.c: instrument number of reused bitmaps
      builtin/repack.c: remove redundant pack-based bitmaps
      repack: don't remove .keep packs with `--pack-kept-objects`
      builtin/repack.c: pass "out" to `prepare_pack_objects`
      builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`
      builtin/repack.c: write cruft packs to arbitrary locations
      builtin/repack.c: implement `--expire-to` for storing pruned objects
      shortlog: make trailer insertion a noop when appropriate
      shortlog: extract `--group` fragment for translation
      shortlog: support arbitrary commit format `--group`s
      shortlog: extract `shortlog_finish_setup()`
      shortlog: implement `--group=author` in terms of `--group=<format>`
      shortlog: implement `--group=committer` in terms of `--group=<format>`
      apply: reject patches larger than ~1 GiB
      Documentation/howto/maintain-git.txt: fix Meta/redo-jch.sh invocation
      The ninth batch
      Documentation: build redo-jch.sh from master..jch
      Documentation: build redo-seen.sh from jch..seen
      The tenth batch
      The eleventh batch
      The twelfth batch
      builtin/gc.c: fix use-after-free in maintenance_unregister()
      The thirteenth batch

Torsten Bögershausen (1):
      diff.c: use utf8_strwidth() to count display width

Victoria Dye (7):
      read-cache: avoid misaligned reads in index v4
      rebase --update-refs: avoid unintended ref deletion
      cache-tree: add perf test comparing update and prime
      unpack-trees: add 'skip_cache_tree_update' option
      reset: use 'skip_cache_tree_update' option
      read-tree: use 'skip_cache_tree_update' option
      rebase: use 'skip_cache_tree_update' option

Vincent Bernat (1):
      ls-files: fix --ignored and --killed flags in synopsis

Vlad-Stefan Harbuz (1):
      Documentation: fix typo

srz_zumix (1):
      fsmonitor--daemon: on macOS support symlink

Ævar Arnfjörð Bjarmason (115):
      test-lib: have SANITIZE=leak imply TEST_NO_MALLOC_CHECK
      CodingGuidelines: update for C99
      CodingGuidelines: mention dynamic C99 initializer elements
      CodingGuidelines: allow declaring variables in for loops
      CodingGuidelines: mention C99 features we can't use
      grep.c: remove "extended" in favor of "pattern_expression", fix segfault
      CodingGuidelines: recommend against unportable C99 struct syntax
      bundle-uri: create "key=value" line parsing
      bundle-uri: unit test "key=value" parsing
      run-command test helper: use "else if" pattern
      run-command API: have "run_processes_parallel{,_tr2}()" return void
      run-command tests: use "return", not "exit"
      run-command API: make "n" parameter a "size_t"
      run-command API: don't fall back on online_cpus()
      run-command.c: use designated init for pp_init(), add "const"
      run-command API: have run_process_parallel() take an "opts" struct
      run-command API: move *_tr2() users to "run_processes_parallel()"
      run-command.c: make "struct parallel_processes" const if possible
      run-command.c: don't copy *_fn to "struct parallel_processes"
      run-command.c: don't copy "ungroup" to "struct parallel_processes"
      run-command.c: don't copy "data" to "struct parallel_processes"
      run-command.c: use "opts->processes", not "pp->max_processes"
      run-command.c: pass "opts" further down, and use "opts->processes"
      run-command.c: remove "max_processes", add "const" to signal() handler
      tests: assert *.txt SYNOPSIS and -h output
      CodingGuidelines: update and clarify command-line conventions
      builtin/bundle.c: indent with tabs
      bundle: define subcommand -h in terms of command -h
      doc SYNOPSIS: don't use ' for subcommands
      doc SYNOPSIS: consistently use ' for commands
      built-ins: consistently add "\n" between "usage" and options
      doc txt & -h consistency: word-wrap
      doc txt & -h consistency: fix incorrect alternates syntax
      doc txt & -h consistency: add "-z" to cat-file "-h"
      doc txt & -h consistency: balance unbalanced "[" and "]"
      doc txt & -h consistency: correct padding around "[]()"
      stash doc SYNOPSIS & -h: correct padding around "[]()"
      doc txt & -h consistency: use "<options>", not "<options>..."
      doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
      doc txt & -h consistency: fix mismatching labels
      doc txt & -h consistency: add or fix optional "--" syntax
      doc txt & -h consistency: make output order consistent
      doc txt & -h consistency: add missing options and labels
      doc txt & -h consistency: make "rerere" consistent
      doc txt & -h consistency: make "read-tree" consistent
      doc txt & -h consistency: make "bundle" consistent
      doc txt & -h consistency: use "git foo" form, not "git-foo"
      doc txt & -h consistency: add missing options
      doc txt & -h consistency: make "stash" consistent
      doc txt & -h consistency: make "annotate" consistent
      doc txt & -h consistency: use "[<label>...]" for "zero or more"
      doc txt & -h consistency: make "diff-tree" consistent
      doc txt & -h consistency: make "commit" consistent
      reflog doc: list real subcommands up-front
      worktree: define subcommand -h in terms of command -h
      doc txt & -h consistency: make "worktree" consistent
      tests: start asserting that *.txt SYNOPSIS matches -h output
      tests: assert consistent whitespace in -h output
      fsmonitor OSX: compile with DC_SHA1=YesPlease
      merge: remove always-the-same "verbose" arguments
      hook tests: fix redirection logic error in 96e7225b310
      submodule tests: reset "trace.out" between "grep" invocations
      run-command tests: test stdout of run_command_parallel()
      Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)
      cocci rules: remove unused "F" metavariable from pending rule
      Makefile: add ability to TAB-complete cocci *.patch rules
      Makefile: have "coccicheck" re-run if flags change
      Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
      cocci: split off include-less "tests" from SPATCH_FLAGS
      cocci: split off "--all-includes" from SPATCH_FLAGS
      cocci: make "coccicheck" rule incremental
      cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
      Makefile: copy contrib/coccinelle/*.cocci to build/
      cocci rules: remove <id>'s from rules that don't need them
      cocci: run against a generated ALL.cocci
      spatchcache: add a ccache-alike for "spatch"
      Makefile: always (re)set DC_SHA1 on fallback
      INSTALL: remove discussion of SHA-1 backends
      Makefile: correct DC_SHA1 documentation
      Makefile: create and use sections for "define" flag listing
      Makefile: rephrase the discussion of *_SHA1 knobs
      Makefile: document default SHA-256 backend
      Makefile: document SHA-1 and SHA-256 default and selection order
      Makefile & test-tool: replace "DC_SHA1" variable with a "define"
      Makefile: document default SHA-1 backend on OSX
      Makefile: discuss SHAttered in *_SHA{1,256} discussion
      submodule--helper: move "config" to a test-tool
      submodule tests: add tests for top-level flag output
      submodule--helper: fix a memory leak in "status"
      submodule tests: test for a "foreach" blind-spot
      submodule.c: refactor recursive block out of absorb function
      submodule API & "absorbgitdirs": remove "----recursive" option
      submodule--helper: remove --prefix from "absorbgitdirs"
      submodule--helper: drop "update --prefix <pfx>" for "-C <pfx> update"
      submodule--helper: use OPT_SUBCOMMAND() API
      revisions API: extend the nascent REV_INFO_INIT macro
      t7610: fix flaky timeout issue, don't clone from example.com
      Makefile: don't create a ".build/.build/" for cocci, fix output
      maintenance --unregister: fix uninit'd data use & -Wdeclaration-after-statement
      t7610: use "file:///dev/null", not "/dev/null", fixes MinGW
      cache.h: remove unused "the_index" compat macros
      builtin/{grep,log}.: don't define "USE_THE_INDEX_COMPATIBILITY_MACROS"
      cocci & cache.h: remove rarely used "the_index" compat macros
      read-cache API & users: make discard_index() return void
      cocci: add a index-compatibility.pending.cocci
      cocci & cache.h: apply a selection of "pending" index-compatibility
      cocci & cache.h: apply variable section of "pending" index-compatibility
      cocci: apply "pending" index-compatibility to "t/helper/*.c"
      {builtin/*,repository}.c: add & use "USE_THE_INDEX_VARIABLE"
      cache.h & test-tool.h: add & use "USE_THE_INDEX_VARIABLE"
      cocci: apply "pending" index-compatibility to some "builtin/*.c"
      parse_object(): simplify blob conditional
      trace2 tests: guard pthread test with "PTHREAD"
      Makefiles: change search through $(MAKEFLAGS) for GNU make 4.4
      cocci: avoid "should ... be a metavariable" warnings

Đoàn Trần Công Danh (8):
      CodingGuidelines: allow grep -E
      t: remove \{m,n\} from BRE grep usage
      t: convert egrep usage to "grep -E"
      t: convert fgrep usage to "grep -F"
      Makefile: clarify runtime relative gitexecdir
      bisect--helper: remove unused options
      bisect--helper: move all subcommands into their own functions
      bisect--helper: parse subcommand with OPT_SUBCOMMAND


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.39.0-rc1
@ 2022-11-30  6:12  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-11-30  6:12 UTC (permalink / raw)
  To: git; +Cc: git-packagers

A release candidate Git v2.39.0-rc1 is now available for testing at
the usual places.  It is comprised of 460 non-merge commits since
v2.38.0, contributed by 74 people, 30 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.39.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.38.0 are as follows.
Welcome to the Git development community!

  Alexander Kanavin, Alexander Meshcheryakov, Andreas Hasenack,
  Anh Le, Arthur Chan, Daniel Sonbolian, Debra Obondo, Diomidis
  Spinellis, Erik Cervin Edin, Hank Leininger, herr.kaste, John
  A. Leuenhagen, Julia Ramer, Kevin Backhouse, Kousik Sanagavarapu,
  Lukáš Doktor, Martin Englund, M Hickford, Michael V. Scovetta,
  Noah Betzen, Nsengiyumva Wilberforce, orygaw, Ronan Pigott,
  Rubén Justo, Sotir Danailov, srz_zumix, Stefano Rivera, Tim
  Jaacks, Vincent Bernat, and Vlad-Stefan Harbuz.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  정재우, Ævar Arnfjörð Bjarmason, Alejandro R. Sedeño,
  Alex Henrie, Derrick Stolee, Đoàn Trần Công Danh, Elijah
  Newren, Emily Shaffer, Eric DeCosta, Eric Sunshine, Eric Wong,
  Glen Choo, Han-Wen Nienhuys, Jan Pokorný, Jean-Noël Avila,
  Jeff Hostetler, Jeff King, Jerry Zhang, Jiang Xin, Johannes
  Altmanninger, Johannes Schindelin, John Cai, Jonathan Tan,
  Julien Moutinho, Junio C Hamano, Kyle Meyer, Martin Ågren,
  Martin von Zweigbergk, Matthew John Cheetham, Michael J Gruber,
  Michael McClimon, Patrick Steinhardt, Paul Smith, Philip Oakley,
  Philippe Blain, Phillip Wood, Randall S. Becker, René Scharfe,
  Sergey Organov, Shaoxuan Yuan, SZEDER Gábor, Taylor Blau,
  Torsten Bögershausen, 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.39 Release Notes (draft)
===============================

UI, Workflows & Features
------------------------

 * "git grep" learned to expand the sparse-index more lazily and on
   demand in a sparse checkout.

 * By default, use of fsmonitor on a repository on networked
   filesystem is disabled. Add knobs to make it workable on macOS.

 * After checking out a "branch" that is a symbolic-ref that points at
   another branch, "git symbolic-ref HEAD" reports the underlying
   branch, not the symbolic-ref the user gave checkout as argument.
   The command learned the "--no-recurse" option to stop after
   dereferencing a symbolic-ref only once.

 * "git branch --edit-description @{-1}" is now a way to edit branch
   description of the branch you were on before switching to the
   current branch.

 * "git merge-tree --stdin" is a new way to request a series of merges
   and report the merge results.

 * "git shortlog" learned to group by the "format" string.

 * A new "--include-whitespace" option is added to "git patch-id", and
   existing bugs in the internal patch-id logic that did not match
   what "git patch-id" produces have been corrected.

 * Enable gc.cruftpacks by default for those who opt into
   feature.experimental setting.

 * "git repack" learns to send cruft objects out of the way into
   packfiles outside the repository.

 * 'scalar reconfigure -a' is taught to automatically remove
   scalar.repo entires which no longer exist.

 * Redact headers from cURL's h2h3 module in GIT_CURL_VERBOSE and
   others.

 * 'git maintenance register' is taught to write configuration to an
   arbitrary path, and 'git for-each-repo' is taught to expand tilde
   characters in paths.

 * When creating new notes, the template used to get a stray empty
   newline, which has been removed.

 * "git receive-pack" used to use all the local refs as the boundary for
   checking connectivity of the data "git push" sent, but now it uses
   only the refs that it advertised to the pusher. In a repository with
   the .hideRefs configuration, this reduces the resources needed to
   perform the check.

 * With '--recurse-submodules=on-demand', all submodules are
   recursively pushed.


Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------

 * With a bit of header twiddling, use the native regexp library on
   macOS instead of the compat/ one.

 * Prepare for GNU [ef]grep that throw warning of their uses.

 * Sources related to fuzz testing have been moved down to their own
   directory.

 * Most credential helpers ignored unknown entries in a credential
   description, but a few died upon seeing them.  The latter were
   taught to ignore them, too

 * "scalar unregister" in a repository that is already been
   unregistered reported an error.

 * Remove error detection from a function that fetches from promisor
   remotes, and make it die when such a fetch fails to bring all the
   requested objects, to give an early failure to various operations.

 * Update CodingGuidelines to clarify what features to use and avoid
   in C99.

 * Avoid false-positive from LSan whose assumption may be broken with
   higher optimization levels.

 * Enable address and undefined sanitizer tasks at GitHub Actions CI.

 * More UNUSED annotation to help using -Wunused option with the
   compiler.
   (merge 4b992f0a24 jk/unused-anno-more later to maint).

 * Rewrite a deep recursion in the skipping negotiator to use a loop
   with on-heap prio queue to avoid stack wastage.

 * Add documentation for message IDs in fsck error messages.

 * Define the logical elements of a "bundle list", data structure to
   store them in-core, format to transfer them, and code to parse
   them.

 * The role the security mailing list plays in an embargoed release
   has been documented.

 * Two new facilities, "timer" and "counter", are introduced to the
   trace2 API.

 * Code simplification by using strvec_pushf() instead of building an
   argument in a separate strbuf.

 * Make sure generated dependency file is stably sorted to help
   developers debugging their build issues.

 * The glossary entries for "commit-graph file" and "reachability
   bitmap" have been added.

 * Various tests exercising the transfer.credentialsInUrl
   configuration are taught to avoid making requests which require
   resolving localhost to reduce CI-flakiness.

 * A redundant diagnostic message is dropped from test_path_is_missing().

 * Simplify the run-command API.

 * Update the actions/github-script dependency in CI to avoid a
   deprecation warning.

 * Progress on being able to initialize a rev_info struct with a
   macro.

 * Add trace2 counters to the region to clear skip worktree bits in a
   sparse checkout.

 * Modernize test script to avoid "test -f" and friends.

 * Avoid calling 'cache_tree_update()' when doing so would be
   redundant.

 * Update the credential-cache documentation to provide a more
   realistic example.

 * Makefile comments updates and reordering to clarify knobs used to
   choose SHA implementations.

 * A design document for sparse-checkout's future directions has been
   added.

 * Teach chainlint.pl to annotate the original test definition instead
   of the token stream.

 * "make coccicheck" is time consuming. It has been made to run more
   incrementally.

 * `parse_object()` has been hardened to check for the existence of a
   suspected blob object.

 * Adjust the documentation build procedure to GNUmake version 4.4,
   which made some changes to how pattern rule with multiple targets
   are handled.


Fixes since v2.38
-----------------

 * The codepath that reads from the index v4 had unaligned memory
   accesses, which has been corrected.

 * Fix messages incorrectly marked for translation.

 * "git fsck" failed to release contents of tree objects already used
   from the memory, which has been fixed.

 * "git clone" did not like to see the "--bare" and the "--origin"
   options used together without a good reason.

 * "git remote rename" failed to rename a remote without fetch
   refspec, which has been corrected.

 * Documentation on various Boolean GIT_* environment variables have
   been clarified.

 * "git rebase -i" can mistakenly attempt to apply a fixup to a commit
   itself, which has been corrected.

 * "git multi-pack-index repack/expire" used to repack unreachable
   cruft into a new pack, which have been corrected.

 * In read-only repositories, "git merge-tree" tried to come up with a
   merge result tree object, which it failed (which is not wrong) and
   led to a segfault (which is bad), which has been corrected.

 * Force C locale while running tests around httpd to make sure we can
   find expected error messages in the log.

 * Fix a logic in "mailinfo -b" that miscomputed the length of a
   substring, which lead to an out-of-bounds access.

 * The codepath to sign learned to report errors when it fails to read
   from "ssh-keygen".

 * Code clean-up that results in plugging a leak.

 * "GIT_EDITOR=: git branch --edit-description" resulted in failure,
   which has been corrected.

 * The code to clean temporary object directories (used for
   quarantine) tried to remove them inside its signal handler, which
   was a no-no.

 * Update comment in the Makefile about the RUNTIME_PREFIX config knob.

 * Clarify that "the sentence after <area>: prefix does not begin with
   a capital letter" rule applies only to the commit title.

 * "git branch --edit-description" on an unborh branch misleadingly
   said that no such branch exists, which has been corrected.

 * Work around older clang that warns against C99 zero initialization
   syntax for struct.

 * Giving "--invert-grep" and "--all-match" without "--grep" to the
   "git log" command resulted in an attempt to access grep pattern
   expression structure that has not been allocated, which has been
   corrected.
   (merge db84376f98 ab/grep-simplify-extended-expression later to maint).

 * "git diff rev^!" did not show combined diff to go to the rev from
   its parents.
   (merge a79c6b6081 rs/diff-caret-bang-with-parents later to maint).

 * Allow configuration files in "protected" scopes to include other
   configuration files.
   (merge ecec57b3c9 gc/bare-repo-discovery later to maint).

 * Give a bit more diversity to macOS CI by using sha1dc in one of the
   jobs (the other one tests Apple Common Crypto).
   (merge 1ad5c3df35 jc/ci-osx-with-sha1dc later to maint).

 * A bugfix with tracing support in midx codepath
   (merge e9c3839944 tb/midx-bitmap-selection-fix later to maint).

 * When geometric repacking feature is in use together with the
   --pack-kept-objects option, we lost packs marked with .keep files.
   (merge 197443e80a tb/save-keep-pack-during-geometric-repack later to maint).

 * Move a global variable added as a hack during regression fixes to
   its proper place in the API.
   (merge 0b0ab95f17 ab/run-hook-api-cleanup later to maint).

 * Update to build procedure with VS using CMake/CTest.
   (merge c858750b41 js/cmake-updates later to maint).

 * The short-help text shown by "git cmd -h" and the synopsis text
   shown at the beginning of "git help cmd" have been made more
   consistent.

 * When creating a multi-pack bitmap, remove per-pack bitmap files
   unconditionally as they will never be consulted.
   (merge 55d902cd61 tb/remove-unused-pack-bitmap later to maint).

 * Fix a longstanding syntax error in Git.pm error codepath.

 * "git diff --stat" etc. were invented back when everything was ASCII
   and strlen() was a way to measure the display width of a string;
   adjust them to compute the display width assuming UTF-8 pathnames.
   (merge ce8529b2bb tb/diffstat-with-utf8-strwidth later to maint).

 * "git branch --edit-description" can exit with status -1 which is
   not a good practice; it learned to use 1 as everybody else instead.

 * "git apply" limits its input to a bit less than 1 GiB.

 * Merging a branch with directory renames into a branch that changes
   the directory to a symlink was mishandled by the ort merge
   strategy, which has been corrected.

 * A bugfix to "git subtree" in its split and merge features.

 * Fix some bugs in the reflog messages when rebasing and changes the
   reflog messages of "rebase --apply" to match "rebase --merge" with
   the aim of making the reflog easier to parse.

 * "git rebase --keep-base" used to discard the commits that are
   already cherry-picked to the upstream, even when "keep-base" meant
   that the base, on top of which the history is being rebuilt, does
   not yet include these cherry-picked commits.  The --keep-base
   option now implies --reapply-cherry-picks and --no-fork-point
   options.

 * The way "git repack" creared temporary files when it received a
   signal was prone to deadlocking, which has been corrected.

 * Various tests exercising the transfer.credentialsInUrl
   configuration are taught to avoid making requests which require
   resolving localhost to reduce CI-flakiness.

 * The adjust_shared_perm() helper function learned to refrain from
   setting the "g+s" bit on directories when it is not necessary.

 * "git archive" mistakenly complained twice about a missing
   executable, which has been corrected.

 * Fix a bug where `git branch -d` did not work on an orphaned HEAD.

 * `git rebase --update-refs` would delete references when all
   `update-ref` commands in the sequencer were removed, which has been
   corrected.

 * Fix a regression in the bisect-helper which mistakenly treats
   arguments to the command given to 'git bisect run' as arguments to
   the helper.

 * Correct an error where `git rebase` would mistakenly use a branch or
   tag named "refs/rewritten/xyz" when missing a rebase label.

 * Assorted fixes of parsing end-user input as integers.
   (merge 14770cf0de pw/config-int-parse-fixes later to maint).

 * "git prune" may try to iterate over .git/objects/pack for trash
   files to remove in it, and loudly fail when the directory is
   missing, which is not necessary.  The command has been taught to
   ignore such a failure.
   (merge 6974765352 ew/prune-with-missing-objects-pack later to maint).

 * Add one more candidate directory that may house httpd modules while
   running tests.
   (merge 1c7dc23d41 es/locate-httpd-module-location-in-test later to maint).

 * A handful of leaks in the line-log machinery have been plugged.

 * The format of a line in /proc/cpuinfo that describes a CPU on s390x
   looked different from everybody else, and the code in chainlint.pl
   failed to parse it.
   (merge 1f51b77f4f ah/chainlint-cpuinfo-parse-fix later to maint).

 * Adjust the GitHub CI to newer ubuntu release.
   (merge 0d3507f3e7 jx/ci-ubuntu-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 413bc6d20a ds/cmd-main-reorder later to maint).
   (merge 8d2863e4ed nw/t1002-cleanup later to maint).
   (merge 7c2dc122f9 rs/list-objects-filter-leakfix later to maint).
   (merge 288fcb1c94 zk/push-use-bitmaps later to maint).
   (merge 42db324c0f km/merge-recursive-typofix later to maint).

----------------------------------------------------------------

Changes since v2.38.0 are as follows:

Alejandro R. Sedeño (1):
      git-compat-util.h: GCC deprecated message arg only in GCC 4.5+

Alex Henrie (2):
      fsmonitor--daemon: don't translate literal commands
      push: improve grammar of branch.autoSetupMerge advice

Andreas Hasenack (1):
      chainlint.pl: fix /proc/cpuinfo regexp

Anh Le (2):
      index: add trace2 region for clear skip worktree
      index: raise a bug if the index is materialised more than once

Arthur Chan (1):
      fuzz: reorganise the path for existing oss-fuzz fuzzers

Daniel Sonbolian (1):
      git.c: improve code readability in cmd_main()

Debra Obondo (1):
      t7001-mv.sh: modernizing test script using functions

Derrick Stolee (15):
      maintenance: add 'unregister --force'
      scalar: make 'unregister' idempotent
      gc: replace config subprocesses with API calls
      string-list: document iterator behavior on NULL input
      bundle-uri: fix technical doc issues
      bundle-uri: use plain string in find_temp_filename()
      bundle-uri: create bundle_list struct and helpers
      bundle-uri: create base key-value pair parsing
      bundle-uri: parse bundle list in config format
      bundle-uri: limit recursion depth for bundle lists
      bundle: properly clear all revision flags
      bundle-uri: fetch a list of bundles
      bundle: add flags to verify_bundle()
      bundle-uri: quiet failed unbundlings
      bundle-uri: suppress stderr from remote-https

Diomidis Spinellis (1):
      grep: fix multibyte regex handling under macOS

Elijah Newren (4):
      merge-ort: fix bug with dir rename vs change dir to symlink
      merge-tree: update documentation for differences in -z output
      merge-tree: support multiple batched merges with --stdin
      sparse-checkout.txt: new document with sparse-checkout directions

Emily Shaffer (2):
      gc: add tests for --cruft and friends
      config: let feature.experimental imply gc.cruftPacks=true

Eric DeCosta (6):
      fsmonitor: refactor filesystem checks to common interface
      fsmonitor: relocate socket file if .git directory is remote
      fsmonitor: avoid socket location check if using hook
      fsmonitor: deal with synthetic firmlinks on macOS
      fsmonitor: check for compatability before communicating with fsmonitor
      fsmonitor: add documentation for allowRemote and socketDir options

Eric Sunshine (9):
      check-non-portable-shell: detect obsolescent egrep/fgrep
      chainlint: add explanatory comments
      chainlint: tighten accuracy when consuming input stream
      chainlint: latch start/end position of each token
      chainlint: annotate original test definition rather than token stream
      chainlint: sidestep impoverished macOS "terminfo"
      chainlint: latch line numbers at which each token starts and ends
      chainlint: prefix annotated test definition with line numbers
      lib-httpd: extend module location auto-detection

Eric Wong (2):
      delta-islands: free island-related data after use
      prune: quiet ENOENT on missing directories

Glen Choo (3):
      config: respect includes in protected config
      http: redact curl h2h3 headers in info
      object-file: use real paths when adding alternates

Han-Wen Nienhuys (1):
      refs: unify parse_worktree_ref() and ref_type()

Jean-Noël Avila (1):
      i18n: fix command template placeholder format

Jeff Hostetler (9):
      config.mak.dev: disable suggest braces error on old clang versions
      trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx
      tr2tls: clarify TLS terminology
      api-trace2.txt: elminate section describing the public trace2 API
      trace2: rename the thread_name argument to trace2_thread_start
      trace2: improve thread-name documentation in the thread-context
      trace2: convert ctx.thread_name from strbuf to pointer
      trace2: add stopwatch timers
      trace2: add global counter mechanism

Jeff King (43):
      fsck: free tree buffers after walking unreachable objects
      fsck: turn off save_commit_buffer
      parse_object_buffer(): respect save_commit_buffer
      clone: allow "--bare" with "-o"
      remote: handle rename of remote without fetch refspec
      shell: add basic tests
      shell: limit size of interactive commands
      sequencer: detect author name errors in read_author_script()
      test-submodule: inline resolve_relative_url() function
      multi-pack-index: avoid writing to global in option callback
      commit: avoid writing to global in option callback
      attr: drop DEBUG_ATTR code
      dir: use fspathncmp() in pl_hashmap_cmp()
      fsmonitor: fix leak of warning message
      diffstat_consume(): assert non-zero length
      submodule--helper: drop unused argc from module_list_compute()
      update-index: drop unused argc from do_reupdate()
      mark unused parameters in trivial compat functions
      object-file: mark unused parameters in hash_unknown functions
      string-list: mark unused callback parameters
      date: mark unused parameters in handler functions
      apply: mark unused parameters in handlers
      apply: mark unused parameters in noop error/warning routine
      convert: mark unused parameter in null stream filter
      diffcore-pickaxe: mark unused parameters in pickaxe functions
      ll-merge: mark unused parameters in callbacks
      Makefile: force -O0 when compiling with SANITIZE=leak
      repack: convert "names" util bitfield to array
      repack: populate extension bits incrementally
      repack: expand error message for missing pack files
      repack: use tempfiles for signal cleanup
      repack: drop remove_temporary_files()
      Git.pm: trust rev-parse to find bare repositories
      t7700: annotate cruft-pack failure with ok=sigpipe
      shortlog: accept `--date`-related options
      Makefile: force -O0 when compiling with SANITIZE=leak
      t5516: move plaintext-password tests from t5601 and t5516
      ref-filter: fix parsing of signatures without blank lines
      ref-filter: fix parsing of signatures with CRLF and no body
      branch: gracefully handle '-d' on orphan HEAD
      t: run t5551 tests with both HTTP and HTTP/2
      parse_object(): drop extra "has" check before checking object type
      parse_object(): check on-disk type of suspected blob

Jerry Zhang (6):
      patch-id: fix stable patch id for binary / header-only
      patch-id: use stable patch-id for rebases
      builtin: patch-id: fix patch-id with binary diffs
      patch-id: fix patch-id for mode changes
      builtin: patch-id: add --verbatim as a command mode
      builtin: patch-id: remove unused diff-tree prefix

Jiang Xin (5):
      t5516: fail to run in verbose mode
      github-actions: run gcc-8 on ubuntu-20.04 image
      ci: remove the pipe after "p4 -V" to catch errors
      ci: use the same version of p4 on both Linux and macOS
      ci: install python on ubuntu

Johannes Altmanninger (1):
      sequencer: avoid dropping fixup commit that targets self via commit-ish

Johannes Schindelin (11):
      merge-ort: fix segmentation fault in read-only repositories
      merge-ort: return early when failing to write a blob
      cmake: make it easier to diagnose regressions in CTest runs
      cmake: copy the merge tools for testing
      add -p: avoid ambiguous signed/unsigned comparison
      cmake: avoid editing t/test-lib.sh
      cmake: increase time-out for a long-running test
      t5516/t5601: be less strict about the number of credential warnings
      scalar reconfigure -a: remove stale `scalar.repo` entries
      ci: use a newer `github-script` version
      tests(scalar): tighten the stale `scalar.repo` test some

John Cai (3):
      tmp-objdir: skip clean up when handling a signal
      fsck: remove the unused BAD_TAG_OBJECT
      fsck: document msg-id

Jonathan Tan (4):
      promisor-remote: remove a return value
      promisor-remote: die upon failing fetch
      negotiator/skipping: avoid stack overflow
      Doc: document push.recurseSubmodules=only

Julia Ramer (1):
      embargoed releases: also describe the git-security list and the process

Junio C Hamano (29):
      environ: document GIT_SSL_NO_VERIFY
      environ: explain Boolean environment variables
      environ: GIT_FLUSH should be made a usual Boolean
      environ: simplify description of GIT_INDEX_FILE
      environ: GIT_INDEX_VERSION affects not just a new repository
      branch: do not fail a no-op --edit-desc
      SubmittingPatches: use usual capitalization in the log message body
      Start 2.39 cycle
      symbolic-ref: teach "--[no-]recurse" option
      The (real) first batch for 2.39
      The second batch
      The third batch
      The fourth batch
      ci: add address and undefined sanitizer tasks
      ci: use DC_SHA1=YesPlease on osx-clang job for CI
      The fifth batch
      diff: leave NEEDWORK notes in show_stats() function
      fsck: remove the unused MISSING_TREE_OBJECT
      Documentation: add lint-fsck-msgids
      Downmerge a handful of topics for 2.38.2
      The sixth batch
      Downmerge a bit more for 2.38.2
      The seventh batch
      The eighth batch
      adjust_shared_perm(): leave g+s alone when the group does not matter
      Git 2.39-rc0
      Another batch before -rc1
      A bit more before -rc1
      Git 2.39-rc1

Kevin Backhouse (1):
      alias.c: reject too-long cmdline strings in split_cmdline()

Kousik Sanagavarapu (1):
      repository-version.txt: partialClone casing change

Kyle Meyer (1):
      merge-recursive: fix variable typo in error message

M Hickford (4):
      Documentation/gitcredentials.txt: mention password alternatives
      Documentation: increase example cache timeout to 1 hour
      docs: clarify that credential discards unrecognised attributes
      Docs: describe how a credential-generating helper works

Martin Ågren (1):
      test-lib-functions: drop redundant diagnostic print

Matthew John Cheetham (3):
      wincred: ignore unknown lines (do not die)
      netrc: ignore unknown lines (do not die)
      osxkeychain: clarify that we ignore unknown lines

Michael J Gruber (1):
      notes: avoid empty line in template

Michael McClimon (1):
      Git.pm: add semicolon after catch statement

Noah Betzen (1):
      mergetool.txt: typofix 'overwriten' -> 'overwritten'

Nsengiyumva Wilberforce (1):
      t1002: modernize outdated conditional

Patrick Steinhardt (7):
      refs: fix memory leak when parsing hideRefs config
      refs: get rid of global list of hidden refs
      revision: move together exclusion-related functions
      revision: introduce struct to handle exclusions
      revision: add new parameter to exclude hidden refs
      rev-parse: add `--exclude-hidden=` option
      receive-pack: only use visible refs for connectivity check

Paul Smith (1):
      Makefile: avoid multiple patterns when recipes generate one file

Philip Oakley (4):
      doc: use "commit-graph" hyphenation consistently
      doc: use 'object database' not ODB or abbreviation
      glossary: add "commit graph" description
      glossary: add reachability bitmap description

Philippe Blain (9):
      test-lib-functions: mark 'test_commit' variables as 'local'
      subtree: use 'git rev-parse --verify [--quiet]' for better error messages
      subtree: add 'die_incompatible_opt' function to reduce duplication
      subtree: prefix die messages with 'fatal'
      subtree: define a variable before its first use in 'find_latest_squash'
      subtree: use named variables instead of "$@" in cmd_pull
      subtree: process 'git-subtree-split' trailer in separate function
      subtree: fix squash merging after annotated tag was squashed merged
      subtree: fix split after annotated tag was squashed merged

Phillip Wood (26):
      mailinfo -b: fix an out of bounds access
      ssh signing: return an error when signature cannot be read
      t3435: remove redundant test case
      t3416: tighten two tests
      t3416: set $EDITOR in subshell
      rebase: be stricter when reading state files containing oids
      rebase: store orig_head as a commit
      rebase: rename merge_base to branch_base
      rebase: factor out branch_base calculation
      rebase --keep-base: imply --reapply-cherry-picks
      rebase --keep-base: imply --no-fork-point
      rebase --apply: remove duplicated code
      t3406: rework rebase reflog tests
      rebase --merge: fix reflog when continuing
      rebase --merge: fix reflog message after skipping
      rebase --apply: respect GIT_REFLOG_ACTION
      rebase --apply: make reflog messages match rebase --merge
      rebase --abort: improve reflog message
      rebase: cleanup action handling
      sequencer: stop exporting GIT_REFLOG_ACTION
      rebase: stop exporting GIT_REFLOG_ACTION
      git_parse_unsigned: reject negative values
      config: require at least one digit when parsing numbers
      git_parse_signed(): avoid integer overflow
      sequencer: unify label lookup
      sequencer: tighten label lookups

René Scharfe (21):
      revision: use strtol_i() for exclude_parent
      revisions.txt: unspecify order of resolved parts of ^!
      diff: support ^! for merges
      gc: simplify maintenance_task_pack_refs()
      t/lib-httpd: pass LANG and LC_ALL to Apache
      bisect--helper: plug strvec leak
      archive: deduplicate verbose printing
      submodule: use strvec_pushf() for --super-prefix
      run-command: fix return value comment
      am: simplify building "show" argument list
      bisect: simplify building "checkout" argument list
      bisect--helper: factor out do_bisect_run()
      sequencer: simplify building argument list in do_exec()
      use child_process member "args" instead of string array variable
      use child_process members "args" and "env" directly
      replace and remove run_command_v_opt_cd_env()
      replace and remove run_command_v_opt_tr2()
      replace and remove run_command_v_opt_cd_env_tr2()
      replace and remove run_command_v_opt()
      archive-tar: report filter start error only once
      list-objects-filter: plug combine_filter_data leak

Ronan Pigott (2):
      for-each-repo: interpolate repo path arguments
      maintenance: add option to register in a specific config

Rubén Justo (5):
      ref-filter.c: fix a leak in get_head_description
      branch: description for non-existent branch errors
      branch: support for shortcuts like @{-1}, completed
      branch: error copying or renaming a detached HEAD
      branch: error code with --edit-description

SZEDER Gábor (4):
      Documentation/build-docdep.perl: generate sorted output
      line-log: free diff queue when processing non-merge commits
      line-log: free the diff queues' arrays when processing merge commits
      diff.c: use diff_free_queue()

Sergey Organov (3):
      diff-merges: cleanup func_by_opt()
      diff-merges: cleanup set_diff_merges()
      diff-merges: clarify log.diffMerges documentation

Shaoxuan Yuan (1):
      builtin/grep.c: integrate with sparse index

Sotir Danailov (1):
      docs: git-send-email: difference between ssl and tls smtp-encryption

Taylor Blau (64):
      Documentation/git-multi-pack-index.txt: fix typo
      Documentation/git-multi-pack-index.txt: clarify expire behavior
      midx.c: prevent `expire` from removing the cruft pack
      midx.c: avoid cruft packs with `repack --batch-size=0`
      midx.c: replace `xcalloc()` with `CALLOC_ARRAY()`
      midx.c: remove unnecessary loop condition
      midx.c: avoid cruft packs with non-zero `repack --batch-size`
      builtin/clone.c: disallow `--local` clones with symlinks
      t/lib-submodule-update.sh: allow local submodules
      t/t1NNN: allow local submodules
      t/2NNNN: allow local submodules
      t/t3NNN: allow local submodules
      t/t4NNN: allow local submodules
      t/t5NNN: allow local submodules
      t/t6NNN: allow local submodules
      t/t7NNN: allow local submodules
      t/t9NNN: allow local submodules
      transport: make `protocol.file.allow` be "user" by default
      t1092: prepare for changing protocol.file.allow
      t2080: prepare for changing protocol.file.allow
      t1092: prepare for changing protocol.file.allow
      t2080: prepare for changing protocol.file.allow
      t3207: prepare for changing protocol.file.allow
      t5516: prepare for changing protocol.file.allow
      t5537: prepare for changing protocol.file.allow
      t7814: prepare for changing protocol.file.allow
      t3206: prepare for changing protocol.file.allow
      t5537: prepare for changing protocol.file.allow
      Git 2.30.6
      Git 2.31.5
      Git 2.32.4
      Git 2.33.5
      Git 2.34.5
      Git 2.35.5
      Git 2.36.3
      t7527: prepare for changing protocol.file.allow
      Git 2.37.4
      Git 2.38.1
      midx.c: fix whitespace typo
      midx.c: consider annotated tags during bitmap selection
      midx.c: instrument MIDX and bitmap generation with trace2 regions
      pack-bitmap-write.c: instrument number of reused bitmaps
      builtin/repack.c: remove redundant pack-based bitmaps
      repack: don't remove .keep packs with `--pack-kept-objects`
      builtin/repack.c: pass "out" to `prepare_pack_objects`
      builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`
      builtin/repack.c: write cruft packs to arbitrary locations
      builtin/repack.c: implement `--expire-to` for storing pruned objects
      shortlog: make trailer insertion a noop when appropriate
      shortlog: extract `--group` fragment for translation
      shortlog: support arbitrary commit format `--group`s
      shortlog: extract `shortlog_finish_setup()`
      shortlog: implement `--group=author` in terms of `--group=<format>`
      shortlog: implement `--group=committer` in terms of `--group=<format>`
      apply: reject patches larger than ~1 GiB
      Documentation/howto/maintain-git.txt: fix Meta/redo-jch.sh invocation
      The ninth batch
      Documentation: build redo-jch.sh from master..jch
      Documentation: build redo-seen.sh from jch..seen
      The tenth batch
      The eleventh batch
      The twelfth batch
      builtin/gc.c: fix use-after-free in maintenance_unregister()
      The thirteenth batch

Torsten Bögershausen (1):
      diff.c: use utf8_strwidth() to count display width

Victoria Dye (7):
      read-cache: avoid misaligned reads in index v4
      rebase --update-refs: avoid unintended ref deletion
      cache-tree: add perf test comparing update and prime
      unpack-trees: add 'skip_cache_tree_update' option
      reset: use 'skip_cache_tree_update' option
      read-tree: use 'skip_cache_tree_update' option
      rebase: use 'skip_cache_tree_update' option

Vincent Bernat (1):
      ls-files: fix --ignored and --killed flags in synopsis

Vlad-Stefan Harbuz (1):
      Documentation: fix typo

srz_zumix (1):
      fsmonitor--daemon: on macOS support symlink

Ævar Arnfjörð Bjarmason (113):
      test-lib: have SANITIZE=leak imply TEST_NO_MALLOC_CHECK
      CodingGuidelines: update for C99
      CodingGuidelines: mention dynamic C99 initializer elements
      CodingGuidelines: allow declaring variables in for loops
      CodingGuidelines: mention C99 features we can't use
      grep.c: remove "extended" in favor of "pattern_expression", fix segfault
      CodingGuidelines: recommend against unportable C99 struct syntax
      bundle-uri: create "key=value" line parsing
      bundle-uri: unit test "key=value" parsing
      run-command test helper: use "else if" pattern
      run-command API: have "run_processes_parallel{,_tr2}()" return void
      run-command tests: use "return", not "exit"
      run-command API: make "n" parameter a "size_t"
      run-command API: don't fall back on online_cpus()
      run-command.c: use designated init for pp_init(), add "const"
      run-command API: have run_process_parallel() take an "opts" struct
      run-command API: move *_tr2() users to "run_processes_parallel()"
      run-command.c: make "struct parallel_processes" const if possible
      run-command.c: don't copy *_fn to "struct parallel_processes"
      run-command.c: don't copy "ungroup" to "struct parallel_processes"
      run-command.c: don't copy "data" to "struct parallel_processes"
      run-command.c: use "opts->processes", not "pp->max_processes"
      run-command.c: pass "opts" further down, and use "opts->processes"
      run-command.c: remove "max_processes", add "const" to signal() handler
      tests: assert *.txt SYNOPSIS and -h output
      CodingGuidelines: update and clarify command-line conventions
      builtin/bundle.c: indent with tabs
      bundle: define subcommand -h in terms of command -h
      doc SYNOPSIS: don't use ' for subcommands
      doc SYNOPSIS: consistently use ' for commands
      built-ins: consistently add "\n" between "usage" and options
      doc txt & -h consistency: word-wrap
      doc txt & -h consistency: fix incorrect alternates syntax
      doc txt & -h consistency: add "-z" to cat-file "-h"
      doc txt & -h consistency: balance unbalanced "[" and "]"
      doc txt & -h consistency: correct padding around "[]()"
      stash doc SYNOPSIS & -h: correct padding around "[]()"
      doc txt & -h consistency: use "<options>", not "<options>..."
      doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
      doc txt & -h consistency: fix mismatching labels
      doc txt & -h consistency: add or fix optional "--" syntax
      doc txt & -h consistency: make output order consistent
      doc txt & -h consistency: add missing options and labels
      doc txt & -h consistency: make "rerere" consistent
      doc txt & -h consistency: make "read-tree" consistent
      doc txt & -h consistency: make "bundle" consistent
      doc txt & -h consistency: use "git foo" form, not "git-foo"
      doc txt & -h consistency: add missing options
      doc txt & -h consistency: make "stash" consistent
      doc txt & -h consistency: make "annotate" consistent
      doc txt & -h consistency: use "[<label>...]" for "zero or more"
      doc txt & -h consistency: make "diff-tree" consistent
      doc txt & -h consistency: make "commit" consistent
      reflog doc: list real subcommands up-front
      worktree: define subcommand -h in terms of command -h
      doc txt & -h consistency: make "worktree" consistent
      tests: start asserting that *.txt SYNOPSIS matches -h output
      tests: assert consistent whitespace in -h output
      fsmonitor OSX: compile with DC_SHA1=YesPlease
      merge: remove always-the-same "verbose" arguments
      hook tests: fix redirection logic error in 96e7225b310
      submodule tests: reset "trace.out" between "grep" invocations
      run-command tests: test stdout of run_command_parallel()
      Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)
      cocci rules: remove unused "F" metavariable from pending rule
      Makefile: add ability to TAB-complete cocci *.patch rules
      Makefile: have "coccicheck" re-run if flags change
      Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
      cocci: split off include-less "tests" from SPATCH_FLAGS
      cocci: split off "--all-includes" from SPATCH_FLAGS
      cocci: make "coccicheck" rule incremental
      cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
      Makefile: copy contrib/coccinelle/*.cocci to build/
      cocci rules: remove <id>'s from rules that don't need them
      cocci: run against a generated ALL.cocci
      spatchcache: add a ccache-alike for "spatch"
      Makefile: always (re)set DC_SHA1 on fallback
      INSTALL: remove discussion of SHA-1 backends
      Makefile: correct DC_SHA1 documentation
      Makefile: create and use sections for "define" flag listing
      Makefile: rephrase the discussion of *_SHA1 knobs
      Makefile: document default SHA-256 backend
      Makefile: document SHA-1 and SHA-256 default and selection order
      Makefile & test-tool: replace "DC_SHA1" variable with a "define"
      Makefile: document default SHA-1 backend on OSX
      Makefile: discuss SHAttered in *_SHA{1,256} discussion
      submodule--helper: move "config" to a test-tool
      submodule tests: add tests for top-level flag output
      submodule--helper: fix a memory leak in "status"
      submodule tests: test for a "foreach" blind-spot
      submodule.c: refactor recursive block out of absorb function
      submodule API & "absorbgitdirs": remove "----recursive" option
      submodule--helper: remove --prefix from "absorbgitdirs"
      submodule--helper: drop "update --prefix <pfx>" for "-C <pfx> update"
      submodule--helper: use OPT_SUBCOMMAND() API
      revisions API: extend the nascent REV_INFO_INIT macro
      t7610: fix flaky timeout issue, don't clone from example.com
      Makefile: don't create a ".build/.build/" for cocci, fix output
      maintenance --unregister: fix uninit'd data use & -Wdeclaration-after-statement
      t7610: use "file:///dev/null", not "/dev/null", fixes MinGW
      cache.h: remove unused "the_index" compat macros
      builtin/{grep,log}.: don't define "USE_THE_INDEX_COMPATIBILITY_MACROS"
      cocci & cache.h: remove rarely used "the_index" compat macros
      read-cache API & users: make discard_index() return void
      cocci: add a index-compatibility.pending.cocci
      cocci & cache.h: apply a selection of "pending" index-compatibility
      cocci & cache.h: apply variable section of "pending" index-compatibility
      cocci: apply "pending" index-compatibility to "t/helper/*.c"
      {builtin/*,repository}.c: add & use "USE_THE_INDEX_VARIABLE"
      cache.h & test-tool.h: add & use "USE_THE_INDEX_VARIABLE"
      cocci: apply "pending" index-compatibility to some "builtin/*.c"
      parse_object(): simplify blob conditional
      trace2 tests: guard pthread test with "PTHREAD"

Đoàn Trần Công Danh (8):
      CodingGuidelines: allow grep -E
      t: remove \{m,n\} from BRE grep usage
      t: convert egrep usage to "grep -E"
      t: convert fgrep usage to "grep -F"
      Makefile: clarify runtime relative gitexecdir
      bisect--helper: remove unused options
      bisect--helper: move all subcommands into their own functions
      bisect--helper: parse subcommand with OPT_SUBCOMMAND


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.39.0-rc0
@ 2022-11-23  7:25  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-11-23  7:25 UTC (permalink / raw)
  To: git; +Cc: git-packagers, lwn

An early preview release Git v2.39.0-rc0 is now available for
testing at the usual places.  It is comprised of 423 non-merge
commits since v2.38.0, contributed by 67 people, 28 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.39.0-rc0' 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.38.0 are as follows.
Welcome to the Git development community!

  Alexander Meshcheryakov, Anh Le, Arthur Chan, Daniel
  Sonbolian, Debra Obondo, Diomidis Spinellis, Erik Cervin
  Edin, Hank Leininger, herr.kaste, John A. Leuenhagen, Julia
  Ramer, Kevin Backhouse, Kousik Sanagavarapu, Lukáš Doktor,
  Martin Englund, M Hickford, Michael V. Scovetta, Noah Betzen,
  Nsengiyumva Wilberforce, orygaw, Ronan Pigott, Rubén Justo,
  Sotir Danailov, srz_zumix, Stefano Rivera, Tim Jaacks, Vincent
  Bernat, and Vlad-Stefan Harbuz.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  정재우, Ævar Arnfjörð Bjarmason, Alejandro R. Sedeño,
  Alex Henrie, Derrick Stolee, Đoàn Trần Công Danh, Elijah
  Newren, Emily Shaffer, Eric DeCosta, Eric Sunshine, Eric Wong,
  Glen Choo, Han-Wen Nienhuys, Jan Pokorný, Jeff Hostetler, Jeff
  King, Jerry Zhang, Johannes Altmanninger, Johannes Schindelin,
  John Cai, Jonathan Tan, Julien Moutinho, Junio C Hamano, Martin
  Ågren, Martin von Zweigbergk, Matthew John Cheetham, Michael
  J Gruber, Michael McClimon, Patrick Steinhardt, Philip Oakley,
  Philippe Blain, Phillip Wood, René Scharfe, Sergey Organov,
  Shaoxuan Yuan, SZEDER Gábor, Taylor Blau, Torsten Bögershausen,
  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.39 Release Notes (draft)
===============================

UI, Workflows & Features
------------------------

 * "git grep" learned to expand the sparse-index more lazily and on
   demand in a sparse checkout.

 * By default, use of fsmonitor on a repository on networked
   filesystem is disabled. Add knobs to make it workable on macOS.

 * After checking out a "branch" that is a symbolic-ref that points at
   another branch, "git symbolic-ref HEAD" reports the underlying
   branch, not the symbolic-ref the user gave checkout as argument.
   The command learned the "--no-recurse" option to stop after
   dereferencing a symbolic-ref only once.

 * "git branch --edit-description @{-1}" is now a way to edit branch
   description of the branch you were on before switching to the
   current branch.

 * "git merge-tree --stdin" is a new way to request a series of merges
   and report the merge results.

 * "git shortlog" learned to group by the "format" string.

 * A new "--include-whitespace" option is added to "git patch-id", and
   existing bugs in the internal patch-id logic that did not match
   what "git patch-id" produces have been corrected.

 * Enable gc.cruftpacks by default for those who opt into
   feature.experimental setting.

 * "git repack" learns to send cruft objects out of the way into
   packfiles outside the repository.

 * 'scalar reconfigure -a' is taught to automatically remove
   scalar.repo entires which no longer exist.

 * Redact headers from cURL's h2h3 module in GIT_CURL_VERBOSE and
   others.

 * 'git maintenance register' is taught to write configuration to an
   arbitrary path, and 'git for-each-repo' is taught to expand tilde
   characters in paths.

 * When creating new notes, the template used to get a stray empty
   newline, which has been removed.

 * "git receive-pack" used to use all the local refs as the boundary for
   checking connectivity of the data "git push" sent, but now it uses
   only the refs that it advertised to the pusher. In a repository with
   the .hideRefs configuration, this reduces the resources needed to
   perform the check.

 * With '--recurse-submodules=on-demand', all submodules are
   recursively pushed.


Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------

 * With a bit of header twiddling, use the native regexp library on
   macOS instead of the compat/ one.

 * Prepare for GNU [ef]grep that throw warning of their uses.

 * Sources related to fuzz testing have been moved down to their own
   directory.

 * Most credential helpers ignored unknown entries in a credential
   description, but a few died upon seeing them.  The latter were
   taught to ignore them, too

 * "scalar unregister" in a repository that is already been
   unregistered reported an error.

 * Remove error detection from a function that fetches from promisor
   remotes, and make it die when such a fetch fails to bring all the
   requested objects, to give an early failure to various operations.

 * Update CodingGuidelines to clarify what features to use and avoid
   in C99.

 * Avoid false-positive from LSan whose assumption may be broken with
   higher optimization levels.

 * Enable address and undefined sanitizer tasks at GitHub Actions CI.

 * More UNUSED annotation to help using -Wunused option with the
   compiler.
   (merge 4b992f0a24 jk/unused-anno-more later to maint).

 * Rewrite a deep recursion in the skipping negotiator to use a loop
   with on-heap prio queue to avoid stack wastage.

 * Add documentation for message IDs in fsck error messages.

 * Define the logical elements of a "bundle list", data structure to
   store them in-core, format to transfer them, and code to parse
   them.

 * The role the security mailing list plays in an embargoed release
   has been documented.

 * Two new facilities, "timer" and "counter", are introduced to the
   trace2 API.

 * Code simplification by using strvec_pushf() instead of building an
   argument in a separate strbuf.

 * Make sure generated dependency file is stably sorted to help
   developers debugging their build issues.

 * The glossary entries for "commit-graph file" and "reachability
   bitmap" have been added.

 * Various tests exercising the transfer.credentialsInUrl
   configuration are taught to avoid making requests which require
   resolving localhost to reduce CI-flakiness.

 * A redundant diagnostic message is dropped from test_path_is_missing().

 * Simplify the run-command API.

 * Update the actions/github-script dependency in CI to avoid a
   deprecation warning.

 * Progress on being able to initialize a rev_info struct with a
   macro.

 * Add trace2 counters to the region to clear skip worktree bits in a
   sparse checkout.

 * Modernize test script to avoid "test -f" and friends.

 * Avoid calling 'cache_tree_update()' when doing so would be
   redundant.

 * Update the credential-cache documentation to provide a more
   realistic example.

 * Makefile comments updates and reordering to clarify knobs used to
   choose SHA implementations.

 * A design document for sparse-checkout's future directions has been
   added.

 * Teach chainlint.pl to annotate the original test definition instead
   of the token stream.

 * "make coccicheck" is time consuming. It has been made to run more
   incrementally.


Fixes since v2.38
-----------------

 * The codepath that reads from the index v4 had unaligned memory
   accesses, which has been corrected.

 * Fix messages incorrectly marked for translation.

 * "git fsck" failed to release contents of tree objects already used
   from the memory, which has been fixed.

 * "git clone" did not like to see the "--bare" and the "--origin"
   options used together without a good reason.

 * "git remote rename" failed to rename a remote without fetch
   refspec, which has been corrected.

 * Documentation on various Boolean GIT_* environment variables have
   been clarified.

 * "git rebase -i" can mistakenly attempt to apply a fixup to a commit
   itself, which has been corrected.

 * "git multi-pack-index repack/expire" used to repack unreachable
   cruft into a new pack, which have been corrected.

 * In read-only repositories, "git merge-tree" tried to come up with a
   merge result tree object, which it failed (which is not wrong) and
   led to a segfault (which is bad), which has been corrected.

 * Force C locale while running tests around httpd to make sure we can
   find expected error messages in the log.

 * Fix a logic in "mailinfo -b" that miscomputed the length of a
   substring, which lead to an out-of-bounds access.

 * The codepath to sign learned to report errors when it fails to read
   from "ssh-keygen".

 * Code clean-up that results in plugging a leak.

 * "GIT_EDITOR=: git branch --edit-description" resulted in failure,
   which has been corrected.

 * The code to clean temporary object directories (used for
   quarantine) tried to remove them inside its signal handler, which
   was a no-no.

 * Update comment in the Makefile about the RUNTIME_PREFIX config knob.

 * Clarify that "the sentence after <area>: prefix does not begin with
   a capital letter" rule applies only to the commit title.

 * "git branch --edit-description" on an unborh branch misleadingly
   said that no such branch exists, which has been corrected.

 * Work around older clang that warns against C99 zero initialization
   syntax for struct.

 * Giving "--invert-grep" and "--all-match" without "--grep" to the
   "git log" command resulted in an attempt to access grep pattern
   expression structure that has not been allocated, which has been
   corrected.
   (merge db84376f98 ab/grep-simplify-extended-expression later to maint).

 * "git diff rev^!" did not show combined diff to go to the rev from
   its parents.
   (merge a79c6b6081 rs/diff-caret-bang-with-parents later to maint).

 * Allow configuration files in "protected" scopes to include other
   configuration files.
   (merge ecec57b3c9 gc/bare-repo-discovery later to maint).

 * Give a bit more diversity to macOS CI by using sha1dc in one of the
   jobs (the other one tests Apple Common Crypto).
   (merge 1ad5c3df35 jc/ci-osx-with-sha1dc later to maint).

 * A bugfix with tracing support in midx codepath
   (merge e9c3839944 tb/midx-bitmap-selection-fix later to maint).

 * When geometric repacking feature is in use together with the
   --pack-kept-objects option, we lost packs marked with .keep files.
   (merge 197443e80a tb/save-keep-pack-during-geometric-repack later to maint).

 * Move a global variable added as a hack during regression fixes to
   its proper place in the API.
   (merge 0b0ab95f17 ab/run-hook-api-cleanup later to maint).

 * Update to build procedure with VS using CMake/CTest.
   (merge c858750b41 js/cmake-updates later to maint).

 * The short-help text shown by "git cmd -h" and the synopsis text
   shown at the beginning of "git help cmd" have been made more
   consistent.

 * When creating a multi-pack bitmap, remove per-pack bitmap files
   unconditionally as they will never be consulted.
   (merge 55d902cd61 tb/remove-unused-pack-bitmap later to maint).

 * Fix a longstanding syntax error in Git.pm error codepath.

 * "git diff --stat" etc. were invented back when everything was ASCII
   and strlen() was a way to measure the display width of a string;
   adjust them to compute the display width assuming UTF-8 pathnames.
   (merge ce8529b2bb tb/diffstat-with-utf8-strwidth later to maint).

 * "git branch --edit-description" can exit with status -1 which is
   not a good practice; it learned to use 1 as everybody else instead.

 * "git apply" limits its input to a bit less than 1 GiB.

 * Merging a branch with directory renames into a branch that changes
   the directory to a symlink was mishandled by the ort merge
   strategy, which has been corrected.

 * A bugfix to "git subtree" in its split and merge features.

 * Fix some bugs in the reflog messages when rebasing and changes the
   reflog messages of "rebase --apply" to match "rebase --merge" with
   the aim of making the reflog easier to parse.

 * "git rebase --keep-base" used to discard the commits that are
   already cherry-picked to the upstream, even when "keep-base" meant
   that the base, on top of which the history is being rebuilt, does
   not yet include these cherry-picked commits.  The --keep-base
   option now implies --reapply-cherry-picks and --no-fork-point
   options.

 * The way "git repack" creared temporary files when it received a
   signal was prone to deadlocking, which has been corrected.

 * Various tests exercising the transfer.credentialsInUrl
   configuration are taught to avoid making requests which require
   resolving localhost to reduce CI-flakiness.

 * The adjust_shared_perm() helper function learned to refrain from
   setting the "g+s" bit on directories when it is not necessary.

 * "git archive" mistakenly complained twice about a missing
   executable, which has been corrected.

 * Fix a bug where `git branch -d` did not work on an orphaned HEAD.

 * `git rebase --update-refs` would delete references when all
   `update-ref` commands in the sequencer were removed, which has been
   corrected.

 * Fix a regression in the bisect-helper which mistakenly treats
   arguments to the command given to 'git bisect run' as arguments to
   the helper.

 * Correct an error where `git rebase` would mistakenly use a branch or
   tag named "refs/rewritten/xyz" when missing a rebase label.

 * Other code cleanup, docfix, build fix, etc.
   (merge 413bc6d20a ds/cmd-main-reorder later to maint).
   (merge 8d2863e4ed nw/t1002-cleanup later to maint).

----------------------------------------------------------------

Changes since v2.38.0 are as follows:

Alejandro R. Sedeño (1):
      git-compat-util.h: GCC deprecated message arg only in GCC 4.5+

Alex Henrie (2):
      fsmonitor--daemon: don't translate literal commands
      push: improve grammar of branch.autoSetupMerge advice

Anh Le (2):
      index: add trace2 region for clear skip worktree
      index: raise a bug if the index is materialised more than once

Arthur Chan (1):
      fuzz: reorganise the path for existing oss-fuzz fuzzers

Daniel Sonbolian (1):
      git.c: improve code readability in cmd_main()

Debra Obondo (1):
      t7001-mv.sh: modernizing test script using functions

Derrick Stolee (15):
      maintenance: add 'unregister --force'
      scalar: make 'unregister' idempotent
      gc: replace config subprocesses with API calls
      string-list: document iterator behavior on NULL input
      bundle-uri: fix technical doc issues
      bundle-uri: use plain string in find_temp_filename()
      bundle-uri: create bundle_list struct and helpers
      bundle-uri: create base key-value pair parsing
      bundle-uri: parse bundle list in config format
      bundle-uri: limit recursion depth for bundle lists
      bundle: properly clear all revision flags
      bundle-uri: fetch a list of bundles
      bundle: add flags to verify_bundle()
      bundle-uri: quiet failed unbundlings
      bundle-uri: suppress stderr from remote-https

Diomidis Spinellis (1):
      grep: fix multibyte regex handling under macOS

Elijah Newren (4):
      merge-ort: fix bug with dir rename vs change dir to symlink
      merge-tree: update documentation for differences in -z output
      merge-tree: support multiple batched merges with --stdin
      sparse-checkout.txt: new document with sparse-checkout directions

Emily Shaffer (2):
      gc: add tests for --cruft and friends
      config: let feature.experimental imply gc.cruftPacks=true

Eric DeCosta (6):
      fsmonitor: refactor filesystem checks to common interface
      fsmonitor: relocate socket file if .git directory is remote
      fsmonitor: avoid socket location check if using hook
      fsmonitor: deal with synthetic firmlinks on macOS
      fsmonitor: check for compatability before communicating with fsmonitor
      fsmonitor: add documentation for allowRemote and socketDir options

Eric Sunshine (8):
      check-non-portable-shell: detect obsolescent egrep/fgrep
      chainlint: add explanatory comments
      chainlint: tighten accuracy when consuming input stream
      chainlint: latch start/end position of each token
      chainlint: annotate original test definition rather than token stream
      chainlint: sidestep impoverished macOS "terminfo"
      chainlint: latch line numbers at which each token starts and ends
      chainlint: prefix annotated test definition with line numbers

Eric Wong (1):
      delta-islands: free island-related data after use

Glen Choo (2):
      config: respect includes in protected config
      http: redact curl h2h3 headers in info

Han-Wen Nienhuys (1):
      refs: unify parse_worktree_ref() and ref_type()

Jeff Hostetler (9):
      config.mak.dev: disable suggest braces error on old clang versions
      trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx
      tr2tls: clarify TLS terminology
      api-trace2.txt: elminate section describing the public trace2 API
      trace2: rename the thread_name argument to trace2_thread_start
      trace2: improve thread-name documentation in the thread-context
      trace2: convert ctx.thread_name from strbuf to pointer
      trace2: add stopwatch timers
      trace2: add global counter mechanism

Jeff King (41):
      fsck: free tree buffers after walking unreachable objects
      fsck: turn off save_commit_buffer
      parse_object_buffer(): respect save_commit_buffer
      clone: allow "--bare" with "-o"
      remote: handle rename of remote without fetch refspec
      shell: add basic tests
      shell: limit size of interactive commands
      sequencer: detect author name errors in read_author_script()
      test-submodule: inline resolve_relative_url() function
      multi-pack-index: avoid writing to global in option callback
      commit: avoid writing to global in option callback
      attr: drop DEBUG_ATTR code
      dir: use fspathncmp() in pl_hashmap_cmp()
      fsmonitor: fix leak of warning message
      diffstat_consume(): assert non-zero length
      submodule--helper: drop unused argc from module_list_compute()
      update-index: drop unused argc from do_reupdate()
      mark unused parameters in trivial compat functions
      object-file: mark unused parameters in hash_unknown functions
      string-list: mark unused callback parameters
      date: mark unused parameters in handler functions
      apply: mark unused parameters in handlers
      apply: mark unused parameters in noop error/warning routine
      convert: mark unused parameter in null stream filter
      diffcore-pickaxe: mark unused parameters in pickaxe functions
      ll-merge: mark unused parameters in callbacks
      Makefile: force -O0 when compiling with SANITIZE=leak
      repack: convert "names" util bitfield to array
      repack: populate extension bits incrementally
      repack: expand error message for missing pack files
      repack: use tempfiles for signal cleanup
      repack: drop remove_temporary_files()
      Git.pm: trust rev-parse to find bare repositories
      t7700: annotate cruft-pack failure with ok=sigpipe
      shortlog: accept `--date`-related options
      Makefile: force -O0 when compiling with SANITIZE=leak
      t5516: move plaintext-password tests from t5601 and t5516
      ref-filter: fix parsing of signatures without blank lines
      ref-filter: fix parsing of signatures with CRLF and no body
      branch: gracefully handle '-d' on orphan HEAD
      t: run t5551 tests with both HTTP and HTTP/2

Jerry Zhang (6):
      patch-id: fix stable patch id for binary / header-only
      patch-id: use stable patch-id for rebases
      builtin: patch-id: fix patch-id with binary diffs
      patch-id: fix patch-id for mode changes
      builtin: patch-id: add --verbatim as a command mode
      builtin: patch-id: remove unused diff-tree prefix

Johannes Altmanninger (1):
      sequencer: avoid dropping fixup commit that targets self via commit-ish

Johannes Schindelin (11):
      merge-ort: fix segmentation fault in read-only repositories
      merge-ort: return early when failing to write a blob
      cmake: make it easier to diagnose regressions in CTest runs
      cmake: copy the merge tools for testing
      add -p: avoid ambiguous signed/unsigned comparison
      cmake: avoid editing t/test-lib.sh
      cmake: increase time-out for a long-running test
      t5516/t5601: be less strict about the number of credential warnings
      scalar reconfigure -a: remove stale `scalar.repo` entries
      ci: use a newer `github-script` version
      tests(scalar): tighten the stale `scalar.repo` test some

John Cai (3):
      tmp-objdir: skip clean up when handling a signal
      fsck: remove the unused BAD_TAG_OBJECT
      fsck: document msg-id

Jonathan Tan (4):
      promisor-remote: remove a return value
      promisor-remote: die upon failing fetch
      negotiator/skipping: avoid stack overflow
      Doc: document push.recurseSubmodules=only

Julia Ramer (1):
      embargoed releases: also describe the git-security list and the process

Junio C Hamano (26):
      environ: document GIT_SSL_NO_VERIFY
      environ: explain Boolean environment variables
      environ: GIT_FLUSH should be made a usual Boolean
      environ: simplify description of GIT_INDEX_FILE
      environ: GIT_INDEX_VERSION affects not just a new repository
      branch: do not fail a no-op --edit-desc
      SubmittingPatches: use usual capitalization in the log message body
      Start 2.39 cycle
      symbolic-ref: teach "--[no-]recurse" option
      The (real) first batch for 2.39
      The second batch
      The third batch
      The fourth batch
      ci: add address and undefined sanitizer tasks
      ci: use DC_SHA1=YesPlease on osx-clang job for CI
      The fifth batch
      diff: leave NEEDWORK notes in show_stats() function
      fsck: remove the unused MISSING_TREE_OBJECT
      Documentation: add lint-fsck-msgids
      Downmerge a handful of topics for 2.38.2
      The sixth batch
      Downmerge a bit more for 2.38.2
      The seventh batch
      The eighth batch
      adjust_shared_perm(): leave g+s alone when the group does not matter
      Git 2.39-rc0

Kevin Backhouse (1):
      alias.c: reject too-long cmdline strings in split_cmdline()

Kousik Sanagavarapu (1):
      repository-version.txt: partialClone casing change

M Hickford (4):
      Documentation/gitcredentials.txt: mention password alternatives
      Documentation: increase example cache timeout to 1 hour
      docs: clarify that credential discards unrecognised attributes
      Docs: describe how a credential-generating helper works

Martin Ågren (1):
      test-lib-functions: drop redundant diagnostic print

Matthew John Cheetham (3):
      wincred: ignore unknown lines (do not die)
      netrc: ignore unknown lines (do not die)
      osxkeychain: clarify that we ignore unknown lines

Michael J Gruber (1):
      notes: avoid empty line in template

Michael McClimon (1):
      Git.pm: add semicolon after catch statement

Noah Betzen (1):
      mergetool.txt: typofix 'overwriten' -> 'overwritten'

Nsengiyumva Wilberforce (1):
      t1002: modernize outdated conditional

Patrick Steinhardt (7):
      refs: fix memory leak when parsing hideRefs config
      refs: get rid of global list of hidden refs
      revision: move together exclusion-related functions
      revision: introduce struct to handle exclusions
      revision: add new parameter to exclude hidden refs
      rev-parse: add `--exclude-hidden=` option
      receive-pack: only use visible refs for connectivity check

Philip Oakley (4):
      doc: use "commit-graph" hyphenation consistently
      doc: use 'object database' not ODB or abbreviation
      glossary: add "commit graph" description
      glossary: add reachability bitmap description

Philippe Blain (9):
      test-lib-functions: mark 'test_commit' variables as 'local'
      subtree: use 'git rev-parse --verify [--quiet]' for better error messages
      subtree: add 'die_incompatible_opt' function to reduce duplication
      subtree: prefix die messages with 'fatal'
      subtree: define a variable before its first use in 'find_latest_squash'
      subtree: use named variables instead of "$@" in cmd_pull
      subtree: process 'git-subtree-split' trailer in separate function
      subtree: fix squash merging after annotated tag was squashed merged
      subtree: fix split after annotated tag was squashed merged

Phillip Wood (23):
      mailinfo -b: fix an out of bounds access
      ssh signing: return an error when signature cannot be read
      t3435: remove redundant test case
      t3416: tighten two tests
      t3416: set $EDITOR in subshell
      rebase: be stricter when reading state files containing oids
      rebase: store orig_head as a commit
      rebase: rename merge_base to branch_base
      rebase: factor out branch_base calculation
      rebase --keep-base: imply --reapply-cherry-picks
      rebase --keep-base: imply --no-fork-point
      rebase --apply: remove duplicated code
      t3406: rework rebase reflog tests
      rebase --merge: fix reflog when continuing
      rebase --merge: fix reflog message after skipping
      rebase --apply: respect GIT_REFLOG_ACTION
      rebase --apply: make reflog messages match rebase --merge
      rebase --abort: improve reflog message
      rebase: cleanup action handling
      sequencer: stop exporting GIT_REFLOG_ACTION
      rebase: stop exporting GIT_REFLOG_ACTION
      sequencer: unify label lookup
      sequencer: tighten label lookups

René Scharfe (20):
      revision: use strtol_i() for exclude_parent
      revisions.txt: unspecify order of resolved parts of ^!
      diff: support ^! for merges
      gc: simplify maintenance_task_pack_refs()
      t/lib-httpd: pass LANG and LC_ALL to Apache
      bisect--helper: plug strvec leak
      archive: deduplicate verbose printing
      submodule: use strvec_pushf() for --super-prefix
      run-command: fix return value comment
      am: simplify building "show" argument list
      bisect: simplify building "checkout" argument list
      bisect--helper: factor out do_bisect_run()
      sequencer: simplify building argument list in do_exec()
      use child_process member "args" instead of string array variable
      use child_process members "args" and "env" directly
      replace and remove run_command_v_opt_cd_env()
      replace and remove run_command_v_opt_tr2()
      replace and remove run_command_v_opt_cd_env_tr2()
      replace and remove run_command_v_opt()
      archive-tar: report filter start error only once

Ronan Pigott (2):
      for-each-repo: interpolate repo path arguments
      maintenance: add option to register in a specific config

Rubén Justo (5):
      ref-filter.c: fix a leak in get_head_description
      branch: description for non-existent branch errors
      branch: support for shortcuts like @{-1}, completed
      branch: error copying or renaming a detached HEAD
      branch: error code with --edit-description

SZEDER Gábor (1):
      Documentation/build-docdep.perl: generate sorted output

Sergey Organov (3):
      diff-merges: cleanup func_by_opt()
      diff-merges: cleanup set_diff_merges()
      diff-merges: clarify log.diffMerges documentation

Shaoxuan Yuan (1):
      builtin/grep.c: integrate with sparse index

Sotir Danailov (1):
      docs: git-send-email: difference between ssl and tls smtp-encryption

Taylor Blau (64):
      Documentation/git-multi-pack-index.txt: fix typo
      Documentation/git-multi-pack-index.txt: clarify expire behavior
      midx.c: prevent `expire` from removing the cruft pack
      midx.c: avoid cruft packs with `repack --batch-size=0`
      midx.c: replace `xcalloc()` with `CALLOC_ARRAY()`
      midx.c: remove unnecessary loop condition
      midx.c: avoid cruft packs with non-zero `repack --batch-size`
      builtin/clone.c: disallow `--local` clones with symlinks
      t/lib-submodule-update.sh: allow local submodules
      t/t1NNN: allow local submodules
      t/2NNNN: allow local submodules
      t/t3NNN: allow local submodules
      t/t4NNN: allow local submodules
      t/t5NNN: allow local submodules
      t/t6NNN: allow local submodules
      t/t7NNN: allow local submodules
      t/t9NNN: allow local submodules
      transport: make `protocol.file.allow` be "user" by default
      t1092: prepare for changing protocol.file.allow
      t2080: prepare for changing protocol.file.allow
      t1092: prepare for changing protocol.file.allow
      t2080: prepare for changing protocol.file.allow
      t3207: prepare for changing protocol.file.allow
      t5516: prepare for changing protocol.file.allow
      t5537: prepare for changing protocol.file.allow
      t7814: prepare for changing protocol.file.allow
      t3206: prepare for changing protocol.file.allow
      t5537: prepare for changing protocol.file.allow
      Git 2.30.6
      Git 2.31.5
      Git 2.32.4
      Git 2.33.5
      Git 2.34.5
      Git 2.35.5
      Git 2.36.3
      t7527: prepare for changing protocol.file.allow
      Git 2.37.4
      Git 2.38.1
      midx.c: fix whitespace typo
      midx.c: consider annotated tags during bitmap selection
      midx.c: instrument MIDX and bitmap generation with trace2 regions
      pack-bitmap-write.c: instrument number of reused bitmaps
      builtin/repack.c: remove redundant pack-based bitmaps
      repack: don't remove .keep packs with `--pack-kept-objects`
      builtin/repack.c: pass "out" to `prepare_pack_objects`
      builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`
      builtin/repack.c: write cruft packs to arbitrary locations
      builtin/repack.c: implement `--expire-to` for storing pruned objects
      shortlog: make trailer insertion a noop when appropriate
      shortlog: extract `--group` fragment for translation
      shortlog: support arbitrary commit format `--group`s
      shortlog: extract `shortlog_finish_setup()`
      shortlog: implement `--group=author` in terms of `--group=<format>`
      shortlog: implement `--group=committer` in terms of `--group=<format>`
      apply: reject patches larger than ~1 GiB
      Documentation/howto/maintain-git.txt: fix Meta/redo-jch.sh invocation
      The ninth batch
      Documentation: build redo-jch.sh from master..jch
      Documentation: build redo-seen.sh from jch..seen
      The tenth batch
      The eleventh batch
      The twelfth batch
      builtin/gc.c: fix use-after-free in maintenance_unregister()
      The thirteenth batch

Torsten Bögershausen (1):
      diff.c: use utf8_strwidth() to count display width

Victoria Dye (7):
      read-cache: avoid misaligned reads in index v4
      rebase --update-refs: avoid unintended ref deletion
      cache-tree: add perf test comparing update and prime
      unpack-trees: add 'skip_cache_tree_update' option
      reset: use 'skip_cache_tree_update' option
      read-tree: use 'skip_cache_tree_update' option
      rebase: use 'skip_cache_tree_update' option

Vincent Bernat (1):
      ls-files: fix --ignored and --killed flags in synopsis

Vlad-Stefan Harbuz (1):
      Documentation: fix typo

srz_zumix (1):
      fsmonitor--daemon: on macOS support symlink

Ævar Arnfjörð Bjarmason (100):
      test-lib: have SANITIZE=leak imply TEST_NO_MALLOC_CHECK
      CodingGuidelines: update for C99
      CodingGuidelines: mention dynamic C99 initializer elements
      CodingGuidelines: allow declaring variables in for loops
      CodingGuidelines: mention C99 features we can't use
      grep.c: remove "extended" in favor of "pattern_expression", fix segfault
      CodingGuidelines: recommend against unportable C99 struct syntax
      bundle-uri: create "key=value" line parsing
      bundle-uri: unit test "key=value" parsing
      run-command test helper: use "else if" pattern
      run-command API: have "run_processes_parallel{,_tr2}()" return void
      run-command tests: use "return", not "exit"
      run-command API: make "n" parameter a "size_t"
      run-command API: don't fall back on online_cpus()
      run-command.c: use designated init for pp_init(), add "const"
      run-command API: have run_process_parallel() take an "opts" struct
      run-command API: move *_tr2() users to "run_processes_parallel()"
      run-command.c: make "struct parallel_processes" const if possible
      run-command.c: don't copy *_fn to "struct parallel_processes"
      run-command.c: don't copy "ungroup" to "struct parallel_processes"
      run-command.c: don't copy "data" to "struct parallel_processes"
      run-command.c: use "opts->processes", not "pp->max_processes"
      run-command.c: pass "opts" further down, and use "opts->processes"
      run-command.c: remove "max_processes", add "const" to signal() handler
      tests: assert *.txt SYNOPSIS and -h output
      CodingGuidelines: update and clarify command-line conventions
      builtin/bundle.c: indent with tabs
      bundle: define subcommand -h in terms of command -h
      doc SYNOPSIS: don't use ' for subcommands
      doc SYNOPSIS: consistently use ' for commands
      built-ins: consistently add "\n" between "usage" and options
      doc txt & -h consistency: word-wrap
      doc txt & -h consistency: fix incorrect alternates syntax
      doc txt & -h consistency: add "-z" to cat-file "-h"
      doc txt & -h consistency: balance unbalanced "[" and "]"
      doc txt & -h consistency: correct padding around "[]()"
      stash doc SYNOPSIS & -h: correct padding around "[]()"
      doc txt & -h consistency: use "<options>", not "<options>..."
      doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
      doc txt & -h consistency: fix mismatching labels
      doc txt & -h consistency: add or fix optional "--" syntax
      doc txt & -h consistency: make output order consistent
      doc txt & -h consistency: add missing options and labels
      doc txt & -h consistency: make "rerere" consistent
      doc txt & -h consistency: make "read-tree" consistent
      doc txt & -h consistency: make "bundle" consistent
      doc txt & -h consistency: use "git foo" form, not "git-foo"
      doc txt & -h consistency: add missing options
      doc txt & -h consistency: make "stash" consistent
      doc txt & -h consistency: make "annotate" consistent
      doc txt & -h consistency: use "[<label>...]" for "zero or more"
      doc txt & -h consistency: make "diff-tree" consistent
      doc txt & -h consistency: make "commit" consistent
      reflog doc: list real subcommands up-front
      worktree: define subcommand -h in terms of command -h
      doc txt & -h consistency: make "worktree" consistent
      tests: start asserting that *.txt SYNOPSIS matches -h output
      tests: assert consistent whitespace in -h output
      fsmonitor OSX: compile with DC_SHA1=YesPlease
      merge: remove always-the-same "verbose" arguments
      hook tests: fix redirection logic error in 96e7225b310
      submodule tests: reset "trace.out" between "grep" invocations
      run-command tests: test stdout of run_command_parallel()
      Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)
      cocci rules: remove unused "F" metavariable from pending rule
      Makefile: add ability to TAB-complete cocci *.patch rules
      Makefile: have "coccicheck" re-run if flags change
      Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
      cocci: split off include-less "tests" from SPATCH_FLAGS
      cocci: split off "--all-includes" from SPATCH_FLAGS
      cocci: make "coccicheck" rule incremental
      cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
      Makefile: copy contrib/coccinelle/*.cocci to build/
      cocci rules: remove <id>'s from rules that don't need them
      cocci: run against a generated ALL.cocci
      spatchcache: add a ccache-alike for "spatch"
      Makefile: always (re)set DC_SHA1 on fallback
      INSTALL: remove discussion of SHA-1 backends
      Makefile: correct DC_SHA1 documentation
      Makefile: create and use sections for "define" flag listing
      Makefile: rephrase the discussion of *_SHA1 knobs
      Makefile: document default SHA-256 backend
      Makefile: document SHA-1 and SHA-256 default and selection order
      Makefile & test-tool: replace "DC_SHA1" variable with a "define"
      Makefile: document default SHA-1 backend on OSX
      Makefile: discuss SHAttered in *_SHA{1,256} discussion
      submodule--helper: move "config" to a test-tool
      submodule tests: add tests for top-level flag output
      submodule--helper: fix a memory leak in "status"
      submodule tests: test for a "foreach" blind-spot
      submodule.c: refactor recursive block out of absorb function
      submodule API & "absorbgitdirs": remove "----recursive" option
      submodule--helper: remove --prefix from "absorbgitdirs"
      submodule--helper: drop "update --prefix <pfx>" for "-C <pfx> update"
      submodule--helper: use OPT_SUBCOMMAND() API
      revisions API: extend the nascent REV_INFO_INIT macro
      t7610: fix flaky timeout issue, don't clone from example.com
      Makefile: don't create a ".build/.build/" for cocci, fix output
      maintenance --unregister: fix uninit'd data use & -Wdeclaration-after-statement
      t7610: use "file:///dev/null", not "/dev/null", fixes MinGW

Đoàn Trần Công Danh (8):
      CodingGuidelines: allow grep -E
      t: remove \{m,n\} from BRE grep usage
      t: convert egrep usage to "grep -E"
      t: convert fgrep usage to "grep -F"
      Makefile: clarify runtime relative gitexecdir
      bisect--helper: remove unused options
      bisect--helper: move all subcommands into their own functions
      bisect--helper: parse subcommand with OPT_SUBCOMMAND


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.38.0
@ 2022-10-03 17:26  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-10-03 17:26 UTC (permalink / raw)
  To: git; +Cc: git-packagers

The latest feature release Git v2.38.0 is now available at the
usual places.  It is comprised of 699 non-merge commits since
v2.37.0, contributed by 92 people, 24 of which are new faces [*].

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.38.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.37.0 are as follows.
Welcome to the Git development community!

  Andrew Olsen, Anthony Delannoy, Carlos López, Celeste Liu,
  Cleber Rosa, David Plumpton, Elijah Conners, Eric DeCosta,
  Goss Geppert, Hubert Bossot, Ilya K, Ingy dot Net, Jacob Stopak,
  Julien Rouhaud, Kilian Kilger, Lana Deere, Manuel Boni, Matthew
  Klein, Miaoqian Lin, Moritz Baumann, Pavel Rappo, Pierre Garnier,
  Richard Oliver, and Xavier Morel.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Abhradeep Chakraborty, Adam Dinwoodie, Ævar Arnfjörð
  Bjarmason, Alexander Shopov, Alex Henrie, Arthur Milchior,
  Bagas Sanjaya, brian m. carlson, Calvin Wan, Carlo Marcelo
  Arenas Belón, Christian Couder, Christoph Reiter, Derrick
  Stolee, Dimitriy Ryazantcev, Đoàn Trần Công Danh, Elijah
  Newren, Emily Shaffer, Emir SARI, Eric Sunshine, Fangyi
  Zhou, Felipe Contreras, Fernando Ramos, Glen Choo, Han Xin,
  Hariom Verma, Jacob Keller, Jaydeep Das, Jean-Noël Avila,
  Jeff King, Jiang Xin, Joey Hess, Johannes Schindelin, John
  Cai, Jonathan Tan, Jordi Mas, Josh Steadmon, Junio C Hamano,
  Justin Donnelly, Kyle Zhao, Lessley Dennington, Li Linchao,
  Linus Torvalds, Martin Ågren, Matheus Tavares, Matthew John
  Cheetham, Michael J Gruber, Øystein Walle, Peter Krefting,
  Philip Oakley, Philippe Blain, Phillip Szelat, Phillip Wood,
  Ralf Thielow, Randall S. Becker, Renato Botelho, René Scharfe,
  Shaoxuan Yuan, Siddharth Asthana, SZEDER Gábor, Tao Klerks,
  Taylor Blau, Teng Long, Todd Zullinger, Torsten Bögershausen,
  Victoria Dye, Yi-Jyun Pan, ZheNing Hu, and 依云.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.38 Release Notes
=======================

UI, Workflows & Features

 * "git remote show [-n] frotz" now pays attention to negative
   pathspec.

 * "git push" sometimes performs poorly when reachability bitmaps are
   used, even in a repository where other operations are helped by
   bitmaps.  The push.useBitmaps configuration variable is introduced
   to allow disabling use of reachability bitmaps only for "git push".

 * "git grep -m<max-hits>" is a way to limit the hits shown per file.

 * "git merge-tree" learned a new mode where it takes two commits and
   computes a tree that would result in the merge commit, if the
   histories leading to these two commits were to be merged.

 * "git mv A B" in a sparsely populated working tree can be asked to
   move a path between directories that are "in cone" (i.e. expected
   to be materialized in the working tree) and "out of cone"
   (i.e. expected to be hidden).  The handling of such cases has been
   improved.

 * Earlier, HTTP transport clients learned to tell the server side
   what locale they are in by sending Accept-Language HTTP header, but
   this was done only for some requests but not others.

 * Introduce a safe.barerepository configuration variable that
   allows users to forbid discovery of bare repositories.

 * Various messages that come from the pack-bitmap codepaths have been
   tweaked.

 * "git rebase -i" learns to update branches whose tip appear in the
   rebased range with "--update-refs" option.

 * "git ls-files" learns the "--format" option to tweak its output.

 * "git cat-file" learned an option to use the mailmap when showing
   commit and tag objects.

 * When "git merge" finds that it cannot perform a merge, it should
   restore the working tree to the state before the command was
   initiated, but in some corner cases it didn't.

 * Operating modes like "--batch" of "git cat-file" command learned to
   take NUL-terminated input, instead of one-item-per-line.

 * "git rm" has become more aware of the sparse-index feature.

 * "git rev-list --disk-usage" learned to take an optional value
   "human" to show the reported value in human-readable format, like
   "3.40MiB".

 * The "diagnose" feature to create a zip archive for diagnostic
   material has been lifted from "scalar" and made into a feature of
   "git bugreport".

 * The namespaces used by "log --decorate" from "refs/" hierarchy by
   default has been tightened.

 * "git rev-list --ancestry-path=C A..B" is a natural extension of
   "git rev-list A..B"; instead of choosing a subset of A..B to those
   that have ancestry relationship with A, it lets a subset with
   ancestry relationship with C.

 * "scalar" now enables built-in fsmonitor on enlisted repositories,
   when able.

 * The bash prompt (in contrib/) learned to optionally indicate when
   the index is unmerged.

 * "git clone" command learned the "--bundle-uri" option to coordinate
   with hosting sites the use of pre-prepared bundle files.

 * "git range-diff" learned to honor pathspec argument if given.

 * "git format-patch --from=<ident>" can be told to add an in-body
   "From:" line even for commits that are authored by the given
   <ident> with "--force-in-body-from" option.

 * The built-in fsmonitor refuses to work on a network mounted
   repositories; a configuration knob for users to override this has
   been introduced.

 * The "scalar" addition from Microsoft is now part of the core Git
   installation.


Performance, Internal Implementation, Development Support etc.

 * Collection of what is referenced by objects in promisor packs have
   been optimized to inspect these objects in the in-pack order.

 * Introduce a helper to see if a branch is already being worked on
   (hence should not be newly checked out in a working tree), which
   performs much better than the existing find_shared_symref() to
   replace many uses of the latter.

 * Teach "git archive" to (optionally and then by default) avoid
   spawning an external "gzip" process when creating ".tar.gz" (and
   ".tgz") archives.

 * Allow large objects read from a packstream to be streamed into a
   loose object file straight, without having to keep it in-core as a
   whole.

 * Further preparation to turn git-submodule.sh into a builtin
   continues.

 * Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
   macro, which would improve maintainability and readability.

 * Teach "make all" to build gitweb as well.

 * Tweak tests so that they still work when the "git init" template
   did not create .git/info directory.

 * Add Coccinelle rules to detect the pattern of initializing and then
   finalizing a structure without using it in between at all, which
   happens after code restructuring and the compilers fail to
   recognize as an unused variable.

 * The code to convert between GPG trust level strings and internal
   constants we use to represent them have been cleaned up.

 * Support for libnettle as SHA256 implementation has been added.

 * The way "git multi-pack" uses parse-options API has been improved.

 * A Coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
   macro has been improved.

 * API tweak to make it easier to run fuzz testing on commit-graph parser.

 * Omit fsync-related trace2 entries when their values are all zero.

 * The codepath to write multi-pack index has been taught to release a
   large chunk of memory that holds an array of objects in the packs,
   as soon as it is done with the array, to reduce memory consumption.

 * Add a level of redirection to array allocation API in xdiff part,
   to make it easier to share with the libgit2 project.

 * "git fetch" client logs the partial clone filter used in the trace2
   output.

 * The "bundle URI" design gets documented.

 * The common ancestor negotiation exchange during a "git fetch"
   session now leaves trace log.

 * Test portability improvements.
   (merge 4d1d843be7 mt/rot13-in-c later to maint).

 * The "subcommand" mode is introduced to parse-options API and update
   the command line parser of Git commands with subcommands.

 * The pack bitmap file gained a bitmap-lookup table to speed up
   locating the necessary bitmap for a given commit.

 * The assembly version of SHA-1 implementation for PPC has been
   removed.

 * The server side that responds to "git fetch" and "git clone"
   request has been optimized by allowing it to send objects in its
   object store without recomputing and validating the object names.

 * Annotate function parameters that are not used (but cannot be
   removed for structural reasons), to prepare us to later compile
   with -Wunused warning turned on.

 * Share the text used to explain configuration variables used by "git
   <subcmd>" in "git help <subcmd>" with the text from "git help config".

 * "git mv A B" in a sparsely populated working tree can be asked to
   move a path from a directory that is "in cone" to another directory
   that is "out of cone".  Handling of such a case has been improved.

 * The chainlint script for our tests has been revamped.


Fixes since v2.37
-----------------

 * Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
   correctly record a removed file to the index, which was fixed.

 * Certain diff options are currently ignored when combined-diff is
   shown; mark them as incompatible with the feature.

 * Adjust technical/bitmap-format to be formatted by AsciiDoc, and
   add some missing information to the documentation.

 * Fixes for tests when the source directory has unusual characters in
   its path, e.g. whitespaces, double-quotes, etc.

 * "git mktree --missing" lazily fetched objects that are missing from
   the local object store, which was totally unnecessary for the purpose
   of creating the tree object(s) from its input.

 * Give _() markings to fatal/warning/usage: labels that are shown in
   front of these messages.

 * References to commands-to-be-typed-literally in "git rebase"
   documentation mark-up have been corrected.

 * In a non-bare repository, the behavior of Git when the
   core.worktree configuration variable points at a directory that has
   a repository as its subdirectory, regressed in Git 2.27 days.

 * Recent update to vimdiff layout code has been made more robust
   against different end-user vim settings.

 * Plug various memory leaks, both in the main code and in test-tool
   commands.

 * Fixes a long-standing corner case bug around directory renames in
   the merge-ort strategy.

 * The resolve-undo information in the index was not protected against
   GC, which has been corrected.

 * A corner case bug where lazily fetching objects from a promisor
   remote resulted in infinite recursion has been corrected.

 * "git clone" from a repository with some ref whose HEAD is unborn
   did not set the HEAD in the resulting repository correctly, which
   has been corrected.

 * An earlier attempt to plug leaks placed a clean-up label to jump to
   at a bogus place, which as been corrected.

 * Variable quoting fix in the vimdiff driver of "git mergetool"

 * "git shortlog -n" relied on the underlying qsort() to be stable,
   which shouldn't have.  Fixed.

 * A fix for a regression in test framework.

 * mkstemp() emulation on Windows has been improved.

 * Add missing documentation for "include" and "includeIf" features in
   "git config" file format, which incidentally teaches the command
   line completion to include them in its offerings.

 * Avoid "white/black-list" in documentation and code comments.

 * Workaround for a compiler warning against use of die() in
   osx-keychain (in contrib/).

 * Workaround for a false positive compiler warning.

 * "git p4" working on UTF-16 files on Windows did not implement
   CRLF-to-LF conversion correctly, which has been corrected.

 * "git p4" did not handle non-ASCII client name well, which has been
   corrected.

 * "rerere-train" script (in contrib/) used to honor commit.gpgSign
   while recreating the throw-away merges.

 * "git checkout" miscounted the paths it updated, which has been
   corrected.

 * Fix for a bug that makes write-tree to fail to write out a
   non-existent index as a tree, introduced in 2.37.

 * There was a bug in the codepath to upgrade generation information
   in commit-graph from v1 to v2 format, which has been corrected.

 * Gitweb had legacy URL shortener that is specific to the way
   projects hosted on kernel.org used to (but no longer) work, which
   has been removed.

 * Fix build procedure for Windows that uses CMake so that it can pick
   up the shell interpreter from local installation location.

 * Conditionally allow building Python interpreter on Windows

 * Fix to lstat() emulation on Windows.

 * Older gcc with -Wall complains about the universal zero initializer
   "struct s = { 0 };" idiom, which makes developers' lives
   inconvenient (as -Werror is enabled by DEVELOPER=YesPlease).  The
   build procedure has been tweaked to help these compilers.

 * Plug memory leaks in the failure code path in the "merge-ort" merge
   strategy backend.

 * "git symbolic-ref symref non..sen..se" is now diagnosed as an error.

 * A follow-up fix to a fix for a regression in 2.36 around hooks.

 * Avoid repeatedly running getconf to ask libc version in the test
   suite, and instead just as it once per script.

 * Platform-specific code that determines if a directory is OK to use
   as a repository has been taught to report more details, especially
   on Windows.

 * "vimdiff3" regression fix.

 * "git fsck" reads mode from tree objects but canonicalizes the mode
   before passing it to the logic to check object sanity, which has
   hid broken tree objects from the checking logic.  This has been
   corrected, but to help existing projects with broken tree objects
   that they cannot fix retroactively, the severity of anomalies this
   code detects has been demoted to "info" for now.

 * Fixes to sparse index compatibility work for "reset" and "checkout"
   commands.

 * An earlier optimization discarded a tree-object buffer that is
   still in use, which has been corrected.

 * Fix deadlocks between main Git process and subprocess spawned via
   the pipe_command() API, that can kill "git add -p" that was
   reimplemented in C recently.

 * The sequencer machinery translated messages left in the reflog by
   mistake, which has been corrected.

 * xcalloc(), imitating calloc(), takes "number of elements of the
   array", and "size of a single element", in this order.  A call that
   does not follow this ordering has been corrected.

 * The preload-index codepath made copies of pathspec to give to
   multiple threads, which were left leaked.

 * Update the version of Ubuntu used for GitHub Actions CI from 18.04
   to 22.04.

 * The auto-stashed local changes created by "git merge --autostash"
   was mixed into a conflicted state left in the working tree, which
   has been corrected.

 * Multi-pack index got corrupted when preferred pack changed from one
   pack to another in a certain way, which has been corrected.
   (merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint).

 * The clean-up of temporary files created via mks_tempfile_dt() was
   racy and attempted to unlink() the leading directory when signals
   are involved, which has been corrected.
   (merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint).

 * FreeBSD portability fix for "git maintenance" that spawns "crontab"
   to schedule tasks.
   (merge ee69e7884e bc/gc-crontab-fix later to maint).

 * Those who use diff-so-fancy as the diff-filter noticed a regression
   or two in the code that parses the diff output in the built-in
   version of "add -p", which has been corrected.
   (merge 0a101676e5 js/add-p-diff-parsing-fix later to maint).

 * Segfault fix-up to an earlier fix to the topic to teach "git reset"
   and "git checkout" work better in a sparse checkout.
   (merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint).

 * "git diff --no-index A B" managed its the pathnames of its two
   input files rather haphazardly, sometimes leaking them.  The
   command line argument processing has been straightened out to clean
   it up.
   (merge 2b43dd0eb5 rs/diff-no-index-cleanup later to maint).

 * "git rev-list --verify-objects" ought to inspect the contents of
   objects and notice corrupted ones, but it didn't when the commit
   graph is in use, which has been corrected.
   (merge b27ccae34b jk/rev-list-verify-objects-fix later to maint).

 * More fixes to "add -p"
   (merge 64ec8efb83 js/builtin-add-p-portability-fix later to maint).

 * The parser in the script interface to parse-options in "git
   rev-parse" has been updated to diagnose a bogus input correctly.
   (merge f20b9c36d0 ow/rev-parse-parseopt-fix later to maint).

 * The code that manages list-object-filter structure, used in partial
   clones, leaked the instances, which has been plugged.
   (merge 66eede4a37 jk/plug-list-object-filter-leaks later to maint).

 * Fix another UI regression in the reimplemented "add -p".
   (merge f6f0ee247f rs/add-p-worktree-mode-prompt-fix later to maint).

 * "git fetch" over protocol v2 sent an incorrect ref prefix request
   to the server and made "git pull" with configured fetch refspec
   that does not cover the remote branch to merge with fail, which has
   been corrected.
   (merge 49ca2fba39 jk/proto-v2-ref-prefix-fix later to maint).

 * A result from opendir() was leaking in the commit-graph expiration
   codepath, which has been plugged.
   (merge 12f1ae5324 ml/commit-graph-expire-dir-leak-fix later to maint).

 * Just like we have coding guidelines, we now have guidelines for
   reviewers.
   (merge e01b851923 vd/doc-reviewing-guidelines later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 77b9e85c0f vd/fix-perf-tests later to maint).
   (merge 0682bc43f5 jk/test-crontab-fixes later to maint).
   (merge b46dd1726c cc/doc-trailer-whitespace-rules later to maint).

----------------------------------------------------------------

Changes since v2.37.0 are as follows:

Abhradeep Chakraborty (9):
      bitmap-format.txt: feed the file to asciidoc to generate html
      bitmap-format.txt: fix some formatting issues
      bitmap-format.txt: add information for trailing checksum
      Documentation/technical: describe bitmap lookup table extension
      bitmap: move `get commit positions` code to `bitmap_writer_finish`
      pack-bitmap-write.c: write lookup table extension
      pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
      pack-bitmap: prepare to read lookup table extension
      bitmap-lookup-table: add performance tests for lookup table

Adam Dinwoodie (1):
      t1800: correct test to handle Cygwin

Alex Henrie (5):
      gc: don't translate literal commands
      builtin/diagnose.c: don't translate the two mode values
      pack-bitmap: improve grammar of "xor chain" error message
      l10n: fr: don't say that merge is "the default strategy"
      l10n: es: update translation

Alexander Shopov (3):
      l10n: bg.po: Updated Bulgarian translation (5482t)
      l10n: bg.po: Updated Bulgarian translation (5484t)
      l10n: bg.po: Updated Bulgarian translation (5484t)

Anthony Delannoy (1):
      preload-index: fix memleak

Bagas Sanjaya (3):
      l10n: po-id for 2.38 (round 1)
      l10n: po-id for 2.38 (round 2)
      l10n: po-id for 2.38 (round 3)

Calvin Wan (1):
      submodule merge: update conflict error message

Carlo Marcelo Arenas Belón (2):
      setup: tighten ownership checks post CVE-2022-24765
      cmake: support local installations of git

Carlos López (1):
      grep: add --max-count command line option

Celeste Liu (1):
      contrib/rerere-train: avoid useless gpg sign in training

Christian Couder (1):
      Documentation: clarify whitespace rules for trailers

Cleber Rosa (1):
      setup: fix function name in a BUG() message

Derrick Stolee (51):
      branch: add branch_checked_out() helper
      branch: check for bisects and rebases
      fetch: use new branch_checked_out() and add tests
      branch: use branch_checked_out() when deleting refs
      branch: fix branch_checked_out() leaks
      t5510: replace 'origin' with URL more carefully
      vscode: improve tab size and wrapping
      git-rebase.txt: use back-ticks consistently
      pack-bitmap-write: use const for hashes
      midx: extract bitmap write setup
      midx: reduce memory pressure while writing bitmaps
      daemon: clarify directory arguments
      git-cvsserver: clarify directory list
      git.txt: remove redundant language
      t: avoid "whitelist"
      transport.c: avoid "whitelist"
      t2407: test bisect and rebase as black-boxes
      t2407: test branches currently using apply backend
      branch: consider refs under 'update-refs'
      rebase-interactive: update 'merge' description
      sequencer: define array with enum values
      sequencer: add update-ref command
      rebase: add --update-refs option
      rebase: update refs from 'update-ref' commands
      sequencer: rewrite update-refs as user edits todo list
      rebase: add rebase.updateRefs config option
      sequencer: ignore HEAD ref under --update-refs
      sequencer: notify user of --update-refs activity
      compat/win32: correct for incorrect compiler warning
      refs: allow "HEAD" as decoration filter
      t4207: modernize test
      t4207: test coloring of grafted decorations
      refs: add array of ref namespaces
      refs: use ref_namespaces for replace refs base
      log-tree: use ref_namespaces instead of if/else-if
      log: add default decoration filter
      log: add --clear-decorations option
      log: create log.initialDecorationSet=all
      maintenance: stop writing log.excludeDecoration
      fetch: use ref_namespaces during prefetch
      docs: document bundle URI standard
      bundle-uri: add example bundle organization
      remote-curl: add 'get' capability
      bundle-uri: create basic file-copy logic
      clone: add --bundle-uri option
      bundle-uri: add support for http(s):// and file://
      clone: --bundle-uri cannot be combined with --depth
      t6019: modernize tests with helper
      clone: warn on failure to repo_init()
      ci: update 'static-analysis' to Ubuntu 22.04
      pack-bitmap: remove trace2 region from hot path

Dimitriy Ryazantcev (1):
      i18n: mark message helpers prefix for translation

Elijah Conners (1):
      reftable: use a pointer for pq_entry param

Elijah Newren (43):
      merge-tree: rename merge_trees() to trivial_merge_trees()
      merge-tree: move logic for existing merge into new function
      merge-tree: add option parsing and initial shell for real merge function
      merge-tree: implement real merges
      merge-ort: split out a separate display_update_messages() function
      merge-tree: support including merge messages in output
      merge-ort: provide a merge_get_conflicted_files() helper function
      merge-ort: remove command-line-centric submodule message from merge-ort
      merge-tree: provide a list of which files have conflicts
      merge-tree: provide easy access to `ls-files -u` style info
      merge-ort: store more specific conflict information
      merge-ort: optionally produce machine-readable output
      merge-tree: allow `ls-files -u` style info to be NUL terminated
      merge-tree: add a --allow-unrelated-histories flag
      git-merge-tree.txt: add a section on potentional usage mistakes
      t6429: fix use of non-existent function
      t6423: add tests of dual directory rename plus add/add conflict
      merge-ort: small cleanups of check_for_directory_rename
      merge-ort: make a separate function for freeing struct collisions
      merge-ort: shuffle the computation and cleanup of potential collisions
      merge-ort: fix issue with dual rename and add/add conflict
      merge-ort-wrappers: make printed message match the one from recursive
      merge-resolve: abort if index does not match HEAD
      merge: abort if index does not match HEAD for trivial merges
      merge: do not abort early if one strategy fails to handle the merge
      merge: fix save_state() to work when there are stat-dirty files
      merge: make restore_state() restore staged state too
      merge: ensure we can actually restore pre-merge state
      merge: do not exit restore_state() prematurely
      merge-ort: remove translator lego in new "submodule conflict suggestion"
      merge-ort: avoid surprise with new sub_flag variable
      merge-ort: provide helpful submodule update message when possible
      merge-ort: remove code obsoleted by other changes
      rev-list-options.txt: fix simple typo
      revision: allow --ancestry-path to take an argument
      merge: only apply autostash when appropriate
      merge: cleanup confusing logic for handling successful merges
      merge: small code readability improvement
      t4301: add more interesting merge-tree testcases
      t64xx: convert 'test_create_repo' to 'git init'
      diff: have submodule_format logic avoid additional diff headers
      diff: fix filtering of additional headers under --remerge-diff
      diff: fix filtering of merge commits under --remerge-diff

Emir SARI (3):
      l10n: tr: Update translations for v2.38.0 round #1
      l10n: tr: v2.38.0 round 2
      l10n: tr: v2.38.0 3rd round

Eric DeCosta (1):
      fsmonitor: option to allow fsmonitor to run against network-mounted repos

Eric Sunshine (25):
      t2407: fix broken &&-chains in compound statement
      t1092: fix buggy sparse "blame" test
      t: detect and signal failure within loop
      t4301: account for behavior differences between sed implementations
      t4301: fix broken &&-chains and add missing loop termination
      t4301: emit blank line in more idiomatic fashion
      t: add skeleton chainlint.pl
      chainlint.pl: add POSIX shell lexical analyzer
      chainlint.pl: add POSIX shell parser
      chainlint.pl: add parser to validate tests
      chainlint.pl: add parser to identify test definitions
      chainlint.pl: validate test scripts in parallel
      chainlint.pl: don't require `return|exit|continue` to end with `&&`
      t/Makefile: apply chainlint.pl to existing self-tests
      chainlint.pl: don't require `&` background command to end with `&&`
      chainlint.pl: don't flag broken &&-chain if `$?` handled explicitly
      chainlint.pl: don't flag broken &&-chain if failure indicated explicitly
      chainlint.pl: complain about loops lacking explicit failure handling
      chainlint.pl: allow `|| echo` to signal failure upstream of a pipe
      t/chainlint: add more chainlint.pl self-tests
      test-lib: retire "lint harder" optimization hack
      test-lib: replace chainlint.sed with chainlint.pl
      t/Makefile: teach `make test` and `make prove` to run chainlint.pl
      t: retire unused chainlint.sed
      chainlint: colorize problem annotations and test delimiters

Fangyi Zhou (3):
      help: fix doubled words in explanation for developer interfaces
      l10n: zh_CN v2.38.0 rounds 1 & 2
      l10n: zh_CN: 2.38.0 round 3

Felipe Contreras (7):
      mergetools: vimdiff: fix comment
      mergetools: vimdiff: make vimdiff3 actually work
      mergetools: vimdiff: silence annoying messages
      mergetools: vimdiff: fix for diffopt
      mergetools: vimdiff: rework tab logic
      mergetools: vimdiff: fix single window layouts
      mergetools: vimdiff: simplify tabfirst

Fernando Ramos (1):
      vimdiff: make layout engine more robust against user vim settings

Glen Choo (16):
      submodule--helper: eliminate internal "--update" option
      submodule--helper tests: add missing "display path" coverage
      submodule--helper update: use display path helper
      submodule--helper: don't recreate recursive prefix
      submodule--helper: use correct display path helper
      submodule--helper update: use --super-prefix
      submodule--helper: remove display path helper
      Documentation/git-config.txt: add SCOPES section
      Documentation: define protected configuration
      config: learn `git_protected_config()`
      safe.directory: use git_protected_config()
      setup.c: create `safe.bareRepository`
      config.c: NULL check when reading protected config
      Documentation/git-reflog: remove unneeded \ from \{
      submodule--helper: add "const" to copy of "update_data"
      submodule--helper: refactor "errmsg_str" to be a "struct strbuf"

Goss Geppert (2):
      dir: traverse into repository
      dir: minor refactoring / clean-up

Han Xin (6):
      unpack-objects: low memory footprint for get_data() in dry_run mode
      object-file.c: refactor write_loose_object() to several steps
      object-file.c: add "stream_loose_object()" to handle large object
      unpack-objects: use stream_loose_object() to unpack large objects
      commit-graph.c: no lazy fetch in lookup_commit_in_graph()
      t5330: remove run_with_limited_processses()

Hubert Bossot (1):
      l10n: fr: The word 'branche' is only feminine

Jacob Keller (1):
      remote: handle negative refspecs in git remote show

Jacob Stopak (3):
      Documentation: fix various repeat word typos
      Documentation: clean up a few misspelled word typos
      Documentation: clean up various typos in technical docs

Jaydeep Das (1):
      gpg-interface: add function for converting trust level to string

Jean-Noël Avila (3):
      l10n: fr: v2.38 round 1
      l10n: fr: v2.38.0 round 2
      l10n: fr: v2.38.0 round 3

Jeff King (64):
      is_promisor_object(): walk promisor packs in pack-order
      fetch: stop passing around unused worktrees variable
      branch: drop unused worktrees variable
      revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis
      clone: drop extra newline from warning message
      clone: propagate empty remote HEAD even with other branches
      clone: use remote branch if it matches default HEAD
      clone: move unborn head creation to update_head()
      ref-filter: disable save_commit_buffer while traversing
      diff-files: move misplaced cleanup label
      write_midx_bitmap(): drop unused refs_snapshot parameter
      config.mak.dev: squelch -Wno-missing-braces for older gcc
      tree-walk: add a mechanism for getting non-canonicalized modes
      fsck: actually detect bad file modes in trees
      fsck: downgrade tree badFilemode to "info"
      is_promisor_object(): fix use-after-free of tree buffer
      compat: add function to enable nonblocking pipes
      git-compat-util: make MAX_IO_SIZE define globally available
      pipe_command(): avoid xwrite() for writing to pipe
      pipe_command(): handle ENOSPC when writing to a pipe
      pipe_command(): mark stdin descriptor as non-blocking
      git-compat-util: add UNUSED macro
      refs: mark unused each_ref_fn parameters
      refs: mark unused reflog callback parameters
      refs: mark unused virtual method parameters
      transport: mark bundle transport_options as unused
      streaming: mark unused virtual method parameters
      config: mark unused callback parameters
      hashmap: mark unused callback parameters
      mark unused read_tree_recursive() callback parameters
      run-command: mark unused async callback parameters
      is_path_owned_by_current_uid(): mark "report" parameter as unused
      xdiff: drop unused mmfile parameters from xdl_do_histogram_diff()
      log-tree: drop unused commit param in remerge_diff()
      match_pathname(): drop unused "flags" parameter
      verify_one_sparse(): drop unused parameters
      reftable: drop unused parameter from reader_seek_linear()
      reflog: assert PARSE_OPT_NONEG in parse-options callbacks
      xdiff: drop unused mmfile parameters from xdl_do_patience_diff()
      pass subcommand "prefix" arguments to parse_options()
      maintenance: add parse-options boilerplate for subcommands
      remote: run "remote rm" argv through parse_options()
      pack-bitmap-write: drop unused pack_idx_entry parameters
      tempfile: drop active flag
      tempfile: update comment describing state transitions
      test-crontab: minor memory and error handling fixes
      lookup_commit_in_graph(): use prepare_commit_graph() to check for graph
      rev-list: disable commit graph with --verify-objects
      parse_object(): allow skipping hash check
      upload-pack: skip parse-object re-hashing of "want" objects
      parse_object(): check commit-graph when skip_hash set
      t1060: check partial clone of misnamed blob
      list_objects_filter_copy(): deep-copy sparse_oid_name field
      transport: deep-copy object-filter struct for fetch-pack
      transport: free filter options in disconnect_git()
      list_objects_filter_options: plug leak of filter_spec strings
      prepare_repo_settings(): plug leak of config values
      fetch: stop checking for NULL transport->remote in do_fetch()
      fetch: add branch.*.merge to default ref-prefix extension
      list-objects-filter: don't memset after releasing filter struct
      list-objects-filter: handle null default filter spec
      list-objects-filter: add and use initializers
      list-objects-filter: convert filter_spec to a strbuf
      list-objects-filter: initialize sub-filter structs

Johannes Schindelin (38):
      merge-ort: store messages in a list, not in a single strbuf
      merge-ort: make `path_messages` a strmap to a string_list
      Git 2.30.5
      Git 2.31.4
      Git 2.32.3
      Git 2.33.4
      Git 2.34.4
      Git 2.35.4
      Git 2.36.2
      add --interactive: allow `update` to stage deleted files
      tests: fix incorrect --write-junit-xml code
      mergetool(vimdiff): allow paths to contain spaces again
      shortlog: use a stable sort
      t5351: avoid relying on `core.fsyncMethod = batch` to be supported
      t5351: avoid using `test_cmp` for binary data
      windows: include the Python bits when building Git for Windows
      mingw: remove unneeded `NO_GETTEXT` directive
      mingw: remove unneeded `NO_CURL` directive
      lstat(mingw): correctly detect ENOTDIR scenarios
      merge-ort: clean up after failed merge
      merge-ort: do leave trace2 region even if checkout fails
      setup: fix some formatting
      setup: prepare for more detailed "dubious ownership" messages
      mingw: provide details about unsafe directories' ownership
      mingw: be more informative when ownership check fails on FAT32
      mingw: handle a file owned by the Administrators group correctly
      scalar unregister: stop FSMonitor daemon
      range-diff: reorder argument handling
      range-diff: consistently validate the arguments
      range-diff: optionally accept pathspecs
      add -p: avoid ambiguous signed/unsigned comparison
      t3701: test the built-in `add -i` regardless of NO_PERL
      t6132(NO_PERL): do not run the scripted `add -p`
      add -p: detect more mismatches between plain vs colored diffs
      add -p: gracefully handle unparseable hunk headers in colored diffs
      add -p: ignore dirty submodules
      git help: special-case `scalar`
      scalar: implement the `help` subcommand

Jonathan Tan (1):
      fetch-pack: write effective filter to trace2

Jordi Mas (3):
      l10n: Update Catalan translation
      l10n: Update Catalan translation
      l10n: Update Catalan translation

Josh Steadmon (1):
      fetch-pack: add tracing for negotiation rounds

Julien Rouhaud (1):
      gitweb: remove title shortening heuristics

Junio C Hamano (45):
      revision: mark blobs needed for resolve-undo as reachable
      A regression fix for 2.37
      Git 2.37.1
      builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()
      The first batch after Git 2.37
      fsck: do not dereference NULL while checking resolve-undo data
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      builtin/remote.c: use the right kind of STRING_LIST_INIT
      The sixth batch
      The seventh batch
      Downmerge a handful of fixes for 2.37.x maintenance track
      The eighth batch
      The ninth batch
      doc: consolidate --rerere-autoupdate description
      doc: clarify rerere-autoupdate
      Downmerge a bit more for 2.37.x
      The tenth batch
      The eleventh batch
      Git 2.37.2
      The twelfth batch
      The thirteenth batch
      The fourteenth batch
      t5329: notice a failure within a loop
      The fifteenth batch
      A handful more topics from the 'master' front for 2.37.3
      pretty: separate out the logic to decide the use of in-body from
      format-patch: allow forcing the use of in-body From: header
      format-patch: learn format.forceInBodyFrom configuration variable
      The sixteenth batch
      Git 2.37.3
      The seventeenth batch
      The eighteenth batch
      The nineteenth batch
      The twentieth batch
      Merge a handful of topics from the 'master' front
      Prepare for 2.38-rc0
      Git 2.38-rc0
      A bit more of remaining topics before -rc1
      Final batch before -rc1
      Git 2.38-rc1
      Git 2.38-rc2
      Git 2.38

Justin Donnelly (1):
      git-prompt: show presence of unresolved conflicts at command prompt

Kilian Kilger (2):
      git-p4: fix bug with encoding of p4 client name
      git-p4: refactoring of p4CmdList()

Kyle Zhao (1):
      send-pack.c: add config push.useBitmaps

Lessley Dennington (1):
      osx-keychain: fix compiler warning

Li Linchao (3):
      ls-files: update test style
      remote-curl: send Accept-Language header to server
      rev-list: support human-readable output for `--disk-usage`

Linus Torvalds (1):
      symbolic-ref: refuse to set syntactically invalid target

Manuel Boni (1):
      config.txt: document include, includeIf

Martin Ågren (4):
      config/core.txt: fix minor issues for `core.sparseCheckoutCone`
      t4200: drop irrelevant code
      read-cache: make `do_read_index()` always set up `istate->repo`
      cmd-list.perl: fix identifying man sections

Matheus Tavares (7):
      checkout: document bug where delayed checkout counts entries twice
      checkout: show bug about failed entries being included in final report
      checkout: fix two bugs on the final count of updated entries
      pkt-line.h: move comment closer to the associated code
      t0021: avoid grepping for a Perl-specific string at filter output
      t0021: implementation the rot13-filter.pl script in C
      tests: use the new C rot13-filter helper to avoid PERL prereq

Matthew John Cheetham (1):
      scalar: enable built-in FSMonitor on `register`

Miaoqian Lin (1):
      commit-graph: Fix missing closedir in expire_commit_graphs

Michael J Gruber (3):
      sequencer: do not translate reflog messages
      sequencer: do not translate parameters to error_resolve_conflict()
      sequencer: do not translate command names

Moritz Baumann (3):
      git-p4: fix CR LF handling for utf16 files
      git-p4: fix typo in P4Submit.applyCommit()
      git-p4: fix error handling in P4Unshelve.renameBranch()

Peter Krefting (2):
      l10n: sv.po: Update Swedish translation (5482t0f0u)
      l10n: sv.po: Update Swedish translation (5484t0f0u)

Philip Oakley (1):
      doc add: renormalize is not idempotent for CRCRLF

Philippe Blain (3):
      diff-format.txt: dst can be 0* SHA-1 when path is deleted, too
      diff-format.txt: correct misleading wording
      diff-index.txt: update raw output format in examples

Phillip Wood (5):
      xdiff: introduce XDL_ALLOC_ARRAY()
      xdiff: introduce xdl_calloc
      xdiff: introduce XDL_CALLOC_ARRAY()
      xdiff: introduce XDL_ALLOC_GROW()
      tests: cache glibc version check

Ralf Thielow (2):
      l10n: de.po: update German translation
      l10n: de.po: update German translation

René Scharfe (28):
      archive: update format documentation
      archive: rename archiver data field to filter_command
      archive-tar: factor out write_block()
      archive-tar: add internal gzip implementation
      archive-tar: use OS_CODE 3 (Unix) for internal gzip
      archive-tar: use internal gzip by default
      combine-diff: abort if --ignore-matching-lines is given
      combine-diff: abort if --output is given
      cocci: avoid normalization rules for memcpy
      mingw: avoid mktemp() in mkstemp() implementation
      mergesort: unify ranks loops
      mergesort: tighten merge loop
      mergesort: add macros for typed sort of linked lists
      test-mergesort: use DEFINE_LIST_SORT_DEBUG
      test-mergesort: use DEFINE_LIST_SORT
      blame: use DEFINE_LIST_SORT
      commit: use DEFINE_LIST_SORT
      fetch-pack: use DEFINE_LIST_SORT
      packfile: use DEFINE_LIST_SORT
      mergesort: remove llist_mergesort()
      nonblock: support Windows
      tempfile: avoid directory cleanup race
      test-mergesort: read sort input all at once
      test-mergesort: use mem_pool for sort input
      diff-no-index: release strbuf on queue error
      diff-no-index: release prefixed filenames
      diff-no-index: simplify argv index calculation
      add -p: fix worktree patch mode prompts

Richard Oliver (1):
      mktree: do not check type of remote objects

SZEDER Gábor (30):
      Makefile: build 'gitweb' in the default target
      multi-pack-index: simplify handling of unknown --options
      index-format.txt: remove outdated list of supported extensions
      git.c: update NO_PARSEOPT markings
      t3301-notes.sh: check that default operation mode doesn't take arguments
      t5505-remote.sh: check the behavior without a subcommand
      t0040-parse-options: test parse_options() with various 'parse_opt_flags'
      api-parse-options.txt: fix description of OPT_CMDMODE
      parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options
      parse-options: clarify the limitations of PARSE_OPT_NODASH
      parse-options: drop leading space from '--git-completion-helper' output
      parse-options: add support for parsing subcommands
      builtin/bundle.c: let parse-options parse subcommands
      builtin/commit-graph.c: let parse-options parse subcommands
      builtin/gc.c: let parse-options parse 'git maintenance's subcommands
      builtin/hook.c: let parse-options parse subcommands
      builtin/multi-pack-index.c: let parse-options parse subcommands
      builtin/notes.c: let parse-options parse subcommands
      builtin/reflog.c: let parse-options parse subcommands
      builtin/remote.c: let parse-options parse subcommands
      builtin/sparse-checkout.c: let parse-options parse subcommands
      builtin/stash.c: let parse-options parse subcommands
      builtin/worktree.c: let parse-options parse subcommands
      promisor-remote: fix xcalloc() argument order
      t0040-parse-options: remove leftover debugging
      test-parse-options.c: don't use for loop initial declaration
      test-parse-options.c: fix style of comparison with zero
      notes: simplify default operation mode arguments check
      notes, remote: show unknown subcommands between `'
      t/Makefile: remove 'test-results' on 'make clean'

Shaoxuan Yuan (22):
      t7002: add tests for moving out-of-cone file/directory
      t1092: mv directory from out-of-cone to in-cone
      mv: update sparsity after moving from out-of-cone to in-cone
      mv: decouple if/else-if checks using goto
      mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
      mv: check if <destination> exists in index to handle overwriting
      mv: use flags mode for update_mode
      mv: add check_dir_in_index() and solve general dir check issue
      t1092: add tests for `git-rm`
      pathspec.h: move pathspec_needs_expanded_index() from reset.c to here
      rm: expand the index only when necessary
      rm: integrate with sparse-index
      t7002: add tests for moving from in-cone to out-of-cone
      mv: rename check_dir_in_index() to empty_dir_has_sparse_contents()
      mv: free the with_slash in check_dir_in_index()
      mv: check if <destination> is a SKIP_WORKTREE_DIR
      mv: remove BOTH from enum update_mode
      mv: from in-cone to out-of-cone
      mv: cleanup empty WORKING_DIRECTORY
      advice.h: add advise_on_moving_dirty_path()
      mv: check overwrite for in-to-out move
      builtin/mv.c: fix possible segfault in add_slash()

Siddharth Asthana (4):
      revision: improve commit_rewrite_person()
      ident: move commit_rewrite_person() to ident.c
      ident: rename commit_rewrite_person() to apply_mailmap_to_header()
      cat-file: add mailmap support

Tao Klerks (1):
      rev-parse: documentation adjustment - mention remote tracking with @{u}

Taylor Blau (14):
      pack-objects.h: remove outdated pahole results
      commit-graph: pass repo_settings instead of repository
      t5318: demonstrate commit-graph generation v2 corruption
      commit-graph: introduce `repo_find_commit_pos_in_graph()`
      commit-graph: fix corrupt upgrade from generation v1 to v2
      t1006: extract --batch-command inputs to variables
      builtin/cat-file.c: support NUL-delimited input with `-z`
      t5326: demonstrate potential bitmap corruption
      t/lib-bitmap.sh: avoid silencing stderr
      midx.c: extract `struct midx_fanout`
      midx.c: extract `midx_fanout_add_midx_fanout()`
      midx.c: extract `midx_fanout_add_pack_fanout()`
      midx.c: include preferred pack correctly with existing MIDX
      midx.c: avoid adding preferred objects twice

Teng Long (8):
      pack-bitmap.c: fix formatting of error messages
      pack-bitmap.c: mark more strings for translations
      pack-bitmap.c: rename "idx_name" to "bitmap_name"
      pack-bitmap.c: do not ignore error when opening a bitmap file
      pack-bitmap.c: using error() instead of silently returning -1
      pack-bitmap.c: continue looping when first MIDX bitmap is found
      api-trace2.txt: print config key-value pair
      tr2: shows scope unconditionally in addition to key-value pair

Todd Zullinger (2):
      docs: fix a few recently broken links
      api docs: link to html version of api-trace2

Victoria Dye (37):
      scalar: reword command documentation to clarify purpose
      scalar: convert README.md into a technical design doc
      checkout: fix nested sparse directory diff in sparse index
      oneway_diff: handle removed sparse directories
      cache.h: create 'index_name_pos_sparse()'
      unpack-trees: unpack new trees as sparse directories
      scalar-diagnose: use "$GIT_UNZIP" in test
      scalar-diagnose: avoid 32-bit overflow of size_t
      scalar-diagnose: add directory to archiver more gently
      scalar-diagnose: move 'get_disk_info()' to 'compat/'
      scalar-diagnose: move functionality to common location
      diagnose.c: add option to configure archive contents
      builtin/diagnose.c: create 'git diagnose' builtin
      builtin/diagnose.c: add '--mode' option
      builtin/bugreport.c: create '--diagnose' option
      scalar-diagnose: use 'git diagnose --mode=all'
      scalar: update technical doc roadmap
      scalar: constrain enlistment search
      scalar-unregister: handle error codes greater than 0
      scalar-[un]register: clearly indicate source of error
      scalar-delete: do not 'die()' in 'delete_enlistment()'
      scalar: move config setting logic into its own function
      scalar: update technical doc roadmap with FSMonitor support
      p0004: fix prereq declaration
      p0006: fix 'read-tree' argument ordering
      unpack-trees: fix sparse directory recursion check
      scalar: fix command documentation section header
      scalar: include in standard Git build & installation
      scalar: add to 'git help -a' command list
      scalar-clone: add test coverage
      t/perf: add Scalar performance tests
      t/perf: add 'GIT_PERF_USE_SCALAR' run option
      Documentation/technical: include Scalar technical doc
      diagnose.c: refactor to safely use 'd_type'
      Documentation: add ReviewingGuidelines
      diagnose: add to command-list.txt
      version: fix builtin linking & documentation

Yi-Jyun Pan (1):
      l10n: zh_TW.po: Git 2.38.0, round 3

ZheNing Hu (2):
      ls-files: introduce "--format" option
      ls-files: fix black space in error message

brian m. carlson (2):
      sha256: add support for Nettle
      gc: use temporary file for editing crontab

Ævar Arnfjörð Bjarmason (153):
      t0008: don't rely on default ".git/info/exclude"
      tests: don't depend on template-created .git/branches
      tests: don't assume a .git/info for .git/info/grafts
      tests: don't assume a .git/info for .git/info/attributes
      tests: don't assume a .git/info for .git/info/refs
      tests: don't assume a .git/info for .git/info/exclude
      tests: don't assume a .git/info for .git/info/sparse-checkout
      object-file.c: factor out deflate part of write_loose_object()
      core doc: modernize core.bigFileThreshold documentation
      git-submodule.sh: remove unused sanitize_submodule_env()
      git-submodule.sh: remove unused $prefix variable
      git-submodule.sh: make the "$cached" variable a boolean
      git-submodule.sh: remove unused top-level "--branch" argument
      submodule--helper: have --require-init imply --init
      submodule update: remove "-v" option
      submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
      submodule--helper: report "submodule" as our name in some "-h" output
      submodule--helper: understand --checkout, --merge and --rebase synonyms
      git-submodule.sh: use "$quiet", not "$GIT_QUIET"
      git-sh-setup.sh: remove "say" function, change last users
      gitweb/Makefile: define all .PHONY prerequisites inline
      gitweb/Makefile: add a $(GITWEB_ALL) variable
      gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
      gitweb/Makefile: prepare to merge into top-level Makefile
      gitweb: remove "test" and "test-installed" targets
      gitweb/Makefile: include in top-level Makefile
      gitweb/Makefile: add a "NO_GITWEB" parameter
      tests: add missing double quotes to included library paths
      test-lib.sh: fix prepend_var() quoting issue
      config tests: fix harmless but broken "rm -r" cleanup
      submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
      check-ref-format: fix trivial memory leak
      clone: fix memory leak in wanted_peer_refs()
      submodule.c: free() memory from xgetcwd()
      revert: free "struct replay_opts" members
      cat-file: fix a memory leak in --batch-command mode
      merge-file: refactor for subsequent memory leak fix
      merge-file: fix memory leaks on error path
      checkout: avoid "struct unpack_trees_options" leak
      gc: fix a memory leak
      cat-file: fix a common "struct object_context" memory leak
      pull: fix a "struct oid_array" memory leak
      test-tool test-hash: fix a memory leak
      test-tool path-utils: fix a memory leak
      test-tool {dump,scrap}-cache-tree: fix memory leaks
      test-tool urlmatch-normalization: fix a memory leak
      test-tool regex: call regfree(), fix memory leaks
      test-tool json-writer: fix memory leaks
      test-tool bloom: fix memory leaks
      test-tool ref-store: fix a memory leak
      test-tool delta: fix a memory leak
      Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS
      Makefile & .gitignore: ignore & clean "git.res", not "*.res"
      cocci: add a "coccicheck-test" target and test *.cocci rules
      cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
      cocci: add and apply a rule to find "unused" strbufs
      cocci: generalize "unused" rule to cover more than "strbuf"
      trace2: only include "fsync" events if we git_fsync()
      test-lib: use $1, not $@ in test_known_broken_{ok,failure}_
      test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
      test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
      test-lib: add a --invert-exit-code switch
      t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
      test-lib: add a SANITIZE=leak logging mode
      t/Makefile: don't remove test-results in "clean-except-prove-cache"
      tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
      test-lib: simplify by removing test_external
      test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
      test-lib: have the "check" mode for SANITIZE=leak consider leak logs
      leak tests: don't skip some tests under SANITIZE=leak
      leak tests: mark passing SANITIZE=leak tests as leak-free
      upload-pack: fix a memory leak in create_pack_file()
      CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
      bisect.c: add missing "goto" for release_revisions()
      test-fast-rebase helper: use release_revisions() (again)
      log: fix a memory leak in "git show <revision>..."
      log: refactor "rev.pending" code in cmd_show()
      bisect.c: partially fix bisect_rev_setup() memory leak
      revisions API: don't leak memory on argv elements that need free()-ing
      help.c: refactor drop_prefix() to use a "switch" statement"
      help.c: remove common category behavior from drop_prefix() behavior
      git help doc: use "<doc>" instead of "<guide>"
      git docs: add a category for user-facing file, repo and command UX
      git docs: add a category for file formats, protocols and interfaces
      docs: move commit-graph format docs to man section 5
      docs: move protocol-related docs to man section 5
      docs: move index format docs to man section 5
      docs: move signature docs to man section 5
      docs: move pack format docs to man section 5
      docs: move cruft pack docs to gitformat-pack
      docs: move http-protocol docs to man section 5
      hook API: don't segfault on strbuf_addf() to NULL "out"
      Makefile + hash.h: remove PPC_SHA1 implementation
      Makefile: use $(OBJECTS) instead of $(C_OBJ)
      git-compat-util.h: use "UNUSED", not "UNUSED(var)"
      git-compat-util.h: use "deprecated" for UNUSED variables
      submodule tests: test usage behavior
      submodule tests: test for "add <repository> <abs-path>"
      submodule--helper: remove unused "name" helper
      submodule--helper: remove unused "list" helper
      test-tool submodule-config: remove unused "--url" handling
      submodule--helper: move "is-active" to a test-tool
      submodule--helper: move "check-name" to a test-tool
      submodule--helper: move "resolve-relative-url-test" to a test-tool
      submodule--helper style: don't separate declared variables with \n\n
      submodule--helper style: add \n\n after variable declarations
      submodule--helper: replace memset() with { 0 }-initialization
      submodule--helper: use xstrfmt() in clone_submodule()
      submodule--helper: move "sb" in clone_submodule() to its own scope
      submodule--helper: add "const" to passed "module_clone_data"
      submodule--helper: add "const" to passed "struct update_data"
      submodule--helper: don't redundantly check "else if (res)"
      submodule--helper: rename "int res" to "int ret"
      submodule--helper: return "ret", not "1" from update_submodule()
      submodule--helper: add missing braces to "else" arm
      submodule--helper: don't call submodule_strategy_to_string() in BUG()
      submodule API: don't handle SM_..{UNSPECIFIED,COMMAND} in to_string()
      submodule--helper: use "code" in run_update_command()
      submodule--helper: don't exit() on failure, return
      submodule--helper: libify determine_submodule_update_strategy()
      submodule--helper: libify "must_die_on_failure" code paths
      submodule--helper update: don't override 'checkout' exit code
      submodule--helper: libify "must_die_on_failure" code paths (for die)
      submodule--helper: check repo{_submodule,}_init() return values
      submodule--helper: libify more "die" paths for module_update()
      submodule--helper: libify even more "die" paths for module_update()
      submodule--helper: fix bad config API usage
      submodule--helper: fix a leak in "clone_submodule"
      submodule--helper: fix trivial get_default_remote_submodule() leak
      submodule--helper: fix most "struct pathspec" memory leaks
      submodule--helper: "struct pathspec" memory leak in module_update()
      submodule--helper: don't leak {run,capture}_command() cp.dir argument
      submodule--helper: add and use *_release() functions
      submodule--helper: fix "errmsg_str" memory leak
      submodule--helper: fix "sm_path" and other "module_cb_list" leaks
      submodule--helper: fix a leak with repo_clear()
      submodule--helper: fix a memory leak in get_default_remote_submodule()
      submodule--helper: fix "reference" leak
      submodule--helper: fix obscure leak in module_add()
      submodule--helper: fix a leak in module_add()
      submodule--helper: fix a memory leak in print_status()
      submodule--helper: free some "displaypath" in "struct update_data"
      submodule--helper: free rest of "displaypath" in "struct update_data"
      submodule--helper: fix a configure_added_submodule() leak
      docs: add and use include template for config/* includes
      grep docs: de-duplicate configuration sections
      send-email docs: de-duplicate configuration sections
      apply docs: de-duplicate configuration sections
      notes docs: de-duplicate and combine configuration sections
      difftool docs: de-duplicate configuration sections
      log docs: de-duplicate configuration sections
      docs: add CONFIGURATION sections that map to a built-in
      docs: add CONFIGURATION sections that fuzzy map to built-ins

Øystein Walle (1):
      rev-parse --parseopt: detect missing opt-spec


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.38.0-rc2
@ 2022-09-27 21:10  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-09-27 21:10 UTC (permalink / raw)
  To: git; +Cc: git-packagers

A release candidate Git v2.38.0-rc2 is now available for testing at
the usual places.  It is comprised of 673 non-merge commits since
v2.37.0, contributed by 81 people, 23 of which are new faces [*].

The manpage generation problem in -rc1 has been corrected.  Other
than that, there aren't that many changes since -rc1.

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.38.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.37.0 are as follows.
Welcome to the Git development community!

  Andrew Olsen, Anthony Delannoy, Carlos López, Celeste Liu,
  Cleber Rosa, David Plumpton, Elijah Conners, Eric DeCosta, Goss
  Geppert, Ilya K, Ingy dot Net, Jacob Stopak, Julien Rouhaud,
  Kilian Kilger, Lana Deere, Manuel Boni, Matthew Klein, Miaoqian
  Lin, Moritz Baumann, Pavel Rappo, Pierre Garnier, Richard Oliver,
  and Xavier Morel.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Abhradeep Chakraborty, Adam Dinwoodie, Ævar Arnfjörð
  Bjarmason, Alex Henrie, Arthur Milchior, brian m. carlson,
  Calvin Wan, Carlo Marcelo Arenas Belón, Christian Couder,
  Christoph Reiter, Derrick Stolee, Dimitriy Ryazantcev, Đoàn
  Trần Công Danh, Elijah Newren, Emily Shaffer, Eric Sunshine,
  Fangyi Zhou, Felipe Contreras, Fernando Ramos, Glen Choo,
  Han Xin, Hariom Verma, Jacob Keller, Jaydeep Das, Jeff King,
  Jiang Xin, Joey Hess, Johannes Schindelin, John Cai, Jonathan
  Tan, Josh Steadmon, Junio C Hamano, Justin Donnelly, Kyle Zhao,
  Lessley Dennington, Li Linchao, Linus Torvalds, Martin Ågren,
  Matheus Tavares, Matthew John Cheetham, Michael J Gruber,
  Øystein Walle, Philip Oakley, Philippe Blain, Phillip Wood,
  Randall S. Becker, Renato Botelho, René Scharfe, Shaoxuan Yuan,
  Siddharth Asthana, SZEDER Gábor, Tao Klerks, Taylor Blau,
  Teng Long, Todd Zullinger, Torsten Bögershausen, Victoria Dye,
  and ZheNing Hu.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.38 Release Notes (draft)
===============================

UI, Workflows & Features

 * "git remote show [-n] frotz" now pays attention to negative
   pathspec.

 * "git push" sometimes performs poorly when reachability bitmaps are
   used, even in a repository where other operations are helped by
   bitmaps.  The push.useBitmaps configuration variable is introduced
   to allow disabling use of reachability bitmaps only for "git push".

 * "git grep -m<max-hits>" is a way to limit the hits shown per file.

 * "git merge-tree" learned a new mode where it takes two commits and
   computes a tree that would result in the merge commit, if the
   histories leading to these two commits were to be merged.

 * "git mv A B" in a sparsely populated working tree can be asked to
   move a path between directories that are "in cone" (i.e. expected
   to be materialized in the working tree) and "out of cone"
   (i.e. expected to be hidden).  The handling of such cases has been
   improved.

 * Earlier, HTTP transport clients learned to tell the server side
   what locale they are in by sending Accept-Language HTTP header, but
   this was done only for some requests but not others.

 * Introduce a safe.barerepository configuration variable that
   allows users to forbid discovery of bare repositories.

 * Various messages that come from the pack-bitmap codepaths have been
   tweaked.

 * "git rebase -i" learns to update branches whose tip appear in the
   rebased range with "--update-refs" option.

 * "git ls-files" learns the "--format" option to tweak its output.

 * "git cat-file" learned an option to use the mailmap when showing
   commit and tag objects.

 * When "git merge" finds that it cannot perform a merge, it should
   restore the working tree to the state before the command was
   initiated, but in some corner cases it didn't.

 * Operating modes like "--batch" of "git cat-file" command learned to
   take NUL-terminated input, instead of one-item-per-line.

 * "git rm" has become more aware of the sparse-index feature.

 * "git rev-list --disk-usage" learned to take an optional value
   "human" to show the reported value in human-readable format, like
   "3.40MiB".

 * The "diagnose" feature to create a zip archive for diagnostic
   material has been lifted from "scalar" and made into a feature of
   "git bugreport".

 * The namespaces used by "log --decorate" from "refs/" hierarchy by
   default has been tightened.

 * "git rev-list --ancestry-path=C A..B" is a natural extension of
   "git rev-list A..B"; instead of choosing a subset of A..B to those
   that have ancestry relationship with A, it lets a subset with
   ancestry relationship with C.

 * "scalar" now enables built-in fsmonitor on enlisted repositories,
   when able.

 * The bash prompt (in contrib/) learned to optionally indicate when
   the index is unmerged.

 * "git clone" command learned the "--bundle-uri" option to coordinate
   with hosting sites the use of pre-prepared bundle files.

 * "git range-diff" learned to honor pathspec argument if given.

 * "git format-patch --from=<ident>" can be told to add an in-body
   "From:" line even for commits that are authored by the given
   <ident> with "--force-in-body-from" option.

 * The built-in fsmonitor refuses to work on a network mounted
   repositories; a configuration knob for users to override this has
   been introduced.

 * The "scalar" addition from Microsoft is now part of the core Git
   installation.


Performance, Internal Implementation, Development Support etc.

 * Collection of what is referenced by objects in promisor packs have
   been optimized to inspect these objects in the in-pack order.

 * Introduce a helper to see if a branch is already being worked on
   (hence should not be newly checked out in a working tree), which
   performs much better than the existing find_shared_symref() to
   replace many uses of the latter.

 * Teach "git archive" to (optionally and then by default) avoid
   spawning an external "gzip" process when creating ".tar.gz" (and
   ".tgz") archives.

 * Allow large objects read from a packstream to be streamed into a
   loose object file straight, without having to keep it in-core as a
   whole.

 * Further preparation to turn git-submodule.sh into a builtin
   continues.

 * Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
   macro, which would improve maintainability and readability.

 * Teach "make all" to build gitweb as well.

 * Tweak tests so that they still work when the "git init" template
   did not create .git/info directory.

 * Add Coccinelle rules to detect the pattern of initializing and then
   finalizing a structure without using it in between at all, which
   happens after code restructuring and the compilers fail to
   recognize as an unused variable.

 * The code to convert between GPG trust level strings and internal
   constants we use to represent them have been cleaned up.

 * Support for libnettle as SHA256 implementation has been added.

 * The way "git multi-pack" uses parse-options API has been improved.

 * A Coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
   macro has been improved.

 * API tweak to make it easier to run fuzz testing on commit-graph parser.

 * Omit fsync-related trace2 entries when their values are all zero.

 * The codepath to write multi-pack index has been taught to release a
   large chunk of memory that holds an array of objects in the packs,
   as soon as it is done with the array, to reduce memory consumption.

 * Add a level of redirection to array allocation API in xdiff part,
   to make it easier to share with the libgit2 project.

 * "git fetch" client logs the partial clone filter used in the trace2
   output.

 * The "bundle URI" design gets documented.

 * The common ancestor negotiation exchange during a "git fetch"
   session now leaves trace log.

 * Test portability improvements.
   (merge 4d1d843be7 mt/rot13-in-c later to maint).

 * The "subcommand" mode is introduced to parse-options API and update
   the command line parser of Git commands with subcommands.

 * The pack bitmap file gained a bitmap-lookup table to speed up
   locating the necessary bitmap for a given commit.

 * The assembly version of SHA-1 implementation for PPC has been
   removed.

 * The server side that responds to "git fetch" and "git clone"
   request has been optimized by allowing it to send objects in its
   object store without recomputing and validating the object names.

 * Annotate function parameters that are not used (but cannot be
   removed for structural reasons), to prepare us to later compile
   with -Wunused warning turned on.

 * Share the text used to explain configuration variables used by "git
   <subcmd>" in "git help <subcmd>" with the text from "git help config".

 * "git mv A B" in a sparsely populated working tree can be asked to
   move a path from a directory that is "in cone" to another directory
   that is "out of cone".  Handling of such a case has been improved.

 * The chainlint script for our tests has been revamped.


Fixes since v2.37
-----------------

 * Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
   correctly record a removed file to the index, which was fixed.

 * Certain diff options are currently ignored when combined-diff is
   shown; mark them as incompatible with the feature.

 * Adjust technical/bitmap-format to be formatted by AsciiDoc, and
   add some missing information to the documentation.

 * Fixes for tests when the source directory has unusual characters in
   its path, e.g. whitespaces, double-quotes, etc.

 * "git mktree --missing" lazily fetched objects that are missing from
   the local object store, which was totally unnecessary for the purpose
   of creating the tree object(s) from its input.

 * Give _() markings to fatal/warning/usage: labels that are shown in
   front of these messages.

 * References to commands-to-be-typed-literally in "git rebase"
   documentation mark-up have been corrected.

 * In a non-bare repository, the behavior of Git when the
   core.worktree configuration variable points at a directory that has
   a repository as its subdirectory, regressed in Git 2.27 days.

 * Recent update to vimdiff layout code has been made more robust
   against different end-user vim settings.

 * Plug various memory leaks, both in the main code and in test-tool
   commands.

 * Fixes a long-standing corner case bug around directory renames in
   the merge-ort strategy.

 * The resolve-undo information in the index was not protected against
   GC, which has been corrected.

 * A corner case bug where lazily fetching objects from a promisor
   remote resulted in infinite recursion has been corrected.

 * "git clone" from a repository with some ref whose HEAD is unborn
   did not set the HEAD in the resulting repository correctly, which
   has been corrected.

 * An earlier attempt to plug leaks placed a clean-up label to jump to
   at a bogus place, which as been corrected.

 * Variable quoting fix in the vimdiff driver of "git mergetool"

 * "git shortlog -n" relied on the underlying qsort() to be stable,
   which shouldn't have.  Fixed.

 * A fix for a regression in test framework.

 * mkstemp() emulation on Windows has been improved.

 * Add missing documentation for "include" and "includeIf" features in
   "git config" file format, which incidentally teaches the command
   line completion to include them in its offerings.

 * Avoid "white/black-list" in documentation and code comments.

 * Workaround for a compiler warning against use of die() in
   osx-keychain (in contrib/).

 * Workaround for a false positive compiler warning.

 * "git p4" working on UTF-16 files on Windows did not implement
   CRLF-to-LF conversion correctly, which has been corrected.

 * "git p4" did not handle non-ASCII client name well, which has been
   corrected.

 * "rerere-train" script (in contrib/) used to honor commit.gpgSign
   while recreating the throw-away merges.

 * "git checkout" miscounted the paths it updated, which has been
   corrected.

 * Fix for a bug that makes write-tree to fail to write out a
   non-existent index as a tree, introduced in 2.37.

 * There was a bug in the codepath to upgrade generation information
   in commit-graph from v1 to v2 format, which has been corrected.

 * Gitweb had legacy URL shortener that is specific to the way
   projects hosted on kernel.org used to (but no longer) work, which
   has been removed.

 * Fix build procedure for Windows that uses CMake so that it can pick
   up the shell interpreter from local installation location.

 * Conditionally allow building Python interpreter on Windows

 * Fix to lstat() emulation on Windows.

 * Older gcc with -Wall complains about the universal zero initializer
   "struct s = { 0 };" idiom, which makes developers' lives
   inconvenient (as -Werror is enabled by DEVELOPER=YesPlease).  The
   build procedure has been tweaked to help these compilers.

 * Plug memory leaks in the failure code path in the "merge-ort" merge
   strategy backend.

 * "git symbolic-ref symref non..sen..se" is now diagnosed as an error.

 * A follow-up fix to a fix for a regression in 2.36 around hooks.

 * Avoid repeatedly running getconf to ask libc version in the test
   suite, and instead just as it once per script.

 * Platform-specific code that determines if a directory is OK to use
   as a repository has been taught to report more details, especially
   on Windows.

 * "vimdiff3" regression fix.

 * "git fsck" reads mode from tree objects but canonicalizes the mode
   before passing it to the logic to check object sanity, which has
   hid broken tree objects from the checking logic.  This has been
   corrected, but to help existing projects with broken tree objects
   that they cannot fix retroactively, the severity of anomalies this
   code detects has been demoted to "info" for now.

 * Fixes to sparse index compatibility work for "reset" and "checkout"
   commands.

 * An earlier optimization discarded a tree-object buffer that is
   still in use, which has been corrected.

 * Fix deadlocks between main Git process and subprocess spawned via
   the pipe_command() API, that can kill "git add -p" that was
   reimplemented in C recently.

 * The sequencer machinery translated messages left in the reflog by
   mistake, which has been corrected.

 * xcalloc(), imitating calloc(), takes "number of elements of the
   array", and "size of a single element", in this order.  A call that
   does not follow this ordering has been corrected.

 * The preload-index codepath made copies of pathspec to give to
   multiple threads, which were left leaked.

 * Update the version of Ubuntu used for GitHub Actions CI from 18.04
   to 22.04.

 * The auto-stashed local changes created by "git merge --autostash"
   was mixed into a conflicted state left in the working tree, which
   has been corrected.

 * Multi-pack index got corrupted when preferred pack changed from one
   pack to another in a certain way, which has been corrected.
   (merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint).

 * The clean-up of temporary files created via mks_tempfile_dt() was
   racy and attempted to unlink() the leading directory when signals
   are involved, which has been corrected.
   (merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint).

 * FreeBSD portability fix for "git maintenance" that spawns "crontab"
   to schedule tasks.
   (merge ee69e7884e bc/gc-crontab-fix later to maint).

 * Those who use diff-so-fancy as the diff-filter noticed a regression
   or two in the code that parses the diff output in the built-in
   version of "add -p", which has been corrected.
   (merge 0a101676e5 js/add-p-diff-parsing-fix later to maint).

 * Segfault fix-up to an earlier fix to the topic to teach "git reset"
   and "git checkout" work better in a sparse checkout.
   (merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint).

 * "git diff --no-index A B" managed its the pathnames of its two
   input files rather haphazardly, sometimes leaking them.  The
   command line argument processing has been straightened out to clean
   it up.
   (merge 2b43dd0eb5 rs/diff-no-index-cleanup later to maint).

 * "git rev-list --verify-objects" ought to inspect the contents of
   objects and notice corrupted ones, but it didn't when the commit
   graph is in use, which has been corrected.
   (merge b27ccae34b jk/rev-list-verify-objects-fix later to maint).

 * More fixes to "add -p"
   (merge 64ec8efb83 js/builtin-add-p-portability-fix later to maint).

 * The parser in the script interface to parse-options in "git
   rev-parse" has been updated to diagnose a bogus input correctly.
   (merge f20b9c36d0 ow/rev-parse-parseopt-fix later to maint).

 * The code that manages list-object-filter structure, used in partial
   clones, leaked the instances, which has been plugged.
   (merge 66eede4a37 jk/plug-list-object-filter-leaks later to maint).

 * Fix another UI regression in the reimplemented "add -p".
   (merge f6f0ee247f rs/add-p-worktree-mode-prompt-fix later to maint).

 * "git fetch" over protocol v2 sent an incorrect ref prefix request
   to the server and made "git pull" with configured fetch refspec
   that does not cover the remote branch to merge with fail, which has
   been corrected.
   (merge 49ca2fba39 jk/proto-v2-ref-prefix-fix later to maint).

 * A result from opendir() was leaking in the commit-graph expiration
   codepath, which has been plugged.
   (merge 12f1ae5324 ml/commit-graph-expire-dir-leak-fix later to maint).

 * Just like we have coding guidelines, we now have guidelines for
   reviewers.
   (merge e01b851923 vd/doc-reviewing-guidelines later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 77b9e85c0f vd/fix-perf-tests later to maint).
   (merge 0682bc43f5 jk/test-crontab-fixes later to maint).
   (merge b46dd1726c cc/doc-trailer-whitespace-rules later to maint).

----------------------------------------------------------------

Changes since v2.37.0 are as follows:

Abhradeep Chakraborty (9):
      bitmap-format.txt: feed the file to asciidoc to generate html
      bitmap-format.txt: fix some formatting issues
      bitmap-format.txt: add information for trailing checksum
      Documentation/technical: describe bitmap lookup table extension
      bitmap: move `get commit positions` code to `bitmap_writer_finish`
      pack-bitmap-write.c: write lookup table extension
      pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
      pack-bitmap: prepare to read lookup table extension
      bitmap-lookup-table: add performance tests for lookup table

Adam Dinwoodie (1):
      t1800: correct test to handle Cygwin

Alex Henrie (3):
      gc: don't translate literal commands
      builtin/diagnose.c: don't translate the two mode values
      pack-bitmap: improve grammar of "xor chain" error message

Anthony Delannoy (1):
      preload-index: fix memleak

Calvin Wan (1):
      submodule merge: update conflict error message

Carlo Marcelo Arenas Belón (2):
      setup: tighten ownership checks post CVE-2022-24765
      cmake: support local installations of git

Carlos López (1):
      grep: add --max-count command line option

Celeste Liu (1):
      contrib/rerere-train: avoid useless gpg sign in training

Christian Couder (1):
      Documentation: clarify whitespace rules for trailers

Cleber Rosa (1):
      setup: fix function name in a BUG() message

Derrick Stolee (51):
      branch: add branch_checked_out() helper
      branch: check for bisects and rebases
      fetch: use new branch_checked_out() and add tests
      branch: use branch_checked_out() when deleting refs
      branch: fix branch_checked_out() leaks
      t5510: replace 'origin' with URL more carefully
      vscode: improve tab size and wrapping
      git-rebase.txt: use back-ticks consistently
      pack-bitmap-write: use const for hashes
      midx: extract bitmap write setup
      midx: reduce memory pressure while writing bitmaps
      daemon: clarify directory arguments
      git-cvsserver: clarify directory list
      git.txt: remove redundant language
      t: avoid "whitelist"
      transport.c: avoid "whitelist"
      t2407: test bisect and rebase as black-boxes
      t2407: test branches currently using apply backend
      branch: consider refs under 'update-refs'
      rebase-interactive: update 'merge' description
      sequencer: define array with enum values
      sequencer: add update-ref command
      rebase: add --update-refs option
      rebase: update refs from 'update-ref' commands
      sequencer: rewrite update-refs as user edits todo list
      rebase: add rebase.updateRefs config option
      sequencer: ignore HEAD ref under --update-refs
      sequencer: notify user of --update-refs activity
      compat/win32: correct for incorrect compiler warning
      refs: allow "HEAD" as decoration filter
      t4207: modernize test
      t4207: test coloring of grafted decorations
      refs: add array of ref namespaces
      refs: use ref_namespaces for replace refs base
      log-tree: use ref_namespaces instead of if/else-if
      log: add default decoration filter
      log: add --clear-decorations option
      log: create log.initialDecorationSet=all
      maintenance: stop writing log.excludeDecoration
      fetch: use ref_namespaces during prefetch
      docs: document bundle URI standard
      bundle-uri: add example bundle organization
      remote-curl: add 'get' capability
      bundle-uri: create basic file-copy logic
      clone: add --bundle-uri option
      bundle-uri: add support for http(s):// and file://
      clone: --bundle-uri cannot be combined with --depth
      t6019: modernize tests with helper
      clone: warn on failure to repo_init()
      ci: update 'static-analysis' to Ubuntu 22.04
      pack-bitmap: remove trace2 region from hot path

Dimitriy Ryazantcev (1):
      i18n: mark message helpers prefix for translation

Elijah Conners (1):
      reftable: use a pointer for pq_entry param

Elijah Newren (43):
      merge-tree: rename merge_trees() to trivial_merge_trees()
      merge-tree: move logic for existing merge into new function
      merge-tree: add option parsing and initial shell for real merge function
      merge-tree: implement real merges
      merge-ort: split out a separate display_update_messages() function
      merge-tree: support including merge messages in output
      merge-ort: provide a merge_get_conflicted_files() helper function
      merge-ort: remove command-line-centric submodule message from merge-ort
      merge-tree: provide a list of which files have conflicts
      merge-tree: provide easy access to `ls-files -u` style info
      merge-ort: store more specific conflict information
      merge-ort: optionally produce machine-readable output
      merge-tree: allow `ls-files -u` style info to be NUL terminated
      merge-tree: add a --allow-unrelated-histories flag
      git-merge-tree.txt: add a section on potentional usage mistakes
      t6429: fix use of non-existent function
      t6423: add tests of dual directory rename plus add/add conflict
      merge-ort: small cleanups of check_for_directory_rename
      merge-ort: make a separate function for freeing struct collisions
      merge-ort: shuffle the computation and cleanup of potential collisions
      merge-ort: fix issue with dual rename and add/add conflict
      merge-ort-wrappers: make printed message match the one from recursive
      merge-resolve: abort if index does not match HEAD
      merge: abort if index does not match HEAD for trivial merges
      merge: do not abort early if one strategy fails to handle the merge
      merge: fix save_state() to work when there are stat-dirty files
      merge: make restore_state() restore staged state too
      merge: ensure we can actually restore pre-merge state
      merge: do not exit restore_state() prematurely
      merge-ort: remove translator lego in new "submodule conflict suggestion"
      merge-ort: avoid surprise with new sub_flag variable
      merge-ort: provide helpful submodule update message when possible
      merge-ort: remove code obsoleted by other changes
      rev-list-options.txt: fix simple typo
      revision: allow --ancestry-path to take an argument
      merge: only apply autostash when appropriate
      merge: cleanup confusing logic for handling successful merges
      merge: small code readability improvement
      t4301: add more interesting merge-tree testcases
      t64xx: convert 'test_create_repo' to 'git init'
      diff: have submodule_format logic avoid additional diff headers
      diff: fix filtering of additional headers under --remerge-diff
      diff: fix filtering of merge commits under --remerge-diff

Eric DeCosta (1):
      fsmonitor: option to allow fsmonitor to run against network-mounted repos

Eric Sunshine (25):
      t2407: fix broken &&-chains in compound statement
      t1092: fix buggy sparse "blame" test
      t: detect and signal failure within loop
      t4301: account for behavior differences between sed implementations
      t4301: fix broken &&-chains and add missing loop termination
      t4301: emit blank line in more idiomatic fashion
      t: add skeleton chainlint.pl
      chainlint.pl: add POSIX shell lexical analyzer
      chainlint.pl: add POSIX shell parser
      chainlint.pl: add parser to validate tests
      chainlint.pl: add parser to identify test definitions
      chainlint.pl: validate test scripts in parallel
      chainlint.pl: don't require `return|exit|continue` to end with `&&`
      t/Makefile: apply chainlint.pl to existing self-tests
      chainlint.pl: don't require `&` background command to end with `&&`
      chainlint.pl: don't flag broken &&-chain if `$?` handled explicitly
      chainlint.pl: don't flag broken &&-chain if failure indicated explicitly
      chainlint.pl: complain about loops lacking explicit failure handling
      chainlint.pl: allow `|| echo` to signal failure upstream of a pipe
      t/chainlint: add more chainlint.pl self-tests
      test-lib: retire "lint harder" optimization hack
      test-lib: replace chainlint.sed with chainlint.pl
      t/Makefile: teach `make test` and `make prove` to run chainlint.pl
      t: retire unused chainlint.sed
      chainlint: colorize problem annotations and test delimiters

Fangyi Zhou (1):
      help: fix doubled words in explanation for developer interfaces

Felipe Contreras (7):
      mergetools: vimdiff: fix comment
      mergetools: vimdiff: make vimdiff3 actually work
      mergetools: vimdiff: silence annoying messages
      mergetools: vimdiff: fix for diffopt
      mergetools: vimdiff: rework tab logic
      mergetools: vimdiff: fix single window layouts
      mergetools: vimdiff: simplify tabfirst

Fernando Ramos (1):
      vimdiff: make layout engine more robust against user vim settings

Glen Choo (16):
      submodule--helper: eliminate internal "--update" option
      submodule--helper tests: add missing "display path" coverage
      submodule--helper update: use display path helper
      submodule--helper: don't recreate recursive prefix
      submodule--helper: use correct display path helper
      submodule--helper update: use --super-prefix
      submodule--helper: remove display path helper
      Documentation/git-config.txt: add SCOPES section
      Documentation: define protected configuration
      config: learn `git_protected_config()`
      safe.directory: use git_protected_config()
      setup.c: create `safe.bareRepository`
      config.c: NULL check when reading protected config
      Documentation/git-reflog: remove unneeded \ from \{
      submodule--helper: add "const" to copy of "update_data"
      submodule--helper: refactor "errmsg_str" to be a "struct strbuf"

Goss Geppert (2):
      dir: traverse into repository
      dir: minor refactoring / clean-up

Han Xin (6):
      unpack-objects: low memory footprint for get_data() in dry_run mode
      object-file.c: refactor write_loose_object() to several steps
      object-file.c: add "stream_loose_object()" to handle large object
      unpack-objects: use stream_loose_object() to unpack large objects
      commit-graph.c: no lazy fetch in lookup_commit_in_graph()
      t5330: remove run_with_limited_processses()

Jacob Keller (1):
      remote: handle negative refspecs in git remote show

Jacob Stopak (3):
      Documentation: fix various repeat word typos
      Documentation: clean up a few misspelled word typos
      Documentation: clean up various typos in technical docs

Jaydeep Das (1):
      gpg-interface: add function for converting trust level to string

Jeff King (64):
      is_promisor_object(): walk promisor packs in pack-order
      fetch: stop passing around unused worktrees variable
      branch: drop unused worktrees variable
      revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis
      clone: drop extra newline from warning message
      clone: propagate empty remote HEAD even with other branches
      clone: use remote branch if it matches default HEAD
      clone: move unborn head creation to update_head()
      ref-filter: disable save_commit_buffer while traversing
      diff-files: move misplaced cleanup label
      write_midx_bitmap(): drop unused refs_snapshot parameter
      config.mak.dev: squelch -Wno-missing-braces for older gcc
      tree-walk: add a mechanism for getting non-canonicalized modes
      fsck: actually detect bad file modes in trees
      fsck: downgrade tree badFilemode to "info"
      is_promisor_object(): fix use-after-free of tree buffer
      compat: add function to enable nonblocking pipes
      git-compat-util: make MAX_IO_SIZE define globally available
      pipe_command(): avoid xwrite() for writing to pipe
      pipe_command(): handle ENOSPC when writing to a pipe
      pipe_command(): mark stdin descriptor as non-blocking
      git-compat-util: add UNUSED macro
      refs: mark unused each_ref_fn parameters
      refs: mark unused reflog callback parameters
      refs: mark unused virtual method parameters
      transport: mark bundle transport_options as unused
      streaming: mark unused virtual method parameters
      config: mark unused callback parameters
      hashmap: mark unused callback parameters
      mark unused read_tree_recursive() callback parameters
      run-command: mark unused async callback parameters
      is_path_owned_by_current_uid(): mark "report" parameter as unused
      xdiff: drop unused mmfile parameters from xdl_do_histogram_diff()
      log-tree: drop unused commit param in remerge_diff()
      match_pathname(): drop unused "flags" parameter
      verify_one_sparse(): drop unused parameters
      reftable: drop unused parameter from reader_seek_linear()
      reflog: assert PARSE_OPT_NONEG in parse-options callbacks
      xdiff: drop unused mmfile parameters from xdl_do_patience_diff()
      pass subcommand "prefix" arguments to parse_options()
      maintenance: add parse-options boilerplate for subcommands
      remote: run "remote rm" argv through parse_options()
      pack-bitmap-write: drop unused pack_idx_entry parameters
      tempfile: drop active flag
      tempfile: update comment describing state transitions
      test-crontab: minor memory and error handling fixes
      lookup_commit_in_graph(): use prepare_commit_graph() to check for graph
      rev-list: disable commit graph with --verify-objects
      parse_object(): allow skipping hash check
      upload-pack: skip parse-object re-hashing of "want" objects
      parse_object(): check commit-graph when skip_hash set
      t1060: check partial clone of misnamed blob
      list_objects_filter_copy(): deep-copy sparse_oid_name field
      transport: deep-copy object-filter struct for fetch-pack
      transport: free filter options in disconnect_git()
      list_objects_filter_options: plug leak of filter_spec strings
      prepare_repo_settings(): plug leak of config values
      fetch: stop checking for NULL transport->remote in do_fetch()
      fetch: add branch.*.merge to default ref-prefix extension
      list-objects-filter: don't memset after releasing filter struct
      list-objects-filter: handle null default filter spec
      list-objects-filter: add and use initializers
      list-objects-filter: convert filter_spec to a strbuf
      list-objects-filter: initialize sub-filter structs

Johannes Schindelin (38):
      merge-ort: store messages in a list, not in a single strbuf
      merge-ort: make `path_messages` a strmap to a string_list
      Git 2.30.5
      Git 2.31.4
      Git 2.32.3
      Git 2.33.4
      Git 2.34.4
      Git 2.35.4
      Git 2.36.2
      add --interactive: allow `update` to stage deleted files
      tests: fix incorrect --write-junit-xml code
      mergetool(vimdiff): allow paths to contain spaces again
      shortlog: use a stable sort
      t5351: avoid relying on `core.fsyncMethod = batch` to be supported
      t5351: avoid using `test_cmp` for binary data
      windows: include the Python bits when building Git for Windows
      mingw: remove unneeded `NO_GETTEXT` directive
      mingw: remove unneeded `NO_CURL` directive
      lstat(mingw): correctly detect ENOTDIR scenarios
      merge-ort: clean up after failed merge
      merge-ort: do leave trace2 region even if checkout fails
      setup: fix some formatting
      setup: prepare for more detailed "dubious ownership" messages
      mingw: provide details about unsafe directories' ownership
      mingw: be more informative when ownership check fails on FAT32
      mingw: handle a file owned by the Administrators group correctly
      scalar unregister: stop FSMonitor daemon
      range-diff: reorder argument handling
      range-diff: consistently validate the arguments
      range-diff: optionally accept pathspecs
      add -p: avoid ambiguous signed/unsigned comparison
      t3701: test the built-in `add -i` regardless of NO_PERL
      t6132(NO_PERL): do not run the scripted `add -p`
      add -p: detect more mismatches between plain vs colored diffs
      add -p: gracefully handle unparseable hunk headers in colored diffs
      add -p: ignore dirty submodules
      git help: special-case `scalar`
      scalar: implement the `help` subcommand

Jonathan Tan (1):
      fetch-pack: write effective filter to trace2

Josh Steadmon (1):
      fetch-pack: add tracing for negotiation rounds

Julien Rouhaud (1):
      gitweb: remove title shortening heuristics

Junio C Hamano (44):
      revision: mark blobs needed for resolve-undo as reachable
      A regression fix for 2.37
      Git 2.37.1
      builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()
      The first batch after Git 2.37
      fsck: do not dereference NULL while checking resolve-undo data
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      builtin/remote.c: use the right kind of STRING_LIST_INIT
      The sixth batch
      The seventh batch
      Downmerge a handful of fixes for 2.37.x maintenance track
      The eighth batch
      The ninth batch
      doc: consolidate --rerere-autoupdate description
      doc: clarify rerere-autoupdate
      Downmerge a bit more for 2.37.x
      The tenth batch
      The eleventh batch
      Git 2.37.2
      The twelfth batch
      The thirteenth batch
      The fourteenth batch
      t5329: notice a failure within a loop
      The fifteenth batch
      A handful more topics from the 'master' front for 2.37.3
      pretty: separate out the logic to decide the use of in-body from
      format-patch: allow forcing the use of in-body From: header
      format-patch: learn format.forceInBodyFrom configuration variable
      The sixteenth batch
      Git 2.37.3
      The seventeenth batch
      The eighteenth batch
      The nineteenth batch
      The twentieth batch
      Merge a handful of topics from the 'master' front
      Prepare for 2.38-rc0
      Git 2.38-rc0
      A bit more of remaining topics before -rc1
      Final batch before -rc1
      Git 2.38-rc1
      Git 2.38-rc2

Justin Donnelly (1):
      git-prompt: show presence of unresolved conflicts at command prompt

Kilian Kilger (2):
      git-p4: fix bug with encoding of p4 client name
      git-p4: refactoring of p4CmdList()

Kyle Zhao (1):
      send-pack.c: add config push.useBitmaps

Lessley Dennington (1):
      osx-keychain: fix compiler warning

Li Linchao (3):
      ls-files: update test style
      remote-curl: send Accept-Language header to server
      rev-list: support human-readable output for `--disk-usage`

Linus Torvalds (1):
      symbolic-ref: refuse to set syntactically invalid target

Manuel Boni (1):
      config.txt: document include, includeIf

Martin Ågren (4):
      config/core.txt: fix minor issues for `core.sparseCheckoutCone`
      t4200: drop irrelevant code
      read-cache: make `do_read_index()` always set up `istate->repo`
      cmd-list.perl: fix identifying man sections

Matheus Tavares (7):
      checkout: document bug where delayed checkout counts entries twice
      checkout: show bug about failed entries being included in final report
      checkout: fix two bugs on the final count of updated entries
      pkt-line.h: move comment closer to the associated code
      t0021: avoid grepping for a Perl-specific string at filter output
      t0021: implementation the rot13-filter.pl script in C
      tests: use the new C rot13-filter helper to avoid PERL prereq

Matthew John Cheetham (1):
      scalar: enable built-in FSMonitor on `register`

Miaoqian Lin (1):
      commit-graph: Fix missing closedir in expire_commit_graphs

Michael J Gruber (3):
      sequencer: do not translate reflog messages
      sequencer: do not translate parameters to error_resolve_conflict()
      sequencer: do not translate command names

Moritz Baumann (3):
      git-p4: fix CR LF handling for utf16 files
      git-p4: fix typo in P4Submit.applyCommit()
      git-p4: fix error handling in P4Unshelve.renameBranch()

Philip Oakley (1):
      doc add: renormalize is not idempotent for CRCRLF

Philippe Blain (3):
      diff-format.txt: dst can be 0* SHA-1 when path is deleted, too
      diff-format.txt: correct misleading wording
      diff-index.txt: update raw output format in examples

Phillip Wood (5):
      xdiff: introduce XDL_ALLOC_ARRAY()
      xdiff: introduce xdl_calloc
      xdiff: introduce XDL_CALLOC_ARRAY()
      xdiff: introduce XDL_ALLOC_GROW()
      tests: cache glibc version check

René Scharfe (28):
      archive: update format documentation
      archive: rename archiver data field to filter_command
      archive-tar: factor out write_block()
      archive-tar: add internal gzip implementation
      archive-tar: use OS_CODE 3 (Unix) for internal gzip
      archive-tar: use internal gzip by default
      combine-diff: abort if --ignore-matching-lines is given
      combine-diff: abort if --output is given
      cocci: avoid normalization rules for memcpy
      mingw: avoid mktemp() in mkstemp() implementation
      mergesort: unify ranks loops
      mergesort: tighten merge loop
      mergesort: add macros for typed sort of linked lists
      test-mergesort: use DEFINE_LIST_SORT_DEBUG
      test-mergesort: use DEFINE_LIST_SORT
      blame: use DEFINE_LIST_SORT
      commit: use DEFINE_LIST_SORT
      fetch-pack: use DEFINE_LIST_SORT
      packfile: use DEFINE_LIST_SORT
      mergesort: remove llist_mergesort()
      nonblock: support Windows
      tempfile: avoid directory cleanup race
      test-mergesort: read sort input all at once
      test-mergesort: use mem_pool for sort input
      diff-no-index: release strbuf on queue error
      diff-no-index: release prefixed filenames
      diff-no-index: simplify argv index calculation
      add -p: fix worktree patch mode prompts

Richard Oliver (1):
      mktree: do not check type of remote objects

SZEDER Gábor (30):
      Makefile: build 'gitweb' in the default target
      multi-pack-index: simplify handling of unknown --options
      index-format.txt: remove outdated list of supported extensions
      git.c: update NO_PARSEOPT markings
      t3301-notes.sh: check that default operation mode doesn't take arguments
      t5505-remote.sh: check the behavior without a subcommand
      t0040-parse-options: test parse_options() with various 'parse_opt_flags'
      api-parse-options.txt: fix description of OPT_CMDMODE
      parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options
      parse-options: clarify the limitations of PARSE_OPT_NODASH
      parse-options: drop leading space from '--git-completion-helper' output
      parse-options: add support for parsing subcommands
      builtin/bundle.c: let parse-options parse subcommands
      builtin/commit-graph.c: let parse-options parse subcommands
      builtin/gc.c: let parse-options parse 'git maintenance's subcommands
      builtin/hook.c: let parse-options parse subcommands
      builtin/multi-pack-index.c: let parse-options parse subcommands
      builtin/notes.c: let parse-options parse subcommands
      builtin/reflog.c: let parse-options parse subcommands
      builtin/remote.c: let parse-options parse subcommands
      builtin/sparse-checkout.c: let parse-options parse subcommands
      builtin/stash.c: let parse-options parse subcommands
      builtin/worktree.c: let parse-options parse subcommands
      promisor-remote: fix xcalloc() argument order
      t0040-parse-options: remove leftover debugging
      test-parse-options.c: don't use for loop initial declaration
      test-parse-options.c: fix style of comparison with zero
      notes: simplify default operation mode arguments check
      notes, remote: show unknown subcommands between `'
      t/Makefile: remove 'test-results' on 'make clean'

Shaoxuan Yuan (22):
      t7002: add tests for moving out-of-cone file/directory
      t1092: mv directory from out-of-cone to in-cone
      mv: update sparsity after moving from out-of-cone to in-cone
      mv: decouple if/else-if checks using goto
      mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
      mv: check if <destination> exists in index to handle overwriting
      mv: use flags mode for update_mode
      mv: add check_dir_in_index() and solve general dir check issue
      t1092: add tests for `git-rm`
      pathspec.h: move pathspec_needs_expanded_index() from reset.c to here
      rm: expand the index only when necessary
      rm: integrate with sparse-index
      t7002: add tests for moving from in-cone to out-of-cone
      mv: rename check_dir_in_index() to empty_dir_has_sparse_contents()
      mv: free the with_slash in check_dir_in_index()
      mv: check if <destination> is a SKIP_WORKTREE_DIR
      mv: remove BOTH from enum update_mode
      mv: from in-cone to out-of-cone
      mv: cleanup empty WORKING_DIRECTORY
      advice.h: add advise_on_moving_dirty_path()
      mv: check overwrite for in-to-out move
      builtin/mv.c: fix possible segfault in add_slash()

Siddharth Asthana (4):
      revision: improve commit_rewrite_person()
      ident: move commit_rewrite_person() to ident.c
      ident: rename commit_rewrite_person() to apply_mailmap_to_header()
      cat-file: add mailmap support

Tao Klerks (1):
      rev-parse: documentation adjustment - mention remote tracking with @{u}

Taylor Blau (14):
      pack-objects.h: remove outdated pahole results
      commit-graph: pass repo_settings instead of repository
      t5318: demonstrate commit-graph generation v2 corruption
      commit-graph: introduce `repo_find_commit_pos_in_graph()`
      commit-graph: fix corrupt upgrade from generation v1 to v2
      t1006: extract --batch-command inputs to variables
      builtin/cat-file.c: support NUL-delimited input with `-z`
      t5326: demonstrate potential bitmap corruption
      t/lib-bitmap.sh: avoid silencing stderr
      midx.c: extract `struct midx_fanout`
      midx.c: extract `midx_fanout_add_midx_fanout()`
      midx.c: extract `midx_fanout_add_pack_fanout()`
      midx.c: include preferred pack correctly with existing MIDX
      midx.c: avoid adding preferred objects twice

Teng Long (8):
      pack-bitmap.c: fix formatting of error messages
      pack-bitmap.c: mark more strings for translations
      pack-bitmap.c: rename "idx_name" to "bitmap_name"
      pack-bitmap.c: do not ignore error when opening a bitmap file
      pack-bitmap.c: using error() instead of silently returning -1
      pack-bitmap.c: continue looping when first MIDX bitmap is found
      api-trace2.txt: print config key-value pair
      tr2: shows scope unconditionally in addition to key-value pair

Todd Zullinger (2):
      docs: fix a few recently broken links
      api docs: link to html version of api-trace2

Victoria Dye (37):
      scalar: reword command documentation to clarify purpose
      scalar: convert README.md into a technical design doc
      checkout: fix nested sparse directory diff in sparse index
      oneway_diff: handle removed sparse directories
      cache.h: create 'index_name_pos_sparse()'
      unpack-trees: unpack new trees as sparse directories
      scalar-diagnose: use "$GIT_UNZIP" in test
      scalar-diagnose: avoid 32-bit overflow of size_t
      scalar-diagnose: add directory to archiver more gently
      scalar-diagnose: move 'get_disk_info()' to 'compat/'
      scalar-diagnose: move functionality to common location
      diagnose.c: add option to configure archive contents
      builtin/diagnose.c: create 'git diagnose' builtin
      builtin/diagnose.c: add '--mode' option
      builtin/bugreport.c: create '--diagnose' option
      scalar-diagnose: use 'git diagnose --mode=all'
      scalar: update technical doc roadmap
      scalar: constrain enlistment search
      scalar-unregister: handle error codes greater than 0
      scalar-[un]register: clearly indicate source of error
      scalar-delete: do not 'die()' in 'delete_enlistment()'
      scalar: move config setting logic into its own function
      scalar: update technical doc roadmap with FSMonitor support
      p0004: fix prereq declaration
      p0006: fix 'read-tree' argument ordering
      unpack-trees: fix sparse directory recursion check
      scalar: fix command documentation section header
      scalar: include in standard Git build & installation
      scalar: add to 'git help -a' command list
      scalar-clone: add test coverage
      t/perf: add Scalar performance tests
      t/perf: add 'GIT_PERF_USE_SCALAR' run option
      Documentation/technical: include Scalar technical doc
      diagnose.c: refactor to safely use 'd_type'
      Documentation: add ReviewingGuidelines
      diagnose: add to command-list.txt
      version: fix builtin linking & documentation

ZheNing Hu (2):
      ls-files: introduce "--format" option
      ls-files: fix black space in error message

brian m. carlson (2):
      sha256: add support for Nettle
      gc: use temporary file for editing crontab

Ævar Arnfjörð Bjarmason (153):
      t0008: don't rely on default ".git/info/exclude"
      tests: don't depend on template-created .git/branches
      tests: don't assume a .git/info for .git/info/grafts
      tests: don't assume a .git/info for .git/info/attributes
      tests: don't assume a .git/info for .git/info/refs
      tests: don't assume a .git/info for .git/info/exclude
      tests: don't assume a .git/info for .git/info/sparse-checkout
      object-file.c: factor out deflate part of write_loose_object()
      core doc: modernize core.bigFileThreshold documentation
      git-submodule.sh: remove unused sanitize_submodule_env()
      git-submodule.sh: remove unused $prefix variable
      git-submodule.sh: make the "$cached" variable a boolean
      git-submodule.sh: remove unused top-level "--branch" argument
      submodule--helper: have --require-init imply --init
      submodule update: remove "-v" option
      submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
      submodule--helper: report "submodule" as our name in some "-h" output
      submodule--helper: understand --checkout, --merge and --rebase synonyms
      git-submodule.sh: use "$quiet", not "$GIT_QUIET"
      git-sh-setup.sh: remove "say" function, change last users
      gitweb/Makefile: define all .PHONY prerequisites inline
      gitweb/Makefile: add a $(GITWEB_ALL) variable
      gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
      gitweb/Makefile: prepare to merge into top-level Makefile
      gitweb: remove "test" and "test-installed" targets
      gitweb/Makefile: include in top-level Makefile
      gitweb/Makefile: add a "NO_GITWEB" parameter
      tests: add missing double quotes to included library paths
      test-lib.sh: fix prepend_var() quoting issue
      config tests: fix harmless but broken "rm -r" cleanup
      submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
      check-ref-format: fix trivial memory leak
      clone: fix memory leak in wanted_peer_refs()
      submodule.c: free() memory from xgetcwd()
      revert: free "struct replay_opts" members
      cat-file: fix a memory leak in --batch-command mode
      merge-file: refactor for subsequent memory leak fix
      merge-file: fix memory leaks on error path
      checkout: avoid "struct unpack_trees_options" leak
      gc: fix a memory leak
      cat-file: fix a common "struct object_context" memory leak
      pull: fix a "struct oid_array" memory leak
      test-tool test-hash: fix a memory leak
      test-tool path-utils: fix a memory leak
      test-tool {dump,scrap}-cache-tree: fix memory leaks
      test-tool urlmatch-normalization: fix a memory leak
      test-tool regex: call regfree(), fix memory leaks
      test-tool json-writer: fix memory leaks
      test-tool bloom: fix memory leaks
      test-tool ref-store: fix a memory leak
      test-tool delta: fix a memory leak
      Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS
      Makefile & .gitignore: ignore & clean "git.res", not "*.res"
      cocci: add a "coccicheck-test" target and test *.cocci rules
      cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
      cocci: add and apply a rule to find "unused" strbufs
      cocci: generalize "unused" rule to cover more than "strbuf"
      trace2: only include "fsync" events if we git_fsync()
      test-lib: use $1, not $@ in test_known_broken_{ok,failure}_
      test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
      test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
      test-lib: add a --invert-exit-code switch
      t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
      test-lib: add a SANITIZE=leak logging mode
      t/Makefile: don't remove test-results in "clean-except-prove-cache"
      tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
      test-lib: simplify by removing test_external
      test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
      test-lib: have the "check" mode for SANITIZE=leak consider leak logs
      leak tests: don't skip some tests under SANITIZE=leak
      leak tests: mark passing SANITIZE=leak tests as leak-free
      upload-pack: fix a memory leak in create_pack_file()
      CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
      bisect.c: add missing "goto" for release_revisions()
      test-fast-rebase helper: use release_revisions() (again)
      log: fix a memory leak in "git show <revision>..."
      log: refactor "rev.pending" code in cmd_show()
      bisect.c: partially fix bisect_rev_setup() memory leak
      revisions API: don't leak memory on argv elements that need free()-ing
      help.c: refactor drop_prefix() to use a "switch" statement"
      help.c: remove common category behavior from drop_prefix() behavior
      git help doc: use "<doc>" instead of "<guide>"
      git docs: add a category for user-facing file, repo and command UX
      git docs: add a category for file formats, protocols and interfaces
      docs: move commit-graph format docs to man section 5
      docs: move protocol-related docs to man section 5
      docs: move index format docs to man section 5
      docs: move signature docs to man section 5
      docs: move pack format docs to man section 5
      docs: move cruft pack docs to gitformat-pack
      docs: move http-protocol docs to man section 5
      hook API: don't segfault on strbuf_addf() to NULL "out"
      Makefile + hash.h: remove PPC_SHA1 implementation
      Makefile: use $(OBJECTS) instead of $(C_OBJ)
      git-compat-util.h: use "UNUSED", not "UNUSED(var)"
      git-compat-util.h: use "deprecated" for UNUSED variables
      submodule tests: test usage behavior
      submodule tests: test for "add <repository> <abs-path>"
      submodule--helper: remove unused "name" helper
      submodule--helper: remove unused "list" helper
      test-tool submodule-config: remove unused "--url" handling
      submodule--helper: move "is-active" to a test-tool
      submodule--helper: move "check-name" to a test-tool
      submodule--helper: move "resolve-relative-url-test" to a test-tool
      submodule--helper style: don't separate declared variables with \n\n
      submodule--helper style: add \n\n after variable declarations
      submodule--helper: replace memset() with { 0 }-initialization
      submodule--helper: use xstrfmt() in clone_submodule()
      submodule--helper: move "sb" in clone_submodule() to its own scope
      submodule--helper: add "const" to passed "module_clone_data"
      submodule--helper: add "const" to passed "struct update_data"
      submodule--helper: don't redundantly check "else if (res)"
      submodule--helper: rename "int res" to "int ret"
      submodule--helper: return "ret", not "1" from update_submodule()
      submodule--helper: add missing braces to "else" arm
      submodule--helper: don't call submodule_strategy_to_string() in BUG()
      submodule API: don't handle SM_..{UNSPECIFIED,COMMAND} in to_string()
      submodule--helper: use "code" in run_update_command()
      submodule--helper: don't exit() on failure, return
      submodule--helper: libify determine_submodule_update_strategy()
      submodule--helper: libify "must_die_on_failure" code paths
      submodule--helper update: don't override 'checkout' exit code
      submodule--helper: libify "must_die_on_failure" code paths (for die)
      submodule--helper: check repo{_submodule,}_init() return values
      submodule--helper: libify more "die" paths for module_update()
      submodule--helper: libify even more "die" paths for module_update()
      submodule--helper: fix bad config API usage
      submodule--helper: fix a leak in "clone_submodule"
      submodule--helper: fix trivial get_default_remote_submodule() leak
      submodule--helper: fix most "struct pathspec" memory leaks
      submodule--helper: "struct pathspec" memory leak in module_update()
      submodule--helper: don't leak {run,capture}_command() cp.dir argument
      submodule--helper: add and use *_release() functions
      submodule--helper: fix "errmsg_str" memory leak
      submodule--helper: fix "sm_path" and other "module_cb_list" leaks
      submodule--helper: fix a leak with repo_clear()
      submodule--helper: fix a memory leak in get_default_remote_submodule()
      submodule--helper: fix "reference" leak
      submodule--helper: fix obscure leak in module_add()
      submodule--helper: fix a leak in module_add()
      submodule--helper: fix a memory leak in print_status()
      submodule--helper: free some "displaypath" in "struct update_data"
      submodule--helper: free rest of "displaypath" in "struct update_data"
      submodule--helper: fix a configure_added_submodule() leak
      docs: add and use include template for config/* includes
      grep docs: de-duplicate configuration sections
      send-email docs: de-duplicate configuration sections
      apply docs: de-duplicate configuration sections
      notes docs: de-duplicate and combine configuration sections
      difftool docs: de-duplicate configuration sections
      log docs: de-duplicate configuration sections
      docs: add CONFIGURATION sections that map to a built-in
      docs: add CONFIGURATION sections that fuzzy map to built-ins

Øystein Walle (1):
      rev-parse --parseopt: detect missing opt-spec


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.38.0-rc1
@ 2022-09-22  0:11  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-09-22  0:11 UTC (permalink / raw)
  To: git; +Cc: git-packagers

A release candidate Git v2.38.0-rc1 is now available for testing at
the usual places.  It is comprised of 668 non-merge commits since
v2.37.0, contributed by 81 people, 23 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.38.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.37.0 are as follows.
Welcome to the Git development community!

  Andrew Olsen, Anthony Delannoy, Carlos López, Celeste Liu,
  Cleber Rosa, David Plumpton, Elijah Conners, Eric DeCosta, Goss
  Geppert, Ilya K, Ingy dot Net, Jacob Stopak, Julien Rouhaud,
  Kilian Kilger, Lana Deere, Manuel Boni, Matthew Klein, Miaoqian
  Lin, Moritz Baumann, Pavel Rappo, Pierre Garnier, Richard Oliver,
  and Xavier Morel.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Abhradeep Chakraborty, Adam Dinwoodie, Ævar Arnfjörð
  Bjarmason, Alex Henrie, Arthur Milchior, brian m. carlson,
  Calvin Wan, Carlo Marcelo Arenas Belón, Christian Couder,
  Christoph Reiter, Derrick Stolee, Dimitriy Ryazantcev, Đoàn
  Trần Công Danh, Elijah Newren, Emily Shaffer, Eric Sunshine,
  Fangyi Zhou, Felipe Contreras, Fernando Ramos, Glen Choo,
  Han Xin, Hariom Verma, Jacob Keller, Jaydeep Das, Jeff King,
  Jiang Xin, Joey Hess, Johannes Schindelin, John Cai, Jonathan
  Tan, Josh Steadmon, Junio C Hamano, Justin Donnelly, Kyle Zhao,
  Lessley Dennington, Li Linchao, Linus Torvalds, Martin Ågren,
  Matheus Tavares, Matthew John Cheetham, Michael J Gruber,
  Øystein Walle, Philip Oakley, Philippe Blain, Phillip Wood,
  Randall S. Becker, Renato Botelho, René Scharfe, Shaoxuan Yuan,
  Siddharth Asthana, SZEDER Gábor, Tao Klerks, Taylor Blau,
  Teng Long, Todd Zullinger, Torsten Bögershausen, Victoria Dye,
  and ZheNing Hu.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.38 Release Notes (draft)
===============================

UI, Workflows & Features

 * "git remote show [-n] frotz" now pays attention to negative
   pathspec.

 * "git push" sometimes performs poorly when reachability bitmaps are
   used, even in a repository where other operations are helped by
   bitmaps.  The push.useBitmaps configuration variable is introduced
   to allow disabling use of reachability bitmaps only for "git push".

 * "git grep -m<max-hits>" is a way to limit the hits shown per file.

 * "git merge-tree" learned a new mode where it takes two commits and
   computes a tree that would result in the merge commit, if the
   histories leading to these two commits were to be merged.

 * "git mv A B" in a sparsely populated working tree can be asked to
   move a path between directories that are "in cone" (i.e. expected
   to be materialized in the working tree) and "out of cone"
   (i.e. expected to be hidden).  The handling of such cases has been
   improved.

 * Earlier, HTTP transport clients learned to tell the server side
   what locale they are in by sending Accept-Language HTTP header, but
   this was done only for some requests but not others.

 * Introduce a safe.barerepository configuration variable that
   allows users to forbid discovery of bare repositories.

 * Various messages that come from the pack-bitmap codepaths have been
   tweaked.

 * "git rebase -i" learns to update branches whose tip appear in the
   rebased range with "--update-refs" option.

 * "git ls-files" learns the "--format" option to tweak its output.

 * "git cat-file" learned an option to use the mailmap when showing
   commit and tag objects.

 * When "git merge" finds that it cannot perform a merge, it should
   restore the working tree to the state before the command was
   initiated, but in some corner cases it didn't.

 * Operating modes like "--batch" of "git cat-file" command learned to
   take NUL-terminated input, instead of one-item-per-line.

 * "git rm" has become more aware of the sparse-index feature.

 * "git rev-list --disk-usage" learned to take an optional value
   "human" to show the reported value in human-readable format, like
   "3.40MiB".

 * The "diagnose" feature to create a zip archive for diagnostic
   material has been lifted from "scalar" and made into a feature of
   "git bugreport".

 * The namespaces used by "log --decorate" from "refs/" hierarchy by
   default has been tightened.

 * "git rev-list --ancestry-path=C A..B" is a natural extension of
   "git rev-list A..B"; instead of choosing a subset of A..B to those
   that have ancestry relationship with A, it lets a subset with
   ancestry relationship with C.

 * "scalar" now enables built-in fsmonitor on enlisted repositories,
   when able.

 * The bash prompt (in contrib/) learned to optionally indicate when
   the index is unmerged.

 * "git clone" command learned the "--bundle-uri" option to coordinate
   with hosting sites the use of pre-prepared bundle files.

 * "git range-diff" learned to honor pathspec argument if given.

 * "git format-patch --from=<ident>" can be told to add an in-body
   "From:" line even for commits that are authored by the given
   <ident> with "--force-in-body-from" option.

 * The built-in fsmonitor refuses to work on a network mounted
   repositories; a configuration knob for users to override this has
   been introduced.

 * The "scalar" addition from Microsoft is now part of the core Git
   installation.


Performance, Internal Implementation, Development Support etc.

 * Collection of what is referenced by objects in promisor packs have
   been optimized to inspect these objects in the in-pack order.

 * Introduce a helper to see if a branch is already being worked on
   (hence should not be newly checked out in a working tree), which
   performs much better than the existing find_shared_symref() to
   replace many uses of the latter.

 * Teach "git archive" to (optionally and then by default) avoid
   spawning an external "gzip" process when creating ".tar.gz" (and
   ".tgz") archives.

 * Allow large objects read from a packstream to be streamed into a
   loose object file straight, without having to keep it in-core as a
   whole.

 * Further preparation to turn git-submodule.sh into a builtin
   continues.

 * Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
   macro, which would improve maintainability and readability.

 * Teach "make all" to build gitweb as well.

 * Tweak tests so that they still work when the "git init" template
   did not create .git/info directory.

 * Add Coccinelle rules to detect the pattern of initializing and then
   finalizing a structure without using it in between at all, which
   happens after code restructuring and the compilers fail to
   recognize as an unused variable.

 * The code to convert between GPG trust level strings and internal
   constants we use to represent them have been cleaned up.

 * Support for libnettle as SHA256 implementation has been added.

 * The way "git multi-pack" uses parse-options API has been improved.

 * A Coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
   macro has been improved.

 * API tweak to make it easier to run fuzz testing on commit-graph parser.

 * Omit fsync-related trace2 entries when their values are all zero.

 * The codepath to write multi-pack index has been taught to release a
   large chunk of memory that holds an array of objects in the packs,
   as soon as it is done with the array, to reduce memory consumption.

 * Add a level of redirection to array allocation API in xdiff part,
   to make it easier to share with the libgit2 project.

 * "git fetch" client logs the partial clone filter used in the trace2
   output.

 * The "bundle URI" design gets documented.

 * The common ancestor negotiation exchange during a "git fetch"
   session now leaves trace log.

 * Test portability improvements.
   (merge 4d1d843be7 mt/rot13-in-c later to maint).

 * The "subcommand" mode is introduced to parse-options API and update
   the command line parser of Git commands with subcommands.

 * The pack bitmap file gained a bitmap-lookup table to speed up
   locating the necessary bitmap for a given commit.

 * The assembly version of SHA-1 implementation for PPC has been
   removed.

 * The server side that responds to "git fetch" and "git clone"
   request has been optimized by allowing it to send objects in its
   object store without recomputing and validating the object names.

 * Annotate function parameters that are not used (but cannot be
   removed for structural reasons), to prepare us to later compile
   with -Wunused warning turned on.

 * Share the text used to explain configuration variables used by "git
   <subcmd>" in "git help <subcmd>" with the text from "git help config".

 * "git mv A B" in a sparsely populated working tree can be asked to
   move a path from a directory that is "in cone" to another directory
   that is "out of cone".  Handling of such a case has been improved.

 * The chainlint script for our tests has been revamped.


Fixes since v2.37
-----------------

 * Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
   correctly record a removed file to the index, which was fixed.

 * Certain diff options are currently ignored when combined-diff is
   shown; mark them as incompatible with the feature.

 * Adjust technical/bitmap-format to be formatted by AsciiDoc, and
   add some missing information to the documentation.

 * Fixes for tests when the source directory has unusual characters in
   its path, e.g. whitespaces, double-quotes, etc.

 * "git mktree --missing" lazily fetched objects that are missing from
   the local object store, which was totally unnecessary for the purpose
   of creating the tree object(s) from its input.

 * Give _() markings to fatal/warning/usage: labels that are shown in
   front of these messages.

 * References to commands-to-be-typed-literally in "git rebase"
   documentation mark-up have been corrected.

 * In a non-bare repository, the behavior of Git when the
   core.worktree configuration variable points at a directory that has
   a repository as its subdirectory, regressed in Git 2.27 days.

 * Recent update to vimdiff layout code has been made more robust
   against different end-user vim settings.

 * Plug various memory leaks, both in the main code and in test-tool
   commands.

 * Fixes a long-standing corner case bug around directory renames in
   the merge-ort strategy.

 * The resolve-undo information in the index was not protected against
   GC, which has been corrected.

 * A corner case bug where lazily fetching objects from a promisor
   remote resulted in infinite recursion has been corrected.

 * "git clone" from a repository with some ref whose HEAD is unborn
   did not set the HEAD in the resulting repository correctly, which
   has been corrected.

 * An earlier attempt to plug leaks placed a clean-up label to jump to
   at a bogus place, which as been corrected.

 * Variable quoting fix in the vimdiff driver of "git mergetool"

 * "git shortlog -n" relied on the underlying qsort() to be stable,
   which shouldn't have.  Fixed.

 * A fix for a regression in test framework.

 * mkstemp() emulation on Windows has been improved.

 * Add missing documentation for "include" and "includeIf" features in
   "git config" file format, which incidentally teaches the command
   line completion to include them in its offerings.

 * Avoid "white/black-list" in documentation and code comments.

 * Workaround for a compiler warning against use of die() in
   osx-keychain (in contrib/).

 * Workaround for a false positive compiler warning.

 * "git p4" working on UTF-16 files on Windows did not implement
   CRLF-to-LF conversion correctly, which has been corrected.

 * "git p4" did not handle non-ASCII client name well, which has been
   corrected.

 * "rerere-train" script (in contrib/) used to honor commit.gpgSign
   while recreating the throw-away merges.

 * "git checkout" miscounted the paths it updated, which has been
   corrected.

 * Fix for a bug that makes write-tree to fail to write out a
   non-existent index as a tree, introduced in 2.37.

 * There was a bug in the codepath to upgrade generation information
   in commit-graph from v1 to v2 format, which has been corrected.

 * Gitweb had legacy URL shortener that is specific to the way
   projects hosted on kernel.org used to (but no longer) work, which
   has been removed.

 * Fix build procedure for Windows that uses CMake so that it can pick
   up the shell interpreter from local installation location.

 * Conditionally allow building Python interpreter on Windows

 * Fix to lstat() emulation on Windows.

 * Older gcc with -Wall complains about the universal zero initializer
   "struct s = { 0 };" idiom, which makes developers' lives
   inconvenient (as -Werror is enabled by DEVELOPER=YesPlease).  The
   build procedure has been tweaked to help these compilers.

 * Plug memory leaks in the failure code path in the "merge-ort" merge
   strategy backend.

 * "git symbolic-ref symref non..sen..se" is now diagnosed as an error.

 * A follow-up fix to a fix for a regression in 2.36 around hooks.

 * Avoid repeatedly running getconf to ask libc version in the test
   suite, and instead just as it once per script.

 * Platform-specific code that determines if a directory is OK to use
   as a repository has been taught to report more details, especially
   on Windows.

 * "vimdiff3" regression fix.

 * "git fsck" reads mode from tree objects but canonicalizes the mode
   before passing it to the logic to check object sanity, which has
   hid broken tree objects from the checking logic.  This has been
   corrected, but to help existing projects with broken tree objects
   that they cannot fix retroactively, the severity of anomalies this
   code detects has been demoted to "info" for now.

 * Fixes to sparse index compatibility work for "reset" and "checkout"
   commands.

 * An earlier optimization discarded a tree-object buffer that is
   still in use, which has been corrected.

 * Fix deadlocks between main Git process and subprocess spawned via
   the pipe_command() API, that can kill "git add -p" that was
   reimplemented in C recently.

 * The sequencer machinery translated messages left in the reflog by
   mistake, which has been corrected.

 * xcalloc(), imitating calloc(), takes "number of elements of the
   array", and "size of a single element", in this order.  A call that
   does not follow this ordering has been corrected.

 * The preload-index codepath made copies of pathspec to give to
   multiple threads, which were left leaked.

 * Update the version of Ubuntu used for GitHub Actions CI from 18.04
   to 22.04.

 * The auto-stashed local changes created by "git merge --autostash"
   was mixed into a conflicted state left in the working tree, which
   has been corrected.

 * Multi-pack index got corrupted when preferred pack changed from one
   pack to another in a certain way, which has been corrected.
   (merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint).

 * The clean-up of temporary files created via mks_tempfile_dt() was
   racy and attempted to unlink() the leading directory when signals
   are involved, which has been corrected.
   (merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint).

 * FreeBSD portability fix for "git maintenance" that spawns "crontab"
   to schedule tasks.
   (merge ee69e7884e bc/gc-crontab-fix later to maint).

 * Those who use diff-so-fancy as the diff-filter noticed a regression
   or two in the code that parses the diff output in the built-in
   version of "add -p", which has been corrected.
   (merge 0a101676e5 js/add-p-diff-parsing-fix later to maint).

 * Segfault fix-up to an earlier fix to the topic to teach "git reset"
   and "git checkout" work better in a sparse checkout.
   (merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint).

 * "git diff --no-index A B" managed its the pathnames of its two
   input files rather haphazardly, sometimes leaking them.  The
   command line argument processing has been straightened out to clean
   it up.
   (merge 2b43dd0eb5 rs/diff-no-index-cleanup later to maint).

 * "git rev-list --verify-objects" ought to inspect the contents of
   objects and notice corrupted ones, but it didn't when the commit
   graph is in use, which has been corrected.
   (merge b27ccae34b jk/rev-list-verify-objects-fix later to maint).

 * More fixes to "add -p"
   (merge 64ec8efb83 js/builtin-add-p-portability-fix later to maint).

 * The parser in the script interface to parse-options in "git
   rev-parse" has been updated to diagnose a bogus input correctly.
   (merge f20b9c36d0 ow/rev-parse-parseopt-fix later to maint).

 * The code that manages list-object-filter structure, used in partial
   clones, leaked the instances, which has been plugged.
   (merge 66eede4a37 jk/plug-list-object-filter-leaks later to maint).

 * Fix another UI regression in the reimplemented "add -p".
   (merge f6f0ee247f rs/add-p-worktree-mode-prompt-fix later to maint).

 * "git fetch" over protocol v2 sent an incorrect ref prefix request
   to the server and made "git pull" with configured fetch refspec
   that does not cover the remote branch to merge with fail, which has
   been corrected.
   (merge 49ca2fba39 jk/proto-v2-ref-prefix-fix later to maint).

 * A result from opendir() was leaking in the commit-graph expiration
   codepath, which has been plugged.
   (merge 12f1ae5324 ml/commit-graph-expire-dir-leak-fix later to maint).

 * Just like we have coding guidelines, we now have guidelines for
   reviewers.
   (merge e01b851923 vd/doc-reviewing-guidelines later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 77b9e85c0f vd/fix-perf-tests later to maint).
   (merge 0682bc43f5 jk/test-crontab-fixes later to maint).
   (merge b46dd1726c cc/doc-trailer-whitespace-rules later to maint).

----------------------------------------------------------------

Changes since v2.37.0 are as follows:

Abhradeep Chakraborty (9):
      bitmap-format.txt: feed the file to asciidoc to generate html
      bitmap-format.txt: fix some formatting issues
      bitmap-format.txt: add information for trailing checksum
      Documentation/technical: describe bitmap lookup table extension
      bitmap: move `get commit positions` code to `bitmap_writer_finish`
      pack-bitmap-write.c: write lookup table extension
      pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
      pack-bitmap: prepare to read lookup table extension
      bitmap-lookup-table: add performance tests for lookup table

Adam Dinwoodie (1):
      t1800: correct test to handle Cygwin

Alex Henrie (2):
      gc: don't translate literal commands
      builtin/diagnose.c: don't translate the two mode values

Anthony Delannoy (1):
      preload-index: fix memleak

Calvin Wan (1):
      submodule merge: update conflict error message

Carlo Marcelo Arenas Belón (2):
      setup: tighten ownership checks post CVE-2022-24765
      cmake: support local installations of git

Carlos López (1):
      grep: add --max-count command line option

Celeste Liu (1):
      contrib/rerere-train: avoid useless gpg sign in training

Christian Couder (1):
      Documentation: clarify whitespace rules for trailers

Cleber Rosa (1):
      setup: fix function name in a BUG() message

Derrick Stolee (50):
      branch: add branch_checked_out() helper
      branch: check for bisects and rebases
      fetch: use new branch_checked_out() and add tests
      branch: use branch_checked_out() when deleting refs
      branch: fix branch_checked_out() leaks
      t5510: replace 'origin' with URL more carefully
      vscode: improve tab size and wrapping
      git-rebase.txt: use back-ticks consistently
      pack-bitmap-write: use const for hashes
      midx: extract bitmap write setup
      midx: reduce memory pressure while writing bitmaps
      daemon: clarify directory arguments
      git-cvsserver: clarify directory list
      git.txt: remove redundant language
      t: avoid "whitelist"
      transport.c: avoid "whitelist"
      t2407: test bisect and rebase as black-boxes
      t2407: test branches currently using apply backend
      branch: consider refs under 'update-refs'
      rebase-interactive: update 'merge' description
      sequencer: define array with enum values
      sequencer: add update-ref command
      rebase: add --update-refs option
      rebase: update refs from 'update-ref' commands
      sequencer: rewrite update-refs as user edits todo list
      rebase: add rebase.updateRefs config option
      sequencer: ignore HEAD ref under --update-refs
      sequencer: notify user of --update-refs activity
      compat/win32: correct for incorrect compiler warning
      refs: allow "HEAD" as decoration filter
      t4207: modernize test
      t4207: test coloring of grafted decorations
      refs: add array of ref namespaces
      refs: use ref_namespaces for replace refs base
      log-tree: use ref_namespaces instead of if/else-if
      log: add default decoration filter
      log: add --clear-decorations option
      log: create log.initialDecorationSet=all
      maintenance: stop writing log.excludeDecoration
      fetch: use ref_namespaces during prefetch
      docs: document bundle URI standard
      bundle-uri: add example bundle organization
      remote-curl: add 'get' capability
      bundle-uri: create basic file-copy logic
      clone: add --bundle-uri option
      bundle-uri: add support for http(s):// and file://
      clone: --bundle-uri cannot be combined with --depth
      t6019: modernize tests with helper
      clone: warn on failure to repo_init()
      ci: update 'static-analysis' to Ubuntu 22.04

Dimitriy Ryazantcev (1):
      i18n: mark message helpers prefix for translation

Elijah Conners (1):
      reftable: use a pointer for pq_entry param

Elijah Newren (43):
      merge-tree: rename merge_trees() to trivial_merge_trees()
      merge-tree: move logic for existing merge into new function
      merge-tree: add option parsing and initial shell for real merge function
      merge-tree: implement real merges
      merge-ort: split out a separate display_update_messages() function
      merge-tree: support including merge messages in output
      merge-ort: provide a merge_get_conflicted_files() helper function
      merge-ort: remove command-line-centric submodule message from merge-ort
      merge-tree: provide a list of which files have conflicts
      merge-tree: provide easy access to `ls-files -u` style info
      merge-ort: store more specific conflict information
      merge-ort: optionally produce machine-readable output
      merge-tree: allow `ls-files -u` style info to be NUL terminated
      merge-tree: add a --allow-unrelated-histories flag
      git-merge-tree.txt: add a section on potentional usage mistakes
      t6429: fix use of non-existent function
      t6423: add tests of dual directory rename plus add/add conflict
      merge-ort: small cleanups of check_for_directory_rename
      merge-ort: make a separate function for freeing struct collisions
      merge-ort: shuffle the computation and cleanup of potential collisions
      merge-ort: fix issue with dual rename and add/add conflict
      merge-ort-wrappers: make printed message match the one from recursive
      merge-resolve: abort if index does not match HEAD
      merge: abort if index does not match HEAD for trivial merges
      merge: do not abort early if one strategy fails to handle the merge
      merge: fix save_state() to work when there are stat-dirty files
      merge: make restore_state() restore staged state too
      merge: ensure we can actually restore pre-merge state
      merge: do not exit restore_state() prematurely
      merge-ort: remove translator lego in new "submodule conflict suggestion"
      merge-ort: avoid surprise with new sub_flag variable
      merge-ort: provide helpful submodule update message when possible
      merge-ort: remove code obsoleted by other changes
      rev-list-options.txt: fix simple typo
      revision: allow --ancestry-path to take an argument
      merge: only apply autostash when appropriate
      merge: cleanup confusing logic for handling successful merges
      merge: small code readability improvement
      t4301: add more interesting merge-tree testcases
      t64xx: convert 'test_create_repo' to 'git init'
      diff: have submodule_format logic avoid additional diff headers
      diff: fix filtering of additional headers under --remerge-diff
      diff: fix filtering of merge commits under --remerge-diff

Eric DeCosta (1):
      fsmonitor: option to allow fsmonitor to run against network-mounted repos

Eric Sunshine (25):
      t2407: fix broken &&-chains in compound statement
      t1092: fix buggy sparse "blame" test
      t: detect and signal failure within loop
      t4301: account for behavior differences between sed implementations
      t4301: fix broken &&-chains and add missing loop termination
      t4301: emit blank line in more idiomatic fashion
      t: add skeleton chainlint.pl
      chainlint.pl: add POSIX shell lexical analyzer
      chainlint.pl: add POSIX shell parser
      chainlint.pl: add parser to validate tests
      chainlint.pl: add parser to identify test definitions
      chainlint.pl: validate test scripts in parallel
      chainlint.pl: don't require `return|exit|continue` to end with `&&`
      t/Makefile: apply chainlint.pl to existing self-tests
      chainlint.pl: don't require `&` background command to end with `&&`
      chainlint.pl: don't flag broken &&-chain if `$?` handled explicitly
      chainlint.pl: don't flag broken &&-chain if failure indicated explicitly
      chainlint.pl: complain about loops lacking explicit failure handling
      chainlint.pl: allow `|| echo` to signal failure upstream of a pipe
      t/chainlint: add more chainlint.pl self-tests
      test-lib: retire "lint harder" optimization hack
      test-lib: replace chainlint.sed with chainlint.pl
      t/Makefile: teach `make test` and `make prove` to run chainlint.pl
      t: retire unused chainlint.sed
      chainlint: colorize problem annotations and test delimiters

Fangyi Zhou (1):
      help: fix doubled words in explanation for developer interfaces

Felipe Contreras (7):
      mergetools: vimdiff: fix comment
      mergetools: vimdiff: make vimdiff3 actually work
      mergetools: vimdiff: silence annoying messages
      mergetools: vimdiff: fix for diffopt
      mergetools: vimdiff: rework tab logic
      mergetools: vimdiff: fix single window layouts
      mergetools: vimdiff: simplify tabfirst

Fernando Ramos (1):
      vimdiff: make layout engine more robust against user vim settings

Glen Choo (16):
      submodule--helper: eliminate internal "--update" option
      submodule--helper tests: add missing "display path" coverage
      submodule--helper update: use display path helper
      submodule--helper: don't recreate recursive prefix
      submodule--helper: use correct display path helper
      submodule--helper update: use --super-prefix
      submodule--helper: remove display path helper
      Documentation/git-config.txt: add SCOPES section
      Documentation: define protected configuration
      config: learn `git_protected_config()`
      safe.directory: use git_protected_config()
      setup.c: create `safe.bareRepository`
      config.c: NULL check when reading protected config
      Documentation/git-reflog: remove unneeded \ from \{
      submodule--helper: add "const" to copy of "update_data"
      submodule--helper: refactor "errmsg_str" to be a "struct strbuf"

Goss Geppert (2):
      dir: traverse into repository
      dir: minor refactoring / clean-up

Han Xin (6):
      unpack-objects: low memory footprint for get_data() in dry_run mode
      object-file.c: refactor write_loose_object() to several steps
      object-file.c: add "stream_loose_object()" to handle large object
      unpack-objects: use stream_loose_object() to unpack large objects
      commit-graph.c: no lazy fetch in lookup_commit_in_graph()
      t5330: remove run_with_limited_processses()

Jacob Keller (1):
      remote: handle negative refspecs in git remote show

Jacob Stopak (3):
      Documentation: fix various repeat word typos
      Documentation: clean up a few misspelled word typos
      Documentation: clean up various typos in technical docs

Jaydeep Das (1):
      gpg-interface: add function for converting trust level to string

Jeff King (63):
      is_promisor_object(): walk promisor packs in pack-order
      fetch: stop passing around unused worktrees variable
      branch: drop unused worktrees variable
      revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis
      clone: drop extra newline from warning message
      clone: propagate empty remote HEAD even with other branches
      clone: use remote branch if it matches default HEAD
      clone: move unborn head creation to update_head()
      ref-filter: disable save_commit_buffer while traversing
      diff-files: move misplaced cleanup label
      write_midx_bitmap(): drop unused refs_snapshot parameter
      config.mak.dev: squelch -Wno-missing-braces for older gcc
      tree-walk: add a mechanism for getting non-canonicalized modes
      fsck: actually detect bad file modes in trees
      fsck: downgrade tree badFilemode to "info"
      is_promisor_object(): fix use-after-free of tree buffer
      compat: add function to enable nonblocking pipes
      git-compat-util: make MAX_IO_SIZE define globally available
      pipe_command(): avoid xwrite() for writing to pipe
      pipe_command(): handle ENOSPC when writing to a pipe
      pipe_command(): mark stdin descriptor as non-blocking
      git-compat-util: add UNUSED macro
      refs: mark unused each_ref_fn parameters
      refs: mark unused reflog callback parameters
      refs: mark unused virtual method parameters
      transport: mark bundle transport_options as unused
      streaming: mark unused virtual method parameters
      config: mark unused callback parameters
      hashmap: mark unused callback parameters
      mark unused read_tree_recursive() callback parameters
      run-command: mark unused async callback parameters
      is_path_owned_by_current_uid(): mark "report" parameter as unused
      xdiff: drop unused mmfile parameters from xdl_do_histogram_diff()
      log-tree: drop unused commit param in remerge_diff()
      match_pathname(): drop unused "flags" parameter
      verify_one_sparse(): drop unused parameters
      reftable: drop unused parameter from reader_seek_linear()
      reflog: assert PARSE_OPT_NONEG in parse-options callbacks
      xdiff: drop unused mmfile parameters from xdl_do_patience_diff()
      pass subcommand "prefix" arguments to parse_options()
      maintenance: add parse-options boilerplate for subcommands
      remote: run "remote rm" argv through parse_options()
      pack-bitmap-write: drop unused pack_idx_entry parameters
      tempfile: drop active flag
      tempfile: update comment describing state transitions
      test-crontab: minor memory and error handling fixes
      lookup_commit_in_graph(): use prepare_commit_graph() to check for graph
      rev-list: disable commit graph with --verify-objects
      parse_object(): allow skipping hash check
      upload-pack: skip parse-object re-hashing of "want" objects
      parse_object(): check commit-graph when skip_hash set
      t1060: check partial clone of misnamed blob
      list_objects_filter_copy(): deep-copy sparse_oid_name field
      transport: deep-copy object-filter struct for fetch-pack
      transport: free filter options in disconnect_git()
      list_objects_filter_options: plug leak of filter_spec strings
      prepare_repo_settings(): plug leak of config values
      fetch: stop checking for NULL transport->remote in do_fetch()
      fetch: add branch.*.merge to default ref-prefix extension
      list-objects-filter: don't memset after releasing filter struct
      list-objects-filter: handle null default filter spec
      list-objects-filter: add and use initializers
      list-objects-filter: convert filter_spec to a strbuf

Johannes Schindelin (38):
      merge-ort: store messages in a list, not in a single strbuf
      merge-ort: make `path_messages` a strmap to a string_list
      Git 2.30.5
      Git 2.31.4
      Git 2.32.3
      Git 2.33.4
      Git 2.34.4
      Git 2.35.4
      Git 2.36.2
      add --interactive: allow `update` to stage deleted files
      tests: fix incorrect --write-junit-xml code
      mergetool(vimdiff): allow paths to contain spaces again
      shortlog: use a stable sort
      t5351: avoid relying on `core.fsyncMethod = batch` to be supported
      t5351: avoid using `test_cmp` for binary data
      windows: include the Python bits when building Git for Windows
      mingw: remove unneeded `NO_GETTEXT` directive
      mingw: remove unneeded `NO_CURL` directive
      lstat(mingw): correctly detect ENOTDIR scenarios
      merge-ort: clean up after failed merge
      merge-ort: do leave trace2 region even if checkout fails
      setup: fix some formatting
      setup: prepare for more detailed "dubious ownership" messages
      mingw: provide details about unsafe directories' ownership
      mingw: be more informative when ownership check fails on FAT32
      mingw: handle a file owned by the Administrators group correctly
      scalar unregister: stop FSMonitor daemon
      range-diff: reorder argument handling
      range-diff: consistently validate the arguments
      range-diff: optionally accept pathspecs
      add -p: avoid ambiguous signed/unsigned comparison
      t3701: test the built-in `add -i` regardless of NO_PERL
      t6132(NO_PERL): do not run the scripted `add -p`
      add -p: detect more mismatches between plain vs colored diffs
      add -p: gracefully handle unparseable hunk headers in colored diffs
      add -p: ignore dirty submodules
      git help: special-case `scalar`
      scalar: implement the `help` subcommand

Jonathan Tan (1):
      fetch-pack: write effective filter to trace2

Josh Steadmon (1):
      fetch-pack: add tracing for negotiation rounds

Julien Rouhaud (1):
      gitweb: remove title shortening heuristics

Junio C Hamano (43):
      revision: mark blobs needed for resolve-undo as reachable
      A regression fix for 2.37
      Git 2.37.1
      builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()
      The first batch after Git 2.37
      fsck: do not dereference NULL while checking resolve-undo data
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      builtin/remote.c: use the right kind of STRING_LIST_INIT
      The sixth batch
      The seventh batch
      Downmerge a handful of fixes for 2.37.x maintenance track
      The eighth batch
      The ninth batch
      doc: consolidate --rerere-autoupdate description
      doc: clarify rerere-autoupdate
      Downmerge a bit more for 2.37.x
      The tenth batch
      The eleventh batch
      Git 2.37.2
      The twelfth batch
      The thirteenth batch
      The fourteenth batch
      t5329: notice a failure within a loop
      The fifteenth batch
      A handful more topics from the 'master' front for 2.37.3
      pretty: separate out the logic to decide the use of in-body from
      format-patch: allow forcing the use of in-body From: header
      format-patch: learn format.forceInBodyFrom configuration variable
      The sixteenth batch
      Git 2.37.3
      The seventeenth batch
      The eighteenth batch
      The nineteenth batch
      The twentieth batch
      Merge a handful of topics from the 'master' front
      Prepare for 2.38-rc0
      Git 2.38-rc0
      A bit more of remaining topics before -rc1
      Final batch before -rc1
      Git 2.38-rc1

Justin Donnelly (1):
      git-prompt: show presence of unresolved conflicts at command prompt

Kilian Kilger (2):
      git-p4: fix bug with encoding of p4 client name
      git-p4: refactoring of p4CmdList()

Kyle Zhao (1):
      send-pack.c: add config push.useBitmaps

Lessley Dennington (1):
      osx-keychain: fix compiler warning

Li Linchao (3):
      ls-files: update test style
      remote-curl: send Accept-Language header to server
      rev-list: support human-readable output for `--disk-usage`

Linus Torvalds (1):
      symbolic-ref: refuse to set syntactically invalid target

Manuel Boni (1):
      config.txt: document include, includeIf

Martin Ågren (3):
      config/core.txt: fix minor issues for `core.sparseCheckoutCone`
      t4200: drop irrelevant code
      read-cache: make `do_read_index()` always set up `istate->repo`

Matheus Tavares (7):
      checkout: document bug where delayed checkout counts entries twice
      checkout: show bug about failed entries being included in final report
      checkout: fix two bugs on the final count of updated entries
      pkt-line.h: move comment closer to the associated code
      t0021: avoid grepping for a Perl-specific string at filter output
      t0021: implementation the rot13-filter.pl script in C
      tests: use the new C rot13-filter helper to avoid PERL prereq

Matthew John Cheetham (1):
      scalar: enable built-in FSMonitor on `register`

Miaoqian Lin (1):
      commit-graph: Fix missing closedir in expire_commit_graphs

Michael J Gruber (3):
      sequencer: do not translate reflog messages
      sequencer: do not translate parameters to error_resolve_conflict()
      sequencer: do not translate command names

Moritz Baumann (3):
      git-p4: fix CR LF handling for utf16 files
      git-p4: fix typo in P4Submit.applyCommit()
      git-p4: fix error handling in P4Unshelve.renameBranch()

Philip Oakley (1):
      doc add: renormalize is not idempotent for CRCRLF

Philippe Blain (3):
      diff-format.txt: dst can be 0* SHA-1 when path is deleted, too
      diff-format.txt: correct misleading wording
      diff-index.txt: update raw output format in examples

Phillip Wood (5):
      xdiff: introduce XDL_ALLOC_ARRAY()
      xdiff: introduce xdl_calloc
      xdiff: introduce XDL_CALLOC_ARRAY()
      xdiff: introduce XDL_ALLOC_GROW()
      tests: cache glibc version check

René Scharfe (28):
      archive: update format documentation
      archive: rename archiver data field to filter_command
      archive-tar: factor out write_block()
      archive-tar: add internal gzip implementation
      archive-tar: use OS_CODE 3 (Unix) for internal gzip
      archive-tar: use internal gzip by default
      combine-diff: abort if --ignore-matching-lines is given
      combine-diff: abort if --output is given
      cocci: avoid normalization rules for memcpy
      mingw: avoid mktemp() in mkstemp() implementation
      mergesort: unify ranks loops
      mergesort: tighten merge loop
      mergesort: add macros for typed sort of linked lists
      test-mergesort: use DEFINE_LIST_SORT_DEBUG
      test-mergesort: use DEFINE_LIST_SORT
      blame: use DEFINE_LIST_SORT
      commit: use DEFINE_LIST_SORT
      fetch-pack: use DEFINE_LIST_SORT
      packfile: use DEFINE_LIST_SORT
      mergesort: remove llist_mergesort()
      nonblock: support Windows
      tempfile: avoid directory cleanup race
      test-mergesort: read sort input all at once
      test-mergesort: use mem_pool for sort input
      diff-no-index: release strbuf on queue error
      diff-no-index: release prefixed filenames
      diff-no-index: simplify argv index calculation
      add -p: fix worktree patch mode prompts

Richard Oliver (1):
      mktree: do not check type of remote objects

SZEDER Gábor (30):
      Makefile: build 'gitweb' in the default target
      multi-pack-index: simplify handling of unknown --options
      index-format.txt: remove outdated list of supported extensions
      git.c: update NO_PARSEOPT markings
      t3301-notes.sh: check that default operation mode doesn't take arguments
      t5505-remote.sh: check the behavior without a subcommand
      t0040-parse-options: test parse_options() with various 'parse_opt_flags'
      api-parse-options.txt: fix description of OPT_CMDMODE
      parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options
      parse-options: clarify the limitations of PARSE_OPT_NODASH
      parse-options: drop leading space from '--git-completion-helper' output
      parse-options: add support for parsing subcommands
      builtin/bundle.c: let parse-options parse subcommands
      builtin/commit-graph.c: let parse-options parse subcommands
      builtin/gc.c: let parse-options parse 'git maintenance's subcommands
      builtin/hook.c: let parse-options parse subcommands
      builtin/multi-pack-index.c: let parse-options parse subcommands
      builtin/notes.c: let parse-options parse subcommands
      builtin/reflog.c: let parse-options parse subcommands
      builtin/remote.c: let parse-options parse subcommands
      builtin/sparse-checkout.c: let parse-options parse subcommands
      builtin/stash.c: let parse-options parse subcommands
      builtin/worktree.c: let parse-options parse subcommands
      promisor-remote: fix xcalloc() argument order
      t0040-parse-options: remove leftover debugging
      test-parse-options.c: don't use for loop initial declaration
      test-parse-options.c: fix style of comparison with zero
      notes: simplify default operation mode arguments check
      notes, remote: show unknown subcommands between `'
      t/Makefile: remove 'test-results' on 'make clean'

Shaoxuan Yuan (22):
      t7002: add tests for moving out-of-cone file/directory
      t1092: mv directory from out-of-cone to in-cone
      mv: update sparsity after moving from out-of-cone to in-cone
      mv: decouple if/else-if checks using goto
      mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
      mv: check if <destination> exists in index to handle overwriting
      mv: use flags mode for update_mode
      mv: add check_dir_in_index() and solve general dir check issue
      t1092: add tests for `git-rm`
      pathspec.h: move pathspec_needs_expanded_index() from reset.c to here
      rm: expand the index only when necessary
      rm: integrate with sparse-index
      t7002: add tests for moving from in-cone to out-of-cone
      mv: rename check_dir_in_index() to empty_dir_has_sparse_contents()
      mv: free the with_slash in check_dir_in_index()
      mv: check if <destination> is a SKIP_WORKTREE_DIR
      mv: remove BOTH from enum update_mode
      mv: from in-cone to out-of-cone
      mv: cleanup empty WORKING_DIRECTORY
      advice.h: add advise_on_moving_dirty_path()
      mv: check overwrite for in-to-out move
      builtin/mv.c: fix possible segfault in add_slash()

Siddharth Asthana (4):
      revision: improve commit_rewrite_person()
      ident: move commit_rewrite_person() to ident.c
      ident: rename commit_rewrite_person() to apply_mailmap_to_header()
      cat-file: add mailmap support

Tao Klerks (1):
      rev-parse: documentation adjustment - mention remote tracking with @{u}

Taylor Blau (14):
      pack-objects.h: remove outdated pahole results
      commit-graph: pass repo_settings instead of repository
      t5318: demonstrate commit-graph generation v2 corruption
      commit-graph: introduce `repo_find_commit_pos_in_graph()`
      commit-graph: fix corrupt upgrade from generation v1 to v2
      t1006: extract --batch-command inputs to variables
      builtin/cat-file.c: support NUL-delimited input with `-z`
      t5326: demonstrate potential bitmap corruption
      t/lib-bitmap.sh: avoid silencing stderr
      midx.c: extract `struct midx_fanout`
      midx.c: extract `midx_fanout_add_midx_fanout()`
      midx.c: extract `midx_fanout_add_pack_fanout()`
      midx.c: include preferred pack correctly with existing MIDX
      midx.c: avoid adding preferred objects twice

Teng Long (8):
      pack-bitmap.c: fix formatting of error messages
      pack-bitmap.c: mark more strings for translations
      pack-bitmap.c: rename "idx_name" to "bitmap_name"
      pack-bitmap.c: do not ignore error when opening a bitmap file
      pack-bitmap.c: using error() instead of silently returning -1
      pack-bitmap.c: continue looping when first MIDX bitmap is found
      api-trace2.txt: print config key-value pair
      tr2: shows scope unconditionally in addition to key-value pair

Todd Zullinger (2):
      docs: fix a few recently broken links
      api docs: link to html version of api-trace2

Victoria Dye (37):
      scalar: reword command documentation to clarify purpose
      scalar: convert README.md into a technical design doc
      checkout: fix nested sparse directory diff in sparse index
      oneway_diff: handle removed sparse directories
      cache.h: create 'index_name_pos_sparse()'
      unpack-trees: unpack new trees as sparse directories
      scalar-diagnose: use "$GIT_UNZIP" in test
      scalar-diagnose: avoid 32-bit overflow of size_t
      scalar-diagnose: add directory to archiver more gently
      scalar-diagnose: move 'get_disk_info()' to 'compat/'
      scalar-diagnose: move functionality to common location
      diagnose.c: add option to configure archive contents
      builtin/diagnose.c: create 'git diagnose' builtin
      builtin/diagnose.c: add '--mode' option
      builtin/bugreport.c: create '--diagnose' option
      scalar-diagnose: use 'git diagnose --mode=all'
      scalar: update technical doc roadmap
      scalar: constrain enlistment search
      scalar-unregister: handle error codes greater than 0
      scalar-[un]register: clearly indicate source of error
      scalar-delete: do not 'die()' in 'delete_enlistment()'
      scalar: move config setting logic into its own function
      scalar: update technical doc roadmap with FSMonitor support
      p0004: fix prereq declaration
      p0006: fix 'read-tree' argument ordering
      unpack-trees: fix sparse directory recursion check
      scalar: fix command documentation section header
      scalar: include in standard Git build & installation
      scalar: add to 'git help -a' command list
      scalar-clone: add test coverage
      t/perf: add Scalar performance tests
      t/perf: add 'GIT_PERF_USE_SCALAR' run option
      Documentation/technical: include Scalar technical doc
      diagnose.c: refactor to safely use 'd_type'
      Documentation: add ReviewingGuidelines
      diagnose: add to command-list.txt
      version: fix builtin linking & documentation

ZheNing Hu (2):
      ls-files: introduce "--format" option
      ls-files: fix black space in error message

brian m. carlson (2):
      sha256: add support for Nettle
      gc: use temporary file for editing crontab

Ævar Arnfjörð Bjarmason (153):
      t0008: don't rely on default ".git/info/exclude"
      tests: don't depend on template-created .git/branches
      tests: don't assume a .git/info for .git/info/grafts
      tests: don't assume a .git/info for .git/info/attributes
      tests: don't assume a .git/info for .git/info/refs
      tests: don't assume a .git/info for .git/info/exclude
      tests: don't assume a .git/info for .git/info/sparse-checkout
      object-file.c: factor out deflate part of write_loose_object()
      core doc: modernize core.bigFileThreshold documentation
      git-submodule.sh: remove unused sanitize_submodule_env()
      git-submodule.sh: remove unused $prefix variable
      git-submodule.sh: make the "$cached" variable a boolean
      git-submodule.sh: remove unused top-level "--branch" argument
      submodule--helper: have --require-init imply --init
      submodule update: remove "-v" option
      submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
      submodule--helper: report "submodule" as our name in some "-h" output
      submodule--helper: understand --checkout, --merge and --rebase synonyms
      git-submodule.sh: use "$quiet", not "$GIT_QUIET"
      git-sh-setup.sh: remove "say" function, change last users
      gitweb/Makefile: define all .PHONY prerequisites inline
      gitweb/Makefile: add a $(GITWEB_ALL) variable
      gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
      gitweb/Makefile: prepare to merge into top-level Makefile
      gitweb: remove "test" and "test-installed" targets
      gitweb/Makefile: include in top-level Makefile
      gitweb/Makefile: add a "NO_GITWEB" parameter
      tests: add missing double quotes to included library paths
      test-lib.sh: fix prepend_var() quoting issue
      config tests: fix harmless but broken "rm -r" cleanup
      submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
      check-ref-format: fix trivial memory leak
      clone: fix memory leak in wanted_peer_refs()
      submodule.c: free() memory from xgetcwd()
      revert: free "struct replay_opts" members
      cat-file: fix a memory leak in --batch-command mode
      merge-file: refactor for subsequent memory leak fix
      merge-file: fix memory leaks on error path
      checkout: avoid "struct unpack_trees_options" leak
      gc: fix a memory leak
      cat-file: fix a common "struct object_context" memory leak
      pull: fix a "struct oid_array" memory leak
      test-tool test-hash: fix a memory leak
      test-tool path-utils: fix a memory leak
      test-tool {dump,scrap}-cache-tree: fix memory leaks
      test-tool urlmatch-normalization: fix a memory leak
      test-tool regex: call regfree(), fix memory leaks
      test-tool json-writer: fix memory leaks
      test-tool bloom: fix memory leaks
      test-tool ref-store: fix a memory leak
      test-tool delta: fix a memory leak
      Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS
      Makefile & .gitignore: ignore & clean "git.res", not "*.res"
      cocci: add a "coccicheck-test" target and test *.cocci rules
      cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
      cocci: add and apply a rule to find "unused" strbufs
      cocci: generalize "unused" rule to cover more than "strbuf"
      trace2: only include "fsync" events if we git_fsync()
      test-lib: use $1, not $@ in test_known_broken_{ok,failure}_
      test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
      test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
      test-lib: add a --invert-exit-code switch
      t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
      test-lib: add a SANITIZE=leak logging mode
      t/Makefile: don't remove test-results in "clean-except-prove-cache"
      tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
      test-lib: simplify by removing test_external
      test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
      test-lib: have the "check" mode for SANITIZE=leak consider leak logs
      leak tests: don't skip some tests under SANITIZE=leak
      leak tests: mark passing SANITIZE=leak tests as leak-free
      upload-pack: fix a memory leak in create_pack_file()
      CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
      bisect.c: add missing "goto" for release_revisions()
      test-fast-rebase helper: use release_revisions() (again)
      log: fix a memory leak in "git show <revision>..."
      log: refactor "rev.pending" code in cmd_show()
      bisect.c: partially fix bisect_rev_setup() memory leak
      revisions API: don't leak memory on argv elements that need free()-ing
      help.c: refactor drop_prefix() to use a "switch" statement"
      help.c: remove common category behavior from drop_prefix() behavior
      git help doc: use "<doc>" instead of "<guide>"
      git docs: add a category for user-facing file, repo and command UX
      git docs: add a category for file formats, protocols and interfaces
      docs: move commit-graph format docs to man section 5
      docs: move protocol-related docs to man section 5
      docs: move index format docs to man section 5
      docs: move signature docs to man section 5
      docs: move pack format docs to man section 5
      docs: move cruft pack docs to gitformat-pack
      docs: move http-protocol docs to man section 5
      hook API: don't segfault on strbuf_addf() to NULL "out"
      Makefile + hash.h: remove PPC_SHA1 implementation
      Makefile: use $(OBJECTS) instead of $(C_OBJ)
      git-compat-util.h: use "UNUSED", not "UNUSED(var)"
      git-compat-util.h: use "deprecated" for UNUSED variables
      submodule tests: test usage behavior
      submodule tests: test for "add <repository> <abs-path>"
      submodule--helper: remove unused "name" helper
      submodule--helper: remove unused "list" helper
      test-tool submodule-config: remove unused "--url" handling
      submodule--helper: move "is-active" to a test-tool
      submodule--helper: move "check-name" to a test-tool
      submodule--helper: move "resolve-relative-url-test" to a test-tool
      submodule--helper style: don't separate declared variables with \n\n
      submodule--helper style: add \n\n after variable declarations
      submodule--helper: replace memset() with { 0 }-initialization
      submodule--helper: use xstrfmt() in clone_submodule()
      submodule--helper: move "sb" in clone_submodule() to its own scope
      submodule--helper: add "const" to passed "module_clone_data"
      submodule--helper: add "const" to passed "struct update_data"
      submodule--helper: don't redundantly check "else if (res)"
      submodule--helper: rename "int res" to "int ret"
      submodule--helper: return "ret", not "1" from update_submodule()
      submodule--helper: add missing braces to "else" arm
      submodule--helper: don't call submodule_strategy_to_string() in BUG()
      submodule API: don't handle SM_..{UNSPECIFIED,COMMAND} in to_string()
      submodule--helper: use "code" in run_update_command()
      submodule--helper: don't exit() on failure, return
      submodule--helper: libify determine_submodule_update_strategy()
      submodule--helper: libify "must_die_on_failure" code paths
      submodule--helper update: don't override 'checkout' exit code
      submodule--helper: libify "must_die_on_failure" code paths (for die)
      submodule--helper: check repo{_submodule,}_init() return values
      submodule--helper: libify more "die" paths for module_update()
      submodule--helper: libify even more "die" paths for module_update()
      submodule--helper: fix bad config API usage
      submodule--helper: fix a leak in "clone_submodule"
      submodule--helper: fix trivial get_default_remote_submodule() leak
      submodule--helper: fix most "struct pathspec" memory leaks
      submodule--helper: "struct pathspec" memory leak in module_update()
      submodule--helper: don't leak {run,capture}_command() cp.dir argument
      submodule--helper: add and use *_release() functions
      submodule--helper: fix "errmsg_str" memory leak
      submodule--helper: fix "sm_path" and other "module_cb_list" leaks
      submodule--helper: fix a leak with repo_clear()
      submodule--helper: fix a memory leak in get_default_remote_submodule()
      submodule--helper: fix "reference" leak
      submodule--helper: fix obscure leak in module_add()
      submodule--helper: fix a leak in module_add()
      submodule--helper: fix a memory leak in print_status()
      submodule--helper: free some "displaypath" in "struct update_data"
      submodule--helper: free rest of "displaypath" in "struct update_data"
      submodule--helper: fix a configure_added_submodule() leak
      docs: add and use include template for config/* includes
      grep docs: de-duplicate configuration sections
      send-email docs: de-duplicate configuration sections
      apply docs: de-duplicate configuration sections
      notes docs: de-duplicate and combine configuration sections
      difftool docs: de-duplicate configuration sections
      log docs: de-duplicate configuration sections
      docs: add CONFIGURATION sections that map to a built-in
      docs: add CONFIGURATION sections that fuzzy map to built-ins

Øystein Walle (1):
      rev-parse --parseopt: detect missing opt-spec


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.38.0-rc0
@ 2022-09-16  2:37  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-09-16  2:37 UTC (permalink / raw)
  To: git

An early preview release Git v2.38.0-rc0 is now available for
testing at the usual places.  It is comprised of 607 non-merge
commits since v2.37.0, contributed by 75 people, 21 of which are
new faces [*].

Since many contributors are travelling for Git Merge conference this
week, I do not expect a lot of activities around this one.  Just
treat it as one of the normal updates to the tip of the 'master'
branch.  The real fun will begin with -rc1, where we enter feature
freeze for the upcoming release, which is expected to happen mid
next week.

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.38.0-rc0' 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.37.0 are as follows.
Welcome to the Git development community!

  Andrew Olsen, Anthony Delannoy, Carlos López, Celeste Liu,
  Cleber Rosa, David Plumpton, Eric DeCosta, Goss Geppert, Ilya
  K, Ingy dot Net, Jacob Stopak, Julien Rouhaud, Kilian Kilger,
  Lana Deere, Manuel Boni, Matthew Klein, Moritz Baumann, Pavel
  Rappo, Pierre Garnier, Richard Oliver, and Xavier Morel.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Abhradeep Chakraborty, Ævar Arnfjörð Bjarmason, Arthur
  Milchior, brian m. carlson, Calvin Wan, Carlo Marcelo Arenas
  Belón, Christian Couder, Christoph Reiter, Derrick Stolee,
  Dimitriy Ryazantcev, Đoàn Trần Công Danh, Elijah Newren,
  Emily Shaffer, Eric Sunshine, Felipe Contreras, Fernando Ramos,
  Glen Choo, Han Xin, Hariom Verma, Jacob Keller, Jaydeep Das,
  Jeff King, Jiang Xin, Joey Hess, Johannes Schindelin, John Cai,
  Jonathan Tan, Josh Steadmon, Junio C Hamano, Justin Donnelly,
  Kyle Zhao, Lessley Dennington, Li Linchao, Linus Torvalds,
  Martin Ågren, Matheus Tavares, Matthew John Cheetham, Michael
  J Gruber, Øystein Walle, Philip Oakley, Philippe Blain, Phillip
  Wood, Randall S. Becker, Renato Botelho, René Scharfe, Shaoxuan
  Yuan, Siddharth Asthana, SZEDER Gábor, Tao Klerks, Taylor Blau,
  Teng Long, Torsten Bögershausen, Victoria Dye, and ZheNing Hu.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.38 Release Notes (draft)
===============================

UI, Workflows & Features

 * "git remote show [-n] frotz" now pays attention to negative
   pathspec.

 * "git push" sometimes perform poorly when reachability bitmaps are
   used, even in a repository where other operations are helped by
   bitmaps.  The push.useBitmaps configuration variable is introduced
   to allow disabling use of reachability bitmaps only for "git push".

 * "git grep -m<max-hits>" is a way to limit the hits shown per file.

 * "git merge-tree" learned a new mode where it takes two commits and
   computes a tree that would result in the merge commit, if the
   histories leading to these two commits were to be merged.

 * "git mv A B" in a sparsely populated working tree can be asked to
   move a path between directories that are "in cone" (i.e. expected
   to be materialized in the working tree) and "out of cone"
   (i.e. expected to be hidden).  The handling of such cases has been
   improved.

 * Earlier, HTTP transport clients learned to tell the server side
   what locale they are in by sending Accept-Language HTTP header, but
   this was done only for some requests but not others.

 * Introduce a discovery.barerepository configuration variable that
   allows users to forbid discovery of bare repositories.

 * Various messages that come from the pack-bitmap codepaths have been
   tweaked.

 * "git rebase -i" learns to update branches whose tip appear in the
   rebased range with "--update-refs" option.

 * "git ls-files" learns the "--format" option to tweak its output.

 * "git cat-file" learned an option to use the mailmap when showing
   commit and tag objects.

 * When "git merge" finds that it cannot perform a merge, it should
   restore the working tree to the state before the command was
   initiated, but in some corner cases it didn't.

 * Operating modes like "--batch" of "git cat-file" command learned to
   take NUL-terminated input, instead of one-item-per-line.

 * "git rm" has become more aware of the sparse-index feature.

 * "git rev-list --disk-usage" learned to take an optional value
   "human" to show the reported value in human-readable format, like
   "3.40MiB".

 * The "diagnose" feature to create a zip archive for diagnostic
   material has been lifted from "scalar" and made into a feature of
   "git bugreport".

 * The namespaces used by "log --decorate" from "refs/" hierarchy by
   default has been tightened.

 * "git rev-list --ancestry-path=C A..B" is a natural extension of
   "git rev-list A..B"; instead of choosing a subset of A..B to those
   that have ancestry relationship with A, it lets a subset with
   ancestry relationship with C.

 * "scalar" now enables built-in fsmonitor on enlisted repositories,
   when able.

 * The bash prompt (in contrib/) learned to optionally indicate when
   the index is unmerged.

 * "git clone" command learned the "--bundle-uri" option to coordinate
   with hosting sites the use of pre-prepared bundle files.

 * "git range-diff" learned to honor pathspec argument if given.

 * "git format-patch --from=<ident>" can be told to add an in-body
   "From:" line even for commits that are authored by the given
   <ident> with "--force-in-body-from"option.

 * The built-in fsmonitor refuses to work on a network mounted
   repositories; a configuration knob for users to override this has
   been introduced.


Performance, Internal Implementation, Development Support etc.

 * Collection of what is referenced by objects in promisor packs have
   been optimized to inspect these objects in the in-pack order.

 * Introduce a helper to see if a branch is already being worked on
   (hence should not be newly checked out in a working tree), which
   performs much better than the existing find_shared_symref() to
   replace many uses of the latter.

 * Teach "git archive" to (optionally and then by default) avoid
   spawning an external "gzip" process when creating ".tar.gz" (and
   ".tgz") archives.

 * Allow large objects read from a packstream to be streamed into a
   loose object file straight, without having to keep it in-core as a
   whole.

 * Further preparation to turn git-submodule.sh into a builtin
   continues.

 * Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
   macro, which would improve maintainability and readability.

 * Teach "make all" to build gitweb as well.

 * Tweak tests so that they still work when the "git init" template
   did not create .git/info directory.

 * Add Coccinelle rules to detect the pattern of initializing and then
   finalizing a structure without using it in between at all, which
   happens after code restructuring and the compilers fail to
   recognize as an unused variable.

 * The code to convert between GPG trust level strings and internal
   constants we use to represent them have been cleaned up.

 * Support for libnettle as SHA256 implementation has been added.

 * The way "git multi-pack" uses parse-options API has been improved.

 * A coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
   macro has been improved.

 * API tweak to make it easier to run fuzz testing on commit-graph parser.

 * Omit fsync-related trace2 entries when their values are all zero.

 * The codepath to write multi-pack index has been taught to release a
   large chunk of memory that holds an array of objects in the packs,
   as soon as it is done with the array, to reduce memory consumption.

 * Add a level of redirection to array allocation API in xdiff part,
   to make it easier to share with the libgit2 project.

 * "git fetch" client logs the partial clone filter used in the trace2
   output.

 * The "bundle URI" design gets documented.

 * The common ancestor negotiation exchange during a "git fetch"
   session now leaves trace log.

 * Test portability improvements.
   (merge 4d1d843be7 mt/rot13-in-c later to maint).

 * The "subcommand" mode is introduced to parse-options API and update
   the command line parser of Git commands with subcommands.

 * The pack bitmap file gained a bitmap-lookup table to speed up
   locating the necessary bitmap for a given commit.

 * The assembly version of SHA-1 implementation for PPC has been
   removed.

 * The server side that responds to "git fetch" and "git clone"
   request has been optimized by allowing it to send objects in its
   object store without recomputing and validating the object names.

 * Annotate function parameters that are not used (but cannot be
   removed for structural reasons), to prepare us to later compile
   with -Wunused warning turned on.

 * Share the text used to explain configuration variables used by "git
   <subcmd>" in "git help <subcmd>" with the text from "git help config".


Fixes since v2.37
-----------------

 * Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
   correctly record a removed file to the index, which was fixed.

 * Certain diff options are currently ignored when combined-diff is
   shown; mark them as incompatible with the feature.

 * Adjust technical/bitmap-format to be formatted by AsciiDoc, and
   add some missing information to the documentation.

 * Fixes for tests when the source directory has unusual characters in
   its path, e.g. whitespaces, double-quotes, etc.

 * "git mktree --missing" lazily fetched objects that are missing from
   the local object store, which was totally unnecessary for the purpose
   of creating the tree object(s) from its input.

 * Give _() markings to fatal/warning/usage: labels that are shown in
   front of these messages.

 * References to commands-to-be-typed-literally in "git rebase"
   documentation mark-up have been corrected.

 * In a non-bare repository, the behavior of Git when the
   core.worktree configuration variable points at a directory that has
   a repository as its subdirectory, regressed in Git 2.27 days.

 * Recent update to vimdiff layout code has been made more robust
   against different end-user vim settings.

 * Plug various memory leaks, both in the main code and in test-tool
   commands.

 * Fixes a long-standing corner case bug around directory renames in
   the merge-ort strategy.

 * The resolve-undo information in the index was not protected against
   GC, which has been corrected.

 * A corner case bug where lazily fetching objects from a promisor
   remote resulted in infinite recursion has been corrected.

 * "git clone" from a repository with some ref whose HEAD is unborn
   did not set the HEAD in the resulting repository correctly, which
   has been corrected.

 * An earlier attempt to plug leaks placed a clean-up label to jump to
   at a bogus place, which as been corrected.

 * Variable quoting fix in the vimdiff driver of "git mergetool"

 * "git shortlog -n" relied on the underlying qsort() to be stable,
   which shouldn't have.  Fixed.

 * A fix for a regression in test framework.

 * mkstemp() emulation on Windows has been improved.

 * Add missing documentation for "include" and "includeIf" features in
   "git config" file format, which incidentally teaches the command
   line completion to include them in its offerings.

 * Avoid "white/black-list" in documentation and code comments.

 * Workaround for a compiler warning against use of die() in
   osx-keychain (in contrib/).

 * Workaround for a false positive compiler warning.

 * "git p4" working on UTF-16 files on Windows did not implement
   CRLF-to-LF conversion correctly, which has been corrected.

 * "git p4" did not handle non-ASCII client name well, which has been
   corrected.

 * "rerere-train" script (in contrib/) used to honor commit.gpgSign
   while recreating the throw-away merges.

 * "git checkout" miscounted the paths it updated, which has been
   corrected.

 * Fix for a bug that makes write-tree to fail to write out a
   non-existent index as a tree, introduced in 2.37.

 * There was a bug in the codepath to upgrade generation information
   in commit-graph from v1 to v2 format, which has been corrected.

 * Gitweb had legacy URL shortener that is specific to the way
   projects hosted on kernel.org used to (but no longer) work, which
   has been removed.

 * Fix build procedure for Windows that uses CMake so that it can pick
   up the shell interpreter from local installation location.

 * Conditionally allow building Python interpreter on Windows

 * Fix to lstat() emulation on Windows.

 * Older gcc with -Wall complains about the universal zero initializer
   "struct s = { 0 };" idiom, which makes developers' lives
   inconvenient (as -Werror is enabled by DEVELOPER=YesPlease).  The
   build procedure has been tweaked to help these compilers.

 * Plug memory leaks in the failure code path in the "merge-ort" merge
   strategy backend.

 * "git symbolic-ref symref non..sen..se" is now diagnosed as an error.

 * A follow-up fix to a fix for a regression in 2.36 around hooks.

 * Avoid repeatedly running getconf to ask libc version in the test
   suite, and instead just as it once per script.

 * Platform-specific code that determines if a directory is OK to use
   as a repository has been taught to report more details, especially
   on Windows.

 * "vimdiff3" regression fix.

 * "git fsck" reads mode from tree objects but canonicalizes the mode
   before passing it to the logic to check object sanity, which has
   hid broken tree objects from the checking logic.  This has been
   corrected, but to help exiting projects with broken tree objects
   that they cannot fix retroactively, the severity of anomalies this
   code detects has been demoted to "info" for now.

 * Fixes to sparse index compatibility work for "reset" and "checkout"
   commands.

 * An earlier optimization discarded a tree-object buffer that is
   still in use, which has been corrected.
   (merge 1490d7d82d jk/is-promisor-object-keep-tree-in-use later to maint).

 * Fix deadlocks between main Git process and subprocess spawned via
   the pipe_command() API, that can kill "git add -p" that was
   reimplemented in C recently.
   (merge 716c1f649e jk/pipe-command-nonblock later to maint).

 * The sequencer machinery translated messages left in the reflog by
   mistake, which has been corrected.

 * xcalloc(), imitating calloc(), takes "number of elements of the
   array", and "size of a single element", in this order.  A call that
   does not follow this ordering has been corrected.
   (merge c4bbd9bb8f sg/xcalloc-cocci-fix later to maint).

 * The preload-index codepath made copies of pathspec to give to
   multiple threads, which were left leaked.
   (merge 23578904da ad/preload-plug-memleak later to maint).

 * Update the version of Ubuntu used for GitHub Actions CI from 18.04
   to 22.04.
   (merge ef46584831 ds/github-actions-use-newer-ubuntu later to maint).

 * The auto-stashed local changes created by "git merge --autostash"
   was mixed into a conflicted state left in the working tree, which
   has been corrected.
   (merge d3a9295ada en/merge-unstash-only-on-clean-merge later to maint).

 * Multi-pack index got corrupted when preferred pack changed from one
   pack to another in a certain way, which has been corrected.
   (merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint).

 * The clean-up of temporary files created via mks_tempfile_dt() was
   racy and attempted to unlink() the leading directory when signals
   are involved, which has been corrected.
   (merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint).

 * FreeBSD portability fix for "git maintenance" that spawns "crontab"
   to schedule tasks.
   (merge ee69e7884e bc/gc-crontab-fix later to maint).

 * Those who use diff-so-fancy as the diff-filter noticed a regression
   or two in the code that parses the diff output in the built-in
   version of "add -p", which has been corrected.
   (merge 0a101676e5 js/add-p-diff-parsing-fix later to maint).

 * Segfault fix-up to an earlier fix to the topic to teach "git reset"
   and "git checkout" work better in a sparse checkout.
   (merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint).

 * "git diff --no-index A B" managed its the pathnames of its two
   input files rather haphazardly, sometimes leaking them.  The
   command line argument processing has been straightened out to clean
   it up.
   (merge 2b43dd0eb5 rs/diff-no-index-cleanup later to maint).

 * "git rev-list --verify-objects" ought to inspect the contents of
   objects and notice corrupted ones, but it didn't when the commit
   graph is in use, which has been corrected.
   (merge b27ccae34b jk/rev-list-verify-objects-fix later to maint).

 * More fixes to "add -p"
   (merge 64ec8efb83 js/builtin-add-p-portability-fix later to maint).

 * The parser in the script interface to parse-options in "git
   rev-parse" has been updated to diagnose a bogus input correctly.
   (merge f20b9c36d0 ow/rev-parse-parseopt-fix later to maint).

 * The code that manages list-object-filter structure, used in partial
   clones, leaked the instances, which has been plugged.
   (merge 66eede4a37 jk/plug-list-object-filter-leaks later to maint).

 * Fix another UI regression in the reimplemented "add -p".
   (merge f6f0ee247f rs/add-p-worktree-mode-prompt-fix later to maint).

 * "git fetch" over protocol v2 sent an incorrect ref prefix request
   to the server and made "git pull" with configured fetch refspec
   that does not cover the remote branch to merge with fail, which has
   been corrected.
   (merge 49ca2fba39 jk/proto-v2-ref-prefix-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 77b9e85c0f vd/fix-perf-tests later to maint).
   (merge 0682bc43f5 jk/test-crontab-fixes later to maint).
   (merge b46dd1726c cc/doc-trailer-whitespace-rules later to maint).

----------------------------------------------------------------

Changes since v2.37.0 are as follows:

Abhradeep Chakraborty (9):
      bitmap-format.txt: feed the file to asciidoc to generate html
      bitmap-format.txt: fix some formatting issues
      bitmap-format.txt: add information for trailing checksum
      Documentation/technical: describe bitmap lookup table extension
      bitmap: move `get commit positions` code to `bitmap_writer_finish`
      pack-bitmap-write.c: write lookup table extension
      pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
      pack-bitmap: prepare to read lookup table extension
      bitmap-lookup-table: add performance tests for lookup table

Anthony Delannoy (1):
      preload-index: fix memleak

Calvin Wan (1):
      submodule merge: update conflict error message

Carlo Marcelo Arenas Belón (2):
      setup: tighten ownership checks post CVE-2022-24765
      cmake: support local installations of git

Carlos López (1):
      grep: add --max-count command line option

Celeste Liu (1):
      contrib/rerere-train: avoid useless gpg sign in training

Christian Couder (1):
      Documentation: clarify whitespace rules for trailers

Cleber Rosa (1):
      setup: fix function name in a BUG() message

Derrick Stolee (50):
      branch: add branch_checked_out() helper
      branch: check for bisects and rebases
      fetch: use new branch_checked_out() and add tests
      branch: use branch_checked_out() when deleting refs
      branch: fix branch_checked_out() leaks
      t5510: replace 'origin' with URL more carefully
      vscode: improve tab size and wrapping
      git-rebase.txt: use back-ticks consistently
      pack-bitmap-write: use const for hashes
      midx: extract bitmap write setup
      midx: reduce memory pressure while writing bitmaps
      daemon: clarify directory arguments
      git-cvsserver: clarify directory list
      git.txt: remove redundant language
      t: avoid "whitelist"
      transport.c: avoid "whitelist"
      t2407: test bisect and rebase as black-boxes
      t2407: test branches currently using apply backend
      branch: consider refs under 'update-refs'
      rebase-interactive: update 'merge' description
      sequencer: define array with enum values
      sequencer: add update-ref command
      rebase: add --update-refs option
      rebase: update refs from 'update-ref' commands
      sequencer: rewrite update-refs as user edits todo list
      rebase: add rebase.updateRefs config option
      sequencer: ignore HEAD ref under --update-refs
      sequencer: notify user of --update-refs activity
      compat/win32: correct for incorrect compiler warning
      refs: allow "HEAD" as decoration filter
      t4207: modernize test
      t4207: test coloring of grafted decorations
      refs: add array of ref namespaces
      refs: use ref_namespaces for replace refs base
      log-tree: use ref_namespaces instead of if/else-if
      log: add default decoration filter
      log: add --clear-decorations option
      log: create log.initialDecorationSet=all
      maintenance: stop writing log.excludeDecoration
      fetch: use ref_namespaces during prefetch
      docs: document bundle URI standard
      bundle-uri: add example bundle organization
      remote-curl: add 'get' capability
      bundle-uri: create basic file-copy logic
      clone: add --bundle-uri option
      bundle-uri: add support for http(s):// and file://
      clone: --bundle-uri cannot be combined with --depth
      t6019: modernize tests with helper
      clone: warn on failure to repo_init()
      ci: update 'static-analysis' to Ubuntu 22.04

Dimitriy Ryazantcev (1):
      i18n: mark message helpers prefix for translation

Elijah Newren (43):
      merge-tree: rename merge_trees() to trivial_merge_trees()
      merge-tree: move logic for existing merge into new function
      merge-tree: add option parsing and initial shell for real merge function
      merge-tree: implement real merges
      merge-ort: split out a separate display_update_messages() function
      merge-tree: support including merge messages in output
      merge-ort: provide a merge_get_conflicted_files() helper function
      merge-ort: remove command-line-centric submodule message from merge-ort
      merge-tree: provide a list of which files have conflicts
      merge-tree: provide easy access to `ls-files -u` style info
      merge-ort: store more specific conflict information
      merge-ort: optionally produce machine-readable output
      merge-tree: allow `ls-files -u` style info to be NUL terminated
      merge-tree: add a --allow-unrelated-histories flag
      git-merge-tree.txt: add a section on potentional usage mistakes
      t6429: fix use of non-existent function
      t6423: add tests of dual directory rename plus add/add conflict
      merge-ort: small cleanups of check_for_directory_rename
      merge-ort: make a separate function for freeing struct collisions
      merge-ort: shuffle the computation and cleanup of potential collisions
      merge-ort: fix issue with dual rename and add/add conflict
      merge-ort-wrappers: make printed message match the one from recursive
      merge-resolve: abort if index does not match HEAD
      merge: abort if index does not match HEAD for trivial merges
      merge: do not abort early if one strategy fails to handle the merge
      merge: fix save_state() to work when there are stat-dirty files
      merge: make restore_state() restore staged state too
      merge: ensure we can actually restore pre-merge state
      merge: do not exit restore_state() prematurely
      merge-ort: remove translator lego in new "submodule conflict suggestion"
      merge-ort: avoid surprise with new sub_flag variable
      merge-ort: provide helpful submodule update message when possible
      merge-ort: remove code obsoleted by other changes
      rev-list-options.txt: fix simple typo
      revision: allow --ancestry-path to take an argument
      merge: only apply autostash when appropriate
      merge: cleanup confusing logic for handling successful merges
      merge: small code readability improvement
      t4301: add more interesting merge-tree testcases
      t64xx: convert 'test_create_repo' to 'git init'
      diff: have submodule_format logic avoid additional diff headers
      diff: fix filtering of additional headers under --remerge-diff
      diff: fix filtering of merge commits under --remerge-diff

Eric DeCosta (1):
      fsmonitor: option to allow fsmonitor to run against network-mounted repos

Eric Sunshine (6):
      t2407: fix broken &&-chains in compound statement
      t1092: fix buggy sparse "blame" test
      t: detect and signal failure within loop
      t4301: account for behavior differences between sed implementations
      t4301: fix broken &&-chains and add missing loop termination
      t4301: emit blank line in more idiomatic fashion

Felipe Contreras (7):
      mergetools: vimdiff: fix comment
      mergetools: vimdiff: make vimdiff3 actually work
      mergetools: vimdiff: silence annoying messages
      mergetools: vimdiff: fix for diffopt
      mergetools: vimdiff: rework tab logic
      mergetools: vimdiff: fix single window layouts
      mergetools: vimdiff: simplify tabfirst

Fernando Ramos (1):
      vimdiff: make layout engine more robust against user vim settings

Glen Choo (16):
      submodule--helper: eliminate internal "--update" option
      submodule--helper tests: add missing "display path" coverage
      submodule--helper update: use display path helper
      submodule--helper: don't recreate recursive prefix
      submodule--helper: use correct display path helper
      submodule--helper update: use --super-prefix
      submodule--helper: remove display path helper
      Documentation/git-config.txt: add SCOPES section
      Documentation: define protected configuration
      config: learn `git_protected_config()`
      safe.directory: use git_protected_config()
      setup.c: create `safe.bareRepository`
      config.c: NULL check when reading protected config
      Documentation/git-reflog: remove unneeded \ from \{
      submodule--helper: add "const" to copy of "update_data"
      submodule--helper: refactor "errmsg_str" to be a "struct strbuf"

Goss Geppert (2):
      dir: traverse into repository
      dir: minor refactoring / clean-up

Han Xin (6):
      unpack-objects: low memory footprint for get_data() in dry_run mode
      object-file.c: refactor write_loose_object() to several steps
      object-file.c: add "stream_loose_object()" to handle large object
      unpack-objects: use stream_loose_object() to unpack large objects
      commit-graph.c: no lazy fetch in lookup_commit_in_graph()
      t5330: remove run_with_limited_processses()

Jacob Keller (1):
      remote: handle negative refspecs in git remote show

Jacob Stopak (1):
      Documentation: fix various repeat word typos

Jaydeep Das (1):
      gpg-interface: add function for converting trust level to string

Jeff King (59):
      is_promisor_object(): walk promisor packs in pack-order
      fetch: stop passing around unused worktrees variable
      branch: drop unused worktrees variable
      revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis
      clone: drop extra newline from warning message
      clone: propagate empty remote HEAD even with other branches
      clone: use remote branch if it matches default HEAD
      clone: move unborn head creation to update_head()
      ref-filter: disable save_commit_buffer while traversing
      diff-files: move misplaced cleanup label
      write_midx_bitmap(): drop unused refs_snapshot parameter
      config.mak.dev: squelch -Wno-missing-braces for older gcc
      tree-walk: add a mechanism for getting non-canonicalized modes
      fsck: actually detect bad file modes in trees
      fsck: downgrade tree badFilemode to "info"
      is_promisor_object(): fix use-after-free of tree buffer
      compat: add function to enable nonblocking pipes
      git-compat-util: make MAX_IO_SIZE define globally available
      pipe_command(): avoid xwrite() for writing to pipe
      pipe_command(): handle ENOSPC when writing to a pipe
      pipe_command(): mark stdin descriptor as non-blocking
      git-compat-util: add UNUSED macro
      refs: mark unused each_ref_fn parameters
      refs: mark unused reflog callback parameters
      refs: mark unused virtual method parameters
      transport: mark bundle transport_options as unused
      streaming: mark unused virtual method parameters
      config: mark unused callback parameters
      hashmap: mark unused callback parameters
      mark unused read_tree_recursive() callback parameters
      run-command: mark unused async callback parameters
      is_path_owned_by_current_uid(): mark "report" parameter as unused
      xdiff: drop unused mmfile parameters from xdl_do_histogram_diff()
      log-tree: drop unused commit param in remerge_diff()
      match_pathname(): drop unused "flags" parameter
      verify_one_sparse(): drop unused parameters
      reftable: drop unused parameter from reader_seek_linear()
      reflog: assert PARSE_OPT_NONEG in parse-options callbacks
      xdiff: drop unused mmfile parameters from xdl_do_patience_diff()
      pass subcommand "prefix" arguments to parse_options()
      maintenance: add parse-options boilerplate for subcommands
      remote: run "remote rm" argv through parse_options()
      pack-bitmap-write: drop unused pack_idx_entry parameters
      tempfile: drop active flag
      tempfile: update comment describing state transitions
      test-crontab: minor memory and error handling fixes
      lookup_commit_in_graph(): use prepare_commit_graph() to check for graph
      rev-list: disable commit graph with --verify-objects
      parse_object(): allow skipping hash check
      upload-pack: skip parse-object re-hashing of "want" objects
      parse_object(): check commit-graph when skip_hash set
      t1060: check partial clone of misnamed blob
      list_objects_filter_copy(): deep-copy sparse_oid_name field
      transport: deep-copy object-filter struct for fetch-pack
      transport: free filter options in disconnect_git()
      list_objects_filter_options: plug leak of filter_spec strings
      prepare_repo_settings(): plug leak of config values
      fetch: stop checking for NULL transport->remote in do_fetch()
      fetch: add branch.*.merge to default ref-prefix extension

Johannes Schindelin (36):
      merge-ort: store messages in a list, not in a single strbuf
      merge-ort: make `path_messages` a strmap to a string_list
      Git 2.30.5
      Git 2.31.4
      Git 2.32.3
      Git 2.33.4
      Git 2.34.4
      Git 2.35.4
      Git 2.36.2
      add --interactive: allow `update` to stage deleted files
      tests: fix incorrect --write-junit-xml code
      mergetool(vimdiff): allow paths to contain spaces again
      shortlog: use a stable sort
      t5351: avoid relying on `core.fsyncMethod = batch` to be supported
      t5351: avoid using `test_cmp` for binary data
      windows: include the Python bits when building Git for Windows
      mingw: remove unneeded `NO_GETTEXT` directive
      mingw: remove unneeded `NO_CURL` directive
      lstat(mingw): correctly detect ENOTDIR scenarios
      merge-ort: clean up after failed merge
      merge-ort: do leave trace2 region even if checkout fails
      setup: fix some formatting
      setup: prepare for more detailed "dubious ownership" messages
      mingw: provide details about unsafe directories' ownership
      mingw: be more informative when ownership check fails on FAT32
      mingw: handle a file owned by the Administrators group correctly
      scalar unregister: stop FSMonitor daemon
      range-diff: reorder argument handling
      range-diff: consistently validate the arguments
      range-diff: optionally accept pathspecs
      add -p: avoid ambiguous signed/unsigned comparison
      t3701: test the built-in `add -i` regardless of NO_PERL
      t6132(NO_PERL): do not run the scripted `add -p`
      add -p: detect more mismatches between plain vs colored diffs
      add -p: gracefully handle unparseable hunk headers in colored diffs
      add -p: ignore dirty submodules

Jonathan Tan (1):
      fetch-pack: write effective filter to trace2

Josh Steadmon (1):
      fetch-pack: add tracing for negotiation rounds

Julien Rouhaud (1):
      gitweb: remove title shortening heuristics

Junio C Hamano (40):
      revision: mark blobs needed for resolve-undo as reachable
      A regression fix for 2.37
      Git 2.37.1
      builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()
      The first batch after Git 2.37
      fsck: do not dereference NULL while checking resolve-undo data
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      builtin/remote.c: use the right kind of STRING_LIST_INIT
      The sixth batch
      The seventh batch
      Downmerge a handful of fixes for 2.37.x maintenance track
      The eighth batch
      The ninth batch
      doc: consolidate --rerere-autoupdate description
      doc: clarify rerere-autoupdate
      Downmerge a bit more for 2.37.x
      The tenth batch
      The eleventh batch
      Git 2.37.2
      The twelfth batch
      The thirteenth batch
      The fourteenth batch
      t5329: notice a failure within a loop
      The fifteenth batch
      A handful more topics from the 'master' front for 2.37.3
      pretty: separate out the logic to decide the use of in-body from
      format-patch: allow forcing the use of in-body From: header
      format-patch: learn format.forceInBodyFrom configuration variable
      The sixteenth batch
      Git 2.37.3
      The seventeenth batch
      The eighteenth batch
      The nineteenth batch
      The twentieth batch
      Merge a handful of topics from the 'master' front
      Prepare for 2.38-rc0
      Git 2.38-rc0

Justin Donnelly (1):
      git-prompt: show presence of unresolved conflicts at command prompt

Kilian Kilger (2):
      git-p4: fix bug with encoding of p4 client name
      git-p4: refactoring of p4CmdList()

Kyle Zhao (1):
      send-pack.c: add config push.useBitmaps

Lessley Dennington (1):
      osx-keychain: fix compiler warning

Li Linchao (3):
      ls-files: update test style
      remote-curl: send Accept-Language header to server
      rev-list: support human-readable output for `--disk-usage`

Linus Torvalds (1):
      symbolic-ref: refuse to set syntactically invalid target

Manuel Boni (1):
      config.txt: document include, includeIf

Martin Ågren (3):
      config/core.txt: fix minor issues for `core.sparseCheckoutCone`
      t4200: drop irrelevant code
      read-cache: make `do_read_index()` always set up `istate->repo`

Matheus Tavares (7):
      checkout: document bug where delayed checkout counts entries twice
      checkout: show bug about failed entries being included in final report
      checkout: fix two bugs on the final count of updated entries
      pkt-line.h: move comment closer to the associated code
      t0021: avoid grepping for a Perl-specific string at filter output
      t0021: implementation the rot13-filter.pl script in C
      tests: use the new C rot13-filter helper to avoid PERL prereq

Matthew John Cheetham (1):
      scalar: enable built-in FSMonitor on `register`

Michael J Gruber (3):
      sequencer: do not translate reflog messages
      sequencer: do not translate parameters to error_resolve_conflict()
      sequencer: do not translate command names

Moritz Baumann (3):
      git-p4: fix CR LF handling for utf16 files
      git-p4: fix typo in P4Submit.applyCommit()
      git-p4: fix error handling in P4Unshelve.renameBranch()

Philip Oakley (1):
      doc add: renormalize is not idempotent for CRCRLF

Philippe Blain (3):
      diff-format.txt: dst can be 0* SHA-1 when path is deleted, too
      diff-format.txt: correct misleading wording
      diff-index.txt: update raw output format in examples

Phillip Wood (5):
      xdiff: introduce XDL_ALLOC_ARRAY()
      xdiff: introduce xdl_calloc
      xdiff: introduce XDL_CALLOC_ARRAY()
      xdiff: introduce XDL_ALLOC_GROW()
      tests: cache glibc version check

René Scharfe (28):
      archive: update format documentation
      archive: rename archiver data field to filter_command
      archive-tar: factor out write_block()
      archive-tar: add internal gzip implementation
      archive-tar: use OS_CODE 3 (Unix) for internal gzip
      archive-tar: use internal gzip by default
      combine-diff: abort if --ignore-matching-lines is given
      combine-diff: abort if --output is given
      cocci: avoid normalization rules for memcpy
      mingw: avoid mktemp() in mkstemp() implementation
      mergesort: unify ranks loops
      mergesort: tighten merge loop
      mergesort: add macros for typed sort of linked lists
      test-mergesort: use DEFINE_LIST_SORT_DEBUG
      test-mergesort: use DEFINE_LIST_SORT
      blame: use DEFINE_LIST_SORT
      commit: use DEFINE_LIST_SORT
      fetch-pack: use DEFINE_LIST_SORT
      packfile: use DEFINE_LIST_SORT
      mergesort: remove llist_mergesort()
      nonblock: support Windows
      tempfile: avoid directory cleanup race
      test-mergesort: read sort input all at once
      test-mergesort: use mem_pool for sort input
      diff-no-index: release strbuf on queue error
      diff-no-index: release prefixed filenames
      diff-no-index: simplify argv index calculation
      add -p: fix worktree patch mode prompts

Richard Oliver (1):
      mktree: do not check type of remote objects

SZEDER Gábor (29):
      Makefile: build 'gitweb' in the default target
      multi-pack-index: simplify handling of unknown --options
      index-format.txt: remove outdated list of supported extensions
      git.c: update NO_PARSEOPT markings
      t3301-notes.sh: check that default operation mode doesn't take arguments
      t5505-remote.sh: check the behavior without a subcommand
      t0040-parse-options: test parse_options() with various 'parse_opt_flags'
      api-parse-options.txt: fix description of OPT_CMDMODE
      parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options
      parse-options: clarify the limitations of PARSE_OPT_NODASH
      parse-options: drop leading space from '--git-completion-helper' output
      parse-options: add support for parsing subcommands
      builtin/bundle.c: let parse-options parse subcommands
      builtin/commit-graph.c: let parse-options parse subcommands
      builtin/gc.c: let parse-options parse 'git maintenance's subcommands
      builtin/hook.c: let parse-options parse subcommands
      builtin/multi-pack-index.c: let parse-options parse subcommands
      builtin/notes.c: let parse-options parse subcommands
      builtin/reflog.c: let parse-options parse subcommands
      builtin/remote.c: let parse-options parse subcommands
      builtin/sparse-checkout.c: let parse-options parse subcommands
      builtin/stash.c: let parse-options parse subcommands
      builtin/worktree.c: let parse-options parse subcommands
      promisor-remote: fix xcalloc() argument order
      t0040-parse-options: remove leftover debugging
      test-parse-options.c: don't use for loop initial declaration
      test-parse-options.c: fix style of comparison with zero
      notes: simplify default operation mode arguments check
      notes, remote: show unknown subcommands between `'

Shaoxuan Yuan (12):
      t7002: add tests for moving out-of-cone file/directory
      t1092: mv directory from out-of-cone to in-cone
      mv: update sparsity after moving from out-of-cone to in-cone
      mv: decouple if/else-if checks using goto
      mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
      mv: check if <destination> exists in index to handle overwriting
      mv: use flags mode for update_mode
      mv: add check_dir_in_index() and solve general dir check issue
      t1092: add tests for `git-rm`
      pathspec.h: move pathspec_needs_expanded_index() from reset.c to here
      rm: expand the index only when necessary
      rm: integrate with sparse-index

Siddharth Asthana (4):
      revision: improve commit_rewrite_person()
      ident: move commit_rewrite_person() to ident.c
      ident: rename commit_rewrite_person() to apply_mailmap_to_header()
      cat-file: add mailmap support

Tao Klerks (1):
      rev-parse: documentation adjustment - mention remote tracking with @{u}

Taylor Blau (14):
      pack-objects.h: remove outdated pahole results
      commit-graph: pass repo_settings instead of repository
      t5318: demonstrate commit-graph generation v2 corruption
      commit-graph: introduce `repo_find_commit_pos_in_graph()`
      commit-graph: fix corrupt upgrade from generation v1 to v2
      t1006: extract --batch-command inputs to variables
      builtin/cat-file.c: support NUL-delimited input with `-z`
      t5326: demonstrate potential bitmap corruption
      t/lib-bitmap.sh: avoid silencing stderr
      midx.c: extract `struct midx_fanout`
      midx.c: extract `midx_fanout_add_midx_fanout()`
      midx.c: extract `midx_fanout_add_pack_fanout()`
      midx.c: include preferred pack correctly with existing MIDX
      midx.c: avoid adding preferred objects twice

Teng Long (8):
      pack-bitmap.c: fix formatting of error messages
      pack-bitmap.c: mark more strings for translations
      pack-bitmap.c: rename "idx_name" to "bitmap_name"
      pack-bitmap.c: do not ignore error when opening a bitmap file
      pack-bitmap.c: using error() instead of silently returning -1
      pack-bitmap.c: continue looping when first MIDX bitmap is found
      api-trace2.txt: print config key-value pair
      tr2: shows scope unconditionally in addition to key-value pair

Victoria Dye (26):
      scalar: reword command documentation to clarify purpose
      scalar: convert README.md into a technical design doc
      checkout: fix nested sparse directory diff in sparse index
      oneway_diff: handle removed sparse directories
      cache.h: create 'index_name_pos_sparse()'
      unpack-trees: unpack new trees as sparse directories
      scalar-diagnose: use "$GIT_UNZIP" in test
      scalar-diagnose: avoid 32-bit overflow of size_t
      scalar-diagnose: add directory to archiver more gently
      scalar-diagnose: move 'get_disk_info()' to 'compat/'
      scalar-diagnose: move functionality to common location
      diagnose.c: add option to configure archive contents
      builtin/diagnose.c: create 'git diagnose' builtin
      builtin/diagnose.c: add '--mode' option
      builtin/bugreport.c: create '--diagnose' option
      scalar-diagnose: use 'git diagnose --mode=all'
      scalar: update technical doc roadmap
      scalar: constrain enlistment search
      scalar-unregister: handle error codes greater than 0
      scalar-[un]register: clearly indicate source of error
      scalar-delete: do not 'die()' in 'delete_enlistment()'
      scalar: move config setting logic into its own function
      scalar: update technical doc roadmap with FSMonitor support
      p0004: fix prereq declaration
      p0006: fix 'read-tree' argument ordering
      unpack-trees: fix sparse directory recursion check

ZheNing Hu (1):
      ls-files: introduce "--format" option

brian m. carlson (2):
      sha256: add support for Nettle
      gc: use temporary file for editing crontab

Ævar Arnfjörð Bjarmason (153):
      t0008: don't rely on default ".git/info/exclude"
      tests: don't depend on template-created .git/branches
      tests: don't assume a .git/info for .git/info/grafts
      tests: don't assume a .git/info for .git/info/attributes
      tests: don't assume a .git/info for .git/info/refs
      tests: don't assume a .git/info for .git/info/exclude
      tests: don't assume a .git/info for .git/info/sparse-checkout
      object-file.c: factor out deflate part of write_loose_object()
      core doc: modernize core.bigFileThreshold documentation
      git-submodule.sh: remove unused sanitize_submodule_env()
      git-submodule.sh: remove unused $prefix variable
      git-submodule.sh: make the "$cached" variable a boolean
      git-submodule.sh: remove unused top-level "--branch" argument
      submodule--helper: have --require-init imply --init
      submodule update: remove "-v" option
      submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
      submodule--helper: report "submodule" as our name in some "-h" output
      submodule--helper: understand --checkout, --merge and --rebase synonyms
      git-submodule.sh: use "$quiet", not "$GIT_QUIET"
      git-sh-setup.sh: remove "say" function, change last users
      gitweb/Makefile: define all .PHONY prerequisites inline
      gitweb/Makefile: add a $(GITWEB_ALL) variable
      gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
      gitweb/Makefile: prepare to merge into top-level Makefile
      gitweb: remove "test" and "test-installed" targets
      gitweb/Makefile: include in top-level Makefile
      gitweb/Makefile: add a "NO_GITWEB" parameter
      tests: add missing double quotes to included library paths
      test-lib.sh: fix prepend_var() quoting issue
      config tests: fix harmless but broken "rm -r" cleanup
      submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
      check-ref-format: fix trivial memory leak
      clone: fix memory leak in wanted_peer_refs()
      submodule.c: free() memory from xgetcwd()
      revert: free "struct replay_opts" members
      cat-file: fix a memory leak in --batch-command mode
      merge-file: refactor for subsequent memory leak fix
      merge-file: fix memory leaks on error path
      checkout: avoid "struct unpack_trees_options" leak
      gc: fix a memory leak
      cat-file: fix a common "struct object_context" memory leak
      pull: fix a "struct oid_array" memory leak
      test-tool test-hash: fix a memory leak
      test-tool path-utils: fix a memory leak
      test-tool {dump,scrap}-cache-tree: fix memory leaks
      test-tool urlmatch-normalization: fix a memory leak
      test-tool regex: call regfree(), fix memory leaks
      test-tool json-writer: fix memory leaks
      test-tool bloom: fix memory leaks
      test-tool ref-store: fix a memory leak
      test-tool delta: fix a memory leak
      Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS
      Makefile & .gitignore: ignore & clean "git.res", not "*.res"
      cocci: add a "coccicheck-test" target and test *.cocci rules
      cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
      cocci: add and apply a rule to find "unused" strbufs
      cocci: generalize "unused" rule to cover more than "strbuf"
      trace2: only include "fsync" events if we git_fsync()
      test-lib: use $1, not $@ in test_known_broken_{ok,failure}_
      test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
      test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
      test-lib: add a --invert-exit-code switch
      t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
      test-lib: add a SANITIZE=leak logging mode
      t/Makefile: don't remove test-results in "clean-except-prove-cache"
      tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
      test-lib: simplify by removing test_external
      test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
      test-lib: have the "check" mode for SANITIZE=leak consider leak logs
      leak tests: don't skip some tests under SANITIZE=leak
      leak tests: mark passing SANITIZE=leak tests as leak-free
      upload-pack: fix a memory leak in create_pack_file()
      CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
      bisect.c: add missing "goto" for release_revisions()
      test-fast-rebase helper: use release_revisions() (again)
      log: fix a memory leak in "git show <revision>..."
      log: refactor "rev.pending" code in cmd_show()
      bisect.c: partially fix bisect_rev_setup() memory leak
      revisions API: don't leak memory on argv elements that need free()-ing
      help.c: refactor drop_prefix() to use a "switch" statement"
      help.c: remove common category behavior from drop_prefix() behavior
      git help doc: use "<doc>" instead of "<guide>"
      git docs: add a category for user-facing file, repo and command UX
      git docs: add a category for file formats, protocols and interfaces
      docs: move commit-graph format docs to man section 5
      docs: move protocol-related docs to man section 5
      docs: move index format docs to man section 5
      docs: move signature docs to man section 5
      docs: move pack format docs to man section 5
      docs: move cruft pack docs to gitformat-pack
      docs: move http-protocol docs to man section 5
      hook API: don't segfault on strbuf_addf() to NULL "out"
      Makefile + hash.h: remove PPC_SHA1 implementation
      Makefile: use $(OBJECTS) instead of $(C_OBJ)
      git-compat-util.h: use "UNUSED", not "UNUSED(var)"
      git-compat-util.h: use "deprecated" for UNUSED variables
      submodule tests: test usage behavior
      submodule tests: test for "add <repository> <abs-path>"
      submodule--helper: remove unused "name" helper
      submodule--helper: remove unused "list" helper
      test-tool submodule-config: remove unused "--url" handling
      submodule--helper: move "is-active" to a test-tool
      submodule--helper: move "check-name" to a test-tool
      submodule--helper: move "resolve-relative-url-test" to a test-tool
      submodule--helper style: don't separate declared variables with \n\n
      submodule--helper style: add \n\n after variable declarations
      submodule--helper: replace memset() with { 0 }-initialization
      submodule--helper: use xstrfmt() in clone_submodule()
      submodule--helper: move "sb" in clone_submodule() to its own scope
      submodule--helper: add "const" to passed "module_clone_data"
      submodule--helper: add "const" to passed "struct update_data"
      submodule--helper: don't redundantly check "else if (res)"
      submodule--helper: rename "int res" to "int ret"
      submodule--helper: return "ret", not "1" from update_submodule()
      submodule--helper: add missing braces to "else" arm
      submodule--helper: don't call submodule_strategy_to_string() in BUG()
      submodule API: don't handle SM_..{UNSPECIFIED,COMMAND} in to_string()
      submodule--helper: use "code" in run_update_command()
      submodule--helper: don't exit() on failure, return
      submodule--helper: libify determine_submodule_update_strategy()
      submodule--helper: libify "must_die_on_failure" code paths
      submodule--helper update: don't override 'checkout' exit code
      submodule--helper: libify "must_die_on_failure" code paths (for die)
      submodule--helper: check repo{_submodule,}_init() return values
      submodule--helper: libify more "die" paths for module_update()
      submodule--helper: libify even more "die" paths for module_update()
      submodule--helper: fix bad config API usage
      submodule--helper: fix a leak in "clone_submodule"
      submodule--helper: fix trivial get_default_remote_submodule() leak
      submodule--helper: fix most "struct pathspec" memory leaks
      submodule--helper: "struct pathspec" memory leak in module_update()
      submodule--helper: don't leak {run,capture}_command() cp.dir argument
      submodule--helper: add and use *_release() functions
      submodule--helper: fix "errmsg_str" memory leak
      submodule--helper: fix "sm_path" and other "module_cb_list" leaks
      submodule--helper: fix a leak with repo_clear()
      submodule--helper: fix a memory leak in get_default_remote_submodule()
      submodule--helper: fix "reference" leak
      submodule--helper: fix obscure leak in module_add()
      submodule--helper: fix a leak in module_add()
      submodule--helper: fix a memory leak in print_status()
      submodule--helper: free some "displaypath" in "struct update_data"
      submodule--helper: free rest of "displaypath" in "struct update_data"
      submodule--helper: fix a configure_added_submodule() leak
      docs: add and use include template for config/* includes
      grep docs: de-duplicate configuration sections
      send-email docs: de-duplicate configuration sections
      apply docs: de-duplicate configuration sections
      notes docs: de-duplicate and combine configuration sections
      difftool docs: de-duplicate configuration sections
      log docs: de-duplicate configuration sections
      docs: add CONFIGURATION sections that map to a built-in
      docs: add CONFIGURATION sections that fuzzy map to built-ins

Øystein Walle (1):
      rev-parse --parseopt: detect missing opt-spec


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.36.0
@ 2022-04-18 16:27  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-04-18 16:27 UTC (permalink / raw)
  To: git; +Cc: git-packagers

The latest feature release Git v2.36.0 is now available at the
usual places.  It is comprised of 717 non-merge commits since
v2.35.0, contributed by 96 people, 26 of which are new faces [*].

This release contains the same fixes as the recent maintenance
releases to address CVE-2022-24765 as well.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.36.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.35.0 are as follows.
Welcome to the Git development community!

  Abhradeep Chakraborty, BRESSAT Jonathan, Chen Bojun, COGONI
  Guillaume, David Cantrell, Des Preston, Hongyi Zhao, Jason Yundt,
  Jayati Shrivastava, Jaydeep Das, Jaydeep P Das, Jose Lopes,
  Justin Donnelly, Kraymer, Liginity Lee, Matheus Felipe, Matheus
  Valadares, Maximilian Reichel, Michael McClimon, Nihal Jere,
  Pedro Martelletto, Robert Coup, Sean Allred, Shaoxuan Yuan,
  Shubham Mishra, and Waleed Khan.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie,
  Atharva Raykar, Bagas Sanjaya, Beat Bolli, brian m. carlson,
  Carlo Marcelo Arenas Belón, Christian Couder, Daniel Hahler,
  Daniel Santos, Derrick Stolee, Elia Pinto, Elijah Newren,
  Emily Shaffer, Emir SARI, Eric Sunshine, Fabian Stelzer,
  Fangyi Zhou, Glen Choo, Greg Hurrell, Han-Wen Nienhuys, Jacob
  Keller, Jean-Noël Avila, Jeff Hostetler, Jeff King, Jerry
  Zhang, Jessica Clarke, Jiang Xin, Joel Holdsworth, Johannes
  Altmanninger, Johannes Schindelin, Johannes Sixt, John Cai,
  Jonathan Nieder, Jonathan Tan, Jordi Mas, Josh Steadmon, Junio
  C Hamano, Kevin Willford, Lessley Dennington, Marc Strapetz,
  Martin Ågren, Matt Cooper, Matthias Rüster, Michael J Gruber,
  Neeraj Singh, Patrick Steinhardt, Peter Krefting, Philip Oakley,
  Philippe Blain, Phillip Szelat, Phillip Wood, Ralf Thielow,
  Ramkumar Ramachandra, Randall S. Becker, René Scharfe, Shourya
  Shukla, SZEDER Gábor, Tao Klerks, Taylor Blau, Teng Long,
  Thomas Gummerer, Thomas Koutcher, Tilman Vogel, Todd Zullinger,
  Trần Ngọc Quân, Victoria Dye, Yi-Jyun Pan, and 依云.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git 2.36 Release Notes
======================

Updates since Git 2.35
----------------------

Backward compatibility warts

 * "git name-rev --stdin" has been deprecated and issues a warning
   when used; use "git name-rev --annotate-stdin" instead.

 * "git clone --filter=... --recurse-submodules" only makes the
   top-level a partial clone, while submodules are fully cloned.  This
   behaviour is changed to pass the same filter down to the submodules.

 * With the fixes for CVE-2022-24765 that are common with versions of
   Git 2.30.4, 2.31.3, 2.32.2, 2.33.3, 2.34.3, and 2.35.3, Git has
   been taught not to recognise repositories owned by other users, in
   order to avoid getting affected by their config files and hooks.
   You can list the path to the safe/trusted repositories that may be
   owned by others on a multi-valued configuration variable
   `safe.directory` to override this behaviour, or use '*' to declare
   that you trust anything.


Note to those who build from the source

 * Since Git 2.31, our source assumed that the compiler you use to
   build Git supports variadic macros, with an easy-to-use escape
   hatch to allow compilation without variadic macros with an request
   to report that you had to use the escape hatch to the list.
   Because we haven't heard from anybody who actually needed to use
   the escape hatch, it has been removed, making support of variadic
   macros a hard requirement.


UI, Workflows & Features

 * Assorted updates to "git cat-file", especially "-h".

 * The command line completion (in contrib/) learns to complete
   arguments to give to "git sparse-checkout" command.

 * "git log --remerge-diff" shows the difference from mechanical merge
   result and the result that is actually recorded in a merge commit.

 * "git log" and friends learned an option --exclude-first-parent-only
   to propagate UNINTERESTING bit down only along the first-parent
   chain, just like --first-parent option shows commits that lack the
   UNINTERESTING bit only along the first-parent chain.

 * The command line completion script (in contrib/) learned to
   complete all Git subcommands, including the ones that are normally
   hidden, when GIT_COMPLETION_SHOW_ALL_COMMANDS is used.

 * "git branch" learned the "--recurse-submodules" option.

 * A user can forget to make a script file executable before giving
   it to "git bisect run".  In such a case, all tests will exit with
   126 or 127 error codes, even on revisions that are marked as good.
   Try to recognize this situation and stop iteration early.

 * When "index-pack" dies due to incoming data exceeding the maximum
   allowed input size, include the value of the limit in the error
   message.

 * The error message given by "git switch HEAD~4" has been clarified
   to suggest the "--detach" option that is required.

 * In sparse-checkouts, files mis-marked as missing from the working tree
   could lead to later problems.  Such files were hard to discover, and
   harder to correct.  Automatically detecting and correcting the marking
   of such files has been added to avoid these problems.

 * "git cat-file" learns "--batch-command" mode, which is a more
   flexible interface than the existing "--batch" or "--batch-check"
   modes, to allow different kinds of inquiries made.

 * The level of verbose output from the ort backend during inner merge
   has been aligned to that of the recursive backend.

 * "git remote rename A B", depending on the number of remote-tracking
   refs involved, takes long time renaming them.  The command has been
   taught to show progress bar while making the user wait.

 * Bundle file format gets extended to allow a partial bundle,
   filtered by similar criteria you would give when making a
   partial/lazy clone.

 * A new built-in userdiff driver for kotlin has been added.

 * "git repack" learned a new configuration to disable triggering of
   age-old "update-server-info" command, which is rarely useful these
   days.

 * "git stash" does not allow subcommands it internally runs as its
   implementation detail, except for "git reset", to emit messages;
   now "git reset" part has also been squelched.

 * "git ls-tree" learns "--oid-only" option, similar to "--name-only",
   and more generalized "--format" option.

 * "git fetch --refetch" learned to fetch everything without telling
   the other side what we already have, which is useful when you
   cannot trust what you have in the local object store.

 * "git branch" gives hint when branch tracking cannot be established
   because fetch refspecs from multiple remote repositories overlap.

 * "git worktree list --porcelain" did not c-quote pathnames and lock
   reasons with unsafe bytes correctly, which is worked around by
   introducing NUL terminated output format with "-z".


Performance, Internal Implementation, Development Support etc.

 * "git apply" (ab)used the util pointer of the string-list to keep
   track of how each symbolic link needs to be handled, which has been
   simplified by using strset.

 * Fix a hand-rolled alloca() imitation that may have violated
   alignment requirement of data being sorted in compatibility
   implementation of qsort_s() and stable qsort().

 * Use the parse-options API in "git reflog" command.

 * The conditional inclusion mechanism of configuration files using
   "[includeIf <condition>]" learns to base its decision on the
   URL of the remote repository the repository interacts with.
   (merge 399b198489 jt/conditional-config-on-remote-url later to maint).

 * "git name-rev --stdin" does not behave like usual "--stdin" at
   all.  Start the process of renaming it to "--annotate-stdin".
   (merge a2585719b3 jc/name-rev-stdin later to maint).

 * "git update-index", "git checkout-index", and "git clean" are
   taught to work better with the sparse checkout feature.

 * Use an internal call to reset_head() helper function instead of
   spawning "git checkout" in "rebase", and update code paths that are
   involved in the change.

 * Messages "ort" merge backend prepares while dealing with conflicted
   paths were unnecessarily confusing since it did not differentiate
   inner merges and outer merges.

 * Small modernization of the rerere-train script (in contrib/).

 * Use designated initializers we started using in mid 2017 in more
   parts of the codebase that are relatively quiescent.

 * Improve failure case behaviour of xdiff library when memory
   allocation fails.

 * General clean-up in reftable implementation, including
   clarification of the API documentation, tightening the code to
   honor documented length limit, etc.

 * Remove the escape hatch we added when we introduced the weather
   balloon to use variadic macros unconditionally, to make it official
   that we now have a hard dependency on the feature.

 * Makefile refactoring with a bit of suffixes rule stripping to
   optimize the runtime overhead.

 * "git stash drop" is reimplemented as an internal call to
   reflog_delete() function, instead of invoking "git reflog delete"
   via run_command() API.

 * Count string_list items in size_t, not "unsigned int".

 * The single-key interactive operation used by "git add -p" has been
   made more robust.

 * Remove unneeded <meta http-equiv=content-type...> from gitweb
   output.

 * "git name-rev" learned to use the generation numbers when setting
   the lower bound of searching commits used to explain the revision,
   when available, instead of committer time.

 * Replace core.fsyncObjectFiles with two new configuration variables,
   core.fsync and core.fsyncMethod.

 * Updates to refs traditionally weren't fsync'ed, but we can
   configure using core.fsync variable to do so.

 * "git reflog" command now uses parse-options API to parse its
   command line options.


Fixes since v2.35
-----------------

 * "rebase" and "stash" in secondary worktrees are broken in
   Git 2.35.0, which has been corrected.

 * "git pull --rebase" ignored the rebase.autostash configuration
   variable when the remote history is a descendant of our history,
   which has been corrected.
   (merge 3013d98d7a pb/pull-rebase-autostash-fix later to maint).

 * "git update-index --refresh" has been taught to deal better with
   racy timestamps (just like "git status" already does).
   (merge 2ede073fd2 ms/update-index-racy later to maint).

 * Avoid tests that are run under GIT_TRACE2 set from failing
   unnecessarily.
   (merge 944d808e42 js/test-unset-trace2-parents later to maint).

 * The merge-ort misbehaved when merge.renameLimit configuration is
   set too low and failed to find all renames.
   (merge 9ae39fef7f en/merge-ort-restart-optim-fix later to maint).

 * We explain that revs come first before the pathspec among command
   line arguments, but did not spell out that dashed options come
   before other args, which has been corrected.
   (merge c11f95010c tl/doc-cli-options-first later to maint).

 * "git add -p" rewritten in C regressed hunk splitting in some cases,
   which has been corrected.
   (merge 7008ddc645 pw/add-p-hunk-split-fix later to maint).

 * "git fetch --negotiate-only" is an internal command used by "git
   push" to figure out which part of our history is missing from the
   other side.  It should never recurse into submodules even when
   fetch.recursesubmodules configuration variable is set, nor it
   should trigger "gc".  The code has been tightened up to ensure it
   only does common ancestry discovery and nothing else.
   (merge de4eaae63a gc/fetch-negotiate-only-early-return later to maint).

 * The code path that verifies signatures made with ssh were made to
   work better on a system with CRLF line endings.
   (merge caeef01ea7 fs/ssh-signing-crlf later to maint).

 * "git sparse-checkout init" failed to write into $GIT_DIR/info
   directory when the repository was created without one, which has
   been corrected to auto-create it.
   (merge 7f44842ac1 jt/sparse-checkout-leading-dir-fix later to maint).

 * Cloning from a repository that does not yet have any branches or
   tags but has other refs resulted in a "remote transport reported
   error", which has been corrected.
   (merge dccea605b6 jt/clone-not-quite-empty later to maint).

 * Mark in various places in the code that the sparse index and the
   split index features are mutually incompatible.
   (merge 451b66c533 js/sparse-vs-split-index later to maint).

 * Update the logic to compute alignment requirement for our mem-pool.
   (merge e38bcc66d8 jc/mem-pool-alignment later to maint).

 * Pick a better random number generator and use it when we prepare
   temporary filenames.
   (merge 47efda967c bc/csprng-mktemps later to maint).

 * Update the contributor-facing documents on proposed log messages.
   (merge cdba0295b0 jc/doc-log-messages later to maint).

 * When "git fetch --prune" failed to prune the refs it wanted to
   prune, the command issued error messages but exited with exit
   status 0, which has been corrected.
   (merge c9e04d905e tg/fetch-prune-exit-code-fix later to maint).

 * Problems identified by Coverity in the reftable code have been
   corrected.
   (merge 01033de49f hn/reftable-coverity-fixes later to maint).

 * A bug that made multi-pack bitmap and the object order out-of-sync,
   making the .midx data corrupt, has been fixed.
   (merge f8b60cf99b tb/midx-bitmap-corruption-fix later to maint).

 * The build procedure has been taught to notice older version of zlib
   and enable our replacement uncompress2() automatically.
   (merge 07564773c2 ab/auto-detect-zlib-compress2 later to maint).

 * Interaction between fetch.negotiationAlgorithm and
   feature.experimental configuration variables has been corrected.
   (merge 714edc620c en/fetch-negotiation-default-fix later to maint).

 * "git diff --diff-filter=aR" is now parsed correctly.
   (merge 75408ca949 js/diff-filter-negation-fix later to maint).

 * When "git subtree" wants to create a merge, it used "git merge" and
   let it be affected by end-user's "merge.ff" configuration, which
   has been corrected.
   (merge 9158a3564a tk/subtree-merge-not-ff-only later to maint).

 * Unlike "git apply", "git patch-id" did not handle patches with
   hunks that has only 1 line in either preimage or postimage, which
   has been corrected.
   (merge 757e75c81e jz/patch-id-hunk-header-parsing-fix later to maint).

 * "receive-pack" checks if it will do any ref updates (various
   conditions could reject a push) before received objects are taken
   out of the temporary directory used for quarantine purposes, so
   that a push that is known-to-fail will not leave crufts that a
   future "gc" needs to clean up.
   (merge 5407764069 cb/clear-quarantine-early-on-all-ref-update-errors later to maint).

 * When there is no object to write .bitmap file for, "git
   multi-pack-index" triggered an error, instead of just skipping,
   which has been corrected.
   (merge eb57277ba3 tb/midx-no-bitmap-for-no-objects later to maint).

 * "git cmd -h" outside a repository should error out cleanly for many
   commands, but instead it hit a BUG(), which has been corrected.
   (merge 87ad07d735 js/short-help-outside-repo-fix later to maint).

 * "working tree" and "per-worktree ref" were in glossary, but
   "worktree" itself wasn't, which has been corrected.
   (merge 2df5387ed0 jc/glossary-worktree later to maint).

 * L10n support for a few error messages.
   (merge 3d3c23b3a7 bs/forbid-i18n-of-protocol-token-in-fetch-pack later to maint).

 * Test modernization.
   (merge d4fe066e4b sy/t0001-use-path-is-helper later to maint).

 * "git log --graph --graph" used to leak a graph structure, and there
   was no way to countermand "--graph" that appear earlier on the
   command line.  A "--no-graph" option has been added and resource
   leakage has been plugged.

 * Error output given in response to an ambiguous object name has been
   improved.
   (merge 3a73c1dfaf ab/ambiguous-object-name later to maint).

 * "git sparse-checkout" wants to work with per-worktree configuration,
   but did not work well in a worktree attached to a bare repository.
   (merge 3ce1138272 ds/sparse-checkout-requires-per-worktree-config later to maint).

 * Setting core.untrackedCache to true failed to add the untracked
   cache extension to the index.

 * Workaround we have for versions of PCRE2 before their version 10.36
   were in effect only for their versions newer than 10.36 by mistake,
   which has been corrected.
   (merge 97169fc361 rs/pcre-invalid-utf8-fix-fix later to maint).

 * Document Taylor as a new member of Git PLC at SFC.  Welcome.
   (merge e8d56ca863 tb/coc-plc-update later to maint).

 * "git checkout -b branch/with/multi/level/name && git stash" only
   recorded the last level component of the branch name, which has
   been corrected.

 * Check the return value from parse_tree_indirect() to turn segfaults
   into calls to die().
   (merge 8d2eaf649a gc/parse-tree-indirect-errors later to maint).

 * Newer version of GPGSM changed its output in a backward
   incompatible way to break our code that parses its output.  It also
   added more processes our tests need to kill when cleaning up.
   Adjustments have been made to accommodate these changes.
   (merge b0b70d54c4 fs/gpgsm-update later to maint).

 * The untracked cache newly computed weren't written back to the
   on-disk index file when there is no other change to the index,
   which has been corrected.

 * "git config -h" did not describe the "--type" option correctly.
   (merge 5445124fad mf/fix-type-in-config-h later to maint).

 * The way generation number v2 in the commit-graph files are
   (not) handled has been corrected.
   (merge 6dbf4b8172 ds/commit-graph-gen-v2-fixes later to maint).

 * The method to trigger malloc check used in our tests no longer work
   with newer versions of glibc.
   (merge baedc59543 ep/test-malloc-check-with-glibc-2.34 later to maint).

 * When "git fetch --recurse-submodules" grabbed submodule commits
   that would be needed to recursively check out newly fetched commits
   in the superproject, it only paid attention to submodules that are
   in the current checkout of the superproject.  We now do so for all
   submodules that have been run "git submodule init" on.

 * "git rebase $base $non_branch_commit", when $base is an ancestor or
   the $non_branch_commit, modified the current branch, which has been
   corrected.

 * When "shallow" information is updated, we forgot to update the
   in-core equivalent, which has been corrected.

 * When creating a loose object file, we didn't report the exact
   filename of the file we failed to fsync, even though the
   information was readily available, which has been corrected.

 * "git am" can read from the standard input when no mailbox is given
   on the command line, but the end-user gets no indication when it
   happens, making Git appear stuck.
   (merge 7b20af6a06 jc/mailsplit-warn-on-tty later to maint).

 * "git mv" failed to refresh the cached stat information for the
   entry it moved.
   (merge b7f9130a06 vd/mv-refresh-stat later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge cfc5cf428b jc/find-header later to maint).
   (merge 40e7cfdd46 jh/p4-fix-use-of-process-error-exception later to maint).
   (merge 727e6ea350 jh/p4-spawning-external-commands-cleanup later to maint).
   (merge 0a6adc26e2 rs/grep-expr-cleanup later to maint).
   (merge 4ed7dfa713 po/readme-mention-contributor-hints later to maint).
   (merge 6046f7a91c en/plug-leaks-in-merge later to maint).
   (merge 8c591dbfce bc/clarify-eol-attr later to maint).
   (merge 518e15db74 rs/parse-options-lithelp-help later to maint).
   (merge cbac0076ef gh/doc-typos later to maint).
   (merge ce14de03db ab/no-errno-from-resolve-ref-unsafe later to maint).
   (merge 2826ffad8c rc/negotiate-only-typofix later to maint).
   (merge 0f03f04c5c en/sparse-checkout-leakfix later to maint).
   (merge 74f3390dde sy/diff-usage-typofix later to maint).
   (merge 45d0212a71 ll/doc-mktree-typofix later to maint).
   (merge e9b272e4c1 js/no-more-legacy-stash later to maint).
   (merge 6798b08e84 ab/do-not-hide-failures-in-git-dot-pm later to maint).
   (merge 9325285df4 po/doc-check-ignore-markup-fix later to maint).
   (merge cd26cd6c7c sy/modernize-t-lib-read-tree-m-3way later to maint).
   (merge d17294a05e ab/hash-object-leakfix later to maint).
   (merge b8403129d3 jd/t0015-modernize later to maint).
   (merge 332acc248d ds/mailmap later to maint).
   (merge 04bf052eef ab/grep-patterntype later to maint).
   (merge 6ee36364eb ab/diff-free-more later to maint).
   (merge 63a36017fe nj/read-tree-doc-reffix later to maint).
   (merge eed36fce38 sm/no-git-in-upstream-of-pipe-in-tests later to maint).
   (merge c614beb933 ep/t6423-modernize later to maint).
   (merge 57be9c6dee ab/reflog-prep-fix later to maint).
   (merge 5327d8982a js/in-place-reverse-in-sequencer later to maint).
   (merge 2e2c0be51e dp/worktree-repair-in-usage later to maint).
   (merge 6563706568 jc/coding-guidelines-decl-in-for-loop later to maint).

----------------------------------------------------------------

Changes since v2.35.0 are as follows:

Abhradeep Chakraborty (2):
      amend remaining usage strings according to style guide
      partial-clone: add a partial-clone test case

Adam Dinwoodie (2):
      configure.ac: fix HAVE_SYNC_FILE_RANGE definition
      t9902: split test to run on appropriate systems

Alex Henrie (3):
      log: fix memory leak if --graph is passed multiple times
      log: add a --no-graph option
      switch: mention the --detach option when dying due to lack of a branch

Atharva Raykar (5):
      submodule--helper: get remote names from any repository
      submodule--helper: refactor get_submodule_displaypath()
      submodule--helper: allow setting superprefix for init_submodule()
      submodule--helper: run update using child process struct
      submodule: move core cmd_update() logic to C

Bagas Sanjaya (3):
      fetch-pack: parameterize message containing 'ready' keyword
      l10n: po-id for 2.36 (round 1)
      l10n: po-id for 2.36 (round 2)

COGONI Guillaume (3):
      t/t3903-stash.sh: replace test [-d|-f] with test_path_is_*
      tests: allow testing if a path is truly a file or a directory
      tests: make the code more readable

Carlo Marcelo Arenas Belón (4):
      mingw: avoid fallback for {local,gm}time_r()
      git-compat-util: really support openssl as a source of entropy
      config.mak.dev: workaround gcc 12 bug affecting "pedantic" CI job
      config.mak.dev: alternative workaround to gcc 12 warning in http.c

Chen Bojun (1):
      receive-pack: purge temporary data if no command is ready to run

Daniel Santos (3):
      l10n: pt_PT: update Portuguese translation
      l10n: pt_PT: update TEAMS file
      l10n: pt_PT: update Portuguese translation

David Cantrell (1):
      completion: tab completion of filenames for 'git restore'

Derrick Stolee (47):
      Documentation: add extensions.worktreeConfig details
      worktree: create init_worktree_config()
      config: add repo_config_set_worktree_gently()
      sparse-checkout: set worktree-config correctly
      worktree: copy sparse-checkout patterns and config on add
      config: make git_configset_get_string_tmp() private
      mailmap: change primary address for Derrick Stolee
      dir: force untracked cache with core.untrackedCache
      worktree: combine two translatable messages
      worktree: extract copy_filtered_worktree_config()
      worktree: extract copy_sparse_checkout()
      worktree: extract checkout_worktree()
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      test-read-graph: include extra post-parse info
      t5318: extract helpers to lib-commit-graph.sh
      commit-graph: fix ordering bug in generation numbers
      commit-graph: start parsing generation v2 (again)
      commit-graph: fix generation number v2 overflow values
      commit-graph: declare bankruptcy on GDAT chunks
      index-pack: document and test the --promisor option
      list-objects-filter-options: create copy helper
      revision: put object filter into struct rev_info
      pack-objects: use rev.filter when possible
      pack-bitmap: drop filter in prepare_bitmap_walk()
      list-objects: consolidate traverse_commit_list[_filtered]
      MyFirstObjectWalk: update recommended usage
      bundle: parse filter capability
      rev-list: move --filter parsing into revision.c
      bundle: create filtered bundles
      bundle: unbundle promisor packs
      clone: fail gracefully when cloning filtered bundle
      maintenance: fix synopsis in documentation
      list-objects-filter: remove CL_ARG__FILTER
      pack-objects: move revs out of get_object_list()
      pack-objects: parse --filter directly into revs.filter
      bundle: move capabilities to end of 'verify'
      bundle: output hash information in 'verify'
      t7700: check post-condition in kept-pack test
      test-lib-functions: remove test_subcommand_inexact
      t0033: add tests for safe.directory
      setup: opt-out of check with safe.directory=*

Des Preston (1):
      worktree: include repair cmd in usage

Elia Pinto (8):
      test-lib.sh: Use GLIBC_TUNABLES instead of MALLOC_CHECK_ on glibc >= 2.34
      t6423-merge-rename-directories.sh: use the $(...) construct
      attr.c: delete duplicate include
      builtin/gc.c: delete duplicate include
      builtin/sparse-checkout.c: delete duplicate include
      builtin/stash.c: delete duplicate include
      t/helper/test-run-command.c: delete duplicate include
      attr.h: remove duplicate struct definition

Elijah Newren (33):
      t1011: add testcase demonstrating accidental loss of user modifications
      unpack-trees: fix accidental loss of user changes
      repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
      Update documentation related to sparsity and the skip-worktree bit
      Accelerate clear_skip_worktree_from_present_files() by caching
      merge-ort: avoid assuming all renames detected
      merge-ort: fix memory leak in merge_ort_internal()
      merge: fix memory leaks in cmd_merge()
      sequencer, stash: fix running from worktree subdir
      sparse-checkout: fix a couple minor memory leaks
      repo-settings: fix checking for fetch.negotiationAlgorithm=default
      repo-settings: fix error handling for unknown values
      repo-settings: rename the traditional default fetch.negotiationAlgorithm
      show, log: provide a --remerge-diff capability
      log: clean unneeded objects during `log --remerge-diff`
      ll-merge: make callers responsible for showing warnings
      merge-ort: capture and print ll-merge warnings in our preferred fashion
      merge-ort: mark a few more conflict messages as omittable
      merge-ort: format messages slightly different for use in headers
      diff: add ability to insert additional headers for paths
      show, log: include conflict/warning messages in --remerge-diff headers
      merge-ort: mark conflict/warning messages from inner merges as omittable
      diff-merges: avoid history simplifications when diffing merges
      merge-ort: make informational messages from recursive merges clearer
      sparse-checkout: correct reapply's handling of options
      sparse-checkout: correctly set non-cone mode when expected
      sparse-checkout: pay attention to prefix for {set, add}
      sparse-checkout: error or warn when given individual files
      sparse-checkout: reject arguments in cone-mode that look like patterns
      merge-ort: fix small memory leak in detect_and_process_renames()
      merge-ort: fix small memory leak in unique_path()
      merge-ort: exclude messages from inner merges by default
      repo_read_index: add config to expect files outside sparse patterns

Emily Shaffer (14):
      hook: add 'run' subcommand
      gc: use hook library for pre-auto-gc hook
      am: convert {pre,post}-applypatch to use hook.h
      rebase: convert pre-rebase to use hook.h
      am: convert applypatch-msg to use hook.h
      merge: convert post-merge to use hook.h
      hooks: convert non-worktree 'post-checkout' hook to hook library
      hooks: convert worktree 'post-checkout' hook to hook library
      send-email: use 'git hook run' for 'sendemail-validate'
      git-p4: use 'git hook' to run hooks
      commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
      read-cache: convert post-index-change to use hook.h
      receive-pack: convert push-to-checkout hook to hook.h
      run-command: remove old run_hook_{le,ve}() hook API

Emir SARI (2):
      l10n: tr: v2.36.0 round 1
      l10n: tr: v2.36.0 round 2

Fabian Stelzer (2):
      gpg-interface: trim CR from ssh-keygen
      gpg-interface/gpgsm: fix for v2.3

Fangyi Zhou (4):
      submodule-helper: fix usage string
      l10n: Update zh_CN repo link
      l10n: zh_CN v2.36.0 round 1
      l10n: zh_CN v2.36.0 round 2

Glen Choo (39):
      fetch: use goto cleanup in cmd_fetch()
      fetch: skip tasks related to fetching objects
      fetch --negotiate-only: do not update submodules
      branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
      branch: make create_branch() always create a branch
      branch: add a dry_run parameter to create_branch()
      builtin/branch: consolidate action-picking logic in cmd_branch()
      branch: add --recurse-submodules option for branch creation
      branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
      stash: strip "refs/heads/" with skip_prefix
      checkout, clone: die if tree cannot be parsed
      submodule--helper: remove update-module-mode
      submodule--helper: reorganize code for sh to C conversion
      submodule--helper run-update-procedure: remove --suboid
      submodule--helper run-update-procedure: learn --remote
      submodule--helper update-clone: learn --init
      submodule--helper: remove ensure-core-worktree
      submodule update: add tests for --filter
      submodule--helper update-clone: check for --filter and --init
      t5526: introduce test helper to assert on fetches
      t5526: stop asserting on stderr literally
      t5526: create superproject commits with test helper
      submodule: make static functions read submodules from commits
      submodule: inline submodule_commits() into caller
      submodule: store new submodule commits oid_array in a struct
      submodule: extract get_fetch_task()
      submodule: move logic into fetch_task_create()
      submodule update: use die_message()
      submodule--helper: teach update_data more options
      submodule--helper: reduce logic in run_update_procedure()
      submodule--helper: remove forward declaration
      fetch: fetch unpopulated, changed submodules
      submodule: fix latent check_has_commit() bug
      branch: support more tracking modes when recursing
      branch: give submodule updating advice before exit
      branch --set-upstream-to: be consistent when advising
      branch: remove negative exit code
      branch: rework comments for future developers
      branch.c: simplify advice-and-die sequence

Greg Hurrell (2):
      Documentation/config/pgp.txt: replace stray <TAB> character with <SPC>
      Documentation/config/pgp.txt: add missing apostrophe

Han-Wen Nienhuys (27):
      reftable: fix OOB stack write in print functions
      reftable: fix resource leak in block.c error path
      reftable: fix resource leak blocksource.c
      reftable: check reftable_stack_auto_compact() return value
      reftable: ignore remove() return value in stack_test.c
      reftable: fix resource warning
      reftable: all xxx_free() functions accept NULL arguments
      reftable: order unittests by complexity
      reftable: drop stray printf in readwrite_test
      reftable: handle null refnames in reftable_ref_record_equal
      reftable: make reftable-record.h function signatures const correct
      reftable: implement record equality generically
      reftable: remove outdated file reftable.c
      reftable: make reftable_record a tagged union
      reftable: add print functions to the record types
      t1405: explictly delete reflogs for reftable
      t1405: mark test that checks existence as REFFILES
      t5312: prepare for reftable
      t1410: use test-tool ref-store to inspect reflogs
      t1410: mark bufsize boundary test as REFFILES
      Documentation: object_id_len goes up to 31
      reftable: reject 0 object_id_len
      reftable: add a test that verifies that writing empty keys fails
      reftable: avoid writing empty keys at the block layer
      reftable: ensure that obj_id_len is >= 2 on writing
      reftable: add test for length of disambiguating prefix
      reftable: rename writer_stats to reftable_writer_stats

Jacob Keller (1):
      name-rev: use generation numbers if available

Jason Yundt (2):
      comment: fix typo
      gitweb: remove invalid http-equiv="content-type"

Jayati Shrivastava (1):
      sequencer: use reverse_commit_list() helper

Jaydeep Das (1):
      t/t0015-hash.sh: remove unnecessary '\' at line end

Jaydeep P Das (1):
      userdiff: add builtin diff driver for kotlin language.

Jean-Noël Avila (7):
      i18n: factorize more 'incompatible options' messages
      i18n: factorize "invalid value" messages
      i18n: remove from i18n strings that do not hold translatable parts
      i18n: fix some misformated placeholders in command synopsis
      l10n: fr: v2.36 round 1
      i18n: fix some badly formatted i18n strings
      l10n: fr: v2.36 round 2

Jeff Hostetler (30):
      fsmonitor: enhance existing comments, clarify trivial response handling
      fsmonitor-ipc: create client routines for git-fsmonitor--daemon
      fsmonitor: config settings are repository-specific
      fsmonitor: use IPC to query the builtin FSMonitor daemon
      fsmonitor: document builtin fsmonitor
      fsmonitor--daemon: add a built-in fsmonitor daemon
      fsmonitor--daemon: implement 'stop' and 'status' commands
      compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
      compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
      fsmonitor--daemon: implement 'run' command
      fsmonitor--daemon: implement 'start' command
      fsmonitor--daemon: add pathname classification
      fsmonitor--daemon: define token-ids
      fsmonitor--daemon: create token-based changed path cache
      compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
      compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent
      compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
      fsmonitor--daemon: implement handle_client callback
      help: include fsmonitor--daemon feature flag in version info
      t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
      t7527: create test for fsmonitor--daemon
      t/perf: avoid copying builtin fsmonitor files into test repo
      t/helper/test-chmtime: skip directories on Windows
      t/perf/p7519: fix coding style
      t/perf/p7519: speed up test on Windows
      t/perf/p7519: add fsmonitor--daemon test cases
      fsmonitor--daemon: periodically truncate list of modified files
      fsmonitor--daemon: use a cookie file to sync with file system
      fsmonitor: force update index after large responses
      t7527: test status with untracked-cache and fsmonitor--daemon

Jerry Zhang (3):
      git-rev-list: add --exclude-first-parent-only flag
      patch-id: fix antipatterns in tests
      patch-id: fix scan_hunk_header on diffs with 1 line of before/after

Jessica Clarke (1):
      mem-pool: don't assume uintmax_t is aligned enough for all types

Jiang Xin (2):
      l10n: git.pot: v2.36.0 round 1 (192 new, 106 removed)
      l10n: git.pot: v2.36.0 round 2 (4 new, 3 removed)

Joel Holdsworth (4):
      git-p4: don't select shell mode using the type of the command argument
      git-p4: pass command arguments as lists instead of using shell
      git-p4: don't print shell commands as python lists
      git-p4: fix instantiation of CalledProcessError

Johannes Schindelin (24):
      sparse-index: sparse index is disallowed when split index is active
      t1091: disable split index
      split-index: it really is incompatible with the sparse index
      git-sh-setup: remove remnant bits referring to `git-legacy-stash`
      add: remove support for `git-legacy-stash`
      stash: remove documentation for `stash.useBuiltin`
      stash: stop warning about the obsolete `stash.useBuiltin` config setting
      docs(diff): lose incorrect claim about `diff-files --diff-filter=A`
      diff.c: move the diff filter bits definitions up a bit
      diff-filter: be more careful when looking for negative bits
      scalar: accept -C and -c options before the subcommand
      checkout/fetch/pull/pack-objects: allow `-h` outside a repository
      t0012: verify that built-ins handle `-h` even without gitdir
      GIT-VERSION-GEN: bump to v2.33.1
      Add a function to determine whether a path is owned by the current user
      setup_git_directory(): add an owner check for the top-level directory
      cocci: allow padding with `strbuf_addf()`
      Fix `GIT_CEILING_DIRECTORIES` with `C:\` and the likes
      Git 2.30.3
      Git 2.31.2
      Git 2.32.1
      Git 2.33.2
      Git 2.34.2
      Git 2.35.2

John Cai (15):
      receive-pack.c: consolidate find header logic
      name-rev: deprecate --stdin in favor of --annotate-stdin
      name-rev.c: use strbuf_getline instead of limited size buffer
      builtin/reflog.c: use parse-options api for expire, delete subcommands
      name-rev: replace --stdin with --annotate-stdin in synopsis
      cat-file: rename cmdmode to transform_mode
      cat-file: introduce batch_mode enum to replace print_contents
      cat-file: add remove_timestamp helper
      cat-file: add --batch-command mode
      stash: add tests to ensure reflog --rewrite --updatref behavior
      reflog: libify delete reflog function and helpers
      stash: call reflog_delete() in reflog.c
      cat-file: skip expanding default format
      rebase: use test_commit helper in setup
      rebase: set REF_HEAD_DETACH in checkout_up_to_date()

Jonathan Tan (6):
      config: make git_config_include() static
      config: include file if remote URL matches a glob
      sparse-checkout: create leading directory
      clone: support unusual remote ref configurations
      ls-files: support --recurse-submodules --stage
      shallow: reset commit grafts when shallow is reset

Jordi Mas (1):
      l10n: Update Catalan translation

Josh Steadmon (3):
      test-lib: unset trace2 parent envvars
      clone, submodule: pass partial clone filters to submodules
      ls-tree: `-l` should not imply recursive listing

Junio C Hamano (40):
      compat/qsort_s.c: avoid using potentially unaligned access
      fetch: help translators by reusing the same message template
      Start post 2.35 cycle
      SubmittingPatches: write problem statement in the log in the present tense
      CodingGuidelines: hint why we value clearly written log messages
      SubmittingPatches: explain why we care about log messages
      Git 2.35.1
      Name the next one 2.36 to prepare for 2.35.1
      The first batch
      The second batch for 2.36
      glossary: describe "worktree"
      The third batch
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      The eighth batch
      rerere-train: two fixes to the use of "git show -s"
      am/apply: warn if we end up reading patches from terminal
      The ninth batch
      The tenth batch
      The eleventh batch
      The twelfth batch
      The thirteenth batch
      The 14th batch
      reset: show --no-refresh in the short-help
      The 15th batch
      The 16th batch
      The 17th batch
      CodingGuidelines: give deadline for "for (int i = 0; ..."
      Git 2.36-rc0
      Git 2.36-rc1
      Git 2.36-rc2
      Git 2.30.4
      Revert "Merge branch 'ps/avoid-unnecessary-hook-invocation-with-packed-refs'"
      Revert "fetch: increase test coverage of fetches"
      RelNotes: clarify "bisect run unexecutable" tweak
      RelNotes: mention safe.directory
      RelNotes: revert the description on the reverted topics
      Git 2.36

Justin Donnelly (4):
      git-prompt: rename `upstream` to `upstream_type`
      git-prompt: make upstream state indicator location consistent
      git-prompt: make long upstream state indicator consistent
      git-prompt: put upstream comments together

Lessley Dennington (3):
      completion: address sparse-checkout issues
      completion: improve sparse-checkout cone mode directory completion
      completion: handle unusual characters for sparse-checkout

Liginity Lee (1):
      fix typo in git-mktree.txt

Marc Strapetz (4):
      test-lib: introduce API for verifying file mtime
      t7508: fix bogus mtime verification
      t7508: add tests capturing racy timestamp handling
      update-index: refresh should rewrite index in case of racy timestamps

Martin Ågren (1):
      git-ls-tree.txt: fix the name of "%(objectsize:padded)"

Matheus Felipe (1):
      config: correct "--type" option in "git config -h" output

Matheus Valadares (1):
      setup: fix safe.directory key not being checked

Matt Cooper (1):
      index-pack: clarify the breached limit

Matthias Rüster (1):
      l10n: de.po: Update German translation

Michael J Gruber (2):
      test-lib: declare local variables as local
      tests: demonstrate "show --word-diff --color-moved" regression

Neeraj Singh (10):
      wrapper: make inclusion of Windows csprng header tightly scoped
      core.fsyncmethod: add writeout-only mode
      core.fsync: introduce granular fsync control infrastructure
      core.fsync: add configuration parsing
      core.fsync: new option to harden the index
      core.fsync: documentation and user-friendly aggregate options
      core.fsync: fix incorrect expression for default configuration
      trace2: add stats for fsync operations
      core.fsyncmethod: correctly camel-case warning message
      object-file: pass filename to fsync_or_die

Nihal Jere (1):
      Documentation: git-read-tree: separate links using commas

Patrick Steinhardt (24):
      refs: extract packed_refs_delete_refs() to allow control of transaction
      refs: allow passing flags when beginning transactions
      refs: allow skipping the reference-transaction hook
      refs: demonstrate excessive execution of the reference-transaction hook
      refs: do not execute reference-transaction hook on packing refs
      refs: skip hooks when deleting uncovered packed refs
      fetch-pack: use commit-graph when computing cutoff
      fetch: skip computing output width when not printing anything
      fetch: increase test coverage of fetches
      fetch: backfill tags before setting upstream
      fetch: control lifecycle of FETCH_HEAD in a single place
      fetch: report errors when backfilling tags fails
      refs: add interface to iterate over queued transactional updates
      fetch: make `--atomic` flag cover backfilling of tags
      fetch: make `--atomic` flag cover pruning of refs
      upload-pack: look up "want" lines via commit-graph
      fetch: avoid lookup of commits when not appending to FETCH_HEAD
      refs: add ability for backends to special-case reading of symbolic refs
      remote: read symbolic refs via `refs_read_symbolic_ref()`
      refs/files-backend: optimize reading of symbolic refs
      t5503: simplify setup of test which exercises failure of backfill
      repack: refactor to avoid double-negation of update-server-info
      repack: add config to skip updating server info
      core.fsync: new option to harden references

Peter Krefting (1):
      l10n: sv.po: Update Swedish translation (5282t0f0u)

Philip Oakley (2):
      README.md: add CodingGuidelines and a link for Translators
      doc: check-ignore: code-quote an exclamation mark

Philippe Blain (1):
      pull --rebase: honor rebase.autostash when fast-forwarding

Phillip Wood (29):
      t3701: clean up hunk splitting tests
      builtin add -p: fix hunk splitting
      rebase: factor out checkout for up to date branch
      t5403: refactor rebase post-checkout hook tests
      rebase: pass correct arguments to post-checkout hook
      rebase: do not remove untracked files on checkout
      rebase --apply: don't run post-checkout hook if there is an error
      reset_head(): remove action parameter
      reset_head(): factor out ref updates
      reset_head(): make default_reflog_action optional
      create_autostash(): remove unneeded parameter
      rebase: cleanup reset_head() calls
      reset_head(): take struct rebase_head_opts
      rebase --apply: fix reflog
      rebase --apply: set ORIG_HEAD correctly
      rebase -m: don't fork git checkout
      xdiff: fix a memory leak
      xdiff: handle allocation failure in patience diff
      xdiff: refactor a function
      xdiff: handle allocation failure when merging
      terminal: always reset terminal when reading without echo
      terminal: pop signal handler when terminal is restored
      terminal: set VMIN and VTIME in non-canonical mode
      add -p: disable stdin buffering when interactive.singlekey is set
      terminal: use flags for save_term()
      terminal: don't assume stdin is /dev/tty
      terminal: work around macos poll() bug
      terminal: restore settings on SIGTSTP
      worktree: add -z option for list subcommand

René Scharfe (10):
      grep: use grep_or_expr() in compile_pattern_or()
      grep: use grep_not_expr() in compile_pattern_not()
      apply: use strsets to track symlinks
      stable-qsort: avoid using potentially unaligned access
      bisect--helper: report actual bisect_state() argument on error
      bisect--helper: release strbuf and strvec on run error
      bisect: document run behavior with exit codes 126 and 127
      bisect--helper: double-check run command on exit code 126 and 127
      parse-options: document bracketing of argh
      grep: fix triggering PCRE2_NO_START_OPTIMIZE workaround

Robert Coup (8):
      fetch: fix negotiate-only error message
      fetch-negotiator: add specific noop initializer
      fetch-pack: add refetch
      builtin/fetch-pack: add --refetch option
      fetch: add --refetch option
      t5615-partial-clone: add test for fetch --refetch
      fetch: after refetch, encourage auto gc repacking
      docs: mention --refetch fetch option

SZEDER Gábor (1):
      reflog: fix 'show' subcommand's argv

Shaoxuan Yuan (4):
      builtin/diff.c: fix "git-diff" usage string typo
      t/lib-read-tree-m-3way: modernize style
      t/lib-read-tree-m-3way: indent with tabs
      t0001: replace "test [-d|-f]" with test_path_is_* functions

Shubham Mishra (3):
      t0003: avoid pipes with Git on LHS
      t0001-t0028: avoid pipes with Git on LHS
      t0030-t0050: avoid pipes with Git on LHS

Tao Klerks (6):
      t7519: avoid file to index mtime race for untracked cache
      t7519: populate untracked cache before test
      untracked-cache: write index when populating empty untracked cache
      t/helper/test-chmtime: update mingw to support chmtime on directories
      t7063: mtime-mangling instead of delays in untracked cache testing
      tracking branches: add advice to ambiguous refspec error

Taylor Blau (15):
      grep: extract grep_binexp() from grep_or_expr()
      grep: use grep_and_expr() in compile_pattern_and()
      t5326: demonstrate bitmap corruption after permutation
      midx.c: make changing the preferred pack safe
      pack-revindex.c: instrument loading on-disk reverse index
      t5326: drop unnecessary setup
      t5326: extract `test_rev_exists`
      t5326: move tests to t/lib-bitmap.sh
      t/lib-bitmap.sh: parameterize tests over reverse index source
      midx: read `RIDX` chunk when present
      pack-bitmap.c: gracefully fallback after opening pack/MIDX
      midx: prevent writing a .bitmap without any objects
      CODE_OF_CONDUCT.md: update PLC members list
      builtin/remote.c: parse options in 'rename'
      builtin/remote.c: show progress when renaming remote references

Teng Long (6):
      git-cli.txt: clarify "options first and then args"
      ls-tree: rename "retval" to "recurse" in "show_tree()"
      ls-tree: simplify nesting if/else logic in "show_tree()"
      ls-tree: fix "--name-only" and "--long" combined use bug
      ls-tree: slightly refactor `show_tree()`
      ls-tree: support --object-only option for "git-ls-tree"

Thomas Gummerer (1):
      fetch --prune: exit with error if pruning fails

Thomas Koutcher (1):
      subtree: force merge commit

Todd Zullinger (3):
      t/lib-gpg: reload gpg components after updating trustlist
      t/lib-gpg: kill all gpg components, not just gpg-agent
      doc: replace "--" with {litdd} in credential-cache/fsmonitor

Trần Ngọc Quân (1):
      l10n: vi(5285t): v2.36.0 round 2

Victoria Dye (30):
      reset: fix validation in sparse index test
      reset: reorder wildcard pathspec conditions
      clean: integrate with sparse index
      checkout-index: expand sparse checkout compatibility tests
      checkout-index: add --ignore-skip-worktree-bits option
      checkout-index: integrate with sparse index
      update-index: add tests for sparse-checkout compatibility
      update-index: integrate with sparse index
      update-index: reduce scope of index expansion in do_reupdate
      sparse-index: prevent repo root from becoming sparse
      status: fix nested sparse directory diff in sparse index
      read-tree: explicitly disallow prefixes with a leading '/'
      read-tree: expand sparse checkout test coverage
      read-tree: integrate with sparse index
      read-tree: narrow scope of index expansion for '--prefix'
      read-tree: make two-way merge sparse-aware
      read-tree: make three-way merge sparse-aware
      reset: revise index refresh advice
      reset: introduce --[no-]refresh option to --mixed
      reset: replace '--quiet' with '--no-refresh' in performance advice
      reset: suppress '--no-refresh' advice if logging is silenced
      stash: make internal resets quiet and refresh index
      t1092: add sparse directory before cone in test repo
      unpack-trees: increment cache_bottom for sparse directories
      Revert "unpack-trees: improve performance of next_cache_entry"
      reset: do not make '--quiet' disable index refresh
      reset: remove 'reset.quiet' config option
      reset: remove 'reset.refresh' config option
      mv: refresh stat info for moved entry
      contrib/scalar: fix 'all' target in Makefile

Yi-Jyun Pan (1):
      l10n: zh_TW: v2.36.0 round 2

brian m. carlson (6):
      t0027: add tests for eol without text in .gitattributes
      docs: correct documentation about eol attribute
      wrapper: add a helper to generate numbers from a CSPRNG
      wrapper: use a CSPRNG to generate random file names
      doc: clarify interaction between 'eol' and text=auto
      block-sha1: remove use of obsolete x86 assembly

Ævar Arnfjörð Bjarmason (186):
      cat-file tests: test bad usage
      cat-file tests: test messaging on bad objects/paths
      parse-options API: add a usage_msg_optf()
      cat-file docs: fix SYNOPSIS and "-h" output
      cat-file: move "usage" variable to cmd_cat_file()
      cat-file: make --batch-all-objects a CMDMODE
      cat-file: fix remaining usage bugs
      cat-file: correct and improve usage information
      object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
      cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
      hook API: add a run_hooks() wrapper
      hook API: add a run_hooks_l() wrapper
      git hook run: add an --ignore-missing flag
      cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
      cat-file: s/_/-/ in typo'd usage_msg_optf() message
      compat: auto-detect if zlib has uncompress2()
      sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure
      refs API: remove "failure_errno" from refs_resolve_ref_unsafe()
      object-name tests: add tests for ambiguous object blind spots
      object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
      object-name: explicitly handle bad tags in show_ambiguous_object()
      object-name: make ambiguous object output translatable
      object-name: show date for ambiguous tag objects
      object-name: iterate ambiguous objects before showing header
      object-name: re-use "struct strbuf" in show_ambiguous_object()
      perl Git.pm: don't ignore signalled failure in _cmd_close()
      completion tests: re-source git-completion.bash in a subshell
      completion: add a GIT_COMPLETION_SHOW_ALL_COMMANDS
      leak tests: fix a memory leak in "test-progress" helper
      progress.c test helper: add missing braces
      progress.c tests: make start/stop commands on stdin
      progress.c tests: test some invalid usage
      progress.h: format and be consistent with progress.c naming
      progress.c: use dereferenced "progress" variable, not "(*p_progress)"
      progress.c: refactor stop_progress{,_msg}() to use helpers
      progress API: unify stop_progress{,_msg}(), fix trace2 bug
      pack-bitmap-write.c: don't return without stop_progress()
      t0051: use "skip_all" under !MINGW in single-test file
      hash-object: fix a trivial leak in --path
      ls-remote & transport API: release "struct transport_ls_refs_options"
      grep.h: remove unused "regex_t regexp" from grep_opt
      log tests: check if grep_config() is called by "log"-like cmds
      grep tests: create a helper function for "BRE" or "ERE"
      grep tests: add missing "grep.patternType" config tests
      built-ins: trust the "prefix" from run_builtin()
      grep.c: don't pass along NULL callback value
      grep API: call grep_config() after grep_init()
      grep.h: make "grep_opt.pattern_type_option" use its enum
      grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
      grep: simplify config parsing and option parsing
      cache.h: remove always unused show_date_human() declaration
      date API: create a date.h, split from cache.h
      date API: provide and use a DATE_MODE_INIT
      date API: add basic API docs
      date API: add and use a date_mode_release()
      diff.[ch]: have diff_free() call clear_pathspec(opts.pathspec)
      diff.[ch]: have diff_free() free options->parseopts
      hook tests: test for exact "pre-push" hook input
      hook tests: use a modern style for "pre-push" tests
      git-compat-util.h: clarify GCC v.s. C99-specific in comment
      C99: remove hardcoded-out !HAVE_VARIADIC_MACROS code
      help doc: add missing "]" to "[-a|--all]"
      help.c: use puts() instead of printf{,_ln}() for consistency
      help tests: test "git" and "git help [-a|-g] spacing
      help.c: split up list_all_cmds_help() function
      help: note the option name on option incompatibility
      help: correct usage & behavior of "git help --all"
      help: error if [-a|-g|-c] and [-i|-m|-w] are combined
      help: add --no-[external-commands|aliases] for use with --all
      help: don't print "\n" before single-section output
      imap-send.c: use designated initializers for "struct imap_server_conf"
      trace2: use designated initializers for "struct tr2_tgt"
      trace2: use designated initializers for "struct tr2_dst"
      object-file: use designated initializers for "struct git_hash_algo"
      archive-*.c: use designated initializers for "struct archiver"
      userdiff.c: use designated initializers for "struct userdiff_driver"
      convert.c: use designated initializers for "struct stream_filter*"
      refspec.c: use designated initializers for "struct refspec_item"
      fast-import.c: use designated initializers for "partial" struct assignments
      object-file.c: split up declaration of unrelated variables
      object-file API: return "void", not "int" from hash_object_file()
      object-file API: add a format_object_header() function
      object-file API: have write_object_file() take "enum object_type"
      object API: correct "buf" v.s. "map" mismatch in *.c and *.h
      object API docs: move check_object_signature() docs to cache.h
      object API users + docs: check <0, not !0 with check_object_signature()
      object-file API: split up and simplify check_object_signature()
      object API: rename hash_object_file_literally() to write_*()
      object-file API: have hash_object_file() take "enum object_type"
      object-file.c: add a literal version of write_object_file_prepare()
      object-file API: pass an enum to read_object_with_reference()
      test-lib: add GIT_SAN_OPTIONS, inherit [AL]SAN_OPTIONS
      test-lib: correct and assert TEST_DIRECTORY overriding
      test-lib: make $GIT_BUILD_DIR an absolute path
      test-lib: add "fast_unwind_on_malloc=0" to LSAN_OPTIONS
      scalar Makefile: use "The default target of..." pattern
      Makefiles: add "shared.mak", move ".DELETE_ON_ERROR" to it
      Makefile: disable GNU make built-in wildcard rules
      Makefile: define $(LIB_H) in terms of $(FIND_SOURCE_FILES)
      Makefile: move ".SUFFIXES" rule to shared.mak
      Makefile: move $(comma), $(empty) and $(space) to shared.mak
      Makefile: add "$(QUIET)" boilerplate to shared.mak
      Makefiles: add and use wildcard "mkdir -p" template
      log tests: fix "abort tests early" regression in ff37a60c369
      index-pack: fix memory leaks
      merge-base: free() allocated "struct commit **" list
      diff.c: free "buf" in diff_words_flush()
      urlmatch.c: add and use a *_release() function
      remote-curl.c: free memory in cmd_main()
      bundle: call strvec_clear() on allocated strvec
      transport: stop needlessly copying bundle header references
      submodule--helper: fix trivial leak in module_add()
      commit-graph: fix memory leak in misused string_list API
      commit-graph: stop fill_oids_from_packs() progress on error and free()
      lockfile API users: simplify and don't leak "path"
      range-diff: plug memory leak in common invocation
      range-diff: plug memory leak in read_patches()
      repository.c: free the "path cache" in repo_clear()
      submodule tests: test for init and update failure output
      submodule--helper: don't use bitfield indirection for parse_options()
      gettext API users: don't explicitly cast ngettext()'s "n"
      string-list API: change "nr" and "alloc" to "size_t"
      merge: don't run post-hook logic on --no-verify
      hooks: fix an obscure TOCTOU "did we just run a hook?" race
      tests: change some 'test $(git) = "x"' to test_cmp
      tests: use "test_stdout_line_count", not "test $(git [...] | wc -l)"
      read-tree tests: check "diff-files" exit code on failure
      diff tests: don't ignore "git diff" exit code
      diff tests: don't ignore "git diff" exit code in "read" loop
      apply tests: use "test_must_fail" instead of ad-hoc pattern
      merge tests: use "test_must_fail" instead of ad-hoc pattern
      rev-parse tests: don't ignore "git reflog" exit code
      notes tests: don't ignore "git" exit code
      diff tests: don't ignore "git rev-list" exit code
      rev-list tests: don't hide abort() in "test_expect_failure"
      gettext tests: don't ignore "test-tool regex" exit code
      apply tests: don't ignore "git ls-files" exit code, drop sub-shell
      checkout tests: don't ignore "git <cmd>" exit code
      rev-list simplify tests: don't ignore "git" exit code
      list-objects: handle NULL function pointers
      reflog: don't be noisy on empty reflogs
      builtin/submodule--helper.c: rename option struct to "opt"
      test-lib-functions: add and use a "test_hook" wrapper
      hook tests: turn exit code assertions into a loop
      http tests: don't rely on "hook/post-update.sample"
      tests: assume the hooks are disabled by default
      bugreport tests: tighten up "git bugreport -s hooks" test
      fetch+push tests: use "test_hook" and "test_when_finished" pattern
      gc + p4 tests: use "test_hook", remove sub-shells
      tests: change "cat && chmod +x" to use "test_hook"
      tests: change "mkdir -p && write_script" to use "test_hook"
      tests: use "test_hook" for misc "mkdir -p" and "chmod" cases
      diff.c: fix a double-free regression in a18d66cefb
      refs: use designated initializers for "struct ref_storage_be"
      refs: use designated initializers for "struct ref_iterator_vtable"
      misc *.c: use designated initializers for struct assignments
      packed-backend: remove stub BUG(...) functions
      refs debug: add a wrapper for "read_symbolic_ref"
      tests: extend "test_hook" for "rm" and "chmod -x", convert "$HOOK"
      proc-receive hook tests: use "test_hook" instead of "write_script"
      http tests: use "test_hook" for "smart" and "dumb" http tests
      reflog.c: indent argument lists
      reflog: refactor cmd_reflog() to "if" branches
      reflog tests: add missing "git reflog exists" tests
      reflog: move "usage" variables and use macros
      git reflog [expire|delete]: make -h output consistent with SYNOPSIS
      reflog exists: use parse_options() API
      Makefile: use ' ', not non-existing $(wspfx_SQ)
      ls-tree tests: add tests for --name-status
      ls-tree: remove commented-out code
      ls-tree: add missing braces to "else" arms
      ls-tree: use "enum object_type", not {blob,tree,commit}_type
      ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
      ls-tree: introduce struct "show_tree_data"
      ls-tree: introduce "--format" option
      ls-tree: detect and error on --name-only --name-status
      ls-tree: split up "fast path" callbacks
      hooks: fix "invoked hook" regression in a8cc5943338
      reflog: convert to parse_options() API
      reflog [show]: display sensible -h output
      test-lib: have --immediate emit valid TAP on failure
      pack-objects: lazily set up "struct rev_info", don't leak
      reftable: make assignments portable to AIX xlc v12.01
      Documentation/Makefile: fix "make info" regression in dad9cd7d518
      Documentation: add --batch-command to cat-file synopsis
      ls-tree doc: document interaction with submodules


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.36.0-rc2
@ 2022-04-12 17:03  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-04-12 17:03 UTC (permalink / raw)
  To: git; +Cc: git-packagers

A release candidate Git v2.36.0-rc2 is now available for testing at
the usual places.  It is comprised of 673 non-merge commits since
v2.35.2, contributed by 85 people, 25 of which are new faces [*].

It is a day earlier than scheduled; it contains the same fix for
CVE-2022-24765 in the maintenance releases released today.

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.36.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.35.2 are as follows.
Welcome to the Git development community!

  Abhradeep Chakraborty, BRESSAT Jonathan, Chen Bojun,
  COGONI Guillaume, David Cantrell, Des Preston, Hongyi Zhao,
  Jason Yundt, Jayati Shrivastava, Jaydeep Das, Jaydeep P Das,
  Jose Lopes, Justin Donnelly, Kraymer, Liginity Lee, Matheus
  Felipe, Maximilian Reichel, Michael McClimon, Nihal Jere,
  Pedro Martelletto, Robert Coup, Sean Allred, Shaoxuan Yuan,
  Shubham Mishra, and Waleed Khan.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie,
  Atharva Raykar, Bagas Sanjaya, Beat Bolli, brian m. carlson,
  Carlo Marcelo Arenas Belón, Christian Couder, Daniel Hahler,
  Derrick Stolee, Elia Pinto, Elijah Newren, Emily Shaffer,
  Eric Sunshine, Fabian Stelzer, Fangyi Zhou, Glen Choo, Greg
  Hurrell, Han-Wen Nienhuys, Jacob Keller, Jean-Noël Avila, Jeff
  Hostetler, Jeff King, Jerry Zhang, Jessica Clarke, Jiang Xin,
  Joel Holdsworth, Johannes Altmanninger, Johannes Schindelin,
  Johannes Sixt, John Cai, Jonathan Nieder, Jonathan Tan, Josh
  Steadmon, Junio C Hamano, Kevin Willford, Lessley Dennington,
  Marc Strapetz, Martin Ågren, Matt Cooper, Michael J Gruber,
  Neeraj Singh, Patrick Steinhardt, Philip Oakley, Philippe Blain,
  Phillip Wood, Ramkumar Ramachandra, Randall S. Becker, René
  Scharfe, Shourya Shukla, SZEDER Gábor, Tao Klerks, Taylor Blau,
  Teng Long, Thomas Gummerer, Thomas Koutcher, Tilman Vogel,
  Todd Zullinger, 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 2.36 Release Notes (draft)
==============================

Updates since Git 2.35
----------------------

Backward compatibility warts

 * "git name-rev --stdin" has been deprecated and issues a warning
   when used; use "git name-rev --annotate-stdin" instead.

 * "git clone --filter=... --recurse-submodules" only makes the
   top-level a partial clone, while submodules are fully cloned.  This
   behaviour is changed to pass the same filter down to the submodules.


Note to those who build from the source

 * Since Git 2.31, our source assumed that the compiler you use to
   build Git supports variadic macros, with an easy-to-use escape
   hatch to allow compilation without variadic macros with an request
   to report that you had to use the escape hatch to the list.
   Because we haven't heard from anybody who actually needed to use
   the escape hatch, it has been removed, making support of variadic
   macros a hard requirement.


UI, Workflows & Features

 * Assorted updates to "git cat-file", especially "-h".

 * The command line completion (in contrib/) learns to complete
   arguments to give to "git sparse-checkout" command.

 * "git log --remerge-diff" shows the difference from mechanical merge
   result and the result that is actually recorded in a merge commit.

 * "git log" and friends learned an option --exclude-first-parent-only
   to propagate UNINTERESTING bit down only along the first-parent
   chain, just like --first-parent option shows commits that lack the
   UNINTERESTING bit only along the first-parent chain.

 * The command line completion script (in contrib/) learned to
   complete all Git subcommands, including the ones that are normally
   hidden, when GIT_COMPLETION_SHOW_ALL_COMMANDS is used.

 * "git branch" learned the "--recurse-submodules" option.

 * A not-so-common mistake is to write a script to feed "git bisect
   run" without making it executable, in which case all tests will
   exit with 126 or 127 error codes, even on revisions that are marked
   as good.  Try to recognize this situation and stop iteration early.

 * When "index-pack" dies due to incoming data exceeding the maximum
   allowed input size, include the value of the limit in the error
   message.

 * The error message given by "git switch HEAD~4" has been clarified
   to suggest the "--detach" option that is required.

 * In sparse-checkouts, files mis-marked as missing from the working tree
   could lead to later problems.  Such files were hard to discover, and
   harder to correct.  Automatically detecting and correcting the marking
   of such files has been added to avoid these problems.

 * "git cat-file" learns "--batch-command" mode, which is a more
   flexible interface than the existing "--batch" or "--batch-check"
   modes, to allow different kinds of inquiries made.

 * The level of verbose output from the ort backend during inner merge
   has been aligned to that of the recursive backend.

 * "git remote rename A B", depending on the number of remote-tracking
   refs involved, takes long time renaming them.  The command has been
   taught to show progress bar while making the user wait.

 * Bundle file format gets extended to allow a partial bundle,
   filtered by similar criteria you would give when making a
   partial/lazy clone.

 * A new built-in userdiff driver for kotlin has been added.

 * "git repack" learned a new configuration to disable triggering of
   age-old "update-server-info" command, which is rarely useful these
   days.

 * "git stash" does not allow subcommands it internally runs as its
   implementation detail, except for "git reset", to emit messages;
   now "git reset" part has also been squelched.

 * "git ls-tree" learns "--oid-only" option, similar to "--name-only",
   and more generalized "--format" option.

 * "git fetch --refetch" learned to fetch everything without telling
   the other side what we already have, which is useful when you
   cannot trust what you have in the local object store.

 * "git branch" gives hint when branch tracking cannot be established
   because fetch refspecs from multiple remote repositories overlap.

 * "git worktree list --porcelain" did not c-quote pathnames and lock
   reasons with unsafe bytes correctly, which is worked around by
   introducing NUL terminated output format with "-z".


Performance, Internal Implementation, Development Support etc.

 * "git apply" (ab)used the util pointer of the string-list to keep
   track of how each symbolic link needs to be handled, which has been
   simplified by using strset.

 * Fix a hand-rolled alloca() imitation that may have violated
   alignment requirement of data being sorted in compatibility
   implementation of qsort_s() and stable qsort().

 * Use the parse-options API in "git reflog" command.

 * The conditional inclusion mechanism of configuration files using
   "[includeIf <condition>]" learns to base its decision on the
   URL of the remote repository the repository interacts with.
   (merge 399b198489 jt/conditional-config-on-remote-url later to maint).

 * "git name-rev --stdin" does not behave like usual "--stdin" at
   all.  Start the process of renaming it to "--annotate-stdin".
   (merge a2585719b3 jc/name-rev-stdin later to maint).

 * "git update-index", "git checkout-index", and "git clean" are
   taught to work better with the sparse checkout feature.

 * Use an internal call to reset_head() helper function instead of
   spawning "git checkout" in "rebase", and update code paths that are
   involved in the change.

 * Messages "ort" merge backend prepares while dealing with conflicted
   paths were unnecessarily confusing since it did not differentiate
   inner merges and outer merges.

 * Small modernization of the rerere-train script (in contrib/).

 * Use designated initializers we started using in mid 2017 in more
   parts of the codebase that are relatively quiescent.

 * Improve failure case behaviour of xdiff library when memory
   allocation fails.

 * General clean-up in reftable implementation, including
   clarification of the API documentation, tightening the code to
   honor documented length limit, etc.

 * Remove the escape hatch we added when we introduced the weather
   balloon to use variadic macros unconditionally, to make it official
   that we now have a hard dependency on the feature.

 * Makefile refactoring with a bit of suffixes rule stripping to
   optimize the runtime overhead.

 * "git stash drop" is reimplemented as an internal call to
   reflog_delete() function, instead of invoking "git reflog delete"
   via run_command() API.

 * Count string_list items in size_t, not "unsigned int".

 * The single-key interactive operation used by "git add -p" has been
   made more robust.

 * Remove unneeded <meta http-equiv=content-type...> from gitweb
   output.

 * "git name-rev" learned to use the generation numbers when setting
   the lower bound of searching commits used to explain the revision,
   when available, instead of committer time.

 * Replace core.fsyncObjectFiles with two new configuration variables,
   core.fsync and core.fsyncMethod.

 * Updates to refs traditionally weren't fsync'ed, but we can
   configure using core.fsync variable to do so.

 * "git reflog" command now uses parse-options API to parse its
   command line options.


Fixes since v2.35
-----------------

 * "rebase" and "stash" in secondary worktrees are broken in
   Git 2.35.0, which has been corrected.

 * "git pull --rebase" ignored the rebase.autostash configuration
   variable when the remote history is a descendant of our history,
   which has been corrected.
   (merge 3013d98d7a pb/pull-rebase-autostash-fix later to maint).

 * "git update-index --refresh" has been taught to deal better with
   racy timestamps (just like "git status" already does).
   (merge 2ede073fd2 ms/update-index-racy later to maint).

 * Avoid tests that are run under GIT_TRACE2 set from failing
   unnecessarily.
   (merge 944d808e42 js/test-unset-trace2-parents later to maint).

 * The merge-ort misbehaved when merge.renameLimit configuration is
   set too low and failed to find all renames.
   (merge 9ae39fef7f en/merge-ort-restart-optim-fix later to maint).

 * We explain that revs come first before the pathspec among command
   line arguments, but did not spell out that dashed options come
   before other args, which has been corrected.
   (merge c11f95010c tl/doc-cli-options-first later to maint).

 * "git add -p" rewritten in C regressed hunk splitting in some cases,
   which has been corrected.
   (merge 7008ddc645 pw/add-p-hunk-split-fix later to maint).

 * "git fetch --negotiate-only" is an internal command used by "git
   push" to figure out which part of our history is missing from the
   other side.  It should never recurse into submodules even when
   fetch.recursesubmodules configuration variable is set, nor it
   should trigger "gc".  The code has been tightened up to ensure it
   only does common ancestry discovery and nothing else.
   (merge de4eaae63a gc/fetch-negotiate-only-early-return later to maint).

 * The code path that verifies signatures made with ssh were made to
   work better on a system with CRLF line endings.
   (merge caeef01ea7 fs/ssh-signing-crlf later to maint).

 * "git sparse-checkout init" failed to write into $GIT_DIR/info
   directory when the repository was created without one, which has
   been corrected to auto-create it.
   (merge 7f44842ac1 jt/sparse-checkout-leading-dir-fix later to maint).

 * Cloning from a repository that does not yet have any branches or
   tags but has other refs resulted in a "remote transport reported
   error", which has been corrected.
   (merge dccea605b6 jt/clone-not-quite-empty later to maint).

 * Mark in various places in the code that the sparse index and the
   split index features are mutually incompatible.
   (merge 451b66c533 js/sparse-vs-split-index later to maint).

 * Update the logic to compute alignment requirement for our mem-pool.
   (merge e38bcc66d8 jc/mem-pool-alignment later to maint).

 * Pick a better random number generator and use it when we prepare
   temporary filenames.
   (merge 47efda967c bc/csprng-mktemps later to maint).

 * Update the contributor-facing documents on proposed log messages.
   (merge cdba0295b0 jc/doc-log-messages later to maint).

 * When "git fetch --prune" failed to prune the refs it wanted to
   prune, the command issued error messages but exited with exit
   status 0, which has been corrected.
   (merge c9e04d905e tg/fetch-prune-exit-code-fix later to maint).

 * Problems identified by Coverity in the reftable code have been
   corrected.
   (merge 01033de49f hn/reftable-coverity-fixes later to maint).

 * A bug that made multi-pack bitmap and the object order out-of-sync,
   making the .midx data corrupt, has been fixed.
   (merge f8b60cf99b tb/midx-bitmap-corruption-fix later to maint).

 * The build procedure has been taught to notice older version of zlib
   and enable our replacement uncompress2() automatically.
   (merge 07564773c2 ab/auto-detect-zlib-compress2 later to maint).

 * Interaction between fetch.negotiationAlgorithm and
   feature.experimental configuration variables has been corrected.
   (merge 714edc620c en/fetch-negotiation-default-fix later to maint).

 * "git diff --diff-filter=aR" is now parsed correctly.
   (merge 75408ca949 js/diff-filter-negation-fix later to maint).

 * When "git subtree" wants to create a merge, it used "git merge" and
   let it be affected by end-user's "merge.ff" configuration, which
   has been corrected.
   (merge 9158a3564a tk/subtree-merge-not-ff-only later to maint).

 * Unlike "git apply", "git patch-id" did not handle patches with
   hunks that has only 1 line in either preimage or postimage, which
   has been corrected.
   (merge 757e75c81e jz/patch-id-hunk-header-parsing-fix later to maint).

 * "receive-pack" checks if it will do any ref updates (various
   conditions could reject a push) before received objects are taken
   out of the temporary directory used for quarantine purposes, so
   that a push that is known-to-fail will not leave crufts that a
   future "gc" needs to clean up.
   (merge 5407764069 cb/clear-quarantine-early-on-all-ref-update-errors later to maint).

 * Because a deletion of ref would need to remove it from both the
   loose ref store and the packed ref store, a delete-ref operation
   that logically removes one ref may end up invoking ref-transaction
   hook twice, which has been corrected.
   (merge 2ed1b64ebd ps/avoid-unnecessary-hook-invocation-with-packed-refs later to maint).

 * When there is no object to write .bitmap file for, "git
   multi-pack-index" triggered an error, instead of just skipping,
   which has been corrected.
   (merge eb57277ba3 tb/midx-no-bitmap-for-no-objects later to maint).

 * "git cmd -h" outside a repository should error out cleanly for many
   commands, but instead it hit a BUG(), which has been corrected.
   (merge 87ad07d735 js/short-help-outside-repo-fix later to maint).

 * "working tree" and "per-worktree ref" were in glossary, but
   "worktree" itself wasn't, which has been corrected.
   (merge 2df5387ed0 jc/glossary-worktree later to maint).

 * L10n support for a few error messages.
   (merge 3d3c23b3a7 bs/forbid-i18n-of-protocol-token-in-fetch-pack later to maint).

 * Test modernization.
   (merge d4fe066e4b sy/t0001-use-path-is-helper later to maint).

 * "git log --graph --graph" used to leak a graph structure, and there
   was no way to countermand "--graph" that appear earlier on the
   command line.  A "--no-graph" option has been added and resource
   leakage has been plugged.

 * Error output given in response to an ambiguous object name has been
   improved.
   (merge 3a73c1dfaf ab/ambiguous-object-name later to maint).

 * "git sparse-checkout" wants to work with per-worktree configuration,
   but did not work well in a worktree attached to a bare repository.
   (merge 3ce1138272 ds/sparse-checkout-requires-per-worktree-config later to maint).

 * Setting core.untrackedCache to true failed to add the untracked
   cache extension to the index.

 * Workaround we have for versions of PCRE2 before their version 10.36
   were in effect only for their versions newer than 10.36 by mistake,
   which has been corrected.
   (merge 97169fc361 rs/pcre-invalid-utf8-fix-fix later to maint).

 * Document Taylor as a new member of Git PLC at SFC.  Welcome.
   (merge e8d56ca863 tb/coc-plc-update later to maint).

 * "git checkout -b branch/with/multi/level/name && git stash" only
   recorded the last level component of the branch name, which has
   been corrected.

 * "git fetch" can make two separate fetches, but ref updates coming
   from them were in two separate ref transactions under "--atomic",
   which has been corrected.

 * Check the return value from parse_tree_indirect() to turn segfaults
   into calls to die().
   (merge 8d2eaf649a gc/parse-tree-indirect-errors later to maint).

 * Newer version of GPGSM changed its output in a backward
   incompatible way to break our code that parses its output.  It also
   added more processes our tests need to kill when cleaning up.
   Adjustments have been made to accommodate these changes.
   (merge b0b70d54c4 fs/gpgsm-update later to maint).

 * The untracked cache newly computed weren't written back to the
   on-disk index file when there is no other change to the index,
   which has been corrected.

 * "git config -h" did not describe the "--type" option correctly.
   (merge 5445124fad mf/fix-type-in-config-h later to maint).

 * The way generation number v2 in the commit-graph files are
   (not) handled has been corrected.
   (merge 6dbf4b8172 ds/commit-graph-gen-v2-fixes later to maint).

 * The method to trigger malloc check used in our tests no longer work
   with newer versions of glibc.
   (merge baedc59543 ep/test-malloc-check-with-glibc-2.34 later to maint).

 * When "git fetch --recurse-submodules" grabbed submodule commits
   that would be needed to recursively check out newly fetched commits
   in the superproject, it only paid attention to submodules that are
   in the current checkout of the superproject.  We now do so for all
   submodules that have been run "git submodule init" on.

 * "git rebase $base $non_branch_commit", when $base is an ancestor or
   the $non_branch_commit, modified the current branch, which has been
   corrected.

 * When "shallow" information is updated, we forgot to update the
   in-core equivalent, which has been corrected.

 * When creating a loose object file, we didn't report the exact
   filename of the file we failed to fsync, even though the
   information was readily available, which has been corrected.

 * "git am" can read from the standard input when no mailbox is given
   on the command line, but the end-user gets no indication when it
   happens, making Git appear stuck.
   (merge 7b20af6a06 jc/mailsplit-warn-on-tty later to maint).

 * "git mv" failed to refresh the cached stat information for the
   entry it moved.
   (merge b7f9130a06 vd/mv-refresh-stat later to maint).

 * Fix for CVE-2022-24765 has been merged up from 2.35.2 and others.

 * Other code cleanup, docfix, build fix, etc.
   (merge cfc5cf428b jc/find-header later to maint).
   (merge 40e7cfdd46 jh/p4-fix-use-of-process-error-exception later to maint).
   (merge 727e6ea350 jh/p4-spawning-external-commands-cleanup later to maint).
   (merge 0a6adc26e2 rs/grep-expr-cleanup later to maint).
   (merge 4ed7dfa713 po/readme-mention-contributor-hints later to maint).
   (merge 6046f7a91c en/plug-leaks-in-merge later to maint).
   (merge 8c591dbfce bc/clarify-eol-attr later to maint).
   (merge 518e15db74 rs/parse-options-lithelp-help later to maint).
   (merge cbac0076ef gh/doc-typos later to maint).
   (merge ce14de03db ab/no-errno-from-resolve-ref-unsafe later to maint).
   (merge 2826ffad8c rc/negotiate-only-typofix later to maint).
   (merge 0f03f04c5c en/sparse-checkout-leakfix later to maint).
   (merge 74f3390dde sy/diff-usage-typofix later to maint).
   (merge 45d0212a71 ll/doc-mktree-typofix later to maint).
   (merge e9b272e4c1 js/no-more-legacy-stash later to maint).
   (merge 6798b08e84 ab/do-not-hide-failures-in-git-dot-pm later to maint).
   (merge 9325285df4 po/doc-check-ignore-markup-fix later to maint).
   (merge cd26cd6c7c sy/modernize-t-lib-read-tree-m-3way later to maint).
   (merge d17294a05e ab/hash-object-leakfix later to maint).
   (merge b8403129d3 jd/t0015-modernize later to maint).
   (merge 332acc248d ds/mailmap later to maint).
   (merge 04bf052eef ab/grep-patterntype later to maint).
   (merge 6ee36364eb ab/diff-free-more later to maint).
   (merge 63a36017fe nj/read-tree-doc-reffix later to maint).
   (merge eed36fce38 sm/no-git-in-upstream-of-pipe-in-tests later to maint).
   (merge c614beb933 ep/t6423-modernize later to maint).
   (merge 57be9c6dee ab/reflog-prep-fix later to maint).
   (merge 5327d8982a js/in-place-reverse-in-sequencer later to maint).
   (merge 2e2c0be51e dp/worktree-repair-in-usage later to maint).
   (merge 6563706568 jc/coding-guidelines-decl-in-for-loop later to maint).

----------------------------------------------------------------

Changes since v2.35.2 are as follows:

Abhradeep Chakraborty (2):
      amend remaining usage strings according to style guide
      partial-clone: add a partial-clone test case

Adam Dinwoodie (2):
      configure.ac: fix HAVE_SYNC_FILE_RANGE definition
      t9902: split test to run on appropriate systems

Alex Henrie (3):
      log: fix memory leak if --graph is passed multiple times
      log: add a --no-graph option
      switch: mention the --detach option when dying due to lack of a branch

Atharva Raykar (5):
      submodule--helper: get remote names from any repository
      submodule--helper: refactor get_submodule_displaypath()
      submodule--helper: allow setting superprefix for init_submodule()
      submodule--helper: run update using child process struct
      submodule: move core cmd_update() logic to C

Bagas Sanjaya (1):
      fetch-pack: parameterize message containing 'ready' keyword

COGONI Guillaume (3):
      t/t3903-stash.sh: replace test [-d|-f] with test_path_is_*
      tests: allow testing if a path is truly a file or a directory
      tests: make the code more readable

Carlo Marcelo Arenas Belón (1):
      git-compat-util: really support openssl as a source of entropy

Chen Bojun (1):
      receive-pack: purge temporary data if no command is ready to run

David Cantrell (1):
      completion: tab completion of filenames for 'git restore'

Derrick Stolee (45):
      Documentation: add extensions.worktreeConfig details
      worktree: create init_worktree_config()
      config: add repo_config_set_worktree_gently()
      sparse-checkout: set worktree-config correctly
      worktree: copy sparse-checkout patterns and config on add
      config: make git_configset_get_string_tmp() private
      mailmap: change primary address for Derrick Stolee
      dir: force untracked cache with core.untrackedCache
      worktree: combine two translatable messages
      worktree: extract copy_filtered_worktree_config()
      worktree: extract copy_sparse_checkout()
      worktree: extract checkout_worktree()
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      test-read-graph: include extra post-parse info
      t5318: extract helpers to lib-commit-graph.sh
      commit-graph: fix ordering bug in generation numbers
      commit-graph: start parsing generation v2 (again)
      commit-graph: fix generation number v2 overflow values
      commit-graph: declare bankruptcy on GDAT chunks
      index-pack: document and test the --promisor option
      list-objects-filter-options: create copy helper
      revision: put object filter into struct rev_info
      pack-objects: use rev.filter when possible
      pack-bitmap: drop filter in prepare_bitmap_walk()
      list-objects: consolidate traverse_commit_list[_filtered]
      MyFirstObjectWalk: update recommended usage
      bundle: parse filter capability
      rev-list: move --filter parsing into revision.c
      bundle: create filtered bundles
      bundle: unbundle promisor packs
      clone: fail gracefully when cloning filtered bundle
      maintenance: fix synopsis in documentation
      list-objects-filter: remove CL_ARG__FILTER
      pack-objects: move revs out of get_object_list()
      pack-objects: parse --filter directly into revs.filter
      bundle: move capabilities to end of 'verify'
      bundle: output hash information in 'verify'
      t7700: check post-condition in kept-pack test
      test-lib-functions: remove test_subcommand_inexact

Des Preston (1):
      worktree: include repair cmd in usage

Elia Pinto (8):
      test-lib.sh: Use GLIBC_TUNABLES instead of MALLOC_CHECK_ on glibc >= 2.34
      t6423-merge-rename-directories.sh: use the $(...) construct
      attr.c: delete duplicate include
      builtin/gc.c: delete duplicate include
      builtin/sparse-checkout.c: delete duplicate include
      builtin/stash.c: delete duplicate include
      t/helper/test-run-command.c: delete duplicate include
      attr.h: remove duplicate struct definition

Elijah Newren (32):
      t1011: add testcase demonstrating accidental loss of user modifications
      unpack-trees: fix accidental loss of user changes
      repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
      Update documentation related to sparsity and the skip-worktree bit
      Accelerate clear_skip_worktree_from_present_files() by caching
      merge-ort: avoid assuming all renames detected
      merge-ort: fix memory leak in merge_ort_internal()
      merge: fix memory leaks in cmd_merge()
      sparse-checkout: fix a couple minor memory leaks
      repo-settings: fix checking for fetch.negotiationAlgorithm=default
      repo-settings: fix error handling for unknown values
      repo-settings: rename the traditional default fetch.negotiationAlgorithm
      show, log: provide a --remerge-diff capability
      log: clean unneeded objects during `log --remerge-diff`
      ll-merge: make callers responsible for showing warnings
      merge-ort: capture and print ll-merge warnings in our preferred fashion
      merge-ort: mark a few more conflict messages as omittable
      merge-ort: format messages slightly different for use in headers
      diff: add ability to insert additional headers for paths
      show, log: include conflict/warning messages in --remerge-diff headers
      merge-ort: mark conflict/warning messages from inner merges as omittable
      diff-merges: avoid history simplifications when diffing merges
      merge-ort: make informational messages from recursive merges clearer
      sparse-checkout: correct reapply's handling of options
      sparse-checkout: correctly set non-cone mode when expected
      sparse-checkout: pay attention to prefix for {set, add}
      sparse-checkout: error or warn when given individual files
      sparse-checkout: reject arguments in cone-mode that look like patterns
      merge-ort: fix small memory leak in detect_and_process_renames()
      merge-ort: fix small memory leak in unique_path()
      merge-ort: exclude messages from inner merges by default
      repo_read_index: add config to expect files outside sparse patterns

Emily Shaffer (14):
      hook: add 'run' subcommand
      gc: use hook library for pre-auto-gc hook
      am: convert {pre,post}-applypatch to use hook.h
      rebase: convert pre-rebase to use hook.h
      am: convert applypatch-msg to use hook.h
      merge: convert post-merge to use hook.h
      hooks: convert non-worktree 'post-checkout' hook to hook library
      hooks: convert worktree 'post-checkout' hook to hook library
      send-email: use 'git hook run' for 'sendemail-validate'
      git-p4: use 'git hook' to run hooks
      commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
      read-cache: convert post-index-change to use hook.h
      receive-pack: convert push-to-checkout hook to hook.h
      run-command: remove old run_hook_{le,ve}() hook API

Fabian Stelzer (2):
      gpg-interface: trim CR from ssh-keygen
      gpg-interface/gpgsm: fix for v2.3

Fangyi Zhou (1):
      submodule-helper: fix usage string

Glen Choo (39):
      fetch: use goto cleanup in cmd_fetch()
      fetch: skip tasks related to fetching objects
      fetch --negotiate-only: do not update submodules
      branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
      branch: make create_branch() always create a branch
      branch: add a dry_run parameter to create_branch()
      builtin/branch: consolidate action-picking logic in cmd_branch()
      branch: add --recurse-submodules option for branch creation
      branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
      stash: strip "refs/heads/" with skip_prefix
      checkout, clone: die if tree cannot be parsed
      submodule--helper: remove update-module-mode
      submodule--helper: reorganize code for sh to C conversion
      submodule--helper run-update-procedure: remove --suboid
      submodule--helper run-update-procedure: learn --remote
      submodule--helper update-clone: learn --init
      submodule--helper: remove ensure-core-worktree
      submodule update: add tests for --filter
      submodule--helper update-clone: check for --filter and --init
      t5526: introduce test helper to assert on fetches
      t5526: stop asserting on stderr literally
      t5526: create superproject commits with test helper
      submodule: make static functions read submodules from commits
      submodule: inline submodule_commits() into caller
      submodule: store new submodule commits oid_array in a struct
      submodule: extract get_fetch_task()
      submodule: move logic into fetch_task_create()
      submodule update: use die_message()
      submodule--helper: teach update_data more options
      submodule--helper: reduce logic in run_update_procedure()
      submodule--helper: remove forward declaration
      fetch: fetch unpopulated, changed submodules
      submodule: fix latent check_has_commit() bug
      branch: support more tracking modes when recursing
      branch: give submodule updating advice before exit
      branch --set-upstream-to: be consistent when advising
      branch: remove negative exit code
      branch: rework comments for future developers
      branch.c: simplify advice-and-die sequence

Greg Hurrell (2):
      Documentation/config/pgp.txt: replace stray <TAB> character with <SPC>
      Documentation/config/pgp.txt: add missing apostrophe

Han-Wen Nienhuys (27):
      reftable: fix OOB stack write in print functions
      reftable: fix resource leak in block.c error path
      reftable: fix resource leak blocksource.c
      reftable: check reftable_stack_auto_compact() return value
      reftable: ignore remove() return value in stack_test.c
      reftable: fix resource warning
      reftable: all xxx_free() functions accept NULL arguments
      reftable: order unittests by complexity
      reftable: drop stray printf in readwrite_test
      reftable: handle null refnames in reftable_ref_record_equal
      reftable: make reftable-record.h function signatures const correct
      reftable: implement record equality generically
      reftable: remove outdated file reftable.c
      reftable: make reftable_record a tagged union
      reftable: add print functions to the record types
      t1405: explictly delete reflogs for reftable
      t1405: mark test that checks existence as REFFILES
      t5312: prepare for reftable
      t1410: use test-tool ref-store to inspect reflogs
      t1410: mark bufsize boundary test as REFFILES
      Documentation: object_id_len goes up to 31
      reftable: reject 0 object_id_len
      reftable: add a test that verifies that writing empty keys fails
      reftable: avoid writing empty keys at the block layer
      reftable: ensure that obj_id_len is >= 2 on writing
      reftable: add test for length of disambiguating prefix
      reftable: rename writer_stats to reftable_writer_stats

Jacob Keller (1):
      name-rev: use generation numbers if available

Jason Yundt (2):
      comment: fix typo
      gitweb: remove invalid http-equiv="content-type"

Jayati Shrivastava (1):
      sequencer: use reverse_commit_list() helper

Jaydeep Das (1):
      t/t0015-hash.sh: remove unnecessary '\' at line end

Jaydeep P Das (1):
      userdiff: add builtin diff driver for kotlin language.

Jean-Noël Avila (5):
      i18n: factorize more 'incompatible options' messages
      i18n: factorize "invalid value" messages
      i18n: remove from i18n strings that do not hold translatable parts
      i18n: fix some misformated placeholders in command synopsis
      i18n: fix some badly formatted i18n strings

Jeff Hostetler (30):
      fsmonitor: enhance existing comments, clarify trivial response handling
      fsmonitor-ipc: create client routines for git-fsmonitor--daemon
      fsmonitor: config settings are repository-specific
      fsmonitor: use IPC to query the builtin FSMonitor daemon
      fsmonitor: document builtin fsmonitor
      fsmonitor--daemon: add a built-in fsmonitor daemon
      fsmonitor--daemon: implement 'stop' and 'status' commands
      compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
      compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
      fsmonitor--daemon: implement 'run' command
      fsmonitor--daemon: implement 'start' command
      fsmonitor--daemon: add pathname classification
      fsmonitor--daemon: define token-ids
      fsmonitor--daemon: create token-based changed path cache
      compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
      compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent
      compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
      fsmonitor--daemon: implement handle_client callback
      help: include fsmonitor--daemon feature flag in version info
      t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
      t7527: create test for fsmonitor--daemon
      t/perf: avoid copying builtin fsmonitor files into test repo
      t/helper/test-chmtime: skip directories on Windows
      t/perf/p7519: fix coding style
      t/perf/p7519: speed up test on Windows
      t/perf/p7519: add fsmonitor--daemon test cases
      fsmonitor--daemon: periodically truncate list of modified files
      fsmonitor--daemon: use a cookie file to sync with file system
      fsmonitor: force update index after large responses
      t7527: test status with untracked-cache and fsmonitor--daemon

Jerry Zhang (3):
      git-rev-list: add --exclude-first-parent-only flag
      patch-id: fix antipatterns in tests
      patch-id: fix scan_hunk_header on diffs with 1 line of before/after

Jessica Clarke (1):
      mem-pool: don't assume uintmax_t is aligned enough for all types

Joel Holdsworth (4):
      git-p4: don't select shell mode using the type of the command argument
      git-p4: pass command arguments as lists instead of using shell
      git-p4: don't print shell commands as python lists
      git-p4: fix instantiation of CalledProcessError

Johannes Schindelin (14):
      sparse-index: sparse index is disallowed when split index is active
      t1091: disable split index
      split-index: it really is incompatible with the sparse index
      git-sh-setup: remove remnant bits referring to `git-legacy-stash`
      add: remove support for `git-legacy-stash`
      stash: remove documentation for `stash.useBuiltin`
      stash: stop warning about the obsolete `stash.useBuiltin` config setting
      docs(diff): lose incorrect claim about `diff-files --diff-filter=A`
      diff.c: move the diff filter bits definitions up a bit
      diff-filter: be more careful when looking for negative bits
      scalar: accept -C and -c options before the subcommand
      checkout/fetch/pull/pack-objects: allow `-h` outside a repository
      t0012: verify that built-ins handle `-h` even without gitdir
      cocci: allow padding with `strbuf_addf()`

John Cai (15):
      receive-pack.c: consolidate find header logic
      name-rev: deprecate --stdin in favor of --annotate-stdin
      name-rev.c: use strbuf_getline instead of limited size buffer
      builtin/reflog.c: use parse-options api for expire, delete subcommands
      name-rev: replace --stdin with --annotate-stdin in synopsis
      cat-file: rename cmdmode to transform_mode
      cat-file: introduce batch_mode enum to replace print_contents
      cat-file: add remove_timestamp helper
      cat-file: add --batch-command mode
      stash: add tests to ensure reflog --rewrite --updatref behavior
      reflog: libify delete reflog function and helpers
      stash: call reflog_delete() in reflog.c
      cat-file: skip expanding default format
      rebase: use test_commit helper in setup
      rebase: set REF_HEAD_DETACH in checkout_up_to_date()

Jonathan Tan (6):
      config: make git_config_include() static
      config: include file if remote URL matches a glob
      sparse-checkout: create leading directory
      clone: support unusual remote ref configurations
      ls-files: support --recurse-submodules --stage
      shallow: reset commit grafts when shallow is reset

Josh Steadmon (3):
      test-lib: unset trace2 parent envvars
      clone, submodule: pass partial clone filters to submodules
      ls-tree: `-l` should not imply recursive listing

Junio C Hamano (32):
      compat/qsort_s.c: avoid using potentially unaligned access
      fetch: help translators by reusing the same message template
      Start post 2.35 cycle
      SubmittingPatches: write problem statement in the log in the present tense
      CodingGuidelines: hint why we value clearly written log messages
      SubmittingPatches: explain why we care about log messages
      Name the next one 2.36 to prepare for 2.35.1
      The first batch
      The second batch for 2.36
      glossary: describe "worktree"
      The third batch
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      The eighth batch
      rerere-train: two fixes to the use of "git show -s"
      am/apply: warn if we end up reading patches from terminal
      The ninth batch
      The tenth batch
      The eleventh batch
      The twelfth batch
      The thirteenth batch
      The 14th batch
      reset: show --no-refresh in the short-help
      The 15th batch
      The 16th batch
      The 17th batch
      CodingGuidelines: give deadline for "for (int i = 0; ..."
      Git 2.36-rc0
      Git 2.36-rc1
      Git 2.36-rc2

Justin Donnelly (4):
      git-prompt: rename `upstream` to `upstream_type`
      git-prompt: make upstream state indicator location consistent
      git-prompt: make long upstream state indicator consistent
      git-prompt: put upstream comments together

Lessley Dennington (3):
      completion: address sparse-checkout issues
      completion: improve sparse-checkout cone mode directory completion
      completion: handle unusual characters for sparse-checkout

Liginity Lee (1):
      fix typo in git-mktree.txt

Marc Strapetz (4):
      test-lib: introduce API for verifying file mtime
      t7508: fix bogus mtime verification
      t7508: add tests capturing racy timestamp handling
      update-index: refresh should rewrite index in case of racy timestamps

Martin Ågren (1):
      git-ls-tree.txt: fix the name of "%(objectsize:padded)"

Matheus Felipe (1):
      config: correct "--type" option in "git config -h" output

Matt Cooper (1):
      index-pack: clarify the breached limit

Michael J Gruber (2):
      test-lib: declare local variables as local
      tests: demonstrate "show --word-diff --color-moved" regression

Neeraj Singh (10):
      wrapper: make inclusion of Windows csprng header tightly scoped
      core.fsyncmethod: add writeout-only mode
      core.fsync: introduce granular fsync control infrastructure
      core.fsync: add configuration parsing
      core.fsync: new option to harden the index
      core.fsync: documentation and user-friendly aggregate options
      core.fsync: fix incorrect expression for default configuration
      trace2: add stats for fsync operations
      core.fsyncmethod: correctly camel-case warning message
      object-file: pass filename to fsync_or_die

Nihal Jere (1):
      Documentation: git-read-tree: separate links using commas

Patrick Steinhardt (24):
      refs: extract packed_refs_delete_refs() to allow control of transaction
      refs: allow passing flags when beginning transactions
      refs: allow skipping the reference-transaction hook
      refs: demonstrate excessive execution of the reference-transaction hook
      refs: do not execute reference-transaction hook on packing refs
      refs: skip hooks when deleting uncovered packed refs
      fetch-pack: use commit-graph when computing cutoff
      fetch: skip computing output width when not printing anything
      fetch: increase test coverage of fetches
      fetch: backfill tags before setting upstream
      fetch: control lifecycle of FETCH_HEAD in a single place
      fetch: report errors when backfilling tags fails
      refs: add interface to iterate over queued transactional updates
      fetch: make `--atomic` flag cover backfilling of tags
      fetch: make `--atomic` flag cover pruning of refs
      upload-pack: look up "want" lines via commit-graph
      fetch: avoid lookup of commits when not appending to FETCH_HEAD
      refs: add ability for backends to special-case reading of symbolic refs
      remote: read symbolic refs via `refs_read_symbolic_ref()`
      refs/files-backend: optimize reading of symbolic refs
      t5503: simplify setup of test which exercises failure of backfill
      repack: refactor to avoid double-negation of update-server-info
      repack: add config to skip updating server info
      core.fsync: new option to harden references

Philip Oakley (2):
      README.md: add CodingGuidelines and a link for Translators
      doc: check-ignore: code-quote an exclamation mark

Philippe Blain (1):
      pull --rebase: honor rebase.autostash when fast-forwarding

Phillip Wood (29):
      t3701: clean up hunk splitting tests
      builtin add -p: fix hunk splitting
      rebase: factor out checkout for up to date branch
      t5403: refactor rebase post-checkout hook tests
      rebase: pass correct arguments to post-checkout hook
      rebase: do not remove untracked files on checkout
      rebase --apply: don't run post-checkout hook if there is an error
      reset_head(): remove action parameter
      reset_head(): factor out ref updates
      reset_head(): make default_reflog_action optional
      create_autostash(): remove unneeded parameter
      rebase: cleanup reset_head() calls
      reset_head(): take struct rebase_head_opts
      rebase --apply: fix reflog
      rebase --apply: set ORIG_HEAD correctly
      rebase -m: don't fork git checkout
      xdiff: fix a memory leak
      xdiff: handle allocation failure in patience diff
      xdiff: refactor a function
      xdiff: handle allocation failure when merging
      terminal: always reset terminal when reading without echo
      terminal: pop signal handler when terminal is restored
      terminal: set VMIN and VTIME in non-canonical mode
      add -p: disable stdin buffering when interactive.singlekey is set
      terminal: use flags for save_term()
      terminal: don't assume stdin is /dev/tty
      terminal: work around macos poll() bug
      terminal: restore settings on SIGTSTP
      worktree: add -z option for list subcommand

René Scharfe (10):
      grep: use grep_or_expr() in compile_pattern_or()
      grep: use grep_not_expr() in compile_pattern_not()
      apply: use strsets to track symlinks
      stable-qsort: avoid using potentially unaligned access
      bisect--helper: report actual bisect_state() argument on error
      bisect--helper: release strbuf and strvec on run error
      bisect: document run behavior with exit codes 126 and 127
      bisect--helper: double-check run command on exit code 126 and 127
      parse-options: document bracketing of argh
      grep: fix triggering PCRE2_NO_START_OPTIMIZE workaround

Robert Coup (8):
      fetch: fix negotiate-only error message
      fetch-negotiator: add specific noop initializer
      fetch-pack: add refetch
      builtin/fetch-pack: add --refetch option
      fetch: add --refetch option
      t5615-partial-clone: add test for fetch --refetch
      fetch: after refetch, encourage auto gc repacking
      docs: mention --refetch fetch option

SZEDER Gábor (1):
      reflog: fix 'show' subcommand's argv

Shaoxuan Yuan (4):
      builtin/diff.c: fix "git-diff" usage string typo
      t/lib-read-tree-m-3way: modernize style
      t/lib-read-tree-m-3way: indent with tabs
      t0001: replace "test [-d|-f]" with test_path_is_* functions

Shubham Mishra (3):
      t0003: avoid pipes with Git on LHS
      t0001-t0028: avoid pipes with Git on LHS
      t0030-t0050: avoid pipes with Git on LHS

Tao Klerks (6):
      t7519: avoid file to index mtime race for untracked cache
      t7519: populate untracked cache before test
      untracked-cache: write index when populating empty untracked cache
      t/helper/test-chmtime: update mingw to support chmtime on directories
      t7063: mtime-mangling instead of delays in untracked cache testing
      tracking branches: add advice to ambiguous refspec error

Taylor Blau (15):
      grep: extract grep_binexp() from grep_or_expr()
      grep: use grep_and_expr() in compile_pattern_and()
      t5326: demonstrate bitmap corruption after permutation
      midx.c: make changing the preferred pack safe
      pack-revindex.c: instrument loading on-disk reverse index
      t5326: drop unnecessary setup
      t5326: extract `test_rev_exists`
      t5326: move tests to t/lib-bitmap.sh
      t/lib-bitmap.sh: parameterize tests over reverse index source
      midx: read `RIDX` chunk when present
      pack-bitmap.c: gracefully fallback after opening pack/MIDX
      midx: prevent writing a .bitmap without any objects
      CODE_OF_CONDUCT.md: update PLC members list
      builtin/remote.c: parse options in 'rename'
      builtin/remote.c: show progress when renaming remote references

Teng Long (6):
      git-cli.txt: clarify "options first and then args"
      ls-tree: rename "retval" to "recurse" in "show_tree()"
      ls-tree: simplify nesting if/else logic in "show_tree()"
      ls-tree: fix "--name-only" and "--long" combined use bug
      ls-tree: slightly refactor `show_tree()`
      ls-tree: support --object-only option for "git-ls-tree"

Thomas Gummerer (1):
      fetch --prune: exit with error if pruning fails

Thomas Koutcher (1):
      subtree: force merge commit

Todd Zullinger (3):
      t/lib-gpg: reload gpg components after updating trustlist
      t/lib-gpg: kill all gpg components, not just gpg-agent
      doc: replace "--" with {litdd} in credential-cache/fsmonitor

Victoria Dye (30):
      reset: fix validation in sparse index test
      reset: reorder wildcard pathspec conditions
      clean: integrate with sparse index
      checkout-index: expand sparse checkout compatibility tests
      checkout-index: add --ignore-skip-worktree-bits option
      checkout-index: integrate with sparse index
      update-index: add tests for sparse-checkout compatibility
      update-index: integrate with sparse index
      update-index: reduce scope of index expansion in do_reupdate
      sparse-index: prevent repo root from becoming sparse
      status: fix nested sparse directory diff in sparse index
      read-tree: explicitly disallow prefixes with a leading '/'
      read-tree: expand sparse checkout test coverage
      read-tree: integrate with sparse index
      read-tree: narrow scope of index expansion for '--prefix'
      read-tree: make two-way merge sparse-aware
      read-tree: make three-way merge sparse-aware
      reset: revise index refresh advice
      reset: introduce --[no-]refresh option to --mixed
      reset: replace '--quiet' with '--no-refresh' in performance advice
      reset: suppress '--no-refresh' advice if logging is silenced
      stash: make internal resets quiet and refresh index
      t1092: add sparse directory before cone in test repo
      unpack-trees: increment cache_bottom for sparse directories
      Revert "unpack-trees: improve performance of next_cache_entry"
      reset: do not make '--quiet' disable index refresh
      reset: remove 'reset.quiet' config option
      reset: remove 'reset.refresh' config option
      mv: refresh stat info for moved entry
      contrib/scalar: fix 'all' target in Makefile

brian m. carlson (6):
      t0027: add tests for eol without text in .gitattributes
      docs: correct documentation about eol attribute
      wrapper: add a helper to generate numbers from a CSPRNG
      wrapper: use a CSPRNG to generate random file names
      doc: clarify interaction between 'eol' and text=auto
      block-sha1: remove use of obsolete x86 assembly

Ævar Arnfjörð Bjarmason (186):
      cat-file tests: test bad usage
      cat-file tests: test messaging on bad objects/paths
      parse-options API: add a usage_msg_optf()
      cat-file docs: fix SYNOPSIS and "-h" output
      cat-file: move "usage" variable to cmd_cat_file()
      cat-file: make --batch-all-objects a CMDMODE
      cat-file: fix remaining usage bugs
      cat-file: correct and improve usage information
      object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
      cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
      hook API: add a run_hooks() wrapper
      hook API: add a run_hooks_l() wrapper
      git hook run: add an --ignore-missing flag
      cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
      cat-file: s/_/-/ in typo'd usage_msg_optf() message
      compat: auto-detect if zlib has uncompress2()
      sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure
      refs API: remove "failure_errno" from refs_resolve_ref_unsafe()
      object-name tests: add tests for ambiguous object blind spots
      object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
      object-name: explicitly handle bad tags in show_ambiguous_object()
      object-name: make ambiguous object output translatable
      object-name: show date for ambiguous tag objects
      object-name: iterate ambiguous objects before showing header
      object-name: re-use "struct strbuf" in show_ambiguous_object()
      perl Git.pm: don't ignore signalled failure in _cmd_close()
      completion tests: re-source git-completion.bash in a subshell
      completion: add a GIT_COMPLETION_SHOW_ALL_COMMANDS
      leak tests: fix a memory leak in "test-progress" helper
      progress.c test helper: add missing braces
      progress.c tests: make start/stop commands on stdin
      progress.c tests: test some invalid usage
      progress.h: format and be consistent with progress.c naming
      progress.c: use dereferenced "progress" variable, not "(*p_progress)"
      progress.c: refactor stop_progress{,_msg}() to use helpers
      progress API: unify stop_progress{,_msg}(), fix trace2 bug
      pack-bitmap-write.c: don't return without stop_progress()
      t0051: use "skip_all" under !MINGW in single-test file
      hash-object: fix a trivial leak in --path
      ls-remote & transport API: release "struct transport_ls_refs_options"
      grep.h: remove unused "regex_t regexp" from grep_opt
      log tests: check if grep_config() is called by "log"-like cmds
      grep tests: create a helper function for "BRE" or "ERE"
      grep tests: add missing "grep.patternType" config tests
      built-ins: trust the "prefix" from run_builtin()
      grep.c: don't pass along NULL callback value
      grep API: call grep_config() after grep_init()
      grep.h: make "grep_opt.pattern_type_option" use its enum
      grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
      grep: simplify config parsing and option parsing
      cache.h: remove always unused show_date_human() declaration
      date API: create a date.h, split from cache.h
      date API: provide and use a DATE_MODE_INIT
      date API: add basic API docs
      date API: add and use a date_mode_release()
      diff.[ch]: have diff_free() call clear_pathspec(opts.pathspec)
      diff.[ch]: have diff_free() free options->parseopts
      hook tests: test for exact "pre-push" hook input
      hook tests: use a modern style for "pre-push" tests
      git-compat-util.h: clarify GCC v.s. C99-specific in comment
      C99: remove hardcoded-out !HAVE_VARIADIC_MACROS code
      help doc: add missing "]" to "[-a|--all]"
      help.c: use puts() instead of printf{,_ln}() for consistency
      help tests: test "git" and "git help [-a|-g] spacing
      help.c: split up list_all_cmds_help() function
      help: note the option name on option incompatibility
      help: correct usage & behavior of "git help --all"
      help: error if [-a|-g|-c] and [-i|-m|-w] are combined
      help: add --no-[external-commands|aliases] for use with --all
      help: don't print "\n" before single-section output
      imap-send.c: use designated initializers for "struct imap_server_conf"
      trace2: use designated initializers for "struct tr2_tgt"
      trace2: use designated initializers for "struct tr2_dst"
      object-file: use designated initializers for "struct git_hash_algo"
      archive-*.c: use designated initializers for "struct archiver"
      userdiff.c: use designated initializers for "struct userdiff_driver"
      convert.c: use designated initializers for "struct stream_filter*"
      refspec.c: use designated initializers for "struct refspec_item"
      fast-import.c: use designated initializers for "partial" struct assignments
      object-file.c: split up declaration of unrelated variables
      object-file API: return "void", not "int" from hash_object_file()
      object-file API: add a format_object_header() function
      object-file API: have write_object_file() take "enum object_type"
      object API: correct "buf" v.s. "map" mismatch in *.c and *.h
      object API docs: move check_object_signature() docs to cache.h
      object API users + docs: check <0, not !0 with check_object_signature()
      object-file API: split up and simplify check_object_signature()
      object API: rename hash_object_file_literally() to write_*()
      object-file API: have hash_object_file() take "enum object_type"
      object-file.c: add a literal version of write_object_file_prepare()
      object-file API: pass an enum to read_object_with_reference()
      test-lib: add GIT_SAN_OPTIONS, inherit [AL]SAN_OPTIONS
      test-lib: correct and assert TEST_DIRECTORY overriding
      test-lib: make $GIT_BUILD_DIR an absolute path
      test-lib: add "fast_unwind_on_malloc=0" to LSAN_OPTIONS
      scalar Makefile: use "The default target of..." pattern
      Makefiles: add "shared.mak", move ".DELETE_ON_ERROR" to it
      Makefile: disable GNU make built-in wildcard rules
      Makefile: define $(LIB_H) in terms of $(FIND_SOURCE_FILES)
      Makefile: move ".SUFFIXES" rule to shared.mak
      Makefile: move $(comma), $(empty) and $(space) to shared.mak
      Makefile: add "$(QUIET)" boilerplate to shared.mak
      Makefiles: add and use wildcard "mkdir -p" template
      log tests: fix "abort tests early" regression in ff37a60c369
      index-pack: fix memory leaks
      merge-base: free() allocated "struct commit **" list
      diff.c: free "buf" in diff_words_flush()
      urlmatch.c: add and use a *_release() function
      remote-curl.c: free memory in cmd_main()
      bundle: call strvec_clear() on allocated strvec
      transport: stop needlessly copying bundle header references
      submodule--helper: fix trivial leak in module_add()
      commit-graph: fix memory leak in misused string_list API
      commit-graph: stop fill_oids_from_packs() progress on error and free()
      lockfile API users: simplify and don't leak "path"
      range-diff: plug memory leak in common invocation
      range-diff: plug memory leak in read_patches()
      repository.c: free the "path cache" in repo_clear()
      submodule tests: test for init and update failure output
      submodule--helper: don't use bitfield indirection for parse_options()
      gettext API users: don't explicitly cast ngettext()'s "n"
      string-list API: change "nr" and "alloc" to "size_t"
      merge: don't run post-hook logic on --no-verify
      hooks: fix an obscure TOCTOU "did we just run a hook?" race
      tests: change some 'test $(git) = "x"' to test_cmp
      tests: use "test_stdout_line_count", not "test $(git [...] | wc -l)"
      read-tree tests: check "diff-files" exit code on failure
      diff tests: don't ignore "git diff" exit code
      diff tests: don't ignore "git diff" exit code in "read" loop
      apply tests: use "test_must_fail" instead of ad-hoc pattern
      merge tests: use "test_must_fail" instead of ad-hoc pattern
      rev-parse tests: don't ignore "git reflog" exit code
      notes tests: don't ignore "git" exit code
      diff tests: don't ignore "git rev-list" exit code
      rev-list tests: don't hide abort() in "test_expect_failure"
      gettext tests: don't ignore "test-tool regex" exit code
      apply tests: don't ignore "git ls-files" exit code, drop sub-shell
      checkout tests: don't ignore "git <cmd>" exit code
      rev-list simplify tests: don't ignore "git" exit code
      list-objects: handle NULL function pointers
      reflog: don't be noisy on empty reflogs
      builtin/submodule--helper.c: rename option struct to "opt"
      test-lib-functions: add and use a "test_hook" wrapper
      hook tests: turn exit code assertions into a loop
      http tests: don't rely on "hook/post-update.sample"
      tests: assume the hooks are disabled by default
      bugreport tests: tighten up "git bugreport -s hooks" test
      fetch+push tests: use "test_hook" and "test_when_finished" pattern
      gc + p4 tests: use "test_hook", remove sub-shells
      tests: change "cat && chmod +x" to use "test_hook"
      tests: change "mkdir -p && write_script" to use "test_hook"
      tests: use "test_hook" for misc "mkdir -p" and "chmod" cases
      diff.c: fix a double-free regression in a18d66cefb
      refs: use designated initializers for "struct ref_storage_be"
      refs: use designated initializers for "struct ref_iterator_vtable"
      misc *.c: use designated initializers for struct assignments
      packed-backend: remove stub BUG(...) functions
      refs debug: add a wrapper for "read_symbolic_ref"
      tests: extend "test_hook" for "rm" and "chmod -x", convert "$HOOK"
      proc-receive hook tests: use "test_hook" instead of "write_script"
      http tests: use "test_hook" for "smart" and "dumb" http tests
      reflog.c: indent argument lists
      reflog: refactor cmd_reflog() to "if" branches
      reflog tests: add missing "git reflog exists" tests
      reflog: move "usage" variables and use macros
      git reflog [expire|delete]: make -h output consistent with SYNOPSIS
      reflog exists: use parse_options() API
      Makefile: use ' ', not non-existing $(wspfx_SQ)
      ls-tree tests: add tests for --name-status
      ls-tree: remove commented-out code
      ls-tree: add missing braces to "else" arms
      ls-tree: use "enum object_type", not {blob,tree,commit}_type
      ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
      ls-tree: introduce struct "show_tree_data"
      ls-tree: introduce "--format" option
      ls-tree: detect and error on --name-only --name-status
      ls-tree: split up "fast path" callbacks
      hooks: fix "invoked hook" regression in a8cc5943338
      reflog: convert to parse_options() API
      reflog [show]: display sensible -h output
      test-lib: have --immediate emit valid TAP on failure
      pack-objects: lazily set up "struct rev_info", don't leak
      reftable: make assignments portable to AIX xlc v12.01
      Documentation/Makefile: fix "make info" regression in dad9cd7d518
      Documentation: add --batch-command to cat-file synopsis
      ls-tree doc: document interaction with submodules



^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.36.0-rc1
@ 2022-04-08 23:30  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-04-08 23:30 UTC (permalink / raw)
  To: git; +Cc: git-packagers

A release candidate Git v2.36.0-rc1 is now available for testing at
the usual places.  It is comprised of 673 non-merge commits since
v2.35.0, contributed by 85 people, 25 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.36.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.35.0 are as follows.
Welcome to the Git development community!

  Abhradeep Chakraborty, BRESSAT Jonathan, Chen Bojun,
  COGONI Guillaume, David Cantrell, Des Preston, Hongyi Zhao,
  Jason Yundt, Jayati Shrivastava, Jaydeep Das, Jaydeep P Das,
  Jose Lopes, Justin Donnelly, Kraymer, Liginity Lee, Matheus
  Felipe, Maximilian Reichel, Michael McClimon, Nihal Jere,
  Pedro Martelletto, Robert Coup, Sean Allred, Shaoxuan Yuan,
  Shubham Mishra, and Waleed Khan.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie,
  Atharva Raykar, Bagas Sanjaya, Beat Bolli, brian m. carlson,
  Carlo Marcelo Arenas Belón, Christian Couder, Daniel Hahler,
  Derrick Stolee, Elia Pinto, Elijah Newren, Emily Shaffer,
  Eric Sunshine, Fabian Stelzer, Fangyi Zhou, Glen Choo, Greg
  Hurrell, Han-Wen Nienhuys, Jacob Keller, Jean-Noël Avila, Jeff
  Hostetler, Jeff King, Jerry Zhang, Jessica Clarke, Jiang Xin,
  Joel Holdsworth, Johannes Altmanninger, Johannes Schindelin,
  Johannes Sixt, John Cai, Jonathan Nieder, Jonathan Tan, Josh
  Steadmon, Junio C Hamano, Kevin Willford, Lessley Dennington,
  Marc Strapetz, Martin Ågren, Matt Cooper, Michael J Gruber,
  Neeraj Singh, Patrick Steinhardt, Philip Oakley, Philippe Blain,
  Phillip Wood, Ramkumar Ramachandra, Randall S. Becker, René
  Scharfe, Shourya Shukla, SZEDER Gábor, Tao Klerks, Taylor Blau,
  Teng Long, Thomas Gummerer, Thomas Koutcher, Tilman Vogel,
  Todd Zullinger, 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 2.36 Release Notes (draft)
==============================

Updates since Git 2.35
----------------------

Backward compatibility warts

 * "git name-rev --stdin" has been deprecated and issues a warning
   when used; use "git name-rev --annotate-stdin" instead.

 * "git clone --filter=... --recurse-submodules" only makes the
   top-level a partial clone, while submodules are fully cloned.  This
   behaviour is changed to pass the same filter down to the submodules.


Note to those who build from the source

 * Since Git 2.31, our source assumed that the compiler you use to
   build Git supports variadic macros, with an easy-to-use escape
   hatch to allow compilation without variadic macros with an request
   to report that you had to use the escape hatch to the list.
   Because we haven't heard from anybody who actually needed to use
   the escape hatch, it has been removed, making support of variadic
   macros a hard requirement.


UI, Workflows & Features

 * Assorted updates to "git cat-file", especially "-h".

 * The command line completion (in contrib/) learns to complete
   arguments to give to "git sparse-checkout" command.

 * "git log --remerge-diff" shows the difference from mechanical merge
   result and the result that is actually recorded in a merge commit.

 * "git log" and friends learned an option --exclude-first-parent-only
   to propagate UNINTERESTING bit down only along the first-parent
   chain, just like --first-parent option shows commits that lack the
   UNINTERESTING bit only along the first-parent chain.

 * The command line completion script (in contrib/) learned to
   complete all Git subcommands, including the ones that are normally
   hidden, when GIT_COMPLETION_SHOW_ALL_COMMANDS is used.

 * "git branch" learned the "--recurse-submodules" option.

 * A not-so-common mistake is to write a script to feed "git bisect
   run" without making it executable, in which case all tests will
   exit with 126 or 127 error codes, even on revisions that are marked
   as good.  Try to recognize this situation and stop iteration early.

 * When "index-pack" dies due to incoming data exceeding the maximum
   allowed input size, include the value of the limit in the error
   message.

 * The error message given by "git switch HEAD~4" has been clarified
   to suggest the "--detach" option that is required.

 * In sparse-checkouts, files mis-marked as missing from the working tree
   could lead to later problems.  Such files were hard to discover, and
   harder to correct.  Automatically detecting and correcting the marking
   of such files has been added to avoid these problems.

 * "git cat-file" learns "--batch-command" mode, which is a more
   flexible interface than the existing "--batch" or "--batch-check"
   modes, to allow different kinds of inquiries made.

 * The level of verbose output from the ort backend during inner merge
   has been aligned to that of the recursive backend.

 * "git remote rename A B", depending on the number of remote-tracking
   refs involved, takes long time renaming them.  The command has been
   taught to show progress bar while making the user wait.

 * Bundle file format gets extended to allow a partial bundle,
   filtered by similar criteria you would give when making a
   partial/lazy clone.

 * A new built-in userdiff driver for kotlin has been added.

 * "git repack" learned a new configuration to disable triggering of
   age-old "update-server-info" command, which is rarely useful these
   days.

 * "git stash" does not allow subcommands it internally runs as its
   implementation detail, except for "git reset", to emit messages;
   now "git reset" part has also been squelched.

 * "git ls-tree" learns "--oid-only" option, similar to "--name-only",
   and more generalized "--format" option.

 * "git fetch --refetch" learned to fetch everything without telling
   the other side what we already have, which is useful when you
   cannot trust what you have in the local object store.

 * "git branch" gives hint when branch tracking cannot be established
   because fetch refspecs from multiple remote repositories overlap.

 * "git worktree list --porcelain" did not c-quote pathnames and lock
   reasons with unsafe bytes correctly, which is worked around by
   introducing NUL terminated output format with "-z".


Performance, Internal Implementation, Development Support etc.

 * "git apply" (ab)used the util pointer of the string-list to keep
   track of how each symbolic link needs to be handled, which has been
   simplified by using strset.

 * Fix a hand-rolled alloca() imitation that may have violated
   alignment requirement of data being sorted in compatibility
   implementation of qsort_s() and stable qsort().

 * Use the parse-options API in "git reflog" command.

 * The conditional inclusion mechanism of configuration files using
   "[includeIf <condition>]" learns to base its decision on the
   URL of the remote repository the repository interacts with.
   (merge 399b198489 jt/conditional-config-on-remote-url later to maint).

 * "git name-rev --stdin" does not behave like usual "--stdin" at
   all.  Start the process of renaming it to "--annotate-stdin".
   (merge a2585719b3 jc/name-rev-stdin later to maint).

 * "git update-index", "git checkout-index", and "git clean" are
   taught to work better with the sparse checkout feature.

 * Use an internal call to reset_head() helper function instead of
   spawning "git checkout" in "rebase", and update code paths that are
   involved in the change.

 * Messages "ort" merge backend prepares while dealing with conflicted
   paths were unnecessarily confusing since it did not differentiate
   inner merges and outer merges.

 * Small modernization of the rerere-train script (in contrib/).

 * Use designated initializers we started using in mid 2017 in more
   parts of the codebase that are relatively quiescent.

 * Improve failure case behaviour of xdiff library when memory
   allocation fails.

 * General clean-up in reftable implementation, including
   clarification of the API documentation, tightening the code to
   honor documented length limit, etc.

 * Remove the escape hatch we added when we introduced the weather
   balloon to use variadic macros unconditionally, to make it official
   that we now have a hard dependency on the feature.

 * Makefile refactoring with a bit of suffixes rule stripping to
   optimize the runtime overhead.

 * "git stash drop" is reimplemented as an internal call to
   reflog_delete() function, instead of invoking "git reflog delete"
   via run_command() API.

 * Count string_list items in size_t, not "unsigned int".

 * The single-key interactive operation used by "git add -p" has been
   made more robust.

 * Remove unneeded <meta http-equiv=content-type...> from gitweb
   output.

 * "git name-rev" learned to use the generation numbers when setting
   the lower bound of searching commits used to explain the revision,
   when available, instead of committer time.

 * Replace core.fsyncObjectFiles with two new configuration variables,
   core.fsync and core.fsyncMethod.

 * Updates to refs traditionally weren't fsync'ed, but we can
   configure using core.fsync variable to do so.

 * "git reflog" command now uses parse-options API to parse its
   command line options.


Fixes since v2.35
-----------------

 * "rebase" and "stash" in secondary worktrees are broken in
   Git 2.35.0, which has been corrected.

 * "git pull --rebase" ignored the rebase.autostash configuration
   variable when the remote history is a descendant of our history,
   which has been corrected.
   (merge 3013d98d7a pb/pull-rebase-autostash-fix later to maint).

 * "git update-index --refresh" has been taught to deal better with
   racy timestamps (just like "git status" already does).
   (merge 2ede073fd2 ms/update-index-racy later to maint).

 * Avoid tests that are run under GIT_TRACE2 set from failing
   unnecessarily.
   (merge 944d808e42 js/test-unset-trace2-parents later to maint).

 * The merge-ort misbehaved when merge.renameLimit configuration is
   set too low and failed to find all renames.
   (merge 9ae39fef7f en/merge-ort-restart-optim-fix later to maint).

 * We explain that revs come first before the pathspec among command
   line arguments, but did not spell out that dashed options come
   before other args, which has been corrected.
   (merge c11f95010c tl/doc-cli-options-first later to maint).

 * "git add -p" rewritten in C regressed hunk splitting in some cases,
   which has been corrected.
   (merge 7008ddc645 pw/add-p-hunk-split-fix later to maint).

 * "git fetch --negotiate-only" is an internal command used by "git
   push" to figure out which part of our history is missing from the
   other side.  It should never recurse into submodules even when
   fetch.recursesubmodules configuration variable is set, nor it
   should trigger "gc".  The code has been tightened up to ensure it
   only does common ancestry discovery and nothing else.
   (merge de4eaae63a gc/fetch-negotiate-only-early-return later to maint).

 * The code path that verifies signatures made with ssh were made to
   work better on a system with CRLF line endings.
   (merge caeef01ea7 fs/ssh-signing-crlf later to maint).

 * "git sparse-checkout init" failed to write into $GIT_DIR/info
   directory when the repository was created without one, which has
   been corrected to auto-create it.
   (merge 7f44842ac1 jt/sparse-checkout-leading-dir-fix later to maint).

 * Cloning from a repository that does not yet have any branches or
   tags but has other refs resulted in a "remote transport reported
   error", which has been corrected.
   (merge dccea605b6 jt/clone-not-quite-empty later to maint).

 * Mark in various places in the code that the sparse index and the
   split index features are mutually incompatible.
   (merge 451b66c533 js/sparse-vs-split-index later to maint).

 * Update the logic to compute alignment requirement for our mem-pool.
   (merge e38bcc66d8 jc/mem-pool-alignment later to maint).

 * Pick a better random number generator and use it when we prepare
   temporary filenames.
   (merge 47efda967c bc/csprng-mktemps later to maint).

 * Update the contributor-facing documents on proposed log messages.
   (merge cdba0295b0 jc/doc-log-messages later to maint).

 * When "git fetch --prune" failed to prune the refs it wanted to
   prune, the command issued error messages but exited with exit
   status 0, which has been corrected.
   (merge c9e04d905e tg/fetch-prune-exit-code-fix later to maint).

 * Problems identified by Coverity in the reftable code have been
   corrected.
   (merge 01033de49f hn/reftable-coverity-fixes later to maint).

 * A bug that made multi-pack bitmap and the object order out-of-sync,
   making the .midx data corrupt, has been fixed.
   (merge f8b60cf99b tb/midx-bitmap-corruption-fix later to maint).

 * The build procedure has been taught to notice older version of zlib
   and enable our replacement uncompress2() automatically.
   (merge 07564773c2 ab/auto-detect-zlib-compress2 later to maint).

 * Interaction between fetch.negotiationAlgorithm and
   feature.experimental configuration variables has been corrected.
   (merge 714edc620c en/fetch-negotiation-default-fix later to maint).

 * "git diff --diff-filter=aR" is now parsed correctly.
   (merge 75408ca949 js/diff-filter-negation-fix later to maint).

 * When "git subtree" wants to create a merge, it used "git merge" and
   let it be affected by end-user's "merge.ff" configuration, which
   has been corrected.
   (merge 9158a3564a tk/subtree-merge-not-ff-only later to maint).

 * Unlike "git apply", "git patch-id" did not handle patches with
   hunks that has only 1 line in either preimage or postimage, which
   has been corrected.
   (merge 757e75c81e jz/patch-id-hunk-header-parsing-fix later to maint).

 * "receive-pack" checks if it will do any ref updates (various
   conditions could reject a push) before received objects are taken
   out of the temporary directory used for quarantine purposes, so
   that a push that is known-to-fail will not leave crufts that a
   future "gc" needs to clean up.
   (merge 5407764069 cb/clear-quarantine-early-on-all-ref-update-errors later to maint).

 * Because a deletion of ref would need to remove it from both the
   loose ref store and the packed ref store, a delete-ref operation
   that logically removes one ref may end up invoking ref-transaction
   hook twice, which has been corrected.
   (merge 2ed1b64ebd ps/avoid-unnecessary-hook-invocation-with-packed-refs later to maint).

 * When there is no object to write .bitmap file for, "git
   multi-pack-index" triggered an error, instead of just skipping,
   which has been corrected.
   (merge eb57277ba3 tb/midx-no-bitmap-for-no-objects later to maint).

 * "git cmd -h" outside a repository should error out cleanly for many
   commands, but instead it hit a BUG(), which has been corrected.
   (merge 87ad07d735 js/short-help-outside-repo-fix later to maint).

 * "working tree" and "per-worktree ref" were in glossary, but
   "worktree" itself wasn't, which has been corrected.
   (merge 2df5387ed0 jc/glossary-worktree later to maint).

 * L10n support for a few error messages.
   (merge 3d3c23b3a7 bs/forbid-i18n-of-protocol-token-in-fetch-pack later to maint).

 * Test modernization.
   (merge d4fe066e4b sy/t0001-use-path-is-helper later to maint).

 * "git log --graph --graph" used to leak a graph structure, and there
   was no way to countermand "--graph" that appear earlier on the
   command line.  A "--no-graph" option has been added and resource
   leakage has been plugged.

 * Error output given in response to an ambiguous object name has been
   improved.
   (merge 3a73c1dfaf ab/ambiguous-object-name later to maint).

 * "git sparse-checkout" wants to work with per-worktree configuration,
   but did not work well in a worktree attached to a bare repository.
   (merge 3ce1138272 ds/sparse-checkout-requires-per-worktree-config later to maint).

 * Setting core.untrackedCache to true failed to add the untracked
   cache extension to the index.

 * Workaround we have for versions of PCRE2 before their version 10.36
   were in effect only for their versions newer than 10.36 by mistake,
   which has been corrected.
   (merge 97169fc361 rs/pcre-invalid-utf8-fix-fix later to maint).

 * Document Taylor as a new member of Git PLC at SFC.  Welcome.
   (merge e8d56ca863 tb/coc-plc-update later to maint).

 * "git checkout -b branch/with/multi/level/name && git stash" only
   recorded the last level component of the branch name, which has
   been corrected.

 * "git fetch" can make two separate fetches, but ref updates coming
   from them were in two separate ref transactions under "--atomic",
   which has been corrected.

 * Check the return value from parse_tree_indirect() to turn segfaults
   into calls to die().
   (merge 8d2eaf649a gc/parse-tree-indirect-errors later to maint).

 * Newer version of GPGSM changed its output in a backward
   incompatible way to break our code that parses its output.  It also
   added more processes our tests need to kill when cleaning up.
   Adjustments have been made to accommodate these changes.
   (merge b0b70d54c4 fs/gpgsm-update later to maint).

 * The untracked cache newly computed weren't written back to the
   on-disk index file when there is no other change to the index,
   which has been corrected.

 * "git config -h" did not describe the "--type" option correctly.
   (merge 5445124fad mf/fix-type-in-config-h later to maint).

 * The way generation number v2 in the commit-graph files are
   (not) handled has been corrected.
   (merge 6dbf4b8172 ds/commit-graph-gen-v2-fixes later to maint).

 * The method to trigger malloc check used in our tests no longer work
   with newer versions of glibc.
   (merge baedc59543 ep/test-malloc-check-with-glibc-2.34 later to maint).

 * When "git fetch --recurse-submodules" grabbed submodule commits
   that would be needed to recursively check out newly fetched commits
   in the superproject, it only paid attention to submodules that are
   in the current checkout of the superproject.  We now do so for all
   submodules that have been run "git submodule init" on.

 * "git rebase $base $non_branch_commit", when $base is an ancestor or
   the $non_branch_commit, modified the current branch, which has been
   corrected.

 * When "shallow" information is updated, we forgot to update the
   in-core equivalent, which has been corrected.

 * When creating a loose object file, we didn't report the exact
   filename of the file we failed to fsync, even though the
   information was readily available, which has been corrected.

 * "git am" can read from the standard input when no mailbox is given
   on the command line, but the end-user gets no indication when it
   happens, making Git appear stuck.
   (merge 7b20af6a06 jc/mailsplit-warn-on-tty later to maint).

 * "git mv" failed to refresh the cached stat information for the
   entry it moved.
   (merge b7f9130a06 vd/mv-refresh-stat later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge cfc5cf428b jc/find-header later to maint).
   (merge 40e7cfdd46 jh/p4-fix-use-of-process-error-exception later to maint).
   (merge 727e6ea350 jh/p4-spawning-external-commands-cleanup later to maint).
   (merge 0a6adc26e2 rs/grep-expr-cleanup later to maint).
   (merge 4ed7dfa713 po/readme-mention-contributor-hints later to maint).
   (merge 6046f7a91c en/plug-leaks-in-merge later to maint).
   (merge 8c591dbfce bc/clarify-eol-attr later to maint).
   (merge 518e15db74 rs/parse-options-lithelp-help later to maint).
   (merge cbac0076ef gh/doc-typos later to maint).
   (merge ce14de03db ab/no-errno-from-resolve-ref-unsafe later to maint).
   (merge 2826ffad8c rc/negotiate-only-typofix later to maint).
   (merge 0f03f04c5c en/sparse-checkout-leakfix later to maint).
   (merge 74f3390dde sy/diff-usage-typofix later to maint).
   (merge 45d0212a71 ll/doc-mktree-typofix later to maint).
   (merge e9b272e4c1 js/no-more-legacy-stash later to maint).
   (merge 6798b08e84 ab/do-not-hide-failures-in-git-dot-pm later to maint).
   (merge 9325285df4 po/doc-check-ignore-markup-fix later to maint).
   (merge cd26cd6c7c sy/modernize-t-lib-read-tree-m-3way later to maint).
   (merge d17294a05e ab/hash-object-leakfix later to maint).
   (merge b8403129d3 jd/t0015-modernize later to maint).
   (merge 332acc248d ds/mailmap later to maint).
   (merge 04bf052eef ab/grep-patterntype later to maint).
   (merge 6ee36364eb ab/diff-free-more later to maint).
   (merge 63a36017fe nj/read-tree-doc-reffix later to maint).
   (merge eed36fce38 sm/no-git-in-upstream-of-pipe-in-tests later to maint).
   (merge c614beb933 ep/t6423-modernize later to maint).
   (merge 57be9c6dee ab/reflog-prep-fix later to maint).
   (merge 5327d8982a js/in-place-reverse-in-sequencer later to maint).
   (merge 2e2c0be51e dp/worktree-repair-in-usage later to maint).
   (merge 6563706568 jc/coding-guidelines-decl-in-for-loop later to maint).

----------------------------------------------------------------

Changes since v2.35.0 are as follows:

Abhradeep Chakraborty (2):
      amend remaining usage strings according to style guide
      partial-clone: add a partial-clone test case

Adam Dinwoodie (2):
      configure.ac: fix HAVE_SYNC_FILE_RANGE definition
      t9902: split test to run on appropriate systems

Alex Henrie (3):
      log: fix memory leak if --graph is passed multiple times
      log: add a --no-graph option
      switch: mention the --detach option when dying due to lack of a branch

Atharva Raykar (5):
      submodule--helper: get remote names from any repository
      submodule--helper: refactor get_submodule_displaypath()
      submodule--helper: allow setting superprefix for init_submodule()
      submodule--helper: run update using child process struct
      submodule: move core cmd_update() logic to C

Bagas Sanjaya (1):
      fetch-pack: parameterize message containing 'ready' keyword

COGONI Guillaume (3):
      t/t3903-stash.sh: replace test [-d|-f] with test_path_is_*
      tests: allow testing if a path is truly a file or a directory
      tests: make the code more readable

Carlo Marcelo Arenas Belón (1):
      git-compat-util: really support openssl as a source of entropy

Chen Bojun (1):
      receive-pack: purge temporary data if no command is ready to run

David Cantrell (1):
      completion: tab completion of filenames for 'git restore'

Derrick Stolee (45):
      Documentation: add extensions.worktreeConfig details
      worktree: create init_worktree_config()
      config: add repo_config_set_worktree_gently()
      sparse-checkout: set worktree-config correctly
      worktree: copy sparse-checkout patterns and config on add
      config: make git_configset_get_string_tmp() private
      mailmap: change primary address for Derrick Stolee
      dir: force untracked cache with core.untrackedCache
      worktree: combine two translatable messages
      worktree: extract copy_filtered_worktree_config()
      worktree: extract copy_sparse_checkout()
      worktree: extract checkout_worktree()
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      test-read-graph: include extra post-parse info
      t5318: extract helpers to lib-commit-graph.sh
      commit-graph: fix ordering bug in generation numbers
      commit-graph: start parsing generation v2 (again)
      commit-graph: fix generation number v2 overflow values
      commit-graph: declare bankruptcy on GDAT chunks
      index-pack: document and test the --promisor option
      list-objects-filter-options: create copy helper
      revision: put object filter into struct rev_info
      pack-objects: use rev.filter when possible
      pack-bitmap: drop filter in prepare_bitmap_walk()
      list-objects: consolidate traverse_commit_list[_filtered]
      MyFirstObjectWalk: update recommended usage
      bundle: parse filter capability
      rev-list: move --filter parsing into revision.c
      bundle: create filtered bundles
      bundle: unbundle promisor packs
      clone: fail gracefully when cloning filtered bundle
      maintenance: fix synopsis in documentation
      list-objects-filter: remove CL_ARG__FILTER
      pack-objects: move revs out of get_object_list()
      pack-objects: parse --filter directly into revs.filter
      bundle: move capabilities to end of 'verify'
      bundle: output hash information in 'verify'
      t7700: check post-condition in kept-pack test
      test-lib-functions: remove test_subcommand_inexact

Des Preston (1):
      worktree: include repair cmd in usage

Elia Pinto (8):
      test-lib.sh: Use GLIBC_TUNABLES instead of MALLOC_CHECK_ on glibc >= 2.34
      t6423-merge-rename-directories.sh: use the $(...) construct
      attr.c: delete duplicate include
      builtin/gc.c: delete duplicate include
      builtin/sparse-checkout.c: delete duplicate include
      builtin/stash.c: delete duplicate include
      t/helper/test-run-command.c: delete duplicate include
      attr.h: remove duplicate struct definition

Elijah Newren (33):
      t1011: add testcase demonstrating accidental loss of user modifications
      unpack-trees: fix accidental loss of user changes
      repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
      Update documentation related to sparsity and the skip-worktree bit
      Accelerate clear_skip_worktree_from_present_files() by caching
      merge-ort: avoid assuming all renames detected
      merge-ort: fix memory leak in merge_ort_internal()
      merge: fix memory leaks in cmd_merge()
      sequencer, stash: fix running from worktree subdir
      sparse-checkout: fix a couple minor memory leaks
      repo-settings: fix checking for fetch.negotiationAlgorithm=default
      repo-settings: fix error handling for unknown values
      repo-settings: rename the traditional default fetch.negotiationAlgorithm
      show, log: provide a --remerge-diff capability
      log: clean unneeded objects during `log --remerge-diff`
      ll-merge: make callers responsible for showing warnings
      merge-ort: capture and print ll-merge warnings in our preferred fashion
      merge-ort: mark a few more conflict messages as omittable
      merge-ort: format messages slightly different for use in headers
      diff: add ability to insert additional headers for paths
      show, log: include conflict/warning messages in --remerge-diff headers
      merge-ort: mark conflict/warning messages from inner merges as omittable
      diff-merges: avoid history simplifications when diffing merges
      merge-ort: make informational messages from recursive merges clearer
      sparse-checkout: correct reapply's handling of options
      sparse-checkout: correctly set non-cone mode when expected
      sparse-checkout: pay attention to prefix for {set, add}
      sparse-checkout: error or warn when given individual files
      sparse-checkout: reject arguments in cone-mode that look like patterns
      merge-ort: fix small memory leak in detect_and_process_renames()
      merge-ort: fix small memory leak in unique_path()
      merge-ort: exclude messages from inner merges by default
      repo_read_index: add config to expect files outside sparse patterns

Emily Shaffer (14):
      hook: add 'run' subcommand
      gc: use hook library for pre-auto-gc hook
      am: convert {pre,post}-applypatch to use hook.h
      rebase: convert pre-rebase to use hook.h
      am: convert applypatch-msg to use hook.h
      merge: convert post-merge to use hook.h
      hooks: convert non-worktree 'post-checkout' hook to hook library
      hooks: convert worktree 'post-checkout' hook to hook library
      send-email: use 'git hook run' for 'sendemail-validate'
      git-p4: use 'git hook' to run hooks
      commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
      read-cache: convert post-index-change to use hook.h
      receive-pack: convert push-to-checkout hook to hook.h
      run-command: remove old run_hook_{le,ve}() hook API

Fabian Stelzer (2):
      gpg-interface: trim CR from ssh-keygen
      gpg-interface/gpgsm: fix for v2.3

Fangyi Zhou (1):
      submodule-helper: fix usage string

Glen Choo (39):
      fetch: use goto cleanup in cmd_fetch()
      fetch: skip tasks related to fetching objects
      fetch --negotiate-only: do not update submodules
      branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
      branch: make create_branch() always create a branch
      branch: add a dry_run parameter to create_branch()
      builtin/branch: consolidate action-picking logic in cmd_branch()
      branch: add --recurse-submodules option for branch creation
      branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
      stash: strip "refs/heads/" with skip_prefix
      checkout, clone: die if tree cannot be parsed
      submodule--helper: remove update-module-mode
      submodule--helper: reorganize code for sh to C conversion
      submodule--helper run-update-procedure: remove --suboid
      submodule--helper run-update-procedure: learn --remote
      submodule--helper update-clone: learn --init
      submodule--helper: remove ensure-core-worktree
      submodule update: add tests for --filter
      submodule--helper update-clone: check for --filter and --init
      t5526: introduce test helper to assert on fetches
      t5526: stop asserting on stderr literally
      t5526: create superproject commits with test helper
      submodule: make static functions read submodules from commits
      submodule: inline submodule_commits() into caller
      submodule: store new submodule commits oid_array in a struct
      submodule: extract get_fetch_task()
      submodule: move logic into fetch_task_create()
      submodule update: use die_message()
      submodule--helper: teach update_data more options
      submodule--helper: reduce logic in run_update_procedure()
      submodule--helper: remove forward declaration
      fetch: fetch unpopulated, changed submodules
      submodule: fix latent check_has_commit() bug
      branch: support more tracking modes when recursing
      branch: give submodule updating advice before exit
      branch --set-upstream-to: be consistent when advising
      branch: remove negative exit code
      branch: rework comments for future developers
      branch.c: simplify advice-and-die sequence

Greg Hurrell (2):
      Documentation/config/pgp.txt: replace stray <TAB> character with <SPC>
      Documentation/config/pgp.txt: add missing apostrophe

Han-Wen Nienhuys (27):
      reftable: fix OOB stack write in print functions
      reftable: fix resource leak in block.c error path
      reftable: fix resource leak blocksource.c
      reftable: check reftable_stack_auto_compact() return value
      reftable: ignore remove() return value in stack_test.c
      reftable: fix resource warning
      reftable: all xxx_free() functions accept NULL arguments
      reftable: order unittests by complexity
      reftable: drop stray printf in readwrite_test
      reftable: handle null refnames in reftable_ref_record_equal
      reftable: make reftable-record.h function signatures const correct
      reftable: implement record equality generically
      reftable: remove outdated file reftable.c
      reftable: make reftable_record a tagged union
      reftable: add print functions to the record types
      t1405: explictly delete reflogs for reftable
      t1405: mark test that checks existence as REFFILES
      t5312: prepare for reftable
      t1410: use test-tool ref-store to inspect reflogs
      t1410: mark bufsize boundary test as REFFILES
      Documentation: object_id_len goes up to 31
      reftable: reject 0 object_id_len
      reftable: add a test that verifies that writing empty keys fails
      reftable: avoid writing empty keys at the block layer
      reftable: ensure that obj_id_len is >= 2 on writing
      reftable: add test for length of disambiguating prefix
      reftable: rename writer_stats to reftable_writer_stats

Jacob Keller (1):
      name-rev: use generation numbers if available

Jason Yundt (2):
      comment: fix typo
      gitweb: remove invalid http-equiv="content-type"

Jayati Shrivastava (1):
      sequencer: use reverse_commit_list() helper

Jaydeep Das (1):
      t/t0015-hash.sh: remove unnecessary '\' at line end

Jaydeep P Das (1):
      userdiff: add builtin diff driver for kotlin language.

Jean-Noël Avila (4):
      i18n: factorize more 'incompatible options' messages
      i18n: factorize "invalid value" messages
      i18n: remove from i18n strings that do not hold translatable parts
      i18n: fix some misformated placeholders in command synopsis

Jeff Hostetler (30):
      fsmonitor: enhance existing comments, clarify trivial response handling
      fsmonitor-ipc: create client routines for git-fsmonitor--daemon
      fsmonitor: config settings are repository-specific
      fsmonitor: use IPC to query the builtin FSMonitor daemon
      fsmonitor: document builtin fsmonitor
      fsmonitor--daemon: add a built-in fsmonitor daemon
      fsmonitor--daemon: implement 'stop' and 'status' commands
      compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
      compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
      fsmonitor--daemon: implement 'run' command
      fsmonitor--daemon: implement 'start' command
      fsmonitor--daemon: add pathname classification
      fsmonitor--daemon: define token-ids
      fsmonitor--daemon: create token-based changed path cache
      compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
      compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent
      compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
      fsmonitor--daemon: implement handle_client callback
      help: include fsmonitor--daemon feature flag in version info
      t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
      t7527: create test for fsmonitor--daemon
      t/perf: avoid copying builtin fsmonitor files into test repo
      t/helper/test-chmtime: skip directories on Windows
      t/perf/p7519: fix coding style
      t/perf/p7519: speed up test on Windows
      t/perf/p7519: add fsmonitor--daemon test cases
      fsmonitor--daemon: periodically truncate list of modified files
      fsmonitor--daemon: use a cookie file to sync with file system
      fsmonitor: force update index after large responses
      t7527: test status with untracked-cache and fsmonitor--daemon

Jerry Zhang (3):
      git-rev-list: add --exclude-first-parent-only flag
      patch-id: fix antipatterns in tests
      patch-id: fix scan_hunk_header on diffs with 1 line of before/after

Jessica Clarke (1):
      mem-pool: don't assume uintmax_t is aligned enough for all types

Joel Holdsworth (4):
      git-p4: don't select shell mode using the type of the command argument
      git-p4: pass command arguments as lists instead of using shell
      git-p4: don't print shell commands as python lists
      git-p4: fix instantiation of CalledProcessError

Johannes Schindelin (14):
      sparse-index: sparse index is disallowed when split index is active
      t1091: disable split index
      split-index: it really is incompatible with the sparse index
      git-sh-setup: remove remnant bits referring to `git-legacy-stash`
      add: remove support for `git-legacy-stash`
      stash: remove documentation for `stash.useBuiltin`
      stash: stop warning about the obsolete `stash.useBuiltin` config setting
      docs(diff): lose incorrect claim about `diff-files --diff-filter=A`
      diff.c: move the diff filter bits definitions up a bit
      diff-filter: be more careful when looking for negative bits
      scalar: accept -C and -c options before the subcommand
      checkout/fetch/pull/pack-objects: allow `-h` outside a repository
      t0012: verify that built-ins handle `-h` even without gitdir
      cocci: allow padding with `strbuf_addf()`

John Cai (15):
      receive-pack.c: consolidate find header logic
      name-rev: deprecate --stdin in favor of --annotate-stdin
      name-rev.c: use strbuf_getline instead of limited size buffer
      builtin/reflog.c: use parse-options api for expire, delete subcommands
      name-rev: replace --stdin with --annotate-stdin in synopsis
      cat-file: rename cmdmode to transform_mode
      cat-file: introduce batch_mode enum to replace print_contents
      cat-file: add remove_timestamp helper
      cat-file: add --batch-command mode
      stash: add tests to ensure reflog --rewrite --updatref behavior
      reflog: libify delete reflog function and helpers
      stash: call reflog_delete() in reflog.c
      cat-file: skip expanding default format
      rebase: use test_commit helper in setup
      rebase: set REF_HEAD_DETACH in checkout_up_to_date()

Jonathan Tan (6):
      config: make git_config_include() static
      config: include file if remote URL matches a glob
      sparse-checkout: create leading directory
      clone: support unusual remote ref configurations
      ls-files: support --recurse-submodules --stage
      shallow: reset commit grafts when shallow is reset

Josh Steadmon (3):
      test-lib: unset trace2 parent envvars
      clone, submodule: pass partial clone filters to submodules
      ls-tree: `-l` should not imply recursive listing

Junio C Hamano (32):
      compat/qsort_s.c: avoid using potentially unaligned access
      fetch: help translators by reusing the same message template
      Start post 2.35 cycle
      SubmittingPatches: write problem statement in the log in the present tense
      CodingGuidelines: hint why we value clearly written log messages
      SubmittingPatches: explain why we care about log messages
      Git 2.35.1
      Name the next one 2.36 to prepare for 2.35.1
      The first batch
      The second batch for 2.36
      glossary: describe "worktree"
      The third batch
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      The eighth batch
      rerere-train: two fixes to the use of "git show -s"
      am/apply: warn if we end up reading patches from terminal
      The ninth batch
      The tenth batch
      The eleventh batch
      The twelfth batch
      The thirteenth batch
      The 14th batch
      reset: show --no-refresh in the short-help
      The 15th batch
      The 16th batch
      The 17th batch
      CodingGuidelines: give deadline for "for (int i = 0; ..."
      Git 2.36-rc0
      Git 2.36-rc1

Justin Donnelly (4):
      git-prompt: rename `upstream` to `upstream_type`
      git-prompt: make upstream state indicator location consistent
      git-prompt: make long upstream state indicator consistent
      git-prompt: put upstream comments together

Lessley Dennington (3):
      completion: address sparse-checkout issues
      completion: improve sparse-checkout cone mode directory completion
      completion: handle unusual characters for sparse-checkout

Liginity Lee (1):
      fix typo in git-mktree.txt

Marc Strapetz (4):
      test-lib: introduce API for verifying file mtime
      t7508: fix bogus mtime verification
      t7508: add tests capturing racy timestamp handling
      update-index: refresh should rewrite index in case of racy timestamps

Martin Ågren (1):
      git-ls-tree.txt: fix the name of "%(objectsize:padded)"

Matheus Felipe (1):
      config: correct "--type" option in "git config -h" output

Matt Cooper (1):
      index-pack: clarify the breached limit

Michael J Gruber (2):
      test-lib: declare local variables as local
      tests: demonstrate "show --word-diff --color-moved" regression

Neeraj Singh (10):
      wrapper: make inclusion of Windows csprng header tightly scoped
      core.fsyncmethod: add writeout-only mode
      core.fsync: introduce granular fsync control infrastructure
      core.fsync: add configuration parsing
      core.fsync: new option to harden the index
      core.fsync: documentation and user-friendly aggregate options
      core.fsync: fix incorrect expression for default configuration
      trace2: add stats for fsync operations
      core.fsyncmethod: correctly camel-case warning message
      object-file: pass filename to fsync_or_die

Nihal Jere (1):
      Documentation: git-read-tree: separate links using commas

Patrick Steinhardt (24):
      refs: extract packed_refs_delete_refs() to allow control of transaction
      refs: allow passing flags when beginning transactions
      refs: allow skipping the reference-transaction hook
      refs: demonstrate excessive execution of the reference-transaction hook
      refs: do not execute reference-transaction hook on packing refs
      refs: skip hooks when deleting uncovered packed refs
      fetch-pack: use commit-graph when computing cutoff
      fetch: skip computing output width when not printing anything
      fetch: increase test coverage of fetches
      fetch: backfill tags before setting upstream
      fetch: control lifecycle of FETCH_HEAD in a single place
      fetch: report errors when backfilling tags fails
      refs: add interface to iterate over queued transactional updates
      fetch: make `--atomic` flag cover backfilling of tags
      fetch: make `--atomic` flag cover pruning of refs
      upload-pack: look up "want" lines via commit-graph
      fetch: avoid lookup of commits when not appending to FETCH_HEAD
      refs: add ability for backends to special-case reading of symbolic refs
      remote: read symbolic refs via `refs_read_symbolic_ref()`
      refs/files-backend: optimize reading of symbolic refs
      t5503: simplify setup of test which exercises failure of backfill
      repack: refactor to avoid double-negation of update-server-info
      repack: add config to skip updating server info
      core.fsync: new option to harden references

Philip Oakley (2):
      README.md: add CodingGuidelines and a link for Translators
      doc: check-ignore: code-quote an exclamation mark

Philippe Blain (1):
      pull --rebase: honor rebase.autostash when fast-forwarding

Phillip Wood (29):
      t3701: clean up hunk splitting tests
      builtin add -p: fix hunk splitting
      rebase: factor out checkout for up to date branch
      t5403: refactor rebase post-checkout hook tests
      rebase: pass correct arguments to post-checkout hook
      rebase: do not remove untracked files on checkout
      rebase --apply: don't run post-checkout hook if there is an error
      reset_head(): remove action parameter
      reset_head(): factor out ref updates
      reset_head(): make default_reflog_action optional
      create_autostash(): remove unneeded parameter
      rebase: cleanup reset_head() calls
      reset_head(): take struct rebase_head_opts
      rebase --apply: fix reflog
      rebase --apply: set ORIG_HEAD correctly
      rebase -m: don't fork git checkout
      xdiff: fix a memory leak
      xdiff: handle allocation failure in patience diff
      xdiff: refactor a function
      xdiff: handle allocation failure when merging
      terminal: always reset terminal when reading without echo
      terminal: pop signal handler when terminal is restored
      terminal: set VMIN and VTIME in non-canonical mode
      add -p: disable stdin buffering when interactive.singlekey is set
      terminal: use flags for save_term()
      terminal: don't assume stdin is /dev/tty
      terminal: work around macos poll() bug
      terminal: restore settings on SIGTSTP
      worktree: add -z option for list subcommand

René Scharfe (10):
      grep: use grep_or_expr() in compile_pattern_or()
      grep: use grep_not_expr() in compile_pattern_not()
      apply: use strsets to track symlinks
      stable-qsort: avoid using potentially unaligned access
      bisect--helper: report actual bisect_state() argument on error
      bisect--helper: release strbuf and strvec on run error
      bisect: document run behavior with exit codes 126 and 127
      bisect--helper: double-check run command on exit code 126 and 127
      parse-options: document bracketing of argh
      grep: fix triggering PCRE2_NO_START_OPTIMIZE workaround

Robert Coup (8):
      fetch: fix negotiate-only error message
      fetch-negotiator: add specific noop initializer
      fetch-pack: add refetch
      builtin/fetch-pack: add --refetch option
      fetch: add --refetch option
      t5615-partial-clone: add test for fetch --refetch
      fetch: after refetch, encourage auto gc repacking
      docs: mention --refetch fetch option

SZEDER Gábor (1):
      reflog: fix 'show' subcommand's argv

Shaoxuan Yuan (4):
      builtin/diff.c: fix "git-diff" usage string typo
      t/lib-read-tree-m-3way: modernize style
      t/lib-read-tree-m-3way: indent with tabs
      t0001: replace "test [-d|-f]" with test_path_is_* functions

Shubham Mishra (3):
      t0003: avoid pipes with Git on LHS
      t0001-t0028: avoid pipes with Git on LHS
      t0030-t0050: avoid pipes with Git on LHS

Tao Klerks (6):
      t7519: avoid file to index mtime race for untracked cache
      t7519: populate untracked cache before test
      untracked-cache: write index when populating empty untracked cache
      t/helper/test-chmtime: update mingw to support chmtime on directories
      t7063: mtime-mangling instead of delays in untracked cache testing
      tracking branches: add advice to ambiguous refspec error

Taylor Blau (15):
      grep: extract grep_binexp() from grep_or_expr()
      grep: use grep_and_expr() in compile_pattern_and()
      t5326: demonstrate bitmap corruption after permutation
      midx.c: make changing the preferred pack safe
      pack-revindex.c: instrument loading on-disk reverse index
      t5326: drop unnecessary setup
      t5326: extract `test_rev_exists`
      t5326: move tests to t/lib-bitmap.sh
      t/lib-bitmap.sh: parameterize tests over reverse index source
      midx: read `RIDX` chunk when present
      pack-bitmap.c: gracefully fallback after opening pack/MIDX
      midx: prevent writing a .bitmap without any objects
      CODE_OF_CONDUCT.md: update PLC members list
      builtin/remote.c: parse options in 'rename'
      builtin/remote.c: show progress when renaming remote references

Teng Long (6):
      git-cli.txt: clarify "options first and then args"
      ls-tree: rename "retval" to "recurse" in "show_tree()"
      ls-tree: simplify nesting if/else logic in "show_tree()"
      ls-tree: fix "--name-only" and "--long" combined use bug
      ls-tree: slightly refactor `show_tree()`
      ls-tree: support --object-only option for "git-ls-tree"

Thomas Gummerer (1):
      fetch --prune: exit with error if pruning fails

Thomas Koutcher (1):
      subtree: force merge commit

Todd Zullinger (3):
      t/lib-gpg: reload gpg components after updating trustlist
      t/lib-gpg: kill all gpg components, not just gpg-agent
      doc: replace "--" with {litdd} in credential-cache/fsmonitor

Victoria Dye (30):
      reset: fix validation in sparse index test
      reset: reorder wildcard pathspec conditions
      clean: integrate with sparse index
      checkout-index: expand sparse checkout compatibility tests
      checkout-index: add --ignore-skip-worktree-bits option
      checkout-index: integrate with sparse index
      update-index: add tests for sparse-checkout compatibility
      update-index: integrate with sparse index
      update-index: reduce scope of index expansion in do_reupdate
      sparse-index: prevent repo root from becoming sparse
      status: fix nested sparse directory diff in sparse index
      read-tree: explicitly disallow prefixes with a leading '/'
      read-tree: expand sparse checkout test coverage
      read-tree: integrate with sparse index
      read-tree: narrow scope of index expansion for '--prefix'
      read-tree: make two-way merge sparse-aware
      read-tree: make three-way merge sparse-aware
      reset: revise index refresh advice
      reset: introduce --[no-]refresh option to --mixed
      reset: replace '--quiet' with '--no-refresh' in performance advice
      reset: suppress '--no-refresh' advice if logging is silenced
      stash: make internal resets quiet and refresh index
      t1092: add sparse directory before cone in test repo
      unpack-trees: increment cache_bottom for sparse directories
      Revert "unpack-trees: improve performance of next_cache_entry"
      reset: do not make '--quiet' disable index refresh
      reset: remove 'reset.quiet' config option
      reset: remove 'reset.refresh' config option
      mv: refresh stat info for moved entry
      contrib/scalar: fix 'all' target in Makefile

brian m. carlson (6):
      t0027: add tests for eol without text in .gitattributes
      docs: correct documentation about eol attribute
      wrapper: add a helper to generate numbers from a CSPRNG
      wrapper: use a CSPRNG to generate random file names
      doc: clarify interaction between 'eol' and text=auto
      block-sha1: remove use of obsolete x86 assembly

Ævar Arnfjörð Bjarmason (186):
      cat-file tests: test bad usage
      cat-file tests: test messaging on bad objects/paths
      parse-options API: add a usage_msg_optf()
      cat-file docs: fix SYNOPSIS and "-h" output
      cat-file: move "usage" variable to cmd_cat_file()
      cat-file: make --batch-all-objects a CMDMODE
      cat-file: fix remaining usage bugs
      cat-file: correct and improve usage information
      object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
      cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
      hook API: add a run_hooks() wrapper
      hook API: add a run_hooks_l() wrapper
      git hook run: add an --ignore-missing flag
      cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
      cat-file: s/_/-/ in typo'd usage_msg_optf() message
      compat: auto-detect if zlib has uncompress2()
      sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure
      refs API: remove "failure_errno" from refs_resolve_ref_unsafe()
      object-name tests: add tests for ambiguous object blind spots
      object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
      object-name: explicitly handle bad tags in show_ambiguous_object()
      object-name: make ambiguous object output translatable
      object-name: show date for ambiguous tag objects
      object-name: iterate ambiguous objects before showing header
      object-name: re-use "struct strbuf" in show_ambiguous_object()
      perl Git.pm: don't ignore signalled failure in _cmd_close()
      completion tests: re-source git-completion.bash in a subshell
      completion: add a GIT_COMPLETION_SHOW_ALL_COMMANDS
      leak tests: fix a memory leak in "test-progress" helper
      progress.c test helper: add missing braces
      progress.c tests: make start/stop commands on stdin
      progress.c tests: test some invalid usage
      progress.h: format and be consistent with progress.c naming
      progress.c: use dereferenced "progress" variable, not "(*p_progress)"
      progress.c: refactor stop_progress{,_msg}() to use helpers
      progress API: unify stop_progress{,_msg}(), fix trace2 bug
      pack-bitmap-write.c: don't return without stop_progress()
      t0051: use "skip_all" under !MINGW in single-test file
      hash-object: fix a trivial leak in --path
      ls-remote & transport API: release "struct transport_ls_refs_options"
      grep.h: remove unused "regex_t regexp" from grep_opt
      log tests: check if grep_config() is called by "log"-like cmds
      grep tests: create a helper function for "BRE" or "ERE"
      grep tests: add missing "grep.patternType" config tests
      built-ins: trust the "prefix" from run_builtin()
      grep.c: don't pass along NULL callback value
      grep API: call grep_config() after grep_init()
      grep.h: make "grep_opt.pattern_type_option" use its enum
      grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
      grep: simplify config parsing and option parsing
      cache.h: remove always unused show_date_human() declaration
      date API: create a date.h, split from cache.h
      date API: provide and use a DATE_MODE_INIT
      date API: add basic API docs
      date API: add and use a date_mode_release()
      diff.[ch]: have diff_free() call clear_pathspec(opts.pathspec)
      diff.[ch]: have diff_free() free options->parseopts
      hook tests: test for exact "pre-push" hook input
      hook tests: use a modern style for "pre-push" tests
      git-compat-util.h: clarify GCC v.s. C99-specific in comment
      C99: remove hardcoded-out !HAVE_VARIADIC_MACROS code
      help doc: add missing "]" to "[-a|--all]"
      help.c: use puts() instead of printf{,_ln}() for consistency
      help tests: test "git" and "git help [-a|-g] spacing
      help.c: split up list_all_cmds_help() function
      help: note the option name on option incompatibility
      help: correct usage & behavior of "git help --all"
      help: error if [-a|-g|-c] and [-i|-m|-w] are combined
      help: add --no-[external-commands|aliases] for use with --all
      help: don't print "\n" before single-section output
      imap-send.c: use designated initializers for "struct imap_server_conf"
      trace2: use designated initializers for "struct tr2_tgt"
      trace2: use designated initializers for "struct tr2_dst"
      object-file: use designated initializers for "struct git_hash_algo"
      archive-*.c: use designated initializers for "struct archiver"
      userdiff.c: use designated initializers for "struct userdiff_driver"
      convert.c: use designated initializers for "struct stream_filter*"
      refspec.c: use designated initializers for "struct refspec_item"
      fast-import.c: use designated initializers for "partial" struct assignments
      object-file.c: split up declaration of unrelated variables
      object-file API: return "void", not "int" from hash_object_file()
      object-file API: add a format_object_header() function
      object-file API: have write_object_file() take "enum object_type"
      object API: correct "buf" v.s. "map" mismatch in *.c and *.h
      object API docs: move check_object_signature() docs to cache.h
      object API users + docs: check <0, not !0 with check_object_signature()
      object-file API: split up and simplify check_object_signature()
      object API: rename hash_object_file_literally() to write_*()
      object-file API: have hash_object_file() take "enum object_type"
      object-file.c: add a literal version of write_object_file_prepare()
      object-file API: pass an enum to read_object_with_reference()
      test-lib: add GIT_SAN_OPTIONS, inherit [AL]SAN_OPTIONS
      test-lib: correct and assert TEST_DIRECTORY overriding
      test-lib: make $GIT_BUILD_DIR an absolute path
      test-lib: add "fast_unwind_on_malloc=0" to LSAN_OPTIONS
      scalar Makefile: use "The default target of..." pattern
      Makefiles: add "shared.mak", move ".DELETE_ON_ERROR" to it
      Makefile: disable GNU make built-in wildcard rules
      Makefile: define $(LIB_H) in terms of $(FIND_SOURCE_FILES)
      Makefile: move ".SUFFIXES" rule to shared.mak
      Makefile: move $(comma), $(empty) and $(space) to shared.mak
      Makefile: add "$(QUIET)" boilerplate to shared.mak
      Makefiles: add and use wildcard "mkdir -p" template
      log tests: fix "abort tests early" regression in ff37a60c369
      index-pack: fix memory leaks
      merge-base: free() allocated "struct commit **" list
      diff.c: free "buf" in diff_words_flush()
      urlmatch.c: add and use a *_release() function
      remote-curl.c: free memory in cmd_main()
      bundle: call strvec_clear() on allocated strvec
      transport: stop needlessly copying bundle header references
      submodule--helper: fix trivial leak in module_add()
      commit-graph: fix memory leak in misused string_list API
      commit-graph: stop fill_oids_from_packs() progress on error and free()
      lockfile API users: simplify and don't leak "path"
      range-diff: plug memory leak in common invocation
      range-diff: plug memory leak in read_patches()
      repository.c: free the "path cache" in repo_clear()
      submodule tests: test for init and update failure output
      submodule--helper: don't use bitfield indirection for parse_options()
      gettext API users: don't explicitly cast ngettext()'s "n"
      string-list API: change "nr" and "alloc" to "size_t"
      merge: don't run post-hook logic on --no-verify
      hooks: fix an obscure TOCTOU "did we just run a hook?" race
      tests: change some 'test $(git) = "x"' to test_cmp
      tests: use "test_stdout_line_count", not "test $(git [...] | wc -l)"
      read-tree tests: check "diff-files" exit code on failure
      diff tests: don't ignore "git diff" exit code
      diff tests: don't ignore "git diff" exit code in "read" loop
      apply tests: use "test_must_fail" instead of ad-hoc pattern
      merge tests: use "test_must_fail" instead of ad-hoc pattern
      rev-parse tests: don't ignore "git reflog" exit code
      notes tests: don't ignore "git" exit code
      diff tests: don't ignore "git rev-list" exit code
      rev-list tests: don't hide abort() in "test_expect_failure"
      gettext tests: don't ignore "test-tool regex" exit code
      apply tests: don't ignore "git ls-files" exit code, drop sub-shell
      checkout tests: don't ignore "git <cmd>" exit code
      rev-list simplify tests: don't ignore "git" exit code
      list-objects: handle NULL function pointers
      reflog: don't be noisy on empty reflogs
      builtin/submodule--helper.c: rename option struct to "opt"
      test-lib-functions: add and use a "test_hook" wrapper
      hook tests: turn exit code assertions into a loop
      http tests: don't rely on "hook/post-update.sample"
      tests: assume the hooks are disabled by default
      bugreport tests: tighten up "git bugreport -s hooks" test
      fetch+push tests: use "test_hook" and "test_when_finished" pattern
      gc + p4 tests: use "test_hook", remove sub-shells
      tests: change "cat && chmod +x" to use "test_hook"
      tests: change "mkdir -p && write_script" to use "test_hook"
      tests: use "test_hook" for misc "mkdir -p" and "chmod" cases
      diff.c: fix a double-free regression in a18d66cefb
      refs: use designated initializers for "struct ref_storage_be"
      refs: use designated initializers for "struct ref_iterator_vtable"
      misc *.c: use designated initializers for struct assignments
      packed-backend: remove stub BUG(...) functions
      refs debug: add a wrapper for "read_symbolic_ref"
      tests: extend "test_hook" for "rm" and "chmod -x", convert "$HOOK"
      proc-receive hook tests: use "test_hook" instead of "write_script"
      http tests: use "test_hook" for "smart" and "dumb" http tests
      reflog.c: indent argument lists
      reflog: refactor cmd_reflog() to "if" branches
      reflog tests: add missing "git reflog exists" tests
      reflog: move "usage" variables and use macros
      git reflog [expire|delete]: make -h output consistent with SYNOPSIS
      reflog exists: use parse_options() API
      Makefile: use ' ', not non-existing $(wspfx_SQ)
      ls-tree tests: add tests for --name-status
      ls-tree: remove commented-out code
      ls-tree: add missing braces to "else" arms
      ls-tree: use "enum object_type", not {blob,tree,commit}_type
      ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
      ls-tree: introduce struct "show_tree_data"
      ls-tree: introduce "--format" option
      ls-tree: detect and error on --name-only --name-status
      ls-tree: split up "fast path" callbacks
      hooks: fix "invoked hook" regression in a8cc5943338
      reflog: convert to parse_options() API
      reflog [show]: display sensible -h output
      test-lib: have --immediate emit valid TAP on failure
      pack-objects: lazily set up "struct rev_info", don't leak
      reftable: make assignments portable to AIX xlc v12.01
      Documentation/Makefile: fix "make info" regression in dad9cd7d518
      Documentation: add --batch-command to cat-file synopsis
      ls-tree doc: document interaction with submodules


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.36.0-rc0
@ 2022-04-04 20:43  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-04-04 20:43 UTC (permalink / raw)
  To: git; +Cc: git-packagers

An early preview release Git v2.36.0-rc0 is now available for
testing at the usual places.  It is comprised of 661 non-merge
commits since v2.35.0, contributed by 80 people, 25 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.36.0-rc0' 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.35.0 are as follows.
Welcome to the Git development community!

  Abhradeep Chakraborty, BRESSAT Jonathan, Chen Bojun,
  COGONI Guillaume, David Cantrell, Des Preston, Hongyi Zhao,
  Jason Yundt, Jayati Shrivastava, Jaydeep Das, Jaydeep P Das,
  Jose Lopes, Justin Donnelly, Kraymer, Liginity Lee, Matheus
  Felipe, Maximilian Reichel, Michael McClimon, Nihal Jere,
  Pedro Martelletto, Robert Coup, Sean Allred, Shaoxuan Yuan,
  Shubham Mishra, and Waleed Khan.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alex Henrie, Atharva Raykar,
  Bagas Sanjaya, Beat Bolli, brian m. carlson, Christian Couder,
  Daniel Hahler, Derrick Stolee, Elia Pinto, Elijah Newren,
  Emily Shaffer, Eric Sunshine, Fabian Stelzer, Glen Choo, Greg
  Hurrell, Han-Wen Nienhuys, Jacob Keller, Jean-Noël Avila, Jeff
  Hostetler, Jeff King, Jerry Zhang, Jessica Clarke, Jiang Xin,
  Joel Holdsworth, Johannes Altmanninger, Johannes Schindelin,
  Johannes Sixt, John Cai, Jonathan Nieder, Jonathan Tan, Josh
  Steadmon, Junio C Hamano, Kevin Willford, Lessley Dennington,
  Marc Strapetz, Matt Cooper, Michael J Gruber, Neeraj Singh,
  Patrick Steinhardt, Philip Oakley, Philippe Blain, Phillip Wood,
  Ramkumar Ramachandra, René Scharfe, Shourya Shukla, SZEDER
  Gábor, Tao Klerks, Taylor Blau, Teng Long, Thomas Gummerer,
  Thomas Koutcher, Tilman Vogel, Todd Zullinger, 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 2.36 Release Notes (draft)
==============================

Updates since Git 2.35
----------------------

Backward compatibility warts

 * "git name-rev --stdin" has been deprecated and issues a warning
   when used; use "git name-rev --annotate-stdin" instead.

 * "git clone --filter=... --recurse-submodules" only makes the
   top-level a partial clone, while submodules are fully cloned.  This
   behaviour is changed to pass the same filter down to the submodules.


Note to those who build from the source

 * Since Git 2.31, our source assumed that the compiler you use to
   build Git supports variadic macros, with an easy-to-use escape
   hatch to allow compilation without variadic macros with an request
   to report that you had to use the escape hatch to the list.
   Because we haven't heard from anybody who actually needed to use
   the escape hatch, it has been removed, making support of variadic
   macros a hard requirement.


UI, Workflows & Features

 * Assorted updates to "git cat-file", especially "-h".

 * The command line completion (in contrib/) learns to complete
   arguments to give to "git sparse-checkout" command.

 * "git log --remerge-diff" shows the difference from mechanical merge
   result and the result that is actually recorded in a merge commit.

 * "git log" and friends learned an option --exclude-first-parent-only
   to propagate UNINTERESTING bit down only along the first-parent
   chain, just like --first-parent option shows commits that lack the
   UNINTERESTING bit only along the first-parent chain.

 * The command line completion script (in contrib/) learned to
   complete all Git subcommands, including the ones that are normally
   hidden, when GIT_COMPLETION_SHOW_ALL_COMMANDS is used.

 * "git branch" learned the "--recurse-submodules" option.

 * A not-so-common mistake is to write a script to feed "git bisect
   run" without making it executable, in which case all tests will
   exit with 126 or 127 error codes, even on revisions that are marked
   as good.  Try to recognize this situation and stop iteration early.

 * When "index-pack" dies due to incoming data exceeding the maximum
   allowed input size, include the value of the limit in the error
   message.

 * The error message given by "git switch HEAD~4" has been clarified
   to suggest the "--detach" option that is required.

 * In sparse-checkouts, files mis-marked as missing from the working tree
   could lead to later problems.  Such files were hard to discover, and
   harder to correct.  Automatically detecting and correcting the marking
   of such files has been added to avoid these problems.

 * "git cat-file" learns "--batch-command" mode, which is a more
   flexible interface than the existing "--batch" or "--batch-check"
   modes, to allow different kinds of inquiries made.

 * The level of verbose output from the ort backend during inner merge
   has been aligned to that of the recursive backend.

 * "git remote rename A B", depending on the number of remote-tracking
   refs involved, takes long time renaming them.  The command has been
   taught to show progress bar while making the user wait.

 * Bundle file format gets extended to allow a partial bundle,
   filtered by similar criteria you would give when making a
   partial/lazy clone.

 * A new built-in userdiff driver for kotlin has been added.

 * "git repack" learned a new configuration to disable triggering of
   age-old "update-server-info" command, which is rarely useful these
   days.

 * "git stash" does not allow subcommands it internally runs as its
   implementation detail, except for "git reset", to emit messages;
   now "git reset" part has also been squelched.

 * "git ls-tree" learns "--oid-only" option, similar to "--name-only",
   and more generalized "--format" option.

 * "git fetch --refetch" learned to fetch everything without telling
   the other side what we already have, which is useful when you
   cannot trust what you have in the local object store.

 * "git branch" gives hint when branch tracking cannot be established
   because fetch refspecs from multiple remote repositories overlap.

 * "git worktree list --porcelain" did not c-quote pathnames and lock
   reasons with unsafe bytes correctly, which is worked around by
   introducing NUL terminated output format with "-z".


Performance, Internal Implementation, Development Support etc.

 * "git apply" (ab)used the util pointer of the string-list to keep
   track of how each symbolic link needs to be handled, which has been
   simplified by using strset.

 * Fix a hand-rolled alloca() imitation that may have violated
   alignment requirement of data being sorted in compatibility
   implementation of qsort_s() and stable qsort().

 * Use the parse-options API in "git reflog" command.

 * The conditional inclusion mechanism of configuration files using
   "[includeIf <condition>]" learns to base its decision on the
   URL of the remote repository the repository interacts with.
   (merge 399b198489 jt/conditional-config-on-remote-url later to maint).

 * "git name-rev --stdin" does not behave like usual "--stdin" at
   all.  Start the process of renaming it to "--annotate-stdin".
   (merge a2585719b3 jc/name-rev-stdin later to maint).

 * "git update-index", "git checkout-index", and "git clean" are
   taught to work better with the sparse checkout feature.

 * Use an internal call to reset_head() helper function instead of
   spawning "git checkout" in "rebase", and update code paths that are
   involved in the change.

 * Messages "ort" merge backend prepares while dealing with conflicted
   paths were unnecessarily confusing since it did not differentiate
   inner merges and outer merges.

 * Small modernization of the rerere-train script (in contrib/).

 * Use designated initializers we started using in mid 2017 in more
   parts of the codebase that are relatively quiescent.

 * Improve failure case behaviour of xdiff library when memory
   allocation fails.

 * General clean-up in reftable implementation, including
   clarification of the API documentation, tightening the code to
   honor documented length limit, etc.

 * Remove the escape hatch we added when we introduced the weather
   balloon to use variadic macros unconditionally, to make it official
   that we now have a hard dependency on the feature.

 * Makefile refactoring with a bit of suffixes rule stripping to
   optimize the runtime overhead.

 * "git stash drop" is reimplemented as an internal call to
   reflog_delete() function, instead of invoking "git reflog delete"
   via run_command() API.

 * Count string_list items in size_t, not "unsigned int".

 * The single-key interactive operation used by "git add -p" has been
   made more robust.

 * Remove unneeded <meta http-equiv=content-type...> from gitweb
   output.

 * "git name-rev" learned to use the generation numbers when setting
   the lower bound of searching commits used to explain the revision,
   when available, instead of committer time.

 * Replace core.fsyncObjectFiles with two new configuration variables,
   core.fsync and core.fsyncMethod.

 * Updates to refs traditionally weren't fsync'ed, but we can
   configure using core.fsync variable to do so.

 * "git reflog" command now uses parse-options API to parse its
   command line options.


Fixes since v2.35
-----------------

 * "rebase" and "stash" in secondary worktrees are broken in
   Git 2.35.0, which has been corrected.

 * "git pull --rebase" ignored the rebase.autostash configuration
   variable when the remote history is a descendant of our history,
   which has been corrected.
   (merge 3013d98d7a pb/pull-rebase-autostash-fix later to maint).

 * "git update-index --refresh" has been taught to deal better with
   racy timestamps (just like "git status" already does).
   (merge 2ede073fd2 ms/update-index-racy later to maint).

 * Avoid tests that are run under GIT_TRACE2 set from failing
   unnecessarily.
   (merge 944d808e42 js/test-unset-trace2-parents later to maint).

 * The merge-ort misbehaved when merge.renameLimit configuration is
   set too low and failed to find all renames.
   (merge 9ae39fef7f en/merge-ort-restart-optim-fix later to maint).

 * We explain that revs come first before the pathspec among command
   line arguments, but did not spell out that dashed options come
   before other args, which has been corrected.
   (merge c11f95010c tl/doc-cli-options-first later to maint).

 * "git add -p" rewritten in C regressed hunk splitting in some cases,
   which has been corrected.
   (merge 7008ddc645 pw/add-p-hunk-split-fix later to maint).

 * "git fetch --negotiate-only" is an internal command used by "git
   push" to figure out which part of our history is missing from the
   other side.  It should never recurse into submodules even when
   fetch.recursesubmodules configuration variable is set, nor it
   should trigger "gc".  The code has been tightened up to ensure it
   only does common ancestry discovery and nothing else.
   (merge de4eaae63a gc/fetch-negotiate-only-early-return later to maint).

 * The code path that verifies signatures made with ssh were made to
   work better on a system with CRLF line endings.
   (merge caeef01ea7 fs/ssh-signing-crlf later to maint).

 * "git sparse-checkout init" failed to write into $GIT_DIR/info
   directory when the repository was created without one, which has
   been corrected to auto-create it.
   (merge 7f44842ac1 jt/sparse-checkout-leading-dir-fix later to maint).

 * Cloning from a repository that does not yet have any branches or
   tags but has other refs resulted in a "remote transport reported
   error", which has been corrected.
   (merge dccea605b6 jt/clone-not-quite-empty later to maint).

 * Mark in various places in the code that the sparse index and the
   split index features are mutually incompatible.
   (merge 451b66c533 js/sparse-vs-split-index later to maint).

 * Update the logic to compute alignment requirement for our mem-pool.
   (merge e38bcc66d8 jc/mem-pool-alignment later to maint).

 * Pick a better random number generator and use it when we prepare
   temporary filenames.
   (merge 47efda967c bc/csprng-mktemps later to maint).

 * Update the contributor-facing documents on proposed log messages.
   (merge cdba0295b0 jc/doc-log-messages later to maint).

 * When "git fetch --prune" failed to prune the refs it wanted to
   prune, the command issued error messages but exited with exit
   status 0, which has been corrected.
   (merge c9e04d905e tg/fetch-prune-exit-code-fix later to maint).

 * Problems identified by Coverity in the reftable code have been
   corrected.
   (merge 01033de49f hn/reftable-coverity-fixes later to maint).

 * A bug that made multi-pack bitmap and the object order out-of-sync,
   making the .midx data corrupt, has been fixed.
   (merge f8b60cf99b tb/midx-bitmap-corruption-fix later to maint).

 * The build procedure has been taught to notice older version of zlib
   and enable our replacement uncompress2() automatically.
   (merge 07564773c2 ab/auto-detect-zlib-compress2 later to maint).

 * Interaction between fetch.negotiationAlgorithm and
   feature.experimental configuration variables has been corrected.
   (merge 714edc620c en/fetch-negotiation-default-fix later to maint).

 * "git diff --diff-filter=aR" is now parsed correctly.
   (merge 75408ca949 js/diff-filter-negation-fix later to maint).

 * When "git subtree" wants to create a merge, it used "git merge" and
   let it be affected by end-user's "merge.ff" configuration, which
   has been corrected.
   (merge 9158a3564a tk/subtree-merge-not-ff-only later to maint).

 * Unlike "git apply", "git patch-id" did not handle patches with
   hunks that has only 1 line in either preimage or postimage, which
   has been corrected.
   (merge 757e75c81e jz/patch-id-hunk-header-parsing-fix later to maint).

 * "receive-pack" checks if it will do any ref updates (various
   conditions could reject a push) before received objects are taken
   out of the temporary directory used for quarantine purposes, so
   that a push that is known-to-fail will not leave crufts that a
   future "gc" needs to clean up.
   (merge 5407764069 cb/clear-quarantine-early-on-all-ref-update-errors later to maint).

 * Because a deletion of ref would need to remove it from both the
   loose ref store and the packed ref store, a delete-ref operation
   that logically removes one ref may end up invoking ref-transaction
   hook twice, which has been corrected.
   (merge 2ed1b64ebd ps/avoid-unnecessary-hook-invocation-with-packed-refs later to maint).

 * When there is no object to write .bitmap file for, "git
   multi-pack-index" triggered an error, instead of just skipping,
   which has been corrected.
   (merge eb57277ba3 tb/midx-no-bitmap-for-no-objects later to maint).

 * "git cmd -h" outside a repository should error out cleanly for many
   commands, but instead it hit a BUG(), which has been corrected.
   (merge 87ad07d735 js/short-help-outside-repo-fix later to maint).

 * "working tree" and "per-worktree ref" were in glossary, but
   "worktree" itself wasn't, which has been corrected.
   (merge 2df5387ed0 jc/glossary-worktree later to maint).

 * L10n support for a few error messages.
   (merge 3d3c23b3a7 bs/forbid-i18n-of-protocol-token-in-fetch-pack later to maint).

 * Test modernization.
   (merge d4fe066e4b sy/t0001-use-path-is-helper later to maint).

 * "git log --graph --graph" used to leak a graph structure, and there
   was no way to countermand "--graph" that appear earlier on the
   command line.  A "--no-graph" option has been added and resource
   leakage has been plugged.

 * Error output given in response to an ambiguous object name has been
   improved.
   (merge 3a73c1dfaf ab/ambiguous-object-name later to maint).

 * "git sparse-checkout" wants to work with per-worktree configuration,
   but did not work well in a worktree attached to a bare repository.
   (merge 3ce1138272 ds/sparse-checkout-requires-per-worktree-config later to maint).

 * Setting core.untrackedCache to true failed to add the untracked
   cache extension to the index.

 * Workaround we have for versions of PCRE2 before their version 10.36
   were in effect only for their versions newer than 10.36 by mistake,
   which has been corrected.
   (merge 97169fc361 rs/pcre-invalid-utf8-fix-fix later to maint).

 * Document Taylor as a new member of Git PLC at SFC.  Welcome.
   (merge e8d56ca863 tb/coc-plc-update later to maint).

 * "git checkout -b branch/with/multi/level/name && git stash" only
   recorded the last level component of the branch name, which has
   been corrected.

 * "git fetch" can make two separate fetches, but ref updates coming
   from them were in two separate ref transactions under "--atomic",
   which has been corrected.

 * Check the return value from parse_tree_indirect() to turn segfaults
   into calls to die().
   (merge 8d2eaf649a gc/parse-tree-indirect-errors later to maint).

 * Newer version of GPGSM changed its output in a backward
   incompatible way to break our code that parses its output.  It also
   added more processes our tests need to kill when cleaning up.
   Adjustments have been made to accommodate these changes.
   (merge b0b70d54c4 fs/gpgsm-update later to maint).

 * The untracked cache newly computed weren't written back to the
   on-disk index file when there is no other change to the index,
   which has been corrected.

 * "git config -h" did not describe the "--type" option correctly.
   (merge 5445124fad mf/fix-type-in-config-h later to maint).

 * The way generation number v2 in the commit-graph files are
   (not) handled has been corrected.
   (merge 6dbf4b8172 ds/commit-graph-gen-v2-fixes later to maint).

 * The method to trigger malloc check used in our tests no longer work
   with newer versions of glibc.
   (merge baedc59543 ep/test-malloc-check-with-glibc-2.34 later to maint).

 * When "git fetch --recurse-submodules" grabbed submodule commits
   that would be needed to recursively check out newly fetched commits
   in the superproject, it only paid attention to submodules that are
   in the current checkout of the superproject.  We now do so for all
   submodules that have been run "git submodule init" on.

 * "git rebase $base $non_branch_commit", when $base is an ancestor or
   the $non_branch_commit, modified the current branch, which has been
   corrected.

 * When "shallow" information is updated, we forgot to update the
   in-core equivalent, which has been corrected.

 * When creating a loose object file, we didn't report the exact
   filename of the file we failed to fsync, even though the
   information was readily available, which has been corrected.

 * "git am" can read from the standard input when no mailbox is given
   on the command line, but the end-user gets no indication when it
   happens, making Git appear stuck.
   (merge 7b20af6a06 jc/mailsplit-warn-on-tty later to maint).

 * "git mv" failed to refresh the cached stat information for the
   entry it moved.
   (merge b7f9130a06 vd/mv-refresh-stat later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge cfc5cf428b jc/find-header later to maint).
   (merge 40e7cfdd46 jh/p4-fix-use-of-process-error-exception later to maint).
   (merge 727e6ea350 jh/p4-spawning-external-commands-cleanup later to maint).
   (merge 0a6adc26e2 rs/grep-expr-cleanup later to maint).
   (merge 4ed7dfa713 po/readme-mention-contributor-hints later to maint).
   (merge 6046f7a91c en/plug-leaks-in-merge later to maint).
   (merge 8c591dbfce bc/clarify-eol-attr later to maint).
   (merge 518e15db74 rs/parse-options-lithelp-help later to maint).
   (merge cbac0076ef gh/doc-typos later to maint).
   (merge ce14de03db ab/no-errno-from-resolve-ref-unsafe later to maint).
   (merge 2826ffad8c rc/negotiate-only-typofix later to maint).
   (merge 0f03f04c5c en/sparse-checkout-leakfix later to maint).
   (merge 74f3390dde sy/diff-usage-typofix later to maint).
   (merge 45d0212a71 ll/doc-mktree-typofix later to maint).
   (merge e9b272e4c1 js/no-more-legacy-stash later to maint).
   (merge 6798b08e84 ab/do-not-hide-failures-in-git-dot-pm later to maint).
   (merge 9325285df4 po/doc-check-ignore-markup-fix later to maint).
   (merge cd26cd6c7c sy/modernize-t-lib-read-tree-m-3way later to maint).
   (merge d17294a05e ab/hash-object-leakfix later to maint).
   (merge b8403129d3 jd/t0015-modernize later to maint).
   (merge 332acc248d ds/mailmap later to maint).
   (merge 04bf052eef ab/grep-patterntype later to maint).
   (merge 6ee36364eb ab/diff-free-more later to maint).
   (merge 63a36017fe nj/read-tree-doc-reffix later to maint).
   (merge eed36fce38 sm/no-git-in-upstream-of-pipe-in-tests later to maint).
   (merge c614beb933 ep/t6423-modernize later to maint).
   (merge 57be9c6dee ab/reflog-prep-fix later to maint).
   (merge 5327d8982a js/in-place-reverse-in-sequencer later to maint).
   (merge 2e2c0be51e dp/worktree-repair-in-usage later to maint).
   (merge 6563706568 jc/coding-guidelines-decl-in-for-loop later to maint).

----------------------------------------------------------------

Changes since v2.35.0 are as follows:

Abhradeep Chakraborty (2):
      amend remaining usage strings according to style guide
      partial-clone: add a partial-clone test case

Alex Henrie (3):
      log: fix memory leak if --graph is passed multiple times
      log: add a --no-graph option
      switch: mention the --detach option when dying due to lack of a branch

Atharva Raykar (5):
      submodule--helper: get remote names from any repository
      submodule--helper: refactor get_submodule_displaypath()
      submodule--helper: allow setting superprefix for init_submodule()
      submodule--helper: run update using child process struct
      submodule: move core cmd_update() logic to C

Bagas Sanjaya (1):
      fetch-pack: parameterize message containing 'ready' keyword

COGONI Guillaume (3):
      t/t3903-stash.sh: replace test [-d|-f] with test_path_is_*
      tests: allow testing if a path is truly a file or a directory
      tests: make the code more readable

Chen Bojun (1):
      receive-pack: purge temporary data if no command is ready to run

David Cantrell (1):
      completion: tab completion of filenames for 'git restore'

Derrick Stolee (45):
      Documentation: add extensions.worktreeConfig details
      worktree: create init_worktree_config()
      config: add repo_config_set_worktree_gently()
      sparse-checkout: set worktree-config correctly
      worktree: copy sparse-checkout patterns and config on add
      config: make git_configset_get_string_tmp() private
      mailmap: change primary address for Derrick Stolee
      dir: force untracked cache with core.untrackedCache
      worktree: combine two translatable messages
      worktree: extract copy_filtered_worktree_config()
      worktree: extract copy_sparse_checkout()
      worktree: extract checkout_worktree()
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      test-read-graph: include extra post-parse info
      t5318: extract helpers to lib-commit-graph.sh
      commit-graph: fix ordering bug in generation numbers
      commit-graph: start parsing generation v2 (again)
      commit-graph: fix generation number v2 overflow values
      commit-graph: declare bankruptcy on GDAT chunks
      index-pack: document and test the --promisor option
      list-objects-filter-options: create copy helper
      revision: put object filter into struct rev_info
      pack-objects: use rev.filter when possible
      pack-bitmap: drop filter in prepare_bitmap_walk()
      list-objects: consolidate traverse_commit_list[_filtered]
      MyFirstObjectWalk: update recommended usage
      bundle: parse filter capability
      rev-list: move --filter parsing into revision.c
      bundle: create filtered bundles
      bundle: unbundle promisor packs
      clone: fail gracefully when cloning filtered bundle
      maintenance: fix synopsis in documentation
      list-objects-filter: remove CL_ARG__FILTER
      pack-objects: move revs out of get_object_list()
      pack-objects: parse --filter directly into revs.filter
      bundle: move capabilities to end of 'verify'
      bundle: output hash information in 'verify'
      t7700: check post-condition in kept-pack test
      test-lib-functions: remove test_subcommand_inexact

Des Preston (1):
      worktree: include repair cmd in usage

Elia Pinto (8):
      test-lib.sh: Use GLIBC_TUNABLES instead of MALLOC_CHECK_ on glibc >= 2.34
      t6423-merge-rename-directories.sh: use the $(...) construct
      attr.c: delete duplicate include
      builtin/gc.c: delete duplicate include
      builtin/sparse-checkout.c: delete duplicate include
      builtin/stash.c: delete duplicate include
      t/helper/test-run-command.c: delete duplicate include
      attr.h: remove duplicate struct definition

Elijah Newren (33):
      t1011: add testcase demonstrating accidental loss of user modifications
      unpack-trees: fix accidental loss of user changes
      repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
      Update documentation related to sparsity and the skip-worktree bit
      Accelerate clear_skip_worktree_from_present_files() by caching
      merge-ort: avoid assuming all renames detected
      merge-ort: fix memory leak in merge_ort_internal()
      merge: fix memory leaks in cmd_merge()
      sequencer, stash: fix running from worktree subdir
      sparse-checkout: fix a couple minor memory leaks
      repo-settings: fix checking for fetch.negotiationAlgorithm=default
      repo-settings: fix error handling for unknown values
      repo-settings: rename the traditional default fetch.negotiationAlgorithm
      show, log: provide a --remerge-diff capability
      log: clean unneeded objects during `log --remerge-diff`
      ll-merge: make callers responsible for showing warnings
      merge-ort: capture and print ll-merge warnings in our preferred fashion
      merge-ort: mark a few more conflict messages as omittable
      merge-ort: format messages slightly different for use in headers
      diff: add ability to insert additional headers for paths
      show, log: include conflict/warning messages in --remerge-diff headers
      merge-ort: mark conflict/warning messages from inner merges as omittable
      diff-merges: avoid history simplifications when diffing merges
      merge-ort: make informational messages from recursive merges clearer
      sparse-checkout: correct reapply's handling of options
      sparse-checkout: correctly set non-cone mode when expected
      sparse-checkout: pay attention to prefix for {set, add}
      sparse-checkout: error or warn when given individual files
      sparse-checkout: reject arguments in cone-mode that look like patterns
      merge-ort: fix small memory leak in detect_and_process_renames()
      merge-ort: fix small memory leak in unique_path()
      merge-ort: exclude messages from inner merges by default
      repo_read_index: add config to expect files outside sparse patterns

Emily Shaffer (14):
      hook: add 'run' subcommand
      gc: use hook library for pre-auto-gc hook
      am: convert {pre,post}-applypatch to use hook.h
      rebase: convert pre-rebase to use hook.h
      am: convert applypatch-msg to use hook.h
      merge: convert post-merge to use hook.h
      hooks: convert non-worktree 'post-checkout' hook to hook library
      hooks: convert worktree 'post-checkout' hook to hook library
      send-email: use 'git hook run' for 'sendemail-validate'
      git-p4: use 'git hook' to run hooks
      commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
      read-cache: convert post-index-change to use hook.h
      receive-pack: convert push-to-checkout hook to hook.h
      run-command: remove old run_hook_{le,ve}() hook API

Fabian Stelzer (2):
      gpg-interface: trim CR from ssh-keygen
      gpg-interface/gpgsm: fix for v2.3

Glen Choo (39):
      fetch: use goto cleanup in cmd_fetch()
      fetch: skip tasks related to fetching objects
      fetch --negotiate-only: do not update submodules
      branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
      branch: make create_branch() always create a branch
      branch: add a dry_run parameter to create_branch()
      builtin/branch: consolidate action-picking logic in cmd_branch()
      branch: add --recurse-submodules option for branch creation
      branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
      stash: strip "refs/heads/" with skip_prefix
      checkout, clone: die if tree cannot be parsed
      submodule--helper: remove update-module-mode
      submodule--helper: reorganize code for sh to C conversion
      submodule--helper run-update-procedure: remove --suboid
      submodule--helper run-update-procedure: learn --remote
      submodule--helper update-clone: learn --init
      submodule--helper: remove ensure-core-worktree
      submodule update: add tests for --filter
      submodule--helper update-clone: check for --filter and --init
      t5526: introduce test helper to assert on fetches
      t5526: stop asserting on stderr literally
      t5526: create superproject commits with test helper
      submodule: make static functions read submodules from commits
      submodule: inline submodule_commits() into caller
      submodule: store new submodule commits oid_array in a struct
      submodule: extract get_fetch_task()
      submodule: move logic into fetch_task_create()
      submodule update: use die_message()
      submodule--helper: teach update_data more options
      submodule--helper: reduce logic in run_update_procedure()
      submodule--helper: remove forward declaration
      fetch: fetch unpopulated, changed submodules
      submodule: fix latent check_has_commit() bug
      branch: support more tracking modes when recursing
      branch: give submodule updating advice before exit
      branch --set-upstream-to: be consistent when advising
      branch: remove negative exit code
      branch: rework comments for future developers
      branch.c: simplify advice-and-die sequence

Greg Hurrell (2):
      Documentation/config/pgp.txt: replace stray <TAB> character with <SPC>
      Documentation/config/pgp.txt: add missing apostrophe

Han-Wen Nienhuys (27):
      reftable: fix OOB stack write in print functions
      reftable: fix resource leak in block.c error path
      reftable: fix resource leak blocksource.c
      reftable: check reftable_stack_auto_compact() return value
      reftable: ignore remove() return value in stack_test.c
      reftable: fix resource warning
      reftable: all xxx_free() functions accept NULL arguments
      reftable: order unittests by complexity
      reftable: drop stray printf in readwrite_test
      reftable: handle null refnames in reftable_ref_record_equal
      reftable: make reftable-record.h function signatures const correct
      reftable: implement record equality generically
      reftable: remove outdated file reftable.c
      reftable: make reftable_record a tagged union
      reftable: add print functions to the record types
      t1405: explictly delete reflogs for reftable
      t1405: mark test that checks existence as REFFILES
      t5312: prepare for reftable
      t1410: use test-tool ref-store to inspect reflogs
      t1410: mark bufsize boundary test as REFFILES
      Documentation: object_id_len goes up to 31
      reftable: reject 0 object_id_len
      reftable: add a test that verifies that writing empty keys fails
      reftable: avoid writing empty keys at the block layer
      reftable: ensure that obj_id_len is >= 2 on writing
      reftable: add test for length of disambiguating prefix
      reftable: rename writer_stats to reftable_writer_stats

Jacob Keller (1):
      name-rev: use generation numbers if available

Jason Yundt (2):
      comment: fix typo
      gitweb: remove invalid http-equiv="content-type"

Jayati Shrivastava (1):
      sequencer: use reverse_commit_list() helper

Jaydeep Das (1):
      t/t0015-hash.sh: remove unnecessary '\' at line end

Jaydeep P Das (1):
      userdiff: add builtin diff driver for kotlin language.

Jean-Noël Avila (4):
      i18n: factorize more 'incompatible options' messages
      i18n: factorize "invalid value" messages
      i18n: remove from i18n strings that do not hold translatable parts
      i18n: fix some misformated placeholders in command synopsis

Jeff Hostetler (30):
      fsmonitor: enhance existing comments, clarify trivial response handling
      fsmonitor-ipc: create client routines for git-fsmonitor--daemon
      fsmonitor: config settings are repository-specific
      fsmonitor: use IPC to query the builtin FSMonitor daemon
      fsmonitor: document builtin fsmonitor
      fsmonitor--daemon: add a built-in fsmonitor daemon
      fsmonitor--daemon: implement 'stop' and 'status' commands
      compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
      compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
      fsmonitor--daemon: implement 'run' command
      fsmonitor--daemon: implement 'start' command
      fsmonitor--daemon: add pathname classification
      fsmonitor--daemon: define token-ids
      fsmonitor--daemon: create token-based changed path cache
      compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
      compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent
      compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
      fsmonitor--daemon: implement handle_client callback
      help: include fsmonitor--daemon feature flag in version info
      t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
      t7527: create test for fsmonitor--daemon
      t/perf: avoid copying builtin fsmonitor files into test repo
      t/helper/test-chmtime: skip directories on Windows
      t/perf/p7519: fix coding style
      t/perf/p7519: speed up test on Windows
      t/perf/p7519: add fsmonitor--daemon test cases
      fsmonitor--daemon: periodically truncate list of modified files
      fsmonitor--daemon: use a cookie file to sync with file system
      fsmonitor: force update index after large responses
      t7527: test status with untracked-cache and fsmonitor--daemon

Jerry Zhang (3):
      git-rev-list: add --exclude-first-parent-only flag
      patch-id: fix antipatterns in tests
      patch-id: fix scan_hunk_header on diffs with 1 line of before/after

Jessica Clarke (1):
      mem-pool: don't assume uintmax_t is aligned enough for all types

Joel Holdsworth (4):
      git-p4: don't select shell mode using the type of the command argument
      git-p4: pass command arguments as lists instead of using shell
      git-p4: don't print shell commands as python lists
      git-p4: fix instantiation of CalledProcessError

Johannes Schindelin (14):
      sparse-index: sparse index is disallowed when split index is active
      t1091: disable split index
      split-index: it really is incompatible with the sparse index
      git-sh-setup: remove remnant bits referring to `git-legacy-stash`
      add: remove support for `git-legacy-stash`
      stash: remove documentation for `stash.useBuiltin`
      stash: stop warning about the obsolete `stash.useBuiltin` config setting
      docs(diff): lose incorrect claim about `diff-files --diff-filter=A`
      diff.c: move the diff filter bits definitions up a bit
      diff-filter: be more careful when looking for negative bits
      scalar: accept -C and -c options before the subcommand
      checkout/fetch/pull/pack-objects: allow `-h` outside a repository
      t0012: verify that built-ins handle `-h` even without gitdir
      cocci: allow padding with `strbuf_addf()`

John Cai (15):
      receive-pack.c: consolidate find header logic
      name-rev: deprecate --stdin in favor of --annotate-stdin
      name-rev.c: use strbuf_getline instead of limited size buffer
      builtin/reflog.c: use parse-options api for expire, delete subcommands
      name-rev: replace --stdin with --annotate-stdin in synopsis
      cat-file: rename cmdmode to transform_mode
      cat-file: introduce batch_mode enum to replace print_contents
      cat-file: add remove_timestamp helper
      cat-file: add --batch-command mode
      stash: add tests to ensure reflog --rewrite --updatref behavior
      reflog: libify delete reflog function and helpers
      stash: call reflog_delete() in reflog.c
      cat-file: skip expanding default format
      rebase: use test_commit helper in setup
      rebase: set REF_HEAD_DETACH in checkout_up_to_date()

Jonathan Tan (6):
      config: make git_config_include() static
      config: include file if remote URL matches a glob
      sparse-checkout: create leading directory
      clone: support unusual remote ref configurations
      ls-files: support --recurse-submodules --stage
      shallow: reset commit grafts when shallow is reset

Josh Steadmon (2):
      test-lib: unset trace2 parent envvars
      clone, submodule: pass partial clone filters to submodules

Junio C Hamano (31):
      compat/qsort_s.c: avoid using potentially unaligned access
      fetch: help translators by reusing the same message template
      Start post 2.35 cycle
      SubmittingPatches: write problem statement in the log in the present tense
      CodingGuidelines: hint why we value clearly written log messages
      SubmittingPatches: explain why we care about log messages
      Git 2.35.1
      Name the next one 2.36 to prepare for 2.35.1
      The first batch
      The second batch for 2.36
      glossary: describe "worktree"
      The third batch
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      The eighth batch
      rerere-train: two fixes to the use of "git show -s"
      am/apply: warn if we end up reading patches from terminal
      The ninth batch
      The tenth batch
      The eleventh batch
      The twelfth batch
      The thirteenth batch
      The 14th batch
      reset: show --no-refresh in the short-help
      The 15th batch
      The 16th batch
      The 17th batch
      CodingGuidelines: give deadline for "for (int i = 0; ..."
      Git 2.36-rc0

Justin Donnelly (4):
      git-prompt: rename `upstream` to `upstream_type`
      git-prompt: make upstream state indicator location consistent
      git-prompt: make long upstream state indicator consistent
      git-prompt: put upstream comments together

Lessley Dennington (3):
      completion: address sparse-checkout issues
      completion: improve sparse-checkout cone mode directory completion
      completion: handle unusual characters for sparse-checkout

Liginity Lee (1):
      fix typo in git-mktree.txt

Marc Strapetz (4):
      test-lib: introduce API for verifying file mtime
      t7508: fix bogus mtime verification
      t7508: add tests capturing racy timestamp handling
      update-index: refresh should rewrite index in case of racy timestamps

Matheus Felipe (1):
      config: correct "--type" option in "git config -h" output

Matt Cooper (1):
      index-pack: clarify the breached limit

Michael J Gruber (2):
      test-lib: declare local variables as local
      tests: demonstrate "show --word-diff --color-moved" regression

Neeraj Singh (10):
      wrapper: make inclusion of Windows csprng header tightly scoped
      core.fsyncmethod: add writeout-only mode
      core.fsync: introduce granular fsync control infrastructure
      core.fsync: add configuration parsing
      core.fsync: new option to harden the index
      core.fsync: documentation and user-friendly aggregate options
      core.fsync: fix incorrect expression for default configuration
      trace2: add stats for fsync operations
      core.fsyncmethod: correctly camel-case warning message
      object-file: pass filename to fsync_or_die

Nihal Jere (1):
      Documentation: git-read-tree: separate links using commas

Patrick Steinhardt (24):
      refs: extract packed_refs_delete_refs() to allow control of transaction
      refs: allow passing flags when beginning transactions
      refs: allow skipping the reference-transaction hook
      refs: demonstrate excessive execution of the reference-transaction hook
      refs: do not execute reference-transaction hook on packing refs
      refs: skip hooks when deleting uncovered packed refs
      fetch-pack: use commit-graph when computing cutoff
      fetch: skip computing output width when not printing anything
      fetch: increase test coverage of fetches
      fetch: backfill tags before setting upstream
      fetch: control lifecycle of FETCH_HEAD in a single place
      fetch: report errors when backfilling tags fails
      refs: add interface to iterate over queued transactional updates
      fetch: make `--atomic` flag cover backfilling of tags
      fetch: make `--atomic` flag cover pruning of refs
      upload-pack: look up "want" lines via commit-graph
      fetch: avoid lookup of commits when not appending to FETCH_HEAD
      refs: add ability for backends to special-case reading of symbolic refs
      remote: read symbolic refs via `refs_read_symbolic_ref()`
      refs/files-backend: optimize reading of symbolic refs
      t5503: simplify setup of test which exercises failure of backfill
      repack: refactor to avoid double-negation of update-server-info
      repack: add config to skip updating server info
      core.fsync: new option to harden references

Philip Oakley (2):
      README.md: add CodingGuidelines and a link for Translators
      doc: check-ignore: code-quote an exclamation mark

Philippe Blain (1):
      pull --rebase: honor rebase.autostash when fast-forwarding

Phillip Wood (29):
      t3701: clean up hunk splitting tests
      builtin add -p: fix hunk splitting
      rebase: factor out checkout for up to date branch
      t5403: refactor rebase post-checkout hook tests
      rebase: pass correct arguments to post-checkout hook
      rebase: do not remove untracked files on checkout
      rebase --apply: don't run post-checkout hook if there is an error
      reset_head(): remove action parameter
      reset_head(): factor out ref updates
      reset_head(): make default_reflog_action optional
      create_autostash(): remove unneeded parameter
      rebase: cleanup reset_head() calls
      reset_head(): take struct rebase_head_opts
      rebase --apply: fix reflog
      rebase --apply: set ORIG_HEAD correctly
      rebase -m: don't fork git checkout
      xdiff: fix a memory leak
      xdiff: handle allocation failure in patience diff
      xdiff: refactor a function
      xdiff: handle allocation failure when merging
      terminal: always reset terminal when reading without echo
      terminal: pop signal handler when terminal is restored
      terminal: set VMIN and VTIME in non-canonical mode
      add -p: disable stdin buffering when interactive.singlekey is set
      terminal: use flags for save_term()
      terminal: don't assume stdin is /dev/tty
      terminal: work around macos poll() bug
      terminal: restore settings on SIGTSTP
      worktree: add -z option for list subcommand

René Scharfe (10):
      grep: use grep_or_expr() in compile_pattern_or()
      grep: use grep_not_expr() in compile_pattern_not()
      apply: use strsets to track symlinks
      stable-qsort: avoid using potentially unaligned access
      bisect--helper: report actual bisect_state() argument on error
      bisect--helper: release strbuf and strvec on run error
      bisect: document run behavior with exit codes 126 and 127
      bisect--helper: double-check run command on exit code 126 and 127
      parse-options: document bracketing of argh
      grep: fix triggering PCRE2_NO_START_OPTIMIZE workaround

Robert Coup (8):
      fetch: fix negotiate-only error message
      fetch-negotiator: add specific noop initializer
      fetch-pack: add refetch
      builtin/fetch-pack: add --refetch option
      fetch: add --refetch option
      t5615-partial-clone: add test for fetch --refetch
      fetch: after refetch, encourage auto gc repacking
      docs: mention --refetch fetch option

SZEDER Gábor (1):
      reflog: fix 'show' subcommand's argv

Shaoxuan Yuan (4):
      builtin/diff.c: fix "git-diff" usage string typo
      t/lib-read-tree-m-3way: modernize style
      t/lib-read-tree-m-3way: indent with tabs
      t0001: replace "test [-d|-f]" with test_path_is_* functions

Shubham Mishra (3):
      t0003: avoid pipes with Git on LHS
      t0001-t0028: avoid pipes with Git on LHS
      t0030-t0050: avoid pipes with Git on LHS

Tao Klerks (6):
      t7519: avoid file to index mtime race for untracked cache
      t7519: populate untracked cache before test
      untracked-cache: write index when populating empty untracked cache
      t/helper/test-chmtime: update mingw to support chmtime on directories
      t7063: mtime-mangling instead of delays in untracked cache testing
      tracking branches: add advice to ambiguous refspec error

Taylor Blau (15):
      grep: extract grep_binexp() from grep_or_expr()
      grep: use grep_and_expr() in compile_pattern_and()
      t5326: demonstrate bitmap corruption after permutation
      midx.c: make changing the preferred pack safe
      pack-revindex.c: instrument loading on-disk reverse index
      t5326: drop unnecessary setup
      t5326: extract `test_rev_exists`
      t5326: move tests to t/lib-bitmap.sh
      t/lib-bitmap.sh: parameterize tests over reverse index source
      midx: read `RIDX` chunk when present
      pack-bitmap.c: gracefully fallback after opening pack/MIDX
      midx: prevent writing a .bitmap without any objects
      CODE_OF_CONDUCT.md: update PLC members list
      builtin/remote.c: parse options in 'rename'
      builtin/remote.c: show progress when renaming remote references

Teng Long (6):
      git-cli.txt: clarify "options first and then args"
      ls-tree: rename "retval" to "recurse" in "show_tree()"
      ls-tree: simplify nesting if/else logic in "show_tree()"
      ls-tree: fix "--name-only" and "--long" combined use bug
      ls-tree: slightly refactor `show_tree()`
      ls-tree: support --object-only option for "git-ls-tree"

Thomas Gummerer (1):
      fetch --prune: exit with error if pruning fails

Thomas Koutcher (1):
      subtree: force merge commit

Todd Zullinger (2):
      t/lib-gpg: reload gpg components after updating trustlist
      t/lib-gpg: kill all gpg components, not just gpg-agent

Victoria Dye (29):
      reset: fix validation in sparse index test
      reset: reorder wildcard pathspec conditions
      clean: integrate with sparse index
      checkout-index: expand sparse checkout compatibility tests
      checkout-index: add --ignore-skip-worktree-bits option
      checkout-index: integrate with sparse index
      update-index: add tests for sparse-checkout compatibility
      update-index: integrate with sparse index
      update-index: reduce scope of index expansion in do_reupdate
      sparse-index: prevent repo root from becoming sparse
      status: fix nested sparse directory diff in sparse index
      read-tree: explicitly disallow prefixes with a leading '/'
      read-tree: expand sparse checkout test coverage
      read-tree: integrate with sparse index
      read-tree: narrow scope of index expansion for '--prefix'
      read-tree: make two-way merge sparse-aware
      read-tree: make three-way merge sparse-aware
      reset: revise index refresh advice
      reset: introduce --[no-]refresh option to --mixed
      reset: replace '--quiet' with '--no-refresh' in performance advice
      reset: suppress '--no-refresh' advice if logging is silenced
      stash: make internal resets quiet and refresh index
      t1092: add sparse directory before cone in test repo
      unpack-trees: increment cache_bottom for sparse directories
      Revert "unpack-trees: improve performance of next_cache_entry"
      reset: do not make '--quiet' disable index refresh
      reset: remove 'reset.quiet' config option
      reset: remove 'reset.refresh' config option
      mv: refresh stat info for moved entry

brian m. carlson (6):
      t0027: add tests for eol without text in .gitattributes
      docs: correct documentation about eol attribute
      wrapper: add a helper to generate numbers from a CSPRNG
      wrapper: use a CSPRNG to generate random file names
      doc: clarify interaction between 'eol' and text=auto
      block-sha1: remove use of obsolete x86 assembly

Ævar Arnfjörð Bjarmason (183):
      cat-file tests: test bad usage
      cat-file tests: test messaging on bad objects/paths
      parse-options API: add a usage_msg_optf()
      cat-file docs: fix SYNOPSIS and "-h" output
      cat-file: move "usage" variable to cmd_cat_file()
      cat-file: make --batch-all-objects a CMDMODE
      cat-file: fix remaining usage bugs
      cat-file: correct and improve usage information
      object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
      cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
      hook API: add a run_hooks() wrapper
      hook API: add a run_hooks_l() wrapper
      git hook run: add an --ignore-missing flag
      cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
      cat-file: s/_/-/ in typo'd usage_msg_optf() message
      compat: auto-detect if zlib has uncompress2()
      sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure
      refs API: remove "failure_errno" from refs_resolve_ref_unsafe()
      object-name tests: add tests for ambiguous object blind spots
      object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
      object-name: explicitly handle bad tags in show_ambiguous_object()
      object-name: make ambiguous object output translatable
      object-name: show date for ambiguous tag objects
      object-name: iterate ambiguous objects before showing header
      object-name: re-use "struct strbuf" in show_ambiguous_object()
      perl Git.pm: don't ignore signalled failure in _cmd_close()
      completion tests: re-source git-completion.bash in a subshell
      completion: add a GIT_COMPLETION_SHOW_ALL_COMMANDS
      leak tests: fix a memory leak in "test-progress" helper
      progress.c test helper: add missing braces
      progress.c tests: make start/stop commands on stdin
      progress.c tests: test some invalid usage
      progress.h: format and be consistent with progress.c naming
      progress.c: use dereferenced "progress" variable, not "(*p_progress)"
      progress.c: refactor stop_progress{,_msg}() to use helpers
      progress API: unify stop_progress{,_msg}(), fix trace2 bug
      pack-bitmap-write.c: don't return without stop_progress()
      t0051: use "skip_all" under !MINGW in single-test file
      hash-object: fix a trivial leak in --path
      ls-remote & transport API: release "struct transport_ls_refs_options"
      grep.h: remove unused "regex_t regexp" from grep_opt
      log tests: check if grep_config() is called by "log"-like cmds
      grep tests: create a helper function for "BRE" or "ERE"
      grep tests: add missing "grep.patternType" config tests
      built-ins: trust the "prefix" from run_builtin()
      grep.c: don't pass along NULL callback value
      grep API: call grep_config() after grep_init()
      grep.h: make "grep_opt.pattern_type_option" use its enum
      grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
      grep: simplify config parsing and option parsing
      cache.h: remove always unused show_date_human() declaration
      date API: create a date.h, split from cache.h
      date API: provide and use a DATE_MODE_INIT
      date API: add basic API docs
      date API: add and use a date_mode_release()
      diff.[ch]: have diff_free() call clear_pathspec(opts.pathspec)
      diff.[ch]: have diff_free() free options->parseopts
      hook tests: test for exact "pre-push" hook input
      hook tests: use a modern style for "pre-push" tests
      git-compat-util.h: clarify GCC v.s. C99-specific in comment
      C99: remove hardcoded-out !HAVE_VARIADIC_MACROS code
      help doc: add missing "]" to "[-a|--all]"
      help.c: use puts() instead of printf{,_ln}() for consistency
      help tests: test "git" and "git help [-a|-g] spacing
      help.c: split up list_all_cmds_help() function
      help: note the option name on option incompatibility
      help: correct usage & behavior of "git help --all"
      help: error if [-a|-g|-c] and [-i|-m|-w] are combined
      help: add --no-[external-commands|aliases] for use with --all
      help: don't print "\n" before single-section output
      imap-send.c: use designated initializers for "struct imap_server_conf"
      trace2: use designated initializers for "struct tr2_tgt"
      trace2: use designated initializers for "struct tr2_dst"
      object-file: use designated initializers for "struct git_hash_algo"
      archive-*.c: use designated initializers for "struct archiver"
      userdiff.c: use designated initializers for "struct userdiff_driver"
      convert.c: use designated initializers for "struct stream_filter*"
      refspec.c: use designated initializers for "struct refspec_item"
      fast-import.c: use designated initializers for "partial" struct assignments
      object-file.c: split up declaration of unrelated variables
      object-file API: return "void", not "int" from hash_object_file()
      object-file API: add a format_object_header() function
      object-file API: have write_object_file() take "enum object_type"
      object API: correct "buf" v.s. "map" mismatch in *.c and *.h
      object API docs: move check_object_signature() docs to cache.h
      object API users + docs: check <0, not !0 with check_object_signature()
      object-file API: split up and simplify check_object_signature()
      object API: rename hash_object_file_literally() to write_*()
      object-file API: have hash_object_file() take "enum object_type"
      object-file.c: add a literal version of write_object_file_prepare()
      object-file API: pass an enum to read_object_with_reference()
      test-lib: add GIT_SAN_OPTIONS, inherit [AL]SAN_OPTIONS
      test-lib: correct and assert TEST_DIRECTORY overriding
      test-lib: make $GIT_BUILD_DIR an absolute path
      test-lib: add "fast_unwind_on_malloc=0" to LSAN_OPTIONS
      scalar Makefile: use "The default target of..." pattern
      Makefiles: add "shared.mak", move ".DELETE_ON_ERROR" to it
      Makefile: disable GNU make built-in wildcard rules
      Makefile: define $(LIB_H) in terms of $(FIND_SOURCE_FILES)
      Makefile: move ".SUFFIXES" rule to shared.mak
      Makefile: move $(comma), $(empty) and $(space) to shared.mak
      Makefile: add "$(QUIET)" boilerplate to shared.mak
      Makefiles: add and use wildcard "mkdir -p" template
      log tests: fix "abort tests early" regression in ff37a60c369
      index-pack: fix memory leaks
      merge-base: free() allocated "struct commit **" list
      diff.c: free "buf" in diff_words_flush()
      urlmatch.c: add and use a *_release() function
      remote-curl.c: free memory in cmd_main()
      bundle: call strvec_clear() on allocated strvec
      transport: stop needlessly copying bundle header references
      submodule--helper: fix trivial leak in module_add()
      commit-graph: fix memory leak in misused string_list API
      commit-graph: stop fill_oids_from_packs() progress on error and free()
      lockfile API users: simplify and don't leak "path"
      range-diff: plug memory leak in common invocation
      range-diff: plug memory leak in read_patches()
      repository.c: free the "path cache" in repo_clear()
      submodule tests: test for init and update failure output
      submodule--helper: don't use bitfield indirection for parse_options()
      gettext API users: don't explicitly cast ngettext()'s "n"
      string-list API: change "nr" and "alloc" to "size_t"
      merge: don't run post-hook logic on --no-verify
      hooks: fix an obscure TOCTOU "did we just run a hook?" race
      tests: change some 'test $(git) = "x"' to test_cmp
      tests: use "test_stdout_line_count", not "test $(git [...] | wc -l)"
      read-tree tests: check "diff-files" exit code on failure
      diff tests: don't ignore "git diff" exit code
      diff tests: don't ignore "git diff" exit code in "read" loop
      apply tests: use "test_must_fail" instead of ad-hoc pattern
      merge tests: use "test_must_fail" instead of ad-hoc pattern
      rev-parse tests: don't ignore "git reflog" exit code
      notes tests: don't ignore "git" exit code
      diff tests: don't ignore "git rev-list" exit code
      rev-list tests: don't hide abort() in "test_expect_failure"
      gettext tests: don't ignore "test-tool regex" exit code
      apply tests: don't ignore "git ls-files" exit code, drop sub-shell
      checkout tests: don't ignore "git <cmd>" exit code
      rev-list simplify tests: don't ignore "git" exit code
      list-objects: handle NULL function pointers
      reflog: don't be noisy on empty reflogs
      builtin/submodule--helper.c: rename option struct to "opt"
      test-lib-functions: add and use a "test_hook" wrapper
      hook tests: turn exit code assertions into a loop
      http tests: don't rely on "hook/post-update.sample"
      tests: assume the hooks are disabled by default
      bugreport tests: tighten up "git bugreport -s hooks" test
      fetch+push tests: use "test_hook" and "test_when_finished" pattern
      gc + p4 tests: use "test_hook", remove sub-shells
      tests: change "cat && chmod +x" to use "test_hook"
      tests: change "mkdir -p && write_script" to use "test_hook"
      tests: use "test_hook" for misc "mkdir -p" and "chmod" cases
      diff.c: fix a double-free regression in a18d66cefb
      refs: use designated initializers for "struct ref_storage_be"
      refs: use designated initializers for "struct ref_iterator_vtable"
      misc *.c: use designated initializers for struct assignments
      packed-backend: remove stub BUG(...) functions
      refs debug: add a wrapper for "read_symbolic_ref"
      tests: extend "test_hook" for "rm" and "chmod -x", convert "$HOOK"
      proc-receive hook tests: use "test_hook" instead of "write_script"
      http tests: use "test_hook" for "smart" and "dumb" http tests
      reflog.c: indent argument lists
      reflog: refactor cmd_reflog() to "if" branches
      reflog tests: add missing "git reflog exists" tests
      reflog: move "usage" variables and use macros
      git reflog [expire|delete]: make -h output consistent with SYNOPSIS
      reflog exists: use parse_options() API
      Makefile: use ' ', not non-existing $(wspfx_SQ)
      ls-tree tests: add tests for --name-status
      ls-tree: remove commented-out code
      ls-tree: add missing braces to "else" arms
      ls-tree: use "enum object_type", not {blob,tree,commit}_type
      ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
      ls-tree: introduce struct "show_tree_data"
      ls-tree: introduce "--format" option
      ls-tree: detect and error on --name-only --name-status
      ls-tree: split up "fast path" callbacks
      hooks: fix "invoked hook" regression in a8cc5943338
      reflog: convert to parse_options() API
      reflog [show]: display sensible -h output
      test-lib: have --immediate emit valid TAP on failure
      pack-objects: lazily set up "struct rev_info", don't leak
      reftable: make assignments portable to AIX xlc v12.01


^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Feb 2022, #03; Sat, 12)
@ 2022-02-13  9:24  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-02-13  9:24 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking in my tree.  Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen',
which means nothing more than that I have found them of interest for
some reason (like "it may have hard-to-resolve conflicts with
another topic already in flight" or "this may turn out to be
useful").  Do not read too much into a topic being in (or not in)
'seen'.  The ones marked with '.' do not appear in any of the
integration branches, but I am still holding onto them.

The third batch of topics have been merged.

Many new topics have sketchy or even empty topic description in the
list below; help to fill them in is very much appreciated ;-)

Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors.  Some
repositories have only a subset of branches.

With maint, master, next, seen, todo:

	git://git.kernel.org/pub/scm/git/git.git/
	git://repo.or.cz/alt-git.git/
	https://kernel.googlesource.com/pub/scm/git/git/
	https://github.com/git/git/
	https://gitlab.com/git-vcs/git/

With all the integration branches and topics broken out:

	https://github.com/gitster/git/

Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):

	git://git.kernel.org/pub/scm/git/git-htmldocs.git/
	https://github.com/gitster/git-htmldocs.git/

Release tarballs are available at:

	https://www.kernel.org/pub/software/scm/git/

--------------------------------------------------
[Graduated to 'master']

* ab/no-errno-from-resolve-ref-unsafe (2022-01-26) 2 commits
  (merged to 'next' on 2022-02-04 at d98254efe0)
 + refs API: remove "failure_errno" from refs_resolve_ref_unsafe()
 + sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure

 Remaining code-clean-up.
 source: <cover-v4-0.2-00000000000-20220126T143427Z-avarab@gmail.com>


* bc/clarify-eol-attr (2022-01-12) 2 commits
  (merged to 'next' on 2022-02-04 at dc1db4bd21)
 + docs: correct documentation about eol attribute
 + t0027: add tests for eol without text in .gitattributes

 Doc and test update around the eol attribute.
 source: <20220111021507.531736-1-sandals@crustytoothpaste.net>


* bc/csprng-mktemps (2022-01-17) 2 commits
  (merged to 'next' on 2022-02-04 at 2e32375c73)
 + wrapper: use a CSPRNG to generate random file names
 + wrapper: add a helper to generate numbers from a CSPRNG

 Pick a better random number generator and use it when we prepare
 temporary filenames.
 source: <20220117215617.843190-1-sandals@crustytoothpaste.net>


* en/sparse-checkout-leakfix (2022-01-28) 1 commit
  (merged to 'next' on 2022-02-04 at 10ca176008)
 + sparse-checkout: fix a couple minor memory leaks

 Leakfix.
 source: <pull.1189.git.git.1643335098710.gitgitgadget@gmail.com>


* gh/doc-typos (2022-01-26) 2 commits
  (merged to 'next' on 2022-02-04 at b71e1bc746)
 + Documentation/config/pgp.txt: add missing apostrophe
 + Documentation/config/pgp.txt: replace stray <TAB> character with <SPC>

 Typofix.
 source: <20220126121426.53799-1-greg@hurrell.net>


* jc/doc-log-messages (2022-01-27) 3 commits
  (merged to 'next' on 2022-02-04 at cf136572ce)
 + SubmittingPatches: explain why we care about log messages
 + CodingGuidelines: hint why we value clearly written log messages
 + SubmittingPatches: write problem statement in the log in the present tense

 Update the contributor-facing documents on proposed log messages.
 source: <20220126234205.2923388-1-gitster@pobox.com>


* rc/negotiate-only-typofix (2022-01-28) 1 commit
  (merged to 'next' on 2022-02-04 at 62b947ddbf)
 + fetch: fix negotiate-only error message

 Typofix.
 source: <20220128143602.31842-1-robert@coup.net.nz>


* rs/parse-options-lithelp-help (2022-01-20) 1 commit
  (merged to 'next' on 2022-02-04 at 74bc57e8fa)
 + parse-options: document bracketing of argh

 Comment update.
 source: <c6ab4408-1091-4d14-849e-afe5f3053e8b@web.de>


* sy/diff-usage-typofix (2022-02-02) 1 commit
  (merged to 'next' on 2022-02-04 at 28a4186a44)
 + builtin/diff.c: fix "git-diff" usage string typo

 Typofix.
 source: <20220202072844.35545-1-shaoxuan.yuan02@gmail.com>


* tg/fetch-prune-exit-code-fix (2022-01-31) 1 commit
  (merged to 'next' on 2022-02-04 at 8af6ab286d)
 + fetch --prune: exit with error if pruning fails

 When "git fetch --prune" failed to prune the refs it wanted to
 prune, the command issued error messages but exited with exit
 status 0, which has been corrected.
 source: <20220131133047.1885074-1-t.gummerer@gmail.com>

--------------------------------------------------
[New Topics]

* jc/glossary-worktree (2022-02-09) 1 commit
  (merged to 'next' on 2022-02-10 at d05e2b6ea3)
 + glossary: describe "worktree"

 "working tree" and "per-worktree ref" were in glossary, but
 "worktree" itself wasn't, which has been corrected.

 Will merge to 'master'.
 source: <xmqqczjvxy3o.fsf@gitster.g>


* jd/t0015-modernize (2022-02-09) 1 commit
  (merged to 'next' on 2022-02-10 at a3733234c0)
 + t/t0015-hash.sh: remove unnecessary '\' at line end

 Test modernization.

 Will merge to 'master'.
 source: <20220208092339.651761-2-jaydeepjd.8914@gmail.com>


* hw/t1410-adjust-test-for-reftable (2022-02-09) 2 commits
 - t1410: mark bufsize boundary test as REFFILES
 - t1410: use test-tool ref-store to inspect reflogs

 Fix tests that are unnecessarily specific to ref-files backend.

 Will merge to 'next'.
 source: <pull.1213.git.git.1644406180.gitgitgadget@gmail.com>


* ps/fetch-optim-with-commit-graph (2022-02-10) 2 commits
 - fetch: skip computing output width when not printing anything
 - fetch-pack: use commit-graph when computing cutoff

 A couple of optimization to "git fetch".

 Will merge to 'next'.
 source: <cover.1644495978.git.ps@pks.im>


* pw/xdiff-alloc-fail (2022-02-09) 3 commits
 - xdiff: handle allocation failure when merging
 - xdiff: refactor a function
 - xdiff: handle allocation failure in patience diff

 Expecting a reroll.
 cf. <9c5b3acb-aabc-3a0d-f4e7-e10cec410dbe@gmail.com>
 source: <pull.1140.git.1644404356.gitgitgadget@gmail.com>


* sy/t0001-use-path-is-helper (2022-02-11) 1 commit
 - t0001: replace "test [-d|-f]" with test_path_is_* functions

 Test modernization.

 Will merge to 'next'.
 source: <20220121102109.433457-2-shaoxuan.yuan02@gmail.com>


* gc/recursive-fetch-with-unused-submodules (2022-02-10) 8 commits
 - submodule: fix bug and remove add_submodule_odb()
 - fetch: fetch unpopulated, changed submodules
 - submodule: extract get_fetch_task()
 - t5526: use grep to assert on fetches
 - t5526: introduce test helper to assert on fetches
 - submodule: make static functions read submodules from commits
 - submodule: store new submodule commits oid_array in a struct
 - submodule: inline submodule_commits() into caller

 When "git fetch --recurse-submodules" grabbed submodule commits
 that would be needed to recursively check out newly fetched commits
 in the superproject, it only paid attention to submodules that are
 in the current checkout of the superproject.  We now do so for all
 submodules that have been run "git submodule init" on.

 Will merge to 'next'?
 source: <20220210044152.78352-1-chooglen@google.com>


* ah/log-no-graph (2022-02-11) 2 commits
 - log: add a --no-graph option
 - log: fix memory leak if --graph is passed multiple times

 "git log --graph --graph" used to leak a graph structure, and there
 was no way to countermand "--graph" that appear earlier on the
 command line.  A "--no-graph" option has been added and resource
 leakage lhas been plugged.

 Will merge to 'next'.
 source: <20220211163627.598166-2-alexhenrie24@gmail.com>


* cg/t3903-modernize (2022-02-11) 1 commit
 - t/t3903-stash.sh: replace test [-d|-f] with test_path_is_*

 Test modernization.

 Will merge to 'next'?
 source: <20220211134655.1149320-1-cogoni.guillaume@gmail.com>

--------------------------------------------------
[Stalled]

* je/http-better-error-output (2021-12-03) 1 commit
 . http-backend: give a hint that web browser access is not supported

 When the http-backend program, which is the server-side component
 for the smart HTTP transport, sends a "404 Not found" error, we
 deliberately did not say anything to the requesting client.  We now
 send a message back to the browser to tell the user that they do
 not want to visit the URL via their browser, instead of a totally
 blank page.

 Expecting a reroll.
 Breaks its self tests.
 cf. <7r23s082-o3q0-479o-srqn-r45q778s5nq7@vanv.qr>
 source: <20211202102855.23907-1-jengelh@inai.de>


* cb/save-term-across-editor-invocation (2021-12-01) 3 commits
 - fixup! editor: allow for saving/restoring terminal state
 - editor: allow for saving/restoring terminal state
 - terminal: teach save_term to fail when not foreground

 Some editors are reported to leave the terminal in funny state
 after they exit on Windows.  Work it around by saving and restoring
 the terminal state when needed.

 Expecting a reroll.
 cf. <CAPUEsphktbdxeV7hvF52Or3CVHS8oOk5-WV=xfEZa8kfCVVnVg@mail.gmail.com>
 source: <20211202035446.1154-1-carenas@gmail.com>

--------------------------------------------------
[Cooking]

* ab/t0051-skip-on-non-windows (2022-02-04) 1 commit
  (merged to 'next' on 2022-02-10 at 3e587df1d6)
 + t0051: use "skip_all" under !MINGW in single-test file

 Conditional test update.

 Will merge to 'master'.
 source: <patch-v2-1.1-1bc93bcba4b-20220204T134208Z-avarab@gmail.com>


* ab/hash-object-leakfix (2022-02-06) 1 commit
  (merged to 'next' on 2022-02-10 at 14956d3087)
 + hash-object: fix a trivial leak in --path

 Trivial leakfix.

 Will merge to 'master'.
 source: <patch-1.1-53863df1455-20220205T000422Z-avarab@gmail.com>


* ab/release-transport-ls-refs-options (2022-02-06) 1 commit
  (merged to 'next' on 2022-02-10 at c4e57c2b29)
 + ls-remote & transport API: release "struct transport_ls_refs_options"

 Will merge to 'master'.
 source: <patch-1.1-e80e8f64eae-20220205T000809Z-avarab@gmail.com>


* js/bisect-in-c (2022-02-09) 11 commits
 - bisect: no longer try to clean up left-over `.git/head-name` files
 - bisect: remove Cogito-related code
 - Turn `git bisect` into a full built-in.
 - bisect--helper: using `--bisect-state` without an argument is a bug
 - bisect: move even the option parsing to `bisect--helper`
 - bisect--helper: make `--bisect-state` optional
 - bisect--helper: align the sub-command order with git-bisect.sh
 - bisect--helper: really retire `--bisect-autostart`
 - bisect--helper: really retire --bisect-next-check
 - bisect--helper: retire the --no-log option
 - bisect run: fix the error message

 Final bits of "git bisect.sh" have been rewritten in C.
 source: <pull.1132.git.1643328752.gitgitgadget@gmail.com>


* js/scalar-diagnose (2022-02-06) 6 commits
 - scalar: teach `diagnose` to gather loose objects information
 - scalar: teach `diagnose` to gather packfile info
 - scalar diagnose: include disk space information
 - scalar: add `diagnose`
 - scalar: validate the optional enlistment argument
 - archive: optionally add "virtual" files

 source: <pull.1128.v2.git.1644187146.gitgitgadget@gmail.com>


* js/short-help-outside-repo-fix (2022-02-08) 2 commits
  (merged to 'next' on 2022-02-10 at a86376de89)
 + t0012: verify that built-ins handle `-h` even without gitdir
 + checkout/fetch/pull/pack-objects: allow `-h` outside a repository

 "git cmd -h" outside a repository should error out cleanly for many
 commands, but instead it hit a BUG(), which has been corrected.

 Will merge to 'master'.
 source: <pull.1139.v2.git.1644319314.gitgitgadget@gmail.com>


* tb/midx-no-bitmap-for-no-objects (2022-02-09) 1 commit
  (merged to 'next' on 2022-02-10 at 5c501a3f80)
 + midx: prevent writing a .bitmap without any objects

 When there is no object to write .bitmap file for, "git
 multi-pack-index" triggered an error, instead of just skipping,
 which has been corrected.

 Will merge to 'master'.
 source: <abc67d757cb6b244cf54b7b030985180ce134724.1644434802.git.me@ttaylorr.com>


* jc/cat-file-batch-commands (2022-02-11) 3 commits
 - cat-file: add --batch-command mode
 - cat-file: introduce batch_mode enum to replace print_contents
 - cat-file: rename cmdmode to transform_mode

 "git cat-file" learns "--batch-command" mode, which is a more
 flexible interface than the existing "--batch" or "--batch-check"
 modes, to allow different kinds of inquiries made.
 source: <pull.1212.v5.git.git.1644609683.gitgitgadget@gmail.com>


* ar/submodule-update (2022-02-10) 20 commits
 . fixup! submodule: move core cmd_update() logic to C
 . fixup! submodule--helper run-update-procedure: learn --remote
 . fixup! submodule--helper run-update-procedure: remove --suboid
 . submodule: move core cmd_update() logic to C
 . submodule--helper: reduce logic in run_update_procedure()
 . submodule--helper: move functions around
 . submodule--helper update-clone: learn --init
 . submodule--helper: remove ensure-core-worktree
 . submodule--helper run-update-procedure: learn --remote
 . submodule--helper run-update-procedure: remove --suboid
 . submodule--helper: reorganize code for sh to C conversion
 . submodule--helper: remove update-module-mode
 . submodule tests: test for init and update failure output
 . submodule--helper: don't use bitfield indirection for parse_options()
 . builtin/submodule--helper.c: rename option variables to "opt"
 . builtin/submodule--helper.c: reformat designated initializers
 . submodule--helper: run update using child process struct
 . submodule--helper: allow setting superprefix for init_submodule()
 . submodule--helper: refactor get_submodule_displaypath()
 . submodule--helper: get remote names from any repository

 Rewrite of "git submodule update" in C.

 Does not seem to play well with other topics in flight, with heavy conflicts.
 cf. <xmqqv8xj71mt.fsf@gitster.g>
 source: <20220210092833.55360-1-chooglen@google.com>


* pw/use-in-process-checkout-in-rebase (2022-01-26) 14 commits
  (merged to 'next' on 2022-02-10 at bd7c3615fe)
 + rebase -m: don't fork git checkout
 + rebase --apply: set ORIG_HEAD correctly
 + rebase --apply: fix reflog
 + reset_head(): take struct rebase_head_opts
 + rebase: cleanup reset_head() calls
 + create_autostash(): remove unneeded parameter
 + reset_head(): make default_reflog_action optional
 + reset_head(): factor out ref updates
 + reset_head(): remove action parameter
 + rebase --apply: don't run post-checkout hook if there is an error
 + rebase: do not remove untracked files on checkout
 + rebase: pass correct arguments to post-checkout hook
 + t5403: refactor rebase post-checkout hook tests
 + rebase: factor out checkout for up to date branch

 Use an internal call to reset_head() helper function instead of
 spawning "git checkout" in "rebase", and update code paths that are
 involved in the change.

 Will merge to 'master'.
 source: <pull.1049.v3.git.1643202349.gitgitgadget@gmail.com>


* en/fetch-negotiation-default-fix (2022-02-02) 3 commits
  (merged to 'next' on 2022-02-08 at 95a8a91e97)
 + repo-settings: rename the traditional default fetch.negotiationAlgorithm
 + repo-settings: fix error handling for unknown values
 + repo-settings: fix checking for fetch.negotiationAlgorithm=default

 Fix interaction between fetch.negotiationAlgorithm and
 feature.experimental configuration variables.

 Will merge to 'master'.
 source: <pull.1131.v4.git.1643773361.gitgitgadget@gmail.com>


* js/diff-filter-negation-fix (2022-01-28) 3 commits
  (merged to 'next' on 2022-02-08 at fe004a4c2c)
 + diff-filter: be more careful when looking for negative bits
 + diff.c: move the diff filter bits definitions up a bit
 + docs(diff): lose incorrect claim about `diff-files --diff-filter=A`

 "git diff --diff-filter=aR" is now parsed correctly.

 Will merge to 'master'.
 source: <f1f027ad61beb1bd0dee73acbffdee5c0f967e9a.1643371370.git.gitgitgadget@gmail.com>


* js/no-more-legacy-stash (2022-01-27) 4 commits
  (merged to 'next' on 2022-02-08 at 5cecfdbd58)
 + stash: stop warning about the obsolete `stash.useBuiltin` config setting
 + stash: remove documentation for `stash.useBuiltin`
 + add: remove support for `git-legacy-stash`
 + git-sh-setup: remove remnant bits referring to `git-legacy-stash`

 Removal of unused code and doc.

 Will merge to 'master'.
 source: <pull.1133.git.1643321031.gitgitgadget@gmail.com>


* js/scalar-global-options (2022-01-28) 1 commit
  (merged to 'next' on 2022-02-09 at 8af744524c)
 + scalar: accept -C and -c options before the subcommand

 Scalar update.

 Will merge to 'master'.
 source: <pull.1130.v2.git.1643380317358.gitgitgadget@gmail.com>


* rj/receive-pack-abort-upon-disconnect (2022-01-28) 1 commit
 - receive-pack: check if client is alive before completing the push

 "git push" may be killed by the user when the server side has
 finished receiving all data and is about to commit the result.
 Give the latter a better chance to notice such situation and abort
 processing the ref updates.

 Needs more work?
 cf. <220204.864k5e4yvf.gmgdl@evledraar.gmail.com>
 source: <20220128194811.3396281-1-robin.jarry@6wind.com>


* jz/patch-id-hunk-header-parsing-fix (2022-02-02) 2 commits
  (merged to 'next' on 2022-02-09 at 8665cb204a)
 + patch-id: fix scan_hunk_header on diffs with 1 line of before/after
 + patch-id: fix antipatterns in tests

 Unlike "git apply", "git patch-id" did not handle patches with
 hunks that has only 1 line in either preimage or postimage, which
 has been corrected.

 Will merge to 'master'.
 source: <20220202041945.10077-1-jerry@skydio.com>
 source: <20220202042015.10115-1-jerry@skydio.com>


* ab/do-not-hide-failures-in-git-dot-pm (2022-02-01) 1 commit
  (merged to 'next' on 2022-02-08 at 1a8001f83e)
 + perl Git.pm: don't ignore signalled failure in _cmd_close()

 Git.pm update.

 Will merge to 'master'.
 source: <patch-1.1-86353c3b366-20220201T205218Z-avarab@gmail.com>


* ab/object-file-api-updates (2022-02-04) 11 commits
 - object-file API: pass an enum to read_object_with_reference()
 - object-file.c: add a literal version of write_object_file_prepare()
 - object-file API: have hash_object_file() take "enum object_type"
 - object API: rename hash_object_file_literally() to write_*()
 - object-file API: split up and simplify check_object_signature()
 - object API: make check_object_signature() oideq()-like, move docs
 - object API: correct "buf" v.s. "map" mismatch in *.c and *.h
 - object-file API: have write_object_file() take "enum object_type"
 - object-file API: add a format_object_header() function
 - object-file API: return "void", not "int" from hash_object_file()
 - object-file.c: split up declaration of unrelated variables

 Object-file API shuffling.
 source: <cover-v2-00.11-00000000000-20220204T135005Z-avarab@gmail.com>


* cb/clear-quarantine-early-on-all-ref-update-errors (2022-02-01) 1 commit
  (merged to 'next' on 2022-02-10 at 213f44aec8)
 + receive-pack: purge temporary data if no command is ready to run

 Check if "receive-pack" will do any ref updates (various conditions
 could reject a push) before received objects are taken out of the
 temporary directory used for quarantine purposes, so that a push
 that is known-to-fail will not leave crufts that a future "gc"
 needs to clean up.

 Will merge to 'master'.
 source: <20220129063538.24038-1-bojun.cbj@gmail.com>


* hn/reftable-tests (2022-01-31) 3 commits
  (merged to 'next' on 2022-02-09 at 5e22946a1f)
 + t5312: prepare for reftable
 + t1405: mark test that checks existence as REFFILES
 + t1405: explictly delete reflogs for reftable

 Prepare more test scripts for the introduction of reftable.

 Will merge to 'master'.
 source: <pull.1209.git.git.1643651420.gitgitgadget@gmail.com>


* ja/i18n-common-messages (2022-02-04) 4 commits
 - i18n: fix some misformated placeholders in command synopsis
 - i18n: remove from i18n strings that do not hold translatable parts
 - i18n: factorize "invalid value" messages
 - i18n: factorize more 'incompatible options' messages

 Unify more messages to help l10n.

 Will merge to 'next'?
 source: <pull.1123.v4.git.1643666870.gitgitgadget@gmail.com>


* tk/subtree-merge-not-ff-only (2022-02-01) 1 commit
  (merged to 'next' on 2022-02-09 at 849450010e)
 + subtree: force merge commit

 When "git subtree" wants to create a merge, it used "git merge" and
 let it be affected by end-user's "merge.ff" configuration, which
 has been corrected.

 Will merge to 'master'.
 source: <20220201172601.262718-1-aclopte@gmail.com>


* ab/complete-show-all-commands (2022-02-02) 2 commits
  (merged to 'next' on 2022-02-09 at be3b7cf4e4)
 + completion: add a GIT_COMPLETION_SHOW_ALL_COMMANDS
 + completion tests: re-source git-completion.bash in a subshell

 The command line completion script (in contrib/) learns an option
 to complete all Git subcommands, including the ones that are
 normally hidden.

 Will merge to 'master'.
 source: <cover-v2-0.2-00000000000-20220202T111228Z-avarab@gmail.com>


* en/merge-tree (2022-02-02) 16 commits
 - git-merge-tree.txt: add a section on potentional usage mistakes
 - merge-tree: add a --allow-unrelated-histories flag
 - merge-tree: allow `ls-files -u` style info to be NUL terminated
 - merge-tree: provide easy access to `ls-files -u` style info
 - merge-tree: provide a list of which files have conflicts
 - merge-ort: provide a merge_get_conflicted_files() helper function
 - merge-tree: support including merge messages in output
 - merge-ort: allow update messages to be written to different file stream
 - merge-ort: split out a separate display_update_messages() function
 - diff: allow diff_warn_rename_limit to write somewhere besides stderr
 - Introduce a variant of the `warning()` function that takes a `FILE *`
 - merge-tree: implement real merges
 - merge-tree: add option parsing and initial shell for real merge function
 - merge-tree: move logic for existing merge into new function
 - merge-tree: rename merge_trees() to trivial_merge_trees()
 - Merge branch 'en/remerge-diff' into en/merge-trees
 (this branch uses en/remerge-diff.)

 A new command is introduced that takes two commits and computes a
 tree that would be contained in the resulting merge commit, if the
 histories leading to these two commits were to be merged, and is
 added as a new mode of "git merge-tree" subcommand.
 source: <pull.1122.v3.git.1643787281.gitgitgadget@gmail.com>


* ll/doc-mktree-typofix (2022-02-02) 1 commit
  (merged to 'next' on 2022-02-08 at fe98063f1a)
 + fix typo in git-mktree.txt

 Typofix.

 Will merge to 'master'.
 source: <pull.1207.git.git.1643792450866.gitgitgadget@gmail.com>


* po/doc-check-ignore-markup-fix (2022-02-03) 1 commit
  (merged to 'next' on 2022-02-09 at 47631df376)
 + doc: check-ignore: code-quote an exclamation mark

 Typofix.

 Will merge to 'master'.
 source: <20220203101643.1987-1-philipoakley@iee.email>


* sy/modernize-t-lib-read-tree-m-3way (2022-02-02) 2 commits
  (merged to 'next' on 2022-02-09 at 8b7ecb4e99)
 + t/lib-read-tree-m-3way: indent with tabs
 + t/lib-read-tree-m-3way: modernize style

 Style updates on a test script helper.

 Will merge to 'master'.
 source: <20220123060318.471414-1-shaoxuan.yuan02@gmail.com>


* ab/auto-detect-zlib-compress2 (2022-01-26) 1 commit
  (merged to 'next' on 2022-02-08 at 9922938a6a)
 + compat: auto-detect if zlib has uncompress2()

 Notice older zlib to enable our replacement uncompress2()
 automatically.

 Will merge to 'master'.
 source: <xmqqr18x3s5s.fsf@gitster.g>


* js/apply-partial-clone-filters-recursively (2022-02-09) 1 commit
 - clone, submodule: pass partial clone filters to submodules

 "git clone --filter=... --recurse-submodules" only makes the
 top-level a partial clone, while submodules are fully cloned.  This
 behaviour is changed to pass the same filter down to the submodules.

 Will merge to 'next'?
 source: <690d2316ad518ea4551821b2b3aa652996858475.1644034886.git.steadmon@google.com>


* jh/p4-various-fixups (2022-02-10) 22 commits
 - git-p4: sort imports
 - git-p4: seperate multiple statements onto seperate lines
 - git-p4: move inline comments to line above
 - git-p4: only seperate code blocks by a single empty line
 - git-p4: compare to singletons with "is" and "is not"
 - git-p4: normalize indentation of lines in conditionals
 - git-p4: ensure there is a single space around all operators
 - git-p4: ensure every comment has a single #
 - git-p4: remove spaces between dictionary keys and colons
 - git-p4: remove redundant backslash-continuations inside brackets
 - git-p4: remove extraneous spaces before function arguments
 - git-p4: place a single space after every comma
 - git-p4: removed brackets when assigning multiple return values
 - git-p4: remove spaces around default arguments
 - git-p4: remove padding from lists, tuples and function arguments
 - git-p4: sort and de-duplcate pylint disable list
 - git-p4: remove commented code
 - git-p4: convert descriptive class and function comments into docstrings
 - git-p4: improve consistency of docstring formatting
 - git-p4: indent with 4-spaces
 - git-p4: remove unneeded semicolons from statements
 - git-p4: add blank lines between functions and class definitions

 Various cleanups to "git p4".
 source: <20220210164627.279520-1-jholdsworth@nvidia.com>


* rs/bisect-executable-not-found (2022-01-19) 4 commits
 - bisect--helper: double-check run command on exit code 126 and 127
 - bisect: document run behavior with exit codes 126 and 127
 - bisect--helper: release strbuf and strvec on run error
 - bisect--helper: report actual bisect_state() argument on error

 A not-so-common mistake is to write a script to feed "git bisect
 run" without making it executable, in which case all tests will
 exit with 126 or 127 error codes, even on revisions that are marked
 as good.  Try to recoginse this situation and stop iteration early.

 Will merge to 'next'?
 source: <fead25d6-6f5f-487a-ad4c-0657fe9785fd@www.fastmail.com>


* ds/sparse-checkout-requires-per-worktree-config (2022-02-08) 6 commits
 - config: make git_configset_get_string_tmp() private
 - worktree: copy sparse-checkout patterns and config on add
 - sparse-checkout: set worktree-config correctly
 - config: add repo_config_set_worktree_gently()
 - worktree: create init_worktree_config()
 - Documentation: add extensions.worktreeConfig details

 "git sparse-checkout" wants to work with per-worktree configration,
 but did not work well in a worktree attached to a bare repository.

 Will merge to 'next'?
 cf. <20220204081336.3194538-1-newren@gmail.com>
 cf. <CAPig+cRrRxuTeByhKkLs_KDaWY8-r4+jrwT83A-r+sBQsmebMw@mail.gmail.com>
 source: <pull.1101.v6.git.1644269583.gitgitgadget@gmail.com>


* ps/avoid-unnecessary-hook-invocation-with-packed-refs (2022-01-17) 6 commits
  (merged to 'next' on 2022-02-10 at 4866a64508)
 + refs: skip hooks when deleting uncovered packed refs
 + refs: do not execute reference-transaction hook on packing refs
 + refs: demonstrate excessive execution of the reference-transaction hook
 + refs: allow skipping the reference-transaction hook
 + refs: allow passing flags when beginning transactions
 + refs: extract packed_refs_delete_refs() to allow control of transaction

 Because a deletion of ref would need to remove it from both the
 loose ref store and the packed ref store, a delete-ref operation
 that logically removes one ref may end up invoking ref-transaction
 hook twice, which has been corrected.

 Will merge to 'master'.
 source: <cover.1642406989.git.ps@pks.im>


* ld/sparse-index-bash-completion (2022-02-08) 3 commits
  (merged to 'next' on 2022-02-08 at ac1e968ab8)
 + completion: handle unusual characters for sparse-checkout
 + completion: improve sparse-checkout cone mode directory completion
 + completion: address sparse-checkout issues

 The command line completion (in contrib/) learns to complete
 arguments give to "git sparse-checkout" command.

 Will merge to 'master'.
 source: <pull.1108.v7.git.1644255105.gitgitgadget@gmail.com>


* jz/rev-list-exclude-first-parent-only (2022-01-12) 1 commit
  (merged to 'next' on 2022-02-09 at f26a82c66a)
 + git-rev-list: add --exclude-first-parent-only flag

 "git log" and friends learned an option --exclude-first-parent-only
 to propagate UNINTERESTING bit down only along the first-parent
 chain, just like --first-parent option shows commits that lack the
 UNINTERESTING bit only along the first-parent chain.

 Will merge to 'master'.
 source: <20220111213941.30129-1-jerry@skydio.com>


* en/present-despite-skipped (2022-01-14) 6 commits
 - Accelerate clear_skip_worktree_from_present_files() by caching
 - Update documentation related to sparsity and the skip-worktree bit
 - repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
 - unpack-trees: fix accidental loss of user changes
 - t1011: add testcase demonstrating accidental loss of user modifications
 - Merge branch 'vd/sparse-clean-etc' into en/present-despite-skipped
 (this branch uses vd/sparse-clean-etc.)

 In sparse-checkouts, files mis-marked as missing from the working tree
 could lead to later problems.  Such files were hard to discover, and
 harder to correct.  Automatically detecting and correcting the marking
 of such files has been added to avoid these problems.

 Will merge to 'next'?
 cf. <20220204081336.3194538-1-newren@gmail.com>
 source: <pull.1114.v2.git.1642175983.gitgitgadget@gmail.com>


* vd/sparse-clean-etc (2022-01-13) 9 commits
  (merged to 'next' on 2022-02-09 at 5928dbd25e)
 + update-index: reduce scope of index expansion in do_reupdate
 + update-index: integrate with sparse index
 + update-index: add tests for sparse-checkout compatibility
 + checkout-index: integrate with sparse index
 + checkout-index: add --ignore-skip-worktree-bits option
 + checkout-index: expand sparse checkout compatibility tests
 + clean: integrate with sparse index
 + reset: reorder wildcard pathspec conditions
 + reset: fix validation in sparse index test
 (this branch is used by en/present-despite-skipped.)

 "git update-index", "git checkout-index", and "git clean" are
 taught to work better with the sparse checkout feature.

 Will merge to 'master'.
 source: <pull.1109.v2.git.1641924306.gitgitgadget@gmail.com>


* en/remerge-diff (2022-02-02) 11 commits
  (merged to 'next' on 2022-02-08 at 68b9a8a38b)
 + diff-merges: avoid history simplifications when diffing merges
 + merge-ort: mark conflict/warning messages from inner merges as omittable
 + show, log: include conflict/warning messages in --remerge-diff headers
 + diff: add ability to insert additional headers for paths
 + merge-ort: format messages slightly different for use in headers
 + merge-ort: mark a few more conflict messages as omittable
 + merge-ort: capture and print ll-merge warnings in our preferred fashion
 + ll-merge: make callers responsible for showing warnings
 + log: clean unneeded objects during `log --remerge-diff`
 + show, log: provide a --remerge-diff capability
 + Merge branch 'ns/tmp-objdir' into en/remerge-diff
 (this branch is used by en/merge-tree.)

 "git log --remerge-diff" shows the difference from mechanical merge
 result and the merge result that is actually recorded.

 Will merge to 'master'.
 source: <pull.1103.v5.git.1643769457.gitgitgadget@gmail.com>


* bs/forbid-i18n-of-protocol-token-in-fetch-pack (2022-02-11) 1 commit
 - fetch-pack: parameterize message containing 'ready' keyword

 L10n support for a few error messages.

 Will merge to 'next'.
 source: <20211222075805.19027-1-bagasdotme@gmail.com>


* gc/branch-recurse-submodules (2022-02-04) 7 commits
  (merged to 'next' on 2022-02-10 at b54367ff92)
 + branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
 + branch: add --recurse-submodules option for branch creation
 + builtin/branch: consolidate action-picking logic in cmd_branch()
 + branch: add a dry_run parameter to create_branch()
 + branch: make create_branch() always create a branch
 + branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
 + Merge branch 'js/branch-track-inherit' into gc/branch-recurse-submodules

 "git branch" learned the "--recurse-submodules" option.

 Will merge to 'master'.
 source: <20220129000446.99261-1-chooglen@google.com>


* hn/reftable-coverity-fixes (2022-01-20) 17 commits
  (merged to 'next' on 2022-02-08 at 1baf327a66)
 + reftable: add print functions to the record types
 + reftable: make reftable_record a tagged union
 + reftable: remove outdated file reftable.c
 + reftable: implement record equality generically
 + reftable: make reftable-record.h function signatures const correct
 + reftable: handle null refnames in reftable_ref_record_equal
 + reftable: drop stray printf in readwrite_test
 + reftable: order unittests by complexity
 + reftable: all xxx_free() functions accept NULL arguments
 + reftable: fix resource warning
 + reftable: ignore remove() return value in stack_test.c
 + reftable: check reftable_stack_auto_compact() return value
 + reftable: fix resource leak blocksource.c
 + reftable: fix resource leak in block.c error path
 + reftable: fix OOB stack write in print functions
 + Merge branch 'hn/create-reflog-simplify' into hn/reftable-coverity-fixes
 + Merge branch 'hn/reftable' into hn/reftable-coverity-fixes

 Problems identified by Coverity in the reftable code have been
 corrected.

 Will merge to 'master'.
 source: <pull.1152.v6.git.git.1642691534.gitgitgadget@gmail.com>


* tb/midx-bitmap-corruption-fix (2022-01-27) 9 commits
  (merged to 'next' on 2022-02-08 at a8cc333d78)
 + pack-bitmap.c: gracefully fallback after opening pack/MIDX
 + midx: read `RIDX` chunk when present
 + t/lib-bitmap.sh: parameterize tests over reverse index source
 + t5326: move tests to t/lib-bitmap.sh
 + t5326: extract `test_rev_exists`
 + t5326: drop unnecessary setup
 + pack-revindex.c: instrument loading on-disk reverse index
 + midx.c: make changing the preferred pack safe
 + t5326: demonstrate bitmap corruption after permutation

 A bug that made multi-pack bitmap and the object order out-of-sync
 (hence the .midx data gets corrupted) has been fixed.

 Will merge to 'master'.
 source: <cover.1643150456.git.me@ttaylorr.com>


* ab/grep-patterntype (2022-02-04) 9 commits
 - grep: simplify config parsing and option parsing
 - grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
 - grep.h: make "grep_opt.pattern_type_option" use its enum
 - grep API: call grep_config() after grep_init()
 - grep.c: don't pass along NULL callback value
 - built-ins: trust the "prefix" from run_builtin()
 - grep tests: add missing "grep.patternType" config tests
 - log tests: check if grep_config() is called by "log"-like cmds
 - grep.h: remove unused "regex_t regexp" from grep_opt

 Some code clean-up in the "git grep" machinery.

 Looking good, except for the last step.
 Code-wise, it is tempted to call it a victory after squashing the
 fix-up in, but that does not fix the proposed log message, so...

 Expecting a reroll to update its tests, but otherwise looks ready.
 cf. <xmqqv8xui5ah.fsf@gitster.g>
 cf. <xmqqmtj6jkuk.fsf@gitster.g>
 source: <cover-v10-0.9-00000000000-20220204T211534Z-avarab@gmail.com>


* js/use-builtin-add-i (2021-12-01) 2 commits
 - add -i: default to the built-in implementation
 - t2016: require the PERL prereq only when necessary

 "git add -i" was rewritten in C some time ago and has been in
 testing; the reimplementation is now exposed to general public by
 default.

 On hold.

 What's the status of the "known breakage"?
 Are we ready to switch if we wanted to?
 There are known breakages on macOS.
 cf. <nycvar.QRO.7.76.6.2112021832060.63@tvgsbejvaqbjf.bet>
 source: <pull.1087.git.1638281655.gitgitgadget@gmail.com>


* ab/ambiguous-object-name (2022-01-27) 7 commits
 - object-name: re-use "struct strbuf" in show_ambiguous_object()
 - object-name: iterate ambiguous objects before showing header
 - object-name: show date for ambiguous tag objects
 - object-name: make ambiguous object output translatable
 - object-name: explicitly handle bad tags in show_ambiguous_object()
 - object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
 - object-name tests: add tests for ambiguous object blind spots

 Error output given in response to an ambiguous object name has been
 improved.

 Will merge to 'next'?
 source: <cover-v8-0.7-00000000000-20220127T052116Z-avarab@gmail.com>


* tl/ls-tree-oid-only (2022-02-08) 13 commits
 - ls-tree.c: support --object-only option for "git-ls-tree"
 - ls-tree: introduce function "fast_path()"
 - ls-tree.c: introduce "--format" option
 - cocci: allow padding with `strbuf_addf()`
 - ls-tree: introduce struct "show_tree_data"
 - ls-tree: slightly refactor `show_tree()`
 - ls-tree: fix "--name-only" and "--long" combined use bug
 - ls-tree: simplify nesting if/else logic in "show_tree()"
 - ls-tree: rename "retval" to "recurse" in "show_tree()"
 - ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
 - ls-tree: use "enum object_type", not {blob,tree,commit}_type
 - ls-tree: add missing braces to "else" arms
 - ls-tree: remove commented-out code

 "git ls-tree" learns "--oid-only" option, similar to "--name-only",
 and more generalized "--format" option.
 source: <cover.1644319434.git.dyroneteng@gmail.com>


* jh/builtin-fsmonitor-part2 (2022-02-11) 30 commits
 - update-index: convert fsmonitor warnings to advise
 - t7527: test status with untracked-cache and fsmonitor--daemon
 - fsmonitor: force update index after large responses
 - fsmonitor--daemon: use a cookie file to sync with file system
 - fsmonitor--daemon: periodically truncate list of modified files
 - t/perf/p7519: add fsmonitor--daemon test cases
 - t/perf/p7519: speed up test on Windows
 - t/helper/test-chmtime: skip directories on Windows
 - t/perf: avoid copying builtin fsmonitor files into test repo
 - t7527: create test for fsmonitor--daemon
 - t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
 - help: include fsmonitor--daemon feature flag in version info
 - fsmonitor--daemon: implement handle_client callback
 - compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
 - compat/fsmonitor/fsm-listen-darwin: add macos header files for FSEvent
 - compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
 - fsmonitor--daemon: create token-based changed path cache
 - fsmonitor--daemon: define token-ids
 - fsmonitor--daemon: add pathname classification
 - fsmonitor--daemon: implement 'start' command
 - fsmonitor--daemon: implement 'run' command
 - compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
 - compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
 - fsmonitor--daemon: implement 'stop' and 'status' commands
 - fsmonitor--daemon: add a built-in fsmonitor daemon
 - fsmonitor: document builtin fsmonitor
 - fsmonitor: use IPC to query the builtin FSMonitor daemon
 - fsmonitor: config settings are repository-specific
 - fsmonitor-ipc: create client routines for git-fsmonitor--daemon
 - fsmonitor: enhance existing comments, clarify trivial response handling

 Built-in fsmonitor (part 2).
 source: <pull.1041.v5.git.1644612979.gitgitgadget@gmail.com>


* es/superproject-aware-submodules (2022-02-03) 4 commits
 - submodule: record superproject gitdir during 'update'
 - submodule: record superproject gitdir during absorbgitdirs
 - introduce submodule.superprojectGitDir record
 - t7400-submodule-basic: modernize inspect() helper

 A configuration variable in a submodule points at the location of
 the superproject it is bound to (RFC).
 source: <20220203215914.683922-1-emilyshaffer@google.com>


* ab/only-single-progress-at-once (2022-02-03) 9 commits
 - pack-bitmap-write.c: don't return without stop_progress()
 - progress API: unify stop_progress{,_msg}(), fix trace2 bug
 - progress.c: refactor stop_progress{,_msg}() to use helpers
 - progress.c: use dereferenced "progress" variable, not "(*p_progress)"
 - progress.h: format and be consistent with progress.c naming
 - progress.c tests: test some invalid usage
 - progress.c tests: make start/stop commands on stdin
 - progress.c test helper: add missing braces
 - leak tests: fix a memory leak in "test-progress" helper

 Further tweaks on progress API.

 Will merge to 'next'?
 source: <cover-v9-0.9-00000000000-20220203T213350Z-avarab@gmail.com>

^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.35.0
@ 2022-01-24 19:25  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-01-24 19:25 UTC (permalink / raw)
  To: git; +Cc: git-packagers

The latest feature release Git v2.35.0 is now available at the
usual places.  It is comprised of 494 non-merge commits since
v2.34.0, contributed by 93 people, 35 of which are new faces [*].

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.35.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.34.0 are as follows.
Welcome to the Git development community!

  AJ Henderson, Alex Waite, Baruch Burstein, Calbabreaker, Calvin
  Wan, Christoph Reiter, Clemens Fruhwirth, Danial Alihosseini,
  Dotan Cohen, Emir SARI, Enzo Matsumiya, Erwin Villejo, Gustave
  Granroth, Hans Krentel (hakre), Ivan Frade, James Limbouris,
  Jan Pokorný, Joel Holdsworth, John Burnett, John Cai, Josh
  Rampersad, Jürgen Krämer, Kashav Madan, Lessley Dennington,
  Matt Cooper, Matthew John Cheetham, Mike Marcelais, Mugdha
  Pattnaik, Nikita Bobko, Petr Šplíchal, Robin Jarry, Thiago
  Perrotta, Thomas Weißschuh, William Sprent, and 徐沛文
  (Aleen).

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alexander Shopov, Alex Henrie,
  Anders Kaseorg, Bagas Sanjaya, brian m. carlson, Carlo Marcelo
  Arenas Belón, David Aguilar, Derrick Stolee, Elijah Newren,
  Eli Schwartz, Eric Sunshine, Eric Wong, Fabian Stelzer, Fangyi
  Zhou, Glen Choo, Greg Hurrell, Han-Wen Nienhuys, Jacob Vosmaer,
  Jean-Noël Avila, Jeff King, Jerry Zhang, Jiang Xin, Johannes
  Altmanninger, Johannes Schindelin, Johannes Sixt, Jonathan Tan,
  Jordi Mas, Josh Steadmon, Junio C Hamano, Lénaïc Huard, Linus
  Torvalds, Marc Strapetz, Martin Ågren, Matthias Aßhauer,
  Matthias Rüster, Mike Hommey, Neeraj Singh, Øystein Walle,
  Patrick Steinhardt, Peter Krefting, Philip Oakley, Philippe
  Blain, Phillip Wood, Ralf Thielow, Randall S. Becker, René
  Scharfe, Robert Estelle, Sergey Organov, SZEDER Gábor, Taylor
  Blau, Teng Long, Todd Zullinger, Trần Ngọc Quân, Victoria
  Dye, Yi-Jyun Pan, Yoichi Nakayama, and 依云.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git 2.35 Release Notes
======================

Updates since Git 2.34
----------------------

Backward compatibility warts

 * "_" is now treated as any other URL-valid characters in an URL when
   matching the per-URL configuration variable names.

 * The color palette used by "git grep" has been updated to match that
   of GNU grep.


Note to those who build from the source

 * You may need to define NO_UNCOMPRESS2 Makefile macro if you build
   with zlib older than 1.2.9.

 * If your compiler cannot grok C99, the build will fail.  See the
   instruction at the beginning of git-compat-util.h if this happens
   to you.


UI, Workflows & Features

 * "git status --porcelain=v2" now show the number of stash entries
   with --show-stash like the normal output does.

 * "git stash" learned the "--staged" option to stash away what has
   been added to the index (and nothing else).

 * "git var GIT_DEFAULT_BRANCH" is a way to see what name is used for
   the newly created branch if "git init" is run.

 * Various operating modes of "git reset" have been made to work
   better with the sparse index.

 * "git submodule deinit" for a submodule whose .git metadata
   directory is embedded in its working tree refused to work, until
   the submodule gets converted to use the "absorbed" form where the
   metadata directory is stored in superproject, and a gitfile at the
   top-level of the working tree of the submodule points at it.  The
   command is taught to convert such submodules to the absorbed form
   as needed.

 * The completion script (in contrib/) learns that the "--date"
   option of commands from the "git log" family takes "human" and
   "auto" as valid values.

 * "Zealous diff3" style of merge conflict presentation has been added.

 * The "git log --format=%(describe)" placeholder has been extended to
   allow passing selected command-line options to the underlying "git
   describe" command.

 * "default" and "reset" have been added to our color palette.

 * The cryptographic signing using ssh keys can specify literal keys
   for keytypes whose name do not begin with the "ssh-" prefix by
   using the "key::" prefix mechanism (e.g. "key::ecdsa-sha2-nistp256").

 * "git fetch" without the "--update-head-ok" option ought to protect
   a checked out branch from getting updated, to prevent the working
   tree that checks it out to go out of sync.  The code was written
   before the use of "git worktree" got widespread, and only checked
   the branch that was checked out in the current worktree, which has
   been updated.

 * "git name-rev" has been tweaked to give output that is shorter and
   easier to understand.

 * "git apply" has been taught to ignore a message without a patch
   with the "--allow-empty" option.  It also learned to honor the
   "--quiet" option given from the command line.

 * The "init" and "set" subcommands in "git sparse-checkout" have been
   unified for a better user experience and performance.

 * Many git commands that deal with working tree files try to remove a
   directory that becomes empty (i.e. "git switch" from a branch that
   has the directory to another branch that does not would attempt
   remove all files in the directory and the directory itself).  This
   drops users into an unfamiliar situation if the command was run in
   a subdirectory that becomes subject to removal due to the command.
   The commands have been taught to keep an empty directory if it is
   the directory they were started in to avoid surprising users.

 * "git am" learns "--empty=(stop|drop|keep)" option to tweak what is
   done to a piece of e-mail without a patch in it.

 * The default merge message prepared by "git merge" records the name
   of the current branch; the name can be overridden with a new option
   to allow users to pretend a merge is made on a different branch.

 * The way "git p4" shows file sizes in its output has been updated to
   use human-readable units.

 * "git -c branch.autosetupmerge=inherit branch new old" makes "new"
   to have the same upstream as the "old" branch, instead of marking
   "old" itself as its upstream.


Performance, Internal Implementation, Development Support etc.

 * The use of errno as a means to carry the nature of error in the ref
   API implementation has been reworked and reduced.

 * Teach and encourage first-time contributors to this project to
   state the base commit when they submit their topic.

 * The command line completion for "git send-email" options have been
   tweaked to make it easier to keep it in sync with the command itself.

 * Ensure that the sparseness of the in-core index matches the
   index.sparse configuration specified by the repository immediately
   after the on-disk index file is read.

 * Code clean-up to eventually allow information on remotes defined
   for an arbitrary repository to be read.

 * Build optimization.

 * Tighten code for testing pack-bitmap.

 * Weather balloon to break people with compilers that do not support
   C99.

 * The "reftable" backend for the refs API, without integrating into
   the refs subsystem, has been added.

 * More tests are marked as leak-free.

 * The test framework learns to list unsatisfied test prerequisites,
   and optionally error out when prerequisites that are expected to be
   satisfied are not.

 * The default setting for trace2 event nesting was too low to cause
   test failures, which is worked around by bumping it up in the test
   framework.

 * Drop support for TravisCI and update test workflows at GitHub.

 * Many tests that used to need GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
   mechanism to force "git" to use 'master' as the default name for
   the initial branch no longer need it; the use of the mechanism from
   them have been removed.

 * Allow running our tests while disabling fsync.

 * Document the parameters given to the reflog entry iterator callback
   functions.
   (merge e6e94f34b2 jc/reflog-iterator-callback-doc later to maint).

 * The test helper for refs subsystem learned to write bogus and/or
   nonexistent object name to refs to simulate error situations we
   want to test Git in.

 * "diff --histogram" optimization.

 * Weather balloon to find compilers that do not grok variable
   declaration in the for() loop.

 * diff and blame commands have been taught to work better with sparse
   index.

 * The chainlint test script linter in the test suite has been updated.

 * The DEVELOPER=yes build uses -std=gnu99 now.

 * "git format-patch" uses a single rev_info instance and then exits.
   Mark the structure with UNLEAK() macro to squelch leak sanitizer.

 * New interface into the tmp-objdir API to help in-core use of the
   quarantine feature.

 * Broken &&-chains in the test scripts have been corrected.

 * The RCS keyword substitution in "git p4" used to be done assuming
   that the contents are UTF-8 text, which can trigger decoding
   errors.  We now treat the contents as a bytestring for robustness
   and correctness.

 * The conditions to choose different definitions of the FLEX_ARRAY
   macro for vendor compilers has been simplified to make it easier to
   maintain.

 * Correctness and performance update to "diff --color-moved" feature.

 * "git upload-pack" (the other side of "git fetch") used a 8kB buffer
   but most of its payload came on 64kB "packets".  The buffer size
   has been enlarged so that such a packet fits.

 * "git fetch" and "git pull" are now declared sparse-index clean.
   Also "git ls-files" learns the "--sparse" option to help debugging.

 * Similar message templates have been consolidated so that
   translators need to work on fewer number of messages.


Fixes since v2.34
-----------------

 * "git grep" looking in a blob that has non-UTF8 payload was
   completely broken when linked with certain versions of PCREv2
   library in the latest release.

 * Other code cleanup, docfix, build fix, etc.

 * "git pull" with any strategy when the other side is behind us
   should succeed as it is a no-op, but doesn't.

 * An earlier change in 2.34.0 caused JGit application (that abused
   GIT_EDITOR mechanism when invoking "git config") to get stuck with
   a SIGTTOU signal; it has been reverted.

 * An earlier change that broke .gitignore matching has been reverted.

 * Things like "git -c branch.sort=bogus branch new HEAD", i.e. the
   operation modes of the "git branch" command that do not need the
   sort key information, no longer errors out by seeing a bogus sort
   key.
   (merge 98e7ab6d42 jc/fix-ref-sorting-parse later to maint).

 * The compatibility implementation for unsetenv(3) were written to
   mimic ancient, non-POSIX, variant seen in an old glibc; it has been
   changed to return an integer to match the more modern era.
   (merge a38989bd5b jc/unsetenv-returns-an-int later to maint).

 * The clean/smudge conversion code path has been prepared to better
   work on platforms where ulong is narrower than size_t.
   (merge 596b5e77c9 mc/clean-smudge-with-llp64 later to maint).

 * Redact the path part of packfile URI that appears in the trace output.
   (merge 0ba558ffb1 if/redact-packfile-uri later to maint).

 * CI has been taught to catch some Unicode directional formatting
   sequence that can be used in certain mischief.
   (merge 0e7696c64d js/ci-no-directional-formatting later to maint).

 * The "--date=format:<strftime>" gained a workaround for the lack of
   system support for a non-local timezone to handle "%s" placeholder.
   (merge 9b591b9403 jk/strbuf-addftime-seconds-since-epoch later to maint).

 * The "merge" subcommand of "git jump" (in contrib/) silently ignored
   pathspec and other parameters.
   (merge 67ba13e5a4 jk/jump-merge-with-pathspec later to maint).

 * The code to decode the length of packed object size has been
   corrected.
   (merge 34de5b8eac jt/pack-header-lshift-overflow later to maint).

 * The advice message given by "git pull" when the user hasn't made a
   choice between merge and rebase still said that the merge is the
   default, which no longer is the case.  This has been corrected.
   (merge 71076d0edd ah/advice-pull-has-no-preference-between-rebase-and-merge later to maint).

 * "git fetch", when received a bad packfile, can fail with SIGPIPE.
   This wasn't wrong per-se, but we now detect the situation and fail
   in a more predictable way.
   (merge 2a4aed42ec jk/fetch-pack-avoid-sigpipe-to-index-pack later to maint).

 * The function to cull a child process and determine the exit status
   had two separate code paths for normal callers and callers in a
   signal handler, and the latter did not yield correct value when the
   child has caught a signal.  The handling of the exit status has
   been unified for these two code paths.  An existing test with
   flakiness has also been corrected.
   (merge 5263e22cba jk/t7006-sigpipe-tests-fix later to maint).

 * When a non-existent program is given as the pager, we tried to
   reuse an uninitialized child_process structure and crashed, which
   has been fixed.
   (merge f917f57f40 em/missing-pager later to maint).

 * The single-key-input mode in "git add -p" had some code to handle
   keys that generate a sequence of input via ReadKey(), which did not
   handle end-of-file correctly, which has been fixed.
   (merge fc8a8126df cb/add-p-single-key-fix later to maint).

 * "git rebase -x" added an unnecessary 'exec' instructions before
   'noop', which has been corrected.
   (merge cc9dcdee61 en/rebase-x-fix later to maint).

 * When the "git push" command is killed while the receiving end is
   trying to report what happened to the ref update proposals, the
   latter used to die, due to SIGPIPE.  The code now ignores SIGPIPE
   to increase our chances to run the post-receive hook after it
   happens.
   (merge d34182b9e3 rj/receive-pack-avoid-sigpipe-during-status-reporting later to maint).

 * "git worktree add" showed "Preparing worktree" message to the
   standard output stream, but when it failed, the message from die()
   went to the standard error stream.  Depending on the order the
   stdio streams are flushed at the program end, this resulted in
   confusing output.  It has been corrected by sending all the chatty
   messages to the standard error stream.
   (merge b50252484f es/worktree-chatty-to-stderr later to maint).

 * Coding guideline document has been updated to clarify what goes to
   standard error in our system.
   (merge e258eb4800 es/doc-stdout-vs-stderr later to maint).

 * The sparse-index/sparse-checkout feature had a bug in its use of
   the matching code to determine which path is in or outside the
   sparse checkout patterns.
   (merge 8c5de0d265 ds/sparse-deep-pattern-checkout-fix later to maint).

 * "git rebase -x" by mistake started exporting the GIT_DIR and
   GIT_WORK_TREE environment variables when the command was rewritten
   in C, which has been corrected.
   (merge 434e0636db en/rebase-x-wo-git-dir-env later to maint).

 * When "git log" implicitly enabled the "decoration" processing
   without being explicitly asked with "--decorate" option, it failed
   to read and honor the settings given by the "--decorate-refs"
   option.

 * "git fetch --set-upstream" did not check if there is a current
   branch, leading to a segfault when it is run on a detached HEAD,
   which has been corrected.
   (merge 17baeaf82d ab/fetch-set-upstream-while-detached later to maint).

 * Among some code paths that ask an yes/no question, only one place
   gave a prompt that looked different from the others, which has been
   updated to match what the others create.
   (merge 0fc8ed154c km/help-prompt-fix later to maint).

 * "git log --invert-grep --author=<name>" used to exclude commits
   written by the given author, but now "--invert-grep" only affects
   the matches made by the "--grep=<pattern>" option.
   (merge 794c000267 rs/log-invert-grep-with-headers later to maint).

 * "git grep --perl-regexp" failed to match UTF-8 characters with
   wildcard when the pattern consists only of ASCII letters, which has
   been corrected.
   (merge 32e3e8bc55 rs/pcre2-utf later to maint).

 * Certain sparse-checkout patterns that are valid in non-cone mode
   led to segfault in cone mode, which has been corrected.

 * Use of certain "git rev-list" options with "git fast-export"
   created nonsense results (the worst two of which being "--reverse"
   and "--invert-grep --grep=<foo>").  The use of "--first-parent" is
   made to behave a bit more sensible than before.
   (merge 726a228dfb ws/fast-export-with-revision-options later to maint).

 * Perf tests were run with end-user's shell, but it has been
   corrected to use the shell specified by $TEST_SHELL_PATH.
   (merge 9ccab75608 ja/perf-use-specified-shell later to maint).

 * Fix dependency rules to generate hook-list.h header file.
   (merge d3fd1a6667 ab/makefile-hook-list-dependency-fix later to maint).

 * "git stash" by default triggers its "push" action, but its
   implementation also made "git stash -h" to show short help only for
   "git stash push", which has been corrected.
   (merge ca7990cea5 ab/do-not-limit-stash-help-to-push later to maint).

 * "git apply --3way" bypasses the attempt to do a three-way
   application in more cases to address the regression caused by the
   recent change to use direct application as a fallback.
   (merge 34d607032c jz/apply-3-corner-cases later to maint).

 * Fix performance-releated bug in "git subtree" (in contrib/).
   (merge 3ce8888fb4 jl/subtree-check-parents-argument-passing-fix later to maint).

 * Extend the guidance to choose the base commit to build your work
   on, and hint/nudge contributors to read others' changes.
   (merge fdfae830f8 jc/doc-submitting-patches-choice-of-base later to maint).

 * A corner case bug in the ort merge strategy has been corrected.
   (merge d30126c20d en/merge-ort-renorm-with-rename-delete-conflict-fix later to maint).

 * "git stash apply" forgot to attempt restoring untracked files when
   it failed to restore changes to tracked ones.
   (merge 71cade5a0b en/stash-df-fix later to maint).

 * Calling dynamically loaded functions on Windows has been corrected.
   (merge 4a9b204920 ma/windows-dynload-fix later to maint).

 * Some lockfile code called free() in signal-death code path, which
   has been corrected.
   (merge 58d4d7f1c5 ps/lockfile-cleanup-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 74db416c9c cw/protocol-v2-doc-fix later to maint).
   (merge f9b2b6684d ja/doc-cleanup later to maint).
   (merge 7d1b866778 jc/fix-first-object-walk later to maint).
   (merge 538ac74604 js/trace2-avoid-recursive-errors later to maint).
   (merge 152923b132 jk/t5319-midx-corruption-test-deflake later to maint).
   (merge 9081a421a6 ab/checkout-branch-info-leakfix later to maint).
   (merge 42c456ff81 rs/mergesort later to maint).
   (merge ad506e6780 tl/midx-docfix later to maint).
   (merge bf5b83fd8a hk/ci-checkwhitespace-commentfix later to maint).
   (merge 49f1eb3b34 jk/refs-g11-workaround later to maint).
   (merge 7d3fc7df70 jt/midx-doc-fix later to maint).
   (merge 7b089120d9 hn/create-reflog-simplify later to maint).
   (merge 9e12400da8 cb/mingw-gmtime-r later to maint).
   (merge 0bf0de6cc7 tb/pack-revindex-on-disk-cleanup later to maint).
   (merge 2c68f577fc ew/cbtree-remove-unused-and-broken-cb-unlink later to maint).
   (merge eafd6e7e55 ab/die-with-bug later to maint).
   (merge 91028f7659 jc/grep-patterntype-default-doc later to maint).
   (merge 47ca93d071 ds/repack-fixlets later to maint).
   (merge e6a9bc0c60 rs/t4202-invert-grep-test-fix later to maint).
   (merge deb5407a42 gh/gpg-doc-markup-fix later to maint).
   (merge 999bba3e0b rs/daemon-plug-leak later to maint).
   (merge 786eb1ba39 js/l10n-mention-ngettext-early-in-readme later to maint).
   (merge 2f12b31b74 ab/makefile-msgfmt-wo-stats later to maint).
   (merge 0517f591ca fs/gpg-unknown-key-test-fix later to maint).
   (merge 97d6fb5a1f ma/header-dup-cleanup later to maint).

----------------------------------------------------------------

Changes since v2.34.0 are as follows:

Alex Henrie (1):
      pull: don't say that merge is "the default strategy"

Alexander Shopov (1):
      l10n: bg.po: Updated Bulgarian translation (5195t)

Anders Kaseorg (8):
      fetch: lowercase error messages
      receive-pack: lowercase error messages
      branch: lowercase error messages
      worktree: simplify find_shared_symref() memory ownership model
      fetch: protect branches checked out in all worktrees
      receive-pack: clean dead code from update_worktree()
      receive-pack: protect current branch for bare repository worktree
      branch: protect branches checked out in all worktrees

Bagas Sanjaya (3):
      l10n: po-id for 2.35 (round 1)
      branch: missing space fix at line 313
      l10n: po-id for 2.35 (round 2)

Calvin Wan (1):
      protocol-v2.txt: align delim-pkt spec with usage

Carlo Marcelo Arenas Belón (4):
      test-genzeros: allow more than 2G zeros in Windows
      test-lib: add prerequisite for 64-bit platforms
      mingw: avoid fallback for {local,gm}time_r()
      add -p: avoid use of undefined $key when ReadKey -> EOF

David Aguilar (1):
      build: centos/RHEL 7 ships with an older gcc and zlib

Derrick Stolee (19):
      dir: revert "dir: select directories correctly"
      test-lib.sh: set GIT_TRACE2_EVENT_NESTING
      t/t*: remove custom GIT_TRACE2_EVENT_NESTING
      scalar: 'register' sets recommended config and starts maintenance
      scalar: 'unregister' stops background maintenance
      scalar: implement 'scalar list'
      scalar: implement the `run` command
      t1092: add deeper changes during a checkout
      unpack-trees: use traverse_path instead of name
      repack: respect kept objects with '--write-midx -b'
      repack: make '--quiet' disable progress
      fetch/pull: use the sparse index
      ls-files: add --sparse option
      t1092: replace 'read-cache --table' with 'ls-files --sparse'
      t1091/t3705: remove 'test-tool read-cache --table'
      test-read-cache: remove --table, --expand options
      sparse-checkout: fix segfault on malformed patterns
      sparse-checkout: fix OOM error with mixed patterns
      sparse-checkout: refuse to add to bad patterns

Eli Schwartz (3):
      pretty.c: rework describe options parsing for better extensibility
      pretty: add tag option to %(describe)
      pretty: add abbrev option to %(describe)

Elijah Newren (28):
      sequencer: avoid adding exec commands for non-commit creating commands
      update documentation for new zdiff3 conflictStyle
      name-rev: prefer shorter names over following merges
      sequencer: do not export GIT_DIR and GIT_WORK_TREE for 'exec'
      t2501: add various tests for removing the current working directory
      setup: introduce startup_info->original_cwd
      unpack-trees: refuse to remove startup_info->original_cwd
      unpack-trees: add special cwd handling
      symlinks: do not include startup_info->original_cwd in dir removal
      clean: do not attempt to remove startup_info->original_cwd
      rebase: do not attempt to remove startup_info->original_cwd
      stash: do not attempt to remove startup_info->original_cwd
      dir: avoid incidentally removing the original_cwd in remove_path()
      dir: new flag to remove_dir_recurse() to spare the original_cwd
      t2501: simplify the tests since we can now assume desired behavior
      sparse-checkout: pass use_stdin as a parameter instead of as a global
      sparse-checkout: break apart functions for sparse_checkout_(set|add)
      sparse-checkout: add sanity-checks on initial sparsity state
      sparse-checkout: disallow --no-stdin as an argument to set
      sparse-checkout: split out code for tweaking settings config
      sparse-checkout: enable `set` to initialize sparse-checkout mode
      sparse-checkout: enable reapply to take --[no-]{cone,sparse-index}
      git-sparse-checkout.txt: update to document init/set/reapply changes
      Documentation: clarify/correct a few sparsity related statements
      clone: avoid using deprecated `sparse-checkout init`
      sparse-checkout: remove stray trailing space
      merge-ort: fix bug with renormalization and rename/delete conflicts
      stash: do not return before restoring untracked files

Emir SARI (1):
      l10n: tr: v2.35.0 round 1

Enzo Matsumiya (1):
      pager: fix crash when pager program doesn't exist

Eric Sunshine (38):
      worktree: stop being overly intimate with run_command() internals
      CodingGuidelines: document which output goes to stdout vs. stderr
      worktree: send "chatty" messages to stderr
      git-worktree.txt: add missing `-v` to synopsis for `worktree list`
      t/lib-pager: use sane_unset() to avoid breaking &&-chain
      t1010: fix unnoticed failure on Windows
      t1020: avoid aborting entire test script when one test fails
      t4202: clarify intent by creating expected content less cleverly
      t5516: drop unnecessary subshell and command invocation
      t6300: make `%(raw:size) --shell` test more robust
      t9107: use shell parameter expansion to avoid breaking &&-chain
      tests: simplify construction of large blocks of text
      tests: use test_write_lines() to generate line-oriented output
      tests: fix broken &&-chains in compound statements
      tests: fix broken &&-chains in `$(...)` command substitutions
      tests: fix broken &&-chains in `{...}` groups
      tests: apply modern idiom for signaling test failure
      tests: apply modern idiom for exiting loop upon failure
      tests: simplify by dropping unnecessary `for` loops
      t0000-t3999: detect and signal failure within loop
      t4000-t4999: detect and signal failure within loop
      t5000-t5999: detect and signal failure within loop
      t6000-t9999: detect and signal failure within loop
      t/chainlint/*.test: don't use invalid shell syntax
      t/chainlint/*.test: fix invalid test cases due to mixing quote types
      t/chainlint/*.test: generalize self-test commentary
      t/chainlint/one-liner: avoid overly intimate chainlint.sed knowledge
      t/Makefile: optimize chainlint self-test
      chainlint.sed: improve ?!AMP?! placement accuracy
      chainlint.sed: improve ?!SEMI?! placement accuracy
      chainlint.sed: tolerate harmless ";" at end of last line in block
      chainlint.sed: drop unnecessary distinction between ?!AMP?! and ?!SEMI?!
      chainlint.sed: drop subshell-closing ">" annotation
      chainlint.sed: make here-doc "<<-" operator recognition more POSIX-like
      chainlint.sed: don't mistake `<< word` in string as here-doc operator
      chainlint.sed: stop throwing away here-doc tags
      chainlint.sed: swallow comments consistently
      chainlint.sed: stop splitting "(..." into separate lines "(" and "..."

Eric Wong (2):
      tests: disable fsync everywhere
      cbtree: remove broken and unused cb_unlink

Erwin Villejo (1):
      pull: should be noop when already-up-to-date

Fabian Stelzer (15):
      ssh signing: support non ssh-* keytypes
      ssh signing: make sign/amend test more resilient
      test-lib: show missing prereq summary
      test-lib: introduce required prereq for test runs
      test-lib: make BAIL_OUT() work in tests and prereq
      t/fmt-merge-msg: do not redirect stderr
      t/fmt-merge-msg: make gpgssh tests more specific
      ssh signing: use sigc struct to pass payload
      ssh signing: add key lifetime test prereqs
      ssh signing: make verify-commit consider key lifetime
      ssh signing: make git log verify key lifetime
      ssh signing: make verify-tag consider key lifetime
      ssh signing: make fmt-merge-msg consider key lifetime
      ssh signing: verify ssh-keygen in test prereq
      t/gpg: simplify test for unknown key

Fangyi Zhou (1):
      l10n: zh_CN: v2.35.0 round 1

Glen Choo (5):
      t5516: add test case for pushing remote refspecs
      remote: move static variables into per-repository struct
      remote: use remote_state parameter internally
      remote: remove the_repository->remote_state from static methods
      remote: die if branch is not found in repository

Greg Hurrell (1):
      docs: add missing colon to Documentation/config/gpg.txt

Han-Wen Nienhuys (49):
      hash.h: provide constants for the hash IDs
      reftable: add LICENSE
      reftable: add error related functionality
      reftable: utility functions
      reftable: add blocksource, an abstraction for random access reads
      reftable: (de)serialization for the polymorphic record type.
      Provide zlib's uncompress2 from compat/zlib-compat.c
      reftable: reading/writing blocks
      reftable: a generic binary tree implementation
      reftable: write reftable files
      reftable: generic interface to tables
      reftable: read reftable files
      reftable: reftable file level tests
      reftable: add a heap-based priority queue for reftable records
      reftable: add merged table view
      reftable: implement refname validation
      reftable: implement stack, a mutable database of reftable files.
      reftable: add dump utility
      Add "test-tool dump-reftable" command.
      branch tests: test for errno propagating on failing read
      refs API: make refs_read_raw_ref() not set errno
      refs API: make parse_loose_ref_contents() not set errno
      refs: drop force_create argument of create_reflog API
      t1404: mark directory/file conflict tests with REFFILES
      show-branch: show reflog message
      test-ref-store: don't add newline to reflog message
      t1405: check for_each_reflog_ent_reverse() more thoroughly
      test-ref-store: tweaks to for-each-reflog-ent format
      refs/debug: trim trailing LF from reflog message
      test-ref-store: remove force-create argument for create-reflog
      test-ref-store: parse symbolic flag constants
      test-ref-store: plug memory leak in cmd_delete_refs
      refs: update comment.
      refs: introduce REF_SKIP_OID_VERIFICATION flag
      refs: introduce REF_SKIP_REFNAME_VERIFICATION flag
      t1430: remove refs using test-tool
      t1430: create valid symrefs using test-helper
      test-ref-store: print hash algorithm
      t5540: require REFFILES
      t5550: require REFFILES
      t7004: create separate tags for different tests
      t7004: use "test-tool ref-store" for reflog inspection
      refs: pass gitdir to packed_ref_store_create
      refs: print error message in debug output
      refs: centralize initialization of the base ref_store.
      reftable: fix typo in header
      reftable: signal overflow
      reftable: support preset file mode for writing
      reftable: avoid initializing structs from structs

Hans Krentel (hakre) (1):
      ci(check-whitespace): update stale file top comments

Ivan Frade (2):
      fetch-pack: redact packfile urls in traces
      http-fetch: redact url on die() message

Jacob Vosmaer (1):
      upload-pack.c: increase output buffer size

James Limbouris (1):
      subtree: fix argument handling in check_parents

Jean-Noël Avila (21):
      doc: fix git credential synopsis
      doc: split placeholders as individual tokens
      doc: express grammar placeholders between angle brackets
      doc: use only hyphens as word separators in placeholders
      doc: git-ls-files: express options as optional alternatives
      doc: use three dots for indicating repetition instead of star
      doc: uniformize <URL> placeholders' case
      doc: git-http-push: describe the refs as pattern pairs
      doc: git-init: clarify file modes in octal.
      i18n: refactor "foo and bar are mutually exclusive"
      i18n: refactor "%s, %s and %s are mutually exclusive"
      i18n: turn "options are incompatible" into "cannot be used together"
      i18n: standardize "cannot open" and "cannot read"
      i18n: tag.c factorize i18n strings
      i18n: factorize "--foo requires --bar" and the like
      i18n: factorize "no directory given for --foo"
      i18n: refactor "unrecognized %(foo) argument" strings
      i18n: factorize "--foo outside a repository"
      i18n: ref-filter: factorize "%(foo) atom used without %(bar) atom"
      i18n: turn even more messages into "cannot be used together" ones
      l10n: fr: v2.35.0 round 1

Jeff King (18):
      urlmatch: add underscore to URL_HOST_CHARS
      strbuf_addftime(): handle "%s" manually
      test_bitmap_hashes(): handle repository without bitmaps
      generate-cmdlist.sh: do not shell out to "sed"
      git-jump: pass "merge" arguments to ls-files
      t5319: corrupt more bytes of the midx checksum
      refs: work around gcc-11 warning with REF_HAVE_NEW
      fetch-pack: ignore SIGPIPE when writing to index-pack
      run-command: unify signal and regular logic for wait_or_whine()
      t7006: clean up SIGPIPE handling in trace2 tests
      t7006: simplify exit-code checks for sigpipe tests
      log: handle --decorate-refs with userformat "%d"
      log: load decorations with --simplify-by-decoration
      xdiff: drop CMP_ENV macro from xhistogram
      xdiff: drop xpparam_t parameter from histogram cmp_recs()
      xdiff: drop unused flags parameter from recs_match
      config.mak.dev: specify -std=gnu99 for gcc/clang
      doc/config: mark ssh allowedSigners example as literal

Jerry Zhang (3):
      git-apply: add --quiet flag
      git-apply: add --allow-empty flag
      git-apply: skip threeway in add / rename cases

Jiang Xin (3):
      l10n: git.pot: v2.35.0 round 1 (126 new, 142 removed)
      l10n: git.pot: v2.35.0 round 2 (1 new, 1 removed)
      l10n: batch update to fix typo in branch.c

Joel Holdsworth (9):
      git-p4: use with statements to close files after use in patchRCSKeywords
      git-p4: pre-compile RCS keyword regexes
      git-p4: add raw option to read_pipelines
      git-p4: open temporary patch file for write only
      git-p4: resolve RCS keywords in bytes not utf-8
      git-p4: print size values in appropriate units
      git-p4: show progress as an integer
      git-p4: remove "debug" verb
      git-p4: remove "rollback" verb

Johannes Altmanninger (1):
      t/perf: do not run tests in user's $SHELL

Johannes Schindelin (15):
      test-tool genzeros: generate large amounts of data more efficiently
      git-compat-util: introduce more size_t helpers
      ci: disallow directional formatting
      scalar: add a README with a roadmap
      scalar: create a rudimentary executable
      scalar: start documenting the command
      scalar: create test infrastructure
      scalar: let 'unregister' handle a deleted enlistment directory gracefully
      scalar: implement the `clone` subcommand
      scalar: teach 'clone' to support the --single-branch option
      scalar: allow reconfiguring an existing enlistment
      scalar: teach 'reconfigure' to optionally handle all registered enlistments
      scalar: implement the `version` command
      tests: set GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME only when needed
      getcwd(mingw): handle the case when there is no cwd

Johannes Sixt (3):
      generate-cmdlist.sh: spawn fewer processes
      generate-cmdlist.sh: replace for loop by printf's auto-repeat feature
      t1450-fsck: exec-bit is not needed to make loose object writable

John Cai (2):
      docs: fix places that break compilation in MyFirstObjectWalk
      docs: add headers in MyFirstObjectWalk

Jonathan Tan (2):
      packfile: avoid overflowing shift during decode
      Doc: no midx and partial clone relation

Jordi Mas (3):
      l10n: Update Catalan translation
      l10n: Update Catalan translation
      l10n: Update Catalan translation

Josh Steadmon (6):
      trace2: disable tr2_dst before warning on write errors
      branch: accept multiple upstream branches for tracking
      branch: add flags and config to inherit tracking
      config: require lowercase for branch.*.autosetupmerge
      l10n: README: call more attention to plural strings
      branch,checkout: fix --track usage strings

Junio C Hamano (32):
      for-each-ref: delay parsing of --sort=<atom> options
      MyFirstContribution: teach to use "format-patch --base=auto"
      unsetenv(3) returns int, not void
      init doc: --shared=0xxx does not give umask but perm bits
      Revert "grep/pcre2: fix an edge case concerning ascii patterns and UTF-8 data"
      0th batch for early fixes
      Revert "editor: save and reset terminal after calling EDITOR"
      A bit more regression fixes
      Git 2.34.1
      refs: document callback for reflog-ent iterators
      The first batch to start the current cycle
      revision: use C99 declaration of variable in for() loop
      grep: clarify what `grep.patternType=default` means
      flex-array: simplify compiler-specific workaround
      The second batch
      The third batch
      t4204 is not sanitizer clean at all
      format-patch: mark rev_info with UNLEAK
      merge: allow to pretend a merge is made into a different branch
      The fourth batch
      The fifth batch
      SubmittingPatchs: clarify choice of base and testing
      The sixth batch
      The seventh batch
      Git 2.35-rc0
      packfile: fix off-by-one error in decoding logic
      Last minute fixes before -rc1
      Git 2.35-rc1
      Makefile: FreeBSD cannot do C99-or-below build
      Git 2.35-rc2
      checkout: avoid BUG() when hitting a broken repository
      Git 2.35

Jürgen Krämer (1):
      l10n: de.po: Fix translation for "'%s' is aliased to '%s'"

Kashav Madan (1):
      help: make auto-correction prompt more consistent

Lessley Dennington (7):
      git: ensure correct git directory setup with -h
      commit-graph: return if there is no git directory
      test-read-cache: set up repo after git directory
      repo-settings: prepare_repo_settings only in git repos
      diff: replace --staged with --cached in t1092 tests
      diff: enable and test the sparse index
      blame: enable and test the sparse index

Lénaïc Huard (1):
      grep: align default colors with GNU grep ones

Marc Strapetz (1):
      t/README: fix typo

Martin Ågren (1):
      cache.h: drop duplicate `ensure_full_index()` declaration

Matt Cooper (4):
      t1051: introduce a smudge filter test for extremely large files
      odb: teach read_blob_entry to use size_t
      odb: guard against data loss checking out a huge file
      clean/smudge: allow clean filters to process extremely large files

Matthew John Cheetham (1):
      scalar: implement the `delete` command

Matthias Aßhauer (1):
      lazyload: use correct calling conventions

Matthias Rüster (1):
      l10n: de.po: Update German translation

Mugdha Pattnaik (1):
      submodule: absorb git dir instead of dying on deinit

Neeraj Singh (2):
      tmp-objdir: new API for creating temporary writable databases
      tmp-objdir: disable ref updates when replacing the primary odb

Patrick Steinhardt (1):
      fetch: fix deadlock when cleaning up lockfiles in async signals

Peter Krefting (2):
      l10n: sv.po: Fix typo
      l10n: sv.po: Update Swedish translation (5196t0f0u)

Philip Oakley (3):
      repack.c: LLP64 compatibility, upcast unity for left shift
      diffcore-delta.c: LLP64 compatibility, upcast unity for left shift
      object-file.c: LLP64 compatibility, upcast unity for left shift

Philippe Blain (1):
      SubmittingPatches: fix Asciidoc syntax in "GitHub CI" section

Phillip Wood (19):
      diff histogram: intern strings
      xdiff: avoid unnecessary memory allocations
      xdiff: simplify comparison
      xdiff: implement a zealous diff3, or "zdiff3"
      diff --color-moved: add perf tests
      diff --color-moved: clear all flags on blocks that are too short
      diff --color-moved: factor out function
      diff --color-moved: rewind when discarding pmb
      diff --color-moved=zebra: fix alternate coloring
      diff --color-moved: avoid false short line matches and bad zebra coloring
      diff: simplify allow-indentation-change delta calculation
      diff --color-moved-ws=allow-indentation-change: simplify and optimize
      diff --color-moved: call comparison function directly
      diff --color-moved: unify moved block growth functions
      diff --color-moved: shrink potential moved blocks as we go
      diff --color-moved: stop clearing potential moved blocks
      diff --color-moved-ws=allow-indentation-change: improve hash lookups
      diff: use designated initializers for emitted_diff_symbol
      diff --color-moved: intern strings

Randall S. Becker (1):
      build: NonStop ships with an older zlib

René Scharfe (7):
      mergesort: avoid left shift overflow
      log: let --invert-grep only invert --grep
      t4202: fix patternType setting in --invert-grep test
      daemon: plug memory leak on overlong path
      grep/pcre2: use PCRE2_UTF even with ASCII patterns
      grep/pcre2: factor out literal variable
      branch,checkout: fix --track documentation

Robert Estelle (3):
      color: add missing GIT_COLOR_* white/black constants
      color: support "default" to restore fg/bg color
      color: allow colors to be prefixed with "reset"

Robin Jarry (1):
      receive-pack: ignore SIGPIPE while reporting status to client

Sergey Organov (2):
      stash: implement '--staged' option for 'push' and 'save'
      stash: get rid of unused argument in stash_staged()

Taylor Blau (11):
      midx.c: clean up chunkfile after reading the MIDX
      midx.c: don't leak MIDX from verify_midx_file
      t/helper/test-read-midx.c: free MIDX within read_midx_file()
      builtin/pack-objects.c: don't leak memory via arguments
      builtin/repack.c: avoid leaking child arguments
      builtin/multi-pack-index.c: don't leak concatenated options
      midx.c: write MIDX filenames to strbuf
      pack-bitmap.c: don't leak type-level bitmaps
      pack-bitmap.c: more aggressively free in free_bitmap_index()
      packfile: make `close_pack_revindex()` static
      fmt-merge-msg: prevent use-after-free with signed tags

Teng Long (1):
      midx: fix a formatting issue in "multi-pack-index.txt"

Thiago Perrotta (2):
      send-email: programmatically generate bash completions
      send-email docs: add format-patch options

Thomas Weißschuh (1):
      var: add GIT_DEFAULT_BRANCH variable

Trần Ngọc Quân (1):
      l10n: vi(5195t): Update for v2.35.0 round 2

Victoria Dye (12):
      reset: rename is_missing to !is_in_reset_tree
      reset: preserve skip-worktree bit in mixed reset
      sparse-index: update command for expand/collapse test
      test-read-cache.c: prepare_repo_settings after config init
      sparse-index: avoid unnecessary cache tree clearing
      sparse-index: add ensure_correct_sparsity function
      sparse-index: update do_read_index to ensure correct sparsity
      reset: expand test coverage for sparse checkouts
      reset: integrate with sparse index
      reset: make sparse-aware (except --mixed)
      reset: make --mixed sparse-aware
      unpack-trees: improve performance of next_cache_entry

William Sprent (1):
      fast-export: fix surprising behavior with --first-parent

Yi-Jyun Pan (2):
      l10n: zh_TW: v2.35.0 round 1 (1 fuzzy)
      l10n: zh_TW: v2.35.0 round 2 (0 untranslated)

Yoichi Nakayama (1):
      completion: add human and auto: date format

brian m. carlson (1):
      git-compat-util: add a test balloon for C99 support

Ævar Arnfjörð Bjarmason (88):
      refs API: add a version of refs_resolve_ref_unsafe() with "errno"
      refs API: make refs_rename_ref_available() static
      reflog tests: add --updateref tests
      refs/files: remove "name exist?" check in lock_ref_oid_basic()
      refs API: remove refs_read_ref_full() wrapper
      refs API: make resolve_gitlink_ref() not set errno
      refs API: make loose_fill_ref_dir() not set errno
      refs API: make files_copy_or_rename_ref() et al not set errno
      refs API: ignore errno in worktree.c's add_head_info()
      refs API: ignore errno in worktree.c's find_shared_symref()
      refs tests: ignore ignore errno in test-ref-store helper
      refs API: make refs_resolve_refdup() not set errno
      refs API: make refs_ref_exists() not set errno
      refs API: make resolve_ref_unsafe() not set errno
      refs API: make expand_ref() & repo_dwim_log() not set errno
      refs API: don't expose "errno" in run_transaction_hook()
      refs API: post-migration API renaming [1/2]
      refs API: post-migration API renaming [2/2]
      Makefile: move git-SCRIPT-DEFINES adjacent to $(SCRIPT_DEFINES)
      Makefile: remove $(GIT_VERSION) from $(SCRIPT_DEFINES)
      Makefile: remove $(NO_CURL) from $(SCRIPT_DEFINES)
      git-instaweb: unconditionally assume that gitweb is mod_perl capable
      git-sh-setup: remove unused sane_egrep() function
      git-sh-setup: remove "sane_grep", it's not needed anymore
      leak tests: mark a read-tree test as passing SANITIZE=leak
      leak tests: mark "sort" test as passing SANITIZE=leak
      leak tests: mark most gettext tests as passing with SANITIZE=leak
      leak tests: mark some misc tests as passing with SANITIZE=leak
      leak tests: mark some rev-list tests as passing with SANITIZE=leak
      leak tests: mark some rev-parse tests as passing with SANITIZE=leak
      leak tests: mark some update-index tests as passing with SANITIZE=leak
      leak tests: mark some notes tests as passing with SANITIZE=leak
      leak tests: mark some apply tests as passing with SANITIZE=leak
      leak tests: mark some diff tests as passing with SANITIZE=leak
      leak tests: mark some add tests as passing with SANITIZE=leak
      leak tests: mark some clone tests as passing with SANITIZE=leak
      leak tests: mark some status tests as passing with SANITIZE=leak
      leak tests: mark some config tests as passing with SANITIZE=leak
      leak tests: mark some fast-import tests as passing with SANITIZE=leak
      command-list.txt: sort with "LC_ALL=C sort"
      generate-cmdlist.sh: trivial whitespace change
      generate-cmdlist.sh: don't call get_categories() from category_list()
      generate-cmdlist.sh: run "grep | sort", not "sort | grep"
      generate-cmdlist.sh: stop sorting category lines
      generate-cmdlist.sh: replace "grep' invocation with a shell version
      generate-cmdlist.sh: don't parse command-list.txt thrice
      parse-options.c: use "enum parse_opt_result" for parse_nodash_opt()
      checkout: fix "branch info" memory leaks
      CI: remove Travis CI support
      CI: use shorter names that fit in UX tooltips
      CI: rename the "Linux32" job to lower-case "linux32"
      CI: use "$runs_on_pool", not "$jobname" to select packages & config
      CI: don't run "make test" twice in one job
      upload-archive: use regular "struct child_process" pattern
      run-command API users: use strvec_pushv(), not argv assignment
      run-command tests: use strvec_pushv(), not argv assignment
      run-command API users: use strvec_pushl(), not argv construction
      run-command API users: use strvec_push(), not argv construction
      run-command API: remove "argv" member, always use "args"
      difftool: use "env_array" to simplify memory management
      run-command API: remove "env" member, always use "env_array"
      common-main.c: call exit(), don't return
      pack-objects: use BUG(...) not die("BUG: ...")
      strbuf.h: use BUG(...) not die("BUG: ...")
      pathspec: use BUG(...) not die("BUG:%s:%d....", <file>, <line>)
      object.c: use BUG(...) no die("BUG: ...") in lookup_object_by_type()
      usage.c: add a die_message() routine
      usage.c API users: use die_message() for "fatal :" + exit 128
      usage.c API users: use die_message() for error() + exit 128
      gc: return from cmd_gc(), don't call exit()
      usage.c + gc: add and use a die_message_errno()
      config API: use get_error_routine(), not vreportf()
      pull, fetch: fix segfault in --set-upstream option
      stash: don't show "git stash push" usage on bad "git stash" usage
      reflog delete: narrow scope of "cmd" passed to count_reflog_ent()
      reflog expire: narrow scope of "cb" in cmd_reflog_expire()
      reflog: change one->many worktree->refnames to use a string_list
      reflog expire: use "switch" over enum values
      reflog expire: refactor & use "tip_commit" only for UE_NORMAL
      reflog expire: don't use lookup_commit_reference_gently()
      reflog: reduce scope of "struct rev_info"
      refs files-backend: assume cb->newlog if !EXPIRE_REFLOGS_DRY_RUN
      reflog + refs-backend: move "verbose" out of the backend
      Makefile: correct the dependency graph of hook-list.h
      Makefile: move -DPAGER_ENV from BASIC_CFLAGS to EXTRA_CPPFLAGS
      Makefile: don't invoke msgfmt with --statistics
      refs API: use "failure_errno", not "errno"
      reftable tests: avoid "int" overflow, use "uint64_t"

Øystein Walle (2):
      status: count stash entries in separate function
      status: print stash info with --porcelain=v2 --show-stash

徐沛文 (Aleen) (3):
      doc: git-format-patch: describe the option --always
      am: support --empty=<option> to handle empty patches
      am: support --allow-empty to record specific empty patches


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.35.0-rc2
@ 2022-01-20 18:44  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-01-20 18:44 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.35.0-rc2 is now available for testing at
the usual places.  It is comprised of 472 non-merge commits since
v2.34.0, contributed by 81 people, 32 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.35.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.34.0 are as follows.
Welcome to the Git development community!

  AJ Henderson, Alex Waite, Baruch Burstein, Calbabreaker, Calvin
  Wan, Christoph Reiter, Clemens Fruhwirth, Danial Alihosseini,
  Dotan Cohen, Enzo Matsumiya, Erwin Villejo, Gustave Granroth,
  Hans Krentel (hakre), Ivan Frade, James Limbouris, Jan Pokorný,
  Joel Holdsworth, John Burnett, John Cai, Josh Rampersad, Kashav
  Madan, Lessley Dennington, Matt Cooper, Matthew John Cheetham,
  Mike Marcelais, Mugdha Pattnaik, Nikita Bobko, Robin Jarry,
  Thiago Perrotta, Thomas Weißschuh, William Sprent, and 徐沛文
  (Aleen).

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alex Henrie, Anders Kaseorg,
  Bagas Sanjaya, brian m. carlson, Carlo Marcelo Arenas Belón,
  David Aguilar, Derrick Stolee, Elijah Newren, Eli Schwartz,
  Eric Sunshine, Eric Wong, Fabian Stelzer, Glen Choo, Greg
  Hurrell, Han-Wen Nienhuys, Jacob Vosmaer, Jean-Noël Avila,
  Jeff King, Jerry Zhang, Jiang Xin, Johannes Altmanninger,
  Johannes Schindelin, Johannes Sixt, Jonathan Tan, Josh Steadmon,
  Junio C Hamano, Lénaïc Huard, Linus Torvalds, Marc Strapetz,
  Martin Ågren, Matthias Aßhauer, Mike Hommey, Neeraj Singh,
  Øystein Walle, Patrick Steinhardt, Philip Oakley, Philippe
  Blain, Phillip Wood, Ralf Thielow, Randall S. Becker, René
  Scharfe, Robert Estelle, Sergey Organov, SZEDER Gábor, Taylor
  Blau, Teng Long, Victoria Dye, and Yoichi Nakayama.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git 2.35 Release Notes (draft)
==============================

Updates since Git 2.34
----------------------

Backward compatibility warts

 * "_" is now treated as any other URL-valid characters in an URL when
   matching the per-URL configuration variable names.

 * The color palette used by "git grep" has been updated to match that
   of GNU grep.


UI, Workflows & Features

 * "git status --porcelain=v2" now show the number of stash entries
   with --show-stash like the normal output does.

 * "git stash" learned the "--staged" option to stash away what has
   been added to the index (and nothing else).

 * "git var GIT_DEFAULT_BRANCH" is a way to see what name is used for
   the newly created branch if "git init" is run.

 * Various operating modes of "git reset" have been made to work
   better with the sparse index.

 * "git submodule deinit" for a submodule whose .git metadata
   directory is embedded in its working tree refused to work, until
   the submodule gets converted to use the "absorbed" form where the
   metadata directory is stored in superproject, and a gitfile at the
   top-level of the working tree of the submodule points at it.  The
   command is taught to convert such submodules to the absorbed form
   as needed.

 * The completion script (in contrib/) learns that the "--date"
   option of commands from the "git log" family takes "human" and
   "auto" as valid values.

 * "Zealous diff3" style of merge conflict presentation has been added.

 * The "git log --format=%(describe)" placeholder has been extended to
   allow passing selected command-line options to the underlying "git
   describe" command.

 * "default" and "reset" have been added to our color palette.

 * The cryptographic signing using ssh keys can specify literal keys
   for keytypes whose name do not begin with the "ssh-" prefix by
   using the "key::" prefix mechanism (e.g. "key::ecdsa-sha2-nistp256").

 * "git fetch" without the "--update-head-ok" option ought to protect
   a checked out branch from getting updated, to prevent the working
   tree that checks it out to go out of sync.  The code was written
   before the use of "git worktree" got widespread, and only checked
   the branch that was checked out in the current worktree, which has
   been updated.

 * "git name-rev" has been tweaked to give output that is shorter and
   easier to understand.

 * "git apply" has been taught to ignore a message without a patch
   with the "--allow-empty" option.  It also learned to honor the
   "--quiet" option given from the command line.

 * The "init" and "set" subcommands in "git sparse-checkout" have been
   unified for a better user experience and performance.

 * Many git commands that deal with working tree files try to remove a
   directory that becomes empty (i.e. "git switch" from a branch that
   has the directory to another branch that does not would attempt
   remove all files in the directory and the directory itself).  This
   drops users into an unfamiliar situation if the command was run in
   a subdirectory that becomes subject to removal due to the command.
   The commands have been taught to keep an empty directory if it is
   the directory they were started in to avoid surprising users.

 * "git am" learns "--empty=(stop|drop|keep)" option to tweak what is
   done to a piece of e-mail without a patch in it.

 * The default merge message prepared by "git merge" records the name
   of the current branch; the name can be overridden with a new option
   to allow users to pretend a merge is made on a different branch.

 * The way "git p4" shows file sizes in its output has been updated to
   use human-readable units.

 * "git -c branch.autosetupmerge=inherit branch new old" makes "new"
   to have the same upstream as the "old" branch, instead of marking
   "old" itself as its upstream.


Performance, Internal Implementation, Development Support etc.

 * The use of errno as a means to carry the nature of error in the ref
   API implementation has been reworked and reduced.

 * Teach and encourage first-time contributors to this project to
   state the base commit when they submit their topic.

 * The command line completion for "git send-email" options have been
   tweaked to make it easier to keep it in sync with the command itself.

 * Ensure that the sparseness of the in-core index matches the
   index.sparse configuration specified by the repository immediately
   after the on-disk index file is read.

 * Code clean-up to eventually allow information on remotes defined
   for an arbitrary repository to be read.

 * Build optimization.

 * Tighten code for testing pack-bitmap.

 * Weather balloon to break people with compilers that do not support
   C99.

 * The "reftable" backend for the refs API, without integrating into
   the refs subsystem, has been added.

 * More tests are marked as leak-free.

 * The test framework learns to list unsatisfied test prerequisites,
   and optionally error out when prerequisites that are expected to be
   satisfied are not.

 * The default setting for trace2 event nesting was too low to cause
   test failures, which is worked around by bumping it up in the test
   framework.

 * Drop support for TravisCI and update test workflows at GitHub.

 * Many tests that used to need GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
   mechanism to force "git" to use 'master' as the default name for
   the initial branch no longer need it; the use of the mechanism from
   them have been removed.

 * Allow running our tests while disabling fsync.

 * Document the parameters given to the reflog entry iterator callback
   functions.
   (merge e6e94f34b2 jc/reflog-iterator-callback-doc later to maint).

 * The test helper for refs subsystem learned to write bogus and/or
   nonexistent object name to refs to simulate error situations we
   want to test Git in.

 * "diff --histogram" optimization.

 * Weather balloon to find compilers that do not grok variable
   declaration in the for() loop.

 * diff and blame commands have been taught to work better with sparse
   index.

 * The chainlint test script linter in the test suite has been updated.

 * The DEVELOPER=yes build uses -std=gnu99 now.

 * "git format-patch" uses a single rev_info instance and then exits.
   Mark the structure with UNLEAK() macro to squelch leak sanitizer.

 * New interface into the tmp-objdir API to help in-core use of the
   quarantine feature.

 * Broken &&-chains in the test scripts have been corrected.

 * The RCS keyword substitution in "git p4" used to be done assuming
   that the contents are UTF-8 text, which can trigger decoding
   errors.  We now treat the contents as a bytestring for robustness
   and correctness.

 * The conditions to choose different definitions of the FLEX_ARRAY
   macro for vendor compilers has been simplified to make it easier to
   maintain.

 * Correctness and performance update to "diff --color-moved" feature.

 * "git upload-pack" (the other side of "git fetch") used a 8kB buffer
   but most of its payload came on 64kB "packets".  The buffer size
   has been enlarged so that such a packet fits.

 * "git fetch" and "git pull" are now declared sparse-index clean.
   Also "git ls-files" learns the "--sparse" option to help debugging.

 * Similar message templates have been consolidated so that
   translators need to work on fewer number of messages.


Fixes since v2.34
-----------------

 * "git grep" looking in a blob that has non-UTF8 payload was
   completely broken when linked with certain versions of PCREv2
   library in the latest release.

 * Other code cleanup, docfix, build fix, etc.

 * "git pull" with any strategy when the other side is behind us
   should succeed as it is a no-op, but doesn't.

 * An earlier change in 2.34.0 caused JGit application (that abused
   GIT_EDITOR mechanism when invoking "git config") to get stuck with
   a SIGTTOU signal; it has been reverted.

 * An earlier change that broke .gitignore matching has been reverted.

 * Things like "git -c branch.sort=bogus branch new HEAD", i.e. the
   operation modes of the "git branch" command that do not need the
   sort key information, no longer errors out by seeing a bogus sort
   key.
   (merge 98e7ab6d42 jc/fix-ref-sorting-parse later to maint).

 * The compatibility implementation for unsetenv(3) were written to
   mimic ancient, non-POSIX, variant seen in an old glibc; it has been
   changed to return an integer to match the more modern era.
   (merge a38989bd5b jc/unsetenv-returns-an-int later to maint).

 * The clean/smudge conversion code path has been prepared to better
   work on platforms where ulong is narrower than size_t.
   (merge 596b5e77c9 mc/clean-smudge-with-llp64 later to maint).

 * Redact the path part of packfile URI that appears in the trace output.
   (merge 0ba558ffb1 if/redact-packfile-uri later to maint).

 * CI has been taught to catch some Unicode directional formatting
   sequence that can be used in certain mischief.
   (merge 0e7696c64d js/ci-no-directional-formatting later to maint).

 * The "--date=format:<strftime>" gained a workaround for the lack of
   system support for a non-local timezone to handle "%s" placeholder.
   (merge 9b591b9403 jk/strbuf-addftime-seconds-since-epoch later to maint).

 * The "merge" subcommand of "git jump" (in contrib/) silently ignored
   pathspec and other parameters.
   (merge 67ba13e5a4 jk/jump-merge-with-pathspec later to maint).

 * The code to decode the length of packed object size has been
   corrected.
   (merge 34de5b8eac jt/pack-header-lshift-overflow later to maint).

 * The advice message given by "git pull" when the user hasn't made a
   choice between merge and rebase still said that the merge is the
   default, which no longer is the case.  This has been corrected.
   (merge 71076d0edd ah/advice-pull-has-no-preference-between-rebase-and-merge later to maint).

 * "git fetch", when received a bad packfile, can fail with SIGPIPE.
   This wasn't wrong per-se, but we now detect the situation and fail
   in a more predictable way.
   (merge 2a4aed42ec jk/fetch-pack-avoid-sigpipe-to-index-pack later to maint).

 * The function to cull a child process and determine the exit status
   had two separate code paths for normal callers and callers in a
   signal handler, and the latter did not yield correct value when the
   child has caught a signal.  The handling of the exit status has
   been unified for these two code paths.  An existing test with
   flakiness has also been corrected.
   (merge 5263e22cba jk/t7006-sigpipe-tests-fix later to maint).

 * When a non-existent program is given as the pager, we tried to
   reuse an uninitialized child_process structure and crashed, which
   has been fixed.
   (merge f917f57f40 em/missing-pager later to maint).

 * The single-key-input mode in "git add -p" had some code to handle
   keys that generate a sequence of input via ReadKey(), which did not
   handle end-of-file correctly, which has been fixed.
   (merge fc8a8126df cb/add-p-single-key-fix later to maint).

 * "git rebase -x" added an unnecessary 'exec' instructions before
   'noop', which has been corrected.
   (merge cc9dcdee61 en/rebase-x-fix later to maint).

 * When the "git push" command is killed while the receiving end is
   trying to report what happened to the ref update proposals, the
   latter used to die, due to SIGPIPE.  The code now ignores SIGPIPE
   to increase our chances to run the post-receive hook after it
   happens.
   (merge d34182b9e3 rj/receive-pack-avoid-sigpipe-during-status-reporting later to maint).

 * "git worktree add" showed "Preparing worktree" message to the
   standard output stream, but when it failed, the message from die()
   went to the standard error stream.  Depending on the order the
   stdio streams are flushed at the program end, this resulted in
   confusing output.  It has been corrected by sending all the chatty
   messages to the standard error stream.
   (merge b50252484f es/worktree-chatty-to-stderr later to maint).

 * Coding guideline document has been updated to clarify what goes to
   standard error in our system.
   (merge e258eb4800 es/doc-stdout-vs-stderr later to maint).

 * The sparse-index/sparse-checkout feature had a bug in its use of
   the matching code to determine which path is in or outside the
   sparse checkout patterns.
   (merge 8c5de0d265 ds/sparse-deep-pattern-checkout-fix later to maint).

 * "git rebase -x" by mistake started exporting the GIT_DIR and
   GIT_WORK_TREE environment variables when the command was rewritten
   in C, which has been corrected.
   (merge 434e0636db en/rebase-x-wo-git-dir-env later to maint).

 * When "git log" implicitly enabled the "decoration" processing
   without being explicitly asked with "--decorate" option, it failed
   to read and honor the settings given by the "--decorate-refs"
   option.

 * "git fetch --set-upstream" did not check if there is a current
   branch, leading to a segfault when it is run on a detached HEAD,
   which has been corrected.
   (merge 17baeaf82d ab/fetch-set-upstream-while-detached later to maint).

 * Among some code paths that ask an yes/no question, only one place
   gave a prompt that looked different from the others, which has been
   updated to match what the others create.
   (merge 0fc8ed154c km/help-prompt-fix later to maint).

 * "git log --invert-grep --author=<name>" used to exclude commits
   written by the given author, but now "--invert-grep" only affects
   the matches made by the "--grep=<pattern>" option.
   (merge 794c000267 rs/log-invert-grep-with-headers later to maint).

 * "git grep --perl-regexp" failed to match UTF-8 characters with
   wildcard when the pattern consists only of ASCII letters, which has
   been corrected.
   (merge 32e3e8bc55 rs/pcre2-utf later to maint).

 * Certain sparse-checkout patterns that are valid in non-cone mode
   led to segfault in cone mode, which has been corrected.

 * Use of certain "git rev-list" options with "git fast-export"
   created nonsense results (the worst two of which being "--reverse"
   and "--invert-grep --grep=<foo>").  The use of "--first-parent" is
   made to behave a bit more sensible than before.
   (merge 726a228dfb ws/fast-export-with-revision-options later to maint).

 * Perf tests were run with end-user's shell, but it has been
   corrected to use the shell specified by $TEST_SHELL_PATH.
   (merge 9ccab75608 ja/perf-use-specified-shell later to maint).

 * Fix dependency rules to generate hook-list.h header file.
   (merge d3fd1a6667 ab/makefile-hook-list-dependency-fix later to maint).

 * "git stash" by default triggers its "push" action, but its
   implementation also made "git stash -h" to show short help only for
   "git stash push", which has been corrected.
   (merge ca7990cea5 ab/do-not-limit-stash-help-to-push later to maint).

 * "git apply --3way" bypasses the attempt to do a three-way
   application in more cases to address the regression caused by the
   recent change to use direct application as a fallback.
   (merge 34d607032c jz/apply-3-corner-cases later to maint).

 * Fix performance-releated bug in "git subtree" (in contrib/).
   (merge 3ce8888fb4 jl/subtree-check-parents-argument-passing-fix later to maint).

 * Extend the guidance to choose the base commit to build your work
   on, and hint/nudge contributors to read others' changes.
   (merge fdfae830f8 jc/doc-submitting-patches-choice-of-base later to maint).

 * A corner case bug in the ort merge strategy has been corrected.
   (merge d30126c20d en/merge-ort-renorm-with-rename-delete-conflict-fix later to maint).

 * "git stash apply" forgot to attempt restoring untracked files when
   it failed to restore changes to tracked ones.
   (merge 71cade5a0b en/stash-df-fix later to maint).

 * Calling dynamically loaded functions on Windows has been corrected.
   (merge 4a9b204920 ma/windows-dynload-fix later to maint).

 * Some lockfile code called free() in signal-death code path, which
   has been corrected.
   (merge 58d4d7f1c5 ps/lockfile-cleanup-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 74db416c9c cw/protocol-v2-doc-fix later to maint).
   (merge f9b2b6684d ja/doc-cleanup later to maint).
   (merge 7d1b866778 jc/fix-first-object-walk later to maint).
   (merge 538ac74604 js/trace2-avoid-recursive-errors later to maint).
   (merge 152923b132 jk/t5319-midx-corruption-test-deflake later to maint).
   (merge 9081a421a6 ab/checkout-branch-info-leakfix later to maint).
   (merge 42c456ff81 rs/mergesort later to maint).
   (merge ad506e6780 tl/midx-docfix later to maint).
   (merge bf5b83fd8a hk/ci-checkwhitespace-commentfix later to maint).
   (merge 49f1eb3b34 jk/refs-g11-workaround later to maint).
   (merge 7d3fc7df70 jt/midx-doc-fix later to maint).
   (merge 7b089120d9 hn/create-reflog-simplify later to maint).
   (merge 9e12400da8 cb/mingw-gmtime-r later to maint).
   (merge 0bf0de6cc7 tb/pack-revindex-on-disk-cleanup later to maint).
   (merge 2c68f577fc ew/cbtree-remove-unused-and-broken-cb-unlink later to maint).
   (merge eafd6e7e55 ab/die-with-bug later to maint).
   (merge 91028f7659 jc/grep-patterntype-default-doc later to maint).
   (merge 47ca93d071 ds/repack-fixlets later to maint).
   (merge e6a9bc0c60 rs/t4202-invert-grep-test-fix later to maint).
   (merge deb5407a42 gh/gpg-doc-markup-fix later to maint).
   (merge 999bba3e0b rs/daemon-plug-leak later to maint).
   (merge 786eb1ba39 js/l10n-mention-ngettext-early-in-readme later to maint).
   (merge 2f12b31b74 ab/makefile-msgfmt-wo-stats later to maint).
   (merge 0517f591ca fs/gpg-unknown-key-test-fix later to maint).
   (merge 97d6fb5a1f ma/header-dup-cleanup later to maint).

----------------------------------------------------------------

Changes since v2.34.0 are as follows:

Alex Henrie (1):
      pull: don't say that merge is "the default strategy"

Anders Kaseorg (8):
      fetch: lowercase error messages
      receive-pack: lowercase error messages
      branch: lowercase error messages
      worktree: simplify find_shared_symref() memory ownership model
      fetch: protect branches checked out in all worktrees
      receive-pack: clean dead code from update_worktree()
      receive-pack: protect current branch for bare repository worktree
      branch: protect branches checked out in all worktrees

Bagas Sanjaya (1):
      branch: missing space fix at line 313

Calvin Wan (1):
      protocol-v2.txt: align delim-pkt spec with usage

Carlo Marcelo Arenas Belón (4):
      test-genzeros: allow more than 2G zeros in Windows
      test-lib: add prerequisite for 64-bit platforms
      mingw: avoid fallback for {local,gm}time_r()
      add -p: avoid use of undefined $key when ReadKey -> EOF

David Aguilar (1):
      build: centos/RHEL 7 ships with an older gcc and zlib

Derrick Stolee (19):
      dir: revert "dir: select directories correctly"
      test-lib.sh: set GIT_TRACE2_EVENT_NESTING
      t/t*: remove custom GIT_TRACE2_EVENT_NESTING
      scalar: 'register' sets recommended config and starts maintenance
      scalar: 'unregister' stops background maintenance
      scalar: implement 'scalar list'
      scalar: implement the `run` command
      t1092: add deeper changes during a checkout
      unpack-trees: use traverse_path instead of name
      repack: respect kept objects with '--write-midx -b'
      repack: make '--quiet' disable progress
      fetch/pull: use the sparse index
      ls-files: add --sparse option
      t1092: replace 'read-cache --table' with 'ls-files --sparse'
      t1091/t3705: remove 'test-tool read-cache --table'
      test-read-cache: remove --table, --expand options
      sparse-checkout: fix segfault on malformed patterns
      sparse-checkout: fix OOM error with mixed patterns
      sparse-checkout: refuse to add to bad patterns

Eli Schwartz (3):
      pretty.c: rework describe options parsing for better extensibility
      pretty: add tag option to %(describe)
      pretty: add abbrev option to %(describe)

Elijah Newren (28):
      sequencer: avoid adding exec commands for non-commit creating commands
      update documentation for new zdiff3 conflictStyle
      name-rev: prefer shorter names over following merges
      sequencer: do not export GIT_DIR and GIT_WORK_TREE for 'exec'
      t2501: add various tests for removing the current working directory
      setup: introduce startup_info->original_cwd
      unpack-trees: refuse to remove startup_info->original_cwd
      unpack-trees: add special cwd handling
      symlinks: do not include startup_info->original_cwd in dir removal
      clean: do not attempt to remove startup_info->original_cwd
      rebase: do not attempt to remove startup_info->original_cwd
      stash: do not attempt to remove startup_info->original_cwd
      dir: avoid incidentally removing the original_cwd in remove_path()
      dir: new flag to remove_dir_recurse() to spare the original_cwd
      t2501: simplify the tests since we can now assume desired behavior
      sparse-checkout: pass use_stdin as a parameter instead of as a global
      sparse-checkout: break apart functions for sparse_checkout_(set|add)
      sparse-checkout: add sanity-checks on initial sparsity state
      sparse-checkout: disallow --no-stdin as an argument to set
      sparse-checkout: split out code for tweaking settings config
      sparse-checkout: enable `set` to initialize sparse-checkout mode
      sparse-checkout: enable reapply to take --[no-]{cone,sparse-index}
      git-sparse-checkout.txt: update to document init/set/reapply changes
      Documentation: clarify/correct a few sparsity related statements
      clone: avoid using deprecated `sparse-checkout init`
      sparse-checkout: remove stray trailing space
      merge-ort: fix bug with renormalization and rename/delete conflicts
      stash: do not return before restoring untracked files

Enzo Matsumiya (1):
      pager: fix crash when pager program doesn't exist

Eric Sunshine (38):
      worktree: stop being overly intimate with run_command() internals
      CodingGuidelines: document which output goes to stdout vs. stderr
      worktree: send "chatty" messages to stderr
      git-worktree.txt: add missing `-v` to synopsis for `worktree list`
      t/lib-pager: use sane_unset() to avoid breaking &&-chain
      t1010: fix unnoticed failure on Windows
      t1020: avoid aborting entire test script when one test fails
      t4202: clarify intent by creating expected content less cleverly
      t5516: drop unnecessary subshell and command invocation
      t6300: make `%(raw:size) --shell` test more robust
      t9107: use shell parameter expansion to avoid breaking &&-chain
      tests: simplify construction of large blocks of text
      tests: use test_write_lines() to generate line-oriented output
      tests: fix broken &&-chains in compound statements
      tests: fix broken &&-chains in `$(...)` command substitutions
      tests: fix broken &&-chains in `{...}` groups
      tests: apply modern idiom for signaling test failure
      tests: apply modern idiom for exiting loop upon failure
      tests: simplify by dropping unnecessary `for` loops
      t0000-t3999: detect and signal failure within loop
      t4000-t4999: detect and signal failure within loop
      t5000-t5999: detect and signal failure within loop
      t6000-t9999: detect and signal failure within loop
      t/chainlint/*.test: don't use invalid shell syntax
      t/chainlint/*.test: fix invalid test cases due to mixing quote types
      t/chainlint/*.test: generalize self-test commentary
      t/chainlint/one-liner: avoid overly intimate chainlint.sed knowledge
      t/Makefile: optimize chainlint self-test
      chainlint.sed: improve ?!AMP?! placement accuracy
      chainlint.sed: improve ?!SEMI?! placement accuracy
      chainlint.sed: tolerate harmless ";" at end of last line in block
      chainlint.sed: drop unnecessary distinction between ?!AMP?! and ?!SEMI?!
      chainlint.sed: drop subshell-closing ">" annotation
      chainlint.sed: make here-doc "<<-" operator recognition more POSIX-like
      chainlint.sed: don't mistake `<< word` in string as here-doc operator
      chainlint.sed: stop throwing away here-doc tags
      chainlint.sed: swallow comments consistently
      chainlint.sed: stop splitting "(..." into separate lines "(" and "..."

Eric Wong (2):
      tests: disable fsync everywhere
      cbtree: remove broken and unused cb_unlink

Erwin Villejo (1):
      pull: should be noop when already-up-to-date

Fabian Stelzer (15):
      ssh signing: support non ssh-* keytypes
      ssh signing: make sign/amend test more resilient
      test-lib: show missing prereq summary
      test-lib: introduce required prereq for test runs
      test-lib: make BAIL_OUT() work in tests and prereq
      t/fmt-merge-msg: do not redirect stderr
      t/fmt-merge-msg: make gpgssh tests more specific
      ssh signing: use sigc struct to pass payload
      ssh signing: add key lifetime test prereqs
      ssh signing: make verify-commit consider key lifetime
      ssh signing: make git log verify key lifetime
      ssh signing: make verify-tag consider key lifetime
      ssh signing: make fmt-merge-msg consider key lifetime
      ssh signing: verify ssh-keygen in test prereq
      t/gpg: simplify test for unknown key

Glen Choo (5):
      t5516: add test case for pushing remote refspecs
      remote: move static variables into per-repository struct
      remote: use remote_state parameter internally
      remote: remove the_repository->remote_state from static methods
      remote: die if branch is not found in repository

Greg Hurrell (1):
      docs: add missing colon to Documentation/config/gpg.txt

Han-Wen Nienhuys (49):
      hash.h: provide constants for the hash IDs
      reftable: add LICENSE
      reftable: add error related functionality
      reftable: utility functions
      reftable: add blocksource, an abstraction for random access reads
      reftable: (de)serialization for the polymorphic record type.
      Provide zlib's uncompress2 from compat/zlib-compat.c
      reftable: reading/writing blocks
      reftable: a generic binary tree implementation
      reftable: write reftable files
      reftable: generic interface to tables
      reftable: read reftable files
      reftable: reftable file level tests
      reftable: add a heap-based priority queue for reftable records
      reftable: add merged table view
      reftable: implement refname validation
      reftable: implement stack, a mutable database of reftable files.
      reftable: add dump utility
      Add "test-tool dump-reftable" command.
      branch tests: test for errno propagating on failing read
      refs API: make refs_read_raw_ref() not set errno
      refs API: make parse_loose_ref_contents() not set errno
      refs: drop force_create argument of create_reflog API
      t1404: mark directory/file conflict tests with REFFILES
      show-branch: show reflog message
      test-ref-store: don't add newline to reflog message
      t1405: check for_each_reflog_ent_reverse() more thoroughly
      test-ref-store: tweaks to for-each-reflog-ent format
      refs/debug: trim trailing LF from reflog message
      test-ref-store: remove force-create argument for create-reflog
      test-ref-store: parse symbolic flag constants
      test-ref-store: plug memory leak in cmd_delete_refs
      refs: update comment.
      refs: introduce REF_SKIP_OID_VERIFICATION flag
      refs: introduce REF_SKIP_REFNAME_VERIFICATION flag
      t1430: remove refs using test-tool
      t1430: create valid symrefs using test-helper
      test-ref-store: print hash algorithm
      t5540: require REFFILES
      t5550: require REFFILES
      t7004: create separate tags for different tests
      t7004: use "test-tool ref-store" for reflog inspection
      refs: pass gitdir to packed_ref_store_create
      refs: print error message in debug output
      refs: centralize initialization of the base ref_store.
      reftable: fix typo in header
      reftable: signal overflow
      reftable: support preset file mode for writing
      reftable: avoid initializing structs from structs

Hans Krentel (hakre) (1):
      ci(check-whitespace): update stale file top comments

Ivan Frade (2):
      fetch-pack: redact packfile urls in traces
      http-fetch: redact url on die() message

Jacob Vosmaer (1):
      upload-pack.c: increase output buffer size

James Limbouris (1):
      subtree: fix argument handling in check_parents

Jean-Noël Avila (20):
      doc: fix git credential synopsis
      doc: split placeholders as individual tokens
      doc: express grammar placeholders between angle brackets
      doc: use only hyphens as word separators in placeholders
      doc: git-ls-files: express options as optional alternatives
      doc: use three dots for indicating repetition instead of star
      doc: uniformize <URL> placeholders' case
      doc: git-http-push: describe the refs as pattern pairs
      doc: git-init: clarify file modes in octal.
      i18n: refactor "foo and bar are mutually exclusive"
      i18n: refactor "%s, %s and %s are mutually exclusive"
      i18n: turn "options are incompatible" into "cannot be used together"
      i18n: standardize "cannot open" and "cannot read"
      i18n: tag.c factorize i18n strings
      i18n: factorize "--foo requires --bar" and the like
      i18n: factorize "no directory given for --foo"
      i18n: refactor "unrecognized %(foo) argument" strings
      i18n: factorize "--foo outside a repository"
      i18n: ref-filter: factorize "%(foo) atom used without %(bar) atom"
      i18n: turn even more messages into "cannot be used together" ones

Jeff King (18):
      urlmatch: add underscore to URL_HOST_CHARS
      strbuf_addftime(): handle "%s" manually
      test_bitmap_hashes(): handle repository without bitmaps
      generate-cmdlist.sh: do not shell out to "sed"
      git-jump: pass "merge" arguments to ls-files
      t5319: corrupt more bytes of the midx checksum
      refs: work around gcc-11 warning with REF_HAVE_NEW
      fetch-pack: ignore SIGPIPE when writing to index-pack
      run-command: unify signal and regular logic for wait_or_whine()
      t7006: clean up SIGPIPE handling in trace2 tests
      t7006: simplify exit-code checks for sigpipe tests
      log: handle --decorate-refs with userformat "%d"
      log: load decorations with --simplify-by-decoration
      xdiff: drop CMP_ENV macro from xhistogram
      xdiff: drop xpparam_t parameter from histogram cmp_recs()
      xdiff: drop unused flags parameter from recs_match
      config.mak.dev: specify -std=gnu99 for gcc/clang
      doc/config: mark ssh allowedSigners example as literal

Jerry Zhang (3):
      git-apply: add --quiet flag
      git-apply: add --allow-empty flag
      git-apply: skip threeway in add / rename cases

Joel Holdsworth (9):
      git-p4: use with statements to close files after use in patchRCSKeywords
      git-p4: pre-compile RCS keyword regexes
      git-p4: add raw option to read_pipelines
      git-p4: open temporary patch file for write only
      git-p4: resolve RCS keywords in bytes not utf-8
      git-p4: print size values in appropriate units
      git-p4: show progress as an integer
      git-p4: remove "debug" verb
      git-p4: remove "rollback" verb

Johannes Altmanninger (1):
      t/perf: do not run tests in user's $SHELL

Johannes Schindelin (15):
      test-tool genzeros: generate large amounts of data more efficiently
      git-compat-util: introduce more size_t helpers
      ci: disallow directional formatting
      scalar: add a README with a roadmap
      scalar: create a rudimentary executable
      scalar: start documenting the command
      scalar: create test infrastructure
      scalar: let 'unregister' handle a deleted enlistment directory gracefully
      scalar: implement the `clone` subcommand
      scalar: teach 'clone' to support the --single-branch option
      scalar: allow reconfiguring an existing enlistment
      scalar: teach 'reconfigure' to optionally handle all registered enlistments
      scalar: implement the `version` command
      tests: set GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME only when needed
      getcwd(mingw): handle the case when there is no cwd

Johannes Sixt (3):
      generate-cmdlist.sh: spawn fewer processes
      generate-cmdlist.sh: replace for loop by printf's auto-repeat feature
      t1450-fsck: exec-bit is not needed to make loose object writable

John Cai (2):
      docs: fix places that break compilation in MyFirstObjectWalk
      docs: add headers in MyFirstObjectWalk

Jonathan Tan (2):
      packfile: avoid overflowing shift during decode
      Doc: no midx and partial clone relation

Josh Steadmon (6):
      trace2: disable tr2_dst before warning on write errors
      branch: accept multiple upstream branches for tracking
      branch: add flags and config to inherit tracking
      config: require lowercase for branch.*.autosetupmerge
      l10n: README: call more attention to plural strings
      branch,checkout: fix --track usage strings

Junio C Hamano (30):
      for-each-ref: delay parsing of --sort=<atom> options
      MyFirstContribution: teach to use "format-patch --base=auto"
      unsetenv(3) returns int, not void
      init doc: --shared=0xxx does not give umask but perm bits
      Revert "grep/pcre2: fix an edge case concerning ascii patterns and UTF-8 data"
      0th batch for early fixes
      Revert "editor: save and reset terminal after calling EDITOR"
      A bit more regression fixes
      Git 2.34.1
      refs: document callback for reflog-ent iterators
      The first batch to start the current cycle
      revision: use C99 declaration of variable in for() loop
      grep: clarify what `grep.patternType=default` means
      flex-array: simplify compiler-specific workaround
      The second batch
      The third batch
      t4204 is not sanitizer clean at all
      format-patch: mark rev_info with UNLEAK
      merge: allow to pretend a merge is made into a different branch
      The fourth batch
      The fifth batch
      SubmittingPatchs: clarify choice of base and testing
      The sixth batch
      The seventh batch
      Git 2.35-rc0
      packfile: fix off-by-one error in decoding logic
      Last minute fixes before -rc1
      Git 2.35-rc1
      Makefile: FreeBSD cannot do C99-or-below build
      Git 2.35-rc2

Kashav Madan (1):
      help: make auto-correction prompt more consistent

Lessley Dennington (7):
      git: ensure correct git directory setup with -h
      commit-graph: return if there is no git directory
      test-read-cache: set up repo after git directory
      repo-settings: prepare_repo_settings only in git repos
      diff: replace --staged with --cached in t1092 tests
      diff: enable and test the sparse index
      blame: enable and test the sparse index

Lénaïc Huard (1):
      grep: align default colors with GNU grep ones

Marc Strapetz (1):
      t/README: fix typo

Martin Ågren (1):
      cache.h: drop duplicate `ensure_full_index()` declaration

Matt Cooper (4):
      t1051: introduce a smudge filter test for extremely large files
      odb: teach read_blob_entry to use size_t
      odb: guard against data loss checking out a huge file
      clean/smudge: allow clean filters to process extremely large files

Matthew John Cheetham (1):
      scalar: implement the `delete` command

Matthias Aßhauer (1):
      lazyload: use correct calling conventions

Mugdha Pattnaik (1):
      submodule: absorb git dir instead of dying on deinit

Neeraj Singh (2):
      tmp-objdir: new API for creating temporary writable databases
      tmp-objdir: disable ref updates when replacing the primary odb

Patrick Steinhardt (1):
      fetch: fix deadlock when cleaning up lockfiles in async signals

Philip Oakley (3):
      repack.c: LLP64 compatibility, upcast unity for left shift
      diffcore-delta.c: LLP64 compatibility, upcast unity for left shift
      object-file.c: LLP64 compatibility, upcast unity for left shift

Philippe Blain (1):
      SubmittingPatches: fix Asciidoc syntax in "GitHub CI" section

Phillip Wood (19):
      diff histogram: intern strings
      xdiff: avoid unnecessary memory allocations
      xdiff: simplify comparison
      xdiff: implement a zealous diff3, or "zdiff3"
      diff --color-moved: add perf tests
      diff --color-moved: clear all flags on blocks that are too short
      diff --color-moved: factor out function
      diff --color-moved: rewind when discarding pmb
      diff --color-moved=zebra: fix alternate coloring
      diff --color-moved: avoid false short line matches and bad zebra coloring
      diff: simplify allow-indentation-change delta calculation
      diff --color-moved-ws=allow-indentation-change: simplify and optimize
      diff --color-moved: call comparison function directly
      diff --color-moved: unify moved block growth functions
      diff --color-moved: shrink potential moved blocks as we go
      diff --color-moved: stop clearing potential moved blocks
      diff --color-moved-ws=allow-indentation-change: improve hash lookups
      diff: use designated initializers for emitted_diff_symbol
      diff --color-moved: intern strings

Randall S. Becker (1):
      build: NonStop ships with an older zlib

René Scharfe (6):
      mergesort: avoid left shift overflow
      log: let --invert-grep only invert --grep
      t4202: fix patternType setting in --invert-grep test
      daemon: plug memory leak on overlong path
      grep/pcre2: use PCRE2_UTF even with ASCII patterns
      grep/pcre2: factor out literal variable

Robert Estelle (3):
      color: add missing GIT_COLOR_* white/black constants
      color: support "default" to restore fg/bg color
      color: allow colors to be prefixed with "reset"

Robin Jarry (1):
      receive-pack: ignore SIGPIPE while reporting status to client

Sergey Organov (2):
      stash: implement '--staged' option for 'push' and 'save'
      stash: get rid of unused argument in stash_staged()

Taylor Blau (11):
      midx.c: clean up chunkfile after reading the MIDX
      midx.c: don't leak MIDX from verify_midx_file
      t/helper/test-read-midx.c: free MIDX within read_midx_file()
      builtin/pack-objects.c: don't leak memory via arguments
      builtin/repack.c: avoid leaking child arguments
      builtin/multi-pack-index.c: don't leak concatenated options
      midx.c: write MIDX filenames to strbuf
      pack-bitmap.c: don't leak type-level bitmaps
      pack-bitmap.c: more aggressively free in free_bitmap_index()
      packfile: make `close_pack_revindex()` static
      fmt-merge-msg: prevent use-after-free with signed tags

Teng Long (1):
      midx: fix a formatting issue in "multi-pack-index.txt"

Thiago Perrotta (2):
      send-email: programmatically generate bash completions
      send-email docs: add format-patch options

Thomas Weißschuh (1):
      var: add GIT_DEFAULT_BRANCH variable

Victoria Dye (12):
      reset: rename is_missing to !is_in_reset_tree
      reset: preserve skip-worktree bit in mixed reset
      sparse-index: update command for expand/collapse test
      test-read-cache.c: prepare_repo_settings after config init
      sparse-index: avoid unnecessary cache tree clearing
      sparse-index: add ensure_correct_sparsity function
      sparse-index: update do_read_index to ensure correct sparsity
      reset: expand test coverage for sparse checkouts
      reset: integrate with sparse index
      reset: make sparse-aware (except --mixed)
      reset: make --mixed sparse-aware
      unpack-trees: improve performance of next_cache_entry

William Sprent (1):
      fast-export: fix surprising behavior with --first-parent

Yoichi Nakayama (1):
      completion: add human and auto: date format

brian m. carlson (1):
      git-compat-util: add a test balloon for C99 support

Ævar Arnfjörð Bjarmason (88):
      refs API: add a version of refs_resolve_ref_unsafe() with "errno"
      refs API: make refs_rename_ref_available() static
      reflog tests: add --updateref tests
      refs/files: remove "name exist?" check in lock_ref_oid_basic()
      refs API: remove refs_read_ref_full() wrapper
      refs API: make resolve_gitlink_ref() not set errno
      refs API: make loose_fill_ref_dir() not set errno
      refs API: make files_copy_or_rename_ref() et al not set errno
      refs API: ignore errno in worktree.c's add_head_info()
      refs API: ignore errno in worktree.c's find_shared_symref()
      refs tests: ignore ignore errno in test-ref-store helper
      refs API: make refs_resolve_refdup() not set errno
      refs API: make refs_ref_exists() not set errno
      refs API: make resolve_ref_unsafe() not set errno
      refs API: make expand_ref() & repo_dwim_log() not set errno
      refs API: don't expose "errno" in run_transaction_hook()
      refs API: post-migration API renaming [1/2]
      refs API: post-migration API renaming [2/2]
      Makefile: move git-SCRIPT-DEFINES adjacent to $(SCRIPT_DEFINES)
      Makefile: remove $(GIT_VERSION) from $(SCRIPT_DEFINES)
      Makefile: remove $(NO_CURL) from $(SCRIPT_DEFINES)
      git-instaweb: unconditionally assume that gitweb is mod_perl capable
      git-sh-setup: remove unused sane_egrep() function
      git-sh-setup: remove "sane_grep", it's not needed anymore
      leak tests: mark a read-tree test as passing SANITIZE=leak
      leak tests: mark "sort" test as passing SANITIZE=leak
      leak tests: mark most gettext tests as passing with SANITIZE=leak
      leak tests: mark some misc tests as passing with SANITIZE=leak
      leak tests: mark some rev-list tests as passing with SANITIZE=leak
      leak tests: mark some rev-parse tests as passing with SANITIZE=leak
      leak tests: mark some update-index tests as passing with SANITIZE=leak
      leak tests: mark some notes tests as passing with SANITIZE=leak
      leak tests: mark some apply tests as passing with SANITIZE=leak
      leak tests: mark some diff tests as passing with SANITIZE=leak
      leak tests: mark some add tests as passing with SANITIZE=leak
      leak tests: mark some clone tests as passing with SANITIZE=leak
      leak tests: mark some status tests as passing with SANITIZE=leak
      leak tests: mark some config tests as passing with SANITIZE=leak
      leak tests: mark some fast-import tests as passing with SANITIZE=leak
      command-list.txt: sort with "LC_ALL=C sort"
      generate-cmdlist.sh: trivial whitespace change
      generate-cmdlist.sh: don't call get_categories() from category_list()
      generate-cmdlist.sh: run "grep | sort", not "sort | grep"
      generate-cmdlist.sh: stop sorting category lines
      generate-cmdlist.sh: replace "grep' invocation with a shell version
      generate-cmdlist.sh: don't parse command-list.txt thrice
      parse-options.c: use "enum parse_opt_result" for parse_nodash_opt()
      checkout: fix "branch info" memory leaks
      CI: remove Travis CI support
      CI: use shorter names that fit in UX tooltips
      CI: rename the "Linux32" job to lower-case "linux32"
      CI: use "$runs_on_pool", not "$jobname" to select packages & config
      CI: don't run "make test" twice in one job
      upload-archive: use regular "struct child_process" pattern
      run-command API users: use strvec_pushv(), not argv assignment
      run-command tests: use strvec_pushv(), not argv assignment
      run-command API users: use strvec_pushl(), not argv construction
      run-command API users: use strvec_push(), not argv construction
      run-command API: remove "argv" member, always use "args"
      difftool: use "env_array" to simplify memory management
      run-command API: remove "env" member, always use "env_array"
      common-main.c: call exit(), don't return
      pack-objects: use BUG(...) not die("BUG: ...")
      strbuf.h: use BUG(...) not die("BUG: ...")
      pathspec: use BUG(...) not die("BUG:%s:%d....", <file>, <line>)
      object.c: use BUG(...) no die("BUG: ...") in lookup_object_by_type()
      usage.c: add a die_message() routine
      usage.c API users: use die_message() for "fatal :" + exit 128
      usage.c API users: use die_message() for error() + exit 128
      gc: return from cmd_gc(), don't call exit()
      usage.c + gc: add and use a die_message_errno()
      config API: use get_error_routine(), not vreportf()
      pull, fetch: fix segfault in --set-upstream option
      stash: don't show "git stash push" usage on bad "git stash" usage
      reflog delete: narrow scope of "cmd" passed to count_reflog_ent()
      reflog expire: narrow scope of "cb" in cmd_reflog_expire()
      reflog: change one->many worktree->refnames to use a string_list
      reflog expire: use "switch" over enum values
      reflog expire: refactor & use "tip_commit" only for UE_NORMAL
      reflog expire: don't use lookup_commit_reference_gently()
      reflog: reduce scope of "struct rev_info"
      refs files-backend: assume cb->newlog if !EXPIRE_REFLOGS_DRY_RUN
      reflog + refs-backend: move "verbose" out of the backend
      Makefile: correct the dependency graph of hook-list.h
      Makefile: move -DPAGER_ENV from BASIC_CFLAGS to EXTRA_CPPFLAGS
      Makefile: don't invoke msgfmt with --statistics
      refs API: use "failure_errno", not "errno"
      reftable tests: avoid "int" overflow, use "uint64_t"

Øystein Walle (2):
      status: count stash entries in separate function
      status: print stash info with --porcelain=v2 --show-stash

徐沛文 (Aleen) (3):
      doc: git-format-patch: describe the option --always
      am: support --empty=<option> to handle empty patches
      am: support --allow-empty to record specific empty patches


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.35.0-rc1
@ 2022-01-15  2:18  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-01-15  2:18 UTC (permalink / raw)
  To: git; +Cc: git-packagers

A release candidate Git v2.35.0-rc1 is now available for testing at
the usual places.  It is comprised of 467 non-merge commits since
v2.34.0, contributed by 80 people, 32 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.35.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.34.0 are as follows.
Welcome to the Git development community!

  AJ Henderson, Alex Waite, Baruch Burstein, Calbabreaker, Calvin
  Wan, Christoph Reiter, Clemens Fruhwirth, Danial Alihosseini,
  Dotan Cohen, Enzo Matsumiya, Erwin Villejo, Gustave Granroth,
  Hans Krentel (hakre), Ivan Frade, James Limbouris, Jan Pokorný,
  Joel Holdsworth, John Burnett, John Cai, Josh Rampersad, Kashav
  Madan, Lessley Dennington, Matt Cooper, Matthew John Cheetham,
  Mike Marcelais, Mugdha Pattnaik, Nikita Bobko, Robin Jarry,
  Thiago Perrotta, Thomas Weißschuh, William Sprent, and 徐沛文
  (Aleen).

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alex Henrie, Anders Kaseorg,
  Bagas Sanjaya, brian m. carlson, Carlo Marcelo Arenas Belón,
  Derrick Stolee, Elijah Newren, Eli Schwartz, Eric Sunshine,
  Eric Wong, Fabian Stelzer, Glen Choo, Greg Hurrell, Han-Wen
  Nienhuys, Jacob Vosmaer, Jean-Noël Avila, Jeff King, Jerry
  Zhang, Jiang Xin, Johannes Altmanninger, Johannes Schindelin,
  Johannes Sixt, Jonathan Tan, Josh Steadmon, Junio C Hamano,
  Lénaïc Huard, Linus Torvalds, Marc Strapetz, Martin Ågren,
  Matthias Aßhauer, Mike Hommey, Neeraj Singh, Øystein Walle,
  Patrick Steinhardt, Philip Oakley, Philippe Blain, Phillip Wood,
  Ralf Thielow, Randall S. Becker, René Scharfe, Robert Estelle,
  Sergey Organov, SZEDER Gábor, Taylor Blau, Teng Long, Victoria
  Dye, and Yoichi Nakayama.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git 2.35 Release Notes (draft)
==============================

Updates since Git 2.34
----------------------

Backward compatibility warts

 * "_" is now treated as any other URL-valid characters in an URL when
   matching the per-URL configuration variable names.

 * The color palette used by "git grep" has been updated to match that
   of GNU grep.


UI, Workflows & Features

 * "git status --porcelain=v2" now show the number of stash entries
   with --show-stash like the normal output does.

 * "git stash" learned the "--staged" option to stash away what has
   been added to the index (and nothing else).

 * "git var GIT_DEFAULT_BRANCH" is a way to see what name is used for
   the newly created branch if "git init" is run.

 * Various operating modes of "git reset" have been made to work
   better with the sparse index.

 * "git submodule deinit" for a submodule whose .git metadata
   directory is embedded in its working tree refused to work, until
   the submodule gets converted to use the "absorbed" form where the
   metadata directory is stored in superproject, and a gitfile at the
   top-level of the working tree of the submodule points at it.  The
   command is taught to convert such submodules to the absorbed form
   as needed.

 * The completion script (in contrib/) learns that the "--date"
   option of commands from the "git log" family takes "human" and
   "auto" as valid values.

 * "Zealous diff3" style of merge conflict presentation has been added.

 * The "git log --format=%(describe)" placeholder has been extended to
   allow passing selected command-line options to the underlying "git
   describe" command.

 * "default" and "reset" have been added to our color palette.

 * The cryptographic signing using ssh keys can specify literal keys
   for keytypes whose name do not begin with the "ssh-" prefix by
   using the "key::" prefix mechanism (e.g. "key::ecdsa-sha2-nistp256").

 * "git fetch" without the "--update-head-ok" option ought to protect
   a checked out branch from getting updated, to prevent the working
   tree that checks it out to go out of sync.  The code was written
   before the use of "git worktree" got widespread, and only checked
   the branch that was checked out in the current worktree, which has
   been updated.

 * "git name-rev" has been tweaked to give output that is shorter and
   easier to understand.

 * "git apply" has been taught to ignore a message without a patch
   with the "--allow-empty" option.  It also learned to honor the
   "--quiet" option given from the command line.

 * The "init" and "set" subcommands in "git sparse-checkout" have been
   unified for a better user experience and performance.

 * Many git commands that deal with working tree files try to remove a
   directory that becomes empty (i.e. "git switch" from a branch that
   has the directory to another branch that does not would attempt
   remove all files in the directory and the directory itself).  This
   drops users into an unfamiliar situation if the command was run in
   a subdirectory that becomes subject to removal due to the command.
   The commands have been taught to keep an empty directory if it is
   the directory they were started in to avoid surprising users.

 * "git am" learns "--empty=(stop|drop|keep)" option to tweak what is
   done to a piece of e-mail without a patch in it.

 * The default merge message prepared by "git merge" records the name
   of the current branch; the name can be overridden with a new option
   to allow users to pretend a merge is made on a different branch.

 * The way "git p4" shows file sizes in its output has been updated to
   use human-readable units.

 * "git -c branch.autosetupmerge=inherit branch new old" makes "new"
   to have the same upstream as the "old" branch, instead of marking
   "old" itself as its upstream.


Performance, Internal Implementation, Development Support etc.

 * The use of errno as a means to carry the nature of error in the ref
   API implementation has been reworked and reduced.

 * Teach and encourage first-time contributors to this project to
   state the base commit when they submit their topic.

 * The command line completion for "git send-email" options have been
   tweaked to make it easier to keep it in sync with the command itself.

 * Ensure that the sparseness of the in-core index matches the
   index.sparse configuration specified by the repository immediately
   after the on-disk index file is read.

 * Code clean-up to eventually allow information on remotes defined
   for an arbitrary repository to be read.

 * Build optimization.

 * Tighten code for testing pack-bitmap.

 * Weather balloon to break people with compilers that do not support
   C99.

 * The "reftable" backend for the refs API, without integrating into
   the refs subsystem, has been added.

 * More tests are marked as leak-free.

 * The test framework learns to list unsatisfied test prerequisites,
   and optionally error out when prerequisites that are expected to be
   satisfied are not.

 * The default setting for trace2 event nesting was too low to cause
   test failures, which is worked around by bumping it up in the test
   framework.

 * Drop support for TravisCI and update test workflows at GitHub.

 * Many tests that used to need GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
   mechanism to force "git" to use 'master' as the default name for
   the initial branch no longer need it; the use of the mechanism from
   them have been removed.

 * Allow running our tests while disabling fsync.

 * Document the parameters given to the reflog entry iterator callback
   functions.
   (merge e6e94f34b2 jc/reflog-iterator-callback-doc later to maint).

 * The test helper for refs subsystem learned to write bogus and/or
   nonexistent object name to refs to simulate error situations we
   want to test Git in.

 * "diff --histogram" optimization.

 * Weather balloon to find compilers that do not grok variable
   declaration in the for() loop.

 * diff and blame commands have been taught to work better with sparse
   index.

 * The chainlint test script linter in the test suite has been updated.

 * The DEVELOPER=yes build uses -std=gnu99 now.

 * "git format-patch" uses a single rev_info instance and then exits.
   Mark the structure with UNLEAK() macro to squelch leak sanitizer.

 * New interface into the tmp-objdir API to help in-core use of the
   quarantine feature.

 * Broken &&-chains in the test scripts have been corrected.

 * The RCS keyword substitution in "git p4" used to be done assuming
   that the contents are UTF-8 text, which can trigger decoding
   errors.  We now treat the contents as a bytestring for robustness
   and correctness.

 * The conditions to choose different definitions of the FLEX_ARRAY
   macro for vendor compilers has been simplified to make it easier to
   maintain.

 * Correctness and performance update to "diff --color-moved" feature.

 * "git upload-pack" (the other side of "git fetch") used a 8kB buffer
   but most of its payload came on 64kB "packets".  The buffer size
   has been enlarged so that such a packet fits.

 * "git fetch" and "git pull" are now declared sparse-index clean.
   Also "git ls-files" learns the "--sparse" option to help debugging.

 * Similar message templates have been consolidated so that
   translators need to work on fewer number of messages.


Fixes since v2.34
-----------------

 * "git grep" looking in a blob that has non-UTF8 payload was
   completely broken when linked with certain versions of PCREv2
   library in the latest release.

 * Other code cleanup, docfix, build fix, etc.

 * "git pull" with any strategy when the other side is behind us
   should succeed as it is a no-op, but doesn't.

 * An earlier change in 2.34.0 caused JGit application (that abused
   GIT_EDITOR mechanism when invoking "git config") to get stuck with
   a SIGTTOU signal; it has been reverted.

 * An earlier change that broke .gitignore matching has been reverted.

 * Things like "git -c branch.sort=bogus branch new HEAD", i.e. the
   operation modes of the "git branch" command that do not need the
   sort key information, no longer errors out by seeing a bogus sort
   key.
   (merge 98e7ab6d42 jc/fix-ref-sorting-parse later to maint).

 * The compatibility implementation for unsetenv(3) were written to
   mimic ancient, non-POSIX, variant seen in an old glibc; it has been
   changed to return an integer to match the more modern era.
   (merge a38989bd5b jc/unsetenv-returns-an-int later to maint).

 * The clean/smudge conversion code path has been prepared to better
   work on platforms where ulong is narrower than size_t.
   (merge 596b5e77c9 mc/clean-smudge-with-llp64 later to maint).

 * Redact the path part of packfile URI that appears in the trace output.
   (merge 0ba558ffb1 if/redact-packfile-uri later to maint).

 * CI has been taught to catch some Unicode directional formatting
   sequence that can be used in certain mischief.
   (merge 0e7696c64d js/ci-no-directional-formatting later to maint).

 * The "--date=format:<strftime>" gained a workaround for the lack of
   system support for a non-local timezone to handle "%s" placeholder.
   (merge 9b591b9403 jk/strbuf-addftime-seconds-since-epoch later to maint).

 * The "merge" subcommand of "git jump" (in contrib/) silently ignored
   pathspec and other parameters.
   (merge 67ba13e5a4 jk/jump-merge-with-pathspec later to maint).

 * The code to decode the length of packed object size has been
   corrected.
   (merge 34de5b8eac jt/pack-header-lshift-overflow later to maint).

 * The advice message given by "git pull" when the user hasn't made a
   choice between merge and rebase still said that the merge is the
   default, which no longer is the case.  This has been corrected.
   (merge 71076d0edd ah/advice-pull-has-no-preference-between-rebase-and-merge later to maint).

 * "git fetch", when received a bad packfile, can fail with SIGPIPE.
   This wasn't wrong per-se, but we now detect the situation and fail
   in a more predictable way.
   (merge 2a4aed42ec jk/fetch-pack-avoid-sigpipe-to-index-pack later to maint).

 * The function to cull a child process and determine the exit status
   had two separate code paths for normal callers and callers in a
   signal handler, and the latter did not yield correct value when the
   child has caught a signal.  The handling of the exit status has
   been unified for these two code paths.  An existing test with
   flakiness has also been corrected.
   (merge 5263e22cba jk/t7006-sigpipe-tests-fix later to maint).

 * When a non-existent program is given as the pager, we tried to
   reuse an uninitialized child_process structure and crashed, which
   has been fixed.
   (merge f917f57f40 em/missing-pager later to maint).

 * The single-key-input mode in "git add -p" had some code to handle
   keys that generate a sequence of input via ReadKey(), which did not
   handle end-of-file correctly, which has been fixed.
   (merge fc8a8126df cb/add-p-single-key-fix later to maint).

 * "git rebase -x" added an unnecessary 'exec' instructions before
   'noop', which has been corrected.
   (merge cc9dcdee61 en/rebase-x-fix later to maint).

 * When the "git push" command is killed while the receiving end is
   trying to report what happened to the ref update proposals, the
   latter used to die, due to SIGPIPE.  The code now ignores SIGPIPE
   to increase our chances to run the post-receive hook after it
   happens.
   (merge d34182b9e3 rj/receive-pack-avoid-sigpipe-during-status-reporting later to maint).

 * "git worktree add" showed "Preparing worktree" message to the
   standard output stream, but when it failed, the message from die()
   went to the standard error stream.  Depending on the order the
   stdio streams are flushed at the program end, this resulted in
   confusing output.  It has been corrected by sending all the chatty
   messages to the standard error stream.
   (merge b50252484f es/worktree-chatty-to-stderr later to maint).

 * Coding guideline document has been updated to clarify what goes to
   standard error in our system.
   (merge e258eb4800 es/doc-stdout-vs-stderr later to maint).

 * The sparse-index/sparse-checkout feature had a bug in its use of
   the matching code to determine which path is in or outside the
   sparse checkout patterns.
   (merge 8c5de0d265 ds/sparse-deep-pattern-checkout-fix later to maint).

 * "git rebase -x" by mistake started exporting the GIT_DIR and
   GIT_WORK_TREE environment variables when the command was rewritten
   in C, which has been corrected.
   (merge 434e0636db en/rebase-x-wo-git-dir-env later to maint).

 * When "git log" implicitly enabled the "decoration" processing
   without being explicitly asked with "--decorate" option, it failed
   to read and honor the settings given by the "--decorate-refs"
   option.

 * "git fetch --set-upstream" did not check if there is a current
   branch, leading to a segfault when it is run on a detached HEAD,
   which has been corrected.
   (merge 17baeaf82d ab/fetch-set-upstream-while-detached later to maint).

 * Among some code paths that ask an yes/no question, only one place
   gave a prompt that looked different from the others, which has been
   updated to match what the others create.
   (merge 0fc8ed154c km/help-prompt-fix later to maint).

 * "git log --invert-grep --author=<name>" used to exclude commits
   written by the given author, but now "--invert-grep" only affects
   the matches made by the "--grep=<pattern>" option.
   (merge 794c000267 rs/log-invert-grep-with-headers later to maint).

 * "git grep --perl-regexp" failed to match UTF-8 characters with
   wildcard when the pattern consists only of ASCII letters, which has
   been corrected.
   (merge 32e3e8bc55 rs/pcre2-utf later to maint).

 * Certain sparse-checkout patterns that are valid in non-cone mode
   led to segfault in cone mode, which has been corrected.

 * Use of certain "git rev-list" options with "git fast-export"
   created nonsense results (the worst two of which being "--reverse"
   and "--invert-grep --grep=<foo>").  The use of "--first-parent" is
   made to behave a bit more sensible than before.
   (merge 726a228dfb ws/fast-export-with-revision-options later to maint).

 * Perf tests were run with end-user's shell, but it has been
   corrected to use the shell specified by $TEST_SHELL_PATH.
   (merge 9ccab75608 ja/perf-use-specified-shell later to maint).

 * Fix dependency rules to generate hook-list.h header file.
   (merge d3fd1a6667 ab/makefile-hook-list-dependency-fix later to maint).

 * "git stash" by default triggers its "push" action, but its
   implementation also made "git stash -h" to show short help only for
   "git stash push", which has been corrected.
   (merge ca7990cea5 ab/do-not-limit-stash-help-to-push later to maint).

 * "git apply --3way" bypasses the attempt to do a three-way
   application in more cases to address the regression caused by the
   recent change to use direct application as a fallback.
   (merge 34d607032c jz/apply-3-corner-cases later to maint).

 * Fix performance-releated bug in "git subtree" (in contrib/).
   (merge 3ce8888fb4 jl/subtree-check-parents-argument-passing-fix later to maint).

 * Extend the guidance to choose the base commit to build your work
   on, and hint/nudge contributors to read others' changes.
   (merge fdfae830f8 jc/doc-submitting-patches-choice-of-base later to maint).

 * A corner case bug in the ort merge strategy has been corrected.
   (merge d30126c20d en/merge-ort-renorm-with-rename-delete-conflict-fix later to maint).

 * "git stash apply" forgot to attempt restoring untracked files when
   it failed to restore changes to tracked ones.
   (merge 71cade5a0b en/stash-df-fix later to maint).

 * Calling dynamically loaded functions on Windows has been corrected.
   (merge 4a9b204920 ma/windows-dynload-fix later to maint).

 * Some lockfile code called free() in signal-death code path, which
   has been corrected.
   (merge 58d4d7f1c5 ps/lockfile-cleanup-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 74db416c9c cw/protocol-v2-doc-fix later to maint).
   (merge f9b2b6684d ja/doc-cleanup later to maint).
   (merge 7d1b866778 jc/fix-first-object-walk later to maint).
   (merge 538ac74604 js/trace2-avoid-recursive-errors later to maint).
   (merge 152923b132 jk/t5319-midx-corruption-test-deflake later to maint).
   (merge 9081a421a6 ab/checkout-branch-info-leakfix later to maint).
   (merge 42c456ff81 rs/mergesort later to maint).
   (merge ad506e6780 tl/midx-docfix later to maint).
   (merge bf5b83fd8a hk/ci-checkwhitespace-commentfix later to maint).
   (merge 49f1eb3b34 jk/refs-g11-workaround later to maint).
   (merge 7d3fc7df70 jt/midx-doc-fix later to maint).
   (merge 7b089120d9 hn/create-reflog-simplify later to maint).
   (merge 9e12400da8 cb/mingw-gmtime-r later to maint).
   (merge 0bf0de6cc7 tb/pack-revindex-on-disk-cleanup later to maint).
   (merge 2c68f577fc ew/cbtree-remove-unused-and-broken-cb-unlink later to maint).
   (merge eafd6e7e55 ab/die-with-bug later to maint).
   (merge 91028f7659 jc/grep-patterntype-default-doc later to maint).
   (merge 47ca93d071 ds/repack-fixlets later to maint).
   (merge e6a9bc0c60 rs/t4202-invert-grep-test-fix later to maint).
   (merge deb5407a42 gh/gpg-doc-markup-fix later to maint).
   (merge 999bba3e0b rs/daemon-plug-leak later to maint).
   (merge 786eb1ba39 js/l10n-mention-ngettext-early-in-readme later to maint).
   (merge 2f12b31b74 ab/makefile-msgfmt-wo-stats later to maint).
   (merge 0517f591ca fs/gpg-unknown-key-test-fix later to maint).
   (merge 97d6fb5a1f ma/header-dup-cleanup later to maint).

----------------------------------------------------------------

Changes since v2.34.0 are as follows:

Alex Henrie (1):
      pull: don't say that merge is "the default strategy"

Anders Kaseorg (8):
      fetch: lowercase error messages
      receive-pack: lowercase error messages
      branch: lowercase error messages
      worktree: simplify find_shared_symref() memory ownership model
      fetch: protect branches checked out in all worktrees
      receive-pack: clean dead code from update_worktree()
      receive-pack: protect current branch for bare repository worktree
      branch: protect branches checked out in all worktrees

Bagas Sanjaya (1):
      branch: missing space fix at line 313

Calvin Wan (1):
      protocol-v2.txt: align delim-pkt spec with usage

Carlo Marcelo Arenas Belón (4):
      test-genzeros: allow more than 2G zeros in Windows
      test-lib: add prerequisite for 64-bit platforms
      mingw: avoid fallback for {local,gm}time_r()
      add -p: avoid use of undefined $key when ReadKey -> EOF

Derrick Stolee (19):
      dir: revert "dir: select directories correctly"
      test-lib.sh: set GIT_TRACE2_EVENT_NESTING
      t/t*: remove custom GIT_TRACE2_EVENT_NESTING
      scalar: 'register' sets recommended config and starts maintenance
      scalar: 'unregister' stops background maintenance
      scalar: implement 'scalar list'
      scalar: implement the `run` command
      t1092: add deeper changes during a checkout
      unpack-trees: use traverse_path instead of name
      repack: respect kept objects with '--write-midx -b'
      repack: make '--quiet' disable progress
      fetch/pull: use the sparse index
      ls-files: add --sparse option
      t1092: replace 'read-cache --table' with 'ls-files --sparse'
      t1091/t3705: remove 'test-tool read-cache --table'
      test-read-cache: remove --table, --expand options
      sparse-checkout: fix segfault on malformed patterns
      sparse-checkout: fix OOM error with mixed patterns
      sparse-checkout: refuse to add to bad patterns

Eli Schwartz (3):
      pretty.c: rework describe options parsing for better extensibility
      pretty: add tag option to %(describe)
      pretty: add abbrev option to %(describe)

Elijah Newren (28):
      sequencer: avoid adding exec commands for non-commit creating commands
      update documentation for new zdiff3 conflictStyle
      name-rev: prefer shorter names over following merges
      sequencer: do not export GIT_DIR and GIT_WORK_TREE for 'exec'
      t2501: add various tests for removing the current working directory
      setup: introduce startup_info->original_cwd
      unpack-trees: refuse to remove startup_info->original_cwd
      unpack-trees: add special cwd handling
      symlinks: do not include startup_info->original_cwd in dir removal
      clean: do not attempt to remove startup_info->original_cwd
      rebase: do not attempt to remove startup_info->original_cwd
      stash: do not attempt to remove startup_info->original_cwd
      dir: avoid incidentally removing the original_cwd in remove_path()
      dir: new flag to remove_dir_recurse() to spare the original_cwd
      t2501: simplify the tests since we can now assume desired behavior
      sparse-checkout: pass use_stdin as a parameter instead of as a global
      sparse-checkout: break apart functions for sparse_checkout_(set|add)
      sparse-checkout: add sanity-checks on initial sparsity state
      sparse-checkout: disallow --no-stdin as an argument to set
      sparse-checkout: split out code for tweaking settings config
      sparse-checkout: enable `set` to initialize sparse-checkout mode
      sparse-checkout: enable reapply to take --[no-]{cone,sparse-index}
      git-sparse-checkout.txt: update to document init/set/reapply changes
      Documentation: clarify/correct a few sparsity related statements
      clone: avoid using deprecated `sparse-checkout init`
      sparse-checkout: remove stray trailing space
      merge-ort: fix bug with renormalization and rename/delete conflicts
      stash: do not return before restoring untracked files

Enzo Matsumiya (1):
      pager: fix crash when pager program doesn't exist

Eric Sunshine (38):
      worktree: stop being overly intimate with run_command() internals
      CodingGuidelines: document which output goes to stdout vs. stderr
      worktree: send "chatty" messages to stderr
      git-worktree.txt: add missing `-v` to synopsis for `worktree list`
      t/lib-pager: use sane_unset() to avoid breaking &&-chain
      t1010: fix unnoticed failure on Windows
      t1020: avoid aborting entire test script when one test fails
      t4202: clarify intent by creating expected content less cleverly
      t5516: drop unnecessary subshell and command invocation
      t6300: make `%(raw:size) --shell` test more robust
      t9107: use shell parameter expansion to avoid breaking &&-chain
      tests: simplify construction of large blocks of text
      tests: use test_write_lines() to generate line-oriented output
      tests: fix broken &&-chains in compound statements
      tests: fix broken &&-chains in `$(...)` command substitutions
      tests: fix broken &&-chains in `{...}` groups
      tests: apply modern idiom for signaling test failure
      tests: apply modern idiom for exiting loop upon failure
      tests: simplify by dropping unnecessary `for` loops
      t0000-t3999: detect and signal failure within loop
      t4000-t4999: detect and signal failure within loop
      t5000-t5999: detect and signal failure within loop
      t6000-t9999: detect and signal failure within loop
      t/chainlint/*.test: don't use invalid shell syntax
      t/chainlint/*.test: fix invalid test cases due to mixing quote types
      t/chainlint/*.test: generalize self-test commentary
      t/chainlint/one-liner: avoid overly intimate chainlint.sed knowledge
      t/Makefile: optimize chainlint self-test
      chainlint.sed: improve ?!AMP?! placement accuracy
      chainlint.sed: improve ?!SEMI?! placement accuracy
      chainlint.sed: tolerate harmless ";" at end of last line in block
      chainlint.sed: drop unnecessary distinction between ?!AMP?! and ?!SEMI?!
      chainlint.sed: drop subshell-closing ">" annotation
      chainlint.sed: make here-doc "<<-" operator recognition more POSIX-like
      chainlint.sed: don't mistake `<< word` in string as here-doc operator
      chainlint.sed: stop throwing away here-doc tags
      chainlint.sed: swallow comments consistently
      chainlint.sed: stop splitting "(..." into separate lines "(" and "..."

Eric Wong (2):
      tests: disable fsync everywhere
      cbtree: remove broken and unused cb_unlink

Erwin Villejo (1):
      pull: should be noop when already-up-to-date

Fabian Stelzer (15):
      ssh signing: support non ssh-* keytypes
      ssh signing: make sign/amend test more resilient
      test-lib: show missing prereq summary
      test-lib: introduce required prereq for test runs
      test-lib: make BAIL_OUT() work in tests and prereq
      t/fmt-merge-msg: do not redirect stderr
      t/fmt-merge-msg: make gpgssh tests more specific
      ssh signing: use sigc struct to pass payload
      ssh signing: add key lifetime test prereqs
      ssh signing: make verify-commit consider key lifetime
      ssh signing: make git log verify key lifetime
      ssh signing: make verify-tag consider key lifetime
      ssh signing: make fmt-merge-msg consider key lifetime
      ssh signing: verify ssh-keygen in test prereq
      t/gpg: simplify test for unknown key

Glen Choo (5):
      t5516: add test case for pushing remote refspecs
      remote: move static variables into per-repository struct
      remote: use remote_state parameter internally
      remote: remove the_repository->remote_state from static methods
      remote: die if branch is not found in repository

Greg Hurrell (1):
      docs: add missing colon to Documentation/config/gpg.txt

Han-Wen Nienhuys (49):
      hash.h: provide constants for the hash IDs
      reftable: add LICENSE
      reftable: add error related functionality
      reftable: utility functions
      reftable: add blocksource, an abstraction for random access reads
      reftable: (de)serialization for the polymorphic record type.
      Provide zlib's uncompress2 from compat/zlib-compat.c
      reftable: reading/writing blocks
      reftable: a generic binary tree implementation
      reftable: write reftable files
      reftable: generic interface to tables
      reftable: read reftable files
      reftable: reftable file level tests
      reftable: add a heap-based priority queue for reftable records
      reftable: add merged table view
      reftable: implement refname validation
      reftable: implement stack, a mutable database of reftable files.
      reftable: add dump utility
      Add "test-tool dump-reftable" command.
      branch tests: test for errno propagating on failing read
      refs API: make refs_read_raw_ref() not set errno
      refs API: make parse_loose_ref_contents() not set errno
      refs: drop force_create argument of create_reflog API
      t1404: mark directory/file conflict tests with REFFILES
      show-branch: show reflog message
      test-ref-store: don't add newline to reflog message
      t1405: check for_each_reflog_ent_reverse() more thoroughly
      test-ref-store: tweaks to for-each-reflog-ent format
      refs/debug: trim trailing LF from reflog message
      test-ref-store: remove force-create argument for create-reflog
      test-ref-store: parse symbolic flag constants
      test-ref-store: plug memory leak in cmd_delete_refs
      refs: update comment.
      refs: introduce REF_SKIP_OID_VERIFICATION flag
      refs: introduce REF_SKIP_REFNAME_VERIFICATION flag
      t1430: remove refs using test-tool
      t1430: create valid symrefs using test-helper
      test-ref-store: print hash algorithm
      t5540: require REFFILES
      t5550: require REFFILES
      t7004: create separate tags for different tests
      t7004: use "test-tool ref-store" for reflog inspection
      refs: pass gitdir to packed_ref_store_create
      refs: print error message in debug output
      refs: centralize initialization of the base ref_store.
      reftable: fix typo in header
      reftable: signal overflow
      reftable: support preset file mode for writing
      reftable: avoid initializing structs from structs

Hans Krentel (hakre) (1):
      ci(check-whitespace): update stale file top comments

Ivan Frade (2):
      fetch-pack: redact packfile urls in traces
      http-fetch: redact url on die() message

Jacob Vosmaer (1):
      upload-pack.c: increase output buffer size

James Limbouris (1):
      subtree: fix argument handling in check_parents

Jean-Noël Avila (20):
      doc: fix git credential synopsis
      doc: split placeholders as individual tokens
      doc: express grammar placeholders between angle brackets
      doc: use only hyphens as word separators in placeholders
      doc: git-ls-files: express options as optional alternatives
      doc: use three dots for indicating repetition instead of star
      doc: uniformize <URL> placeholders' case
      doc: git-http-push: describe the refs as pattern pairs
      doc: git-init: clarify file modes in octal.
      i18n: refactor "foo and bar are mutually exclusive"
      i18n: refactor "%s, %s and %s are mutually exclusive"
      i18n: turn "options are incompatible" into "cannot be used together"
      i18n: standardize "cannot open" and "cannot read"
      i18n: tag.c factorize i18n strings
      i18n: factorize "--foo requires --bar" and the like
      i18n: factorize "no directory given for --foo"
      i18n: refactor "unrecognized %(foo) argument" strings
      i18n: factorize "--foo outside a repository"
      i18n: ref-filter: factorize "%(foo) atom used without %(bar) atom"
      i18n: turn even more messages into "cannot be used together" ones

Jeff King (18):
      urlmatch: add underscore to URL_HOST_CHARS
      strbuf_addftime(): handle "%s" manually
      test_bitmap_hashes(): handle repository without bitmaps
      generate-cmdlist.sh: do not shell out to "sed"
      git-jump: pass "merge" arguments to ls-files
      t5319: corrupt more bytes of the midx checksum
      refs: work around gcc-11 warning with REF_HAVE_NEW
      fetch-pack: ignore SIGPIPE when writing to index-pack
      run-command: unify signal and regular logic for wait_or_whine()
      t7006: clean up SIGPIPE handling in trace2 tests
      t7006: simplify exit-code checks for sigpipe tests
      log: handle --decorate-refs with userformat "%d"
      log: load decorations with --simplify-by-decoration
      xdiff: drop CMP_ENV macro from xhistogram
      xdiff: drop xpparam_t parameter from histogram cmp_recs()
      xdiff: drop unused flags parameter from recs_match
      config.mak.dev: specify -std=gnu99 for gcc/clang
      doc/config: mark ssh allowedSigners example as literal

Jerry Zhang (3):
      git-apply: add --quiet flag
      git-apply: add --allow-empty flag
      git-apply: skip threeway in add / rename cases

Joel Holdsworth (9):
      git-p4: use with statements to close files after use in patchRCSKeywords
      git-p4: pre-compile RCS keyword regexes
      git-p4: add raw option to read_pipelines
      git-p4: open temporary patch file for write only
      git-p4: resolve RCS keywords in bytes not utf-8
      git-p4: print size values in appropriate units
      git-p4: show progress as an integer
      git-p4: remove "debug" verb
      git-p4: remove "rollback" verb

Johannes Altmanninger (1):
      t/perf: do not run tests in user's $SHELL

Johannes Schindelin (14):
      test-tool genzeros: generate large amounts of data more efficiently
      git-compat-util: introduce more size_t helpers
      ci: disallow directional formatting
      scalar: add a README with a roadmap
      scalar: create a rudimentary executable
      scalar: start documenting the command
      scalar: create test infrastructure
      scalar: let 'unregister' handle a deleted enlistment directory gracefully
      scalar: implement the `clone` subcommand
      scalar: teach 'clone' to support the --single-branch option
      scalar: allow reconfiguring an existing enlistment
      scalar: teach 'reconfigure' to optionally handle all registered enlistments
      scalar: implement the `version` command
      tests: set GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME only when needed

Johannes Sixt (3):
      generate-cmdlist.sh: spawn fewer processes
      generate-cmdlist.sh: replace for loop by printf's auto-repeat feature
      t1450-fsck: exec-bit is not needed to make loose object writable

John Cai (2):
      docs: fix places that break compilation in MyFirstObjectWalk
      docs: add headers in MyFirstObjectWalk

Jonathan Tan (2):
      packfile: avoid overflowing shift during decode
      Doc: no midx and partial clone relation

Josh Steadmon (5):
      trace2: disable tr2_dst before warning on write errors
      branch: accept multiple upstream branches for tracking
      branch: add flags and config to inherit tracking
      config: require lowercase for branch.*.autosetupmerge
      l10n: README: call more attention to plural strings

Junio C Hamano (28):
      for-each-ref: delay parsing of --sort=<atom> options
      MyFirstContribution: teach to use "format-patch --base=auto"
      unsetenv(3) returns int, not void
      init doc: --shared=0xxx does not give umask but perm bits
      Revert "grep/pcre2: fix an edge case concerning ascii patterns and UTF-8 data"
      0th batch for early fixes
      Revert "editor: save and reset terminal after calling EDITOR"
      A bit more regression fixes
      Git 2.34.1
      refs: document callback for reflog-ent iterators
      The first batch to start the current cycle
      revision: use C99 declaration of variable in for() loop
      grep: clarify what `grep.patternType=default` means
      flex-array: simplify compiler-specific workaround
      The second batch
      The third batch
      t4204 is not sanitizer clean at all
      format-patch: mark rev_info with UNLEAK
      merge: allow to pretend a merge is made into a different branch
      The fourth batch
      The fifth batch
      SubmittingPatchs: clarify choice of base and testing
      The sixth batch
      The seventh batch
      Git 2.35-rc0
      packfile: fix off-by-one error in decoding logic
      Last minute fixes before -rc1
      Git 2.35-rc1

Kashav Madan (1):
      help: make auto-correction prompt more consistent

Lessley Dennington (7):
      git: ensure correct git directory setup with -h
      commit-graph: return if there is no git directory
      test-read-cache: set up repo after git directory
      repo-settings: prepare_repo_settings only in git repos
      diff: replace --staged with --cached in t1092 tests
      diff: enable and test the sparse index
      blame: enable and test the sparse index

Lénaïc Huard (1):
      grep: align default colors with GNU grep ones

Marc Strapetz (1):
      t/README: fix typo

Martin Ågren (1):
      cache.h: drop duplicate `ensure_full_index()` declaration

Matt Cooper (4):
      t1051: introduce a smudge filter test for extremely large files
      odb: teach read_blob_entry to use size_t
      odb: guard against data loss checking out a huge file
      clean/smudge: allow clean filters to process extremely large files

Matthew John Cheetham (1):
      scalar: implement the `delete` command

Matthias Aßhauer (1):
      lazyload: use correct calling conventions

Mugdha Pattnaik (1):
      submodule: absorb git dir instead of dying on deinit

Neeraj Singh (2):
      tmp-objdir: new API for creating temporary writable databases
      tmp-objdir: disable ref updates when replacing the primary odb

Patrick Steinhardt (1):
      fetch: fix deadlock when cleaning up lockfiles in async signals

Philip Oakley (3):
      repack.c: LLP64 compatibility, upcast unity for left shift
      diffcore-delta.c: LLP64 compatibility, upcast unity for left shift
      object-file.c: LLP64 compatibility, upcast unity for left shift

Philippe Blain (1):
      SubmittingPatches: fix Asciidoc syntax in "GitHub CI" section

Phillip Wood (19):
      diff histogram: intern strings
      xdiff: avoid unnecessary memory allocations
      xdiff: simplify comparison
      xdiff: implement a zealous diff3, or "zdiff3"
      diff --color-moved: add perf tests
      diff --color-moved: clear all flags on blocks that are too short
      diff --color-moved: factor out function
      diff --color-moved: rewind when discarding pmb
      diff --color-moved=zebra: fix alternate coloring
      diff --color-moved: avoid false short line matches and bad zebra coloring
      diff: simplify allow-indentation-change delta calculation
      diff --color-moved-ws=allow-indentation-change: simplify and optimize
      diff --color-moved: call comparison function directly
      diff --color-moved: unify moved block growth functions
      diff --color-moved: shrink potential moved blocks as we go
      diff --color-moved: stop clearing potential moved blocks
      diff --color-moved-ws=allow-indentation-change: improve hash lookups
      diff: use designated initializers for emitted_diff_symbol
      diff --color-moved: intern strings

Randall S. Becker (1):
      build: NonStop ships with an older zlib

René Scharfe (6):
      mergesort: avoid left shift overflow
      log: let --invert-grep only invert --grep
      t4202: fix patternType setting in --invert-grep test
      daemon: plug memory leak on overlong path
      grep/pcre2: use PCRE2_UTF even with ASCII patterns
      grep/pcre2: factor out literal variable

Robert Estelle (3):
      color: add missing GIT_COLOR_* white/black constants
      color: support "default" to restore fg/bg color
      color: allow colors to be prefixed with "reset"

Robin Jarry (1):
      receive-pack: ignore SIGPIPE while reporting status to client

Sergey Organov (2):
      stash: implement '--staged' option for 'push' and 'save'
      stash: get rid of unused argument in stash_staged()

Taylor Blau (11):
      midx.c: clean up chunkfile after reading the MIDX
      midx.c: don't leak MIDX from verify_midx_file
      t/helper/test-read-midx.c: free MIDX within read_midx_file()
      builtin/pack-objects.c: don't leak memory via arguments
      builtin/repack.c: avoid leaking child arguments
      builtin/multi-pack-index.c: don't leak concatenated options
      midx.c: write MIDX filenames to strbuf
      pack-bitmap.c: don't leak type-level bitmaps
      pack-bitmap.c: more aggressively free in free_bitmap_index()
      packfile: make `close_pack_revindex()` static
      fmt-merge-msg: prevent use-after-free with signed tags

Teng Long (1):
      midx: fix a formatting issue in "multi-pack-index.txt"

Thiago Perrotta (2):
      send-email: programmatically generate bash completions
      send-email docs: add format-patch options

Thomas Weißschuh (1):
      var: add GIT_DEFAULT_BRANCH variable

Victoria Dye (12):
      reset: rename is_missing to !is_in_reset_tree
      reset: preserve skip-worktree bit in mixed reset
      sparse-index: update command for expand/collapse test
      test-read-cache.c: prepare_repo_settings after config init
      sparse-index: avoid unnecessary cache tree clearing
      sparse-index: add ensure_correct_sparsity function
      sparse-index: update do_read_index to ensure correct sparsity
      reset: expand test coverage for sparse checkouts
      reset: integrate with sparse index
      reset: make sparse-aware (except --mixed)
      reset: make --mixed sparse-aware
      unpack-trees: improve performance of next_cache_entry

William Sprent (1):
      fast-export: fix surprising behavior with --first-parent

Yoichi Nakayama (1):
      completion: add human and auto: date format

brian m. carlson (1):
      git-compat-util: add a test balloon for C99 support

Ævar Arnfjörð Bjarmason (88):
      refs API: add a version of refs_resolve_ref_unsafe() with "errno"
      refs API: make refs_rename_ref_available() static
      reflog tests: add --updateref tests
      refs/files: remove "name exist?" check in lock_ref_oid_basic()
      refs API: remove refs_read_ref_full() wrapper
      refs API: make resolve_gitlink_ref() not set errno
      refs API: make loose_fill_ref_dir() not set errno
      refs API: make files_copy_or_rename_ref() et al not set errno
      refs API: ignore errno in worktree.c's add_head_info()
      refs API: ignore errno in worktree.c's find_shared_symref()
      refs tests: ignore ignore errno in test-ref-store helper
      refs API: make refs_resolve_refdup() not set errno
      refs API: make refs_ref_exists() not set errno
      refs API: make resolve_ref_unsafe() not set errno
      refs API: make expand_ref() & repo_dwim_log() not set errno
      refs API: don't expose "errno" in run_transaction_hook()
      refs API: post-migration API renaming [1/2]
      refs API: post-migration API renaming [2/2]
      Makefile: move git-SCRIPT-DEFINES adjacent to $(SCRIPT_DEFINES)
      Makefile: remove $(GIT_VERSION) from $(SCRIPT_DEFINES)
      Makefile: remove $(NO_CURL) from $(SCRIPT_DEFINES)
      git-instaweb: unconditionally assume that gitweb is mod_perl capable
      git-sh-setup: remove unused sane_egrep() function
      git-sh-setup: remove "sane_grep", it's not needed anymore
      leak tests: mark a read-tree test as passing SANITIZE=leak
      leak tests: mark "sort" test as passing SANITIZE=leak
      leak tests: mark most gettext tests as passing with SANITIZE=leak
      leak tests: mark some misc tests as passing with SANITIZE=leak
      leak tests: mark some rev-list tests as passing with SANITIZE=leak
      leak tests: mark some rev-parse tests as passing with SANITIZE=leak
      leak tests: mark some update-index tests as passing with SANITIZE=leak
      leak tests: mark some notes tests as passing with SANITIZE=leak
      leak tests: mark some apply tests as passing with SANITIZE=leak
      leak tests: mark some diff tests as passing with SANITIZE=leak
      leak tests: mark some add tests as passing with SANITIZE=leak
      leak tests: mark some clone tests as passing with SANITIZE=leak
      leak tests: mark some status tests as passing with SANITIZE=leak
      leak tests: mark some config tests as passing with SANITIZE=leak
      leak tests: mark some fast-import tests as passing with SANITIZE=leak
      command-list.txt: sort with "LC_ALL=C sort"
      generate-cmdlist.sh: trivial whitespace change
      generate-cmdlist.sh: don't call get_categories() from category_list()
      generate-cmdlist.sh: run "grep | sort", not "sort | grep"
      generate-cmdlist.sh: stop sorting category lines
      generate-cmdlist.sh: replace "grep' invocation with a shell version
      generate-cmdlist.sh: don't parse command-list.txt thrice
      parse-options.c: use "enum parse_opt_result" for parse_nodash_opt()
      checkout: fix "branch info" memory leaks
      CI: remove Travis CI support
      CI: use shorter names that fit in UX tooltips
      CI: rename the "Linux32" job to lower-case "linux32"
      CI: use "$runs_on_pool", not "$jobname" to select packages & config
      CI: don't run "make test" twice in one job
      upload-archive: use regular "struct child_process" pattern
      run-command API users: use strvec_pushv(), not argv assignment
      run-command tests: use strvec_pushv(), not argv assignment
      run-command API users: use strvec_pushl(), not argv construction
      run-command API users: use strvec_push(), not argv construction
      run-command API: remove "argv" member, always use "args"
      difftool: use "env_array" to simplify memory management
      run-command API: remove "env" member, always use "env_array"
      common-main.c: call exit(), don't return
      pack-objects: use BUG(...) not die("BUG: ...")
      strbuf.h: use BUG(...) not die("BUG: ...")
      pathspec: use BUG(...) not die("BUG:%s:%d....", <file>, <line>)
      object.c: use BUG(...) no die("BUG: ...") in lookup_object_by_type()
      usage.c: add a die_message() routine
      usage.c API users: use die_message() for "fatal :" + exit 128
      usage.c API users: use die_message() for error() + exit 128
      gc: return from cmd_gc(), don't call exit()
      usage.c + gc: add and use a die_message_errno()
      config API: use get_error_routine(), not vreportf()
      pull, fetch: fix segfault in --set-upstream option
      stash: don't show "git stash push" usage on bad "git stash" usage
      reflog delete: narrow scope of "cmd" passed to count_reflog_ent()
      reflog expire: narrow scope of "cb" in cmd_reflog_expire()
      reflog: change one->many worktree->refnames to use a string_list
      reflog expire: use "switch" over enum values
      reflog expire: refactor & use "tip_commit" only for UE_NORMAL
      reflog expire: don't use lookup_commit_reference_gently()
      reflog: reduce scope of "struct rev_info"
      refs files-backend: assume cb->newlog if !EXPIRE_REFLOGS_DRY_RUN
      reflog + refs-backend: move "verbose" out of the backend
      Makefile: correct the dependency graph of hook-list.h
      Makefile: move -DPAGER_ENV from BASIC_CFLAGS to EXTRA_CPPFLAGS
      Makefile: don't invoke msgfmt with --statistics
      refs API: use "failure_errno", not "errno"
      reftable tests: avoid "int" overflow, use "uint64_t"

Øystein Walle (2):
      status: count stash entries in separate function
      status: print stash info with --porcelain=v2 --show-stash

徐沛文 (Aleen) (3):
      doc: git-format-patch: describe the option --always
      am: support --empty=<option> to handle empty patches
      am: support --allow-empty to record specific empty patches


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.35.0-rc0
@ 2022-01-11  0:51  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-01-11  0:51 UTC (permalink / raw)
  To: git; +Cc: git-packagers

An early preview release Git v2.35.0-rc0 is now available for
testing at the usual places.  It is comprised of 453 non-merge
commits since v2.34.0, contributed by 75 people, 31 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.35.0-rc0' 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.34.0 are as follows.
Welcome to the Git development community!

  AJ Henderson, Alex Waite, Baruch Burstein, Calbabreaker, Calvin
  Wan, Clemens Fruhwirth, Danial Alihosseini, Dotan Cohen, Enzo
  Matsumiya, Erwin Villejo, Gustave Granroth, Hans Krentel (hakre),
  Ivan Frade, James Limbouris, Jan Pokorný, Joel Holdsworth,
  John Burnett, John Cai, Josh Rampersad, Kashav Madan, Lessley
  Dennington, Matt Cooper, Matthew John Cheetham, Mike Marcelais,
  Mugdha Pattnaik, Nikita Bobko, Robin Jarry, Thiago Perrotta,
  Thomas Weißschuh, William Sprent, and 徐沛文 (Aleen).

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alex Henrie, Anders Kaseorg, Bagas
  Sanjaya, brian m. carlson, Carlo Marcelo Arenas Belón, Derrick
  Stolee, Elijah Newren, Eli Schwartz, Eric Sunshine, Eric Wong,
  Fabian Stelzer, Glen Choo, Greg Hurrell, Han-Wen Nienhuys,
  Jacob Vosmaer, Jean-Noël Avila, Jeff King, Jerry Zhang, Jiang
  Xin, Johannes Altmanninger, Johannes Schindelin, Johannes Sixt,
  Jonathan Tan, Josh Steadmon, Junio C Hamano, Lénaïc Huard,
  Marc Strapetz, Martin Ågren, Mike Hommey, Neeraj Singh, Øystein
  Walle, Philip Oakley, Philippe Blain, Phillip Wood, Ralf Thielow,
  René Scharfe, Robert Estelle, Sergey Organov, SZEDER Gábor,
  Taylor Blau, Teng Long, Victoria Dye, and Yoichi Nakayama.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git 2.35 Release Notes (draft)
==============================

Updates since Git 2.34
----------------------

Backward compatibility warts

 * "_" is now treated as any other URL-valid characters in an URL when
   matching the per-URL configuration variable names.

 * The color palette used by "git grep" has been updated to match that
   of GNU grep.


UI, Workflows & Features

 * "git status --porcelain=v2" now show the number of stash entries
   with --show-stash like the normal output does.

 * "git stash" learned the "--staged" option to stash away what has
   been added to the index (and nothing else).

 * "git var GIT_DEFAULT_BRANCH" is a way to see what name is used for
   the newly created branch if "git init" is run.

 * Various operating modes of "git reset" have been made to work
   better with the sparse index.

 * "git submodule deinit" for a submodule whose .git metadata
   directory is embedded in its working tree refused to work, until
   the submodule gets converted to use the "absorbed" form where the
   metadata directory is stored in superproject, and a gitfile at the
   top-level of the working tree of the submodule points at it.  The
   command is taught to convert such submodules to the absorbed form
   as needed.

 * The completion script (in contrib/) learns that the "--date"
   option of commands from the "git log" family takes "human" and
   "auto" as valid values.

 * "Zealous diff3" style of merge conflict presentation has been added.

 * The "git log --format=%(describe)" placeholder has been extended to
   allow passing selected command-line options to the underlying "git
   describe" command.

 * "default" and "reset" have been added to our color palette.

 * The cryptographic signing using ssh keys can specify literal keys
   for keytypes whose name do not begin with the "ssh-" prefix by
   using the "key::" prefix mechanism (e.g. "key::ecdsa-sha2-nistp256").

 * "git fetch" without the "--update-head-ok" option ought to protect
   a checked out branch from getting updated, to prevent the working
   tree that checks it out to go out of sync.  The code was written
   before the use of "git worktree" got widespread, and only checked
   the branch that was checked out in the current worktree, which has
   been updated.

 * "git name-rev" has been tweaked to give output that is shorter and
   easier to understand.

 * "git apply" has been taught to ignore a message without a patch
   with the "--allow-empty" option.  It also learned to honor the
   "--quiet" option given from the command line.

 * The "init" and "set" subcommands in "git sparse-checkout" have been
   unified for a better user experience and performance.

 * Many git commands that deal with working tree files try to remove a
   directory that becomes empty (i.e. "git switch" from a branch that
   has the directory to another branch that does not would attempt
   remove all files in the directory and the directory itself).  This
   drops users into an unfamiliar situation if the command was run in
   a subdirectory that becomes subject to removal due to the command.
   The commands have been taught to keep an empty directory if it is
   the directory they were started in to avoid surprising users.

 * "git am" learns "--empty=(stop|drop|keep)" option to tweak what is
   done to a piece of e-mail without a patch in it.

 * The default merge message prepared by "git merge" records the name
   of the current branch; the name can be overridden with a new option
   to allow users to pretend a merge is made on a different branch.

 * The way "git p4" shows file sizes in its output has been updated to
   use human-readable units.

 * "git -c branch.autosetupmerge=inherit branch new old" makes "new"
   to have the same upstream as the "old" branch, instead of marking
   "old" itself as its upstream.


Performance, Internal Implementation, Development Support etc.

 * The use of errno as a means to carry the nature of error in the ref
   API implementation has been reworked and reduced.

 * Teach and encourage first-time contributors to this project to
   state the base commit when they submit their topic.

 * The command line complation for "git send-email" options have been
   tweaked to make it easier to keep it in sync with the command itself.

 * Ensure that the sparseness of the in-core index matches the
   index.sparse configuration specified by the repository immediately
   after the on-disk index file is read.

 * Code clean-up to eventually allow information on remotes defined
   for an arbitrary repository to be read.

 * Build optimization.

 * Tighten code for testing pack-bitmap.

 * Weather balloon to break people with compilers that do not support
   C99.

 * The "reftable" backend for the refs API, without integrating into
   the refs subsystem, has been added.

 * More tests are marked as leak-free.

 * The test framework learns to list unsatisfied test prerequisites,
   and optionally error out when prerequisites that are expected to be
   satisfied are not.

 * The default setting for trace2 event nesting was too low to cause
   test failures, which is worked around by bumping it up in the test
   framework.

 * Drop support for TravisCI and update test workflows at GitHub.

 * Many tests that used to need GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
   mechanism to force "git" to use 'master' as the default name for
   the initial branch no longer need it; the use of the mechanism from
   them have been removed.

 * Allow running our tests while disabling fsync.

 * Document the parameters given to the reflog entry iterator callback
   functions.
   (merge e6e94f34b2 jc/reflog-iterator-callback-doc later to maint).

 * The test helper for refs subsystem learned to write bogus and/or
   nonexistent object name to refs to simulate error situations we
   want to test Git in.

 * "diff --histogram" optimization.

 * Weather balloon to find compilers that do not grok variable
   declaration in the for() loop.

 * diff and blame commands have been taught to work better with sparse
   index.

 * The chainlint test script linter in the test suite has been updated.

 * The DEVELOPER=yes build uses -std=gnu99 now.

 * "git format-patch" uses a single rev_info instance and then exits.
   Mark the structure with UNLEAK() macro to squelch leak sanitizer.

 * New interface into the tmp-objdir API to help in-core use of the
   quarantine feature.

 * Broken &&-chains in the test scripts have been corrected.

 * The RCS keyword substitution in "git p4" used to be done assuming
   that the contents are UTF-8 text, which can trigger decoding
   errors.  We now treat the contents as a bytestring for robustness
   and correctness.

 * The conditions to choose different definitions of the FLEX_ARRAY
   macro for vendor compilers has been simplified to make it easier to
   maintain.

 * Correctness and performance update to "diff --color-moved" feature.

 * "git upload-pack" (the other side of "git fetch") used a 8kB buffer
   but most of its payload came on 64kB "packets".  The buffer size
   has been enlarged so that such a packet fits.

 * "git fetch" and "git pull" are now declared sparse-index clean.
   Also "git ls-files" learns the "--sparse" option to help debugging.

 * Similar message templates have been consolidated so that
   translators need to work on fewer number of messages.


Fixes since v2.34
-----------------

 * "git grep" looking in a blob that has non-UTF8 payload was
   completely broken when linked with certain versions of PCREv2
   library in the latest release.

 * Other code cleanup, docfix, build fix, etc.

 * "git pull" with any strategy when the other side is behind us
   should succeed as it is a no-op, but doesn't.

 * An earlier change in 2.34.0 caused JGit application (that abused
   GIT_EDITOR mechanism when invoking "git config") to get stuck with
   a SIGTTOU signal; it has been reverted.

 * An earlier change that broke .gitignore matching has been reverted.

 * Things like "git -c branch.sort=bogus branch new HEAD", i.e. the
   operation modes of the "git branch" command that do not need the
   sort key information, no longer errors out by seeing a bogus sort
   key.
   (merge 98e7ab6d42 jc/fix-ref-sorting-parse later to maint).

 * The compatibility implementation for unsetenv(3) were written to
   mimic ancient, non-POSIX, variant seen in an old glibc; it has been
   changed to return an integer to match the more modern era.
   (merge a38989bd5b jc/unsetenv-returns-an-int later to maint).

 * The clean/smudge conversion code path has been prepared to better
   work on platforms where ulong is narrower than size_t.
   (merge 596b5e77c9 mc/clean-smudge-with-llp64 later to maint).

 * Redact the path part of packfile URI that appears in the trace output.
   (merge 0ba558ffb1 if/redact-packfile-uri later to maint).

 * CI has been taught to catch some Unicode directional formatting
   sequence that can be used in certain mischief.
   (merge 0e7696c64d js/ci-no-directional-formatting later to maint).

 * The "--date=format:<strftime>" gained a workaround for the lack of
   system support for a non-local timezone to handle "%s" placeholder.
   (merge 9b591b9403 jk/strbuf-addftime-seconds-since-epoch later to maint).

 * The "merge" subcommand of "git jump" (in contrib/) silently ignored
   pathspec and other parameters.
   (merge 67ba13e5a4 jk/jump-merge-with-pathspec later to maint).

 * The code to decode the length of packed object size has been
   corrected.
   (merge 34de5b8eac jt/pack-header-lshift-overflow later to maint).

 * The advice message given by "git pull" when the user hasn't made a
   choice between merge and rebase still said that the merge is the
   default, which no longer is the case.  This has been corrected.
   (merge 71076d0edd ah/advice-pull-has-no-preference-between-rebase-and-merge later to maint).

 * "git fetch", when received a bad packfile, can fail with SIGPIPE.
   This wasn't wrong per-se, but we now detect the situation and fail
   in a more predictable way.
   (merge 2a4aed42ec jk/fetch-pack-avoid-sigpipe-to-index-pack later to maint).

 * The function to cull a child process and determine the exit status
   had two separate code paths for normal callers and callers in a
   signal handler, and the latter did not yield correct value when the
   child has caught a signal.  The handling of the exit status has
   been unified for these two code paths.  An existing test with
   flakiness has also been corrected.
   (merge 5263e22cba jk/t7006-sigpipe-tests-fix later to maint).

 * When a non-existent program is given as the pager, we tried to
   reuse an uninitialized child_process structure and crashed, which
   has been fixed.
   (merge f917f57f40 em/missing-pager later to maint).

 * The single-key-input mode in "git add -p" had some code to handle
   keys that generate a sequence of input via ReadKey(), which did not
   handle end-of-file correctly, which has been fixed.
   (merge fc8a8126df cb/add-p-single-key-fix later to maint).

 * "git rebase -x" added an unnecessary 'exec' instructions before
   'noop', which has been corrected.
   (merge cc9dcdee61 en/rebase-x-fix later to maint).

 * When the "git push" command is killed while the receiving end is
   trying to report what happened to the ref update proposals, the
   latter used to die, due to SIGPIPE.  The code now ignores SIGPIPE
   to increase our chances to run the post-receive hook after it
   happens.
   (merge d34182b9e3 rj/receive-pack-avoid-sigpipe-during-status-reporting later to maint).

 * "git worktree add" showed "Preparing worktree" message to the
   standard output stream, but when it failed, the message from die()
   went to the standard error stream.  Depending on the order the
   stdio streams are flushed at the program end, this resulted in
   confusing output.  It has been corrected by sending all the chatty
   messages to the standard error stream.
   (merge b50252484f es/worktree-chatty-to-stderr later to maint).

 * Coding guideline document has been updated to clarify what goes to
   standard error in our system.
   (merge e258eb4800 es/doc-stdout-vs-stderr later to maint).

 * The sparse-index/sparse-checkout feature had a bug in its use of
   the matching code to determine which path is in or outside the
   sparse checkout patterns.
   (merge 8c5de0d265 ds/sparse-deep-pattern-checkout-fix later to maint).

 * "git rebase -x" by mistake started exporting the GIT_DIR and
   GIT_WORK_TREE environment variables when the command was rewritten
   in C, which has been corrected.
   (merge 434e0636db en/rebase-x-wo-git-dir-env later to maint).

 * When "git log" implicitly enabled the "decoration" processing
   without being explicitly asked with "--decorate" option, it failed
   to read and honor the settings given by the "--decorate-refs"
   option.

 * "git fetch --set-upstream" did not check if there is a current
   branch, leading to a segfault when it is run on a detached HEAD,
   which has been corrected.
   (merge 17baeaf82d ab/fetch-set-upstream-while-detached later to maint).

 * Among some code paths that ask an yes/no question, only one place
   gave a prompt that looked different from the others, which has been
   updated to match what the others create.
   (merge 0fc8ed154c km/help-prompt-fix later to maint).

 * "git log --invert-grep --author=<name>" used to exclude commits
   written by the given author, but now "--invert-grep" only affects
   the matches made by the "--grep=<pattern>" option.
   (merge 794c000267 rs/log-invert-grep-with-headers later to maint).

 * "git grep --perl-regexp" failed to match UTF-8 characters with
   wildcard when the pattern consists only of ASCII letters, which has
   been corrected.
   (merge 32e3e8bc55 rs/pcre2-utf later to maint).

 * Certain sparse-checkout patterns that are valid in non-cone mode
   led to segfault in cone mode, which has been corrected.

 * Use of certain "git rev-list" options with "git fast-export"
   created nonsense results (the worst two of which being "--reverse"
   and "--invert-grep --grep=<foo>").  The use of "--first-parent" is
   made to behave a bit more sensible than before.
   (merge 726a228dfb ws/fast-export-with-revision-options later to maint).

 * Perf tests were run with end-user's shell, but it has been
   corrected to use the shell specified by $TEST_SHELL_PATH.
   (merge 9ccab75608 ja/perf-use-specified-shell later to maint).

 * Fix dependency rules to generate hook-list.h header file.
   (merge d3fd1a6667 ab/makefile-hook-list-dependency-fix later to maint).

 * "git stash" by default triggers its "push" action, but its
   implementation also made "git stash -h" to show short help only for
   "git stash push", which has been corrected.
   (merge ca7990cea5 ab/do-not-limit-stash-help-to-push later to maint).

 * "git apply --3way" bypasses the attempt to do a three-way
   application in more cases to address the regression caused by the
   recent change to use direct application as a fallback.
   (merge 34d607032c jz/apply-3-corner-cases later to maint).

 * Fix performance-releated bug in "git subtree" (in contrib/).
   (merge 3ce8888fb4 jl/subtree-check-parents-argument-passing-fix later to maint).

 * Extend the guidance to choose the base commit to build your work
   on, and hint/nudge contributors to read others' changes.
   (merge fdfae830f8 jc/doc-submitting-patches-choice-of-base later to maint).

 * A corner case bug in the ort merge strategy has been corrected.
   (merge d30126c20d en/merge-ort-renorm-with-rename-delete-conflict-fix later to maint).

 * "git stash apply" forgot to attempt restoring untracked files when
   it failed to restore changes to tracked ones.
   (merge 71cade5a0b en/stash-df-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 74db416c9c cw/protocol-v2-doc-fix later to maint).
   (merge f9b2b6684d ja/doc-cleanup later to maint).
   (merge 7d1b866778 jc/fix-first-object-walk later to maint).
   (merge 538ac74604 js/trace2-avoid-recursive-errors later to maint).
   (merge 152923b132 jk/t5319-midx-corruption-test-deflake later to maint).
   (merge 9081a421a6 ab/checkout-branch-info-leakfix later to maint).
   (merge 42c456ff81 rs/mergesort later to maint).
   (merge ad506e6780 tl/midx-docfix later to maint).
   (merge bf5b83fd8a hk/ci-checkwhitespace-commentfix later to maint).
   (merge 49f1eb3b34 jk/refs-g11-workaround later to maint).
   (merge 7d3fc7df70 jt/midx-doc-fix later to maint).
   (merge 7b089120d9 hn/create-reflog-simplify later to maint).
   (merge 9e12400da8 cb/mingw-gmtime-r later to maint).
   (merge 0bf0de6cc7 tb/pack-revindex-on-disk-cleanup later to maint).
   (merge 2c68f577fc ew/cbtree-remove-unused-and-broken-cb-unlink later to maint).
   (merge eafd6e7e55 ab/die-with-bug later to maint).
   (merge 91028f7659 jc/grep-patterntype-default-doc later to maint).
   (merge 47ca93d071 ds/repack-fixlets later to maint).
   (merge e6a9bc0c60 rs/t4202-invert-grep-test-fix later to maint).
   (merge deb5407a42 gh/gpg-doc-markup-fix later to maint).
   (merge 999bba3e0b rs/daemon-plug-leak later to maint).
   (merge 786eb1ba39 js/l10n-mention-ngettext-early-in-readme later to maint).
   (merge 2f12b31b74 ab/makefile-msgfmt-wo-stats later to maint).

----------------------------------------------------------------

Changes since v2.34.0 are as follows:

Alex Henrie (1):
      pull: don't say that merge is "the default strategy"

Anders Kaseorg (8):
      fetch: lowercase error messages
      receive-pack: lowercase error messages
      branch: lowercase error messages
      worktree: simplify find_shared_symref() memory ownership model
      fetch: protect branches checked out in all worktrees
      receive-pack: clean dead code from update_worktree()
      receive-pack: protect current branch for bare repository worktree
      branch: protect branches checked out in all worktrees

Calvin Wan (1):
      protocol-v2.txt: align delim-pkt spec with usage

Carlo Marcelo Arenas Belón (4):
      test-genzeros: allow more than 2G zeros in Windows
      test-lib: add prerequisite for 64-bit platforms
      mingw: avoid fallback for {local,gm}time_r()
      add -p: avoid use of undefined $key when ReadKey -> EOF

Derrick Stolee (19):
      dir: revert "dir: select directories correctly"
      test-lib.sh: set GIT_TRACE2_EVENT_NESTING
      t/t*: remove custom GIT_TRACE2_EVENT_NESTING
      scalar: 'register' sets recommended config and starts maintenance
      scalar: 'unregister' stops background maintenance
      scalar: implement 'scalar list'
      scalar: implement the `run` command
      t1092: add deeper changes during a checkout
      unpack-trees: use traverse_path instead of name
      repack: respect kept objects with '--write-midx -b'
      repack: make '--quiet' disable progress
      fetch/pull: use the sparse index
      ls-files: add --sparse option
      t1092: replace 'read-cache --table' with 'ls-files --sparse'
      t1091/t3705: remove 'test-tool read-cache --table'
      test-read-cache: remove --table, --expand options
      sparse-checkout: fix segfault on malformed patterns
      sparse-checkout: fix OOM error with mixed patterns
      sparse-checkout: refuse to add to bad patterns

Eli Schwartz (3):
      pretty.c: rework describe options parsing for better extensibility
      pretty: add tag option to %(describe)
      pretty: add abbrev option to %(describe)

Elijah Newren (28):
      sequencer: avoid adding exec commands for non-commit creating commands
      update documentation for new zdiff3 conflictStyle
      name-rev: prefer shorter names over following merges
      sequencer: do not export GIT_DIR and GIT_WORK_TREE for 'exec'
      t2501: add various tests for removing the current working directory
      setup: introduce startup_info->original_cwd
      unpack-trees: refuse to remove startup_info->original_cwd
      unpack-trees: add special cwd handling
      symlinks: do not include startup_info->original_cwd in dir removal
      clean: do not attempt to remove startup_info->original_cwd
      rebase: do not attempt to remove startup_info->original_cwd
      stash: do not attempt to remove startup_info->original_cwd
      dir: avoid incidentally removing the original_cwd in remove_path()
      dir: new flag to remove_dir_recurse() to spare the original_cwd
      t2501: simplify the tests since we can now assume desired behavior
      sparse-checkout: pass use_stdin as a parameter instead of as a global
      sparse-checkout: break apart functions for sparse_checkout_(set|add)
      sparse-checkout: add sanity-checks on initial sparsity state
      sparse-checkout: disallow --no-stdin as an argument to set
      sparse-checkout: split out code for tweaking settings config
      sparse-checkout: enable `set` to initialize sparse-checkout mode
      sparse-checkout: enable reapply to take --[no-]{cone,sparse-index}
      git-sparse-checkout.txt: update to document init/set/reapply changes
      Documentation: clarify/correct a few sparsity related statements
      clone: avoid using deprecated `sparse-checkout init`
      sparse-checkout: remove stray trailing space
      merge-ort: fix bug with renormalization and rename/delete conflicts
      stash: do not return before restoring untracked files

Enzo Matsumiya (1):
      pager: fix crash when pager program doesn't exist

Eric Sunshine (38):
      worktree: stop being overly intimate with run_command() internals
      CodingGuidelines: document which output goes to stdout vs. stderr
      worktree: send "chatty" messages to stderr
      git-worktree.txt: add missing `-v` to synopsis for `worktree list`
      t/lib-pager: use sane_unset() to avoid breaking &&-chain
      t1010: fix unnoticed failure on Windows
      t1020: avoid aborting entire test script when one test fails
      t4202: clarify intent by creating expected content less cleverly
      t5516: drop unnecessary subshell and command invocation
      t6300: make `%(raw:size) --shell` test more robust
      t9107: use shell parameter expansion to avoid breaking &&-chain
      tests: simplify construction of large blocks of text
      tests: use test_write_lines() to generate line-oriented output
      tests: fix broken &&-chains in compound statements
      tests: fix broken &&-chains in `$(...)` command substitutions
      tests: fix broken &&-chains in `{...}` groups
      tests: apply modern idiom for signaling test failure
      tests: apply modern idiom for exiting loop upon failure
      tests: simplify by dropping unnecessary `for` loops
      t0000-t3999: detect and signal failure within loop
      t4000-t4999: detect and signal failure within loop
      t5000-t5999: detect and signal failure within loop
      t6000-t9999: detect and signal failure within loop
      t/chainlint/*.test: don't use invalid shell syntax
      t/chainlint/*.test: fix invalid test cases due to mixing quote types
      t/chainlint/*.test: generalize self-test commentary
      t/chainlint/one-liner: avoid overly intimate chainlint.sed knowledge
      t/Makefile: optimize chainlint self-test
      chainlint.sed: improve ?!AMP?! placement accuracy
      chainlint.sed: improve ?!SEMI?! placement accuracy
      chainlint.sed: tolerate harmless ";" at end of last line in block
      chainlint.sed: drop unnecessary distinction between ?!AMP?! and ?!SEMI?!
      chainlint.sed: drop subshell-closing ">" annotation
      chainlint.sed: make here-doc "<<-" operator recognition more POSIX-like
      chainlint.sed: don't mistake `<< word` in string as here-doc operator
      chainlint.sed: stop throwing away here-doc tags
      chainlint.sed: swallow comments consistently
      chainlint.sed: stop splitting "(..." into separate lines "(" and "..."

Eric Wong (2):
      tests: disable fsync everywhere
      cbtree: remove broken and unused cb_unlink

Erwin Villejo (1):
      pull: should be noop when already-up-to-date

Fabian Stelzer (14):
      ssh signing: support non ssh-* keytypes
      ssh signing: make sign/amend test more resilient
      test-lib: show missing prereq summary
      test-lib: introduce required prereq for test runs
      test-lib: make BAIL_OUT() work in tests and prereq
      t/fmt-merge-msg: do not redirect stderr
      t/fmt-merge-msg: make gpgssh tests more specific
      ssh signing: use sigc struct to pass payload
      ssh signing: add key lifetime test prereqs
      ssh signing: make verify-commit consider key lifetime
      ssh signing: make git log verify key lifetime
      ssh signing: make verify-tag consider key lifetime
      ssh signing: make fmt-merge-msg consider key lifetime
      ssh signing: verify ssh-keygen in test prereq

Glen Choo (5):
      t5516: add test case for pushing remote refspecs
      remote: move static variables into per-repository struct
      remote: use remote_state parameter internally
      remote: remove the_repository->remote_state from static methods
      remote: die if branch is not found in repository

Greg Hurrell (1):
      docs: add missing colon to Documentation/config/gpg.txt

Han-Wen Nienhuys (48):
      hash.h: provide constants for the hash IDs
      reftable: add LICENSE
      reftable: add error related functionality
      reftable: utility functions
      reftable: add blocksource, an abstraction for random access reads
      reftable: (de)serialization for the polymorphic record type.
      Provide zlib's uncompress2 from compat/zlib-compat.c
      reftable: reading/writing blocks
      reftable: a generic binary tree implementation
      reftable: write reftable files
      reftable: generic interface to tables
      reftable: read reftable files
      reftable: reftable file level tests
      reftable: add a heap-based priority queue for reftable records
      reftable: add merged table view
      reftable: implement refname validation
      reftable: implement stack, a mutable database of reftable files.
      reftable: add dump utility
      Add "test-tool dump-reftable" command.
      branch tests: test for errno propagating on failing read
      refs API: make refs_read_raw_ref() not set errno
      refs API: make parse_loose_ref_contents() not set errno
      refs: drop force_create argument of create_reflog API
      t1404: mark directory/file conflict tests with REFFILES
      show-branch: show reflog message
      test-ref-store: don't add newline to reflog message
      t1405: check for_each_reflog_ent_reverse() more thoroughly
      test-ref-store: tweaks to for-each-reflog-ent format
      refs/debug: trim trailing LF from reflog message
      test-ref-store: remove force-create argument for create-reflog
      test-ref-store: parse symbolic flag constants
      test-ref-store: plug memory leak in cmd_delete_refs
      refs: update comment.
      refs: introduce REF_SKIP_OID_VERIFICATION flag
      refs: introduce REF_SKIP_REFNAME_VERIFICATION flag
      t1430: remove refs using test-tool
      t1430: create valid symrefs using test-helper
      test-ref-store: print hash algorithm
      t5540: require REFFILES
      t5550: require REFFILES
      t7004: create separate tags for different tests
      t7004: use "test-tool ref-store" for reflog inspection
      refs: pass gitdir to packed_ref_store_create
      refs: print error message in debug output
      refs: centralize initialization of the base ref_store.
      reftable: fix typo in header
      reftable: signal overflow
      reftable: support preset file mode for writing

Hans Krentel (hakre) (1):
      ci(check-whitespace): update stale file top comments

Ivan Frade (2):
      fetch-pack: redact packfile urls in traces
      http-fetch: redact url on die() message

Jacob Vosmaer (1):
      upload-pack.c: increase output buffer size

James Limbouris (1):
      subtree: fix argument handling in check_parents

Jean-Noël Avila (20):
      doc: fix git credential synopsis
      doc: split placeholders as individual tokens
      doc: express grammar placeholders between angle brackets
      doc: use only hyphens as word separators in placeholders
      doc: git-ls-files: express options as optional alternatives
      doc: use three dots for indicating repetition instead of star
      doc: uniformize <URL> placeholders' case
      doc: git-http-push: describe the refs as pattern pairs
      doc: git-init: clarify file modes in octal.
      i18n: refactor "foo and bar are mutually exclusive"
      i18n: refactor "%s, %s and %s are mutually exclusive"
      i18n: turn "options are incompatible" into "cannot be used together"
      i18n: standardize "cannot open" and "cannot read"
      i18n: tag.c factorize i18n strings
      i18n: factorize "--foo requires --bar" and the like
      i18n: factorize "no directory given for --foo"
      i18n: refactor "unrecognized %(foo) argument" strings
      i18n: factorize "--foo outside a repository"
      i18n: ref-filter: factorize "%(foo) atom used without %(bar) atom"
      i18n: turn even more messages into "cannot be used together" ones

Jeff King (18):
      urlmatch: add underscore to URL_HOST_CHARS
      strbuf_addftime(): handle "%s" manually
      test_bitmap_hashes(): handle repository without bitmaps
      generate-cmdlist.sh: do not shell out to "sed"
      git-jump: pass "merge" arguments to ls-files
      t5319: corrupt more bytes of the midx checksum
      refs: work around gcc-11 warning with REF_HAVE_NEW
      fetch-pack: ignore SIGPIPE when writing to index-pack
      run-command: unify signal and regular logic for wait_or_whine()
      t7006: clean up SIGPIPE handling in trace2 tests
      t7006: simplify exit-code checks for sigpipe tests
      log: handle --decorate-refs with userformat "%d"
      log: load decorations with --simplify-by-decoration
      xdiff: drop CMP_ENV macro from xhistogram
      xdiff: drop xpparam_t parameter from histogram cmp_recs()
      xdiff: drop unused flags parameter from recs_match
      config.mak.dev: specify -std=gnu99 for gcc/clang
      doc/config: mark ssh allowedSigners example as literal

Jerry Zhang (3):
      git-apply: add --quiet flag
      git-apply: add --allow-empty flag
      git-apply: skip threeway in add / rename cases

Joel Holdsworth (9):
      git-p4: use with statements to close files after use in patchRCSKeywords
      git-p4: pre-compile RCS keyword regexes
      git-p4: add raw option to read_pipelines
      git-p4: open temporary patch file for write only
      git-p4: resolve RCS keywords in bytes not utf-8
      git-p4: print size values in appropriate units
      git-p4: show progress as an integer
      git-p4: remove "debug" verb
      git-p4: remove "rollback" verb

Johannes Altmanninger (1):
      t/perf: do not run tests in user's $SHELL

Johannes Schindelin (14):
      test-tool genzeros: generate large amounts of data more efficiently
      git-compat-util: introduce more size_t helpers
      ci: disallow directional formatting
      scalar: add a README with a roadmap
      scalar: create a rudimentary executable
      scalar: start documenting the command
      scalar: create test infrastructure
      scalar: let 'unregister' handle a deleted enlistment directory gracefully
      scalar: implement the `clone` subcommand
      scalar: teach 'clone' to support the --single-branch option
      scalar: allow reconfiguring an existing enlistment
      scalar: teach 'reconfigure' to optionally handle all registered enlistments
      scalar: implement the `version` command
      tests: set GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME only when needed

Johannes Sixt (2):
      generate-cmdlist.sh: spawn fewer processes
      generate-cmdlist.sh: replace for loop by printf's auto-repeat feature

John Cai (2):
      docs: fix places that break compilation in MyFirstObjectWalk
      docs: add headers in MyFirstObjectWalk

Jonathan Tan (2):
      packfile: avoid overflowing shift during decode
      Doc: no midx and partial clone relation

Josh Steadmon (5):
      trace2: disable tr2_dst before warning on write errors
      branch: accept multiple upstream branches for tracking
      branch: add flags and config to inherit tracking
      config: require lowercase for branch.*.autosetupmerge
      l10n: README: call more attention to plural strings

Junio C Hamano (25):
      for-each-ref: delay parsing of --sort=<atom> options
      MyFirstContribution: teach to use "format-patch --base=auto"
      unsetenv(3) returns int, not void
      init doc: --shared=0xxx does not give umask but perm bits
      Revert "grep/pcre2: fix an edge case concerning ascii patterns and UTF-8 data"
      0th batch for early fixes
      Revert "editor: save and reset terminal after calling EDITOR"
      A bit more regression fixes
      Git 2.34.1
      refs: document callback for reflog-ent iterators
      The first batch to start the current cycle
      revision: use C99 declaration of variable in for() loop
      grep: clarify what `grep.patternType=default` means
      flex-array: simplify compiler-specific workaround
      The second batch
      The third batch
      t4204 is not sanitizer clean at all
      format-patch: mark rev_info with UNLEAK
      merge: allow to pretend a merge is made into a different branch
      The fourth batch
      The fifth batch
      SubmittingPatchs: clarify choice of base and testing
      The sixth batch
      The seventh batch
      Git 2.35-rc0

Kashav Madan (1):
      help: make auto-correction prompt more consistent

Lessley Dennington (7):
      git: ensure correct git directory setup with -h
      commit-graph: return if there is no git directory
      test-read-cache: set up repo after git directory
      repo-settings: prepare_repo_settings only in git repos
      diff: replace --staged with --cached in t1092 tests
      diff: enable and test the sparse index
      blame: enable and test the sparse index

Lénaïc Huard (1):
      grep: align default colors with GNU grep ones

Marc Strapetz (1):
      t/README: fix typo

Matt Cooper (4):
      t1051: introduce a smudge filter test for extremely large files
      odb: teach read_blob_entry to use size_t
      odb: guard against data loss checking out a huge file
      clean/smudge: allow clean filters to process extremely large files

Matthew John Cheetham (1):
      scalar: implement the `delete` command

Mugdha Pattnaik (1):
      submodule: absorb git dir instead of dying on deinit

Neeraj Singh (2):
      tmp-objdir: new API for creating temporary writable databases
      tmp-objdir: disable ref updates when replacing the primary odb

Philip Oakley (3):
      repack.c: LLP64 compatibility, upcast unity for left shift
      diffcore-delta.c: LLP64 compatibility, upcast unity for left shift
      object-file.c: LLP64 compatibility, upcast unity for left shift

Philippe Blain (1):
      SubmittingPatches: fix Asciidoc syntax in "GitHub CI" section

Phillip Wood (19):
      diff histogram: intern strings
      xdiff: avoid unnecessary memory allocations
      xdiff: simplify comparison
      xdiff: implement a zealous diff3, or "zdiff3"
      diff --color-moved: add perf tests
      diff --color-moved: clear all flags on blocks that are too short
      diff --color-moved: factor out function
      diff --color-moved: rewind when discarding pmb
      diff --color-moved=zebra: fix alternate coloring
      diff --color-moved: avoid false short line matches and bad zebra coloring
      diff: simplify allow-indentation-change delta calculation
      diff --color-moved-ws=allow-indentation-change: simplify and optimize
      diff --color-moved: call comparison function directly
      diff --color-moved: unify moved block growth functions
      diff --color-moved: shrink potential moved blocks as we go
      diff --color-moved: stop clearing potential moved blocks
      diff --color-moved-ws=allow-indentation-change: improve hash lookups
      diff: use designated initializers for emitted_diff_symbol
      diff --color-moved: intern strings

René Scharfe (6):
      mergesort: avoid left shift overflow
      log: let --invert-grep only invert --grep
      t4202: fix patternType setting in --invert-grep test
      daemon: plug memory leak on overlong path
      grep/pcre2: use PCRE2_UTF even with ASCII patterns
      grep/pcre2: factor out literal variable

Robert Estelle (3):
      color: add missing GIT_COLOR_* white/black constants
      color: support "default" to restore fg/bg color
      color: allow colors to be prefixed with "reset"

Robin Jarry (1):
      receive-pack: ignore SIGPIPE while reporting status to client

Sergey Organov (2):
      stash: implement '--staged' option for 'push' and 'save'
      stash: get rid of unused argument in stash_staged()

Taylor Blau (10):
      midx.c: clean up chunkfile after reading the MIDX
      midx.c: don't leak MIDX from verify_midx_file
      t/helper/test-read-midx.c: free MIDX within read_midx_file()
      builtin/pack-objects.c: don't leak memory via arguments
      builtin/repack.c: avoid leaking child arguments
      builtin/multi-pack-index.c: don't leak concatenated options
      midx.c: write MIDX filenames to strbuf
      pack-bitmap.c: don't leak type-level bitmaps
      pack-bitmap.c: more aggressively free in free_bitmap_index()
      packfile: make `close_pack_revindex()` static

Teng Long (1):
      midx: fix a formatting issue in "multi-pack-index.txt"

Thiago Perrotta (2):
      send-email: programmatically generate bash completions
      send-email docs: add format-patch options

Thomas Weißschuh (1):
      var: add GIT_DEFAULT_BRANCH variable

Victoria Dye (12):
      reset: rename is_missing to !is_in_reset_tree
      reset: preserve skip-worktree bit in mixed reset
      sparse-index: update command for expand/collapse test
      test-read-cache.c: prepare_repo_settings after config init
      sparse-index: avoid unnecessary cache tree clearing
      sparse-index: add ensure_correct_sparsity function
      sparse-index: update do_read_index to ensure correct sparsity
      reset: expand test coverage for sparse checkouts
      reset: integrate with sparse index
      reset: make sparse-aware (except --mixed)
      reset: make --mixed sparse-aware
      unpack-trees: improve performance of next_cache_entry

William Sprent (1):
      fast-export: fix surprising behavior with --first-parent

Yoichi Nakayama (1):
      completion: add human and auto: date format

brian m. carlson (1):
      git-compat-util: add a test balloon for C99 support

Ævar Arnfjörð Bjarmason (86):
      refs API: add a version of refs_resolve_ref_unsafe() with "errno"
      refs API: make refs_rename_ref_available() static
      reflog tests: add --updateref tests
      refs/files: remove "name exist?" check in lock_ref_oid_basic()
      refs API: remove refs_read_ref_full() wrapper
      refs API: make resolve_gitlink_ref() not set errno
      refs API: make loose_fill_ref_dir() not set errno
      refs API: make files_copy_or_rename_ref() et al not set errno
      refs API: ignore errno in worktree.c's add_head_info()
      refs API: ignore errno in worktree.c's find_shared_symref()
      refs tests: ignore ignore errno in test-ref-store helper
      refs API: make refs_resolve_refdup() not set errno
      refs API: make refs_ref_exists() not set errno
      refs API: make resolve_ref_unsafe() not set errno
      refs API: make expand_ref() & repo_dwim_log() not set errno
      refs API: don't expose "errno" in run_transaction_hook()
      refs API: post-migration API renaming [1/2]
      refs API: post-migration API renaming [2/2]
      Makefile: move git-SCRIPT-DEFINES adjacent to $(SCRIPT_DEFINES)
      Makefile: remove $(GIT_VERSION) from $(SCRIPT_DEFINES)
      Makefile: remove $(NO_CURL) from $(SCRIPT_DEFINES)
      git-instaweb: unconditionally assume that gitweb is mod_perl capable
      git-sh-setup: remove unused sane_egrep() function
      git-sh-setup: remove "sane_grep", it's not needed anymore
      leak tests: mark a read-tree test as passing SANITIZE=leak
      leak tests: mark "sort" test as passing SANITIZE=leak
      leak tests: mark most gettext tests as passing with SANITIZE=leak
      leak tests: mark some misc tests as passing with SANITIZE=leak
      leak tests: mark some rev-list tests as passing with SANITIZE=leak
      leak tests: mark some rev-parse tests as passing with SANITIZE=leak
      leak tests: mark some update-index tests as passing with SANITIZE=leak
      leak tests: mark some notes tests as passing with SANITIZE=leak
      leak tests: mark some apply tests as passing with SANITIZE=leak
      leak tests: mark some diff tests as passing with SANITIZE=leak
      leak tests: mark some add tests as passing with SANITIZE=leak
      leak tests: mark some clone tests as passing with SANITIZE=leak
      leak tests: mark some status tests as passing with SANITIZE=leak
      leak tests: mark some config tests as passing with SANITIZE=leak
      leak tests: mark some fast-import tests as passing with SANITIZE=leak
      command-list.txt: sort with "LC_ALL=C sort"
      generate-cmdlist.sh: trivial whitespace change
      generate-cmdlist.sh: don't call get_categories() from category_list()
      generate-cmdlist.sh: run "grep | sort", not "sort | grep"
      generate-cmdlist.sh: stop sorting category lines
      generate-cmdlist.sh: replace "grep' invocation with a shell version
      generate-cmdlist.sh: don't parse command-list.txt thrice
      parse-options.c: use "enum parse_opt_result" for parse_nodash_opt()
      checkout: fix "branch info" memory leaks
      CI: remove Travis CI support
      CI: use shorter names that fit in UX tooltips
      CI: rename the "Linux32" job to lower-case "linux32"
      CI: use "$runs_on_pool", not "$jobname" to select packages & config
      CI: don't run "make test" twice in one job
      upload-archive: use regular "struct child_process" pattern
      run-command API users: use strvec_pushv(), not argv assignment
      run-command tests: use strvec_pushv(), not argv assignment
      run-command API users: use strvec_pushl(), not argv construction
      run-command API users: use strvec_push(), not argv construction
      run-command API: remove "argv" member, always use "args"
      difftool: use "env_array" to simplify memory management
      run-command API: remove "env" member, always use "env_array"
      common-main.c: call exit(), don't return
      pack-objects: use BUG(...) not die("BUG: ...")
      strbuf.h: use BUG(...) not die("BUG: ...")
      pathspec: use BUG(...) not die("BUG:%s:%d....", <file>, <line>)
      object.c: use BUG(...) no die("BUG: ...") in lookup_object_by_type()
      usage.c: add a die_message() routine
      usage.c API users: use die_message() for "fatal :" + exit 128
      usage.c API users: use die_message() for error() + exit 128
      gc: return from cmd_gc(), don't call exit()
      usage.c + gc: add and use a die_message_errno()
      config API: use get_error_routine(), not vreportf()
      pull, fetch: fix segfault in --set-upstream option
      stash: don't show "git stash push" usage on bad "git stash" usage
      reflog delete: narrow scope of "cmd" passed to count_reflog_ent()
      reflog expire: narrow scope of "cb" in cmd_reflog_expire()
      reflog: change one->many worktree->refnames to use a string_list
      reflog expire: use "switch" over enum values
      reflog expire: refactor & use "tip_commit" only for UE_NORMAL
      reflog expire: don't use lookup_commit_reference_gently()
      reflog: reduce scope of "struct rev_info"
      refs files-backend: assume cb->newlog if !EXPIRE_REFLOGS_DRY_RUN
      reflog + refs-backend: move "verbose" out of the backend
      Makefile: correct the dependency graph of hook-list.h
      Makefile: move -DPAGER_ENV from BASIC_CFLAGS to EXTRA_CPPFLAGS
      Makefile: don't invoke msgfmt with --statistics

Øystein Walle (2):
      status: count stash entries in separate function
      status: print stash info with --porcelain=v2 --show-stash

徐沛文 (Aleen) (3):
      doc: git-format-patch: describe the option --always
      am: support --empty=<option> to handle empty patches
      am: support --allow-empty to record specific empty patches


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.34.0-rc1
@ 2021-11-03 23:17  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-11-03 23:17 UTC (permalink / raw)
  To: git; +Cc: git-packagers

A release candidate Git v2.34.0-rc1 is now available for testing at
the usual places.  It is comprised of 778 non-merge commits since
v2.33.0, contributed by 90 people, 27 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.34.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.33.0 are as follows.
Welcome to the Git development community!

  Alan Blotz, Azeem Bande-Ali, Dr. Matthias St. Pierre, Eli
  Schwartz, git.mexon@spamgourmet.com, Glen Choo, Hamza Mahfooz,
  Joel Klinghed, Johannes Altmanninger, Jonas Kittner, Kim
  Altintop, Kyle Zhao, Mahi Kolla, Marvin Häuser, Mickey Endito,
  Rob Browning, Robert Estelle, Robert Leftwich, Tal Kelrich,
  Tassilo Horn, Thomas De Zeeuw, USAMI Kenta, Victor Gambier,
  Victoria Dye, Wesley Schwengle, Xingman Chen, and Zoker.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alban Gruin, Alex Henrie, Andrzej
  Hunt, Atharva Raykar, Bagas Sanjaya, Ben Boeckel, brian
  m. carlson, Carlo Arenas, Carlo Marcelo Arenas Belón, Christian
  Couder, David Aguilar, David Turner, Derrick Stolee, Đoàn
  Trần Công Danh, Elijah Newren, Emily Shaffer, Emir Sarı,
  Eric Sunshine, Eric Wong, Fabian Stelzer, Felipe Contreras,
  Greg Hurrell, Han-Wen Nienhuys, Hariom Verma, Jacob Keller,
  Jacob Vosmaer, Jean-Noël Avila, Jeff Hostetler, Jeff King,
  Jiang Xin, Johannes Schindelin, Johannes Sixt, Jonathan Nieder,
  Jonathan Tan, Josh Steadmon, Junio C Hamano, Kaartic Sivaraam,
  Lénaïc Huard, Martin Ågren, Matheus Tavares, Matheus Tavares
  Bernardino, Matthias Aßhauer, Mike Hommey, Miriam Rubio, Orgad
  Shaneh, Patrick Steinhardt, Philip Oakley, Philippe Blain,
  Phillip Wood, Pranit Bauva, Randall S. Becker, René Scharfe,
  Sergey Organov, Shourya Shukla, SZEDER Gábor, Takashi Iwai,
  Tanushree Tumane, Taylor Blau, Teng Long, Todd Zullinger,
  Ulrich Windl, and ZheNing Hu.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git 2.34 Release Notes (draft)
==============================

Updates since Git 2.33
----------------------

Backward compatibility notes

 * The "--preserve-merges" option of "git rebase" has been removed.


UI, Workflows & Features

 * Pathname expansion (like "~username/") learned a way to specify a
   location relative to Git installation (e.g. its $sharedir which is
   $(prefix)/share), with "%(prefix)".

 * Use `ort` instead of `recursive` as the default merge strategy.

 * The userdiff pattern for "java" language has been updated.

 * "git rebase" by default skips changes that are equivalent to
   commits that are already in the history the branch is rebased onto;
   give messages when this happens to let the users be aware of
   skipped commits, and also teach them how to tell "rebase" to keep
   duplicated changes.

 * The advice message that "git cherry-pick" gives when it asks
   conflicted replay of a commit to be resolved by the end user has
   been updated.

 * After "git clone --recurse-submodules", all submodules are cloned
   but they are not by default recursed into by other commands.  With
   submodule.stickyRecursiveClone configuration set, submodule.recurse
   configuration is set to true in a repository created by "clone"
   with "--recurse-submodules" option.

 * The logic for auto-correction of misspelt subcommands learned to go
   interactive when the help.autocorrect configuration variable is set
   to 'prompt'.

 * "git maintenance" scheduler learned to use systemd timers as a
   possible backend.

 * "git diff --submodule=diff" showed failure from run_command() when
   trying to run diff inside a submodule, when the user manually
   removes the submodule directory.

 * "git bundle unbundle" learned to show progress display.

 * In cone mode, the sparse-index code path learned to remove ignored
   files (like build artifacts) outside the sparse cone, allowing the
   entire directory outside the sparse cone to be removed, which is
   especially useful when the sparse patterns change.

 * Taking advantage of the CGI interface, http-backend has been
   updated to enable protocol v2 automatically when the other side
   asks for it.

 * The credential-cache helper has been adjusted to Windows.

 * The error in "git help no-such-git-command" is handled better.

 * The unicode character width table (used for output alignment) has
   been updated.

 * The ref iteration code used to optionally allow dangling refs to be
   shown, which has been tightened up.

 * "git add", "git mv", and "git rm" have been adjusted to avoid
   updating paths outside of the sparse-checkout definition unless
   the user specifies a "--sparse" option.

 * "git repack" has been taught to generate multi-pack reachability
   bitmaps.

 * "git fsck" has been taught to report mismatch between expected and
   actual types of an object better.

 * Use ssh public crypto for object and push-cert signing.

 * "git log --grep=string --author=name" learns to highlight hits just
   like "git grep string" does.



Performance, Internal Implementation, Development Support etc.

 * "git bisect" spawned "git show-branch" only to pretty-print the
   title of the commit after checking out the next version to be
   tested; this has been rewritten in C.

 * "git add" can work better with the sparse index.

 * Support for ancient versions of cURL library (pre 7.19.4) has been
   dropped.

 * A handful of tests that assumed implementation details of files
   backend for refs have been cleaned up.

 * trace2 logs learned to show parent process name to see in what
   context Git was invoked.

 * Loading of ref tips to prepare for common ancestry negotiation in
   "git fetch-pack" has been optimized by taking advantage of the
   commit graph when available.

 * Remind developers that the userdiff patterns should be kept simple
   and permissive, assuming that the contents they apply are always
   syntactically correct.

 * The current implementation of GIT_TEST_FAIL_PREREQS is broken in
   that checking for the lack of a prerequisite would not work.  Avoid
   the use of "if ! test_have_prereq X" in a test script.

 * The revision traversal API has been optimized by taking advantage
   of the commit-graph, when available, to determine if a commit is
   reachable from any of the existing refs.

 * "git fetch --quiet" optimization to avoid useless computation of
   info that will never be displayed.

 * Callers from older advice_config[] based API has been updated to
   use the newer advice_if_enabled() and advice_enabled() API.

 * Teach "test_pause" and "debug" helpers to allow using the HOME and
   TERM environment variables the user usually uses.

 * "make INSTALL_STRIP=-s install" allows the installation step to use
   "install -s" to strip the binaries as they get installed.

 * Code that handles large number of refs in the "git fetch" code
   path has been optimized.

 * The reachability bitmap file used to be generated only for a single
   pack, but now we've learned to generate bitmaps for history that
   span across multiple packfiles.

 * The code to make "git grep" recurse into submodules has been
   updated to migrate away from the "add submodule's object store as
   an alternate object store" mechanism (which is suboptimal).

 * The tracing of process ancestry information has been enhanced.

 * Reduce number of write(2) system calls while sending the
   ref advertisement.

 * Update the build procedure to use the "-pedantic" build when
   DEVELOPER makefile macro is in effect.

 * Large part of "git submodule add" gets rewritten in C.

 * The run-command API has been updated so that the callers can easily
   ask the file descriptors open for packfiles to be closed immediately
   before spawning commands that may trigger auto-gc.

 * An oddball OPTION_ARGUMENT feature has been removed from the
   parse-options API.

 * The mergesort implementation used to sort linked list has been
   optimized.

 * Remove external declaration of functions that no longer exist.

 * "git multi-pack-index write --bitmap" learns to propagate the
   hashcache from original bitmap to resulting bitmap.

 * CI learns to run the leak sanitizer builds.

 * "git grep --recurse-submodules" takes trees and blobs from the
   submodule repository, but the textconv settings when processing a
   blob from the submodule is not taken from the submodule repository.
   A test is added to demonstrate the issue, without fixing it.

 * Teach "git help -c" into helping the command line completion of
   configuration variables.

 * When "git cmd -h" shows more than one line of usage text (e.g.
   the cmd subcommand may take sub-sub-command), parse-options API
   learned to align these lines, even across i18n/l10n.

 * Prevent "make sparse" from running for the source files that
   haven't been modified.

 * The codepath to write a new version of .midx multi-pack index files
   has learned to release the mmaped memory holding the current
   version of .midx before removing them from the disk, as some
   platforms do not allow removal of a file that still has mapping.

 * A new feature has been added to abort early in the test framework.


Fixes since v2.33
-----------------

 * Input validation of "git pack-objects --stdin-packs" has been
   corrected.

 * Bugfix for common ancestor negotiation recently introduced in "git
   push" code path.

 * "git pull" had various corner cases that were not well thought out
   around its --rebase backend, e.g. "git pull --ff-only" did not stop
   but went ahead and rebased when the history on other side is not a
   descendant of our history.  The series tries to fix them up.

 * "git apply" miscounted the bytes and failed to read to the end of
   binary hunks.

 * "git range-diff" code clean-up.

 * "git commit --fixup" now works with "--edit" again, after it was
   broken in v2.32.

 * Use upload-artifacts v1 (instead of v2) for 32-bit linux, as the
   new version has a blocker bug for that architecture.

 * Checking out all the paths from HEAD during the last conflicted
   step in "git rebase" and continuing would cause the step to be
   skipped (which is expected), but leaves MERGE_MSG file behind in
   $GIT_DIR and confuses the next "git commit", which has been
   corrected.

 * Various bugs in "git rebase -r" have been fixed.

 * mmap() imitation used to call xmalloc() that dies upon malloc()
   failure, which has been corrected to just return an error to the
   caller to be handled.

 * "git diff --relative" segfaulted and/or produced incorrect result
   when there are unmerged paths.

 * The delayed checkout code path in "git checkout" etc. were chatty
   even when --quiet and/or --no-progress options were given.

 * "git branch -D <branch>" used to refuse to remove a broken branch
   ref that points at a missing commit, which has been corrected.

 * Build update for Apple clang.

 * The parser for the "--nl" option of "git column" has been
   corrected.

 * "git upload-pack" which runs on the other side of "git fetch"
   forgot to take the ref namespaces into account when handling
   want-ref requests.

 * The sparse-index support can corrupt the index structure by storing
   a stale and/or uninitialized data, which has been corrected.

 * Buggy tests could damage repositories outside the throw-away test
   area we created.  We now by default export GIT_CEILING_DIRECTORIES
   to limit the damage from such a stray test.

 * Even when running "git send-email" without its own threaded
   discussion support, a threading related header in one message is
   carried over to the subsequent message to result in an unwanted
   threading, which has been corrected.

 * The output from "git fast-export", when its anonymization feature
   is in use, showed an annotated tag incorrectly.

 * Doc update plus improved error reporting.

 * Recent "diff -m" changes broke "gitk", which has been corrected.

 * Regression fix.

 * The "git apply -3" code path learned not to bother the lower level
   merge machinery when the three-way merge can be trivially resolved
   without the content level merge.  This fixes a regression caused by
   recent "-3way first and fall back to direct application" change.

 * The code that optionally creates the *.rev reverse index file has
   been optimized to avoid needless computation when it is not writing
   the file out.

 * "git range-diff -I... <range> <range>" segfaulted, which has been
   corrected.

 * The order in which various files that make up a single (conceptual)
   packfile has been reevaluated and straightened up.  This matters in
   correctness, as an incomplete set of files must not be shown to a
   running Git.

 * The "mode" word is useless in a call to open(2) that does not
   create a new file.  Such a call in the files backend of the ref
   subsystem has been cleaned up.

 * "git update-ref --stdin" failed to flush its output as needed,
   which potentially led the conversation to a deadlock.

 * When "git am --abort" fails to abort correctly, it still exited
   with exit status of 0, which has been corrected.

 * Correct nr and alloc members of strvec struct to be of type size_t.

 * "git stash", where the tentative change involves changing a
   directory to a file (or vice versa), was confused, which has been
   corrected.

 * "git clone" from a repository whose HEAD is unborn into a bare
   repository didn't follow the branch name the other side used, which
   is corrected.

 * "git cvsserver" had a long-standing bug in its authentication code,
   which has finally been corrected (it is unclear and is a separate
   question if anybody is seriously using it, though).

 * "git difftool --dir-diff" mishandled symbolic links.

 * Sensitive data in the HTTP trace were supposed to be redacted, but
   we failed to do so in HTTP/2 requests.

 * "make clean" has been updated to remove leftover .depend/
   directories, even when it is not told to use them to compute header
   dependencies.

 * Protocol v0 clients can get stuck parsing a malformed feature line.

 * A few kinds of changes "git status" can show were not documented.
   (merge d2a534c515 ja/doc-status-types-and-copies later to maint).

 * The mergesort implementation used to sort linked list has been
   optimized.
   (merge c90cfc225b rs/mergesort later to maint).

 * An editor session launched during a Git operation (e.g. during 'git
   commit') can leave the terminal in a funny state.  The code path
   has updated to save the terminal state before, and restore it
   after, it spawns an editor.
   (merge 3d411afabc cm/save-restore-terminal later to maint).

 * "git cat-file --batch" with the "--batch-all-objects" option is
   supposed to iterate over all the objects found in a repository, but
   it used to translate these object names using the replace mechanism,
   which defeats the point of enumerating all objects in the repository.
   This has been corrected.
   (merge bf972896d7 jk/cat-file-batch-all-wo-replace later to maint).

 * Recent sparse-index work broke safety against attempts to add paths
   with trailing slashes to the index, which has been corrected.
   (merge c8ad9d04c6 rs/make-verify-path-really-verify-again later to maint).

 * The "--color-lines" and "--color-by-age" options of "git blame"
   have been missing, which are now documented.
   (merge 8c32856133 bs/doc-blame-color-lines later to maint).

 * The PATH used in CI job may be too wide and let incompatible dlls
   to be grabbed, which can cause the build&test to fail.  Tighten it.
   (merge 7491ef6198 js/windows-ci-path-fix later to maint).

 * Avoid performance measurements from getting ruined by gc and other
   housekeeping pauses interfering in the middle.
   (merge be79131a53 rs/disable-gc-during-perf-tests later to maint).

 * Stop "git add --dry-run" from creating new blob and tree objects.
   (merge e578d0311d rs/add-dry-run-without-objects later to maint).

 * "git commit" gave duplicated error message when the object store
   was unwritable, which has been corrected.
   (merge 4ef91a2d79 ab/fix-commit-error-message-upon-unwritable-object-store later to maint).

 * Recent sparse-index addition, namely any use of index_name_pos(),
   can expand sparse index entries and breaks any code that walks
   cache-tree or existing index entries.  One such instance of such a
   breakage has been corrected.

 * The xxdiff difftool backend can exit with status 128, which the
   difftool-helper that launches the backend takes as a significant
   failure, when it is not significant at all.  Work it around.
   (merge 571f4348dd da/mergetools-special-case-xxdiff-exit-128 later to maint).

 * Improve test framework around unwritable directories.
   (merge 5d22e18965 ab/test-cleanly-recreate-trash-directory later to maint).

 * "git push" client talking to an HTTP server did not diagnose the
   lack of the final status report from the other side correctly,
   which has been corrected.
   (merge c5c3486f38 jk/http-push-status-fix later to maint).

 * Update "git archive" documentation and give explicit mention on the
   compression level for both zip and tar.gz format.
   (merge c4b208c309 bs/archive-doc-compression-level later to maint).

 * Drop "git sparse-index" from the list of common commands.
   (merge 6a9a50a8af sg/sparse-index-not-that-common-a-command later to maint).

 * "git branch -c/-m new old" was not described to copy config, which
   has been corrected.
   (merge 8252ec300e jc/branch-copy-doc later to maint).

 * Squelch over-eager warning message added during this cycle.
   (merge 9e8fe7b1c7 jk/log-warn-on-bogus-encoding later to maint).

 * Fix long-standing shell syntax error in the completion script.
   (merge 46b0585286 re/completion-fix-test-equality later to maint).

 * Teach "git commit-graph" command not to allow using replace objects
   at all, as we do not use the commit-graph at runtime when we see
   object replacement.
   (merge 095d112f8c ab/ignore-replace-while-working-on-commit-graph later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge f188160be9 ab/bundle-remove-verbose-option later to maint).
   (merge 8c6b4332b4 rs/close-pack-leakfix later to maint).
   (merge 51b04c05b7 bs/difftool-msg-tweak later to maint).
   (merge dd20e4a6db ab/make-compdb-fix later to maint).
   (merge 6ffb990dc4 os/status-docfix later to maint).
   (merge 100c2da2d3 rs/p3400-lose-tac later to maint).
   (merge 76f3b69896 tb/aggregate-ignore-leading-whitespaces later to maint).
   (merge 6e4fd8bfcd tz/doc-link-to-bundle-format-fix later to maint).
   (merge f6c013dfa1 jc/doc-commit-header-continuation-line later to maint).
   (merge ec9a37d69b ab/pkt-line-cleanup later to maint).
   (merge 8650c6298c ab/fix-make-lint-docs later to maint).
   (merge 1c720357ce ab/test-lib-diff-cleanup later to maint).
   (merge 6b615dbece ks/submodule-add-message-fix later to maint).
   (merge 82a57cd13f ma/doc-git-version later to maint).
   (merge 203eb8381a jc/doc-format-patch-clarify-auto-base later to maint).
   (merge 559664c792 ab/test-lib later to maint).

----------------------------------------------------------------

Changes since v2.33.0 are as follows:

Alex Henrie (1):
      pull: abort if --ff-only is given and fast-forwarding is impossible

Andrzej Hunt (1):
      connect: also update offset for features without values

Atharva Raykar (11):
      submodule--helper: introduce add-config subcommand
      submodule--helper: add options for compute_submodule_clone_url()
      submodule--helper: refactor resolve_relative_url() helper
      submodule--helper: remove repeated code in sync_submodule()
      dir: libify and export helper functions from clone.c
      submodule--helper: convert the bulk of cmd_add() to C
      submodule--helper: remove add-clone subcommand
      submodule--helper: remove add-config subcommand
      submodule--helper: remove resolve-relative-url subcommand
      submodule--helper: rename compute_submodule_clone_url()
      submodule--helper: run update procedures from C

Azeem Bande-Ali (1):
      help.c: help.autocorrect=prompt waits for user action

Bagas Sanjaya (8):
      make: add INSTALL_STRIP option variable
      Documentation: fix default directory of git bugreport -o
      ls-files: use imperative mood for -X and -z option description
      difftool: fix word spacing in the usage strings
      blame: describe default output format
      bisect--helper: add space between colon and following sentence
      blame: document --color-* options
      archive: describe compression level option

Ben Boeckel (2):
      advice: add enum variants for missing advice variables
      advice: remove read uses of most global `advice_` variables

Carlo Marcelo Arenas Belón (23):
      build: update detect-compiler for newer Xcode version
      builtin/merge: avoid -Wformat-extra-args from ancient Xcode
      ci: run a pedantic build as part of the GitHub workflow
      ci: update freebsd 12 cirrus job
      ci: use upload-artifacts v1 for dockerized jobs
      remote: avoid -Wunused-but-set-variable in gcc with -DNDEBUG
      win32: allow building with pedantic mode enabled
      developer: enable pedantic by default
      t0301: fixes for windows compatibility
      credential-cache: check for windows specific errors
      git-compat-util: include declaration for unix sockets in windows
      tree-diff: fix leak when not HAVE_ALLOCA_H
      t0000: avoid masking git exit value through pipes
      git-cvsserver: use crypt correctly to compare password hashes
      git-cvsserver: protect against NULL in crypt(3)
      Documentation: cleanup git-cvsserver
      unicode: update the width tables to Unicode 14
      simple-ipc: move definition of ipc_active_state outside of ifdef
      lazyload.h: use an even more generic function pointer than FARPROC
      Makefile: restrict -Wpedantic and -Wno-pedantic-ms-format better
      terminal: teach git how to save/restore its terminal settings
      editor: save and reset terminal after calling EDITOR
      wrapper: remove xunsetenv()

David Aguilar (6):
      difftool: fix symlink-file writing in dir-diff mode
      difftool: create a tmpdir path without repeated slashes
      difftool: refactor dir-diff to write files using helper functions
      difftool: remove an unnecessary call to strbuf_release()
      difftool: add a missing space to the run_dir_diff() comments
      mergetools/xxdiff: prevent segfaults from stopping difftool

David Turner (3):
      t4060: remove unused variable
      diff --submodule=diff: do not fail on ever-initialied deleted submodules
      diff --submodule=diff: don't print failure message twice

Derrick Stolee (36):
      t1092: test merge conflicts outside cone
      add: allow operating on a sparse-only index
      pathspec: stop calling ensure_full_index
      add: ignore outside the sparse-checkout in refresh()
      add: remove ensure_full_index() with --renormalize
      maintenance: skip bootout/bootstrap when plist is registered
      t7519: rewrite sparse index test
      sparse-index: silently return when not using cone-mode patterns
      unpack-trees: fix nested sparse-dir search
      sparse-index: silently return when cache tree fails
      sparse-index: use WRITE_TREE_MISSING_OK
      sparse-checkout: create helper methods
      attr: be careful about sparse directories
      sparse-index: add SPARSE_INDEX_MEMORY_ONLY flag
      sparse-checkout: clear tracked sparse dirs
      diff: ignore sparse paths in diffstat
      merge: make sparse-aware with ORT
      merge-ort: expand only for out-of-cone conflicts
      t1092: add cherry-pick, rebase tests
      sequencer: ensure full index if not ORT strategy
      sparse-index: integrate with cherry-pick and rebase
      t/perf/run: fix bin-wrappers computation
      t3705: test that 'sparse_entry' is unstaged
      t1092: behavior for adding sparse files
      dir: select directories correctly
      dir: fix pattern matching on dirs
      add: fail when adding an untracked sparse file
      add: skip tracked paths outside sparse-checkout cone
      add: implement the --sparse option
      add: update --chmod to skip sparse paths
      add: update --renormalize to skip sparse paths
      rm: add --sparse option
      rm: skip sparse paths with missing SKIP_WORKTREE
      mv: refuse to move sparse paths
      advice: update message to suggest '--sparse'
      dir: fix directory-matching bug

Elijah Newren (48):
      t7601: test interaction of merge/rebase/fast-forward flags and options
      t7601: add tests of interactions with multiple merge heads and config
      pull: since --ff-only overrides, handle it first
      pull: make --rebase and --no-rebase override pull.ff=only
      pull: abort by default when fast-forwarding is not possible
      pull: update docs & code for option compatibility with rebasing
      pull: fix handling of multiple heads
      merge-ort: rename str{map,intmap,set}_func()
      diffcore-rename: use a mem_pool for exact rename detection's hashmap
      merge-ort: add pool_alloc, pool_calloc, and pool_strndup wrappers
      merge-ort: set up a memory pool
      merge-ort: switch our strmaps over to using memory pools
      diffcore-rename, merge-ort: add wrapper functions for filepair alloc/dealloc
      merge-ort: store filepairs and filespecs in our mem_pool
      merge-ort: reuse path strings in pool_alloc_filespec
      merge-ort: remove compile-time ability to turn off usage of memory pools
      git-rebase.txt: correct antiquated claims about --rebase-merges
      directory-rename-detection.txt: small updates due to merge-ort optimizations
      Documentation: edit awkward references to `git merge-recursive`
      merge-strategies.txt: update wording for the resolve strategy
      merge-strategies.txt: do not imply using copy detection is desired
      merge-strategies.txt: avoid giving special preference to patience algorithm
      merge-strategies.txt: fix simple capitalization error
      git-rebase.txt: correct out-of-date and misleading text about renames
      merge-strategies.txt: add coverage of the `ort` merge strategy
      Update error message and code comment
      Change default merge backend from recursive to ort
      Update docs for change of default merge backend
      t3903: document a pair of directory/file bugs
      stash: avoid feeding directories to update-index
      stash: restore untracked files AFTER restoring tracked files
      git-am.txt: clarify --abort behavior
      t4151: add a few am --abort tests
      am: fix incorrect exit status on am fail to abort
      tests: remove leftover untracked files
      trace2.h: fix trivial comment typo
      merge-ort: fix completely wrong comment
      t2500: add various tests for nuking untracked files
      checkout, read-tree: fix leak of unpack_trees_options.dir
      read-tree, merge-recursive: overwrite ignored files by default
      unpack-trees: introduce preserve_ignored to unpack_trees_options
      unpack-trees: make dir an internal-only struct
      Remove ignored files by default when they are in the way
      Change unpack_trees' 'reset' flag into an enum
      unpack-trees: avoid nuking untracked dir in way of unmerged file
      unpack-trees: avoid nuking untracked dir in way of locally deleted file
      Comment important codepaths regarding nuking untracked files/dirs
      Documentation: call out commands that nuke untracked files/directories

Emily Shaffer (3):
      tr2: make process info collection platform-generic
      tr2: log parent process name
      hook.c: add a hook_exists() wrapper and use it in bugreport.c

Eric Wong (1):
      doc/technical: update note about core.multiPackIndex

Fabian Stelzer (11):
      ssh signing: preliminary refactoring and clean-up
      ssh signing: add test prereqs
      ssh signing: add ssh key format and signing code
      ssh signing: retrieve a default key from ssh-agent
      ssh signing: provide a textual signing_key_id
      ssh signing: verify signatures using ssh-keygen
      ssh signing: duplicate t7510 tests for commits
      ssh signing: tests for logs, tags & push certs
      ssh signing: test that gpg fails for unknown keys
      ssh signing: fmt-merge-msg tests & config parse
      ssh signing: clarify trustlevel usage in docs

Felipe Contreras (4):
      completion: bash: fix prefix detection in branch.*
      completion: bash: fix for suboptions with value
      completion: bash: fix for multiple dash commands
      completion: bash: add correct suffix in variables

Glen Choo (4):
      MyFirstContribution: Document --range-diff option when writing v2
      fsck: verify commit graph when implicitly enabled
      fsck: verify multi-pack-index when implictly enabled
      gc: perform incremental repack when implictly enabled

Greg Hurrell (1):
      gitweb: use HEAD as secondary sort key in git_get_heads_list()

Hamza Mahfooz (3):
      grep: refactor next_match() and match_one_pattern() for external use
      pretty: colorize pattern matches in commit messages
      grep/pcre2: fix an edge case concerning ascii patterns and UTF-8 data

Han-Wen Nienhuys (14):
      t6050: use git-update-ref rather than filesystem access
      t1503: mark symlink test as REFFILES
      t6120: use git-update-ref rather than filesystem access
      t3320: use git-symbolic-ref rather than filesystem access
      t2402: use ref-store test helper to create broken symlink
      t1405: use 'git reflog exists' to check reflog existence
      t1405: mark test for 'git pack-refs' as REFFILES
      t1410: mark test as REFFILES
      t7064: use update-ref -d to remove upstream branch
      t6500: use "ls -1" to snapshot ref database state
      t6001: avoid direct file system access
      refs: remove EINVAL errno output from specification of read_raw_ref_fn
      refs/files-backend: stop setting errno from lock_ref_oid_basic
      refs: make errno output explicit for read_raw_ref_fn

Jacob Vosmaer (2):
      pkt-line: add stdio packet write functions
      upload-pack: use stdio in send_ref callbacks

Jeff Hostetler (8):
      sparse-index: copy dir_hash in ensure_full_index()
      trace2: add trace2_child_ready() to report on background children
      simple-ipc: preparations for supporting binary messages.
      simple-ipc/ipc-win32: add trace2 debugging
      simple-ipc/ipc-win32: add Windows ACL to named pipe
      run-command: create start_bg_command
      t/helper/simple-ipc: convert test-simple-ipc to use start_bg_command
      t/perf/perf-lib.sh: remove test_times.* at the end test_perf_()

Jeff King (73):
      http: drop support for curl < 7.11.1
      http: drop support for curl < 7.16.0
      http: drop support for curl < 7.19.4
      build: clang version may not be followed by extra words
      range-diff: drop useless "offset" variable from read_patches()
      range-diff: handle unterminated lines in read_patches()
      range-diff: use ssize_t for parsed "len" in read_patches()
      apply: keep buffer/size pair in sync when parsing binary hunks
      t5323: drop mentions of "master"
      refs: drop unused "flags" parameter to lock_ref_oid_basic()
      logmsg_reencode(): warn when iconv() fails
      docs: use "character encoding" to refer to commit-object encoding
      t0410: disable GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP
      t5310: disable GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP
      pack-bitmap: drop repository argument from prepare_midx_bitmap_git()
      pack-bitmap: drop bitmap_index argument from try_partial_reuse()
      t5562: use alarm() to interrupt timed child-wait
      t5551: test v2-to-v0 http protocol fallback
      http-backend: handle HTTP_GIT_PROTOCOL CGI variable
      docs/http-backend: mention v2 protocol
      docs/git: discuss server-side config for GIT_PROTOCOL
      docs/protocol-v2: point readers transport config discussion
      strvec: use size_t to store nr and alloc
      difftool: prepare "diff" cmdline in cmd_difftool()
      serve: rename is_command() to parse_command()
      serve: return capability "value" from get_capability()
      serve: add "receive" method for v2 capabilities table
      serve: provide "receive" function for object-format capability
      serve: provide "receive" function for session-id capability
      serve: drop "keys" strvec
      ls-refs: ignore very long ref-prefix counts
      docs/protocol-v2: clarify some ls-refs ref-prefix details
      serve: reject bogus v2 "command=ls-refs=foo"
      serve: reject commands used as capabilities
      ls-refs: reject unknown arguments
      t1400: avoid SIGPIPE race condition on fifo
      clone: handle unborn branch in bare repos
      grep: stop modifying buffer in strip_timestamp
      grep: stop modifying buffer in show_line()
      grep: stop modifying buffer in grep_source_1()
      grep: mark "haystack" buffers as const
      grep: store grep_source buffer as const
      http: match headers case-insensitively when redacting
      t7900: clean up some more broken refs
      t5516: don't use HEAD ref for invalid ref-deletion tests
      t5600: provide detached HEAD for corruption failures
      t5312: drop "verbose" helper
      t5312: create bogus ref as necessary
      t5312: test non-destructive repack
      t5312: be more assertive about command failure
      refs-internal.h: move DO_FOR_EACH_* flags next to each other
      refs-internal.h: reorganize DO_FOR_EACH_* flag documentation
      refs: add DO_FOR_EACH_OMIT_DANGLING_SYMREFS flag
      refs: omit dangling symrefs when using GIT_REF_PARANOIA
      refs: turn on GIT_REF_PARANOIA by default
      repack, prune: drop GIT_REF_PARANOIA settings
      ref-filter: stop setting FILTER_REFS_INCLUDE_BROKEN
      ref-filter: drop broken-ref code entirely
      refs: drop "broken" flag from for_each_fullref_in()
      test-read-midx: fix leak of bitmap_index struct
      t1006: clean up broken objects
      cat-file: mention --unordered along with --batch-all-objects
      cat-file: disable refs/replace with --batch-all-objects
      cat-file: split ordered/unordered batch-all-objects callbacks
      cat-file: use packed_object_info() for --batch-all-objects
      gpg-interface: fix leak of "line" in parse_ssh_output()
      gpg-interface: fix leak of strbufs in get_ssh_key_fingerprint()
      send-pack: complain about "expecting report" with --helper-status
      transport-helper: recognize "expecting report" error from send-pack
      submodule: drop unused sm_name parameter from append_fetch_remotes()
      Documentation/Makefile: fix lint-docs mkdir dependency
      t5310: drop lib-bundle.sh include
      log: document --encoding behavior on iconv() failure

Jiang Xin (2):
      ci: new github-action for git-l10n code review
      i18n: fix typos found during l10n for git 2.34.0

Joel Klinghed (1):
      commit: restore --edit when combined with --fixup

Johannes Altmanninger (4):
      Documentation/git-status: remove impossible porcelain status DR and DC
      Documentation/diff-format: state in which cases porcelain status is T
      Documentation/git-status: document porcelain status T (typechange)
      Documentation/git-status: mention how to detect copies

Johannes Schindelin (24):
      tests: exercise the RUNTIME_PREFIX feature
      expand_user_path(): remove stale part of the comment
      expand_user_path(): clarify the role of the `real_home` parameter
      Use a better name for the function interpolating paths
      interpolate_path(): allow specifying paths relative to the runtime prefix
      maintenance: create `launchctl` configuration using a lock file
      t5520: do not use `pull.rebase=preserve`
      remote: warn about unhandled branch.<name>.rebase values
      tests: stop testing `git rebase --preserve-merges`
      pull: remove support for `--rebase=preserve`
      rebase: drop support for `--preserve-merges`
      git-svn: drop support for `--preserve-merges`
      rebase: drop the internal `rebase--interactive` command
      rebase: remove obsolete code comment
      rebase: stop mentioning the -p option in comments
      rebase: remove a no-longer-used function
      sequencer: restrict scope of a formerly public function
      commit-graph: when closing the graph, also release the slab
      pull: release packs before fetching
      run-command: prettify the `RUN_COMMAND_*` flags
      run-command: offer to close the object store before running
      run_auto_maintenance(): implicitly close the object store
      Close object store closer to spawning child processes
      ci(windows): ensure that we do not pick up random executables

Johannes Sixt (9):
      t9001: PATH must not use Windows-style paths
      lazyload.h: fix warnings about mismatching function pointer types
      t4034/cpp: actually test that operator tokens are not split
      t4034: add tests showing problematic cpp tokenizations
      userdiff-cpp: tighten word regex
      userdiff-cpp: prepare test cases with yet unsupported features
      userdiff-cpp: permit the digit-separating single-quote in numbers
      userdiff-cpp: learn the C++ spaceship operator
      userdiff-cpp: back out the digit-separators in numbers

Jonathan Tan (22):
      send-pack: fix push.negotiate with remote helper
      send-pack: fix push nego. when remote has refs
      fetch: die on invalid --negotiation-tip hash
      submodule: lazily add submodule ODBs as alternates
      grep: use submodule-ODB-as-alternate lazy-addition
      grep: typesafe versions of grep_source_init
      grep: read submodule entry with explicit repo
      grep: allocate subrepos on heap
      grep: add repository to OID grep sources
      submodule-config: pass repo upon blob config read
      t7814: show lack of alternate ODB-adding
      submodule: remove unnecessary unabsorbed fallback
      repository: support unabsorbed in repo_submodule_init
      revision: remove "submodule" from opt struct
      submodule: extract path to submodule gitdir func
      refs: plumb repo into ref stores
      refs: teach arbitrary repo support to iterators
      refs: peeling non-the_repository iterators is BUG
      merge-{ort,recursive}: remove add_submodule_odb()
      object-file: only register submodule ODB if needed
      submodule: pass repo to check_has_commit()
      submodule: trace adding submodule ODB as alternate

Josh Steadmon (2):
      connect, protocol: log negotiated protocol version
      sequencer: advise if skipping cherry-picked commit

Junio C Hamano (30):
      expand_user_path: allow in-flight topics to keep using the old name
      bisect: do not run show-branch just to show the current commit
      bisect: simplify return code from bisect_checkout()
      build: catch clang that identifies itself as "$VENDOR clang"
      userdiff: comment on the builtin patterns
      The first batch post 2.33
      The second batch
      The third batch
      apply: resolve trivial merge without hitting ll-merge with "--3way"
      hash-object: prefix_filename() returns allocated memory these days
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      The eighth batch
      The ninth batch
      The tenth batch
      The eleventh batch
      Twelfth batch
      Git 2.33.1
      signature-format.txt: explain and illustrate multi-line headers
      Thirteenth batch
      The fourteenth batch
      format-patch (doc): clarify --base=auto
      branch (doc): -m/-c copies config and reflog
      The fifteenth batch
      Revert "logmsg_reencode(): warn when iconv() fails"
      Git 2.34-rc0
      A few more topics before -rc1
      Git 2.34-rc1

Kaartic Sivaraam (1):
      submodule--helper: fix incorrect newlines in an error message

Kim Altintop (3):
      t5730: introduce fetch command helper
      upload-pack.c: treat want-ref relative to namespace
      docs: clarify the interaction of transfer.hideRefs and namespaces

Kyle Zhao (1):
      pack-revindex.h: correct the time complexity descriptions

Lénaïc Huard (4):
      cache.h: Introduce a generic "xdg_config_home_for(…)" function
      maintenance: `git maintenance run` learned `--scheduler=<scheduler>`
      maintenance: add support for systemd timers on Linux
      maintenance: fix test t7900-maintenance.sh

Mahi Kolla (1):
      clone: set submodule.recurse=true if submodule.stickyRecursiveClone enabled

Martin Ågren (6):
      config.txt: fix typo
      git.txt: fix typo
      git-multi-pack-index.txt: change "folder" to "directory"
      gitignore.txt: change "folder" to "directory"
      gitweb.txt: change "folder" to "directory"
      git-bundle.txt: add missing words and punctuation

Marvin Häuser (1):
      send-email: avoid incorrect header propagation

Matheus Tavares (3):
      checkout: make delayed checkout respect --quiet and --no-progress
      grep: demonstrate bug with textconv attributes and submodules
      add, rm, mv: fix bug that prevents the update of non-sparse dirs

Matthias Aßhauer (2):
      help: make sure local html page exists before calling external processes
      documentation: add documentation for 'git version'

Mickey Endito (1):
      t5582: remove spurious 'cd "$D"' line

Mike Hommey (1):
      credential: fix leak in credential_apply_config()

Miriam Rubio (3):
      t6030-bisect-porcelain: add tests to control bisect run exit cases
      t6030-bisect-porcelain: add test for bisect visualize
      bisect--helper: retire `--bisect-next-check` subcommand

Orgad Shaneh (1):
      doc: fix capitalization in "git status --porcelain=v2" description

Patrick Steinhardt (16):
      fetch-pack: speed up loading of refs via commit graph
      revision: separate walk and unsorted flags
      connected: do not sort input revisions
      revision: stop retrieving reference twice
      commit-graph: split out function to search commit position
      revision: avoid hitting packfiles when commits are in commit-graph
      ls-refs: reuse buffer when sending refs
      fetch: skip formatting updated refs with `--quiet`
      fetch: speed up lookup of want refs via commit-graph
      fetch: avoid unpacking headers in object existence check
      connected: refactor iterator to return next object ID directly
      fetch-pack: optimize loading of refs via commit graph
      fetch: refactor fetch refs to be more extendable
      fetch: merge fetching and consuming refs
      fetch: avoid second connectivity check if we already have all objects
      update-ref: fix streaming of status updates

Philip Oakley (1):
      doc: config, tell readers of `git help --config`

Philippe Blain (3):
      test-lib-functions: use 'TEST_SHELL_PATH' in 'test_pause'
      test-lib-functions: optionally keep HOME, TERM and SHELL in 'test_pause'
      test-lib-functions: keep user's debugger config files and TERM in 'debug'

Phillip Wood (22):
      t3403: fix commit authorship
      rebase --apply: restore some tests
      rebase --continue: remove .git/MERGE_MSG
      rebase -r: make 'merge -c' behave like reword
      rebase -i: add another reword test
      rebase -r: don't write .git/MERGE_MSG when fast-forwarding
      rebase -r: fix merge -c with a merge strategy
      t3407: run tests in $TEST_DIRECTORY
      t3407: use test_commit
      t3407: use test_cmp_rev
      t3407: rename a variable
      t3407: use test_path_is_missing
      t3407: strengthen rebase --abort tests
      t3407: rework rebase --quit tests
      rebase: use our standard error return value
      rebase: use lookup_commit_reference_by_name()
      rebase: dereference tags
      sequencer.c: factor out a function
      rebase: fix todo-list rereading
      sparse index: fix use-after-free bug in cache_tree_verify()
      t1092: run "rebase --apply" without "-q" in testing
      rebase -i: fix rewording with --committer-date-is-author-date

Pranit Bauva (2):
      run-command: make `exists_in_PATH()` non-static
      bisect--helper: reimplement `bisect_visualize()` shell function in C

René Scharfe (36):
      compat: let git_mmap use malloc(3) directly
      xopen: explicitly report creation failures
      use xopen() to handle fatal open(2) failures
      show-branch: simplify rev_is_head()
      archive: convert queue_directory to struct object_id
      branch: allow deleting dangling branches with --force
      merge-recursive: use fspathcmp() in path_hashmap_cmp()
      range-diff: avoid segfault with -I
      setup: use xopen and xdup in sanitize_stdfds
      refs/files-backend: remove unused open mode parameter
      index-pack: use xopen in init_thread
      oidset: make oidset_size() an inline function
      midx: inline nth_midxed_pack_entry()
      packfile: convert mark_bad_packed_object() to object_id
      packfile: convert has_packed_and_bad() to object_id
      packfile: use oidset for bad objects
      compression: drop write-only core_compression_* variables
      packfile: release bad_objects in close_pack()
      test-mergesort: use strbuf_getline()
      test-mergesort: add sort subcommand
      test-mergesort: add test subcommand
      test-mergesort: add generate subcommand
      test-mergesort: add unriffle mode
      test-mergesort: add unriffle_skewed mode
      p0071: measure sorting of already sorted and reversed files
      p0071: test performance of llist_mergesort()
      mergesort: use ranks stack
      p3400: stop using tac(1)
      t3905: show failure to ignore sub-repo
      read-cache: add verify_path_internal()
      read-cache: let verify_path() reject trailing dir separators again
      test-mergesort: use repeatable random numbers
      perf: disable automatic housekeeping
      add: don't write objects with --dry-run
      gpg-interface: handle missing " with " gracefully in parse_ssh_output()
      gpg-interface: avoid buffer overrun in parse_ssh_output()

Robert Estelle (1):
      completion: fix incorrect bash/zsh string equality check

SZEDER Gábor (12):
      Makefile: remove archives before manipulating them with 'ar'
      column: fix parsing of the '--nl' option
      test-lib: set GIT_CEILING_DIRECTORIES to protect the surrounding repository
      t1600-index: remove unnecessary redirection
      t1600-index: don't run git commands upstream of a pipe
      t1600-index: disable GIT_TEST_SPLIT_INDEX
      read-cache: look for shared index files next to the index, too
      tests: disable GIT_TEST_SPLIT_INDEX for sparse index tests
      read-cache: fix GIT_TEST_SPLIT_INDEX
      commit-graph: fix bogus counter in "Scanning merged commits" progress line
      entry: show finer-grained counter in "Filtering content" progress line
      command-list.txt: remove 'sparse-index' from main help

Sergey Organov (1):
      diff-index: restore -c/--cc options handling

Takashi Iwai (1):
      completion: tcsh: Fix regression by drop of wrapper functions

Tal Kelrich (1):
      fast-export: fix anonymized tag using original length

Tanushree Tumane (1):
      bisect--helper: reimplement `bisect_run` shell function in C

Tassilo Horn (1):
      userdiff: improve java hunk header regex

Taylor Blau (55):
      pack-bitmap.c: harden 'test_bitmap_walk()' to check type bitmaps
      pack-bitmap-write.c: gracefully fail to write non-closed bitmaps
      pack-bitmap-write.c: free existing bitmaps
      Documentation: describe MIDX-based bitmaps
      object-store.h: teach for_each_packed_object to ignore kept packs
      builtin/pack-objects.c: simplify add_objects_in_unpacked_packs()
      builtin/pack-objects.c: remove duplicate hash lookup
      midx: disallow running outside of a repository
      midx: fix `*.rev` cleanups with `--object-dir`
      midx: clear auxiliary .rev after replacing the MIDX
      midx: reject empty `--preferred-pack`'s
      midx: infer preferred pack when not given one
      midx: close linked MIDXs, avoid leaking memory
      midx: avoid opening multiple MIDXs when writing
      pack-bitmap.c: introduce 'bitmap_num_objects()'
      pack-bitmap.c: introduce 'nth_bitmap_object_oid()'
      pack-bitmap.c: introduce 'bitmap_is_preferred_refname()'
      pack-bitmap.c: avoid redundant calls to try_partial_reuse
      pack-bitmap: read multi-pack bitmaps
      pack-bitmap: write multi-pack bitmaps
      t5310: move some tests to lib-bitmap.sh
      t/helper/test-read-midx.c: add --checksum mode
      t5326: test multi-pack bitmap behavior
      t5319: don't write MIDX bitmaps in t5319
      t7700: update to work with MIDX bitmap test knob
      midx: respect 'GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP'
      p5310: extract full and partial bitmap tests
      p5326: perf tests for MIDX bitmaps
      bulk-checkin.c: store checksum directly
      pack-write.c: rename `.idx` files after `*.rev`
      builtin/repack.c: move `.idx` files into place last
      builtin/index-pack.c: move `.idx` files into place last
      t/helper/test-bitmap.c: add 'dump-hashes' mode
      pack-bitmap.c: propagate namehash values from existing bitmaps
      midx.c: respect 'pack.writeBitmapHashcache' when writing bitmaps
      p5326: create missing 'perf-tag' tag
      p5326: don't set core.multiPackIndex unnecessarily
      p5326: generate pack bitmaps before writing the MIDX bitmap
      t5326: test propagating hashcache values
      builtin/commit-graph.c: don't accept common --[no-]progress
      builtin/multi-pack-index.c: disable top-level --[no-]progress
      midx: expose `write_midx_file_only()` publicly
      builtin/multi-pack-index.c: support `--stdin-packs` mode
      midx: preliminary support for `--refs-snapshot`
      builtin/repack.c: keep track of existing packs unconditionally
      builtin/repack.c: rename variables that deal with non-kept packs
      builtin/repack.c: extract showing progress to a variable
      builtin/repack.c: support writing a MIDX while repacking
      builtin/repack.c: make largest pack preferred
      builtin/repack.c: pass `--refs-snapshot` when writing bitmaps
      t/perf/aggregate.perl: tolerate leading spaces
      midx.c: extract MIDX lookup by object_dir
      midx.c: lookup MIDX by object directory during expire
      midx.c: lookup MIDX by object directory during repack
      midx.c: guard against commit_lock_file() failures

Teng Long (1):
      list-objects.c: rename "traverse_trees_and_blobs" to "traverse_non_commits"

Todd Zullinger (1):
      doc: add bundle-format to TECH_DOCS

USAMI Kenta (1):
      userdiff: support enum keyword in PHP hunk header

Wesley Schwengle (1):
      Document `rebase.forkpoint` in rebase man page

ZheNing Hu (6):
      ref-filter: add obj-type check in grab contents
      ref-filter: add %(raw) atom
      ref-filter: --format=%(raw) support --perl
      ref-filter: use non-const ref_format in *_atom_parser()
      ref-filter: add %(rest) atom
      cherry-pick: use better advice message

Zoker (1):
      doc: fix syntax error and the format of printf

brian m. carlson (1):
      t5607: avoid using prerequisites to select algorithm

Ævar Arnfjörð Bjarmason (224):
      pack-objects tests: cover blindspots in stdin handling
      Makefile: move ".PHONY: cscope" near its target
      Makefile: add QUIET_GEN to "cscope" target
      pack-objects: fix segfault in --stdin-packs option
      test-lib tests: move "run_sub_test" to a new lib-subtest.sh
      Makefile: don't use "FORCE" for tags targets
      http: drop support for curl < 7.19.3 and < 7.17.0 (again)
      http: rename CURLOPT_FILE to CURLOPT_WRITEDATA
      bundle doc: elaborate on object prerequisites
      bundle doc: elaborate on rev<->ref restriction
      bundle doc: rewrite the "DESCRIPTION" section
      bundle doc: replace "basis" with "prerequsite(s)"
      serve: mark has_capability() as static
      transport: rename "fetch" in transport_vtable to "fetch_refs"
      transport: use designated initializers
      serve: use designated initializers
      serve.[ch]: don't pass "struct strvec *keys" to commands
      serve: move transfer.advertiseSID check into session_id_advertise()
      serve.c: move version line to advertise_capabilities()
      {upload,receive}-pack tests: add --advertise-refs tests
      serve.[ch]: remove "serve_options", split up --advertise-refs code
      upload-pack: document and rename --advertise-refs
      Makefile: remove "cscope.out", not "cscope*" in cscope.out target
      Makefile: normalize clobbering & xargs for tags targets
      refs/packet: add missing BUG() invocations to reflog callbacks
      refs/files: remove unused REF_DELETING in lock_ref_oid_basic()
      ls-remote: set packet_trace_identity(<name>)
      rebase: emit one "fatal" in "fatal: fatal: <error>"
      advice: remove use of global advice_add_embedded_repo
      advice: move advice.graftFileDeprecated squashing to commit.[ch]
      refs/files: remove unused "extras/skip" in lock_ref_oid_basic()
      refs/files: remove unused "skip" in lock_raw_ref() too
      refs/debug: re-indent argument list for "prepare"
      refs: make repo_dwim_log() accept a NULL oid
      refs/files: add a comment about refs_reflog_exists() call
      reflog expire: don't lock reflogs using previously seen OID
      refs API: remove OID argument to reflog_expire()
      refs/files: remove unused "oid" in lock_ref_oid_basic()
      refs/files: remove unused "errno == EISDIR" code
      refs/files: remove unused "errno != ENOTDIR" condition
      refs file backend: move raceproof_create_file() here
      bundle API: start writing API documentation
      commit-graph: define common usage with a macro
      commit-graph: remove redundant handling of -h
      commit-graph: use parse_options_concat()
      multi-pack-index: refactor "goto usage" pattern
      commit-graph: early exit to "usage" on !argc
      commit-graph: show usage on "commit-graph [write|verify] garbage"
      commit-graph: show "unexpected subcommand" error
      protocol-caps.c: fix memory leak in send_info()
      mailmap.c: fix a memory leak in free_mailap_{info,entry}()
      gc: remove trailing dot from "gc.log" line
      gettext: remove optional non-standard parens in N_() definition
      bundle API: change "flags" to be "extra_index_pack_args"
      index-pack: add --progress-title option
      bundle: show progress on "unbundle"
      tr2: remove NEEDSWORK comment for "non-procfs" implementations
      tr2: clarify TRACE2_PROCESS_INFO_EXIT comment under Linux
      tr2: stop leaking "thread_name" memory
      tr2: leave the parent list empty upon failure & don't leak memory
      tr2: do compiler enum check in trace2_collect_process_info()
      tr2: log N parent process names on Linux
      send-email: fix a "first config key wins" regression in v2.33.0
      Makefile: remove the check_bindir script
      pack-write: skip *.rev work when not writing *.rev
      pack.h: line-wrap the definition of finish_tmp_packfile()
      pack-write: refactor renaming in finish_tmp_packfile()
      index-pack: refactor renaming in final()
      pack-write: split up finish_tmp_packfile() function
      pack-objects: rename .idx files into place after .bitmap files
      help: correct the usage string in -h and documentation
      INSTALL: don't mention the "curl" executable at all
      INSTALL: reword and copy-edit the "libcurl" section
      git-submodule: remove unused is_zero_oid() function
      git-sh-setup: remove unused "pull with rebase" message
      git-bisect: remove unused SHA-1 $x40 shell variable
      test-lib: remove unused $_x40 and $_z40 variables
      test-tool run-command: fix flip-flop init pattern
      gc: remove unused launchctl_get_uid() call
      parse-options API users: align usage output in C-strings
      send-pack: properly use parse_options() API for usage string
      git rev-parse --parseopt tests: add more usagestr tests
      difftool: prepare "struct child_process" in cmd_difftool()
      difftool: use run_command() API in run_file_diff()
      parse-options API: remove OPTION_ARGUMENT feature
      INSTALL: mention that we need libcurl 7.19.4 or newer to build
      Makefile: drop support for curl < 7.9.8 (again)
      http: drop support for curl < 7.18.0 (again)
      http: correct version check for CURL_HTTP_VERSION_2
      http: correct curl version check for CURLOPT_PINNEDPUBLICKEY
      http: centralize the accounting of libcurl dependencies
      http: don't hardcode the value of CURL_SOCKOPT_OK
      wrapper.c: add x{un,}setenv(), and use xsetenv() in environment.c
      environment.c: remove test-specific "ignore_untracked..." variable
      read-cache & fetch-negotiator: check "enum" values in switch()
      repo-settings.c: simplify the setup
      repository.h: don't use a mix of int and bitfields
      Makefile: clean .depend dirs under COMPUTE_HEADER_DEPENDENCIES != yes
      parse-options: properly align continued usage output
      test-lib tests: split up "write and run" into two functions
      test-lib tests: don't provide a description for the sub-tests
      test-lib tests: avoid subshell for "test_cmp" for readability
      test-lib tests: refactor common part of check_sub_test_lib_test*()
      test-lib tests: assert 1 exit code, not non-zero
      test-lib tests: get rid of copy/pasted mock test code
      Makefile: make the "sparse" target non-.PHONY
      Makefile: make COMPUTE_HEADER_DEPENDENCIES=auto work with DEVOPTS=pedantic
      help: correct usage & behavior of "git help --guides"
      help tests: add test for --config output
      help: correct logic error in combining --all and --config
      help: correct logic error in combining --all and --guides
      help: simplify by moving to OPT_CMDMODE()
      help tests: test --config-for-completion option & output
      help / completion: make "git help" do the hard work
      help: move column config discovery to help.c library
      Makefile: add SANITIZE=leak flag to GIT-BUILD-OPTIONS
      tests: add a test mode for SANITIZE=leak, run it in CI
      bundle: remove ignored & undocumented "--verbose" flag
      Makefile: mark "check" target as .PHONY
      Makefile: stop hardcoding {command,config}-list.h
      Makefile: don't perform "mv $@+ $@" dance for $(GENERATED_H)
      Makefile: remove an out-of-date comment
      hook.[ch]: move find_hook() from run-command.c to hook.c
      hook.c users: use "hook_exists()" instead of "find_hook()"
      hook-list.h: add a generated list of hooks, like config-list.h
      http: check CURLE_SSL_PINNEDPUBKEYNOTMATCH when emitting errors
      Makefile: pass -Wno-pendantic under GENERATE_COMPILATION_DATABASE=yes
      submodule-config.h: remove unused SUBMODULE_INIT macro
      *.[ch] *_INIT macros: use { 0 } for a "zero out" idiom
      *.h _INIT macros: don't specify fields equal to 0
      *.h: move some *_INIT to designated initializers
      cbtree.h: define cb_init() in terms of CBTREE_INIT
      daemon.c: refactor hostinfo_init() to HOSTINFO_INIT macro
      builtin/blame.c: refactor commit_info_init() to COMMIT_INFO_INIT macro
      string-list.[ch]: remove string_list_init() compatibility function
      config.c: remove unused git_config_key_is_valid()
      refs.[ch]: remove unused ref_storage_backend_exists()
      refs/ref-cache.[ch]: remove unused remove_entry_from_dir()
      refs/ref-cache.[ch]: remove unused add_ref_entry()
      refs/ref-cache.c: remove "mkdir" parameter from find_containing_dir()
      refs/ref-cache.[ch]: remove "incomplete" from create_dir_entry()
      parse-options.h: move PARSE_OPT_SHELL_EVAL between enums
      urlmatch.[ch]: add and use URLMATCH_CONFIG_INIT
      builtin/remote.c: add and use a REF_STATES_INIT
      builtin/remote.c: add and use SHOW_INFO_INIT
      builtin.h: remove cmd_tar_tree() declaration
      grep.h: remove unused grep_threads_ok() declaration
      log-tree.h: remove unused function declarations
      config.h: remove unused git_config_get_untracked_cache() declaration
      fsck tests: add test for fsck-ing an unknown type
      fsck tests: refactor one test to use a sub-repo
      fsck tests: test current hash/type mismatch behavior
      fsck tests: test for garbage appended to a loose object
      cat-file tests: move bogus_* variable declarations earlier
      cat-file tests: test for missing/bogus object with -t, -s and -p
      cat-file tests: add corrupt loose object test
      cat-file tests: test for current --allow-unknown-type behavior
      object-file.c: don't set "typep" when returning non-zero
      object-file.c: return -1, not "status" from unpack_loose_header()
      object-file.c: make parse_loose_header_extended() public
      object-file.c: simplify unpack_loose_short_header()
      object-file.c: use "enum" return type for unpack_loose_header()
      object-file.c: return ULHR_TOO_LONG on "header too long"
      object-file.c: stop dying in parse_loose_header()
      fsck: don't hard die on invalid object types
      fsck: report invalid object type-path combinations
      unpack-trees: don't leak memory in verify_clean_subdirectory()
      tests: fix a memory leak in test-prio-queue.c
      tests: fix a memory leak in test-parse-options.c
      tests: fix a memory leak in test-oidtree.c
      tests: fix test-oid-array leak, test in SANITIZE=leak
      ls-files: fix a trivial dir_clear() leak
      ls-files: add missing string_list_clear()
      merge: add missing strbuf_release()
      parse-options.[ch]: consistently use "enum parse_opt_flags"
      parse-options.[ch]: consistently use "enum parse_opt_result"
      parse-options.c: use exhaustive "case" arms for "enum parse_opt_result"
      parse-options.h: make the "flags" in "struct option" an enum
      parse-options.c: move optname() earlier in the file
      commit-graph: stop using optname()
      parse-options.[ch]: make opt{bug,name}() "static"
      parse-options tests: test optname() output
      parse-options: change OPT_{SHORT,UNSET} to an enum
      unwritable tests: assert exact error output
      commit: fix duplication regression in permission error output
      leak tests: run various built-in tests in t00*.sh SANITIZE=leak
      leak tests: run various "test-tool" tests in t00*.sh SANITIZE=leak
      leak tests: mark all ls-tree tests as passing with SANITIZE=leak
      leak tests: mark all trace2 tests as passing with SANITIZE=leak
      leak tests: mark all checkout-index tests as passing with SANITIZE=leak
      leak tests: mark some ls-files tests as passing with SANITIZE=leak
      leak tests: mark some read-tree tests as passing with SANITIZE=leak
      leak tests: mark various "generic" tests as passing with SANITIZE=leak
      leak tests: mark some misc tests as passing with SANITIZE=leak
      sequencer: add a "goto cleanup" to do_reset()
      sequencer: fix a memory leak in do_reset()
      test-lib.sh: de-duplicate error() teardown code
      test-lib.sh: use "Bail out!" syntax on bad SANITIZE=leak use
      test-lib.sh: try to re-chmod & retry on failed trash removal
      commit-graph tests: fix error-hiding graph_git_two_modes() helper
      commit-graph tests: fix another graph_git_two_modes() helper
      commit-graph: don't consider "replace" objects with "verify"
      "lib-diff" tests: make "README" and "COPYING" test data smaller
      tests: stop using top-level "README" and "COPYING" files
      doc lint: fix error-hiding regression
      doc lint: emit errors on STDERR
      doc build: speed up "make lint-docs"
      doc lint: make "lint-docs" non-.PHONY
      pkt-line.[ch]: remove unused packet_buf_write_len()
      pkt-line.[ch]: remove unused packet_read_line_buf()
      git config doc: fix recent ASCIIDOC formatting regression
      tag: use a "goto cleanup" pattern, leak less memory
      ref-filter API user: add and use a ref_sorting_release()
      branch: use ref_sorting_release()
      git-sh-i18n: remove unused eval_ngettext()
      git-sh-setup: remove messaging supporting --preserve-merges
      Makefile: remove redundant GIT-CFLAGS dependency from "sparse"
      config.c: don't leak memory in handle_path_include()
      grep: prefer "struct grep_opt" over its "void *" equivalent
      grep: use object_array_clear() in cmd_grep()
      grep: fix a "path_list" memory leak
      clone: fix a memory leak of the "git_dir" variable
      submodule--helper: fix small memory leaks
      reflog: free() ref given to us by dwim_log()

Đoàn Trần Công Danh (3):
      t6300: don't run cat-file on non-existent object
      t6300: check for cat-file exit status code
      diff-lib: ignore paths that are outside $cwd if --relative asked


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.34.0-rc0
@ 2021-10-30  0:17  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-10-30  0:17 UTC (permalink / raw)
  To: git; +Cc: git-packagers

An early preview release Git v2.34.0-rc0 is now available for
testing at the usual places.  It is comprised of 760 non-merge
commits since v2.33.0, contributed by 86 people, 25 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.34.0-rc0' 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.33.0 are as follows.
Welcome to the Git development community!

  Alan Blotz, Azeem Bande-Ali, Dr. Matthias St. Pierre, Eli
  Schwartz, git.mexon@spamgourmet.com, Glen Choo, Joel Klinghed,
  Johannes Altmanninger, Kim Altintop, Kyle Zhao, Mahi Kolla,
  Marvin Häuser, Mickey Endito, Rob Browning, Robert Estelle,
  Robert Leftwich, Tal Kelrich, Tassilo Horn, Thomas De Zeeuw,
  USAMI Kenta, Victor Gambier, Victoria Dye, Wesley Schwengle,
  Xingman Chen, and Zoker.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alban Gruin, Alex Henrie, Andrzej
  Hunt, Atharva Raykar, Bagas Sanjaya, Ben Boeckel, brian
  m. carlson, Carlo Arenas, Carlo Marcelo Arenas Belón, Christian
  Couder, David Aguilar, David Turner, Derrick Stolee, Đoàn
  Trần Công Danh, Elijah Newren, Emily Shaffer, Eric Sunshine,
  Eric Wong, Fabian Stelzer, Felipe Contreras, Greg Hurrell,
  Han-Wen Nienhuys, Hariom Verma, Jacob Keller, Jacob Vosmaer,
  Jeff Hostetler, Jeff King, Jiang Xin, Johannes Schindelin,
  Johannes Sixt, Jonathan Nieder, Jonathan Tan, Josh Steadmon,
  Junio C Hamano, Kaartic Sivaraam, Lénaïc Huard, Martin Ågren,
  Matheus Tavares, Matheus Tavares Bernardino, Matthias Aßhauer,
  Mike Hommey, Miriam Rubio, Orgad Shaneh, Patrick Steinhardt,
  Philip Oakley, Philippe Blain, Phillip Wood, Pranit Bauva,
  Randall S. Becker, René Scharfe, Sergey Organov, Shourya Shukla,
  SZEDER Gábor, Takashi Iwai, Tanushree Tumane, Taylor Blau,
  Teng Long, Todd Zullinger, Ulrich Windl, and ZheNing Hu.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git 2.34 Release Notes (draft)
==============================

Updates since Git 2.33
----------------------

Backward compatibility notes

 * The "--preserve-merges" option of "git rebase" has been removed.


UI, Workflows & Features

 * Pathname expansion (like "~username/") learned a way to specify a
   location relative to Git installation (e.g. its $sharedir which is
   $(prefix)/share), with "%(prefix)".

 * Use `ort` instead of `recursive` as the default merge strategy.

 * The userdiff pattern for "java" language has been updated.

 * "git rebase" by default skips changes that are equivalent to
   commits that are already in the history the branch is rebased onto;
   give messages when this happens to let the users be aware of
   skipped commits, and also teach them how to tell "rebase" to keep
   duplicated changes.

 * The advice message that "git cherry-pick" gives when it asks
   conflicted replay of a commit to be resolved by the end user has
   been updated.

 * After "git clone --recurse-submodules", all submodules are cloned
   but they are not by default recursed into by other commands.  With
   submodule.stickyRecursiveClone configuration set, submodule.recurse
   configuration is set to true in a repository created by "clone"
   with "--recurse-submodules" option.

 * The logic for auto-correction of misspelt subcommands learned to go
   interactive when the help.autocorrect configuration variable is set
   to 'prompt'.

 * "git maintenance" scheduler learned to use systemd timers as a
   possible backend.

 * "git diff --submodule=diff" showed failure from run_command() when
   trying to run diff inside a submodule, when the user manually
   removes the submodule directory.

 * "git bundle unbundle" learned to show progress display.

 * In cone mode, the sparse-index code path learned to remove ignored
   files (like build artifacts) outside the sparse cone, allowing the
   entire directory outside the sparse cone to be removed, which is
   especially useful when the sparse patterns change.

 * Taking advantage of the CGI interface, http-backend has been
   updated to enable protocol v2 automatically when the other side
   asks for it.

 * The credential-cache helper has been adjusted to Windows.

 * The error in "git help no-such-git-command" is handled better.

 * The unicode character width table (used for output alignment) has
   been updated.

 * The ref iteration code used to optionally allow dangling refs to be
   shown, which has been tightened up.

 * "git add", "git mv", and "git rm" have been adjusted to avoid
   updating paths outside of the sparse-checkout definition unless
   the user specifies a "--sparse" option.

 * "git repack" has been taught to generate multi-pack reachability
   bitmaps.

 * "git fsck" has been taught to report mismatch between expected and
   actual types of an object better.

 * Use ssh public crypto for object and push-cert signing.


Performance, Internal Implementation, Development Support etc.

 * "git bisect" spawned "git show-branch" only to pretty-print the
   title of the commit after checking out the next version to be
   tested; this has been rewritten in C.

 * "git add" can work better with the sparse index.

 * Support for ancient versions of cURL library (pre 7.19.4) has been
   dropped.

 * A handful of tests that assumed implementation details of files
   backend for refs have been cleaned up.

 * trace2 logs learned to show parent process name to see in what
   context Git was invoked.

 * Loading of ref tips to prepare for common ancestry negotiation in
   "git fetch-pack" has been optimized by taking advantage of the
   commit graph when available.

 * Remind developers that the userdiff patterns should be kept simple
   and permissive, assuming that the contents they apply are always
   syntactically correct.

 * The current implementation of GIT_TEST_FAIL_PREREQS is broken in
   that checking for the lack of a prerequisite would not work.  Avoid
   the use of "if ! test_have_prereq X" in a test script.

 * The revision traversal API has been optimized by taking advantage
   of the commit-graph, when available, to determine if a commit is
   reachable from any of the existing refs.

 * "git fetch --quiet" optimization to avoid useless computation of
   info that will never be displayed.

 * Callers from older advice_config[] based API has been updated to
   use the newer advice_if_enabled() and advice_enabled() API.

 * Teach "test_pause" and "debug" helpers to allow using the HOME and
   TERM environment variables the user usually uses.

 * "make INSTALL_STRIP=-s install" allows the installation step to use
   "install -s" to strip the binaries as they get installed.

 * Code that handles large number of refs in the "git fetch" code
   path has been optimized.

 * The reachability bitmap file used to be generated only for a single
   pack, but now we've learned to generate bitmaps for history that
   span across multiple packfiles.

 * The code to make "git grep" recurse into submodules has been
   updated to migrate away from the "add submodule's object store as
   an alternate object store" mechanism (which is suboptimal).

 * The tracing of process ancestry information has been enhanced.

 * Reduce number of write(2) system calls while sending the
   ref advertisement.

 * Update the build procedure to use the "-pedantic" build when
   DEVELOPER makefile macro is in effect.

 * Large part of "git submodule add" gets rewritten in C.

 * The run-command API has been updated so that the callers can easily
   ask the file descriptors open for packfiles to be closed immediately
   before spawning commands that may trigger auto-gc.

 * An oddball OPTION_ARGUMENT feature has been removed from the
   parse-options API.

 * The mergesort implementation used to sort linked list has been
   optimized.

 * Remove external declaration of functions that no longer exist.

 * "git multi-pack-index write --bitmap" learns to propagate the
   hashcache from original bitmap to resulting bitmap.

 * CI learns to run the leak sanitizer builds.

 * "git grep --recurse-submodules" takes trees and blobs from the
   submodule repository, but the textconv settings when processing a
   blob from the submodule is not taken from the submodule repository.
   A test is added to demonstrate the issue, without fixing it.

 * Teach "git help -c" into helping the command line completion of
   configuration variables.

 * When "git cmd -h" shows more than one line of usage text (e.g.
   the cmd subcommand may take sub-sub-command), parse-options API
   learned to align these lines, even across i18n/l10n.

 * Prevent "make sparse" from running for the source files that
   haven't been modified.

 * The codepath to write a new version of .midx multi-pack index files
   has learned to release the mmaped memory holding the current
   version of .midx before removing them from the disk, as some
   platforms do not allow removal of a file that still has mapping.

 * A new feature has been added to abort early in the test framework.


Fixes since v2.33
-----------------

 * Input validation of "git pack-objects --stdin-packs" has been
   corrected.

 * Bugfix for common ancestor negotiation recently introduced in "git
   push" code path.

 * "git pull" had various corner cases that were not well thought out
   around its --rebase backend, e.g. "git pull --ff-only" did not stop
   but went ahead and rebased when the history on other side is not a
   descendant of our history.  The series tries to fix them up.

 * "git apply" miscounted the bytes and failed to read to the end of
   binary hunks.

 * "git range-diff" code clean-up.

 * "git commit --fixup" now works with "--edit" again, after it was
   broken in v2.32.

 * Use upload-artifacts v1 (instead of v2) for 32-bit linux, as the
   new version has a blocker bug for that architecture.

 * Checking out all the paths from HEAD during the last conflicted
   step in "git rebase" and continuing would cause the step to be
   skipped (which is expected), but leaves MERGE_MSG file behind in
   $GIT_DIR and confuses the next "git commit", which has been
   corrected.

 * Various bugs in "git rebase -r" have been fixed.

 * mmap() imitation used to call xmalloc() that dies upon malloc()
   failure, which has been corrected to just return an error to the
   caller to be handled.

 * "git diff --relative" segfaulted and/or produced incorrect result
   when there are unmerged paths.

 * The delayed checkout code path in "git checkout" etc. were chatty
   even when --quiet and/or --no-progress options were given.

 * "git branch -D <branch>" used to refuse to remove a broken branch
   ref that points at a missing commit, which has been corrected.

 * Build update for Apple clang.

 * The parser for the "--nl" option of "git column" has been
   corrected.

 * "git upload-pack" which runs on the other side of "git fetch"
   forgot to take the ref namespaces into account when handling
   want-ref requests.

 * The sparse-index support can corrupt the index structure by storing
   a stale and/or uninitialized data, which has been corrected.

 * Buggy tests could damage repositories outside the throw-away test
   area we created.  We now by default export GIT_CEILING_DIRECTORIES
   to limit the damage from such a stray test.

 * Even when running "git send-email" without its own threaded
   discussion support, a threading related header in one message is
   carried over to the subsequent message to result in an unwanted
   threading, which has been corrected.

 * The output from "git fast-export", when its anonymization feature
   is in use, showed an annotated tag incorrectly.

 * Doc update plus improved error reporting.

 * Recent "diff -m" changes broke "gitk", which has been corrected.

 * Regression fix.

 * The "git apply -3" code path learned not to bother the lower level
   merge machinery when the three-way merge can be trivially resolved
   without the content level merge.  This fixes a regression caused by
   recent "-3way first and fall back to direct application" change.

 * The code that optionally creates the *.rev reverse index file has
   been optimized to avoid needless computation when it is not writing
   the file out.

 * "git range-diff -I... <range> <range>" segfaulted, which has been
   corrected.

 * The order in which various files that make up a single (conceptual)
   packfile has been reevaluated and straightened up.  This matters in
   correctness, as an incomplete set of files must not be shown to a
   running Git.

 * The "mode" word is useless in a call to open(2) that does not
   create a new file.  Such a call in the files backend of the ref
   subsystem has been cleaned up.

 * "git update-ref --stdin" failed to flush its output as needed,
   which potentially led the conversation to a deadlock.

 * When "git am --abort" fails to abort correctly, it still exited
   with exit status of 0, which has been corrected.

 * Correct nr and alloc members of strvec struct to be of type size_t.

 * "git stash", where the tentative change involves changing a
   directory to a file (or vice versa), was confused, which has been
   corrected.

 * "git clone" from a repository whose HEAD is unborn into a bare
   repository didn't follow the branch name the other side used, which
   is corrected.

 * "git cvsserver" had a long-standing bug in its authentication code,
   which has finally been corrected (it is unclear and is a separate
   question if anybody is seriously using it, though).

 * "git difftool --dir-diff" mishandled symbolic links.

 * Sensitive data in the HTTP trace were supposed to be redacted, but
   we failed to do so in HTTP/2 requests.

 * "make clean" has been updated to remove leftover .depend/
   directories, even when it is not told to use them to compute header
   dependencies.

 * Protocol v0 clients can get stuck parsing a malformed feature line.

 * A few kinds of changes "git status" can show were not documented.
   (merge d2a534c515 ja/doc-status-types-and-copies later to maint).

 * The mergesort implementation used to sort linked list has been
   optimized.
   (merge c90cfc225b rs/mergesort later to maint).

 * An editor session launched during a Git operation (e.g. during 'git
   commit') can leave the terminal in a funny state.  The code path
   has updated to save the terminal state before, and restore it
   after, it spawns an editor.
   (merge 3d411afabc cm/save-restore-terminal later to maint).

 * "git cat-file --batch" with the "--batch-all-objects" option is
   supposed to iterate over all the objects found in a repository, but
   it used to translate these object names using the replace mechanism,
   which defeats the point of enumerating all objects in the repository.
   This has been corrected.
   (merge bf972896d7 jk/cat-file-batch-all-wo-replace later to maint).

 * Recent sparse-index work broke safety against attempts to add paths
   with trailing slashes to the index, which has been corrected.
   (merge c8ad9d04c6 rs/make-verify-path-really-verify-again later to maint).

 * The "--color-lines" and "--color-by-age" options of "git blame"
   have been missing, which are now documented.
   (merge 8c32856133 bs/doc-blame-color-lines later to maint).

 * The PATH used in CI job may be too wide and let incompatible dlls
   to be grabbed, which can cause the build&test to fail.  Tighten it.
   (merge 7491ef6198 js/windows-ci-path-fix later to maint).

 * Avoid performance measurements from getting ruined by gc and other
   housekeeping pauses interfering in the middle.
   (merge be79131a53 rs/disable-gc-during-perf-tests later to maint).

 * Stop "git add --dry-run" from creating new blob and tree objects.
   (merge e578d0311d rs/add-dry-run-without-objects later to maint).

 * "git commit" gave duplicated error message when the object store
   was unwritable, which has been corrected.
   (merge 4ef91a2d79 ab/fix-commit-error-message-upon-unwritable-object-store later to maint).

 * Recent sparse-index addition, namely any use of index_name_pos(),
   can expand sparse index entries and breaks any code that walks
   cache-tree or existing index entries.  One such instance of such a
   breakage has been corrected.

 * The xxdiff difftool backend can exit with status 128, which the
   difftool-helper that launches the backend takes as a significant
   failure, when it is not significant at all.  Work it around.
   (merge 571f4348dd da/mergetools-special-case-xxdiff-exit-128 later to maint).

 * Improve test framework around unwritable directories.
   (merge 5d22e18965 ab/test-cleanly-recreate-trash-directory later to maint).

 * "git push" client talking to an HTTP server did not diagnose the
   lack of the final status report from the other side correctly,
   which has been corrected.
   (merge c5c3486f38 jk/http-push-status-fix later to maint).

 * Update "git archive" documentation and give explicit mention on the
   compression level for both zip and tar.gz format.
   (merge c4b208c309 bs/archive-doc-compression-level later to maint).

 * Drop "git sparse-index" from the list of common commands.
   (merge 6a9a50a8af sg/sparse-index-not-that-common-a-command later to maint).

 * "git branch -c/-m new old" was not described to copy config, which
   has been corrected.
   (merge 8252ec300e jc/branch-copy-doc later to maint).

 * Squelch over-eager warning message added during this cycle.
   (merge 9e8fe7b1c7 jk/log-warn-on-bogus-encoding later to maint).

 * Fix long-standing shell syntax error in the completion script.
   (merge 46b0585286 re/completion-fix-test-equality later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge f188160be9 ab/bundle-remove-verbose-option later to maint).
   (merge 8c6b4332b4 rs/close-pack-leakfix later to maint).
   (merge 51b04c05b7 bs/difftool-msg-tweak later to maint).
   (merge dd20e4a6db ab/make-compdb-fix later to maint).
   (merge 6ffb990dc4 os/status-docfix later to maint).
   (merge 100c2da2d3 rs/p3400-lose-tac later to maint).
   (merge 76f3b69896 tb/aggregate-ignore-leading-whitespaces later to maint).
   (merge 6e4fd8bfcd tz/doc-link-to-bundle-format-fix later to maint).
   (merge f6c013dfa1 jc/doc-commit-header-continuation-line later to maint).
   (merge ec9a37d69b ab/pkt-line-cleanup later to maint).
   (merge 8650c6298c ab/fix-make-lint-docs later to maint).
   (merge 1c720357ce ab/test-lib-diff-cleanup later to maint).
   (merge 6b615dbece ks/submodule-add-message-fix later to maint).
   (merge 82a57cd13f ma/doc-git-version later to maint).

----------------------------------------------------------------

Changes since v2.33.0 are as follows:

Alex Henrie (1):
      pull: abort if --ff-only is given and fast-forwarding is impossible

Andrzej Hunt (1):
      connect: also update offset for features without values

Atharva Raykar (11):
      submodule--helper: introduce add-config subcommand
      submodule--helper: add options for compute_submodule_clone_url()
      submodule--helper: refactor resolve_relative_url() helper
      submodule--helper: remove repeated code in sync_submodule()
      dir: libify and export helper functions from clone.c
      submodule--helper: convert the bulk of cmd_add() to C
      submodule--helper: remove add-clone subcommand
      submodule--helper: remove add-config subcommand
      submodule--helper: remove resolve-relative-url subcommand
      submodule--helper: rename compute_submodule_clone_url()
      submodule--helper: run update procedures from C

Azeem Bande-Ali (1):
      help.c: help.autocorrect=prompt waits for user action

Bagas Sanjaya (8):
      make: add INSTALL_STRIP option variable
      Documentation: fix default directory of git bugreport -o
      ls-files: use imperative mood for -X and -z option description
      difftool: fix word spacing in the usage strings
      blame: describe default output format
      bisect--helper: add space between colon and following sentence
      blame: document --color-* options
      archive: describe compression level option

Ben Boeckel (2):
      advice: add enum variants for missing advice variables
      advice: remove read uses of most global `advice_` variables

Carlo Marcelo Arenas Belón (23):
      build: update detect-compiler for newer Xcode version
      builtin/merge: avoid -Wformat-extra-args from ancient Xcode
      ci: run a pedantic build as part of the GitHub workflow
      ci: update freebsd 12 cirrus job
      ci: use upload-artifacts v1 for dockerized jobs
      remote: avoid -Wunused-but-set-variable in gcc with -DNDEBUG
      win32: allow building with pedantic mode enabled
      developer: enable pedantic by default
      t0301: fixes for windows compatibility
      credential-cache: check for windows specific errors
      git-compat-util: include declaration for unix sockets in windows
      tree-diff: fix leak when not HAVE_ALLOCA_H
      t0000: avoid masking git exit value through pipes
      git-cvsserver: use crypt correctly to compare password hashes
      git-cvsserver: protect against NULL in crypt(3)
      Documentation: cleanup git-cvsserver
      unicode: update the width tables to Unicode 14
      simple-ipc: move definition of ipc_active_state outside of ifdef
      lazyload.h: use an even more generic function pointer than FARPROC
      Makefile: restrict -Wpedantic and -Wno-pedantic-ms-format better
      terminal: teach git how to save/restore its terminal settings
      editor: save and reset terminal after calling EDITOR
      wrapper: remove xunsetenv()

David Aguilar (6):
      difftool: fix symlink-file writing in dir-diff mode
      difftool: create a tmpdir path without repeated slashes
      difftool: refactor dir-diff to write files using helper functions
      difftool: remove an unnecessary call to strbuf_release()
      difftool: add a missing space to the run_dir_diff() comments
      mergetools/xxdiff: prevent segfaults from stopping difftool

David Turner (3):
      t4060: remove unused variable
      diff --submodule=diff: do not fail on ever-initialied deleted submodules
      diff --submodule=diff: don't print failure message twice

Derrick Stolee (35):
      t1092: test merge conflicts outside cone
      add: allow operating on a sparse-only index
      pathspec: stop calling ensure_full_index
      add: ignore outside the sparse-checkout in refresh()
      add: remove ensure_full_index() with --renormalize
      maintenance: skip bootout/bootstrap when plist is registered
      t7519: rewrite sparse index test
      sparse-index: silently return when not using cone-mode patterns
      unpack-trees: fix nested sparse-dir search
      sparse-index: silently return when cache tree fails
      sparse-index: use WRITE_TREE_MISSING_OK
      sparse-checkout: create helper methods
      attr: be careful about sparse directories
      sparse-index: add SPARSE_INDEX_MEMORY_ONLY flag
      sparse-checkout: clear tracked sparse dirs
      diff: ignore sparse paths in diffstat
      merge: make sparse-aware with ORT
      merge-ort: expand only for out-of-cone conflicts
      t1092: add cherry-pick, rebase tests
      sequencer: ensure full index if not ORT strategy
      sparse-index: integrate with cherry-pick and rebase
      t/perf/run: fix bin-wrappers computation
      t3705: test that 'sparse_entry' is unstaged
      t1092: behavior for adding sparse files
      dir: select directories correctly
      dir: fix pattern matching on dirs
      add: fail when adding an untracked sparse file
      add: skip tracked paths outside sparse-checkout cone
      add: implement the --sparse option
      add: update --chmod to skip sparse paths
      add: update --renormalize to skip sparse paths
      rm: add --sparse option
      rm: skip sparse paths with missing SKIP_WORKTREE
      mv: refuse to move sparse paths
      advice: update message to suggest '--sparse'

Elijah Newren (48):
      t7601: test interaction of merge/rebase/fast-forward flags and options
      t7601: add tests of interactions with multiple merge heads and config
      pull: since --ff-only overrides, handle it first
      pull: make --rebase and --no-rebase override pull.ff=only
      pull: abort by default when fast-forwarding is not possible
      pull: update docs & code for option compatibility with rebasing
      pull: fix handling of multiple heads
      merge-ort: rename str{map,intmap,set}_func()
      diffcore-rename: use a mem_pool for exact rename detection's hashmap
      merge-ort: add pool_alloc, pool_calloc, and pool_strndup wrappers
      merge-ort: set up a memory pool
      merge-ort: switch our strmaps over to using memory pools
      diffcore-rename, merge-ort: add wrapper functions for filepair alloc/dealloc
      merge-ort: store filepairs and filespecs in our mem_pool
      merge-ort: reuse path strings in pool_alloc_filespec
      merge-ort: remove compile-time ability to turn off usage of memory pools
      git-rebase.txt: correct antiquated claims about --rebase-merges
      directory-rename-detection.txt: small updates due to merge-ort optimizations
      Documentation: edit awkward references to `git merge-recursive`
      merge-strategies.txt: update wording for the resolve strategy
      merge-strategies.txt: do not imply using copy detection is desired
      merge-strategies.txt: avoid giving special preference to patience algorithm
      merge-strategies.txt: fix simple capitalization error
      git-rebase.txt: correct out-of-date and misleading text about renames
      merge-strategies.txt: add coverage of the `ort` merge strategy
      Update error message and code comment
      Change default merge backend from recursive to ort
      Update docs for change of default merge backend
      t3903: document a pair of directory/file bugs
      stash: avoid feeding directories to update-index
      stash: restore untracked files AFTER restoring tracked files
      git-am.txt: clarify --abort behavior
      t4151: add a few am --abort tests
      am: fix incorrect exit status on am fail to abort
      tests: remove leftover untracked files
      trace2.h: fix trivial comment typo
      merge-ort: fix completely wrong comment
      t2500: add various tests for nuking untracked files
      checkout, read-tree: fix leak of unpack_trees_options.dir
      read-tree, merge-recursive: overwrite ignored files by default
      unpack-trees: introduce preserve_ignored to unpack_trees_options
      unpack-trees: make dir an internal-only struct
      Remove ignored files by default when they are in the way
      Change unpack_trees' 'reset' flag into an enum
      unpack-trees: avoid nuking untracked dir in way of unmerged file
      unpack-trees: avoid nuking untracked dir in way of locally deleted file
      Comment important codepaths regarding nuking untracked files/dirs
      Documentation: call out commands that nuke untracked files/directories

Emily Shaffer (3):
      tr2: make process info collection platform-generic
      tr2: log parent process name
      hook.c: add a hook_exists() wrapper and use it in bugreport.c

Eric Wong (1):
      doc/technical: update note about core.multiPackIndex

Fabian Stelzer (11):
      ssh signing: preliminary refactoring and clean-up
      ssh signing: add test prereqs
      ssh signing: add ssh key format and signing code
      ssh signing: retrieve a default key from ssh-agent
      ssh signing: provide a textual signing_key_id
      ssh signing: verify signatures using ssh-keygen
      ssh signing: duplicate t7510 tests for commits
      ssh signing: tests for logs, tags & push certs
      ssh signing: test that gpg fails for unknown keys
      ssh signing: fmt-merge-msg tests & config parse
      ssh signing: clarify trustlevel usage in docs

Felipe Contreras (4):
      completion: bash: fix prefix detection in branch.*
      completion: bash: fix for suboptions with value
      completion: bash: fix for multiple dash commands
      completion: bash: add correct suffix in variables

Glen Choo (1):
      MyFirstContribution: Document --range-diff option when writing v2

Greg Hurrell (1):
      gitweb: use HEAD as secondary sort key in git_get_heads_list()

Han-Wen Nienhuys (14):
      t6050: use git-update-ref rather than filesystem access
      t1503: mark symlink test as REFFILES
      t6120: use git-update-ref rather than filesystem access
      t3320: use git-symbolic-ref rather than filesystem access
      t2402: use ref-store test helper to create broken symlink
      t1405: use 'git reflog exists' to check reflog existence
      t1405: mark test for 'git pack-refs' as REFFILES
      t1410: mark test as REFFILES
      t7064: use update-ref -d to remove upstream branch
      t6500: use "ls -1" to snapshot ref database state
      t6001: avoid direct file system access
      refs: remove EINVAL errno output from specification of read_raw_ref_fn
      refs/files-backend: stop setting errno from lock_ref_oid_basic
      refs: make errno output explicit for read_raw_ref_fn

Jacob Vosmaer (2):
      pkt-line: add stdio packet write functions
      upload-pack: use stdio in send_ref callbacks

Jeff Hostetler (8):
      sparse-index: copy dir_hash in ensure_full_index()
      trace2: add trace2_child_ready() to report on background children
      simple-ipc: preparations for supporting binary messages.
      simple-ipc/ipc-win32: add trace2 debugging
      simple-ipc/ipc-win32: add Windows ACL to named pipe
      run-command: create start_bg_command
      t/helper/simple-ipc: convert test-simple-ipc to use start_bg_command
      t/perf/perf-lib.sh: remove test_times.* at the end test_perf_()

Jeff King (72):
      http: drop support for curl < 7.11.1
      http: drop support for curl < 7.16.0
      http: drop support for curl < 7.19.4
      build: clang version may not be followed by extra words
      range-diff: drop useless "offset" variable from read_patches()
      range-diff: handle unterminated lines in read_patches()
      range-diff: use ssize_t for parsed "len" in read_patches()
      apply: keep buffer/size pair in sync when parsing binary hunks
      t5323: drop mentions of "master"
      refs: drop unused "flags" parameter to lock_ref_oid_basic()
      logmsg_reencode(): warn when iconv() fails
      docs: use "character encoding" to refer to commit-object encoding
      t0410: disable GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP
      t5310: disable GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP
      pack-bitmap: drop repository argument from prepare_midx_bitmap_git()
      pack-bitmap: drop bitmap_index argument from try_partial_reuse()
      t5562: use alarm() to interrupt timed child-wait
      t5551: test v2-to-v0 http protocol fallback
      http-backend: handle HTTP_GIT_PROTOCOL CGI variable
      docs/http-backend: mention v2 protocol
      docs/git: discuss server-side config for GIT_PROTOCOL
      docs/protocol-v2: point readers transport config discussion
      strvec: use size_t to store nr and alloc
      difftool: prepare "diff" cmdline in cmd_difftool()
      serve: rename is_command() to parse_command()
      serve: return capability "value" from get_capability()
      serve: add "receive" method for v2 capabilities table
      serve: provide "receive" function for object-format capability
      serve: provide "receive" function for session-id capability
      serve: drop "keys" strvec
      ls-refs: ignore very long ref-prefix counts
      docs/protocol-v2: clarify some ls-refs ref-prefix details
      serve: reject bogus v2 "command=ls-refs=foo"
      serve: reject commands used as capabilities
      ls-refs: reject unknown arguments
      t1400: avoid SIGPIPE race condition on fifo
      clone: handle unborn branch in bare repos
      grep: stop modifying buffer in strip_timestamp
      grep: stop modifying buffer in show_line()
      grep: stop modifying buffer in grep_source_1()
      grep: mark "haystack" buffers as const
      grep: store grep_source buffer as const
      http: match headers case-insensitively when redacting
      t7900: clean up some more broken refs
      t5516: don't use HEAD ref for invalid ref-deletion tests
      t5600: provide detached HEAD for corruption failures
      t5312: drop "verbose" helper
      t5312: create bogus ref as necessary
      t5312: test non-destructive repack
      t5312: be more assertive about command failure
      refs-internal.h: move DO_FOR_EACH_* flags next to each other
      refs-internal.h: reorganize DO_FOR_EACH_* flag documentation
      refs: add DO_FOR_EACH_OMIT_DANGLING_SYMREFS flag
      refs: omit dangling symrefs when using GIT_REF_PARANOIA
      refs: turn on GIT_REF_PARANOIA by default
      repack, prune: drop GIT_REF_PARANOIA settings
      ref-filter: stop setting FILTER_REFS_INCLUDE_BROKEN
      ref-filter: drop broken-ref code entirely
      refs: drop "broken" flag from for_each_fullref_in()
      test-read-midx: fix leak of bitmap_index struct
      t1006: clean up broken objects
      cat-file: mention --unordered along with --batch-all-objects
      cat-file: disable refs/replace with --batch-all-objects
      cat-file: split ordered/unordered batch-all-objects callbacks
      cat-file: use packed_object_info() for --batch-all-objects
      gpg-interface: fix leak of "line" in parse_ssh_output()
      gpg-interface: fix leak of strbufs in get_ssh_key_fingerprint()
      send-pack: complain about "expecting report" with --helper-status
      transport-helper: recognize "expecting report" error from send-pack
      submodule: drop unused sm_name parameter from append_fetch_remotes()
      Documentation/Makefile: fix lint-docs mkdir dependency
      log: document --encoding behavior on iconv() failure

Jiang Xin (1):
      ci: new github-action for git-l10n code review

Joel Klinghed (1):
      commit: restore --edit when combined with --fixup

Johannes Altmanninger (4):
      Documentation/git-status: remove impossible porcelain status DR and DC
      Documentation/diff-format: state in which cases porcelain status is T
      Documentation/git-status: document porcelain status T (typechange)
      Documentation/git-status: mention how to detect copies

Johannes Schindelin (24):
      tests: exercise the RUNTIME_PREFIX feature
      expand_user_path(): remove stale part of the comment
      expand_user_path(): clarify the role of the `real_home` parameter
      Use a better name for the function interpolating paths
      interpolate_path(): allow specifying paths relative to the runtime prefix
      maintenance: create `launchctl` configuration using a lock file
      t5520: do not use `pull.rebase=preserve`
      remote: warn about unhandled branch.<name>.rebase values
      tests: stop testing `git rebase --preserve-merges`
      pull: remove support for `--rebase=preserve`
      rebase: drop support for `--preserve-merges`
      git-svn: drop support for `--preserve-merges`
      rebase: drop the internal `rebase--interactive` command
      rebase: remove obsolete code comment
      rebase: stop mentioning the -p option in comments
      rebase: remove a no-longer-used function
      sequencer: restrict scope of a formerly public function
      commit-graph: when closing the graph, also release the slab
      pull: release packs before fetching
      run-command: prettify the `RUN_COMMAND_*` flags
      run-command: offer to close the object store before running
      run_auto_maintenance(): implicitly close the object store
      Close object store closer to spawning child processes
      ci(windows): ensure that we do not pick up random executables

Johannes Sixt (9):
      t9001: PATH must not use Windows-style paths
      lazyload.h: fix warnings about mismatching function pointer types
      t4034/cpp: actually test that operator tokens are not split
      t4034: add tests showing problematic cpp tokenizations
      userdiff-cpp: tighten word regex
      userdiff-cpp: prepare test cases with yet unsupported features
      userdiff-cpp: permit the digit-separating single-quote in numbers
      userdiff-cpp: learn the C++ spaceship operator
      userdiff-cpp: back out the digit-separators in numbers

Jonathan Tan (22):
      send-pack: fix push.negotiate with remote helper
      send-pack: fix push nego. when remote has refs
      fetch: die on invalid --negotiation-tip hash
      submodule: lazily add submodule ODBs as alternates
      grep: use submodule-ODB-as-alternate lazy-addition
      grep: typesafe versions of grep_source_init
      grep: read submodule entry with explicit repo
      grep: allocate subrepos on heap
      grep: add repository to OID grep sources
      submodule-config: pass repo upon blob config read
      t7814: show lack of alternate ODB-adding
      submodule: remove unnecessary unabsorbed fallback
      repository: support unabsorbed in repo_submodule_init
      revision: remove "submodule" from opt struct
      submodule: extract path to submodule gitdir func
      refs: plumb repo into ref stores
      refs: teach arbitrary repo support to iterators
      refs: peeling non-the_repository iterators is BUG
      merge-{ort,recursive}: remove add_submodule_odb()
      object-file: only register submodule ODB if needed
      submodule: pass repo to check_has_commit()
      submodule: trace adding submodule ODB as alternate

Josh Steadmon (2):
      connect, protocol: log negotiated protocol version
      sequencer: advise if skipping cherry-picked commit

Junio C Hamano (27):
      expand_user_path: allow in-flight topics to keep using the old name
      bisect: do not run show-branch just to show the current commit
      bisect: simplify return code from bisect_checkout()
      build: catch clang that identifies itself as "$VENDOR clang"
      userdiff: comment on the builtin patterns
      The first batch post 2.33
      The second batch
      The third batch
      apply: resolve trivial merge without hitting ll-merge with "--3way"
      hash-object: prefix_filename() returns allocated memory these days
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      The eighth batch
      The ninth batch
      The tenth batch
      The eleventh batch
      Twelfth batch
      Git 2.33.1
      signature-format.txt: explain and illustrate multi-line headers
      Thirteenth batch
      The fourteenth batch
      branch (doc): -m/-c copies config and reflog
      The fifteenth batch
      Revert "logmsg_reencode(): warn when iconv() fails"
      Git 2.34-rc0

Kaartic Sivaraam (1):
      submodule--helper: fix incorrect newlines in an error message

Kim Altintop (3):
      t5730: introduce fetch command helper
      upload-pack.c: treat want-ref relative to namespace
      docs: clarify the interaction of transfer.hideRefs and namespaces

Kyle Zhao (1):
      pack-revindex.h: correct the time complexity descriptions

Lénaïc Huard (4):
      cache.h: Introduce a generic "xdg_config_home_for(…)" function
      maintenance: `git maintenance run` learned `--scheduler=<scheduler>`
      maintenance: add support for systemd timers on Linux
      maintenance: fix test t7900-maintenance.sh

Mahi Kolla (1):
      clone: set submodule.recurse=true if submodule.stickyRecursiveClone enabled

Martin Ågren (6):
      config.txt: fix typo
      git.txt: fix typo
      git-multi-pack-index.txt: change "folder" to "directory"
      gitignore.txt: change "folder" to "directory"
      gitweb.txt: change "folder" to "directory"
      git-bundle.txt: add missing words and punctuation

Marvin Häuser (1):
      send-email: avoid incorrect header propagation

Matheus Tavares (3):
      checkout: make delayed checkout respect --quiet and --no-progress
      grep: demonstrate bug with textconv attributes and submodules
      add, rm, mv: fix bug that prevents the update of non-sparse dirs

Matthias Aßhauer (2):
      help: make sure local html page exists before calling external processes
      documentation: add documentation for 'git version'

Mickey Endito (1):
      t5582: remove spurious 'cd "$D"' line

Mike Hommey (1):
      credential: fix leak in credential_apply_config()

Miriam Rubio (3):
      t6030-bisect-porcelain: add tests to control bisect run exit cases
      t6030-bisect-porcelain: add test for bisect visualize
      bisect--helper: retire `--bisect-next-check` subcommand

Orgad Shaneh (1):
      doc: fix capitalization in "git status --porcelain=v2" description

Patrick Steinhardt (16):
      fetch-pack: speed up loading of refs via commit graph
      revision: separate walk and unsorted flags
      connected: do not sort input revisions
      revision: stop retrieving reference twice
      commit-graph: split out function to search commit position
      revision: avoid hitting packfiles when commits are in commit-graph
      ls-refs: reuse buffer when sending refs
      fetch: skip formatting updated refs with `--quiet`
      fetch: speed up lookup of want refs via commit-graph
      fetch: avoid unpacking headers in object existence check
      connected: refactor iterator to return next object ID directly
      fetch-pack: optimize loading of refs via commit graph
      fetch: refactor fetch refs to be more extendable
      fetch: merge fetching and consuming refs
      fetch: avoid second connectivity check if we already have all objects
      update-ref: fix streaming of status updates

Philip Oakley (1):
      doc: config, tell readers of `git help --config`

Philippe Blain (3):
      test-lib-functions: use 'TEST_SHELL_PATH' in 'test_pause'
      test-lib-functions: optionally keep HOME, TERM and SHELL in 'test_pause'
      test-lib-functions: keep user's debugger config files and TERM in 'debug'

Phillip Wood (21):
      t3403: fix commit authorship
      rebase --apply: restore some tests
      rebase --continue: remove .git/MERGE_MSG
      rebase -r: make 'merge -c' behave like reword
      rebase -i: add another reword test
      rebase -r: don't write .git/MERGE_MSG when fast-forwarding
      rebase -r: fix merge -c with a merge strategy
      t3407: run tests in $TEST_DIRECTORY
      t3407: use test_commit
      t3407: use test_cmp_rev
      t3407: rename a variable
      t3407: use test_path_is_missing
      t3407: strengthen rebase --abort tests
      t3407: rework rebase --quit tests
      rebase: use our standard error return value
      rebase: use lookup_commit_reference_by_name()
      rebase: dereference tags
      sequencer.c: factor out a function
      rebase: fix todo-list rereading
      sparse index: fix use-after-free bug in cache_tree_verify()
      t1092: run "rebase --apply" without "-q" in testing

Pranit Bauva (2):
      run-command: make `exists_in_PATH()` non-static
      bisect--helper: reimplement `bisect_visualize()` shell function in C

René Scharfe (34):
      compat: let git_mmap use malloc(3) directly
      xopen: explicitly report creation failures
      use xopen() to handle fatal open(2) failures
      show-branch: simplify rev_is_head()
      archive: convert queue_directory to struct object_id
      branch: allow deleting dangling branches with --force
      merge-recursive: use fspathcmp() in path_hashmap_cmp()
      range-diff: avoid segfault with -I
      setup: use xopen and xdup in sanitize_stdfds
      refs/files-backend: remove unused open mode parameter
      index-pack: use xopen in init_thread
      oidset: make oidset_size() an inline function
      midx: inline nth_midxed_pack_entry()
      packfile: convert mark_bad_packed_object() to object_id
      packfile: convert has_packed_and_bad() to object_id
      packfile: use oidset for bad objects
      compression: drop write-only core_compression_* variables
      packfile: release bad_objects in close_pack()
      test-mergesort: use strbuf_getline()
      test-mergesort: add sort subcommand
      test-mergesort: add test subcommand
      test-mergesort: add generate subcommand
      test-mergesort: add unriffle mode
      test-mergesort: add unriffle_skewed mode
      p0071: measure sorting of already sorted and reversed files
      p0071: test performance of llist_mergesort()
      mergesort: use ranks stack
      p3400: stop using tac(1)
      t3905: show failure to ignore sub-repo
      read-cache: add verify_path_internal()
      read-cache: let verify_path() reject trailing dir separators again
      test-mergesort: use repeatable random numbers
      perf: disable automatic housekeeping
      add: don't write objects with --dry-run

Robert Estelle (1):
      completion: fix incorrect bash/zsh string equality check

SZEDER Gábor (12):
      Makefile: remove archives before manipulating them with 'ar'
      column: fix parsing of the '--nl' option
      test-lib: set GIT_CEILING_DIRECTORIES to protect the surrounding repository
      t1600-index: remove unnecessary redirection
      t1600-index: don't run git commands upstream of a pipe
      t1600-index: disable GIT_TEST_SPLIT_INDEX
      read-cache: look for shared index files next to the index, too
      tests: disable GIT_TEST_SPLIT_INDEX for sparse index tests
      read-cache: fix GIT_TEST_SPLIT_INDEX
      commit-graph: fix bogus counter in "Scanning merged commits" progress line
      entry: show finer-grained counter in "Filtering content" progress line
      command-list.txt: remove 'sparse-index' from main help

Sergey Organov (1):
      diff-index: restore -c/--cc options handling

Takashi Iwai (1):
      completion: tcsh: Fix regression by drop of wrapper functions

Tal Kelrich (1):
      fast-export: fix anonymized tag using original length

Tanushree Tumane (1):
      bisect--helper: reimplement `bisect_run` shell function in C

Tassilo Horn (1):
      userdiff: improve java hunk header regex

Taylor Blau (55):
      pack-bitmap.c: harden 'test_bitmap_walk()' to check type bitmaps
      pack-bitmap-write.c: gracefully fail to write non-closed bitmaps
      pack-bitmap-write.c: free existing bitmaps
      Documentation: describe MIDX-based bitmaps
      object-store.h: teach for_each_packed_object to ignore kept packs
      builtin/pack-objects.c: simplify add_objects_in_unpacked_packs()
      builtin/pack-objects.c: remove duplicate hash lookup
      midx: disallow running outside of a repository
      midx: fix `*.rev` cleanups with `--object-dir`
      midx: clear auxiliary .rev after replacing the MIDX
      midx: reject empty `--preferred-pack`'s
      midx: infer preferred pack when not given one
      midx: close linked MIDXs, avoid leaking memory
      midx: avoid opening multiple MIDXs when writing
      pack-bitmap.c: introduce 'bitmap_num_objects()'
      pack-bitmap.c: introduce 'nth_bitmap_object_oid()'
      pack-bitmap.c: introduce 'bitmap_is_preferred_refname()'
      pack-bitmap.c: avoid redundant calls to try_partial_reuse
      pack-bitmap: read multi-pack bitmaps
      pack-bitmap: write multi-pack bitmaps
      t5310: move some tests to lib-bitmap.sh
      t/helper/test-read-midx.c: add --checksum mode
      t5326: test multi-pack bitmap behavior
      t5319: don't write MIDX bitmaps in t5319
      t7700: update to work with MIDX bitmap test knob
      midx: respect 'GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP'
      p5310: extract full and partial bitmap tests
      p5326: perf tests for MIDX bitmaps
      bulk-checkin.c: store checksum directly
      pack-write.c: rename `.idx` files after `*.rev`
      builtin/repack.c: move `.idx` files into place last
      builtin/index-pack.c: move `.idx` files into place last
      t/helper/test-bitmap.c: add 'dump-hashes' mode
      pack-bitmap.c: propagate namehash values from existing bitmaps
      midx.c: respect 'pack.writeBitmapHashcache' when writing bitmaps
      p5326: create missing 'perf-tag' tag
      p5326: don't set core.multiPackIndex unnecessarily
      p5326: generate pack bitmaps before writing the MIDX bitmap
      t5326: test propagating hashcache values
      builtin/commit-graph.c: don't accept common --[no-]progress
      builtin/multi-pack-index.c: disable top-level --[no-]progress
      midx: expose `write_midx_file_only()` publicly
      builtin/multi-pack-index.c: support `--stdin-packs` mode
      midx: preliminary support for `--refs-snapshot`
      builtin/repack.c: keep track of existing packs unconditionally
      builtin/repack.c: rename variables that deal with non-kept packs
      builtin/repack.c: extract showing progress to a variable
      builtin/repack.c: support writing a MIDX while repacking
      builtin/repack.c: make largest pack preferred
      builtin/repack.c: pass `--refs-snapshot` when writing bitmaps
      t/perf/aggregate.perl: tolerate leading spaces
      midx.c: extract MIDX lookup by object_dir
      midx.c: lookup MIDX by object directory during expire
      midx.c: lookup MIDX by object directory during repack
      midx.c: guard against commit_lock_file() failures

Teng Long (1):
      list-objects.c: rename "traverse_trees_and_blobs" to "traverse_non_commits"

Todd Zullinger (1):
      doc: add bundle-format to TECH_DOCS

USAMI Kenta (1):
      userdiff: support enum keyword in PHP hunk header

Wesley Schwengle (1):
      Document `rebase.forkpoint` in rebase man page

ZheNing Hu (6):
      ref-filter: add obj-type check in grab contents
      ref-filter: add %(raw) atom
      ref-filter: --format=%(raw) support --perl
      ref-filter: use non-const ref_format in *_atom_parser()
      ref-filter: add %(rest) atom
      cherry-pick: use better advice message

Zoker (1):
      doc: fix syntax error and the format of printf

brian m. carlson (1):
      t5607: avoid using prerequisites to select algorithm

Ævar Arnfjörð Bjarmason (221):
      pack-objects tests: cover blindspots in stdin handling
      Makefile: move ".PHONY: cscope" near its target
      Makefile: add QUIET_GEN to "cscope" target
      pack-objects: fix segfault in --stdin-packs option
      test-lib tests: move "run_sub_test" to a new lib-subtest.sh
      Makefile: don't use "FORCE" for tags targets
      http: drop support for curl < 7.19.3 and < 7.17.0 (again)
      http: rename CURLOPT_FILE to CURLOPT_WRITEDATA
      bundle doc: elaborate on object prerequisites
      bundle doc: elaborate on rev<->ref restriction
      bundle doc: rewrite the "DESCRIPTION" section
      bundle doc: replace "basis" with "prerequsite(s)"
      serve: mark has_capability() as static
      transport: rename "fetch" in transport_vtable to "fetch_refs"
      transport: use designated initializers
      serve: use designated initializers
      serve.[ch]: don't pass "struct strvec *keys" to commands
      serve: move transfer.advertiseSID check into session_id_advertise()
      serve.c: move version line to advertise_capabilities()
      {upload,receive}-pack tests: add --advertise-refs tests
      serve.[ch]: remove "serve_options", split up --advertise-refs code
      upload-pack: document and rename --advertise-refs
      Makefile: remove "cscope.out", not "cscope*" in cscope.out target
      Makefile: normalize clobbering & xargs for tags targets
      refs/packet: add missing BUG() invocations to reflog callbacks
      refs/files: remove unused REF_DELETING in lock_ref_oid_basic()
      ls-remote: set packet_trace_identity(<name>)
      rebase: emit one "fatal" in "fatal: fatal: <error>"
      advice: remove use of global advice_add_embedded_repo
      advice: move advice.graftFileDeprecated squashing to commit.[ch]
      refs/files: remove unused "extras/skip" in lock_ref_oid_basic()
      refs/files: remove unused "skip" in lock_raw_ref() too
      refs/debug: re-indent argument list for "prepare"
      refs: make repo_dwim_log() accept a NULL oid
      refs/files: add a comment about refs_reflog_exists() call
      reflog expire: don't lock reflogs using previously seen OID
      refs API: remove OID argument to reflog_expire()
      refs/files: remove unused "oid" in lock_ref_oid_basic()
      refs/files: remove unused "errno == EISDIR" code
      refs/files: remove unused "errno != ENOTDIR" condition
      refs file backend: move raceproof_create_file() here
      bundle API: start writing API documentation
      commit-graph: define common usage with a macro
      commit-graph: remove redundant handling of -h
      commit-graph: use parse_options_concat()
      multi-pack-index: refactor "goto usage" pattern
      commit-graph: early exit to "usage" on !argc
      commit-graph: show usage on "commit-graph [write|verify] garbage"
      commit-graph: show "unexpected subcommand" error
      protocol-caps.c: fix memory leak in send_info()
      mailmap.c: fix a memory leak in free_mailap_{info,entry}()
      gc: remove trailing dot from "gc.log" line
      gettext: remove optional non-standard parens in N_() definition
      bundle API: change "flags" to be "extra_index_pack_args"
      index-pack: add --progress-title option
      bundle: show progress on "unbundle"
      tr2: remove NEEDSWORK comment for "non-procfs" implementations
      tr2: clarify TRACE2_PROCESS_INFO_EXIT comment under Linux
      tr2: stop leaking "thread_name" memory
      tr2: leave the parent list empty upon failure & don't leak memory
      tr2: do compiler enum check in trace2_collect_process_info()
      tr2: log N parent process names on Linux
      send-email: fix a "first config key wins" regression in v2.33.0
      Makefile: remove the check_bindir script
      pack-write: skip *.rev work when not writing *.rev
      pack.h: line-wrap the definition of finish_tmp_packfile()
      pack-write: refactor renaming in finish_tmp_packfile()
      index-pack: refactor renaming in final()
      pack-write: split up finish_tmp_packfile() function
      pack-objects: rename .idx files into place after .bitmap files
      help: correct the usage string in -h and documentation
      INSTALL: don't mention the "curl" executable at all
      INSTALL: reword and copy-edit the "libcurl" section
      git-submodule: remove unused is_zero_oid() function
      git-sh-setup: remove unused "pull with rebase" message
      git-bisect: remove unused SHA-1 $x40 shell variable
      test-lib: remove unused $_x40 and $_z40 variables
      test-tool run-command: fix flip-flop init pattern
      gc: remove unused launchctl_get_uid() call
      parse-options API users: align usage output in C-strings
      send-pack: properly use parse_options() API for usage string
      git rev-parse --parseopt tests: add more usagestr tests
      difftool: prepare "struct child_process" in cmd_difftool()
      difftool: use run_command() API in run_file_diff()
      parse-options API: remove OPTION_ARGUMENT feature
      INSTALL: mention that we need libcurl 7.19.4 or newer to build
      Makefile: drop support for curl < 7.9.8 (again)
      http: drop support for curl < 7.18.0 (again)
      http: correct version check for CURL_HTTP_VERSION_2
      http: correct curl version check for CURLOPT_PINNEDPUBLICKEY
      http: centralize the accounting of libcurl dependencies
      http: don't hardcode the value of CURL_SOCKOPT_OK
      wrapper.c: add x{un,}setenv(), and use xsetenv() in environment.c
      environment.c: remove test-specific "ignore_untracked..." variable
      read-cache & fetch-negotiator: check "enum" values in switch()
      repo-settings.c: simplify the setup
      repository.h: don't use a mix of int and bitfields
      Makefile: clean .depend dirs under COMPUTE_HEADER_DEPENDENCIES != yes
      parse-options: properly align continued usage output
      test-lib tests: split up "write and run" into two functions
      test-lib tests: don't provide a description for the sub-tests
      test-lib tests: avoid subshell for "test_cmp" for readability
      test-lib tests: refactor common part of check_sub_test_lib_test*()
      test-lib tests: assert 1 exit code, not non-zero
      test-lib tests: get rid of copy/pasted mock test code
      Makefile: make the "sparse" target non-.PHONY
      Makefile: make COMPUTE_HEADER_DEPENDENCIES=auto work with DEVOPTS=pedantic
      help: correct usage & behavior of "git help --guides"
      help tests: add test for --config output
      help: correct logic error in combining --all and --config
      help: correct logic error in combining --all and --guides
      help: simplify by moving to OPT_CMDMODE()
      help tests: test --config-for-completion option & output
      help / completion: make "git help" do the hard work
      help: move column config discovery to help.c library
      Makefile: add SANITIZE=leak flag to GIT-BUILD-OPTIONS
      tests: add a test mode for SANITIZE=leak, run it in CI
      bundle: remove ignored & undocumented "--verbose" flag
      Makefile: mark "check" target as .PHONY
      Makefile: stop hardcoding {command,config}-list.h
      Makefile: don't perform "mv $@+ $@" dance for $(GENERATED_H)
      Makefile: remove an out-of-date comment
      hook.[ch]: move find_hook() from run-command.c to hook.c
      hook.c users: use "hook_exists()" instead of "find_hook()"
      hook-list.h: add a generated list of hooks, like config-list.h
      http: check CURLE_SSL_PINNEDPUBKEYNOTMATCH when emitting errors
      Makefile: pass -Wno-pendantic under GENERATE_COMPILATION_DATABASE=yes
      submodule-config.h: remove unused SUBMODULE_INIT macro
      *.[ch] *_INIT macros: use { 0 } for a "zero out" idiom
      *.h _INIT macros: don't specify fields equal to 0
      *.h: move some *_INIT to designated initializers
      cbtree.h: define cb_init() in terms of CBTREE_INIT
      daemon.c: refactor hostinfo_init() to HOSTINFO_INIT macro
      builtin/blame.c: refactor commit_info_init() to COMMIT_INFO_INIT macro
      string-list.[ch]: remove string_list_init() compatibility function
      config.c: remove unused git_config_key_is_valid()
      refs.[ch]: remove unused ref_storage_backend_exists()
      refs/ref-cache.[ch]: remove unused remove_entry_from_dir()
      refs/ref-cache.[ch]: remove unused add_ref_entry()
      refs/ref-cache.c: remove "mkdir" parameter from find_containing_dir()
      refs/ref-cache.[ch]: remove "incomplete" from create_dir_entry()
      parse-options.h: move PARSE_OPT_SHELL_EVAL between enums
      urlmatch.[ch]: add and use URLMATCH_CONFIG_INIT
      builtin/remote.c: add and use a REF_STATES_INIT
      builtin/remote.c: add and use SHOW_INFO_INIT
      builtin.h: remove cmd_tar_tree() declaration
      grep.h: remove unused grep_threads_ok() declaration
      log-tree.h: remove unused function declarations
      config.h: remove unused git_config_get_untracked_cache() declaration
      fsck tests: add test for fsck-ing an unknown type
      fsck tests: refactor one test to use a sub-repo
      fsck tests: test current hash/type mismatch behavior
      fsck tests: test for garbage appended to a loose object
      cat-file tests: move bogus_* variable declarations earlier
      cat-file tests: test for missing/bogus object with -t, -s and -p
      cat-file tests: add corrupt loose object test
      cat-file tests: test for current --allow-unknown-type behavior
      object-file.c: don't set "typep" when returning non-zero
      object-file.c: return -1, not "status" from unpack_loose_header()
      object-file.c: make parse_loose_header_extended() public
      object-file.c: simplify unpack_loose_short_header()
      object-file.c: use "enum" return type for unpack_loose_header()
      object-file.c: return ULHR_TOO_LONG on "header too long"
      object-file.c: stop dying in parse_loose_header()
      fsck: don't hard die on invalid object types
      fsck: report invalid object type-path combinations
      unpack-trees: don't leak memory in verify_clean_subdirectory()
      tests: fix a memory leak in test-prio-queue.c
      tests: fix a memory leak in test-parse-options.c
      tests: fix a memory leak in test-oidtree.c
      tests: fix test-oid-array leak, test in SANITIZE=leak
      ls-files: fix a trivial dir_clear() leak
      ls-files: add missing string_list_clear()
      merge: add missing strbuf_release()
      parse-options.[ch]: consistently use "enum parse_opt_flags"
      parse-options.[ch]: consistently use "enum parse_opt_result"
      parse-options.c: use exhaustive "case" arms for "enum parse_opt_result"
      parse-options.h: make the "flags" in "struct option" an enum
      parse-options.c: move optname() earlier in the file
      commit-graph: stop using optname()
      parse-options.[ch]: make opt{bug,name}() "static"
      parse-options tests: test optname() output
      parse-options: change OPT_{SHORT,UNSET} to an enum
      unwritable tests: assert exact error output
      commit: fix duplication regression in permission error output
      leak tests: run various built-in tests in t00*.sh SANITIZE=leak
      leak tests: run various "test-tool" tests in t00*.sh SANITIZE=leak
      leak tests: mark all ls-tree tests as passing with SANITIZE=leak
      leak tests: mark all trace2 tests as passing with SANITIZE=leak
      leak tests: mark all checkout-index tests as passing with SANITIZE=leak
      leak tests: mark some ls-files tests as passing with SANITIZE=leak
      leak tests: mark some read-tree tests as passing with SANITIZE=leak
      leak tests: mark various "generic" tests as passing with SANITIZE=leak
      leak tests: mark some misc tests as passing with SANITIZE=leak
      sequencer: add a "goto cleanup" to do_reset()
      sequencer: fix a memory leak in do_reset()
      test-lib.sh: de-duplicate error() teardown code
      test-lib.sh: use "Bail out!" syntax on bad SANITIZE=leak use
      test-lib.sh: try to re-chmod & retry on failed trash removal
      "lib-diff" tests: make "README" and "COPYING" test data smaller
      tests: stop using top-level "README" and "COPYING" files
      doc lint: fix error-hiding regression
      doc lint: emit errors on STDERR
      doc build: speed up "make lint-docs"
      doc lint: make "lint-docs" non-.PHONY
      pkt-line.[ch]: remove unused packet_buf_write_len()
      pkt-line.[ch]: remove unused packet_read_line_buf()
      git config doc: fix recent ASCIIDOC formatting regression
      tag: use a "goto cleanup" pattern, leak less memory
      ref-filter API user: add and use a ref_sorting_release()
      branch: use ref_sorting_release()
      git-sh-i18n: remove unused eval_ngettext()
      git-sh-setup: remove messaging supporting --preserve-merges
      Makefile: remove redundant GIT-CFLAGS dependency from "sparse"
      config.c: don't leak memory in handle_path_include()
      grep: prefer "struct grep_opt" over its "void *" equivalent
      grep: use object_array_clear() in cmd_grep()
      grep: fix a "path_list" memory leak
      clone: fix a memory leak of the "git_dir" variable
      submodule--helper: fix small memory leaks
      reflog: free() ref given to us by dwim_log()

Đoàn Trần Công Danh (3):
      t6300: don't run cat-file on non-existent object
      t6300: check for cat-file exit status code
      diff-lib: ignore paths that are outside $cwd if --relative asked


^ permalink raw reply	[relevance 3%]

* [PATCH RESEND v3] make: add INSTALL_STRIP option variable
@ 2021-09-05 11:04  3% Bagas Sanjaya
  0 siblings, 0 replies; 162+ results
From: Bagas Sanjaya @ 2021-09-05 11:04 UTC (permalink / raw)
  To: git
  Cc: Carlo Arenas, Đoàn Trần Công Danh,
	felipe.contreras, Ævar Arnfjörð Bjarmason,
	Eric Sunshine, Johannes Schindelin, Elijah Newren, Derrick Stolee,
	Bagas Sanjaya, Junio C Hamano

From: Junio C Hamano <gitster@pobox.com>

Add $(INSTALL_STRIP), which allows passing stripping options to
$(INSTALL).

For this to work, installing executables must be split to installing
compiled binaries and scripts portions, since $(INSTALL_STRIP) is only
meaningful to the former.

Users can set this variable depending on their system. For example,
Linux users can use `-s --strip-program=strip`, while FreeBSD users can
simply set to `-s` and choose strip program with $STRIPBIN.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Bagas Sanjaya <bagasdotme@gmail.com>
---

 Changes from v2 [1]:
   - Squash suggestion patch from Junio, which:
     - drops install-stripped target and rename $(INSTALL_OPTS) to
     $(INSTALL_STRIP).
     - Describe $(INSTALL_STRIP) usage on the top of Makefile
   - Rebase on e0a2f5cbc5 (The third batch, 2021-09-03)

 Note: In the future, we may add global $(INSTALL_OPTS), which applies
 to both compiled binaries and scripts. When such happens, we should
 rename $(INSTALL_STRIP) to $(INSTALL_STRIP_OPTS).

 [QUESTION]: I squashed Junio's suggestion patch to produce this patch,
 and I want to credit his work. In such situation, what should I do the
 right way? For now I add From: line and S-o-b trailer with his
 identity, in addition to my S-o-b.

 [1]: https://lore.kernel.org/git/xmqqo89cqkt9.fsf@gitster.g/T/#t
 Makefile | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index 429c276058..c7a9995062 100644
--- a/Makefile
+++ b/Makefile
@@ -465,6 +465,9 @@ all::
 # the global variable _wpgmptr containing the absolute path of the current
 # executable (this is the case on Windows).
 #
+# INSTALL_STRIP can be set to "-s" to strip binaries during installation,
+# if your $(INSTALL) command supports the option.
+#
 # Define GENERATE_COMPILATION_DATABASE to "yes" to generate JSON compilation
 # database entries during compilation if your compiler supports it, using the
 # `-MJ` flag. The JSON entries will be placed in the `compile_commands/`
@@ -3004,7 +3007,8 @@ mergetools_instdir = $(prefix)/$(mergetoolsdir)
 endif
 mergetools_instdir_SQ = $(subst ','\'',$(mergetools_instdir))
 
-install_bindir_programs := $(patsubst %,%$X,$(BINDIR_PROGRAMS_NEED_X)) $(BINDIR_PROGRAMS_NO_X)
+install_bindir_xprograms := $(patsubst %,%$X,$(BINDIR_PROGRAMS_NEED_X))
+install_bindir_programs := $(install_bindir_xprograms) $(BINDIR_PROGRAMS_NO_X)
 
 .PHONY: profile-install profile-fast-install
 profile-install: profile
@@ -3013,12 +3017,17 @@ profile-install: profile
 profile-fast-install: profile-fast
 	$(MAKE) install
 
+INSTALL_STRIP =
+
 install: all
 	$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)'
 	$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
-	$(INSTALL) $(ALL_PROGRAMS) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
+	$(INSTALL) $(INSTALL_STRIP) $(PROGRAMS) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
+	$(INSTALL) $(SCRIPTS) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
 	$(INSTALL) -m 644 $(SCRIPT_LIB) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
-	$(INSTALL) $(install_bindir_programs) '$(DESTDIR_SQ)$(bindir_SQ)'
+	$(INSTALL) $(INSTALL_STRIP) $(install_bindir_xprograms) '$(DESTDIR_SQ)$(bindir_SQ)'
+	$(INSTALL) $(BINDIR_PROGRAMS_NO_X) '$(DESTDIR_SQ)$(bindir_SQ)'
+
 ifdef MSVC
 	# We DO NOT install the individual foo.o.pdb files because they
 	# have already been rolled up into the exe's pdb file.

base-commit: e0a2f5cbc585657e757385ad918f167f519cfb96
-- 
2.25.1


^ permalink raw reply related	[relevance 3%]

* [ANNOUNCE] Git v2.33.0
@ 2021-08-16 23:06  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-08-16 23:06 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

The latest feature release Git v2.33.0 is now available at the
usual places.  It is comprised of 449 non-merge commits since
v2.32.0, contributed by 74 people, 19 of which are new faces [*].

As can be seen here, it turns out that this release does not have
many end-user facing changes and new features, but a lot of fixes
and internal improvements went into the codebase during this cycle.
Also, preparation for a new merge strategy backend (can be used with
"git merge -sort" today) is on its final stretch and we are hoping
that it can become the default in the next release.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.33.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.32.0 are as follows.
Welcome to the Git development community!

  Anders Höckersten, Andrew Berry, Andy AO, Beshr Kayali,
  dorgon.chang, edef, Fabian Stelzer, Fabian Wermelinger, Gregory
  Anders, Greg Pflaum, Hu Jialun, Jason Hatton, Julian Verdurmen,
  Matthew Hughes, Michael Schindler, Reuven Y, Stephen Manz,
  Tao Klerks, and Teng Long.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alexander Shopov, Alex Henrie,
  Anders Kaseorg, Andrei Rybak, Andrzej Hunt, Atharva Raykar,
  Bagas Sanjaya, brian m. carlson, Carlo Marcelo Arenas Belón,
  Christian Couder, Christopher Diaz Riveros, Daniel Santos,
  Dennis Ameling, Denton Liu, Derrick Stolee, Đoàn Trần Công
  Danh, Elijah Newren, Emily Shaffer, Emir Sarı, Eric Sunshine,
  Eric Wong, Fangyi Zhou, Felipe Contreras, Han-Wen Nienhuys,
  Jean-Noël Avila, Jeff King, Jiang Xin, Johannes Schindelin,
  Jonathan Nieder, Jonathan Tan, Jordi Mas, Josh Steadmon, Junio C
  Hamano, Kaartic Sivaraam, Martin Ågren, Matheus Tavares, Matthew
  Rogers, Matthias Aßhauer, Nicolas Pitre, Patrick Steinhardt,
  Peter Krefting, Philippe Blain, Ralf Thielow, René Scharfe,
  Sergey Organov, Shourya Shukla, Taylor Blau, Thomas Bétous,
  Thomas Braun, Trần Ngọc Quân, Wolfgang Müller, Yi-Jyun Pan,
  ZheNing Hu, and 依云.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git 2.33 Release Notes
======================

Updates since Git 2.32
----------------------

UI, Workflows & Features

 * "git send-email" learned the "--sendmail-cmd" command line option
   and the "sendemail.sendmailCmd" configuration variable, which is a
   more sensible approach than the current way of repurposing the
   "smtp-server" that is meant to name the server to instead name the
   command to talk to the server.

 * The userdiff pattern for C# learned the token "record".

 * "git rev-list" learns to omit the "commit <object-name>" header
   lines from the output with the `--no-commit-header` option.

 * "git worktree add --lock" learned to record why the worktree is
   locked with a custom message.


Performance, Internal Implementation, Development Support etc.

 * The code to handle the "--format" option in "for-each-ref" and
   friends made too many string comparisons on %(atom)s used in the
   format string, which has been corrected by converting them into
   enum when the format string is parsed.

 * Use the hashfile API in the codepath that writes the index file to
   reduce code duplication.

 * Repeated rename detections in a sequence of mergy operations have
   been optimized out for the 'ort' merge strategy.

 * Preliminary clean-up of tests before the main reftable changes
   hits the codebase.

 * The backend for "diff -G/-S" has been updated to use pcre2 engine
   when available.

 * Use ".DELETE_ON_ERROR" pseudo target to simplify our Makefile.

 * Code cleanup around struct_type_init() functions.

 * "git send-email" optimization.

 * GitHub Actions / CI update.
   (merge 0dc787a9f2 js/ci-windows-update later to maint).

 * Object accesses in repositories with many alternate object store
   have been optimized.

 * "git log" has been optimized not to waste cycles to load ref
   decoration data that may not be needed.

 * Many "printf"-like helper functions we have have been annotated
   with __attribute__() to catch placeholder/parameter mismatches.

 * Tests that cover protocol bits have been updated and helpers
   used there have been consolidated.

 * The CI gained a new job to run "make sparse" check.

 * "git status" codepath learned to work with sparsely populated index
   without hydrating it fully.

 * A guideline for gender neutral documentation has been added.

 * Documentation on "git diff -l<n>" and diff.renameLimit have been
   updated, and the defaults for these limits have been raised.

 * The completion support used to offer alternate spelling of options
   that exist only for compatibility, which has been corrected.

 * "TEST_OUTPUT_DIRECTORY=there make test" failed to work, which has
   been corrected.

 * "git bundle" gained more test coverage.

 * "git read-tree" had a codepath where blobs are fetched one-by-one
   from the promisor remote, which has been corrected to fetch in bulk.

 * Rewrite of "git submodule" in C continues.

 * "git checkout" and "git commit" learn to work without unnecessarily
   expanding sparse indexes.


Fixes since v2.32
-----------------

 * We historically rejected a very short string as an author name
   while accepting a patch e-mail, which has been loosened.
   (merge 72ee47ceeb ef/mailinfo-short-name later to maint).

 * The parallel checkout codepath did not initialize object ID field
   used to talk to the worker processes in a futureproof way.

 * Rewrite code that triggers undefined behaviour warning.
   (merge aafa5df0df jn/size-t-casted-to-off-t-fix later to maint).

 * The description of "fast-forward" in the glossary has been updated.
   (merge e22f2daed0 ry/clarify-fast-forward-in-glossary later to maint).

 * Recent "git clone" left a temporary directory behind when the
   transport layer returned an failure.
   (merge 6aacb7d861 jk/clone-clean-upon-transport-error later to maint).

 * "git fetch" over protocol v2 left its side of the socket open after
   it finished speaking, which unnecessarily wasted the resource on
   the other side.
   (merge ae1a7eefff jk/fetch-pack-v2-half-close-early later to maint).

 * The command line completion (in contrib/) learned that "git diff"
   takes the "--anchored" option.
   (merge d1e7c2cac9 tb/complete-diff-anchored later to maint).

 * "git-svn" tests assumed that "locale -a", which is used to pick an
   available UTF-8 locale, is available everywhere.  A knob has been
   introduced to allow testers to specify a suitable locale to use.
   (merge 482c962de4 dd/svn-test-wo-locale-a later to maint).

 * Update "git subtree" to work better on Windows.
   (merge 77f37de39f js/subtree-on-windows-fix later to maint).

 * Remove multimail from contrib/
   (merge f74d11471f js/no-more-multimail later to maint).

 * Make the codebase MSAN clean.
   (merge 4dbc55e87d ah/uninitialized-reads-fix later to maint).

 * Work around inefficient glob substitution in older versions of bash
   by rewriting parts of a test.
   (merge eb87c6f559 jx/t6020-with-older-bash later to maint).

 * Avoid duplicated work while building reachability bitmaps.
   (merge aa9ad6fee5 jk/bitmap-tree-optim later to maint).

 * We broke "GIT_SKIP_TESTS=t?000" to skip certain tests in recent
   update, which got fixed.

 * The side-band demultiplexer that is used to display progress output
   from the remote end did not clear the line properly when the end of
   line hits at a packet boundary, which has been corrected.

 * Some test scripts assumed that readlink(1) was universally
   installed and available, which is not the case.
   (merge 7c0afdf23c jk/test-without-readlink-1 later to maint).

 * Recent update to completion script (in contrib/) broke those who
   use the __git_complete helper to define completion to their custom
   command.
   (merge cea232194d fw/complete-cmd-idx-fix later to maint).

 * Output from some of our tests were affected by the width of the
   terminal that they were run in, which has been corrected by
   exporting a fixed value in the COLUMNS environment.
   (merge c49a177bec ab/fix-columns-to-80-during-tests later to maint).

 * On Windows, mergetool has been taught to find kdiff3.exe just like
   it finds winmerge.exe.
   (merge 47eb4c6890 ms/mergetools-kdiff3-on-windows later to maint).

 * When we cannot figure out how wide the terminal is, we use a
   fallback value of 80 ourselves (which cannot be avoided), but when
   we run the pager, we export it in COLUMNS, which forces the pager
   to use the hardcoded value, even when the pager is perfectly
   capable to figure it out itself.  Stop exporting COLUMNS when we
   fall back on the hardcoded default value for our own use.
   (merge 9b6e2c8b98 js/stop-exporting-bogus-columns later to maint).

 * "git cat-file --batch-all-objects"" misbehaved when "--batch" is in
   use and did not ask for certain object traits.
   (merge ee02ac6164 zh/cat-file-batch-fix later to maint).

 * Some code and doc clarification around "git push".

 * The "union" conflict resultion variant misbehaved when used with
   binary merge driver.
   (merge 382b601acd jk/union-merge-binary later to maint).

 * Prevent "git p4" from failing to submit changes to binary file.
   (merge 54662d5958 dc/p4-binary-submit-fix later to maint).

 * "git grep --and -e foo" ought to have been diagnosed as an error
   but instead segfaulted, which has been corrected.
   (merge fe7fe62d8d rs/grep-parser-fix later to maint).

 * The merge code had funny interactions between content based rename
   detection and directory rename detection.
   (merge 3585d0ea23 en/merge-dir-rename-corner-case-fix later to maint).

 * When rebuilding the multi-pack index file reusing an existing one,
   we used to blindly trust the existing file and ended up carrying
   corrupted data into the updated file, which has been corrected.
   (merge f89ecf7988 tb/midx-use-checksum later to maint).

 * Update the location of system-side configuration file on Windows.
   (merge e355307692 js/gfw-system-config-loc-fix later to maint).

 * Code recently added to support common ancestry negotiation during
   "git push" did not sanity check its arguments carefully enough.
   (merge eff40457a4 ab/fetch-negotiate-segv-fix later to maint).

 * Update the documentation not to assume users are of certain gender
   and adds to guidelines to do so.
   (merge 46a237f42f ds/gender-neutral-doc later to maint).

 * "git commit --allow-empty-message" won't abort the operation upon
   an empty message, but the hint shown in the editor said otherwise.
   (merge 6f70f00b4f hj/commit-allow-empty-message later to maint).

 * The code that gives an error message in "git multi-pack-index" when
   no subcommand is given tried to print a NULL pointer as a strong,
   which has been corrected.
   (merge 88617d11f9 tb/reverse-midx later to maint).

 * CI update.
   (merge a066a90db6 js/ci-check-whitespace-updates later to maint).

 * Documentation fix for "git pull --rebase=no".
   (merge d3236becec fc/pull-no-rebase-merges-theirs-into-ours later to maint).

 * A race between repacking and using pack bitmaps has been corrected.
   (merge dc1daacdcc jk/check-pack-valid-before-opening-bitmap later to maint).

 * The local changes stashed by "git merge --autostash" were lost when
   the merge failed in certain ways, which has been corrected.

 * Windows rmdir() equivalent behaves differently from POSIX ones in
   that when used on a symbolic link that points at a directory, the
   target directory gets removed, which has been corrected.
   (merge 3e7d4888e5 tb/mingw-rmdir-symlink-to-directory later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge bfe35a6165 ah/doc-describe later to maint).
   (merge f302c1e4aa jc/clarify-revision-range later to maint).
   (merge 3127ff90ea tl/fix-packfile-uri-doc later to maint).
   (merge a84216c684 jk/doc-color-pager later to maint).
   (merge 4e0a64a713 ab/trace2-squelch-gcc-warning later to maint).
   (merge 225f7fa847 ps/rev-list-object-type-filter later to maint).
   (merge 5317dfeaed dd/honor-users-tar-in-tests later to maint).
   (merge ace6d8e3d6 tk/partial-clone-repack-doc later to maint).
   (merge 7ba68e0cf1 js/trace2-discard-event-docfix later to maint).
   (merge 8603c419d3 fc/doc-default-to-upstream-config later to maint).
   (merge 1d72b604ef jk/revision-squelch-gcc-warning later to maint).
   (merge abcb66c614 ar/typofix later to maint).
   (merge 9853830787 ah/graph-typofix later to maint).
   (merge aac578492d ab/config-hooks-path-testfix later to maint).
   (merge 98c7656a18 ar/more-typofix later to maint).
   (merge 6fb9195f6c jk/doc-max-pack-size later to maint).
   (merge 4184cbd635 ar/mailinfo-memcmp-to-skip-prefix later to maint).
   (merge 91d2347033 ar/doc-libera-chat-in-my-first-contrib later to maint).
   (merge 338abb0f04 ab/cmd-foo-should-return later to maint).
   (merge 546096a5cb ab/xdiff-bug-cleanup later to maint).
   (merge b7b793d1e7 ab/progress-cleanup later to maint).
   (merge d94f9b8e90 ba/object-info later to maint).
   (merge 52ff891c03 ar/test-code-cleanup later to maint).
   (merge a0538e5c8b dd/document-log-decorate-default later to maint).
   (merge ce24797d38 mr/cmake later to maint).
   (merge 9eb542f2ee ab/pre-auto-gc-hook-test later to maint).
   (merge 9fffc38583 bk/doc-commit-typofix later to maint).
   (merge 1cf823d8f0 ks/submodule-cleanup later to maint).
   (merge ebbf5d2b70 js/config-mak-windows-pcre-fix later to maint).
   (merge 617480d75b hn/refs-iterator-peel-returns-boolean later to maint).
   (merge 6a24cc71ed ar/submodule-helper-include-cleanup later to maint).
   (merge 5632e838f8 rs/khash-alloc-cleanup later to maint).
   (merge b1d87fbaf1 jk/typofix later to maint).
   (merge e04170697a ab/gitignore-discovery-doc later to maint).
   (merge 8232a0ff48 dl/packet-read-response-end-fix later to maint).
   (merge eb448631fb dl/diff-merge-base later to maint).
   (merge c510928a25 hn/refs-debug-empty-prefix later to maint).
   (merge ddcb189d9d tb/bitmap-type-filter-comment-fix later to maint).
   (merge 878b399734 pb/submodule-recurse-doc later to maint).
   (merge 734283855f jk/config-env-doc later to maint).
   (merge 482e1488a9 ab/getcwd-test later to maint).
   (merge f0b922473e ar/doc-markup-fix later to maint).

----------------------------------------------------------------

Changes since v2.32.0 are as follows:

Alex Henrie (6):
      merge: don't translate literal commands
      stash: don't translate literal commands
      submodule: use the imperative mood to describe the --files option
      fetch: improve grammar of "shallow roots" message
      setup: split "extensions found" messages into singular and plural
      graph: improve grammar of "invalid color" error message

Alexander Shopov (1):
      l10n: bg.po: Updated Bulgarian translation (5227t)

Anders Höckersten (1):
      describe-doc: clarify default length of abbreviation

Andrei Rybak (8):
      t: fix whitespace around &&
      mailinfo: use starts_with() when checking scissors
      *: fix typos which duplicate a word
      blame: correct name of config option in docs
      t: fix typos in test messages
      git-worktree.txt: fix typo in example path
      help: convert git_cmd to page in one place
      Documentation: render special characters correctly

Andrew Berry (1):
      docs: .gitignore parsing is to the top of the repo

Andrzej Hunt (15):
      bulk-checkin: make buffer reuse more obvious and safer
      split-index: use oideq instead of memcmp to compare object_id's
      builtin/checkout--worker: zero-initialise struct to avoid MSAN complaints
      fmt-merge-msg: free newly allocated temporary strings when done
      environment: move strbuf into block to plug leak
      builtin/submodule--helper: release unused strbuf to avoid leak
      builtin/for-each-repo: remove unnecessary argv copy to plug leak
      diffcore-rename: move old_dir/new_dir definition to plug leak
      ref-filter: also free head for ATOM_HEAD to avoid leak
      read-cache: call diff_setup_done to avoid leak
      convert: release strbuf to avoid leak
      builtin/mv: free or UNLEAK multiple pointers at end of cmd_mv
      builtin/merge: free found_ref when done
      builtin/rebase: fix options.strategy memory lifecycle
      reset: clear_unpack_trees_porcelain to plug leak

Atharva Raykar (6):
      MyFirstContribution: link #git-devel to Libera Chat
      submodule--helper: remove redundant include
      t7400: test failure to add submodule in tracked path
      submodule: prefix die messages with 'fatal'
      submodule--helper: refactor module_clone()
      submodule--helper: introduce add-clone subcommand

Bagas Sanjaya (5):
      l10n: id.po: fix mismatched variable names
      diff: --pickaxe-all typofix
      l10n: id: po-id for 2.33.0 (round 1)
      l10n: id: mismatch variable name fixes
      l10n: id: po-id for 2.33.0 round 2

Beshr Kayali (1):
      Documentation: fix typo in the --patch option of the commit command

Carlo Marcelo Arenas Belón (4):
      config.mak.uname: PCRE1 cleanup
      t7508: avoid non POSIX BRE
      oidtree: avoid nested struct oidtree_node
      object-store: avoid extra ';' from KHASH_INIT

Christopher Diaz Riveros (1):
      l10n: es: 2.33.0 round 2

Daniel Santos (12):
      l10n: pt_PT: add Portuguese translations part 4
      l10n: pt_PT: add Portuguese translations part 5
      l10n: pt_PT: translation tables
      l10n: pt_PT: remove trailing comments
      l10n: pt_PT: update git-po-helper
      l10n: pt_PT: translated git v2.33.0
      l10n: pt_PT: update translation tables
      l10n: pt_PT: cleaning duplicate translations
      l10n: pt_PT: cleaning flags mismatch
      l10n: pt_PT: update translation table
      l10n: pt_PT: git-po-helper update
      l10n: pt_PT: v2.33.0 round 2

Dennis Ameling (2):
      cmake(windows): set correct path to the system Git config
      ci (vs-build): build with NO_GETTEXT

Denton Liu (2):
      pkt-line: replace "stateless separator" with "response end"
      git-diff: fix missing --merge-base docs

Derrick Stolee (28):
      hashfile: use write_in_full()
      csum-file.h: increase hashfile buffer size
      read-cache: use hashfile instead of git_hash_ctx
      read-cache: delete unused hashing methods
      *: fix typos
      sparse-index: skip indexes with unmerged entries
      sparse-index: include EXTENDED flag when expanding
      t1092: replace incorrect 'echo' with 'cat'
      t1092: expand repository data shape
      t1092: add tests for status/add and sparse files
      unpack-trees: preserve cache_bottom
      unpack-trees: compare sparse directories correctly
      unpack-trees: rename unpack_nondirectories()
      unpack-trees: unpack sparse directory entries
      dir.c: accept a directory as part of cone-mode patterns
      diff-lib: handle index diffs with sparse dirs
      status: skip sparse-checkout percentage with sparse-index
      status: use sparse-index throughout
      wt-status: expand added sparse directory entries
      fsmonitor: integrate with sparse index
      t1092: document bad sparse-checkout behavior
      p2000: add 'git checkout -' test and decrease depth
      p2000: compress repo names
      commit: integrate with sparse-index
      sparse-index: recompute cache-tree
      checkout: stop expanding sparse indexes
      t1092: document bad 'git checkout' behavior
      unpack-trees: resolve sparse-directory/file conflicts

Elijah Newren (36):
      t6423: rename file within directory that other side renamed
      Documentation/technical: describe remembering renames optimization
      fast-rebase: change assert() to BUG()
      fast-rebase: write conflict state to working tree, index, and HEAD
      t6429: testcases for remembering renames
      merge-ort: add data structures for in-memory caching of rename detection
      merge-ort: populate caches of rename detection results
      merge-ort: add code to check for whether cached renames can be reused
      merge-ort: avoid accidental API mis-use
      merge-ort: preserve cached renames for the appropriate side
      merge-ort: add helper functions for using cached renames
      merge-ort: handle interactions of caching and rename/rename(1to1) cases
      merge-ort, diffcore-rename: employ cached renames when possible
      merge-ort: replace string_list_df_name_compare with faster alternative
      diffcore-rename: avoid unnecessary strdup'ing in break_idx
      Fix various issues found in comments
      merge-ort: miscellaneous touch-ups
      promisor-remote: output trace2 statistics for number of objects fetched
      t6421: add tests checking for excessive object downloads during merge
      diffcore-rename: allow different missing_object_cb functions
      diffcore-rename: use a different prefetch for basename comparisons
      merge-ort: add prefetching for content merges
      t6423: test directory renames causing rename-to-self
      merge-ort: ensure we consult df_conflict and path_conflicts
      merge-recursive: handle rename-to-self case
      diff: correct warning message when renameLimit exceeded
      doc: clarify documentation for rename/copy limits
      diffcore-rename: treat a rename_limit of 0 as unlimited
      rename: bump limit defaults yet again
      merge-ort: resolve paths early when we have sufficient information
      merge-ort: add some more explanations in collect_merge_info_callback()
      merge-ort: add data structures for allowable trivial directory resolves
      merge-ort: add a handle_deferred_entries() helper function
      merge-ort: defer recursing into directories when merge base is matched
      merge-ort: avoid recursing into directories when we don't need to
      merge-ort: restart merge with cached renames to reduce process entry cost

Emir Sarı (2):
      l10n: tr: v2.33.0 round 1
      l10n: tr: v2.33 (round 2)

Eric Wong (6):
      xmmap: inform Linux users of tuning knobs on ENOMEM
      speed up alt_odb_usable() with many alternates
      avoid strlen via strbuf_addstr in link_alt_odb_entry
      make object_directory.loose_objects_subdir_seen a bitmap
      oidcpy_with_padding: constify `src' arg
      oidtree: a crit-bit tree for odb_loose_cache

Fabian Wermelinger (1):
      completion: bash: fix late declaration of __git_cmd_idx

Fangyi Zhou (1):
      l10n: zh_CN: Revision for git v2.32.0 l10n round 1

Felipe Contreras (33):
      doc: refactor common asciidoc dependencies
      doc: improve asciidoc dependencies
      doc: remove unnecessary rm instances
      doc: simplify Makefile using .DELETE_ON_ERROR
      doc: avoid using rm directly
      push: rename !triangular to same_remote
      push: hedge code of default=simple
      push: copy code to setup_push_simple()
      push: reorganize setup_push_simple()
      push: simplify setup_push_simple()
      push: remove unused code in setup_push_upstream()
      doc: push: explain default=simple correctly
      push: create new get_upstream_ref() helper
      push: return immediately in trivial switch case
      push: split switch cases
      push: factor out null branch check
      push: only get the branch when needed
      push: make setup_push_* return the dst
      push: trivial simplifications
      push: get rid of all the setup_push_* functions
      push: factor out the typical case
      push: remove redundant check
      push: remove trivial function
      push: only check same_remote when needed
      push: don't get a full remote object
      doc: merge: mention default of defaulttoupstream
      doc: avoid using the gender of other people
      comments: avoid using the gender of our users
      pull: cleanup autostash check
      pull: trivial cleanup
      pull: trivial whitespace style fix
      doc: pull: fix rebase=false documentation
      test: fix for COLUMNS and bash 5

Gregory Anders (1):
      git-send-email: add option to specify sendmail command

Han-Wen Nienhuys (26):
      refs: make explicit that ref_iterator_peel returns boolean
      t4202: split testcase for invalid HEAD symref and HEAD hash
      t/helper/ref-store: initialize oid in resolve-ref
      t9300: check ref existence using test-helper rather than a file system check
      t5601: read HEAD using rev-parse
      t1401: use tar to snapshot and restore repo state
      t1401-symbolic-ref: avoid direct filesystem access
      t1413: use tar to save and restore entire .git directory
      t1301: fix typo in error message
      t5000: reformat indentation to the latest fashion
      t5000: inspect HEAD using git-rev-parse
      t7003: use rev-parse rather than FS inspection
      t5304: restyle: trim empty lines, drop ':' before >
      t5304: use "reflog expire --all" to clear the reflog
      test-lib: provide test prereq REFFILES
      t1407: require REFFILES for for_each_reflog test
      t1414: mark corruption test with REFFILES
      t2017: mark --orphan/logAllRefUpdates=false test as REFFILES
      t1404: mark tests that muck with .git directly as REFFILES.
      t7900: stop checking for loose refs
      t7003: check reflog existence only for REFFILES
      t4202: mark bogus head hash test with REFFILES
      t1415: set REFFILES for test specific to storage format
      t1415: avoid direct filesystem access for writing refs
      t7509: avoid direct file access for writing CHERRY_PICK_HEAD
      refs/debug: quote prefix

Hu Jialun (2):
      commit: reorganise commit hint strings
      commit: remove irrelavent prompt on `--allow-empty-message`

Jean-Noël Avila (5):
      help: fix small typo in error message
      l10n: fr: fix typo
      l10n: fr.po v2.33 rnd 1
      l10n: fr.po fix typos in commands and variables
      l10n: fr.po v2.33 rnd 2

Jeff King (27):
      clone: clean up directory after transport_fetch_refs() failure
      fetch-pack: signal v2 server that we are done making requests
      doc: explain the use of color.pager
      doc: warn people against --max-pack-size
      ll_binary_merge(): handle XDL_MERGE_FAVOR_UNION
      ll_union_merge(): pass name labels to ll_xdl_merge()
      ll_union_merge(): rename path_unused parameter
      add_pending_object_with_path(): work around "gcc -O3" complaint
      bitmaps: don't recurse into trees already in the bitmap
      t: use portable wrapper for readlink(1)
      pretty.h: update and expand docstring for userformat_find_requirements()
      log: avoid loading decorations for userformats that don't need it
      object.h: expand docstring for lookup_unknown_object()
      object.h: add lookup_object_by_type() function
      load_ref_decorations(): avoid parsing non-tag objects
      add_ref_decoration(): rename s/type/deco_type/
      test-lib: avoid accidental globbing in match_pattern_list()
      doc/rev-list-options: fix duplicate word typo
      load_ref_decorations(): fix decoration with tags
      t0000: clear GIT_SKIP_TESTS before running sub-tests
      doc/git-config: explain --file instead of referring to GIT_CONFIG
      doc/git-config: clarify GIT_CONFIG environment variable
      doc/git-config: simplify "override" advice for FILES section
      pack-bitmap: check pack validity when opening bitmap
      submodule: drop unused sm_name parameter from show_fetch_remotes()
      ci: run "apt-get update" before "apt-get install"
      ci/install-dependencies: handle "sparse" job package installs

Jiang Xin (11):
      t6020: fix incompatible parameter expansion
      sideband: don't lose clear-to-eol at packet boundary
      test: compare raw output, not mangle tabs and spaces
      test: refactor to use "test_commit" to create commits
      test: refactor to use "get_abbrev_oid" to get abbrev oid
      l10n: fixed tripple-letter typos
      l10n: git.pot: v2.33.0 round 1 (38 new, 15 removed)
      l10n: git.pot: v2.33.0 round 2 (11 new, 8 removed)
      l10n: README: refactor to use GFM syntax
      l10n: zh_CN: for git v2.33.0 l10n round 2
      l10n: TEAMS: change Simplified Chinese team leader

Johannes Schindelin (15):
      multimail: stop shipping a copy
      subtree: fix the GIT_EXEC_PATH sanity check to work on Windows
      subtree: fix assumption about the directory separator
      pager: avoid setting COLUMNS when we're guessing its value
      mingw: move Git for Windows' system config where users expect it
      config: normalize the path of the system gitconfig
      ci: use the new GitHub Action to download git-sdk-64-minimal
      ci (vs-build): use `cmd` to copy the DLLs, not `powershell`
      ci: upgrade to using actions/{up,down}load-artifacts v2
      ci (windows): transfer also the Git-tracked files to the test jobs
      artifacts-tar: respect NO_GETTEXT
      ci: accelerate the checkout
      ci: run `make sparse` as part of the GitHub workflow
      ci(check-whitespace): stop requiring a read/write token
      ci(check-whitespace): restrict to the intended commits

Jonathan Nieder (2):
      xsize_t: avoid implementation defined behavior when len < 0
      Revert 'diff-merges: let "-m" imply "-p"'

Jonathan Tan (7):
      repository: move global r_f_p_c to repo struct
      promisor-remote: support per-repository config
      submodule: refrain from filtering GIT_CONFIG_COUNT
      run-command: refactor subprocess env preparation
      promisor-remote: teach lazy-fetch in any repo
      unpack-trees: refactor prefetching code
      cache-tree: prefetch in partial clone read-tree

Jordi Mas (3):
      l10n: Update Catalan translation
      l10n: Update Catalan translation
      l10n: Update Catalan translation

Josh Steadmon (1):
      docs: fix api-trace2 doc for "too_many_files" event

Julian Verdurmen (1):
      userdiff: add support for C# record types

Junio C Hamano (14):
      revisions(7): clarify that most commands take a single revision range
      The first batch post Git 2.32
      The second batch
      The third batch
      The fourth batch
      CodingGuidelines: recommend gender-neutral description
      The fifth batch
      The sixth batch
      The seventh batch
      Git 2.33-rc0
      The eighth batch
      Git 2.33-rc1
      Git 2.33-rc2
      Git 2.33

Kaartic Sivaraam (1):
      submodule: remove unnecessary `prefix` based option logic

Matheus Tavares (1):
      parallel-checkout: send the new object_id algo field to the workers

Matthew Rogers (3):
      cmake: add knob to disable vcpkg
      cmake: create compile_commands.json by default
      cmake: add warning for ignored MSGFMT_EXE

Michael Schindler (1):
      mergetools/kdiff3: make kdiff3 work on Windows too

Patrick Steinhardt (2):
      perf: fix when running with TEST_OUTPUT_DIRECTORY
      t0000: fix test if run with TEST_OUTPUT_DIRECTORY

Peter Krefting (3):
      l10n: fixed typos of mismatched constant strings
      l10n: sv.po: Update Swedish translation (5227t0f0u)
      l10n: sv.po: Update Swedish translation (5230t0f0u)

Philippe Blain (6):
      parse-options: don't complete option aliases by default
      doc: clarify description of 'submodule.recurse'
      merge: add missing word "strategy" to a message
      Documentation: define 'MERGE_AUTOSTASH'
      merge: apply autostash if fast-forward fails
      merge: apply autostash if merge strategy fails

Ralf Thielow (3):
      l10n: update German translation for Git v2.33.0
      l10n: de.po: fix typos
      l10n: update German translation for Git v2.33.0 (rnd2)

René Scharfe (5):
      grep: report missing left operand of --and
      khash: clarify that allocations never fail
      use fspathhash() everywhere
      object-file: use unsigned arithmetic with bit mask
      oidtree: avoid unaligned access to crit-bit tree

Reuven Y (1):
      docs: improve fast-forward in glossary content

Sergey Organov (10):
      t4013: test that "-m" alone has no effect in "git log"
      t4013: test "git log -m --raw"
      t4013: test "git log -m --stat"
      t4013: test "git diff-tree -m"
      t4013: test "git diff-index -m"
      diff-merges: move specific diff-index "-m" handling to diff-index
      git-svn: stop passing "-m" to "git rev-list"
      stash list: stop passing "-m" to "git log"
      diff-merges: rename "combined_imply_patch" to "merges_imply_patch"
      diff-merges: let "-m" imply "-p"

Stephen Manz (3):
      t2400: clean up '"add" worktree with lock' test
      worktree: mark lock strings with `_()` for translation
      worktree: teach `add` to accept --reason <string> with --lock

Tao Klerks (1):
      Remove warning that repack only works on non-promisor packfiles

Taylor Blau (6):
      csum-file: introduce checksum_valid()
      commit-graph: rewrite to use checksum_valid()
      midx: don't reuse corrupt MIDXs when writing
      midx: report checksum mismatches during 'verify'
      multi-pack-index: fix potential segfault without sub-command
      pack-bitmap: clarify comment in filter_bitmap_exclude_type()

Teng Long (1):
      packfile-uri.txt: fix blobPackfileUri description

Thomas Braun (1):
      completion: add --anchored to diff's options

Thomas Bétous (1):
      mingw: align symlinks-related rmdir() behavior with Linux

Trần Ngọc Quân (3):
      l10n: vi.po(5227t): Updated Vietnamese translation for v2.32.0
      l10n: vi.po(5227t): Fixed typo after run git-po-helper
      l10n: vi.po(5230t): Updated translation for v2.32.0 round 2

Wolfgang Müller (1):
      rev-parse: mark die() messages for translation

Yi-Jyun Pan (2):
      l10n: zh_TW.po: update for v2.33.0 rnd 2
      l10n: zh_TW.po: remove the obsolete glossary

ZheNing Hu (4):
      ref-filter: add objectsize to used_atom
      ref-filter: introduce enum atom_type
      cat-file: handle trivial --batch format with --batch-all-objects
      cat-file: merge two block into one

brian m. carlson (1):
      rev-list: add option for --pretty=format without header

dorgon.chang (1):
      git-p4: fix failed submit by skip non-text data files

edef (1):
      mailinfo: don't discard names under 3 characters

Ævar Arnfjörð Bjarmason (93):
      test-lib: bring $remove_trash out of retirement
      test-lib tests: remove dead GIT_TEST_FRAMEWORK_SELFTEST variable
      test-lib-functions: reword "test_commit --append" docs
      test-lib-functions: document test_commit --no-tag
      test-lib functions: add an --annotated option to "test_commit"
      describe tests: convert setup to use test_commit
      test-lib functions: add --printf option to test_commit
      submodule tests: use symbolic-ref --short to discover branch name
      test-lib: reformat argument list in test_create_repo()
      test-lib: do not show advice about init.defaultBranch under --verbose
      test-lib: split up and deprecate test_create_repo()
      grep/pcre2 tests: reword comments referring to kwset
      pickaxe tests: refactor to use test_commit --append --printf
      pickaxe tests: add test for diffgrep_consume() internals
      pickaxe tests: add test for "log -S" not being a regex
      pickaxe tests: test for -G, -S and --find-object incompatibility
      pickaxe tests: add missing test for --no-pickaxe-regex being an error
      pickaxe: die when -G and --pickaxe-regex are combined
      pickaxe: die when --find-object and --pickaxe-all are combined
      diff.h: move pickaxe fields together again
      pickaxe/style: consolidate declarations and assignments
      perf: add performance test for pickaxe
      pickaxe: refactor function selection in diffcore-pickaxe()
      pickaxe: assert that we must have a needle under -G or -S
      pickaxe -S: support content with NULs under --pickaxe-regex
      pickaxe: rename variables in has_changes() for brevity
      pickaxe -S: slightly optimize contains()
      xdiff-interface: prepare for allowing early return
      xdiff-interface: allow early return from xdiff_emit_line_fn
      pickaxe -G: terminate early on matching lines
      pickaxe -G: don't special-case create/delete
      xdiff users: use designated initializers for out_line
      xdiff-interface: replace discard_hunk_line() with a flag
      describe tests: improve test for --work-tree & --dirty
      describe tests: refactor away from glob matching
      describe tests: don't rely on err.actual from "check_describe"
      describe tests: fix nested "test_expect_success" call
      describe tests: support -C in "check_describe"
      trace2: refactor to avoid gcc warning under -O3
      send-email tests: support GIT_TEST_PERL_FATAL_WARNINGS=true
      send-email tests: test for boolean variables without a value
      send-email: remove non-working support for "sendemail.smtpssl"
      send-email: refactor sendemail.smtpencryption config parsing
      send-email: copy "config_regxp" into git-send-email.perl
      send-email: lazily load config for a big speedup
      send-email: lazily shell out to "git var"
      send-email: use function syntax instead of barewords
      send-email: get rid of indirect object syntax
      send-email: lazily load modules for a big speedup
      perl: lazily load some common Git.pm setup code
      send-email: move trivial config handling to Perl
      perl: nano-optimize by replacing Cwd::cwd() with Cwd::getcwd()
      protocol-caps.h: add newline at end of file
      read-cache.c: don't guard calls to progress.c API
      xdiff: use BUG(...), not xdl_bug(...)
      builtins + test helpers: use return instead of exit() in cmd_*
      mktag tests: parse out options in helper
      mktag tests: invert --no-strict test
      show-branch tests: rename the one "show-branch" test file
      show-branch tests: modernize test code
      pre-commit hook tests: don't leave "actual" nonexisting on failure
      gc tests: add a test for the "pre-auto-gc" hook
      mktag tests: test hash-object --literally and unreachable fsck
      mktag tests: test update-ref and reachable fsck
      mktag tests: test for-each-ref
      mktag tests: test fast-export
      show-branch: don't <COLOR></RESET> for space characters
      show-branch tests: add missing tests
      Makefile: add and use the ".DELETE_ON_ERROR" flag
      test-lib.sh: set COLUMNS=80 for --verbose repeatability
      send-pack.c: move "no refs in common" abort earlier
      fetch: document the --negotiate-only option
      *.h: move some *_INIT to designated initializers
      *.c *_init(): define in terms of corresponding *_INIT macro
      dir.[ch]: replace dir_init() with DIR_INIT
      string-list.[ch]: add a string_list_init_{nodup,dup}()
      string-list.h users: change to use *_{nodup,dup}()
      bundle cmd: stop leaking memory from parse_options_cmd_bundle()
      bundle.c: use a temporary variable for OIDs and names
      bundle: remove "ref_list" in favor of string-list.c API
      imap-send.c: use less verbose strbuf_fread() idiom
      fetch: fix segfault in --negotiate-only without --negotiation-tip=*
      *.c static functions: don't forward-declare __attribute__
      sequencer.c: move static function to avoid forward decl
      *.c static functions: add missing __attribute__((format))
      *.h: add a few missing __attribute__((format))
      advice.h: add missing __attribute__((format)) & fix usage
      test-lib-functions: use test-tool for [de]packetize()
      SubmittingPatches: move discussion of Signed-off-by above "send"
      SubmittingPatches: replace discussion of Travis with GitHub Actions
      bundle tests: use ">file" not ": >file"
      bundle tests: use test_cmp instead of grep
      t0001: fix broken not-quite getcwd(3) test in bed67874e2

Đoàn Trần Công Danh (6):
      t: use configured TAR instead of tar
      doc/log: correct default for --decorate
      t: use user-specified utf-8 locale for testing svn
      test-lib-functions: introduce test_stdout_line_count
      t6400: preserve git ls-files exit status code
      t6402: preserve git exit status code

依云 (1):
      l10n: zh_CN: review for git v2.32.0 l10n round 1


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.33.0-rc2
@ 2021-08-11 23:22  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-08-11 23:22 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.33.0-rc2 is now available for testing at
the usual places.  It is comprised of 401 non-merge commits since
v2.32.0, contributed by 63 people, 19 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.33.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.32.0 are as follows.
Welcome to the Git development community!

  Anders Höckersten, Andrew Berry, Andy AO, Beshr Kayali,
  dorgon.chang, edef, Fabian Stelzer, Fabian Wermelinger, Gregory
  Anders, Greg Pflaum, Hu Jialun, Jason Hatton, Julian Verdurmen,
  Matthew Hughes, Michael Schindler, Reuven Y, Stephen Manz,
  Tao Klerks, and Teng Long.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alex Henrie, Anders Kaseorg,
  Andrei Rybak, Andrzej Hunt, Atharva Raykar, Bagas Sanjaya,
  brian m. carlson, Carlo Marcelo Arenas Belón, Christian Couder,
  Dennis Ameling, Denton Liu, Derrick Stolee, Đoàn Trần Công
  Danh, Elijah Newren, Emily Shaffer, Eric Sunshine, Eric Wong,
  Felipe Contreras, Han-Wen Nienhuys, Jean-Noël Avila, Jeff King,
  Jiang Xin, Johannes Schindelin, Jonathan Nieder, Jonathan Tan,
  Josh Steadmon, Junio C Hamano, Kaartic Sivaraam, Martin Ågren,
  Matheus Tavares, Matthew Rogers, Matthias Aßhauer, Nicolas
  Pitre, Patrick Steinhardt, Philippe Blain, René Scharfe,
  Sergey Organov, Shourya Shukla, Taylor Blau, Thomas Bétous,
  Thomas Braun, Wolfgang Müller, and ZheNing Hu.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git 2.33 Release Notes (draft)
==============================

Updates since Git 2.32
----------------------

UI, Workflows & Features

 * "git send-email" learned the "--sendmail-cmd" command line option
   and the "sendemail.sendmailCmd" configuration variable, which is a
   more sensible approach than the current way of repurposing the
   "smtp-server" that is meant to name the server to instead name the
   command to talk to the server.

 * The "-m" option in "git log -m" that does not specify which format,
   if any, of diff is desired did not have any visible effect; it now
   implies some form of diff (by default "--patch") is produced.

 * The userdiff pattern for C# learned the token "record".

 * "git rev-list" learns to omit the "commit <object-name>" header
   lines from the output with the `--no-commit-header` option.

 * "git worktree add --lock" learned to record why the worktree is
   locked with a custom message.


Performance, Internal Implementation, Development Support etc.

 * The code to handle the "--format" option in "for-each-ref" and
   friends made too many string comparisons on %(atom)s used in the
   format string, which has been corrected by converting them into
   enum when the format string is parsed.

 * Use the hashfile API in the codepath that writes the index file to
   reduce code duplication.

 * Repeated rename detections in a sequence of mergy operations have
   been optimized out for the 'ort' merge strategy.

 * Preliminary clean-up of tests before the main reftable changes
   hits the codebase.

 * The backend for "diff -G/-S" has been updated to use pcre2 engine
   when available.

 * Use ".DELETE_ON_ERROR" pseudo target to simplify our Makefile.

 * Code cleanup around struct_type_init() functions.

 * "git send-email" optimization.

 * GitHub Actions / CI update.
   (merge 0dc787a9f2 js/ci-windows-update later to maint).

 * Object accesses in repositories with many alternate object store
   have been optimized.

 * "git log" has been optimized not to waste cycles to load ref
   decoration data that may not be needed.

 * Many "printf"-like helper functions we have have been annotated
   with __attribute__() to catch placeholder/parameter mismatches.

 * Tests that cover protocol bits have been updated and helpers
   used there have been consolidated.

 * The CI gained a new job to run "make sparse" check.

 * "git status" codepath learned to work with sparsely populated index
   without hydrating it fully.

 * A guideline for gender neutral documentation has been added.

 * Documentation on "git diff -l<n>" and diff.renameLimit have been
   updated, and the defaults for these limits have been raised.

 * The completion support used to offer alternate spelling of options
   that exist only for compatibility, which has been corrected.

 * "TEST_OUTPUT_DIRECTORY=there make test" failed to work, which has
   been corrected.

 * "git bundle" gained more test coverage.

 * "git read-tree" had a codepath where blobs are fetched one-by-one
   from the promisor remote, which has been corrected to fetch in bulk.

 * Rewrite of "git submodule" in C continues.

 * "git checkout" and "git commit" learn to work without unnecessarily
   expanding sparse indexes.


Fixes since v2.32
-----------------

 * We historically rejected a very short string as an author name
   while accepting a patch e-mail, which has been loosened.
   (merge 72ee47ceeb ef/mailinfo-short-name later to maint).

 * The parallel checkout codepath did not initialize object ID field
   used to talk to the worker processes in a futureproof way.

 * Rewrite code that triggers undefined behaviour warning.
   (merge aafa5df0df jn/size-t-casted-to-off-t-fix later to maint).

 * The description of "fast-forward" in the glossary has been updated.
   (merge e22f2daed0 ry/clarify-fast-forward-in-glossary later to maint).

 * Recent "git clone" left a temporary directory behind when the
   transport layer returned an failure.
   (merge 6aacb7d861 jk/clone-clean-upon-transport-error later to maint).

 * "git fetch" over protocol v2 left its side of the socket open after
   it finished speaking, which unnecessarily wasted the resource on
   the other side.
   (merge ae1a7eefff jk/fetch-pack-v2-half-close-early later to maint).

 * The command line completion (in contrib/) learned that "git diff"
   takes the "--anchored" option.
   (merge d1e7c2cac9 tb/complete-diff-anchored later to maint).

 * "git-svn" tests assumed that "locale -a", which is used to pick an
   available UTF-8 locale, is available everywhere.  A knob has been
   introduced to allow testers to specify a suitable locale to use.
   (merge 482c962de4 dd/svn-test-wo-locale-a later to maint).

 * Update "git subtree" to work better on Windows.
   (merge 77f37de39f js/subtree-on-windows-fix later to maint).

 * Remove multimail from contrib/
   (merge f74d11471f js/no-more-multimail later to maint).

 * Make the codebase MSAN clean.
   (merge 4dbc55e87d ah/uninitialized-reads-fix later to maint).

 * Work around inefficient glob substitution in older versions of bash
   by rewriting parts of a test.
   (merge eb87c6f559 jx/t6020-with-older-bash later to maint).

 * Avoid duplicated work while building reachability bitmaps.
   (merge aa9ad6fee5 jk/bitmap-tree-optim later to maint).

 * We broke "GIT_SKIP_TESTS=t?000" to skip certain tests in recent
   update, which got fixed.

 * The side-band demultiplexer that is used to display progress output
   from the remote end did not clear the line properly when the end of
   line hits at a packet boundary, which has been corrected.

 * Some test scripts assumed that readlink(1) was universally
   installed and available, which is not the case.
   (merge 7c0afdf23c jk/test-without-readlink-1 later to maint).

 * Recent update to completion script (in contrib/) broke those who
   use the __git_complete helper to define completion to their custom
   command.
   (merge cea232194d fw/complete-cmd-idx-fix later to maint).

 * Output from some of our tests were affected by the width of the
   terminal that they were run in, which has been corrected by
   exporting a fixed value in the COLUMNS environment.
   (merge c49a177bec ab/fix-columns-to-80-during-tests later to maint).

 * On Windows, mergetool has been taught to find kdiff3.exe just like
   it finds winmerge.exe.
   (merge 47eb4c6890 ms/mergetools-kdiff3-on-windows later to maint).

 * When we cannot figure out how wide the terminal is, we use a
   fallback value of 80 ourselves (which cannot be avoided), but when
   we run the pager, we export it in COLUMNS, which forces the pager
   to use the hardcoded value, even when the pager is perfectly
   capable to figure it out itself.  Stop exporting COLUMNS when we
   fall back on the hardcoded default value for our own use.
   (merge 9b6e2c8b98 js/stop-exporting-bogus-columns later to maint).

 * "git cat-file --batch-all-objects"" misbehaved when "--batch" is in
   use and did not ask for certain object traits.
   (merge ee02ac6164 zh/cat-file-batch-fix later to maint).

 * Some code and doc clarification around "git push".

 * The "union" conflict resultion variant misbehaved when used with
   binary merge driver.
   (merge 382b601acd jk/union-merge-binary later to maint).

 * Prevent "git p4" from failing to submit changes to binary file.
   (merge 54662d5958 dc/p4-binary-submit-fix later to maint).

 * "git grep --and -e foo" ought to have been diagnosed as an error
   but instead segfaulted, which has been corrected.
   (merge fe7fe62d8d rs/grep-parser-fix later to maint).

 * The merge code had funny interactions between content based rename
   detection and directory rename detection.
   (merge 3585d0ea23 en/merge-dir-rename-corner-case-fix later to maint).

 * When rebuilding the multi-pack index file reusing an existing one,
   we used to blindly trust the existing file and ended up carrying
   corrupted data into the updated file, which has been corrected.
   (merge f89ecf7988 tb/midx-use-checksum later to maint).

 * Update the location of system-side configuration file on Windows.
   (merge e355307692 js/gfw-system-config-loc-fix later to maint).

 * Code recently added to support common ancestry negotiation during
   "git push" did not sanity check its arguments carefully enough.
   (merge eff40457a4 ab/fetch-negotiate-segv-fix later to maint).

 * Update the documentation not to assume users are of certain gender
   and adds to guidelines to do so.
   (merge 46a237f42f ds/gender-neutral-doc later to maint).

 * "git commit --allow-empty-message" won't abort the operation upon
   an empty message, but the hint shown in the editor said otherwise.
   (merge 6f70f00b4f hj/commit-allow-empty-message later to maint).

 * The code that gives an error message in "git multi-pack-index" when
   no subcommand is given tried to print a NULL pointer as a strong,
   which has been corrected.
   (merge 88617d11f9 tb/reverse-midx later to maint).

 * CI update.
   (merge a066a90db6 js/ci-check-whitespace-updates later to maint).

 * Documentation fix for "git pull --rebase=no".
   (merge d3236becec fc/pull-no-rebase-merges-theirs-into-ours later to maint).

 * A race between repacking and using pack bitmaps has been corrected.
   (merge dc1daacdcc jk/check-pack-valid-before-opening-bitmap later to maint).

 * The local changes stashed by "git merge --autostash" were lost when
   the merge failed in certain ways, which has been corrected.

 * Windows rmdir() equivalent behaves differently from POSIX ones in
   that when used on a symbolic link that points at a directory, the
   target directory gets removed, which has been corrected.
   (merge 3e7d4888e5 tb/mingw-rmdir-symlink-to-directory later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge bfe35a6165 ah/doc-describe later to maint).
   (merge f302c1e4aa jc/clarify-revision-range later to maint).
   (merge 3127ff90ea tl/fix-packfile-uri-doc later to maint).
   (merge a84216c684 jk/doc-color-pager later to maint).
   (merge 4e0a64a713 ab/trace2-squelch-gcc-warning later to maint).
   (merge 225f7fa847 ps/rev-list-object-type-filter later to maint).
   (merge 5317dfeaed dd/honor-users-tar-in-tests later to maint).
   (merge ace6d8e3d6 tk/partial-clone-repack-doc later to maint).
   (merge 7ba68e0cf1 js/trace2-discard-event-docfix later to maint).
   (merge 8603c419d3 fc/doc-default-to-upstream-config later to maint).
   (merge 1d72b604ef jk/revision-squelch-gcc-warning later to maint).
   (merge abcb66c614 ar/typofix later to maint).
   (merge 9853830787 ah/graph-typofix later to maint).
   (merge aac578492d ab/config-hooks-path-testfix later to maint).
   (merge 98c7656a18 ar/more-typofix later to maint).
   (merge 6fb9195f6c jk/doc-max-pack-size later to maint).
   (merge 4184cbd635 ar/mailinfo-memcmp-to-skip-prefix later to maint).
   (merge 91d2347033 ar/doc-libera-chat-in-my-first-contrib later to maint).
   (merge 338abb0f04 ab/cmd-foo-should-return later to maint).
   (merge 546096a5cb ab/xdiff-bug-cleanup later to maint).
   (merge b7b793d1e7 ab/progress-cleanup later to maint).
   (merge d94f9b8e90 ba/object-info later to maint).
   (merge 52ff891c03 ar/test-code-cleanup later to maint).
   (merge a0538e5c8b dd/document-log-decorate-default later to maint).
   (merge ce24797d38 mr/cmake later to maint).
   (merge 9eb542f2ee ab/pre-auto-gc-hook-test later to maint).
   (merge 9fffc38583 bk/doc-commit-typofix later to maint).
   (merge 1cf823d8f0 ks/submodule-cleanup later to maint).
   (merge ebbf5d2b70 js/config-mak-windows-pcre-fix later to maint).
   (merge 617480d75b hn/refs-iterator-peel-returns-boolean later to maint).
   (merge 6a24cc71ed ar/submodule-helper-include-cleanup later to maint).
   (merge 5632e838f8 rs/khash-alloc-cleanup later to maint).
   (merge b1d87fbaf1 jk/typofix later to maint).
   (merge e04170697a ab/gitignore-discovery-doc later to maint).
   (merge 8232a0ff48 dl/packet-read-response-end-fix later to maint).
   (merge eb448631fb dl/diff-merge-base later to maint).
   (merge c510928a25 hn/refs-debug-empty-prefix later to maint).
   (merge ddcb189d9d tb/bitmap-type-filter-comment-fix later to maint).
   (merge 878b399734 pb/submodule-recurse-doc later to maint).
   (merge 734283855f jk/config-env-doc later to maint).
   (merge 482e1488a9 ab/getcwd-test later to maint).
   (merge f0b922473e ar/doc-markup-fix later to maint).

----------------------------------------------------------------

Changes since v2.32.0 are as follows:

Alex Henrie (6):
      merge: don't translate literal commands
      stash: don't translate literal commands
      submodule: use the imperative mood to describe the --files option
      fetch: improve grammar of "shallow roots" message
      setup: split "extensions found" messages into singular and plural
      graph: improve grammar of "invalid color" error message

Anders Höckersten (1):
      describe-doc: clarify default length of abbreviation

Andrei Rybak (8):
      t: fix whitespace around &&
      mailinfo: use starts_with() when checking scissors
      *: fix typos which duplicate a word
      blame: correct name of config option in docs
      t: fix typos in test messages
      git-worktree.txt: fix typo in example path
      help: convert git_cmd to page in one place
      Documentation: render special characters correctly

Andrew Berry (1):
      docs: .gitignore parsing is to the top of the repo

Andrzej Hunt (15):
      bulk-checkin: make buffer reuse more obvious and safer
      split-index: use oideq instead of memcmp to compare object_id's
      builtin/checkout--worker: zero-initialise struct to avoid MSAN complaints
      fmt-merge-msg: free newly allocated temporary strings when done
      environment: move strbuf into block to plug leak
      builtin/submodule--helper: release unused strbuf to avoid leak
      builtin/for-each-repo: remove unnecessary argv copy to plug leak
      diffcore-rename: move old_dir/new_dir definition to plug leak
      ref-filter: also free head for ATOM_HEAD to avoid leak
      read-cache: call diff_setup_done to avoid leak
      convert: release strbuf to avoid leak
      builtin/mv: free or UNLEAK multiple pointers at end of cmd_mv
      builtin/merge: free found_ref when done
      builtin/rebase: fix options.strategy memory lifecycle
      reset: clear_unpack_trees_porcelain to plug leak

Atharva Raykar (6):
      MyFirstContribution: link #git-devel to Libera Chat
      submodule--helper: remove redundant include
      t7400: test failure to add submodule in tracked path
      submodule: prefix die messages with 'fatal'
      submodule--helper: refactor module_clone()
      submodule--helper: introduce add-clone subcommand

Bagas Sanjaya (1):
      diff: --pickaxe-all typofix

Beshr Kayali (1):
      Documentation: fix typo in the --patch option of the commit command

Carlo Marcelo Arenas Belón (4):
      config.mak.uname: PCRE1 cleanup
      t7508: avoid non POSIX BRE
      oidtree: avoid nested struct oidtree_node
      object-store: avoid extra ';' from KHASH_INIT

Dennis Ameling (2):
      cmake(windows): set correct path to the system Git config
      ci (vs-build): build with NO_GETTEXT

Denton Liu (2):
      pkt-line: replace "stateless separator" with "response end"
      git-diff: fix missing --merge-base docs

Derrick Stolee (28):
      hashfile: use write_in_full()
      csum-file.h: increase hashfile buffer size
      read-cache: use hashfile instead of git_hash_ctx
      read-cache: delete unused hashing methods
      *: fix typos
      sparse-index: skip indexes with unmerged entries
      sparse-index: include EXTENDED flag when expanding
      t1092: replace incorrect 'echo' with 'cat'
      t1092: expand repository data shape
      t1092: add tests for status/add and sparse files
      unpack-trees: preserve cache_bottom
      unpack-trees: compare sparse directories correctly
      unpack-trees: rename unpack_nondirectories()
      unpack-trees: unpack sparse directory entries
      dir.c: accept a directory as part of cone-mode patterns
      diff-lib: handle index diffs with sparse dirs
      status: skip sparse-checkout percentage with sparse-index
      status: use sparse-index throughout
      wt-status: expand added sparse directory entries
      fsmonitor: integrate with sparse index
      t1092: document bad sparse-checkout behavior
      p2000: add 'git checkout -' test and decrease depth
      p2000: compress repo names
      commit: integrate with sparse-index
      sparse-index: recompute cache-tree
      checkout: stop expanding sparse indexes
      t1092: document bad 'git checkout' behavior
      unpack-trees: resolve sparse-directory/file conflicts

Elijah Newren (36):
      t6423: rename file within directory that other side renamed
      Documentation/technical: describe remembering renames optimization
      fast-rebase: change assert() to BUG()
      fast-rebase: write conflict state to working tree, index, and HEAD
      t6429: testcases for remembering renames
      merge-ort: add data structures for in-memory caching of rename detection
      merge-ort: populate caches of rename detection results
      merge-ort: add code to check for whether cached renames can be reused
      merge-ort: avoid accidental API mis-use
      merge-ort: preserve cached renames for the appropriate side
      merge-ort: add helper functions for using cached renames
      merge-ort: handle interactions of caching and rename/rename(1to1) cases
      merge-ort, diffcore-rename: employ cached renames when possible
      merge-ort: replace string_list_df_name_compare with faster alternative
      diffcore-rename: avoid unnecessary strdup'ing in break_idx
      Fix various issues found in comments
      merge-ort: miscellaneous touch-ups
      promisor-remote: output trace2 statistics for number of objects fetched
      t6421: add tests checking for excessive object downloads during merge
      diffcore-rename: allow different missing_object_cb functions
      diffcore-rename: use a different prefetch for basename comparisons
      merge-ort: add prefetching for content merges
      t6423: test directory renames causing rename-to-self
      merge-ort: ensure we consult df_conflict and path_conflicts
      merge-recursive: handle rename-to-self case
      diff: correct warning message when renameLimit exceeded
      doc: clarify documentation for rename/copy limits
      diffcore-rename: treat a rename_limit of 0 as unlimited
      rename: bump limit defaults yet again
      merge-ort: resolve paths early when we have sufficient information
      merge-ort: add some more explanations in collect_merge_info_callback()
      merge-ort: add data structures for allowable trivial directory resolves
      merge-ort: add a handle_deferred_entries() helper function
      merge-ort: defer recursing into directories when merge base is matched
      merge-ort: avoid recursing into directories when we don't need to
      merge-ort: restart merge with cached renames to reduce process entry cost

Eric Wong (6):
      xmmap: inform Linux users of tuning knobs on ENOMEM
      speed up alt_odb_usable() with many alternates
      avoid strlen via strbuf_addstr in link_alt_odb_entry
      make object_directory.loose_objects_subdir_seen a bitmap
      oidcpy_with_padding: constify `src' arg
      oidtree: a crit-bit tree for odb_loose_cache

Fabian Wermelinger (1):
      completion: bash: fix late declaration of __git_cmd_idx

Felipe Contreras (33):
      doc: refactor common asciidoc dependencies
      doc: improve asciidoc dependencies
      doc: remove unnecessary rm instances
      doc: simplify Makefile using .DELETE_ON_ERROR
      doc: avoid using rm directly
      push: rename !triangular to same_remote
      push: hedge code of default=simple
      push: copy code to setup_push_simple()
      push: reorganize setup_push_simple()
      push: simplify setup_push_simple()
      push: remove unused code in setup_push_upstream()
      doc: push: explain default=simple correctly
      push: create new get_upstream_ref() helper
      push: return immediately in trivial switch case
      push: split switch cases
      push: factor out null branch check
      push: only get the branch when needed
      push: make setup_push_* return the dst
      push: trivial simplifications
      push: get rid of all the setup_push_* functions
      push: factor out the typical case
      push: remove redundant check
      push: remove trivial function
      push: only check same_remote when needed
      push: don't get a full remote object
      doc: merge: mention default of defaulttoupstream
      doc: avoid using the gender of other people
      comments: avoid using the gender of our users
      pull: cleanup autostash check
      pull: trivial cleanup
      pull: trivial whitespace style fix
      doc: pull: fix rebase=false documentation
      test: fix for COLUMNS and bash 5

Gregory Anders (1):
      git-send-email: add option to specify sendmail command

Han-Wen Nienhuys (26):
      refs: make explicit that ref_iterator_peel returns boolean
      t4202: split testcase for invalid HEAD symref and HEAD hash
      t/helper/ref-store: initialize oid in resolve-ref
      t9300: check ref existence using test-helper rather than a file system check
      t5601: read HEAD using rev-parse
      t1401: use tar to snapshot and restore repo state
      t1401-symbolic-ref: avoid direct filesystem access
      t1413: use tar to save and restore entire .git directory
      t1301: fix typo in error message
      t5000: reformat indentation to the latest fashion
      t5000: inspect HEAD using git-rev-parse
      t7003: use rev-parse rather than FS inspection
      t5304: restyle: trim empty lines, drop ':' before >
      t5304: use "reflog expire --all" to clear the reflog
      test-lib: provide test prereq REFFILES
      t1407: require REFFILES for for_each_reflog test
      t1414: mark corruption test with REFFILES
      t2017: mark --orphan/logAllRefUpdates=false test as REFFILES
      t1404: mark tests that muck with .git directly as REFFILES.
      t7900: stop checking for loose refs
      t7003: check reflog existence only for REFFILES
      t4202: mark bogus head hash test with REFFILES
      t1415: set REFFILES for test specific to storage format
      t1415: avoid direct filesystem access for writing refs
      t7509: avoid direct file access for writing CHERRY_PICK_HEAD
      refs/debug: quote prefix

Hu Jialun (2):
      commit: reorganise commit hint strings
      commit: remove irrelavent prompt on `--allow-empty-message`

Jean-Noël Avila (1):
      help: fix small typo in error message

Jeff King (27):
      clone: clean up directory after transport_fetch_refs() failure
      fetch-pack: signal v2 server that we are done making requests
      doc: explain the use of color.pager
      doc: warn people against --max-pack-size
      ll_binary_merge(): handle XDL_MERGE_FAVOR_UNION
      ll_union_merge(): pass name labels to ll_xdl_merge()
      ll_union_merge(): rename path_unused parameter
      add_pending_object_with_path(): work around "gcc -O3" complaint
      bitmaps: don't recurse into trees already in the bitmap
      t: use portable wrapper for readlink(1)
      pretty.h: update and expand docstring for userformat_find_requirements()
      log: avoid loading decorations for userformats that don't need it
      object.h: expand docstring for lookup_unknown_object()
      object.h: add lookup_object_by_type() function
      load_ref_decorations(): avoid parsing non-tag objects
      add_ref_decoration(): rename s/type/deco_type/
      test-lib: avoid accidental globbing in match_pattern_list()
      doc/rev-list-options: fix duplicate word typo
      load_ref_decorations(): fix decoration with tags
      t0000: clear GIT_SKIP_TESTS before running sub-tests
      doc/git-config: explain --file instead of referring to GIT_CONFIG
      doc/git-config: clarify GIT_CONFIG environment variable
      doc/git-config: simplify "override" advice for FILES section
      pack-bitmap: check pack validity when opening bitmap
      submodule: drop unused sm_name parameter from show_fetch_remotes()
      ci: run "apt-get update" before "apt-get install"
      ci/install-dependencies: handle "sparse" job package installs

Jiang Xin (5):
      t6020: fix incompatible parameter expansion
      sideband: don't lose clear-to-eol at packet boundary
      test: compare raw output, not mangle tabs and spaces
      test: refactor to use "test_commit" to create commits
      test: refactor to use "get_abbrev_oid" to get abbrev oid

Johannes Schindelin (15):
      multimail: stop shipping a copy
      subtree: fix the GIT_EXEC_PATH sanity check to work on Windows
      subtree: fix assumption about the directory separator
      pager: avoid setting COLUMNS when we're guessing its value
      mingw: move Git for Windows' system config where users expect it
      config: normalize the path of the system gitconfig
      ci: use the new GitHub Action to download git-sdk-64-minimal
      ci (vs-build): use `cmd` to copy the DLLs, not `powershell`
      ci: upgrade to using actions/{up,down}load-artifacts v2
      ci (windows): transfer also the Git-tracked files to the test jobs
      artifacts-tar: respect NO_GETTEXT
      ci: accelerate the checkout
      ci: run `make sparse` as part of the GitHub workflow
      ci(check-whitespace): stop requiring a read/write token
      ci(check-whitespace): restrict to the intended commits

Jonathan Nieder (2):
      xsize_t: avoid implementation defined behavior when len < 0
      Revert 'diff-merges: let "-m" imply "-p"'

Jonathan Tan (7):
      repository: move global r_f_p_c to repo struct
      promisor-remote: support per-repository config
      submodule: refrain from filtering GIT_CONFIG_COUNT
      run-command: refactor subprocess env preparation
      promisor-remote: teach lazy-fetch in any repo
      unpack-trees: refactor prefetching code
      cache-tree: prefetch in partial clone read-tree

Josh Steadmon (1):
      docs: fix api-trace2 doc for "too_many_files" event

Julian Verdurmen (1):
      userdiff: add support for C# record types

Junio C Hamano (13):
      revisions(7): clarify that most commands take a single revision range
      The first batch post Git 2.32
      The second batch
      The third batch
      The fourth batch
      CodingGuidelines: recommend gender-neutral description
      The fifth batch
      The sixth batch
      The seventh batch
      Git 2.33-rc0
      The eighth batch
      Git 2.33-rc1
      Git 2.33-rc2

Kaartic Sivaraam (1):
      submodule: remove unnecessary `prefix` based option logic

Matheus Tavares (1):
      parallel-checkout: send the new object_id algo field to the workers

Matthew Rogers (3):
      cmake: add knob to disable vcpkg
      cmake: create compile_commands.json by default
      cmake: add warning for ignored MSGFMT_EXE

Michael Schindler (1):
      mergetools/kdiff3: make kdiff3 work on Windows too

Patrick Steinhardt (2):
      perf: fix when running with TEST_OUTPUT_DIRECTORY
      t0000: fix test if run with TEST_OUTPUT_DIRECTORY

Philippe Blain (6):
      parse-options: don't complete option aliases by default
      doc: clarify description of 'submodule.recurse'
      merge: add missing word "strategy" to a message
      Documentation: define 'MERGE_AUTOSTASH'
      merge: apply autostash if fast-forward fails
      merge: apply autostash if merge strategy fails

René Scharfe (4):
      grep: report missing left operand of --and
      khash: clarify that allocations never fail
      use fspathhash() everywhere
      object-file: use unsigned arithmetic with bit mask

Reuven Y (1):
      docs: improve fast-forward in glossary content

Sergey Organov (10):
      t4013: test that "-m" alone has no effect in "git log"
      t4013: test "git log -m --raw"
      t4013: test "git log -m --stat"
      t4013: test "git diff-tree -m"
      t4013: test "git diff-index -m"
      diff-merges: move specific diff-index "-m" handling to diff-index
      git-svn: stop passing "-m" to "git rev-list"
      stash list: stop passing "-m" to "git log"
      diff-merges: rename "combined_imply_patch" to "merges_imply_patch"
      diff-merges: let "-m" imply "-p"

Stephen Manz (3):
      t2400: clean up '"add" worktree with lock' test
      worktree: mark lock strings with `_()` for translation
      worktree: teach `add` to accept --reason <string> with --lock

Tao Klerks (1):
      Remove warning that repack only works on non-promisor packfiles

Taylor Blau (6):
      csum-file: introduce checksum_valid()
      commit-graph: rewrite to use checksum_valid()
      midx: don't reuse corrupt MIDXs when writing
      midx: report checksum mismatches during 'verify'
      multi-pack-index: fix potential segfault without sub-command
      pack-bitmap: clarify comment in filter_bitmap_exclude_type()

Teng Long (1):
      packfile-uri.txt: fix blobPackfileUri description

Thomas Braun (1):
      completion: add --anchored to diff's options

Thomas Bétous (1):
      mingw: align symlinks-related rmdir() behavior with Linux

Wolfgang Müller (1):
      rev-parse: mark die() messages for translation

ZheNing Hu (4):
      ref-filter: add objectsize to used_atom
      ref-filter: introduce enum atom_type
      cat-file: handle trivial --batch format with --batch-all-objects
      cat-file: merge two block into one

brian m. carlson (1):
      rev-list: add option for --pretty=format without header

dorgon.chang (1):
      git-p4: fix failed submit by skip non-text data files

edef (1):
      mailinfo: don't discard names under 3 characters

Ævar Arnfjörð Bjarmason (93):
      test-lib: bring $remove_trash out of retirement
      test-lib tests: remove dead GIT_TEST_FRAMEWORK_SELFTEST variable
      test-lib-functions: reword "test_commit --append" docs
      test-lib-functions: document test_commit --no-tag
      test-lib functions: add an --annotated option to "test_commit"
      describe tests: convert setup to use test_commit
      test-lib functions: add --printf option to test_commit
      submodule tests: use symbolic-ref --short to discover branch name
      test-lib: reformat argument list in test_create_repo()
      test-lib: do not show advice about init.defaultBranch under --verbose
      test-lib: split up and deprecate test_create_repo()
      grep/pcre2 tests: reword comments referring to kwset
      pickaxe tests: refactor to use test_commit --append --printf
      pickaxe tests: add test for diffgrep_consume() internals
      pickaxe tests: add test for "log -S" not being a regex
      pickaxe tests: test for -G, -S and --find-object incompatibility
      pickaxe tests: add missing test for --no-pickaxe-regex being an error
      pickaxe: die when -G and --pickaxe-regex are combined
      pickaxe: die when --find-object and --pickaxe-all are combined
      diff.h: move pickaxe fields together again
      pickaxe/style: consolidate declarations and assignments
      perf: add performance test for pickaxe
      pickaxe: refactor function selection in diffcore-pickaxe()
      pickaxe: assert that we must have a needle under -G or -S
      pickaxe -S: support content with NULs under --pickaxe-regex
      pickaxe: rename variables in has_changes() for brevity
      pickaxe -S: slightly optimize contains()
      xdiff-interface: prepare for allowing early return
      xdiff-interface: allow early return from xdiff_emit_line_fn
      pickaxe -G: terminate early on matching lines
      pickaxe -G: don't special-case create/delete
      xdiff users: use designated initializers for out_line
      xdiff-interface: replace discard_hunk_line() with a flag
      describe tests: improve test for --work-tree & --dirty
      describe tests: refactor away from glob matching
      describe tests: don't rely on err.actual from "check_describe"
      describe tests: fix nested "test_expect_success" call
      describe tests: support -C in "check_describe"
      trace2: refactor to avoid gcc warning under -O3
      send-email tests: support GIT_TEST_PERL_FATAL_WARNINGS=true
      send-email tests: test for boolean variables without a value
      send-email: remove non-working support for "sendemail.smtpssl"
      send-email: refactor sendemail.smtpencryption config parsing
      send-email: copy "config_regxp" into git-send-email.perl
      send-email: lazily load config for a big speedup
      send-email: lazily shell out to "git var"
      send-email: use function syntax instead of barewords
      send-email: get rid of indirect object syntax
      send-email: lazily load modules for a big speedup
      perl: lazily load some common Git.pm setup code
      send-email: move trivial config handling to Perl
      perl: nano-optimize by replacing Cwd::cwd() with Cwd::getcwd()
      protocol-caps.h: add newline at end of file
      read-cache.c: don't guard calls to progress.c API
      xdiff: use BUG(...), not xdl_bug(...)
      builtins + test helpers: use return instead of exit() in cmd_*
      mktag tests: parse out options in helper
      mktag tests: invert --no-strict test
      show-branch tests: rename the one "show-branch" test file
      show-branch tests: modernize test code
      pre-commit hook tests: don't leave "actual" nonexisting on failure
      gc tests: add a test for the "pre-auto-gc" hook
      mktag tests: test hash-object --literally and unreachable fsck
      mktag tests: test update-ref and reachable fsck
      mktag tests: test for-each-ref
      mktag tests: test fast-export
      show-branch: don't <COLOR></RESET> for space characters
      show-branch tests: add missing tests
      Makefile: add and use the ".DELETE_ON_ERROR" flag
      test-lib.sh: set COLUMNS=80 for --verbose repeatability
      send-pack.c: move "no refs in common" abort earlier
      fetch: document the --negotiate-only option
      *.h: move some *_INIT to designated initializers
      *.c *_init(): define in terms of corresponding *_INIT macro
      dir.[ch]: replace dir_init() with DIR_INIT
      string-list.[ch]: add a string_list_init_{nodup,dup}()
      string-list.h users: change to use *_{nodup,dup}()
      bundle cmd: stop leaking memory from parse_options_cmd_bundle()
      bundle.c: use a temporary variable for OIDs and names
      bundle: remove "ref_list" in favor of string-list.c API
      imap-send.c: use less verbose strbuf_fread() idiom
      fetch: fix segfault in --negotiate-only without --negotiation-tip=*
      *.c static functions: don't forward-declare __attribute__
      sequencer.c: move static function to avoid forward decl
      *.c static functions: add missing __attribute__((format))
      *.h: add a few missing __attribute__((format))
      advice.h: add missing __attribute__((format)) & fix usage
      test-lib-functions: use test-tool for [de]packetize()
      SubmittingPatches: move discussion of Signed-off-by above "send"
      SubmittingPatches: replace discussion of Travis with GitHub Actions
      bundle tests: use ">file" not ": >file"
      bundle tests: use test_cmp instead of grep
      t0001: fix broken not-quite getcwd(3) test in bed67874e2

Đoàn Trần Công Danh (6):
      t: use configured TAR instead of tar
      doc/log: correct default for --decorate
      t: use user-specified utf-8 locale for testing svn
      test-lib-functions: introduce test_stdout_line_count
      t6400: preserve git ls-files exit status code
      t6402: preserve git exit status code


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.33.0-rc1
@ 2021-08-07  0:07  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-08-07  0:07 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.33.0-rc1 is now available for testing at
the usual places.  It is comprised of 396 non-merge commits since
v2.32.0, contributed by 63 people, 19 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.33.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.32.0 are as follows.
Welcome to the Git development community!

  Anders Höckersten, Andrew Berry, Andy AO, Beshr Kayali,
  dorgon.chang, edef, Fabian Stelzer, Fabian Wermelinger, Gregory
  Anders, Greg Pflaum, Hu Jialun, Jason Hatton, Julian Verdurmen,
  Matthew Hughes, Michael Schindler, Reuven Y, Stephen Manz,
  Tao Klerks, and Teng Long.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alex Henrie, Anders Kaseorg,
  Andrei Rybak, Andrzej Hunt, Atharva Raykar, Bagas Sanjaya,
  brian m. carlson, Carlo Marcelo Arenas Belón, Christian Couder,
  Dennis Ameling, Denton Liu, Derrick Stolee, Đoàn Trần Công
  Danh, Elijah Newren, Emily Shaffer, Eric Sunshine, Eric Wong,
  Felipe Contreras, Han-Wen Nienhuys, Jean-Noël Avila, Jeff King,
  Jiang Xin, Johannes Schindelin, Jonathan Nieder, Jonathan Tan,
  Josh Steadmon, Junio C Hamano, Kaartic Sivaraam, Martin Ågren,
  Matheus Tavares, Matthew Rogers, Matthias Aßhauer, Nicolas
  Pitre, Patrick Steinhardt, Philippe Blain, René Scharfe,
  Sergey Organov, Shourya Shukla, Taylor Blau, Thomas Bétous,
  Thomas Braun, Wolfgang Müller, and ZheNing Hu.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git 2.33 Release Notes (draft)
==============================

Backward compatibility notes
----------------------------

 * The "-m" option in "git log -m" that does not specify which format,
   if any, of diff is desired did not have any visible effect; it now
   implies some form of diff (by default "--patch") is produced.

   You can disable the diff output with "git log -m --no-patch", but
   then there probably isn't much point in passing "-m" in the first
   place ;-).


Updates since Git 2.32
----------------------

UI, Workflows & Features

 * "git send-email" learned the "--sendmail-cmd" command line option
   and the "sendemail.sendmailCmd" configuration variable, which is a
   more sensible approach than the current way of repurposing the
   "smtp-server" that is meant to name the server to instead name the
   command to talk to the server.

 * The "-m" option in "git log -m" that does not specify which format,
   if any, of diff is desired did not have any visible effect; it now
   implies some form of diff (by default "--patch") is produced.

 * The userdiff pattern for C# learned the token "record".

 * "git rev-list" learns to omit the "commit <object-name>" header
   lines from the output with the `--no-commit-header` option.

 * "git worktree add --lock" learned to record why the worktree is
   locked with a custom message.


Performance, Internal Implementation, Development Support etc.

 * The code to handle the "--format" option in "for-each-ref" and
   friends made too many string comparisons on %(atom)s used in the
   format string, which has been corrected by converting them into
   enum when the format string is parsed.

 * Use the hashfile API in the codepath that writes the index file to
   reduce code duplication.

 * Repeated rename detections in a sequence of mergy operations have
   been optimized out for the 'ort' merge strategy.

 * Preliminary clean-up of tests before the main reftable changes
   hits the codebase.

 * The backend for "diff -G/-S" has been updated to use pcre2 engine
   when available.

 * Use ".DELETE_ON_ERROR" pseudo target to simplify our Makefile.

 * Code cleanup around struct_type_init() functions.

 * "git send-email" optimization.

 * GitHub Actions / CI update.
   (merge 0dc787a9f2 js/ci-windows-update later to maint).

 * Object accesses in repositories with many alternate object store
   have been optimized.

 * "git log" has been optimized not to waste cycles to load ref
   decoration data that may not be needed.

 * Many "printf"-like helper functions we have have been annotated
   with __attribute__() to catch placeholder/parameter mismatches.

 * Tests that cover protocol bits have been updated and helpers
   used there have been consolidated.

 * The CI gained a new job to run "make sparse" check.

 * "git status" codepath learned to work with sparsely populated index
   without hydrating it fully.

 * A guideline for gender neutral documentation has been added.

 * Documentation on "git diff -l<n>" and diff.renameLimit have been
   updated, and the defaults for these limits have been raised.

 * The completion support used to offer alternate spelling of options
   that exist only for compatibility, which has been corrected.

 * "TEST_OUTPUT_DIRECTORY=there make test" failed to work, which has
   been corrected.

 * "git bundle" gained more test coverage.

 * "git read-tree" had a codepath where blobs are fetched one-by-one
   from the promisor remote, which has been corrected to fetch in bulk.

 * Rewrite of "git submodule" in C continues.

 * "git checkout" and "git commit" learn to work without unnecessarily
   expanding sparse indexes.


Fixes since v2.32
-----------------

 * We historically rejected a very short string as an author name
   while accepting a patch e-mail, which has been loosened.
   (merge 72ee47ceeb ef/mailinfo-short-name later to maint).

 * The parallel checkout codepath did not initialize object ID field
   used to talk to the worker processes in a futureproof way.

 * Rewrite code that triggers undefined behaviour warning.
   (merge aafa5df0df jn/size-t-casted-to-off-t-fix later to maint).

 * The description of "fast-forward" in the glossary has been updated.
   (merge e22f2daed0 ry/clarify-fast-forward-in-glossary later to maint).

 * Recent "git clone" left a temporary directory behind when the
   transport layer returned an failure.
   (merge 6aacb7d861 jk/clone-clean-upon-transport-error later to maint).

 * "git fetch" over protocol v2 left its side of the socket open after
   it finished speaking, which unnecessarily wasted the resource on
   the other side.
   (merge ae1a7eefff jk/fetch-pack-v2-half-close-early later to maint).

 * The command line completion (in contrib/) learned that "git diff"
   takes the "--anchored" option.
   (merge d1e7c2cac9 tb/complete-diff-anchored later to maint).

 * "git-svn" tests assumed that "locale -a", which is used to pick an
   available UTF-8 locale, is available everywhere.  A knob has been
   introduced to allow testers to specify a suitable locale to use.
   (merge 482c962de4 dd/svn-test-wo-locale-a later to maint).

 * Update "git subtree" to work better on Windows.
   (merge 77f37de39f js/subtree-on-windows-fix later to maint).

 * Remove multimail from contrib/
   (merge f74d11471f js/no-more-multimail later to maint).

 * Make the codebase MSAN clean.
   (merge 4dbc55e87d ah/uninitialized-reads-fix later to maint).

 * Work around inefficient glob substitution in older versions of bash
   by rewriting parts of a test.
   (merge eb87c6f559 jx/t6020-with-older-bash later to maint).

 * Avoid duplicated work while building reachability bitmaps.
   (merge aa9ad6fee5 jk/bitmap-tree-optim later to maint).

 * We broke "GIT_SKIP_TESTS=t?000" to skip certain tests in recent
   update, which got fixed.

 * The side-band demultiplexer that is used to display progress output
   from the remote end did not clear the line properly when the end of
   line hits at a packet boundary, which has been corrected.

 * Some test scripts assumed that readlink(1) was universally
   installed and available, which is not the case.
   (merge 7c0afdf23c jk/test-without-readlink-1 later to maint).

 * Recent update to completion script (in contrib/) broke those who
   use the __git_complete helper to define completion to their custom
   command.
   (merge cea232194d fw/complete-cmd-idx-fix later to maint).

 * Output from some of our tests were affected by the width of the
   terminal that they were run in, which has been corrected by
   exporting a fixed value in the COLUMNS environment.
   (merge c49a177bec ab/fix-columns-to-80-during-tests later to maint).

 * On Windows, mergetool has been taught to find kdiff3.exe just like
   it finds winmerge.exe.
   (merge 47eb4c6890 ms/mergetools-kdiff3-on-windows later to maint).

 * When we cannot figure out how wide the terminal is, we use a
   fallback value of 80 ourselves (which cannot be avoided), but when
   we run the pager, we export it in COLUMNS, which forces the pager
   to use the hardcoded value, even when the pager is perfectly
   capable to figure it out itself.  Stop exporting COLUMNS when we
   fall back on the hardcoded default value for our own use.
   (merge 9b6e2c8b98 js/stop-exporting-bogus-columns later to maint).

 * "git cat-file --batch-all-objects"" misbehaved when "--batch" is in
   use and did not ask for certain object traits.
   (merge ee02ac6164 zh/cat-file-batch-fix later to maint).

 * Some code and doc clarification around "git push".

 * The "union" conflict resultion variant misbehaved when used with
   binary merge driver.
   (merge 382b601acd jk/union-merge-binary later to maint).

 * Prevent "git p4" from failing to submit changes to binary file.
   (merge 54662d5958 dc/p4-binary-submit-fix later to maint).

 * "git grep --and -e foo" ought to have been diagnosed as an error
   but instead segfaulted, which has been corrected.
   (merge fe7fe62d8d rs/grep-parser-fix later to maint).

 * The merge code had funny interactions between content based rename
   detection and directory rename detection.
   (merge 3585d0ea23 en/merge-dir-rename-corner-case-fix later to maint).

 * When rebuilding the multi-pack index file reusing an existing one,
   we used to blindly trust the existing file and ended up carrying
   corrupted data into the updated file, which has been corrected.
   (merge f89ecf7988 tb/midx-use-checksum later to maint).

 * Update the location of system-side configuration file on Windows.
   (merge e355307692 js/gfw-system-config-loc-fix later to maint).

 * Code recently added to support common ancestry negotiation during
   "git push" did not sanity check its arguments carefully enough.
   (merge eff40457a4 ab/fetch-negotiate-segv-fix later to maint).

 * Update the documentation not to assume users are of certain gender
   and adds to guidelines to do so.
   (merge 46a237f42f ds/gender-neutral-doc later to maint).

 * "git commit --allow-empty-message" won't abort the operation upon
   an empty message, but the hint shown in the editor said otherwise.
   (merge 6f70f00b4f hj/commit-allow-empty-message later to maint).

 * The code that gives an error message in "git multi-pack-index" when
   no subcommand is given tried to print a NULL pointer as a strong,
   which has been corrected.
   (merge 88617d11f9 tb/reverse-midx later to maint).

 * CI update.
   (merge a066a90db6 js/ci-check-whitespace-updates later to maint).

 * Documentation fix for "git pull --rebase=no".
   (merge d3236becec fc/pull-no-rebase-merges-theirs-into-ours later to maint).

 * A race between repacking and using pack bitmaps has been corrected.
   (merge dc1daacdcc jk/check-pack-valid-before-opening-bitmap later to maint).

 * The local changes stashed by "git merge --autostash" were lost when
   the merge failed in certain ways, which has been corrected.

 * Windows rmdir() equivalent behaves differently from POSIX ones in
   that when used on a symbolic link that points at a directory, the
   target directory gets removed, which has been corrected.
   (merge 3e7d4888e5 tb/mingw-rmdir-symlink-to-directory later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge bfe35a6165 ah/doc-describe later to maint).
   (merge f302c1e4aa jc/clarify-revision-range later to maint).
   (merge 3127ff90ea tl/fix-packfile-uri-doc later to maint).
   (merge a84216c684 jk/doc-color-pager later to maint).
   (merge 4e0a64a713 ab/trace2-squelch-gcc-warning later to maint).
   (merge 225f7fa847 ps/rev-list-object-type-filter later to maint).
   (merge 5317dfeaed dd/honor-users-tar-in-tests later to maint).
   (merge ace6d8e3d6 tk/partial-clone-repack-doc later to maint).
   (merge 7ba68e0cf1 js/trace2-discard-event-docfix later to maint).
   (merge 8603c419d3 fc/doc-default-to-upstream-config later to maint).
   (merge 1d72b604ef jk/revision-squelch-gcc-warning later to maint).
   (merge abcb66c614 ar/typofix later to maint).
   (merge 9853830787 ah/graph-typofix later to maint).
   (merge aac578492d ab/config-hooks-path-testfix later to maint).
   (merge 98c7656a18 ar/more-typofix later to maint).
   (merge 6fb9195f6c jk/doc-max-pack-size later to maint).
   (merge 4184cbd635 ar/mailinfo-memcmp-to-skip-prefix later to maint).
   (merge 91d2347033 ar/doc-libera-chat-in-my-first-contrib later to maint).
   (merge 338abb0f04 ab/cmd-foo-should-return later to maint).
   (merge 546096a5cb ab/xdiff-bug-cleanup later to maint).
   (merge b7b793d1e7 ab/progress-cleanup later to maint).
   (merge d94f9b8e90 ba/object-info later to maint).
   (merge 52ff891c03 ar/test-code-cleanup later to maint).
   (merge a0538e5c8b dd/document-log-decorate-default later to maint).
   (merge ce24797d38 mr/cmake later to maint).
   (merge 9eb542f2ee ab/pre-auto-gc-hook-test later to maint).
   (merge 9fffc38583 bk/doc-commit-typofix later to maint).
   (merge 1cf823d8f0 ks/submodule-cleanup later to maint).
   (merge ebbf5d2b70 js/config-mak-windows-pcre-fix later to maint).
   (merge 617480d75b hn/refs-iterator-peel-returns-boolean later to maint).
   (merge 6a24cc71ed ar/submodule-helper-include-cleanup later to maint).
   (merge 5632e838f8 rs/khash-alloc-cleanup later to maint).
   (merge b1d87fbaf1 jk/typofix later to maint).
   (merge e04170697a ab/gitignore-discovery-doc later to maint).
   (merge 8232a0ff48 dl/packet-read-response-end-fix later to maint).
   (merge eb448631fb dl/diff-merge-base later to maint).
   (merge c510928a25 hn/refs-debug-empty-prefix later to maint).
   (merge ddcb189d9d tb/bitmap-type-filter-comment-fix later to maint).
   (merge 878b399734 pb/submodule-recurse-doc later to maint).
   (merge 734283855f jk/config-env-doc later to maint).
   (merge 482e1488a9 ab/getcwd-test later to maint).
   (merge f0b922473e ar/doc-markup-fix later to maint).

----------------------------------------------------------------

Changes since v2.32.0 are as follows:

Alex Henrie (6):
      merge: don't translate literal commands
      stash: don't translate literal commands
      submodule: use the imperative mood to describe the --files option
      fetch: improve grammar of "shallow roots" message
      setup: split "extensions found" messages into singular and plural
      graph: improve grammar of "invalid color" error message

Anders Höckersten (1):
      describe-doc: clarify default length of abbreviation

Andrei Rybak (8):
      t: fix whitespace around &&
      mailinfo: use starts_with() when checking scissors
      *: fix typos which duplicate a word
      blame: correct name of config option in docs
      t: fix typos in test messages
      git-worktree.txt: fix typo in example path
      help: convert git_cmd to page in one place
      Documentation: render special characters correctly

Andrew Berry (1):
      docs: .gitignore parsing is to the top of the repo

Andrzej Hunt (15):
      bulk-checkin: make buffer reuse more obvious and safer
      split-index: use oideq instead of memcmp to compare object_id's
      builtin/checkout--worker: zero-initialise struct to avoid MSAN complaints
      fmt-merge-msg: free newly allocated temporary strings when done
      environment: move strbuf into block to plug leak
      builtin/submodule--helper: release unused strbuf to avoid leak
      builtin/for-each-repo: remove unnecessary argv copy to plug leak
      diffcore-rename: move old_dir/new_dir definition to plug leak
      ref-filter: also free head for ATOM_HEAD to avoid leak
      read-cache: call diff_setup_done to avoid leak
      convert: release strbuf to avoid leak
      builtin/mv: free or UNLEAK multiple pointers at end of cmd_mv
      builtin/merge: free found_ref when done
      builtin/rebase: fix options.strategy memory lifecycle
      reset: clear_unpack_trees_porcelain to plug leak

Atharva Raykar (6):
      MyFirstContribution: link #git-devel to Libera Chat
      submodule--helper: remove redundant include
      t7400: test failure to add submodule in tracked path
      submodule: prefix die messages with 'fatal'
      submodule--helper: refactor module_clone()
      submodule--helper: introduce add-clone subcommand

Bagas Sanjaya (1):
      diff: --pickaxe-all typofix

Beshr Kayali (1):
      Documentation: fix typo in the --patch option of the commit command

Carlo Marcelo Arenas Belón (2):
      config.mak.uname: PCRE1 cleanup
      t7508: avoid non POSIX BRE

Dennis Ameling (2):
      cmake(windows): set correct path to the system Git config
      ci (vs-build): build with NO_GETTEXT

Denton Liu (2):
      pkt-line: replace "stateless separator" with "response end"
      git-diff: fix missing --merge-base docs

Derrick Stolee (28):
      hashfile: use write_in_full()
      csum-file.h: increase hashfile buffer size
      read-cache: use hashfile instead of git_hash_ctx
      read-cache: delete unused hashing methods
      *: fix typos
      sparse-index: skip indexes with unmerged entries
      sparse-index: include EXTENDED flag when expanding
      t1092: replace incorrect 'echo' with 'cat'
      t1092: expand repository data shape
      t1092: add tests for status/add and sparse files
      unpack-trees: preserve cache_bottom
      unpack-trees: compare sparse directories correctly
      unpack-trees: rename unpack_nondirectories()
      unpack-trees: unpack sparse directory entries
      dir.c: accept a directory as part of cone-mode patterns
      diff-lib: handle index diffs with sparse dirs
      status: skip sparse-checkout percentage with sparse-index
      status: use sparse-index throughout
      wt-status: expand added sparse directory entries
      fsmonitor: integrate with sparse index
      t1092: document bad sparse-checkout behavior
      p2000: add 'git checkout -' test and decrease depth
      p2000: compress repo names
      commit: integrate with sparse-index
      sparse-index: recompute cache-tree
      checkout: stop expanding sparse indexes
      t1092: document bad 'git checkout' behavior
      unpack-trees: resolve sparse-directory/file conflicts

Elijah Newren (36):
      t6423: rename file within directory that other side renamed
      Documentation/technical: describe remembering renames optimization
      fast-rebase: change assert() to BUG()
      fast-rebase: write conflict state to working tree, index, and HEAD
      t6429: testcases for remembering renames
      merge-ort: add data structures for in-memory caching of rename detection
      merge-ort: populate caches of rename detection results
      merge-ort: add code to check for whether cached renames can be reused
      merge-ort: avoid accidental API mis-use
      merge-ort: preserve cached renames for the appropriate side
      merge-ort: add helper functions for using cached renames
      merge-ort: handle interactions of caching and rename/rename(1to1) cases
      merge-ort, diffcore-rename: employ cached renames when possible
      merge-ort: replace string_list_df_name_compare with faster alternative
      diffcore-rename: avoid unnecessary strdup'ing in break_idx
      Fix various issues found in comments
      merge-ort: miscellaneous touch-ups
      promisor-remote: output trace2 statistics for number of objects fetched
      t6421: add tests checking for excessive object downloads during merge
      diffcore-rename: allow different missing_object_cb functions
      diffcore-rename: use a different prefetch for basename comparisons
      merge-ort: add prefetching for content merges
      t6423: test directory renames causing rename-to-self
      merge-ort: ensure we consult df_conflict and path_conflicts
      merge-recursive: handle rename-to-self case
      diff: correct warning message when renameLimit exceeded
      doc: clarify documentation for rename/copy limits
      diffcore-rename: treat a rename_limit of 0 as unlimited
      rename: bump limit defaults yet again
      merge-ort: resolve paths early when we have sufficient information
      merge-ort: add some more explanations in collect_merge_info_callback()
      merge-ort: add data structures for allowable trivial directory resolves
      merge-ort: add a handle_deferred_entries() helper function
      merge-ort: defer recursing into directories when merge base is matched
      merge-ort: avoid recursing into directories when we don't need to
      merge-ort: restart merge with cached renames to reduce process entry cost

Eric Wong (6):
      xmmap: inform Linux users of tuning knobs on ENOMEM
      speed up alt_odb_usable() with many alternates
      avoid strlen via strbuf_addstr in link_alt_odb_entry
      make object_directory.loose_objects_subdir_seen a bitmap
      oidcpy_with_padding: constify `src' arg
      oidtree: a crit-bit tree for odb_loose_cache

Fabian Wermelinger (1):
      completion: bash: fix late declaration of __git_cmd_idx

Felipe Contreras (33):
      doc: refactor common asciidoc dependencies
      doc: improve asciidoc dependencies
      doc: remove unnecessary rm instances
      doc: simplify Makefile using .DELETE_ON_ERROR
      doc: avoid using rm directly
      push: rename !triangular to same_remote
      push: hedge code of default=simple
      push: copy code to setup_push_simple()
      push: reorganize setup_push_simple()
      push: simplify setup_push_simple()
      push: remove unused code in setup_push_upstream()
      doc: push: explain default=simple correctly
      push: create new get_upstream_ref() helper
      push: return immediately in trivial switch case
      push: split switch cases
      push: factor out null branch check
      push: only get the branch when needed
      push: make setup_push_* return the dst
      push: trivial simplifications
      push: get rid of all the setup_push_* functions
      push: factor out the typical case
      push: remove redundant check
      push: remove trivial function
      push: only check same_remote when needed
      push: don't get a full remote object
      doc: merge: mention default of defaulttoupstream
      doc: avoid using the gender of other people
      comments: avoid using the gender of our users
      pull: cleanup autostash check
      pull: trivial cleanup
      pull: trivial whitespace style fix
      doc: pull: fix rebase=false documentation
      test: fix for COLUMNS and bash 5

Gregory Anders (1):
      git-send-email: add option to specify sendmail command

Han-Wen Nienhuys (26):
      refs: make explicit that ref_iterator_peel returns boolean
      t4202: split testcase for invalid HEAD symref and HEAD hash
      t/helper/ref-store: initialize oid in resolve-ref
      t9300: check ref existence using test-helper rather than a file system check
      t5601: read HEAD using rev-parse
      t1401: use tar to snapshot and restore repo state
      t1401-symbolic-ref: avoid direct filesystem access
      t1413: use tar to save and restore entire .git directory
      t1301: fix typo in error message
      t5000: reformat indentation to the latest fashion
      t5000: inspect HEAD using git-rev-parse
      t7003: use rev-parse rather than FS inspection
      t5304: restyle: trim empty lines, drop ':' before >
      t5304: use "reflog expire --all" to clear the reflog
      test-lib: provide test prereq REFFILES
      t1407: require REFFILES for for_each_reflog test
      t1414: mark corruption test with REFFILES
      t2017: mark --orphan/logAllRefUpdates=false test as REFFILES
      t1404: mark tests that muck with .git directly as REFFILES.
      t7900: stop checking for loose refs
      t7003: check reflog existence only for REFFILES
      t4202: mark bogus head hash test with REFFILES
      t1415: set REFFILES for test specific to storage format
      t1415: avoid direct filesystem access for writing refs
      t7509: avoid direct file access for writing CHERRY_PICK_HEAD
      refs/debug: quote prefix

Hu Jialun (2):
      commit: reorganise commit hint strings
      commit: remove irrelavent prompt on `--allow-empty-message`

Jean-Noël Avila (1):
      help: fix small typo in error message

Jeff King (27):
      clone: clean up directory after transport_fetch_refs() failure
      fetch-pack: signal v2 server that we are done making requests
      doc: explain the use of color.pager
      doc: warn people against --max-pack-size
      ll_binary_merge(): handle XDL_MERGE_FAVOR_UNION
      ll_union_merge(): pass name labels to ll_xdl_merge()
      ll_union_merge(): rename path_unused parameter
      add_pending_object_with_path(): work around "gcc -O3" complaint
      bitmaps: don't recurse into trees already in the bitmap
      t: use portable wrapper for readlink(1)
      pretty.h: update and expand docstring for userformat_find_requirements()
      log: avoid loading decorations for userformats that don't need it
      object.h: expand docstring for lookup_unknown_object()
      object.h: add lookup_object_by_type() function
      load_ref_decorations(): avoid parsing non-tag objects
      add_ref_decoration(): rename s/type/deco_type/
      test-lib: avoid accidental globbing in match_pattern_list()
      doc/rev-list-options: fix duplicate word typo
      load_ref_decorations(): fix decoration with tags
      t0000: clear GIT_SKIP_TESTS before running sub-tests
      doc/git-config: explain --file instead of referring to GIT_CONFIG
      doc/git-config: clarify GIT_CONFIG environment variable
      doc/git-config: simplify "override" advice for FILES section
      pack-bitmap: check pack validity when opening bitmap
      submodule: drop unused sm_name parameter from show_fetch_remotes()
      ci: run "apt-get update" before "apt-get install"
      ci/install-dependencies: handle "sparse" job package installs

Jiang Xin (5):
      t6020: fix incompatible parameter expansion
      sideband: don't lose clear-to-eol at packet boundary
      test: compare raw output, not mangle tabs and spaces
      test: refactor to use "test_commit" to create commits
      test: refactor to use "get_abbrev_oid" to get abbrev oid

Johannes Schindelin (15):
      multimail: stop shipping a copy
      subtree: fix the GIT_EXEC_PATH sanity check to work on Windows
      subtree: fix assumption about the directory separator
      pager: avoid setting COLUMNS when we're guessing its value
      mingw: move Git for Windows' system config where users expect it
      config: normalize the path of the system gitconfig
      ci: use the new GitHub Action to download git-sdk-64-minimal
      ci (vs-build): use `cmd` to copy the DLLs, not `powershell`
      ci: upgrade to using actions/{up,down}load-artifacts v2
      ci (windows): transfer also the Git-tracked files to the test jobs
      artifacts-tar: respect NO_GETTEXT
      ci: accelerate the checkout
      ci: run `make sparse` as part of the GitHub workflow
      ci(check-whitespace): stop requiring a read/write token
      ci(check-whitespace): restrict to the intended commits

Jonathan Nieder (1):
      xsize_t: avoid implementation defined behavior when len < 0

Jonathan Tan (7):
      repository: move global r_f_p_c to repo struct
      promisor-remote: support per-repository config
      submodule: refrain from filtering GIT_CONFIG_COUNT
      run-command: refactor subprocess env preparation
      promisor-remote: teach lazy-fetch in any repo
      unpack-trees: refactor prefetching code
      cache-tree: prefetch in partial clone read-tree

Josh Steadmon (1):
      docs: fix api-trace2 doc for "too_many_files" event

Julian Verdurmen (1):
      userdiff: add support for C# record types

Junio C Hamano (12):
      revisions(7): clarify that most commands take a single revision range
      The first batch post Git 2.32
      The second batch
      The third batch
      The fourth batch
      CodingGuidelines: recommend gender-neutral description
      The fifth batch
      The sixth batch
      The seventh batch
      Git 2.33-rc0
      The eighth batch
      Git 2.33-rc1

Kaartic Sivaraam (1):
      submodule: remove unnecessary `prefix` based option logic

Matheus Tavares (1):
      parallel-checkout: send the new object_id algo field to the workers

Matthew Rogers (3):
      cmake: add knob to disable vcpkg
      cmake: create compile_commands.json by default
      cmake: add warning for ignored MSGFMT_EXE

Michael Schindler (1):
      mergetools/kdiff3: make kdiff3 work on Windows too

Patrick Steinhardt (2):
      perf: fix when running with TEST_OUTPUT_DIRECTORY
      t0000: fix test if run with TEST_OUTPUT_DIRECTORY

Philippe Blain (6):
      parse-options: don't complete option aliases by default
      doc: clarify description of 'submodule.recurse'
      merge: add missing word "strategy" to a message
      Documentation: define 'MERGE_AUTOSTASH'
      merge: apply autostash if fast-forward fails
      merge: apply autostash if merge strategy fails

René Scharfe (3):
      grep: report missing left operand of --and
      khash: clarify that allocations never fail
      use fspathhash() everywhere

Reuven Y (1):
      docs: improve fast-forward in glossary content

Sergey Organov (10):
      t4013: test that "-m" alone has no effect in "git log"
      t4013: test "git log -m --raw"
      t4013: test "git log -m --stat"
      t4013: test "git diff-tree -m"
      t4013: test "git diff-index -m"
      diff-merges: move specific diff-index "-m" handling to diff-index
      git-svn: stop passing "-m" to "git rev-list"
      stash list: stop passing "-m" to "git log"
      diff-merges: rename "combined_imply_patch" to "merges_imply_patch"
      diff-merges: let "-m" imply "-p"

Stephen Manz (3):
      t2400: clean up '"add" worktree with lock' test
      worktree: mark lock strings with `_()` for translation
      worktree: teach `add` to accept --reason <string> with --lock

Tao Klerks (1):
      Remove warning that repack only works on non-promisor packfiles

Taylor Blau (6):
      csum-file: introduce checksum_valid()
      commit-graph: rewrite to use checksum_valid()
      midx: don't reuse corrupt MIDXs when writing
      midx: report checksum mismatches during 'verify'
      multi-pack-index: fix potential segfault without sub-command
      pack-bitmap: clarify comment in filter_bitmap_exclude_type()

Teng Long (1):
      packfile-uri.txt: fix blobPackfileUri description

Thomas Braun (1):
      completion: add --anchored to diff's options

Thomas Bétous (1):
      mingw: align symlinks-related rmdir() behavior with Linux

Wolfgang Müller (1):
      rev-parse: mark die() messages for translation

ZheNing Hu (4):
      ref-filter: add objectsize to used_atom
      ref-filter: introduce enum atom_type
      cat-file: handle trivial --batch format with --batch-all-objects
      cat-file: merge two block into one

brian m. carlson (1):
      rev-list: add option for --pretty=format without header

dorgon.chang (1):
      git-p4: fix failed submit by skip non-text data files

edef (1):
      mailinfo: don't discard names under 3 characters

Ævar Arnfjörð Bjarmason (93):
      test-lib: bring $remove_trash out of retirement
      test-lib tests: remove dead GIT_TEST_FRAMEWORK_SELFTEST variable
      test-lib-functions: reword "test_commit --append" docs
      test-lib-functions: document test_commit --no-tag
      test-lib functions: add an --annotated option to "test_commit"
      describe tests: convert setup to use test_commit
      test-lib functions: add --printf option to test_commit
      submodule tests: use symbolic-ref --short to discover branch name
      test-lib: reformat argument list in test_create_repo()
      test-lib: do not show advice about init.defaultBranch under --verbose
      test-lib: split up and deprecate test_create_repo()
      grep/pcre2 tests: reword comments referring to kwset
      pickaxe tests: refactor to use test_commit --append --printf
      pickaxe tests: add test for diffgrep_consume() internals
      pickaxe tests: add test for "log -S" not being a regex
      pickaxe tests: test for -G, -S and --find-object incompatibility
      pickaxe tests: add missing test for --no-pickaxe-regex being an error
      pickaxe: die when -G and --pickaxe-regex are combined
      pickaxe: die when --find-object and --pickaxe-all are combined
      diff.h: move pickaxe fields together again
      pickaxe/style: consolidate declarations and assignments
      perf: add performance test for pickaxe
      pickaxe: refactor function selection in diffcore-pickaxe()
      pickaxe: assert that we must have a needle under -G or -S
      pickaxe -S: support content with NULs under --pickaxe-regex
      pickaxe: rename variables in has_changes() for brevity
      pickaxe -S: slightly optimize contains()
      xdiff-interface: prepare for allowing early return
      xdiff-interface: allow early return from xdiff_emit_line_fn
      pickaxe -G: terminate early on matching lines
      pickaxe -G: don't special-case create/delete
      xdiff users: use designated initializers for out_line
      xdiff-interface: replace discard_hunk_line() with a flag
      describe tests: improve test for --work-tree & --dirty
      describe tests: refactor away from glob matching
      describe tests: don't rely on err.actual from "check_describe"
      describe tests: fix nested "test_expect_success" call
      describe tests: support -C in "check_describe"
      trace2: refactor to avoid gcc warning under -O3
      send-email tests: support GIT_TEST_PERL_FATAL_WARNINGS=true
      send-email tests: test for boolean variables without a value
      send-email: remove non-working support for "sendemail.smtpssl"
      send-email: refactor sendemail.smtpencryption config parsing
      send-email: copy "config_regxp" into git-send-email.perl
      send-email: lazily load config for a big speedup
      send-email: lazily shell out to "git var"
      send-email: use function syntax instead of barewords
      send-email: get rid of indirect object syntax
      send-email: lazily load modules for a big speedup
      perl: lazily load some common Git.pm setup code
      send-email: move trivial config handling to Perl
      perl: nano-optimize by replacing Cwd::cwd() with Cwd::getcwd()
      protocol-caps.h: add newline at end of file
      read-cache.c: don't guard calls to progress.c API
      xdiff: use BUG(...), not xdl_bug(...)
      builtins + test helpers: use return instead of exit() in cmd_*
      mktag tests: parse out options in helper
      mktag tests: invert --no-strict test
      show-branch tests: rename the one "show-branch" test file
      show-branch tests: modernize test code
      pre-commit hook tests: don't leave "actual" nonexisting on failure
      gc tests: add a test for the "pre-auto-gc" hook
      mktag tests: test hash-object --literally and unreachable fsck
      mktag tests: test update-ref and reachable fsck
      mktag tests: test for-each-ref
      mktag tests: test fast-export
      show-branch: don't <COLOR></RESET> for space characters
      show-branch tests: add missing tests
      Makefile: add and use the ".DELETE_ON_ERROR" flag
      test-lib.sh: set COLUMNS=80 for --verbose repeatability
      send-pack.c: move "no refs in common" abort earlier
      fetch: document the --negotiate-only option
      *.h: move some *_INIT to designated initializers
      *.c *_init(): define in terms of corresponding *_INIT macro
      dir.[ch]: replace dir_init() with DIR_INIT
      string-list.[ch]: add a string_list_init_{nodup,dup}()
      string-list.h users: change to use *_{nodup,dup}()
      bundle cmd: stop leaking memory from parse_options_cmd_bundle()
      bundle.c: use a temporary variable for OIDs and names
      bundle: remove "ref_list" in favor of string-list.c API
      imap-send.c: use less verbose strbuf_fread() idiom
      fetch: fix segfault in --negotiate-only without --negotiation-tip=*
      *.c static functions: don't forward-declare __attribute__
      sequencer.c: move static function to avoid forward decl
      *.c static functions: add missing __attribute__((format))
      *.h: add a few missing __attribute__((format))
      advice.h: add missing __attribute__((format)) & fix usage
      test-lib-functions: use test-tool for [de]packetize()
      SubmittingPatches: move discussion of Signed-off-by above "send"
      SubmittingPatches: replace discussion of Travis with GitHub Actions
      bundle tests: use ">file" not ": >file"
      bundle tests: use test_cmp instead of grep
      t0001: fix broken not-quite getcwd(3) test in bed67874e2

Đoàn Trần Công Danh (6):
      t: use configured TAR instead of tar
      doc/log: correct default for --decorate
      t: use user-specified utf-8 locale for testing svn
      test-lib-functions: introduce test_stdout_line_count
      t6400: preserve git ls-files exit status code
      t6402: preserve git exit status code


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.33.0-rc0
@ 2021-08-02 23:45  3% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-08-02 23:45 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

An early preview release Git v2.33.0-rc0 is now available for
testing at the usual places.  It is comprised of 350 non-merge
commits since v2.32.0, contributed by 61 people, 18 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.33.0-rc0' 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.32.0 are as follows.
Welcome to the Git development community!

  Anders Höckersten, Andrew Berry, Andy AO, Beshr Kayali,
  dorgon.chang, edef, Fabian Wermelinger, Gregory Anders, Greg
  Pflaum, Hu Jialun, Jason Hatton, Julian Verdurmen, Matthew
  Hughes, Michael Schindler, Reuven Y, Stephen Manz, Tao Klerks,
  and Teng Long.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alex Henrie, Anders Kaseorg,
  Andrei Rybak, Andrzej Hunt, Atharva Raykar, Bagas Sanjaya,
  brian m. carlson, Carlo Marcelo Arenas Belón, Christian Couder,
  Dennis Ameling, Denton Liu, Derrick Stolee, Đoàn Trần Công
  Danh, Elijah Newren, Emily Shaffer, Eric Sunshine, Eric Wong,
  Felipe Contreras, Han-Wen Nienhuys, Jean-Noël Avila, Jeff King,
  Jiang Xin, Johannes Schindelin, Jonathan Nieder, Jonathan Tan,
  Josh Steadmon, Junio C Hamano, Kaartic Sivaraam, Martin Ågren,
  Matheus Tavares, Matthew Rogers, Matthias Aßhauer, Nicolas
  Pitre, Patrick Steinhardt, Philippe Blain, René Scharfe,
  Sergey Organov, Shourya Shukla, Taylor Blau, Thomas Braun,
  Wolfgang Müller, and ZheNing Hu.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git 2.33 Release Notes (draft)
==============================

Backward compatibility notes
----------------------------

 * The "-m" option in "git log -m" that does not specify which format,
   if any, of diff is desired did not have any visible effect; it now
   implies some form of diff (by default "--patch") is produced.

   You can disable the diff output with "git log -m --no-patch", but
   then there probably isn't much point in passing "-m" in the first
   place ;-).


Updates since Git 2.32
----------------------

UI, Workflows & Features

 * "git send-email" learned the "--sendmail-cmd" command line option
   and the "sendemail.sendmailCmd" configuration variable, which is a
   more sensible approach than the current way of repurposing the
   "smtp-server" that is meant to name the server to instead name the
   command to talk to the server.

 * The "-m" option in "git log -m" that does not specify which format,
   if any, of diff is desired did not have any visible effect; it now
   implies some form of diff (by default "--patch") is produced.

 * The userdiff pattern for C# learned the token "record".

 * "git rev-list" learns to omit the "commit <object-name>" header
   lines from the output with the `--no-commit-header` option.

 * "git worktree add --lock" learned to record why the worktree is
   locked with a custom message.


Performance, Internal Implementation, Development Support etc.

 * The code to handle the "--format" option in "for-each-ref" and
   friends made too many string comparisons on %(atom)s used in the
   format string, which has been corrected by converting them into
   enum when the format string is parsed.

 * Use the hashfile API in the codepath that writes the index file to
   reduce code duplication.

 * Repeated rename detections in a sequence of mergy operations have
   been optimize out.

 * Preliminary clean-up of tests before the main reftable changes
   hits the codebase.

 * The backend for "diff -G/-S" has been updated to use pcre2 engine
   when available.

 * Use ".DELETE_ON_ERROR" pseudo target to simplify our Makefile.

 * Code cleanup around struct_type_init() functions.

 * "git send-email" optimization.

 * GitHub Actions / CI update.
   (merge 0dc787a9f2 js/ci-windows-update later to maint).

 * Object accesses in repositories with many alternate object store
   have been optimized.

 * "git log" has been optimized not to waste cycles to load ref
   decoration data that may not be needed.

 * Many "printf"-like helper functions we have have been annotated
   with __attribute__() to catch placeholder/parameter mismatches.

 * Tests that cover protocol bits have been updated and helpers
   used there have been consolidated.

 * The CI gained a new job to run "make sparse" check.

 * "git status" codepath learned to work with sparsely populated index
   without hydrating it fully.

 * A guideline for gender neutral documentation has been added.

 * Documentation on "git diff -l<n>" and diff.renameLimit have been
   updated, and the defaults for these limits have been raised.

 * The completion support used to offer alternate spelling of options
   that exist only for compatibility, which has been corrected.

 * "TEST_OUTPUT_DIRECTORY=there make test" failed to work, which has
   been corrected.

 * "git bundle" gained more test coverage.

 * "git read-tree" had a codepath where blobs are fetched one-by-one
   from the promisor remote, which has been corrected to fetch in bulk.


Fixes since v2.32
-----------------

 * We historically rejected a very short string as an author name
   while accepting a patch e-mail, which has been loosened.
   (merge 72ee47ceeb ef/mailinfo-short-name later to maint).

 * The parallel checkout codepath did not initialize object ID field
   used to talk to the worker processes in a futureproof way.

 * Rewrite code that triggers undefined behaviour warning.
   (merge aafa5df0df jn/size-t-casted-to-off-t-fix later to maint).

 * The description of "fast-forward" in the glossary has been updated.
   (merge e22f2daed0 ry/clarify-fast-forward-in-glossary later to maint).

 * Recent "git clone" left a temporary directory behind when the
   transport layer returned an failure.
   (merge 6aacb7d861 jk/clone-clean-upon-transport-error later to maint).

 * "git fetch" over protocol v2 left its side of the socket open after
   it finished speaking, which unnecessarily wasted the resource on
   the other side.
   (merge ae1a7eefff jk/fetch-pack-v2-half-close-early later to maint).

 * The command line completion (in contrib/) learned that "git diff"
   takes the "--anchored" option.
   (merge d1e7c2cac9 tb/complete-diff-anchored later to maint).

 * "git-svn" tests assumed that "locale -a", which is used to pick an
   available UTF-8 locale, is available everywhere.  A knob has been
   introduced to allow testers to specify a suitable locale to use.
   (merge 482c962de4 dd/svn-test-wo-locale-a later to maint).

 * Update "git subtree" to work better on Windows.
   (merge 77f37de39f js/subtree-on-windows-fix later to maint).

 * Remove multimail from contrib/
   (merge f74d11471f js/no-more-multimail later to maint).

 * Make the codebase MSAN clean.
   (merge 4dbc55e87d ah/uninitialized-reads-fix later to maint).

 * Work around inefficient glob substitution in older versions of bash
   by rewriting parts of a test.
   (merge eb87c6f559 jx/t6020-with-older-bash later to maint).

 * Avoid duplicated work while building reachability bitmaps.
   (merge aa9ad6fee5 jk/bitmap-tree-optim later to maint).

 * We broke "GIT_SKIP_TESTS=t?000" to skip certain tests in recent
   update, which got fixed.

 * The side-band demultiplexer that is used to display progress output
   from the remote end did not clear the line properly when the end of
   line hits at a packet boundary, which has been corrected.

 * Some test scripts assumed that readlink(1) was universally
   installed and available, which is not the case.
   (merge 7c0afdf23c jk/test-without-readlink-1 later to maint).

 * Recent update to completion script (in contrib/) broke those who
   use the __git_complete helper to define completion to their custom
   command.
   (merge cea232194d fw/complete-cmd-idx-fix later to maint).

 * Output from some of our tests were affected by the width of the
   terminal that they were run in, which has been corrected by
   exporting a fixed value in the COLUMNS environment.
   (merge c49a177bec ab/fix-columns-to-80-during-tests later to maint).

 * On Windows, mergetool has been taught to find kdiff3.exe just like
   it finds winmerge.exe.
   (merge 47eb4c6890 ms/mergetools-kdiff3-on-windows later to maint).

 * When we cannot figure out how wide the terminal is, we use a
   fallback value of 80 ourselves (which cannot be avoided), but when
   we run the pager, we export it in COLUMNS, which forces the pager
   to use the hardcoded value, even when the pager is perfectly
   capable to figure it out itself.  Stop exporting COLUMNS when we
   fall back on the hardcoded default value for our own use.
   (merge 9b6e2c8b98 js/stop-exporting-bogus-columns later to maint).

 * "git cat-file --batch-all-objects"" misbehaved when "--batch" is in
   use and did not ask for certain object traits.
   (merge ee02ac6164 zh/cat-file-batch-fix later to maint).

 * Some code and doc clarification around "git push".

 * The "union" conflict resultion variant misbehaved when used with
   binary merge driver.
   (merge 382b601acd jk/union-merge-binary later to maint).

 * Prevent "git p4" from failing to submit changes to binary file.
   (merge 54662d5958 dc/p4-binary-submit-fix later to maint).

 * "git grep --and -e foo" ought to have been diagnosed as an error
   but instead segfaulted, which has been corrected.
   (merge fe7fe62d8d rs/grep-parser-fix later to maint).

 * The merge code had funny interactions between content based rename
   detection and directory rename detection.
   (merge 3585d0ea23 en/merge-dir-rename-corner-case-fix later to maint).

 * When rebuilding the multi-pack index file reusing an existing one,
   we used to blindly trust the existing file and ended up carrying
   corrupted data into the updated file, which has been corrected.
   (merge f89ecf7988 tb/midx-use-checksum later to maint).

 * Update the location of system-side configuration file on Windows.
   (merge e355307692 js/gfw-system-config-loc-fix later to maint).

 * Code recently added to support common ancestry negotiation during
   "git push" did not sanity check its arguments carefully enough.
   (merge eff40457a4 ab/fetch-negotiate-segv-fix later to maint).

 * Update the documentation not to assume users are of certain gender
   and adds to guidelines to do so.
   (merge 46a237f42f ds/gender-neutral-doc later to maint).

 * "git commit --allow-empty-message" won't abort the operation upon
   an empty message, but the hint shown in the editor said otherwise.
   (merge 6f70f00b4f hj/commit-allow-empty-message later to maint).

 * The code that gives an error message in "git multi-pack-index" when
   no subcommand is given tried to print a NULL pointer as a strong,
   which has been corrected.
   (merge 88617d11f9 tb/reverse-midx later to maint).

 * CI update.
   (merge a066a90db6 js/ci-check-whitespace-updates later to maint).

 * Documentation fix for "git pull --rebase=no".
   (merge d3236becec fc/pull-no-rebase-merges-theirs-into-ours later to maint).

 * A race between repacking and using pack bitmaps has been corrected.
   (merge dc1daacdcc jk/check-pack-valid-before-opening-bitmap later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge bfe35a6165 ah/doc-describe later to maint).
   (merge f302c1e4aa jc/clarify-revision-range later to maint).
   (merge 3127ff90ea tl/fix-packfile-uri-doc later to maint).
   (merge a84216c684 jk/doc-color-pager later to maint).
   (merge 4e0a64a713 ab/trace2-squelch-gcc-warning later to maint).
   (merge 225f7fa847 ps/rev-list-object-type-filter later to maint).
   (merge 5317dfeaed dd/honor-users-tar-in-tests later to maint).
   (merge ace6d8e3d6 tk/partial-clone-repack-doc later to maint).
   (merge 7ba68e0cf1 js/trace2-discard-event-docfix later to maint).
   (merge 8603c419d3 fc/doc-default-to-upstream-config later to maint).
   (merge 1d72b604ef jk/revision-squelch-gcc-warning later to maint).
   (merge abcb66c614 ar/typofix later to maint).
   (merge 9853830787 ah/graph-typofix later to maint).
   (merge aac578492d ab/config-hooks-path-testfix later to maint).
   (merge 98c7656a18 ar/more-typofix later to maint).
   (merge 6fb9195f6c jk/doc-max-pack-size later to maint).
   (merge 4184cbd635 ar/mailinfo-memcmp-to-skip-prefix later to maint).
   (merge 91d2347033 ar/doc-libera-chat-in-my-first-contrib later to maint).
   (merge 338abb0f04 ab/cmd-foo-should-return later to maint).
   (merge 546096a5cb ab/xdiff-bug-cleanup later to maint).
   (merge b7b793d1e7 ab/progress-cleanup later to maint).
   (merge d94f9b8e90 ba/object-info later to maint).
   (merge 52ff891c03 ar/test-code-cleanup later to maint).
   (merge a0538e5c8b dd/document-log-decorate-default later to maint).
   (merge ce24797d38 mr/cmake later to maint).
   (merge 9eb542f2ee ab/pre-auto-gc-hook-test later to maint).
   (merge 9fffc38583 bk/doc-commit-typofix later to maint).
   (merge 1cf823d8f0 ks/submodule-cleanup later to maint).
   (merge ebbf5d2b70 js/config-mak-windows-pcre-fix later to maint).
   (merge 617480d75b hn/refs-iterator-peel-returns-boolean later to maint).
   (merge 6a24cc71ed ar/submodule-helper-include-cleanup later to maint).
   (merge 5632e838f8 rs/khash-alloc-cleanup later to maint).
   (merge b1d87fbaf1 jk/typofix later to maint).
   (merge e04170697a ab/gitignore-discovery-doc later to maint).
   (merge 8232a0ff48 dl/packet-read-response-end-fix later to maint).
   (merge eb448631fb dl/diff-merge-base later to maint).
   (merge c510928a25 hn/refs-debug-empty-prefix later to maint).
   (merge ddcb189d9d tb/bitmap-type-filter-comment-fix later to maint).
   (merge 878b399734 pb/submodule-recurse-doc later to maint).
   (merge 734283855f jk/config-env-doc later to maint).

----------------------------------------------------------------

Changes since v2.32.0 are as follows:

Alex Henrie (6):
      merge: don't translate literal commands
      stash: don't translate literal commands
      submodule: use the imperative mood to describe the --files option
      fetch: improve grammar of "shallow roots" message
      setup: split "extensions found" messages into singular and plural
      graph: improve grammar of "invalid color" error message

Anders Höckersten (1):
      describe-doc: clarify default length of abbreviation

Andrei Rybak (7):
      t: fix whitespace around &&
      mailinfo: use starts_with() when checking scissors
      *: fix typos which duplicate a word
      blame: correct name of config option in docs
      t: fix typos in test messages
      git-worktree.txt: fix typo in example path
      help: convert git_cmd to page in one place

Andrew Berry (1):
      docs: .gitignore parsing is to the top of the repo

Andrzej Hunt (3):
      bulk-checkin: make buffer reuse more obvious and safer
      split-index: use oideq instead of memcmp to compare object_id's
      builtin/checkout--worker: zero-initialise struct to avoid MSAN complaints

Atharva Raykar (2):
      MyFirstContribution: link #git-devel to Libera Chat
      submodule--helper: remove redundant include

Beshr Kayali (1):
      Documentation: fix typo in the --patch option of the commit command

Carlo Marcelo Arenas Belón (1):
      config.mak.uname: PCRE1 cleanup

Dennis Ameling (2):
      cmake(windows): set correct path to the system Git config
      ci (vs-build): build with NO_GETTEXT

Denton Liu (2):
      pkt-line: replace "stateless separator" with "response end"
      git-diff: fix missing --merge-base docs

Derrick Stolee (21):
      hashfile: use write_in_full()
      csum-file.h: increase hashfile buffer size
      read-cache: use hashfile instead of git_hash_ctx
      read-cache: delete unused hashing methods
      *: fix typos
      sparse-index: skip indexes with unmerged entries
      sparse-index: include EXTENDED flag when expanding
      t1092: replace incorrect 'echo' with 'cat'
      t1092: expand repository data shape
      t1092: add tests for status/add and sparse files
      unpack-trees: preserve cache_bottom
      unpack-trees: compare sparse directories correctly
      unpack-trees: rename unpack_nondirectories()
      unpack-trees: unpack sparse directory entries
      dir.c: accept a directory as part of cone-mode patterns
      diff-lib: handle index diffs with sparse dirs
      status: skip sparse-checkout percentage with sparse-index
      status: use sparse-index throughout
      wt-status: expand added sparse directory entries
      fsmonitor: integrate with sparse index
      t1092: document bad sparse-checkout behavior

Elijah Newren (29):
      t6423: rename file within directory that other side renamed
      Documentation/technical: describe remembering renames optimization
      fast-rebase: change assert() to BUG()
      fast-rebase: write conflict state to working tree, index, and HEAD
      t6429: testcases for remembering renames
      merge-ort: add data structures for in-memory caching of rename detection
      merge-ort: populate caches of rename detection results
      merge-ort: add code to check for whether cached renames can be reused
      merge-ort: avoid accidental API mis-use
      merge-ort: preserve cached renames for the appropriate side
      merge-ort: add helper functions for using cached renames
      merge-ort: handle interactions of caching and rename/rename(1to1) cases
      merge-ort, diffcore-rename: employ cached renames when possible
      merge-ort: replace string_list_df_name_compare with faster alternative
      diffcore-rename: avoid unnecessary strdup'ing in break_idx
      Fix various issues found in comments
      merge-ort: miscellaneous touch-ups
      promisor-remote: output trace2 statistics for number of objects fetched
      t6421: add tests checking for excessive object downloads during merge
      diffcore-rename: allow different missing_object_cb functions
      diffcore-rename: use a different prefetch for basename comparisons
      merge-ort: add prefetching for content merges
      t6423: test directory renames causing rename-to-self
      merge-ort: ensure we consult df_conflict and path_conflicts
      merge-recursive: handle rename-to-self case
      diff: correct warning message when renameLimit exceeded
      doc: clarify documentation for rename/copy limits
      diffcore-rename: treat a rename_limit of 0 as unlimited
      rename: bump limit defaults yet again

Eric Wong (6):
      xmmap: inform Linux users of tuning knobs on ENOMEM
      speed up alt_odb_usable() with many alternates
      avoid strlen via strbuf_addstr in link_alt_odb_entry
      make object_directory.loose_objects_subdir_seen a bitmap
      oidcpy_with_padding: constify `src' arg
      oidtree: a crit-bit tree for odb_loose_cache

Fabian Wermelinger (1):
      completion: bash: fix late declaration of __git_cmd_idx

Felipe Contreras (32):
      doc: refactor common asciidoc dependencies
      doc: improve asciidoc dependencies
      doc: remove unnecessary rm instances
      doc: simplify Makefile using .DELETE_ON_ERROR
      doc: avoid using rm directly
      push: rename !triangular to same_remote
      push: hedge code of default=simple
      push: copy code to setup_push_simple()
      push: reorganize setup_push_simple()
      push: simplify setup_push_simple()
      push: remove unused code in setup_push_upstream()
      doc: push: explain default=simple correctly
      push: create new get_upstream_ref() helper
      push: return immediately in trivial switch case
      push: split switch cases
      push: factor out null branch check
      push: only get the branch when needed
      push: make setup_push_* return the dst
      push: trivial simplifications
      push: get rid of all the setup_push_* functions
      push: factor out the typical case
      push: remove redundant check
      push: remove trivial function
      push: only check same_remote when needed
      push: don't get a full remote object
      doc: merge: mention default of defaulttoupstream
      doc: avoid using the gender of other people
      comments: avoid using the gender of our users
      pull: cleanup autostash check
      pull: trivial cleanup
      pull: trivial whitespace style fix
      doc: pull: fix rebase=false documentation

Gregory Anders (1):
      git-send-email: add option to specify sendmail command

Han-Wen Nienhuys (26):
      refs: make explicit that ref_iterator_peel returns boolean
      t4202: split testcase for invalid HEAD symref and HEAD hash
      t/helper/ref-store: initialize oid in resolve-ref
      t9300: check ref existence using test-helper rather than a file system check
      t5601: read HEAD using rev-parse
      t1401: use tar to snapshot and restore repo state
      t1401-symbolic-ref: avoid direct filesystem access
      t1413: use tar to save and restore entire .git directory
      t1301: fix typo in error message
      t5000: reformat indentation to the latest fashion
      t5000: inspect HEAD using git-rev-parse
      t7003: use rev-parse rather than FS inspection
      t5304: restyle: trim empty lines, drop ':' before >
      t5304: use "reflog expire --all" to clear the reflog
      test-lib: provide test prereq REFFILES
      t1407: require REFFILES for for_each_reflog test
      t1414: mark corruption test with REFFILES
      t2017: mark --orphan/logAllRefUpdates=false test as REFFILES
      t1404: mark tests that muck with .git directly as REFFILES.
      t7900: stop checking for loose refs
      t7003: check reflog existence only for REFFILES
      t4202: mark bogus head hash test with REFFILES
      t1415: set REFFILES for test specific to storage format
      t1415: avoid direct filesystem access for writing refs
      t7509: avoid direct file access for writing CHERRY_PICK_HEAD
      refs/debug: quote prefix

Hu Jialun (2):
      commit: reorganise commit hint strings
      commit: remove irrelavent prompt on `--allow-empty-message`

Jean-Noël Avila (1):
      help: fix small typo in error message

Jeff King (26):
      clone: clean up directory after transport_fetch_refs() failure
      fetch-pack: signal v2 server that we are done making requests
      doc: explain the use of color.pager
      doc: warn people against --max-pack-size
      ll_binary_merge(): handle XDL_MERGE_FAVOR_UNION
      ll_union_merge(): pass name labels to ll_xdl_merge()
      ll_union_merge(): rename path_unused parameter
      add_pending_object_with_path(): work around "gcc -O3" complaint
      bitmaps: don't recurse into trees already in the bitmap
      t: use portable wrapper for readlink(1)
      pretty.h: update and expand docstring for userformat_find_requirements()
      log: avoid loading decorations for userformats that don't need it
      object.h: expand docstring for lookup_unknown_object()
      object.h: add lookup_object_by_type() function
      load_ref_decorations(): avoid parsing non-tag objects
      add_ref_decoration(): rename s/type/deco_type/
      test-lib: avoid accidental globbing in match_pattern_list()
      doc/rev-list-options: fix duplicate word typo
      load_ref_decorations(): fix decoration with tags
      t0000: clear GIT_SKIP_TESTS before running sub-tests
      doc/git-config: explain --file instead of referring to GIT_CONFIG
      doc/git-config: clarify GIT_CONFIG environment variable
      doc/git-config: simplify "override" advice for FILES section
      pack-bitmap: check pack validity when opening bitmap
      ci: run "apt-get update" before "apt-get install"
      ci/install-dependencies: handle "sparse" job package installs

Jiang Xin (5):
      t6020: fix incompatible parameter expansion
      sideband: don't lose clear-to-eol at packet boundary
      test: compare raw output, not mangle tabs and spaces
      test: refactor to use "test_commit" to create commits
      test: refactor to use "get_abbrev_oid" to get abbrev oid

Johannes Schindelin (15):
      multimail: stop shipping a copy
      subtree: fix the GIT_EXEC_PATH sanity check to work on Windows
      subtree: fix assumption about the directory separator
      pager: avoid setting COLUMNS when we're guessing its value
      mingw: move Git for Windows' system config where users expect it
      config: normalize the path of the system gitconfig
      ci: use the new GitHub Action to download git-sdk-64-minimal
      ci (vs-build): use `cmd` to copy the DLLs, not `powershell`
      ci: upgrade to using actions/{up,down}load-artifacts v2
      ci (windows): transfer also the Git-tracked files to the test jobs
      artifacts-tar: respect NO_GETTEXT
      ci: accelerate the checkout
      ci: run `make sparse` as part of the GitHub workflow
      ci(check-whitespace): stop requiring a read/write token
      ci(check-whitespace): restrict to the intended commits

Jonathan Nieder (1):
      xsize_t: avoid implementation defined behavior when len < 0

Jonathan Tan (7):
      repository: move global r_f_p_c to repo struct
      promisor-remote: support per-repository config
      submodule: refrain from filtering GIT_CONFIG_COUNT
      run-command: refactor subprocess env preparation
      promisor-remote: teach lazy-fetch in any repo
      unpack-trees: refactor prefetching code
      cache-tree: prefetch in partial clone read-tree

Josh Steadmon (1):
      docs: fix api-trace2 doc for "too_many_files" event

Julian Verdurmen (1):
      userdiff: add support for C# record types

Junio C Hamano (10):
      revisions(7): clarify that most commands take a single revision range
      The first batch post Git 2.32
      The second batch
      The third batch
      The fourth batch
      CodingGuidelines: recommend gender-neutral description
      The fifth batch
      The sixth batch
      The seventh batch
      Git 2.33-rc0

Kaartic Sivaraam (1):
      submodule: remove unnecessary `prefix` based option logic

Matheus Tavares (1):
      parallel-checkout: send the new object_id algo field to the workers

Matthew Rogers (3):
      cmake: add knob to disable vcpkg
      cmake: create compile_commands.json by default
      cmake: add warning for ignored MSGFMT_EXE

Michael Schindler (1):
      mergetools/kdiff3: make kdiff3 work on Windows too

Patrick Steinhardt (2):
      perf: fix when running with TEST_OUTPUT_DIRECTORY
      t0000: fix test if run with TEST_OUTPUT_DIRECTORY

Philippe Blain (2):
      parse-options: don't complete option aliases by default
      doc: clarify description of 'submodule.recurse'

René Scharfe (2):
      grep: report missing left operand of --and
      khash: clarify that allocations never fail

Reuven Y (1):
      docs: improve fast-forward in glossary content

Sergey Organov (10):
      t4013: test that "-m" alone has no effect in "git log"
      t4013: test "git log -m --raw"
      t4013: test "git log -m --stat"
      t4013: test "git diff-tree -m"
      t4013: test "git diff-index -m"
      diff-merges: move specific diff-index "-m" handling to diff-index
      git-svn: stop passing "-m" to "git rev-list"
      stash list: stop passing "-m" to "git log"
      diff-merges: rename "combined_imply_patch" to "merges_imply_patch"
      diff-merges: let "-m" imply "-p"

Stephen Manz (3):
      t2400: clean up '"add" worktree with lock' test
      worktree: mark lock strings with `_()` for translation
      worktree: teach `add` to accept --reason <string> with --lock

Tao Klerks (1):
      Remove warning that repack only works on non-promisor packfiles

Taylor Blau (6):
      csum-file: introduce checksum_valid()
      commit-graph: rewrite to use checksum_valid()
      midx: don't reuse corrupt MIDXs when writing
      midx: report checksum mismatches during 'verify'
      multi-pack-index: fix potential segfault without sub-command
      pack-bitmap: clarify comment in filter_bitmap_exclude_type()

Teng Long (1):
      packfile-uri.txt: fix blobPackfileUri description

Thomas Braun (1):
      completion: add --anchored to diff's options

Wolfgang Müller (1):
      rev-parse: mark die() messages for translation

ZheNing Hu (4):
      ref-filter: add objectsize to used_atom
      ref-filter: introduce enum atom_type
      cat-file: handle trivial --batch format with --batch-all-objects
      cat-file: merge two block into one

brian m. carlson (1):
      rev-list: add option for --pretty=format without header

dorgon.chang (1):
      git-p4: fix failed submit by skip non-text data files

edef (1):
      mailinfo: don't discard names under 3 characters

Ævar Arnfjörð Bjarmason (90):
      test-lib: bring $remove_trash out of retirement
      test-lib tests: remove dead GIT_TEST_FRAMEWORK_SELFTEST variable
      test-lib-functions: reword "test_commit --append" docs
      test-lib-functions: document test_commit --no-tag
      test-lib functions: add an --annotated option to "test_commit"
      describe tests: convert setup to use test_commit
      test-lib functions: add --printf option to test_commit
      submodule tests: use symbolic-ref --short to discover branch name
      test-lib: reformat argument list in test_create_repo()
      test-lib: do not show advice about init.defaultBranch under --verbose
      test-lib: split up and deprecate test_create_repo()
      grep/pcre2 tests: reword comments referring to kwset
      pickaxe tests: refactor to use test_commit --append --printf
      pickaxe tests: add test for diffgrep_consume() internals
      pickaxe tests: add test for "log -S" not being a regex
      pickaxe tests: test for -G, -S and --find-object incompatibility
      pickaxe tests: add missing test for --no-pickaxe-regex being an error
      pickaxe: die when -G and --pickaxe-regex are combined
      pickaxe: die when --find-object and --pickaxe-all are combined
      diff.h: move pickaxe fields together again
      pickaxe/style: consolidate declarations and assignments
      perf: add performance test for pickaxe
      pickaxe: refactor function selection in diffcore-pickaxe()
      pickaxe: assert that we must have a needle under -G or -S
      pickaxe -S: support content with NULs under --pickaxe-regex
      pickaxe: rename variables in has_changes() for brevity
      pickaxe -S: slightly optimize contains()
      xdiff-interface: prepare for allowing early return
      xdiff-interface: allow early return from xdiff_emit_line_fn
      pickaxe -G: terminate early on matching lines
      pickaxe -G: don't special-case create/delete
      xdiff users: use designated initializers for out_line
      xdiff-interface: replace discard_hunk_line() with a flag
      describe tests: improve test for --work-tree & --dirty
      describe tests: refactor away from glob matching
      describe tests: don't rely on err.actual from "check_describe"
      describe tests: fix nested "test_expect_success" call
      describe tests: support -C in "check_describe"
      trace2: refactor to avoid gcc warning under -O3
      send-email tests: support GIT_TEST_PERL_FATAL_WARNINGS=true
      send-email tests: test for boolean variables without a value
      send-email: remove non-working support for "sendemail.smtpssl"
      send-email: refactor sendemail.smtpencryption config parsing
      send-email: copy "config_regxp" into git-send-email.perl
      send-email: lazily load config for a big speedup
      send-email: lazily shell out to "git var"
      send-email: use function syntax instead of barewords
      send-email: get rid of indirect object syntax
      send-email: lazily load modules for a big speedup
      perl: lazily load some common Git.pm setup code
      send-email: move trivial config handling to Perl
      perl: nano-optimize by replacing Cwd::cwd() with Cwd::getcwd()
      protocol-caps.h: add newline at end of file
      read-cache.c: don't guard calls to progress.c API
      xdiff: use BUG(...), not xdl_bug(...)
      builtins + test helpers: use return instead of exit() in cmd_*
      mktag tests: parse out options in helper
      mktag tests: invert --no-strict test
      show-branch tests: rename the one "show-branch" test file
      show-branch tests: modernize test code
      pre-commit hook tests: don't leave "actual" nonexisting on failure
      gc tests: add a test for the "pre-auto-gc" hook
      mktag tests: test hash-object --literally and unreachable fsck
      mktag tests: test update-ref and reachable fsck
      mktag tests: test for-each-ref
      mktag tests: test fast-export
      show-branch: don't <COLOR></RESET> for space characters
      show-branch tests: add missing tests
      Makefile: add and use the ".DELETE_ON_ERROR" flag
      test-lib.sh: set COLUMNS=80 for --verbose repeatability
      send-pack.c: move "no refs in common" abort earlier
      fetch: document the --negotiate-only option
      *.h: move some *_INIT to designated initializers
      *.c *_init(): define in terms of corresponding *_INIT macro
      dir.[ch]: replace dir_init() with DIR_INIT
      string-list.[ch]: add a string_list_init_{nodup,dup}()
      string-list.h users: change to use *_{nodup,dup}()
      bundle cmd: stop leaking memory from parse_options_cmd_bundle()
      bundle.c: use a temporary variable for OIDs and names
      bundle: remove "ref_list" in favor of string-list.c API
      imap-send.c: use less verbose strbuf_fread() idiom
      fetch: fix segfault in --negotiate-only without --negotiation-tip=*
      *.c static functions: don't forward-declare __attribute__
      sequencer.c: move static function to avoid forward decl
      *.c static functions: add missing __attribute__((format))
      *.h: add a few missing __attribute__((format))
      advice.h: add missing __attribute__((format)) & fix usage
      test-lib-functions: use test-tool for [de]packetize()
      bundle tests: use ">file" not ": >file"
      bundle tests: use test_cmp instead of grep

Đoàn Trần Công Danh (6):
      t: use configured TAR instead of tar
      doc/log: correct default for --decorate
      t: use user-specified utf-8 locale for testing svn
      test-lib-functions: introduce test_stdout_line_count
      t6400: preserve git ls-files exit status code
      t6402: preserve git exit status code


^ permalink raw reply	[relevance 3%]

* Re: [PATCH 14/19] [GSOC] cat-file: reuse ref-filter logic
  2021-07-15  9:45  0%           ` Christian Couder
@ 2021-07-15 13:53  0%             ` ZheNing Hu
  0 siblings, 0 replies; 162+ results
From: ZheNing Hu @ 2021-07-15 13:53 UTC (permalink / raw)
  To: Christian Couder
  Cc: Junio C Hamano, ZheNing Hu via GitGitGadget, git, Hariom Verma,
	Bagas Sanjaya, Jeff King, Ævar Arnfjörð Bjarmason,
	Eric Sunshine

Christian Couder <christian.couder@gmail.com> 于2021年7月15日周四 下午5:45写道:
>
> On Thu, Jul 15, 2021 at 3:53 AM ZheNing Hu <adlternative@gmail.com> wrote:
> >
> > ZheNing Hu <adlternative@gmail.com> 于2021年7月15日周四 上午12:24写道:
> > >
> > > Junio C Hamano <gitster@pobox.com> 于2021年7月13日周二 上午4:38写道:
>
> > > > I find it somewhat alarming if we are talking about "fast-path"
> > > > workaround before understanding why we are seeing slowdown in the
> > > > first place.
> > >
> > > There is no complete conclusion yet, but I try to use time and hyperfine test
> > > for these commits (t/perf/* is not accurate enough):
> > >
> > > ----------------------------------------------------------------------------------------------------------------------------
> > > |                        subject                                  |
> > > --batch-check (using hyperfine) |   --batch(using time) |
> > > ----------------------------------------------------------------------------------------------------------------------------
> > > |[GSOC] cat-file: use fast path when using default_format         |
> > >         700ms                |          25.450s      |
> > > ----------------------------------------------------------------------------------------------------------------------------
> > > |[GSOC] cat-file: re-implement --textconv, --filters options      |
> > >         790ms                |          29.933s      |
> > > ----------------------------------------------------------------------------------------------------------------------------
> > > |[GSOC] cat-file: reuse err buf in batch_object_write()           |
> > >         770ms                |          29.153s      |
> > > ----------------------------------------------------------------------------------------------------------------------------
> > > |[GSOC] cat-file: reuse ref-filter logic                          |
> > >         780ms                |          29.412s      |
> > > ----------------------------------------------------------------------------------------------------------------------------
> > > |The third batch (upstream/master)                                |
> > >         640ms                |          26.025s      |
> > > ----------------------------------------------------------------------------------------------------------------------------
> > >
> > > I think we their cost is indeed from "[GSOC] cat-file: reuse ref-filter logic".
> > > But what causes the loss of performance needs further analysis.
> >
> > Now I think:
> > There are three main reasons why the performance of cat-file --batch
> > deteriorates after refactor.
> >
> > 1. Too many copies are used in ref-filter and we cannot avoid these copies
> > easily because ref-filter needs these copied data to implement atoms %(if),
> > %(else), %(end)... and the --sort option. The original cat-file
> > --batch only needs
> > to output the data to the final string. Its copy times are relatively small.
>
> Is it possible to check early if any of the atoms that needs these
> copied data is specified, and if none of them is specified then to
> avoid the copies?
>

Well, The copy I'm talking about here refers to something like "v->s =
xstrdup(xxx)";
but v->s is need by --sort, so it is very difficult to remove. At the
moment I think the
only solution is the fast path mentioned by Ævar Arnfjörð Bjarmason.

> > 2. More complex data structure and parsing process are used in ref-filter.
> > This is why it can provide more and more useful atoms. Therefore, I think the
> > performance degradation that occurs here is normal.
>
> Are there way the more complex parsing could be avoided if it's not
> needed by the atoms that are actually used?

No. For example, we can only support "objectsize" before and now we can
support "objectsize:short", so we need to pay more parsing process here.
(It's necessary)

>
> > 3. As Ævar Arnfjörð Bjarmason mentioned, oid_object_info_extend() was used
> > twice in get_object() before. oid_object_info_extend() is the hot
> > path, we should
> > try to avoid calling it, So in last version of  "[GSOC] cat-file:
> > re-implement --textconv,
> > --filters options", I make the unified processing of --textconv and
> > --filter avoid calling
> > oid_object_info_extend() twice.
>
> Ok, thanks for the details and your work on this performance issue!
>
> I wonder if your patch series could be split, so that the early parts
> that add new atoms to ref-filter could be merged sooner?
>

Should this part of the work be handed over to Junio?
The implementation of %(rest) and %(raw)  may be worth merging,
they are truly "zh/ref-filter-raw-data".
The other part may be called "cat-file-reuse-ref-filter-logic".

> Best,
> Christian.

Thanks.
--
ZheNing Hu

^ permalink raw reply	[relevance 0%]

* Re: [PATCH 14/19] [GSOC] cat-file: reuse ref-filter logic
  2021-07-15  1:53  0%         ` ZheNing Hu
@ 2021-07-15  9:45  0%           ` Christian Couder
  2021-07-15 13:53  0%             ` ZheNing Hu
  0 siblings, 1 reply; 162+ results
From: Christian Couder @ 2021-07-15  9:45 UTC (permalink / raw)
  To: ZheNing Hu
  Cc: Junio C Hamano, ZheNing Hu via GitGitGadget, git, Hariom Verma,
	Bagas Sanjaya, Jeff King, Ævar Arnfjörð Bjarmason,
	Eric Sunshine

On Thu, Jul 15, 2021 at 3:53 AM ZheNing Hu <adlternative@gmail.com> wrote:
>
> ZheNing Hu <adlternative@gmail.com> 于2021年7月15日周四 上午12:24写道:
> >
> > Junio C Hamano <gitster@pobox.com> 于2021年7月13日周二 上午4:38写道:

> > > I find it somewhat alarming if we are talking about "fast-path"
> > > workaround before understanding why we are seeing slowdown in the
> > > first place.
> >
> > There is no complete conclusion yet, but I try to use time and hyperfine test
> > for these commits (t/perf/* is not accurate enough):
> >
> > ----------------------------------------------------------------------------------------------------------------------------
> > |                        subject                                  |
> > --batch-check (using hyperfine) |   --batch(using time) |
> > ----------------------------------------------------------------------------------------------------------------------------
> > |[GSOC] cat-file: use fast path when using default_format         |
> >         700ms                |          25.450s      |
> > ----------------------------------------------------------------------------------------------------------------------------
> > |[GSOC] cat-file: re-implement --textconv, --filters options      |
> >         790ms                |          29.933s      |
> > ----------------------------------------------------------------------------------------------------------------------------
> > |[GSOC] cat-file: reuse err buf in batch_object_write()           |
> >         770ms                |          29.153s      |
> > ----------------------------------------------------------------------------------------------------------------------------
> > |[GSOC] cat-file: reuse ref-filter logic                          |
> >         780ms                |          29.412s      |
> > ----------------------------------------------------------------------------------------------------------------------------
> > |The third batch (upstream/master)                                |
> >         640ms                |          26.025s      |
> > ----------------------------------------------------------------------------------------------------------------------------
> >
> > I think we their cost is indeed from "[GSOC] cat-file: reuse ref-filter logic".
> > But what causes the loss of performance needs further analysis.
>
> Now I think:
> There are three main reasons why the performance of cat-file --batch
> deteriorates after refactor.
>
> 1. Too many copies are used in ref-filter and we cannot avoid these copies
> easily because ref-filter needs these copied data to implement atoms %(if),
> %(else), %(end)... and the --sort option. The original cat-file
> --batch only needs
> to output the data to the final string. Its copy times are relatively small.

Is it possible to check early if any of the atoms that needs these
copied data is specified, and if none of them is specified then to
avoid the copies?

> 2. More complex data structure and parsing process are used in ref-filter.
> This is why it can provide more and more useful atoms. Therefore, I think the
> performance degradation that occurs here is normal.

Are there way the more complex parsing could be avoided if it's not
needed by the atoms that are actually used?

> 3. As Ævar Arnfjörð Bjarmason mentioned, oid_object_info_extend() was used
> twice in get_object() before. oid_object_info_extend() is the hot
> path, we should
> try to avoid calling it, So in last version of  "[GSOC] cat-file:
> re-implement --textconv,
> --filters options", I make the unified processing of --textconv and
> --filter avoid calling
> oid_object_info_extend() twice.

Ok, thanks for the details and your work on this performance issue!

I wonder if your patch series could be split, so that the early parts
that add new atoms to ref-filter could be merged sooner?

Best,
Christian.

^ permalink raw reply	[relevance 0%]

* Re: [PATCH 14/19] [GSOC] cat-file: reuse ref-filter logic
  2021-07-14 16:24  6%       ` ZheNing Hu
@ 2021-07-15  1:53  0%         ` ZheNing Hu
  2021-07-15  9:45  0%           ` Christian Couder
  0 siblings, 1 reply; 162+ results
From: ZheNing Hu @ 2021-07-15  1:53 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Christian Couder, ZheNing Hu via GitGitGadget, git, Hariom Verma,
	Bagas Sanjaya, Jeff King, Ævar Arnfjörð Bjarmason,
	Eric Sunshine

ZheNing Hu <adlternative@gmail.com> 于2021年7月15日周四 上午12:24写道:
>
> Junio C Hamano <gitster@pobox.com> 于2021年7月13日周二 上午4:38写道:
>
> >
> > Christian Couder <christian.couder@gmail.com> writes:
> >
> > More importantly, why is such a fast-path even needed?  Isn't it a
> > sign that the ref-filter implementation is eating more cycles than
> > it should for given set of placeholders?  Do we know where the extra
> > cycles goes?
> >
> > I find it somewhat alarming if we are talking about "fast-path"
> > workaround before understanding why we are seeing slowdown in the
> > first place.
>
> There is no complete conclusion yet, but I try to use time and hyperfine test
> for these commits (t/perf/* is not accurate enough):
>
> ----------------------------------------------------------------------------------------------------------------------------
> |                        subject                                  |
> --batch-check (using hyperfine) |   --batch(using time) |
> ----------------------------------------------------------------------------------------------------------------------------
> |[GSOC] cat-file: use fast path when using default_format         |
>         700ms                |          25.450s      |
> ----------------------------------------------------------------------------------------------------------------------------
> |[GSOC] cat-file: re-implement --textconv, --filters options      |
>         790ms                |          29.933s      |
> ----------------------------------------------------------------------------------------------------------------------------
> |[GSOC] cat-file: reuse err buf in batch_object_write()           |
>         770ms                |          29.153s      |
> ----------------------------------------------------------------------------------------------------------------------------
> |[GSOC] cat-file: reuse ref-filter logic                          |
>         780ms                |          29.412s      |
> ----------------------------------------------------------------------------------------------------------------------------
> |The third batch (upstream/master)                                |
>         640ms                |          26.025s      |
> ----------------------------------------------------------------------------------------------------------------------------
>
> I think we their cost is indeed from "[GSOC] cat-file: reuse ref-filter logic".
> But what causes the loss of performance needs further analysis.
>

Now I think:
There are three main reasons why the performance of cat-file --batch
deteriorates after refactor.

1. Too many copies are used in ref-filter and we cannot avoid these copies
easily because ref-filter needs these copied data to implement atoms %(if),
%(else), %(end)... and the --sort option. The original cat-file
--batch only needs
to output the data to the final string. Its copy times are relatively small.

2. More complex data structure and parsing process are used in ref-filter.
This is why it can provide more and more useful atoms. Therefore, I think the
performance degradation that occurs here is normal.

3. As Ævar Arnfjörð Bjarmason mentioned, oid_object_info_extend() was used
twice in get_object() before. oid_object_info_extend() is the hot
path, we should
try to avoid calling it, So in last version of  "[GSOC] cat-file:
re-implement --textconv,
--filters options", I make the unified processing of --textconv and
--filter avoid calling
oid_object_info_extend() twice.

Thanks.
--
ZheNing Hu

^ permalink raw reply	[relevance 0%]

* Re: [PATCH 14/19] [GSOC] cat-file: reuse ref-filter logic
  @ 2021-07-14 16:24  6%       ` ZheNing Hu
  2021-07-15  1:53  0%         ` ZheNing Hu
  0 siblings, 1 reply; 162+ results
From: ZheNing Hu @ 2021-07-14 16:24 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Christian Couder, ZheNing Hu via GitGitGadget, git, Hariom Verma,
	Bagas Sanjaya, Jeff King, Ævar Arnfjörð Bjarmason,
	Eric Sunshine

Junio C Hamano <gitster@pobox.com> 于2021年7月13日周二 上午4:38写道:

>
> Christian Couder <christian.couder@gmail.com> writes:
>
> More importantly, why is such a fast-path even needed?  Isn't it a
> sign that the ref-filter implementation is eating more cycles than
> it should for given set of placeholders?  Do we know where the extra
> cycles goes?
>
> I find it somewhat alarming if we are talking about "fast-path"
> workaround before understanding why we are seeing slowdown in the
> first place.

There is no complete conclusion yet, but I try to use time and hyperfine test
for these commits (t/perf/* is not accurate enough):

----------------------------------------------------------------------------------------------------------------------------
|                        subject                                  |
--batch-check (using hyperfine) |   --batch(using time) |
----------------------------------------------------------------------------------------------------------------------------
|[GSOC] cat-file: use fast path when using default_format         |
        700ms                |          25.450s      |
----------------------------------------------------------------------------------------------------------------------------
|[GSOC] cat-file: re-implement --textconv, --filters options      |
        790ms                |          29.933s      |
----------------------------------------------------------------------------------------------------------------------------
|[GSOC] cat-file: reuse err buf in batch_object_write()           |
        770ms                |          29.153s      |
----------------------------------------------------------------------------------------------------------------------------
|[GSOC] cat-file: reuse ref-filter logic                          |
        780ms                |          29.412s      |
----------------------------------------------------------------------------------------------------------------------------
|The third batch (upstream/master)                                |
        640ms                |          26.025s      |
----------------------------------------------------------------------------------------------------------------------------

I think we their cost is indeed from "[GSOC] cat-file: reuse ref-filter logic".
But what causes the loss of performance needs further analysis.

Thanks.
--
ZheNing Hu

^ permalink raw reply	[relevance 6%]

* Re: [PATCH v2 0/8] Parallel Checkout (part 3)
  2021-05-02 10:12  5%   ` Torsten Bögershausen
@ 2021-05-03 15:01  0%     ` Matheus Tavares Bernardino
  0 siblings, 0 replies; 162+ results
From: Matheus Tavares Bernardino @ 2021-05-03 15:01 UTC (permalink / raw)
  To: Torsten Bögershausen
  Cc: git, Christian Couder, Jeff Hostetler, Derrick Stolee

On Sun, May 2, 2021 at 7:12 AM Torsten Bögershausen <tboegi@web.de> wrote:
>
> On Fri, Apr 30, 2021 at 06:40:27PM -0300, Matheus Tavares wrote:
>
> []
>
> Thank's for the work.
> I just make a quick test:
>
> "swapping" git.git between
>
> HEAD is now at e870325ee8 The third batch
> and
> HEAD is now at 7e39198978 The thirteenth batch
>
> On a Desktop running Linux.
> Using the git.git repo, mounted as nfs on an oldish NAS
> with spinning disks (and WLAN) gave this timing:
>
> git -c checkout.workers=1
> 2 minutes, some seconds.
>
> git -c checkout.workers=4
> 1 minute, some seconds.
>
> git -c checkout.workers=16
> 40..44 seconds
>
> Not a scientific measurement, just a positive feedback from a real-world.

Nice! Thanks for testing the parallel version and for your feedback on
it, I appreciate it.

> Good work, I'm looking forward to have this feature in git.git

Thanks :)

^ permalink raw reply	[relevance 0%]

* Re: [PATCH v2 0/8] Parallel Checkout (part 3)
  @ 2021-05-02 10:12  5%   ` Torsten Bögershausen
  2021-05-03 15:01  0%     ` Matheus Tavares Bernardino
  0 siblings, 1 reply; 162+ results
From: Torsten Bögershausen @ 2021-05-02 10:12 UTC (permalink / raw)
  To: Matheus Tavares; +Cc: git, christian.couder, git, stolee

On Fri, Apr 30, 2021 at 06:40:27PM -0300, Matheus Tavares wrote:

[]

Thank's for the work.
I just make a quick test:

"swapping" git.git between

HEAD is now at e870325ee8 The third batch
and
HEAD is now at 7e39198978 The thirteenth batch

On a Desktop running Linux.
Using the git.git repo, mounted as nfs on an oldish NAS
with spinning disks (and WLAN) gave this timing:

git -c checkout.workers=1
2 minutes, some seconds.

git -c checkout.workers=4
1 minute, some seconds.

git -c checkout.workers=16
40..44 seconds

Not a scientific measurement, just a positive feedback from a real-world.

Good work, I'm looking forward to have this feature in git.git



^ permalink raw reply	[relevance 5%]

* [ANNOUNCE] Git v2.31.0
@ 2021-03-15 19:30  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-03-15 19:30 UTC (permalink / raw)
  To: git

The latest feature release Git v2.31.0 is now available at the
usual places.  It is comprised of 679 non-merge commits since
v2.30.0, contributed by 85 people, 23 of which are new faces [*].

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.31.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.30.0 are as follows.
Welcome to the Git development community!

  Aleksey Kliger, Andreas Bühmann, Andrew Klotz, Andrzej Hunt,
  Antonio Russo, Arnaud Morin, Bagas Sanjaya, Christian Walther,
  Clement Moyroud, Daniel Levin, Daniel Troger, Harold Kim,
  Jacob Vosmaer, LeSeulArtichaut, Mikhail Klyushin, Neeraj Singh,
  Sangeeta Jain, Seth House, Shubham Verma, Utku Gultopu, Vasyl
  Vavrychuk, Vojtěch Knyttl, and ZheNing Hu.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Abhishek Kumar, Adam Dinwoodie, Ævar Arnfjörð Bjarmason,
  Alexander Shopov, Alex Henrie, Arusekk, brian m. carlson,
  Christian Couder, Christopher Diaz Riveros, Dana Dahlstrom,
  Daniel Santos, Denton Liu, Derrick Stolee, Dimitriy Ryazantcev,
  Elijah Newren, Emir Sarı, Eric Sunshine, Eric Wong, Felipe
  Contreras, Han-Wen Nienhuys, Hariom Verma, Heba Waly, Jean-Noël
  Avila, Jeff Hostetler, Jeff King, Jiang Xin, Joey Salazar,
  Johannes Schindelin, Johannes Sixt, Jonathan Nieder, Jonathan
  Tan, Jordi Mas, Junio C Hamano, Kevin Daudt, Kevin Willford,
  Lars Schneider, Martin Ågren, Martin von Zweigbergk, Matheus
  Tavares, Matthias Rüster, Michael Haggerty, Patrick Steinhardt,
  Paul Jolly, Peter Kaestle, Peter Krefting, Phil Hord, Philippe
  Blain, Phillip Szelat, Phillip Wood, Pranit Bauva, Pratyush
  Yadav, Rafael Silva, Ralf Thielow, René Scharfe, Ross Light,
  Sergey Organov, SZEDER Gábor, Taylor Blau, Thomas Ackermann,
  Torsten Bögershausen, Trần Ngọc Quân, and Yi-Jyun Pan.

[*] We are counting not just the authorship contribution but
    issue reporting, testing and reviewing that are recorded
    in the commit trailers.

----------------------------------------------------------------

Git 2.31 Release Notes
======================

Updates since v2.30
-------------------

Backward incompatible and other important changes

 * The "pack-redundant" command, which has been left stale with almost
   unusable performance issues, now warns loudly when it gets used, as
   we no longer want to recommend its use (instead just "repack -d"
   instead).

 * The development community has adopted Contributor Covenant v2.0 to
   update from v1.4 that we have been using.

 * The support for deprecated PCRE1 library has been dropped.

 * Fixes for CVE-2021-21300 in Git 2.30.2 (and earlier) is included.


UI, Workflows & Features

 * The "--format=%(trailers)" mechanism gets enhanced to make it
   easier to design output for machine consumption.

 * When a user does not tell "git pull" to use rebase or merge, the
   command gives a loud message telling a user to choose between
   rebase or merge but creates a merge anyway, forcing users who would
   want to rebase to redo the operation.  Fix an early part of this
   problem by tightening the condition to give the message---there is
   no reason to stop or force the user to choose between rebase or
   merge if the history fast-forwards.

 * The configuration variable 'core.abbrev' can be set to 'no' to
   force no abbreviation regardless of the hash algorithm.

 * "git rev-parse" can be explicitly told to give output as absolute
   or relative path with the `--path-format=(absolute|relative)` option.

 * Bash completion (in contrib/) update to make it easier for
   end-users to add completion for their custom "git" subcommands.

 * "git maintenance" learned to drive scheduled maintenance on
   platforms whose native scheduling methods are not 'cron'.

 * After expiring a reflog and making a single commit, the reflog for
   the branch would record a single entry that knows both @{0} and
   @{1}, but we failed to answer "what commit were we on?", i.e. @{1}

 * "git bundle" learns "--stdin" option to read its refs from the
   standard input.  Also, it now does not lose refs whey they point
   at the same object.

 * "git log" learned a new "--diff-merges=<how>" option.

 * "git ls-files" can and does show multiple entries when the index is
   unmerged, which is a source for confusion unless -s/-u option is in
   use.  A new option --deduplicate has been introduced.

 * `git worktree list` now annotates worktrees as prunable, shows
   locked and prunable attributes in --porcelain mode, and gained
   a --verbose option.

 * "git clone" tries to locally check out the branch pointed at by
   HEAD of the remote repository after it is done, but the protocol
   did not convey the information necessary to do so when copying an
   empty repository.  The protocol v2 learned how to do so.

 * There are other ways than ".." for a single token to denote a
   "commit range", namely "<rev>^!" and "<rev>^-<n>", but "git
   range-diff" did not understand them.

 * The "git range-diff" command learned "--(left|right)-only" option
   to show only one side of the compared range.

 * "git mergetool" feeds three versions (base, local and remote) of
   a conflicted path unmodified.  The command learned to optionally
   prepare these files with unconflicted parts already resolved.

 * The .mailmap is documented to be read only from the root level of a
   working tree, but a stray file in a bare repository also was read
   by accident, which has been corrected.

 * "git maintenance" tool learned a new "pack-refs" maintenance task.

 * The error message given when a configuration variable that is
   expected to have a boolean value has been improved.

 * Signed commits and tags now allow verification of objects, whose
   two object names (one in SHA-1, the other in SHA-256) are both
   signed.

 * "git rev-list" command learned "--disk-usage" option.

 * "git {diff,log} --{skip,rotate}-to=<path>" allows the user to
   discard diff output for early paths or move them to the end of the
   output.

 * "git difftool" learned "--skip-to=<path>" option to restart an
   interrupted session from an arbitrary path.

 * "git grep" has been tweaked to be limited to the sparse checkout
   paths.

 * "git rebase --[no-]fork-point" gained a configuration variable
   rebase.forkPoint so that users do not have to keep specifying a
   non-default setting.


Performance, Internal Implementation, Development Support etc.

 * A 3-year old test that was not testing anything useful has been
   corrected.

 * Retire more names with "sha1" in it.

 * The topological walk codepath is covered by new trace2 stats.

 * Update the Code-of-conduct to version 2.0 from the upstream (we've
   been using version 1.4).

 * "git mktag" validates its input using its own rules before writing
   a tag object---it has been updated to share the logic with "git
   fsck".

 * Two new ways to feed configuration variable-value pairs via
   environment variables have been introduced, and the way
   GIT_CONFIG_PARAMETERS encodes variable/value pairs has been tweaked
   to make it more robust.

 * Tests have been updated so that they do not to get affected by the
   name of the default branch "git init" creates.

 * "git fetch" learns to treat ref updates atomically in all-or-none
   fashion, just like "git push" does, with the new "--atomic" option.

 * The peel_ref() API has been replaced with peel_iterated_oid().

 * The .use_shell flag in struct child_process that is passed to
   run_command() API has been clarified with a bit more documentation.

 * Document, clean-up and optimize the code around the cache-tree
   extension in the index.

 * The ls-refs protocol operation has been optimized to narrow the
   sub-hierarchy of refs/ it walks to produce response.

 * When removing many branches and tags, the code used to do so one
   ref at a time.  There is another API it can use to delete multiple
   refs, and it makes quite a lot of performance difference when the
   refs are packed.

 * The "pack-objects" command needs to iterate over all the tags when
   automatic tag following is enabled, but it actually iterated over
   all refs and then discarded everything outside "refs/tags/"
   hierarchy, which was quite wasteful.

 * A perf script was made more portable.

 * Our setting of GitHub CI test jobs were a bit too eager to give up
   once there is even one failure found.  Tweak the knob to allow
   other jobs keep running even when we see a failure, so that we can
   find more failures in a single run.

 * We've carried compatibility codepaths for compilers without
   variadic macros for quite some time, but the world may be ready for
   them to be removed.  Force compilation failure on exotic platforms
   where variadic macros are not available to find out who screams in
   such a way that we can easily revert if it turns out that the world
   is not yet ready.

 * Code clean-up to ensure our use of hashtables using object names as
   keys use the "struct object_id" objects, not the raw hash values.

 * Lose the debugging aid that may have been useful in the past, but
   no longer is, in the "grep" codepaths.

 * Some pretty-format specifiers do not need the data in commit object
   (e.g. "%H"), but we were over-eager to load and parse it, which has
   been made even lazier.

 * Get rid of "GETTEXT_POISON" support altogether, which may or may
   not be controversial.

 * Introduce an on-disk file to record revindex for packdata, which
   traditionally was always created on the fly and only in-core.

 * The commit-graph learned to use corrected commit dates instead of
   the generation number to help topological revision traversal.

 * Piecemeal of rewrite of "git bisect" in C continues.

 * When a pager spawned by us exited, the trace log did not record its
   exit status correctly, which has been corrected.

 * Removal of GIT_TEST_GETTEXT_POISON continues.

 * The code to implement "git merge-base --independent" was poorly
   done and was kept from the very beginning of the feature.

 * Preliminary changes to fsmonitor integration.

 * Performance improvements for rename detection.

 * The common code to deal with "chunked file format" that is shared
   by the multi-pack-index and commit-graph files have been factored
   out, to help codepaths for both filetypes to become more robust.

 * The approach to "fsck" the incoming objects in "index-pack" is
   attractive for performance reasons (we have them already in core,
   inflated and ready to be inspected), but fundamentally cannot be
   applied fully when we receive more than one pack stream, as a tree
   object in one pack may refer to a blob object in another pack as
   ".gitmodules", when we want to inspect blobs that are used as
   ".gitmodules" file, for example.  Teach "index-pack" to emit
   objects that must be inspected later and check them in the calling
   "fetch-pack" process.

 * The logic to handle "trailer" related placeholders in the
   "--format=" mechanisms in the "log" family and "for-each-ref"
   family is getting unified.

 * Raise the buffer size used when writing the index file out from
   (obviously too small) 8kB to (clearly sufficiently large) 128kB.

 * It is reported that open() on some platforms (e.g. macOS Big Sur)
   can return EINTR even though our timers are set up with SA_RESTART.
   A workaround has been implemented and enabled for macOS to rerun
   open() transparently from the caller when this happens.


Fixes since v2.30
-----------------

 * Diagnose command line error of "git rebase" early.

 * Clean up option descriptions in "git cmd --help".

 * "git stash" did not work well in a sparsely checked out working
   tree.

 * Some tests expect that "ls -l" output has either '-' or 'x' for
   group executable bit, but setgid bit can be inherited from parent
   directory and make these fields 'S' or 's' instead, causing test
   failures.

 * "git for-each-repo --config=<var> <cmd>" should not run <cmd> for
   any repository when the configuration variable <var> is not defined
   even once.

 * Fix 2.29 regression where "git mergetool --tool-help" fails to list
   all the available tools.

 * Fix for procedure to building CI test environment for mac.

 * The implementation of "git branch --sort" wrt the detached HEAD
   display has always been hacky, which has been cleaned up.

 * Newline characters in the host and path part of git:// URL are
   now forbidden.

 * "git diff" showed a submodule working tree with untracked cruft as
   "Submodule commit <objectname>-dirty", but a natural expectation is
   that the "-dirty" indicator would align with "git describe --dirty",
   which does not consider having untracked files in the working tree
   as source of dirtiness.  The inconsistency has been fixed.

 * When more than one commit with the same patch ID appears on one
   side, "git log --cherry-pick A...B" did not exclude them all when a
   commit with the same patch ID appears on the other side.  Now it
   does.

 * Documentation for "git fsck" lost stale bits that has become
   incorrect.

 * Doc fix for packfile URI feature.

 * When "git rebase -i" processes "fixup" insn, there is no reason to
   clean up the commit log message, but we did the usual stripspace
   processing.  This has been corrected.
   (merge f7d42ceec5 js/rebase-i-commit-cleanup-fix later to maint).

 * Fix in passing custom args from "git clone" to "upload-pack" on the
   other side.
   (merge ad6b5fefbd jv/upload-pack-filter-spec-quotefix later to maint).

 * The command line completion (in contrib/) completed "git branch -d"
   with branch names, but "git branch -D" offered tagnames in addition,
   which has been corrected.  "git branch -M" had the same problem.
   (merge 27dc071b9a jk/complete-branch-force-delete later to maint).

 * When commands are started from a subdirectory, they may have to
   compare the path to the subdirectory (called prefix and found out
   from $(pwd)) with the tracked paths.  On macOS, $(pwd) and
   readdir() yield decomposed path, while the tracked paths are
   usually normalized to the precomposed form, causing mismatch.  This
   has been fixed by taking the same approach used to normalize the
   command line arguments.
   (merge 5c327502db tb/precompose-prefix-too later to maint).

 * Even though invocations of "die()" were logged to the trace2
   system, "BUG()"s were not, which has been corrected.
   (merge 0a9dde4a04 jt/trace2-BUG later to maint).

 * "git grep --untracked" is meant to be "let's ALSO find in these
   files on the filesystem" when looking for matches in the working
   tree files, and does not make any sense if the primary search is
   done against the index, or the tree objects.  The "--cached" and
   "--untracked" options have been marked as mutually incompatible.
   (merge 0c5d83b248 mt/grep-cached-untracked later to maint).

 * Fix "git fsck --name-objects" which apparently has not been used by
   anybody who is motivated enough to report breakage.
   (merge e89f89361c js/fsck-name-objects-fix later to maint).

 * Avoid individual tests in t5411 from getting affected by each other
   by forcing them to use separate output files during the test.
   (merge 822ee894f6 jx/t5411-unique-filenames later to maint).

 * Test to make sure "git rev-parse one-thing one-thing" gives
   the same thing twice (when one-thing is --since=X).
   (merge a5cdca4520 ew/rev-parse-since-test later to maint).

 * When certain features (e.g. grafts) used in the repository are
   incompatible with the use of the commit-graph, we used to silently
   turned commit-graph off; we now tell the user what we are doing.
   (merge c85eec7fc3 js/commit-graph-warning later to maint).

 * Objects that lost references can be pruned away, even when they
   have notes attached to it (and these notes will become dangling,
   which in turn can be pruned with "git notes prune").  This has been
   clarified in the documentation.
   (merge fa9ab027ba mz/doc-notes-are-not-anchors later to maint).

 * The error codepath around the "--temp/--prefix" feature of "git
   checkout-index" has been improved.
   (merge 3f7ba60350 mt/checkout-index-corner-cases later to maint).

 * The "git maintenance register" command had trouble registering bare
   repositories, which had been corrected.

 * A handful of multi-word configuration variable names in
   documentation that are spelled in all lowercase have been corrected
   to use the more canonical camelCase.
   (merge 7dd0eaa39c dl/doc-config-camelcase later to maint).

 * "git push $there --delete ''" should have been diagnosed as an
   error, but instead turned into a matching push, which has been
   corrected.
   (merge 20e416409f jc/push-delete-nothing later to maint).

 * Test script modernization.
   (merge 488acf15df sv/t7001-modernize later to maint).

 * An under-allocation for the untracked cache data has been corrected.
   (merge 6347d649bc jh/untracked-cache-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge e3f5da7e60 sg/t7800-difftool-robustify later to maint).
   (merge 9d336655ba js/doc-proto-v2-response-end later to maint).
   (merge 1b5b8cf072 jc/maint-column-doc-typofix later to maint).
   (merge 3a837b58e3 cw/pack-config-doc later to maint).
   (merge 01168a9d89 ug/doc-commit-approxidate later to maint).
   (merge b865734760 js/params-vs-args later to maint).

----------------------------------------------------------------

Changes since v2.30.0 are as follows:

Abhishek Kumar (11):
      commit-graph: fix regression when computing Bloom filters
      revision: parse parent in indegree_walk_step()
      commit-graph: consolidate fill_commit_graph_info
      t6600-test-reach: generalize *_three_modes
      commit-graph: add a slab to store topological levels
      commit-graph: return 64-bit generation number
      commit-graph: implement corrected commit date
      commit-graph: implement generation data chunk
      commit-graph: use generation v2 only if entire chain does
      commit-reach: use corrected commit dates in paint_down_to_common()
      doc: add corrected commit date info

Adam Dinwoodie (1):
      t4129: fix setfacl-related permissions failure

Alex Henrie (1):
      rebase: add a config option for --no-fork-point

Alexander Shopov (1):
      l10n: bg.po: Updated Bulgarian translation (5104t)

Andrew Klotz (1):
      config: improve error message for boolean config

Andrzej Hunt (1):
      commit-graph: avoid leaking topo_levels slab in write_commit_graph()

Antonio Russo (1):
      t6016: move to lib-log-graph.sh framework

Arusekk (1):
      l10n: pl.po: Update translation

Bagas Sanjaya (2):
      l10n: start Indonesian translation
      l10n: Add translation team info

Christian Couder (3):
      fetch-pack: rename helper to create_promisor_file()
      fetch-pack: refactor writing promisor file
      pack-write: die on error in write_promisor_file()

Christian Walther (1):
      doc: mention bigFileThreshold for packing

Christopher Diaz Riveros (1):
      l10n: es: 2.31.0 round 2

Daniel Levin (1):
      git-p4: fix syncing file types with pattern

Daniel Santos (1):
      l10n: pt_PT: add Portuguese translations part 1

Denton Liu (12):
      refs: factor out set_read_ref_cutoffs()
      refs: allow @{n} to work with n-sized reflog
      test-lib-functions.sh: fix usage for test_commit()
      t4203: stop losing return codes of git commands
      git-stash.txt: be explicit about subcommand options
      t3905: remove spaces after redirect operators
      t3905: move all commands into test cases
      t3905: remove nested git in command substitution
      t3905: replace test -s with test_file_not_empty
      t3905: use test_cmp() to check file contents
      stash: declare ref_stash as an array
      i18n.txt: camel case and monospace "i18n.commitEncoding"

Derrick Stolee (65):
      maintenance: extract platform-specific scheduling
      maintenance: include 'cron' details in docs
      pack-bitmap-write: fill bitmap with commit history
      bitmap: implement bitmap_is_subset()
      commit: implement commit_list_contains()
      t5310: add branch-based checks
      pack-bitmap-write: rename children to reverse_edges
      pack-bitmap-write: build fewer intermediate bitmaps
      pack-bitmap-write: use existing bitmaps
      pack-bitmap-write: relax unique revwalk condition
      pack-bitmap-write: better reuse bitmaps
      revision: trace topo-walk statistics
      tree-walk: report recursion counts
      unpack-trees: add trace2 regions
      cache-tree: use trace2 in cache_tree_update()
      maintenance: use launchctl on macOS
      maintenance: use Windows scheduled tasks
      for-each-repo: do nothing on empty config
      cache-tree: trace regions for I/O
      cache-tree: trace regions for prime_cache_tree
      index-format: use 'cache tree' over 'cached tree'
      index-format: update preamble to cache tree extension
      index-format: discuss recursion of cache-tree better
      cache-tree: speed up consecutive path comparisons
      maintenance: set log.excludeDecoration durin prefetch
      t7900: clean up some broken refs
      cache-tree: clean up cache_tree_update()
      cache-tree: simplify verify_cache() prototype
      cache-tree: extract subtree_pos()
      fsmonitor: de-duplicate BUG()s around dirty bits
      repository: add repo reference to index_state
      name-hash: use trace2 regions for init
      sparse-checkout: load sparse-checkout patterns
      test-lib: test_region looks for trace2 regions
      t1092: test interesting sparse-checkout scenarios
      commit-reach: reduce requirements for remove_redundant()
      commit-graph: use repo_parse_commit
      commit-graph: always parse before commit_graph_data_at()
      commit-graph: validate layers for generation data
      commit-graph: compute generations separately
      commit-graph: be extra careful about mixed generations
      commit-graph: prepare commit graph
      commit-graph: anonymize data in chunk_write_fn
      maintenance: add pack-refs task
      maintenance: incremental strategy runs pack-refs weekly
      chunk-format: create chunk format write API
      commit-graph: use chunk-format write API
      midx: rename pack_info to write_midx_context
      midx: use context in write_midx_pack_names()
      midx: add entries to write_midx_context
      midx: add pack_perm to write_midx_context
      midx: add num_large_offsets to write_midx_context
      midx: return success/failure in chunk write methods
      midx: drop chunk progress during write
      midx: use chunk-format API in write_midx_internal()
      chunk-format: create read chunk API
      commit-graph: use chunk-format read API
      midx: use chunk-format read API
      midx: use 64-bit multiplication for chunk sizes
      chunk-format: restore duplicate chunk checks
      chunk-format: add technical docs
      commit-reach: use one walk in remove_redundant()
      commit-reach: move compare_commits_by_gen
      commit-reach: use heuristic in remove_redundant()
      commit-reach: stale commits may prune generation further

Dimitriy Ryazantcev (1):
      l10n: ru.po: update Russian translation

Elijah Newren (93):
      t7012: add a testcase demonstrating stash apply bugs in sparse checkouts
      stash: remove unnecessary process forking
      stash: fix stash application in sparse-checkouts
      merge-ort: setup basic internal data structures
      merge-ort: add some high-level algorithm structure
      merge-ort: port merge_start() from merge-recursive
      merge-ort: use histogram diff
      merge-ort: add an err() function similar to one from merge-recursive
      merge-ort: implement a very basic collect_merge_info()
      merge-ort: avoid repeating fill_tree_descriptor() on the same tree
      merge-ort: compute a few more useful fields for collect_merge_info
      merge-ort: record stage and auxiliary info for every path
      merge-ort: avoid recursing into identical trees
      merge-ort: add a preliminary simple process_entries() implementation
      merge-ort: have process_entries operate in a defined order
      merge-ort: step 1 of tree writing -- record basenames, modes, and oids
      merge-ort: step 2 of tree writing -- function to create tree object
      merge-ort: step 3 of tree writing -- handling subdirectories as we go
      merge-ort: basic outline for merge_switch_to_result()
      merge-ort: add implementation of checkout()
      tree: enable cmp_cache_name_compare() to be used elsewhere
      merge-ort: add implementation of record_conflicted_index_entries()
      merge-ort: free data structures in merge_finalize()
      merge-ort: add a few includes
      merge-ort: add a clear_internal_opts helper
      merge-ort: add a path_conflict field to merge_options_internal
      merge-ort: add a paths_to_free field to merge_options_internal
      merge-ort: add function grouping comments
      merge-ort: add die-not-implemented stub handle_content_merge() function
      merge-ort: add modify/delete handling and delayed output processing
      merge-ort: add basic data structures for handling renames
      merge-ort: add initial outline for basic rename detection
      merge-ort: implement detect_regular_renames()
      merge-ort: implement compare_pairs() and collect_renames()
      merge-ort: add basic outline for process_renames()
      diffcore-rename: rename num_create to num_destinations
      diffcore-rename: avoid usage of global in too_many_rename_candidates()
      diffcore-rename: simplify limit check
      diffcore-rename: reduce jumpiness in progress counters
      t4058: add more tests and documentation for duplicate tree entry handling
      t4058: explore duplicate tree entry handling in a bit more detail
      diffcore-rename: simplify and accelerate register_rename_src()
      diffcore-rename: accelerate rename_dst setup
      merge-ort: add implementation of both sides renaming identically
      merge-ort: add implementation of both sides renaming differently
      merge-ort: add implementation of rename/delete conflicts
      merge-ort: add implementation of rename collisions
      merge-ort: add implementation of normal rename handling
      merge-ort: add implementation of type-changed rename handling
      commit: move reverse_commit_list() from merge-recursive
      merge-ort: copy a few small helper functions from merge-recursive.c
      merge-ort: make clear_internal_opts() aware of partial clearing
      merge-ort: implement merge_incore_recursive()
      merge-ort: handle D/F conflict where directory disappears due to merge
      merge-ort: handle directory/file conflicts that remain
      merge-ort: implement unique_path() helper
      merge-ort: handle book-keeping around two- and three-way content merge
      merge-ort: flesh out implementation of handle_content_merge()
      merge-ort: copy and adapt merge_3way() from merge-recursive.c
      merge-ort: copy and adapt merge_submodule() from merge-recursive.c
      merge-ort: implement format_commit()
      merge-ort: copy find_first_merges() implementation from merge-recursive.c
      merge-ort: add handling for different types of files at same path
      diffcore-rename: remove unnecessary duplicate entry checks
      merge-ort: add new data structures for directory rename detection
      merge-ort: initialize and free new directory rename data structures
      merge-ort: collect which directories are removed in dirs_removed
      merge-ort: add outline for computing directory renames
      merge-ort: add outline of get_provisional_directory_renames()
      merge-ort: copy get_renamed_dir_portion() from merge-recursive.c
      merge-ort: implement compute_rename_counts()
      merge-ort: implement handle_directory_level_conflicts()
      merge-ort: modify collect_renames() for directory rename handling
      merge-ort: implement compute_collisions()
      merge-ort: implement apply_dir_rename() and check_dir_renamed()
      merge-ort: implement check_for_directory_rename()
      merge-ort: implement handle_path_level_conflicts()
      merge-ort: add a new toplevel_dir field
      merge-ort: implement apply_directory_rename_modifications()
      merge-ort: process_renames() now needs more defensiveness
      merge-ort: fix a directory rename detection bug
      merge-ort: fix massive leak
      merge-ort: ignore the directory rename split conflict for now
      merge-ort: begin performance work; instrument with trace2_region_* calls
      diffcore-rename: no point trying to find a match better than exact
      diffcore-rename: filter rename_src list when possible
      t4001: add a test comparing basename similarity and content similarity
      diffcore-rename: compute basenames of source and dest candidates
      diffcore-rename: complete find_basename_matches()
      diffcore-rename: guide inexact rename detection based on basenames
      gitdiffcore doc: mention new preliminary step for rename detection
      merge-ort: call diffcore_rename() directly
      Documentation/RelNotes: improve release note for rename detection work

Emir Sarı (2):
      l10n: tr: v2.31.0-rc0
      l10n: tr: v2.31.0-rc1

Eric Sunshine (3):
      worktree: teach `repair` to fix multi-directional breakage
      t/perf: avoid unnecessary test_export() recursion
      maintenance: fix incorrect `maintenance.repo` path with bare repository

Eric Wong (2):
      core.abbrev=no disables abbreviations
      t1500: ensure current --since= behavior remains

Felipe Contreras (8):
      pull: refactor fast-forward check
      pull: give the advice for choosing rebase/merge much later
      pull: display default warning only when non-ff
      test: bisect-porcelain: fix location of files
      completion: bash: add __git_have_func helper
      completion: bash: improve function detection
      test: completion: add tests for __git_complete
      completion: add proper public __git_complete

Han-Wen Nienhuys (1):
      doc/reftable: document how to handle windows

Hariom Verma (4):
      t6300: use function to test trailer options
      pretty.c: refactor trailer logic to `format_set_trailers_options()`
      pretty.c: capture invalid trailer argument
      ref-filter: use pretty.c logic for trailers

Jacob Vosmaer (4):
      builtin/pack-objects.c: avoid iterating all refs
      ls-refs.c: initialize 'prefixes' before using it
      upload-pack.c: fix filter spec quoting bug
      t5544: clarify 'hook works with partial clone' test

Jean-Noël Avila (2):
      l10n: fr: v2.31.0 rnd 1
      l10n: fr: v2.31 rnd 2

Jeff Hostetler (11):
      p7519: do not rely on "xargs -d" in test
      p7519: fix watchman watch-list test on Windows
      p7519: move watchman cleanup earlier in the test
      p7519: add trace logging during perf test
      preload-index: log the number of lstat calls to trace2
      read-cache: log the number of lstat calls to trace2
      read-cache: log the number of scanned files to trace2
      fsmonitor: log invocation of FSMonitor hook to trace2
      fsmonitor: log FSMN token when reading and writing the index
      fsmonitor: refactor initialization of fsmonitor_last_update token
      dir: fix malloc of root untracked_cache_dir

Jeff King (45):
      pack-bitmap: fix header size check
      pack-bitmap: bounds-check size of cache extension
      t5310: drop size of truncated ewah bitmap
      rev-list: die when --test-bitmap detects a mismatch
      ewah: factor out bitmap growth
      ewah: make bitmap growth less aggressive
      ewah: implement bitmap_or()
      ewah: add bitmap_dup() function
      pack-bitmap-write: reimplement bitmap writing
      pack-bitmap-write: pass ownership of intermediate bitmaps
      pack-bitmap-write: ignore BITMAP_FLAG_REUSE
      git_connect_git(): forbid newlines in host and path
      fsck: reject .gitmodules git:// urls with newlines
      t5516: loosen "not our ref" error check
      patch-ids: handle duplicate hashmap entries
      quote: make sq_dequote_step() a public function
      for_each_object_in_pack(): clarify pack vs index ordering
      config: parse more robust format in GIT_CONFIG_PARAMETERS
      refs: switch peel_ref() to peel_iterated_oid()
      run-command: document use_shell option
      git-svn tests: rewrite brittle tests to use "--[no-]merges".
      git-compat-util: always enable variadic macros
      commit_graft_pos(): take an oid instead of a bare hash
      rerere: check dirname format while iterating rr_cache directory
      rerere: tighten rr-cache dirname check
      rerere: use strmap to store rerere directories
      hash_pos(): convert to oid_pos()
      oid_pos(): access table through const pointers
      t0000: keep clean-up tests together
      t0000: run prereq tests inside sub-test
      t0000: run cleaning test inside sub-test
      t0000: consistently use single quotes for outer tests
      pretty: lazy-load commit data when expanding user-format
      p5303: avoid sed GNU-ism
      completion: treat "branch -D" the same way as "branch -d"
      completion: handle other variants of "branch -m"
      doc/git-branch: fix awkward wording for "-c"
      t: add --no-tag option to test_commit
      mailmap: only look for .mailmap in work tree
      rev-list: add --disk-usage option for calculating disk usage
      docs/rev-list: add an examples section
      docs/rev-list: add some examples of --disk-usage
      doc: mention approxidates for git-commit --date
      Makefile: add OPEN_RETURNS_EINTR knob
      config.mak.uname: enable OPEN_RETURNS_EINTR for macOS Big Sur

Jiang Xin (8):
      test: add helper functions for git-bundle
      bundle: lost objects when removing duplicate pendings
      bundle: arguments can be read from stdin
      t5411: use different out file to prevent overwriting
      t5411: refactor check of refs using test_cmp_refs
      l10n: git.pot: v2.31.0 round 1 (155 new, 89 removed)
      l10n: git.pot: v2.31.0 round 2 (9 new, 8 removed)
      l10n: zh_CN: for git v2.31.0 l10n round 1 and 2

Joey Salazar (1):
      doc: fix naming of response-end-pkt

Johannes Schindelin (58):
      tests: mark tests relying on the current default for `init.defaultBranch`
      t0060: preemptively adjust alignment
      t[01]*: adjust the references to the default branch name "main"
      t2*: adjust the references to the default branch name "main"
      t3[0-3]*: adjust the references to the default branch name "main"
      t3416: preemptively adjust alignment in a comment
      t34*: adjust the references to the default branch name "main"
      t3[5-9]*: adjust the references to the default branch name "main"
      t4*: adjust the references to the default branch name "main"
      t5323: prepare centered comment for `master` -> `main`
      t5[0-4]*: adjust the references to the default branch name "main"
      t5503: prepare aligned comment for replacing `master` with `main`
      t550*: adjust the references to the default branch name "main"
      t551*: adjust the references to the default branch name "main"
      t55[23]*: adjust the references to the default branch name "main"
      t55[4-9]*: adjust the references to the default branch name "main"
      t5[6-9]*: adjust the references to the default branch name "main"
      t6[0-3]*: adjust the references to the default branch name "main"
      t64*: preemptively adjust alignment to prepare for `master` -> `main`
      t6[4-9]*: adjust the references to the default branch name "main"
      t7[0-4]*: adjust the references to the default branch name "main"
      t7[5-9]*: adjust the references to the default branch name "main"
      t8*: adjust the references to the default branch name "main"
      t9[0-4]*: adjust the references to the default branch name "main"
      t9[5-7]*: adjust the references to the default branch name "main"
      tests(git-p4): transition to the default branch name `main`
      t99*: adjust the references to the default branch name "main"
      tests: drop prereq `PREPARE_FOR_MAIN_BRANCH` where no longer needed
      SKIP_DASHED_BUILT_INS: respect `config.mak`
      range-diff/format-patch: refactor check for commit range
      rebase -i: do leave commit message intact in fixup! chains
      range-diff: avoid leaking memory in two error code paths
      range-diff: libify the read_patches() function again
      range-diff: simplify code spawning `git log`
      range-diff: combine all options in a single data structure
      range-diff: move the diffopt initialization down one layer
      range-diff: offer --left-only/--right-only options
      range-diff/format-patch: handle commit ranges other than A..B
      range-diff(docs): explain how to specify commit ranges
      t1450: robustify `remove_object()`
      fsck --name-objects: be more careful parsing generation numbers
      reflog expire --stale-fix: be generous about missing objects
      commit-graph: when incompatible with graphs, indicate why
      run-command: invalidate lstat cache after a command finished
      Git 2.17.6
      Git 2.18.5
      Git 2.19.6
      Git 2.20.5
      Git 2.21.4
      Git 2.22.5
      Git 2.23.4
      Git 2.24.4
      Git 2.25.5
      Git 2.26.3
      Git 2.27.1
      Git 2.28.1
      Git 2.29.3
      Git 2.30.2

Johannes Sixt (2):
      annotate-tests: quote variable expansions containing path names
      replace "parameters" by "arguments" in error messages

Jonathan Nieder (2):
      mergetool: do not enable hideResolved by default
      doc: describe mergetool configuration in git-mergetool(1)

Jonathan Tan (10):
      Doc: clarify contents of packfile sent as URI
      ls-refs: report unborn targets of symrefs
      connect, transport: encapsulate arg in struct
      clone: respect remote unborn HEAD
      usage: trace2 BUG() invocations
      http: allow custom index-pack args
      http-fetch: allow custom index-pack args
      fetch-pack: with packfile URIs, use index-pack arg
      fetch-pack: print and use dangling .gitmodules
      fetch-pack: do not mix --pack_header and packfile uri

Jordi Mas (1):
      l10n: Update Catalan translation

Junio C Hamano (32):
      pack-redundant: gauge the usage before proposing its removal
      pull: get rid of unnecessary global variable
      pull: correct condition to trigger non-ff advice
      CoC: explicitly take any whitespace breakage
      parse-options: format argh like error messages
      The first batch in 2.31 cycle
      SubmittingPatches: tighten wording on "sign-off" procedure
      ci/install-depends: attempt to fix "brew cask" stuff
      t4203: make blame output massaging more robust
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      Prepare for 2.30.1
      The sixth batch
      Git 2.30.1
      The seventh batch
      The eighth batch
      diff: --{rotate,skip}-to=<path>
      The ninth batch
      Documentation: typofix --column description
      The tenth batch
      push: do not turn --delete '' into a matching push
      blame-options.txt: camelcase blame.blankBoundary
      index-format doc: camelCase core.excludesFile
      Git 2.31-rc0
      Revert "commit-graph: when incompatible with graphs, indicate why"
      Hopefully the last batch before -rc1
      Git 2.31-rc1
      Merged the open-eintr workaround for macOS
      Git 2.31-rc2
      Git 2.31

Kevin Willford (1):
      fsmonitor: allow all entries for a folder to be invalidated

Martin von Zweigbergk (1):
      docs: clarify that refs/notes/ do not keep the attached objects alive

Martin Ågren (16):
      t1300: remove duplicate test for `--file ../foo`
      t1300: remove duplicate test for `--file no-such-file`
      t1300: don't needlessly work with `core.foo` configs
      pack-format.txt: document sizes at start of delta data
      object-name.c: rename from sha1-name.c
      object-file.c: rename from sha1-file.c
      sha1-lookup: rename `sha1_pos()` as `hash_pos()`
      hash-lookup: rename from sha1-lookup
      builtin/gc: don't peek into `struct lock_file`
      commit-graph: don't peek into `struct lock_file`
      midx: don't peek into `struct lock_file`
      refs/files-backend: don't peek into `struct lock_file`
      read-cache: try not to peek into `struct {lock_,temp}file`
      rev-list-options.txt: fix rendering of bonus paragraph
      git.txt: fix monospace rendering
      gitmailmap.txt: fix rendering of e-mail addresses

Matheus Tavares (10):
      t4129: don't fail if setgid is set in the test directory
      grep: error out if --untracked is used with --cached
      grep: honor sparse-checkout on working tree searches
      checkout: fix bug that makes checkout follow symlinks in leading path
      unpack_trees(): start with a fresh lstat cache
      write_entry(): fix misuses of `path` in error messages
      checkout-index: omit entries with no tempname from --temp output
      add --chmod: don't update index when --dry-run is used
      add: mark --chmod error string for translation
      add: propagate --chmod errors to exit status

Matthias Rüster (1):
      l10n: de.po: Update German translation for Git v2.31.0

Mikhail Klyushin (1):
      git-gui: fix typo in russian locale

Neeraj Singh (1):
      read-cache: make the index write buffer size 128K

Patrick Steinhardt (11):
      git: add `--super-prefix` to usage string
      config: add new way to pass config via `--config-env`
      config: extract function to parse config pairs
      fetch: extract writing to FETCH_HEAD
      fetch: use strbuf to format FETCH_HEAD updates
      fetch: refactor `s_update_ref` to use common exit path
      fetch: allow passing a transaction to `s_update_ref()`
      fetch: implement support for atomic reference updates
      config: store "git -c" variables using more robust format
      environment: make `getenv_safe()` a public function
      config: allow specifying config entries via envvar pairs

Peter Kaestle (1):
      submodules: fix of regression on fetching of non-init subsub-repo

Peter Krefting (2):
      l10n: sv.po: Update Swedish translation (5103t0f0u)
      l10n: sv.po: Update Swedish translation (5104t0f0u)

Phil Hord (1):
      use delete_refs when deleting tags or branches

Philippe Blain (4):
      gitmodules.txt: fix 'GIT_WORK_TREE' variable name
      mergetool--lib: fix '--tool-help' to correctly show available tools
      mailmap doc: use correct environment variable 'GIT_WORK_TREE'
      ci: do not cancel all jobs of a matrix if one fails

Pranit Bauva (7):
      bisect--helper: reimplement `bisect_log` shell function in C
      bisect--helper: reimplement `bisect_replay` shell function in C
      bisect--helper: retire `--bisect-write` subcommand
      bisect--helper: use `res` instead of return in BISECT_RESET case option
      bisect--helper: retire `--bisect-auto-next` subcommand
      bisect--helper: reimplement `bisect_skip` shell function in C
      bisect--helper: retire `--check-and-set-terms` subcommand

Pratyush Yadav (2):
      git-gui: remove lines starting with the comment character
      Revert "git-gui: remove lines starting with the comment character"

Rafael Silva (8):
      worktree: libify should_prune_worktree()
      worktree: teach worktree to lazy-load "prunable" reason
      worktree: teach worktree_lock_reason() to gently handle main worktree
      t2402: ensure locked worktree is properly cleaned up
      worktree: teach `list --porcelain` to annotate locked worktree
      worktree: teach `list` to annotate prunable worktree
      worktree: teach `list` verbose mode
      blame: remove unnecessary use of get_commit_info()

René Scharfe (2):
      rebase: verify commit parameter
      cache-tree: use ce_namelen() instead of strlen()

SZEDER Gábor (2):
      t7800-difftool: don't accidentally match tmp dirs
      test-lib: prevent '--stress-jobs=X' from being ignored

Sangeeta Jain (1):
      diff: do not show submodule with untracked files as "-dirty"

Sergey Organov (32):
      revision: factor out parsing of diff-merge related options
      revision: factor out setup of diff-merge related settings
      revision: factor out initialization of diff-merge related settings
      revision: provide implementation for diff merges tweaks
      revision: move diff merges functions to its own diff-merges.c
      diff-merges: rename all functions to have common prefix
      diff-merges: move checks for first_parent_only out of the module
      diff-merges: rename diff_merges_default_to_enable() to match semantics
      diff-merges: re-arrange functions to match the order they are called in
      diff-merges: new function diff_merges_suppress()
      diff-merges: new function diff_merges_set_dense_combined_if_unset()
      diff-merges: introduce revs->first_parent_merges flag
      diff-merges: handle imply -p on -c/--cc logic for log.c
      diff-merges: revise revs->diff flag handling
      t4013: support test_expect_failure through ':failure' magic
      t4013: add tests for -m failing to override -c/--cc
      diff-merges: fix -m to properly override -c/--cc
      diff-merges: split 'ignore_merges' field
      diff-merges: group diff-merge flags next to each other inside 'rev_info'
      diff-merges: get rid of now empty diff_merges_init_revs()
      diff-merges: refactor opt settings into separate functions
      diff-merges: make -m/-c/--cc explicitly mutually exclusive
      diff-merges: implement new values for --diff-merges
      diff-merges: do not imply -p for new options
      diff-merges: let new options enable diff without -p
      diff-merges: add old mnemonic counterparts to --diff-merges
      diff-merges: add '--diff-merges=1' as synonym for 'first-parent'
      doc/git-log: describe new --diff-merges options
      doc/diff-generate-patch: mention new --diff-merges option
      doc/rev-list-options: document --first-parent changes merges format
      doc/git-show: include --diff-merges description
      t4013: add tests for --diff-merges=first-parent

Seth House (4):
      mergetool: add hideResolved configuration
      mergetool: break setup_tool out into separate initialization function
      mergetool: add per-tool support and overrides for the hideResolved flag
      mergetools/vimdiff: add vimdiff1 merge tool variant

Shubham Verma (10):
      t7001: modernize test formatting
      t7001: indent with TABs instead of spaces
      t7001: remove unnecessary blank lines
      t7001: modernize subshell formatting
      t7001: remove whitespace after redirect operators
      t7001: avoid using `cd` outside of subshells
      t7001: use '>' rather than 'touch'
      t7001: put each command on a separate line
      t7001: use here-docs instead of echo
      t7001: use `test` rather than `[`

Taylor Blau (41):
      ewah/ewah_bitmap.c: avoid open-coding ALLOC_GROW()
      pack-bitmap.c: check reads more aggressively when loading
      pack-bitmap: factor out 'bitmap_for_commit()'
      pack-bitmap: factor out 'add_commit_to_bitmap()'
      p7519: allow running without watchman prereq
      Documentation/git-clone.txt: document race with --local
      pack-revindex: introduce a new API
      write_reuse_object(): convert to new revindex API
      write_reused_pack_one(): convert to new revindex API
      write_reused_pack_verbatim(): convert to new revindex API
      check_object(): convert to new revindex API
      bitmap_position_packfile(): convert to new revindex API
      show_objects_for_type(): convert to new revindex API
      get_size_by_pos(): convert to new revindex API
      try_partial_reuse(): convert to new revindex API
      rebuild_existing_bitmaps(): convert to new revindex API
      get_delta_base_oid(): convert to new revindex API
      retry_bad_packed_offset(): convert to new revindex API
      packed_object_info(): convert to new revindex API
      unpack_entry(): convert to new revindex API
      for_each_object_in_pack(): convert to new revindex API
      builtin/gc.c: guess the size of the revindex
      pack-revindex: remove unused 'find_pack_revindex()'
      pack-revindex: remove unused 'find_revindex_position()'
      pack-revindex: hide the definition of 'revindex_entry'
      pack-revindex.c: avoid direct revindex access in 'offset_to_pack_pos()'
      refs: expose 'for_each_fullref_in_prefixes'
      ls-refs.c: traverse prefixes of disjoint "ref-prefix" sets
      packfile: prepare for the existence of '*.rev' files
      pack-write.c: prepare to write 'pack-*.rev' files
      builtin/index-pack.c: allow stripping arbitrary extensions
      builtin/index-pack.c: write reverse indexes
      builtin/pack-objects.c: respect 'pack.writeReverseIndex'
      Documentation/config/pack.txt: advertise 'pack.writeReverseIndex'
      t: prepare for GIT_TEST_WRITE_REV_INDEX
      t: support GIT_TEST_WRITE_REV_INDEX
      pack-revindex: ensure that on-disk reverse indexes are given precedence
      t5325: check both on-disk and in-memory reverse index
      .github/workflows/main.yml: run static-analysis on bionic
      commit-graph.c: display correct number of chunks when writing
      pack-revindex.c: don't close unopened file descriptors

Thomas Ackermann (7):
      doc: fix some typos
      doc hash-function-transition: fix asciidoc output
      doc hash-function-transition: use SHA-1 and SHA-256 consistently
      doc hash-function-transition: use upper case consistently
      doc hash-function-transition: fix incomplete sentence
      doc hash-function-transition: move rationale upwards
      doc: use https links

Torsten Bögershausen (1):
      MacOS: precompose_argv_prefix()

Trần Ngọc Quân (1):
      l10n: vi.po(5104t): for git v2.31.0 l10n round 2

Utku Gultopu (1):
      doc: remove "directory cache" from man pages

Vasyl Vavrychuk (1):
      git-send-email.txt: mention less secure app access with Gmail

Yi-Jyun Pan (1):
      l10n: zh_TW.po: v2.31.0 round 2 (15 untranslated)

ZheNing Hu (5):
      builtin/*: update usage format
      ls_files.c: bugfix for --deleted and --modified
      ls_files.c: consolidate two for loops into one
      ls-files.c: add --deduplicate option
      difftool.c: learn a new way start at specified file

brian m. carlson (9):
      abspath: add a function to resolve paths with missing components
      rev-parse: add option for absolute or relative path formatting
      docs: rephrase and clarify the git status --short format
      ref-filter: switch some uses of unsigned long to size_t
      commit: ignore additional signatures when parsing signed commits
      gpg-interface: improve interface for parsing tags
      commit: allow parsing arbitrary buffers with headers
      ref-filter: hoist signature parsing
      gpg-interface: remove other signature headers before verifying

Ævar Arnfjörð Bjarmason (100):
      pretty format %(trailers) test: split a long line
      pretty format %(trailers) doc: avoid repetition
      pretty-format %(trailers): fix broken standalone "valueonly"
      pretty format %(trailers): add a "keyonly"
      pretty format %(trailers): add a "key_value_separator"
      mktag doc: say <hash> not <sha1>
      mktag doc: grammar fix, when exists -> when it exists
      CoC: Update word-wrapping to match upstream
      mktag doc: update to explain why to use this
      mktag tests: don't needlessly use a subshell
      mktag tests: use "test_commit" helper
      mktag tests: remove needless SHA-1 hardcoding
      mktag tests: don't redirect stderr to a file needlessly
      mktag tests: don't create "mytag" twice
      mktag tests: run "fsck" after creating "mytag"
      mktag tests: stress test whitespace handling
      mktag tests: test "hash-object" compatibility
      mktag tests: improve verify_object() test coverage
      mktag tests: test verify_object() with replaced objects
      mktag: use default strbuf_read() hint
      mktag: remove redundant braces in one-line body "if"
      mktag: use puts(str) instead of printf("%s\n", str)
      mktag: use fsck instead of custom verify_tag()
      fsck: make fsck_config() re-usable
      mktag: allow turning off fsck.extraHeaderEntry
      mktag: allow omitting the header/body \n separator
      mktag: convert to parse-options
      mktag: mark strings for translation
      mktag: add a --[no-]strict option
      branch: change "--local" to "--list" in comment
      branch tests: add to --sort tests
      ref-filter: add braces to if/else if/else chain
      ref-filter: move "cmp_fn" assignment into "else if" arm
      ref-filter: move ref_sorting flags to a bitfield
      branch: sort detached HEAD based on a flag
      branch: show "HEAD detached" first under reverse sort
      Makefile: remove a warning about old GETTEXT_POISON flag
      gettext.c: remove/reword a mostly-useless comment
      mailmap doc: create a new "gitmailmap(5)" man page
      mailmap doc: quote config variables `like.this`
      check-mailmap doc: note config options
      mailmap doc: start by mentioning the comment syntax
      mailmap tests: use our preferred whitespace syntax
      mailmap tests: modernize syntax & test idioms
      mailmap tests: improve --stdin tests
      mailmap tests: remove redundant entry in test
      mailmap tests: add a test for "not a blob" error
      mailmap tests: get rid of overly complex blame fuzzing
      mailmap: test for silent exiting on missing file/blob
      test-lib functions: expand "test_commit" comment template
      test-lib functions: document arguments to test_commit
      test-lib functions: add --author support to test_commit
      test-lib functions: add an --append option to test_commit
      tests: refactor a few tests to use "test_commit --append"
      mailmap doc + tests: add better examples & test them
      mailmap tests: add a test for comment syntax
      mailmap tests: add tests for whitespace syntax
      mailmap tests: add tests for empty "<>" syntax
      mailmap doc + tests: document and test for case-insensitivity
      shortlog: remove unused(?) "repo-abbrev" feature
      CoC: update to version 2.0 + local changes
      fsck doc: remove ancient out-of-date diagnostics
      ci: remove GETTEXT_POISON jobs
      tests: remove support for GIT_TEST_GETTEXT_POISON
      tests: remove uses of GIT_TEST_GETTEXT_POISON=false
      cache-tree tests: refactor for modern test style
      cache-tree tests: remove unused $2 parameter
      cache-tree tests: use a sub-shell with less indirection
      cache-tree tests: explicitly test HEAD and index differences
      git svn mergeinfo tests: modernize redirection & quoting style
      git svn mergeinfo tests: refactor "test -z" to use test_must_be_empty
      upload-pack tests: avoid a non-zero "grep" exit status
      archive tests: use a cheaper "zipinfo -h" invocation to get header
      rm tests: actually test for SIGPIPE in SIGPIPE test
      config.mak.uname: remove redundant NO_LIBPCRE1_JIT flag
      Remove support for v1 of the PCRE library
      grep/pcre2 tests: don't rely on invalid UTF-8 data test
      grep/pcre2: better support invalid UTF-8 haystacks
      grep/log: remove hidden --debug and --grep-debug options
      pager: refactor wait_for_pager() function
      pager: test for exit code with and without SIGPIPE
      run-command: add braces for "if" block in wait_or_whine()
      pager: properly log pager exit code when signalled
      test-lib: remove check_var_migration
      test lib: change "error" to "BUG" as appropriate
      test-lib-functions: move test_set_index_version() to its user
      test-lib-functions: remove generate_zero_bytes() wrapper
      test libs: rename bundle helper to "lib-bundle.sh"
      test libs: rename gitweb-lib.sh to lib-gitweb.sh
      test-lib-functions: move function to lib-bitmap.sh
      t/.gitattributes: sort lines
      tests: remove last uses of GIT_TEST_GETTEXT_POISON=false
      tests: remove most uses of C_LOCALE_OUTPUT
      tests: remove last uses of C_LOCALE_OUTPUT
      tests: remove most uses of test_i18ncmp
      diff: add an API for deferred freeing
      diff: plug memory leak from regcomp() on {log,diff} -I
      test libs: rename "diff-lib" to "lib-diff"
      test-lib-functions: remove bug-inducing "diagnostics" helper param
      test-lib-functions: assert correct parameter count


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.31.0-rc2
@ 2021-03-09 18:05  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-03-09 18:05 UTC (permalink / raw)
  To: git

A release candidate Git v2.31.0-rc2 is now available for testing at
the usual places.  It is comprised of 655 non-merge commits since
v2.30.0, contributed by 68 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.31.0-rc2' 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.30.0 are as follows.
Welcome to the Git development community!

  Aleksey Kliger, Andreas Bühmann, Andrew Klotz, Andrzej
  Hunt, Antonio Russo, Arnaud Morin, Christian Walther, Clement
  Moyroud, Daniel Levin, Daniel Troger, Harold Kim, Jacob Vosmaer,
  LeSeulArtichaut, Mikhail Klyushin, Neeraj Singh, Sangeeta Jain,
  Seth House, Shubham Verma, Utku Gultopu, Vasyl Vavrychuk,
  Vojtěch Knyttl, and ZheNing Hu.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Abhishek Kumar, Adam Dinwoodie, Ævar Arnfjörð Bjarmason,
  Alex Henrie, brian m. carlson, Christian Couder, Denton Liu,
  Derrick Stolee, Elijah Newren, Eric Sunshine, Eric Wong,
  Felipe Contreras, Han-Wen Nienhuys, Hariom Verma, Heba Waly,
  Jeff Hostetler, Jeff King, Jiang Xin, Joey Salazar, Johannes
  Schindelin, Johannes Sixt, Jonathan Tan, Junio C Hamano,
  Kevin Daudt, Kevin Willford, Lars Schneider, Martin Ågren,
  Martin von Zweigbergk, Matheus Tavares, Michael Haggerty,
  Patrick Steinhardt, Paul Jolly, Peter Kaestle, Phil Hord,
  Philippe Blain, Phillip Wood, Pranit Bauva, Pratyush Yadav,
  Rafael Silva, René Scharfe, Ross Light, Sergey Organov, SZEDER
  Gábor, Taylor Blau, Thomas Ackermann, and Torsten Bögershausen.

[*] We are counting not just the authorship contribution but
    issue reporting, testing and reviewing that are recorded
    in the commit trailers.

----------------------------------------------------------------

Git 2.31 Release Notes (draft)
==============================

Updates since v2.30
-------------------

Backward incompatible and other important changes

 * The "pack-redundant" command, which has been left stale with almost
   unusable performance issues, now warns loudly when it gets used, as
   we no longer want to recommend its use (instead just "repack -d"
   instead).

 * The development community has adopted Contributor Covenant v2.0 to
   update from v1.4 that we have been using.

 * The support for deprecated PCRE1 library has been dropped.

 * Fixes for CVE-2021-21300 in Git 2.30.2 (and earlier) is included.


UI, Workflows & Features

 * The "--format=%(trailers)" mechanism gets enhanced to make it
   easier to design output for machine consumption.

 * When a user does not tell "git pull" to use rebase or merge, the
   command gives a loud message telling a user to choose between
   rebase or merge but creates a merge anyway, forcing users who would
   want to rebase to redo the operation.  Fix an early part of this
   problem by tightening the condition to give the message---there is
   no reason to stop or force the user to choose between rebase or
   merge if the history fast-forwards.

 * The configuration variable 'core.abbrev' can be set to 'no' to
   force no abbreviation regardless of the hash algorithm.

 * "git rev-parse" can be explicitly told to give output as absolute
   or relative path with the `--path-format=(absolute|relative)` option.

 * Bash completion (in contrib/) update to make it easier for
   end-users to add completion for their custom "git" subcommands.

 * "git maintenance" learned to drive scheduled maintenance on
   platforms whose native scheduling methods are not 'cron'.

 * After expiring a reflog and making a single commit, the reflog for
   the branch would record a single entry that knows both @{0} and
   @{1}, but we failed to answer "what commit were we on?", i.e. @{1}

 * "git bundle" learns "--stdin" option to read its refs from the
   standard input.  Also, it now does not lose refs whey they point
   at the same object.

 * "git log" learned a new "--diff-merges=<how>" option.

 * "git ls-files" can and does show multiple entries when the index is
   unmerged, which is a source for confusion unless -s/-u option is in
   use.  A new option --deduplicate has been introduced.

 * `git worktree list` now annotates worktrees as prunable, shows
   locked and prunable attributes in --porcelain mode, and gained
   a --verbose option.

 * "git clone" tries to locally check out the branch pointed at by
   HEAD of the remote repository after it is done, but the protocol
   did not convey the information necessary to do so when copying an
   empty repository.  The protocol v2 learned how to do so.

 * There are other ways than ".." for a single token to denote a
   "commit range", namely "<rev>^!" and "<rev>^-<n>", but "git
   range-diff" did not understand them.

 * The "git range-diff" command learned "--(left|right)-only" option
   to show only one side of the compared range.

 * "git mergetool" feeds three versions (base, local and remote) of
   a conflicted path unmodified.  The command learned to optionally
   prepare these files with unconflicted parts already resolved.

 * The .mailmap is documented to be read only from the root level of a
   working tree, but a stray file in a bare repository also was read
   by accident, which has been corrected.

 * "git maintenance" tool learned a new "pack-refs" maintenance task.

 * The error message given when a configuration variable that is
   expected to have a boolean value has been improved.

 * Signed commits and tags now allow verification of objects, whose
   two object names (one in SHA-1, the other in SHA-256) are both
   signed.

 * "git rev-list" command learned "--disk-usage" option.

 * "git {diff,log} --{skip,rotate}-to=<path>" allows the user to
   discard diff output for early paths or move them to the end of the
   output.

 * "git difftool" learned "--skip-to=<path>" option to restart an
   interrupted session from an arbitrary path.

 * "git grep" has been tweaked to be limited to the sparse checkout
   paths.

 * "git rebase --[no-]fork-point" gained a configuration variable
   rebase.forkPoint so that users do not have to keep specifying a
   non-default setting.


Performance, Internal Implementation, Development Support etc.

 * A 3-year old test that was not testing anything useful has been
   corrected.

 * Retire more names with "sha1" in it.

 * The topological walk codepath is covered by new trace2 stats.

 * Update the Code-of-conduct to version 2.0 from the upstream (we've
   been using version 1.4).

 * "git mktag" validates its input using its own rules before writing
   a tag object---it has been updated to share the logic with "git
   fsck".

 * Two new ways to feed configuration variable-value pairs via
   environment variables have been introduced, and the way
   GIT_CONFIG_PARAMETERS encodes variable/value pairs has been tweaked
   to make it more robust.

 * Tests have been updated so that they do not to get affected by the
   name of the default branch "git init" creates.

 * "git fetch" learns to treat ref updates atomically in all-or-none
   fashion, just like "git push" does, with the new "--atomic" option.

 * The peel_ref() API has been replaced with peel_iterated_oid().

 * The .use_shell flag in struct child_process that is passed to
   run_command() API has been clarified with a bit more documentation.

 * Document, clean-up and optimize the code around the cache-tree
   extension in the index.

 * The ls-refs protocol operation has been optimized to narrow the
   sub-hierarchy of refs/ it walks to produce response.

 * When removing many branches and tags, the code used to do so one
   ref at a time.  There is another API it can use to delete multiple
   refs, and it makes quite a lot of performance difference when the
   refs are packed.

 * The "pack-objects" command needs to iterate over all the tags when
   automatic tag following is enabled, but it actually iterated over
   all refs and then discarded everything outside "refs/tags/"
   hierarchy, which was quite wasteful.

 * A perf script was made more portable.

 * Our setting of GitHub CI test jobs were a bit too eager to give up
   once there is even one failure found.  Tweak the knob to allow
   other jobs keep running even when we see a failure, so that we can
   find more failures in a single run.

 * We've carried compatibility codepaths for compilers without
   variadic macros for quite some time, but the world may be ready for
   them to be removed.  Force compilation failure on exotic platforms
   where variadic macros are not available to find out who screams in
   such a way that we can easily revert if it turns out that the world
   is not yet ready.

 * Code clean-up to ensure our use of hashtables using object names as
   keys use the "struct object_id" objects, not the raw hash values.

 * Lose the debugging aid that may have been useful in the past, but
   no longer is, in the "grep" codepaths.

 * Some pretty-format specifiers do not need the data in commit object
   (e.g. "%H"), but we were over-eager to load and parse it, which has
   been made even lazier.

 * Get rid of "GETTEXT_POISON" support altogether, which may or may
   not be controversial.

 * Introduce an on-disk file to record revindex for packdata, which
   traditionally was always created on the fly and only in-core.

 * The commit-graph learned to use corrected commit dates instead of
   the generation number to help topological revision traversal.

 * Piecemeal of rewrite of "git bisect" in C continues.

 * When a pager spawned by us exited, the trace log did not record its
   exit status correctly, which has been corrected.

 * Removal of GIT_TEST_GETTEXT_POISON continues.

 * The code to implement "git merge-base --independent" was poorly
   done and was kept from the very beginning of the feature.

 * Preliminary changes to fsmonitor integration.

 * Performance improvements for rename detection.

 * The common code to deal with "chunked file format" that is shared
   by the multi-pack-index and commit-graph files have been factored
   out, to help codepaths for both filetypes to become more robust.

 * The approach to "fsck" the incoming objects in "index-pack" is
   attractive for performance reasons (we have them already in core,
   inflated and ready to be inspected), but fundamentally cannot be
   applied fully when we receive more than one pack stream, as a tree
   object in one pack may refer to a blob object in another pack as
   ".gitmodules", when we want to inspect blobs that are used as
   ".gitmodules" file, for example.  Teach "index-pack" to emit
   objects that must be inspected later and check them in the calling
   "fetch-pack" process.

 * The logic to handle "trailer" related placeholders in the
   "--format=" mechanisms in the "log" family and "for-each-ref"
   family is getting unified.

 * Raise the buffer size used when writing the index file out from
   (obviously too small) 8kB to (clearly sufficiently large) 128kB.

 * It is reported that open() on some platforms (e.g. macOS Big Sur)
   can return EINTR even though our timers are set up with SA_RESTART.
   A workaround has been implemented and enabled for macOS to rerun
   open() transparently from the caller when this happens.


Fixes since v2.30
-----------------

 * Diagnose command line error of "git rebase" early.

 * Clean up option descriptions in "git cmd --help".

 * "git stash" did not work well in a sparsely checked out working
   tree.

 * Some tests expect that "ls -l" output has either '-' or 'x' for
   group executable bit, but setgid bit can be inherited from parent
   directory and make these fields 'S' or 's' instead, causing test
   failures.

 * "git for-each-repo --config=<var> <cmd>" should not run <cmd> for
   any repository when the configuration variable <var> is not defined
   even once.

 * Fix 2.29 regression where "git mergetool --tool-help" fails to list
   all the available tools.

 * Fix for procedure to building CI test environment for mac.

 * The implementation of "git branch --sort" wrt the detached HEAD
   display has always been hacky, which has been cleaned up.

 * Newline characters in the host and path part of git:// URL are
   now forbidden.

 * "git diff" showed a submodule working tree with untracked cruft as
   "Submodule commit <objectname>-dirty", but a natural expectation is
   that the "-dirty" indicator would align with "git describe --dirty",
   which does not consider having untracked files in the working tree
   as source of dirtiness.  The inconsistency has been fixed.

 * When more than one commit with the same patch ID appears on one
   side, "git log --cherry-pick A...B" did not exclude them all when a
   commit with the same patch ID appears on the other side.  Now it
   does.

 * Documentation for "git fsck" lost stale bits that has become
   incorrect.

 * Doc fix for packfile URI feature.

 * When "git rebase -i" processes "fixup" insn, there is no reason to
   clean up the commit log message, but we did the usual stripspace
   processing.  This has been corrected.
   (merge f7d42ceec5 js/rebase-i-commit-cleanup-fix later to maint).

 * Fix in passing custom args from "git clone" to "upload-pack" on the
   other side.
   (merge ad6b5fefbd jv/upload-pack-filter-spec-quotefix later to maint).

 * The command line completion (in contrib/) completed "git branch -d"
   with branch names, but "git branch -D" offered tagnames in addition,
   which has been corrected.  "git branch -M" had the same problem.
   (merge 27dc071b9a jk/complete-branch-force-delete later to maint).

 * When commands are started from a subdirectory, they may have to
   compare the path to the subdirectory (called prefix and found out
   from $(pwd)) with the tracked paths.  On macOS, $(pwd) and
   readdir() yield decomposed path, while the tracked paths are
   usually normalized to the precomposed form, causing mismatch.  This
   has been fixed by taking the same approach used to normalize the
   command line arguments.
   (merge 5c327502db tb/precompose-prefix-too later to maint).

 * Even though invocations of "die()" were logged to the trace2
   system, "BUG()"s were not, which has been corrected.
   (merge 0a9dde4a04 jt/trace2-BUG later to maint).

 * "git grep --untracked" is meant to be "let's ALSO find in these
   files on the filesystem" when looking for matches in the working
   tree files, and does not make any sense if the primary search is
   done against the index, or the tree objects.  The "--cached" and
   "--untracked" options have been marked as mutually incompatible.
   (merge 0c5d83b248 mt/grep-cached-untracked later to maint).

 * Fix "git fsck --name-objects" which apparently has not been used by
   anybody who is motivated enough to report breakage.
   (merge e89f89361c js/fsck-name-objects-fix later to maint).

 * Avoid individual tests in t5411 from getting affected by each other
   by forcing them to use separate output files during the test.
   (merge 822ee894f6 jx/t5411-unique-filenames later to maint).

 * Test to make sure "git rev-parse one-thing one-thing" gives
   the same thing twice (when one-thing is --since=X).
   (merge a5cdca4520 ew/rev-parse-since-test later to maint).

 * When certain features (e.g. grafts) used in the repository are
   incompatible with the use of the commit-graph, we used to silently
   turned commit-graph off; we now tell the user what we are doing.
   (merge c85eec7fc3 js/commit-graph-warning later to maint).

 * Objects that lost references can be pruned away, even when they
   have notes attached to it (and these notes will become dangling,
   which in turn can be pruned with "git notes prune").  This has been
   clarified in the documentation.
   (merge fa9ab027ba mz/doc-notes-are-not-anchors later to maint).

 * The error codepath around the "--temp/--prefix" feature of "git
   checkout-index" has been improved.
   (merge 3f7ba60350 mt/checkout-index-corner-cases later to maint).

 * The "git maintenance register" command had trouble registering bare
   repositories, which had been corrected.

 * A handful of multi-word configuration variable names in
   documentation that are spelled in all lowercase have been corrected
   to use the more canonical camelCase.
   (merge 7dd0eaa39c dl/doc-config-camelcase later to maint).

 * "git push $there --delete ''" should have been diagnosed as an
   error, but instead turned into a matching push, which has been
   corrected.
   (merge 20e416409f jc/push-delete-nothing later to maint).

 * Test script modernization.
   (merge 488acf15df sv/t7001-modernize later to maint).

 * An under-allocation for the untracked cache data has been corrected.
   (merge 6347d649bc jh/untracked-cache-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge e3f5da7e60 sg/t7800-difftool-robustify later to maint).
   (merge 9d336655ba js/doc-proto-v2-response-end later to maint).
   (merge 1b5b8cf072 jc/maint-column-doc-typofix later to maint).
   (merge 3a837b58e3 cw/pack-config-doc later to maint).
   (merge 01168a9d89 ug/doc-commit-approxidate later to maint).
   (merge b865734760 js/params-vs-args later to maint).

----------------------------------------------------------------

Changes since v2.30.0 are as follows:

Abhishek Kumar (11):
      commit-graph: fix regression when computing Bloom filters
      revision: parse parent in indegree_walk_step()
      commit-graph: consolidate fill_commit_graph_info
      t6600-test-reach: generalize *_three_modes
      commit-graph: add a slab to store topological levels
      commit-graph: return 64-bit generation number
      commit-graph: implement corrected commit date
      commit-graph: implement generation data chunk
      commit-graph: use generation v2 only if entire chain does
      commit-reach: use corrected commit dates in paint_down_to_common()
      doc: add corrected commit date info

Adam Dinwoodie (1):
      t4129: fix setfacl-related permissions failure

Alex Henrie (1):
      rebase: add a config option for --no-fork-point

Andrew Klotz (1):
      config: improve error message for boolean config

Andrzej Hunt (1):
      commit-graph: avoid leaking topo_levels slab in write_commit_graph()

Antonio Russo (1):
      t6016: move to lib-log-graph.sh framework

Christian Couder (3):
      fetch-pack: rename helper to create_promisor_file()
      fetch-pack: refactor writing promisor file
      pack-write: die on error in write_promisor_file()

Christian Walther (1):
      doc: mention bigFileThreshold for packing

Daniel Levin (1):
      git-p4: fix syncing file types with pattern

Denton Liu (12):
      refs: factor out set_read_ref_cutoffs()
      refs: allow @{n} to work with n-sized reflog
      test-lib-functions.sh: fix usage for test_commit()
      t4203: stop losing return codes of git commands
      git-stash.txt: be explicit about subcommand options
      t3905: remove spaces after redirect operators
      t3905: move all commands into test cases
      t3905: remove nested git in command substitution
      t3905: replace test -s with test_file_not_empty
      t3905: use test_cmp() to check file contents
      stash: declare ref_stash as an array
      i18n.txt: camel case and monospace "i18n.commitEncoding"

Derrick Stolee (65):
      maintenance: extract platform-specific scheduling
      maintenance: include 'cron' details in docs
      pack-bitmap-write: fill bitmap with commit history
      bitmap: implement bitmap_is_subset()
      commit: implement commit_list_contains()
      t5310: add branch-based checks
      pack-bitmap-write: rename children to reverse_edges
      pack-bitmap-write: build fewer intermediate bitmaps
      pack-bitmap-write: use existing bitmaps
      pack-bitmap-write: relax unique revwalk condition
      pack-bitmap-write: better reuse bitmaps
      revision: trace topo-walk statistics
      tree-walk: report recursion counts
      unpack-trees: add trace2 regions
      cache-tree: use trace2 in cache_tree_update()
      maintenance: use launchctl on macOS
      maintenance: use Windows scheduled tasks
      for-each-repo: do nothing on empty config
      cache-tree: trace regions for I/O
      cache-tree: trace regions for prime_cache_tree
      index-format: use 'cache tree' over 'cached tree'
      index-format: update preamble to cache tree extension
      index-format: discuss recursion of cache-tree better
      cache-tree: speed up consecutive path comparisons
      maintenance: set log.excludeDecoration durin prefetch
      t7900: clean up some broken refs
      cache-tree: clean up cache_tree_update()
      cache-tree: simplify verify_cache() prototype
      cache-tree: extract subtree_pos()
      fsmonitor: de-duplicate BUG()s around dirty bits
      repository: add repo reference to index_state
      name-hash: use trace2 regions for init
      sparse-checkout: load sparse-checkout patterns
      test-lib: test_region looks for trace2 regions
      t1092: test interesting sparse-checkout scenarios
      commit-reach: reduce requirements for remove_redundant()
      commit-graph: use repo_parse_commit
      commit-graph: always parse before commit_graph_data_at()
      commit-graph: validate layers for generation data
      commit-graph: compute generations separately
      commit-graph: be extra careful about mixed generations
      commit-graph: prepare commit graph
      commit-graph: anonymize data in chunk_write_fn
      maintenance: add pack-refs task
      maintenance: incremental strategy runs pack-refs weekly
      chunk-format: create chunk format write API
      commit-graph: use chunk-format write API
      midx: rename pack_info to write_midx_context
      midx: use context in write_midx_pack_names()
      midx: add entries to write_midx_context
      midx: add pack_perm to write_midx_context
      midx: add num_large_offsets to write_midx_context
      midx: return success/failure in chunk write methods
      midx: drop chunk progress during write
      midx: use chunk-format API in write_midx_internal()
      chunk-format: create read chunk API
      commit-graph: use chunk-format read API
      midx: use chunk-format read API
      midx: use 64-bit multiplication for chunk sizes
      chunk-format: restore duplicate chunk checks
      chunk-format: add technical docs
      commit-reach: use one walk in remove_redundant()
      commit-reach: move compare_commits_by_gen
      commit-reach: use heuristic in remove_redundant()
      commit-reach: stale commits may prune generation further

Elijah Newren (93):
      t7012: add a testcase demonstrating stash apply bugs in sparse checkouts
      stash: remove unnecessary process forking
      stash: fix stash application in sparse-checkouts
      merge-ort: setup basic internal data structures
      merge-ort: add some high-level algorithm structure
      merge-ort: port merge_start() from merge-recursive
      merge-ort: use histogram diff
      merge-ort: add an err() function similar to one from merge-recursive
      merge-ort: implement a very basic collect_merge_info()
      merge-ort: avoid repeating fill_tree_descriptor() on the same tree
      merge-ort: compute a few more useful fields for collect_merge_info
      merge-ort: record stage and auxiliary info for every path
      merge-ort: avoid recursing into identical trees
      merge-ort: add a preliminary simple process_entries() implementation
      merge-ort: have process_entries operate in a defined order
      merge-ort: step 1 of tree writing -- record basenames, modes, and oids
      merge-ort: step 2 of tree writing -- function to create tree object
      merge-ort: step 3 of tree writing -- handling subdirectories as we go
      merge-ort: basic outline for merge_switch_to_result()
      merge-ort: add implementation of checkout()
      tree: enable cmp_cache_name_compare() to be used elsewhere
      merge-ort: add implementation of record_conflicted_index_entries()
      merge-ort: free data structures in merge_finalize()
      merge-ort: add a few includes
      merge-ort: add a clear_internal_opts helper
      merge-ort: add a path_conflict field to merge_options_internal
      merge-ort: add a paths_to_free field to merge_options_internal
      merge-ort: add function grouping comments
      merge-ort: add die-not-implemented stub handle_content_merge() function
      merge-ort: add modify/delete handling and delayed output processing
      merge-ort: add basic data structures for handling renames
      merge-ort: add initial outline for basic rename detection
      merge-ort: implement detect_regular_renames()
      merge-ort: implement compare_pairs() and collect_renames()
      merge-ort: add basic outline for process_renames()
      diffcore-rename: rename num_create to num_destinations
      diffcore-rename: avoid usage of global in too_many_rename_candidates()
      diffcore-rename: simplify limit check
      diffcore-rename: reduce jumpiness in progress counters
      t4058: add more tests and documentation for duplicate tree entry handling
      t4058: explore duplicate tree entry handling in a bit more detail
      diffcore-rename: simplify and accelerate register_rename_src()
      diffcore-rename: accelerate rename_dst setup
      merge-ort: add implementation of both sides renaming identically
      merge-ort: add implementation of both sides renaming differently
      merge-ort: add implementation of rename/delete conflicts
      merge-ort: add implementation of rename collisions
      merge-ort: add implementation of normal rename handling
      merge-ort: add implementation of type-changed rename handling
      commit: move reverse_commit_list() from merge-recursive
      merge-ort: copy a few small helper functions from merge-recursive.c
      merge-ort: make clear_internal_opts() aware of partial clearing
      merge-ort: implement merge_incore_recursive()
      merge-ort: handle D/F conflict where directory disappears due to merge
      merge-ort: handle directory/file conflicts that remain
      merge-ort: implement unique_path() helper
      merge-ort: handle book-keeping around two- and three-way content merge
      merge-ort: flesh out implementation of handle_content_merge()
      merge-ort: copy and adapt merge_3way() from merge-recursive.c
      merge-ort: copy and adapt merge_submodule() from merge-recursive.c
      merge-ort: implement format_commit()
      merge-ort: copy find_first_merges() implementation from merge-recursive.c
      merge-ort: add handling for different types of files at same path
      diffcore-rename: remove unnecessary duplicate entry checks
      merge-ort: add new data structures for directory rename detection
      merge-ort: initialize and free new directory rename data structures
      merge-ort: collect which directories are removed in dirs_removed
      merge-ort: add outline for computing directory renames
      merge-ort: add outline of get_provisional_directory_renames()
      merge-ort: copy get_renamed_dir_portion() from merge-recursive.c
      merge-ort: implement compute_rename_counts()
      merge-ort: implement handle_directory_level_conflicts()
      merge-ort: modify collect_renames() for directory rename handling
      merge-ort: implement compute_collisions()
      merge-ort: implement apply_dir_rename() and check_dir_renamed()
      merge-ort: implement check_for_directory_rename()
      merge-ort: implement handle_path_level_conflicts()
      merge-ort: add a new toplevel_dir field
      merge-ort: implement apply_directory_rename_modifications()
      merge-ort: process_renames() now needs more defensiveness
      merge-ort: fix a directory rename detection bug
      merge-ort: fix massive leak
      merge-ort: ignore the directory rename split conflict for now
      merge-ort: begin performance work; instrument with trace2_region_* calls
      diffcore-rename: no point trying to find a match better than exact
      diffcore-rename: filter rename_src list when possible
      t4001: add a test comparing basename similarity and content similarity
      diffcore-rename: compute basenames of source and dest candidates
      diffcore-rename: complete find_basename_matches()
      diffcore-rename: guide inexact rename detection based on basenames
      gitdiffcore doc: mention new preliminary step for rename detection
      merge-ort: call diffcore_rename() directly
      Documentation/RelNotes: improve release note for rename detection work

Eric Sunshine (3):
      worktree: teach `repair` to fix multi-directional breakage
      t/perf: avoid unnecessary test_export() recursion
      maintenance: fix incorrect `maintenance.repo` path with bare repository

Eric Wong (2):
      core.abbrev=no disables abbreviations
      t1500: ensure current --since= behavior remains

Felipe Contreras (8):
      pull: refactor fast-forward check
      pull: give the advice for choosing rebase/merge much later
      pull: display default warning only when non-ff
      test: bisect-porcelain: fix location of files
      completion: bash: add __git_have_func helper
      completion: bash: improve function detection
      test: completion: add tests for __git_complete
      completion: add proper public __git_complete

Han-Wen Nienhuys (1):
      doc/reftable: document how to handle windows

Hariom Verma (4):
      t6300: use function to test trailer options
      pretty.c: refactor trailer logic to `format_set_trailers_options()`
      pretty.c: capture invalid trailer argument
      ref-filter: use pretty.c logic for trailers

Jacob Vosmaer (4):
      builtin/pack-objects.c: avoid iterating all refs
      ls-refs.c: initialize 'prefixes' before using it
      upload-pack.c: fix filter spec quoting bug
      t5544: clarify 'hook works with partial clone' test

Jeff Hostetler (11):
      p7519: do not rely on "xargs -d" in test
      p7519: fix watchman watch-list test on Windows
      p7519: move watchman cleanup earlier in the test
      p7519: add trace logging during perf test
      preload-index: log the number of lstat calls to trace2
      read-cache: log the number of lstat calls to trace2
      read-cache: log the number of scanned files to trace2
      fsmonitor: log invocation of FSMonitor hook to trace2
      fsmonitor: log FSMN token when reading and writing the index
      fsmonitor: refactor initialization of fsmonitor_last_update token
      dir: fix malloc of root untracked_cache_dir

Jeff King (45):
      pack-bitmap: fix header size check
      pack-bitmap: bounds-check size of cache extension
      t5310: drop size of truncated ewah bitmap
      rev-list: die when --test-bitmap detects a mismatch
      ewah: factor out bitmap growth
      ewah: make bitmap growth less aggressive
      ewah: implement bitmap_or()
      ewah: add bitmap_dup() function
      pack-bitmap-write: reimplement bitmap writing
      pack-bitmap-write: pass ownership of intermediate bitmaps
      pack-bitmap-write: ignore BITMAP_FLAG_REUSE
      git_connect_git(): forbid newlines in host and path
      fsck: reject .gitmodules git:// urls with newlines
      t5516: loosen "not our ref" error check
      patch-ids: handle duplicate hashmap entries
      quote: make sq_dequote_step() a public function
      for_each_object_in_pack(): clarify pack vs index ordering
      config: parse more robust format in GIT_CONFIG_PARAMETERS
      refs: switch peel_ref() to peel_iterated_oid()
      run-command: document use_shell option
      git-svn tests: rewrite brittle tests to use "--[no-]merges".
      git-compat-util: always enable variadic macros
      commit_graft_pos(): take an oid instead of a bare hash
      rerere: check dirname format while iterating rr_cache directory
      rerere: tighten rr-cache dirname check
      rerere: use strmap to store rerere directories
      hash_pos(): convert to oid_pos()
      oid_pos(): access table through const pointers
      t0000: keep clean-up tests together
      t0000: run prereq tests inside sub-test
      t0000: run cleaning test inside sub-test
      t0000: consistently use single quotes for outer tests
      pretty: lazy-load commit data when expanding user-format
      p5303: avoid sed GNU-ism
      completion: treat "branch -D" the same way as "branch -d"
      completion: handle other variants of "branch -m"
      doc/git-branch: fix awkward wording for "-c"
      t: add --no-tag option to test_commit
      mailmap: only look for .mailmap in work tree
      rev-list: add --disk-usage option for calculating disk usage
      docs/rev-list: add an examples section
      docs/rev-list: add some examples of --disk-usage
      doc: mention approxidates for git-commit --date
      Makefile: add OPEN_RETURNS_EINTR knob
      config.mak.uname: enable OPEN_RETURNS_EINTR for macOS Big Sur

Jiang Xin (5):
      test: add helper functions for git-bundle
      bundle: lost objects when removing duplicate pendings
      bundle: arguments can be read from stdin
      t5411: use different out file to prevent overwriting
      t5411: refactor check of refs using test_cmp_refs

Joey Salazar (1):
      doc: fix naming of response-end-pkt

Johannes Schindelin (58):
      tests: mark tests relying on the current default for `init.defaultBranch`
      t0060: preemptively adjust alignment
      t[01]*: adjust the references to the default branch name "main"
      t2*: adjust the references to the default branch name "main"
      t3[0-3]*: adjust the references to the default branch name "main"
      t3416: preemptively adjust alignment in a comment
      t34*: adjust the references to the default branch name "main"
      t3[5-9]*: adjust the references to the default branch name "main"
      t4*: adjust the references to the default branch name "main"
      t5323: prepare centered comment for `master` -> `main`
      t5[0-4]*: adjust the references to the default branch name "main"
      t5503: prepare aligned comment for replacing `master` with `main`
      t550*: adjust the references to the default branch name "main"
      t551*: adjust the references to the default branch name "main"
      t55[23]*: adjust the references to the default branch name "main"
      t55[4-9]*: adjust the references to the default branch name "main"
      t5[6-9]*: adjust the references to the default branch name "main"
      t6[0-3]*: adjust the references to the default branch name "main"
      t64*: preemptively adjust alignment to prepare for `master` -> `main`
      t6[4-9]*: adjust the references to the default branch name "main"
      t7[0-4]*: adjust the references to the default branch name "main"
      t7[5-9]*: adjust the references to the default branch name "main"
      t8*: adjust the references to the default branch name "main"
      t9[0-4]*: adjust the references to the default branch name "main"
      t9[5-7]*: adjust the references to the default branch name "main"
      tests(git-p4): transition to the default branch name `main`
      t99*: adjust the references to the default branch name "main"
      tests: drop prereq `PREPARE_FOR_MAIN_BRANCH` where no longer needed
      SKIP_DASHED_BUILT_INS: respect `config.mak`
      range-diff/format-patch: refactor check for commit range
      rebase -i: do leave commit message intact in fixup! chains
      range-diff: avoid leaking memory in two error code paths
      range-diff: libify the read_patches() function again
      range-diff: simplify code spawning `git log`
      range-diff: combine all options in a single data structure
      range-diff: move the diffopt initialization down one layer
      range-diff: offer --left-only/--right-only options
      range-diff/format-patch: handle commit ranges other than A..B
      range-diff(docs): explain how to specify commit ranges
      t1450: robustify `remove_object()`
      fsck --name-objects: be more careful parsing generation numbers
      reflog expire --stale-fix: be generous about missing objects
      commit-graph: when incompatible with graphs, indicate why
      run-command: invalidate lstat cache after a command finished
      Git 2.17.6
      Git 2.18.5
      Git 2.19.6
      Git 2.20.5
      Git 2.21.4
      Git 2.22.5
      Git 2.23.4
      Git 2.24.4
      Git 2.25.5
      Git 2.26.3
      Git 2.27.1
      Git 2.28.1
      Git 2.29.3
      Git 2.30.2

Johannes Sixt (2):
      annotate-tests: quote variable expansions containing path names
      replace "parameters" by "arguments" in error messages

Jonathan Tan (10):
      Doc: clarify contents of packfile sent as URI
      ls-refs: report unborn targets of symrefs
      connect, transport: encapsulate arg in struct
      clone: respect remote unborn HEAD
      usage: trace2 BUG() invocations
      http: allow custom index-pack args
      http-fetch: allow custom index-pack args
      fetch-pack: with packfile URIs, use index-pack arg
      fetch-pack: print and use dangling .gitmodules
      fetch-pack: do not mix --pack_header and packfile uri

Junio C Hamano (31):
      pack-redundant: gauge the usage before proposing its removal
      pull: get rid of unnecessary global variable
      pull: correct condition to trigger non-ff advice
      CoC: explicitly take any whitespace breakage
      parse-options: format argh like error messages
      The first batch in 2.31 cycle
      SubmittingPatches: tighten wording on "sign-off" procedure
      ci/install-depends: attempt to fix "brew cask" stuff
      t4203: make blame output massaging more robust
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      Prepare for 2.30.1
      The sixth batch
      Git 2.30.1
      The seventh batch
      The eighth batch
      diff: --{rotate,skip}-to=<path>
      The ninth batch
      Documentation: typofix --column description
      The tenth batch
      push: do not turn --delete '' into a matching push
      blame-options.txt: camelcase blame.blankBoundary
      index-format doc: camelCase core.excludesFile
      Git 2.31-rc0
      Revert "commit-graph: when incompatible with graphs, indicate why"
      Hopefully the last batch before -rc1
      Git 2.31-rc1
      Merged the open-eintr workaround for macOS
      Git 2.31-rc2

Kevin Willford (1):
      fsmonitor: allow all entries for a folder to be invalidated

Martin von Zweigbergk (1):
      docs: clarify that refs/notes/ do not keep the attached objects alive

Martin Ågren (16):
      t1300: remove duplicate test for `--file ../foo`
      t1300: remove duplicate test for `--file no-such-file`
      t1300: don't needlessly work with `core.foo` configs
      pack-format.txt: document sizes at start of delta data
      object-name.c: rename from sha1-name.c
      object-file.c: rename from sha1-file.c
      sha1-lookup: rename `sha1_pos()` as `hash_pos()`
      hash-lookup: rename from sha1-lookup
      builtin/gc: don't peek into `struct lock_file`
      commit-graph: don't peek into `struct lock_file`
      midx: don't peek into `struct lock_file`
      refs/files-backend: don't peek into `struct lock_file`
      read-cache: try not to peek into `struct {lock_,temp}file`
      rev-list-options.txt: fix rendering of bonus paragraph
      git.txt: fix monospace rendering
      gitmailmap.txt: fix rendering of e-mail addresses

Matheus Tavares (10):
      t4129: don't fail if setgid is set in the test directory
      grep: error out if --untracked is used with --cached
      grep: honor sparse-checkout on working tree searches
      checkout: fix bug that makes checkout follow symlinks in leading path
      unpack_trees(): start with a fresh lstat cache
      write_entry(): fix misuses of `path` in error messages
      checkout-index: omit entries with no tempname from --temp output
      add --chmod: don't update index when --dry-run is used
      add: mark --chmod error string for translation
      add: propagate --chmod errors to exit status

Mikhail Klyushin (1):
      git-gui: fix typo in russian locale

Neeraj Singh (1):
      read-cache: make the index write buffer size 128K

Patrick Steinhardt (11):
      git: add `--super-prefix` to usage string
      config: add new way to pass config via `--config-env`
      config: extract function to parse config pairs
      fetch: extract writing to FETCH_HEAD
      fetch: use strbuf to format FETCH_HEAD updates
      fetch: refactor `s_update_ref` to use common exit path
      fetch: allow passing a transaction to `s_update_ref()`
      fetch: implement support for atomic reference updates
      config: store "git -c" variables using more robust format
      environment: make `getenv_safe()` a public function
      config: allow specifying config entries via envvar pairs

Peter Kaestle (1):
      submodules: fix of regression on fetching of non-init subsub-repo

Phil Hord (1):
      use delete_refs when deleting tags or branches

Philippe Blain (4):
      gitmodules.txt: fix 'GIT_WORK_TREE' variable name
      mergetool--lib: fix '--tool-help' to correctly show available tools
      mailmap doc: use correct environment variable 'GIT_WORK_TREE'
      ci: do not cancel all jobs of a matrix if one fails

Pranit Bauva (7):
      bisect--helper: reimplement `bisect_log` shell function in C
      bisect--helper: reimplement `bisect_replay` shell function in C
      bisect--helper: retire `--bisect-write` subcommand
      bisect--helper: use `res` instead of return in BISECT_RESET case option
      bisect--helper: retire `--bisect-auto-next` subcommand
      bisect--helper: reimplement `bisect_skip` shell function in C
      bisect--helper: retire `--check-and-set-terms` subcommand

Pratyush Yadav (2):
      git-gui: remove lines starting with the comment character
      Revert "git-gui: remove lines starting with the comment character"

Rafael Silva (8):
      worktree: libify should_prune_worktree()
      worktree: teach worktree to lazy-load "prunable" reason
      worktree: teach worktree_lock_reason() to gently handle main worktree
      t2402: ensure locked worktree is properly cleaned up
      worktree: teach `list --porcelain` to annotate locked worktree
      worktree: teach `list` to annotate prunable worktree
      worktree: teach `list` verbose mode
      blame: remove unnecessary use of get_commit_info()

René Scharfe (2):
      rebase: verify commit parameter
      cache-tree: use ce_namelen() instead of strlen()

SZEDER Gábor (2):
      t7800-difftool: don't accidentally match tmp dirs
      test-lib: prevent '--stress-jobs=X' from being ignored

Sangeeta Jain (1):
      diff: do not show submodule with untracked files as "-dirty"

Sergey Organov (32):
      revision: factor out parsing of diff-merge related options
      revision: factor out setup of diff-merge related settings
      revision: factor out initialization of diff-merge related settings
      revision: provide implementation for diff merges tweaks
      revision: move diff merges functions to its own diff-merges.c
      diff-merges: rename all functions to have common prefix
      diff-merges: move checks for first_parent_only out of the module
      diff-merges: rename diff_merges_default_to_enable() to match semantics
      diff-merges: re-arrange functions to match the order they are called in
      diff-merges: new function diff_merges_suppress()
      diff-merges: new function diff_merges_set_dense_combined_if_unset()
      diff-merges: introduce revs->first_parent_merges flag
      diff-merges: handle imply -p on -c/--cc logic for log.c
      diff-merges: revise revs->diff flag handling
      t4013: support test_expect_failure through ':failure' magic
      t4013: add tests for -m failing to override -c/--cc
      diff-merges: fix -m to properly override -c/--cc
      diff-merges: split 'ignore_merges' field
      diff-merges: group diff-merge flags next to each other inside 'rev_info'
      diff-merges: get rid of now empty diff_merges_init_revs()
      diff-merges: refactor opt settings into separate functions
      diff-merges: make -m/-c/--cc explicitly mutually exclusive
      diff-merges: implement new values for --diff-merges
      diff-merges: do not imply -p for new options
      diff-merges: let new options enable diff without -p
      diff-merges: add old mnemonic counterparts to --diff-merges
      diff-merges: add '--diff-merges=1' as synonym for 'first-parent'
      doc/git-log: describe new --diff-merges options
      doc/diff-generate-patch: mention new --diff-merges option
      doc/rev-list-options: document --first-parent changes merges format
      doc/git-show: include --diff-merges description
      t4013: add tests for --diff-merges=first-parent

Seth House (4):
      mergetool: add hideResolved configuration
      mergetool: break setup_tool out into separate initialization function
      mergetool: add per-tool support and overrides for the hideResolved flag
      mergetools/vimdiff: add vimdiff1 merge tool variant

Shubham Verma (10):
      t7001: modernize test formatting
      t7001: indent with TABs instead of spaces
      t7001: remove unnecessary blank lines
      t7001: modernize subshell formatting
      t7001: remove whitespace after redirect operators
      t7001: avoid using `cd` outside of subshells
      t7001: use '>' rather than 'touch'
      t7001: put each command on a separate line
      t7001: use here-docs instead of echo
      t7001: use `test` rather than `[`

Taylor Blau (40):
      ewah/ewah_bitmap.c: avoid open-coding ALLOC_GROW()
      pack-bitmap.c: check reads more aggressively when loading
      pack-bitmap: factor out 'bitmap_for_commit()'
      pack-bitmap: factor out 'add_commit_to_bitmap()'
      p7519: allow running without watchman prereq
      Documentation/git-clone.txt: document race with --local
      pack-revindex: introduce a new API
      write_reuse_object(): convert to new revindex API
      write_reused_pack_one(): convert to new revindex API
      write_reused_pack_verbatim(): convert to new revindex API
      check_object(): convert to new revindex API
      bitmap_position_packfile(): convert to new revindex API
      show_objects_for_type(): convert to new revindex API
      get_size_by_pos(): convert to new revindex API
      try_partial_reuse(): convert to new revindex API
      rebuild_existing_bitmaps(): convert to new revindex API
      get_delta_base_oid(): convert to new revindex API
      retry_bad_packed_offset(): convert to new revindex API
      packed_object_info(): convert to new revindex API
      unpack_entry(): convert to new revindex API
      for_each_object_in_pack(): convert to new revindex API
      builtin/gc.c: guess the size of the revindex
      pack-revindex: remove unused 'find_pack_revindex()'
      pack-revindex: remove unused 'find_revindex_position()'
      pack-revindex: hide the definition of 'revindex_entry'
      pack-revindex.c: avoid direct revindex access in 'offset_to_pack_pos()'
      refs: expose 'for_each_fullref_in_prefixes'
      ls-refs.c: traverse prefixes of disjoint "ref-prefix" sets
      packfile: prepare for the existence of '*.rev' files
      pack-write.c: prepare to write 'pack-*.rev' files
      builtin/index-pack.c: allow stripping arbitrary extensions
      builtin/index-pack.c: write reverse indexes
      builtin/pack-objects.c: respect 'pack.writeReverseIndex'
      Documentation/config/pack.txt: advertise 'pack.writeReverseIndex'
      t: prepare for GIT_TEST_WRITE_REV_INDEX
      t: support GIT_TEST_WRITE_REV_INDEX
      pack-revindex: ensure that on-disk reverse indexes are given precedence
      t5325: check both on-disk and in-memory reverse index
      .github/workflows/main.yml: run static-analysis on bionic
      commit-graph.c: display correct number of chunks when writing

Thomas Ackermann (7):
      doc: fix some typos
      doc hash-function-transition: fix asciidoc output
      doc hash-function-transition: use SHA-1 and SHA-256 consistently
      doc hash-function-transition: use upper case consistently
      doc hash-function-transition: fix incomplete sentence
      doc hash-function-transition: move rationale upwards
      doc: use https links

Torsten Bögershausen (1):
      MacOS: precompose_argv_prefix()

Utku Gultopu (1):
      doc: remove "directory cache" from man pages

Vasyl Vavrychuk (1):
      git-send-email.txt: mention less secure app access with Gmail

ZheNing Hu (5):
      builtin/*: update usage format
      ls_files.c: bugfix for --deleted and --modified
      ls_files.c: consolidate two for loops into one
      ls-files.c: add --deduplicate option
      difftool.c: learn a new way start at specified file

brian m. carlson (9):
      abspath: add a function to resolve paths with missing components
      rev-parse: add option for absolute or relative path formatting
      docs: rephrase and clarify the git status --short format
      ref-filter: switch some uses of unsigned long to size_t
      commit: ignore additional signatures when parsing signed commits
      gpg-interface: improve interface for parsing tags
      commit: allow parsing arbitrary buffers with headers
      ref-filter: hoist signature parsing
      gpg-interface: remove other signature headers before verifying

Ævar Arnfjörð Bjarmason (100):
      pretty format %(trailers) test: split a long line
      pretty format %(trailers) doc: avoid repetition
      pretty-format %(trailers): fix broken standalone "valueonly"
      pretty format %(trailers): add a "keyonly"
      pretty format %(trailers): add a "key_value_separator"
      mktag doc: say <hash> not <sha1>
      mktag doc: grammar fix, when exists -> when it exists
      CoC: Update word-wrapping to match upstream
      mktag doc: update to explain why to use this
      mktag tests: don't needlessly use a subshell
      mktag tests: use "test_commit" helper
      mktag tests: remove needless SHA-1 hardcoding
      mktag tests: don't redirect stderr to a file needlessly
      mktag tests: don't create "mytag" twice
      mktag tests: run "fsck" after creating "mytag"
      mktag tests: stress test whitespace handling
      mktag tests: test "hash-object" compatibility
      mktag tests: improve verify_object() test coverage
      mktag tests: test verify_object() with replaced objects
      mktag: use default strbuf_read() hint
      mktag: remove redundant braces in one-line body "if"
      mktag: use puts(str) instead of printf("%s\n", str)
      mktag: use fsck instead of custom verify_tag()
      fsck: make fsck_config() re-usable
      mktag: allow turning off fsck.extraHeaderEntry
      mktag: allow omitting the header/body \n separator
      mktag: convert to parse-options
      mktag: mark strings for translation
      mktag: add a --[no-]strict option
      branch: change "--local" to "--list" in comment
      branch tests: add to --sort tests
      ref-filter: add braces to if/else if/else chain
      ref-filter: move "cmp_fn" assignment into "else if" arm
      ref-filter: move ref_sorting flags to a bitfield
      branch: sort detached HEAD based on a flag
      branch: show "HEAD detached" first under reverse sort
      Makefile: remove a warning about old GETTEXT_POISON flag
      gettext.c: remove/reword a mostly-useless comment
      mailmap doc: create a new "gitmailmap(5)" man page
      mailmap doc: quote config variables `like.this`
      check-mailmap doc: note config options
      mailmap doc: start by mentioning the comment syntax
      mailmap tests: use our preferred whitespace syntax
      mailmap tests: modernize syntax & test idioms
      mailmap tests: improve --stdin tests
      mailmap tests: remove redundant entry in test
      mailmap tests: add a test for "not a blob" error
      mailmap tests: get rid of overly complex blame fuzzing
      mailmap: test for silent exiting on missing file/blob
      test-lib functions: expand "test_commit" comment template
      test-lib functions: document arguments to test_commit
      test-lib functions: add --author support to test_commit
      test-lib functions: add an --append option to test_commit
      tests: refactor a few tests to use "test_commit --append"
      mailmap doc + tests: add better examples & test them
      mailmap tests: add a test for comment syntax
      mailmap tests: add tests for whitespace syntax
      mailmap tests: add tests for empty "<>" syntax
      mailmap doc + tests: document and test for case-insensitivity
      shortlog: remove unused(?) "repo-abbrev" feature
      CoC: update to version 2.0 + local changes
      fsck doc: remove ancient out-of-date diagnostics
      ci: remove GETTEXT_POISON jobs
      tests: remove support for GIT_TEST_GETTEXT_POISON
      tests: remove uses of GIT_TEST_GETTEXT_POISON=false
      cache-tree tests: refactor for modern test style
      cache-tree tests: remove unused $2 parameter
      cache-tree tests: use a sub-shell with less indirection
      cache-tree tests: explicitly test HEAD and index differences
      git svn mergeinfo tests: modernize redirection & quoting style
      git svn mergeinfo tests: refactor "test -z" to use test_must_be_empty
      upload-pack tests: avoid a non-zero "grep" exit status
      archive tests: use a cheaper "zipinfo -h" invocation to get header
      rm tests: actually test for SIGPIPE in SIGPIPE test
      config.mak.uname: remove redundant NO_LIBPCRE1_JIT flag
      Remove support for v1 of the PCRE library
      grep/pcre2 tests: don't rely on invalid UTF-8 data test
      grep/pcre2: better support invalid UTF-8 haystacks
      grep/log: remove hidden --debug and --grep-debug options
      pager: refactor wait_for_pager() function
      pager: test for exit code with and without SIGPIPE
      run-command: add braces for "if" block in wait_or_whine()
      pager: properly log pager exit code when signalled
      test-lib: remove check_var_migration
      test lib: change "error" to "BUG" as appropriate
      test-lib-functions: move test_set_index_version() to its user
      test-lib-functions: remove generate_zero_bytes() wrapper
      test libs: rename bundle helper to "lib-bundle.sh"
      test libs: rename gitweb-lib.sh to lib-gitweb.sh
      test-lib-functions: move function to lib-bitmap.sh
      t/.gitattributes: sort lines
      tests: remove last uses of GIT_TEST_GETTEXT_POISON=false
      tests: remove most uses of C_LOCALE_OUTPUT
      tests: remove last uses of C_LOCALE_OUTPUT
      tests: remove most uses of test_i18ncmp
      diff: add an API for deferred freeing
      diff: plug memory leak from regcomp() on {log,diff} -I
      test libs: rename "diff-lib" to "lib-diff"
      test-lib-functions: remove bug-inducing "diagnostics" helper param
      test-lib-functions: assert correct parameter count


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.31.0-rc1
@ 2021-03-03 10:14  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-03-03 10:14 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.31.0-rc1 is now available for testing
at the usual places.  It is comprised of 631 non-merge commits
since v2.30.0, contributed by 67 people, 21 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.31.0-rc1' 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.30.0 are as follows.
Welcome to the Git development community!

  Andreas Bühmann, Andrew Klotz, Andrzej Hunt, Antonio Russo,
  Arnaud Morin, Christian Walther, Clement Moyroud, Daniel Levin,
  Daniel Troger, Harold Kim, Jacob Vosmaer, LeSeulArtichaut,
  Mikhail Klyushin, Neeraj Singh, Sangeeta Jain, Seth House,
  Shubham Verma, Utku Gultopu, Vasyl Vavrychuk, Vojtěch Knyttl,
  and ZheNing Hu.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Abhishek Kumar, Adam Dinwoodie, Ævar Arnfjörð Bjarmason,
  Alex Henrie, brian m. carlson, Christian Couder, Denton Liu,
  Derrick Stolee, Elijah Newren, Eric Sunshine, Eric Wong,
  Felipe Contreras, Han-Wen Nienhuys, Hariom Verma, Heba Waly,
  Jeff Hostetler, Jeff King, Jiang Xin, Joey Salazar, Johannes
  Schindelin, Johannes Sixt, Jonathan Tan, Junio C Hamano,
  Kevin Daudt, Kevin Willford, Lars Schneider, Martin Ågren,
  Martin von Zweigbergk, Matheus Tavares, Michael Haggerty,
  Patrick Steinhardt, Paul Jolly, Peter Kaestle, Phil Hord,
  Philippe Blain, Phillip Wood, Pranit Bauva, Pratyush Yadav,
  Rafael Silva, René Scharfe, Ross Light, Sergey Organov, SZEDER
  Gábor, Taylor Blau, Thomas Ackermann, and Torsten Bögershausen.

[*] We are counting not just the authorship contribution but
    issue reporting, testing and reviewing that are recorded
    in the commit trailers.

----------------------------------------------------------------

Git 2.31 Release Notes (draft)
==============================

Updates since v2.30
-------------------

Backward incompatible and other important changes

 * The "pack-redundant" command, which has been left stale with almost
   unusable performance issues, now warns loudly when it gets used, as
   we no longer want to recommend its use (instead just "repack -d"
   instead).

 * The development community has adopted Contributor Covenant v2.0 to
   update from v1.4 that we have been using.

 * The support for deprecated PCRE1 library has been dropped.


UI, Workflows & Features

 * The "--format=%(trailers)" mechanism gets enhanced to make it
   easier to design output for machine consumption.

 * When a user does not tell "git pull" to use rebase or merge, the
   command gives a loud message telling a user to choose between
   rebase or merge but creates a merge anyway, forcing users who would
   want to rebase to redo the operation.  Fix an early part of this
   problem by tightening the condition to give the message---there is
   no reason to stop or force the user to choose between rebase or
   merge if the history fast-forwards.

 * The configuration variable 'core.abbrev' can be set to 'no' to
   force no abbreviation regardless of the hash algorithm.

 * "git rev-parse" can be explicitly told to give output as absolute
   or relative path with the `--path-format=(absolute|relative)` option.

 * Bash completion (in contrib/) update to make it easier for
   end-users to add completion for their custom "git" subcommands.

 * "git maintenance" learned to drive scheduled maintenance on
   platforms whose native scheduling methods are not 'cron'.

 * After expiring a reflog and making a single commit, the reflog for
   the branch would record a single entry that knows both @{0} and
   @{1}, but we failed to answer "what commit were we on?", i.e. @{1}

 * "git bundle" learns "--stdin" option to read its refs from the
   standard input.  Also, it now does not lose refs whey they point
   at the same object.

 * "git log" learned a new "--diff-merges=<how>" option.

 * "git ls-files" can and does show multiple entries when the index is
   unmerged, which is a source for confusion unless -s/-u option is in
   use.  A new option --deduplicate has been introduced.

 * `git worktree list` now annotates worktrees as prunable, shows
   locked and prunable attributes in --porcelain mode, and gained
   a --verbose option.

 * "git clone" tries to locally check out the branch pointed at by
   HEAD of the remote repository after it is done, but the protocol
   did not convey the information necessary to do so when copying an
   empty repository.  The protocol v2 learned how to do so.

 * There are other ways than ".." for a single token to denote a
   "commit range", namely "<rev>^!" and "<rev>^-<n>", but "git
   range-diff" did not understand them.

 * The "git range-diff" command learned "--(left|right)-only" option
   to show only one side of the compared range.

 * "git mergetool" feeds three versions (base, local and remote) of
   a conflicted path unmodified.  The command learned to optionally
   prepare these files with unconflicted parts already resolved.

 * The .mailmap is documented to be read only from the root level of a
   working tree, but a stray file in a bare repository also was read
   by accident, which has been corrected.

 * "git maintenance" tool learned a new "pack-refs" maintenance task.

 * The error message given when a configuration variable that is
   expected to have a boolean value has been improved.

 * Signed commits and tags now allow verification of objects, whose
   two object names (one in SHA-1, the other in SHA-256) are both
   signed.

 * "git rev-list" command learned "--disk-usage" option.

 * "git {diff,log} --{skip,rotate}-to=<path>" allows the user to
   discard diff output for early paths or move them to the end of the
   output.

 * "git difftool" learned "--skip-to=<path>" option to restart an
   interrupted session from an arbitrary path.

 * "git grep" has been tweaked to be limited to the sparse checkout
   paths.

 * "git rebase --[no-]fork-point" gained a configuration variable
   rebase.forkPoint so that users do not have to keep specifying a
   non-default setting.


Performance, Internal Implementation, Development Support etc.

 * A 3-year old test that was not testing anything useful has been
   corrected.

 * Retire more names with "sha1" in it.

 * The topological walk codepath is covered by new trace2 stats.

 * Update the Code-of-conduct to version 2.0 from the upstream (we've
   been using version 1.4).

 * "git mktag" validates its input using its own rules before writing
   a tag object---it has been updated to share the logic with "git
   fsck".

 * Two new ways to feed configuration variable-value pairs via
   environment variables have been introduced, and the way
   GIT_CONFIG_PARAMETERS encodes variable/value pairs has been tweaked
   to make it more robust.

 * Tests have been updated so that they do not to get affected by the
   name of the default branch "git init" creates.

 * "git fetch" learns to treat ref updates atomically in all-or-none
   fashion, just like "git push" does, with the new "--atomic" option.

 * The peel_ref() API has been replaced with peel_iterated_oid().

 * The .use_shell flag in struct child_process that is passed to
   run_command() API has been clarified with a bit more documentation.

 * Document, clean-up and optimize the code around the cache-tree
   extension in the index.

 * The ls-refs protocol operation has been optimized to narrow the
   sub-hierarchy of refs/ it walks to produce response.

 * When removing many branches and tags, the code used to do so one
   ref at a time.  There is another API it can use to delete multiple
   refs, and it makes quite a lot of performance difference when the
   refs are packed.

 * The "pack-objects" command needs to iterate over all the tags when
   automatic tag following is enabled, but it actually iterated over
   all refs and then discarded everything outside "refs/tags/"
   hierarchy, which was quite wasteful.

 * A perf script was made more portable.

 * Our setting of GitHub CI test jobs were a bit too eager to give up
   once there is even one failure found.  Tweak the knob to allow
   other jobs keep running even when we see a failure, so that we can
   find more failures in a single run.

 * We've carried compatibility codepaths for compilers without
   variadic macros for quite some time, but the world may be ready for
   them to be removed.  Force compilation failure on exotic platforms
   where variadic macros are not available to find out who screams in
   such a way that we can easily revert if it turns out that the world
   is not yet ready.

 * Code clean-up to ensure our use of hashtables using object names as
   keys use the "struct object_id" objects, not the raw hash values.

 * Lose the debugging aid that may have been useful in the past, but
   no longer is, in the "grep" codepaths.

 * Some pretty-format specifiers do not need the data in commit object
   (e.g. "%H"), but we were over-eager to load and parse it, which has
   been made even lazier.

 * Get rid of "GETTEXT_POISON" support altogether, which may or may
   not be controversial.

 * Introduce an on-disk file to record revindex for packdata, which
   traditionally was always created on the fly and only in-core.

 * The commit-graph learned to use corrected commit dates instead of
   the generation number to help topological revision traversal.

 * Piecemeal of rewrite of "git bisect" in C continues.

 * When a pager spawned by us exited, the trace log did not record its
   exit status correctly, which has been corrected.

 * Removal of GIT_TEST_GETTEXT_POISON continues.

 * The code to implement "git merge-base --independent" was poorly
   done and was kept from the very beginning of the feature.

 * Preliminary changes to fsmonitor integration.

 * Performance optimization work on the rename detection continues.

 * The common code to deal with "chunked file format" that is shared
   by the multi-pack-index and commit-graph files have been factored
   out, to help codepaths for both filetypes to become more robust.

 * The approach to "fsck" the incoming objects in "index-pack" is
   attractive for performance reasons (we have them already in core,
   inflated and ready to be inspected), but fundamentally cannot be
   applied fully when we receive more than one pack stream, as a tree
   object in one pack may refer to a blob object in another pack as
   ".gitmodules", when we want to inspect blobs that are used as
   ".gitmodules" file, for example.  Teach "index-pack" to emit
   objects that must be inspected later and check them in the calling
   "fetch-pack" process.

 * The logic to handle "trailer" related placeholders in the
   "--format=" mechanisms in the "log" family and "for-each-ref"
   family is getting unified.

 * Raise the buffer size used when writing the index file out from
   (obviously too small) 8kB to (clearly sufficiently large) 128kB.


Fixes since v2.30
-----------------

 * Diagnose command line error of "git rebase" early.

 * Clean up option descriptions in "git cmd --help".

 * "git stash" did not work well in a sparsely checked out working
   tree.

 * Some tests expect that "ls -l" output has either '-' or 'x' for
   group executable bit, but setgid bit can be inherited from parent
   directory and make these fields 'S' or 's' instead, causing test
   failures.

 * "git for-each-repo --config=<var> <cmd>" should not run <cmd> for
   any repository when the configuration variable <var> is not defined
   even once.

 * Fix 2.29 regression where "git mergetool --tool-help" fails to list
   all the available tools.

 * Fix for procedure to building CI test environment for mac.

 * The implementation of "git branch --sort" wrt the detached HEAD
   display has always been hacky, which has been cleaned up.

 * Newline characters in the host and path part of git:// URL are
   now forbidden.

 * "git diff" showed a submodule working tree with untracked cruft as
   "Submodule commit <objectname>-dirty", but a natural expectation is
   that the "-dirty" indicator would align with "git describe --dirty",
   which does not consider having untracked files in the working tree
   as source of dirtiness.  The inconsistency has been fixed.

 * When more than one commit with the same patch ID appears on one
   side, "git log --cherry-pick A...B" did not exclude them all when a
   commit with the same patch ID appears on the other side.  Now it
   does.

 * Documentation for "git fsck" lost stale bits that has become
   incorrect.

 * Doc fix for packfile URI feature.

 * When "git rebase -i" processes "fixup" insn, there is no reason to
   clean up the commit log message, but we did the usual stripspace
   processing.  This has been corrected.
   (merge f7d42ceec5 js/rebase-i-commit-cleanup-fix later to maint).

 * Fix in passing custom args from "git clone" to "upload-pack" on the
   other side.
   (merge ad6b5fefbd jv/upload-pack-filter-spec-quotefix later to maint).

 * The command line completion (in contrib/) completed "git branch -d"
   with branch names, but "git branch -D" offered tagnames in addition,
   which has been corrected.  "git branch -M" had the same problem.
   (merge 27dc071b9a jk/complete-branch-force-delete later to maint).

 * When commands are started from a subdirectory, they may have to
   compare the path to the subdirectory (called prefix and found out
   from $(pwd)) with the tracked paths.  On macOS, $(pwd) and
   readdir() yield decomposed path, while the tracked paths are
   usually normalized to the precomposed form, causing mismatch.  This
   has been fixed by taking the same approach used to normalize the
   command line arguments.
   (merge 5c327502db tb/precompose-prefix-too later to maint).

 * Even though invocations of "die()" were logged to the trace2
   system, "BUG()"s were not, which has been corrected.
   (merge 0a9dde4a04 jt/trace2-BUG later to maint).

 * "git grep --untracked" is meant to be "let's ALSO find in these
   files on the filesystem" when looking for matches in the working
   tree files, and does not make any sense if the primary search is
   done against the index, or the tree objects.  The "--cached" and
   "--untracked" options have been marked as mutually incompatible.
   (merge 0c5d83b248 mt/grep-cached-untracked later to maint).

 * Fix "git fsck --name-objects" which apparently has not been used by
   anybody who is motivated enough to report breakage.
   (merge e89f89361c js/fsck-name-objects-fix later to maint).

 * Avoid individual tests in t5411 from getting affected by each other
   by forcing them to use separate output files during the test.
   (merge 822ee894f6 jx/t5411-unique-filenames later to maint).

 * Test to make sure "git rev-parse one-thing one-thing" gives
   the same thing twice (when one-thing is --since=X).
   (merge a5cdca4520 ew/rev-parse-since-test later to maint).

 * When certain features (e.g. grafts) used in the repository are
   incompatible with the use of the commit-graph, we used to silently
   turned commit-graph off; we now tell the user what we are doing.
   (merge c85eec7fc3 js/commit-graph-warning later to maint).

 * Objects that lost references can be pruned away, even when they
   have notes attached to it (and these notes will become dangling,
   which in turn can be pruned with "git notes prune").  This has been
   clarified in the documentation.
   (merge fa9ab027ba mz/doc-notes-are-not-anchors later to maint).

 * The error codepath around the "--temp/--prefix" feature of "git
   checkout-index" has been improved.
   (merge 3f7ba60350 mt/checkout-index-corner-cases later to maint).

 * The "git maintenance register" command had trouble registering bare
   repositories, which had been corrected.

 * A handful of multi-word configuration variable names in
   documentation that are spelled in all lowercase have been corrected
   to use the more canonical camelCase.
   (merge 7dd0eaa39c dl/doc-config-camelcase later to maint).

 * "git push $there --delete ''" should have been diagnosed as an
   error, but instead turned into a matching push, which has been
   corrected.
   (merge 20e416409f jc/push-delete-nothing later to maint).

 * Test script modernization.
   (merge 488acf15df sv/t7001-modernize later to maint).

 * An under-allocation for the untracked cache data has been corrected.
   (merge 6347d649bc jh/untracked-cache-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge e3f5da7e60 sg/t7800-difftool-robustify later to maint).
   (merge 9d336655ba js/doc-proto-v2-response-end later to maint).
   (merge 1b5b8cf072 jc/maint-column-doc-typofix later to maint).
   (merge 3a837b58e3 cw/pack-config-doc later to maint).
   (merge 01168a9d89 ug/doc-commit-approxidate later to maint).
   (merge b865734760 js/params-vs-args later to maint).

----------------------------------------------------------------

Changes since v2.30.0 are as follows:

Abhishek Kumar (11):
      commit-graph: fix regression when computing Bloom filters
      revision: parse parent in indegree_walk_step()
      commit-graph: consolidate fill_commit_graph_info
      t6600-test-reach: generalize *_three_modes
      commit-graph: add a slab to store topological levels
      commit-graph: return 64-bit generation number
      commit-graph: implement corrected commit date
      commit-graph: implement generation data chunk
      commit-graph: use generation v2 only if entire chain does
      commit-reach: use corrected commit dates in paint_down_to_common()
      doc: add corrected commit date info

Adam Dinwoodie (1):
      t4129: fix setfacl-related permissions failure

Alex Henrie (1):
      rebase: add a config option for --no-fork-point

Andrew Klotz (1):
      config: improve error message for boolean config

Andrzej Hunt (1):
      commit-graph: avoid leaking topo_levels slab in write_commit_graph()

Antonio Russo (1):
      t6016: move to lib-log-graph.sh framework

Christian Couder (3):
      fetch-pack: rename helper to create_promisor_file()
      fetch-pack: refactor writing promisor file
      pack-write: die on error in write_promisor_file()

Christian Walther (1):
      doc: mention bigFileThreshold for packing

Daniel Levin (1):
      git-p4: fix syncing file types with pattern

Denton Liu (12):
      refs: factor out set_read_ref_cutoffs()
      refs: allow @{n} to work with n-sized reflog
      test-lib-functions.sh: fix usage for test_commit()
      t4203: stop losing return codes of git commands
      git-stash.txt: be explicit about subcommand options
      t3905: remove spaces after redirect operators
      t3905: move all commands into test cases
      t3905: remove nested git in command substitution
      t3905: replace test -s with test_file_not_empty
      t3905: use test_cmp() to check file contents
      stash: declare ref_stash as an array
      i18n.txt: camel case and monospace "i18n.commitEncoding"

Derrick Stolee (65):
      maintenance: extract platform-specific scheduling
      maintenance: include 'cron' details in docs
      pack-bitmap-write: fill bitmap with commit history
      bitmap: implement bitmap_is_subset()
      commit: implement commit_list_contains()
      t5310: add branch-based checks
      pack-bitmap-write: rename children to reverse_edges
      pack-bitmap-write: build fewer intermediate bitmaps
      pack-bitmap-write: use existing bitmaps
      pack-bitmap-write: relax unique revwalk condition
      pack-bitmap-write: better reuse bitmaps
      revision: trace topo-walk statistics
      tree-walk: report recursion counts
      unpack-trees: add trace2 regions
      cache-tree: use trace2 in cache_tree_update()
      maintenance: use launchctl on macOS
      maintenance: use Windows scheduled tasks
      for-each-repo: do nothing on empty config
      cache-tree: trace regions for I/O
      cache-tree: trace regions for prime_cache_tree
      index-format: use 'cache tree' over 'cached tree'
      index-format: update preamble to cache tree extension
      index-format: discuss recursion of cache-tree better
      cache-tree: speed up consecutive path comparisons
      maintenance: set log.excludeDecoration durin prefetch
      t7900: clean up some broken refs
      cache-tree: clean up cache_tree_update()
      cache-tree: simplify verify_cache() prototype
      cache-tree: extract subtree_pos()
      fsmonitor: de-duplicate BUG()s around dirty bits
      repository: add repo reference to index_state
      name-hash: use trace2 regions for init
      sparse-checkout: load sparse-checkout patterns
      test-lib: test_region looks for trace2 regions
      t1092: test interesting sparse-checkout scenarios
      commit-reach: reduce requirements for remove_redundant()
      commit-graph: use repo_parse_commit
      commit-graph: always parse before commit_graph_data_at()
      commit-graph: validate layers for generation data
      commit-graph: compute generations separately
      commit-graph: be extra careful about mixed generations
      commit-graph: prepare commit graph
      commit-graph: anonymize data in chunk_write_fn
      maintenance: add pack-refs task
      maintenance: incremental strategy runs pack-refs weekly
      chunk-format: create chunk format write API
      commit-graph: use chunk-format write API
      midx: rename pack_info to write_midx_context
      midx: use context in write_midx_pack_names()
      midx: add entries to write_midx_context
      midx: add pack_perm to write_midx_context
      midx: add num_large_offsets to write_midx_context
      midx: return success/failure in chunk write methods
      midx: drop chunk progress during write
      midx: use chunk-format API in write_midx_internal()
      chunk-format: create read chunk API
      commit-graph: use chunk-format read API
      midx: use chunk-format read API
      midx: use 64-bit multiplication for chunk sizes
      chunk-format: restore duplicate chunk checks
      chunk-format: add technical docs
      commit-reach: use one walk in remove_redundant()
      commit-reach: move compare_commits_by_gen
      commit-reach: use heuristic in remove_redundant()
      commit-reach: stale commits may prune generation further

Elijah Newren (92):
      t7012: add a testcase demonstrating stash apply bugs in sparse checkouts
      stash: remove unnecessary process forking
      stash: fix stash application in sparse-checkouts
      merge-ort: setup basic internal data structures
      merge-ort: add some high-level algorithm structure
      merge-ort: port merge_start() from merge-recursive
      merge-ort: use histogram diff
      merge-ort: add an err() function similar to one from merge-recursive
      merge-ort: implement a very basic collect_merge_info()
      merge-ort: avoid repeating fill_tree_descriptor() on the same tree
      merge-ort: compute a few more useful fields for collect_merge_info
      merge-ort: record stage and auxiliary info for every path
      merge-ort: avoid recursing into identical trees
      merge-ort: add a preliminary simple process_entries() implementation
      merge-ort: have process_entries operate in a defined order
      merge-ort: step 1 of tree writing -- record basenames, modes, and oids
      merge-ort: step 2 of tree writing -- function to create tree object
      merge-ort: step 3 of tree writing -- handling subdirectories as we go
      merge-ort: basic outline for merge_switch_to_result()
      merge-ort: add implementation of checkout()
      tree: enable cmp_cache_name_compare() to be used elsewhere
      merge-ort: add implementation of record_conflicted_index_entries()
      merge-ort: free data structures in merge_finalize()
      merge-ort: add a few includes
      merge-ort: add a clear_internal_opts helper
      merge-ort: add a path_conflict field to merge_options_internal
      merge-ort: add a paths_to_free field to merge_options_internal
      merge-ort: add function grouping comments
      merge-ort: add die-not-implemented stub handle_content_merge() function
      merge-ort: add modify/delete handling and delayed output processing
      merge-ort: add basic data structures for handling renames
      merge-ort: add initial outline for basic rename detection
      merge-ort: implement detect_regular_renames()
      merge-ort: implement compare_pairs() and collect_renames()
      merge-ort: add basic outline for process_renames()
      diffcore-rename: rename num_create to num_destinations
      diffcore-rename: avoid usage of global in too_many_rename_candidates()
      diffcore-rename: simplify limit check
      diffcore-rename: reduce jumpiness in progress counters
      t4058: add more tests and documentation for duplicate tree entry handling
      t4058: explore duplicate tree entry handling in a bit more detail
      diffcore-rename: simplify and accelerate register_rename_src()
      diffcore-rename: accelerate rename_dst setup
      merge-ort: add implementation of both sides renaming identically
      merge-ort: add implementation of both sides renaming differently
      merge-ort: add implementation of rename/delete conflicts
      merge-ort: add implementation of rename collisions
      merge-ort: add implementation of normal rename handling
      merge-ort: add implementation of type-changed rename handling
      commit: move reverse_commit_list() from merge-recursive
      merge-ort: copy a few small helper functions from merge-recursive.c
      merge-ort: make clear_internal_opts() aware of partial clearing
      merge-ort: implement merge_incore_recursive()
      merge-ort: handle D/F conflict where directory disappears due to merge
      merge-ort: handle directory/file conflicts that remain
      merge-ort: implement unique_path() helper
      merge-ort: handle book-keeping around two- and three-way content merge
      merge-ort: flesh out implementation of handle_content_merge()
      merge-ort: copy and adapt merge_3way() from merge-recursive.c
      merge-ort: copy and adapt merge_submodule() from merge-recursive.c
      merge-ort: implement format_commit()
      merge-ort: copy find_first_merges() implementation from merge-recursive.c
      merge-ort: add handling for different types of files at same path
      diffcore-rename: remove unnecessary duplicate entry checks
      merge-ort: add new data structures for directory rename detection
      merge-ort: initialize and free new directory rename data structures
      merge-ort: collect which directories are removed in dirs_removed
      merge-ort: add outline for computing directory renames
      merge-ort: add outline of get_provisional_directory_renames()
      merge-ort: copy get_renamed_dir_portion() from merge-recursive.c
      merge-ort: implement compute_rename_counts()
      merge-ort: implement handle_directory_level_conflicts()
      merge-ort: modify collect_renames() for directory rename handling
      merge-ort: implement compute_collisions()
      merge-ort: implement apply_dir_rename() and check_dir_renamed()
      merge-ort: implement check_for_directory_rename()
      merge-ort: implement handle_path_level_conflicts()
      merge-ort: add a new toplevel_dir field
      merge-ort: implement apply_directory_rename_modifications()
      merge-ort: process_renames() now needs more defensiveness
      merge-ort: fix a directory rename detection bug
      merge-ort: fix massive leak
      merge-ort: ignore the directory rename split conflict for now
      merge-ort: begin performance work; instrument with trace2_region_* calls
      diffcore-rename: no point trying to find a match better than exact
      diffcore-rename: filter rename_src list when possible
      t4001: add a test comparing basename similarity and content similarity
      diffcore-rename: compute basenames of source and dest candidates
      diffcore-rename: complete find_basename_matches()
      diffcore-rename: guide inexact rename detection based on basenames
      gitdiffcore doc: mention new preliminary step for rename detection
      merge-ort: call diffcore_rename() directly

Eric Sunshine (3):
      worktree: teach `repair` to fix multi-directional breakage
      t/perf: avoid unnecessary test_export() recursion
      maintenance: fix incorrect `maintenance.repo` path with bare repository

Eric Wong (2):
      core.abbrev=no disables abbreviations
      t1500: ensure current --since= behavior remains

Felipe Contreras (8):
      pull: refactor fast-forward check
      pull: give the advice for choosing rebase/merge much later
      pull: display default warning only when non-ff
      test: bisect-porcelain: fix location of files
      completion: bash: add __git_have_func helper
      completion: bash: improve function detection
      test: completion: add tests for __git_complete
      completion: add proper public __git_complete

Han-Wen Nienhuys (1):
      doc/reftable: document how to handle windows

Hariom Verma (4):
      t6300: use function to test trailer options
      pretty.c: refactor trailer logic to `format_set_trailers_options()`
      pretty.c: capture invalid trailer argument
      ref-filter: use pretty.c logic for trailers

Jacob Vosmaer (4):
      builtin/pack-objects.c: avoid iterating all refs
      ls-refs.c: initialize 'prefixes' before using it
      upload-pack.c: fix filter spec quoting bug
      t5544: clarify 'hook works with partial clone' test

Jeff Hostetler (11):
      p7519: do not rely on "xargs -d" in test
      p7519: fix watchman watch-list test on Windows
      p7519: move watchman cleanup earlier in the test
      p7519: add trace logging during perf test
      preload-index: log the number of lstat calls to trace2
      read-cache: log the number of lstat calls to trace2
      read-cache: log the number of scanned files to trace2
      fsmonitor: log invocation of FSMonitor hook to trace2
      fsmonitor: log FSMN token when reading and writing the index
      fsmonitor: refactor initialization of fsmonitor_last_update token
      dir: fix malloc of root untracked_cache_dir

Jeff King (43):
      pack-bitmap: fix header size check
      pack-bitmap: bounds-check size of cache extension
      t5310: drop size of truncated ewah bitmap
      rev-list: die when --test-bitmap detects a mismatch
      ewah: factor out bitmap growth
      ewah: make bitmap growth less aggressive
      ewah: implement bitmap_or()
      ewah: add bitmap_dup() function
      pack-bitmap-write: reimplement bitmap writing
      pack-bitmap-write: pass ownership of intermediate bitmaps
      pack-bitmap-write: ignore BITMAP_FLAG_REUSE
      git_connect_git(): forbid newlines in host and path
      fsck: reject .gitmodules git:// urls with newlines
      t5516: loosen "not our ref" error check
      patch-ids: handle duplicate hashmap entries
      quote: make sq_dequote_step() a public function
      for_each_object_in_pack(): clarify pack vs index ordering
      config: parse more robust format in GIT_CONFIG_PARAMETERS
      refs: switch peel_ref() to peel_iterated_oid()
      run-command: document use_shell option
      git-svn tests: rewrite brittle tests to use "--[no-]merges".
      git-compat-util: always enable variadic macros
      commit_graft_pos(): take an oid instead of a bare hash
      rerere: check dirname format while iterating rr_cache directory
      rerere: tighten rr-cache dirname check
      rerere: use strmap to store rerere directories
      hash_pos(): convert to oid_pos()
      oid_pos(): access table through const pointers
      t0000: keep clean-up tests together
      t0000: run prereq tests inside sub-test
      t0000: run cleaning test inside sub-test
      t0000: consistently use single quotes for outer tests
      pretty: lazy-load commit data when expanding user-format
      p5303: avoid sed GNU-ism
      completion: treat "branch -D" the same way as "branch -d"
      completion: handle other variants of "branch -m"
      doc/git-branch: fix awkward wording for "-c"
      t: add --no-tag option to test_commit
      mailmap: only look for .mailmap in work tree
      rev-list: add --disk-usage option for calculating disk usage
      docs/rev-list: add an examples section
      docs/rev-list: add some examples of --disk-usage
      doc: mention approxidates for git-commit --date

Jiang Xin (5):
      test: add helper functions for git-bundle
      bundle: lost objects when removing duplicate pendings
      bundle: arguments can be read from stdin
      t5411: use different out file to prevent overwriting
      t5411: refactor check of refs using test_cmp_refs

Joey Salazar (1):
      doc: fix naming of response-end-pkt

Johannes Schindelin (43):
      tests: mark tests relying on the current default for `init.defaultBranch`
      t0060: preemptively adjust alignment
      t[01]*: adjust the references to the default branch name "main"
      t2*: adjust the references to the default branch name "main"
      t3[0-3]*: adjust the references to the default branch name "main"
      t3416: preemptively adjust alignment in a comment
      t34*: adjust the references to the default branch name "main"
      t3[5-9]*: adjust the references to the default branch name "main"
      t4*: adjust the references to the default branch name "main"
      t5323: prepare centered comment for `master` -> `main`
      t5[0-4]*: adjust the references to the default branch name "main"
      t5503: prepare aligned comment for replacing `master` with `main`
      t550*: adjust the references to the default branch name "main"
      t551*: adjust the references to the default branch name "main"
      t55[23]*: adjust the references to the default branch name "main"
      t55[4-9]*: adjust the references to the default branch name "main"
      t5[6-9]*: adjust the references to the default branch name "main"
      t6[0-3]*: adjust the references to the default branch name "main"
      t64*: preemptively adjust alignment to prepare for `master` -> `main`
      t6[4-9]*: adjust the references to the default branch name "main"
      t7[0-4]*: adjust the references to the default branch name "main"
      t7[5-9]*: adjust the references to the default branch name "main"
      t8*: adjust the references to the default branch name "main"
      t9[0-4]*: adjust the references to the default branch name "main"
      t9[5-7]*: adjust the references to the default branch name "main"
      tests(git-p4): transition to the default branch name `main`
      t99*: adjust the references to the default branch name "main"
      tests: drop prereq `PREPARE_FOR_MAIN_BRANCH` where no longer needed
      SKIP_DASHED_BUILT_INS: respect `config.mak`
      range-diff/format-patch: refactor check for commit range
      rebase -i: do leave commit message intact in fixup! chains
      range-diff: avoid leaking memory in two error code paths
      range-diff: libify the read_patches() function again
      range-diff: simplify code spawning `git log`
      range-diff: combine all options in a single data structure
      range-diff: move the diffopt initialization down one layer
      range-diff: offer --left-only/--right-only options
      range-diff/format-patch: handle commit ranges other than A..B
      range-diff(docs): explain how to specify commit ranges
      t1450: robustify `remove_object()`
      fsck --name-objects: be more careful parsing generation numbers
      reflog expire --stale-fix: be generous about missing objects
      commit-graph: when incompatible with graphs, indicate why

Johannes Sixt (2):
      annotate-tests: quote variable expansions containing path names
      replace "parameters" by "arguments" in error messages

Jonathan Tan (9):
      Doc: clarify contents of packfile sent as URI
      ls-refs: report unborn targets of symrefs
      connect, transport: encapsulate arg in struct
      clone: respect remote unborn HEAD
      usage: trace2 BUG() invocations
      http: allow custom index-pack args
      http-fetch: allow custom index-pack args
      fetch-pack: with packfile URIs, use index-pack arg
      fetch-pack: print and use dangling .gitmodules

Junio C Hamano (29):
      pack-redundant: gauge the usage before proposing its removal
      pull: get rid of unnecessary global variable
      pull: correct condition to trigger non-ff advice
      CoC: explicitly take any whitespace breakage
      parse-options: format argh like error messages
      The first batch in 2.31 cycle
      SubmittingPatches: tighten wording on "sign-off" procedure
      ci/install-depends: attempt to fix "brew cask" stuff
      t4203: make blame output massaging more robust
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      Prepare for 2.30.1
      The sixth batch
      Git 2.30.1
      The seventh batch
      The eighth batch
      diff: --{rotate,skip}-to=<path>
      The ninth batch
      Documentation: typofix --column description
      The tenth batch
      push: do not turn --delete '' into a matching push
      blame-options.txt: camelcase blame.blankBoundary
      index-format doc: camelCase core.excludesFile
      Git 2.31-rc0
      Revert "commit-graph: when incompatible with graphs, indicate why"
      Hopefully the last batch before -rc1
      Git 2.31-rc1

Kevin Willford (1):
      fsmonitor: allow all entries for a folder to be invalidated

Martin von Zweigbergk (1):
      docs: clarify that refs/notes/ do not keep the attached objects alive

Martin Ågren (16):
      t1300: remove duplicate test for `--file ../foo`
      t1300: remove duplicate test for `--file no-such-file`
      t1300: don't needlessly work with `core.foo` configs
      pack-format.txt: document sizes at start of delta data
      object-name.c: rename from sha1-name.c
      object-file.c: rename from sha1-file.c
      sha1-lookup: rename `sha1_pos()` as `hash_pos()`
      hash-lookup: rename from sha1-lookup
      builtin/gc: don't peek into `struct lock_file`
      commit-graph: don't peek into `struct lock_file`
      midx: don't peek into `struct lock_file`
      refs/files-backend: don't peek into `struct lock_file`
      read-cache: try not to peek into `struct {lock_,temp}file`
      rev-list-options.txt: fix rendering of bonus paragraph
      git.txt: fix monospace rendering
      gitmailmap.txt: fix rendering of e-mail addresses

Matheus Tavares (8):
      t4129: don't fail if setgid is set in the test directory
      grep: error out if --untracked is used with --cached
      grep: honor sparse-checkout on working tree searches
      write_entry(): fix misuses of `path` in error messages
      checkout-index: omit entries with no tempname from --temp output
      add --chmod: don't update index when --dry-run is used
      add: mark --chmod error string for translation
      add: propagate --chmod errors to exit status

Mikhail Klyushin (1):
      git-gui: fix typo in russian locale

Neeraj Singh (1):
      read-cache: make the index write buffer size 128K

Patrick Steinhardt (11):
      git: add `--super-prefix` to usage string
      config: add new way to pass config via `--config-env`
      config: extract function to parse config pairs
      fetch: extract writing to FETCH_HEAD
      fetch: use strbuf to format FETCH_HEAD updates
      fetch: refactor `s_update_ref` to use common exit path
      fetch: allow passing a transaction to `s_update_ref()`
      fetch: implement support for atomic reference updates
      config: store "git -c" variables using more robust format
      environment: make `getenv_safe()` a public function
      config: allow specifying config entries via envvar pairs

Peter Kaestle (1):
      submodules: fix of regression on fetching of non-init subsub-repo

Phil Hord (1):
      use delete_refs when deleting tags or branches

Philippe Blain (4):
      gitmodules.txt: fix 'GIT_WORK_TREE' variable name
      mergetool--lib: fix '--tool-help' to correctly show available tools
      mailmap doc: use correct environment variable 'GIT_WORK_TREE'
      ci: do not cancel all jobs of a matrix if one fails

Pranit Bauva (7):
      bisect--helper: reimplement `bisect_log` shell function in C
      bisect--helper: reimplement `bisect_replay` shell function in C
      bisect--helper: retire `--bisect-write` subcommand
      bisect--helper: use `res` instead of return in BISECT_RESET case option
      bisect--helper: retire `--bisect-auto-next` subcommand
      bisect--helper: reimplement `bisect_skip` shell function in C
      bisect--helper: retire `--check-and-set-terms` subcommand

Pratyush Yadav (1):
      git-gui: remove lines starting with the comment character

Rafael Silva (8):
      worktree: libify should_prune_worktree()
      worktree: teach worktree to lazy-load "prunable" reason
      worktree: teach worktree_lock_reason() to gently handle main worktree
      t2402: ensure locked worktree is properly cleaned up
      worktree: teach `list --porcelain` to annotate locked worktree
      worktree: teach `list` to annotate prunable worktree
      worktree: teach `list` verbose mode
      blame: remove unnecessary use of get_commit_info()

René Scharfe (2):
      rebase: verify commit parameter
      cache-tree: use ce_namelen() instead of strlen()

SZEDER Gábor (2):
      t7800-difftool: don't accidentally match tmp dirs
      test-lib: prevent '--stress-jobs=X' from being ignored

Sangeeta Jain (1):
      diff: do not show submodule with untracked files as "-dirty"

Sergey Organov (32):
      revision: factor out parsing of diff-merge related options
      revision: factor out setup of diff-merge related settings
      revision: factor out initialization of diff-merge related settings
      revision: provide implementation for diff merges tweaks
      revision: move diff merges functions to its own diff-merges.c
      diff-merges: rename all functions to have common prefix
      diff-merges: move checks for first_parent_only out of the module
      diff-merges: rename diff_merges_default_to_enable() to match semantics
      diff-merges: re-arrange functions to match the order they are called in
      diff-merges: new function diff_merges_suppress()
      diff-merges: new function diff_merges_set_dense_combined_if_unset()
      diff-merges: introduce revs->first_parent_merges flag
      diff-merges: handle imply -p on -c/--cc logic for log.c
      diff-merges: revise revs->diff flag handling
      t4013: support test_expect_failure through ':failure' magic
      t4013: add tests for -m failing to override -c/--cc
      diff-merges: fix -m to properly override -c/--cc
      diff-merges: split 'ignore_merges' field
      diff-merges: group diff-merge flags next to each other inside 'rev_info'
      diff-merges: get rid of now empty diff_merges_init_revs()
      diff-merges: refactor opt settings into separate functions
      diff-merges: make -m/-c/--cc explicitly mutually exclusive
      diff-merges: implement new values for --diff-merges
      diff-merges: do not imply -p for new options
      diff-merges: let new options enable diff without -p
      diff-merges: add old mnemonic counterparts to --diff-merges
      diff-merges: add '--diff-merges=1' as synonym for 'first-parent'
      doc/git-log: describe new --diff-merges options
      doc/diff-generate-patch: mention new --diff-merges option
      doc/rev-list-options: document --first-parent changes merges format
      doc/git-show: include --diff-merges description
      t4013: add tests for --diff-merges=first-parent

Seth House (4):
      mergetool: add hideResolved configuration
      mergetool: break setup_tool out into separate initialization function
      mergetool: add per-tool support and overrides for the hideResolved flag
      mergetools/vimdiff: add vimdiff1 merge tool variant

Shubham Verma (10):
      t7001: modernize test formatting
      t7001: indent with TABs instead of spaces
      t7001: remove unnecessary blank lines
      t7001: modernize subshell formatting
      t7001: remove whitespace after redirect operators
      t7001: avoid using `cd` outside of subshells
      t7001: use '>' rather than 'touch'
      t7001: put each command on a separate line
      t7001: use here-docs instead of echo
      t7001: use `test` rather than `[`

Taylor Blau (40):
      ewah/ewah_bitmap.c: avoid open-coding ALLOC_GROW()
      pack-bitmap.c: check reads more aggressively when loading
      pack-bitmap: factor out 'bitmap_for_commit()'
      pack-bitmap: factor out 'add_commit_to_bitmap()'
      p7519: allow running without watchman prereq
      Documentation/git-clone.txt: document race with --local
      pack-revindex: introduce a new API
      write_reuse_object(): convert to new revindex API
      write_reused_pack_one(): convert to new revindex API
      write_reused_pack_verbatim(): convert to new revindex API
      check_object(): convert to new revindex API
      bitmap_position_packfile(): convert to new revindex API
      show_objects_for_type(): convert to new revindex API
      get_size_by_pos(): convert to new revindex API
      try_partial_reuse(): convert to new revindex API
      rebuild_existing_bitmaps(): convert to new revindex API
      get_delta_base_oid(): convert to new revindex API
      retry_bad_packed_offset(): convert to new revindex API
      packed_object_info(): convert to new revindex API
      unpack_entry(): convert to new revindex API
      for_each_object_in_pack(): convert to new revindex API
      builtin/gc.c: guess the size of the revindex
      pack-revindex: remove unused 'find_pack_revindex()'
      pack-revindex: remove unused 'find_revindex_position()'
      pack-revindex: hide the definition of 'revindex_entry'
      pack-revindex.c: avoid direct revindex access in 'offset_to_pack_pos()'
      refs: expose 'for_each_fullref_in_prefixes'
      ls-refs.c: traverse prefixes of disjoint "ref-prefix" sets
      packfile: prepare for the existence of '*.rev' files
      pack-write.c: prepare to write 'pack-*.rev' files
      builtin/index-pack.c: allow stripping arbitrary extensions
      builtin/index-pack.c: write reverse indexes
      builtin/pack-objects.c: respect 'pack.writeReverseIndex'
      Documentation/config/pack.txt: advertise 'pack.writeReverseIndex'
      t: prepare for GIT_TEST_WRITE_REV_INDEX
      t: support GIT_TEST_WRITE_REV_INDEX
      pack-revindex: ensure that on-disk reverse indexes are given precedence
      t5325: check both on-disk and in-memory reverse index
      .github/workflows/main.yml: run static-analysis on bionic
      commit-graph.c: display correct number of chunks when writing

Thomas Ackermann (7):
      doc: fix some typos
      doc hash-function-transition: fix asciidoc output
      doc hash-function-transition: use SHA-1 and SHA-256 consistently
      doc hash-function-transition: use upper case consistently
      doc hash-function-transition: fix incomplete sentence
      doc hash-function-transition: move rationale upwards
      doc: use https links

Torsten Bögershausen (1):
      MacOS: precompose_argv_prefix()

Utku Gultopu (1):
      doc: remove "directory cache" from man pages

Vasyl Vavrychuk (1):
      git-send-email.txt: mention less secure app access with Gmail

ZheNing Hu (5):
      builtin/*: update usage format
      ls_files.c: bugfix for --deleted and --modified
      ls_files.c: consolidate two for loops into one
      ls-files.c: add --deduplicate option
      difftool.c: learn a new way start at specified file

brian m. carlson (9):
      abspath: add a function to resolve paths with missing components
      rev-parse: add option for absolute or relative path formatting
      docs: rephrase and clarify the git status --short format
      ref-filter: switch some uses of unsigned long to size_t
      commit: ignore additional signatures when parsing signed commits
      gpg-interface: improve interface for parsing tags
      commit: allow parsing arbitrary buffers with headers
      ref-filter: hoist signature parsing
      gpg-interface: remove other signature headers before verifying

Ævar Arnfjörð Bjarmason (100):
      pretty format %(trailers) test: split a long line
      pretty format %(trailers) doc: avoid repetition
      pretty-format %(trailers): fix broken standalone "valueonly"
      pretty format %(trailers): add a "keyonly"
      pretty format %(trailers): add a "key_value_separator"
      mktag doc: say <hash> not <sha1>
      mktag doc: grammar fix, when exists -> when it exists
      CoC: Update word-wrapping to match upstream
      mktag doc: update to explain why to use this
      mktag tests: don't needlessly use a subshell
      mktag tests: use "test_commit" helper
      mktag tests: remove needless SHA-1 hardcoding
      mktag tests: don't redirect stderr to a file needlessly
      mktag tests: don't create "mytag" twice
      mktag tests: run "fsck" after creating "mytag"
      mktag tests: stress test whitespace handling
      mktag tests: test "hash-object" compatibility
      mktag tests: improve verify_object() test coverage
      mktag tests: test verify_object() with replaced objects
      mktag: use default strbuf_read() hint
      mktag: remove redundant braces in one-line body "if"
      mktag: use puts(str) instead of printf("%s\n", str)
      mktag: use fsck instead of custom verify_tag()
      fsck: make fsck_config() re-usable
      mktag: allow turning off fsck.extraHeaderEntry
      mktag: allow omitting the header/body \n separator
      mktag: convert to parse-options
      mktag: mark strings for translation
      mktag: add a --[no-]strict option
      branch: change "--local" to "--list" in comment
      branch tests: add to --sort tests
      ref-filter: add braces to if/else if/else chain
      ref-filter: move "cmp_fn" assignment into "else if" arm
      ref-filter: move ref_sorting flags to a bitfield
      branch: sort detached HEAD based on a flag
      branch: show "HEAD detached" first under reverse sort
      Makefile: remove a warning about old GETTEXT_POISON flag
      gettext.c: remove/reword a mostly-useless comment
      mailmap doc: create a new "gitmailmap(5)" man page
      mailmap doc: quote config variables `like.this`
      check-mailmap doc: note config options
      mailmap doc: start by mentioning the comment syntax
      mailmap tests: use our preferred whitespace syntax
      mailmap tests: modernize syntax & test idioms
      mailmap tests: improve --stdin tests
      mailmap tests: remove redundant entry in test
      mailmap tests: add a test for "not a blob" error
      mailmap tests: get rid of overly complex blame fuzzing
      mailmap: test for silent exiting on missing file/blob
      test-lib functions: expand "test_commit" comment template
      test-lib functions: document arguments to test_commit
      test-lib functions: add --author support to test_commit
      test-lib functions: add an --append option to test_commit
      tests: refactor a few tests to use "test_commit --append"
      mailmap doc + tests: add better examples & test them
      mailmap tests: add a test for comment syntax
      mailmap tests: add tests for whitespace syntax
      mailmap tests: add tests for empty "<>" syntax
      mailmap doc + tests: document and test for case-insensitivity
      shortlog: remove unused(?) "repo-abbrev" feature
      CoC: update to version 2.0 + local changes
      fsck doc: remove ancient out-of-date diagnostics
      ci: remove GETTEXT_POISON jobs
      tests: remove support for GIT_TEST_GETTEXT_POISON
      tests: remove uses of GIT_TEST_GETTEXT_POISON=false
      cache-tree tests: refactor for modern test style
      cache-tree tests: remove unused $2 parameter
      cache-tree tests: use a sub-shell with less indirection
      cache-tree tests: explicitly test HEAD and index differences
      git svn mergeinfo tests: modernize redirection & quoting style
      git svn mergeinfo tests: refactor "test -z" to use test_must_be_empty
      upload-pack tests: avoid a non-zero "grep" exit status
      archive tests: use a cheaper "zipinfo -h" invocation to get header
      rm tests: actually test for SIGPIPE in SIGPIPE test
      config.mak.uname: remove redundant NO_LIBPCRE1_JIT flag
      Remove support for v1 of the PCRE library
      grep/pcre2 tests: don't rely on invalid UTF-8 data test
      grep/pcre2: better support invalid UTF-8 haystacks
      grep/log: remove hidden --debug and --grep-debug options
      pager: refactor wait_for_pager() function
      pager: test for exit code with and without SIGPIPE
      run-command: add braces for "if" block in wait_or_whine()
      pager: properly log pager exit code when signalled
      test-lib: remove check_var_migration
      test lib: change "error" to "BUG" as appropriate
      test-lib-functions: move test_set_index_version() to its user
      test-lib-functions: remove generate_zero_bytes() wrapper
      test libs: rename bundle helper to "lib-bundle.sh"
      test libs: rename gitweb-lib.sh to lib-gitweb.sh
      test-lib-functions: move function to lib-bitmap.sh
      t/.gitattributes: sort lines
      tests: remove last uses of GIT_TEST_GETTEXT_POISON=false
      tests: remove most uses of C_LOCALE_OUTPUT
      tests: remove last uses of C_LOCALE_OUTPUT
      tests: remove most uses of test_i18ncmp
      diff: add an API for deferred freeing
      diff: plug memory leak from regcomp() on {log,diff} -I
      test libs: rename "diff-lib" to "lib-diff"
      test-lib-functions: remove bug-inducing "diagnostics" helper param
      test-lib-functions: assert correct parameter count


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.31.0-rc0
@ 2021-02-26  2:03  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-02-26  2:03 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

An early preview release Git v2.31.0-rc0 is now available for
testing at the usual places.  It is comprised of 568 non-merge
commits since v2.30.0, contributed by 58 people, 18 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.31.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.30.0 are as follows.
Welcome to the Git development community!

  Andreas Bühmann, Andrew Klotz, Andrzej Hunt, Antonio Russo,
  Arnaud Morin, Christian Walther, Clement Moyroud, Daniel Levin,
  Daniel Troger, Harold Kim, Jacob Vosmaer, LeSeulArtichaut,
  Sangeeta Jain, Seth House, Utku Gultopu, Vasyl Vavrychuk,
  Vojtěch Knyttl, and ZheNing Hu.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Abhishek Kumar, Adam Dinwoodie, Ævar Arnfjörð Bjarmason,
  Alex Henrie, brian m. carlson, Christian Couder, Denton Liu,
  Derrick Stolee, Elijah Newren, Eric Sunshine, Eric Wong,
  Felipe Contreras, Jeff King, Jiang Xin, Joey Salazar, Johannes
  Schindelin, Johannes Sixt, Jonathan Tan, Junio C Hamano, Kevin
  Daudt, Lars Schneider, Martin Ågren, Martin von Zweigbergk,
  Matheus Tavares, Michael Haggerty, Patrick Steinhardt, Paul
  Jolly, Peter Kaestle, Phil Hord, Philippe Blain, Phillip Wood,
  Pranit Bauva, Rafael Silva, René Scharfe, Ross Light, Sergey
  Organov, SZEDER Gábor, Taylor Blau, Thomas Ackermann, and
  Torsten Bögershausen.

[*] We are counting not just the authorship contribution but
    mention for issue reporting, testing and reviewing in the
    commits added during this cycle are all counted.

----------------------------------------------------------------

Git 2.31 Release Notes (draft)
==============================

Updates since v2.30
-------------------

Backward incompatible and other important changes

 * The "pack-redundant" command, which has been left stale with almost
   unusable performance issues, now warns loudly when it gets used, as
   we no longer want to recommend its use (instead just "repack -d"
   instead).

 * The development community has adopted Contributor Covenant v2.0 to
   update from v1.4 that we have been using.

 * The support for deprecated PCRE1 library has been dropped.


UI, Workflows & Features

 * The "--format=%(trailers)" mechanism gets enhanced to make it
   easier to design output for machine consumption.

 * When a user does not tell "git pull" to use rebase or merge, the
   command gives a loud message telling a user to choose between
   rebase or merge but creates a merge anyway, forcing users who would
   want to rebase to redo the operation.  Fix an early part of this
   problem by tightening the condition to give the message---there is
   no reason to stop or force the user to choose between rebase or
   merge if the history fast-forwards.

 * The configuration variable 'core.abbrev' can be set to 'no' to
   force no abbreviation regardless of the hash algorithm.

 * "git rev-parse" can be explicitly told to give output as absolute
   or relative path with the `--path-format=(absolute|relative)` option.

 * Bash completion (in contrib/) update to make it easier for
   end-users to add completion for their custom "git" subcommands.

 * "git maintenance" learned to drive scheduled maintenance on
   platforms whose native scheduling methods are not 'cron'.

 * After expiring a reflog and making a single commit, the reflog for
   the branch would record a single entry that knows both @{0} and
   @{1}, but we failed to answer "what commit were we on?", i.e. @{1}

 * "git bundle" learns "--stdin" option to read its refs from the
   standard input.  Also, it now does not lose refs whey they point
   at the same object.

 * "git log" learned a new "--diff-merges=<how>" option.

 * "git ls-files" can and does show multiple entries when the index is
   unmerged, which is a source for confusion unless -s/-u option is in
   use.  A new option --deduplicate has been introduced.

 * `git worktree list` now annotates worktrees as prunable, shows
   locked and prunable attributes in --porcelain mode, and gained
   a --verbose option.

 * "git clone" tries to locally check out the branch pointed at by
   HEAD of the remote repository after it is done, but the protocol
   did not convey the information necessary to do so when copying an
   empty repository.  The protocol v2 learned how to do so.

 * There are other ways than ".." for a single token to denote a
   "commit range", namely "<rev>^!" and "<rev>^-<n>", but "git
   range-diff" did not understand them.

 * The "git range-diff" command learned "--(left|right)-only" option
   to show only one side of the compared range.

 * "git mergetool" feeds three versions (base, local and remote) of
   a conflicted path unmodified.  The command learned to optionally
   prepare these files with unconflicted parts already resolved.

 * The .mailmap is documented to be read only from the root level of a
   working tree, but a stray file in a bare repository also was read
   by accident, which has been corrected.

 * "git maintenance" tool learned a new "pack-refs" maintenance task.

 * The error message given when a configuration variable that is
   expected to have a boolean value has been improved.

 * Signed commits and tags now allow verification of objects, whose
   two object names (one in SHA-1, the other in SHA-256) are both
   signed.

 * "git rev-list" command learned "--disk-usage" option.

 * "git {diff,log} --{skip,rotate}-to=<path>" allows the user to
   discard diff output for early paths or move them to the end of the
   output.

 * "git difftool" learned "--skip-to=<path>" option to restart an
   interrupted session from an arbitrary path.

 * "git grep" has been tweaked to be limited to the sparse checkout
   paths.

 * "git rebase --[no-]fork-point" gained a configuration variable
   rebase.forkPoint so that users do not have to keep specifying a
   non-default setting.


Performance, Internal Implementation, Development Support etc.

 * A 3-year old test that was not testing anything useful has been
   corrected.

 * Retire more names with "sha1" in it.

 * The topological walk codepath is covered by new trace2 stats.

 * Update the Code-of-conduct to version 2.0 from the upstream (we've
   been using version 1.4).

 * "git mktag" validates its input using its own rules before writing
   a tag object---it has been updated to share the logic with "git
   fsck".

 * Two new ways to feed configuration variable-value pairs via
   environment variables have been introduced, and the way
   GIT_CONFIG_PARAMETERS encodes variable/value pairs has been tweaked
   to make it more robust.

 * Tests have been updated so that they do not to get affected by the
   name of the default branch "git init" creates.

 * "git fetch" learns to treat ref updates atomically in all-or-none
   fashion, just like "git push" does, with the new "--atomic" option.

 * The peel_ref() API has been replaced with peel_iterated_oid().

 * The .use_shell flag in struct child_process that is passed to
   run_command() API has been clarified with a bit more documentation.

 * Document, clean-up and optimize the code around the cache-tree
   extension in the index.

 * The ls-refs protocol operation has been optimized to narrow the
   sub-hierarchy of refs/ it walks to produce response.

 * When removing many branches and tags, the code used to do so one
   ref at a time.  There is another API it can use to delete multiple
   refs, and it makes quite a lot of performance difference when the
   refs are packed.

 * The "pack-objects" command needs to iterate over all the tags when
   automatic tag following is enabled, but it actually iterated over
   all refs and then discarded everything outside "refs/tags/"
   hierarchy, which was quite wasteful.

 * A perf script was made more portable.

 * Our setting of GitHub CI test jobs were a bit too eager to give up
   once there is even one failure found.  Tweak the knob to allow
   other jobs keep running even when we see a failure, so that we can
   find more failures in a single run.

 * We've carried compatibility codepaths for compilers without
   variadic macros for quite some time, but the world may be ready for
   them to be removed.  Force compilation failure on exotic platforms
   where variadic macros are not available to find out who screams in
   such a way that we can easily revert if it turns out that the world
   is not yet ready.

 * Code clean-up to ensure our use of hashtables using object names as
   keys use the "struct object_id" objects, not the raw hash values.

 * Lose the debugging aid that may have been useful in the past, but
   no longer is, in the "grep" codepaths.

 * Some pretty-format specifiers do not need the data in commit object
   (e.g. "%H"), but we were over-eager to load and parse it, which has
   been made even lazier.

 * Get rid of "GETTEXT_POISON" support altogether, which may or may
   not be controversial.

 * Introduce an on-disk file to record revindex for packdata, which
   traditionally was always created on the fly and only in-core.

 * The commit-graph learned to use corrected commit dates instead of
   the generation number to help topological revision traversal.

 * Piecemeal of rewrite of "git bisect" in C continues.

 * When a pager spawned by us exited, the trace log did not record its
   exit status correctly, which has been corrected.

 * Removal of GIT_TEST_GETTEXT_POISON continues.

 * The code to implement "git merge-base --independent" was poorly
   done and was kept from the very beginning of the feature.


Fixes since v2.30
-----------------

 * Diagnose command line error of "git rebase" early.

 * Clean up option descriptions in "git cmd --help".

 * "git stash" did not work well in a sparsely checked out working
   tree.

 * Some tests expect that "ls -l" output has either '-' or 'x' for
   group executable bit, but setgid bit can be inherited from parent
   directory and make these fields 'S' or 's' instead, causing test
   failures.

 * "git for-each-repo --config=<var> <cmd>" should not run <cmd> for
   any repository when the configuration variable <var> is not defined
   even once.

 * Fix 2.29 regression where "git mergetool --tool-help" fails to list
   all the available tools.

 * Fix for procedure to building CI test environment for mac.

 * The implementation of "git branch --sort" wrt the detached HEAD
   display has always been hacky, which has been cleaned up.

 * Newline characters in the host and path part of git:// URL are
   now forbidden.

 * "git diff" showed a submodule working tree with untracked cruft as
   "Submodule commit <objectname>-dirty", but a natural expectation is
   that the "-dirty" indicator would align with "git describe --dirty",
   which does not consider having untracked files in the working tree
   as source of dirtiness.  The inconsistency has been fixed.

 * When more than one commit with the same patch ID appears on one
   side, "git log --cherry-pick A...B" did not exclude them all when a
   commit with the same patch ID appears on the other side.  Now it
   does.

 * Documentation for "git fsck" lost stale bits that has become
   incorrect.

 * Doc fix for packfile URI feature.

 * When "git rebase -i" processes "fixup" insn, there is no reason to
   clean up the commit log message, but we did the usual stripspace
   processing.  This has been corrected.
   (merge f7d42ceec5 js/rebase-i-commit-cleanup-fix later to maint).

 * Fix in passing custom args from "git clone" to "upload-pack" on the
   other side.
   (merge ad6b5fefbd jv/upload-pack-filter-spec-quotefix later to maint).

 * The command line completion (in contrib/) completed "git branch -d"
   with branch names, but "git branch -D" offered tagnames in addition,
   which has been corrected.  "git branch -M" had the same problem.
   (merge 27dc071b9a jk/complete-branch-force-delete later to maint).

 * When commands are started from a subdirectory, they may have to
   compare the path to the subdirectory (called prefix and found out
   from $(pwd)) with the tracked paths.  On macOS, $(pwd) and
   readdir() yield decomposed path, while the tracked paths are
   usually normalized to the precomposed form, causing mismatch.  This
   has been fixed by taking the same approach used to normalize the
   command line arguments.
   (merge 5c327502db tb/precompose-prefix-too later to maint).

 * Even though invocations of "die()" were logged to the trace2
   system, "BUG()"s were not, which has been corrected.
   (merge 0a9dde4a04 jt/trace2-BUG later to maint).

 * "git grep --untracked" is meant to be "let's ALSO find in these
   files on the filesystem" when looking for matches in the working
   tree files, and does not make any sense if the primary search is
   done against the index, or the tree objects.  The "--cached" and
   "--untracked" options have been marked as mutually incompatible.
   (merge 0c5d83b248 mt/grep-cached-untracked later to maint).

 * Fix "git fsck --name-objects" which apparently has not been used by
   anybody who is motivated enough to report breakage.
   (merge e89f89361c js/fsck-name-objects-fix later to maint).

 * Avoid individual tests in t5411 from getting affected by each other
   by forcing them to use separate output files during the test.
   (merge 822ee894f6 jx/t5411-unique-filenames later to maint).

 * Test to make sure "git rev-parse one-thing one-thing" gives
   the same thing twice (when one-thing is --since=X).
   (merge a5cdca4520 ew/rev-parse-since-test later to maint).

 * When certain features (e.g. grafts) used in the repository are
   incompatible with the use of the commit-graph, we used to silently
   turned commit-graph off; we now tell the user what we are doing.
   (merge c85eec7fc3 js/commit-graph-warning later to maint).

 * Objects that lost references can be pruned away, even when they
   have notes attached to it (and these notes will become dangling,
   which in turn can be pruned with "git notes prune").  This has been
   clarified in the documentation.
   (merge fa9ab027ba mz/doc-notes-are-not-anchors later to maint).

 * The error codepath around the "--temp/--prefix" feature of "git
   checkout-index" has been improved.
   (merge 3f7ba60350 mt/checkout-index-corner-cases later to maint).

 * The "git maintenance register" command had trouble registering bare
   repositories, which had been corrected.

 * A handful of multi-word configuration variable names in
   documentation that are spelled in all lowercase have been corrected
   to use the more canonical camelCase.
   (merge 7dd0eaa39c dl/doc-config-camelcase later to maint).

 * "git push $there --delete ''" should have been diagnosed as an
   error, but instead turned into a matching push, which has been
   corrected.
   (merge 20e416409f jc/push-delete-nothing later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge e3f5da7e60 sg/t7800-difftool-robustify later to maint).
   (merge 9d336655ba js/doc-proto-v2-response-end later to maint).
   (merge 1b5b8cf072 jc/maint-column-doc-typofix later to maint).
   (merge 3a837b58e3 cw/pack-config-doc later to maint).
   (merge 01168a9d89 ug/doc-commit-approxidate later to maint).
   (merge b865734760 js/params-vs-args later to maint).

----------------------------------------------------------------

Changes since v2.30.0 are as follows:

Abhishek Kumar (11):
      commit-graph: fix regression when computing Bloom filters
      revision: parse parent in indegree_walk_step()
      commit-graph: consolidate fill_commit_graph_info
      t6600-test-reach: generalize *_three_modes
      commit-graph: add a slab to store topological levels
      commit-graph: return 64-bit generation number
      commit-graph: implement corrected commit date
      commit-graph: implement generation data chunk
      commit-graph: use generation v2 only if entire chain does
      commit-reach: use corrected commit dates in paint_down_to_common()
      doc: add corrected commit date info

Adam Dinwoodie (1):
      t4129: fix setfacl-related permissions failure

Alex Henrie (1):
      rebase: add a config option for --no-fork-point

Andrew Klotz (1):
      config: improve error message for boolean config

Andrzej Hunt (1):
      commit-graph: avoid leaking topo_levels slab in write_commit_graph()

Antonio Russo (1):
      t6016: move to lib-log-graph.sh framework

Christian Couder (3):
      fetch-pack: rename helper to create_promisor_file()
      fetch-pack: refactor writing promisor file
      pack-write: die on error in write_promisor_file()

Christian Walther (1):
      doc: mention bigFileThreshold for packing

Daniel Levin (1):
      git-p4: fix syncing file types with pattern

Denton Liu (12):
      refs: factor out set_read_ref_cutoffs()
      refs: allow @{n} to work with n-sized reflog
      test-lib-functions.sh: fix usage for test_commit()
      t4203: stop losing return codes of git commands
      git-stash.txt: be explicit about subcommand options
      t3905: remove spaces after redirect operators
      t3905: move all commands into test cases
      t3905: remove nested git in command substitution
      t3905: replace test -s with test_file_not_empty
      t3905: use test_cmp() to check file contents
      stash: declare ref_stash as an array
      i18n.txt: camel case and monospace "i18n.commitEncoding"

Derrick Stolee (48):
      maintenance: extract platform-specific scheduling
      maintenance: include 'cron' details in docs
      pack-bitmap-write: fill bitmap with commit history
      bitmap: implement bitmap_is_subset()
      commit: implement commit_list_contains()
      t5310: add branch-based checks
      pack-bitmap-write: rename children to reverse_edges
      pack-bitmap-write: build fewer intermediate bitmaps
      pack-bitmap-write: use existing bitmaps
      pack-bitmap-write: relax unique revwalk condition
      pack-bitmap-write: better reuse bitmaps
      revision: trace topo-walk statistics
      tree-walk: report recursion counts
      unpack-trees: add trace2 regions
      cache-tree: use trace2 in cache_tree_update()
      maintenance: use launchctl on macOS
      maintenance: use Windows scheduled tasks
      for-each-repo: do nothing on empty config
      cache-tree: trace regions for I/O
      cache-tree: trace regions for prime_cache_tree
      index-format: use 'cache tree' over 'cached tree'
      index-format: update preamble to cache tree extension
      index-format: discuss recursion of cache-tree better
      cache-tree: speed up consecutive path comparisons
      maintenance: set log.excludeDecoration durin prefetch
      t7900: clean up some broken refs
      cache-tree: clean up cache_tree_update()
      cache-tree: simplify verify_cache() prototype
      cache-tree: extract subtree_pos()
      fsmonitor: de-duplicate BUG()s around dirty bits
      repository: add repo reference to index_state
      name-hash: use trace2 regions for init
      sparse-checkout: load sparse-checkout patterns
      test-lib: test_region looks for trace2 regions
      t1092: test interesting sparse-checkout scenarios
      commit-reach: reduce requirements for remove_redundant()
      commit-graph: use repo_parse_commit
      commit-graph: always parse before commit_graph_data_at()
      commit-graph: validate layers for generation data
      commit-graph: compute generations separately
      commit-graph: be extra careful about mixed generations
      commit-graph: prepare commit graph
      maintenance: add pack-refs task
      maintenance: incremental strategy runs pack-refs weekly
      commit-reach: use one walk in remove_redundant()
      commit-reach: move compare_commits_by_gen
      commit-reach: use heuristic in remove_redundant()
      commit-reach: stale commits may prune generation further

Elijah Newren (84):
      t7012: add a testcase demonstrating stash apply bugs in sparse checkouts
      stash: remove unnecessary process forking
      stash: fix stash application in sparse-checkouts
      merge-ort: setup basic internal data structures
      merge-ort: add some high-level algorithm structure
      merge-ort: port merge_start() from merge-recursive
      merge-ort: use histogram diff
      merge-ort: add an err() function similar to one from merge-recursive
      merge-ort: implement a very basic collect_merge_info()
      merge-ort: avoid repeating fill_tree_descriptor() on the same tree
      merge-ort: compute a few more useful fields for collect_merge_info
      merge-ort: record stage and auxiliary info for every path
      merge-ort: avoid recursing into identical trees
      merge-ort: add a preliminary simple process_entries() implementation
      merge-ort: have process_entries operate in a defined order
      merge-ort: step 1 of tree writing -- record basenames, modes, and oids
      merge-ort: step 2 of tree writing -- function to create tree object
      merge-ort: step 3 of tree writing -- handling subdirectories as we go
      merge-ort: basic outline for merge_switch_to_result()
      merge-ort: add implementation of checkout()
      tree: enable cmp_cache_name_compare() to be used elsewhere
      merge-ort: add implementation of record_conflicted_index_entries()
      merge-ort: free data structures in merge_finalize()
      merge-ort: add a few includes
      merge-ort: add a clear_internal_opts helper
      merge-ort: add a path_conflict field to merge_options_internal
      merge-ort: add a paths_to_free field to merge_options_internal
      merge-ort: add function grouping comments
      merge-ort: add die-not-implemented stub handle_content_merge() function
      merge-ort: add modify/delete handling and delayed output processing
      merge-ort: add basic data structures for handling renames
      merge-ort: add initial outline for basic rename detection
      merge-ort: implement detect_regular_renames()
      merge-ort: implement compare_pairs() and collect_renames()
      merge-ort: add basic outline for process_renames()
      diffcore-rename: rename num_create to num_destinations
      diffcore-rename: avoid usage of global in too_many_rename_candidates()
      diffcore-rename: simplify limit check
      diffcore-rename: reduce jumpiness in progress counters
      t4058: add more tests and documentation for duplicate tree entry handling
      t4058: explore duplicate tree entry handling in a bit more detail
      diffcore-rename: simplify and accelerate register_rename_src()
      diffcore-rename: accelerate rename_dst setup
      merge-ort: add implementation of both sides renaming identically
      merge-ort: add implementation of both sides renaming differently
      merge-ort: add implementation of rename/delete conflicts
      merge-ort: add implementation of rename collisions
      merge-ort: add implementation of normal rename handling
      merge-ort: add implementation of type-changed rename handling
      commit: move reverse_commit_list() from merge-recursive
      merge-ort: copy a few small helper functions from merge-recursive.c
      merge-ort: make clear_internal_opts() aware of partial clearing
      merge-ort: implement merge_incore_recursive()
      merge-ort: handle D/F conflict where directory disappears due to merge
      merge-ort: handle directory/file conflicts that remain
      merge-ort: implement unique_path() helper
      merge-ort: handle book-keeping around two- and three-way content merge
      merge-ort: flesh out implementation of handle_content_merge()
      merge-ort: copy and adapt merge_3way() from merge-recursive.c
      merge-ort: copy and adapt merge_submodule() from merge-recursive.c
      merge-ort: implement format_commit()
      merge-ort: copy find_first_merges() implementation from merge-recursive.c
      merge-ort: add handling for different types of files at same path
      diffcore-rename: remove unnecessary duplicate entry checks
      merge-ort: add new data structures for directory rename detection
      merge-ort: initialize and free new directory rename data structures
      merge-ort: collect which directories are removed in dirs_removed
      merge-ort: add outline for computing directory renames
      merge-ort: add outline of get_provisional_directory_renames()
      merge-ort: copy get_renamed_dir_portion() from merge-recursive.c
      merge-ort: implement compute_rename_counts()
      merge-ort: implement handle_directory_level_conflicts()
      merge-ort: modify collect_renames() for directory rename handling
      merge-ort: implement compute_collisions()
      merge-ort: implement apply_dir_rename() and check_dir_renamed()
      merge-ort: implement check_for_directory_rename()
      merge-ort: implement handle_path_level_conflicts()
      merge-ort: add a new toplevel_dir field
      merge-ort: implement apply_directory_rename_modifications()
      merge-ort: process_renames() now needs more defensiveness
      merge-ort: fix a directory rename detection bug
      merge-ort: fix massive leak
      merge-ort: ignore the directory rename split conflict for now
      merge-ort: begin performance work; instrument with trace2_region_* calls

Eric Sunshine (3):
      worktree: teach `repair` to fix multi-directional breakage
      t/perf: avoid unnecessary test_export() recursion
      maintenance: fix incorrect `maintenance.repo` path with bare repository

Eric Wong (2):
      core.abbrev=no disables abbreviations
      t1500: ensure current --since= behavior remains

Felipe Contreras (8):
      pull: refactor fast-forward check
      pull: give the advice for choosing rebase/merge much later
      pull: display default warning only when non-ff
      test: bisect-porcelain: fix location of files
      completion: bash: add __git_have_func helper
      completion: bash: improve function detection
      test: completion: add tests for __git_complete
      completion: add proper public __git_complete

Jacob Vosmaer (4):
      builtin/pack-objects.c: avoid iterating all refs
      ls-refs.c: initialize 'prefixes' before using it
      upload-pack.c: fix filter spec quoting bug
      t5544: clarify 'hook works with partial clone' test

Jeff King (43):
      pack-bitmap: fix header size check
      pack-bitmap: bounds-check size of cache extension
      t5310: drop size of truncated ewah bitmap
      rev-list: die when --test-bitmap detects a mismatch
      ewah: factor out bitmap growth
      ewah: make bitmap growth less aggressive
      ewah: implement bitmap_or()
      ewah: add bitmap_dup() function
      pack-bitmap-write: reimplement bitmap writing
      pack-bitmap-write: pass ownership of intermediate bitmaps
      pack-bitmap-write: ignore BITMAP_FLAG_REUSE
      git_connect_git(): forbid newlines in host and path
      fsck: reject .gitmodules git:// urls with newlines
      t5516: loosen "not our ref" error check
      patch-ids: handle duplicate hashmap entries
      quote: make sq_dequote_step() a public function
      for_each_object_in_pack(): clarify pack vs index ordering
      config: parse more robust format in GIT_CONFIG_PARAMETERS
      refs: switch peel_ref() to peel_iterated_oid()
      run-command: document use_shell option
      git-svn tests: rewrite brittle tests to use "--[no-]merges".
      git-compat-util: always enable variadic macros
      commit_graft_pos(): take an oid instead of a bare hash
      rerere: check dirname format while iterating rr_cache directory
      rerere: tighten rr-cache dirname check
      rerere: use strmap to store rerere directories
      hash_pos(): convert to oid_pos()
      oid_pos(): access table through const pointers
      t0000: keep clean-up tests together
      t0000: run prereq tests inside sub-test
      t0000: run cleaning test inside sub-test
      t0000: consistently use single quotes for outer tests
      pretty: lazy-load commit data when expanding user-format
      p5303: avoid sed GNU-ism
      completion: treat "branch -D" the same way as "branch -d"
      completion: handle other variants of "branch -m"
      doc/git-branch: fix awkward wording for "-c"
      t: add --no-tag option to test_commit
      mailmap: only look for .mailmap in work tree
      rev-list: add --disk-usage option for calculating disk usage
      docs/rev-list: add an examples section
      docs/rev-list: add some examples of --disk-usage
      doc: mention approxidates for git-commit --date

Jiang Xin (5):
      test: add helper functions for git-bundle
      bundle: lost objects when removing duplicate pendings
      bundle: arguments can be read from stdin
      t5411: use different out file to prevent overwriting
      t5411: refactor check of refs using test_cmp_refs

Joey Salazar (1):
      doc: fix naming of response-end-pkt

Johannes Schindelin (43):
      tests: mark tests relying on the current default for `init.defaultBranch`
      t0060: preemptively adjust alignment
      t[01]*: adjust the references to the default branch name "main"
      t2*: adjust the references to the default branch name "main"
      t3[0-3]*: adjust the references to the default branch name "main"
      t3416: preemptively adjust alignment in a comment
      t34*: adjust the references to the default branch name "main"
      t3[5-9]*: adjust the references to the default branch name "main"
      t4*: adjust the references to the default branch name "main"
      t5323: prepare centered comment for `master` -> `main`
      t5[0-4]*: adjust the references to the default branch name "main"
      t5503: prepare aligned comment for replacing `master` with `main`
      t550*: adjust the references to the default branch name "main"
      t551*: adjust the references to the default branch name "main"
      t55[23]*: adjust the references to the default branch name "main"
      t55[4-9]*: adjust the references to the default branch name "main"
      t5[6-9]*: adjust the references to the default branch name "main"
      t6[0-3]*: adjust the references to the default branch name "main"
      t64*: preemptively adjust alignment to prepare for `master` -> `main`
      t6[4-9]*: adjust the references to the default branch name "main"
      t7[0-4]*: adjust the references to the default branch name "main"
      t7[5-9]*: adjust the references to the default branch name "main"
      t8*: adjust the references to the default branch name "main"
      t9[0-4]*: adjust the references to the default branch name "main"
      t9[5-7]*: adjust the references to the default branch name "main"
      tests(git-p4): transition to the default branch name `main`
      t99*: adjust the references to the default branch name "main"
      tests: drop prereq `PREPARE_FOR_MAIN_BRANCH` where no longer needed
      SKIP_DASHED_BUILT_INS: respect `config.mak`
      range-diff/format-patch: refactor check for commit range
      rebase -i: do leave commit message intact in fixup! chains
      range-diff: avoid leaking memory in two error code paths
      range-diff: libify the read_patches() function again
      range-diff: simplify code spawning `git log`
      range-diff: combine all options in a single data structure
      range-diff: move the diffopt initialization down one layer
      range-diff: offer --left-only/--right-only options
      range-diff/format-patch: handle commit ranges other than A..B
      range-diff(docs): explain how to specify commit ranges
      t1450: robustify `remove_object()`
      fsck --name-objects: be more careful parsing generation numbers
      reflog expire --stale-fix: be generous about missing objects
      commit-graph: when incompatible with graphs, indicate why

Johannes Sixt (2):
      annotate-tests: quote variable expansions containing path names
      replace "parameters" by "arguments" in error messages

Jonathan Tan (5):
      Doc: clarify contents of packfile sent as URI
      ls-refs: report unborn targets of symrefs
      connect, transport: encapsulate arg in struct
      clone: respect remote unborn HEAD
      usage: trace2 BUG() invocations

Junio C Hamano (26):
      pack-redundant: gauge the usage before proposing its removal
      pull: get rid of unnecessary global variable
      pull: correct condition to trigger non-ff advice
      CoC: explicitly take any whitespace breakage
      parse-options: format argh like error messages
      The first batch in 2.31 cycle
      SubmittingPatches: tighten wording on "sign-off" procedure
      ci/install-depends: attempt to fix "brew cask" stuff
      t4203: make blame output massaging more robust
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      Prepare for 2.30.1
      The sixth batch
      Git 2.30.1
      The seventh batch
      The eighth batch
      diff: --{rotate,skip}-to=<path>
      The ninth batch
      Documentation: typofix --column description
      The tenth batch
      push: do not turn --delete '' into a matching push
      blame-options.txt: camelcase blame.blankBoundary
      index-format doc: camelCase core.excludesFile
      Git 2.31-rc0

Martin von Zweigbergk (1):
      docs: clarify that refs/notes/ do not keep the attached objects alive

Martin Ågren (16):
      t1300: remove duplicate test for `--file ../foo`
      t1300: remove duplicate test for `--file no-such-file`
      t1300: don't needlessly work with `core.foo` configs
      pack-format.txt: document sizes at start of delta data
      object-name.c: rename from sha1-name.c
      object-file.c: rename from sha1-file.c
      sha1-lookup: rename `sha1_pos()` as `hash_pos()`
      hash-lookup: rename from sha1-lookup
      builtin/gc: don't peek into `struct lock_file`
      commit-graph: don't peek into `struct lock_file`
      midx: don't peek into `struct lock_file`
      refs/files-backend: don't peek into `struct lock_file`
      read-cache: try not to peek into `struct {lock_,temp}file`
      rev-list-options.txt: fix rendering of bonus paragraph
      git.txt: fix monospace rendering
      gitmailmap.txt: fix rendering of e-mail addresses

Matheus Tavares (8):
      t4129: don't fail if setgid is set in the test directory
      grep: error out if --untracked is used with --cached
      grep: honor sparse-checkout on working tree searches
      write_entry(): fix misuses of `path` in error messages
      checkout-index: omit entries with no tempname from --temp output
      add --chmod: don't update index when --dry-run is used
      add: mark --chmod error string for translation
      add: propagate --chmod errors to exit status

Patrick Steinhardt (11):
      git: add `--super-prefix` to usage string
      config: add new way to pass config via `--config-env`
      config: extract function to parse config pairs
      fetch: extract writing to FETCH_HEAD
      fetch: use strbuf to format FETCH_HEAD updates
      fetch: refactor `s_update_ref` to use common exit path
      fetch: allow passing a transaction to `s_update_ref()`
      fetch: implement support for atomic reference updates
      config: store "git -c" variables using more robust format
      environment: make `getenv_safe()` a public function
      config: allow specifying config entries via envvar pairs

Peter Kaestle (1):
      submodules: fix of regression on fetching of non-init subsub-repo

Phil Hord (1):
      use delete_refs when deleting tags or branches

Philippe Blain (4):
      gitmodules.txt: fix 'GIT_WORK_TREE' variable name
      mergetool--lib: fix '--tool-help' to correctly show available tools
      mailmap doc: use correct environment variable 'GIT_WORK_TREE'
      ci: do not cancel all jobs of a matrix if one fails

Pranit Bauva (7):
      bisect--helper: reimplement `bisect_log` shell function in C
      bisect--helper: reimplement `bisect_replay` shell function in C
      bisect--helper: retire `--bisect-write` subcommand
      bisect--helper: use `res` instead of return in BISECT_RESET case option
      bisect--helper: retire `--bisect-auto-next` subcommand
      bisect--helper: reimplement `bisect_skip` shell function in C
      bisect--helper: retire `--check-and-set-terms` subcommand

Rafael Silva (8):
      worktree: libify should_prune_worktree()
      worktree: teach worktree to lazy-load "prunable" reason
      worktree: teach worktree_lock_reason() to gently handle main worktree
      t2402: ensure locked worktree is properly cleaned up
      worktree: teach `list --porcelain` to annotate locked worktree
      worktree: teach `list` to annotate prunable worktree
      worktree: teach `list` verbose mode
      blame: remove unnecessary use of get_commit_info()

René Scharfe (2):
      rebase: verify commit parameter
      cache-tree: use ce_namelen() instead of strlen()

SZEDER Gábor (2):
      t7800-difftool: don't accidentally match tmp dirs
      test-lib: prevent '--stress-jobs=X' from being ignored

Sangeeta Jain (1):
      diff: do not show submodule with untracked files as "-dirty"

Sergey Organov (32):
      revision: factor out parsing of diff-merge related options
      revision: factor out setup of diff-merge related settings
      revision: factor out initialization of diff-merge related settings
      revision: provide implementation for diff merges tweaks
      revision: move diff merges functions to its own diff-merges.c
      diff-merges: rename all functions to have common prefix
      diff-merges: move checks for first_parent_only out of the module
      diff-merges: rename diff_merges_default_to_enable() to match semantics
      diff-merges: re-arrange functions to match the order they are called in
      diff-merges: new function diff_merges_suppress()
      diff-merges: new function diff_merges_set_dense_combined_if_unset()
      diff-merges: introduce revs->first_parent_merges flag
      diff-merges: handle imply -p on -c/--cc logic for log.c
      diff-merges: revise revs->diff flag handling
      t4013: support test_expect_failure through ':failure' magic
      t4013: add tests for -m failing to override -c/--cc
      diff-merges: fix -m to properly override -c/--cc
      diff-merges: split 'ignore_merges' field
      diff-merges: group diff-merge flags next to each other inside 'rev_info'
      diff-merges: get rid of now empty diff_merges_init_revs()
      diff-merges: refactor opt settings into separate functions
      diff-merges: make -m/-c/--cc explicitly mutually exclusive
      diff-merges: implement new values for --diff-merges
      diff-merges: do not imply -p for new options
      diff-merges: let new options enable diff without -p
      diff-merges: add old mnemonic counterparts to --diff-merges
      diff-merges: add '--diff-merges=1' as synonym for 'first-parent'
      doc/git-log: describe new --diff-merges options
      doc/diff-generate-patch: mention new --diff-merges option
      doc/rev-list-options: document --first-parent changes merges format
      doc/git-show: include --diff-merges description
      t4013: add tests for --diff-merges=first-parent

Seth House (4):
      mergetool: add hideResolved configuration
      mergetool: break setup_tool out into separate initialization function
      mergetool: add per-tool support and overrides for the hideResolved flag
      mergetools/vimdiff: add vimdiff1 merge tool variant

Taylor Blau (39):
      ewah/ewah_bitmap.c: avoid open-coding ALLOC_GROW()
      pack-bitmap.c: check reads more aggressively when loading
      pack-bitmap: factor out 'bitmap_for_commit()'
      pack-bitmap: factor out 'add_commit_to_bitmap()'
      p7519: allow running without watchman prereq
      Documentation/git-clone.txt: document race with --local
      pack-revindex: introduce a new API
      write_reuse_object(): convert to new revindex API
      write_reused_pack_one(): convert to new revindex API
      write_reused_pack_verbatim(): convert to new revindex API
      check_object(): convert to new revindex API
      bitmap_position_packfile(): convert to new revindex API
      show_objects_for_type(): convert to new revindex API
      get_size_by_pos(): convert to new revindex API
      try_partial_reuse(): convert to new revindex API
      rebuild_existing_bitmaps(): convert to new revindex API
      get_delta_base_oid(): convert to new revindex API
      retry_bad_packed_offset(): convert to new revindex API
      packed_object_info(): convert to new revindex API
      unpack_entry(): convert to new revindex API
      for_each_object_in_pack(): convert to new revindex API
      builtin/gc.c: guess the size of the revindex
      pack-revindex: remove unused 'find_pack_revindex()'
      pack-revindex: remove unused 'find_revindex_position()'
      pack-revindex: hide the definition of 'revindex_entry'
      pack-revindex.c: avoid direct revindex access in 'offset_to_pack_pos()'
      refs: expose 'for_each_fullref_in_prefixes'
      ls-refs.c: traverse prefixes of disjoint "ref-prefix" sets
      packfile: prepare for the existence of '*.rev' files
      pack-write.c: prepare to write 'pack-*.rev' files
      builtin/index-pack.c: allow stripping arbitrary extensions
      builtin/index-pack.c: write reverse indexes
      builtin/pack-objects.c: respect 'pack.writeReverseIndex'
      Documentation/config/pack.txt: advertise 'pack.writeReverseIndex'
      t: prepare for GIT_TEST_WRITE_REV_INDEX
      t: support GIT_TEST_WRITE_REV_INDEX
      pack-revindex: ensure that on-disk reverse indexes are given precedence
      t5325: check both on-disk and in-memory reverse index
      .github/workflows/main.yml: run static-analysis on bionic

Thomas Ackermann (7):
      doc: fix some typos
      doc hash-function-transition: fix asciidoc output
      doc hash-function-transition: use SHA-1 and SHA-256 consistently
      doc hash-function-transition: use upper case consistently
      doc hash-function-transition: fix incomplete sentence
      doc hash-function-transition: move rationale upwards
      doc: use https links

Torsten Bögershausen (1):
      MacOS: precompose_argv_prefix()

Utku Gultopu (1):
      doc: remove "directory cache" from man pages

Vasyl Vavrychuk (1):
      git-send-email.txt: mention less secure app access with Gmail

ZheNing Hu (5):
      builtin/*: update usage format
      ls_files.c: bugfix for --deleted and --modified
      ls_files.c: consolidate two for loops into one
      ls-files.c: add --deduplicate option
      difftool.c: learn a new way start at specified file

brian m. carlson (9):
      abspath: add a function to resolve paths with missing components
      rev-parse: add option for absolute or relative path formatting
      docs: rephrase and clarify the git status --short format
      ref-filter: switch some uses of unsigned long to size_t
      commit: ignore additional signatures when parsing signed commits
      gpg-interface: improve interface for parsing tags
      commit: allow parsing arbitrary buffers with headers
      ref-filter: hoist signature parsing
      gpg-interface: remove other signature headers before verifying

Ævar Arnfjörð Bjarmason (100):
      pretty format %(trailers) test: split a long line
      pretty format %(trailers) doc: avoid repetition
      pretty-format %(trailers): fix broken standalone "valueonly"
      pretty format %(trailers): add a "keyonly"
      pretty format %(trailers): add a "key_value_separator"
      mktag doc: say <hash> not <sha1>
      mktag doc: grammar fix, when exists -> when it exists
      CoC: Update word-wrapping to match upstream
      mktag doc: update to explain why to use this
      mktag tests: don't needlessly use a subshell
      mktag tests: use "test_commit" helper
      mktag tests: remove needless SHA-1 hardcoding
      mktag tests: don't redirect stderr to a file needlessly
      mktag tests: don't create "mytag" twice
      mktag tests: run "fsck" after creating "mytag"
      mktag tests: stress test whitespace handling
      mktag tests: test "hash-object" compatibility
      mktag tests: improve verify_object() test coverage
      mktag tests: test verify_object() with replaced objects
      mktag: use default strbuf_read() hint
      mktag: remove redundant braces in one-line body "if"
      mktag: use puts(str) instead of printf("%s\n", str)
      mktag: use fsck instead of custom verify_tag()
      fsck: make fsck_config() re-usable
      mktag: allow turning off fsck.extraHeaderEntry
      mktag: allow omitting the header/body \n separator
      mktag: convert to parse-options
      mktag: mark strings for translation
      mktag: add a --[no-]strict option
      branch: change "--local" to "--list" in comment
      branch tests: add to --sort tests
      ref-filter: add braces to if/else if/else chain
      ref-filter: move "cmp_fn" assignment into "else if" arm
      ref-filter: move ref_sorting flags to a bitfield
      branch: sort detached HEAD based on a flag
      branch: show "HEAD detached" first under reverse sort
      Makefile: remove a warning about old GETTEXT_POISON flag
      gettext.c: remove/reword a mostly-useless comment
      mailmap doc: create a new "gitmailmap(5)" man page
      mailmap doc: quote config variables `like.this`
      check-mailmap doc: note config options
      mailmap doc: start by mentioning the comment syntax
      mailmap tests: use our preferred whitespace syntax
      mailmap tests: modernize syntax & test idioms
      mailmap tests: improve --stdin tests
      mailmap tests: remove redundant entry in test
      mailmap tests: add a test for "not a blob" error
      mailmap tests: get rid of overly complex blame fuzzing
      mailmap: test for silent exiting on missing file/blob
      test-lib functions: expand "test_commit" comment template
      test-lib functions: document arguments to test_commit
      test-lib functions: add --author support to test_commit
      test-lib functions: add an --append option to test_commit
      tests: refactor a few tests to use "test_commit --append"
      mailmap doc + tests: add better examples & test them
      mailmap tests: add a test for comment syntax
      mailmap tests: add tests for whitespace syntax
      mailmap tests: add tests for empty "<>" syntax
      mailmap doc + tests: document and test for case-insensitivity
      shortlog: remove unused(?) "repo-abbrev" feature
      CoC: update to version 2.0 + local changes
      fsck doc: remove ancient out-of-date diagnostics
      ci: remove GETTEXT_POISON jobs
      tests: remove support for GIT_TEST_GETTEXT_POISON
      tests: remove uses of GIT_TEST_GETTEXT_POISON=false
      cache-tree tests: refactor for modern test style
      cache-tree tests: remove unused $2 parameter
      cache-tree tests: use a sub-shell with less indirection
      cache-tree tests: explicitly test HEAD and index differences
      git svn mergeinfo tests: modernize redirection & quoting style
      git svn mergeinfo tests: refactor "test -z" to use test_must_be_empty
      upload-pack tests: avoid a non-zero "grep" exit status
      archive tests: use a cheaper "zipinfo -h" invocation to get header
      rm tests: actually test for SIGPIPE in SIGPIPE test
      config.mak.uname: remove redundant NO_LIBPCRE1_JIT flag
      Remove support for v1 of the PCRE library
      grep/pcre2 tests: don't rely on invalid UTF-8 data test
      grep/pcre2: better support invalid UTF-8 haystacks
      grep/log: remove hidden --debug and --grep-debug options
      pager: refactor wait_for_pager() function
      pager: test for exit code with and without SIGPIPE
      run-command: add braces for "if" block in wait_or_whine()
      pager: properly log pager exit code when signalled
      test-lib: remove check_var_migration
      test lib: change "error" to "BUG" as appropriate
      test-lib-functions: move test_set_index_version() to its user
      test-lib-functions: remove generate_zero_bytes() wrapper
      test libs: rename bundle helper to "lib-bundle.sh"
      test libs: rename gitweb-lib.sh to lib-gitweb.sh
      test-lib-functions: move function to lib-bitmap.sh
      t/.gitattributes: sort lines
      tests: remove last uses of GIT_TEST_GETTEXT_POISON=false
      tests: remove most uses of C_LOCALE_OUTPUT
      tests: remove last uses of C_LOCALE_OUTPUT
      tests: remove most uses of test_i18ncmp
      diff: add an API for deferred freeing
      diff: plug memory leak from regcomp() on {log,diff} -I
      test libs: rename "diff-lib" to "lib-diff"
      test-lib-functions: remove bug-inducing "diagnostics" helper param
      test-lib-functions: assert correct parameter count


^ permalink raw reply	[relevance 2%]

* [PATCH v3 0/7] teach `worktree list` verbose mode and prunable annotations
  2021-01-19 21:27  2%   ` [PATCH v3 0/7] " Rafael Silva
@ 2021-01-27  8:03  2%     ` Rafael Silva
  0 siblings, 0 replies; 162+ results
From: Rafael Silva @ 2021-01-27  8:03 UTC (permalink / raw)
  To: git; +Cc: Eric Sunshine, Phillip Wood, Junio C Hamano, Rafael Silva

In c57b3367be (worktree: teach `list` to annotate locked worktree,
2020-10-11) we taught `git worktree list` to annotate working trees that
is locked by appending "locked" text in order to signalize to the user
that a working tree is locked.  During the review, there was some
discussion about additional annotations and information that `list`
command could provide to the user that has long been envisioned and
mentioned in [2], [3] and [4].

This patch series addresses some of these changes by teaching
`worktree list` to show "prunable" annotation, adding verbose mode and
extending the --porcelain format with prunable and locked annotation as
follow up from [1]. Additionally, it addresses one shortcoming for porcelain
format to escape any newline characters (LF or CRLF) and quote the lock
reason to prevent breaking the format that is mentioned in [4] and [1] during
the review cycle.

This patch series includes:

1. The first patch moves the should_prune_worktree() machinery to the top-level
   worktree.c exposing the function as general API, that will be reference
   by should_prune_worktree() wrapper implemented on the second patch.

   The original idea was to not only move should_prune_worktree() but also
   refactor to accept a "struct worktree" and load the information directly,
   which allows simplify the `prune` command by reusing get_worktrees().
   However this seems to also require refactoring get_worktrees() itself
   to return "non-valid" working trees that can/should be pruned. This is
   also mentioned in [5]. Having the wrapper function makes it easier to add
   the prunable annotation without touching the get_worktrees() and the
   other worktree sub commands. The refactoring can be addressed in a
   future patch, if this turns out to be good idea. One possible approach
   is to teach get_worktrees() to take additional flags that will tell
   whether to return only valid or all worktrees in GIT_DIR/worktrees/
   directory and address its own possible shortcoming.

2. Introduces the worktree_prune_reason() to discovery whether a worktree
   is prunable along with two new fields in the `worktree` structure. The
   function mimics the workree_lock_reason() API.

3. The third patch changes worktree_lock_reason() to be more gentle for
   the main working tree to simply returning NULL instead of aborting the
   program via assert() macro. This allow us to simplify the code that
   checks if the working tree is locked for default and porcelain format.
   This changes is also mentioned in [6].

4. Fix t2402 added in [1] to ensure the locked worktree is properly cleaned up.

5. The fourth patch adds the "locked" attribute for the porcelain format
   in order to make both default and --porcelain format consistent.

6. The fifth patch introduces "prunable" annotation for both default
   and --porcelain format.

7. The sixth patch introduces verbose mode to expand the `list` default
   format and show each annotation reason when its available.

Series is built on top of 66e871b664 (The third batch, 2021-01-15).

[1] https://lore.kernel.org/git/20200928154953.30396-1-rafaeloliveira.cs@gmail.com/
[2] https://lore.kernel.org/git/CAPig+cQF6V8HNdMX5AZbmz3_w2WhSfA4SFfNhQqxXBqPXTZL+w@mail.gmail.com/
[3] https://lore.kernel.org/git/CAPig+cSGXqJuaZPhUhOVX5X=LMrjVfv8ye_6ncMUbyKox1i7QA@mail.gmail.com/
[4] https://lore.kernel.org/git/CAPig+cTitWCs5vB=0iXuUyEY22c0gvjXvY1ZtTT90s74ydhE=A@mail.gmail.com/
[5] https://lore.kernel.org/git/CACsJy8ChM99n6skQCv-GmFiod19mnwwH4j-6R+cfZSiVFAxjgA@mail.gmail.com/
[6] https://lore.kernel.org/git/xmqq8sctlgzx.fsf@gitster.c.googlers.com/

Changes in v4
=============

Thanks Eric Sunshine and Phillip Wood for the review and suggestions.

 * Added documentation to explain that the lock reason is quoted with
   the same rules as described for `core.quotePath`.

 * The `worktree unlock` issued in the test cleanup is splitted and
   executed after each `worktree lock` to ensure the unlock is only
   done after we know each locked command was successful.  

 * Fix a couple of grammos in the [4/7] commit message.

Changes in v3
=============

v3 is 1-patch bigger than v2 and it includes the changes:

 * Dropped CQUOTE_NODQ flag in the the locked reason to return a string
   enclosed with double quotes if the text reason contains especial
   characters, like newlines.

 * fix in t2402 to ensure the locked worktree is properly cleaned up,
   is move to its own patch.

 * In worktree_prune_reason(), the `path` variable is initialize
   with NULL to make the code easier to follow.

 * The removal of `is_main_worktree()` before `worktree_lock_reason()`
   is moved to the patch that actually changes the API to be more gentle
   with the main worktree instead of refactoring the code in the next
   patches that adds the annotations.

 * Drop the `*reason` in `(reason && *reason)` as we know that
   worktree_prune_reason() is either going to return a non-empty string
   or NULL which makes the code easier to follow.

 * The --verbose test for the locked annotation now tests that "locked"
   annotation stays on the same line when there is no locked reason.

 * Small documentation updates and make the "git worktree --verbose"
   example a little consistent with the worktree path.

Changes in v2
=============

v2 changes considerably from v1 taking into account several comments
suggested by Eric Sunshine and Phillip Wood (thanks guys for the
insightful comments and patience reviewing my patches :) ).

 * The biggest change are the way the series is organized. In v1 all the
   code was implemented in the fourth patch, all the tests and documentation
   updates was added in sixth and seventh patch respectfully, in v2 each
   patch introduces the annotations and verbose mode together with theirs
   respective test and documentation updates.

 * Several rewrite of the commit messages

 * In v1 the fifth patch was introducing a new function to escape newline
   characters for the "locked" attribute. However, we already have this
   feature from the quote.h API. So the new function is dropped and the
   changes are squashed into v2's fourth patch.

 * The new prunable annotation and locked annotation that was introduced
   by [1] was refactor to not poke around the worktree private fields.

 * Refactoring of the worktree_prune_reason() to cache the prune_reason
   and refactor to early return the use cases following the more common
   pattern used on Git's codebase.

 * Few documentation rewrites, most notably the `--verbose` and `--expire`
   doc sentences for the list command are moved to its own line to clearly
   separate the description from the others commands instead of continuing 
   on the same paragraph.

 * The `git unlock <worktree>` used in the test's cleanup is moved to after
   we know the `git worktree locked` is executed successfully. This ensures
   the unlock doesn't error in the cleanup stage which will make it harder
   to debug the tests.

Rafael Silva (7):
  worktree: libify should_prune_worktree()
  worktree: teach worktree to lazy-load "prunable" reason
  worktree: teach worktree_lock_reason() to gently handle main worktree
  t2402: ensure locked worktree is properly cleaned up
  worktree: teach `list --porcelain` to annotate locked worktree
  worktree: teach `list` to annotate prunable worktree
  worktree: teach `list` verbose mode

 Documentation/git-worktree.txt |  74 ++++++++++++++++++++--
 builtin/worktree.c             | 110 +++++++++++----------------------
 t/t2402-worktree-list.sh       |  96 ++++++++++++++++++++++++++++
 worktree.c                     |  91 ++++++++++++++++++++++++++-
 worktree.h                     |  23 +++++++
 5 files changed, 314 insertions(+), 80 deletions(-)

Range-diff against v3:
1:  fc4252c129 = 1:  66cd83ba42 worktree: libify should_prune_worktree()
2:  664d84155b = 2:  81f4824028 worktree: teach worktree to lazy-load "prunable" reason
3:  cf334da2f0 = 3:  c62ecf60d6 worktree: teach worktree_lock_reason() to gently handle main worktree
4:  ecb11793d9 ! 4:  d2ea467927 t2402: ensure locked worktree is properly cleaned up
    @@ Metadata
      ## Commit message ##
         t2402: ensure locked worktree is properly cleaned up
     
    -    In c57b3367be (worktree: teach `list` to annotate locked worktree,
    +    c57b3367be (worktree: teach `list` to annotate locked worktree,
         2020-10-11) introduced a new test to ensure locked worktrees are listed
         with "locked" annotation. However, the test does not clean up after
         itself as "git worktree prune" is not going to remove the locked worktree
         in the first place. This not only leaves the test in an unclean state it
    -    also potentially breaks following tests that relies on the
    +    also potentially breaks following tests that rely on the
         "git worktree list" output.
     
         Let's fix that by unlocking the worktree before the "prune" command.
5:  1fb68562f6 ! 5:  1b7661a0b3 worktree: teach `list --porcelain` to annotate locked worktree
    @@ Commit message
         with its value depending whether the value is available or not. Thus
         documenting the case of the new "locked" attribute.
     
    +    Helped-by: Phillip Wood <phillip.wood@dunelm.org.uk>
         Helped-by: Eric Sunshine <sunshine@sunshineco.com>
         Signed-off-by: Rafael Silva <rafaeloliveira.cs@gmail.com>
     
    @@ Documentation/git-worktree.txt: worktree /path/to/other-linked-worktree
     +branch refs/heads/locked-with-reason
     +locked reason why is locked
     +
    ++------------
    ++
    ++If the lock reason contains "unusual" characters such as newline, they
    ++are escaped and the entire reason is quoted as explained for the
    ++configuration variable `core.quotePath` (see linkgit:git-config[1]).
    ++For Example:
    ++
    ++------------
    ++$ git worktree list --porcelain
    ++...
    ++locked "reason\nwhy is locked"
    ++...
      ------------
      
      EXAMPLES
    @@ t/t2402-worktree-list.sh: test_expect_success '"list" all worktrees with locked
     +	# unlocked worktree should not be annotated with "locked"
     +	git worktree add --detach unlocked &&
     +	git worktree lock locked1 &&
    ++	test_when_finished "git worktree unlock locked1" &&
     +	git worktree lock locked2 --reason "with reason" &&
    -+	test_when_finished "git worktree unlock locked1 && git worktree unlock locked2" &&
    ++	test_when_finished "git worktree unlock locked2" &&
     +	git worktree list --porcelain >out &&
     +	grep "^locked" out >actual &&
     +	test_cmp expect actual
    @@ t/t2402-worktree-list.sh: test_expect_success '"list" all worktrees with locked
     +	git worktree add --detach locked_lf &&
     +	git worktree add --detach locked_crlf &&
     +	git worktree lock locked_lf --reason "$(printf "locked\nreason")" &&
    ++	test_when_finished "git worktree unlock locked_lf" &&
     +	git worktree lock locked_crlf --reason "$(printf "locked\r\nreason")" &&
    -+	test_when_finished "git worktree unlock locked_lf && git worktree unlock locked_crlf" &&
    ++	test_when_finished "git worktree unlock locked_crlf" &&
     +	git worktree list --porcelain >out &&
     +	grep "^locked" out >actual &&
     +	test_cmp expect actual
6:  834584f826 = 6:  c29ad7ffb1 worktree: teach `list` to annotate prunable worktree
7:  35ad456fbb ! 7:  7938950d04 worktree: teach `list` verbose mode
    @@ t/t2402-worktree-list.sh: test_expect_success '"list" all worktrees with prunabl
     +	git worktree add locked1 --detach &&
     +	git worktree add locked2 --detach &&
     +	git worktree lock locked1 &&
    ++	test_when_finished "git worktree unlock locked1" &&
     +	git worktree lock locked2 --reason "with reason" &&
    -+	test_when_finished "git worktree unlock locked1 && git worktree unlock locked2" &&
    ++	test_when_finished "git worktree unlock locked2" &&
     +	echo "$(git -C locked2 rev-parse --show-toplevel) $(git rev-parse --short HEAD) (detached HEAD)" >expect &&
     +	printf "\tlocked: with reason\n" >>expect &&
     +	git worktree list --verbose >out &&
-- 
2.30.0.373.geade8fefe8


^ permalink raw reply	[relevance 2%]

* [PATCH v3 0/7] teach `worktree list` verbose mode and prunable annotations
  2021-01-17 23:42  2% ` [PATCH v2 0/6] " Rafael Silva
@ 2021-01-19 21:27  2%   ` Rafael Silva
  2021-01-27  8:03  2%     ` Rafael Silva
  0 siblings, 1 reply; 162+ results
From: Rafael Silva @ 2021-01-19 21:27 UTC (permalink / raw)
  To: git; +Cc: Eric Sunshine, Phillip Wood, Rafael Silva

In c57b3367be (worktree: teach `list` to annotate locked worktree,
2020-10-11) we taught `git worktree list` to annotate working tree that
is locked by appending "locked" text in order to signalize to the user
that a working tree is locked.  During the review, there was some
discussion about additional annotations and information that `list`
command could provide to the user that has long been envisioned and
mentioned in [2], [3] and [4].

This patch series addresses some of these changes by teaching
`worktree list` to show "prunable" annotation, adding verbose mode and
extending the --porcelain format with prunable and locked annotation as
follow up from [1]. Additionally, it addresses one shortcoming for porcelain
format to escape any newline characters (LF or CRLF) for the lock reason
to prevent breaking the format that is mentioned in [4] and [1] during the
review cycle.

The patch series is organizes as:

1. The first patch moves the should_prune_worktree() machinery to the top-level
   worktree.c exposing the function as general API, that will be reference
   by should_prune_worktree() wrapper implemented on the second patch.

   The original idea was to not only move should_prune_worktree() but also
   refactor to accept a "struct worktree" and load the information directly,
   which allows simplify the `prune` command by reusing get_worktrees().
   However this seems to also require refactoring get_worktrees() itself
   to return "non-valid" working trees that can/should be pruned. This is
   also mentioned in [5]. Having the wrapper function makes it easier to add
   the prunable annotation without touching the get_worktrees() and the
   other worktree sub commands. The refactoring can be addressed in a
   future patch, if this turns out to be good idea. One possible approach
   is to teach get_worktrees() to take additional flags that will tell
   whether to return only valid or all worktrees in GIT_DIR/worktrees/
   directory and address its own possible shortcoming.

2. Introduces the worktree_prune_reason() to discovery whether a worktree
   is prunable along with two new fields in the `worktree` structure. The
   function mimics the workree_lock_reason() API.

3. The third patch changes worktree_lock_reason() to be more gentle for
   the main working tree to simply returning NULL instead of aborting the
   program via assert() macro. This allow us to simplify the code that
   checks if the working tree is locked for default and porcelain format.
   This changes is also mentioned in [6].

4. Fix t2402 added in [1] to ensure the locked worktree is properly cleaned up.

5. The fourth patch adds the "locked" attribute for the porcelain format
   in order to make both default and --porcelain format consistent.

6. The fifth patch introduces "prunable" annotation for both default
   and --porcelain format.

7. The sixth patch introduces verbose mode to expand the `list` default
   format and show each annotation reason when its available.

Series is built on top of 66e871b664 (The third batch, 2021-01-15).

[1] https://lore.kernel.org/git/20200928154953.30396-1-rafaeloliveira.cs@gmail.com/
[2] https://lore.kernel.org/git/CAPig+cQF6V8HNdMX5AZbmz3_w2WhSfA4SFfNhQqxXBqPXTZL+w@mail.gmail.com/
[3] https://lore.kernel.org/git/CAPig+cSGXqJuaZPhUhOVX5X=LMrjVfv8ye_6ncMUbyKox1i7QA@mail.gmail.com/
[4] https://lore.kernel.org/git/CAPig+cTitWCs5vB=0iXuUyEY22c0gvjXvY1ZtTT90s74ydhE=A@mail.gmail.com/
[5] https://lore.kernel.org/git/CACsJy8ChM99n6skQCv-GmFiod19mnwwH4j-6R+cfZSiVFAxjgA@mail.gmail.com/
[6] https://lore.kernel.org/git/xmqq8sctlgzx.fsf@gitster.c.googlers.com/

Changes in v3
=============

v3 is 1-patch bigger than v2 and it includes the following changes:

 * Dropped CQUOTE_NODQ flag in the the locked reason to return a string
   enclosed with double quotes if the text reason contains especial
   characters, like newlines.

 * fix in t2402 to ensure the locked worktree is properly cleaned up,
   is move to its own patch.

 * In worktree_prune_reason(), the `path` variable is initialize
   with NULL to make the code easier to follow.

 * The removal of `is_main_worktree()` before `worktree_lock_reason()`
   is moved to the patch that actually changes the API to be more gentle
   with the main worktree instead of refactoring the code in the next
   patches that adds the annotations.

 * Drop the `*reason` in `(reason && *reason)` as we know that
   worktree_prune_reason() is either going to return a non-empty string
   or NULL which makes the code easier to follow.

 * The --verbose test for the locked annotation now tests that "locked"
   annotation stays on the same line when there is no locked reason.

 * Small documentation updates and make the "git worktree --verbose"
   example a little consistent with the worktree path.

Changes in v2
=============

v2 changes considerably from v1 taking into account several comments
suggested by Eric Sunshine and Phillip Wood (thanks guys for the
insightful comments and patience reviewing my patches :) ).

 * The biggest change are the way the series is organized. In v1 all the
   code was implemented in the fourth patch, all the tests and documentation
   updates was added in sixth and seventh patch respectfully, in v2 each
   patch introduces the annotations and verbose mode together with theirs
   respective test and documentation updates.

 * Several rewrite of the commit messages

 * In v1 the fifth patch was introducing a new function to escape newline
   characters for the "locked" attribute. However, we already have this
   feature from the quote.h API. So the new function is dropped and the
   changes are squashed into v2's fourth patch.

 * The new prunable annotation and locked annotation that was introduced
   by [1] was refactor to not poke around the worktree private fields.

 * Refactoring of the worktree_prune_reason() to cache the prune_reason
   and refactor to early return the use cases following the more common
   pattern used on Git's codebase.

 * Few documentation rewrites, most notably the `--verbose` and `--expire`
   doc sentences for the list command are moved to its own line to clearly
   separate the description from the others commands instead of continuing 
   on the same paragraph.

 * The `git unlock <worktree>` used in the test's cleanup is moved to after
   we know the `git worktree locked` is executed successfully. This ensures
   the unlock doesn't error in the cleanup stage which will make it harder
   to debug the tests.

Rafael Silva (7):
  worktree: libify should_prune_worktree()
  worktree: teach worktree to lazy-load "prunable" reason
  worktree: teach worktree_lock_reason() to gently handle main worktree
  t2402: ensure locked worktree is properly cleaned up
  worktree: teach `list --porcelain` to annotate locked worktree
  worktree: teach `list` to annotate prunable worktree
  worktree: teach `list` verbose mode

 Documentation/git-worktree.txt |  62 +++++++++++++++++--
 builtin/worktree.c             | 110 +++++++++++----------------------
 builtin/worktree.cc            |   0
 t/t2402-worktree-list.sh       |  93 ++++++++++++++++++++++++++++
 worktree.c                     |  91 ++++++++++++++++++++++++++-
 worktree.h                     |  23 +++++++
 6 files changed, 299 insertions(+), 80 deletions(-)
 create mode 100644 builtin/worktree.cc

Range-diff against v2:
-:  ---------- > 1:  66cd83ba42 worktree: libify should_prune_worktree()
1:  9d47fcb4a4 ! 2:  81f4824028 worktree: teach worktree to lazy-load "prunable" reason
    @@ worktree.c: const char *worktree_lock_reason(struct worktree *wt)
     +const char *worktree_prune_reason(struct worktree *wt, timestamp_t expire)
     +{
     +	struct strbuf reason = STRBUF_INIT;
    -+	char *path;
    ++	char *path = NULL;
     +
     +	if (is_main_worktree(wt))
     +		return NULL;
2:  ac7c375bac ! 3:  d0dbf0b709 worktree: teach worktree_lock_reason() to gently handle main worktree
    @@ Commit message
     
         worktree_lock_reason() aborts with an assertion failure when called on
         the main worktree since locking the main worktree is nonsensical. Not
    -    only is this behaviour undocumented, thus callers might not even be aware
    +    only is this behavior undocumented, thus callers might not even be aware
         that the call could potentially crash the program, but it also forces
         clients to be extra careful:
     
    @@ Commit message
                 ...
     
         Since we know that locking makes no sense in the context of the main
    -    worktree, we can simpliy return false for the main worktree, thus making
    +    worktree, we can simply return false for the main worktree, thus making
         client code less complex by eliminating the need for the callers to have
         inside knowledge about the implementation:
     
    @@ Commit message
         Helped-by: Eric Sunshine <sunshine@sunshineco.com>
         Signed-off-by: Rafael Silva <rafaeloliveira.cs@gmail.com>
     
    + ## builtin/worktree.c ##
    +@@ builtin/worktree.c: static void show_worktree(struct worktree *wt, int path_maxlen, int abbrev_len)
    + 			strbuf_addstr(&sb, "(error)");
    + 	}
    + 
    +-	if (!is_main_worktree(wt) && worktree_lock_reason(wt))
    ++	if (worktree_lock_reason(wt))
    + 		strbuf_addstr(&sb, " locked");
    + 
    + 	printf("%s\n", sb.buf);
    +
      ## worktree.c ##
     @@ worktree.c: int is_main_worktree(const struct worktree *wt)
      
-:  ---------- > 4:  c6f8a3e9cd t2402: ensure locked worktree is properly cleaned up
3:  ec1eb5a9f8 ! 5:  86c5253288 worktree: teach `list --porcelain` to annotate locked worktree
    @@ Commit message
             locked reason why it is locked
             ...
     
    -    The locked reason is quoted to prevent newline characters (i.e: LF or
    -    CRLF) breaking the --porcelain format as each attribute is shown per
    -    line. For example:
    +    In porcelain mode, if the lock reason contains special characters
    +    such as newlines, they are escaped with backslashes and the entire
    +    reason is enclosed in double quotes. For example:
     
            $ git worktree list --porcelain
            ...
    -       locked worktree's path mounted in\nremovable device
    +       locked "worktree's path mounted in\nremovable device"
            ...
     
         Furthermore, let's update the documentation to state that some
    @@ Commit message
         with its value depending whether the value is available or not. Thus
         documenting the case of the new "locked" attribute.
     
    -    Additionally, c57b3367be (worktree: teach `list` to annotate locked
    -    worktree, 2020-10-11) introduced a new test to ensure locked worktrees
    -    are listed with "locked" annotation. However, the test does not clean up
    -    after itself as "git worktree prune" is not going to remove the locked
    -    worktree in the first place. This not only leaves the test in an unclean
    -    state it also potentially breaks following tests that relies on the
    -    "git worktree list" output. Let's fix that by unlocking the worktree
    -    before the "prune" command.
    -
         Helped-by: Eric Sunshine <sunshine@sunshineco.com>
         Signed-off-by: Rafael Silva <rafaeloliveira.cs@gmail.com>
     
    @@ Documentation/git-worktree.txt: Porcelain Format
     -if the value is true.  The first attribute of a working tree is always
     -`worktree`, an empty line indicates the end of the record.  For example:
     +if the value is true.  Some attributes (like `locked`) can be listed as a label
    -+only or with a value depending whether a reason is available.  The first
    ++only or with a value depending upon whether a reason is available.  The first
     +attribute of a working tree is always `worktree`, an empty line indicates the
     +end of the record.  For example:
      
    @@ Documentation/git-worktree.txt: worktree /path/to/other-linked-worktree
      HEAD 1234abc1234abc1234abc1234abc1234abc1234a
      detached
      
    -+worktree /path/to/linked-worktree-locked
    ++worktree /path/to/linked-worktree-locked-no-reason
     +HEAD 5678abc5678abc5678abc5678abc5678abc5678c
    -+branch refs/heads/locked
    ++branch refs/heads/locked-no-reason
     +locked
     +
     +worktree /path/to/linked-worktree-locked-with-reason
    @@ builtin/worktree.c: static void show_worktree_porcelain(struct worktree *wt)
     +	reason = worktree_lock_reason(wt);
     +	if (reason && *reason) {
     +		struct strbuf sb = STRBUF_INIT;
    -+		quote_c_style(reason, &sb, NULL, CQUOTE_NODQ);
    ++		quote_c_style(reason, &sb, NULL, 0);
     +		printf("locked %s\n", sb.buf);
     +		strbuf_release(&sb);
     +	} else if (reason)
    @@ builtin/worktree.c: static void show_worktree_porcelain(struct worktree *wt)
     
      ## t/t2402-worktree-list.sh ##
     @@ t/t2402-worktree-list.sh: test_expect_success '"list" all worktrees with locked annotation' '
    - 	git worktree add --detach locked master &&
    - 	git worktree add --detach unlocked master &&
    - 	git worktree lock locked &&
    -+	test_when_finished "git worktree unlock locked" &&
    - 	git worktree list >out &&
    - 	grep "/locked  *[0-9a-f].* locked$" out &&
      	! grep "/unlocked  *[0-9a-f].* locked$" out
      '
      
    @@ t/t2402-worktree-list.sh: test_expect_success '"list" all worktrees with locked
     +	echo "locked with reason" >>expect &&
     +	git worktree add --detach locked1 &&
     +	git worktree add --detach locked2 &&
    ++	# unlocked worktree should not be annotated with "locked"
     +	git worktree add --detach unlocked &&
     +	git worktree lock locked1 &&
     +	git worktree lock locked2 --reason "with reason" &&
    @@ t/t2402-worktree-list.sh: test_expect_success '"list" all worktrees with locked
     +
     +test_expect_success '"list" all worktrees --porcelain with locked reason newline escaped' '
     +	test_when_finished "rm -rf locked_lf locked_crlf out actual expect && git worktree prune" &&
    -+	printf "locked locked\\\\r\\\\nreason\n" >expect &&
    -+	printf "locked locked\\\\nreason\n" >>expect &&
    ++	printf "locked \"locked\\\\r\\\\nreason\"\n" >expect &&
    ++	printf "locked \"locked\\\\nreason\"\n" >>expect &&
     +	git worktree add --detach locked_lf &&
     +	git worktree add --detach locked_crlf &&
    -+	printf "locked\nreason\n\n" >reason_lf &&
    -+	printf "locked\r\nreason\n\n" >reason_crlf &&
    -+	git worktree lock locked_lf --reason "$(cat reason_lf)" &&
    -+	git worktree lock locked_crlf --reason "$(cat reason_crlf)" &&
    ++	git worktree lock locked_lf --reason "$(printf "locked\nreason")" &&
    ++	git worktree lock locked_crlf --reason "$(printf "locked\r\nreason")" &&
     +	test_when_finished "git worktree unlock locked_lf && git worktree unlock locked_crlf" &&
     +	git worktree list --porcelain >out &&
     +	grep "^locked" out >actual &&
4:  f937df6460 ! 6:  be814326ee worktree: teach `list` to annotate prunable worktree
    @@ Documentation/git-worktree.txt: This can also be set up as the default behaviour
      	With `prune`, only expire unused working trees older than `<time>`.
     ++
     +With `list`, annotate missing working trees as prunable if they are
    -+older than `<mtime>`.
    ++older than `<time>`.
      
      --reason <string>::
      	With `lock`, an explanation why the working tree is locked.
    @@ Documentation/git-worktree.txt: $ git worktree list
     +
     +------------
     +$ git worktree list
    -+/path/to/linked-worktree        abcd1234 [master]
    -+/path/to/locked-worktreee       acbd5678 (brancha) locked
    -+/path/to/prunable-worktree      5678abc  (detached HEAD) prunable
    ++/path/to/linked-worktree    abcd1234 [master]
    ++/path/to/locked-worktreee   acbd5678 (brancha) locked
    ++/path/to/prunable-worktree  5678abc  (detached HEAD) prunable
     +------------
     +
      Porcelain Format
    @@ builtin/worktree.c: static void show_worktree_porcelain(struct worktree *wt)
      		printf("locked\n");
      
     +	reason = worktree_prune_reason(wt, expire);
    -+	if (reason && *reason)
    ++	if (reason)
     +		printf("prunable %s\n", reason);
     +
      	printf("\n");
      }
      
     @@ builtin/worktree.c: static void show_worktree(struct worktree *wt, int path_maxlen, int abbrev_len)
    - 	struct strbuf sb = STRBUF_INIT;
    - 	int cur_path_len = strlen(wt->path);
    - 	int path_adj = cur_path_len - utf8_strwidth(wt->path);
    -+	const char *reason;
    - 
    - 	strbuf_addf(&sb, "%-*s ", 1 + path_maxlen + path_adj, wt->path);
    - 	if (wt->is_bare)
    -@@ builtin/worktree.c: static void show_worktree(struct worktree *wt, int path_maxlen, int abbrev_len)
    - 			strbuf_addstr(&sb, "(error)");
    - 	}
    - 
    --	if (!is_main_worktree(wt) && worktree_lock_reason(wt))
    -+	reason = worktree_lock_reason(wt);
    -+	if (reason)
    + 	if (worktree_lock_reason(wt))
      		strbuf_addstr(&sb, " locked");
      
    -+	reason = worktree_prune_reason(wt, expire);
    -+	if (reason)
    ++	if (worktree_prune_reason(wt, expire))
     +		strbuf_addstr(&sb, " prunable");
     +
      	printf("%s\n", sb.buf);
    @@ builtin/worktree.c: static int list(int ac, const char **av, const char *prefix)
      	if (ac)
      		usage_with_options(worktree_usage, options);
     
    + ## builtin/worktree.cc (new) ##
    +
      ## t/t2402-worktree-list.sh ##
     @@ t/t2402-worktree-list.sh: test_expect_success '"list" all worktrees --porcelain with locked reason newline
      	test_cmp expect actual
5:  0b6ab6dddb ! 7:  b0688f142d worktree: teach `list` verbose mode
    @@ Commit message
         worktrees a reason might be available provided by the user via `lock`
         command.
     
    -    Let's teach "git worktree list" to output the reason why the worktrees
    -    are being annotated. The reason is a text that can take virtually any
    -    size and appending the text on the default columned format will make it
    -    difficult to extend the command with other annotations and not fit nicely
    -    on the screen. In order to address this shortcoming the annotation is
    -    then moved to the next line indented followed by the reason, if the
    -    reason is not available the annotation stays on the same line as the
    -    worktree itself.
    +    Let's teach "git worktree list" a --verbose mode that outputs the reason
    +    why the worktrees are being annotated. The reason is a text that can take
    +    virtually any size and appending the text on the default columned format
    +    will make it difficult to extend the command with other annotations and
    +    not fit nicely on the screen. In order to address this shortcoming the
    +    annotation is then moved to the next line indented followed by the reason
    +    If the reason is not available the annotation stays on the same line as
    +    the worktree itself.
     
         The output of "git worktree list" with verbose becomes like so:
     
             $ git worktree list --verbose
             ...
    -        /path/to/locked                acb124 [branch-a] locked
    -        /path/to/locked-with-reason    acc125 [branch-b]
    +        /path/to/locked-no-reason    acb124 [branch-a] locked
    +        /path/to/locked-with-reason  acc125 [branch-b]
                 locked: worktree with a locked reason
    -        /path/to/prunable-reason       ace127 [branch-d]
    +        /path/to/prunable-reason     ace127 [branch-d]
                 prunable: gitdir file points to non-existent location
             ...
     
    @@ Documentation/git-worktree.txt: This can also be set up as the default behaviour
      --expire <time>::
      	With `prune`, only expire unused working trees older than `<time>`.
     @@ Documentation/git-worktree.txt: $ git worktree list
    - /path/to/prunable-worktree      5678abc  (detached HEAD) prunable
    + /path/to/prunable-worktree  5678abc  (detached HEAD) prunable
      ------------
      
     +For these annotations, a reason might also be available and this can be
    @@ Documentation/git-worktree.txt: $ git worktree list
     +
     +------------
     +$ git worktree list --verbose
    -+/path/to/linked-worktree        abcd1234 [master]
    -+/path/to/locked-worktreee       acbd5678 (brancha)
    -+	locked: working tree path is mounted on a removable device
    -+/path/to/locked-no-reason       abcd578  (detached HEAD) locked
    -+/path/to/prunable-worktree      5678abc  (detached HEAD)
    ++/path/to/linked-worktree              abcd1234 [master]
    ++/path/to/locked-worktree-no-reason    abcd5678 (detached HEAD) locked
    ++/path/to/locked-worktree-with-reason  1234abcd (brancha)
    ++	locked: working tree path is mounted on a portable device
    ++/path/to/prunable-worktree            5678abc1 (detached HEAD)
     +	prunable: gitdir file points to non-existent location
     +------------
     +
    @@ Documentation/git-worktree.txt: $ git worktree list
     
      ## builtin/worktree.c ##
     @@ builtin/worktree.c: static void show_worktree(struct worktree *wt, int path_maxlen, int abbrev_len)
    + 	struct strbuf sb = STRBUF_INIT;
    + 	int cur_path_len = strlen(wt->path);
    + 	int path_adj = cur_path_len - utf8_strwidth(wt->path);
    ++	const char *reason;
    + 
    + 	strbuf_addf(&sb, "%-*s ", 1 + path_maxlen + path_adj, wt->path);
    + 	if (wt->is_bare)
    +@@ builtin/worktree.c: static void show_worktree(struct worktree *wt, int path_maxlen, int abbrev_len)
    + 			strbuf_addstr(&sb, "(error)");
      	}
      
    - 	reason = worktree_lock_reason(wt);
    --	if (reason)
    +-	if (worktree_lock_reason(wt))
    ++	reason = worktree_lock_reason(wt);
     +	if (verbose && reason && *reason)
     +		strbuf_addf(&sb, "\n\tlocked: %s", reason);
     +	else if (reason)
      		strbuf_addstr(&sb, " locked");
      
    - 	reason = worktree_prune_reason(wt, expire);
    --	if (reason)
    -+	if (verbose && reason && *reason)
    +-	if (worktree_prune_reason(wt, expire))
    ++	reason = worktree_prune_reason(wt, expire);
    ++	if (verbose && reason)
     +		strbuf_addf(&sb, "\n\tprunable: %s", reason);
     +	else if (reason)
      		strbuf_addstr(&sb, " prunable");
    @@ t/t2402-worktree-list.sh: test_expect_success '"list" all worktrees with prunabl
     +'
     +
     +test_expect_success '"list" all worktrees --verbose with locked' '
    -+	test_when_finished "rm -rf locked out actual expect && git worktree prune" &&
    -+	git worktree add locked --detach &&
    -+	git worktree lock locked --reason "with reason" &&
    -+	test_when_finished "git worktree unlock locked" &&
    -+	echo "$(git -C locked rev-parse --show-toplevel) $(git rev-parse --short HEAD) (detached HEAD)" >expect &&
    ++	test_when_finished "rm -rf locked1 locked2 out actual expect && git worktree prune" &&
    ++	git worktree add locked1 --detach &&
    ++	git worktree add locked2 --detach &&
    ++	git worktree lock locked1 &&
    ++	git worktree lock locked2 --reason "with reason" &&
    ++	test_when_finished "git worktree unlock locked1 && git worktree unlock locked2" &&
    ++	echo "$(git -C locked2 rev-parse --show-toplevel) $(git rev-parse --short HEAD) (detached HEAD)" >expect &&
     +	printf "\tlocked: with reason\n" >>expect &&
     +	git worktree list --verbose >out &&
    -+	sed -n "s/  */ /g;/\/locked  *[0-9a-f].*$/,/locked: .*$/p" <out >actual &&
    ++	grep "/locked1  *[0-9a-f].* locked$" out &&
    ++	sed -n "s/  */ /g;/\/locked2  *[0-9a-f].*$/,/locked: .*$/p" <out >actual &&
     +	test_cmp actual expect
     +'
     +
-- 
2.30.0.421.g32f838e276


^ permalink raw reply	[relevance 2%]

* [PATCH v2 0/2] Two cleanups around 'prefetch' refs
  2021-01-18  3:23  5% [PATCH 0/2] Two cleanups around 'prefetch' refs Derrick Stolee via GitGitGadget
@ 2021-01-19 12:52  4% ` Derrick Stolee via GitGitGadget
  0 siblings, 0 replies; 162+ results
From: Derrick Stolee via GitGitGadget @ 2021-01-19 12:52 UTC (permalink / raw)
  To: git
  Cc: gitster, Eric Sunshine, Emily Shaffer, Taylor Blau,
	Derrick Stolee, Derrick Stolee

Here are a couple things that caught my eye during a recent evaluation of
the maintenance feature:

 1. 'refs/prefetch/' refs show up in 'git log' decorations. Auto-hide these.
 2. t7900-maintenance.sh had some scary warnings that end up being
    unimportant.

This is based on 'master' at 66e871b (The third batch, 2021-01-15).

Update in v2: deleting refs more safely for alternate ref backends. (Thanks,
Taylor!)

Thanks, -Stolee

Derrick Stolee (2):
  maintenance: set log.excludeDecoration durin prefetch
  t7900: clean up some broken refs

 builtin/gc.c           |  6 ++++++
 t/t7900-maintenance.sh | 33 ++++++++++++++++++++++++++++++++-
 2 files changed, 38 insertions(+), 1 deletion(-)


base-commit: 66e871b6647ffea61a77a0f82c7ef3415f1ee79c
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-838%2Fderrickstolee%2Fprefetch-refs-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-838/derrickstolee/prefetch-refs-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/838

Range-diff vs v1:

 1:  5b2ce9049a6 = 1:  5b2ce9049a6 maintenance: set log.excludeDecoration durin prefetch
 2:  616b73a6556 ! 2:  35038dfd037 t7900: clean up some broken refs
     @@ Commit message
      
          All that is left is to clean up the tests in t7900-maintenance.sh to
          remove these tags and refs that are not being repacked for the
     -    incremental-repack tests.
     +    incremental-repack tests. Use update-ref to ensure this works with all
     +    ref backends.
      
     +    Helped-by: Taylor Blau <me@ttaylorr.com>
          Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
      
       ## t/t7900-maintenance.sh ##
     @@ t/t7900-maintenance.sh: test_expect_success 'incremental-repack task' '
       	^HEAD~1
       	EOF
      +
     ++	# Delete refs that have not been repacked in these packs.
     ++	git for-each-ref --format="delete %(refname)" \
     ++		refs/prefetch refs/tags >refs &&
     ++	git update-ref --stdin <refs &&
     ++
      +	# Replace the object directory with this pack layout.
     -+	# However, it does not include all objects from the remotes.
     -+	rm -rf .git/refs/prefetch &&
     -+	rm -rf .git/refs/tags &&
       	rm -f $packDir/pack-* &&
       	rm -f $packDir/loose-* &&
       	ls $packDir/*.pack >packs-before &&

-- 
gitgitgadget

^ permalink raw reply	[relevance 4%]

* [PATCH 0/2] Two cleanups around 'prefetch' refs
@ 2021-01-18  3:23  5% Derrick Stolee via GitGitGadget
  2021-01-19 12:52  4% ` [PATCH v2 " Derrick Stolee via GitGitGadget
  0 siblings, 1 reply; 162+ results
From: Derrick Stolee via GitGitGadget @ 2021-01-18  3:23 UTC (permalink / raw)
  To: git; +Cc: gitster, Eric Sunshine, Emily Shaffer, Derrick Stolee

Here are a couple things that caught my eye during a recent evaluation of
the maintenance feature:

 1. 'refs/prefetch/' refs show up in 'git log' decorations. Auto-hide these.
 2. t7900-maintenance.sh had some scary warnings that end up being
    unimportant.

This is based on 'master' at 66e871b (The third batch, 2021-01-15).

Thanks, -Stolee

Derrick Stolee (2):
  maintenance: set log.excludeDecoration durin prefetch
  t7900: clean up some broken refs

 builtin/gc.c           |  6 ++++++
 t/t7900-maintenance.sh | 31 ++++++++++++++++++++++++++++++-
 2 files changed, 36 insertions(+), 1 deletion(-)


base-commit: 66e871b6647ffea61a77a0f82c7ef3415f1ee79c
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-838%2Fderrickstolee%2Fprefetch-refs-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-838/derrickstolee/prefetch-refs-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/838
-- 
gitgitgadget

^ permalink raw reply	[relevance 5%]

* [PATCH v2 0/6] teach `worktree list` verbose mode and prunable annotations
  @ 2021-01-17 23:42  2% ` Rafael Silva
  2021-01-19 21:27  2%   ` [PATCH v3 0/7] " Rafael Silva
  0 siblings, 1 reply; 162+ results
From: Rafael Silva @ 2021-01-17 23:42 UTC (permalink / raw)
  To: git; +Cc: Eric Sunshine, Phillip Wood, Rafael Silva

In c57b3367be (worktree: teach `list` to annotate locked worktree,
2020-10-11) we taught `git worktree list` to annotate working tree that
is locked by appending "locked" text in order to signalize to the user
that a working tree is locked.  During the review, there was some
discussion about additional annotations and information that `list`
command could provide to the user that has long been envisioned and
mentioned in [2], [3] and [4].

This patch series addresses some of these changes by teaching
`worktree list` to show "prunable" annotation, adding verbose mode and
extending the --porcelain format with prunable and locked annotation as
follow up from [1]. Additionally, it addresses one shortcoming for porcelain
format to escape any newline characters (LF or CRLF) for the lock reason
to prevent breaking the format that is mentioned in [4] and [1] during the
review cycle.

The patch series is organizes as:

1. The first patch moves the should_prune_worktree() machinery to the top-level
   worktree.c exposing the function as general API, that will be reference
   by should_prune_worktree() wrapper implemented on the second patch.

   The original idea was to not only move should_prune_worktree() but also
   refactor to accept a "struct worktree" and load the information directly,
   which allows simplify the `prune` command by reusing get_worktrees().
   However this seems to also require refactoring get_worktrees() itself
   to return "non-valid" working trees that can/should be pruned. This is
   also mentioned in [5]. Having the wrapper function makes it easier to add
   the prunable annotation without touching the get_worktrees() and the
   other worktree sub commands. The refactoring can be addressed in a
   future patch, if this turns out to be good idea. One possible approach
   is to teach get_worktrees() to take additional flags that will tell
   whether to return only valid or all worktrees in GIT_DIR/worktrees/
   directory and address its own possible shortcoming.

2. Introduces the worktree_prune_reason() to discovery whether a worktree
   is prunable along with two new fields in the `worktree` structure. The
   function mimics the workree_lock_reason() API.

3. The third patch changes worktree_lock_reason() to be more gentle for
   the main working tree to simply returning NULL instead of aborting the
   program via assert() macro. This allow us to simplify the code that
   checks if the working tree is locked for default and porcelain format.
   This changes is also mentioned in [6].

4. The fourth patch adds the "locked" attribute for the porcelain format
   in order to make both default and --porcelain format consistent.

5. The fifth patch introduces "prunable" annotation for both default
   and --porcelain format.

6. The sixth patch introduces verbose mode to expand the `list` default
   format and show each annotation reason when its available.

Series is built on top of 66e871b664 (The third batch, 2021-01-15).

[1] https://lore.kernel.org/git/20200928154953.30396-1-rafaeloliveira.cs@gmail.com/
[2] https://lore.kernel.org/git/CAPig+cQF6V8HNdMX5AZbmz3_w2WhSfA4SFfNhQqxXBqPXTZL+w@mail.gmail.com/
[3] https://lore.kernel.org/git/CAPig+cSGXqJuaZPhUhOVX5X=LMrjVfv8ye_6ncMUbyKox1i7QA@mail.gmail.com/
[4] https://lore.kernel.org/git/CAPig+cTitWCs5vB=0iXuUyEY22c0gvjXvY1ZtTT90s74ydhE=A@mail.gmail.com/
[5] https://lore.kernel.org/git/CACsJy8ChM99n6skQCv-GmFiod19mnwwH4j-6R+cfZSiVFAxjgA@mail.gmail.com/
[6] https://lore.kernel.org/git/xmqq8sctlgzx.fsf@gitster.c.googlers.com/

Changes in v2
=============

v2 changes considerably from v1 taking into account several comments
suggested by Eric Sunshine and Phillip Wood (thanks guys for the
insightful comments and patience reviewing my patches :) ).

 * The biggest change are the way the series is organized. In v1 all the
   code was implemented in the fourth patch, all the tests and documentation
   updates was added in sixth and seventh patch respectfully, in v2 each
   patch introduces the annotations and verbose mode together with theirs
   respective test and documentation updates.

 * Several rewrite of the commit messages

 * In v1 the fifth patch was introducing a new function to escape newline
   characters for the "locked" attribute. However, we already have this
   feature from the quote.h API. So the new function is dropped and the
   changes are squashed into v2's fourth patch.

 * The new prunable annotation and locked annotation that was introduced
   by [1] was refactor to not poke around the worktree private fields.

 * Refactoring of the worktree_prune_reason() to cache the prune_reason
   and refactor to early return the use cases following the more common
   pattern used on Git's codebase.

 * Few documentation rewrites, most notably the `--verbose` and `--expire`
   doc sentences for the list command are moved to its own line to clearly
   separate the description from the others commands instead of continuing 
   on the same paragraph.

 * The `git unlock <worktree>` used in the test's cleanup is moved to after
   we know the `git worktree locked` is executed successfully. This ensures
   the unlock doesn't error in the cleanup stage which will make it harder
   to debug the tests.

Rafael Silva (6):
  worktree: libify should_prune_worktree()
  worktree: teach worktree to lazy-load "prunable" reason
  worktree: teach worktree_lock_reason() to gently handle main worktree
  worktree: teach `list --porcelain` to annotate locked worktree
  worktree: teach `list` to annotate prunable worktree
  worktree: teach `list` verbose mode

 Documentation/git-worktree.txt |  62 +++++++++++++++++--
 builtin/worktree.c             | 110 +++++++++++----------------------
 t/t2402-worktree-list.sh       |  91 +++++++++++++++++++++++++++
 worktree.c                     |  91 ++++++++++++++++++++++++++-
 worktree.h                     |  23 +++++++
 5 files changed, 297 insertions(+), 80 deletions(-)

Range-diff against v1:
1:  9d3fff52b4 ! 1:  e4df49d882 worktree: move should_prune_worktree() to worktree.c
    @@ Metadata
     Author: Rafael Silva <rafaeloliveira.cs@gmail.com>
     
      ## Commit message ##
    -    worktree: move should_prune_worktree() to worktree.c
    +    worktree: libify should_prune_worktree()
     
         As part of teaching "git worktree list" to annotate worktree that is a
         candidate for pruning, let's move should_prune_worktree() from
         builtin/worktree.c to worktree.c in order to make part of the worktree
         public API.
     
    -    This function will be used by another API function, implemented in the
    -    next patch that will accept a pointer to "worktree" structure directly
    -    making it easier to implement the "prunable" annotations.
    +    should_prune_worktree() knows how to select the given worktree for
    +    pruning based on an expiration date, however the expiration value is
    +    stored in a static file-scope variable and it is not local to the
    +    function. In order to move the function, teach should_prune_worktree()
    +    to take the expiration date as an argument and document the new
    +    parameter that is not immediately obvious.
     
    -    should_prune_worktree() knows how to select the given worktree for pruning
    -    based on an expiration date, however the expiration value is stored on a
    -    global variable and it is not local to the function. In order to move the
    -    function, teach should_prune_worktree() to take the expiration date as an
    -    argument.
    +    Also, change the function comment to clearly state that the worktree's
    +    path is returned in `wtpath` argument.
     
    +    Helped-by: Eric Sunshine <sunshine@sunshineco.com>
         Signed-off-by: Rafael Silva <rafaeloliveira.cs@gmail.com>
     
      ## builtin/worktree.c ##
    @@ worktree.c: void repair_worktree_at_path(const char *path,
      	strbuf_release(&dotgit);
      }
     +
    -+/*
    -+ * Return true if worktree entry should be pruned, along with the reason for
    -+ * pruning. Otherwise, return false and the worktree's path, or NULL if it
    -+ * cannot be determined. Caller is responsible for freeing returned path.
    -+ */
     +int should_prune_worktree(const char *id, struct strbuf *reason, char **wtpath, timestamp_t expire)
     +{
     +	struct stat st;
    @@ worktree.h: int is_main_worktree(const struct worktree *wt);
      
     +/*
     + * Return true if worktree entry should be pruned, along with the reason for
    -+ * pruning. Otherwise, return false and the worktree's path, or NULL if it
    -+ * cannot be determined. Caller is responsible for freeing returned path.
    ++ * pruning. Otherwise, return false and the worktree's path in `wtpath`, or
    ++ * NULL if it cannot be determined. Caller is responsible for freeing
    ++ * returned path.
    ++ *
    ++ * `expire` defines a grace period to prune the worktree when its path
    ++ * does not exist.
     + */
     +int should_prune_worktree(const char *id,
     +			  struct strbuf *reason,
2:  80044e0ba9 ! 2:  d8db43fec8 worktree: implement worktree_prune_reason() wrapper
    @@ Metadata
     Author: Rafael Silva <rafaeloliveira.cs@gmail.com>
     
      ## Commit message ##
    -    worktree: implement worktree_prune_reason() wrapper
    +    worktree: teach worktree to lazy-load "prunable" reason
     
    -    The should_prune_worktree() machinery is used by the "prune" command to
    -    identify whether a worktree is a candidate for pruning. This function
    -    however, is not prepared to work directly with "struct worktree" and
    -    refactoring is required not only on the function itself, but also also
    -    changing get_worktrees() to return non-valid worktrees and address the
    -    changes in all "worktree" sub commands.
    -
    -    Instead let's implement worktree_prune_reason() that accepts
    -    "struct worktree" and uses should_prune_worktree() and returns whether
    -    the given worktree is a candidate for pruning. As the "list" sub command
    -    already uses a list of "struct worktree", this allow to simply check if
    -    the working tree prunable by passing the structure directly without the
    -    others parameters.
    -
    -    Also, let's add prune_reason field to the worktree structure that will
    -    store the reason why the worktree can be pruned that is returned by
    -    should_prune_worktree() when such reason is available.
    +    Add worktree_prune_reason() to allow a caller to discover whether a
    +    worktree is prunable and the reason that it is, much like
    +    worktree_lock_reason() indicates whether a worktree is locked and the
    +    reason for the lock. As with worktree_lock_reason(), retrieve the
    +    prunable reason lazily and cache it in the `worktree` structure.
     
    +    Helped-by: Eric Sunshine <sunshine@sunshineco.com>
         Signed-off-by: Rafael Silva <rafaeloliveira.cs@gmail.com>
     
      ## worktree.c ##
    @@ worktree.c: const char *worktree_lock_reason(struct worktree *wt)
      
     +const char *worktree_prune_reason(struct worktree *wt, timestamp_t expire)
     +{
    -+	if (!is_main_worktree(wt)) {
    -+		char *path;
    -+		struct strbuf reason = STRBUF_INIT;
    ++	struct strbuf reason = STRBUF_INIT;
    ++	char *path;
     +
    -+		if (should_prune_worktree(wt->id, &reason, &path, expire))
    -+			wt->prune_reason = strbuf_detach(&reason, NULL);
    -+		else
    -+			wt->prune_reason = NULL;
    ++	if (is_main_worktree(wt))
    ++		return NULL;
    ++	if (wt->prune_reason_valid)
    ++		return wt->prune_reason;
     +
    -+		free(path);
    -+		strbuf_release(&reason);
    -+	}
    ++	if (should_prune_worktree(wt->id, &reason, &path, expire))
    ++		wt->prune_reason = strbuf_detach(&reason, NULL);
    ++	wt->prune_reason_valid = 1;
     +
    ++	strbuf_release(&reason);
    ++	free(path);
     +	return wt->prune_reason;
     +}
     +
    @@ worktree.h: struct worktree {
      	struct object_id head_oid;
      	int is_detached;
      	int is_bare;
    + 	int is_current;
    + 	int lock_reason_valid; /* private */
    ++	int prune_reason_valid; /* private */
    + };
    + 
    + /*
     @@ worktree.h: int is_main_worktree(const struct worktree *wt);
       */
      const char *worktree_lock_reason(struct worktree *wt);
      
     +/*
    -+ * Return the reason string if the given worktree should be pruned
    -+ * or NULL otherwise.
    ++ * Return the reason string if the given worktree should be pruned, otherwise
    ++ * NULL if it should not be pruned. `expire` defines a grace period to prune
    ++ * the worktree when its path does not exist.
     + */
     +const char *worktree_prune_reason(struct worktree *wt, timestamp_t expire);
     +
      /*
       * Return true if worktree entry should be pruned, along with the reason for
    -  * pruning. Otherwise, return false and the worktree's path, or NULL if it
    +  * pruning. Otherwise, return false and the worktree's path in `wtpath`, or
3:  fa2297714b < -:  ---------- worktree: teach worktree_lock_reason() to gently handle main worktree
4:  bcc2e5d745 < -:  ---------- worktree: teach `list` prunable annotation and verbose
5:  588051ed5f < -:  ---------- worktree: `list` escape lock reason in --porcelain
6:  cbff8c993a < -:  ---------- worktree: add tests for `list` verbose and annotations
7:  9c5893d2b9 < -:  ---------- worktree: document `list` verbose and prunable annotations
-:  ---------- > 3:  5b8963292f worktree: teach worktree_lock_reason() to gently handle main worktree
-:  ---------- > 4:  6bdd46b9bc worktree: teach `list --porcelain` to annotate locked worktree
-:  ---------- > 5:  bbf6c53ecc worktree: teach `list` to annotate prunable worktree
-:  ---------- > 6:  acc0bf22cd worktree: teach `list` verbose mode
-- 
2.30.0.356.gd4bb5ad4ba


^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Jan 2021, #04; Sat, 16)
@ 2021-01-16 21:59  1% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-01-16 21:59 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'seen' (formerly 'pu'---proposed updates) while commits prefixed
with '+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The third batch of topics are now in 'master'.  Most of these cooked
for shorter than usual in 'next' (I usually try to keep any topic in
'next' for at least a week), but many of them are mostly benign doc
and test fixes.

Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors.  Some
repositories have only a subset of branches.

With maint, master, next, seen, todo:

	git://git.kernel.org/pub/scm/git/git.git/
	git://repo.or.cz/alt-git.git/
	https://kernel.googlesource.com/pub/scm/git/git/
	https://github.com/git/git/
	https://gitlab.com/git-vcs/git/

With all the integration branches and topics broken out:

	https://github.com/gitster/git/

Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):

	git://git.kernel.org/pub/scm/git/git-htmldocs.git/
	https://github.com/gitster/git-htmldocs.git/

Release tarballs are available at:

	https://www.kernel.org/pub/software/scm/git/

--------------------------------------------------
[New Topics]

* ab/fsck-doc-fix (2021-01-16) 1 commit
 - fsck doc: remove ancient out-of-date diagnostics

 Documentation for "git fsck" lost stale bits that has become
 incorrect.

 Will merge to 'next'.


* ab/tests-various-fixup (2021-01-16) 11 commits
 - tests: add a "set -o pipefail" for a patched bash
 - tests: split up bash detection library
 - archive tests: use a cheaper "zipinfo -h" invocation to get header
 - upload-pack tests: avoid a non-zero "grep" exit status
 - rm tests: actually test for SIGPIPE in SIGPIPE test
 - git-svn tests: rewrite brittle tests to use "--[no-]merges".
 - git svn mergeinfo tests: refactor "test -z" to use test_must_be_empty
 - git svn mergeinfo tests: modernize redirection & quoting style
 - cache-tree tests: refactor overly complex function
 - cache-tree tests: use a sub-shell with less indirection
 - cache-tree tests: remove unused $2 parameter

 Various test updates.

 Looking good.

--------------------------------------------------
[Graduated to 'master']

* ab/gettext-charset-comment-fix (2021-01-11) 2 commits
  (merged to 'next' on 2021-01-12 at bc7f60e246)
 + gettext.c: remove/reword a mostly-useless comment
 + Makefile: remove a warning about old GETTEXT_POISON flag

 Comments update.


* ad/t4129-setfacl-target-fix (2021-01-09) 1 commit
  (merged to 'next' on 2021-01-12 at e09694772a)
 + t4129: fix setfacl-related permissions failure

 Test fix.


* bc/doc-status-short (2021-01-11) 1 commit
  (merged to 'next' on 2021-01-13 at 6093625f0c)
 + docs: rephrase and clarify the git status --short format

 Doc update.


* dl/p4-encode-after-kw-expansion (2020-12-23) 1 commit
  (merged to 'next' on 2021-01-13 at 8fce17d998)
 + git-p4: fix syncing file types with pattern

 Text encoding fix for "git p4".


* ds/for-each-repo-noopfix (2021-01-07) 1 commit
  (merged to 'next' on 2021-01-12 at 92f83b5db1)
 + for-each-repo: do nothing on empty config

 "git for-each-repo --config=<var> <cmd>" should not run <cmd> for
 any repository when the configuration variable <var> is not defined
 even once.


* ds/maintenance-part-4 (2021-01-05) 4 commits
  (merged to 'next' on 2021-01-08 at 1f98c859ea)
 + maintenance: use Windows scheduled tasks
 + maintenance: use launchctl on macOS
 + maintenance: include 'cron' details in docs
 + maintenance: extract platform-specific scheduling

 Follow-up on the "maintenance part-3" which introduced scheduled
 maintenance tasks to support platforms whose native scheduling
 methods are not 'cron'.


* jc/macos-install-dependencies-fix (2021-01-14) 1 commit
  (merged to 'next' on 2021-01-14 at 5a11de010b)
 + ci/install-depends: attempt to fix "brew cask" stuff

 Fix for procedure to building CI test environment for mac.


* jc/sign-off (2021-01-07) 1 commit
  (merged to 'next' on 2021-01-12 at 0d9a2a9a41)
 + SubmittingPatches: tighten wording on "sign-off" procedure

 Doc update.


* jk/t5516-deflake (2021-01-09) 1 commit
  (merged to 'next' on 2021-01-12 at ed5317a798)
 + t5516: loosen "not our ref" error check

 Test fix.


* mt/t4129-with-setgid-dir (2021-01-06) 1 commit
  (merged to 'next' on 2021-01-12 at 7a54dd92d8)
 + t4129: don't fail if setgid is set in the test directory

 Some tests expect that "ls -l" output has either '-' or 'x' for
 group executable bit, but setgid bit can be inherited from parent
 directory and make these fields 'S' or 's' instead, causing test
 failures.


* pb/mergetool-tool-help-fix (2021-01-06) 1 commit
  (merged to 'next' on 2021-01-12 at ba0f76b413)
 + mergetool--lib: fix '--tool-help' to correctly show available tools

 Fix 2.29 regression where "git mergetool --tool-help" fails to list
 all the available tools.


* tb/local-clone-race-doc (2021-01-11) 1 commit
  (merged to 'next' on 2021-01-14 at b86c0426de)
 + Documentation/git-clone.txt: document race with --local

 Doc update.


* ug/doc-lose-dircache (2021-01-09) 1 commit
  (merged to 'next' on 2021-01-12 at 28310380a5)
 + doc: remove "directory cache" from man pages

 Doc update.


* vv/send-email-with-less-secure-apps-access (2021-01-07) 1 commit
  (merged to 'next' on 2021-01-12 at 53243ca7e7)
 + git-send-email.txt: mention less secure app access with Gmail

 Doc update.

--------------------------------------------------
[Stalled]

* ss/submodule-add-in-c (2020-12-15) 3 commits
 . t7400: add test to check 'submodule add' for tracked paths
 . submodule: port submodule subcommand 'add' from shell to C
 . dir: change the scope of function 'directory_exists_in_index()'

 "git submodule add" being rewritten in C.

 Expecting a reroll.
 The patches are split incorrectly; part of 1/3 belongs to 2/3
 cf. <nycvar.QRO.7.76.6.2012190104140.56@tvgsbejvaqbjf.bet>
 It seems to introduce a segfault on 'seen'.
 cf. <xmqqft3xflw7.fsf@gitster.c.googlers.com>


* mt/grep-sparse-checkout (2020-12-06) 10 commits
 - t7817: do not depend on any specific default branch name
 - config: add setting to ignore sparsity patterns in some cmds
 - grep: honor sparse checkout patterns
 - config: correctly read worktree configs in submodules
 - config: make do_git_config_sequence receive a 'struct repository'
 - t/helper/test-config: unify exit labels
 - t/helper/test-config: diagnose missing arguments
 - t/helper/test-config: be consistent with exit codes
 - t1308-config-set: avoid false positives when using test-config
 - doc: grep: unify info on configuration variables
 (this branch is used by mt/rm-sparse-checkout.)

 "git grep" has been tweaked to be limited to the sparse checkout
 paths.

 Break out and fast-track bugfix from the remainder of the topic.
 cf. <CABPp-BFkACtF6LHkFJNt9dTOmwfQbf8ZO=BTrPYwPSmbqc9+hg@mail.gmail.com>


* mt/rm-sparse-checkout (2020-12-08) 1 commit
 - rm: honor sparse checkout patterns
 (this branch uses mt/grep-sparse-checkout.)

 "git rm" follows suit to "git grep" to ignore paths outside the
 sparsity pattern when the sparse checkout feature is in use.

 Need to wait for how these fit in larger picture.
 cf. <CABPp-BGMX3wb7LiS1HkJpGveoW3J1oR0vVHbKTF5+qYLRF+59g@mail.gmail.com>
 cf. <CABPp-BFkACtF6LHkFJNt9dTOmwfQbf8ZO=BTrPYwPSmbqc9+hg@mail.gmail.com>


* jk/symlinked-dotgitx-files (2020-10-23) 9 commits
 - docs: document symlink restrictions for .git* files
 - fsck: complain when .gitattributes or .gitignore is a symlink
 - verify_path(): disallow symlinks in .gitattributes and .gitignore
 - t0060: test obscured .gitattributes and .gitignore matching
 - t7450: test .gitmodules symlink matching against obscured names
 - t7450: test verify_path() handling of gitmodules
 - t7415: rename to expand scope
 - fsck_tree(): wrap some long lines
 - fsck_tree(): fix shadowed variable

 "git fsck" and the corresponding check done during the transport
 learned to ensure that in-tree files like `.gitignore` and
 `.gitattributes` are not symbolic links.

 It seems that there are real projects with .gitignore recorded as
 symlinks, which may need to loosen the fsck setting.  Do we need to
 introduce a class that is separate from symlinked .gitmodules that
 has potential consequences that is more/less grave, so that these
 projects can opt out of the new checks?


* sm/curl-retry (2020-10-13) 3 commits
 - http: automatically retry some requests
 - replace CURLOPT_FILE With CURLOPT_WRITEDATA
 - remote-curl: add testing for intelligent retry for HTTP

 The http transport has been taught to retry a failed request that
 may reasonably be retried.

 Expecting a reroll.
 cf. <20201015000410.GB328643@google.com>
 cf. <CAM4o00eefXK2CJ_FxwwVPpBKL01JsJANf+SdjCtw_0NVV82L+Q@mail.gmail.com>


* sv/t7001-modernize (2020-09-25) 11 commits
 - t7001: move cleanup code from outside the tests into them
 - t7001: use `test` rather than `[`
 - t7001: use here-docs instead of echo
 - t7001: put each command on a separate line
 - t7001: use ': >' rather than 'touch'
 - t7001: change (cd <path> && git foo) to (git -C <path> foo)
 - t7001: remove whitespace after redirect operators
 - t7001: change the style for cd according to subshell
 - t7001: remove unnecessary blank lines
 - t7001: use TAB instead of spaces
 - t7001: convert tests from the old style to the current style

 Test script modernization.

 Expecting a reroll.
 cf. <20200925170256.11490-1-shubhunic@gmail.com>


* ar/fetch-transfer-ipversion (2020-09-16) 1 commit
 - config: option transfer.ipversion to set transport protocol version for network fetches

 Adds transfer.ipversion configuration variable.

 Needs more work.


* jc/war-on-dashed-git (2020-12-21) 2 commits
 - fixup??? git: catch an attempt to run "git-foo"
 - git: catch an attempt to run "git-foo"

 The first step to remove on-disk binaries for built-in subcommands
 by soliciting objections.

 On hold for now.


* mk/use-size-t-in-zlib (2018-10-15) 1 commit
 - zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".


* ag/merge-strategies-in-c (2020-11-24) 13 commits
 - sequencer: use the "octopus" merge strategy without forking
 - sequencer: use the "resolve" strategy without forking
 - merge: use the "octopus" strategy without forking
 - merge: use the "resolve" strategy without forking
 - merge-octopus: rewrite in C
 - merge-recursive: move better_branch_name() to merge.c
 - merge-resolve: rewrite in C
 - merge-index: don't fork if the requested program is `git-merge-one-file'
 - merge-index: libify merge_one_path() and merge_all()
 - merge-one-file: rewrite in C
 - update-index: move add_cacheinfo() to read-cache.c
 - t6060: modify multiple files to expose a possible issue with merge-index
 - t6407: modernise tests
 (this branch is used by ds/update-index.)

 The resolve and octopus merge strategy backends have been rewritten
 in C.

 Got enough review comments to get updated.

--------------------------------------------------
[Cooking]

* en/ort-directory-rename (2021-01-07) 18 commits
 - merge-ort: fix a directory rename detection bug
 - merge-ort: process_renames() now needs more defensiveness
 - merge-ort: implement apply_directory_rename_modifications()
 - merge-ort: add a new toplevel_dir field
 - merge-ort: implement handle_path_level_conflicts()
 - merge-ort: implement check_for_directory_rename()
 - merge-ort: implement apply_dir_rename() and check_dir_renamed()
 - merge-ort: implement compute_collisions()
 - merge-ort: modify collect_renames() for directory rename handling
 - merge-ort: implement handle_directory_level_conflicts()
 - merge-ort: implement compute_rename_counts()
 - merge-ort: copy get_renamed_dir_portion() from merge-recursive.c
 - merge-ort: add outline of get_provisional_directory_renames()
 - merge-ort: add outline for computing directory renames
 - merge-ort: collect which directories are removed in dirs_removed
 - merge-ort: initialize and free new directory rename data structures
 - merge-ort: add new data structures for directory rename detection
 - Merge branch 'en/merge-ort-3' into en/ort-directory-rename
 (this branch is used by en/merge-ort-perf; uses en/merge-ort-3.)

 ORT merge strategy learns to infer "renamed directory" while
 merging.


* jk/forbid-lf-in-git-url (2021-01-07) 2 commits
  (merged to 'next' on 2021-01-12 at 88a1d937ae)
 + fsck: reject .gitmodules git:// urls with newlines
 + git_connect_git(): forbid newlines in host and path

 Newline characters in the host and path part of git:// URL are
 now forbidden.

 Will merge to 'master'.


* ps/fetch-atomic (2021-01-12) 5 commits
  (merged to 'next' on 2021-01-13 at a8896d0873)
 + fetch: implement support for atomic reference updates
 + fetch: allow passing a transaction to `s_update_ref()`
 + fetch: refactor `s_update_ref` to use common exit path
 + fetch: use strbuf to format FETCH_HEAD updates
 + fetch: extract writing to FETCH_HEAD

 "git fetch" learns to treat ref updates atomically in all-or-none
 fashion, just like "git push" does, with the new "--atomic" option.

 Will merge to 'master'.


* ab/detox-gettext-tests (2021-01-11) 6 commits
 - tests: remove uses of GIT_TEST_GETTEXT_POISON=false
 - tests: (almost) remove C_LOCALE_OUTPUT prerequisites
 - tests: (almost) remove use of "test_i18ngrep !"
 - tests: remove misc use of test_i18n{cmp,grep}
 - tests: remove support for GIT_TEST_GETTEXT_POISON
 - ci: remove GETTEXT_POISON jobs

 Get rid of "GETTEXT_POISON" support altogether, which may or may
 not be controversial.


* bc/signed-objects-with-both-hashes (2021-01-11) 6 commits
 - SQUASH??? ulong vs size_t
 - gpg-interface: remove other signature headers before verifying
 - ref-filter: hoist signature parsing
 - commit: allow parsing arbitrary buffers with headers
 - gpg-interface: improve interface for parsing tags
 - commit: ignore additional signatures when parsing signed commits

 Signed commits and tags now allow verification of objects, whose
 two object names (one in SHA-1, the other in SHA-256) are both
 signed.


* ds/update-index (2021-01-09) 14 commits
 - update-index: remove static globals from callbacks
 - update-index: reduce static globals, part 2
 - update-index: reduce static globals, part 1
 - update-index: remove ce_match_stat(), all macros
 - update-index: replace several compatibility macros
 - update-index: use add_index_entry()
 - update-index: use remove_file_from_index()
 - update-index: use index_name_pos() over cache_name_pos()
 - update-index: use istate->cache_changed
 - update-index: use istate->cache_nr over active_nr
 - update-index: use istate->cache over active_cache
 - update-index: drop the_index, the_repository
 - rm: remove compatilibity macros
 - mv: remove index compatibility macros
 (this branch uses ag/merge-strategies-in-c.)

 The implementation of a few commands lost reliance of "the_index"
 compatibility macros by explicitly passing the index_state through
 the callchain.

 Unfortunately the base topic still needs to solidify.


* jx/bundle (2021-01-11) 3 commits
  (merged to 'next' on 2021-01-14 at 749a907dd2)
 + bundle: arguments can be read from stdin
 + bundle: lost objects when removing duplicate pendings
 + test: add helper functions for git-bundle

 "git bundle" learns "--stdin" option to read its refs from the
 standard input.  Also, it now does not lose refs whey they point
 at the same object.

 Will merge to 'master'.


* ab/mailmap (2021-01-12) 22 commits
  (merged to 'next' on 2021-01-13 at a3ce27912f)
 + shortlog: remove unused(?) "repo-abbrev" feature
 + mailmap doc + tests: document and test for case-insensitivity
 + mailmap tests: add tests for empty "<>" syntax
 + mailmap tests: add tests for whitespace syntax
 + mailmap tests: add a test for comment syntax
 + mailmap doc + tests: add better examples & test them
 + tests: refactor a few tests to use "test_commit --append"
 + test-lib functions: add an --append option to test_commit
 + test-lib functions: add --author support to test_commit
 + test-lib functions: document arguments to test_commit
 + test-lib functions: expand "test_commit" comment template
 + mailmap: test for silent exiting on missing file/blob
 + mailmap tests: get rid of overly complex blame fuzzing
 + mailmap tests: add a test for "not a blob" error
 + mailmap tests: remove redundant entry in test
 + mailmap tests: improve --stdin tests
 + mailmap tests: modernize syntax & test idioms
 + mailmap tests: use our preferred whitespace syntax
 + mailmap doc: start by mentioning the comment syntax
 + check-mailmap doc: note config options
 + mailmap doc: quote config variables `like.this`
 + mailmap doc: create a new "gitmailmap(5)" man page
 (this branch is used by ab/mailmap-fixup.)

 Clean-up docs, codepaths and tests around mailmap.

 Will merge to 'master'.


* jk/log-cherry-pick-duplicate-patches (2021-01-12) 1 commit
  (merged to 'next' on 2021-01-13 at abcfbf8603)
 + patch-ids: handle duplicate hashmap entries

 When more than one commit with the same patch ID appears on one
 side, "git log --cherry-pick A...B" did not exclude them all when a
 commit with the same patch ID appears on the other side.  Now it
 does.

 Will merge to 'master'.


* tb/pack-revindex-api (2021-01-14) 21 commits
  (merged to 'next' on 2021-01-15 at 1f2997979c)
 + for_each_object_in_pack(): clarify pack vs index ordering
 + pack-revindex.c: avoid direct revindex access in 'offset_to_pack_pos()'
 + pack-revindex: hide the definition of 'revindex_entry'
 + pack-revindex: remove unused 'find_revindex_position()'
 + pack-revindex: remove unused 'find_pack_revindex()'
 + builtin/gc.c: guess the size of the revindex
 + for_each_object_in_pack(): convert to new revindex API
 + unpack_entry(): convert to new revindex API
 + packed_object_info(): convert to new revindex API
 + retry_bad_packed_offset(): convert to new revindex API
 + get_delta_base_oid(): convert to new revindex API
 + rebuild_existing_bitmaps(): convert to new revindex API
 + try_partial_reuse(): convert to new revindex API
 + get_size_by_pos(): convert to new revindex API
 + show_objects_for_type(): convert to new revindex API
 + bitmap_position_packfile(): convert to new revindex API
 + check_object(): convert to new revindex API
 + write_reused_pack_verbatim(): convert to new revindex API
 + write_reused_pack_one(): convert to new revindex API
 + write_reuse_object(): convert to new revindex API
 + pack-revindex: introduce a new API
 (this branch is used by tb/pack-revindex-on-disk.)

 Abstract accesses to in-core revindex that allows enumerating
 objects stored in a packfile in the order they appear in the pack,
 in preparation for introducing an on-disk precomputed revindex.

 Will merge to 'master'.


* cc/write-promisor-file (2021-01-14) 3 commits
  (merged to 'next' on 2021-01-14 at 9d773d4734)
 + pack-write: die on error in write_promisor_file()
 + fetch-pack: refactor writing promisor file
 + fetch-pack: rename helper to create_promisor_file()

 A bit of code refactoring.

 Will merge to 'master'.


* js/rebase-i-commit-cleanup-fix (2021-01-12) 1 commit
 - rebase -i: do leave commit message intact in fixup! chains

 When "git rebase -i" processes "fixup" insn, there is no reason to
 clean up the commit log message, but we did the usual stripspace
 processing.  This has been corrected.

 A bit more tests to document what is still broken have been offered.
 cf. <20210112204939.1095-1-martin.agren@gmail.com>


* ab/mailmap-fixup (2021-01-14) 4 commits
  (merged to 'next' on 2021-01-15 at ef14e2263d)
 + t4203: make blame output massaging more robust
 + mailmap doc: use correct environment variable 'GIT_WORK_TREE'
 + t4203: stop losing return codes of git commands
 + test-lib-functions.sh: fix usage for test_commit()
 (this branch uses ab/mailmap.)

 Follow-up fixes and improvements to ab/mailmap topic.

 Will merge to 'master'.


* tb/pack-revindex-on-disk (2021-01-14) 8 commits
 - pack-revindex: ensure that on-disk reverse indexes are given precedence
 - t: support GIT_TEST_WRITE_REV_INDEX
 - t: prepare for GIT_TEST_WRITE_REV_INDEX
 - Documentation/config/pack.txt: advertise 'pack.writeReverseIndex'
 - builtin/pack-objects.c: respect 'pack.writeReverseIndex'
 - builtin/index-pack.c: write reverse indexes
 - pack-write.c: prepare to write 'pack-*.rev' files
 - packfile: prepare for the existence of '*.rev' files
 (this branch uses tb/pack-revindex-api.)

 Introduce an on-disk file to record revindex for packdata, which
 traditionally was always created on the fly and only in-core.


* en/merge-ort-perf (2021-01-15) 4 commits
 - merge-ort: begin performance work; instrument with trace2_region_* calls
 - Merge branch 'en/ort-directory-rename' into en/merge-ort-perf
 - Merge branch 'en/ort-conflict-handling' into en/merge-ort-perf
 - Merge branch 'en/diffcore-rename' into en/merge-ort-perf
 (this branch uses en/diffcore-rename, en/merge-ort-3, en/ort-conflict-handling and en/ort-directory-rename.)


* ab/branch-sort (2021-01-07) 7 commits
  (merged to 'next' on 2021-01-12 at 1231feea7c)
 + branch: show "HEAD detached" first under reverse sort
 + branch: sort detached HEAD based on a flag
 + ref-filter: move ref_sorting flags to a bitfield
 + ref-filter: move "cmp_fn" assignment into "else if" arm
 + ref-filter: add braces to if/else if/else chain
 + branch tests: add to --sort tests
 + branch: change "--local" to "--list" in comment

 The implementation of "git branch --sort" wrt the detached HEAD
 display has always been hacky, which has been cleaned up.

 Will merge to 'master'.


* ab/coc-update-to-2.0 (2021-01-13) 3 commits
  (merged to 'next' on 2021-01-15 at 4859c12625)
 + CoC: update to version 2.0 + local changes
 + CoC: explicitly take any whitespace breakage
 + CoC: Update word-wrapping to match upstream

 Update the Code-of-conduct to version 2.0 from the upstream (we've
 been using version 1.4).

 Will merge to 'master'.


* dl/reflog-with-single-entry (2021-01-11) 2 commits
  (merged to 'next' on 2021-01-13 at 09b33209c4)
 + refs: allow @{n} to work with n-sized reflog
 + refs: factor out set_read_ref_cutoffs()

 After expiring a reflog and making a single commit, the reflog for
 the branch would record a single entry that knows both @{0} and
 @{1}, but we failed to answer "what commit were we on?", i.e. @{1}

 Will merge to 'master'.


* ds/cache-tree-basics (2021-01-15) 10 commits
 - cache-tree: speed up consecutive path comparisons
 - cache-tree: use ce_namelen() instead of strlen()
 - index-format: discuss recursion of cache-tree better
 - index-format: update preamble to cache tree extension
 - index-format: use 'cache tree' over 'cached tree'
 - cache-tree: trace regions for prime_cache_tree
 - cache-tree: trace regions for I/O
 - cache-tree: use trace2 in cache_tree_update()
 - unpack-trees: add trace2 regions
 - tree-walk: report recursion counts

 Document, clean-up and optimize the code around the cache-tree
 extension in the index.

 Will merge to 'next'.


* en/ort-conflict-handling (2021-01-04) 10 commits
 - merge-ort: add handling for different types of files at same path
 - merge-ort: copy find_first_merges() implementation from merge-recursive.c
 - merge-ort: implement format_commit()
 - merge-ort: copy and adapt merge_submodule() from merge-recursive.c
 - merge-ort: copy and adapt merge_3way() from merge-recursive.c
 - merge-ort: flesh out implementation of handle_content_merge()
 - merge-ort: handle book-keeping around two- and three-way content merge
 - merge-ort: implement unique_path() helper
 - merge-ort: handle directory/file conflicts that remain
 - merge-ort: handle D/F conflict where directory disappears due to merge
 (this branch is used by en/merge-ort-perf.)

 ORT merge strategy learns more support for merge conflicts.

 Will merge to 'next'.


* ma/more-opaque-lock-file (2021-01-06) 5 commits
  (merged to 'next' on 2021-01-12 at f246e38b50)
 + read-cache: try not to peek into `struct {lock_,temp}file`
 + refs/files-backend: don't peek into `struct lock_file`
 + midx: don't peek into `struct lock_file`
 + commit-graph: don't peek into `struct lock_file`
 + builtin/gc: don't peek into `struct lock_file`

 Code clean-up.

 Will merge to 'master'.


* sg/t7800-difftool-robustify (2021-01-09) 1 commit
 - t7800-difftool: don't accidentally match tmp dirs

 Test fix.

 Not working on Windows.
 cf. https://github.com/git/git/runs/1660588243?check_suite_focus=true#step:7:4186


* ak/corrected-commit-date (2021-01-16) 11 commits
 - doc: add corrected commit date info
 - commit-reach: use corrected commit dates in paint_down_to_common()
 - commit-graph: use generation v2 only if entire chain does
 - commit-graph: implement generation data chunk
 - commit-graph: implement corrected commit date
 - commit-graph: return 64-bit generation number
 - commit-graph: add a slab to store topological levels
 - t6600-test-reach: generalize *_three_modes
 - commit-graph: consolidate fill_commit_graph_info
 - revision: parse parent in indegree_walk_step()
 - commit-graph: fix regression when computing Bloom filters

 The commit-graph learned to use corrected commit dates instead of
 the generation number to help topological revision traversal.


* fc/mergetool-automerge (2021-01-09) 8 commits
 . fixup! mergetool: break setup_tool out into separate initialization function
 . fixup! fixup! mergetool: add automerge configuration
 . fixup! mergetool: add automerge configuration
 . mergetool: add automerge_enabled tool-specific override function
 . mergetool: break setup_tool out into separate initialization function
 . mergetool: add per-tool support for the autoMerge flag
 . mergetool: alphabetize the mergetool config docs
 . mergetool: add automerge configuration

 "git mergetool" feeds three versions (base, local and remote) of
 a conflicted path unmodified.  The command learned to optionally
 prepare these files with unconflicted parts already resolved.

 Breaks tests on Windows
 cf. https://github.com/git/git/runs/1675932107?check_suite_focus=true#step:7:10373


* mr/bisect-in-c-4 (2020-12-21) 7 commits
 - bisect--helper: retire `--check-and-set-terms` subcommand
 - bisect--helper: reimplement `bisect_skip` shell function in C
 - bisect--helper: retire `--bisect-auto-next` subcommand
 - bisect--helper: use `res` instead of return in BISECT_RESET case option
 - bisect--helper: retire `--bisect-write` subcommand
 - bisect--helper: reimplement `bisect_replay` shell function in C
 - bisect--helper: reimplement `bisect_log` shell function in C

 Piecemeal of rewrite of "git bisect" in C continues.

 What's the status of this thing?


* jt/clone-unborn-head (2020-12-22) 3 commits
 - clone: respect remote unborn HEAD
 - connect, transport: add no-op arg for future patch
 - ls-refs: report unborn targets of symrefs

 "git clone" tries to locally check out the branch pointed at by
 HEAD of the remote repository after it is done, but the protocol
 did not convey the information necessary to do so when copying an
 empty repository.  The protocol v2 learned how to do so.

 What's the status of this thing?


* fc/bash-completion-post-2.29 (2020-12-23) 4 commits
 . completion: bash: add correct suffix in variables
 . completion: bash: fix for multiple dash commands
 . completion: bash: fix for suboptions with value
 . completion: bash: fix prefix detection in branch.*

 Seems to break tests on Windows


* jc/deprecate-pack-redundant (2020-12-15) 1 commit
  (merged to 'next' on 2021-01-12 at 14034c7892)
 + pack-redundant: gauge the usage before proposing its removal

 Warn loudly when the "pack-redundant" command, which has been left
 stale with almost unusable performance issues, gets used, as we no
 longer want to recommend its use (instead just "repack -d" instead).

 Will merge to 'master'.


* mt/parallel-checkout-part-1 (2020-12-16) 9 commits
 - entry: add checkout_entry_ca() taking preloaded conv_attrs
 - entry: move conv_attrs lookup up to checkout_entry()
 - entry: extract update_ce_after_write() from write_entry()
 - entry: make fstat_output() and read_blob_entry() public
 - entry: extract a header file for entry.c functions
 - convert: add classification for conv_attrs struct
 - convert: add get_stream_filter_ca() variant
 - convert: add [async_]convert_to_working_tree_ca() variants
 - convert: make convert_attrs() and convert structs public

 Parallel checkout.

 Looking good.


* en/merge-ort-3 (2020-12-15) 11 commits
  (merged to 'next' on 2021-01-08 at fe481b9627)
 + merge-ort: add implementation of type-changed rename handling
 + merge-ort: add implementation of normal rename handling
 + merge-ort: add implementation of rename collisions
 + merge-ort: add implementation of rename/delete conflicts
 + merge-ort: add implementation of both sides renaming differently
 + merge-ort: add implementation of both sides renaming identically
 + merge-ort: add basic outline for process_renames()
 + merge-ort: implement compare_pairs() and collect_renames()
 + merge-ort: implement detect_regular_renames()
 + merge-ort: add initial outline for basic rename detection
 + merge-ort: add basic data structures for handling renames
 (this branch is used by en/merge-ort-perf and en/ort-directory-rename.)

 Rename detection is added to the "ORT" merge strategy.

 Will merge to 'master'.


* ps/config-env-pairs (2021-01-15) 8 commits
  (merged to 'next' on 2021-01-15 at 4ed0341270)
 + config: allow specifying config entries via envvar pairs
 + environment: make `getenv_safe()` a public function
 + config: store "git -c" variables using more robust format
 + config: parse more robust format in GIT_CONFIG_PARAMETERS
 + config: extract function to parse config pairs
 + quote: make sq_dequote_step() a public function
 + config: add new way to pass config via `--config-env`
 + git: add `--super-prefix` to usage string

 Introduce two new ways to feed configuration variable-value pairs
 via environment variables, and tweak the way GIT_CONFIG_PARAMETERS
 encodes variable/value pairs to make it more robust.

 Will merge to 'master'.


* so/log-diff-merge (2020-12-21) 32 commits
 - t4013: add tests for --diff-merges=first-parent
 - doc/git-show: include --diff-merges description
 - doc/rev-list-options: document --first-parent changes merges format
 - doc/diff-generate-patch: mention new --diff-merges option
 - doc/git-log: describe new --diff-merges options
 - diff-merges: add '--diff-merges=1' as synonym for 'first-parent'
 - diff-merges: add old mnemonic counterparts to --diff-merges
 - diff-merges: let new options enable diff without -p
 - diff-merges: do not imply -p for new options
 - diff-merges: implement new values for --diff-merges
 - diff-merges: make -m/-c/--cc explicitly mutually exclusive
 - diff-merges: refactor opt settings into separate functions
 - diff-merges: get rid of now empty diff_merges_init_revs()
 - diff-merges: group diff-merge flags next to each other inside 'rev_info'
 - diff-merges: split 'ignore_merges' field
 - diff-merges: fix -m to properly override -c/--cc
 - t4013: add tests for -m failing to override -c/--cc
 - t4013: support test_expect_failure through ':failure' magic
 - diff-merges: revise revs->diff flag handling
 - diff-merges: handle imply -p on -c/--cc logic for log.c
 - diff-merges: introduce revs->first_parent_merges flag
 - diff-merges: new function diff_merges_set_dense_combined_if_unset()
 - diff-merges: new function diff_merges_suppress()
 - diff-merges: re-arrange functions to match the order they are called in
 - diff-merges: rename diff_merges_default_to_enable() to match semantics
 - diff-merges: move checks for first_parent_only out of the module
 - diff-merges: rename all functions to have common prefix
 - revision: move diff merges functions to its own diff-merges.c
 - revision: provide implementation for diff merges tweaks
 - revision: factor out initialization of diff-merge related settings
 - revision: factor out setup of diff-merge related settings
 - revision: factor out parsing of diff-merge related options

 "git log" learned a new "--diff-merges=<how>" option.

 Will merge to 'next'.


* es/config-hooks (2020-12-21) 34 commits
 - run-command: stop thinking about hooks
 - receive-pack: convert receive hooks to hook.h
 - post-update: use hook.h library
 - proc-receive: acquire hook list from hook.h
 - receive-pack: convert 'update' hook to hook.h
 - reference-transaction: look for hooks in config
 - transport: convert pre-push hook to use config
 - hook: convert 'post-rewrite' hook to config
 - hooks: convert 'post-checkout' hook to hook library
 - git-p4: use 'git hook' to run hooks
 - receive-pack: convert push-to-checkout hook to hook.h
 - read-cache: convert post-index-change hook to use config
 - rebase: teach pre-rebase to use hook.h
 - gc: use hook library for pre-auto-gc hook
 - merge: use config-based hooks for post-merge hook
 - am: convert applypatch hooks to use config
 - commit: use config-based hooks
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - hook: provide stdin by string_list or callback
 - run-command: add stdin callback for parallelization
 - hook: allow specifying working directory for hooks
 - hook: allow parallel hook execution
 - run-command: allow stdin for run_processes_parallel
 - hook: support passing stdin to hooks
 - hook: replace find_hook() with hook_exists()
 - hook: add 'run' subcommand
 - parse-options: parse into strvec
 - hook: implement hookcmd.<name>.skip
 - hook: respect hook.runHookDir
 - hook: include hookdir hook in list
 - hook: add list command
 - hook: scaffolding for git-hook subcommand
 - doc: propose hooks managed by the config

 The "hooks defined in config" topic.

 Expecting doc updates, but otherwise seems to be progressing nicely.


* hn/reftable (2020-12-21) 16 commits
 - SQUASH??? allow t0031 to run with any default branch name
 - Add "test-tool dump-reftable" command.
 - git-prompt: prepare for reftable refs backend
 - Reftable support for git-core
 - reftable: rest of library
 - reftable: reftable file level tests
 - reftable: read reftable files
 - reftable: write reftable files
 - reftable: a generic binary tree implementation
 - reftable: reading/writing blocks
 - reftable: (de)serialization for the polymorphic record type.
 - reftable: add blocksource, an abstraction for random access reads
 - reftable: utility functions
 - reftable: add error related functionality
 - reftable: add LICENSE
 - init-db: set the_repository->hash_algo early on

 The "reftable" backend for the refs API.


* ab/mktag (2021-01-06) 23 commits
  (merged to 'next' on 2021-01-08 at 6f9e11ad97)
 + mktag: add a --[no-]strict option
 + mktag: mark strings for translation
 + mktag: convert to parse-options
 + mktag: allow omitting the header/body \n separator
 + mktag: allow turning off fsck.extraHeaderEntry
 + fsck: make fsck_config() re-usable
 + mktag: use fsck instead of custom verify_tag()
 + mktag: use puts(str) instead of printf("%s\n", str)
 + mktag: remove redundant braces in one-line body "if"
 + mktag: use default strbuf_read() hint
 + mktag tests: test verify_object() with replaced objects
 + mktag tests: improve verify_object() test coverage
 + mktag tests: test "hash-object" compatibility
 + mktag tests: stress test whitespace handling
 + mktag tests: run "fsck" after creating "mytag"
 + mktag tests: don't create "mytag" twice
 + mktag tests: don't redirect stderr to a file needlessly
 + mktag tests: remove needless SHA-1 hardcoding
 + mktag tests: use "test_commit" helper
 + mktag tests: don't needlessly use a subshell
 + mktag doc: update to explain why to use this
 + mktag doc: grammar fix, when exists -> when it exists
 + mktag doc: say <hash> not <sha1>

 "git mktag" validates its input using its own rules before writing
 a tag object---it has been updated to share the logic with "git
 fsck".

 Will merge to 'master'.


* en/diffcore-rename (2021-01-04) 9 commits
  (merged to 'next' on 2021-01-12 at fa769ebc35)
 + diffcore-rename: remove unnecessary duplicate entry checks
 + diffcore-rename: accelerate rename_dst setup
 + diffcore-rename: simplify and accelerate register_rename_src()
 + t4058: explore duplicate tree entry handling in a bit more detail
 + t4058: add more tests and documentation for duplicate tree entry handling
 + diffcore-rename: reduce jumpiness in progress counters
 + diffcore-rename: simplify limit check
 + diffcore-rename: avoid usage of global in too_many_rename_candidates()
 + diffcore-rename: rename num_create to num_destinations
 (this branch is used by en/merge-ort-perf.)

 File-level rename detection updates.

 Will merge to 'master'.


* js/default-branch-name-tests-final-stretch (2020-11-19) 29 commits
  (merged to 'next' on 2021-01-13 at 0e93f0d529)
 + tests: drop prereq `PREPARE_FOR_MAIN_BRANCH` where no longer needed
 + t99*: adjust the references to the default branch name "main"
 + tests(git-p4): transition to the default branch name `main`
 + t9[5-7]*: adjust the references to the default branch name "main"
 + t9[0-4]*: adjust the references to the default branch name "main"
 + t8*: adjust the references to the default branch name "main"
 + t7[5-9]*: adjust the references to the default branch name "main"
 + t7[0-4]*: adjust the references to the default branch name "main"
 + t6[4-9]*: adjust the references to the default branch name "main"
 + t64*: preemptively adjust alignment to prepare for `master` -> `main`
 + t6[0-3]*: adjust the references to the default branch name "main"
 + t5[6-9]*: adjust the references to the default branch name "main"
 + t55[4-9]*: adjust the references to the default branch name "main"
 + t55[23]*: adjust the references to the default branch name "main"
 + t551*: adjust the references to the default branch name "main"
 + t550*: adjust the references to the default branch name "main"
 + t5503: prepare aligned comment for replacing `master` with `main`
 + t5[0-4]*: adjust the references to the default branch name "main"
 + t5323: prepare centered comment for `master` -> `main`
 + t4*: adjust the references to the default branch name "main"
 + t3[5-9]*: adjust the references to the default branch name "main"
 + t34*: adjust the references to the default branch name "main"
 + t3416: preemptively adjust alignment in a comment
 + t3[0-3]*: adjust the references to the default branch name "main"
 + t2*: adjust the references to the default branch name "main"
 + t[01]*: adjust the references to the default branch name "main"
 + t0060: preemptively adjust alignment
 + tests: mark tests relying on the current default for `init.defaultBranch`
 + Merge 'jk/diff-release-filespec-fix' into js/default-branch-name-tests-final-stretch

 Prepare tests not to be affected by the name of the default branch
 "git init" creates.

 Will merge to 'master'.


* sj/untracked-files-in-submodule-directory-is-not-dirty (2020-12-08) 1 commit
  (merged to 'next' on 2021-01-12 at 2aca21c42e)
 + diff: do not show submodule with untracked files as "-dirty"

 "git diff" showed a submodule working tree with untracked cruft as
 "Submodule commit <objectname>-dirty", but a natural expectation is
 that the "-dirty" indicator would align with "git describe --dirty",
 which does not consider having untracked files in the working tree
 as source of dirtiness.  The inconsistency has been fixed.

 Will merge to 'master'.

--------------------------------------------------
[Discarded]

* jc/config-pretend-gitdir (2020-12-15) 1 commit
 . config: --pretend-git-dir for includeIf:gitdir

 It turns out that the original "problem" that inspired the feature
 was working as designed.
 cf. <CAPQE4+rhWT9kgusNXOw5cnJ-oFq++4G1FMaXvQ3wppQ0GE0hSA@mail.gmail.com>


* bc/hashed-mailmap (2020-12-12) 1 commit
 . mailmap: support hashed entries in mailmaps

 The mailmap database learned to take hashed value as the original
 side of mapping.

 Retracted for now.
 cf. <X/uvhc5Hpu792qA/@camp.crustytoothpaste.net>

^ permalink raw reply	[relevance 1%]

* What's cooking in git.git (Nov 2020, #01; Mon, 2)
@ 2020-11-02 22:27  1% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-11-02 22:27 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'seen' (formerly 'pu'---proposed updates) while commits prefixed
with '+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The third batch of topics in this cycle are in 'master' now,
including some microprojects by candidates for the Outreachy
program.

Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into.  Some repositories have
only a subset of branches.

With maint, master, next, seen, todo:

	git://git.kernel.org/pub/scm/git/git.git/
	git://repo.or.cz/alt-git.git/
	https://kernel.googlesource.com/pub/scm/git/git/
	https://github.com/git/git/

With all the integration branches and topics broken out:

	https://github.com/gitster/git/

Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):

	git://git.kernel.org/pub/scm/git/git-htmldocs.git/
	https://github.com/gitster/git-htmldocs.git/

Release tarballs are available at:

	https://www.kernel.org/pub/software/scm/git/

--------------------------------------------------
[Graduated to 'master']

* as/sample-push-to-checkout-hook (2020-10-16) 1 commit
  (merged to 'next' on 2020-10-26 at 644026c2f6)
 + hook: add sample template for push-to-checkout

 Add a sample 'push-to-checkout' hook, that performs the same as
 what the built-in default action does.


* bc/svn-hash-oid-fix (2020-10-21) 1 commit
  (merged to 'next' on 2020-10-26 at 743b549d5d)
 + svn: use correct variable name for short OID

 A recent oid->hash conversion missed one spot, breaking "git svn".


* bk/sob-dco (2020-10-20) 4 commits
  (merged to 'next' on 2020-10-26 at d0e5066a7e)
 + Documentation: stylistically normalize references to Signed-off-by:
 + SubmittingPatches: clarify DCO is our --signoff rule
 + Documentation: clarify and expand description of --signoff
 + doc: preparatory clean-up of description on the sign-off option

 Document that the meaning of a Signed-off-by trailer can vary from
 project to project in the end-user documentation, and clarify what
 it means to this project.


* cm/t7xxx-cleanup (2020-10-22) 6 commits
  (merged to 'next' on 2020-10-26 at 8b58e54942)
 + t7102: prepare expected output inside test_expect_* block
 + t7201: put each command on a separate line
 + t7201: use 'git -C' to avoid subshell
 + t7102,t7201: remove whitespace after redirect operator
 + t7102,t7201: remove unnecessary blank spaces in test body
 + t7101,t7102,t7201: modernize test formatting

 Originally merged to 'next' on 2020-10-23

 Micro clean-up.


* ct/t0000-use-test-path-is-file (2020-10-18) 1 commit
  (merged to 'next' on 2020-10-26 at 9b70aa748f)
 + t0000: use test_path_is_file instead of "test -f"

 Originally merged to 'next' on 2020-10-23

 Micro clean-up of a test script.


* dl/diff-merge-base (2020-09-21) 10 commits
  (merged to 'next' on 2020-10-26 at 114d94030b)
 + contrib/completion: complete `git diff --merge-base`
 + builtin/diff-tree: learn --merge-base
 + builtin/diff-index: learn --merge-base
 + t4068: add --merge-base tests
 + diff-lib: define diff_get_merge_base()
 + diff-lib: accept option flags in run_diff_index()
 + contrib/completion: extract common diff/difftool options
 + git-diff.txt: backtick quote command text
 + git-diff-index.txt: make --cached description a proper sentence
 + t4068: remove unnecessary >tmp

 "git diff A...B" learned "git diff --merge-base A B", which is a
 longer short-hand to say the same thing.


* dl/resurrect-update-for-sha256 (2020-10-08) 2 commits
  (merged to 'next' on 2020-10-26 at 7e94297aa4)
 + contrib/git-resurrect.sh: use hash-agnostic OID pattern
 + contrib/git-resurrect.sh: indent with tabs

 Originally merged to 'next' on 2020-10-23

 "git resurrect" script (in contrib/) learned that the object names
 may be longer than 40-hex depending on the hash function in use.


* ds/commit-graph-merging-fix (2020-10-09) 2 commits
  (merged to 'next' on 2020-10-26 at a0cf763826)
 + commit-graph: don't write commit-graph when disabled
 + commit-graph: ignore duplicates when merging layers

 When "git commit-graph" detects the same commit recorded more than
 once while it is merging the layers, it used to die.  The code now
 ignores all but one of them and continues.


* ds/maintenance-commit-graph-auto-fix (2020-10-12) 2 commits
  (merged to 'next' on 2020-10-26 at 429d1371d8)
 + maintenance: core.commitGraph=false prevents writes
 + maintenance: test commit-graph auto condition

 Test-coverage enhancement of running commit-graph task "git
 maintenance" as needed led to discovery and fix of a bug.


* en/sequencer-rollback-lock-cleanup (2020-10-21) 1 commit
  (merged to 'next' on 2020-10-26 at 1234e8297f)
 + sequencer: remove duplicate rollback_lock_file() call

 Code clean-up.


* en/t7518-unflake (2020-10-18) 1 commit
  (merged to 'next' on 2020-10-26 at 443459f7ca)
 + t7518: fix flaky grep invocation

 Originally merged to 'next' on 2020-10-23

 Work around flakiness in a test.


* en/test-selector (2020-10-18) 3 commits
  (merged to 'next' on 2020-10-26 at 3d6e77c3ff)
 + test-lib: reduce verbosity of skipped tests
 + t6006, t6012: adjust tests to use 'setup' instead of synonyms
 + test-lib: allow selecting tests by substring/glob with --run

 Our test scripts can be told to run only individual pieces while
 skipping others with the "--run=..." option; they were taught to
 take a substring of test title, in addition to numbers, to name the
 test pieces to run.


* es/test-cmp-typocatcher (2020-10-20) 1 commit
  (merged to 'next' on 2020-10-26 at 62d89db753)
 + Revert "test_cmp: diagnose incorrect arguments"

 A test helper "test_cmp A B" was taught to diagnose missing files A
 or B as a bug in test, but some tests legitimately wanted to notice
 a failure to even create file B as an error, in addition to leaving
 the expected result in it, and were misdiagnosed as a bug.  This
 has been corrected.


* es/tutorial-mention-asciidoc-early (2020-10-16) 1 commit
  (merged to 'next' on 2020-10-28 at 96e0d84d94)
 + MyFirstContribution: clarify asciidoc dependency

 Doc update.


* jc/doc-final-resend (2020-10-26) 1 commit
  (merged to 'next' on 2020-10-30 at 2dd2c8a0d9)
 + SubmittingPatches: clarify the purpose of the final resend

 Update developer doc.


* jk/fast-import-marks-alloc-fix (2020-10-15) 1 commit
  (merged to 'next' on 2020-10-26 at 2f0a73fd48)
 + fast-import: fix over-allocation of marks storage

 "git fast-import" wasted a lot of memory when many marks were in use.


* jk/fast-import-marks-cleanup (2020-10-16) 1 commit
  (merged to 'next' on 2020-10-26 at 1ba987dd54)
 + fast-import: remove duplicated option-parsing line

 Code clean-up.


* jk/no-common (2020-10-16) 1 commit
  (merged to 'next' on 2020-10-26 at c888cb8b28)
 + config.mak.dev: build with -fno-common

 Dev support to catch a tentative definition of a variable in our C
 code as an error.


* jk/report-fn-typedef (2020-10-16) 1 commit
  (merged to 'next' on 2020-10-26 at fa4e128b65)
 + usage: define a type for a reporting function

 Code clean-up.


* js/avoid-split-sideband-message (2020-10-27) 3 commits
  (merged to 'next' on 2020-10-27 at 06b2f75522)
 + test-pkt-line: drop colon from sideband identity
  (merged to 'next' on 2020-10-26 at 1b550f3245)
 + sideband: report unhandled incomplete sideband messages as bugs
 + sideband: avoid reporting incomplete sideband messages
 (this branch is used by jk/sideband-more-error-checking.)

 The side-band status report can be sent at the same time as the
 primary payload multiplexed, but the demultiplexer on the receiving
 end incorrectly split a single status report into two, which has
 been corrected.


* js/ci-ghwf-dedup-tests (2020-10-12) 2 commits
  (merged to 'next' on 2020-10-26 at 4832a8f40b)
 + ci: make the "skip-if-redundant" check more defensive
 + ci: work around old records of GitHub runs

 Originally merged to 'next' on 2020-10-23

 GitHub Actions automated test improvement to skip tests on a tree
 identical to what has already been tested.


* js/default-branch-name-part-4-minus-1 (2020-10-23) 9 commits
  (merged to 'next' on 2020-10-26 at 0a66b76c66)
 + t1400: prepare for `main` being default branch name
 + tests: prepare aligned mentions of the default branch name
 + t9902: prepare a test for the upcoming default branch name
 + t3200: prepare for `main` being shorter than `master`
 + t5703: adjust a test case for the upcoming default branch name
 + t6200: adjust suppression pattern to also match "main"
 + tests: start moving to a different default main branch name
 + t9801: use `--` in preparation for default branch rename
 + fmt-merge-msg: also suppress "into main" by default
 (this branch is used by js/default-branch-name-adjust-t5411.)

 Adjust tests so that they won't scream when the default initial
 branch name is changed to 'main'.


* js/t7006-cleanup (2020-10-21) 1 commit
  (merged to 'next' on 2020-10-26 at b8582f842d)
 + t7006: Use test_path_is_* functions in test script

 Code clean-up.


* jt/apply-reverse-twice (2020-10-20) 1 commit
  (merged to 'next' on 2020-10-26 at f060893eb7)
 + apply: when -R, also reverse list of sections

 "git apply -R" did not handle patches that touch the same path
 twice correctly, which has been corrected.  This is most relevant
 in a patch that changes a path from a regular file to a symbolic
 link (and vice versa).


* lo/zsh-completion (2020-10-16) 1 commit
  (merged to 'next' on 2020-10-26 at 100dc6adde)
 + completion: fix zsh installation instructions

 Update instructions for command line completion (in contrib/) for zsh.


* mk/diff-ignore-regex (2020-10-20) 2 commits
  (merged to 'next' on 2020-10-26 at c68727da93)
 + diff: add -I<regex> that ignores matching changes
 + merge-base, xdiff: zero out xpparam_t structures

 "git diff" family of commands learned the "-I<regex>" option to
 ignore hunks whose changed lines all match the given pattern.


* nk/dir-c-comment-update (2020-10-16) 1 commit
  (merged to 'next' on 2020-10-26 at 3a4cb82ad6)
 + dir.c: fix comments to agree with argument name

 Update stale in-code comment.


* sc/sequencer-gpg-octopus (2020-10-18) 3 commits
  (merged to 'next' on 2020-10-26 at e1c956e52a)
 + t3435: add tests for rebase -r GPG signing
 + sequencer: pass explicit --no-gpg-sign to merge
 + sequencer: fix gpg option passed to merge subcommand

 "git rebase --rebase-merges" did not correctly pass --gpg-sign
 command line option to underlying "git merge" when replaying a merge
 using non-default merge strategy or when replaying an octopus merge
 (because replaying a two-head merge with the default strategy was
 done in a separate codepath, the problem did not trigger for most
 users), which has been corrected.


* tk/credential-config (2020-10-16) 1 commit
  (merged to 'next' on 2020-10-26 at 6ab486f389)
 + credential: load default config

 "git credential' didn't honor the core.askPass configuration
 variable (among other things), which has been corrected.


* ve/userdiff-bash (2020-10-22) 1 commit
  (merged to 'next' on 2020-10-26 at 2b34be98fe)
 + userdiff: support Bash

 The userdiff pattern learned to identify the function definition in
 POSIX shells and bash.

--------------------------------------------------
[New Topics]

* dd/upload-pack-stateless-eof (2020-10-30) 1 commit
 - upload-pack: allow stateless client EOF just prior to haves


* js/trace2-session-id (2020-10-31) 11 commits
 - upload-pack.c: fix a sparse warning
 - receive-pack: log received client trace2 SID
 - send-pack: advertise trace2 SID in capabilities
 - upload-pack, serve: log received client trace2 SID
 - fetch-pack: advertise trace2 SID in capabilities
 - transport: log received server trace2 SID
 - serve: advertise trace2 SID in v2 capabilities
 - receive-pack: advertise trace2 SID in v0 capabilities
 - upload-pack: advertise trace2 SID in v0 capabilities
 - docs: new trace2.advertiseSID option
 - docs: new capability to advertise trace2 SIDs


* so/format-patch-doc-on-default-diff-format (2020-10-31) 1 commit
 - doc/diff-options: fix out of place mentions of '--patch/-p'


* jc/sparse-error-for-developer-build (2020-10-31) 1 commit
 - Makefile: enable -Wsparse-error for DEVELOPER build


* pb/blame-funcname-range-userdiff (2020-11-01) 8 commits
 - blame: simplify 'setup_blame_bloom_data' interface
 - blame: simplify 'setup_scoreboard' interface
 - blame: enable funcname blaming with userdiff driver
 - line-log: mention both modes in 'blame' and 'log' short help
 - doc: add more pointers to gitattributes(5) for userdiff
 - blame-options.txt: also mention 'funcname' in '-L' description
 - doc: line-range: improve formatting
 - doc: log, gitk: move '-L' description to 'line-range-options.txt'


* rs/clear-commit-marks-in-repo (2020-10-31) 2 commits
 - bisect: clear flags in passed repository
 - object: allow clear_commit_marks_all to handle any repo


* rs/empty-stash-check-fix (2020-11-01) 1 commit
 - stash: simplify reflog emptiness check


* rs/pack-write-hashwrite-simplify (2020-11-01) 1 commit
 - pack-write: use hashwrite_be32() instead of double-buffering array


* sd/prompt-local-variable (2020-11-01) 1 commit
 - git-prompt.sh: localize `option` in __git_ps1_show_upstream


* so/log-diff-merge (2020-11-01) 26 commits
 - doc/rev-list-options: document --first-parent implies --diff-merges=first-parent
 - doc/diff-generate-patch: mention new --diff-merges option
 - doc/git-log: describe new --diff-merges options
 - t4013: add test for --diff-merges=first-parent
 - diff-merges: implement new values for --diff-merges
 - diff-merges: make -m/-c/--cc explicitly mutually exclusive
 - diff-merges: refactor opt settings into separate functions
 - diff-merges: get rid of now empty diff_merges_init_revs()
 - diff-merges: group diff-merge flags next to each other inside 'rev_info'
 - diff-merges: split 'ignore_merges' field
 - diff-merges: fix -m to properly override -c/--cc
 - t4013: add tests for -m failing to override -c/--cc
 - t4013: support test_expect_failure through ':failure' magic
 - diff-merges: revise revs->diff flag handling
 - diff-merges: introduce revs->first_parent_merges flag
 - diff-merges: new function diff_merges_set_dense_combined_if_unset()
 - diff-merges: new function diff_merges_suppress()
 - diff-merges: re-arrange functions to match the order they are called in
 - diff-merges: rename diff_merges_default_to_enable() to match semantics
 - diff-merges: move checks for first_parent_only out of the module
 - diff-merges: rename all functions to have common prefix
 - revision: move diff merges functions to its own diff-merges.c
 - revision: provide implementation for diff merges tweaks
 - revision: factor out initialization of diff-merge related settings
 - revision: factor out setup of diff-merge related settings
 - revision: factor out parsing of diff-merge related options

--------------------------------------------------
[Stalled]

* hn/reftable (2020-10-01) 13 commits
 . reftable: "test-tool dump-reftable" command.
 . reftable: rest of library
 . reftable: file level tests
 . reftable: read reftable files
 . reftable: write reftable files
 . reftable: a generic binary tree implementation
 . reftable: reading/writing blocks
 . reftable: (de)serialization for the polymorphic record type.
 . reftable: utility functions
 . reftable: add a barebones unittest framework
 . vcxproj: adjust for the reftable changes
 . reftable: define the public API
 . reftable: add LICENSE

 The reftable backend for the refs API.

 Expecting a reroll.
 Seems not to build for Windows folks.
 cf. <nycvar.QRO.7.76.6.2010021555290.50@tvgsbejvaqbjf.bet>
 cf. <nycvar.QRO.7.76.6.2010021557570.50@tvgsbejvaqbjf.bet>


* sm/curl-retry (2020-10-13) 3 commits
 - http: automatically retry some requests
 - replace CURLOPT_FILE With CURLOPT_WRITEDATA
 - remote-curl: add testing for intelligent retry for HTTP

 The http transport has been taught to retry a failed request that
 may reasonably be retried.

 cf. <20201015000410.GB328643@google.com>


* sv/t7001-modernize (2020-09-25) 11 commits
 - t7001: move cleanup code from outside the tests into them
 - t7001: use `test` rather than `[`
 - t7001: use here-docs instead of echo
 - t7001: put each command on a separate line
 - t7001: use ': >' rather than 'touch'
 - t7001: change (cd <path> && git foo) to (git -C <path> foo)
 - t7001: remove whitespace after redirect operators
 - t7001: change the style for cd according to subshell
 - t7001: remove unnecessary blank lines
 - t7001: use TAB instead of spaces
 - t7001: convert tests from the old style to the current style

 Test script modernization.

 Expecting a reroll.
 cf. <20200925170256.11490-1-shubhunic@gmail.com>


* ew/decline-core-abbrev (2020-09-01) 1 commit
 - core.abbrev <off|false|no> disables abbreviations

 Allow the configuration to specify no abbreviation regardless of
 the hash algorithm.

 Expecting a reroll.  The intent is very good.


* bc/rev-parse-path-format (2020-10-09) 2 commits
 - rev-parse: add option for absolute or relative path formatting
 - abspath: add a function to resolve paths with missing components

 "git rev-parse" can be explicitly told to give output as absolute
 or relative path.


* ar/fetch-transfer-ipversion (2020-09-16) 1 commit
 - config: option transfer.ipversion to set transport protocol version for network fetches

 Adds transfer.ipversion configuration variable.

 Needs more work.


* vv/send-email-with-less-secure-apps-access (2020-08-29) 1 commit
 - Documentation/git-send-email.txt: Mention less secure app access might need to enable.

 Doc update.

 Expecting a reroll.
 cf. <xmqqwo1hi9nv.fsf@gitster.c.googlers.com>
 cf. <xmqqft85i72s.fsf@gitster.c.googlers.com>


* jc/war-on-dashed-git (2020-08-27) 1 commit
 - git: catch an attempt to run "git-foo"

 The first step to remove on-disk binaries for built-in subcommands
 by soliciting objections.

 On hold for now.


* dr/push-remoteref-fix (2020-04-23) 1 commit
 - remote.c: fix handling of %(push:remoteref)

 The "%(push:remoteref)" placeholder in the "--format=" argument of
 "git format-patch" (and friends) only showed what got explicitly
 configured, not what ref at the receiving end would be updated when
 "git push" was used, as it ignored the default behaviour (e.g. update
 the same ref as the source).

 Discard for now.
 cf. <xmqqv9gu7c61.fsf@gitster.c.googlers.com>
 cf. <20200911214358.acl3hy2e763begoo@feanor>


* mk/use-size-t-in-zlib (2018-10-15) 1 commit
 - zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

--------------------------------------------------
[Needs Review]

* ag/merge-strategies-in-c (2020-10-06) 11 commits
 . sequencer: use the "octopus" merge strategy without forking
 . sequencer: use the "resolve" strategy without forking
 . merge: use the "octopus" strategy without forking
 . merge: use the "resolve" strategy without forking
 . merge-octopus: rewrite in C
 . merge-recursive: move better_branch_name() to merge.c
 . merge-resolve: rewrite in C
 . merge-index: don't fork if the requested program is `git-merge-one-file'
 . merge-index: libify merge_one_path() and merge_all()
 . merge-one-file: rewrite in C
 . t6027: modernise tests

 The resolve and octopus merge strategy backends have been rewritten
 in C.


* ss/submodule-add-in-c (2020-10-07) 3 commits
 . t7400: add test to check 'submodule add' for tracked paths
 . submodule: port submodule subcommand 'add' from shell to C
 . dir: change the scope of function 'directory_exists_in_index()'

 "git submodule add" being rewritten in C.

--------------------------------------------------
[Cooking]

* jk/sideband-more-error-checking (2020-10-29) 1 commit
  (merged to 'next' on 2020-10-30 at 8131784691)
 + sideband: diagnose more sideband anomalies

 The code to detect premature EOF in the sideband demultiplexer has
 been cleaned up.

 Will merge to 'master'.


* js/default-branch-name-adjust-t5411 (2020-10-31) 4 commits
  (merged to 'next' on 2020-11-02 at d625eda73c)
 + t5411: finish preparing for `main` being the default branch name
 + t5411: adjust the remaining support files for init.defaultBranch=main
 + t5411: start adjusting the support files for init.defaultBranch=main
 + t5411: start using the default branch name "main"

 Prepare a test script to transition of the default branch name to
 'main'.

 Will merge to 'master'.


* av/fsmonitor-cleanup (2020-10-21) 2 commits
 - fsmonitor: make output of test-dump-fsmonitor more concise
 - fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid

 Code clean-up.

 Unneeded?  Perhaps will drop.
 cf. <20201022183822.GA781760@nand.local>


* jc/sequencer-stopped-sha-simplify (2020-10-21) 1 commit
  (merged to 'next' on 2020-11-02 at ba3dd9eaf4)
 + sequencer: tolerate abbreviated stopped-sha file

 Recently the format of an internal state file "rebase -i" uses has
 been tightened up for consistency, which would hurt those who start
 "rebase -i" with old git and then continue with new git.  Loosen
 the reader side a bit (which we may want to tighten again in a year
 or so).

 Will merge to 'master'


* jk/perl-warning (2020-10-21) 1 commit
  (merged to 'next' on 2020-10-28 at 5fcb98f2ff)
 + perl: check for perl warnings while running tests

 Dev support.

 Will merge to 'master'.
 cf. <20201022032400.GC1480820@coredump.intra.peff.net>


* pb/ref-filter-with-crlf (2020-10-29) 2 commits
  (merged to 'next' on 2020-10-30 at 8be77584c5)
 + log, show: add tests for messages containing CRLF
 + ref-filter: handle CRLF at end-of-line more gracefully

 A commit and tag object may have CR at the end of each and
 every line (you can create such an object with hash-object or
 using --cleanup=verbatim to decline the default clean-up
 action), but it would make it impossible to have a blank line
 to separate the title from the body of the message.  Be lenient
 and accept a line with lone CR on it as a blank line, too.

 Will merge to 'master'.


* ab/git-remote-exit-code (2020-10-27) 1 commit
  (merged to 'next' on 2020-10-30 at 1fc119404b)
 + remote: add meaningful exit code on missing/existing

 Exit codes from "git remote add" etc. were not usable by scripted
 callers.

 Will merge to 'master'.


* en/merge-ort-api-null-impl (2020-10-29) 4 commits
 - merge,rebase,revert: select ort or recursive by config or environment
 - fast-rebase: demonstrate merge-ort's API via new test-tool command
 - merge-ort-wrappers: new convience wrappers to mimic the old merge API
 - merge-ort: barebones API of new merge strategy with empty implementation

 Preparation for a new merge strategy.

 Looking good.


* en/merge-tests (2020-10-26) 9 commits
 - t6423: add more details about direct resolution of directories
 - t6423: note improved ort handling with untracked files
 - t6423, t6436: note improved ort handling with dirty files
 - merge tests: expect slight differences in output for recursive vs. ort
 - t6423: expect improved conflict markers labels in the ort backend
 - t6404, t6423: expect improved rename/delete handling in ort backend
 - t6416: correct expectation for rename/rename(1to2) + directory/file
 - merge tests: expect improved directory/file conflict handling in ort
 - t/: new helper for tests that pass with ort but fail with recursive
 (this branch uses en/dir-rename-tests.)

 Preparation for a new merge strategy.


* jk/committer-date-is-author-date-fix-simplify (2020-10-26) 1 commit
  (merged to 'next' on 2020-10-30 at 9ba3fad57d)
 + am, sequencer: stop parsing our own committer ident

 Code simplification.

 Will merge to 'master'.


* sj/untracked-files-in-submodule-directory-is-not-dirty (2020-10-26) 1 commit
 - diff: do not show submodule with untracked files as "-dirty"

 "git diff" showed a submodule working tree with untracked cruft as
 "Submodule commit <objectname>-dirty", but a natural expectation is
 that the "-dirty" indicator would align with "git describe --dirty",
 which does not consider having untracked files in the working tree
 as source of dirtiness.  The inconsistency has been fixed.

 Needs doc update.


* fc/zsh-completion (2020-10-28) 29 commits
  (merged to 'next' on 2020-11-02 at 2c5e3a73ad)
 + zsh: update copyright notices
 + completion: bash: remove old compat wrappers
 + completion: bash: cleanup cygwin check
 + completion: bash: trivial cleanup
 + completion: zsh: add simple version check
 + completion: zsh: trivial simplification
 + completion: zsh: add alias descriptions
 + completion: zsh: improve command tags
 + completion: zsh: refactor command completion
 + completion: zsh: shuffle functions around
 + completion: zsh: simplify file_direct
 + completion: zsh: simplify nl_append
 + completion: zsh: trivial cleanup
 + completion: zsh: simplify direct compadd
 + completion: zsh: simplify compadd functions
 + completion: zsh: fix splitting of words
 + completion: zsh: add missing direct_append
 + completion: fix conflict with bashcomp
 + completion: zsh: fix completion for --no-.. options
 + completion: bash: remove zsh wrapper
 + completion: bash: synchronize zsh wrapper
 + completion: zsh: fix for command aliasing
 + completion: prompt: fix color for Zsh
 + completion: zsh: update slave script locations
 + completion: zsh: fix for directories with spaces
 + completion: zsh: reorganize install instructions
 + completion: zsh: fix bash script extension
 + completion: zsh: fix name due to broken autoloading
 + completion: zsh: fix __gitcomp_direct()

 Zsh autocompletion (in contrib/) update.

 Will merge to 'master'.


* nk/perf-fsmonitor (2020-10-26) 10 commits
 - t/perf/fsmonitor: add benchmark for dirty status
 - t/perf/fsmonitor: perf comparison of multiple fsmonitor integrations
 - t/perf/fsmonitor: initialize test with git reset
 - t/perf/fsmonitor: factor setup for fsmonitor into function
 - t/perf/fsmonitor: silence initial git commit
 - t/perf/fsmonitor: shorten DESC to basename
 - t/perf/fsmonitor: factor description out for readability
 - t/perf/fsmonitor: improve error message if typoing hook name
 - t/perf/fsmonitor: move watchman setup to one-time-repo-setup
 - t/perf/fsmonitor: separate one time repo initialization
 (this branch uses nk/diff-files-vs-fsmonitor.)

 Add t/perf support for fsmonitor.


* jk/checkout-index-errors (2020-10-27) 2 commits
  (merged to 'next' on 2020-10-30 at 77dddffe1b)
 + checkout-index: propagate errors to exit code
 + checkout-index: drop error message from empty --stage=all
 (this branch is used by mt/parallel-checkout-part-1.)

 "git checkout-index" did not consistently signal an error with its
 exit status.

 Will merge to 'master'.


* pw/rebase-i-orig-head (2020-10-27) 4 commits
 - rebase -i: simplify get_revision_ranges()
 - rebase -i: use struct object_id when writing state
 - rebase -i: use struct object_id rather than looking up commit
 - rebase -i: stop overwriting ORIG_HEAD buffer

 "git rebase -i" did not

 Expecting an update to the log message, but otherwise the change
 looked sensible.
 cf. <xmqq7drbbcj5.fsf@gitster.c.googlers.com>


* en/strmap (2020-11-02) 13 commits
 - Use new HASHMAP_INIT macro to simplify hashmap initialization
 - strmap: take advantage of FLEXPTR_ALLOC_STR when relevant
 - strmap: enable allocations to come from a mem_pool
 - strmap: add a strset sub-type
 - strmap: add functions facilitating use as a string->int map
 - strmap: enable faster clearing and reusing of strmaps
 - strmap: add more utility functions
 - strmap: new utility functions
 - hashmap: provide deallocation function names
 - hashmap: introduce a new hashmap_partial_clear()
 - hashmap: allow re-use after hashmap_free()
 - hashmap: adjust spacing to fix argument alignment
 - hashmap: add usage documentation explaining hashmap_free[_entries]()

 A speciailization of hashmap that uses a string as key has been
 introduced.  Hopefully it will see wider use over time.

 Rerolled.
 cf. <20201023080202.GA4012156@coredump.intra.peff.net>
 cf. <CABPp-BFV8ZAu5vLarG2mX8gT5bfV31oqbd-vjAQF_YDcyNSRiw@mail.gmail.com>


* mr/bisect-in-c-3 (2020-10-16) 7 commits
  (merged to 'next' on 2020-10-28 at 435792b62f)
 + bisect--helper: retire `--bisect-autostart` subcommand
 + bisect--helper: retire `--write-terms` subcommand
 + bisect--helper: retire `--check-expected-revs` subcommand
 + bisect--helper: reimplement `bisect_state` & `bisect_head` shell functions in C
 + bisect--helper: retire `--next-all` subcommand
 + bisect--helper: retire `--bisect-clean-state` subcommand
 + bisect--helper: finish porting `bisect_start()` to C

 Rewriting "git bisect" in C continues.

 Will merge to 'master'.


* as/tests-cleanup (2020-10-18) 1 commit
  (merged to 'next' on 2020-10-28 at fd199beb31)
 + t2200,t9832: avoid using 'git' upstream in a pipe

 Micro clean-up of a couple of test scripts.

 Will merge to 'master'.


* en/dir-rename-tests (2020-10-16) 4 commits
  (merged to 'next' on 2020-10-28 at 7bbe123e70)
 + t6423: more involved rules for renaming directories into each other
 + t6423: update directory rename detection tests with new rule
 + t6423: more involved directory rename test
 + directory-rename-detection.txt: update references to regression tests
 (this branch is used by en/merge-tests.)

 More preliminary tests have been added to document desired outcome
 of various "directory rename" situations.

 Will merge to 'master'.


* nk/diff-files-vs-fsmonitor (2020-10-20) 7 commits
  (merged to 'next' on 2020-10-28 at d3af804056)
 + p7519-fsmonitor: add a git add benchmark
 + p7519-fsmonitor: refactor to avoid code duplication
 + perf lint: add make test-lint to perf tests
 + t/perf: add fsmonitor perf test for git diff
 + t/perf/p7519-fsmonitor.sh: warm cache on first git status
 + t/perf/README: elaborate on output format
 + fsmonitor: use fsmonitor data in `git diff`
 (this branch is used by nk/perf-fsmonitor.)

 "git diff" and other commands that share the same machinery to
 compare with working tree files have been taught to take advantage
 of the fsmonitor data when available.

 Will merge to 'master'.


* jk/symlinked-dotgitx-files (2020-10-23) 9 commits
  (merged to 'next' on 2020-10-26 at c1dd37b024)
 + docs: document symlink restrictions for .git* files
 + fsck: complain when .gitattributes or .gitignore is a symlink
 + verify_path(): disallow symlinks in .gitattributes and .gitignore
 + t0060: test obscured .gitattributes and .gitignore matching
 + t7450: test .gitmodules symlink matching against obscured names
 + t7450: test verify_path() handling of gitmodules
 + t7415: rename to expand scope
 + fsck_tree(): wrap some long lines
 + fsck_tree(): fix shadowed variable

 Originally merged to 'next' on 2020-10-23

 "git fsck" and the corresponding check done during the transport
 learned to ensure that in-tree files like `.gitignore` and
 `.gitattributes` are not symbolic links.

 It seems that there are real projects with .gitignore recorded as
 symlinks, which may need to loosen the fsck setting.  Do we need
 to introduce a class that is separate from symlinked .gitmodules
 that probably is with potential consequences that is more grave?


* ak/corrected-commit-date (2020-10-08) 10 commits
 - doc: add corrected commit date info
 - commit-reach: use corrected commit dates in paint_down_to_common()
 - commit-graph: use generation v2 only if entire chain does
 - commit-graph: implement generation data chunk
 - commit-graph: implement corrected commit date
 - commit-graph: add a slab to store topological levels
 - commit-graph: return 64-bit generation number
 - commit-graph: consolidate fill_commit_graph_info
 - revision: parse parent in indegree_walk_step()
 - commit-graph: fix regression when computing Bloom filters

 The commit-graph learned to use corrected commit dates instead of
 the generation number to help topological revision traversal.

 Almost there.
 cf. <685afed6-f01f-5d22-80d4-00fdc11caf0a@gmail.com>


* mt/parallel-checkout-part-1 (2020-10-29) 19 commits
 - ci: run test round with parallel-checkout enabled
 - parallel-checkout: add tests related to .gitattributes
 - parallel-checkout: add tests related to clone collisions
 - parallel-checkout: add tests for basic operations
 - checkout-index: add parallel checkout support
 - builtin/checkout.c: complete parallel checkout support
 - make_transient_cache_entry(): optionally alloc from mem_pool
 - parallel-checkout: support progress displaying
 - parallel-checkout: make it truly parallel
 - unpack-trees: add basic support for parallel checkout
 - entry: add checkout_entry_ca() which takes preloaded conv_attrs
 - entry: move conv_attrs lookup up to checkout_entry()
 - entry: extract cache_entry update from write_entry()
 - entry: make fstat_output() and read_blob_entry() public
 - entry: extract a header file for entry.c functions
 - convert: add conv_attrs classification
 - convert: add get_stream_filter_ca() variant
 - convert: add [async_]convert_to_working_tree_ca() variants
 - convert: make convert_attrs() and convert structs public
 (this branch uses jk/checkout-index-errors.)

 Parallel checkout.


* ds/maintenance-part-3 (2020-10-16) 8 commits
 - maintenance: add troubleshooting guide to docs
 - maintenance: use 'incremental' strategy by default
 - maintenance: create maintenance.strategy config
 - maintenance: add start/stop subcommands
 - maintenance: add [un]register subcommands
 - for-each-repo: run subcommands on configured repos
 - maintenance: add --schedule option and config
 - maintenance: optionally skip --auto process

 Parts of "git maintenance" to ease writing crontab entries (and
 other scheduling system configuration) for it.


* es/config-hooks (2020-10-16) 8 commits
 - hook: replace find_hook() with hook_exists()
 - hook: add 'run' subcommand
 - parse-options: parse into strvec
 - hook: implement hookcmd.<name>.skip
 - hook: include hookdir hook in list
 - hook: add list command
 - hook: scaffolding for git-hook subcommand
 - doc: propose hooks managed by the config

 The "hooks defined in config" topic.


* mt/grep-sparse-checkout (2020-09-10) 9 commits
 - config: add setting to ignore sparsity patterns in some cmds
 - grep: honor sparse checkout patterns
 - config: correctly read worktree configs in submodules
 - config: make do_git_config_sequence receive a 'struct repository'
 - t/helper/test-config: unify exit labels
 - t/helper/test-config: diagnose missing arguments
 - t/helper/test-config: be consistent with exit codes
 - t1308-config-set: avoid false positives when using test-config
 - doc: grep: unify info on configuration variables

 "git grep" has been tweaked to be limited to the sparse checkout
 paths.

^ permalink raw reply	[relevance 1%]

* [ANNOUNCE] Git v2.28.0
@ 2020-07-27 16:49  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-07-27 16:49 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

The latest feature release Git v2.28.0 is now available at the
usual places.  It is comprised of 317 non-merge commits since
v2.27.0, contributed by 58 people, 13 of which are new faces.
It is smaller than the releases in our recent past, mostly due to
the development cycle was near the shorter end of the spectrum (our
cycles last 8-12 weeks and this was a rare 8-week cycle).

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.28.0'
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.27.0 are as follows.
Welcome to the Git development community!

  Andrew Ng, Bojun Chen, Chris Torek, David J. Malan, Don
  Goodman-Wilson, Jiuyang Xie, Luc Van Oostenryck, Marco Trevisan
  (Treviño), Mikhail Terekhov, Miroslav Koškár, Rafael Aquini,
  Srinidhi Kaushik, and Trygve Aaberge.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Abhishek Kumar, Alessandro Menti, Ben Keene, brian m. carlson,
  Carlo Marcelo Arenas Belón, Christian Couder, Christopher
  Diaz Riveros, Denton Liu, Derrick Stolee, Đoàn Trần Công
  Danh, Elijah Newren, Emily Shaffer, Emir Sarı, Eric Sunshine,
  Han-Wen Nienhuys, Jacob Keller, Jean-Noël Avila, Jeff King,
  Jiang Xin, Johannes Schindelin, John Lin, Jonathan Nieder,
  Jonathan Tan, Jordi Mas, Josh Steadmon, Junio C Hamano, Laurent
  Arnoud, Martin Ågren, Matheus Tavares, Matthias Rüster, Paolo
  Bonzini, Patrick Steinhardt, Peter Krefting, Pratyush Yadav,
  Ralf Thielow, Ramsay Jones, Randall S. Becker, René Scharfe,
  Shourya Shukla, SZEDER Gábor, Taylor Blau, Trần Ngọc Quân,
  Ville Skyttä, Xin Li, and Yi-Jyun Pan.

----------------------------------------------------------------

Git 2.28 Release Notes
======================

Updates since v2.27
-------------------

Backward compatibility notes

 * "fetch.writeCommitGraph" is deemed to be still a bit too risky and
   is no longer part of the "feature.experimental" set.


UI, Workflows & Features

 * The commands in the "diff" family learned to honor "diff.relative"
   configuration variable.

 * The check in "git fsck" to ensure that the tree objects are sorted
   still had corner cases it missed unsorted entries.

 * The interface to redact sensitive information in the trace output
   has been simplified.

 * The command line completion (in contrib/) learned to complete
   options that the "git switch" command takes.

 * "git diff" used to take arguments in random and nonsense range
   notation, e.g. "git diff A..B C", "git diff A..B C...D", etc.,
   which has been cleaned up.

 * "git diff-files" has been taught to say paths that are marked as
   intent-to-add are new files, not modified from an empty blob.

 * "git status" learned to report the status of sparse checkout.

 * "git difftool" has trouble dealing with paths added to the index
   with the intent-to-add bit.

 * "git fast-export --anonymize" learned to take customized mapping to
   allow its users to tweak its output more usable for debugging.

 * The command line completion support (in contrib/) used to be
   prepared to work with "set -u" but recent changes got a bit more
   sloppy.  This has been corrected.

 * "git gui" now allows opening work trees from the start-up dialog.


Performance, Internal Implementation, Development Support etc.

 * Code optimization for a common case.
   (merge 8777616e4d an/merge-single-strategy-optim later to maint).

 * We've adopted a convention that any on-stack structure can be
   initialized to have zero values in all fields with "= { 0 }",
   even when the first field happens to be a pointer, but sparse
   complained that a null pointer should be spelled NULL for a long
   time.  Start using -Wno-universal-initializer option to squelch
   it (the latest sparse has it on by default).

 * "git log -L..." now takes advantage of the "which paths are touched
   by this commit?" info stored in the commit-graph system.

 * As FreeBSD is not the only platform whose regexp library reports
   a REG_ILLSEQ error when fed invalid UTF-8, add logic to detect that
   automatically and skip the affected tests.

 * "git bugreport" learns to report what shell is in use.

 * Support for GIT_CURL_VERBOSE has been rewritten in terms of
   GIT_TRACE_CURL.

 * Preliminary clean-ups around refs API, plus file format
   specification documentation for the reftable backend.

 * Workaround breakage in MSVC build, where "curl-config --cflags"
   gives settings appropriate for GCC build.

 * Code clean-up of "git clean" resulted in a fix of recent
   performance regression.

 * Code clean-up in the codepath that serves "git fetch" continues.

 * "git merge-base --is-ancestor" is taught to take advantage of the
   commit graph.

 * Rewrite of parts of the scripted "git submodule" Porcelain command
   continues; this time it is "git submodule set-branch" subcommand's
   turn.

 * The "fetch/clone" protocol has been updated to allow the server to
   instruct the clients to grab pre-packaged packfile(s) in addition
   to the packed object data coming over the wire.

 * A misdesigned strbuf_write_fd() function has been retired.

 * SHA-256 migration work continues, including CVS/SVN interface.

 * A few fields in "struct commit" that do not have to always be
   present have been moved to commit slabs.

 * API cleanup for get_worktrees()

 * By renumbering object flag bits, "struct object" managed to lose
   bloated inter-field padding.

 * The name of the primary branch in existing repositories, and the
   default name used for the first branch in newly created
   repositories, is made configurable, so that we can eventually wean
   ourselves off of the hardcoded 'master'.

 * The effort to avoid using test_must_fail on non-git command continues.

 * In 2.28-rc0, we corrected a bug that some repository extensions are
   honored by mistake even in a version 0 repositories (these
   configuration variables in extensions.* namespace were supposed to
   have special meaning in repositories whose version numbers are 1 or
   higher), but this was a bit too big a change.  The behaviour in
   recent versions of Git where certain extensions.* were honored by
   mistake even in version 0 repositories has been restored.


Fixes since v2.27
-----------------

 * The "--prepare-p4-only" option of "git p4" is supposed to stop
   after replaying one changeset, but kept going (by mistake?)

 * The error message from "git checkout -b foo -t bar baz" was
   confusing.

 * Some repositories in the wild have commits that record nonsense
   committer timezone (e.g. rails.git); "git fast-import" learned an
   option to pass these nonsense timestamps intact to allow recreating
   existing repositories as-is.
   (merge d42a2fb72f en/fast-import-looser-date later to maint).

 * The command line completion script (in contrib/) tried to complete
   "git stash -p" as if it were "git stash push -p", but it was too
   aggressive and also affected "git stash show -p", which has been
   corrected.
   (merge fffd0cf520 vs/complete-stash-show-p-fix later to maint).

 * On-the-wire protocol v2 easily falls into a deadlock between the
   remote-curl helper and the fetch-pack process when the server side
   prematurely throws an error and disconnects.  The communication has
   been updated to make it more robust.

 * "git checkout -p" did not handle a newly added path at all.
   (merge 2c8bd8471a js/checkout-p-new-file later to maint).

 * The code to parse "git bisect start" command line was lax in
   validating the arguments.
   (merge 4d9005ff5d cb/bisect-helper-parser-fix later to maint).

 * Reduce memory usage during "diff --quiet" in a worktree with too
   many stat-unmatched paths.
   (merge d2d7fbe129 jk/diff-memuse-optim-with-stat-unmatch later to maint).

 * The reflog entries for "git clone" and "git fetch" did not
   anonymize the URL they operated on.
   (merge 46da295a77 js/reflog-anonymize-for-clone-and-fetch later to maint).

 * The behaviour of "sparse-checkout" in the state "git clone
   --no-checkout" left was changed accidentally in 2.27, which has
   been corrected.

 * Use of negative pathspec, while collecting paths including
   untracked ones in the working tree, was broken.

 * The same worktree directory must be registered only once, but
   "git worktree move" allowed this invariant to be violated, which
   has been corrected.
   (merge 810382ed37 es/worktree-duplicate-paths later to maint).

 * The effect of sparse checkout settings on submodules is documented.
   (merge e7d7c73249 en/sparse-with-submodule-doc later to maint).

 * Code clean-up around "git branch" with a minor bugfix.
   (merge dc44639904 dl/branch-cleanup later to maint).

 * A branch name used in a test has been clarified to match what is
   going on.
   (merge 08dc26061f pb/t4014-unslave later to maint).

 * An in-code comment in "git diff" has been updated.
   (merge c592fd4c83 dl/diff-usage-comment-update later to maint).

 * The documentation and some tests have been adjusted for the recent
   renaming of "pu" branch to "seen".
   (merge 6dca5dbf93 js/pu-to-seen later to maint).

 * The code to push changes over "dumb" HTTP had a bad interaction
   with the commit reachability code due to incorrect allocation of
   object flag bits, which has been corrected.
   (merge 64472d15e9 bc/http-push-flagsfix later to maint).

 * "git send-email --in-reply-to=<msg>" did not use the In-Reply-To:
   header with the value given from the command line, and let it be
   overridden by the value on In-Reply-To: header in the messages
   being sent out (if exists).
   (merge f9f60d7066 ra/send-email-in-reply-to-from-command-line-wins later to maint).

 * "git log -Lx,y:path --before=date" lost track of where the range
   should be because it didn't take the changes made by the youngest
   commits that are omitted from the output into account.

 * When "fetch.writeCommitGraph" configuration is set in a shallow
   repository and a fetch moves the shallow boundary, we wrote out
   broken commit-graph files that do not match the reality, which has
   been corrected.

 * "git checkout" failed to catch an error from fstat() after updating
   a path in the working tree.
   (merge 35e6e212fd mt/entry-fstat-fallback-fix later to maint).

 * When an aliased command, whose output is piped to a pager by git,
   gets killed by a signal, the pager got into a funny state, which
   has been corrected (again).
   (merge c0d73a59c9 ta/wait-on-aliased-commands-upon-signal later to maint).

 * The code to produce progress output from "git commit-graph --write"
   had a few breakages, which have been fixed.

 * Other code cleanup, docfix, build fix, etc.
   (merge 2c31a7aa44 jx/pkt-line-doc-count-fix later to maint).
   (merge d63ae31962 cb/t5608-cleanup later to maint).
   (merge 788db145c7 dl/t-readme-spell-git-correctly later to maint).
   (merge 45a87a83bb dl/python-2.7-is-the-floor-version later to maint).
   (merge b75a219904 es/advertise-contribution-doc later to maint).
   (merge 0c9a4f638a rs/pull-leakfix later to maint).
   (merge d546fe2874 rs/commit-reach-leakfix later to maint).
   (merge 087bf5409c mk/pb-pretty-email-without-domain-part-fix later to maint).
   (merge 5f4ee57ad9 es/worktree-code-cleanup later to maint).
   (merge 0172f7834a cc/cat-file-usage-update later to maint).
   (merge 81de0c01cf ma/rebase-doc-typofix later to maint).

----------------------------------------------------------------

Changes since v2.27.0 are as follows:

Abhishek Kumar (4):
      object: drop parsed_object_pool->commit_count
      commit-graph: introduce commit_graph_data_slab
      commit: move members graph_pos, generation to a slab
      commit-graph: minimize commit_graph_data_slab access

Alessandro Menti (1):
      l10n: it.po: update the Italian translation for Git 2.28.0 round 1

Andrew Ng (1):
      merge: optimization to skip evaluate_result for single strategy

Ben Keene (1):
      git-p4.py: fix --prepare-p4-only error with multiple commits

Bojun Chen (1):
      githooks.txt: use correct "reference-transaction" hook name

Carlo Marcelo Arenas Belón (5):
      t/helper: teach test-regex to report pattern errors (like REG_ILLSEQ)
      t4210: detect REG_ILLSEQ dynamically and skip affected tests
      bisect--helper: avoid segfault with bad syntax in `start --term-*`
      t5608: avoid say() and use "skip_all" instead for consistency
      commit-reach: avoid is_descendant_of() shim

Chris Torek (3):
      t/t3430: avoid undefined git diff behavior
      git diff: improve range handling
      Documentation: usage for diff combined commits

Christian Couder (40):
      upload-pack: remove unused 'wants' from upload_pack_data
      upload-pack: move {want,have}_obj to upload_pack_data
      upload-pack: move 'struct upload_pack_data' around
      upload-pack: use 'struct upload_pack_data' in upload_pack()
      upload-pack: pass upload_pack_data to get_common_commits()
      upload-pack: pass upload_pack_data to receive_needs()
      upload-pack: use upload_pack_data writer in receive_needs()
      upload-pack: move symref to upload_pack_data
      upload-pack: pass upload_pack_data to send_ref()
      upload-pack: pass upload_pack_data to check_non_tip()
      upload-pack: remove static variable 'stateless_rpc'
      upload-pack: pass upload_pack_data to create_pack_file()
      upload-pack: use upload_pack_data fields in receive_needs()
      upload-pack: annotate upload_pack_data fields
      upload-pack: move static vars to upload_pack_data
      upload-pack: move use_sideband to upload_pack_data
      upload-pack: move filter_capability_requested to upload_pack_data
      upload-pack: move multi_ack to upload_pack_data
      upload-pack: change multi_ack to an enum
      upload-pack: pass upload_pack_data to upload_pack_config()
      upload-pack: move keepalive to upload_pack_data
      upload-pack: move allow_filter to upload_pack_data
      upload-pack: move allow_ref_in_want to upload_pack_data
      upload-pack: move allow_sideband_all to upload_pack_data
      upload-pack: move pack_objects_hook to upload_pack_data
      upload-pack: pass upload_pack_data to send_shallow_list()
      upload-pack: pass upload_pack_data to deepen()
      upload-pack: pass upload_pack_data to deepen_by_rev_list()
      upload-pack: pass upload_pack_data to send_unshallow()
      upload-pack: move shallow_nr to upload_pack_data
      upload-pack: move extra_edge_obj to upload_pack_data
      upload-pack: move allow_unadvertised_object_request to upload_pack_data
      upload-pack: change allow_unadvertised_object_request to an enum
      upload-pack: pass upload_pack_data to process_haves()
      upload-pack: pass upload_pack_data to send_acks()
      upload-pack: pass upload_pack_data to ok_to_give_up()
      upload-pack: pass upload_pack_data to got_oid()
      upload-pack: move oldest_have to upload_pack_data
      upload-pack: refactor common code into do_got_oid()
      cat-file: add missing [=<format>] to usage/synopsis

Christopher Diaz Riveros (1):
      l10n: es: 2.28.0 round 1

David J. Malan (1):
      git-prompt: change == to = for zsh's sake

Denton Liu (18):
      lib-submodule-update: add space after function name
      lib-submodule-update: consolidate --recurse-submodules
      remote-curl: fix typo
      remote-curl: remove label indentation
      transport: extract common fetch_pack() call
      pkt-line: extern packet_length()
      remote-curl: error on incomplete packet
      pkt-line: define PACKET_READ_RESPONSE_END
      stateless-connect: send response end packet
      t/README: avoid poor-man's small caps GIT
      CodingGuidelines: specify Python 2.7 is the oldest version
      lib-submodule-update: prepend "git" to $command
      t3200: rename "expected" to "expect"
      t3200: test for specific errors
      branch: don't mix --edit-description
      builtin/diff: update usage comment
      builtin/diff: fix botched update of usage comment
      lib-submodule-update: pass 'test_must_fail' as an argument

Derrick Stolee (3):
      line-log: integrate with changed-path Bloom filters
      commit-reach: create repo_is_descendant_of()
      commit-reach: use fast logic in repo_in_merge_base

Don Goodman-Wilson (1):
      init: allow setting the default for the initial branch name via the config

Elijah Newren (11):
      fast-import: add new --date-format=raw-permissive format
      sparse-checkout: avoid staging deletions of all files
      dir: fix treatment of negated pathspecs
      git-sparse-checkout: clarify interactions with submodules
      dir: fix a few confusing comments
      dir, clean: avoid disallowed behavior
      clean: consolidate handling of ignored parameters
      clean: optimize and document cases where we recurse into subdirectories
      wt-status: show sparse checkout status as well
      git-prompt: document how in-progress operations affect the prompt
      git-prompt: include sparsity state as well

Emily Shaffer (3):
      help: add shell-path to --build-options
      bugreport: include user interactive shell
      docs: mention MyFirstContribution in more places

Emir Sarı (1):
      l10n: tr: v2.28.0 round 1

Eric Sunshine (10):
      worktree: factor out repeated string literal
      worktree: give "should be pruned?" function more meaningful name
      worktree: make high-level pruning re-usable
      worktree: prune duplicate entries referencing same worktree path
      worktree: prune linked worktree referencing main worktree path
      worktree: generalize candidate worktree path validation
      worktree: make "move" refuse to move atop missing registered worktree
      worktree: drop get_worktrees() special-purpose sorting option
      worktree: drop get_worktrees() unused 'flags' argument
      worktree: avoid dead-code in conditional

Han-Wen Nienhuys (5):
      refs.h: clarify reflog iteration order
      t: use update-ref and show-ref to reading/writing refs
      refs: improve documentation for ref iterator
      reftable: clarify how empty tables should be written
      reftable: define version 2 of the spec to accomodate SHA256

Jacob Keller (16):
      completion: add test showing subpar git switch completion
      completion: add tests showing subpar DWIM logic for switch/checkout
      completion: add tests showing subar checkout --detach logic
      completion: add tests showing subpar switch/checkout --track logic
      completion: add tests showing subpar -c/-C startpoint completion
      completion: add tests showing subpar -c/C argument completion
      completion: add tests showing subpar switch/checkout --orphan logic
      completion: replace overloaded track term for __git_complete_refs
      completion: extract function __git_dwim_remote_heads
      completion: perform DWIM logic directly in __git_complete_refs
      completion: improve handling of DWIM mode for switch/checkout
      completion: improve completion for git switch with no options
      completion: improve handling of --detach in checkout
      completion: improve handling of --track in switch/checkout
      completion: improve handling of -c/-C and -b/-B in switch/checkout
      completion: improve handling of --orphan option of switch/checkout

Jean-Noël Avila (1):
      l10n: fr v2.28.0 round 1

Jeff King (14):
      diff: discard blob data from stat-unmatched pairs
      upload-pack: actually use some upload_pack_data bitfields
      t9351: derive anonymized tree checks from original repo
      fast-export: use xmemdupz() for anonymizing oids
      fast-export: store anonymized oids as hex strings
      fast-export: tighten anonymize_mem() interface to handle only strings
      fast-export: stop storing lengths in anonymized hashmaps
      fast-export: use a flex array to store anonymized entries
      fast-export: move global "idents" anonymize hashmap into function
      fast-export: add a "data" callback parameter to anonymize_str()
      fast-export: allow seeding the anonymized mapping
      fast-export: anonymize "master" refname
      fast-export: use local array to store anonymized oid
      diff: check for merge bases before assigning sym->base

Jiang Xin (2):
      l10n: git.pot: v2.28.0 round 1 (70 new, 14 removed)
      l10n: zh_CN: for git v2.28.0 l10n round 1

Jiuyang Xie (1):
      doc: fix wrong 4-byte length of pkt-line message

Johannes Schindelin (16):
      checkout -p: handle new files correctly
      clone/fetch: anonymize URLs in the reflog
      msvc: fix "REG_STARTEND" issue
      fmt-merge-msg: stop treating `master` specially
      send-pack/transport-helper: avoid mentioning a particular branch
      submodule: fall back to remote's HEAD for missing remote.<name>.branch
      docs: add missing diamond brackets
      init: allow specifying the initial branch name for the new repository
      clone: use configured default branch name when appropriate
      remote: use the configured default branch name when appropriate
      testsvn: respect `init.defaultBranch`
      docs: adjust for the recent rename of `pu` to `seen`
      docs: adjust the technical overview for the rename `pu` -> `seen`
      tests: reference `seen` wherever `pu` was referenced
      diff-files --raw: show correct post-image of intent-to-add files
      difftool -d: ensure that intent-to-add files are handled correctly

John Lin (1):
      bash-completion: add git-prune into bash completion

Jonathan Nieder (5):
      config: let feature.experimental imply protocol.version=2
      reftable: file format documentation
      experimental: default to fetch.writeCommitGraph=false
      Revert "check_repository_format_gently(): refuse extensions for old repositories"
      repository: allow repository format upgrade with extensions

Jonathan Tan (12):
      t5551: test that GIT_TRACE_CURL redacts password
      http, imap-send: stop using CURLOPT_VERBOSE
      http: redact all cookies, teach GIT_TRACE_REDACT=0
      http: use --stdin when indexing dumb HTTP pack
      http: refactor finish_http_pack_request()
      http-fetch: refactor into function
      http-fetch: support fetching packfiles by URL
      Documentation: order protocol v2 sections
      Documentation: add Packfile URIs design doc
      upload-pack: refactor reading of pack-objects out
      fetch-pack: support more than one pack lockfile
      upload-pack: send part of packfile response as uri

Jordi Mas (1):
      l10n: Update Catalan translation

Josh Steadmon (1):
      fuzz-commit-graph: properly free graph struct

Junio C Hamano (13):
      Start the post 2.27 cycle
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      Git 2.28-rc0
      Hopefully the last batch before -rc1
      Git 2.28-rc1
      RelNotes: update the v0 with extension situation
      Git 2.28-rc2
      Git 2.28

Laurent Arnoud (1):
      diff: add config option relative

Luc Van Oostenryck (1):
      sparse: allow '{ 0 }' to be used without warnings

Marco Trevisan (Treviño) (1):
      completion: use native ZSH array pattern matching

Martin Ågren (5):
      git-rebase.txt: fix description list separator
      git-diff.txt: don't mark required argument as optional
      git-diff.txt: reorder possible usages
      gitworkflows.txt: fix broken subsection underline
      t3200: don't grep for `strerror()` string

Matheus Tavares (1):
      entry: check for fstat() errors after checkout

Matthias Rüster (1):
      l10n: de.po: Update German translation for Git v2.28.0

Mikhail Terekhov (1):
      git-gui: allow opening work trees from the startup dialog

Miroslav Koškár (1):
      doc: fix author vs. committer copy/paste error

Paolo Bonzini (1):
      t4014: do not use "slave branch" nomenclature

Patrick Steinhardt (1):
      refs: implement reference transaction hook

Peter Krefting (1):
      l10n: sv.po: Update Swedish translation (4931t0f0u)

Rafael Aquini (1):
      send-email: restore --in-reply-to superseding behavior

Ralf Thielow (1):
      l10n: de.po: fix grammar

Ramsay Jones (1):
      upload-pack: fix a sparse '0 as NULL pointer' warning

Randall S. Becker (2):
      bugreport.c: replace strbuf_write_fd with write_in_full
      strbuf: remove unreferenced strbuf_write_fd method.

René Scharfe (10):
      fsck: fix a typo in a comment
      t1450: increase test coverage of in-tree d/f detection
      t1450: demonstrate undetected in-tree d/f conflict
      fsck: detect more in-tree d/f conflicts
      checkout: add tests for -b and --track
      checkout: improve error messages for -b with extra argument
      commit-reach: plug minor memory leak after using is_descendant_of()
      pull: plug minor memory leak after using is_descendant_of()
      revision: reallocate TOPO_WALK object flags
      revision: disable min_age optimization with line-log

SZEDER Gábor (7):
      line-log: remove unused fields from 'struct line_log_data'
      t4211-line-log: add tests for parent oids
      line-log: more responsive, incremental 'git log -L'
      line-log: try to use generation number-based topo-ordering
      commit-graph: fix progress of reachable commits
      commit-graph: fix "Writing out commit graph" progress counter
      commit-graph: fix "Collecting commits from input" progress line

Shourya Shukla (1):
      submodule: port subcommand 'set-branch' from shell to C

Srinidhi Kaushik (1):
      diff-files: treat "i-t-a" files as "not-in-index"

Taylor Blau (12):
      commit-graph.c: extract 'refs_cb_data'
      commit-graph.c: show progress of finding reachable commits
      commit-graph.c: peel refs in 'add_ref_to_set'
      builtin/commit-graph.c: extract 'read_one_commit()'
      builtin/commit-graph.c: dereference tags in builtin
      commit-graph.c: simplify 'fill_oids_from_commits'
      t5318: reorder test below 'graph_read_expect'
      commit-graph: drop COMMIT_GRAPH_WRITE_CHECK_OIDS flag
      t5318: use 'test_must_be_empty'
      t5318: test that '--stdin-commits' respects '--[no-]progress'
      commit.c: don't persist substituted parents when unshallowing
      Documentation/RelNotes: fix a typo in 2.28's relnotes

Trygve Aaberge (2):
      Wait for child on signal death for aliases to builtins
      Wait for child on signal death for aliases to externals

Trần Ngọc Quân (1):
      l10n: vi.po(4931t): Updated translation for v2.28.0

Ville Skyttä (2):
      completion: don't override given stash subcommand with -p
      completion: nounset mode fixes

Xin Li (4):
      repository: add a helper function to perform repository format upgrade
      fetch: allow adding a filter after initial clone
      sparse-checkout: upgrade repository to version 1 when enabling extension
      check_repository_format_gently(): refuse extensions for old repositories

Yi-Jyun Pan (1):
      l10n: zh_TW.po: v2.28.0 round 1 (0 untranslated)

brian m. carlson (61):
      t1050: match object ID paths in a hash-insensitive way
      Documentation: document v1 protocol object-format capability
      builtin/checkout: simplify metadata initialization
      t2060: add a test for switch with --orphan and --discard-changes
      connect: have ref processing code take struct packet_reader
      wrapper: add function to compare strings with different NUL termination
      remote: advertise the object-format capability on the server side
      connect: add function to parse multiple v1 capability values
      connect: add function to fetch value of a v2 server capability
      pkt-line: add a member for hash algorithm
      transport: add a hash algorithm member
      connect: add function to detect supported v1 hash functions
      send-pack: detect when the server doesn't support our hash
      connect: make parse_feature_value extern
      fetch-pack: detect when the server doesn't support our hash
      connect: detect algorithm when fetching refs
      builtin/receive-pack: detect when the server doesn't support our hash
      docs: update remote helper docs for object-format extensions
      transport-helper: implement object-format extensions
      remote-curl: implement object-format extensions
      builtin/clone: initialize hash algorithm properly
      t5562: pass object-format in synthesized test data
      fetch-pack: parse and advertise the object-format capability
      setup: set the_repository's hash algo when checking format
      t3200: mark assertion with SHA1 prerequisite
      packfile: compute and use the index CRC offset
      t5302: modernize test formatting
      builtin/show-index: provide options to determine hash algo
      t1302: expect repo format version 1 for SHA-256
      Documentation/technical: document object-format for protocol v2
      connect: pass full packet reader when parsing v2 refs
      connect: parse v2 refs with correct hash algorithm
      serve: advertise object-format capability for protocol v2
      t5500: make hash independent
      builtin/ls-remote: initialize repository based on fetch
      remote-curl: detect algorithm for dumb HTTP by size
      builtin/index-pack: add option to specify hash algorithm
      t1050: pass algorithm to index-pack when outside repo
      remote-curl: avoid truncating refs with ls-remote
      t/helper: initialize the repository for test-sha1-array
      t5702: offer an object-format capability in the test
      t5703: use object-format serve option
      t5704: send object-format capability with SHA-256
      t5300: pass --object-format to git index-pack
      bundle: detect hash algorithm when reading refs
      remote-testgit: adapt for object-format
      t9109: make test hash independent
      t9168: make test hash independent
      t9108: make test hash independent
      t9100: make test work with SHA-256
      t9104: make hash size independent
      t9101: make hash independent
      t/lib-git-svn: make hash size independent
      perl: create and switch variables for hash constants
      perl: make Git::IndexInfo work with SHA-256
      perl: make SVN code hash independent
      git-svn: set the OID length based on hash algorithm
      git-cvsserver: port to SHA-256
      git-cvsimport: port to SHA-256
      git-cvsexportcommit: port to SHA-256
      http-push: ensure unforced pushes fail when data would be lost

Đoàn Trần Công Danh (2):
      contrib: subtree: adjust test to change in fmt-merge-msg
      l10n: vi.po: correct "ident line" translation


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.28.0-rc2
@ 2020-07-22 17:30  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-07-22 17:30 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.28.0-rc2 is now available for testing
at the usual places.  It is comprised of 301 non-merge commits
since v2.27.0, contributed by 46 people, 12 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.28.0-rc2' 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.27.0 are as follows.
Welcome to the Git development community!

  Andrew Ng, Chris Torek, David J. Malan, Don Goodman-Wilson,
  Jiuyang Xie, Luc Van Oostenryck, Marco Trevisan (Treviño),
  Mikhail Terekhov, Miroslav Koškár, Rafael Aquini, Srinidhi
  Kaushik, and Trygve Aaberge.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Abhishek Kumar, Ben Keene, brian m. carlson, Carlo Marcelo
  Arenas Belón, Christian Couder, Denton Liu, Derrick Stolee,
  Đoàn Trần Công Danh, Elijah Newren, Emily Shaffer,
  Eric Sunshine, Han-Wen Nienhuys, Jacob Keller, Jeff King,
  Johannes Schindelin, John Lin, Jonathan Nieder, Jonathan Tan,
  Josh Steadmon, Junio C Hamano, Laurent Arnoud, Martin Ågren,
  Matheus Tavares, Paolo Bonzini, Patrick Steinhardt, Pratyush
  Yadav, Ramsay Jones, Randall S. Becker, René Scharfe, Shourya
  Shukla, SZEDER Gábor, Taylor Blau, Ville Skyttä, and Xin Li.

----------------------------------------------------------------

Git 2.28 Release Notes (draft)
==============================

Updates since v2.27
-------------------

Backward compatibility notes

 * "fetch.writeCommitGraph" is deemed to be still a bit too risky and
   is no longer part of the "feature.experimental" set.


UI, Workflows & Features

 * The commands in the "diff" family learned to honor "diff.relative"
   configuration variable.

 * The check in "git fsck" to ensure that the tree objects are sorted
   still had corner cases it missed unsorted entries.

 * The interface to redact sensitive information in the trace output
   has been simplified.

 * The command line completion (in contrib/) learned to complete
   options that the "git switch" command takes.

 * "git diff" used to take arguments in random and nonsense range
   notation, e.g. "git diff A..B C", "git diff A..B C...D", etc.,
   which has been cleaned up.

 * "git diff-files" has been taught to say paths that are marked as
   intent-to-add are new files, not modified from an empty blob.

 * "git status" learned to report the status of sparse checkout.

 * "git difftool" has trouble dealing with paths added to the index
   with the intent-to-add bit.

 * "git fast-export --anonymize" learned to take customized mapping to
   allow its users to tweak its output more usable for debugging.

 * The command line completion support (in contrib/) used to be
   prepared to work with "set -u" but recent changes got a bit more
   sloppy.  This has been corrected.

 * "git gui" now allows opening work trees from the start-up dialog.


Performance, Internal Implementation, Development Support etc.

 * Code optimization for a common case.
   (merge 8777616e4d an/merge-single-strategy-optim later to maint).

 * We've adopted a convention that any on-stack structure can be
   initialized to have zero values in all fields with "= { 0 }",
   even when the first field happens to be a pointer, but sparse
   complained that a null pointer should be spelled NULL for a long
   time.  Start using -Wno-universal-initializer option to squelch
   it (the latest sparse has it on by default).

 * "git log -L..." now takes advantage of the "which paths are touched
   by this commit?" info stored in the commit-graph system.

 * As FreeBSD is not the only platform whose regexp library reports
   a REG_ILLSEQ error when fed invalid UTF-8, add logic to detect that
   automatically and skip the affected tests.

 * "git bugreport" learns to report what shell is in use.

 * Support for GIT_CURL_VERBOSE has been rewritten in terms of
   GIT_TRACE_CURL.

 * Preliminary clean-ups around refs API, plus file format
   specification documentation for the reftable backend.

 * Workaround breakage in MSVC build, where "curl-config --cflags"
   gives settings appropriate for GCC build.

 * Code clean-up of "git clean" resulted in a fix of recent
   performance regression.

 * Code clean-up in the codepath that serves "git fetch" continues.

 * "git merge-base --is-ancestor" is taught to take advantage of the
   commit graph.

 * Rewrite of parts of the scripted "git submodule" Porcelain command
   continues; this time it is "git submodule set-branch" subcommand's
   turn.

 * The "fetch/clone" protocol has been updated to allow the server to
   instruct the clients to grab pre-packaged packfile(s) in addition
   to the packed object data coming over the wire.

 * A misdesigned strbuf_write_fd() function has been retired.

 * SHA-256 migration work continues, including CVS/SVN interface.

 * A few fields in "struct commit" that do not have to always be
   present have been moved to commit slabs.

 * API cleanup for get_worktrees()

 * By renumbering object flag bits, "struct object" managed to lose
   bloated inter-field padding.

 * The name of the primary branch in existing repositories, and the
   default name used for the first branch in newly created
   repositories, is made configurable, so that we can eventually wean
   ourselves off of the hardcoded 'master'.

 * The effort to avoid using test_must_fail on non-git command continues.

 * In 2.28-rc0, we corrected a bug that some repository extensions are
   honored by mistake even in a version 0 repositories (these
   configuration variables in extensions.* namespace were supposed to
   have special meaning in repositories whose version numbers are 1 or
   higher), but this was a bit too big a change.  The behaviour in
   recent versions of Git where certaion extensions.* were honored by
   mistake even in version 0 repositories has been restored.


Fixes since v2.27
-----------------

 * The "--prepare-p4-only" option of "git p4" is supposed to stop
   after replaying one changeset, but kept going (by mistake?)

 * The error message from "git checkout -b foo -t bar baz" was
   confusing.

 * Some repositories in the wild have commits that record nonsense
   committer timezone (e.g. rails.git); "git fast-import" learned an
   option to pass these nonsense timestamps intact to allow recreating
   existing repositories as-is.
   (merge d42a2fb72f en/fast-import-looser-date later to maint).

 * The command line completion script (in contrib/) tried to complete
   "git stash -p" as if it were "git stash push -p", but it was too
   aggressive and also affected "git stash show -p", which has been
   corrected.
   (merge fffd0cf520 vs/complete-stash-show-p-fix later to maint).

 * On-the-wire protocol v2 easily falls into a deadlock between the
   remote-curl helper and the fetch-pack process when the server side
   prematurely throws an error and disconnects.  The communication has
   been updated to make it more robust.

 * "git checkout -p" did not handle a newly added path at all.
   (merge 2c8bd8471a js/checkout-p-new-file later to maint).

 * The code to parse "git bisect start" command line was lax in
   validating the arguments.
   (merge 4d9005ff5d cb/bisect-helper-parser-fix later to maint).

 * Reduce memory usage during "diff --quiet" in a worktree with too
   many stat-unmatched paths.
   (merge d2d7fbe129 jk/diff-memuse-optim-with-stat-unmatch later to maint).

 * The reflog entries for "git clone" and "git fetch" did not
   anonymize the URL they operated on.
   (merge 46da295a77 js/reflog-anonymize-for-clone-and-fetch later to maint).

 * The behaviour of "sparse-checkout" in the state "git clone
   --no-checkout" left was changed accidentally in 2.27, which has
   been corrected.

 * Use of negative pathspec, while collecting paths including
   untracked ones in the working tree, was broken.

 * The same worktree directory must be registered only once, but
   "git worktree move" allowed this invariant to be violated, which
   has been corrected.
   (merge 810382ed37 es/worktree-duplicate-paths later to maint).

 * The effect of sparse checkout settings on submodules is documented.
   (merge e7d7c73249 en/sparse-with-submodule-doc later to maint).

 * Code clean-up around "git branch" with a minor bugfix.
   (merge dc44639904 dl/branch-cleanup later to maint).

 * A branch name used in a test has been clarified to match what is
   going on.
   (merge 08dc26061f pb/t4014-unslave later to maint).

 * An in-code comment in "git diff" has been updated.
   (merge c592fd4c83 dl/diff-usage-comment-update later to maint).

 * The documentation and some tests have been adjusted for the recent
   renaming of "pu" branch to "seen".
   (merge 6dca5dbf93 js/pu-to-seen later to maint).

 * The code to push changes over "dumb" HTTP had a bad interaction
   with the commit reachability code due to incorrect allocation of
   object flag bits, which has been corrected.
   (merge 64472d15e9 bc/http-push-flagsfix later to maint).

 * "git send-email --in-reply-to=<msg>" did not use the In-Reply-To:
   header with the value given from the command line, and let it be
   overridden by the value on In-Reply-To: header in the messages
   being sent out (if exists).
   (merge f9f60d7066 ra/send-email-in-reply-to-from-command-line-wins later to maint).

 * "git log -Lx,y:path --before=date" lost track of where the range
   should be because it didn't take the changes made by the youngest
   commits that are omitted from the output into account.

 * When "fetch.writeCommitGraph" configuration is set in a shallow
   repository and a fetch moves the shallow boundary, we wrote out
   broken commit-graph files that do not match the reality, which has
   been corrected.

 * "git checkout" failed to catch an error from fstat() after updating
   a path in the working tree.
   (merge 35e6e212fd mt/entry-fstat-fallback-fix later to maint).

 * When an aliased command, whose output is piped to a pager by git,
   gets killed by a signal, the pager got into a funny state, which
   has been corrected (again).
   (merge c0d73a59c9 ta/wait-on-aliased-commands-upon-signal later to maint).

 * The code to produce progress output from "git commit-graph --write"
   had a few breakages, which have been fixed.

 * Other code cleanup, docfix, build fix, etc.
   (merge 2c31a7aa44 jx/pkt-line-doc-count-fix later to maint).
   (merge d63ae31962 cb/t5608-cleanup later to maint).
   (merge 788db145c7 dl/t-readme-spell-git-correctly later to maint).
   (merge 45a87a83bb dl/python-2.7-is-the-floor-version later to maint).
   (merge b75a219904 es/advertise-contribution-doc later to maint).
   (merge 0c9a4f638a rs/pull-leakfix later to maint).
   (merge d546fe2874 rs/commit-reach-leakfix later to maint).
   (merge 087bf5409c mk/pb-pretty-email-without-domain-part-fix later to maint).
   (merge 5f4ee57ad9 es/worktree-code-cleanup later to maint).
   (merge 0172f7834a cc/cat-file-usage-update later to maint).
   (merge 81de0c01cf ma/rebase-doc-typofix later to maint).

----------------------------------------------------------------

Changes since v2.27.0 are as follows:

Abhishek Kumar (4):
      object: drop parsed_object_pool->commit_count
      commit-graph: introduce commit_graph_data_slab
      commit: move members graph_pos, generation to a slab
      commit-graph: minimize commit_graph_data_slab access

Andrew Ng (1):
      merge: optimization to skip evaluate_result for single strategy

Ben Keene (1):
      git-p4.py: fix --prepare-p4-only error with multiple commits

Carlo Marcelo Arenas Belón (5):
      t/helper: teach test-regex to report pattern errors (like REG_ILLSEQ)
      t4210: detect REG_ILLSEQ dynamically and skip affected tests
      bisect--helper: avoid segfault with bad syntax in `start --term-*`
      t5608: avoid say() and use "skip_all" instead for consistency
      commit-reach: avoid is_descendant_of() shim

Chris Torek (3):
      t/t3430: avoid undefined git diff behavior
      git diff: improve range handling
      Documentation: usage for diff combined commits

Christian Couder (40):
      upload-pack: remove unused 'wants' from upload_pack_data
      upload-pack: move {want,have}_obj to upload_pack_data
      upload-pack: move 'struct upload_pack_data' around
      upload-pack: use 'struct upload_pack_data' in upload_pack()
      upload-pack: pass upload_pack_data to get_common_commits()
      upload-pack: pass upload_pack_data to receive_needs()
      upload-pack: use upload_pack_data writer in receive_needs()
      upload-pack: move symref to upload_pack_data
      upload-pack: pass upload_pack_data to send_ref()
      upload-pack: pass upload_pack_data to check_non_tip()
      upload-pack: remove static variable 'stateless_rpc'
      upload-pack: pass upload_pack_data to create_pack_file()
      upload-pack: use upload_pack_data fields in receive_needs()
      upload-pack: annotate upload_pack_data fields
      upload-pack: move static vars to upload_pack_data
      upload-pack: move use_sideband to upload_pack_data
      upload-pack: move filter_capability_requested to upload_pack_data
      upload-pack: move multi_ack to upload_pack_data
      upload-pack: change multi_ack to an enum
      upload-pack: pass upload_pack_data to upload_pack_config()
      upload-pack: move keepalive to upload_pack_data
      upload-pack: move allow_filter to upload_pack_data
      upload-pack: move allow_ref_in_want to upload_pack_data
      upload-pack: move allow_sideband_all to upload_pack_data
      upload-pack: move pack_objects_hook to upload_pack_data
      upload-pack: pass upload_pack_data to send_shallow_list()
      upload-pack: pass upload_pack_data to deepen()
      upload-pack: pass upload_pack_data to deepen_by_rev_list()
      upload-pack: pass upload_pack_data to send_unshallow()
      upload-pack: move shallow_nr to upload_pack_data
      upload-pack: move extra_edge_obj to upload_pack_data
      upload-pack: move allow_unadvertised_object_request to upload_pack_data
      upload-pack: change allow_unadvertised_object_request to an enum
      upload-pack: pass upload_pack_data to process_haves()
      upload-pack: pass upload_pack_data to send_acks()
      upload-pack: pass upload_pack_data to ok_to_give_up()
      upload-pack: pass upload_pack_data to got_oid()
      upload-pack: move oldest_have to upload_pack_data
      upload-pack: refactor common code into do_got_oid()
      cat-file: add missing [=<format>] to usage/synopsis

David J. Malan (1):
      git-prompt: change == to = for zsh's sake

Denton Liu (18):
      lib-submodule-update: add space after function name
      lib-submodule-update: consolidate --recurse-submodules
      remote-curl: fix typo
      remote-curl: remove label indentation
      transport: extract common fetch_pack() call
      pkt-line: extern packet_length()
      remote-curl: error on incomplete packet
      pkt-line: define PACKET_READ_RESPONSE_END
      stateless-connect: send response end packet
      t/README: avoid poor-man's small caps GIT
      CodingGuidelines: specify Python 2.7 is the oldest version
      lib-submodule-update: prepend "git" to $command
      t3200: rename "expected" to "expect"
      t3200: test for specific errors
      branch: don't mix --edit-description
      builtin/diff: update usage comment
      builtin/diff: fix botched update of usage comment
      lib-submodule-update: pass 'test_must_fail' as an argument

Derrick Stolee (3):
      line-log: integrate with changed-path Bloom filters
      commit-reach: create repo_is_descendant_of()
      commit-reach: use fast logic in repo_in_merge_base

Don Goodman-Wilson (1):
      init: allow setting the default for the initial branch name via the config

Elijah Newren (11):
      fast-import: add new --date-format=raw-permissive format
      sparse-checkout: avoid staging deletions of all files
      dir: fix treatment of negated pathspecs
      git-sparse-checkout: clarify interactions with submodules
      dir: fix a few confusing comments
      dir, clean: avoid disallowed behavior
      clean: consolidate handling of ignored parameters
      clean: optimize and document cases where we recurse into subdirectories
      wt-status: show sparse checkout status as well
      git-prompt: document how in-progress operations affect the prompt
      git-prompt: include sparsity state as well

Emily Shaffer (3):
      help: add shell-path to --build-options
      bugreport: include user interactive shell
      docs: mention MyFirstContribution in more places

Eric Sunshine (10):
      worktree: factor out repeated string literal
      worktree: give "should be pruned?" function more meaningful name
      worktree: make high-level pruning re-usable
      worktree: prune duplicate entries referencing same worktree path
      worktree: prune linked worktree referencing main worktree path
      worktree: generalize candidate worktree path validation
      worktree: make "move" refuse to move atop missing registered worktree
      worktree: drop get_worktrees() special-purpose sorting option
      worktree: drop get_worktrees() unused 'flags' argument
      worktree: avoid dead-code in conditional

Han-Wen Nienhuys (5):
      refs.h: clarify reflog iteration order
      t: use update-ref and show-ref to reading/writing refs
      refs: improve documentation for ref iterator
      reftable: clarify how empty tables should be written
      reftable: define version 2 of the spec to accomodate SHA256

Jacob Keller (16):
      completion: add test showing subpar git switch completion
      completion: add tests showing subpar DWIM logic for switch/checkout
      completion: add tests showing subar checkout --detach logic
      completion: add tests showing subpar switch/checkout --track logic
      completion: add tests showing subpar -c/-C startpoint completion
      completion: add tests showing subpar -c/C argument completion
      completion: add tests showing subpar switch/checkout --orphan logic
      completion: replace overloaded track term for __git_complete_refs
      completion: extract function __git_dwim_remote_heads
      completion: perform DWIM logic directly in __git_complete_refs
      completion: improve handling of DWIM mode for switch/checkout
      completion: improve completion for git switch with no options
      completion: improve handling of --detach in checkout
      completion: improve handling of --track in switch/checkout
      completion: improve handling of -c/-C and -b/-B in switch/checkout
      completion: improve handling of --orphan option of switch/checkout

Jeff King (14):
      diff: discard blob data from stat-unmatched pairs
      upload-pack: actually use some upload_pack_data bitfields
      t9351: derive anonymized tree checks from original repo
      fast-export: use xmemdupz() for anonymizing oids
      fast-export: store anonymized oids as hex strings
      fast-export: tighten anonymize_mem() interface to handle only strings
      fast-export: stop storing lengths in anonymized hashmaps
      fast-export: use a flex array to store anonymized entries
      fast-export: move global "idents" anonymize hashmap into function
      fast-export: add a "data" callback parameter to anonymize_str()
      fast-export: allow seeding the anonymized mapping
      fast-export: anonymize "master" refname
      fast-export: use local array to store anonymized oid
      diff: check for merge bases before assigning sym->base

Jiuyang Xie (1):
      doc: fix wrong 4-byte length of pkt-line message

Johannes Schindelin (16):
      checkout -p: handle new files correctly
      clone/fetch: anonymize URLs in the reflog
      msvc: fix "REG_STARTEND" issue
      fmt-merge-msg: stop treating `master` specially
      send-pack/transport-helper: avoid mentioning a particular branch
      submodule: fall back to remote's HEAD for missing remote.<name>.branch
      docs: add missing diamond brackets
      init: allow specifying the initial branch name for the new repository
      clone: use configured default branch name when appropriate
      remote: use the configured default branch name when appropriate
      testsvn: respect `init.defaultBranch`
      docs: adjust for the recent rename of `pu` to `seen`
      docs: adjust the technical overview for the rename `pu` -> `seen`
      tests: reference `seen` wherever `pu` was referenced
      diff-files --raw: show correct post-image of intent-to-add files
      difftool -d: ensure that intent-to-add files are handled correctly

John Lin (1):
      bash-completion: add git-prune into bash completion

Jonathan Nieder (5):
      config: let feature.experimental imply protocol.version=2
      reftable: file format documentation
      experimental: default to fetch.writeCommitGraph=false
      Revert "check_repository_format_gently(): refuse extensions for old repositories"
      repository: allow repository format upgrade with extensions

Jonathan Tan (12):
      t5551: test that GIT_TRACE_CURL redacts password
      http, imap-send: stop using CURLOPT_VERBOSE
      http: redact all cookies, teach GIT_TRACE_REDACT=0
      http: use --stdin when indexing dumb HTTP pack
      http: refactor finish_http_pack_request()
      http-fetch: refactor into function
      http-fetch: support fetching packfiles by URL
      Documentation: order protocol v2 sections
      Documentation: add Packfile URIs design doc
      upload-pack: refactor reading of pack-objects out
      fetch-pack: support more than one pack lockfile
      upload-pack: send part of packfile response as uri

Josh Steadmon (1):
      fuzz-commit-graph: properly free graph struct

Junio C Hamano (12):
      Start the post 2.27 cycle
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      Git 2.28-rc0
      Hopefully the last batch before -rc1
      Git 2.28-rc1
      RelNotes: update the v0 with extension situation
      Git 2.28-rc2

Laurent Arnoud (1):
      diff: add config option relative

Luc Van Oostenryck (1):
      sparse: allow '{ 0 }' to be used without warnings

Marco Trevisan (Treviño) (1):
      completion: use native ZSH array pattern matching

Martin Ågren (5):
      git-rebase.txt: fix description list separator
      git-diff.txt: don't mark required argument as optional
      git-diff.txt: reorder possible usages
      gitworkflows.txt: fix broken subsection underline
      t3200: don't grep for `strerror()` string

Matheus Tavares (1):
      entry: check for fstat() errors after checkout

Mikhail Terekhov (1):
      git-gui: allow opening work trees from the startup dialog

Miroslav Koškár (1):
      doc: fix author vs. committer copy/paste error

Paolo Bonzini (1):
      t4014: do not use "slave branch" nomenclature

Patrick Steinhardt (1):
      refs: implement reference transaction hook

Rafael Aquini (1):
      send-email: restore --in-reply-to superseding behavior

Ramsay Jones (1):
      upload-pack: fix a sparse '0 as NULL pointer' warning

Randall S. Becker (2):
      bugreport.c: replace strbuf_write_fd with write_in_full
      strbuf: remove unreferenced strbuf_write_fd method.

René Scharfe (10):
      fsck: fix a typo in a comment
      t1450: increase test coverage of in-tree d/f detection
      t1450: demonstrate undetected in-tree d/f conflict
      fsck: detect more in-tree d/f conflicts
      checkout: add tests for -b and --track
      checkout: improve error messages for -b with extra argument
      commit-reach: plug minor memory leak after using is_descendant_of()
      pull: plug minor memory leak after using is_descendant_of()
      revision: reallocate TOPO_WALK object flags
      revision: disable min_age optimization with line-log

SZEDER Gábor (7):
      line-log: remove unused fields from 'struct line_log_data'
      t4211-line-log: add tests for parent oids
      line-log: more responsive, incremental 'git log -L'
      line-log: try to use generation number-based topo-ordering
      commit-graph: fix progress of reachable commits
      commit-graph: fix "Writing out commit graph" progress counter
      commit-graph: fix "Collecting commits from input" progress line

Shourya Shukla (1):
      submodule: port subcommand 'set-branch' from shell to C

Srinidhi Kaushik (1):
      diff-files: treat "i-t-a" files as "not-in-index"

Taylor Blau (11):
      commit-graph.c: extract 'refs_cb_data'
      commit-graph.c: show progress of finding reachable commits
      commit-graph.c: peel refs in 'add_ref_to_set'
      builtin/commit-graph.c: extract 'read_one_commit()'
      builtin/commit-graph.c: dereference tags in builtin
      commit-graph.c: simplify 'fill_oids_from_commits'
      t5318: reorder test below 'graph_read_expect'
      commit-graph: drop COMMIT_GRAPH_WRITE_CHECK_OIDS flag
      t5318: use 'test_must_be_empty'
      t5318: test that '--stdin-commits' respects '--[no-]progress'
      commit.c: don't persist substituted parents when unshallowing

Trygve Aaberge (2):
      Wait for child on signal death for aliases to builtins
      Wait for child on signal death for aliases to externals

Ville Skyttä (2):
      completion: don't override given stash subcommand with -p
      completion: nounset mode fixes

Xin Li (4):
      repository: add a helper function to perform repository format upgrade
      fetch: allow adding a filter after initial clone
      sparse-checkout: upgrade repository to version 1 when enabling extension
      check_repository_format_gently(): refuse extensions for old repositories

brian m. carlson (61):
      t1050: match object ID paths in a hash-insensitive way
      Documentation: document v1 protocol object-format capability
      builtin/checkout: simplify metadata initialization
      t2060: add a test for switch with --orphan and --discard-changes
      connect: have ref processing code take struct packet_reader
      wrapper: add function to compare strings with different NUL termination
      remote: advertise the object-format capability on the server side
      connect: add function to parse multiple v1 capability values
      connect: add function to fetch value of a v2 server capability
      pkt-line: add a member for hash algorithm
      transport: add a hash algorithm member
      connect: add function to detect supported v1 hash functions
      send-pack: detect when the server doesn't support our hash
      connect: make parse_feature_value extern
      fetch-pack: detect when the server doesn't support our hash
      connect: detect algorithm when fetching refs
      builtin/receive-pack: detect when the server doesn't support our hash
      docs: update remote helper docs for object-format extensions
      transport-helper: implement object-format extensions
      remote-curl: implement object-format extensions
      builtin/clone: initialize hash algorithm properly
      t5562: pass object-format in synthesized test data
      fetch-pack: parse and advertise the object-format capability
      setup: set the_repository's hash algo when checking format
      t3200: mark assertion with SHA1 prerequisite
      packfile: compute and use the index CRC offset
      t5302: modernize test formatting
      builtin/show-index: provide options to determine hash algo
      t1302: expect repo format version 1 for SHA-256
      Documentation/technical: document object-format for protocol v2
      connect: pass full packet reader when parsing v2 refs
      connect: parse v2 refs with correct hash algorithm
      serve: advertise object-format capability for protocol v2
      t5500: make hash independent
      builtin/ls-remote: initialize repository based on fetch
      remote-curl: detect algorithm for dumb HTTP by size
      builtin/index-pack: add option to specify hash algorithm
      t1050: pass algorithm to index-pack when outside repo
      remote-curl: avoid truncating refs with ls-remote
      t/helper: initialize the repository for test-sha1-array
      t5702: offer an object-format capability in the test
      t5703: use object-format serve option
      t5704: send object-format capability with SHA-256
      t5300: pass --object-format to git index-pack
      bundle: detect hash algorithm when reading refs
      remote-testgit: adapt for object-format
      t9109: make test hash independent
      t9168: make test hash independent
      t9108: make test hash independent
      t9100: make test work with SHA-256
      t9104: make hash size independent
      t9101: make hash independent
      t/lib-git-svn: make hash size independent
      perl: create and switch variables for hash constants
      perl: make Git::IndexInfo work with SHA-256
      perl: make SVN code hash independent
      git-svn: set the OID length based on hash algorithm
      git-cvsserver: port to SHA-256
      git-cvsimport: port to SHA-256
      git-cvsexportcommit: port to SHA-256
      http-push: ensure unforced pushes fail when data would be lost

Đoàn Trần Công Danh (1):
      contrib: subtree: adjust test to change in fmt-merge-msg


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.28.0-rc1
@ 2020-07-17 20:24  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-07-17 20:24 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.28.0-rc1 is now available for testing
at the usual places.  It is comprised of 295 non-merge commits
since v2.27.0, contributed by 43 people, 10 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.28.0-rc1' 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.27.0 are as follows.
Welcome to the Git development community!

  Andrew Ng, Chris Torek, Don Goodman-Wilson, Jiuyang Xie, Luc
  Van Oostenryck, Marco Trevisan (Treviño), Miroslav Koškár,
  Rafael Aquini, Srinidhi Kaushik, and Trygve Aaberge.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Abhishek Kumar, Ben Keene, brian m. carlson, Carlo Marcelo Arenas
  Belón, Christian Couder, Denton Liu, Derrick Stolee, Đoàn
  Trần Công Danh, Elijah Newren, Emily Shaffer, Eric Sunshine,
  Han-Wen Nienhuys, Jacob Keller, Jeff King, Johannes Schindelin,
  John Lin, Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio C
  Hamano, Laurent Arnoud, Martin Ågren, Matheus Tavares, Paolo
  Bonzini, Patrick Steinhardt, Ramsay Jones, Randall S. Becker,
  René Scharfe, Shourya Shukla, SZEDER Gábor, Taylor Blau,
  Ville Skyttä, and Xin Li.

----------------------------------------------------------------

Git 2.28 Release Notes (draft)
==============================

Updates since v2.27
-------------------

Backward compatibility notes

 * "fetch.writeCommitGraph" is deemed to be still a bit too risky and
   is no longer part of the "feature.experimental" set.


UI, Workflows & Features

 * The commands in the "diff" family learned to honor "diff.relative"
   configuration variable.

 * The check in "git fsck" to ensure that the tree objects are sorted
   still had corner cases it missed unsorted entries.

 * The interface to redact sensitive information in the trace output
   has been simplified.

 * The command line completion (in contrib/) learned to complete
   options that the "git switch" command takes.

 * "git diff" used to take arguments in random and nonsense range
   notation, e.g. "git diff A..B C", "git diff A..B C...D", etc.,
   which has been cleaned up.

 * "git diff-files" has been taught to say paths that are marked as
   intent-to-add are new files, not modified from an empty blob.

 * "git status" learned to report the status of sparse checkout.

 * "git difftool" has trouble dealing with paths added to the index
   with the intent-to-add bit.

 * "git fast-export --anonymize" learned to take customized mapping to
   allow its users to tweak its output more usable for debugging.

 * The command line completion support (in contrib/) used to be
   prepared to work with "set -u" but recent changes got a bit more
   sloppy.  This has been corrected.


Performance, Internal Implementation, Development Support etc.

 * Code optimization for a common case.
   (merge 8777616e4d an/merge-single-strategy-optim later to maint).

 * We've adopted a convention that any on-stack structure can be
   initialized to have zero values in all fields with "= { 0 }",
   even when the first field happens to be a pointer, but sparse
   complained that a null pointer should be spelled NULL for a long
   time.  Start using -Wno-universal-initializer option to squelch
   it (the latest sparse has it on by default).

 * "git log -L..." now takes advantage of the "which paths are touched
   by this commit?" info stored in the commit-graph system.

 * As FreeBSD is not the only platform whose regexp library reports
   a REG_ILLSEQ error when fed invalid UTF-8, add logic to detect that
   automatically and skip the affected tests.

 * "git bugreport" learns to report what shell is in use.

 * Support for GIT_CURL_VERBOSE has been rewritten in terms of
   GIT_TRACE_CURL.

 * Preliminary clean-ups around refs API, plus file format
   specification documentation for the reftable backend.

 * Workaround breakage in MSVC build, where "curl-config --cflags"
   gives settings appropriate for GCC build.

 * Code clean-up of "git clean" resulted in a fix of recent
   performance regression.

 * Code clean-up in the codepath that serves "git fetch" continues.

 * "git merge-base --is-ancestor" is taught to take advantage of the
   commit graph.

 * Rewrite of parts of the scripted "git submodule" Porcelain command
   continues; this time it is "git submodule set-branch" subcommand's
   turn.

 * The "fetch/clone" protocol has been updated to allow the server to
   instruct the clients to grab pre-packaged packfile(s) in addition
   to the packed object data coming over the wire.

 * A misdesigned strbuf_write_fd() function has been retired.

 * SHA-256 migration work continues, including CVS/SVN interface.

 * A few fields in "struct commit" that do not have to always be
   present have been moved to commit slabs.

 * API cleanup for get_worktrees()

 * By renumbering object flag bits, "struct object" managed to lose
   bloated inter-field padding.

 * The name of the primary branch in existing repositories, and the
   default name used for the first branch in newly created
   repositories, is made configurable, so that we can eventually wean
   ourselves off of the hardcoded 'master'.

 * The effort to avoid using test_must_fail on non-git command continues.

 * In 2.28-rc0, we corrected a bug that some repository extensions are
   honored by mistake even in a version 0 repositories (these
   configuration variables in extensions.* namespace were supposed to
   have special meaning in repositories whose version numbers are 1 or
   higher), but this was a bit too big a change.  The behaviour in
   recent versions of Git where certaion extensions.* were honored by
   mistake even in version 0 repositories has been restored.


Fixes since v2.27
-----------------

 * The "--prepare-p4-only" option of "git p4" is supposed to stop
   after replaying one changeset, but kept going (by mistake?)

 * The error message from "git checkout -b foo -t bar baz" was
   confusing.

 * Some repositories in the wild have commits that record nonsense
   committer timezone (e.g. rails.git); "git fast-import" learned an
   option to pass these nonsense timestamps intact to allow recreating
   existing repositories as-is.
   (merge d42a2fb72f en/fast-import-looser-date later to maint).

 * The command line completion script (in contrib/) tried to complete
   "git stash -p" as if it were "git stash push -p", but it was too
   aggressive and also affected "git stash show -p", which has been
   corrected.
   (merge fffd0cf520 vs/complete-stash-show-p-fix later to maint).

 * On-the-wire protocol v2 easily falls into a deadlock between the
   remote-curl helper and the fetch-pack process when the server side
   prematurely throws an error and disconnects.  The communication has
   been updated to make it more robust.

 * "git checkout -p" did not handle a newly added path at all.
   (merge 2c8bd8471a js/checkout-p-new-file later to maint).

 * The code to parse "git bisect start" command line was lax in
   validating the arguments.
   (merge 4d9005ff5d cb/bisect-helper-parser-fix later to maint).

 * Reduce memory usage during "diff --quiet" in a worktree with too
   many stat-unmatched paths.
   (merge d2d7fbe129 jk/diff-memuse-optim-with-stat-unmatch later to maint).

 * The reflog entries for "git clone" and "git fetch" did not
   anonymize the URL they operated on.
   (merge 46da295a77 js/reflog-anonymize-for-clone-and-fetch later to maint).

 * The behaviour of "sparse-checkout" in the state "git clone
   --no-checkout" left was changed accidentally in 2.27, which has
   been corrected.

 * Use of negative pathspec, while collecting paths including
   untracked ones in the working tree, was broken.

 * The same worktree directory must be registered only once, but
   "git worktree move" allowed this invariant to be violated, which
   has been corrected.
   (merge 810382ed37 es/worktree-duplicate-paths later to maint).

 * The effect of sparse checkout settings on submodules is documented.
   (merge e7d7c73249 en/sparse-with-submodule-doc later to maint).

 * Code clean-up around "git branch" with a minor bugfix.
   (merge dc44639904 dl/branch-cleanup later to maint).

 * A branch name used in a test has been clarified to match what is
   going on.
   (merge 08dc26061f pb/t4014-unslave later to maint).

 * An in-code comment in "git diff" has been updated.
   (merge c592fd4c83 dl/diff-usage-comment-update later to maint).

 * The documentation and some tests have been adjusted for the recent
   renaming of "pu" branch to "seen".
   (merge 6dca5dbf93 js/pu-to-seen later to maint).

 * The code to push changes over "dumb" HTTP had a bad interaction
   with the commit reachability code due to incorrect allocation of
   object flag bits, which has been corrected.
   (merge 64472d15e9 bc/http-push-flagsfix later to maint).

 * "git send-email --in-reply-to=<msg>" did not use the In-Reply-To:
   header with the value given from the command line, and let it be
   overridden by the value on In-Reply-To: header in the messages
   being sent out (if exists).
   (merge f9f60d7066 ra/send-email-in-reply-to-from-command-line-wins later to maint).

 * "git log -Lx,y:path --before=date" lost track of where the range
   should be because it didn't take the changes made by the youngest
   commits that are omitted from the output into account.

 * When "fetch.writeCommitGraph" configuration is set in a shallow
   repository and a fetch moves the shallow boundary, we wrote out
   broken commit-graph files that do not match the reality, which has
   been corrected.

 * "git checkout" failed to catch an error from fstat() after updating
   a path in the working tree.
   (merge 35e6e212fd mt/entry-fstat-fallback-fix later to maint).

 * When an aliased command, whose output is piped to a pager by git,
   gets killed by a signal, the pager got into a funny state, which
   has been corrected (again).
   (merge c0d73a59c9 ta/wait-on-aliased-commands-upon-signal later to maint).

 * The code to produce progress output from "git commit-graph --write"
   had a few breakages, which have been fixed.

 * Other code cleanup, docfix, build fix, etc.
   (merge 2c31a7aa44 jx/pkt-line-doc-count-fix later to maint).
   (merge d63ae31962 cb/t5608-cleanup later to maint).
   (merge 788db145c7 dl/t-readme-spell-git-correctly later to maint).
   (merge 45a87a83bb dl/python-2.7-is-the-floor-version later to maint).
   (merge b75a219904 es/advertise-contribution-doc later to maint).
   (merge 0c9a4f638a rs/pull-leakfix later to maint).
   (merge d546fe2874 rs/commit-reach-leakfix later to maint).
   (merge 087bf5409c mk/pb-pretty-email-without-domain-part-fix later to maint).
   (merge 5f4ee57ad9 es/worktree-code-cleanup later to maint).
   (merge 0172f7834a cc/cat-file-usage-update later to maint).
   (merge 81de0c01cf ma/rebase-doc-typofix later to maint).

----------------------------------------------------------------

Changes since v2.27.0 are as follows:

Abhishek Kumar (4):
      object: drop parsed_object_pool->commit_count
      commit-graph: introduce commit_graph_data_slab
      commit: move members graph_pos, generation to a slab
      commit-graph: minimize commit_graph_data_slab access

Andrew Ng (1):
      merge: optimization to skip evaluate_result for single strategy

Ben Keene (1):
      git-p4.py: fix --prepare-p4-only error with multiple commits

Carlo Marcelo Arenas Belón (5):
      t/helper: teach test-regex to report pattern errors (like REG_ILLSEQ)
      t4210: detect REG_ILLSEQ dynamically and skip affected tests
      bisect--helper: avoid segfault with bad syntax in `start --term-*`
      t5608: avoid say() and use "skip_all" instead for consistency
      commit-reach: avoid is_descendant_of() shim

Chris Torek (3):
      t/t3430: avoid undefined git diff behavior
      git diff: improve range handling
      Documentation: usage for diff combined commits

Christian Couder (40):
      upload-pack: remove unused 'wants' from upload_pack_data
      upload-pack: move {want,have}_obj to upload_pack_data
      upload-pack: move 'struct upload_pack_data' around
      upload-pack: use 'struct upload_pack_data' in upload_pack()
      upload-pack: pass upload_pack_data to get_common_commits()
      upload-pack: pass upload_pack_data to receive_needs()
      upload-pack: use upload_pack_data writer in receive_needs()
      upload-pack: move symref to upload_pack_data
      upload-pack: pass upload_pack_data to send_ref()
      upload-pack: pass upload_pack_data to check_non_tip()
      upload-pack: remove static variable 'stateless_rpc'
      upload-pack: pass upload_pack_data to create_pack_file()
      upload-pack: use upload_pack_data fields in receive_needs()
      upload-pack: annotate upload_pack_data fields
      upload-pack: move static vars to upload_pack_data
      upload-pack: move use_sideband to upload_pack_data
      upload-pack: move filter_capability_requested to upload_pack_data
      upload-pack: move multi_ack to upload_pack_data
      upload-pack: change multi_ack to an enum
      upload-pack: pass upload_pack_data to upload_pack_config()
      upload-pack: move keepalive to upload_pack_data
      upload-pack: move allow_filter to upload_pack_data
      upload-pack: move allow_ref_in_want to upload_pack_data
      upload-pack: move allow_sideband_all to upload_pack_data
      upload-pack: move pack_objects_hook to upload_pack_data
      upload-pack: pass upload_pack_data to send_shallow_list()
      upload-pack: pass upload_pack_data to deepen()
      upload-pack: pass upload_pack_data to deepen_by_rev_list()
      upload-pack: pass upload_pack_data to send_unshallow()
      upload-pack: move shallow_nr to upload_pack_data
      upload-pack: move extra_edge_obj to upload_pack_data
      upload-pack: move allow_unadvertised_object_request to upload_pack_data
      upload-pack: change allow_unadvertised_object_request to an enum
      upload-pack: pass upload_pack_data to process_haves()
      upload-pack: pass upload_pack_data to send_acks()
      upload-pack: pass upload_pack_data to ok_to_give_up()
      upload-pack: pass upload_pack_data to got_oid()
      upload-pack: move oldest_have to upload_pack_data
      upload-pack: refactor common code into do_got_oid()
      cat-file: add missing [=<format>] to usage/synopsis

Denton Liu (18):
      lib-submodule-update: add space after function name
      lib-submodule-update: consolidate --recurse-submodules
      remote-curl: fix typo
      remote-curl: remove label indentation
      transport: extract common fetch_pack() call
      pkt-line: extern packet_length()
      remote-curl: error on incomplete packet
      pkt-line: define PACKET_READ_RESPONSE_END
      stateless-connect: send response end packet
      t/README: avoid poor-man's small caps GIT
      CodingGuidelines: specify Python 2.7 is the oldest version
      lib-submodule-update: prepend "git" to $command
      t3200: rename "expected" to "expect"
      t3200: test for specific errors
      branch: don't mix --edit-description
      builtin/diff: update usage comment
      builtin/diff: fix botched update of usage comment
      lib-submodule-update: pass 'test_must_fail' as an argument

Derrick Stolee (3):
      line-log: integrate with changed-path Bloom filters
      commit-reach: create repo_is_descendant_of()
      commit-reach: use fast logic in repo_in_merge_base

Don Goodman-Wilson (1):
      init: allow setting the default for the initial branch name via the config

Elijah Newren (11):
      fast-import: add new --date-format=raw-permissive format
      sparse-checkout: avoid staging deletions of all files
      dir: fix treatment of negated pathspecs
      git-sparse-checkout: clarify interactions with submodules
      dir: fix a few confusing comments
      dir, clean: avoid disallowed behavior
      clean: consolidate handling of ignored parameters
      clean: optimize and document cases where we recurse into subdirectories
      wt-status: show sparse checkout status as well
      git-prompt: document how in-progress operations affect the prompt
      git-prompt: include sparsity state as well

Emily Shaffer (3):
      help: add shell-path to --build-options
      bugreport: include user interactive shell
      docs: mention MyFirstContribution in more places

Eric Sunshine (10):
      worktree: factor out repeated string literal
      worktree: give "should be pruned?" function more meaningful name
      worktree: make high-level pruning re-usable
      worktree: prune duplicate entries referencing same worktree path
      worktree: prune linked worktree referencing main worktree path
      worktree: generalize candidate worktree path validation
      worktree: make "move" refuse to move atop missing registered worktree
      worktree: drop get_worktrees() special-purpose sorting option
      worktree: drop get_worktrees() unused 'flags' argument
      worktree: avoid dead-code in conditional

Han-Wen Nienhuys (5):
      refs.h: clarify reflog iteration order
      t: use update-ref and show-ref to reading/writing refs
      refs: improve documentation for ref iterator
      reftable: clarify how empty tables should be written
      reftable: define version 2 of the spec to accomodate SHA256

Jacob Keller (16):
      completion: add test showing subpar git switch completion
      completion: add tests showing subpar DWIM logic for switch/checkout
      completion: add tests showing subar checkout --detach logic
      completion: add tests showing subpar switch/checkout --track logic
      completion: add tests showing subpar -c/-C startpoint completion
      completion: add tests showing subpar -c/C argument completion
      completion: add tests showing subpar switch/checkout --orphan logic
      completion: replace overloaded track term for __git_complete_refs
      completion: extract function __git_dwim_remote_heads
      completion: perform DWIM logic directly in __git_complete_refs
      completion: improve handling of DWIM mode for switch/checkout
      completion: improve completion for git switch with no options
      completion: improve handling of --detach in checkout
      completion: improve handling of --track in switch/checkout
      completion: improve handling of -c/-C and -b/-B in switch/checkout
      completion: improve handling of --orphan option of switch/checkout

Jeff King (14):
      diff: discard blob data from stat-unmatched pairs
      upload-pack: actually use some upload_pack_data bitfields
      t9351: derive anonymized tree checks from original repo
      fast-export: use xmemdupz() for anonymizing oids
      fast-export: store anonymized oids as hex strings
      fast-export: tighten anonymize_mem() interface to handle only strings
      fast-export: stop storing lengths in anonymized hashmaps
      fast-export: use a flex array to store anonymized entries
      fast-export: move global "idents" anonymize hashmap into function
      fast-export: add a "data" callback parameter to anonymize_str()
      fast-export: allow seeding the anonymized mapping
      fast-export: anonymize "master" refname
      fast-export: use local array to store anonymized oid
      diff: check for merge bases before assigning sym->base

Jiuyang Xie (1):
      doc: fix wrong 4-byte length of pkt-line message

Johannes Schindelin (16):
      checkout -p: handle new files correctly
      clone/fetch: anonymize URLs in the reflog
      msvc: fix "REG_STARTEND" issue
      fmt-merge-msg: stop treating `master` specially
      send-pack/transport-helper: avoid mentioning a particular branch
      submodule: fall back to remote's HEAD for missing remote.<name>.branch
      docs: add missing diamond brackets
      init: allow specifying the initial branch name for the new repository
      clone: use configured default branch name when appropriate
      remote: use the configured default branch name when appropriate
      testsvn: respect `init.defaultBranch`
      docs: adjust for the recent rename of `pu` to `seen`
      docs: adjust the technical overview for the rename `pu` -> `seen`
      tests: reference `seen` wherever `pu` was referenced
      diff-files --raw: show correct post-image of intent-to-add files
      difftool -d: ensure that intent-to-add files are handled correctly

John Lin (1):
      bash-completion: add git-prune into bash completion

Jonathan Nieder (5):
      config: let feature.experimental imply protocol.version=2
      reftable: file format documentation
      experimental: default to fetch.writeCommitGraph=false
      Revert "check_repository_format_gently(): refuse extensions for old repositories"
      repository: allow repository format upgrade with extensions

Jonathan Tan (12):
      t5551: test that GIT_TRACE_CURL redacts password
      http, imap-send: stop using CURLOPT_VERBOSE
      http: redact all cookies, teach GIT_TRACE_REDACT=0
      http: use --stdin when indexing dumb HTTP pack
      http: refactor finish_http_pack_request()
      http-fetch: refactor into function
      http-fetch: support fetching packfiles by URL
      Documentation: order protocol v2 sections
      Documentation: add Packfile URIs design doc
      upload-pack: refactor reading of pack-objects out
      fetch-pack: support more than one pack lockfile
      upload-pack: send part of packfile response as uri

Josh Steadmon (1):
      fuzz-commit-graph: properly free graph struct

Junio C Hamano (10):
      Start the post 2.27 cycle
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      Git 2.28-rc0
      Hopefully the last batch before -rc1
      Git 2.28-rc1

Laurent Arnoud (1):
      diff: add config option relative

Luc Van Oostenryck (1):
      sparse: allow '{ 0 }' to be used without warnings

Marco Trevisan (Treviño) (1):
      completion: use native ZSH array pattern matching

Martin Ågren (3):
      git-rebase.txt: fix description list separator
      git-diff.txt: don't mark required argument as optional
      git-diff.txt: reorder possible usages

Matheus Tavares (1):
      entry: check for fstat() errors after checkout

Miroslav Koškár (1):
      doc: fix author vs. committer copy/paste error

Paolo Bonzini (1):
      t4014: do not use "slave branch" nomenclature

Patrick Steinhardt (1):
      refs: implement reference transaction hook

Rafael Aquini (1):
      send-email: restore --in-reply-to superseding behavior

Ramsay Jones (1):
      upload-pack: fix a sparse '0 as NULL pointer' warning

Randall S. Becker (2):
      bugreport.c: replace strbuf_write_fd with write_in_full
      strbuf: remove unreferenced strbuf_write_fd method.

René Scharfe (10):
      fsck: fix a typo in a comment
      t1450: increase test coverage of in-tree d/f detection
      t1450: demonstrate undetected in-tree d/f conflict
      fsck: detect more in-tree d/f conflicts
      checkout: add tests for -b and --track
      checkout: improve error messages for -b with extra argument
      commit-reach: plug minor memory leak after using is_descendant_of()
      pull: plug minor memory leak after using is_descendant_of()
      revision: reallocate TOPO_WALK object flags
      revision: disable min_age optimization with line-log

SZEDER Gábor (7):
      line-log: remove unused fields from 'struct line_log_data'
      t4211-line-log: add tests for parent oids
      line-log: more responsive, incremental 'git log -L'
      line-log: try to use generation number-based topo-ordering
      commit-graph: fix progress of reachable commits
      commit-graph: fix "Writing out commit graph" progress counter
      commit-graph: fix "Collecting commits from input" progress line

Shourya Shukla (1):
      submodule: port subcommand 'set-branch' from shell to C

Srinidhi Kaushik (1):
      diff-files: treat "i-t-a" files as "not-in-index"

Taylor Blau (11):
      commit-graph.c: extract 'refs_cb_data'
      commit-graph.c: show progress of finding reachable commits
      commit-graph.c: peel refs in 'add_ref_to_set'
      builtin/commit-graph.c: extract 'read_one_commit()'
      builtin/commit-graph.c: dereference tags in builtin
      commit-graph.c: simplify 'fill_oids_from_commits'
      t5318: reorder test below 'graph_read_expect'
      commit-graph: drop COMMIT_GRAPH_WRITE_CHECK_OIDS flag
      t5318: use 'test_must_be_empty'
      t5318: test that '--stdin-commits' respects '--[no-]progress'
      commit.c: don't persist substituted parents when unshallowing

Trygve Aaberge (2):
      Wait for child on signal death for aliases to builtins
      Wait for child on signal death for aliases to externals

Ville Skyttä (2):
      completion: don't override given stash subcommand with -p
      completion: nounset mode fixes

Xin Li (4):
      repository: add a helper function to perform repository format upgrade
      fetch: allow adding a filter after initial clone
      sparse-checkout: upgrade repository to version 1 when enabling extension
      check_repository_format_gently(): refuse extensions for old repositories

brian m. carlson (61):
      t1050: match object ID paths in a hash-insensitive way
      Documentation: document v1 protocol object-format capability
      builtin/checkout: simplify metadata initialization
      t2060: add a test for switch with --orphan and --discard-changes
      connect: have ref processing code take struct packet_reader
      wrapper: add function to compare strings with different NUL termination
      remote: advertise the object-format capability on the server side
      connect: add function to parse multiple v1 capability values
      connect: add function to fetch value of a v2 server capability
      pkt-line: add a member for hash algorithm
      transport: add a hash algorithm member
      connect: add function to detect supported v1 hash functions
      send-pack: detect when the server doesn't support our hash
      connect: make parse_feature_value extern
      fetch-pack: detect when the server doesn't support our hash
      connect: detect algorithm when fetching refs
      builtin/receive-pack: detect when the server doesn't support our hash
      docs: update remote helper docs for object-format extensions
      transport-helper: implement object-format extensions
      remote-curl: implement object-format extensions
      builtin/clone: initialize hash algorithm properly
      t5562: pass object-format in synthesized test data
      fetch-pack: parse and advertise the object-format capability
      setup: set the_repository's hash algo when checking format
      t3200: mark assertion with SHA1 prerequisite
      packfile: compute and use the index CRC offset
      t5302: modernize test formatting
      builtin/show-index: provide options to determine hash algo
      t1302: expect repo format version 1 for SHA-256
      Documentation/technical: document object-format for protocol v2
      connect: pass full packet reader when parsing v2 refs
      connect: parse v2 refs with correct hash algorithm
      serve: advertise object-format capability for protocol v2
      t5500: make hash independent
      builtin/ls-remote: initialize repository based on fetch
      remote-curl: detect algorithm for dumb HTTP by size
      builtin/index-pack: add option to specify hash algorithm
      t1050: pass algorithm to index-pack when outside repo
      remote-curl: avoid truncating refs with ls-remote
      t/helper: initialize the repository for test-sha1-array
      t5702: offer an object-format capability in the test
      t5703: use object-format serve option
      t5704: send object-format capability with SHA-256
      t5300: pass --object-format to git index-pack
      bundle: detect hash algorithm when reading refs
      remote-testgit: adapt for object-format
      t9109: make test hash independent
      t9168: make test hash independent
      t9108: make test hash independent
      t9100: make test work with SHA-256
      t9104: make hash size independent
      t9101: make hash independent
      t/lib-git-svn: make hash size independent
      perl: create and switch variables for hash constants
      perl: make Git::IndexInfo work with SHA-256
      perl: make SVN code hash independent
      git-svn: set the OID length based on hash algorithm
      git-cvsserver: port to SHA-256
      git-cvsimport: port to SHA-256
      git-cvsexportcommit: port to SHA-256
      http-push: ensure unforced pushes fail when data would be lost

Đoàn Trần Công Danh (1):
      contrib: subtree: adjust test to change in fmt-merge-msg


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.28.0-rc0
@ 2020-07-09 21:40  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-07-09 21:40 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

An early preview release Git v2.28.0-rc0 is now available for
testing at the usual places.  It is comprised of 284 non-merge
commits since v2.27.0, contributed by 42 people, 9 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.28.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.27.0 are as follows.
Welcome to the Git development community!

  Andrew Ng, Chris Torek, Don Goodman-Wilson, Jiuyang Xie, Luc
  Van Oostenryck, Marco Trevisan (Treviño), Miroslav Koškár,
  Rafael Aquini, and Srinidhi Kaushik.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Abhishek Kumar, Ben Keene, brian m. carlson, Carlo Marcelo Arenas
  Belón, Christian Couder, Denton Liu, Derrick Stolee, Đoàn
  Trần Công Danh, Elijah Newren, Emily Shaffer, Eric Sunshine,
  Han-Wen Nienhuys, Jacob Keller, Jeff King, Johannes Schindelin,
  John Lin, Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio C
  Hamano, Laurent Arnoud, Martin Ågren, Matheus Tavares, Paolo
  Bonzini, Patrick Steinhardt, Ramsay Jones, Randall S. Becker,
  René Scharfe, Shourya Shukla, SZEDER Gábor, Taylor Blau,
  Ville Skyttä, and Xin Li.

----------------------------------------------------------------

Git 2.28 Release Notes (draft)
==============================

Updates since v2.27
-------------------

Backward compatibility notes

 * "fetch.writeCommitGraph" is deemed to be still a bit too risky and
   is no longer part of the "feature.experimental" set.

 * It used to be that setting extensions.* configuration variables
   alone, while leaving core.repositoryFormatVersion=0, made these
   settings effective, which was a wrong thing to do.  In version 0,
   there was no special meaning in extensions.* configuration
   variables.  This has been corrected.  If you need these repository
   extensions to be effective, the core.repositoryFormatVersion
   variable needs to be updated to 1 after vetting these extensions.*
   variables are set correctly.


UI, Workflows & Features

 * The commands in the "diff" family learned to honor "diff.relative"
   configuration variable.

 * The check in "git fsck" to ensure that the tree objects are sorted
   still had corner cases it missed unsorted entries.

 * The interface to redact sensitive information in the trace output
   has been simplified.

 * The command line completion (in contrib/) learned to complete
   options that the "git switch" command takes.

 * "git diff" used to take arguments in random and nonsense range
   notation, e.g. "git diff A..B C", "git diff A..B C...D", etc.,
   which has been cleaned up.

 * "git diff-files" has been taught to say paths that are marked as
   intent-to-add are new files, not modified from an empty blob.

 * "git status" learned to report the status of sparse checkout.

 * "git difftool" has trouble dealing with paths added to the index
   with the intent-to-add bit.

 * "git fast-export --anonymize" learned to take customized mapping to
   allow its users to tweak its output more usable for debugging.

 * The command line completion support (in contrib/) used to be
   prepared to work with "set -u" but recent changes got a bit more
   sloppy.  This has been corrected.


Performance, Internal Implementation, Development Support etc.

 * Code optimization for a common case.
   (merge 8777616e4d an/merge-single-strategy-optim later to maint).

 * We've adopted a convention that any on-stack structure can be
   initialized to have zero values in all fields with "= { 0 }",
   even when the first field happens to be a pointer, but sparse
   complained that a null pointer should be spelled NULL for a long
   time.  Start using -Wno-universal-initializer option to squelch
   it (the latest sparse has it on by default).

 * "git log -L..." now takes advantage of the "which paths are touched
   by this commit?" info stored in the commit-graph system.

 * As FreeBSD is not the only platform whose regexp library reports
   a REG_ILLSEQ error when fed invalid UTF-8, add logic to detect that
   automatically and skip the affected tests.

 * "git bugreport" learns to report what shell is in use.

 * Support for GIT_CURL_VERBOSE has been rewritten in terms of
   GIT_TRACE_CURL.

 * Preliminary clean-ups around refs API, plus file format
   specification documentation for the reftable backend.

 * Workaround breakage in MSVC build, where "curl-config --cflags"
   gives settings appropriate for GCC build.

 * Code clean-up of "git clean" resulted in a fix of recent
   performance regression.

 * Code clean-up in the codepath that serves "git fetch" continues.

 * "git merge-base --is-ancestor" is taught to take advantage of the
   commit graph.

 * Rewrite of parts of the scripted "git submodule" Porcelain command
   continues; this time it is "git submodule set-branch" subcommand's
   turn.

 * The "fetch/clone" protocol has been updated to allow the server to
   instruct the clients to grab pre-packaged packfile(s) in addition
   to the packed object data coming over the wire.

 * A misdesigned strbuf_write_fd() function has been retired.

 * SHA-256 migration work continues, including CVS/SVN interface.

 * A few fields in "struct commit" that do not have to always be
   present have been moved to commit slabs.

 * API cleanup for get_worktrees()

 * By renumbering object flag bits, "struct object" managed to lose
   bloated inter-field padding.

 * The name of the primary branch in existing repositories, and the
   default name used for the first branch in newly created
   repositories, is made configurable, so that we can eventually wean
   ourselves off of the hardcoded 'master'.

 * The effort to avoid using test_must_fail on non-git command continues.


Fixes since v2.27
-----------------

 * The "--prepare-p4-only" option of "git p4" is supposed to stop
   after replaying one changeset, but kept going (by mistake?)

 * The error message from "git checkout -b foo -t bar baz" was
   confusing.

 * Some repositories in the wild have commits that record nonsense
   committer timezone (e.g. rails.git); "git fast-import" learned an
   option to pass these nonsense timestamps intact to allow recreating
   existing repositories as-is.
   (merge d42a2fb72f en/fast-import-looser-date later to maint).

 * The command line completion script (in contrib/) tried to complete
   "git stash -p" as if it were "git stash push -p", but it was too
   aggressive and also affected "git stash show -p", which has been
   corrected.
   (merge fffd0cf520 vs/complete-stash-show-p-fix later to maint).

 * On-the-wire protocol v2 easily falls into a deadlock between the
   remote-curl helper and the fetch-pack process when the server side
   prematurely throws an error and disconnects.  The communication has
   been updated to make it more robust.

 * "git checkout -p" did not handle a newly added path at all.
   (merge 2c8bd8471a js/checkout-p-new-file later to maint).

 * The code to parse "git bisect start" command line was lax in
   validating the arguments.
   (merge 4d9005ff5d cb/bisect-helper-parser-fix later to maint).

 * Reduce memory usage during "diff --quiet" in a worktree with too
   many stat-unmatched paths.
   (merge d2d7fbe129 jk/diff-memuse-optim-with-stat-unmatch later to maint).

 * The reflog entries for "git clone" and "git fetch" did not
   anonymize the URL they operated on.
   (merge 46da295a77 js/reflog-anonymize-for-clone-and-fetch later to maint).

 * The behaviour of "sparse-checkout" in the state "git clone
   --no-checkout" left was changed accidentally in 2.27, which has
   been corrected.

 * Use of negative pathspec, while collecting paths including
   untracked ones in the working tree, was broken.

 * The same worktree directory must be registered only once, but
   "git worktree move" allowed this invariant to be violated, which
   has been corrected.
   (merge 810382ed37 es/worktree-duplicate-paths later to maint).

 * The effect of sparse checkout settings on submodules is documented.
   (merge e7d7c73249 en/sparse-with-submodule-doc later to maint).

 * Code clean-up around "git branch" with a minor bugfix.
   (merge dc44639904 dl/branch-cleanup later to maint).

 * A branch name used in a test has been clarified to match what is
   going on.
   (merge 08dc26061f pb/t4014-unslave later to maint).

 * An in-code comment in "git diff" has been updated.
   (merge c592fd4c83 dl/diff-usage-comment-update later to maint).

 * The documentation and some tests have been adjusted for the recent
   renaming of "pu" branch to "seen".
   (merge 6dca5dbf93 js/pu-to-seen later to maint).

 * The code to push changes over "dumb" HTTP had a bad interaction
   with the commit reachability code due to incorrect allocation of
   object flag bits, which has been corrected.
   (merge 64472d15e9 bc/http-push-flagsfix later to maint).

 * "git send-email --in-reply-to=<msg>" did not use the In-Reply-To:
   header with the value given from the command line, and let it be
   overridden by the value on In-Reply-To: header in the messages
   being sent out (if exists).
   (merge f9f60d7066 ra/send-email-in-reply-to-from-command-line-wins later to maint).

 * "git log -Lx,y:path --before=date" lost track of where the range
   should be because it didn't take the changes made by the youngest
   commits that are omitted from the output into account.

 * When "fetch.writeCommitGraph" configuration is set in a shallow
   repository and a fetch moves the shallow boundary, we wrote out
   broken commit-graph files that do not match the reality, which has
   been corrected.

 * "git checkout" failed to catch an error from fstat() after updating
   a path in the working tree.
   (merge 35e6e212fd mt/entry-fstat-fallback-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 2c31a7aa44 jx/pkt-line-doc-count-fix later to maint).
   (merge d63ae31962 cb/t5608-cleanup later to maint).
   (merge 788db145c7 dl/t-readme-spell-git-correctly later to maint).
   (merge 45a87a83bb dl/python-2.7-is-the-floor-version later to maint).
   (merge b75a219904 es/advertise-contribution-doc later to maint).
   (merge 0c9a4f638a rs/pull-leakfix later to maint).
   (merge d546fe2874 rs/commit-reach-leakfix later to maint).
   (merge 087bf5409c mk/pb-pretty-email-without-domain-part-fix later to maint).
   (merge 5f4ee57ad9 es/worktree-code-cleanup later to maint).
   (merge 0172f7834a cc/cat-file-usage-update later to maint).
   (merge 81de0c01cf ma/rebase-doc-typofix later to maint).

----------------------------------------------------------------

Changes since v2.27.0 are as follows:

Abhishek Kumar (4):
      object: drop parsed_object_pool->commit_count
      commit-graph: introduce commit_graph_data_slab
      commit: move members graph_pos, generation to a slab
      commit-graph: minimize commit_graph_data_slab access

Andrew Ng (1):
      merge: optimization to skip evaluate_result for single strategy

Ben Keene (1):
      git-p4.py: fix --prepare-p4-only error with multiple commits

Carlo Marcelo Arenas Belón (5):
      t/helper: teach test-regex to report pattern errors (like REG_ILLSEQ)
      t4210: detect REG_ILLSEQ dynamically and skip affected tests
      bisect--helper: avoid segfault with bad syntax in `start --term-*`
      t5608: avoid say() and use "skip_all" instead for consistency
      commit-reach: avoid is_descendant_of() shim

Chris Torek (3):
      t/t3430: avoid undefined git diff behavior
      git diff: improve range handling
      Documentation: usage for diff combined commits

Christian Couder (40):
      upload-pack: remove unused 'wants' from upload_pack_data
      upload-pack: move {want,have}_obj to upload_pack_data
      upload-pack: move 'struct upload_pack_data' around
      upload-pack: use 'struct upload_pack_data' in upload_pack()
      upload-pack: pass upload_pack_data to get_common_commits()
      upload-pack: pass upload_pack_data to receive_needs()
      upload-pack: use upload_pack_data writer in receive_needs()
      upload-pack: move symref to upload_pack_data
      upload-pack: pass upload_pack_data to send_ref()
      upload-pack: pass upload_pack_data to check_non_tip()
      upload-pack: remove static variable 'stateless_rpc'
      upload-pack: pass upload_pack_data to create_pack_file()
      upload-pack: use upload_pack_data fields in receive_needs()
      upload-pack: annotate upload_pack_data fields
      upload-pack: move static vars to upload_pack_data
      upload-pack: move use_sideband to upload_pack_data
      upload-pack: move filter_capability_requested to upload_pack_data
      upload-pack: move multi_ack to upload_pack_data
      upload-pack: change multi_ack to an enum
      upload-pack: pass upload_pack_data to upload_pack_config()
      upload-pack: move keepalive to upload_pack_data
      upload-pack: move allow_filter to upload_pack_data
      upload-pack: move allow_ref_in_want to upload_pack_data
      upload-pack: move allow_sideband_all to upload_pack_data
      upload-pack: move pack_objects_hook to upload_pack_data
      upload-pack: pass upload_pack_data to send_shallow_list()
      upload-pack: pass upload_pack_data to deepen()
      upload-pack: pass upload_pack_data to deepen_by_rev_list()
      upload-pack: pass upload_pack_data to send_unshallow()
      upload-pack: move shallow_nr to upload_pack_data
      upload-pack: move extra_edge_obj to upload_pack_data
      upload-pack: move allow_unadvertised_object_request to upload_pack_data
      upload-pack: change allow_unadvertised_object_request to an enum
      upload-pack: pass upload_pack_data to process_haves()
      upload-pack: pass upload_pack_data to send_acks()
      upload-pack: pass upload_pack_data to ok_to_give_up()
      upload-pack: pass upload_pack_data to got_oid()
      upload-pack: move oldest_have to upload_pack_data
      upload-pack: refactor common code into do_got_oid()
      cat-file: add missing [=<format>] to usage/synopsis

Denton Liu (18):
      lib-submodule-update: add space after function name
      lib-submodule-update: consolidate --recurse-submodules
      remote-curl: fix typo
      remote-curl: remove label indentation
      transport: extract common fetch_pack() call
      pkt-line: extern packet_length()
      remote-curl: error on incomplete packet
      pkt-line: define PACKET_READ_RESPONSE_END
      stateless-connect: send response end packet
      t/README: avoid poor-man's small caps GIT
      CodingGuidelines: specify Python 2.7 is the oldest version
      lib-submodule-update: prepend "git" to $command
      t3200: rename "expected" to "expect"
      t3200: test for specific errors
      branch: don't mix --edit-description
      builtin/diff: update usage comment
      builtin/diff: fix botched update of usage comment
      lib-submodule-update: pass 'test_must_fail' as an argument

Derrick Stolee (3):
      line-log: integrate with changed-path Bloom filters
      commit-reach: create repo_is_descendant_of()
      commit-reach: use fast logic in repo_in_merge_base

Don Goodman-Wilson (1):
      init: allow setting the default for the initial branch name via the config

Elijah Newren (11):
      fast-import: add new --date-format=raw-permissive format
      sparse-checkout: avoid staging deletions of all files
      dir: fix treatment of negated pathspecs
      git-sparse-checkout: clarify interactions with submodules
      dir: fix a few confusing comments
      dir, clean: avoid disallowed behavior
      clean: consolidate handling of ignored parameters
      clean: optimize and document cases where we recurse into subdirectories
      wt-status: show sparse checkout status as well
      git-prompt: document how in-progress operations affect the prompt
      git-prompt: include sparsity state as well

Emily Shaffer (3):
      help: add shell-path to --build-options
      bugreport: include user interactive shell
      docs: mention MyFirstContribution in more places

Eric Sunshine (10):
      worktree: factor out repeated string literal
      worktree: give "should be pruned?" function more meaningful name
      worktree: make high-level pruning re-usable
      worktree: prune duplicate entries referencing same worktree path
      worktree: prune linked worktree referencing main worktree path
      worktree: generalize candidate worktree path validation
      worktree: make "move" refuse to move atop missing registered worktree
      worktree: drop get_worktrees() special-purpose sorting option
      worktree: drop get_worktrees() unused 'flags' argument
      worktree: avoid dead-code in conditional

Han-Wen Nienhuys (5):
      refs.h: clarify reflog iteration order
      t: use update-ref and show-ref to reading/writing refs
      refs: improve documentation for ref iterator
      reftable: clarify how empty tables should be written
      reftable: define version 2 of the spec to accomodate SHA256

Jacob Keller (16):
      completion: add test showing subpar git switch completion
      completion: add tests showing subpar DWIM logic for switch/checkout
      completion: add tests showing subar checkout --detach logic
      completion: add tests showing subpar switch/checkout --track logic
      completion: add tests showing subpar -c/-C startpoint completion
      completion: add tests showing subpar -c/C argument completion
      completion: add tests showing subpar switch/checkout --orphan logic
      completion: replace overloaded track term for __git_complete_refs
      completion: extract function __git_dwim_remote_heads
      completion: perform DWIM logic directly in __git_complete_refs
      completion: improve handling of DWIM mode for switch/checkout
      completion: improve completion for git switch with no options
      completion: improve handling of --detach in checkout
      completion: improve handling of --track in switch/checkout
      completion: improve handling of -c/-C and -b/-B in switch/checkout
      completion: improve handling of --orphan option of switch/checkout

Jeff King (14):
      diff: discard blob data from stat-unmatched pairs
      upload-pack: actually use some upload_pack_data bitfields
      t9351: derive anonymized tree checks from original repo
      fast-export: use xmemdupz() for anonymizing oids
      fast-export: store anonymized oids as hex strings
      fast-export: tighten anonymize_mem() interface to handle only strings
      fast-export: stop storing lengths in anonymized hashmaps
      fast-export: use a flex array to store anonymized entries
      fast-export: move global "idents" anonymize hashmap into function
      fast-export: add a "data" callback parameter to anonymize_str()
      fast-export: allow seeding the anonymized mapping
      fast-export: anonymize "master" refname
      fast-export: use local array to store anonymized oid
      diff: check for merge bases before assigning sym->base

Jiuyang Xie (1):
      doc: fix wrong 4-byte length of pkt-line message

Johannes Schindelin (16):
      checkout -p: handle new files correctly
      clone/fetch: anonymize URLs in the reflog
      msvc: fix "REG_STARTEND" issue
      fmt-merge-msg: stop treating `master` specially
      send-pack/transport-helper: avoid mentioning a particular branch
      submodule: fall back to remote's HEAD for missing remote.<name>.branch
      docs: add missing diamond brackets
      init: allow specifying the initial branch name for the new repository
      clone: use configured default branch name when appropriate
      remote: use the configured default branch name when appropriate
      testsvn: respect `init.defaultBranch`
      docs: adjust for the recent rename of `pu` to `seen`
      docs: adjust the technical overview for the rename `pu` -> `seen`
      tests: reference `seen` wherever `pu` was referenced
      diff-files --raw: show correct post-image of intent-to-add files
      difftool -d: ensure that intent-to-add files are handled correctly

John Lin (1):
      bash-completion: add git-prune into bash completion

Jonathan Nieder (3):
      config: let feature.experimental imply protocol.version=2
      reftable: file format documentation
      experimental: default to fetch.writeCommitGraph=false

Jonathan Tan (12):
      t5551: test that GIT_TRACE_CURL redacts password
      http, imap-send: stop using CURLOPT_VERBOSE
      http: redact all cookies, teach GIT_TRACE_REDACT=0
      http: use --stdin when indexing dumb HTTP pack
      http: refactor finish_http_pack_request()
      http-fetch: refactor into function
      http-fetch: support fetching packfiles by URL
      Documentation: order protocol v2 sections
      Documentation: add Packfile URIs design doc
      upload-pack: refactor reading of pack-objects out
      fetch-pack: support more than one pack lockfile
      upload-pack: send part of packfile response as uri

Josh Steadmon (1):
      fuzz-commit-graph: properly free graph struct

Junio C Hamano (8):
      Start the post 2.27 cycle
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      Git 2.28-rc0

Laurent Arnoud (1):
      diff: add config option relative

Luc Van Oostenryck (1):
      sparse: allow '{ 0 }' to be used without warnings

Marco Trevisan (Treviño) (1):
      completion: use native ZSH array pattern matching

Martin Ågren (1):
      git-rebase.txt: fix description list separator

Matheus Tavares (1):
      entry: check for fstat() errors after checkout

Miroslav Koškár (1):
      doc: fix author vs. committer copy/paste error

Paolo Bonzini (1):
      t4014: do not use "slave branch" nomenclature

Patrick Steinhardt (1):
      refs: implement reference transaction hook

Rafael Aquini (1):
      send-email: restore --in-reply-to superseding behavior

Ramsay Jones (1):
      upload-pack: fix a sparse '0 as NULL pointer' warning

Randall S. Becker (2):
      bugreport.c: replace strbuf_write_fd with write_in_full
      strbuf: remove unreferenced strbuf_write_fd method.

René Scharfe (10):
      fsck: fix a typo in a comment
      t1450: increase test coverage of in-tree d/f detection
      t1450: demonstrate undetected in-tree d/f conflict
      fsck: detect more in-tree d/f conflicts
      checkout: add tests for -b and --track
      checkout: improve error messages for -b with extra argument
      commit-reach: plug minor memory leak after using is_descendant_of()
      pull: plug minor memory leak after using is_descendant_of()
      revision: reallocate TOPO_WALK object flags
      revision: disable min_age optimization with line-log

SZEDER Gábor (4):
      line-log: remove unused fields from 'struct line_log_data'
      t4211-line-log: add tests for parent oids
      line-log: more responsive, incremental 'git log -L'
      line-log: try to use generation number-based topo-ordering

Shourya Shukla (1):
      submodule: port subcommand 'set-branch' from shell to C

Srinidhi Kaushik (1):
      diff-files: treat "i-t-a" files as "not-in-index"

Taylor Blau (11):
      commit-graph.c: extract 'refs_cb_data'
      commit-graph.c: show progress of finding reachable commits
      commit-graph.c: peel refs in 'add_ref_to_set'
      builtin/commit-graph.c: extract 'read_one_commit()'
      builtin/commit-graph.c: dereference tags in builtin
      commit-graph.c: simplify 'fill_oids_from_commits'
      t5318: reorder test below 'graph_read_expect'
      commit-graph: drop COMMIT_GRAPH_WRITE_CHECK_OIDS flag
      t5318: use 'test_must_be_empty'
      t5318: test that '--stdin-commits' respects '--[no-]progress'
      commit.c: don't persist substituted parents when unshallowing

Ville Skyttä (2):
      completion: don't override given stash subcommand with -p
      completion: nounset mode fixes

Xin Li (4):
      repository: add a helper function to perform repository format upgrade
      fetch: allow adding a filter after initial clone
      sparse-checkout: upgrade repository to version 1 when enabling extension
      check_repository_format_gently(): refuse extensions for old repositories

brian m. carlson (61):
      t1050: match object ID paths in a hash-insensitive way
      Documentation: document v1 protocol object-format capability
      builtin/checkout: simplify metadata initialization
      t2060: add a test for switch with --orphan and --discard-changes
      connect: have ref processing code take struct packet_reader
      wrapper: add function to compare strings with different NUL termination
      remote: advertise the object-format capability on the server side
      connect: add function to parse multiple v1 capability values
      connect: add function to fetch value of a v2 server capability
      pkt-line: add a member for hash algorithm
      transport: add a hash algorithm member
      connect: add function to detect supported v1 hash functions
      send-pack: detect when the server doesn't support our hash
      connect: make parse_feature_value extern
      fetch-pack: detect when the server doesn't support our hash
      connect: detect algorithm when fetching refs
      builtin/receive-pack: detect when the server doesn't support our hash
      docs: update remote helper docs for object-format extensions
      transport-helper: implement object-format extensions
      remote-curl: implement object-format extensions
      builtin/clone: initialize hash algorithm properly
      t5562: pass object-format in synthesized test data
      fetch-pack: parse and advertise the object-format capability
      setup: set the_repository's hash algo when checking format
      t3200: mark assertion with SHA1 prerequisite
      packfile: compute and use the index CRC offset
      t5302: modernize test formatting
      builtin/show-index: provide options to determine hash algo
      t1302: expect repo format version 1 for SHA-256
      Documentation/technical: document object-format for protocol v2
      connect: pass full packet reader when parsing v2 refs
      connect: parse v2 refs with correct hash algorithm
      serve: advertise object-format capability for protocol v2
      t5500: make hash independent
      builtin/ls-remote: initialize repository based on fetch
      remote-curl: detect algorithm for dumb HTTP by size
      builtin/index-pack: add option to specify hash algorithm
      t1050: pass algorithm to index-pack when outside repo
      remote-curl: avoid truncating refs with ls-remote
      t/helper: initialize the repository for test-sha1-array
      t5702: offer an object-format capability in the test
      t5703: use object-format serve option
      t5704: send object-format capability with SHA-256
      t5300: pass --object-format to git index-pack
      bundle: detect hash algorithm when reading refs
      remote-testgit: adapt for object-format
      t9109: make test hash independent
      t9168: make test hash independent
      t9108: make test hash independent
      t9100: make test work with SHA-256
      t9104: make hash size independent
      t9101: make hash independent
      t/lib-git-svn: make hash size independent
      perl: create and switch variables for hash constants
      perl: make Git::IndexInfo work with SHA-256
      perl: make SVN code hash independent
      git-svn: set the OID length based on hash algorithm
      git-cvsserver: port to SHA-256
      git-cvsimport: port to SHA-256
      git-cvsexportcommit: port to SHA-256
      http-push: ensure unforced pushes fail when data would be lost

Đoàn Trần Công Danh (1):
      contrib: subtree: adjust test to change in fmt-merge-msg


^ permalink raw reply	[relevance 2%]

* [PATCH 0/3] update delete_ref(), update_ref() and ref_exists() to take a struct repository
@ 2020-06-19 15:21  3% Phillip Wood via GitGitGadget
  0 siblings, 0 replies; 162+ results
From: Phillip Wood via GitGitGadget @ 2020-06-19 15:21 UTC (permalink / raw)
  To: git; +Cc: Han-Wen Nienhuys, Phillip Wood

The code handling pseudo refs such as BISECT_HEAD or CHERRY_PICK_HEAD
assumes that they are files and uses unlink() and file_exists() on the
corresponding paths rather than using the ref api. In repositories using
reftable to store references this will not work. This patch series is a
preparatory step that updates some reference functions to take a struct
repository in preparation for converting code that handles pseudo refs to
the ref api. The conversion will be handled by a separate series

These patches could each be split in two (thereby making the individual
patches smaller) by changing the callers to pass the_repository first and
then changing the call chain to pass a struct repository around if desired.

This series is based on master - 101b3204f3 ("The third batch", 2020-06-17).
When merging into pu there are non-trivial conflicts with
jx/proc-receive-hook, dr/push-remoteref-fix and mr/bisect-in-c-2. I have
prepared a conflict resolution [1] I'm happy to rebase on top of a merge of
master and those three branches if that is helpful.

[1] tag merge-repo-refs-into-pu/v1 at https://github.com/phillipwood/git.git

Phillip Wood (3):
  refs: update delete_ref() to take a struct repository
  refs: update update_ref() to take a struct repository
  refs: update ref_exists() to take a struct repository

 bisect.c                 | 18 ++++++----
 branch.c                 | 14 ++++----
 branch.h                 |  6 ++--
 builtin/am.c             | 19 +++++-----
 builtin/bisect--helper.c |  8 ++---
 builtin/branch.c         | 23 ++++++------
 builtin/checkout.c       | 17 +++++----
 builtin/clone.c          | 16 ++++-----
 builtin/commit.c         |  4 +--
 builtin/for-each-ref.c   |  4 +--
 builtin/log.c            |  6 ++--
 builtin/ls-remote.c      |  2 +-
 builtin/merge.c          | 12 +++----
 builtin/notes.c          | 15 ++++----
 builtin/pull.c           |  5 +--
 builtin/rebase.c         | 10 +++---
 builtin/receive-pack.c   |  2 +-
 builtin/remote.c         | 11 +++---
 builtin/replace.c        |  2 +-
 builtin/reset.c          | 10 +++---
 builtin/revert.c         |  2 +-
 builtin/send-pack.c      |  3 +-
 builtin/stash.c          |  8 ++---
 builtin/symbolic-ref.c   |  3 +-
 builtin/tag.c            |  8 ++---
 builtin/update-ref.c     |  5 +--
 builtin/verify-tag.c     |  2 +-
 builtin/worktree.c       |  8 ++---
 diff.c                   |  2 +-
 fast-import.c            |  2 +-
 notes-cache.c            |  4 +--
 notes-cache.h            |  2 +-
 notes-utils.c            |  2 +-
 ref-filter.c             | 76 +++++++++++++++++++++++++---------------
 ref-filter.h             | 11 +++---
 refs.c                   | 14 ++++----
 refs.h                   |  6 ++--
 remote.c                 | 30 +++++++++-------
 remote.h                 | 13 ++++---
 reset.c                  |  8 ++---
 sequencer.c              | 41 +++++++++++-----------
 sequencer.h              |  2 +-
 sha1-name.c              |  5 +--
 transport-helper.c       | 32 +++++++++--------
 transport-internal.h     |  4 ++-
 transport.c              | 15 ++++----
 transport.h              |  3 +-
 wt-status.c              | 41 ++++++++++++----------
 wt-status.h              |  2 +-
 49 files changed, 314 insertions(+), 244 deletions(-)


base-commit: 101b3204f37606972b40fc17dec84560c22f69f6
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-665%2Fphillipwood%2Fwip%2Frepo-refs-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-665/phillipwood/wip/repo-refs-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/665
-- 
gitgitgadget

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Jun 2020, #03; Wed, 17)
@ 2020-06-18  6:35  1% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-06-18  6:35 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The third batch of topics are now in 'master'.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* dl/python-2.7-is-the-floor-version (2020-06-08) 1 commit
  (merged to 'next' on 2020-06-10 at ad3269ff40)
 + CodingGuidelines: specify Python 2.7 is the oldest version

 Document that we do not support Python 2.6 or older.


* dl/t-readme-spell-git-correctly (2020-06-08) 1 commit
  (merged to 'next' on 2020-06-10 at 60144a59ed)
 + t/README: avoid poor-man's small caps GIT

 Doc updates.


* en/do-match-pathspec-fix (2020-06-05) 1 commit
  (merged to 'next' on 2020-06-10 at 2e63c8c0fc)
 + dir: fix treatment of negated pathspecs

 Use of negative pathspec, while collecting paths including
 untracked ones in the working tree, was broken.


* en/sparse-checkout (2020-06-05) 1 commit
  (merged to 'next' on 2020-06-10 at 697a10b031)
 + sparse-checkout: avoid staging deletions of all files

 The behaviour of "sparse-checkout" in the state "git clone
 --no-checkout" left was changed accidentally in 2.27, which has
 been corrected.


* es/advertise-contribution-doc (2020-06-08) 1 commit
  (merged to 'next' on 2020-06-10 at c72c7da667)
 + docs: mention MyFirstContribution in more places

 Doc updates.


* hn/refs-cleanup (2020-06-09) 6 commits
  (merged to 'next' on 2020-06-09 at abb59f83a2)
 + reftable: define version 2 of the spec to accomodate SHA256
 + reftable: clarify how empty tables should be written
 + reftable: file format documentation
 + refs: improve documentation for ref iterator
 + t: use update-ref and show-ref to reading/writing refs
 + refs.h: clarify reflog iteration order
 (this branch is used by hn/reftable.)

 Preliminary clean-ups around refs API, plus file format
 specification documentation for the reftable backend.


* jk/diff-memuse-optim-with-stat-unmatch (2020-06-02) 1 commit
  (merged to 'next' on 2020-06-10 at 4cea3bfaac)
 + diff: discard blob data from stat-unmatched pairs

 Reduce memory usage during "diff --quiet" in a worktree with too
 many stat-unmatched paths.


* js/fuzz-commit-graph-leakfix (2020-06-08) 1 commit
  (merged to 'next' on 2020-06-10 at 92944ed7f6)
 + fuzz-commit-graph: properly free graph struct

 Leakfix.


* js/msvc-build-fix (2020-06-04) 1 commit
  (merged to 'next' on 2020-06-10 at 167a629359)
 + msvc: fix "REG_STARTEND" issue

 Workaround breakage in MSVC build, where "curl-config --cflags"
 gives settings appropriate for GCC build.


* js/reflog-anonymize-for-clone-and-fetch (2020-06-04) 1 commit
  (merged to 'next' on 2020-06-10 at 2901ff943e)
 + clone/fetch: anonymize URLs in the reflog

 The reflog entries for "git clone" and "git fetch" did not
 anonymize the URL they operated on.


* tb/t5318-cleanup (2020-06-04) 2 commits
  (merged to 'next' on 2020-06-10 at 5a72620cbe)
 + t5318: test that '--stdin-commits' respects '--[no-]progress'
 + t5318: use 'test_must_be_empty'

 Code cleanup.

--------------------------------------------------
[New Topics]

* cc/upload-pack-data-3 (2020-06-11) 14 commits
  (merged to 'next' on 2020-06-17 at 393eff577a)
 + upload-pack: refactor common code into do_got_oid()
 + upload-pack: move oldest_have to upload_pack_data
 + upload-pack: pass upload_pack_data to got_oid()
 + upload-pack: pass upload_pack_data to ok_to_give_up()
 + upload-pack: pass upload_pack_data to send_acks()
 + upload-pack: pass upload_pack_data to process_haves()
 + upload-pack: change allow_unadvertised_object_request to an enum
 + upload-pack: move allow_unadvertised_object_request to upload_pack_data
 + upload-pack: move extra_edge_obj to upload_pack_data
 + upload-pack: move shallow_nr to upload_pack_data
 + upload-pack: pass upload_pack_data to send_unshallow()
 + upload-pack: pass upload_pack_data to deepen_by_rev_list()
 + upload-pack: pass upload_pack_data to deepen()
 + upload-pack: pass upload_pack_data to send_shallow_list()
 (this branch uses cc/upload-pack-data-2)

 Code clean-up in the codepath that serves "git fetch" continues.

 Will merge to 'master'.


* ct/diff-with-merge-base-clarification (2020-06-12) 3 commits
  (merged to 'next' on 2020-06-17 at e0b54a001c)
 + Documentation: usage for diff combined commits
 + git diff: improve range handling
 + t/t3430: avoid undefined git diff behavior

 "git diff" used to take arguments in random and nonsense range
 notation, e.g. "git diff A..B C", "git diff A..B C...D", etc.,
 which has been cleaned up.

 Will merge to 'master'.


* js/default-branch-name (2020-06-10) 9 commits
 - Document how the default branch name can be overridden
 - fast-export: respect the possibly-overridden default branch name
 - fmt-merge-msg: learn about the possibly-configured default branch name
 - clone: learn about the possibly-configured default branch name
 - submodule: use the (possibly overridden) default branch name
 - testsvn: respect `core.defaultBranchName`
 - send-pack/transport-helper: respect `core.defaultBranchName`
 - remote: respect `core.defaultBranchName`
 - init: allow overriding the default branch name for new repositories

 The name of the primary branch in existing repositories, and the
 default name used for the first branch in newly created
 repositories, is made configurable, so that we can eventually wean
 ourselves off of the hardcoded 'master'.

 Expecting a reroll.


* jt/cdn-offload (2020-06-17) 10 commits
 - upload-pack: fix a sparse '0 as NULL pointer' warning
 - upload-pack: send part of packfile response as uri
 - fetch-pack: support more than one pack lockfile
 - upload-pack: refactor reading of pack-objects out
 - Documentation: add Packfile URIs design doc
 - Documentation: order protocol v2 sections
 - http-fetch: support fetching packfiles by URL
 - http-fetch: refactor into function
 - http: refactor finish_http_pack_request()
 - http: use --stdin when indexing dumb HTTP pack
 (this branch uses cc/upload-pack-data-2)

 The "fetch/clone" protocol has been updated to allow the server to
 instruct the clients to grab pre-packaged packfile(s) in addition
 to the packed object data coming over the wire.

 Will merge to 'next'.


* ss/cmake-build (2020-06-12) 8 commits
 - ci: modification of main.yml to use cmake for vs-build job
 - cmake: support for building git on windows with msvc and clang.
 - cmake: support for building git on windows with mingw
 - cmake: support for testing git when building out of the source tree
 - cmake: support for testing git with ctest
 - cmake: installation support for git
 - cmake: generate the shell/perl/python scripts and templates, translations
 - Introduce CMake support for configuring Git

 CMake support to build with MSVC for Windows bypassing the Makefile.

 Almost there.


* ak/commit-graph-to-slab (2020-06-17) 4 commits
 - commit-graph: minimize commit_graph_data_slab access
 - commit: move members graph_pos, generation to a slab
 - commit-graph: introduce commit_graph_data_slab
 - object: drop parsed_object_pool->commit_count

 A few fields in "struct commit" that do not have to always be
 present have been moved to commit slabs.


* en/clean-cleanups (2020-06-12) 4 commits
  (merged to 'next' on 2020-06-17 at 2c4ec990a6)
 + clean: optimize and document cases where we recurse into subdirectories
 + clean: consolidate handling of ignored parameters
 + dir, clean: avoid disallowed behavior
 + dir: fix a few confusing comments

 "git clean" code clean-up that resulted in a fix of recent
 performance regression.

 Will merge to 'master'.


* dl/branch-cleanup (2020-06-17) 3 commits
 - branch: don't mix --edit-description
 - t3200: test for specific errors
 - t3200: rename "expected" to "expect"

 Code clean-up around "git branch" with a minor bugfix.

 Will merge to 'next'.


* ds/merge-base-is-ancestor-optim (2020-06-17) 2 commits
 - commit-reach: use fast logic in repo_in_merge_base
 - commit-reach: create repo_is_descendant_of()

 "git merge-base --is-ancestor" is taught to take advantage of the
 commit graph.

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* dr/push-remoteref-fix (2020-04-23) 1 commit
 - remote.c: fix handling of %(push:remoteref)

 The "%(push:remoteref)" placeholder in the "--format=" argument of
 "git format-patch" (and friends) only showed what got explicitly
 configured, not what ref at the receiving end would be updated when
 "git push" was used, as it ignored the default behaviour (e.g. update
 the same ref as the source).

 Expecting a reroll.
 cf. <20200416152145.wp2zeibxmuyas6y6@feanor>


* mr/bisect-in-c-2 (2020-04-23) 12 commits
 - bisect--helper: retire `--bisect-autostart` subcommand
 - bisect--helper: retire `--write-terms` subcommand
 - bisect--helper: retire `--check-expected-revs` subcommand
 - bisect--helper: reimplement `bisect_state` & `bisect_head` shell functions in C
 - bisect--helper: retire `--next-all` subcommand
 - bisect--helper: retire `--bisect-clean-state` subcommand
 - bisect--helper: finish porting `bisect_start()` to C
 - bisect--helper: reimplement `bisect_next` and `bisect_auto_next` shell functions in C
 - bisect--helper: reimplement `bisect_autostart` shell function in C
 - bisect--helper: introduce new `write_in_file()` function
 - bisect--helper: use '-res' in 'cmd_bisect__helper' return
 - bisect--helper: fix `cmd_*()` function switch default return

 Rewrite of the remainder of "git bisect" script in C continues.

 Expecting a response to reviews.
 cf. <nycvar.QRO.7.76.6.2005230007260.56@tvgsbejvaqbjf.bet>


* mk/use-size-t-in-zlib (2018-10-15) 1 commit
 - zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

--------------------------------------------------
[Cooking]

* dl/test-must-fail-fixes-5 (2020-06-12) 4 commits
 - lib-submodule-update: use callbacks in test_submodule_switch_common()
 - lib-submodule-update: prepend "git" to $command
 - lib-submodule-update: consolidate --recurse-submodules
 - lib-submodule-update: add space after function name

 The effort to avoid using test_must_fail on non-git command continues.

 Ready???


* jt/redact-all-cookies (2020-06-05) 1 commit
  (merged to 'next' on 2020-06-12 at 912c337d63)
 + http: redact all cookies, teach GIT_TRACE_REDACT=0

 The interface to redact sensitive information in the trace output
 has been simplified.

 Will merge to 'master'.


* es/worktree-duplicate-paths (2020-06-10) 7 commits
  (merged to 'next' on 2020-06-12 at 5f7c822a9d)
 + worktree: make "move" refuse to move atop missing registered worktree
 + worktree: generalize candidate worktree path validation
 + worktree: prune linked worktree referencing main worktree path
 + worktree: prune duplicate entries referencing same worktree path
 + worktree: make high-level pruning re-usable
 + worktree: give "should be pruned?" function more meaningful name
 + worktree: factor out repeated string literal

 The same worktree directory must be registered only once, but
 "git worktree move" allowed this invariant to be violated, which
 has been corrected.

 Will merge to 'master'.


* sg/commit-graph-cleanups (2020-06-17) 18 commits
 - commit-graph: persist existence of changed-paths
 - commit-graph: change test to die on parse, not load
 - bloom: enforce a minimum size of 8 bytes
 - commit-graph: check all leading directories in changed path Bloom filters
 - commit-graph: check chunk sizes after writing
 - commit-graph: simplify chunk writes into loop
 - commit-graph: unify the signatures of all write_graph_chunk_*() functions
 - commit-graph: place bloom_settings in context
 - commit-graph: simplify write_commit_graph_file() #2
 - commit-graph: simplify write_commit_graph_file() #1
 - commit-graph: simplify parse_commit_graph() #2
 - commit-graph: simplify parse_commit_graph() #1
 - commit-graph: clean up #includes
 - diff.h: drop diff_tree_oid() & friends' return value
 - commit-slab: add a function to deep free entries on the slab
 - commit-graph-format.txt: all multi-byte numbers are in network byte order
 - commit-graph: fix parsing the Chunk Lookup table
 - tree-walk.c: don't match submodule entries for 'submod/anything'

 Code cleanup.


* cc/upload-pack-data-2 (2020-06-04) 13 commits
  (merged to 'next' on 2020-06-12 at ee63b70dc2)
 + upload-pack: move pack_objects_hook to upload_pack_data
 + upload-pack: move allow_sideband_all to upload_pack_data
 + upload-pack: move allow_ref_in_want to upload_pack_data
 + upload-pack: move allow_filter to upload_pack_data
 + upload-pack: move keepalive to upload_pack_data
 + upload-pack: pass upload_pack_data to upload_pack_config()
 + upload-pack: change multi_ack to an enum
 + upload-pack: move multi_ack to upload_pack_data
 + upload-pack: move filter_capability_requested to upload_pack_data
 + upload-pack: move use_sideband to upload_pack_data
 + upload-pack: move static vars to upload_pack_data
 + upload-pack: annotate upload_pack_data fields
 + upload-pack: actually use some upload_pack_data bitfields
 (this branch is used by cc/upload-pack-data-3 and jt/cdn-offload.)

 Further code clean-up.

 Will merge to 'master'.


* xl/upgrade-repo-format (2020-06-05) 4 commits
 - check_repository_format_gently(): refuse extensions for old repositories
 - sparse-checkout: upgrade repository to version 1 when enabling extension
 - fetch: allow adding a filter after initial clone
 - repository: add a helper function to perform repository format upgrade

 Allow runtime upgrade of the repository format version, which needs
 to be done carefully.

 There is a rather unpleasant backward compatibility worry with the
 last step of this series, but it is the right thing to do in the
 longer term.

 Will merge to 'next'.


* jk/complete-git-switch (2020-05-28) 16 commits
  (merged to 'next' on 2020-06-17 at 5b31140c0a)
 + completion: improve handling of --orphan option of switch/checkout
 + completion: improve handling of -c/-C and -b/-B in switch/checkout
 + completion: improve handling of --track in switch/checkout
 + completion: improve handling of --detach in checkout
 + completion: improve completion for git switch with no options
 + completion: improve handling of DWIM mode for switch/checkout
 + completion: perform DWIM logic directly in __git_complete_refs
 + completion: extract function __git_dwim_remote_heads
 + completion: replace overloaded track term for __git_complete_refs
 + completion: add tests showing subpar switch/checkout --orphan logic
 + completion: add tests showing subpar -c/C argument completion
 + completion: add tests showing subpar -c/-C startpoint completion
 + completion: add tests showing subpar switch/checkout --track logic
 + completion: add tests showing subar checkout --detach logic
 + completion: add tests showing subpar DWIM logic for switch/checkout
 + completion: add test showing subpar git switch completion

 The command line completion (in contrib/) learned to complete
 options that the "git switch" command takes.

 Will merge to 'master'.


* en/sparse-with-submodule-doc (2020-06-12) 1 commit
  (merged to 'next' on 2020-06-17 at 3521be3834)
 + git-sparse-checkout: clarify interactions with submodules

 The effect of sparse checkout settings on submodules is documented.

 Will merge to 'master'.


* ss/submodule-set-branch-in-c (2020-06-02) 1 commit
 - submodule: port subcommand 'set-branch' from shell to C

 Rewrite of parts of the scripted "git submodule" Porcelain command
 continues; this time it is "git submodule set-branch" subcommand's
 turn.

 Will merge to 'next'.


* es/config-hooks (2020-05-21) 4 commits
 - hook: add --porcelain to list command
 - hook: add list command
 - hook: scaffolding for git-hook subcommand
 - doc: propose hooks managed by the config

 The "hooks defined in config" topic.

 Ready???


* pw/rebase-i-more-options (2020-05-27) 5 commits
 - rebase: add --reset-author-date
 - rebase -i: support --ignore-date
 - sequencer: rename amend_author to author_to_free
 - rebase -i: support --committer-date-is-author-date
 - rebase -i: add --ignore-whitespace flag

 "git rebase -i" learns a bit more options.

 Not quite.
 cf. <nycvar.QRO.7.76.6.2005290437350.56@tvgsbejvaqbjf.bet>


* mt/grep-sparse-checkout (2020-06-12) 6 commits
 - config: add setting to ignore sparsity patterns in some cmds
 - grep: honor sparse checkout patterns
 - config: correctly read worktree configs in submodules
 - t/helper/test-config: facilitate addition of new cli options
 - t/helper/test-config: return exit codes consistently
 - doc: grep: unify info on configuration variables

 "git grep" has been tweaked to be limited to the sparse checkout
 paths.

 Review needed on 4/6; otherwise looking sane.
 cf. <CABPp-BGdEyEeajYZj_rdxp=MyEQdszuyjVTax=hhYj3fOtRQUQ@mail.gmail.com>


* bc/sha-256-part-2 (2020-05-27) 44 commits
 - remote-testgit: adapt for object-format
 - bundle: detect hash algorithm when reading refs
 - t5300: pass --object-format to git index-pack
 - t5704: send object-format capability with SHA-256
 - t5703: use object-format serve option
 - t5702: offer an object-format capability in the test
 - t/helper: initialize the repository for test-sha1-array
 - remote-curl: avoid truncating refs with ls-remote
 - t1050: pass algorithm to index-pack when outside repo
 - builtin/index-pack: add option to specify hash algorithm
 - remote-curl: detect algorithm for dumb HTTP by size
 - builtin/ls-remote: initialize repository based on fetch
 - t5500: make hash independent
 - serve: advertise object-format capability for protocol v2
 - connect: parse v2 refs with correct hash algorithm
 - connect: pass full packet reader when parsing v2 refs
 - Documentation/technical: document object-format for protocol v2
 - t1302: expect repo format version 1 for SHA-256
 - builtin/show-index: provide options to determine hash algo
 - t5302: modernize test formatting
 - packfile: compute and use the index CRC offset
 - t3200: mark assertion with SHA1 prerequisite
 - setup: set the_repository's hash algo when checking format
 - fetch-pack: parse and advertise the object-format capability
 - t5562: pass object-format in synthesized test data
 - builtin/clone: initialize hash algorithm properly
 - remote-curl: implement object-format extensions
 - transport-helper: implement object-format extensions
 - docs: update remote helper docs for object-format extensions
 - builtin/receive-pack: detect when the server doesn't support our hash
 - connect: detect algorithm when fetching refs
 - fetch-pack: detect when the server doesn't support our hash
 - connect: make parse_feature_value extern
 - send-pack: detect when the server doesn't support our hash
 - connect: add function to detect supported v1 hash functions
 - transport: add a hash algorithm member
 - pkt-line: add a member for hash algorithm
 - connect: add function to fetch value of a v2 server capability
 - connect: add function to parse multiple v1 capability values
 - remote: advertise the object-format capability on the server side
 - wrapper: add function to compare strings with different NUL termination
 - connect: have ref processing code take struct packet_reader
 - Documentation: document v1 protocol object-format capability
 - t1050: match object ID paths in a hash-insensitive way

 SHA-256 migration work continues.

 Ready???


* jx/proc-receive-hook (2020-05-18) 11 commits
 - doc: add documentation for the proc-receive hook
 - transport: parse report options for tracking refs
 - t5411: test updates of remote-tracking branches
 - receive-pack: new config receive.procReceiveRefs
 - refs.c: refactor to reuse ref_is_hidden()
 - receive-pack: feed report options to post-receive
 - doc: add document for capability report-status-v2
 - New capability "report-status-v2" for git-push
 - receive-pack: add new proc-receive hook
 - t5411: add basic test cases for proc-receive hook
 - transport: not report a non-head push as a branch

 "git receive-pack" that accepts requests by "git push" learned to
 outsource most of the ref updates to the new "proc-receive" hook.

 Needs review.


* hn/reftable (2020-06-17) 18 commits
 . SQUASH??? whitespace breakage fix
 . Add "test-tool dump-reftable" command.
 . Add reftable testing infrastructure
 . vcxproj: adjust for the reftable changes
 . Add GIT_DEBUG_REFS debugging mechanism
 . Hookup unittests for the reftable library.
 . Reftable support for git-core
 . Add reftable library
 . Add .gitattributes for the reftable/ directory
 . Iterate over the "refs/" namespace in for_each_[raw]ref
 . Move REF_LOG_ONLY to refs-internal.h
 . Treat REVERT_HEAD as a pseudo ref
 . Treat CHERRY_PICK_HEAD as a pseudo ref
 . Treat BISECT_HEAD as a pseudo ref
 . Make refs_ref_exists public
 . Write pseudorefs through ref backends.
 . checkout: add '\n' to reflog message
 . lib-t6000.sh: write tag using git-update-ref

 A new refs backend "reftable" to replace the traditional
 combination of packed-refs files and one-file-per-ref loose refs
 has been implemented and integrated for improved performance and
 atomicity.

 Tentatively omitted from tonight's pushout but will push out 'pu'
 again with this merged in (which will break the tests,
 unfortunately).

^ permalink raw reply	[relevance 1%]

* [ANNOUNCE] Git v2.27.0
@ 2020-06-01 16:34  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-06-01 16:34 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

The latest feature release Git v2.27.0 is now available at the
usual places.  It is comprised of 537 non-merge commits since
v2.26.0, contributed by 71 people, 19 of which are new faces.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.27.0'
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.26.0 are as follows.
Welcome to the Git development community!

  Andras Kucsma, Ansgar Röber, Ash Holland, Christopher
  Warrington, Emma Brooks, Jan Engelhardt, Jessica Clarke,
  Jorge Lopez Silva, Julien Moutinho, Li Xuejiang,
  luciano.rocha@booking.com, Matthias Aßhauer, Michael
  F. Schönitzer, Nathan Sanders, Son Luong Ngoc, Terry Moschou,
  Toon Claes, Vasil Dimov, and Yang Zhao.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  마누엘, Abhishek Kumar, Alban Gruin, Alessandro Menti,
  Alexander Shopov, Alexandr Miloslavskiy, Alex Henrie, Andrei
  Rybak, Andrew Oakley, Ben Keene, brian m. carlson, Carlo
  Marcelo Arenas Belón, Christian Couder, Christopher Diaz
  Riveros, Damien Robert, Denton Liu, Derrick Stolee, Đoàn
  Trần Công Danh, Elijah Newren, Emily Shaffer, Emir Sarı,
  Eric Sunshine, Garima Singh, Greg Price, Hans Jerry Illikainen,
  Heba Waly, Ismael Luceno, Jean-Noël Avila, Jeff King, Jiang
  Xin, Johannes Schindelin, Jonathan Nieder, Jonathan Tan, Jordi
  Mas, Josh Steadmon, Junio C Hamano, Martin Ågren, Matheus
  Tavares, Matthias Rüster, Patrick Steinhardt, Peter Krefting,
  Philippe Blain, Phillip Wood, Pratyush Yadav, René Scharfe,
  Shourya Shukla, SZEDER Gábor, Taylor Blau, Thomas Gummerer,
  Todd Zullinger, Trần Ngọc Quân, and Yi-Jyun Pan.

----------------------------------------------------------------

Git 2.27 Release Notes
======================

Updates since v2.26
-------------------

Backward compatibility notes

 * When "git describe C" finds that commit C is pointed by a signed or
   annotated tag, which records T as its tagname in the object, the
   command gives T as its answer.  Even if the user renames or moves
   such a tag from its natural location in the "refs/tags/" hierarchy,
   "git describe C" would still give T as the answer, but in such a
   case "git show T^0" would no longer work as expected.  There may be
   nothing at "refs/tags/T" or even worse there may be a different tag
   instead.

   Starting from this version, "git describe" will always use the
   "long" version, as if the "--long" option were given, when giving
   its output based on such a misplaced tag to work around the problem.

 * "git pull" issues a warning message until the pull.rebase
   configuration variable is explicitly given, which some existing
   users may find annoying---those who prefer not to rebase need to
   set the variable to false to squelch the warning.

 * The transport protocol version 2, which was promoted to the default
   in Git 2.26 release, turned out to have some remaining rough edges,
   so it has been demoted from the default.


UI, Workflows & Features

 * A handful of options to configure SSL when talking to proxies have
   been added.

 * Smudge/clean conversion filters are now given more information
   (e.g. the object of the tree-ish in which the blob being converted
   appears, in addition to its path, which has already been given).

 * When "git describe C" finds an annotated tag with tagname A to be
   the best name to explain commit C, and the tag is stored in a
   "wrong" place in the refs/tags hierarchy, e.g. refs/tags/B, the
   command gave a warning message but used A (not B) to describe C.
   If C is exactly at the tag, the describe output would be "A", but
   "git rev-parse A^0" would not be equal as "git rev-parse C^0".  The
   behavior of the command has been changed to use the "long" form
   i.e. A-0-gOBJECTNAME, which is correctly interpreted by rev-parse.

 * "git pull" learned to warn when no pull.rebase configuration
   exists, and neither --[no-]rebase nor --ff-only is given (which
   would result a merge).

 * "git p4" learned four new hooks and also "--no-verify" option to
   bypass them (and the existing "p4-pre-submit" hook).

 * "git pull" shares many options with underlying "git fetch", but
   some of them were not documented and some of those that would make
   sense to pass down were not passed down.

 * "git rebase" learned the "--no-gpg-sign" option to countermand
   commit.gpgSign the user may have.

 * The output from "git format-patch" uses RFC 2047 encoding for
   non-ASCII letters on From: and Subject: headers, so that it can
   directly be fed to e-mail programs.  A new option has been added
   to produce these headers in raw.

 * "git log" learned "--show-pulls" that helps pathspec limited
   history views; a merge commit that takes the whole change from a
   side branch, which is normally omitted from the output, is shown
   in addition to the commits that introduce real changes.

 * The interactive input from various codepaths are consolidated and
   any prompt possibly issued earlier are fflush()ed before we read.

 * Allow "git rebase" to reapply all local commits, even if the may be
   already in the upstream, without checking first.

 * The 'pack.useSparse' configuration variable now defaults to 'true',
   enabling an optimization that has been experimental since Git 2.21.

 * "git rebase" happens to call some hooks meant for "checkout" and
   "commit" by this was not a designed behaviour than historical
   accident.  This has been documented.

 * "git merge" learns the "--autostash" option.

 * "sparse-checkout" UI improvements.

 * "git update-ref --stdin" learned a handful of new verbs to let the
   user control ref update transactions more explicitly, which helps
   as an ingredient to implement two-phase commit-style atomic
   ref-updates across multiple repositories.

 * "git commit-graph write" learned different ways to write out split
   files.

 * Introduce an extension to the commit-graph to make it efficient to
   check for the paths that were modified at each commit using Bloom
   filters.

 * The approxidate parser learns to parse seconds with fraction and
   ignore fractional part.

 * The userdiff patterns for Markdown documents have been added.

 * The sparse-checkout patterns have been forbidden from excluding all
   paths, leaving an empty working tree, for a long time.  This
   limitation has been lifted.

 * "git restore --staged --worktree" now defaults to take the contents
   out of "HEAD", instead of erring out.

 * "git p4" learned to recover from a (broken) state where a directory
   and a file are recorded at the same path in the Perforce repository
   the same way as their clients do.

 * "git multi-pack-index repack" has been taught to honor some
   repack.* configuration variables.


Performance, Internal Implementation, Development Support etc.

 * The advise API has been revamped to allow more systematic enumeration of
   advice knobs in the future.

 * SHA-256 transition continues.

 * The code to interface with GnuPG has been refactored.

 * "git stash" has kept an escape hatch to use the scripted version
   for a few releases, which got stale.  It has been removed.

 * Enable tests that require GnuPG on Windows.

 * Minor test usability improvement.

 * Trace2 enhancement to allow logging of the environment variables.

 * Test clean-up continues.

 * Perf-test update.

 * A Windows-specific test element has been made more robust against
   misuse from both user's environment and programmer's errors.

 * Various tests have been updated to work around issues found with
   shell utilities that come with busybox etc.

 * The config API made mixed uses of int and size_t types to represent
   length of various pieces of text it parsed, which has been updated
   to use the correct type (i.e. size_t) throughout.

 * The "--decorate-refs" and "--decorate-refs-exclude" options "git
   log" takes have learned a companion configuration variable
   log.excludeDecoration that sits at the lowest priority in the
   family.

 * A new CI job to build and run test suite on linux with musl libc
   has been added.

 * Update the CI configuration to use GitHub Actions, retiring the one
   based on Azure Pipelines.

 * The directory traversal code had redundant recursive calls which
   made its performance characteristics exponential with respect to
   the depth of the tree, which was corrected.

 * "git blame" learns to take advantage of the "changed-paths" Bloom
   filter stored in the commit-graph file.

 * The "bugreport" tool has been added.

 * The object walk with object filter "--filter=tree:0" can now take
   advantage of the pack bitmap when available.

 * Instead of always building all branches at GitHub via Actions,
   users can specify which branches to build.

 * Codepaths that show progress meter have been taught to also use the
   start_progress() and the stop_progress() calls as a "region" to be
   traced.

 * Instead of downloading Windows SDK for CI jobs for windows builds
   from an external site (wingit.blob.core.windows.net), use the one
   created in the windows-build job, to work around quota issues at
   the external site.


Fixes since v2.26
-----------------

 * The real_path() convenience function can easily be misused; with a
   bit of code refactoring in the callers' side, its use has been
   eliminated.
   (merge 49d3c4b481 am/real-path-fix later to maint).

 * Update "git p4" to work with Python 3.
   (merge 6bb40ed20a yz/p4-py3 later to maint).

 * The mechanism to prevent "git commit" from making an empty commit
   or amending during an interrupted cherry-pick was broken during the
   rewrite of "git rebase" in C, which has been corrected.
   (merge 430b75f720 pw/advise-rebase-skip later to maint).

 * Fix "git checkout --recurse-submodules" of a nested submodule
   hierarchy.
   (merge 846f34d351 pb/recurse-submodules-fix later to maint).

 * The "--fork-point" mode of "git rebase" regressed when the command
   was rewritten in C back in 2.20 era, which has been corrected.
   (merge f08132f889 at/rebase-fork-point-regression-fix later to maint).

 * The import-tars importer (in contrib/fast-import/) used to create
   phony files at the top-level of the repository when the archive
   contains global PAX headers, which made its own logic to detect and
   omit the common leading directory ineffective, which has been
   corrected.
   (merge c839fcff65 js/import-tars-do-not-make-phony-files-from-pax-headers later to maint).

 * Simplify the commit ancestry connectedness check in a partial clone
   repository in which "promised" objects are assumed to be obtainable
   lazily on-demand from promisor remote repositories.
   (merge 2b98478c6f jt/connectivity-check-optim-in-partial-clone later to maint).

 * The server-end of the v2 protocol to serve "git clone" and "git
   fetch" was not prepared to see a delim packets at unexpected
   places, which led to a crash.
   (merge cacae4329f jk/harden-protocol-v2-delim-handling later to maint).

 * When fed a midx that records no objects, some codepaths tried to
   loop from 0 through (num_objects-1), which, due to integer
   arithmetic wrapping around, made it nonsense operation with out of
   bounds array accesses.  The code has been corrected to reject such
   an midx file.
   (merge 796d61cdc0 dr/midx-avoid-int-underflow later to maint).

 * Utitiles run via the run_command() API were not spawned correctly
   on Cygwin, when the paths to them are given as a full path with
   backslashes.
   (merge 05ac8582bc ak/run-command-on-cygwin-fix later to maint).

 * "git pull --rebase" tried to run a rebase even after noticing that
   the pull results in a fast-forward and no rebase is needed nor
   sensible, for the past few years due to a mistake nobody noticed.
   (merge fbae70ddc6 en/pull-do-not-rebase-after-fast-forwarding later to maint).

 * "git rebase" with the merge backend did not work well when the
   rebase.abbreviateCommands configuration was set.
   (merge de9f1d3ef4 ag/rebase-merge-allow-ff-under-abbrev-command later to maint).

 * The logic to auto-follow tags by "git clone --single-branch" was
   not careful to avoid lazy-fetching unnecessary tags, which has been
   corrected.
   (merge 167a575e2d jk/use-quick-lookup-in-clone-for-tag-following later to maint).

 * "git rebase -i" did not leave the reflog entries correctly.
   (merge 1f6965f994 en/sequencer-reflog-action later to maint).

 * The more aggressive updates to remote-tracking branches we had for
   the past 7 years or so were not reflected in the documentation,
   which has been corrected.
   (merge a44088435c pb/pull-fetch-doc later to maint).

 * We've left the command line parsing of "git log :/a/b/" broken for
   about a full year without anybody noticing, which has been
   corrected.
   (merge 0220461071 jc/missing-ref-store-fix later to maint).

 * Misc fixes for Windows.
   (merge 3efc128cd5 js/mingw-fixes later to maint).

 * "git rebase" (again) learns to honor "--no-keep-empty", which lets
   the user to discard commits that are empty from the beginning (as
   opposed to the ones that become empty because of rebasing).  The
   interactive rebase also marks commits that are empty in the todo.
   (merge 50ed76148a en/rebase-no-keep-empty later to maint).

 * Parsing the host part out of URL for the credential helper has been corrected.
   (merge 4c5971e18a jk/credential-parsing-end-of-host-in-URL later to maint).

 * Document the recommended way to abort a failing test early (e.g. by
   exiting a loop), which is to say "return 1".
   (merge 7cc112dc95 jc/doc-test-leaving-early later to maint).

 * The code that refreshes the last access and modified time of
   on-disk packfiles and loose object files have been updated.
   (merge 312cd76130 lr/freshen-file-fix later to maint).

 * Validation of push certificate has been made more robust against
   timing attacks.
   (merge 719483e547 bc/constant-memequal later to maint).

 * The custom hash function used by "git fast-import" has been
   replaced with the one from hashmap.c, which gave us a nice
   performance boost.
   (merge d8410a816b jk/fast-import-use-hashmap later to maint).

 * The "git submodule" command did not initialize a few variables it
   internally uses and was affected by variable settings leaked from
   the environment.
   (merge 65d100c4dd lx/submodule-clear-variables later to maint).

 * Raise the minimum required version of docbook-xsl package to 1.74,
   as 1.74.0 was from late 2008, which is more than 10 years old, and
   drop compatibility cruft from our documentation suite.
   (merge 3c255ad660 ma/doc-discard-docbook-xsl-1.73 later to maint).

 * "git log" learns "--[no-]mailmap" as a synonym to "--[no-]use-mailmap"
   (merge 88acccda38 jc/log-no-mailmap later to maint).

 * "git commit-graph write --expire-time=<timestamp>" did not use the
   given timestamp correctly, which has been corrected.
   (merge b09b785c78 ds/commit-graph-expiry-fix later to maint).

 * Tests update to use "test-chmtime" instead of "touch -t".
   (merge e892a56845 ds/t5319-touch-fix later to maint).

 * "git diff" in a partial clone learned to avoid lazy loading blob
   objects in more casese when they are not needed.
   (merge 95acf11a3d jt/avoid-prefetch-when-able-in-diff later to maint).

 * "git push --atomic" used to show failures for refs that weren't
   even pushed, which has been corrected.
   (merge dfe1b7f19c jx/atomic-push later to maint).

 * Code in builtin/*, i.e. those can only be called from within
   built-in subcommands, that implements bulk of a couple of
   subcommands have been moved to libgit.a so that they could be used
   by others.
   (merge 9460fd48b5 dl/libify-a-few later to maint).

 * Allowing the user to split a patch hunk while "git stash -p" does
   not work well; a band-aid has been added to make this (partially)
   work better.

 * "git diff-tree --pretty --notes" used to hit an assertion failure,
   as it forgot to initialize the notes subsystem.
   (merge 5778b22b3d tb/diff-tree-with-notes later to maint).

 * "git range-diff" fixes.
   (merge 8d1675eb7f vd/range-diff-with-custom-pretty-format-fix later to maint).

 * "git grep" did not quote a path with unusual character like other
   commands (like "git diff", "git status") do, but did quote when run
   from a subdirectory, both of which has been corrected.
   (merge 45115d8490 mt/grep-cquote-path later to maint).

 * GNU/Hurd is also among the ones that need the fopen() wrapper.
   (merge 274a1328fb jc/gnu-hurd-lets-fread-read-dirs later to maint).

 * Those fetching over protocol v2 from linux-next and other kernel
   repositories are reporting that v2 often fetches way too much than
   needed.
   (merge 11c7f2a30b jn/demote-proto2-from-default later to maint).

 * The upload-pack protocol v2 gave up too early before finding a
   common ancestor, resulting in a wasteful fetch from a fork of a
   project.  This has been corrected to match the behaviour of v0
   protocol.
   (merge 2f0a093dd6 jt/v2-fetch-nego-fix later to maint).

 * The build procedure did not use the libcurl library and its include
   files correctly for a custom-built installation.
   (merge 0573831950 jk/build-with-right-curl later to maint).

 * Tighten "git mailinfo" to notice and error out when decoded result
   contains NUL in it.
   (merge 3919997447 dd/mailinfo-with-nul later to maint).

 * Fix in-core inconsistency after fetching into a shallow repository
   that broke the code to write out commit-graph.
   (merge 37b9dcabfc tb/reset-shallow later to maint).

 * The commit-graph code exhausted file descriptors easily when it
   does not have to.
   (merge c8828530b7 tb/commit-graph-fd-exhaustion-fix later to maint).

 * The multi-pack-index left mmapped file descriptors open when it
   does not have to.
   (merge 6c7ff7cf7f ds/multi-pack-index later to maint).

 * Recent update to Homebrew used by macOS folks breaks build by
   moving gettext library and necessary headers.
   (merge a0b3108618 ds/build-homebrew-gettext-fix later to maint).

 * Incompatible options "--root" and "--fork-point" of "git rebase"
   have been marked and documented as being incompatible.
   (merge a35413c378 en/rebase-root-and-fork-point-are-incompatible later to maint).

 * Error and verbose trace messages from "git push" did not redact
   credential material embedded in URLs.
   (merge d192fa5006 js/anonymise-push-url-in-errors later to maint).

 * Update the parser used for credential.<URL>.<variable>
   configuration, to handle <URL>s with '/' in them correctly.
   (merge b44d0118ac bc/wildcard-credential later to maint).

 * Recent updates broke parsing of "credential.<url>.<key>" where
   <url> is not a full URL (e.g. [credential "https://"] helper = ...)
   stopped working, which has been corrected.
   (merge 9a121b0d22 js/partial-urlmatch-2.17 later to maint).
   (merge cd93e6c029 js/partial-urlmatch later to maint).

 * Some of the files commit-graph subsystem keeps on disk did not
   correctly honor the core.sharedRepository settings and some were
   left read-write.

 * In error messages that "git switch" mentions its option to create a
   new branch, "-b/-B" options were shown, where "-c/-C" options
   should be, which has been corrected.
   (merge 7c16ef7577 dl/switch-c-option-in-error-message later to maint).

 * With the recent tightening of the code that is used to parse
   various parts of a URL for use in the credential subsystem, a
   hand-edited credential-store file causes the credential helper to
   die, which is a bit too harsh to the users.  Demote the error
   behaviour to just ignore and keep using well-formed lines instead.
   (merge c03859a665 cb/credential-store-ignore-bogus-lines later to maint).

 * The samples in the credential documentation has been updated to
   make it clear that we depict what would appear in the .git/config
   file, by adding appropriate quotes as needed..
   (merge 177681a07e jk/credential-sample-update later to maint).

 * "git branch" and other "for-each-ref" variants accepted multiple
   --sort=<key> options in the increasing order of precedence, but it
   had a few breakages around "--ignore-case" handling, and tie-breaking
   with the refname, which have been fixed.
   (merge 7c5045fc18 jk/for-each-ref-multi-key-sort-fix later to maint).

 * The coding guideline for shell scripts instructed to refer to a
   variable with dollar-sign inside arithmetic expansion to work
   around a bug in old versions of dash, which is a thing of the past.
   Now we are not forbidden from writing $((var+1)).
   (merge 32b5fe7f0e jk/arith-expansion-coding-guidelines later to maint).

 * The <stdlib.h> header on NetBSD brings in its own definition of
   hmac() function (eek), which conflicts with our own and unrelated
   function with the same name.  Our function has been renamed to work
   around the issue.
   (merge 3013118eb8 cb/avoid-colliding-with-netbsd-hmac later to maint).

 * The basic test did not honor $TEST_SHELL_PATH setting, which has
   been corrected.
   (merge 0555e4af58 cb/t0000-use-the-configured-shell later to maint).

 * Minor in-code comments and documentation updates around credential
   API.
   (merge 1aed817f99 cb/credential-doc-fixes later to maint).

 * Teach "am", "commit", "merge" and "rebase", when they are run with
   the "--quiet" option, to pass "--quiet" down to "gc --auto".
   (merge 7c3e9e8cfb jc/auto-gc-quiet later to maint).

 * The code to skip unmerged paths in the index when sparse checkout
   is in use would have made out-of-bound access of the in-core index
   when the last path was unmerged, which has been corrected.

 * Serving a "git fetch" client over "git://" and "ssh://" protocols
   using the on-wire protocol version 2 was buggy on the server end
   when the client needs to make a follow-up request to
   e.g. auto-follow tags.
   (merge 08450ef791 cc/upload-pack-v2-fetch-fix later to maint).

 * "git bisect replay" had trouble with input files when they used
   CRLF line ending, which has been corrected.
   (merge 6c722cbe5a cw/bisect-replay-with-dos later to maint).

 * "rebase -i" segfaulted when rearranging a sequence that has a
   fix-up that applies another fix-up (which may or may not be a
   fix-up of yet another step).
   (merge 02471e7e20 js/rebase-autosquash-double-fixup-fix later to maint).

 * "git fsck" ensures that the paths recorded in tree objects are
   sorted and without duplicates, but it failed to notice a case where
   a blob is followed by entries that sort before a tree with the same
   name.  This has been corrected.
   (merge 9068cfb20f rs/fsck-duplicate-names-in-trees later to maint).

 * Code clean-up by removing a compatibility implementation of a
   function we no longer use.
   (merge 84b0115f0d cb/no-more-gmtime later to maint).

 * When a binary file gets modified and renamed on both sides of history
   to different locations, both files would be written to the working
   tree but both would have the contents from "ours".  This has been
   corrected so that the path from each side gets their original content.

 * Fix for a copy-and-paste error introduced during 2.20 era.
   (merge e68a5272b1 ds/multi-pack-verify later to maint).

 * Update an unconditional use of "grep -a" with a perl script in a test.
   (merge 1eb7371236 dd/t5703-grep-a-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 564956f358 jc/maintain-doc later to maint).
   (merge 7422b2a0a1 sg/commit-slab-clarify-peek later to maint).
   (merge 9c688735f6 rs/doc-passthru-fetch-options later to maint).
   (merge 757c2ba3e2 en/oidset-uninclude-hashmap later to maint).
   (merge 8312aa7d74 jc/config-tar later to maint).
   (merge d00a5bdd50 ss/submodule-foreach-cb later to maint).
   (merge 64d1022e14 ar/test-style-fixes later to maint).
   (merge 4a465443a6 ds/doc-clone-filter later to maint).
   (merge bb2dbe301b jk/t3419-drop-expensive-tests later to maint).
   (merge d3507cc712 js/test-junit-finalization-fix later to maint).
   (merge 2149b6748f bc/faq later to maint).
   (merge 12dc0879f1 jk/test-cleanup later to maint).
   (merge 344420bf0f pb/rebase-doc-typofix later to maint).
   (merge 7cd54d37dc dl/wrapper-fix-indentation later to maint).
   (merge 78725ebda9 jc/allow-strlen-substitution-in-shell-scripts later to maint).
   (merge 2ecfcdecc6 jm/gitweb-fastcgi-utf8 later to maint).
   (merge 0740d0a5d3 jk/oid-array-cleanups later to maint).
   (merge a1aba0c95c js/t0007-typofix later to maint).
   (merge 76ba7fa225 ma/config-doc-fix later to maint).
   (merge 826f0c0df2 js/subtree-doc-update-to-asciidoctor-2 later to maint).
   (merge 88eaf361e0 eb/mboxrd-doc later to maint).
   (merge 051cc54941 tm/zsh-complete-switch-restore later to maint).
   (merge 39102cf4fe ms/doc-revision-illustration-fix later to maint).
   (merge 4d9378bfad eb/gitweb-more-trailers later to maint).
   (merge bdccbf7047 mt/doc-worktree-ref later to maint).
   (merge ce9baf234f dl/push-recurse-submodules-fix later to maint).
   (merge 4153274052 bc/doc-credential-helper-value later to maint).
   (merge 5c7bb0146e jc/codingstyle-compare-with-null later to maint).

----------------------------------------------------------------

Changes since v2.26.0 are as follows:

Abhishek Kumar (1):
      commit-slab-decl.h: update include guard

Alban Gruin (3):
      sequencer: mark messages for translation
      sequencer: don't abbreviate a command if it doesn't have a short form
      t3432: test `--merge' with `rebase.abbreviateCommands = true', too

Alessandro Menti (2):
      l10n: it.po: update the Italian translation for Git 2.27.0 round 1
      l10n: it.po: update for Git 2.27.0 round #2

Alex Henrie (1):
      pull: warn if the user didn't say whether to rebase or to merge

Alexander Shopov (2):
      l10n: bg.po: Updated Bulgarian translation (4868t)
      l10n: bg.po: Updated Bulgarian translation (4875t)

Alexandr Miloslavskiy (4):
      set_git_dir: fix crash when used with real_path()
      real_path: remove unsafe API
      real_path_if_valid(): remove unsafe API
      get_superproject_working_tree(): return strbuf

Andras Kucsma (1):
      run-command: trigger PATH lookup properly on Cygwin

Andrei Rybak (2):
      t9500: remove spaces after redirect operators
      t: fix whitespace around &&

Andrew Oakley (1):
      git-p4: recover from inconsistent perforce history

Ansgar Röber (1):
      Subject: git-gui: fix syntax error because of missing semicolon

Ash Holland (1):
      userdiff: support Markdown

Ben Keene (8):
      git-p4: change the expansion test from basestring to list
      git-p4: rewrite prompt to be Windows compatible
      git-p4: create new function run_git_hook
      git-p4: add p4-pre-submit exit text
      git-p4: add --no-verify option
      git-p4: restructure code in submit
      git-p4: add p4 submit hooks
      git-p4: add RCS keyword status message

Carlo Marcelo Arenas Belón (13):
      credential-store: ignore bogus lines from store file
      credential: update description for credential_from_url_gently
      credential: correct order of parameters for credential_match
      builtin/receive-pack: avoid generic function name hmac()
      t/t0000-basic: make sure subtests also use TEST_SHELL_PATH
      t/test_lib: avoid naked bash arrays in file_lineno
      credential: update gitcredentials documentation
      credential: document protocol updates
      compat: remove gmtime
      t4216: avoid unnecessary subshell in test_bloom_filters_not_used
      t5520: avoid alternation in grep's BRE (not POSIX)
      bisect: avoid tailing CR characters from revision in replay
      t: avoid alternation (not POSIX) in grep's BRE

Christian Couder (1):
      upload-pack: clear filter_options for each v2 fetch command

Christopher Diaz Riveros (1):
      l10n: es: 2.27.0 round 1

Christopher Warrington (1):
      bisect: allow CRLF line endings in "git bisect replay" input

Damien Robert (6):
      midx.c: fix an integer underflow
      doc: list all commands affected by submodule.recurse
      doc: document --recurse-submodules for reset and restore
      doc: explain how to deactivate submodule.recurse completely
      doc: be more precise on (fetch|push).recurseSubmodules
      doc: --recurse-submodules mostly applies to active submodules

Denton Liu (45):
      Makefile: ASCII-sort += lists
      t7600: use test_write_lines()
      Lib-ify fmt-merge-msg
      Lib-ify prune-packed
      t5512: don't use `test_must_fail test_cmp`
      t5512: stop losing git exit code in here-docs
      t5512: stop losing return codes of git commands
      t5550: simplify no matching line check
      t5607: reorder `nongit test_must_fail`
      t5612: don't use `test_must_fail test_cmp`
      t5612: stop losing return codes of git commands
      t5801: teach compare_refs() to accept !
      wrapper: indent with tabs
      sequencer: stop leaking buf
      sequencer: make file exists check more efficient
      sequencer: make read_oneliner() accept flags
      sequencer: configurably warn on non-existent files
      sequencer: make read_oneliner() extern
      rebase: use read_oneliner()
      sequencer: make apply_autostash() accept a path
      sequencer: rename stash_sha1 to stash_oid
      rebase: use apply_autostash() from sequencer.c
      rebase: generify reset_head()
      reset: extract reset_head() from rebase
      rebase: extract create_autostash()
      rebase: generify create_autostash()
      sequencer: extract perform_autostash() from rebase
      sequencer: unlink autostash in apply_autostash()
      sequencer: implement save_autostash()
      sequencer: implement apply_autostash_oid()
      merge: teach --autostash option
      t5520: make test_pull_autostash() accept expect_parent_num
      pull: pass --autostash to merge
      t6030: use test_path_is_missing()
      t7408: replace incorrect uses of test_must_fail
      t7508: don't use `test_must_fail test_cmp`
      t9141: use test_path_is_missing()
      t9160: use test_path_is_missing()
      t9164: use test_must_fail only on git commands
      t9819: don't use test_must_fail with p4
      Use OPT_CALLBACK and OPT_CALLBACK_F
      push: unset PARSE_OPT_OPTARG for --recurse-submodules
      rebase: save autostash entry into stash reflog on --quit
      switch: fix errors and comments related to -c and -C
      Doc: reference the "stash list" in autostash docs

Derrick Stolee (27):
      connected.c: reprepare packs for corner cases
      config: set pack.useSparse=true by default
      pack-objects: flip the use of GIT_TEST_PACK_SPARSE
      clone: document --filter options
      diff: halt tree-diff early after max_changes
      dir: refactor treat_directory to clarify control flow
      commit-graph: fix buggy --expire-time option
      t5319: replace 'touch -m' with 'test-tool chmtime'
      bloom: ignore renames when computing changed paths
      revision: --show-pulls adds helpful merges
      log-tree: make ref_filter_match() a helper method
      log: add log.excludeDecoration config option
      revision: complicated pathspecs disable filters
      tests: write commit-graph with Bloom filters
      blame: use changed-path Bloom filters
      multi-pack-index: close file descriptor after mmap
      bloom: fix whitespace around tab length
      test-bloom: fix usage typo
      sparse-checkout: stop blocking empty workdirs
      unpack-trees: avoid array out-of-bounds error
      multi-pack-index: respect repack.packKeptObjects=false
      bloom: parse commit before computing filters
      Documentation: changed-path Bloom filters use byte words
      bloom: de-duplicate directory entries
      bloom: use num_changes not nr for limit detection
      progress: call trace2_region_leave() only after calling _enter()
      fsck: use ERROR_MULTI_PACK_INDEX

Elijah Newren (39):
      oidset: remove unnecessary include
      unpack-trees: fix minor typo in comment
      unpack-trees: remove unused error type
      unpack-trees: simplify verify_absent_sparse()
      unpack-trees: simplify pattern_list freeing
      t1091: make some tests a little more defensive against failures
      unpack-trees: allow check_updates() to work on a different index
      unpack-trees: do not mark a dirty path with SKIP_WORKTREE
      unpack-trees: pull sparse-checkout pattern reading into a new function
      unpack-trees: add a new update_sparsity() function
      sparse-checkout: use new update_sparsity() function
      sparse-checkout: use improved unpack_trees porcelain messages
      unpack-trees: move ERROR_WOULD_LOSE_SUBMODULE earlier
      unpack-trees: rename ERROR_* fields meant for warnings to WARNING_*
      unpack-trees: split display_error_msgs() into two
      unpack-trees: make sparse path messages sound like warnings
      unpack-trees: provide warnings on sparse updates for unmerged paths too
      unpack-trees: failure to set SKIP_WORKTREE bits always just a warning
      sparse-checkout: provide a new reapply subcommand
      pull: avoid running both merge and rebase
      t7063: more thorough status checking
      t3000: add more testcases testing a variety of ls-files issues
      dir: fix simple typo in comment
      dir: consolidate treat_path() and treat_one_path()
      dir: fix broken comment
      dir: fix confusion based on variable tense
      dir: replace exponential algorithm with a linear one
      dir: include DIR_KEEP_UNTRACKED_CONTENTS handling in treat_directory()
      dir: replace double pathspec matching with single in treat_directory()
      Fix error-prone fill_directory() API; make it only return matches
      completion: fix 'git add' on paths under an untracked directory
      git-rebase.txt: add another hook to the hooks section, and explain more
      sequencer: honor GIT_REFLOG_ACTION
      rebase -i: mark commits that begin empty in todo editor
      rebase: reinstate --no-keep-empty
      rebase: fix an incompatible-options error message
      rebase: display an error if --root and --fork-point are both provided
      merge-recursive: fix rename/rename(1to2) for working tree with a binary
      unpack-trees: also allow get_progress() to work on a different index

Emily Shaffer (8):
      help: move list_config_help to builtin/help
      bugreport: add tool to generate debugging info
      bugreport: gather git version and build info
      bugreport: add uname info
      bugreport: add compiler info
      bugreport: drop extraneous includes
      bugreport: collect list of populated hooks
      trace2: log progress time and throughput

Emir Sarı (2):
      l10n: tr: v2.27.0 round 1
      l10n: tr: v2.27.0 round 2

Emma Brooks (3):
      format-patch: teach --no-encode-email-headers
      Documentation: explain "mboxrd" pretty format
      gitweb: Recognize *-to and Closes/Fixes trailers

Eric Sunshine (1):
      restore: default to HEAD when combining --staged and --worktree

Garima Singh (13):
      commit-graph: define and use MAX_NUM_CHUNKS
      bloom.c: add the murmur3 hash implementation
      bloom.c: introduce core Bloom filter constructs
      bloom.c: core Bloom filter implementation for changed paths.
      commit-graph: compute Bloom filters for changed paths
      commit-graph: examine commits by generation number
      commit-graph: write Bloom filters to commit graph file
      commit-graph: reuse existing Bloom filters during write
      commit-graph: add --changed-paths option to write subcommand
      revision.c: use Bloom filters to speed up path based revision walks
      revision.c: add trace2 stats around Bloom filter usage
      t4216: add end to end tests for git log with Bloom filters
      commit-graph: add GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS test flag

Greg Price (1):
      tests: skip small-stack tests on hppa architecture

Hans Jerry Illikainen (2):
      t: increase test coverage of signature verification output
      gpg-interface: prefer check_signature() for GPG verification

Heba Waly (4):
      advice: extract vadvise() from advise()
      advice: change "setupStreamFailure" to "setUpstreamFailure"
      advice: revamp advise API
      tag: use new advice API to check visibility

Ismael Luceno (1):
      git-gui: Handle Ctrl + BS/Del in the commit msg

Jan Engelhardt (1):
      l10n: de.po: Fix typo in the German translation of octopus

Jean-Noël Avila (2):
      l10n: fr v2.27.0 rnd 1
      l10n: fr.po v2.27.0 rnd 2

Jeff King (51):
      credential: avoid writing values with newlines
      t/lib-credential: use test_i18ncmp to check stderr
      credential: detect unrepresentable values when parsing urls
      fsck: detect gitmodules URLs with embedded newlines
      t3419: drop EXPENSIVE tests
      t/lib-credential.sh: drop shebang line
      t/lib-*.sh: drop executable bit
      test-lib-functions: make packetize() more efficient
      upload-pack: handle unexpected delim packets
      p5310: stop timing non-bitmap pack-to-disk
      Makefile: avoid running curl-config multiple times
      Makefile: use curl-config --cflags
      test-lib-functions: simplify packetize() stdin code
      commit-graph: examine changed-path objects in pack order
      oid_array: use size_t for count and allocation
      oid_array: use size_t for iteration
      oid_array: rename source file from sha1-array
      test-tool: rename sha1-array to oid-array
      bisect: stop referring to sha1_array
      ref-filter: stop referring to "sha1 array"
      oidset: stop referring to sha1-array
      clone: use "quick" lookup while following tags
      Makefile: avoid running curl-config unnecessarily
      fast-import: replace custom hash with hashmap.c
      repository: mark the "refs" pointer as private
      remote: drop auto-strlen behavior of make_branch() and make_rewrite()
      parse_config_key(): return subsection len as size_t
      config: drop useless length variable in write_pair()
      git_config_parse_key(): return baselen as size_t
      config: use size_t to store parsed variable baselen
      config: reject parsing of files over INT_MAX
      credential: treat "?" and "#" in URLs as end of host
      t0300: make "quit" helper more realistic
      t0300: use more realistic inputs
      credential: parse URL without host as empty host, not unset
      credential: refuse to operate when missing host or protocol
      credential: die() when parsing invalid urls
      Git 2.17.5
      blame: drop unused parameter from maybe_changed_path
      test-bloom: fix some whitespace issues
      test-bloom: check that we have expected arguments
      commit-graph: close descriptors after mmap
      t0000: disable GIT_TEST_FAIL_PREREQS in sub-tests
      gitcredentials(7): clarify quoting of helper examples
      gitcredentials(7): make shell-snippet example more realistic
      CodingGuidelines: drop arithmetic expansion advice to use "$x"
      ref-filter: apply --ignore-case to all sorting keys
      ref-filter: apply fallback refname sort only after all user sorts
      list-objects-filter: treat NULL filter_options as "disabled"
      pack-bitmap: pass object filter to fill-in traversal
      ci: allow per-branch config for GitHub Actions

Jessica Clarke (1):
      config.mak.uname: Define FREAD_READS_DIRECTORIES for GNU/Hurd

Jiang Xin (8):
      send-pack: fix inconsistent porcelain output
      t5543: never report what we do not push
      send-pack: mark failure of atomic push properly
      transport-helper: mark failure for atomic push
      transport-helper: new method reject_atomic_push()
      l10n: git.pot: v2.27.0 round 1 (72 new, 37 removed)
      l10n: git.pot: v2.27.0 round 2 (+1)
      l10n: zh_CN: for git v2.27.0 l10n round 1~2

Johannes Schindelin (37):
      cherry-pick: add test for `--skip` advice in `git commit`
      tests(junit-xml): avoid invalid XML
      import-tars: ignore the global PAX header
      tests(gpg): allow the gpg-agent to start on Windows
      t/lib-gpg.sh: stop pretending to be a stand-alone script
      tests: do not let lazy prereqs inside `test_expect_*` turn off tracing
      tests: turn GPG, GPGSM and RFC1991 into lazy prereqs
      tests: increase the verbosity of the GPG-related prereqs
      MyFirstObjectWalk: remove unnecessary conditional statement
      t0007: fix a typo
      ci/lib: if CI type is unknown, show the environment variables
      ci/lib: allow running in GitHub Actions
      ci: fix the `jobname` of the `GETTEXT_POISON` job
      subtree: fix build with AsciiDoctor 2
      mingw: do not treat `COM0` as a reserved file name
      t3904: fix incorrect demonstration of a bug
      stash -p: (partially) fix bug concerning split hunks
      mingw: help debugging by optionally executing bash with strace
      interactive: refactor code asking the user for interactive input
      ci: run gem with sudo to install asciidoctor
      README: add a build badge for the GitHub Actions runs
      ci: retire the Azure Pipelines definition
      tests: when run in Bash, annotate test failures with file name/line number
      ci: add a problem matcher for GitHub Actions
      ci: let GitHub Actions upload failed tests' directories
      t: consolidate the `is_hidden` functions
      mingw: make test_path_is_hidden more robust
      t: restrict `is_hidden` to be called only on Windows
      credential: fix grammar
      credential: optionally allow partial URLs in credential_from_url_gently()
      credential: optionally allow partial URLs in credential_from_url_gently()
      credential: handle `credential.<partial-URL>.<key>` again
      macOS/brew: let the build find gettext headers/libraries/msgfmt
      push: anonymize URLs in error messages and warnings
      credential: handle `credential.<partial-URL>.<key>` again
      rebase --autosquash: fix a potential segfault
      ci: avoid pounding on the poor ci-artifacts container

Jonathan Nieder (5):
      fsck: convert gitmodules url to URL passed to curl
      credential: treat URL without scheme as invalid
      credential: treat URL with empty scheme as invalid
      fsck: reject URL with empty host in .gitmodules
      Revert "fetch: default to protocol version 2"

Jonathan Tan (12):
      connected: always use partial clone optimization
      promisor-remote: accept 0 as oid_nr in function
      diff: make diff_populate_filespec_options struct
      diff: refactor object read
      diff: restrict when prefetching occurs
      rebase --merge: optionally skip upstreamed commits
      fetch-pack: return enum from process_acks()
      fetch-pack: in protocol v2, in_vain only after ACK
      fetch-pack: in protocol v2, reset in_vain upon ACK
      commit-graph: avoid memory leaks
      t5500: count objects through stderr, not trace
      t4067: make rename detection test output raw diff

Jordi Mas (3):
      l10n: Update Catalan translation
      l10n: Update Catalan translation
      l10n: Update Catalan translation

Jorge Lopez Silva (2):
      http: add client cert support for HTTPS proxies
      http: add environment variable support for HTTPS proxies

Josh Steadmon (1):
      trace2: teach Git to log environment variables

Julien Moutinho (1):
      gitweb: fix UTF-8 encoding when using CGI::Fast

Junio C Hamano (34):
      rebase: --fork-point regression fix
      describe: force long format for a name based on a mislocated tag
      update how-to-maintain-git
      parse-options: teach "git cmd -h" to show alias as alias
      clone: reorder --recursive/--recurse-submodules
      log: give --[no-]use-mailmap a more sensible synonym --[no-]mailmap
      Git 2.17.4
      separate tar.* config to its own source file
      The first batch post 2.26 cycle
      The second batch post 2.26 cycle
      t/README: suggest how to leave test early with failure
      CodingGuidelines: allow ${#posix} == strlen($posix)
      sha1-name: do not assume that the ref store is initialized
      receive-pack: compilation fix
      The third batch
      The fourth batch
      credential-store: document the file format a bit more
      Revert "commit-graph.c: introduce '--[no-]check-oids'"
      The fifth batch
      The sixth batch
      The seventh batch
      auto-gc: extract a reusable helper from "git fetch"
      auto-gc: pass --quiet down from am, commit, merge and rebase
      CodingGuidelines: do not ==/!= compare with 0 or '\0' or NULL
      The eighth batch
      The ninth batch
      Git 2.27-rc0
      Revert "t/test_lib: avoid naked bash arrays in file_lineno"
      Revert "ci: add a problem matcher for GitHub Actions"
      Revert "tests: when run in Bash, annotate test failures with file name/line number"
      Git 2.27-rc1
      Hopefully final batch before 2.27-rc2
      Git 2.27-rc2
      Git 2.27

Li Xuejiang (1):
      git-submodule.sh: setup uninitialized variables

Martin Ågren (15):
      Doc: drop support for docbook-xsl before 1.71.1
      Doc: drop support for docbook-xsl before 1.72.0
      Doc: drop support for docbook-xsl before 1.73.0
      manpage-bold-literal.xsl: stop using git.docbook.backslash
      manpage-normal.xsl: fold in manpage-base.xsl
      INSTALL: drop support for docbook-xsl before 1.74
      user-manual.conf: don't specify [listingblock]
      config.txt: move closing "----" to cover entire listing
      merge: use skip_prefix to parse config key
      date-formats.txt: fix list continuation
      git-commit-graph.txt: fix grammo
      git-commit-graph.txt: fix list rendering
      git-credential.txt: use list continuation
      git-sparse-checkout.txt: add missing '
      rev-list-options.txt: start a list for `show-pulls`

Matheus Tavares (3):
      test-lib: allow short options to be bundled
      grep: follow conventions for printing paths w/ unusual chars
      config doc: fix reference to config.worktree info

Matthias Aßhauer (1):
      mingw: use modern strftime implementation if possible

Matthias Rüster (1):
      l10n: de.po: Update German translation for Git 2.27.0

Michael F. Schönitzer (1):
      docs: fix minor glitch in illustration

Nathan Sanders (1):
      mingw: cope with the Isilon network file system

Patrick Steinhardt (9):
      refs: fix segfault when aborting empty transaction
      git-update-ref.txt: add missing word
      strbuf: provide function to append whole lines
      update-ref: organize commands in an array
      update-ref: drop unused argument for `parse_refname`
      update-ref: pass end pointer instead of strbuf
      update-ref: move transaction handling into `update_refs_stdin()`
      update-ref: read commands in a line-wise fashion
      update-ref: implement interactive transaction handling

Peter Krefting (2):
      l10n: sv.po: Update Swedish translation (4839t0f0u)
      l10n: sv.po: Update Swedish translation (4875t0f0u)

Philippe Blain (10):
      t7112: remove mention of KNOWN_FAILURE_SUBMODULE_RECURSIVE_NESTED
      t/lib-submodule-update: remove outdated test description
      t/lib-submodule-update: move a test to the right section
      unpack-trees: remove outdated description for verify_clean_submodule
      unpack-trees: check for missing submodule directory in merged_entry
      t/lib-submodule-update: add test removing nested submodules
      git-rebase.txt: fix typo
      pull doc: refer to a specific section in 'fetch' doc
      pull doc: correct outdated description of an example
      command-list.txt: add gitfaq to the list of guides

Phillip Wood (6):
      t3404: use test_cmp_rev
      cherry-pick: check commit error messages
      sequencer: write CHERRY_PICK_HEAD for reword and edit
      commit: use enum value for multiple cherry-picks
      commit: encapsulate determine_whence() for sequencer
      commit: give correct advice for empty commit during a rebase

René Scharfe (4):
      pull: document more passthru options
      pull: remove --update-head-ok from documentation
      pull: pass documented fetch options on
      fsck: report non-consecutive duplicate names in trees

SZEDER Gábor (4):
      ci: use python3 in linux-gcc and osx-gcc and python2 elsewhere
      commit-slab: clarify slabname##_peek()'s return value
      ci: make MAKEFLAGS available inside the Docker container in the Linux32 job
      completion: offer '--(no-)patch' among 'git log' options

Shourya Shukla (4):
      submodule--helper.c: Rename 'cb_foreach' to 'foreach_cb'
      gitfaq: files in .gitignore are tracked
      gitfaq: fetching and pulling a repository
      submodule: port subcommand 'set-url' from shell to C

Son Luong Ngoc (1):
      midx: teach "git multi-pack-index repack" honor "git repack" configurations

Taylor Blau (24):
      t/helper/test-read-graph.c: support commit-graph chains
      builtin/commit-graph.c: support for '--split[=<strategy>]'
      builtin/commit-graph.c: introduce split strategy 'no-merge'
      builtin/commit-graph.c: introduce split strategy 'replace'
      oidset: introduce 'oidset_size'
      commit-graph.h: replace 'commit_hex' with 'commits'
      commit-graph.c: introduce '--[no-]check-oids'
      diff-tree.c: load notes machinery when required
      commit-graph.c: don't use discarded graph_name in error
      t/test-lib.sh: make ULIMIT_FILE_DESCRIPTORS available to tests
      commit-graph.c: gracefully handle file descriptor exhaustion
      t5537: use test_write_lines and indented heredocs for readability
      shallow.c: use '{commit,rollback}_shallow_file'
      tempfile.c: introduce 'create_tempfile_mode'
      lockfile.c: introduce 'hold_lock_file_for_update_mode'
      commit-graph.c: write non-split graphs as read-only
      commit-graph.c: ensure graph layers respect core.sharedRepository
      commit-graph.c: make 'commit-graph-chain's read-only
      commit: make 'commit_graft_pos' non-static
      shallow: extract a header file for shallow-related functions
      shallow.h: document '{commit,rollback}_shallow_file'
      shallow: use struct 'shallow_lock' for additional safety
      pack-bitmap.c: make object filtering functions generic
      pack-bitmap.c: support 'tree:0' filtering

Terry Moschou (1):
      complete: zsh: add missing sub cmd completion candidates

Thomas Gummerer (2):
      stash: get git_stash_config at the top level
      stash: remove the stash.useBuiltin setting

Todd Zullinger (2):
      git-bugreport.txt: adjust reference to strftime(3)
      gitfaq: avoid validation error with older asciidoc

Toon Claes (1):
      Documentation: correct hash environment variable

Trần Ngọc Quân (2):
      l10n: vi(4874t): Updated Vietnamses translation for 2.27.0
      l10n: vi(4875t): Updated Vietnamses translation for 2.27.0rd2

Vasil Dimov (2):
      range-diff: fix a crash in parsing git-log output
      range-diff: avoid negative string precision

Yang Zhao (12):
      git-p4: make python2.7 the oldest supported version
      git-p4: remove string type aliasing
      git-p4: encode/decode communication with p4 for python3
      git-p4: encode/decode communication with git for python3
      git-p4: convert path to unicode before processing them
      git-p4: open .gitp4-usercache.txt in text mode
      git-p4: use marshal format version 2 when sending to p4
      git-p4: fix freezing while waiting for fast-import progress
      git-p4: use functools.reduce instead of reduce
      git-p4: use dict.items() iteration for python3 compatibility
      git-p4: simplify regex pattern generation for parsing diff-tree
      git-p4: use python3's input() everywhere

Yi-Jyun Pan (2):
      l10n: zh_TW.po: v2.27.0 round 1 (0 untranslated)
      l10n: zh_TW.po: v2.27.0 round 2 (0 untranslated)

brian m. carlson (34):
      builtin/pack-objects: make hash agnostic
      hash: implement and use a context cloning function
      hex: introduce parsing variants taking hash algorithms
      hex: add functions to parse hex object IDs in any algorithm
      repository: require a build flag to use SHA-256
      t: use hash-specific lookup tables to define test constants
      t6300: abstract away SHA-1-specific constants
      t6300: make hash algorithm independent
      t/helper/test-dump-split-index: initialize git repository
      t/helper: initialize repository if necessary
      t/helper: make repository tests hash independent
      setup: allow check_repository_format to read repository format
      builtin/init-db: allow specifying hash algorithm on command line
      builtin/init-db: add environment variable for new repo hash
      init-db: move writing repo version into a function
      worktree: allow repository version 1
      commit: use expected signature header for SHA-256
      fast-import: permit reading multiple marks files
      fast-import: add helper function for inserting mark object entries
      fast-import: make find_marks work on any mark set
      fast-import: add a generic function to iterate over marks
      fast-import: add options for rewriting submodules
      builtin/checkout: pass branch info down to checkout_worktree
      convert: permit passing additional metadata to filter processes
      convert: provide additional metadata to filters
      builtin/checkout: compute checkout metadata for checkouts
      builtin/clone: compute checkout metadata for clones
      builtin/rebase: compute checkout metadata for rebases
      builtin/reset: compute checkout metadata for reset
      t0021: test filter metadata for additional cases
      docs: add a FAQ
      builtin/receive-pack: use constant-time comparison for HMAC value
      credential: fix matching URLs with multiple levels in path
      docs: document credential.helper allowed values

luciano.rocha@booking.com (1):
      freshen_file(): use NULL `times' for implicit current-time

Đoàn Trần Công Danh (37):
      t4061: use POSIX compliant regex(7)
      test-lib-functions: test_cmp: eval $GIT_TEST_CMP
      t5003: drop the subshell in test_lazy_prereq
      t5003: skip conversion test if unzip -a is unavailable
      t5616: use rev-parse instead to get HEAD's object_id
      t7063: drop non-POSIX argument "-ls" from find(1)
      t4124: tweak test so that non-compliant diff(1) can also be used
      t5703: feed raw data into test-tool unpack-sideband
      rebase.c: honour --no-gpg-sign
      cherry-pick/revert: honour --no-gpg-sign in all case
      Documentation: document am --no-gpg-sign
      Documentation: reword commit --no-gpg-sign
      Documentation: merge commit-tree --[no-]gpg-sign
      Documentation: document merge option --no-gpg-sign
      ci/lib-docker: preserve required environment variables
      ci/linux32: parameterise command to switch arch
      ci: refactor docker runner script
      ci/linux32: libify install-dependencies step
      travis: build and test on Linux with musl libc and busybox
      ci/lib: set TERM environment variable if not exist
      ci: explicit install all required packages
      ci: configure GitHub Actions for CI/PR
      t4254: merge 2 steps of a single test
      mailinfo.c: avoid strlen on strings that can contains NUL
      mailinfo: disallow NUL character in mail's header
      date.c: s/is_date/set_date/
      date.c: validate and set time in a helper function
      date.c: skip fractional second part of ISO-8601
      date.c: allow compact version of ISO-8601 datetime
      test-parse-pathspec-file.c: s/0/NULL/ for pointer type
      compat/regex: move stdlib.h up in inclusion chain
      graph.c: limit linkage of internal variable
      progress.c: silence cgcc suggestion about internal linkage
      bloom: fix `make sparse` warning
      t1509: correct i18n test
      ci/config: correct instruction for CI preferences
      t5703: replace "grep -a" usage by perl

마누엘 (1):
      interactive: explicitly `fflush` stdout before expecting input



^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.27.0-rc2
@ 2020-05-26 18:47  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-05-26 18:47 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.27.0-rc2 is now available for testing
at the usual places.  It is comprised of 509 non-merge commits
since v2.26.0, contributed by 59 people, 17 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.27.0-rc2' 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.26.0 are as follows.
Welcome to the Git development community!

  Andras Kucsma, Ansgar Röber, Ash Holland, Christopher
  Warrington, Emma Brooks, Jessica Clarke, Jorge Lopez Silva,
  Julien Moutinho, Li Xuejiang, luciano.rocha@booking.com,
  Matthias Aßhauer, Michael F. Schönitzer, Nathan Sanders,
  Son Luong Ngoc, Terry Moschou, Vasil Dimov, and Yang Zhao.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  마누엘, Abhishek Kumar, Alban Gruin, Alexandr Miloslavskiy,
  Alex Henrie, Andrei Rybak, Andrew Oakley, Ben Keene, brian
  m. carlson, Carlo Marcelo Arenas Belón, Christian Couder,
  Damien Robert, Denton Liu, Derrick Stolee, Đoàn Trần Công
  Danh, Elijah Newren, Emily Shaffer, Eric Sunshine, Garima Singh,
  Greg Price, Hans Jerry Illikainen, Heba Waly, Ismael Luceno,
  Jeff King, Jiang Xin, Johannes Schindelin, Jonathan Nieder,
  Jonathan Tan, Josh Steadmon, Junio C Hamano, Martin Ågren,
  Matheus Tavares, Patrick Steinhardt, Philippe Blain, Phillip
  Wood, Pratyush Yadav, René Scharfe, Shourya Shukla, SZEDER
  Gábor, Taylor Blau, Thomas Gummerer, and Todd Zullinger.

----------------------------------------------------------------

Git 2.27 Release Notes (draft)
==============================

Updates since v2.26
-------------------

Backward compatibility notes

 * When "git describe C" finds that commit C is pointed by a signed or
   annotated tag, which records T as its tagname in the object, the
   command gives T as its answer.  Even if the user renames or moves
   such a tag from its natural location in the "refs/tags/" hierarchy,
   "git describe C" would still give T as the answer, but in such a
   case "git show T^0" would no longer work as expected.  There may be
   nothing at "refs/tags/T" or even worse there may be a different tag
   instead.

   Starting from this version, "git describe" will always use the
   "long" version, as if the "--long" option were given, when giving
   its output based on such a misplaced tag to work around the problem.

 * "git pull" issues a warning message until the pull.rebase
   configuration variable is explicitly given, which some existing
   users may find annoying---those who prefer not to rebase need to
   set the variable to false to squelch the warning.

 * The transport protocol version 2, which was promoted to the default
   in Git 2.26 release, turned out to have some remaining rough edges,
   so it has been demoted from the default.


UI, Workflows & Features

 * A handful of options to configure SSL when talking to proxies have
   been added.

 * Smudge/clean conversion filters are now given more information
   (e.g. the object of the tree-ish in which the blob being converted
   appears, in addition to its path, which has already been given).

 * When "git describe C" finds an annotated tag with tagname A to be
   the best name to explain commit C, and the tag is stored in a
   "wrong" place in the refs/tags hierarchy, e.g. refs/tags/B, the
   command gave a warning message but used A (not B) to describe C.
   If C is exactly at the tag, the describe output would be "A", but
   "git rev-parse A^0" would not be equal as "git rev-parse C^0".  The
   behavior of the command has been changed to use the "long" form
   i.e. A-0-gOBJECTNAME, which is correctly interpreted by rev-parse.

 * "git pull" learned to warn when no pull.rebase configuration
   exists, and neither --[no-]rebase nor --ff-only is given (which
   would result a merge).

 * "git p4" learned four new hooks and also "--no-verify" option to
   bypass them (and the existing "p4-pre-submit" hook).

 * "git pull" shares many options with underlying "git fetch", but
   some of them were not documented and some of those that would make
   sense to pass down were not passed down.

 * "git rebase" learned the "--no-gpg-sign" option to countermand
   commit.gpgSign the user may have.

 * The output from "git format-patch" uses RFC 2047 encoding for
   non-ASCII letters on From: and Subject: headers, so that it can
   directly be fed to e-mail programs.  A new option has been added
   to produce these headers in raw.

 * "git log" learned "--show-pulls" that helps pathspec limited
   history views; a merge commit that takes the whole change from a
   side branch, which is normally omitted from the output, is shown
   in addition to the commits that introduce real changes.

 * The interactive input from various codepaths are consolidated and
   any prompt possibly issued earlier are fflush()ed before we read.

 * Allow "git rebase" to reapply all local commits, even if the may be
   already in the upstream, without checking first.

 * The 'pack.useSparse' configuration variable now defaults to 'true',
   enabling an optimization that has been experimental since Git 2.21.

 * "git rebase" happens to call some hooks meant for "checkout" and
   "commit" by this was not a designed behaviour than historical
   accident.  This has been documented.

 * "git merge" learns the "--autostash" option.

 * "sparse-checkout" UI improvements.

 * "git update-ref --stdin" learned a handful of new verbs to let the
   user control ref update transactions more explicitly, which helps
   as an ingredient to implement two-phase commit-style atomic
   ref-updates across multiple repositories.

 * "git commit-graph write" learned different ways to write out split
   files.

 * Introduce an extension to the commit-graph to make it efficient to
   check for the paths that were modified at each commit using Bloom
   filters.

 * The approxidate parser learns to parse seconds with fraction and
   ignore fractional part.

 * The userdiff patterns for Markdown documents have been added.

 * The sparse-checkout patterns have been forbidden from excluding all
   paths, leaving an empty working tree, for a long time.  This
   limitation has been lifted.

 * "git restore --staged --worktree" now defaults to take the contents
   out of "HEAD", instead of erring out.

 * "git p4" learned to recover from a (broken) state where a directory
   and a file are recorded at the same path in the Perforce repository
   the same way as their clients do.

 * "git multi-pack-index repack" has been taught to honor some
   repack.* configuration variables.


Performance, Internal Implementation, Development Support etc.

 * The advise API has been revamped to allow more systematic enumeration of
   advice knobs in the future.

 * SHA-256 transition continues.

 * The code to interface with GnuPG has been refactored.

 * "git stash" has kept an escape hatch to use the scripted version
   for a few releases, which got stale.  It has been removed.

 * Enable tests that require GnuPG on Windows.

 * Minor test usability improvement.

 * Trace2 enhancement to allow logging of the environment variables.

 * Test clean-up continues.

 * Perf-test update.

 * A Windows-specific test element has been made more robust against
   misuse from both user's environment and programmer's errors.

 * Various tests have been updated to work around issues found with
   shell utilities that come with busybox etc.

 * The config API made mixed uses of int and size_t types to represent
   length of various pieces of text it parsed, which has been updated
   to use the correct type (i.e. size_t) throughout.

 * The "--decorate-refs" and "--decorate-refs-exclude" options "git
   log" takes have learned a companion configuration variable
   log.excludeDecoration that sits at the lowest priority in the
   family.

 * A new CI job to build and run test suite on linux with musl libc
   has been added.

 * Update the CI configuration to use GitHub Actions, retiring the one
   based on Azure Pipelines.

 * The directory traversal code had redundant recursive calls which
   made its performance characteristics exponential with respect to
   the depth of the tree, which was corrected.

 * "git blame" learns to take advantage of the "changed-paths" Bloom
   filter stored in the commit-graph file.

 * The "bugreport" tool has been added.

 * The object walk with object filter "--filter=tree:0" can now take
   advantage of the pack bitmap when available.

 * Instead of always building all branches at GitHub via Actions,
   users can specify which branches to build.

 * Codepaths that show progress meter have been taught to also use the
   start_progress() and the stop_progress() calls as a "region" to be
   traced.

 * Instead of downloading Windows SDK for CI jobs for windows builds
   from an external site (wingit.blob.core.windows.net), use the one
   created in the windows-build job, to work around quota issues at
   the external site.


Fixes since v2.26
-----------------

 * The real_path() convenience function can easily be misused; with a
   bit of code refactoring in the callers' side, its use has been
   eliminated.
   (merge 49d3c4b481 am/real-path-fix later to maint).

 * Update "git p4" to work with Python 3.
   (merge 6bb40ed20a yz/p4-py3 later to maint).

 * The mechanism to prevent "git commit" from making an empty commit
   or amending during an interrupted cherry-pick was broken during the
   rewrite of "git rebase" in C, which has been corrected.
   (merge 430b75f720 pw/advise-rebase-skip later to maint).

 * Fix "git checkout --recurse-submodules" of a nested submodule
   hierarchy.
   (merge 846f34d351 pb/recurse-submodules-fix later to maint).

 * The "--fork-point" mode of "git rebase" regressed when the command
   was rewritten in C back in 2.20 era, which has been corrected.
   (merge f08132f889 at/rebase-fork-point-regression-fix later to maint).

 * The import-tars importer (in contrib/fast-import/) used to create
   phony files at the top-level of the repository when the archive
   contains global PAX headers, which made its own logic to detect and
   omit the common leading directory ineffective, which has been
   corrected.
   (merge c839fcff65 js/import-tars-do-not-make-phony-files-from-pax-headers later to maint).

 * Simplify the commit ancestry connectedness check in a partial clone
   repository in which "promised" objects are assumed to be obtainable
   lazily on-demand from promisor remote repositories.
   (merge 2b98478c6f jt/connectivity-check-optim-in-partial-clone later to maint).

 * The server-end of the v2 protocol to serve "git clone" and "git
   fetch" was not prepared to see a delim packets at unexpected
   places, which led to a crash.
   (merge cacae4329f jk/harden-protocol-v2-delim-handling later to maint).

 * When fed a midx that records no objects, some codepaths tried to
   loop from 0 through (num_objects-1), which, due to integer
   arithmetic wrapping around, made it nonsense operation with out of
   bounds array accesses.  The code has been corrected to reject such
   an midx file.
   (merge 796d61cdc0 dr/midx-avoid-int-underflow later to maint).

 * Utitiles run via the run_command() API were not spawned correctly
   on Cygwin, when the paths to them are given as a full path with
   backslashes.
   (merge 05ac8582bc ak/run-command-on-cygwin-fix later to maint).

 * "git pull --rebase" tried to run a rebase even after noticing that
   the pull results in a fast-forward and no rebase is needed nor
   sensible, for the past few years due to a mistake nobody noticed.
   (merge fbae70ddc6 en/pull-do-not-rebase-after-fast-forwarding later to maint).

 * "git rebase" with the merge backend did not work well when the
   rebase.abbreviateCommands configuration was set.
   (merge de9f1d3ef4 ag/rebase-merge-allow-ff-under-abbrev-command later to maint).

 * The logic to auto-follow tags by "git clone --single-branch" was
   not careful to avoid lazy-fetching unnecessary tags, which has been
   corrected.
   (merge 167a575e2d jk/use-quick-lookup-in-clone-for-tag-following later to maint).

 * "git rebase -i" did not leave the reflog entries correctly.
   (merge 1f6965f994 en/sequencer-reflog-action later to maint).

 * The more aggressive updates to remote-tracking branches we had for
   the past 7 years or so were not reflected in the documentation,
   which has been corrected.
   (merge a44088435c pb/pull-fetch-doc later to maint).

 * We've left the command line parsing of "git log :/a/b/" broken for
   about a full year without anybody noticing, which has been
   corrected.
   (merge 0220461071 jc/missing-ref-store-fix later to maint).

 * Misc fixes for Windows.
   (merge 3efc128cd5 js/mingw-fixes later to maint).

 * "git rebase" (again) learns to honor "--no-keep-empty", which lets
   the user to discard commits that are empty from the beginning (as
   opposed to the ones that become empty because of rebasing).  The
   interactive rebase also marks commits that are empty in the todo.
   (merge 50ed76148a en/rebase-no-keep-empty later to maint).

 * Parsing the host part out of URL for the credential helper has been corrected.
   (merge 4c5971e18a jk/credential-parsing-end-of-host-in-URL later to maint).

 * Document the recommended way to abort a failing test early (e.g. by
   exiting a loop), which is to say "return 1".
   (merge 7cc112dc95 jc/doc-test-leaving-early later to maint).

 * The code that refreshes the last access and modified time of
   on-disk packfiles and loose object files have been updated.
   (merge 312cd76130 lr/freshen-file-fix later to maint).

 * Validation of push certificate has been made more robust against
   timing attacks.
   (merge 719483e547 bc/constant-memequal later to maint).

 * The custom hash function used by "git fast-import" has been
   replaced with the one from hashmap.c, which gave us a nice
   performance boost.
   (merge d8410a816b jk/fast-import-use-hashmap later to maint).

 * The "git submodule" command did not initialize a few variables it
   internally uses and was affected by variable settings leaked from
   the environment.
   (merge 65d100c4dd lx/submodule-clear-variables later to maint).

 * Raise the minimum required version of docbook-xsl package to 1.74,
   as 1.74.0 was from late 2008, which is more than 10 years old, and
   drop compatibility cruft from our documentation suite.
   (merge 3c255ad660 ma/doc-discard-docbook-xsl-1.73 later to maint).

 * "git log" learns "--[no-]mailmap" as a synonym to "--[no-]use-mailmap"
   (merge 88acccda38 jc/log-no-mailmap later to maint).

 * "git commit-graph write --expire-time=<timestamp>" did not use the
   given timestamp correctly, which has been corrected.
   (merge b09b785c78 ds/commit-graph-expiry-fix later to maint).

 * Tests update to use "test-chmtime" instead of "touch -t".
   (merge e892a56845 ds/t5319-touch-fix later to maint).

 * "git diff" in a partial clone learned to avoid lazy loading blob
   objects in more casese when they are not needed.
   (merge 95acf11a3d jt/avoid-prefetch-when-able-in-diff later to maint).

 * "git push --atomic" used to show failures for refs that weren't
   even pushed, which has been corrected.
   (merge dfe1b7f19c jx/atomic-push later to maint).

 * Code in builtin/*, i.e. those can only be called from within
   built-in subcommands, that implements bulk of a couple of
   subcommands have been moved to libgit.a so that they could be used
   by others.
   (merge 9460fd48b5 dl/libify-a-few later to maint).

 * Allowing the user to split a patch hunk while "git stash -p" does
   not work well; a band-aid has been added to make this (partially)
   work better.

 * "git diff-tree --pretty --notes" used to hit an assertion failure,
   as it forgot to initialize the notes subsystem.
   (merge 5778b22b3d tb/diff-tree-with-notes later to maint).

 * "git range-diff" fixes.
   (merge 8d1675eb7f vd/range-diff-with-custom-pretty-format-fix later to maint).

 * "git grep" did not quote a path with unusual character like other
   commands (like "git diff", "git status") do, but did quote when run
   from a subdirectory, both of which has been corrected.
   (merge 45115d8490 mt/grep-cquote-path later to maint).

 * GNU/Hurd is also among the ones that need the fopen() wrapper.
   (merge 274a1328fb jc/gnu-hurd-lets-fread-read-dirs later to maint).

 * Those fetching over protocol v2 from linux-next and other kernel
   repositories are reporting that v2 often fetches way too much than
   needed.
   (merge 11c7f2a30b jn/demote-proto2-from-default later to maint).

 * The upload-pack protocol v2 gave up too early before finding a
   common ancestor, resulting in a wasteful fetch from a fork of a
   project.  This has been corrected to match the behaviour of v0
   protocol.
   (merge 2f0a093dd6 jt/v2-fetch-nego-fix later to maint).

 * The build procedure did not use the libcurl library and its include
   files correctly for a custom-built installation.
   (merge 0573831950 jk/build-with-right-curl later to maint).

 * Tighten "git mailinfo" to notice and error out when decoded result
   contains NUL in it.
   (merge 3919997447 dd/mailinfo-with-nul later to maint).

 * Fix in-core inconsistency after fetching into a shallow repository
   that broke the code to write out commit-graph.
   (merge 37b9dcabfc tb/reset-shallow later to maint).

 * The commit-graph code exhausted file descriptors easily when it
   does not have to.
   (merge c8828530b7 tb/commit-graph-fd-exhaustion-fix later to maint).

 * The multi-pack-index left mmapped file descriptors open when it
   does not have to.
   (merge 6c7ff7cf7f ds/multi-pack-index later to maint).

 * Recent update to Homebrew used by macOS folks breaks build by
   moving gettext library and necessary headers.
   (merge a0b3108618 ds/build-homebrew-gettext-fix later to maint).

 * Incompatible options "--root" and "--fork-point" of "git rebase"
   have been marked and documented as being incompatible.
   (merge a35413c378 en/rebase-root-and-fork-point-are-incompatible later to maint).

 * Error and verbose trace messages from "git push" did not redact
   credential material embedded in URLs.
   (merge d192fa5006 js/anonymise-push-url-in-errors later to maint).

 * Update the parser used for credential.<URL>.<variable>
   configuration, to handle <URL>s with '/' in them correctly.
   (merge b44d0118ac bc/wildcard-credential later to maint).

 * Recent updates broke parsing of "credential.<url>.<key>" where
   <url> is not a full URL (e.g. [credential "https://"] helper = ...)
   stopped working, which has been corrected.
   (merge 9a121b0d22 js/partial-urlmatch-2.17 later to maint).
   (merge cd93e6c029 js/partial-urlmatch later to maint).

 * Some of the files commit-graph subsystem keeps on disk did not
   correctly honor the core.sharedRepository settings and some were
   left read-write.

 * In error messages that "git switch" mentions its option to create a
   new branch, "-b/-B" options were shown, where "-c/-C" options
   should be, which has been corrected.
   (merge 7c16ef7577 dl/switch-c-option-in-error-message later to maint).

 * With the recent tightening of the code that is used to parse
   various parts of a URL for use in the credential subsystem, a
   hand-edited credential-store file causes the credential helper to
   die, which is a bit too harsh to the users.  Demote the error
   behaviour to just ignore and keep using well-formed lines instead.
   (merge c03859a665 cb/credential-store-ignore-bogus-lines later to maint).

 * The samples in the credential documentation has been updated to
   make it clear that we depict what would appear in the .git/config
   file, by adding appropriate quotes as needed..
   (merge 177681a07e jk/credential-sample-update later to maint).

 * "git branch" and other "for-each-ref" variants accepted multiple
   --sort=<key> options in the increasing order of precedence, but it
   had a few breakages around "--ignore-case" handling, and tie-breaking
   with the refname, which have been fixed.
   (merge 7c5045fc18 jk/for-each-ref-multi-key-sort-fix later to maint).

 * The coding guideline for shell scripts instructed to refer to a
   variable with dollar-sign inside arithmetic expansion to work
   around a bug in old versions of dash, which is a thing of the past.
   Now we are not forbidden from writing $((var+1)).
   (merge 32b5fe7f0e jk/arith-expansion-coding-guidelines later to maint).

 * The <stdlib.h> header on NetBSD brings in its own definition of
   hmac() function (eek), which conflicts with our own and unrelated
   function with the same name.  Our function has been renamed to work
   around the issue.
   (merge 3013118eb8 cb/avoid-colliding-with-netbsd-hmac later to maint).

 * The basic test did not honor $TEST_SHELL_PATH setting, which has
   been corrected.
   (merge 0555e4af58 cb/t0000-use-the-configured-shell later to maint).

 * Minor in-code comments and documentation updates around credential
   API.
   (merge 1aed817f99 cb/credential-doc-fixes later to maint).

 * Teach "am", "commit", "merge" and "rebase", when they are run with
   the "--quiet" option, to pass "--quiet" down to "gc --auto".
   (merge 7c3e9e8cfb jc/auto-gc-quiet later to maint).

 * The code to skip unmerged paths in the index when sparse checkout
   is in use would have made out-of-bound access of the in-core index
   when the last path was unmerged, which has been corrected.

 * Serving a "git fetch" client over "git://" and "ssh://" protocols
   using the on-wire protocol version 2 was buggy on the server end
   when the client needs to make a follow-up request to
   e.g. auto-follow tags.
   (merge 08450ef791 cc/upload-pack-v2-fetch-fix later to maint).

 * "git bisect replay" had trouble with input files when they used
   CRLF line ending, which has been corrected.
   (merge 6c722cbe5a cw/bisect-replay-with-dos later to maint).

 * "rebase -i" segfaulted when rearranging a sequence that has a
   fix-up that applies another fix-up (which may or may not be a
   fix-up of yet another step).
   (merge 02471e7e20 js/rebase-autosquash-double-fixup-fix later to maint).

 * "git fsck" ensures that the paths recorded in tree objects are
   sorted and without duplicates, but it failed to notice a case where
   a blob is followed by entries that sort before a tree with the same
   name.  This has been corrected.
   (merge 9068cfb20f rs/fsck-duplicate-names-in-trees later to maint).

 * Code clean-up by removing a compatibility implementation of a
   function we no longer use.
   (merge 84b0115f0d cb/no-more-gmtime later to maint).

 * When a binary file gets modified and renamed on both sides of history
   to different locations, both files would be written to the working
   tree but both would have the contents from "ours".  This has been
   corrected so that the path from each side gets their original content.

 * Fix for a copy-and-paste error introduced during 2.20 era.
   (merge e68a5272b1 ds/multi-pack-verify later to maint).

 * Update an unconditional use of "grep -a" with a perl script in a test.
   (merge 1eb7371236 dd/t5703-grep-a-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 564956f358 jc/maintain-doc later to maint).
   (merge 7422b2a0a1 sg/commit-slab-clarify-peek later to maint).
   (merge 9c688735f6 rs/doc-passthru-fetch-options later to maint).
   (merge 757c2ba3e2 en/oidset-uninclude-hashmap later to maint).
   (merge 8312aa7d74 jc/config-tar later to maint).
   (merge d00a5bdd50 ss/submodule-foreach-cb later to maint).
   (merge 64d1022e14 ar/test-style-fixes later to maint).
   (merge 4a465443a6 ds/doc-clone-filter later to maint).
   (merge bb2dbe301b jk/t3419-drop-expensive-tests later to maint).
   (merge d3507cc712 js/test-junit-finalization-fix later to maint).
   (merge 2149b6748f bc/faq later to maint).
   (merge 12dc0879f1 jk/test-cleanup later to maint).
   (merge 344420bf0f pb/rebase-doc-typofix later to maint).
   (merge 7cd54d37dc dl/wrapper-fix-indentation later to maint).
   (merge 78725ebda9 jc/allow-strlen-substitution-in-shell-scripts later to maint).
   (merge 2ecfcdecc6 jm/gitweb-fastcgi-utf8 later to maint).
   (merge 0740d0a5d3 jk/oid-array-cleanups later to maint).
   (merge a1aba0c95c js/t0007-typofix later to maint).
   (merge 76ba7fa225 ma/config-doc-fix later to maint).
   (merge 826f0c0df2 js/subtree-doc-update-to-asciidoctor-2 later to maint).
   (merge 88eaf361e0 eb/mboxrd-doc later to maint).
   (merge 051cc54941 tm/zsh-complete-switch-restore later to maint).
   (merge 39102cf4fe ms/doc-revision-illustration-fix later to maint).
   (merge 4d9378bfad eb/gitweb-more-trailers later to maint).
   (merge bdccbf7047 mt/doc-worktree-ref later to maint).
   (merge ce9baf234f dl/push-recurse-submodules-fix later to maint).
   (merge 4153274052 bc/doc-credential-helper-value later to maint).
   (merge 5c7bb0146e jc/codingstyle-compare-with-null later to maint).

----------------------------------------------------------------

Changes since v2.26.0 are as follows:

Abhishek Kumar (1):
      commit-slab-decl.h: update include guard

Alban Gruin (3):
      sequencer: mark messages for translation
      sequencer: don't abbreviate a command if it doesn't have a short form
      t3432: test `--merge' with `rebase.abbreviateCommands = true', too

Alex Henrie (1):
      pull: warn if the user didn't say whether to rebase or to merge

Alexandr Miloslavskiy (4):
      set_git_dir: fix crash when used with real_path()
      real_path: remove unsafe API
      real_path_if_valid(): remove unsafe API
      get_superproject_working_tree(): return strbuf

Andras Kucsma (1):
      run-command: trigger PATH lookup properly on Cygwin

Andrei Rybak (2):
      t9500: remove spaces after redirect operators
      t: fix whitespace around &&

Andrew Oakley (1):
      git-p4: recover from inconsistent perforce history

Ansgar Röber (1):
      Subject: git-gui: fix syntax error because of missing semicolon

Ash Holland (1):
      userdiff: support Markdown

Ben Keene (8):
      git-p4: change the expansion test from basestring to list
      git-p4: rewrite prompt to be Windows compatible
      git-p4: create new function run_git_hook
      git-p4: add p4-pre-submit exit text
      git-p4: add --no-verify option
      git-p4: restructure code in submit
      git-p4: add p4 submit hooks
      git-p4: add RCS keyword status message

Carlo Marcelo Arenas Belón (12):
      credential-store: ignore bogus lines from store file
      credential: update description for credential_from_url_gently
      credential: correct order of parameters for credential_match
      builtin/receive-pack: avoid generic function name hmac()
      t/t0000-basic: make sure subtests also use TEST_SHELL_PATH
      t/test_lib: avoid naked bash arrays in file_lineno
      credential: update gitcredentials documentation
      credential: document protocol updates
      compat: remove gmtime
      t4216: avoid unnecessary subshell in test_bloom_filters_not_used
      t5520: avoid alternation in grep's BRE (not POSIX)
      bisect: avoid tailing CR characters from revision in replay

Christian Couder (1):
      upload-pack: clear filter_options for each v2 fetch command

Christopher Warrington (1):
      bisect: allow CRLF line endings in "git bisect replay" input

Damien Robert (6):
      midx.c: fix an integer underflow
      doc: list all commands affected by submodule.recurse
      doc: document --recurse-submodules for reset and restore
      doc: explain how to deactivate submodule.recurse completely
      doc: be more precise on (fetch|push).recurseSubmodules
      doc: --recurse-submodules mostly applies to active submodules

Denton Liu (45):
      Makefile: ASCII-sort += lists
      t7600: use test_write_lines()
      Lib-ify fmt-merge-msg
      Lib-ify prune-packed
      t5512: don't use `test_must_fail test_cmp`
      t5512: stop losing git exit code in here-docs
      t5512: stop losing return codes of git commands
      t5550: simplify no matching line check
      t5607: reorder `nongit test_must_fail`
      t5612: don't use `test_must_fail test_cmp`
      t5612: stop losing return codes of git commands
      t5801: teach compare_refs() to accept !
      wrapper: indent with tabs
      sequencer: stop leaking buf
      sequencer: make file exists check more efficient
      sequencer: make read_oneliner() accept flags
      sequencer: configurably warn on non-existent files
      sequencer: make read_oneliner() extern
      rebase: use read_oneliner()
      sequencer: make apply_autostash() accept a path
      sequencer: rename stash_sha1 to stash_oid
      rebase: use apply_autostash() from sequencer.c
      rebase: generify reset_head()
      reset: extract reset_head() from rebase
      rebase: extract create_autostash()
      rebase: generify create_autostash()
      sequencer: extract perform_autostash() from rebase
      sequencer: unlink autostash in apply_autostash()
      sequencer: implement save_autostash()
      sequencer: implement apply_autostash_oid()
      merge: teach --autostash option
      t5520: make test_pull_autostash() accept expect_parent_num
      pull: pass --autostash to merge
      t6030: use test_path_is_missing()
      t7408: replace incorrect uses of test_must_fail
      t7508: don't use `test_must_fail test_cmp`
      t9141: use test_path_is_missing()
      t9160: use test_path_is_missing()
      t9164: use test_must_fail only on git commands
      t9819: don't use test_must_fail with p4
      Use OPT_CALLBACK and OPT_CALLBACK_F
      push: unset PARSE_OPT_OPTARG for --recurse-submodules
      rebase: save autostash entry into stash reflog on --quit
      switch: fix errors and comments related to -c and -C
      Doc: reference the "stash list" in autostash docs

Derrick Stolee (27):
      connected.c: reprepare packs for corner cases
      config: set pack.useSparse=true by default
      pack-objects: flip the use of GIT_TEST_PACK_SPARSE
      clone: document --filter options
      diff: halt tree-diff early after max_changes
      dir: refactor treat_directory to clarify control flow
      commit-graph: fix buggy --expire-time option
      t5319: replace 'touch -m' with 'test-tool chmtime'
      bloom: ignore renames when computing changed paths
      revision: --show-pulls adds helpful merges
      log-tree: make ref_filter_match() a helper method
      log: add log.excludeDecoration config option
      revision: complicated pathspecs disable filters
      tests: write commit-graph with Bloom filters
      blame: use changed-path Bloom filters
      multi-pack-index: close file descriptor after mmap
      bloom: fix whitespace around tab length
      test-bloom: fix usage typo
      sparse-checkout: stop blocking empty workdirs
      unpack-trees: avoid array out-of-bounds error
      multi-pack-index: respect repack.packKeptObjects=false
      bloom: parse commit before computing filters
      Documentation: changed-path Bloom filters use byte words
      bloom: de-duplicate directory entries
      bloom: use num_changes not nr for limit detection
      progress: call trace2_region_leave() only after calling _enter()
      fsck: use ERROR_MULTI_PACK_INDEX

Elijah Newren (39):
      oidset: remove unnecessary include
      unpack-trees: fix minor typo in comment
      unpack-trees: remove unused error type
      unpack-trees: simplify verify_absent_sparse()
      unpack-trees: simplify pattern_list freeing
      t1091: make some tests a little more defensive against failures
      unpack-trees: allow check_updates() to work on a different index
      unpack-trees: do not mark a dirty path with SKIP_WORKTREE
      unpack-trees: pull sparse-checkout pattern reading into a new function
      unpack-trees: add a new update_sparsity() function
      sparse-checkout: use new update_sparsity() function
      sparse-checkout: use improved unpack_trees porcelain messages
      unpack-trees: move ERROR_WOULD_LOSE_SUBMODULE earlier
      unpack-trees: rename ERROR_* fields meant for warnings to WARNING_*
      unpack-trees: split display_error_msgs() into two
      unpack-trees: make sparse path messages sound like warnings
      unpack-trees: provide warnings on sparse updates for unmerged paths too
      unpack-trees: failure to set SKIP_WORKTREE bits always just a warning
      sparse-checkout: provide a new reapply subcommand
      pull: avoid running both merge and rebase
      t7063: more thorough status checking
      t3000: add more testcases testing a variety of ls-files issues
      dir: fix simple typo in comment
      dir: consolidate treat_path() and treat_one_path()
      dir: fix broken comment
      dir: fix confusion based on variable tense
      dir: replace exponential algorithm with a linear one
      dir: include DIR_KEEP_UNTRACKED_CONTENTS handling in treat_directory()
      dir: replace double pathspec matching with single in treat_directory()
      Fix error-prone fill_directory() API; make it only return matches
      completion: fix 'git add' on paths under an untracked directory
      git-rebase.txt: add another hook to the hooks section, and explain more
      sequencer: honor GIT_REFLOG_ACTION
      rebase -i: mark commits that begin empty in todo editor
      rebase: reinstate --no-keep-empty
      rebase: fix an incompatible-options error message
      rebase: display an error if --root and --fork-point are both provided
      merge-recursive: fix rename/rename(1to2) for working tree with a binary
      unpack-trees: also allow get_progress() to work on a different index

Emily Shaffer (8):
      help: move list_config_help to builtin/help
      bugreport: add tool to generate debugging info
      bugreport: gather git version and build info
      bugreport: add uname info
      bugreport: add compiler info
      bugreport: drop extraneous includes
      bugreport: collect list of populated hooks
      trace2: log progress time and throughput

Emma Brooks (3):
      format-patch: teach --no-encode-email-headers
      Documentation: explain "mboxrd" pretty format
      gitweb: Recognize *-to and Closes/Fixes trailers

Eric Sunshine (1):
      restore: default to HEAD when combining --staged and --worktree

Garima Singh (13):
      commit-graph: define and use MAX_NUM_CHUNKS
      bloom.c: add the murmur3 hash implementation
      bloom.c: introduce core Bloom filter constructs
      bloom.c: core Bloom filter implementation for changed paths.
      commit-graph: compute Bloom filters for changed paths
      commit-graph: examine commits by generation number
      commit-graph: write Bloom filters to commit graph file
      commit-graph: reuse existing Bloom filters during write
      commit-graph: add --changed-paths option to write subcommand
      revision.c: use Bloom filters to speed up path based revision walks
      revision.c: add trace2 stats around Bloom filter usage
      t4216: add end to end tests for git log with Bloom filters
      commit-graph: add GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS test flag

Greg Price (1):
      tests: skip small-stack tests on hppa architecture

Hans Jerry Illikainen (2):
      t: increase test coverage of signature verification output
      gpg-interface: prefer check_signature() for GPG verification

Heba Waly (4):
      advice: extract vadvise() from advise()
      advice: change "setupStreamFailure" to "setUpstreamFailure"
      advice: revamp advise API
      tag: use new advice API to check visibility

Ismael Luceno (1):
      git-gui: Handle Ctrl + BS/Del in the commit msg

Jeff King (51):
      credential: avoid writing values with newlines
      t/lib-credential: use test_i18ncmp to check stderr
      credential: detect unrepresentable values when parsing urls
      fsck: detect gitmodules URLs with embedded newlines
      t3419: drop EXPENSIVE tests
      t/lib-credential.sh: drop shebang line
      t/lib-*.sh: drop executable bit
      test-lib-functions: make packetize() more efficient
      upload-pack: handle unexpected delim packets
      p5310: stop timing non-bitmap pack-to-disk
      Makefile: avoid running curl-config multiple times
      Makefile: use curl-config --cflags
      test-lib-functions: simplify packetize() stdin code
      commit-graph: examine changed-path objects in pack order
      oid_array: use size_t for count and allocation
      oid_array: use size_t for iteration
      oid_array: rename source file from sha1-array
      test-tool: rename sha1-array to oid-array
      bisect: stop referring to sha1_array
      ref-filter: stop referring to "sha1 array"
      oidset: stop referring to sha1-array
      clone: use "quick" lookup while following tags
      Makefile: avoid running curl-config unnecessarily
      fast-import: replace custom hash with hashmap.c
      repository: mark the "refs" pointer as private
      remote: drop auto-strlen behavior of make_branch() and make_rewrite()
      parse_config_key(): return subsection len as size_t
      config: drop useless length variable in write_pair()
      git_config_parse_key(): return baselen as size_t
      config: use size_t to store parsed variable baselen
      config: reject parsing of files over INT_MAX
      credential: treat "?" and "#" in URLs as end of host
      t0300: make "quit" helper more realistic
      t0300: use more realistic inputs
      credential: parse URL without host as empty host, not unset
      credential: refuse to operate when missing host or protocol
      credential: die() when parsing invalid urls
      Git 2.17.5
      blame: drop unused parameter from maybe_changed_path
      test-bloom: fix some whitespace issues
      test-bloom: check that we have expected arguments
      commit-graph: close descriptors after mmap
      t0000: disable GIT_TEST_FAIL_PREREQS in sub-tests
      gitcredentials(7): clarify quoting of helper examples
      gitcredentials(7): make shell-snippet example more realistic
      CodingGuidelines: drop arithmetic expansion advice to use "$x"
      ref-filter: apply --ignore-case to all sorting keys
      ref-filter: apply fallback refname sort only after all user sorts
      list-objects-filter: treat NULL filter_options as "disabled"
      pack-bitmap: pass object filter to fill-in traversal
      ci: allow per-branch config for GitHub Actions

Jessica Clarke (1):
      config.mak.uname: Define FREAD_READS_DIRECTORIES for GNU/Hurd

Jiang Xin (5):
      send-pack: fix inconsistent porcelain output
      t5543: never report what we do not push
      send-pack: mark failure of atomic push properly
      transport-helper: mark failure for atomic push
      transport-helper: new method reject_atomic_push()

Johannes Schindelin (37):
      cherry-pick: add test for `--skip` advice in `git commit`
      tests(junit-xml): avoid invalid XML
      import-tars: ignore the global PAX header
      tests(gpg): allow the gpg-agent to start on Windows
      t/lib-gpg.sh: stop pretending to be a stand-alone script
      tests: do not let lazy prereqs inside `test_expect_*` turn off tracing
      tests: turn GPG, GPGSM and RFC1991 into lazy prereqs
      tests: increase the verbosity of the GPG-related prereqs
      MyFirstObjectWalk: remove unnecessary conditional statement
      t0007: fix a typo
      ci/lib: if CI type is unknown, show the environment variables
      ci/lib: allow running in GitHub Actions
      ci: fix the `jobname` of the `GETTEXT_POISON` job
      subtree: fix build with AsciiDoctor 2
      mingw: do not treat `COM0` as a reserved file name
      t3904: fix incorrect demonstration of a bug
      stash -p: (partially) fix bug concerning split hunks
      mingw: help debugging by optionally executing bash with strace
      interactive: refactor code asking the user for interactive input
      ci: run gem with sudo to install asciidoctor
      README: add a build badge for the GitHub Actions runs
      ci: retire the Azure Pipelines definition
      tests: when run in Bash, annotate test failures with file name/line number
      ci: add a problem matcher for GitHub Actions
      ci: let GitHub Actions upload failed tests' directories
      t: consolidate the `is_hidden` functions
      mingw: make test_path_is_hidden more robust
      t: restrict `is_hidden` to be called only on Windows
      credential: fix grammar
      credential: optionally allow partial URLs in credential_from_url_gently()
      credential: optionally allow partial URLs in credential_from_url_gently()
      credential: handle `credential.<partial-URL>.<key>` again
      macOS/brew: let the build find gettext headers/libraries/msgfmt
      push: anonymize URLs in error messages and warnings
      credential: handle `credential.<partial-URL>.<key>` again
      rebase --autosquash: fix a potential segfault
      ci: avoid pounding on the poor ci-artifacts container

Jonathan Nieder (5):
      fsck: convert gitmodules url to URL passed to curl
      credential: treat URL without scheme as invalid
      credential: treat URL with empty scheme as invalid
      fsck: reject URL with empty host in .gitmodules
      Revert "fetch: default to protocol version 2"

Jonathan Tan (12):
      connected: always use partial clone optimization
      promisor-remote: accept 0 as oid_nr in function
      diff: make diff_populate_filespec_options struct
      diff: refactor object read
      diff: restrict when prefetching occurs
      rebase --merge: optionally skip upstreamed commits
      fetch-pack: return enum from process_acks()
      fetch-pack: in protocol v2, in_vain only after ACK
      fetch-pack: in protocol v2, reset in_vain upon ACK
      commit-graph: avoid memory leaks
      t5500: count objects through stderr, not trace
      t4067: make rename detection test output raw diff

Jorge Lopez Silva (2):
      http: add client cert support for HTTPS proxies
      http: add environment variable support for HTTPS proxies

Josh Steadmon (1):
      trace2: teach Git to log environment variables

Julien Moutinho (1):
      gitweb: fix UTF-8 encoding when using CGI::Fast

Junio C Hamano (33):
      rebase: --fork-point regression fix
      describe: force long format for a name based on a mislocated tag
      update how-to-maintain-git
      parse-options: teach "git cmd -h" to show alias as alias
      clone: reorder --recursive/--recurse-submodules
      log: give --[no-]use-mailmap a more sensible synonym --[no-]mailmap
      Git 2.17.4
      separate tar.* config to its own source file
      The first batch post 2.26 cycle
      The second batch post 2.26 cycle
      t/README: suggest how to leave test early with failure
      CodingGuidelines: allow ${#posix} == strlen($posix)
      sha1-name: do not assume that the ref store is initialized
      receive-pack: compilation fix
      The third batch
      The fourth batch
      credential-store: document the file format a bit more
      Revert "commit-graph.c: introduce '--[no-]check-oids'"
      The fifth batch
      The sixth batch
      The seventh batch
      auto-gc: extract a reusable helper from "git fetch"
      auto-gc: pass --quiet down from am, commit, merge and rebase
      CodingGuidelines: do not ==/!= compare with 0 or '\0' or NULL
      The eighth batch
      The ninth batch
      Git 2.27-rc0
      Revert "t/test_lib: avoid naked bash arrays in file_lineno"
      Revert "ci: add a problem matcher for GitHub Actions"
      Revert "tests: when run in Bash, annotate test failures with file name/line number"
      Git 2.27-rc1
      Hopefully final batch before 2.27-rc2
      Git 2.27-rc2

Li Xuejiang (1):
      git-submodule.sh: setup uninitialized variables

Martin Ågren (14):
      Doc: drop support for docbook-xsl before 1.71.1
      Doc: drop support for docbook-xsl before 1.72.0
      Doc: drop support for docbook-xsl before 1.73.0
      manpage-bold-literal.xsl: stop using git.docbook.backslash
      manpage-normal.xsl: fold in manpage-base.xsl
      INSTALL: drop support for docbook-xsl before 1.74
      user-manual.conf: don't specify [listingblock]
      config.txt: move closing "----" to cover entire listing
      merge: use skip_prefix to parse config key
      date-formats.txt: fix list continuation
      git-commit-graph.txt: fix grammo
      git-commit-graph.txt: fix list rendering
      git-credential.txt: use list continuation
      git-sparse-checkout.txt: add missing '

Matheus Tavares (3):
      test-lib: allow short options to be bundled
      grep: follow conventions for printing paths w/ unusual chars
      config doc: fix reference to config.worktree info

Matthias Aßhauer (1):
      mingw: use modern strftime implementation if possible

Michael F. Schönitzer (1):
      docs: fix minor glitch in illustration

Nathan Sanders (1):
      mingw: cope with the Isilon network file system

Patrick Steinhardt (9):
      refs: fix segfault when aborting empty transaction
      git-update-ref.txt: add missing word
      strbuf: provide function to append whole lines
      update-ref: organize commands in an array
      update-ref: drop unused argument for `parse_refname`
      update-ref: pass end pointer instead of strbuf
      update-ref: move transaction handling into `update_refs_stdin()`
      update-ref: read commands in a line-wise fashion
      update-ref: implement interactive transaction handling

Philippe Blain (10):
      t7112: remove mention of KNOWN_FAILURE_SUBMODULE_RECURSIVE_NESTED
      t/lib-submodule-update: remove outdated test description
      t/lib-submodule-update: move a test to the right section
      unpack-trees: remove outdated description for verify_clean_submodule
      unpack-trees: check for missing submodule directory in merged_entry
      t/lib-submodule-update: add test removing nested submodules
      git-rebase.txt: fix typo
      pull doc: refer to a specific section in 'fetch' doc
      pull doc: correct outdated description of an example
      command-list.txt: add gitfaq to the list of guides

Phillip Wood (6):
      t3404: use test_cmp_rev
      cherry-pick: check commit error messages
      sequencer: write CHERRY_PICK_HEAD for reword and edit
      commit: use enum value for multiple cherry-picks
      commit: encapsulate determine_whence() for sequencer
      commit: give correct advice for empty commit during a rebase

René Scharfe (4):
      pull: document more passthru options
      pull: remove --update-head-ok from documentation
      pull: pass documented fetch options on
      fsck: report non-consecutive duplicate names in trees

SZEDER Gábor (4):
      ci: use python3 in linux-gcc and osx-gcc and python2 elsewhere
      commit-slab: clarify slabname##_peek()'s return value
      ci: make MAKEFLAGS available inside the Docker container in the Linux32 job
      completion: offer '--(no-)patch' among 'git log' options

Shourya Shukla (4):
      submodule--helper.c: Rename 'cb_foreach' to 'foreach_cb'
      gitfaq: files in .gitignore are tracked
      gitfaq: fetching and pulling a repository
      submodule: port subcommand 'set-url' from shell to C

Son Luong Ngoc (1):
      midx: teach "git multi-pack-index repack" honor "git repack" configurations

Taylor Blau (24):
      t/helper/test-read-graph.c: support commit-graph chains
      builtin/commit-graph.c: support for '--split[=<strategy>]'
      builtin/commit-graph.c: introduce split strategy 'no-merge'
      builtin/commit-graph.c: introduce split strategy 'replace'
      oidset: introduce 'oidset_size'
      commit-graph.h: replace 'commit_hex' with 'commits'
      commit-graph.c: introduce '--[no-]check-oids'
      diff-tree.c: load notes machinery when required
      commit-graph.c: don't use discarded graph_name in error
      t/test-lib.sh: make ULIMIT_FILE_DESCRIPTORS available to tests
      commit-graph.c: gracefully handle file descriptor exhaustion
      t5537: use test_write_lines and indented heredocs for readability
      shallow.c: use '{commit,rollback}_shallow_file'
      tempfile.c: introduce 'create_tempfile_mode'
      lockfile.c: introduce 'hold_lock_file_for_update_mode'
      commit-graph.c: write non-split graphs as read-only
      commit-graph.c: ensure graph layers respect core.sharedRepository
      commit-graph.c: make 'commit-graph-chain's read-only
      commit: make 'commit_graft_pos' non-static
      shallow: extract a header file for shallow-related functions
      shallow.h: document '{commit,rollback}_shallow_file'
      shallow: use struct 'shallow_lock' for additional safety
      pack-bitmap.c: make object filtering functions generic
      pack-bitmap.c: support 'tree:0' filtering

Terry Moschou (1):
      complete: zsh: add missing sub cmd completion candidates

Thomas Gummerer (2):
      stash: get git_stash_config at the top level
      stash: remove the stash.useBuiltin setting

Todd Zullinger (2):
      git-bugreport.txt: adjust reference to strftime(3)
      gitfaq: avoid validation error with older asciidoc

Vasil Dimov (2):
      range-diff: fix a crash in parsing git-log output
      range-diff: avoid negative string precision

Yang Zhao (12):
      git-p4: make python2.7 the oldest supported version
      git-p4: remove string type aliasing
      git-p4: encode/decode communication with p4 for python3
      git-p4: encode/decode communication with git for python3
      git-p4: convert path to unicode before processing them
      git-p4: open .gitp4-usercache.txt in text mode
      git-p4: use marshal format version 2 when sending to p4
      git-p4: fix freezing while waiting for fast-import progress
      git-p4: use functools.reduce instead of reduce
      git-p4: use dict.items() iteration for python3 compatibility
      git-p4: simplify regex pattern generation for parsing diff-tree
      git-p4: use python3's input() everywhere

brian m. carlson (34):
      builtin/pack-objects: make hash agnostic
      hash: implement and use a context cloning function
      hex: introduce parsing variants taking hash algorithms
      hex: add functions to parse hex object IDs in any algorithm
      repository: require a build flag to use SHA-256
      t: use hash-specific lookup tables to define test constants
      t6300: abstract away SHA-1-specific constants
      t6300: make hash algorithm independent
      t/helper/test-dump-split-index: initialize git repository
      t/helper: initialize repository if necessary
      t/helper: make repository tests hash independent
      setup: allow check_repository_format to read repository format
      builtin/init-db: allow specifying hash algorithm on command line
      builtin/init-db: add environment variable for new repo hash
      init-db: move writing repo version into a function
      worktree: allow repository version 1
      commit: use expected signature header for SHA-256
      fast-import: permit reading multiple marks files
      fast-import: add helper function for inserting mark object entries
      fast-import: make find_marks work on any mark set
      fast-import: add a generic function to iterate over marks
      fast-import: add options for rewriting submodules
      builtin/checkout: pass branch info down to checkout_worktree
      convert: permit passing additional metadata to filter processes
      convert: provide additional metadata to filters
      builtin/checkout: compute checkout metadata for checkouts
      builtin/clone: compute checkout metadata for clones
      builtin/rebase: compute checkout metadata for rebases
      builtin/reset: compute checkout metadata for reset
      t0021: test filter metadata for additional cases
      docs: add a FAQ
      builtin/receive-pack: use constant-time comparison for HMAC value
      credential: fix matching URLs with multiple levels in path
      docs: document credential.helper allowed values

luciano.rocha@booking.com (1):
      freshen_file(): use NULL `times' for implicit current-time

Đoàn Trần Công Danh (36):
      t4061: use POSIX compliant regex(7)
      test-lib-functions: test_cmp: eval $GIT_TEST_CMP
      t5003: drop the subshell in test_lazy_prereq
      t5003: skip conversion test if unzip -a is unavailable
      t5616: use rev-parse instead to get HEAD's object_id
      t7063: drop non-POSIX argument "-ls" from find(1)
      t4124: tweak test so that non-compliant diff(1) can also be used
      t5703: feed raw data into test-tool unpack-sideband
      rebase.c: honour --no-gpg-sign
      cherry-pick/revert: honour --no-gpg-sign in all case
      Documentation: document am --no-gpg-sign
      Documentation: reword commit --no-gpg-sign
      Documentation: merge commit-tree --[no-]gpg-sign
      Documentation: document merge option --no-gpg-sign
      ci/lib-docker: preserve required environment variables
      ci/linux32: parameterise command to switch arch
      ci: refactor docker runner script
      ci/linux32: libify install-dependencies step
      travis: build and test on Linux with musl libc and busybox
      ci/lib: set TERM environment variable if not exist
      ci: explicit install all required packages
      ci: configure GitHub Actions for CI/PR
      t4254: merge 2 steps of a single test
      mailinfo.c: avoid strlen on strings that can contains NUL
      mailinfo: disallow NUL character in mail's header
      date.c: s/is_date/set_date/
      date.c: validate and set time in a helper function
      date.c: skip fractional second part of ISO-8601
      date.c: allow compact version of ISO-8601 datetime
      test-parse-pathspec-file.c: s/0/NULL/ for pointer type
      compat/regex: move stdlib.h up in inclusion chain
      graph.c: limit linkage of internal variable
      progress.c: silence cgcc suggestion about internal linkage
      bloom: fix `make sparse` warning
      t1509: correct i18n test
      t5703: replace "grep -a" usage by perl

마누엘 (1):
      interactive: explicitly `fflush` stdout before expecting input


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.27.0-rc1
@ 2020-05-20 19:17  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-05-20 19:17 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.27.0-rc1 is now available for testing
at the usual places.  It is comprised of 491 non-merge commits
since v2.26.0, contributed by 55 people, 16 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.27.0-rc1' 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.26.0 are as follows.
Welcome to the Git development community!

  Andras Kucsma, Ash Holland, Christopher Warrington, Emma
  Brooks, Jessica Clarke, Jorge Lopez Silva, Julien Moutinho,
  Li Xuejiang, luciano.rocha@booking.com, Matthias Aßhauer,
  Michael F. Schönitzer, Nathan Sanders, Son Luong Ngoc, Terry
  Moschou, Vasil Dimov, and Yang Zhao.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  마누엘, Abhishek Kumar, Alban Gruin, Alexandr Miloslavskiy,
  Alex Henrie, Andrei Rybak, Andrew Oakley, Ben Keene, brian
  m. carlson, Carlo Marcelo Arenas Belón, Christian Couder,
  Damien Robert, Denton Liu, Derrick Stolee, Đoàn Trần Công
  Danh, Elijah Newren, Emily Shaffer, Eric Sunshine, Garima Singh,
  Hans Jerry Illikainen, Heba Waly, Jeff King, Jiang Xin, Johannes
  Schindelin, Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio
  C Hamano, Martin Ågren, Matheus Tavares, Patrick Steinhardt,
  Philippe Blain, Phillip Wood, René Scharfe, Shourya Shukla,
  SZEDER Gábor, Taylor Blau, Thomas Gummerer, and Todd Zullinger.

----------------------------------------------------------------

Git 2.27 Release Notes (draft)
==============================

Updates since v2.26
-------------------

Backward compatibility notes

 * When "git describe C" finds that commit C is pointed by a signed or
   annotated tag, which records T as its tagname in the object, the
   command gives T as its answer.  Even if the user renames or moves
   such a tag from its natural location in the "refs/tags/" hierarchy,
   "git describe C" would still give T as the answer, but in such a
   case "git show T^0" would no longer work as expected.  There may be
   nothing at "refs/tags/T" or even worse there may be a different tag
   instead.

   Starting from this version, "git describe" will always use the
   "long" version, as if the "--long" option were given, when giving
   its output based on such a misplaced tag to work around the problem.

 * "git pull" issues a warning message until the pull.rebase
   configuration variable is explicitly given, which some existing
   users may find annoying---those who prefer not to rebase need to
   set the variable to false to squelch the warning.


UI, Workflows & Features

 * A handful of options to configure SSL when talking to proxies have
   been added.

 * Smudge/clean conversion filters are now given more information
   (e.g. the object of the tree-ish in which the blob being converted
   appears, in addition to its path, which has already been given).

 * When "git describe C" finds an annotated tag with tagname A to be
   the best name to explain commit C, and the tag is stored in a
   "wrong" place in the refs/tags hierarchy, e.g. refs/tags/B, the
   command gave a warning message but used A (not B) to describe C.
   If C is exactly at the tag, the describe output would be "A", but
   "git rev-parse A^0" would not be equal as "git rev-parse C^0".  The
   behavior of the command has been changed to use the "long" form
   i.e. A-0-gOBJECTNAME, which is correctly interpreted by rev-parse.

 * "git pull" learned to warn when no pull.rebase configuration
   exists, and neither --[no-]rebase nor --ff-only is given (which
   would result a merge).

 * "git p4" learned four new hooks and also "--no-verify" option to
   bypass them (and the existing "p4-pre-submit" hook).

 * "git pull" shares many options with underlying "git fetch", but
   some of them were not documented and some of those that would make
   sense to pass down were not passed down.

 * "git rebase" learned the "--no-gpg-sign" option to countermand
   commit.gpgSign the user may have.

 * The output from "git format-patch" uses RFC 2047 encoding for
   non-ASCII letters on From: and Subject: headers, so that it can
   directly be fed to e-mail programs.  A new option has been added
   to produce these headers in raw.

 * "git log" learned "--show-pulls" that helps pathspec limited
   history views; a merge commit that takes the whole change from a
   side branch, which is normally omitted from the output, is shown
   in addition to the commits that introduce real changes.

 * The interactive input from various codepaths are consolidated and
   any prompt possibly issued earlier are fflush()ed before we read.

 * Allow "git rebase" to reapply all local commits, even if the may be
   already in the upstream, without checking first.

 * The 'pack.useSparse' configuration variable now defaults to 'true',
   enabling an optimization that has been experimental since Git 2.21.

 * "git rebase" happens to call some hooks meant for "checkout" and
   "commit" by this was not a designed behaviour than historical
   accident.  This has been documented.

 * "git merge" learns the "--autostash" option.

 * "sparse-checkout" UI improvements.

 * "git update-ref --stdin" learned a handful of new verbs to let the
   user control ref update transactions more explicitly, which helps
   as an ingredient to implement two-phase commit-style atomic
   ref-updates across multiple repositories.

 * "git commit-graph write" learned different ways to write out split
   files.

 * Introduce an extension to the commit-graph to make it efficient to
   check for the paths that were modified at each commit using Bloom
   filters.

 * The approxidate parser learns to parse seconds with fraction and
   ignore fractional part.

 * The userdiff patterns for Markdown documents have been added.

 * The sparse-checkout patterns have been forbidden from excluding all
   paths, leaving an empty working tree, for a long time.  This
   limitation has been lifted.

 * "git restore --staged --worktree" now defaults to take the contents
   out of "HEAD", instead of erring out.

 * "git p4" learned to recover from a (broken) state where a directory
   and a file are recorded at the same path in the Perforce repository
   the same way as their clients do.

 * "git multi-pack-index repack" has been taught to honor some
   repack.* configuration variables.


Performance, Internal Implementation, Development Support etc.

 * The advise API has been revamped to allow more systematic enumeration of
   advice knobs in the future.

 * SHA-256 transition continues.

 * The code to interface with GnuPG has been refactored.

 * "git stash" has kept an escape hatch to use the scripted version
   for a few releases, which got stale.  It has been removed.

 * Enable tests that require GnuPG on Windows.

 * Minor test usability improvement.

 * Trace2 enhancement to allow logging of the environment variables.

 * Test clean-up continues.

 * Perf-test update.

 * A Windows-specific test element has been made more robust against
   misuse from both user's environment and programmer's errors.

 * Various tests have been updated to work around issues found with
   shell utilities that come with busybox etc.

 * The config API made mixed uses of int and size_t types to represent
   length of various pieces of text it parsed, which has been updated
   to use the correct type (i.e. size_t) throughout.

 * The "--decorate-refs" and "--decorate-refs-exclude" options "git
   log" takes have learned a companion configuration variable
   log.excludeDecoration that sits at the lowest priority in the
   family.

 * A new CI job to build and run test suite on linux with musl libc
   has been added.

 * Update the CI configuration to use GitHub Actions, retiring the one
   based on Azure Pipelines.

 * The directory traversal code had redundant recursive calls which
   made its performance characteristics exponential with respect to
   the depth of the tree, which was corrected.

 * "git blame" learns to take advantage of the "changed-paths" Bloom
   filter stored in the commit-graph file.

 * The "bugreport" tool has been added.

 * The object walk with object filter "--filter=tree:0" can now take
   advantage of the pack bitmap when available.

 * Instead of always building all branches at GitHub via Actions,
   users can specify which branches to build.

 * Codepaths that show progress meter have been taught to also use the
   start_progress() and the stop_progress() calls as a "region" to be
   traced.

 * Instead of downloading Windows SDK for CI jobs for windows builds
   from an external site (wingit.blob.core.windows.net), use the one
   created in the windows-build job, to work around quota issues at
   the external site.


Fixes since v2.26
-----------------

 * The real_path() convenience function can easily be misused; with a
   bit of code refactoring in the callers' side, its use has been
   eliminated.
   (merge 49d3c4b481 am/real-path-fix later to maint).

 * Update "git p4" to work with Python 3.
   (merge 6bb40ed20a yz/p4-py3 later to maint).

 * The mechanism to prevent "git commit" from making an empty commit
   or amending during an interrupted cherry-pick was broken during the
   rewrite of "git rebase" in C, which has been corrected.
   (merge 430b75f720 pw/advise-rebase-skip later to maint).

 * Fix "git checkout --recurse-submodules" of a nested submodule
   hierarchy.
   (merge 846f34d351 pb/recurse-submodules-fix later to maint).

 * The "--fork-point" mode of "git rebase" regressed when the command
   was rewritten in C back in 2.20 era, which has been corrected.
   (merge f08132f889 at/rebase-fork-point-regression-fix later to maint).

 * The import-tars importer (in contrib/fast-import/) used to create
   phony files at the top-level of the repository when the archive
   contains global PAX headers, which made its own logic to detect and
   omit the common leading directory ineffective, which has been
   corrected.
   (merge c839fcff65 js/import-tars-do-not-make-phony-files-from-pax-headers later to maint).

 * Simplify the commit ancestry connectedness check in a partial clone
   repository in which "promised" objects are assumed to be obtainable
   lazily on-demand from promisor remote repositories.
   (merge 2b98478c6f jt/connectivity-check-optim-in-partial-clone later to maint).

 * The server-end of the v2 protocol to serve "git clone" and "git
   fetch" was not prepared to see a delim packets at unexpected
   places, which led to a crash.
   (merge cacae4329f jk/harden-protocol-v2-delim-handling later to maint).

 * When fed a midx that records no objects, some codepaths tried to
   loop from 0 through (num_objects-1), which, due to integer
   arithmetic wrapping around, made it nonsense operation with out of
   bounds array accesses.  The code has been corrected to reject such
   an midx file.
   (merge 796d61cdc0 dr/midx-avoid-int-underflow later to maint).

 * Utitiles run via the run_command() API were not spawned correctly
   on Cygwin, when the paths to them are given as a full path with
   backslashes.
   (merge 05ac8582bc ak/run-command-on-cygwin-fix later to maint).

 * "git pull --rebase" tried to run a rebase even after noticing that
   the pull results in a fast-forward and no rebase is needed nor
   sensible, for the past few years due to a mistake nobody noticed.
   (merge fbae70ddc6 en/pull-do-not-rebase-after-fast-forwarding later to maint).

 * "git rebase" with the merge backend did not work well when the
   rebase.abbreviateCommands configuration was set.
   (merge de9f1d3ef4 ag/rebase-merge-allow-ff-under-abbrev-command later to maint).

 * The logic to auto-follow tags by "git clone --single-branch" was
   not careful to avoid lazy-fetching unnecessary tags, which has been
   corrected.
   (merge 167a575e2d jk/use-quick-lookup-in-clone-for-tag-following later to maint).

 * "git rebase -i" did not leave the reflog entries correctly.
   (merge 1f6965f994 en/sequencer-reflog-action later to maint).

 * The more aggressive updates to remote-tracking branches we had for
   the past 7 years or so were not reflected in the documentation,
   which has been corrected.
   (merge a44088435c pb/pull-fetch-doc later to maint).

 * We've left the command line parsing of "git log :/a/b/" broken for
   about a full year without anybody noticing, which has been
   corrected.
   (merge 0220461071 jc/missing-ref-store-fix later to maint).

 * Misc fixes for Windows.
   (merge 3efc128cd5 js/mingw-fixes later to maint).

 * "git rebase" (again) learns to honor "--no-keep-empty", which lets
   the user to discard commits that are empty from the beginning (as
   opposed to the ones that become empty because of rebasing).  The
   interactive rebase also marks commits that are empty in the todo.
   (merge 50ed76148a en/rebase-no-keep-empty later to maint).

 * Parsing the host part out of URL for the credential helper has been corrected.
   (merge 4c5971e18a jk/credential-parsing-end-of-host-in-URL later to maint).

 * Document the recommended way to abort a failing test early (e.g. by
   exiting a loop), which is to say "return 1".
   (merge 7cc112dc95 jc/doc-test-leaving-early later to maint).

 * The code that refreshes the last access and modified time of
   on-disk packfiles and loose object files have been updated.
   (merge 312cd76130 lr/freshen-file-fix later to maint).

 * Validation of push certificate has been made more robust against
   timing attacks.
   (merge 719483e547 bc/constant-memequal later to maint).

 * The custom hash function used by "git fast-import" has been
   replaced with the one from hashmap.c, which gave us a nice
   performance boost.
   (merge d8410a816b jk/fast-import-use-hashmap later to maint).

 * The "git submodule" command did not initialize a few variables it
   internally uses and was affected by variable settings leaked from
   the environment.
   (merge 65d100c4dd lx/submodule-clear-variables later to maint).

 * Raise the minimum required version of docbook-xsl package to 1.74,
   as 1.74.0 was from late 2008, which is more than 10 years old, and
   drop compatibility cruft from our documentation suite.
   (merge 3c255ad660 ma/doc-discard-docbook-xsl-1.73 later to maint).

 * "git log" learns "--[no-]mailmap" as a synonym to "--[no-]use-mailmap"
   (merge 88acccda38 jc/log-no-mailmap later to maint).

 * "git commit-graph write --expire-time=<timestamp>" did not use the
   given timestamp correctly, which has been corrected.
   (merge b09b785c78 ds/commit-graph-expiry-fix later to maint).

 * Tests update to use "test-chmtime" instead of "touch -t".
   (merge e892a56845 ds/t5319-touch-fix later to maint).

 * "git diff" in a partial clone learned to avoid lazy loading blob
   objects in more casese when they are not needed.
   (merge 95acf11a3d jt/avoid-prefetch-when-able-in-diff later to maint).

 * "git push --atomic" used to show failures for refs that weren't
   even pushed, which has been corrected.
   (merge dfe1b7f19c jx/atomic-push later to maint).

 * Code in builtin/*, i.e. those can only be called from within
   built-in subcommands, that implements bulk of a couple of
   subcommands have been moved to libgit.a so that they could be used
   by others.
   (merge 9460fd48b5 dl/libify-a-few later to maint).

 * Allowing the user to split a patch hunk while "git stash -p" does
   not work well; a band-aid has been added to make this (partially)
   work better.

 * "git diff-tree --pretty --notes" used to hit an assertion failure,
   as it forgot to initialize the notes subsystem.
   (merge 5778b22b3d tb/diff-tree-with-notes later to maint).

 * "git range-diff" fixes.
   (merge 8d1675eb7f vd/range-diff-with-custom-pretty-format-fix later to maint).

 * "git grep" did not quote a path with unusual character like other
   commands (like "git diff", "git status") do, but did quote when run
   from a subdirectory, both of which has been corrected.
   (merge 45115d8490 mt/grep-cquote-path later to maint).

 * GNU/Hurd is also among the ones that need the fopen() wrapper.
   (merge 274a1328fb jc/gnu-hurd-lets-fread-read-dirs later to maint).

 * Those fetching over protocol v2 from linux-next and other kernel
   repositories are reporting that v2 often fetches way too much than
   needed.
   (merge 11c7f2a30b jn/demote-proto2-from-default later to maint).

 * The upload-pack protocol v2 gave up too early before finding a
   common ancestor, resulting in a wasteful fetch from a fork of a
   project.  This has been corrected to match the behaviour of v0
   protocol.
   (merge 2f0a093dd6 jt/v2-fetch-nego-fix later to maint).

 * The build procedure did not use the libcurl library and its include
   files correctly for a custom-built installation.
   (merge 0573831950 jk/build-with-right-curl later to maint).

 * Tighten "git mailinfo" to notice and error out when decoded result
   contains NUL in it.
   (merge 3919997447 dd/mailinfo-with-nul later to maint).

 * Fix in-core inconsistency after fetching into a shallow repository
   that broke the code to write out commit-graph.
   (merge 37b9dcabfc tb/reset-shallow later to maint).

 * The commit-graph code exhausted file descriptors easily when it
   does not have to.
   (merge c8828530b7 tb/commit-graph-fd-exhaustion-fix later to maint).

 * The multi-pack-index left mmapped file descriptors open when it
   does not have to.
   (merge 6c7ff7cf7f ds/multi-pack-index later to maint).

 * Recent update to Homebrew used by macOS folks breaks build by
   moving gettext library and necessary headers.
   (merge a0b3108618 ds/build-homebrew-gettext-fix later to maint).

 * Incompatible options "--root" and "--fork-point" of "git rebase"
   have been marked and documented as being incompatible.
   (merge a35413c378 en/rebase-root-and-fork-point-are-incompatible later to maint).

 * Error and verbose trace messages from "git push" did not redact
   credential material embedded in URLs.
   (merge d192fa5006 js/anonymise-push-url-in-errors later to maint).

 * Update the parser used for credential.<URL>.<variable>
   configuration, to handle <URL>s with '/' in them correctly.
   (merge b44d0118ac bc/wildcard-credential later to maint).

 * Recent updates broke parsing of "credential.<url>.<key>" where
   <url> is not a full URL (e.g. [credential "https://"] helper = ...)
   stopped working, which has been corrected.
   (merge 9a121b0d22 js/partial-urlmatch-2.17 later to maint).
   (merge cd93e6c029 js/partial-urlmatch later to maint).

 * Some of the files commit-graph subsystem keeps on disk did not
   correctly honor the core.sharedRepository settings and some were
   left read-write.

 * In error messages that "git switch" mentions its option to create a
   new branch, "-b/-B" options were shown, where "-c/-C" options
   should be, which has been corrected.
   (merge 7c16ef7577 dl/switch-c-option-in-error-message later to maint).

 * With the recent tightening of the code that is used to parse
   various parts of a URL for use in the credential subsystem, a
   hand-edited credential-store file causes the credential helper to
   die, which is a bit too harsh to the users.  Demote the error
   behaviour to just ignore and keep using well-formed lines instead.
   (merge c03859a665 cb/credential-store-ignore-bogus-lines later to maint).

 * The samples in the credential documentation has been updated to
   make it clear that we depict what would appear in the .git/config
   file, by adding appropriate quotes as needed..
   (merge 177681a07e jk/credential-sample-update later to maint).

 * "git branch" and other "for-each-ref" variants accepted multiple
   --sort=<key> options in the increasing order of precedence, but it
   had a few breakages around "--ignore-case" handling, and tie-breaking
   with the refname, which have been fixed.
   (merge 7c5045fc18 jk/for-each-ref-multi-key-sort-fix later to maint).

 * The coding guideline for shell scripts instructed to refer to a
   variable with dollar-sign inside arithmetic expansion to work
   around a bug in old versions of dash, which is a thing of the past.
   Now we are not forbidden from writing $((var+1)).
   (merge 32b5fe7f0e jk/arith-expansion-coding-guidelines later to maint).

 * The <stdlib.h> header on NetBSD brings in its own definition of
   hmac() function (eek), which conflicts with our own and unrelated
   function with the same name.  Our function has been renamed to work
   around the issue.
   (merge 3013118eb8 cb/avoid-colliding-with-netbsd-hmac later to maint).

 * The basic test did not honor $TEST_SHELL_PATH setting, which has
   been corrected.
   (merge 0555e4af58 cb/t0000-use-the-configured-shell later to maint).

 * Minor in-code comments and documentation updates around credential
   API.
   (merge 1aed817f99 cb/credential-doc-fixes later to maint).

 * Teach "am", "commit", "merge" and "rebase", when they are run with
   the "--quiet" option, to pass "--quiet" down to "gc --auto".
   (merge 7c3e9e8cfb jc/auto-gc-quiet later to maint).

 * The code to skip unmerged paths in the index when sparse checkout
   is in use would have made out-of-bound access of the in-core index
   when the last path was unmerged, which has been corrected.

 * Serving a "git fetch" client over "git://" and "ssh://" protocols
   using the on-wire protocol version 2 was buggy on the server end
   when the client needs to make a follow-up request to
   e.g. auto-follow tags.
   (merge 08450ef791 cc/upload-pack-v2-fetch-fix later to maint).

 * "git bisect replay" had trouble with input files when they used
   CRLF line ending, which has been corrected.
   (merge 6c722cbe5a cw/bisect-replay-with-dos later to maint).

 * "rebase -i" segfaulted when rearranging a sequence that has a
   fix-up that applies another fix-up (which may or may not be a
   fix-up of yet another step).
   (merge 02471e7e20 js/rebase-autosquash-double-fixup-fix later to maint).

 * "git fsck" ensures that the paths recorded in tree objects are
   sorted and without duplicates, but it failed to notice a case where
   a blob is followed by entries that sort before a tree with the same
   name.  This has been corrected.
   (merge 9068cfb20f rs/fsck-duplicate-names-in-trees later to maint).

 * Code clean-up by removing a compatibility implementation of a
   function we no longer use.
   (merge 84b0115f0d cb/no-more-gmtime later to maint).

 * When a binary file gets modified and renamed on both sides of history
   to different locations, both files would be written to the working
   tree but both would have the contents from "ours".  This has been
   corrected so that the path from each side gets their original content.

 * Other code cleanup, docfix, build fix, etc.
   (merge 564956f358 jc/maintain-doc later to maint).
   (merge 7422b2a0a1 sg/commit-slab-clarify-peek later to maint).
   (merge 9c688735f6 rs/doc-passthru-fetch-options later to maint).
   (merge 757c2ba3e2 en/oidset-uninclude-hashmap later to maint).
   (merge 8312aa7d74 jc/config-tar later to maint).
   (merge d00a5bdd50 ss/submodule-foreach-cb later to maint).
   (merge 64d1022e14 ar/test-style-fixes later to maint).
   (merge 4a465443a6 ds/doc-clone-filter later to maint).
   (merge bb2dbe301b jk/t3419-drop-expensive-tests later to maint).
   (merge d3507cc712 js/test-junit-finalization-fix later to maint).
   (merge 2149b6748f bc/faq later to maint).
   (merge 12dc0879f1 jk/test-cleanup later to maint).
   (merge 344420bf0f pb/rebase-doc-typofix later to maint).
   (merge 7cd54d37dc dl/wrapper-fix-indentation later to maint).
   (merge 78725ebda9 jc/allow-strlen-substitution-in-shell-scripts later to maint).
   (merge 2ecfcdecc6 jm/gitweb-fastcgi-utf8 later to maint).
   (merge 0740d0a5d3 jk/oid-array-cleanups later to maint).
   (merge a1aba0c95c js/t0007-typofix later to maint).
   (merge 76ba7fa225 ma/config-doc-fix later to maint).
   (merge 826f0c0df2 js/subtree-doc-update-to-asciidoctor-2 later to maint).
   (merge 88eaf361e0 eb/mboxrd-doc later to maint).
   (merge 051cc54941 tm/zsh-complete-switch-restore later to maint).
   (merge 39102cf4fe ms/doc-revision-illustration-fix later to maint).
   (merge 4d9378bfad eb/gitweb-more-trailers later to maint).
   (merge bdccbf7047 mt/doc-worktree-ref later to maint).
   (merge ce9baf234f dl/push-recurse-submodules-fix later to maint).
   (merge 4153274052 bc/doc-credential-helper-value later to maint).
   (merge 5c7bb0146e jc/codingstyle-compare-with-null later to maint).

----------------------------------------------------------------

Changes since v2.26.0 are as follows:

Abhishek Kumar (1):
      commit-slab-decl.h: update include guard

Alban Gruin (3):
      sequencer: mark messages for translation
      sequencer: don't abbreviate a command if it doesn't have a short form
      t3432: test `--merge' with `rebase.abbreviateCommands = true', too

Alex Henrie (1):
      pull: warn if the user didn't say whether to rebase or to merge

Alexandr Miloslavskiy (4):
      set_git_dir: fix crash when used with real_path()
      real_path: remove unsafe API
      real_path_if_valid(): remove unsafe API
      get_superproject_working_tree(): return strbuf

Andras Kucsma (1):
      run-command: trigger PATH lookup properly on Cygwin

Andrei Rybak (2):
      t9500: remove spaces after redirect operators
      t: fix whitespace around &&

Andrew Oakley (1):
      git-p4: recover from inconsistent perforce history

Ash Holland (1):
      userdiff: support Markdown

Ben Keene (8):
      git-p4: change the expansion test from basestring to list
      git-p4: rewrite prompt to be Windows compatible
      git-p4: create new function run_git_hook
      git-p4: add p4-pre-submit exit text
      git-p4: add --no-verify option
      git-p4: restructure code in submit
      git-p4: add p4 submit hooks
      git-p4: add RCS keyword status message

Carlo Marcelo Arenas Belón (9):
      credential-store: ignore bogus lines from store file
      credential: update description for credential_from_url_gently
      credential: correct order of parameters for credential_match
      builtin/receive-pack: avoid generic function name hmac()
      t/t0000-basic: make sure subtests also use TEST_SHELL_PATH
      t/test_lib: avoid naked bash arrays in file_lineno
      credential: update gitcredentials documentation
      credential: document protocol updates
      compat: remove gmtime

Christian Couder (1):
      upload-pack: clear filter_options for each v2 fetch command

Christopher Warrington (1):
      bisect: allow CRLF line endings in "git bisect replay" input

Damien Robert (6):
      midx.c: fix an integer underflow
      doc: list all commands affected by submodule.recurse
      doc: document --recurse-submodules for reset and restore
      doc: explain how to deactivate submodule.recurse completely
      doc: be more precise on (fetch|push).recurseSubmodules
      doc: --recurse-submodules mostly applies to active submodules

Denton Liu (45):
      Makefile: ASCII-sort += lists
      t7600: use test_write_lines()
      Lib-ify fmt-merge-msg
      Lib-ify prune-packed
      t5512: don't use `test_must_fail test_cmp`
      t5512: stop losing git exit code in here-docs
      t5512: stop losing return codes of git commands
      t5550: simplify no matching line check
      t5607: reorder `nongit test_must_fail`
      t5612: don't use `test_must_fail test_cmp`
      t5612: stop losing return codes of git commands
      t5801: teach compare_refs() to accept !
      wrapper: indent with tabs
      sequencer: stop leaking buf
      sequencer: make file exists check more efficient
      sequencer: make read_oneliner() accept flags
      sequencer: configurably warn on non-existent files
      sequencer: make read_oneliner() extern
      rebase: use read_oneliner()
      sequencer: make apply_autostash() accept a path
      sequencer: rename stash_sha1 to stash_oid
      rebase: use apply_autostash() from sequencer.c
      rebase: generify reset_head()
      reset: extract reset_head() from rebase
      rebase: extract create_autostash()
      rebase: generify create_autostash()
      sequencer: extract perform_autostash() from rebase
      sequencer: unlink autostash in apply_autostash()
      sequencer: implement save_autostash()
      sequencer: implement apply_autostash_oid()
      merge: teach --autostash option
      t5520: make test_pull_autostash() accept expect_parent_num
      pull: pass --autostash to merge
      t6030: use test_path_is_missing()
      t7408: replace incorrect uses of test_must_fail
      t7508: don't use `test_must_fail test_cmp`
      t9141: use test_path_is_missing()
      t9160: use test_path_is_missing()
      t9164: use test_must_fail only on git commands
      t9819: don't use test_must_fail with p4
      Use OPT_CALLBACK and OPT_CALLBACK_F
      push: unset PARSE_OPT_OPTARG for --recurse-submodules
      rebase: save autostash entry into stash reflog on --quit
      switch: fix errors and comments related to -c and -C
      Doc: reference the "stash list" in autostash docs

Derrick Stolee (26):
      connected.c: reprepare packs for corner cases
      config: set pack.useSparse=true by default
      pack-objects: flip the use of GIT_TEST_PACK_SPARSE
      clone: document --filter options
      diff: halt tree-diff early after max_changes
      dir: refactor treat_directory to clarify control flow
      commit-graph: fix buggy --expire-time option
      t5319: replace 'touch -m' with 'test-tool chmtime'
      bloom: ignore renames when computing changed paths
      revision: --show-pulls adds helpful merges
      log-tree: make ref_filter_match() a helper method
      log: add log.excludeDecoration config option
      revision: complicated pathspecs disable filters
      tests: write commit-graph with Bloom filters
      blame: use changed-path Bloom filters
      multi-pack-index: close file descriptor after mmap
      bloom: fix whitespace around tab length
      test-bloom: fix usage typo
      sparse-checkout: stop blocking empty workdirs
      unpack-trees: avoid array out-of-bounds error
      multi-pack-index: respect repack.packKeptObjects=false
      bloom: parse commit before computing filters
      Documentation: changed-path Bloom filters use byte words
      bloom: de-duplicate directory entries
      bloom: use num_changes not nr for limit detection
      progress: call trace2_region_leave() only after calling _enter()

Elijah Newren (39):
      oidset: remove unnecessary include
      unpack-trees: fix minor typo in comment
      unpack-trees: remove unused error type
      unpack-trees: simplify verify_absent_sparse()
      unpack-trees: simplify pattern_list freeing
      t1091: make some tests a little more defensive against failures
      unpack-trees: allow check_updates() to work on a different index
      unpack-trees: do not mark a dirty path with SKIP_WORKTREE
      unpack-trees: pull sparse-checkout pattern reading into a new function
      unpack-trees: add a new update_sparsity() function
      sparse-checkout: use new update_sparsity() function
      sparse-checkout: use improved unpack_trees porcelain messages
      unpack-trees: move ERROR_WOULD_LOSE_SUBMODULE earlier
      unpack-trees: rename ERROR_* fields meant for warnings to WARNING_*
      unpack-trees: split display_error_msgs() into two
      unpack-trees: make sparse path messages sound like warnings
      unpack-trees: provide warnings on sparse updates for unmerged paths too
      unpack-trees: failure to set SKIP_WORKTREE bits always just a warning
      sparse-checkout: provide a new reapply subcommand
      pull: avoid running both merge and rebase
      t7063: more thorough status checking
      t3000: add more testcases testing a variety of ls-files issues
      dir: fix simple typo in comment
      dir: consolidate treat_path() and treat_one_path()
      dir: fix broken comment
      dir: fix confusion based on variable tense
      dir: replace exponential algorithm with a linear one
      dir: include DIR_KEEP_UNTRACKED_CONTENTS handling in treat_directory()
      dir: replace double pathspec matching with single in treat_directory()
      Fix error-prone fill_directory() API; make it only return matches
      completion: fix 'git add' on paths under an untracked directory
      git-rebase.txt: add another hook to the hooks section, and explain more
      sequencer: honor GIT_REFLOG_ACTION
      rebase -i: mark commits that begin empty in todo editor
      rebase: reinstate --no-keep-empty
      rebase: fix an incompatible-options error message
      rebase: display an error if --root and --fork-point are both provided
      merge-recursive: fix rename/rename(1to2) for working tree with a binary
      unpack-trees: also allow get_progress() to work on a different index

Emily Shaffer (8):
      help: move list_config_help to builtin/help
      bugreport: add tool to generate debugging info
      bugreport: gather git version and build info
      bugreport: add uname info
      bugreport: add compiler info
      bugreport: drop extraneous includes
      bugreport: collect list of populated hooks
      trace2: log progress time and throughput

Emma Brooks (3):
      format-patch: teach --no-encode-email-headers
      Documentation: explain "mboxrd" pretty format
      gitweb: Recognize *-to and Closes/Fixes trailers

Eric Sunshine (1):
      restore: default to HEAD when combining --staged and --worktree

Garima Singh (13):
      commit-graph: define and use MAX_NUM_CHUNKS
      bloom.c: add the murmur3 hash implementation
      bloom.c: introduce core Bloom filter constructs
      bloom.c: core Bloom filter implementation for changed paths.
      commit-graph: compute Bloom filters for changed paths
      commit-graph: examine commits by generation number
      commit-graph: write Bloom filters to commit graph file
      commit-graph: reuse existing Bloom filters during write
      commit-graph: add --changed-paths option to write subcommand
      revision.c: use Bloom filters to speed up path based revision walks
      revision.c: add trace2 stats around Bloom filter usage
      t4216: add end to end tests for git log with Bloom filters
      commit-graph: add GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS test flag

Hans Jerry Illikainen (2):
      t: increase test coverage of signature verification output
      gpg-interface: prefer check_signature() for GPG verification

Heba Waly (4):
      advice: extract vadvise() from advise()
      advice: change "setupStreamFailure" to "setUpstreamFailure"
      advice: revamp advise API
      tag: use new advice API to check visibility

Jeff King (51):
      credential: avoid writing values with newlines
      t/lib-credential: use test_i18ncmp to check stderr
      credential: detect unrepresentable values when parsing urls
      fsck: detect gitmodules URLs with embedded newlines
      t3419: drop EXPENSIVE tests
      t/lib-credential.sh: drop shebang line
      t/lib-*.sh: drop executable bit
      test-lib-functions: make packetize() more efficient
      upload-pack: handle unexpected delim packets
      p5310: stop timing non-bitmap pack-to-disk
      Makefile: avoid running curl-config multiple times
      Makefile: use curl-config --cflags
      test-lib-functions: simplify packetize() stdin code
      commit-graph: examine changed-path objects in pack order
      oid_array: use size_t for count and allocation
      oid_array: use size_t for iteration
      oid_array: rename source file from sha1-array
      test-tool: rename sha1-array to oid-array
      bisect: stop referring to sha1_array
      ref-filter: stop referring to "sha1 array"
      oidset: stop referring to sha1-array
      clone: use "quick" lookup while following tags
      Makefile: avoid running curl-config unnecessarily
      fast-import: replace custom hash with hashmap.c
      repository: mark the "refs" pointer as private
      remote: drop auto-strlen behavior of make_branch() and make_rewrite()
      parse_config_key(): return subsection len as size_t
      config: drop useless length variable in write_pair()
      git_config_parse_key(): return baselen as size_t
      config: use size_t to store parsed variable baselen
      config: reject parsing of files over INT_MAX
      credential: treat "?" and "#" in URLs as end of host
      t0300: make "quit" helper more realistic
      t0300: use more realistic inputs
      credential: parse URL without host as empty host, not unset
      credential: refuse to operate when missing host or protocol
      credential: die() when parsing invalid urls
      Git 2.17.5
      blame: drop unused parameter from maybe_changed_path
      test-bloom: fix some whitespace issues
      test-bloom: check that we have expected arguments
      commit-graph: close descriptors after mmap
      t0000: disable GIT_TEST_FAIL_PREREQS in sub-tests
      gitcredentials(7): clarify quoting of helper examples
      gitcredentials(7): make shell-snippet example more realistic
      CodingGuidelines: drop arithmetic expansion advice to use "$x"
      ref-filter: apply --ignore-case to all sorting keys
      ref-filter: apply fallback refname sort only after all user sorts
      list-objects-filter: treat NULL filter_options as "disabled"
      pack-bitmap: pass object filter to fill-in traversal
      ci: allow per-branch config for GitHub Actions

Jessica Clarke (1):
      config.mak.uname: Define FREAD_READS_DIRECTORIES for GNU/Hurd

Jiang Xin (5):
      send-pack: fix inconsistent porcelain output
      t5543: never report what we do not push
      send-pack: mark failure of atomic push properly
      transport-helper: mark failure for atomic push
      transport-helper: new method reject_atomic_push()

Johannes Schindelin (37):
      cherry-pick: add test for `--skip` advice in `git commit`
      tests(junit-xml): avoid invalid XML
      import-tars: ignore the global PAX header
      tests(gpg): allow the gpg-agent to start on Windows
      t/lib-gpg.sh: stop pretending to be a stand-alone script
      tests: do not let lazy prereqs inside `test_expect_*` turn off tracing
      tests: turn GPG, GPGSM and RFC1991 into lazy prereqs
      tests: increase the verbosity of the GPG-related prereqs
      MyFirstObjectWalk: remove unnecessary conditional statement
      t0007: fix a typo
      ci/lib: if CI type is unknown, show the environment variables
      ci/lib: allow running in GitHub Actions
      ci: fix the `jobname` of the `GETTEXT_POISON` job
      subtree: fix build with AsciiDoctor 2
      mingw: do not treat `COM0` as a reserved file name
      t3904: fix incorrect demonstration of a bug
      stash -p: (partially) fix bug concerning split hunks
      mingw: help debugging by optionally executing bash with strace
      interactive: refactor code asking the user for interactive input
      ci: run gem with sudo to install asciidoctor
      README: add a build badge for the GitHub Actions runs
      ci: retire the Azure Pipelines definition
      tests: when run in Bash, annotate test failures with file name/line number
      ci: add a problem matcher for GitHub Actions
      ci: let GitHub Actions upload failed tests' directories
      t: consolidate the `is_hidden` functions
      mingw: make test_path_is_hidden more robust
      t: restrict `is_hidden` to be called only on Windows
      credential: fix grammar
      credential: optionally allow partial URLs in credential_from_url_gently()
      credential: optionally allow partial URLs in credential_from_url_gently()
      credential: handle `credential.<partial-URL>.<key>` again
      macOS/brew: let the build find gettext headers/libraries/msgfmt
      push: anonymize URLs in error messages and warnings
      credential: handle `credential.<partial-URL>.<key>` again
      rebase --autosquash: fix a potential segfault
      ci: avoid pounding on the poor ci-artifacts container

Jonathan Nieder (5):
      fsck: convert gitmodules url to URL passed to curl
      credential: treat URL without scheme as invalid
      credential: treat URL with empty scheme as invalid
      fsck: reject URL with empty host in .gitmodules
      Revert "fetch: default to protocol version 2"

Jonathan Tan (11):
      connected: always use partial clone optimization
      promisor-remote: accept 0 as oid_nr in function
      diff: make diff_populate_filespec_options struct
      diff: refactor object read
      diff: restrict when prefetching occurs
      rebase --merge: optionally skip upstreamed commits
      fetch-pack: return enum from process_acks()
      fetch-pack: in protocol v2, in_vain only after ACK
      fetch-pack: in protocol v2, reset in_vain upon ACK
      commit-graph: avoid memory leaks
      t5500: count objects through stderr, not trace

Jorge Lopez Silva (2):
      http: add client cert support for HTTPS proxies
      http: add environment variable support for HTTPS proxies

Josh Steadmon (1):
      trace2: teach Git to log environment variables

Julien Moutinho (1):
      gitweb: fix UTF-8 encoding when using CGI::Fast

Junio C Hamano (31):
      rebase: --fork-point regression fix
      describe: force long format for a name based on a mislocated tag
      update how-to-maintain-git
      parse-options: teach "git cmd -h" to show alias as alias
      clone: reorder --recursive/--recurse-submodules
      log: give --[no-]use-mailmap a more sensible synonym --[no-]mailmap
      Git 2.17.4
      separate tar.* config to its own source file
      The first batch post 2.26 cycle
      The second batch post 2.26 cycle
      t/README: suggest how to leave test early with failure
      CodingGuidelines: allow ${#posix} == strlen($posix)
      sha1-name: do not assume that the ref store is initialized
      receive-pack: compilation fix
      The third batch
      The fourth batch
      credential-store: document the file format a bit more
      Revert "commit-graph.c: introduce '--[no-]check-oids'"
      The fifth batch
      The sixth batch
      The seventh batch
      auto-gc: extract a reusable helper from "git fetch"
      auto-gc: pass --quiet down from am, commit, merge and rebase
      CodingGuidelines: do not ==/!= compare with 0 or '\0' or NULL
      The eighth batch
      The ninth batch
      Git 2.27-rc0
      Revert "t/test_lib: avoid naked bash arrays in file_lineno"
      Revert "ci: add a problem matcher for GitHub Actions"
      Revert "tests: when run in Bash, annotate test failures with file name/line number"
      Git 2.27-rc1

Li Xuejiang (1):
      git-submodule.sh: setup uninitialized variables

Martin Ågren (9):
      Doc: drop support for docbook-xsl before 1.71.1
      Doc: drop support for docbook-xsl before 1.72.0
      Doc: drop support for docbook-xsl before 1.73.0
      manpage-bold-literal.xsl: stop using git.docbook.backslash
      manpage-normal.xsl: fold in manpage-base.xsl
      INSTALL: drop support for docbook-xsl before 1.74
      user-manual.conf: don't specify [listingblock]
      config.txt: move closing "----" to cover entire listing
      merge: use skip_prefix to parse config key

Matheus Tavares (3):
      test-lib: allow short options to be bundled
      grep: follow conventions for printing paths w/ unusual chars
      config doc: fix reference to config.worktree info

Matthias Aßhauer (1):
      mingw: use modern strftime implementation if possible

Michael F. Schönitzer (1):
      docs: fix minor glitch in illustration

Nathan Sanders (1):
      mingw: cope with the Isilon network file system

Patrick Steinhardt (9):
      refs: fix segfault when aborting empty transaction
      git-update-ref.txt: add missing word
      strbuf: provide function to append whole lines
      update-ref: organize commands in an array
      update-ref: drop unused argument for `parse_refname`
      update-ref: pass end pointer instead of strbuf
      update-ref: move transaction handling into `update_refs_stdin()`
      update-ref: read commands in a line-wise fashion
      update-ref: implement interactive transaction handling

Philippe Blain (9):
      t7112: remove mention of KNOWN_FAILURE_SUBMODULE_RECURSIVE_NESTED
      t/lib-submodule-update: remove outdated test description
      t/lib-submodule-update: move a test to the right section
      unpack-trees: remove outdated description for verify_clean_submodule
      unpack-trees: check for missing submodule directory in merged_entry
      t/lib-submodule-update: add test removing nested submodules
      git-rebase.txt: fix typo
      pull doc: refer to a specific section in 'fetch' doc
      pull doc: correct outdated description of an example

Phillip Wood (6):
      t3404: use test_cmp_rev
      cherry-pick: check commit error messages
      sequencer: write CHERRY_PICK_HEAD for reword and edit
      commit: use enum value for multiple cherry-picks
      commit: encapsulate determine_whence() for sequencer
      commit: give correct advice for empty commit during a rebase

René Scharfe (4):
      pull: document more passthru options
      pull: remove --update-head-ok from documentation
      pull: pass documented fetch options on
      fsck: report non-consecutive duplicate names in trees

SZEDER Gábor (4):
      ci: use python3 in linux-gcc and osx-gcc and python2 elsewhere
      commit-slab: clarify slabname##_peek()'s return value
      ci: make MAKEFLAGS available inside the Docker container in the Linux32 job
      completion: offer '--(no-)patch' among 'git log' options

Shourya Shukla (4):
      submodule--helper.c: Rename 'cb_foreach' to 'foreach_cb'
      gitfaq: files in .gitignore are tracked
      gitfaq: fetching and pulling a repository
      submodule: port subcommand 'set-url' from shell to C

Son Luong Ngoc (1):
      midx: teach "git multi-pack-index repack" honor "git repack" configurations

Taylor Blau (24):
      t/helper/test-read-graph.c: support commit-graph chains
      builtin/commit-graph.c: support for '--split[=<strategy>]'
      builtin/commit-graph.c: introduce split strategy 'no-merge'
      builtin/commit-graph.c: introduce split strategy 'replace'
      oidset: introduce 'oidset_size'
      commit-graph.h: replace 'commit_hex' with 'commits'
      commit-graph.c: introduce '--[no-]check-oids'
      diff-tree.c: load notes machinery when required
      commit-graph.c: don't use discarded graph_name in error
      t/test-lib.sh: make ULIMIT_FILE_DESCRIPTORS available to tests
      commit-graph.c: gracefully handle file descriptor exhaustion
      t5537: use test_write_lines and indented heredocs for readability
      shallow.c: use '{commit,rollback}_shallow_file'
      tempfile.c: introduce 'create_tempfile_mode'
      lockfile.c: introduce 'hold_lock_file_for_update_mode'
      commit-graph.c: write non-split graphs as read-only
      commit-graph.c: ensure graph layers respect core.sharedRepository
      commit-graph.c: make 'commit-graph-chain's read-only
      commit: make 'commit_graft_pos' non-static
      shallow: extract a header file for shallow-related functions
      shallow.h: document '{commit,rollback}_shallow_file'
      shallow: use struct 'shallow_lock' for additional safety
      pack-bitmap.c: make object filtering functions generic
      pack-bitmap.c: support 'tree:0' filtering

Terry Moschou (1):
      complete: zsh: add missing sub cmd completion candidates

Thomas Gummerer (2):
      stash: get git_stash_config at the top level
      stash: remove the stash.useBuiltin setting

Todd Zullinger (1):
      git-bugreport.txt: adjust reference to strftime(3)

Vasil Dimov (2):
      range-diff: fix a crash in parsing git-log output
      range-diff: avoid negative string precision

Yang Zhao (12):
      git-p4: make python2.7 the oldest supported version
      git-p4: remove string type aliasing
      git-p4: encode/decode communication with p4 for python3
      git-p4: encode/decode communication with git for python3
      git-p4: convert path to unicode before processing them
      git-p4: open .gitp4-usercache.txt in text mode
      git-p4: use marshal format version 2 when sending to p4
      git-p4: fix freezing while waiting for fast-import progress
      git-p4: use functools.reduce instead of reduce
      git-p4: use dict.items() iteration for python3 compatibility
      git-p4: simplify regex pattern generation for parsing diff-tree
      git-p4: use python3's input() everywhere

brian m. carlson (34):
      builtin/pack-objects: make hash agnostic
      hash: implement and use a context cloning function
      hex: introduce parsing variants taking hash algorithms
      hex: add functions to parse hex object IDs in any algorithm
      repository: require a build flag to use SHA-256
      t: use hash-specific lookup tables to define test constants
      t6300: abstract away SHA-1-specific constants
      t6300: make hash algorithm independent
      t/helper/test-dump-split-index: initialize git repository
      t/helper: initialize repository if necessary
      t/helper: make repository tests hash independent
      setup: allow check_repository_format to read repository format
      builtin/init-db: allow specifying hash algorithm on command line
      builtin/init-db: add environment variable for new repo hash
      init-db: move writing repo version into a function
      worktree: allow repository version 1
      commit: use expected signature header for SHA-256
      fast-import: permit reading multiple marks files
      fast-import: add helper function for inserting mark object entries
      fast-import: make find_marks work on any mark set
      fast-import: add a generic function to iterate over marks
      fast-import: add options for rewriting submodules
      builtin/checkout: pass branch info down to checkout_worktree
      convert: permit passing additional metadata to filter processes
      convert: provide additional metadata to filters
      builtin/checkout: compute checkout metadata for checkouts
      builtin/clone: compute checkout metadata for clones
      builtin/rebase: compute checkout metadata for rebases
      builtin/reset: compute checkout metadata for reset
      t0021: test filter metadata for additional cases
      docs: add a FAQ
      builtin/receive-pack: use constant-time comparison for HMAC value
      credential: fix matching URLs with multiple levels in path
      docs: document credential.helper allowed values

luciano.rocha@booking.com (1):
      freshen_file(): use NULL `times' for implicit current-time

Đoàn Trần Công Danh (35):
      t4061: use POSIX compliant regex(7)
      test-lib-functions: test_cmp: eval $GIT_TEST_CMP
      t5003: drop the subshell in test_lazy_prereq
      t5003: skip conversion test if unzip -a is unavailable
      t5616: use rev-parse instead to get HEAD's object_id
      t7063: drop non-POSIX argument "-ls" from find(1)
      t4124: tweak test so that non-compliant diff(1) can also be used
      t5703: feed raw data into test-tool unpack-sideband
      rebase.c: honour --no-gpg-sign
      cherry-pick/revert: honour --no-gpg-sign in all case
      Documentation: document am --no-gpg-sign
      Documentation: reword commit --no-gpg-sign
      Documentation: merge commit-tree --[no-]gpg-sign
      Documentation: document merge option --no-gpg-sign
      ci/lib-docker: preserve required environment variables
      ci/linux32: parameterise command to switch arch
      ci: refactor docker runner script
      ci/linux32: libify install-dependencies step
      travis: build and test on Linux with musl libc and busybox
      ci/lib: set TERM environment variable if not exist
      ci: explicit install all required packages
      ci: configure GitHub Actions for CI/PR
      t4254: merge 2 steps of a single test
      mailinfo.c: avoid strlen on strings that can contains NUL
      mailinfo: disallow NUL character in mail's header
      date.c: s/is_date/set_date/
      date.c: validate and set time in a helper function
      date.c: skip fractional second part of ISO-8601
      date.c: allow compact version of ISO-8601 datetime
      test-parse-pathspec-file.c: s/0/NULL/ for pointer type
      compat/regex: move stdlib.h up in inclusion chain
      graph.c: limit linkage of internal variable
      progress.c: silence cgcc suggestion about internal linkage
      bloom: fix `make sparse` warning
      t1509: correct i18n test

마누엘 (1):
      interactive: explicitly `fflush` stdout before expecting input


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.27.0-rc0
@ 2020-05-14 23:28  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-05-14 23:28 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

An early preview release Git v2.27.0-rc0 is now available for
testing at the usual places.  It is comprised of 479 non-merge
commits since v2.26.0, contributed by 53 people, 16 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.27.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.26.0 are as follows.
Welcome to the Git development community!

  Andras Kucsma, Ash Holland, Christopher Warrington, Emma
  Brooks, Jessica Clarke, Jorge Lopez Silva, Julien Moutinho,
  Li Xuejiang, luciano.rocha@booking.com, Matthias Aßhauer,
  Michael F. Schönitzer, Nathan Sanders, Son Luong Ngoc, Terry
  Moschou, Vasil Dimov, and Yang Zhao.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  마누엘, Alban Gruin, Alexandr Miloslavskiy, Alex Henrie,
  Andrei Rybak, Andrew Oakley, Ben Keene, brian m. carlson,
  Carlo Marcelo Arenas Belón, Christian Couder, Damien Robert,
  Denton Liu, Derrick Stolee, Đoàn Trần Công Danh, Elijah
  Newren, Emily Shaffer, Eric Sunshine, Garima Singh, Hans Jerry
  Illikainen, Heba Waly, Jeff King, Jiang Xin, Johannes Schindelin,
  Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio C Hamano,
  Martin Ågren, Matheus Tavares, Patrick Steinhardt, Philippe
  Blain, Phillip Wood, René Scharfe, Shourya Shukla, SZEDER
  Gábor, Taylor Blau, and Thomas Gummerer.

----------------------------------------------------------------

Git 2.27 Release Notes (draft)
==============================

Updates since v2.26
-------------------

Backward compatibility notes

 * When "git describe C" finds that commit C is pointed by a signed or
   annotated tag, which records T as its tagname in the object, the
   command gives T as its answer.  Even if the user renames or moves
   such a tag from its natural location in the "refs/tags/" hierarchy,
   "git describe C" would still give T as the answer, but in such a
   case "git show T^0" would no longer work as expected.  There may be
   nothing at "refs/tags/T" or even worse there may be a different tag
   instead.

   Starting from this version, "git describe" will always use the
   "long" version, as if the "--long" option were given, when giving
   its output based on such a misplaced tag to work around the problem.

 * "git pull" issues a warning message until the pull.rebase
   configuration variable is explicitly given, which some existing
   users may find annoying---those who prefer not to rebase need to
   set the variable to false to squelch the warning.


UI, Workflows & Features

 * A handful of options to configure SSL when talking to proxies have
   been added.

 * Smudge/clean conversion filters are now given more information
   (e.g. the object of the tree-ish in which the blob being converted
   appears, in addition to its path, which has already been given).

 * When "git describe C" finds an annotated tag with tagname A to be
   the best name to explain commit C, and the tag is stored in a
   "wrong" place in the refs/tags hierarchy, e.g. refs/tags/B, the
   command gave a warning message but used A (not B) to describe C.
   If C is exactly at the tag, the describe output would be "A", but
   "git rev-parse A^0" would not be equal as "git rev-parse C^0".  The
   behavior of the command has been changed to use the "long" form
   i.e. A-0-gOBJECTNAME, which is correctly interpreted by rev-parse.

 * "git pull" learned to warn when no pull.rebase configuration
   exists, and neither --[no-]rebase nor --ff-only is given (which
   would result a merge).

 * "git p4" learned four new hooks and also "--no-verify" option to
   bypass them (and the existing "p4-pre-submit" hook).

 * "git pull" shares many options with underlying "git fetch", but
   some of them were not documented and some of those that would make
   sense to pass down were not passed down.

 * "git rebase" learned the "--no-gpg-sign" option to countermand
   commit.gpgSign the user may have.

 * The output from "git format-patch" uses RFC 2047 encoding for
   non-ASCII letters on From: and Subject: headers, so that it can
   directly be fed to e-mail programs.  A new option has been added
   to produce these headers in raw.

 * "git log" learned "--show-pulls" that helps pathspec limited
   history views; a merge commit that takes the whole change from a
   side branch, which is normally omitted from the output, is shown
   in addition to the commits that introduce real changes.

 * The interactive input from various codepaths are consolidated and
   any prompt possibly issued earlier are fflush()ed before we read.

 * Allow "git rebase" to reapply all local commits, even if the may be
   already in the upstream, without checking first.

 * The 'pack.useSparse' configuration variable now defaults to 'true',
   enabling an optimization that has been experimental since Git 2.21.

 * "git rebase" happens to call some hooks meant for "checkout" and
   "commit" by this was not a designed behaviour than historical
   accident.  This has been documented.

 * "git merge" learns the "--autostash" option.

 * "sparse-checkout" UI improvements.

 * "git update-ref --stdin" learned a handful of new verbs to let the
   user control ref update transactions more explicitly, which helps
   as an ingredient to implement two-phase commit-style atomic
   ref-updates across multiple repositories.

 * "git commit-graph write" learned different ways to write out split
   files.

 * Introduce an extension to the commit-graph to make it efficient to
   check for the paths that were modified at each commit using Bloom
   filters.

 * The approxidate parser learns to parse seconds with fraction and
   ignore fractional part.

 * The userdiff patterns for Markdown documents have been added.

 * The sparse-checkout patterns have been forbidden from excluding all
   paths, leaving an empty working tree, for a long time.  This
   limitation has been lifted.

 * "git restore --staged --worktree" now defaults to take the contents
   out of "HEAD", instead of erring out.

 * "git p4" learned to recover from a (broken) state where a directory
   and a file are recorded at the same path in the Perforce repository
   the same way as their clients do.

 * "git multi-pack-index repack" has been taught to honor some
   repack.* configuration variables.


Performance, Internal Implementation, Development Support etc.

 * The advise API has been revamped to allow more systematic enumeration of
   advice knobs in the future.

 * SHA-256 transition continues.

 * The code to interface with GnuPG has been refactored.

 * "git stash" has kept an escape hatch to use the scripted version
   for a few releases, which got stale.  It has been removed.

 * Enable tests that require GnuPG on Windows.

 * Minor test usability improvement.

 * Trace2 enhancement to allow logging of the environment variables.

 * Test clean-up continues.

 * Perf-test update.

 * A Windows-specific test element has been made more robust against
   misuse from both user's environment and programmer's errors.

 * Various tests have been updated to work around issues found with
   shell utilities that come with busybox etc.

 * The config API made mixed uses of int and size_t types to represent
   length of various pieces of text it parsed, which has been updated
   to use the correct type (i.e. size_t) throughout.

 * The "--decorate-refs" and "--decorate-refs-exclude" options "git
   log" takes have learned a companion configuration variable
   log.excludeDecoration that sits at the lowest priority in the
   family.

 * A new CI job to build and run test suite on linux with musl libc
   has been added.

 * Update the CI configuration to use GitHub Actions, retiring the one
   based on Azure Pipelines.

 * The directory traversal code had redundant recursive calls which
   made its performance characteristics exponential with respect to
   the depth of the tree, which was corrected.

 * "git blame" learns to take advantage of the "changed-paths" Bloom
   filter stored in the commit-graph file.

 * The "bugreport" tool has been added.

 * The object walk with object filter "--filter=tree:0" can now take
   advantage of the pack bitmap when available.

 * Instead of always building all branches at GitHub via Actions,
   users can specify which branches to build.

 * Codepaths that show progress meter have been taught to also use the
   start_progress() and the stop_progress() calls as a "region" to be
   traced.


Fixes since v2.26
-----------------

 * The real_path() convenience function can easily be misused; with a
   bit of code refactoring in the callers' side, its use has been
   eliminated.
   (merge 49d3c4b481 am/real-path-fix later to maint).

 * Update "git p4" to work with Python 3.
   (merge 6bb40ed20a yz/p4-py3 later to maint).

 * The mechanism to prevent "git commit" from making an empty commit
   or amending during an interrupted cherry-pick was broken during the
   rewrite of "git rebase" in C, which has been corrected.
   (merge 430b75f720 pw/advise-rebase-skip later to maint).

 * Fix "git checkout --recurse-submodules" of a nested submodule
   hierarchy.
   (merge 846f34d351 pb/recurse-submodules-fix later to maint).

 * The "--fork-point" mode of "git rebase" regressed when the command
   was rewritten in C back in 2.20 era, which has been corrected.
   (merge f08132f889 at/rebase-fork-point-regression-fix later to maint).

 * The import-tars importer (in contrib/fast-import/) used to create
   phony files at the top-level of the repository when the archive
   contains global PAX headers, which made its own logic to detect and
   omit the common leading directory ineffective, which has been
   corrected.
   (merge c839fcff65 js/import-tars-do-not-make-phony-files-from-pax-headers later to maint).

 * Simplify the commit ancestry connectedness check in a partial clone
   repository in which "promised" objects are assumed to be obtainable
   lazily on-demand from promisor remote repositories.
   (merge 2b98478c6f jt/connectivity-check-optim-in-partial-clone later to maint).

 * The server-end of the v2 protocol to serve "git clone" and "git
   fetch" was not prepared to see a delim packets at unexpected
   places, which led to a crash.
   (merge cacae4329f jk/harden-protocol-v2-delim-handling later to maint).

 * When fed a midx that records no objects, some codepaths tried to
   loop from 0 through (num_objects-1), which, due to integer
   arithmetic wrapping around, made it nonsense operation with out of
   bounds array accesses.  The code has been corrected to reject such
   an midx file.
   (merge 796d61cdc0 dr/midx-avoid-int-underflow later to maint).

 * Utitiles run via the run_command() API were not spawned correctly
   on Cygwin, when the paths to them are given as a full path with
   backslashes.
   (merge 05ac8582bc ak/run-command-on-cygwin-fix later to maint).

 * "git pull --rebase" tried to run a rebase even after noticing that
   the pull results in a fast-forward and no rebase is needed nor
   sensible, for the past few years due to a mistake nobody noticed.
   (merge fbae70ddc6 en/pull-do-not-rebase-after-fast-forwarding later to maint).

 * "git rebase" with the merge backend did not work well when the
   rebase.abbreviateCommands configuration was set.
   (merge de9f1d3ef4 ag/rebase-merge-allow-ff-under-abbrev-command later to maint).

 * The logic to auto-follow tags by "git clone --single-branch" was
   not careful to avoid lazy-fetching unnecessary tags, which has been
   corrected.
   (merge 167a575e2d jk/use-quick-lookup-in-clone-for-tag-following later to maint).

 * "git rebase -i" did not leave the reflog entries correctly.
   (merge 1f6965f994 en/sequencer-reflog-action later to maint).

 * The more aggressive updates to remote-tracking branches we had for
   the past 7 years or so were not reflected in the documentation,
   which has been corrected.
   (merge a44088435c pb/pull-fetch-doc later to maint).

 * We've left the command line parsing of "git log :/a/b/" broken for
   about a full year without anybody noticing, which has been
   corrected.
   (merge 0220461071 jc/missing-ref-store-fix later to maint).

 * Misc fixes for Windows.
   (merge 3efc128cd5 js/mingw-fixes later to maint).

 * "git rebase" (again) learns to honor "--no-keep-empty", which lets
   the user to discard commits that are empty from the beginning (as
   opposed to the ones that become empty because of rebasing).  The
   interactive rebase also marks commits that are empty in the todo.
   (merge 50ed76148a en/rebase-no-keep-empty later to maint).

 * Parsing the host part out of URL for the credential helper has been corrected.
   (merge 4c5971e18a jk/credential-parsing-end-of-host-in-URL later to maint).

 * Document the recommended way to abort a failing test early (e.g. by
   exiting a loop), which is to say "return 1".
   (merge 7cc112dc95 jc/doc-test-leaving-early later to maint).

 * The code that refreshes the last access and modified time of
   on-disk packfiles and loose object files have been updated.
   (merge 312cd76130 lr/freshen-file-fix later to maint).

 * Validation of push certificate has been made more robust against
   timing attacks.
   (merge 719483e547 bc/constant-memequal later to maint).

 * The custom hash function used by "git fast-import" has been
   replaced with the one from hashmap.c, which gave us a nice
   performance boost.
   (merge d8410a816b jk/fast-import-use-hashmap later to maint).

 * The "git submodule" command did not initialize a few variables it
   internally uses and was affected by variable settings leaked from
   the environment.
   (merge 65d100c4dd lx/submodule-clear-variables later to maint).

 * Raise the minimum required version of docbook-xsl package to 1.74,
   as 1.74.0 was from late 2008, which is more than 10 years old, and
   drop compatibility cruft from our documentation suite.
   (merge 3c255ad660 ma/doc-discard-docbook-xsl-1.73 later to maint).

 * "git log" learns "--[no-]mailmap" as a synonym to "--[no-]use-mailmap"
   (merge 88acccda38 jc/log-no-mailmap later to maint).

 * "git commit-graph write --expire-time=<timestamp>" did not use the
   given timestamp correctly, which has been corrected.
   (merge b09b785c78 ds/commit-graph-expiry-fix later to maint).

 * Tests update to use "test-chmtime" instead of "touch -t".
   (merge e892a56845 ds/t5319-touch-fix later to maint).

 * "git diff" in a partial clone learned to avoid lazy loading blob
   objects in more casese when they are not needed.
   (merge 95acf11a3d jt/avoid-prefetch-when-able-in-diff later to maint).

 * "git push --atomic" used to show failures for refs that weren't
   even pushed, which has been corrected.
   (merge dfe1b7f19c jx/atomic-push later to maint).

 * Code in builtin/*, i.e. those can only be called from within
   built-in subcommands, that implements bulk of a couple of
   subcommands have been moved to libgit.a so that they could be used
   by others.
   (merge 9460fd48b5 dl/libify-a-few later to maint).

 * Allowing the user to split a patch hunk while "git stash -p" does
   not work well; a band-aid has been added to make this (partially)
   work better.

 * "git diff-tree --pretty --notes" used to hit an assertion failure,
   as it forgot to initialize the notes subsystem.
   (merge 5778b22b3d tb/diff-tree-with-notes later to maint).

 * "git range-diff" fixes.
   (merge 8d1675eb7f vd/range-diff-with-custom-pretty-format-fix later to maint).

 * "git grep" did not quote a path with unusual character like other
   commands (like "git diff", "git status") do, but did quote when run
   from a subdirectory, both of which has been corrected.
   (merge 45115d8490 mt/grep-cquote-path later to maint).

 * GNU/Hurd is also among the ones that need the fopen() wrapper.
   (merge 274a1328fb jc/gnu-hurd-lets-fread-read-dirs later to maint).

 * Those fetching over protocol v2 from linux-next and other kernel
   repositories are reporting that v2 often fetches way too much than
   needed.
   (merge 11c7f2a30b jn/demote-proto2-from-default later to maint).

 * The upload-pack protocol v2 gave up too early before finding a
   common ancestor, resulting in a wasteful fetch from a fork of a
   project.  This has been corrected to match the behaviour of v0
   protocol.
   (merge 2f0a093dd6 jt/v2-fetch-nego-fix later to maint).

 * The build procedure did not use the libcurl library and its include
   files correctly for a custom-built installation.
   (merge 0573831950 jk/build-with-right-curl later to maint).

 * Tighten "git mailinfo" to notice and error out when decoded result
   contains NUL in it.
   (merge 3919997447 dd/mailinfo-with-nul later to maint).

 * Fix in-core inconsistency after fetching into a shallow repository
   that broke the code to write out commit-graph.
   (merge 37b9dcabfc tb/reset-shallow later to maint).

 * The commit-graph code exhausted file descriptors easily when it
   does not have to.
   (merge c8828530b7 tb/commit-graph-fd-exhaustion-fix later to maint).

 * The multi-pack-index left mmapped file descriptors open when it
   does not have to.
   (merge 6c7ff7cf7f ds/multi-pack-index later to maint).

 * Recent update to Homebrew used by macOS folks breaks build by
   moving gettext library and necessary headers.
   (merge a0b3108618 ds/build-homebrew-gettext-fix later to maint).

 * Incompatible options "--root" and "--fork-point" of "git rebase"
   have been marked and documented as being incompatible.
   (merge a35413c378 en/rebase-root-and-fork-point-are-incompatible later to maint).

 * Error and verbose trace messages from "git push" did not redact
   credential material embedded in URLs.
   (merge d192fa5006 js/anonymise-push-url-in-errors later to maint).

 * Update the parser used for credential.<URL>.<variable>
   configuration, to handle <URL>s with '/' in them correctly.
   (merge b44d0118ac bc/wildcard-credential later to maint).

 * Recent updates broke parsing of "credential.<url>.<key>" where
   <url> is not a full URL (e.g. [credential "https://"] helper = ...)
   stopped working, which has been corrected.
   (merge 9a121b0d22 js/partial-urlmatch-2.17 later to maint).
   (merge cd93e6c029 js/partial-urlmatch later to maint).

 * Some of the files commit-graph subsystem keeps on disk did not
   correctly honor the core.sharedRepository settings and some were
   left read-write.

 * In error messages that "git switch" mentions its option to create a
   new branch, "-b/-B" options were shown, where "-c/-C" options
   should be, which has been corrected.
   (merge 7c16ef7577 dl/switch-c-option-in-error-message later to maint).

 * With the recent tightening of the code that is used to parse
   various parts of a URL for use in the credential subsystem, a
   hand-edited credential-store file causes the credential helper to
   die, which is a bit too harsh to the users.  Demote the error
   behaviour to just ignore and keep using well-formed lines instead.
   (merge c03859a665 cb/credential-store-ignore-bogus-lines later to maint).

 * The samples in the credential documentation has been updated to
   make it clear that we depict what would appear in the .git/config
   file, by adding appropriate quotes as needed..
   (merge 177681a07e jk/credential-sample-update later to maint).

 * "git branch" and other "for-each-ref" variants accepted multiple
   --sort=<key> options in the increasing order of precedence, but it
   had a few breakages around "--ignore-case" handling, and tie-breaking
   with the refname, which have been fixed.
   (merge 7c5045fc18 jk/for-each-ref-multi-key-sort-fix later to maint).

 * The coding guideline for shell scripts instructed to refer to a
   variable with dollar-sign inside arithmetic expansion to work
   around a bug in old versions of dash, which is a thing of the past.
   Now we are not forbidden from writing $((var+1)).
   (merge 32b5fe7f0e jk/arith-expansion-coding-guidelines later to maint).

 * The <stdlib.h> header on NetBSD brings in its own definition of
   hmac() function (eek), which conflicts with our own and unrelated
   function with the same name.  Our function has been renamed to work
   around the issue.
   (merge 3013118eb8 cb/avoid-colliding-with-netbsd-hmac later to maint).

 * The basic test did not honor $TEST_SHELL_PATH setting, which has
   been corrected.
   (merge 0555e4af58 cb/t0000-use-the-configured-shell later to maint).

 * Minor in-code comments and documentation updates around credential
   API.
   (merge 1aed817f99 cb/credential-doc-fixes later to maint).

 * Teach "am", "commit", "merge" and "rebase", when they are run with
   the "--quiet" option, to pass "--quiet" down to "gc --auto".
   (merge 7c3e9e8cfb jc/auto-gc-quiet later to maint).

 * The code to skip unmerged paths in the index when sparse checkout
   is in use would have made out-of-bound access of the in-core index
   when the last path was unmerged, which has been corrected.

 * Serving a "git fetch" client over "git://" and "ssh://" protocols
   using the on-wire protocol version 2 was buggy on the server end
   when the client needs to make a follow-up request to
   e.g. auto-follow tags.
   (merge 08450ef791 cc/upload-pack-v2-fetch-fix later to maint).

 * "git bisect replay" had trouble with input files when they used
   CRLF line ending, which has been corrected.
   (merge 6c722cbe5a cw/bisect-replay-with-dos later to maint).

 * "rebase -i" segfaulted when rearranging a sequence that has a
   fix-up that applies another fix-up (which may or may not be a
   fix-up of yet another step).
   (merge 02471e7e20 js/rebase-autosquash-double-fixup-fix later to maint).

 * "git fsck" ensures that the paths recorded in tree objects are
   sorted and without duplicates, but it failed to notice a case where
   a blob is followed by entries that sort before a tree with the same
   name.  This has been corrected.
   (merge 9068cfb20f rs/fsck-duplicate-names-in-trees later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 564956f358 jc/maintain-doc later to maint).
   (merge 7422b2a0a1 sg/commit-slab-clarify-peek later to maint).
   (merge 9c688735f6 rs/doc-passthru-fetch-options later to maint).
   (merge 757c2ba3e2 en/oidset-uninclude-hashmap later to maint).
   (merge 8312aa7d74 jc/config-tar later to maint).
   (merge d00a5bdd50 ss/submodule-foreach-cb later to maint).
   (merge 64d1022e14 ar/test-style-fixes later to maint).
   (merge 4a465443a6 ds/doc-clone-filter later to maint).
   (merge bb2dbe301b jk/t3419-drop-expensive-tests later to maint).
   (merge d3507cc712 js/test-junit-finalization-fix later to maint).
   (merge 2149b6748f bc/faq later to maint).
   (merge 12dc0879f1 jk/test-cleanup later to maint).
   (merge 344420bf0f pb/rebase-doc-typofix later to maint).
   (merge 7cd54d37dc dl/wrapper-fix-indentation later to maint).
   (merge 78725ebda9 jc/allow-strlen-substitution-in-shell-scripts later to maint).
   (merge 2ecfcdecc6 jm/gitweb-fastcgi-utf8 later to maint).
   (merge 0740d0a5d3 jk/oid-array-cleanups later to maint).
   (merge a1aba0c95c js/t0007-typofix later to maint).
   (merge 76ba7fa225 ma/config-doc-fix later to maint).
   (merge 826f0c0df2 js/subtree-doc-update-to-asciidoctor-2 later to maint).
   (merge 88eaf361e0 eb/mboxrd-doc later to maint).
   (merge 051cc54941 tm/zsh-complete-switch-restore later to maint).
   (merge 39102cf4fe ms/doc-revision-illustration-fix later to maint).
   (merge 4d9378bfad eb/gitweb-more-trailers later to maint).
   (merge bdccbf7047 mt/doc-worktree-ref later to maint).
   (merge ce9baf234f dl/push-recurse-submodules-fix later to maint).
   (merge 4153274052 bc/doc-credential-helper-value later to maint).
   (merge 5c7bb0146e jc/codingstyle-compare-with-null later to maint).

----------------------------------------------------------------

Changes since v2.26.0 are as follows:

Alban Gruin (3):
      sequencer: mark messages for translation
      sequencer: don't abbreviate a command if it doesn't have a short form
      t3432: test `--merge' with `rebase.abbreviateCommands = true', too

Alex Henrie (1):
      pull: warn if the user didn't say whether to rebase or to merge

Alexandr Miloslavskiy (4):
      set_git_dir: fix crash when used with real_path()
      real_path: remove unsafe API
      real_path_if_valid(): remove unsafe API
      get_superproject_working_tree(): return strbuf

Andras Kucsma (1):
      run-command: trigger PATH lookup properly on Cygwin

Andrei Rybak (2):
      t9500: remove spaces after redirect operators
      t: fix whitespace around &&

Andrew Oakley (1):
      git-p4: recover from inconsistent perforce history

Ash Holland (1):
      userdiff: support Markdown

Ben Keene (8):
      git-p4: change the expansion test from basestring to list
      git-p4: rewrite prompt to be Windows compatible
      git-p4: create new function run_git_hook
      git-p4: add p4-pre-submit exit text
      git-p4: add --no-verify option
      git-p4: restructure code in submit
      git-p4: add p4 submit hooks
      git-p4: add RCS keyword status message

Carlo Marcelo Arenas Belón (8):
      credential-store: ignore bogus lines from store file
      credential: update description for credential_from_url_gently
      credential: correct order of parameters for credential_match
      builtin/receive-pack: avoid generic function name hmac()
      t/t0000-basic: make sure subtests also use TEST_SHELL_PATH
      t/test_lib: avoid naked bash arrays in file_lineno
      credential: update gitcredentials documentation
      credential: document protocol updates

Christian Couder (1):
      upload-pack: clear filter_options for each v2 fetch command

Christopher Warrington (1):
      bisect: allow CRLF line endings in "git bisect replay" input

Damien Robert (6):
      midx.c: fix an integer underflow
      doc: list all commands affected by submodule.recurse
      doc: document --recurse-submodules for reset and restore
      doc: explain how to deactivate submodule.recurse completely
      doc: be more precise on (fetch|push).recurseSubmodules
      doc: --recurse-submodules mostly applies to active submodules

Denton Liu (45):
      Makefile: ASCII-sort += lists
      t7600: use test_write_lines()
      Lib-ify fmt-merge-msg
      Lib-ify prune-packed
      t5512: don't use `test_must_fail test_cmp`
      t5512: stop losing git exit code in here-docs
      t5512: stop losing return codes of git commands
      t5550: simplify no matching line check
      t5607: reorder `nongit test_must_fail`
      t5612: don't use `test_must_fail test_cmp`
      t5612: stop losing return codes of git commands
      t5801: teach compare_refs() to accept !
      wrapper: indent with tabs
      sequencer: stop leaking buf
      sequencer: make file exists check more efficient
      sequencer: make read_oneliner() accept flags
      sequencer: configurably warn on non-existent files
      sequencer: make read_oneliner() extern
      rebase: use read_oneliner()
      sequencer: make apply_autostash() accept a path
      sequencer: rename stash_sha1 to stash_oid
      rebase: use apply_autostash() from sequencer.c
      rebase: generify reset_head()
      reset: extract reset_head() from rebase
      rebase: extract create_autostash()
      rebase: generify create_autostash()
      sequencer: extract perform_autostash() from rebase
      sequencer: unlink autostash in apply_autostash()
      sequencer: implement save_autostash()
      sequencer: implement apply_autostash_oid()
      merge: teach --autostash option
      t5520: make test_pull_autostash() accept expect_parent_num
      pull: pass --autostash to merge
      t6030: use test_path_is_missing()
      t7408: replace incorrect uses of test_must_fail
      t7508: don't use `test_must_fail test_cmp`
      t9141: use test_path_is_missing()
      t9160: use test_path_is_missing()
      t9164: use test_must_fail only on git commands
      t9819: don't use test_must_fail with p4
      Use OPT_CALLBACK and OPT_CALLBACK_F
      push: unset PARSE_OPT_OPTARG for --recurse-submodules
      rebase: save autostash entry into stash reflog on --quit
      switch: fix errors and comments related to -c and -C
      Doc: reference the "stash list" in autostash docs

Derrick Stolee (25):
      connected.c: reprepare packs for corner cases
      config: set pack.useSparse=true by default
      pack-objects: flip the use of GIT_TEST_PACK_SPARSE
      clone: document --filter options
      diff: halt tree-diff early after max_changes
      dir: refactor treat_directory to clarify control flow
      commit-graph: fix buggy --expire-time option
      t5319: replace 'touch -m' with 'test-tool chmtime'
      bloom: ignore renames when computing changed paths
      revision: --show-pulls adds helpful merges
      log-tree: make ref_filter_match() a helper method
      log: add log.excludeDecoration config option
      revision: complicated pathspecs disable filters
      tests: write commit-graph with Bloom filters
      blame: use changed-path Bloom filters
      multi-pack-index: close file descriptor after mmap
      bloom: fix whitespace around tab length
      test-bloom: fix usage typo
      sparse-checkout: stop blocking empty workdirs
      unpack-trees: avoid array out-of-bounds error
      multi-pack-index: respect repack.packKeptObjects=false
      bloom: parse commit before computing filters
      Documentation: changed-path Bloom filters use byte words
      bloom: de-duplicate directory entries
      bloom: use num_changes not nr for limit detection

Elijah Newren (37):
      oidset: remove unnecessary include
      unpack-trees: fix minor typo in comment
      unpack-trees: remove unused error type
      unpack-trees: simplify verify_absent_sparse()
      unpack-trees: simplify pattern_list freeing
      t1091: make some tests a little more defensive against failures
      unpack-trees: allow check_updates() to work on a different index
      unpack-trees: do not mark a dirty path with SKIP_WORKTREE
      unpack-trees: pull sparse-checkout pattern reading into a new function
      unpack-trees: add a new update_sparsity() function
      sparse-checkout: use new update_sparsity() function
      sparse-checkout: use improved unpack_trees porcelain messages
      unpack-trees: move ERROR_WOULD_LOSE_SUBMODULE earlier
      unpack-trees: rename ERROR_* fields meant for warnings to WARNING_*
      unpack-trees: split display_error_msgs() into two
      unpack-trees: make sparse path messages sound like warnings
      unpack-trees: provide warnings on sparse updates for unmerged paths too
      unpack-trees: failure to set SKIP_WORKTREE bits always just a warning
      sparse-checkout: provide a new reapply subcommand
      pull: avoid running both merge and rebase
      t7063: more thorough status checking
      t3000: add more testcases testing a variety of ls-files issues
      dir: fix simple typo in comment
      dir: consolidate treat_path() and treat_one_path()
      dir: fix broken comment
      dir: fix confusion based on variable tense
      dir: replace exponential algorithm with a linear one
      dir: include DIR_KEEP_UNTRACKED_CONTENTS handling in treat_directory()
      dir: replace double pathspec matching with single in treat_directory()
      Fix error-prone fill_directory() API; make it only return matches
      completion: fix 'git add' on paths under an untracked directory
      git-rebase.txt: add another hook to the hooks section, and explain more
      sequencer: honor GIT_REFLOG_ACTION
      rebase -i: mark commits that begin empty in todo editor
      rebase: reinstate --no-keep-empty
      rebase: fix an incompatible-options error message
      rebase: display an error if --root and --fork-point are both provided

Emily Shaffer (8):
      help: move list_config_help to builtin/help
      bugreport: add tool to generate debugging info
      bugreport: gather git version and build info
      bugreport: add uname info
      bugreport: add compiler info
      bugreport: drop extraneous includes
      bugreport: collect list of populated hooks
      trace2: log progress time and throughput

Emma Brooks (3):
      format-patch: teach --no-encode-email-headers
      Documentation: explain "mboxrd" pretty format
      gitweb: Recognize *-to and Closes/Fixes trailers

Eric Sunshine (1):
      restore: default to HEAD when combining --staged and --worktree

Garima Singh (13):
      commit-graph: define and use MAX_NUM_CHUNKS
      bloom.c: add the murmur3 hash implementation
      bloom.c: introduce core Bloom filter constructs
      bloom.c: core Bloom filter implementation for changed paths.
      commit-graph: compute Bloom filters for changed paths
      commit-graph: examine commits by generation number
      commit-graph: write Bloom filters to commit graph file
      commit-graph: reuse existing Bloom filters during write
      commit-graph: add --changed-paths option to write subcommand
      revision.c: use Bloom filters to speed up path based revision walks
      revision.c: add trace2 stats around Bloom filter usage
      t4216: add end to end tests for git log with Bloom filters
      commit-graph: add GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS test flag

Hans Jerry Illikainen (2):
      t: increase test coverage of signature verification output
      gpg-interface: prefer check_signature() for GPG verification

Heba Waly (4):
      advice: extract vadvise() from advise()
      advice: change "setupStreamFailure" to "setUpstreamFailure"
      advice: revamp advise API
      tag: use new advice API to check visibility

Jeff King (51):
      credential: avoid writing values with newlines
      t/lib-credential: use test_i18ncmp to check stderr
      credential: detect unrepresentable values when parsing urls
      fsck: detect gitmodules URLs with embedded newlines
      t3419: drop EXPENSIVE tests
      t/lib-credential.sh: drop shebang line
      t/lib-*.sh: drop executable bit
      test-lib-functions: make packetize() more efficient
      upload-pack: handle unexpected delim packets
      p5310: stop timing non-bitmap pack-to-disk
      Makefile: avoid running curl-config multiple times
      Makefile: use curl-config --cflags
      test-lib-functions: simplify packetize() stdin code
      commit-graph: examine changed-path objects in pack order
      oid_array: use size_t for count and allocation
      oid_array: use size_t for iteration
      oid_array: rename source file from sha1-array
      test-tool: rename sha1-array to oid-array
      bisect: stop referring to sha1_array
      ref-filter: stop referring to "sha1 array"
      oidset: stop referring to sha1-array
      clone: use "quick" lookup while following tags
      Makefile: avoid running curl-config unnecessarily
      fast-import: replace custom hash with hashmap.c
      repository: mark the "refs" pointer as private
      remote: drop auto-strlen behavior of make_branch() and make_rewrite()
      parse_config_key(): return subsection len as size_t
      config: drop useless length variable in write_pair()
      git_config_parse_key(): return baselen as size_t
      config: use size_t to store parsed variable baselen
      config: reject parsing of files over INT_MAX
      credential: treat "?" and "#" in URLs as end of host
      t0300: make "quit" helper more realistic
      t0300: use more realistic inputs
      credential: parse URL without host as empty host, not unset
      credential: refuse to operate when missing host or protocol
      credential: die() when parsing invalid urls
      Git 2.17.5
      blame: drop unused parameter from maybe_changed_path
      test-bloom: fix some whitespace issues
      test-bloom: check that we have expected arguments
      commit-graph: close descriptors after mmap
      t0000: disable GIT_TEST_FAIL_PREREQS in sub-tests
      gitcredentials(7): clarify quoting of helper examples
      gitcredentials(7): make shell-snippet example more realistic
      CodingGuidelines: drop arithmetic expansion advice to use "$x"
      ref-filter: apply --ignore-case to all sorting keys
      ref-filter: apply fallback refname sort only after all user sorts
      list-objects-filter: treat NULL filter_options as "disabled"
      pack-bitmap: pass object filter to fill-in traversal
      ci: allow per-branch config for GitHub Actions

Jessica Clarke (1):
      config.mak.uname: Define FREAD_READS_DIRECTORIES for GNU/Hurd

Jiang Xin (5):
      send-pack: fix inconsistent porcelain output
      t5543: never report what we do not push
      send-pack: mark failure of atomic push properly
      transport-helper: mark failure for atomic push
      transport-helper: new method reject_atomic_push()

Johannes Schindelin (36):
      cherry-pick: add test for `--skip` advice in `git commit`
      tests(junit-xml): avoid invalid XML
      import-tars: ignore the global PAX header
      tests(gpg): allow the gpg-agent to start on Windows
      t/lib-gpg.sh: stop pretending to be a stand-alone script
      tests: do not let lazy prereqs inside `test_expect_*` turn off tracing
      tests: turn GPG, GPGSM and RFC1991 into lazy prereqs
      tests: increase the verbosity of the GPG-related prereqs
      MyFirstObjectWalk: remove unnecessary conditional statement
      t0007: fix a typo
      ci/lib: if CI type is unknown, show the environment variables
      ci/lib: allow running in GitHub Actions
      ci: fix the `jobname` of the `GETTEXT_POISON` job
      subtree: fix build with AsciiDoctor 2
      mingw: do not treat `COM0` as a reserved file name
      t3904: fix incorrect demonstration of a bug
      stash -p: (partially) fix bug concerning split hunks
      mingw: help debugging by optionally executing bash with strace
      interactive: refactor code asking the user for interactive input
      ci: run gem with sudo to install asciidoctor
      README: add a build badge for the GitHub Actions runs
      ci: retire the Azure Pipelines definition
      tests: when run in Bash, annotate test failures with file name/line number
      ci: add a problem matcher for GitHub Actions
      ci: let GitHub Actions upload failed tests' directories
      t: consolidate the `is_hidden` functions
      mingw: make test_path_is_hidden more robust
      t: restrict `is_hidden` to be called only on Windows
      credential: fix grammar
      credential: optionally allow partial URLs in credential_from_url_gently()
      credential: optionally allow partial URLs in credential_from_url_gently()
      credential: handle `credential.<partial-URL>.<key>` again
      macOS/brew: let the build find gettext headers/libraries/msgfmt
      push: anonymize URLs in error messages and warnings
      credential: handle `credential.<partial-URL>.<key>` again
      rebase --autosquash: fix a potential segfault

Jonathan Nieder (5):
      fsck: convert gitmodules url to URL passed to curl
      credential: treat URL without scheme as invalid
      credential: treat URL with empty scheme as invalid
      fsck: reject URL with empty host in .gitmodules
      Revert "fetch: default to protocol version 2"

Jonathan Tan (11):
      connected: always use partial clone optimization
      promisor-remote: accept 0 as oid_nr in function
      diff: make diff_populate_filespec_options struct
      diff: refactor object read
      diff: restrict when prefetching occurs
      rebase --merge: optionally skip upstreamed commits
      fetch-pack: return enum from process_acks()
      fetch-pack: in protocol v2, in_vain only after ACK
      fetch-pack: in protocol v2, reset in_vain upon ACK
      commit-graph: avoid memory leaks
      t5500: count objects through stderr, not trace

Jorge Lopez Silva (2):
      http: add client cert support for HTTPS proxies
      http: add environment variable support for HTTPS proxies

Josh Steadmon (1):
      trace2: teach Git to log environment variables

Julien Moutinho (1):
      gitweb: fix UTF-8 encoding when using CGI::Fast

Junio C Hamano (27):
      rebase: --fork-point regression fix
      describe: force long format for a name based on a mislocated tag
      update how-to-maintain-git
      parse-options: teach "git cmd -h" to show alias as alias
      clone: reorder --recursive/--recurse-submodules
      log: give --[no-]use-mailmap a more sensible synonym --[no-]mailmap
      Git 2.17.4
      separate tar.* config to its own source file
      The first batch post 2.26 cycle
      The second batch post 2.26 cycle
      t/README: suggest how to leave test early with failure
      CodingGuidelines: allow ${#posix} == strlen($posix)
      sha1-name: do not assume that the ref store is initialized
      receive-pack: compilation fix
      The third batch
      The fourth batch
      credential-store: document the file format a bit more
      Revert "commit-graph.c: introduce '--[no-]check-oids'"
      The fifth batch
      The sixth batch
      The seventh batch
      auto-gc: extract a reusable helper from "git fetch"
      auto-gc: pass --quiet down from am, commit, merge and rebase
      CodingGuidelines: do not ==/!= compare with 0 or '\0' or NULL
      The eighth batch
      The ninth batch
      Git 2.27-rc0

Li Xuejiang (1):
      git-submodule.sh: setup uninitialized variables

Martin Ågren (9):
      Doc: drop support for docbook-xsl before 1.71.1
      Doc: drop support for docbook-xsl before 1.72.0
      Doc: drop support for docbook-xsl before 1.73.0
      manpage-bold-literal.xsl: stop using git.docbook.backslash
      manpage-normal.xsl: fold in manpage-base.xsl
      INSTALL: drop support for docbook-xsl before 1.74
      user-manual.conf: don't specify [listingblock]
      config.txt: move closing "----" to cover entire listing
      merge: use skip_prefix to parse config key

Matheus Tavares (3):
      test-lib: allow short options to be bundled
      grep: follow conventions for printing paths w/ unusual chars
      config doc: fix reference to config.worktree info

Matthias Aßhauer (1):
      mingw: use modern strftime implementation if possible

Michael F. Schönitzer (1):
      docs: fix minor glitch in illustration

Nathan Sanders (1):
      mingw: cope with the Isilon network file system

Patrick Steinhardt (9):
      refs: fix segfault when aborting empty transaction
      git-update-ref.txt: add missing word
      strbuf: provide function to append whole lines
      update-ref: organize commands in an array
      update-ref: drop unused argument for `parse_refname`
      update-ref: pass end pointer instead of strbuf
      update-ref: move transaction handling into `update_refs_stdin()`
      update-ref: read commands in a line-wise fashion
      update-ref: implement interactive transaction handling

Philippe Blain (9):
      t7112: remove mention of KNOWN_FAILURE_SUBMODULE_RECURSIVE_NESTED
      t/lib-submodule-update: remove outdated test description
      t/lib-submodule-update: move a test to the right section
      unpack-trees: remove outdated description for verify_clean_submodule
      unpack-trees: check for missing submodule directory in merged_entry
      t/lib-submodule-update: add test removing nested submodules
      git-rebase.txt: fix typo
      pull doc: refer to a specific section in 'fetch' doc
      pull doc: correct outdated description of an example

Phillip Wood (6):
      t3404: use test_cmp_rev
      cherry-pick: check commit error messages
      sequencer: write CHERRY_PICK_HEAD for reword and edit
      commit: use enum value for multiple cherry-picks
      commit: encapsulate determine_whence() for sequencer
      commit: give correct advice for empty commit during a rebase

René Scharfe (4):
      pull: document more passthru options
      pull: remove --update-head-ok from documentation
      pull: pass documented fetch options on
      fsck: report non-consecutive duplicate names in trees

SZEDER Gábor (4):
      ci: use python3 in linux-gcc and osx-gcc and python2 elsewhere
      commit-slab: clarify slabname##_peek()'s return value
      ci: make MAKEFLAGS available inside the Docker container in the Linux32 job
      completion: offer '--(no-)patch' among 'git log' options

Shourya Shukla (4):
      submodule--helper.c: Rename 'cb_foreach' to 'foreach_cb'
      gitfaq: files in .gitignore are tracked
      gitfaq: fetching and pulling a repository
      submodule: port subcommand 'set-url' from shell to C

Son Luong Ngoc (1):
      midx: teach "git multi-pack-index repack" honor "git repack" configurations

Taylor Blau (24):
      t/helper/test-read-graph.c: support commit-graph chains
      builtin/commit-graph.c: support for '--split[=<strategy>]'
      builtin/commit-graph.c: introduce split strategy 'no-merge'
      builtin/commit-graph.c: introduce split strategy 'replace'
      oidset: introduce 'oidset_size'
      commit-graph.h: replace 'commit_hex' with 'commits'
      commit-graph.c: introduce '--[no-]check-oids'
      diff-tree.c: load notes machinery when required
      commit-graph.c: don't use discarded graph_name in error
      t/test-lib.sh: make ULIMIT_FILE_DESCRIPTORS available to tests
      commit-graph.c: gracefully handle file descriptor exhaustion
      t5537: use test_write_lines and indented heredocs for readability
      shallow.c: use '{commit,rollback}_shallow_file'
      tempfile.c: introduce 'create_tempfile_mode'
      lockfile.c: introduce 'hold_lock_file_for_update_mode'
      commit-graph.c: write non-split graphs as read-only
      commit-graph.c: ensure graph layers respect core.sharedRepository
      commit-graph.c: make 'commit-graph-chain's read-only
      commit: make 'commit_graft_pos' non-static
      shallow: extract a header file for shallow-related functions
      shallow.h: document '{commit,rollback}_shallow_file'
      shallow: use struct 'shallow_lock' for additional safety
      pack-bitmap.c: make object filtering functions generic
      pack-bitmap.c: support 'tree:0' filtering

Terry Moschou (1):
      complete: zsh: add missing sub cmd completion candidates

Thomas Gummerer (2):
      stash: get git_stash_config at the top level
      stash: remove the stash.useBuiltin setting

Vasil Dimov (2):
      range-diff: fix a crash in parsing git-log output
      range-diff: avoid negative string precision

Yang Zhao (12):
      git-p4: make python2.7 the oldest supported version
      git-p4: remove string type aliasing
      git-p4: encode/decode communication with p4 for python3
      git-p4: encode/decode communication with git for python3
      git-p4: convert path to unicode before processing them
      git-p4: open .gitp4-usercache.txt in text mode
      git-p4: use marshal format version 2 when sending to p4
      git-p4: fix freezing while waiting for fast-import progress
      git-p4: use functools.reduce instead of reduce
      git-p4: use dict.items() iteration for python3 compatibility
      git-p4: simplify regex pattern generation for parsing diff-tree
      git-p4: use python3's input() everywhere

brian m. carlson (34):
      builtin/pack-objects: make hash agnostic
      hash: implement and use a context cloning function
      hex: introduce parsing variants taking hash algorithms
      hex: add functions to parse hex object IDs in any algorithm
      repository: require a build flag to use SHA-256
      t: use hash-specific lookup tables to define test constants
      t6300: abstract away SHA-1-specific constants
      t6300: make hash algorithm independent
      t/helper/test-dump-split-index: initialize git repository
      t/helper: initialize repository if necessary
      t/helper: make repository tests hash independent
      setup: allow check_repository_format to read repository format
      builtin/init-db: allow specifying hash algorithm on command line
      builtin/init-db: add environment variable for new repo hash
      init-db: move writing repo version into a function
      worktree: allow repository version 1
      commit: use expected signature header for SHA-256
      fast-import: permit reading multiple marks files
      fast-import: add helper function for inserting mark object entries
      fast-import: make find_marks work on any mark set
      fast-import: add a generic function to iterate over marks
      fast-import: add options for rewriting submodules
      builtin/checkout: pass branch info down to checkout_worktree
      convert: permit passing additional metadata to filter processes
      convert: provide additional metadata to filters
      builtin/checkout: compute checkout metadata for checkouts
      builtin/clone: compute checkout metadata for clones
      builtin/rebase: compute checkout metadata for rebases
      builtin/reset: compute checkout metadata for reset
      t0021: test filter metadata for additional cases
      docs: add a FAQ
      builtin/receive-pack: use constant-time comparison for HMAC value
      credential: fix matching URLs with multiple levels in path
      docs: document credential.helper allowed values

luciano.rocha@booking.com (1):
      freshen_file(): use NULL `times' for implicit current-time

Đoàn Trần Công Danh (34):
      t4061: use POSIX compliant regex(7)
      test-lib-functions: test_cmp: eval $GIT_TEST_CMP
      t5003: drop the subshell in test_lazy_prereq
      t5003: skip conversion test if unzip -a is unavailable
      t5616: use rev-parse instead to get HEAD's object_id
      t7063: drop non-POSIX argument "-ls" from find(1)
      t4124: tweak test so that non-compliant diff(1) can also be used
      t5703: feed raw data into test-tool unpack-sideband
      rebase.c: honour --no-gpg-sign
      cherry-pick/revert: honour --no-gpg-sign in all case
      Documentation: document am --no-gpg-sign
      Documentation: reword commit --no-gpg-sign
      Documentation: merge commit-tree --[no-]gpg-sign
      Documentation: document merge option --no-gpg-sign
      ci/lib-docker: preserve required environment variables
      ci/linux32: parameterise command to switch arch
      ci: refactor docker runner script
      ci/linux32: libify install-dependencies step
      travis: build and test on Linux with musl libc and busybox
      ci/lib: set TERM environment variable if not exist
      ci: explicit install all required packages
      ci: configure GitHub Actions for CI/PR
      t4254: merge 2 steps of a single test
      mailinfo.c: avoid strlen on strings that can contains NUL
      mailinfo: disallow NUL character in mail's header
      date.c: s/is_date/set_date/
      date.c: validate and set time in a helper function
      date.c: skip fractional second part of ISO-8601
      date.c: allow compact version of ISO-8601 datetime
      test-parse-pathspec-file.c: s/0/NULL/ for pointer type
      compat/regex: move stdlib.h up in inclusion chain
      graph.c: limit linkage of internal variable
      progress.c: silence cgcc suggestion about internal linkage
      bloom: fix `make sparse` warning

마누엘 (1):
      interactive: explicitly `fflush` stdout before expecting input


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.27.0-rc0
@ 2020-05-14 23:27  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-05-14 23:27 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

An early preview release Git v2.27.0-rc0 is now available for
testing at the usual places.  It is comprised of 479 non-merge
commits since v2.26.0, contributed by 53 people, 16 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.27.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.26.0 are as follows.
Welcome to the Git development community!

  Andras Kucsma, Ash Holland, Christopher Warrington, Emma
  Brooks, Jessica Clarke, Jorge Lopez Silva, Julien Moutinho,
  Li Xuejiang, luciano.rocha@booking.com, Matthias Aßhauer,
  Michael F. Schönitzer, Nathan Sanders, Son Luong Ngoc, Terry
  Moschou, Vasil Dimov, and Yang Zhao.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  마누엘, Alban Gruin, Alexandr Miloslavskiy, Alex Henrie,
  Andrei Rybak, Andrew Oakley, Ben Keene, brian m. carlson,
  Carlo Marcelo Arenas Belón, Christian Couder, Damien Robert,
  Denton Liu, Derrick Stolee, Đoàn Trần Công Danh, Elijah
  Newren, Emily Shaffer, Eric Sunshine, Garima Singh, Hans Jerry
  Illikainen, Heba Waly, Jeff King, Jiang Xin, Johannes Schindelin,
  Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio C Hamano,
  Martin Ågren, Matheus Tavares, Patrick Steinhardt, Philippe
  Blain, Phillip Wood, René Scharfe, Shourya Shukla, SZEDER
  Gábor, Taylor Blau, and Thomas Gummerer.

----------------------------------------------------------------

Git 2.27 Release Notes (draft)
==============================

Updates since v2.26
-------------------

Backward compatibility notes

 * When "git describe C" finds that commit C is pointed by a signed or
   annotated tag, which records T as its tagname in the object, the
   command gives T as its answer.  Even if the user renames or moves
   such a tag from its natural location in the "refs/tags/" hierarchy,
   "git describe C" would still give T as the answer, but in such a
   case "git show T^0" would no longer work as expected.  There may be
   nothing at "refs/tags/T" or even worse there may be a different tag
   instead.

   Starting from this version, "git describe" will always use the
   "long" version, as if the "--long" option were given, when giving
   its output based on such a misplaced tag to work around the problem.

 * "git pull" issues a warning message until the pull.rebase
   configuration variable is explicitly given, which some existing
   users may find annoying---those who prefer not to rebase need to
   set the variable to false to squelch the warning.


UI, Workflows & Features

 * A handful of options to configure SSL when talking to proxies have
   been added.

 * Smudge/clean conversion filters are now given more information
   (e.g. the object of the tree-ish in which the blob being converted
   appears, in addition to its path, which has already been given).

 * When "git describe C" finds an annotated tag with tagname A to be
   the best name to explain commit C, and the tag is stored in a
   "wrong" place in the refs/tags hierarchy, e.g. refs/tags/B, the
   command gave a warning message but used A (not B) to describe C.
   If C is exactly at the tag, the describe output would be "A", but
   "git rev-parse A^0" would not be equal as "git rev-parse C^0".  The
   behavior of the command has been changed to use the "long" form
   i.e. A-0-gOBJECTNAME, which is correctly interpreted by rev-parse.

 * "git pull" learned to warn when no pull.rebase configuration
   exists, and neither --[no-]rebase nor --ff-only is given (which
   would result a merge).

 * "git p4" learned four new hooks and also "--no-verify" option to
   bypass them (and the existing "p4-pre-submit" hook).

 * "git pull" shares many options with underlying "git fetch", but
   some of them were not documented and some of those that would make
   sense to pass down were not passed down.

 * "git rebase" learned the "--no-gpg-sign" option to countermand
   commit.gpgSign the user may have.

 * The output from "git format-patch" uses RFC 2047 encoding for
   non-ASCII letters on From: and Subject: headers, so that it can
   directly be fed to e-mail programs.  A new option has been added
   to produce these headers in raw.

 * "git log" learned "--show-pulls" that helps pathspec limited
   history views; a merge commit that takes the whole change from a
   side branch, which is normally omitted from the output, is shown
   in addition to the commits that introduce real changes.

 * The interactive input from various codepaths are consolidated and
   any prompt possibly issued earlier are fflush()ed before we read.

 * Allow "git rebase" to reapply all local commits, even if the may be
   already in the upstream, without checking first.

 * The 'pack.useSparse' configuration variable now defaults to 'true',
   enabling an optimization that has been experimental since Git 2.21.

 * "git rebase" happens to call some hooks meant for "checkout" and
   "commit" by this was not a designed behaviour than historical
   accident.  This has been documented.

 * "git merge" learns the "--autostash" option.

 * "sparse-checkout" UI improvements.

 * "git update-ref --stdin" learned a handful of new verbs to let the
   user control ref update transactions more explicitly, which helps
   as an ingredient to implement two-phase commit-style atomic
   ref-updates across multiple repositories.

 * "git commit-graph write" learned different ways to write out split
   files.

 * Introduce an extension to the commit-graph to make it efficient to
   check for the paths that were modified at each commit using Bloom
   filters.

 * The approxidate parser learns to parse seconds with fraction and
   ignore fractional part.

 * The userdiff patterns for Markdown documents have been added.

 * The sparse-checkout patterns have been forbidden from excluding all
   paths, leaving an empty working tree, for a long time.  This
   limitation has been lifted.

 * "git restore --staged --worktree" now defaults to take the contents
   out of "HEAD", instead of erring out.

 * "git p4" learned to recover from a (broken) state where a directory
   and a file are recorded at the same path in the Perforce repository
   the same way as their clients do.

 * "git multi-pack-index repack" has been taught to honor some
   repack.* configuration variables.


Performance, Internal Implementation, Development Support etc.

 * The advise API has been revamped to allow more systematic enumeration of
   advice knobs in the future.

 * SHA-256 transition continues.

 * The code to interface with GnuPG has been refactored.

 * "git stash" has kept an escape hatch to use the scripted version
   for a few releases, which got stale.  It has been removed.

 * Enable tests that require GnuPG on Windows.

 * Minor test usability improvement.

 * Trace2 enhancement to allow logging of the environment variables.

 * Test clean-up continues.

 * Perf-test update.

 * A Windows-specific test element has been made more robust against
   misuse from both user's environment and programmer's errors.

 * Various tests have been updated to work around issues found with
   shell utilities that come with busybox etc.

 * The config API made mixed uses of int and size_t types to represent
   length of various pieces of text it parsed, which has been updated
   to use the correct type (i.e. size_t) throughout.

 * The "--decorate-refs" and "--decorate-refs-exclude" options "git
   log" takes have learned a companion configuration variable
   log.excludeDecoration that sits at the lowest priority in the
   family.

 * A new CI job to build and run test suite on linux with musl libc
   has been added.

 * Update the CI configuration to use GitHub Actions, retiring the one
   based on Azure Pipelines.

 * The directory traversal code had redundant recursive calls which
   made its performance characteristics exponential with respect to
   the depth of the tree, which was corrected.

 * "git blame" learns to take advantage of the "changed-paths" Bloom
   filter stored in the commit-graph file.

 * The "bugreport" tool has been added.

 * The object walk with object filter "--filter=tree:0" can now take
   advantage of the pack bitmap when available.

 * Instead of always building all branches at GitHub via Actions,
   users can specify which branches to build.

 * Codepaths that show progress meter have been taught to also use the
   start_progress() and the stop_progress() calls as a "region" to be
   traced.


Fixes since v2.26
-----------------

 * The real_path() convenience function can easily be misused; with a
   bit of code refactoring in the callers' side, its use has been
   eliminated.
   (merge 49d3c4b481 am/real-path-fix later to maint).

 * Update "git p4" to work with Python 3.
   (merge 6bb40ed20a yz/p4-py3 later to maint).

 * The mechanism to prevent "git commit" from making an empty commit
   or amending during an interrupted cherry-pick was broken during the
   rewrite of "git rebase" in C, which has been corrected.
   (merge 430b75f720 pw/advise-rebase-skip later to maint).

 * Fix "git checkout --recurse-submodules" of a nested submodule
   hierarchy.
   (merge 846f34d351 pb/recurse-submodules-fix later to maint).

 * The "--fork-point" mode of "git rebase" regressed when the command
   was rewritten in C back in 2.20 era, which has been corrected.
   (merge f08132f889 at/rebase-fork-point-regression-fix later to maint).

 * The import-tars importer (in contrib/fast-import/) used to create
   phony files at the top-level of the repository when the archive
   contains global PAX headers, which made its own logic to detect and
   omit the common leading directory ineffective, which has been
   corrected.
   (merge c839fcff65 js/import-tars-do-not-make-phony-files-from-pax-headers later to maint).

 * Simplify the commit ancestry connectedness check in a partial clone
   repository in which "promised" objects are assumed to be obtainable
   lazily on-demand from promisor remote repositories.
   (merge 2b98478c6f jt/connectivity-check-optim-in-partial-clone later to maint).

 * The server-end of the v2 protocol to serve "git clone" and "git
   fetch" was not prepared to see a delim packets at unexpected
   places, which led to a crash.
   (merge cacae4329f jk/harden-protocol-v2-delim-handling later to maint).

 * When fed a midx that records no objects, some codepaths tried to
   loop from 0 through (num_objects-1), which, due to integer
   arithmetic wrapping around, made it nonsense operation with out of
   bounds array accesses.  The code has been corrected to reject such
   an midx file.
   (merge 796d61cdc0 dr/midx-avoid-int-underflow later to maint).

 * Utitiles run via the run_command() API were not spawned correctly
   on Cygwin, when the paths to them are given as a full path with
   backslashes.
   (merge 05ac8582bc ak/run-command-on-cygwin-fix later to maint).

 * "git pull --rebase" tried to run a rebase even after noticing that
   the pull results in a fast-forward and no rebase is needed nor
   sensible, for the past few years due to a mistake nobody noticed.
   (merge fbae70ddc6 en/pull-do-not-rebase-after-fast-forwarding later to maint).

 * "git rebase" with the merge backend did not work well when the
   rebase.abbreviateCommands configuration was set.
   (merge de9f1d3ef4 ag/rebase-merge-allow-ff-under-abbrev-command later to maint).

 * The logic to auto-follow tags by "git clone --single-branch" was
   not careful to avoid lazy-fetching unnecessary tags, which has been
   corrected.
   (merge 167a575e2d jk/use-quick-lookup-in-clone-for-tag-following later to maint).

 * "git rebase -i" did not leave the reflog entries correctly.
   (merge 1f6965f994 en/sequencer-reflog-action later to maint).

 * The more aggressive updates to remote-tracking branches we had for
   the past 7 years or so were not reflected in the documentation,
   which has been corrected.
   (merge a44088435c pb/pull-fetch-doc later to maint).

 * We've left the command line parsing of "git log :/a/b/" broken for
   about a full year without anybody noticing, which has been
   corrected.
   (merge 0220461071 jc/missing-ref-store-fix later to maint).

 * Misc fixes for Windows.
   (merge 3efc128cd5 js/mingw-fixes later to maint).

 * "git rebase" (again) learns to honor "--no-keep-empty", which lets
   the user to discard commits that are empty from the beginning (as
   opposed to the ones that become empty because of rebasing).  The
   interactive rebase also marks commits that are empty in the todo.
   (merge 50ed76148a en/rebase-no-keep-empty later to maint).

 * Parsing the host part out of URL for the credential helper has been corrected.
   (merge 4c5971e18a jk/credential-parsing-end-of-host-in-URL later to maint).

 * Document the recommended way to abort a failing test early (e.g. by
   exiting a loop), which is to say "return 1".
   (merge 7cc112dc95 jc/doc-test-leaving-early later to maint).

 * The code that refreshes the last access and modified time of
   on-disk packfiles and loose object files have been updated.
   (merge 312cd76130 lr/freshen-file-fix later to maint).

 * Validation of push certificate has been made more robust against
   timing attacks.
   (merge 719483e547 bc/constant-memequal later to maint).

 * The custom hash function used by "git fast-import" has been
   replaced with the one from hashmap.c, which gave us a nice
   performance boost.
   (merge d8410a816b jk/fast-import-use-hashmap later to maint).

 * The "git submodule" command did not initialize a few variables it
   internally uses and was affected by variable settings leaked from
   the environment.
   (merge 65d100c4dd lx/submodule-clear-variables later to maint).

 * Raise the minimum required version of docbook-xsl package to 1.74,
   as 1.74.0 was from late 2008, which is more than 10 years old, and
   drop compatibility cruft from our documentation suite.
   (merge 3c255ad660 ma/doc-discard-docbook-xsl-1.73 later to maint).

 * "git log" learns "--[no-]mailmap" as a synonym to "--[no-]use-mailmap"
   (merge 88acccda38 jc/log-no-mailmap later to maint).

 * "git commit-graph write --expire-time=<timestamp>" did not use the
   given timestamp correctly, which has been corrected.
   (merge b09b785c78 ds/commit-graph-expiry-fix later to maint).

 * Tests update to use "test-chmtime" instead of "touch -t".
   (merge e892a56845 ds/t5319-touch-fix later to maint).

 * "git diff" in a partial clone learned to avoid lazy loading blob
   objects in more casese when they are not needed.
   (merge 95acf11a3d jt/avoid-prefetch-when-able-in-diff later to maint).

 * "git push --atomic" used to show failures for refs that weren't
   even pushed, which has been corrected.
   (merge dfe1b7f19c jx/atomic-push later to maint).

 * Code in builtin/*, i.e. those can only be called from within
   built-in subcommands, that implements bulk of a couple of
   subcommands have been moved to libgit.a so that they could be used
   by others.
   (merge 9460fd48b5 dl/libify-a-few later to maint).

 * Allowing the user to split a patch hunk while "git stash -p" does
   not work well; a band-aid has been added to make this (partially)
   work better.

 * "git diff-tree --pretty --notes" used to hit an assertion failure,
   as it forgot to initialize the notes subsystem.
   (merge 5778b22b3d tb/diff-tree-with-notes later to maint).

 * "git range-diff" fixes.
   (merge 8d1675eb7f vd/range-diff-with-custom-pretty-format-fix later to maint).

 * "git grep" did not quote a path with unusual character like other
   commands (like "git diff", "git status") do, but did quote when run
   from a subdirectory, both of which has been corrected.
   (merge 45115d8490 mt/grep-cquote-path later to maint).

 * GNU/Hurd is also among the ones that need the fopen() wrapper.
   (merge 274a1328fb jc/gnu-hurd-lets-fread-read-dirs later to maint).

 * Those fetching over protocol v2 from linux-next and other kernel
   repositories are reporting that v2 often fetches way too much than
   needed.
   (merge 11c7f2a30b jn/demote-proto2-from-default later to maint).

 * The upload-pack protocol v2 gave up too early before finding a
   common ancestor, resulting in a wasteful fetch from a fork of a
   project.  This has been corrected to match the behaviour of v0
   protocol.
   (merge 2f0a093dd6 jt/v2-fetch-nego-fix later to maint).

 * The build procedure did not use the libcurl library and its include
   files correctly for a custom-built installation.
   (merge 0573831950 jk/build-with-right-curl later to maint).

 * Tighten "git mailinfo" to notice and error out when decoded result
   contains NUL in it.
   (merge 3919997447 dd/mailinfo-with-nul later to maint).

 * Fix in-core inconsistency after fetching into a shallow repository
   that broke the code to write out commit-graph.
   (merge 37b9dcabfc tb/reset-shallow later to maint).

 * The commit-graph code exhausted file descriptors easily when it
   does not have to.
   (merge c8828530b7 tb/commit-graph-fd-exhaustion-fix later to maint).

 * The multi-pack-index left mmapped file descriptors open when it
   does not have to.
   (merge 6c7ff7cf7f ds/multi-pack-index later to maint).

 * Recent update to Homebrew used by macOS folks breaks build by
   moving gettext library and necessary headers.
   (merge a0b3108618 ds/build-homebrew-gettext-fix later to maint).

 * Incompatible options "--root" and "--fork-point" of "git rebase"
   have been marked and documented as being incompatible.
   (merge a35413c378 en/rebase-root-and-fork-point-are-incompatible later to maint).

 * Error and verbose trace messages from "git push" did not redact
   credential material embedded in URLs.
   (merge d192fa5006 js/anonymise-push-url-in-errors later to maint).

 * Update the parser used for credential.<URL>.<variable>
   configuration, to handle <URL>s with '/' in them correctly.
   (merge b44d0118ac bc/wildcard-credential later to maint).

 * Recent updates broke parsing of "credential.<url>.<key>" where
   <url> is not a full URL (e.g. [credential "https://"] helper = ...)
   stopped working, which has been corrected.
   (merge 9a121b0d22 js/partial-urlmatch-2.17 later to maint).
   (merge cd93e6c029 js/partial-urlmatch later to maint).

 * Some of the files commit-graph subsystem keeps on disk did not
   correctly honor the core.sharedRepository settings and some were
   left read-write.

 * In error messages that "git switch" mentions its option to create a
   new branch, "-b/-B" options were shown, where "-c/-C" options
   should be, which has been corrected.
   (merge 7c16ef7577 dl/switch-c-option-in-error-message later to maint).

 * With the recent tightening of the code that is used to parse
   various parts of a URL for use in the credential subsystem, a
   hand-edited credential-store file causes the credential helper to
   die, which is a bit too harsh to the users.  Demote the error
   behaviour to just ignore and keep using well-formed lines instead.
   (merge c03859a665 cb/credential-store-ignore-bogus-lines later to maint).

 * The samples in the credential documentation has been updated to
   make it clear that we depict what would appear in the .git/config
   file, by adding appropriate quotes as needed..
   (merge 177681a07e jk/credential-sample-update later to maint).

 * "git branch" and other "for-each-ref" variants accepted multiple
   --sort=<key> options in the increasing order of precedence, but it
   had a few breakages around "--ignore-case" handling, and tie-breaking
   with the refname, which have been fixed.
   (merge 7c5045fc18 jk/for-each-ref-multi-key-sort-fix later to maint).

 * The coding guideline for shell scripts instructed to refer to a
   variable with dollar-sign inside arithmetic expansion to work
   around a bug in old versions of dash, which is a thing of the past.
   Now we are not forbidden from writing $((var+1)).
   (merge 32b5fe7f0e jk/arith-expansion-coding-guidelines later to maint).

 * The <stdlib.h> header on NetBSD brings in its own definition of
   hmac() function (eek), which conflicts with our own and unrelated
   function with the same name.  Our function has been renamed to work
   around the issue.
   (merge 3013118eb8 cb/avoid-colliding-with-netbsd-hmac later to maint).

 * The basic test did not honor $TEST_SHELL_PATH setting, which has
   been corrected.
   (merge 0555e4af58 cb/t0000-use-the-configured-shell later to maint).

 * Minor in-code comments and documentation updates around credential
   API.
   (merge 1aed817f99 cb/credential-doc-fixes later to maint).

 * Teach "am", "commit", "merge" and "rebase", when they are run with
   the "--quiet" option, to pass "--quiet" down to "gc --auto".
   (merge 7c3e9e8cfb jc/auto-gc-quiet later to maint).

 * The code to skip unmerged paths in the index when sparse checkout
   is in use would have made out-of-bound access of the in-core index
   when the last path was unmerged, which has been corrected.

 * Serving a "git fetch" client over "git://" and "ssh://" protocols
   using the on-wire protocol version 2 was buggy on the server end
   when the client needs to make a follow-up request to
   e.g. auto-follow tags.
   (merge 08450ef791 cc/upload-pack-v2-fetch-fix later to maint).

 * "git bisect replay" had trouble with input files when they used
   CRLF line ending, which has been corrected.
   (merge 6c722cbe5a cw/bisect-replay-with-dos later to maint).

 * "rebase -i" segfaulted when rearranging a sequence that has a
   fix-up that applies another fix-up (which may or may not be a
   fix-up of yet another step).
   (merge 02471e7e20 js/rebase-autosquash-double-fixup-fix later to maint).

 * "git fsck" ensures that the paths recorded in tree objects are
   sorted and without duplicates, but it failed to notice a case where
   a blob is followed by entries that sort before a tree with the same
   name.  This has been corrected.
   (merge 9068cfb20f rs/fsck-duplicate-names-in-trees later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 564956f358 jc/maintain-doc later to maint).
   (merge 7422b2a0a1 sg/commit-slab-clarify-peek later to maint).
   (merge 9c688735f6 rs/doc-passthru-fetch-options later to maint).
   (merge 757c2ba3e2 en/oidset-uninclude-hashmap later to maint).
   (merge 8312aa7d74 jc/config-tar later to maint).
   (merge d00a5bdd50 ss/submodule-foreach-cb later to maint).
   (merge 64d1022e14 ar/test-style-fixes later to maint).
   (merge 4a465443a6 ds/doc-clone-filter later to maint).
   (merge bb2dbe301b jk/t3419-drop-expensive-tests later to maint).
   (merge d3507cc712 js/test-junit-finalization-fix later to maint).
   (merge 2149b6748f bc/faq later to maint).
   (merge 12dc0879f1 jk/test-cleanup later to maint).
   (merge 344420bf0f pb/rebase-doc-typofix later to maint).
   (merge 7cd54d37dc dl/wrapper-fix-indentation later to maint).
   (merge 78725ebda9 jc/allow-strlen-substitution-in-shell-scripts later to maint).
   (merge 2ecfcdecc6 jm/gitweb-fastcgi-utf8 later to maint).
   (merge 0740d0a5d3 jk/oid-array-cleanups later to maint).
   (merge a1aba0c95c js/t0007-typofix later to maint).
   (merge 76ba7fa225 ma/config-doc-fix later to maint).
   (merge 826f0c0df2 js/subtree-doc-update-to-asciidoctor-2 later to maint).
   (merge 88eaf361e0 eb/mboxrd-doc later to maint).
   (merge 051cc54941 tm/zsh-complete-switch-restore later to maint).
   (merge 39102cf4fe ms/doc-revision-illustration-fix later to maint).
   (merge 4d9378bfad eb/gitweb-more-trailers later to maint).
   (merge bdccbf7047 mt/doc-worktree-ref later to maint).
   (merge ce9baf234f dl/push-recurse-submodules-fix later to maint).
   (merge 4153274052 bc/doc-credential-helper-value later to maint).
   (merge 5c7bb0146e jc/codingstyle-compare-with-null later to maint).

----------------------------------------------------------------

Changes since v2.26.0 are as follows:

Alban Gruin (3):
      sequencer: mark messages for translation
      sequencer: don't abbreviate a command if it doesn't have a short form
      t3432: test `--merge' with `rebase.abbreviateCommands = true', too

Alex Henrie (1):
      pull: warn if the user didn't say whether to rebase or to merge

Alexandr Miloslavskiy (4):
      set_git_dir: fix crash when used with real_path()
      real_path: remove unsafe API
      real_path_if_valid(): remove unsafe API
      get_superproject_working_tree(): return strbuf

Andras Kucsma (1):
      run-command: trigger PATH lookup properly on Cygwin

Andrei Rybak (2):
      t9500: remove spaces after redirect operators
      t: fix whitespace around &&

Andrew Oakley (1):
      git-p4: recover from inconsistent perforce history

Ash Holland (1):
      userdiff: support Markdown

Ben Keene (8):
      git-p4: change the expansion test from basestring to list
      git-p4: rewrite prompt to be Windows compatible
      git-p4: create new function run_git_hook
      git-p4: add p4-pre-submit exit text
      git-p4: add --no-verify option
      git-p4: restructure code in submit
      git-p4: add p4 submit hooks
      git-p4: add RCS keyword status message

Carlo Marcelo Arenas Belón (8):
      credential-store: ignore bogus lines from store file
      credential: update description for credential_from_url_gently
      credential: correct order of parameters for credential_match
      builtin/receive-pack: avoid generic function name hmac()
      t/t0000-basic: make sure subtests also use TEST_SHELL_PATH
      t/test_lib: avoid naked bash arrays in file_lineno
      credential: update gitcredentials documentation
      credential: document protocol updates

Christian Couder (1):
      upload-pack: clear filter_options for each v2 fetch command

Christopher Warrington (1):
      bisect: allow CRLF line endings in "git bisect replay" input

Damien Robert (6):
      midx.c: fix an integer underflow
      doc: list all commands affected by submodule.recurse
      doc: document --recurse-submodules for reset and restore
      doc: explain how to deactivate submodule.recurse completely
      doc: be more precise on (fetch|push).recurseSubmodules
      doc: --recurse-submodules mostly applies to active submodules

Denton Liu (45):
      Makefile: ASCII-sort += lists
      t7600: use test_write_lines()
      Lib-ify fmt-merge-msg
      Lib-ify prune-packed
      t5512: don't use `test_must_fail test_cmp`
      t5512: stop losing git exit code in here-docs
      t5512: stop losing return codes of git commands
      t5550: simplify no matching line check
      t5607: reorder `nongit test_must_fail`
      t5612: don't use `test_must_fail test_cmp`
      t5612: stop losing return codes of git commands
      t5801: teach compare_refs() to accept !
      wrapper: indent with tabs
      sequencer: stop leaking buf
      sequencer: make file exists check more efficient
      sequencer: make read_oneliner() accept flags
      sequencer: configurably warn on non-existent files
      sequencer: make read_oneliner() extern
      rebase: use read_oneliner()
      sequencer: make apply_autostash() accept a path
      sequencer: rename stash_sha1 to stash_oid
      rebase: use apply_autostash() from sequencer.c
      rebase: generify reset_head()
      reset: extract reset_head() from rebase
      rebase: extract create_autostash()
      rebase: generify create_autostash()
      sequencer: extract perform_autostash() from rebase
      sequencer: unlink autostash in apply_autostash()
      sequencer: implement save_autostash()
      sequencer: implement apply_autostash_oid()
      merge: teach --autostash option
      t5520: make test_pull_autostash() accept expect_parent_num
      pull: pass --autostash to merge
      t6030: use test_path_is_missing()
      t7408: replace incorrect uses of test_must_fail
      t7508: don't use `test_must_fail test_cmp`
      t9141: use test_path_is_missing()
      t9160: use test_path_is_missing()
      t9164: use test_must_fail only on git commands
      t9819: don't use test_must_fail with p4
      Use OPT_CALLBACK and OPT_CALLBACK_F
      push: unset PARSE_OPT_OPTARG for --recurse-submodules
      rebase: save autostash entry into stash reflog on --quit
      switch: fix errors and comments related to -c and -C
      Doc: reference the "stash list" in autostash docs

Derrick Stolee (25):
      connected.c: reprepare packs for corner cases
      config: set pack.useSparse=true by default
      pack-objects: flip the use of GIT_TEST_PACK_SPARSE
      clone: document --filter options
      diff: halt tree-diff early after max_changes
      dir: refactor treat_directory to clarify control flow
      commit-graph: fix buggy --expire-time option
      t5319: replace 'touch -m' with 'test-tool chmtime'
      bloom: ignore renames when computing changed paths
      revision: --show-pulls adds helpful merges
      log-tree: make ref_filter_match() a helper method
      log: add log.excludeDecoration config option
      revision: complicated pathspecs disable filters
      tests: write commit-graph with Bloom filters
      blame: use changed-path Bloom filters
      multi-pack-index: close file descriptor after mmap
      bloom: fix whitespace around tab length
      test-bloom: fix usage typo
      sparse-checkout: stop blocking empty workdirs
      unpack-trees: avoid array out-of-bounds error
      multi-pack-index: respect repack.packKeptObjects=false
      bloom: parse commit before computing filters
      Documentation: changed-path Bloom filters use byte words
      bloom: de-duplicate directory entries
      bloom: use num_changes not nr for limit detection

Elijah Newren (37):
      oidset: remove unnecessary include
      unpack-trees: fix minor typo in comment
      unpack-trees: remove unused error type
      unpack-trees: simplify verify_absent_sparse()
      unpack-trees: simplify pattern_list freeing
      t1091: make some tests a little more defensive against failures
      unpack-trees: allow check_updates() to work on a different index
      unpack-trees: do not mark a dirty path with SKIP_WORKTREE
      unpack-trees: pull sparse-checkout pattern reading into a new function
      unpack-trees: add a new update_sparsity() function
      sparse-checkout: use new update_sparsity() function
      sparse-checkout: use improved unpack_trees porcelain messages
      unpack-trees: move ERROR_WOULD_LOSE_SUBMODULE earlier
      unpack-trees: rename ERROR_* fields meant for warnings to WARNING_*
      unpack-trees: split display_error_msgs() into two
      unpack-trees: make sparse path messages sound like warnings
      unpack-trees: provide warnings on sparse updates for unmerged paths too
      unpack-trees: failure to set SKIP_WORKTREE bits always just a warning
      sparse-checkout: provide a new reapply subcommand
      pull: avoid running both merge and rebase
      t7063: more thorough status checking
      t3000: add more testcases testing a variety of ls-files issues
      dir: fix simple typo in comment
      dir: consolidate treat_path() and treat_one_path()
      dir: fix broken comment
      dir: fix confusion based on variable tense
      dir: replace exponential algorithm with a linear one
      dir: include DIR_KEEP_UNTRACKED_CONTENTS handling in treat_directory()
      dir: replace double pathspec matching with single in treat_directory()
      Fix error-prone fill_directory() API; make it only return matches
      completion: fix 'git add' on paths under an untracked directory
      git-rebase.txt: add another hook to the hooks section, and explain more
      sequencer: honor GIT_REFLOG_ACTION
      rebase -i: mark commits that begin empty in todo editor
      rebase: reinstate --no-keep-empty
      rebase: fix an incompatible-options error message
      rebase: display an error if --root and --fork-point are both provided

Emily Shaffer (8):
      help: move list_config_help to builtin/help
      bugreport: add tool to generate debugging info
      bugreport: gather git version and build info
      bugreport: add uname info
      bugreport: add compiler info
      bugreport: drop extraneous includes
      bugreport: collect list of populated hooks
      trace2: log progress time and throughput

Emma Brooks (3):
      format-patch: teach --no-encode-email-headers
      Documentation: explain "mboxrd" pretty format
      gitweb: Recognize *-to and Closes/Fixes trailers

Eric Sunshine (1):
      restore: default to HEAD when combining --staged and --worktree

Garima Singh (13):
      commit-graph: define and use MAX_NUM_CHUNKS
      bloom.c: add the murmur3 hash implementation
      bloom.c: introduce core Bloom filter constructs
      bloom.c: core Bloom filter implementation for changed paths.
      commit-graph: compute Bloom filters for changed paths
      commit-graph: examine commits by generation number
      commit-graph: write Bloom filters to commit graph file
      commit-graph: reuse existing Bloom filters during write
      commit-graph: add --changed-paths option to write subcommand
      revision.c: use Bloom filters to speed up path based revision walks
      revision.c: add trace2 stats around Bloom filter usage
      t4216: add end to end tests for git log with Bloom filters
      commit-graph: add GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS test flag

Hans Jerry Illikainen (2):
      t: increase test coverage of signature verification output
      gpg-interface: prefer check_signature() for GPG verification

Heba Waly (4):
      advice: extract vadvise() from advise()
      advice: change "setupStreamFailure" to "setUpstreamFailure"
      advice: revamp advise API
      tag: use new advice API to check visibility

Jeff King (51):
      credential: avoid writing values with newlines
      t/lib-credential: use test_i18ncmp to check stderr
      credential: detect unrepresentable values when parsing urls
      fsck: detect gitmodules URLs with embedded newlines
      t3419: drop EXPENSIVE tests
      t/lib-credential.sh: drop shebang line
      t/lib-*.sh: drop executable bit
      test-lib-functions: make packetize() more efficient
      upload-pack: handle unexpected delim packets
      p5310: stop timing non-bitmap pack-to-disk
      Makefile: avoid running curl-config multiple times
      Makefile: use curl-config --cflags
      test-lib-functions: simplify packetize() stdin code
      commit-graph: examine changed-path objects in pack order
      oid_array: use size_t for count and allocation
      oid_array: use size_t for iteration
      oid_array: rename source file from sha1-array
      test-tool: rename sha1-array to oid-array
      bisect: stop referring to sha1_array
      ref-filter: stop referring to "sha1 array"
      oidset: stop referring to sha1-array
      clone: use "quick" lookup while following tags
      Makefile: avoid running curl-config unnecessarily
      fast-import: replace custom hash with hashmap.c
      repository: mark the "refs" pointer as private
      remote: drop auto-strlen behavior of make_branch() and make_rewrite()
      parse_config_key(): return subsection len as size_t
      config: drop useless length variable in write_pair()
      git_config_parse_key(): return baselen as size_t
      config: use size_t to store parsed variable baselen
      config: reject parsing of files over INT_MAX
      credential: treat "?" and "#" in URLs as end of host
      t0300: make "quit" helper more realistic
      t0300: use more realistic inputs
      credential: parse URL without host as empty host, not unset
      credential: refuse to operate when missing host or protocol
      credential: die() when parsing invalid urls
      Git 2.17.5
      blame: drop unused parameter from maybe_changed_path
      test-bloom: fix some whitespace issues
      test-bloom: check that we have expected arguments
      commit-graph: close descriptors after mmap
      t0000: disable GIT_TEST_FAIL_PREREQS in sub-tests
      gitcredentials(7): clarify quoting of helper examples
      gitcredentials(7): make shell-snippet example more realistic
      CodingGuidelines: drop arithmetic expansion advice to use "$x"
      ref-filter: apply --ignore-case to all sorting keys
      ref-filter: apply fallback refname sort only after all user sorts
      list-objects-filter: treat NULL filter_options as "disabled"
      pack-bitmap: pass object filter to fill-in traversal
      ci: allow per-branch config for GitHub Actions

Jessica Clarke (1):
      config.mak.uname: Define FREAD_READS_DIRECTORIES for GNU/Hurd

Jiang Xin (5):
      send-pack: fix inconsistent porcelain output
      t5543: never report what we do not push
      send-pack: mark failure of atomic push properly
      transport-helper: mark failure for atomic push
      transport-helper: new method reject_atomic_push()

Johannes Schindelin (36):
      cherry-pick: add test for `--skip` advice in `git commit`
      tests(junit-xml): avoid invalid XML
      import-tars: ignore the global PAX header
      tests(gpg): allow the gpg-agent to start on Windows
      t/lib-gpg.sh: stop pretending to be a stand-alone script
      tests: do not let lazy prereqs inside `test_expect_*` turn off tracing
      tests: turn GPG, GPGSM and RFC1991 into lazy prereqs
      tests: increase the verbosity of the GPG-related prereqs
      MyFirstObjectWalk: remove unnecessary conditional statement
      t0007: fix a typo
      ci/lib: if CI type is unknown, show the environment variables
      ci/lib: allow running in GitHub Actions
      ci: fix the `jobname` of the `GETTEXT_POISON` job
      subtree: fix build with AsciiDoctor 2
      mingw: do not treat `COM0` as a reserved file name
      t3904: fix incorrect demonstration of a bug
      stash -p: (partially) fix bug concerning split hunks
      mingw: help debugging by optionally executing bash with strace
      interactive: refactor code asking the user for interactive input
      ci: run gem with sudo to install asciidoctor
      README: add a build badge for the GitHub Actions runs
      ci: retire the Azure Pipelines definition
      tests: when run in Bash, annotate test failures with file name/line number
      ci: add a problem matcher for GitHub Actions
      ci: let GitHub Actions upload failed tests' directories
      t: consolidate the `is_hidden` functions
      mingw: make test_path_is_hidden more robust
      t: restrict `is_hidden` to be called only on Windows
      credential: fix grammar
      credential: optionally allow partial URLs in credential_from_url_gently()
      credential: optionally allow partial URLs in credential_from_url_gently()
      credential: handle `credential.<partial-URL>.<key>` again
      macOS/brew: let the build find gettext headers/libraries/msgfmt
      push: anonymize URLs in error messages and warnings
      credential: handle `credential.<partial-URL>.<key>` again
      rebase --autosquash: fix a potential segfault

Jonathan Nieder (5):
      fsck: convert gitmodules url to URL passed to curl
      credential: treat URL without scheme as invalid
      credential: treat URL with empty scheme as invalid
      fsck: reject URL with empty host in .gitmodules
      Revert "fetch: default to protocol version 2"

Jonathan Tan (11):
      connected: always use partial clone optimization
      promisor-remote: accept 0 as oid_nr in function
      diff: make diff_populate_filespec_options struct
      diff: refactor object read
      diff: restrict when prefetching occurs
      rebase --merge: optionally skip upstreamed commits
      fetch-pack: return enum from process_acks()
      fetch-pack: in protocol v2, in_vain only after ACK
      fetch-pack: in protocol v2, reset in_vain upon ACK
      commit-graph: avoid memory leaks
      t5500: count objects through stderr, not trace

Jorge Lopez Silva (2):
      http: add client cert support for HTTPS proxies
      http: add environment variable support for HTTPS proxies

Josh Steadmon (1):
      trace2: teach Git to log environment variables

Julien Moutinho (1):
      gitweb: fix UTF-8 encoding when using CGI::Fast

Junio C Hamano (27):
      rebase: --fork-point regression fix
      describe: force long format for a name based on a mislocated tag
      update how-to-maintain-git
      parse-options: teach "git cmd -h" to show alias as alias
      clone: reorder --recursive/--recurse-submodules
      log: give --[no-]use-mailmap a more sensible synonym --[no-]mailmap
      Git 2.17.4
      separate tar.* config to its own source file
      The first batch post 2.26 cycle
      The second batch post 2.26 cycle
      t/README: suggest how to leave test early with failure
      CodingGuidelines: allow ${#posix} == strlen($posix)
      sha1-name: do not assume that the ref store is initialized
      receive-pack: compilation fix
      The third batch
      The fourth batch
      credential-store: document the file format a bit more
      Revert "commit-graph.c: introduce '--[no-]check-oids'"
      The fifth batch
      The sixth batch
      The seventh batch
      auto-gc: extract a reusable helper from "git fetch"
      auto-gc: pass --quiet down from am, commit, merge and rebase
      CodingGuidelines: do not ==/!= compare with 0 or '\0' or NULL
      The eighth batch
      The ninth batch
      Git 2.27-rc0

Li Xuejiang (1):
      git-submodule.sh: setup uninitialized variables

Martin Ågren (9):
      Doc: drop support for docbook-xsl before 1.71.1
      Doc: drop support for docbook-xsl before 1.72.0
      Doc: drop support for docbook-xsl before 1.73.0
      manpage-bold-literal.xsl: stop using git.docbook.backslash
      manpage-normal.xsl: fold in manpage-base.xsl
      INSTALL: drop support for docbook-xsl before 1.74
      user-manual.conf: don't specify [listingblock]
      config.txt: move closing "----" to cover entire listing
      merge: use skip_prefix to parse config key

Matheus Tavares (3):
      test-lib: allow short options to be bundled
      grep: follow conventions for printing paths w/ unusual chars
      config doc: fix reference to config.worktree info

Matthias Aßhauer (1):
      mingw: use modern strftime implementation if possible

Michael F. Schönitzer (1):
      docs: fix minor glitch in illustration

Nathan Sanders (1):
      mingw: cope with the Isilon network file system

Patrick Steinhardt (9):
      refs: fix segfault when aborting empty transaction
      git-update-ref.txt: add missing word
      strbuf: provide function to append whole lines
      update-ref: organize commands in an array
      update-ref: drop unused argument for `parse_refname`
      update-ref: pass end pointer instead of strbuf
      update-ref: move transaction handling into `update_refs_stdin()`
      update-ref: read commands in a line-wise fashion
      update-ref: implement interactive transaction handling

Philippe Blain (9):
      t7112: remove mention of KNOWN_FAILURE_SUBMODULE_RECURSIVE_NESTED
      t/lib-submodule-update: remove outdated test description
      t/lib-submodule-update: move a test to the right section
      unpack-trees: remove outdated description for verify_clean_submodule
      unpack-trees: check for missing submodule directory in merged_entry
      t/lib-submodule-update: add test removing nested submodules
      git-rebase.txt: fix typo
      pull doc: refer to a specific section in 'fetch' doc
      pull doc: correct outdated description of an example

Phillip Wood (6):
      t3404: use test_cmp_rev
      cherry-pick: check commit error messages
      sequencer: write CHERRY_PICK_HEAD for reword and edit
      commit: use enum value for multiple cherry-picks
      commit: encapsulate determine_whence() for sequencer
      commit: give correct advice for empty commit during a rebase

René Scharfe (4):
      pull: document more passthru options
      pull: remove --update-head-ok from documentation
      pull: pass documented fetch options on
      fsck: report non-consecutive duplicate names in trees

SZEDER Gábor (4):
      ci: use python3 in linux-gcc and osx-gcc and python2 elsewhere
      commit-slab: clarify slabname##_peek()'s return value
      ci: make MAKEFLAGS available inside the Docker container in the Linux32 job
      completion: offer '--(no-)patch' among 'git log' options

Shourya Shukla (4):
      submodule--helper.c: Rename 'cb_foreach' to 'foreach_cb'
      gitfaq: files in .gitignore are tracked
      gitfaq: fetching and pulling a repository
      submodule: port subcommand 'set-url' from shell to C

Son Luong Ngoc (1):
      midx: teach "git multi-pack-index repack" honor "git repack" configurations

Taylor Blau (24):
      t/helper/test-read-graph.c: support commit-graph chains
      builtin/commit-graph.c: support for '--split[=<strategy>]'
      builtin/commit-graph.c: introduce split strategy 'no-merge'
      builtin/commit-graph.c: introduce split strategy 'replace'
      oidset: introduce 'oidset_size'
      commit-graph.h: replace 'commit_hex' with 'commits'
      commit-graph.c: introduce '--[no-]check-oids'
      diff-tree.c: load notes machinery when required
      commit-graph.c: don't use discarded graph_name in error
      t/test-lib.sh: make ULIMIT_FILE_DESCRIPTORS available to tests
      commit-graph.c: gracefully handle file descriptor exhaustion
      t5537: use test_write_lines and indented heredocs for readability
      shallow.c: use '{commit,rollback}_shallow_file'
      tempfile.c: introduce 'create_tempfile_mode'
      lockfile.c: introduce 'hold_lock_file_for_update_mode'
      commit-graph.c: write non-split graphs as read-only
      commit-graph.c: ensure graph layers respect core.sharedRepository
      commit-graph.c: make 'commit-graph-chain's read-only
      commit: make 'commit_graft_pos' non-static
      shallow: extract a header file for shallow-related functions
      shallow.h: document '{commit,rollback}_shallow_file'
      shallow: use struct 'shallow_lock' for additional safety
      pack-bitmap.c: make object filtering functions generic
      pack-bitmap.c: support 'tree:0' filtering

Terry Moschou (1):
      complete: zsh: add missing sub cmd completion candidates

Thomas Gummerer (2):
      stash: get git_stash_config at the top level
      stash: remove the stash.useBuiltin setting

Vasil Dimov (2):
      range-diff: fix a crash in parsing git-log output
      range-diff: avoid negative string precision

Yang Zhao (12):
      git-p4: make python2.7 the oldest supported version
      git-p4: remove string type aliasing
      git-p4: encode/decode communication with p4 for python3
      git-p4: encode/decode communication with git for python3
      git-p4: convert path to unicode before processing them
      git-p4: open .gitp4-usercache.txt in text mode
      git-p4: use marshal format version 2 when sending to p4
      git-p4: fix freezing while waiting for fast-import progress
      git-p4: use functools.reduce instead of reduce
      git-p4: use dict.items() iteration for python3 compatibility
      git-p4: simplify regex pattern generation for parsing diff-tree
      git-p4: use python3's input() everywhere

brian m. carlson (34):
      builtin/pack-objects: make hash agnostic
      hash: implement and use a context cloning function
      hex: introduce parsing variants taking hash algorithms
      hex: add functions to parse hex object IDs in any algorithm
      repository: require a build flag to use SHA-256
      t: use hash-specific lookup tables to define test constants
      t6300: abstract away SHA-1-specific constants
      t6300: make hash algorithm independent
      t/helper/test-dump-split-index: initialize git repository
      t/helper: initialize repository if necessary
      t/helper: make repository tests hash independent
      setup: allow check_repository_format to read repository format
      builtin/init-db: allow specifying hash algorithm on command line
      builtin/init-db: add environment variable for new repo hash
      init-db: move writing repo version into a function
      worktree: allow repository version 1
      commit: use expected signature header for SHA-256
      fast-import: permit reading multiple marks files
      fast-import: add helper function for inserting mark object entries
      fast-import: make find_marks work on any mark set
      fast-import: add a generic function to iterate over marks
      fast-import: add options for rewriting submodules
      builtin/checkout: pass branch info down to checkout_worktree
      convert: permit passing additional metadata to filter processes
      convert: provide additional metadata to filters
      builtin/checkout: compute checkout metadata for checkouts
      builtin/clone: compute checkout metadata for clones
      builtin/rebase: compute checkout metadata for rebases
      builtin/reset: compute checkout metadata for reset
      t0021: test filter metadata for additional cases
      docs: add a FAQ
      builtin/receive-pack: use constant-time comparison for HMAC value
      credential: fix matching URLs with multiple levels in path
      docs: document credential.helper allowed values

luciano.rocha@booking.com (1):
      freshen_file(): use NULL `times' for implicit current-time

Đoàn Trần Công Danh (34):
      t4061: use POSIX compliant regex(7)
      test-lib-functions: test_cmp: eval $GIT_TEST_CMP
      t5003: drop the subshell in test_lazy_prereq
      t5003: skip conversion test if unzip -a is unavailable
      t5616: use rev-parse instead to get HEAD's object_id
      t7063: drop non-POSIX argument "-ls" from find(1)
      t4124: tweak test so that non-compliant diff(1) can also be used
      t5703: feed raw data into test-tool unpack-sideband
      rebase.c: honour --no-gpg-sign
      cherry-pick/revert: honour --no-gpg-sign in all case
      Documentation: document am --no-gpg-sign
      Documentation: reword commit --no-gpg-sign
      Documentation: merge commit-tree --[no-]gpg-sign
      Documentation: document merge option --no-gpg-sign
      ci/lib-docker: preserve required environment variables
      ci/linux32: parameterise command to switch arch
      ci: refactor docker runner script
      ci/linux32: libify install-dependencies step
      travis: build and test on Linux with musl libc and busybox
      ci/lib: set TERM environment variable if not exist
      ci: explicit install all required packages
      ci: configure GitHub Actions for CI/PR
      t4254: merge 2 steps of a single test
      mailinfo.c: avoid strlen on strings that can contains NUL
      mailinfo: disallow NUL character in mail's header
      date.c: s/is_date/set_date/
      date.c: validate and set time in a helper function
      date.c: skip fractional second part of ISO-8601
      date.c: allow compact version of ISO-8601 datetime
      test-parse-pathspec-file.c: s/0/NULL/ for pointer type
      compat/regex: move stdlib.h up in inclusion chain
      graph.c: limit linkage of internal variable
      progress.c: silence cgcc suggestion about internal linkage
      bloom: fix `make sparse` warning

마누엘 (1):
      interactive: explicitly `fflush` stdout before expecting input


^ permalink raw reply	[relevance 2%]

* [PATCH] Teach git-rev-list --simplify-forks
@ 2020-04-27  5:07  0% Antonio Russo
  0 siblings, 0 replies; 162+ results
From: Antonio Russo @ 2020-04-27  5:07 UTC (permalink / raw)
  To: git-ml; +Cc: Junio C Hamano, Michael Haggerty, Derrick Stolee

When used with --graph, instead of displaying the full graph, display a
spanning subgraph produced by a depth-first search of the graph visiting
parents from left to right.  Edges to already visited commits are
discarded.  This process is repeated for every commit to be displayed.

This is valuable to reduce visual clutter when there are many merges
that were not rebased onto each other and the user is primarily
interested in the state of the branch being merged into.

Also adds documentation and tests of the above.

Signed-off-by: Antonio Russo <antonio.e.russo@gmail.com>
---
 Documentation/rev-list-options.txt         |  8 +++
 revision.c                                 | 67 +++++++++++++++++++++-
 revision.h                                 |  6 ++
 t/t6016-rev-list-graph-simplify-history.sh | 50 ++++++++++++++++
 4 files changed, 130 insertions(+), 1 deletion(-)

Hello,

I'm trying to address a long-standing problem I've had visualizing complex
git repositories with git log --graph.  I think that a picture is worth a
thousand words, so I'll just show what the patch does for git master:

% git log --graph --abbrev-commit --pretty=oneline --simplify-forks e870325ee8

> * e870325ee8 (HEAD -> master, origin/master, origin/HEAD) The third batch
> *   a397e9c236 Merge branch 'jk/credential-parsing-end-of-host-in-URL'
> |\
> | * 4c5971e18a credential: treat "?" and "#" in URLs as end of host
> *   d6d561db1c Merge branch 'jt/rebase-allow-duplicate'
> |\
> | * 0fcb4f6b62 rebase --merge: optionally skip upstreamed commits
> *   c7d8f69da5 Merge branch 'en/rebase-no-keep-empty'
> |\
> | * 50ed76148a rebase: fix an incompatible-options error message
> | * b9cbd2958f rebase: reinstate --no-keep-empty
> | * 1b5735f75c rebase -i: mark commits that begin empty in todo editor
> *   8b39dfdf47 Merge branch 'js/mingw-is-hidden-test-fix'
> |\
> | * 176a66a748 t: restrict `is_hidden` to be called only on Windows
> | * 9814d0a4ad mingw: make test_path_is_hidden more robust
> | * 7c2dfca7e8 t: consolidate the `is_hidden` functions
> *   a41b41ca74 Merge branch 'js/mingw-isilon-nfs'
> |\
> | * 23eafd924a mingw: cope with the Isilon network file system
> *   33feaca6bf Merge branch 'js/flush-prompt-before-interative-input'
> |\
> | * 1f09aed834 interactive: explicitly `fflush` stdout before expecting input
> | * 08d383f23e interactive: refactor code asking the user for interactive input
> *   9af3a7cb4d Merge branch 'ds/revision-show-pulls'
> |\
> | * 8d049e182e revision: --show-pulls adds helpful merges
> *   82fa169d55 Merge branch 'ma/simplify-merge-config-parsing'
> |\
> | * 9881b451f3 merge: use skip_prefix to parse config key
> *   b3eb70e0f8 Merge branch 'js/mingw-fixes'

Compare this to before:

% git log --graph --abbrev-commit --pretty=oneline e870325ee8

> * e870325ee8 (HEAD -> master, origin/master, origin/HEAD) The third batch
> *   a397e9c236 Merge branch 'jk/credential-parsing-end-of-host-in-URL'
> |\
> | * 4c5971e18a credential: treat "?" and "#" in URLs as end of host
> * |   d6d561db1c Merge branch 'jt/rebase-allow-duplicate'
> |\ \
> | * | 0fcb4f6b62 rebase --merge: optionally skip upstreamed commits
> * | | c7d8f69da5 Merge branch 'en/rebase-no-keep-empty'
> |\| |
> | * | 50ed76148a rebase: fix an incompatible-options error message
> | * | b9cbd2958f rebase: reinstate --no-keep-empty
> | * | 1b5735f75c rebase -i: mark commits that begin empty in todo editor
> * | |   8b39dfdf47 Merge branch 'js/mingw-is-hidden-test-fix'
> |\ \ \
> | * | | 176a66a748 t: restrict `is_hidden` to be called only on Windows
> | * | | 9814d0a4ad mingw: make test_path_is_hidden more robust
> | * | | 7c2dfca7e8 t: consolidate the `is_hidden` functions
> * | | |   a41b41ca74 Merge branch 'js/mingw-isilon-nfs'
> |\ \ \ \
> | * | | | 23eafd924a mingw: cope with the Isilon network file system
> | |/ / /
> * | | |   33feaca6bf Merge branch 'js/flush-prompt-before-interative-input'
> |\ \ \ \
> | * | | | 1f09aed834 interactive: explicitly `fflush` stdout before expecting input
> | * | | | 08d383f23e interactive: refactor code asking the user for interactive input
> | |/ / /
> * | | |   9af3a7cb4d Merge branch 'ds/revision-show-pulls'
> |\ \ \ \
> | * | | | 8d049e182e revision: --show-pulls adds helpful merges
> | |/ / /
> * | | |   82fa169d55 Merge branch 'ma/simplify-merge-config-parsing'
> |\ \ \ \
> | * | | | 9881b451f3 merge: use skip_prefix to parse config key
> | |/ / /
> * | | |   b3eb70e0f8 Merge branch 'js/mingw-fixes'
> |\ \ \ \

Roughly, the tool produces a spanning tree by traversing the commit graph,
leftmost parents first. It forgets information about where forks occurred,
removing the "tails" that connect branches back to their original fork
point.  These "tails" can be very long and often do not contain information
that is very important for someone glancing through commits.

=== Details

It's about 40% faster.  Tested this on current master (of git):

git log --graph --pretty=oneline --simplify-forks e870325ee8 > /dev/null  0.83s user 0.06s system 99% cpu 0.886 total

git log --graph --pretty=oneline e870325ee8 > /dev/null  1.41s user 0.03s system 99% cpu 1.443 total

This is because the produced graph is much simpler---it is a tree in the
above case (though not in general).

The exact approach uses two flags (reusing bits 27 and 28 that are used
by the topological sort walk).  One says whether the commit has been ever
visited, and the other says whether the commit was visited from the current
root.  The walk does not continue down any commit that was visited, and
leaves the connection to the parent only if has not been visited from the
current root.  Each commit that is to be shown is treated as its own root
(most of these root commits are immediately skipped, because they are
likely visited in an earlier traversal).

=== Problems

Travis CI is showing issues with the tests I've added [1].  I cannot
reproduce them locally, neither with gcc 4.8.5 (RHEL) nor 9.3.0 (Debian).
They're also only failing on one of the runners.


Thank you for taking the time to look at this,
Antonio Russo


[1] https://travis-ci.org/github/aerusso/git
[2] https://github.com/aerusso/git/tree/mrs/simplify-history-forks

diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt
index 04ad7dd36e..cbac09028c 100644
--- a/Documentation/rev-list-options.txt
+++ b/Documentation/rev-list-options.txt
@@ -363,6 +363,14 @@ Default mode::
 	merges from the resulting history, as there are no selected
 	commits contributing to this merge.

+--simplify-forks::
+	Convert the commit graph into a spanning subgraph produced by a
+	depth-first-search of the history graph, searching the leftmost
+	parent first, and discarding edges to commits already visited.
+	Useful with `--graph` to visualize repositories with many merges
+	when you are interested in was added to master, and not when the
+	branch was last rebased.
+
 --ancestry-path::
 	When given a range of commits to display (e.g. 'commit1..commit2'
 	or 'commit2 {caret}commit1'), only display commits that exist
diff --git a/revision.c b/revision.c
index 5bc96444b6..06d9697306 100644
--- a/revision.c
+++ b/revision.c
@@ -2082,6 +2082,8 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg
 		revs->simplify_by_decoration = 1;
 		revs->limited = 1;
 		revs->prune = 1;
+	} else if (!strcmp(arg, "--simplify-forks")) {
+		revs->simplify_forks = 1;
 	} else if (!strcmp(arg, "--date-order")) {
 		revs->sort_order = REV_SORT_BY_COMMIT_DATE;
 		revs->topo_order = 1;
@@ -3095,6 +3097,63 @@ static void simplify_merges(struct rev_info *revs)
 	}
 }

+static void simplify_forks(struct rev_info *revs)
+{
+	struct commit_list *stack, *list_lr, *iter_list;
+	struct commit_list **parents;
+	struct commit *commit, *parent;
+
+	stack = NULL;
+	list_lr = NULL;
+
+	clear_object_flags(SIMP_FORK_VISITED);
+
+	for(iter_list = revs->commits; iter_list; iter_list = iter_list->next) {
+		/* process every commit to be displayed exactly once */
+		if(iter_list->item->object.flags & SIMP_FORK_VISITED)
+			continue;
+		clear_object_flags(SIMP_FORK_VISITING);
+		commit_list_insert(iter_list->item, &stack);
+		iter_list->item->object.flags |= SIMP_FORK_VISITED | SIMP_FORK_VISITING;
+		while(stack) {
+			commit = pop_commit(&stack);
+			/* process the parent nodes: removing links to
+			 * commits already visited (creating a spanning tree)
+			 */
+			parents = &(commit->parents);
+			while(*parents) {
+				parent = (*parents)->item;
+				if(parent->object.flags & SIMP_FORK_VISITING) {
+					/* We have already visited this commit, from the same root.
+					 * We do not explore it at all.
+					 */
+					pop_commit(parents);
+				} else if(parent->object.flags & SIMP_FORK_VISITED) {
+					/* We visited this commit before, but from a different root.
+					 * Leave it attached, but do not explore it further.
+					 */
+					parents = &((*parents)->next);
+				} else {
+					/* We have not visited this commit yet. Explore it, as usual.
+					 */
+					parent->object.flags |= SIMP_FORK_VISITED | SIMP_FORK_VISITING;
+					commit_list_insert(parent, &list_lr);
+					parents = &((*parents)->next);
+				}
+			}
+
+			/* feed the parents, right to left (reversed) onto the
+			 * stack to do a depth-first traversal of the commit graph
+			 */
+			while(list_lr) {
+				commit_list_insert(pop_commit(&list_lr), &stack);
+			}
+		}
+	}
+
+	clear_object_flags(SIMP_FORK_VISITED | SIMP_FORK_VISITING);
+}
+
 static void set_children(struct rev_info *revs)
 {
 	struct commit_list *l;
@@ -3392,10 +3451,16 @@ int prepare_revision_walk(struct rev_info *revs)
 	if (revs->limited) {
 		if (limit_list(revs) < 0)
 			return -1;
+		if (revs->simplify_forks)
+			simplify_forks(revs);
 		if (revs->topo_order)
 			sort_in_topological_order(&revs->commits, revs->sort_order);
-	} else if (revs->topo_order)
+	} else if (revs->topo_order) {
+		if (revs->simplify_forks)
+			simplify_forks(revs);
 		init_topo_walk(revs);
+	} else if (revs->simplify_forks)
+		simplify_forks(revs);
 	if (revs->line_level_traverse)
 		line_log_filter(revs);
 	if (revs->simplify_merges)
diff --git a/revision.h b/revision.h
index c1af164b30..f1abdb26b0 100644
--- a/revision.h
+++ b/revision.h
@@ -51,6 +51,11 @@
 #define TOPO_WALK_EXPLORED	(1u<<27)
 #define TOPO_WALK_INDEGREE	(1u<<28)

+/* Re-use the TOPO_WALK flagspace for simplify_forks
+ */
+#define SIMP_FORK_VISITED	(1u<<27)
+#define SIMP_FORK_VISITING	(1u<<28)
+
 #define DECORATE_SHORT_REFS	1
 #define DECORATE_FULL_REFS	2

@@ -132,6 +137,7 @@ struct rev_info {
 			no_walk:2,
 			remove_empty_trees:1,
 			simplify_history:1,
+			simplify_forks:1,
 			show_pulls:1,
 			topo_order:1,
 			simplify_merges:1,
diff --git a/t/t6016-rev-list-graph-simplify-history.sh b/t/t6016-rev-list-graph-simplify-history.sh
index f5e6e92f5b..d99214b6df 100755
--- a/t/t6016-rev-list-graph-simplify-history.sh
+++ b/t/t6016-rev-list-graph-simplify-history.sh
@@ -85,6 +85,28 @@ test_expect_success '--graph --all' '
 	test_cmp expected actual
 	'

+# Make sure that simplify_histpry_forks produces a spanning tree
+test_expect_success '--graph --simplify-forks --all' '
+	rm -f expected &&
+	echo "* $A7" >> expected &&
+	echo "*   $A6" >> expected &&
+	echo "|\  " >> expected &&
+	echo "| * $C4" >> expected &&
+	echo "| * $C3" >> expected &&
+	echo "* $A5" >> expected &&
+	echo "*-.   $A4" >> expected &&
+	echo "|\ \  " >> expected &&
+	echo "| | * $C2" >> expected &&
+	echo "| | * $C1" >> expected &&
+	echo "| * $B2" >> expected &&
+	echo "| * $B1" >> expected &&
+	echo "* $A3" >> expected &&
+	echo "* $A2" >> expected &&
+	echo "* $A1" >> expected &&
+	git rev-list --graph --simplify-forks --all > actual &&
+	test_cmp expected actual
+	'
+
 # Make sure the graph_is_interesting() code still realizes
 # that undecorated merges are interesting, even with --simplify-by-decoration
 test_expect_success '--graph --simplify-by-decoration' '
@@ -157,6 +179,20 @@ test_expect_success '--graph --full-history -- bar.txt' '
 	test_cmp expected actual
 	'

+test_expect_success '--graph --simplify-forks --full-history -- bar.txt' '
+	rm -f expected &&
+	echo "* $A7" >> expected &&
+	echo "*   $A6" >> expected &&
+	echo "|\\  " >> expected &&
+	echo "| * $C4" >> expected &&
+	echo "* $A5" >> expected &&
+	echo "* $A4" >> expected &&
+	echo "* $A3" >> expected &&
+	echo "* $A2" >> expected &&
+	git rev-list --graph --simplify-forks --full-history --all -- bar.txt > actual &&
+	test_cmp expected actual
+	'
+
 test_expect_success '--graph --full-history --simplify-merges -- bar.txt' '
 	rm -f expected &&
 	echo "* $A7" >> expected &&
@@ -172,6 +208,20 @@ test_expect_success '--graph --full-history --simplify-merges -- bar.txt' '
 	test_cmp expected actual
 	'

+test_expect_success '--graph --simplify-forks --full-history --simplify-merges -- bar.txt' '
+	rm -f expected &&
+	echo "* $A7" >> expected &&
+	echo "*   $A6" >> expected &&
+	echo "|\\  " >> expected &&
+	echo "| * $C4" >> expected &&
+	echo "* $A5" >> expected &&
+	echo "* $A3" >> expected &&
+	echo "* $A2" >> expected &&
+	git rev-list --graph --simplify-forks --full-history --simplify-merges --all \
+		-- bar.txt > actual &&
+	test_cmp expected actual
+	'
+
 test_expect_success '--graph -- bar.txt' '
 	rm -f expected &&
 	echo "* $A7" >> expected &&
-- 
2.26.2


^ permalink raw reply related	[relevance 0%]

* [ANNOUNCE] Git v2.26.0
@ 2020-03-23  1:10  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-03-23  1:10 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

The latest feature release Git v2.26.0 is now available at the
usual places.  It is comprised of 504 non-merge commits since
v2.25.0, contributed by 64 people, 12 of which are new faces.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.26.0'
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.25.0 are as follows.
Welcome to the Git development community!

  Abhishek Kumar, Benno Evers, Emir Sarı, Eyal Soha, Harald
  van Dijk, Jacques Bodin-Hullin, Kir Kolyshkin, Lucius Hu,
  Luke Bonanomi, Peter Kaestle, Rasmus Jonsson, and Shourya Shukla.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Alban Gruin, Alessandro Menti, Alexander Shopov, Alexandr
  Miloslavskiy, Beat Bolli, Bert Wesarg, brian m. carlson,
  Christian Stimming, Christopher Diaz Riveros, David Turner,
  Denton Liu, Derrick Stolee, Đoàn Trần Công Danh, Elijah
  Newren, Emily Shaffer, Eric Sunshine, Fangyi Zhou, Hans
  Jerry Illikainen, Hariom Verma, Heba Waly, Jean-Noël Avila,
  Jeff King, Jiang Xin, Johan Herland, Johannes Berg, Johannes
  Schindelin, Johannes Sixt, Jonathan Nieder, Jonathan Tan, Jordi
  Mas, Junio C Hamano, Kevin Willford, Kyle Meyer, Luke Diamand,
  Martin Ågren, Masaya Suzuki, Matheus Tavares, Matthew Rogers,
  Matthias Rüster, Miriam Rubio, Paolo Bonzini, Peter Krefting,
  Philippe Blain, Pranit Bauva, Pratyush Yadav, Ralf Thielow,
  René Scharfe, SZEDER Gábor, Tanushree Tumane, Taylor Blau,
  Trần Ngọc Quân, and Yi-Jyun Pan.

----------------------------------------------------------------

Git 2.26 Release Notes
======================

Updates since v2.25
-------------------

Backward compatibility notes

 * "git rebase" uses a different backend that is based on the 'merge'
   machinery by default.  There are a few known differences in the
   behaviour from the traditional machinery based on patch+apply.

   If your workflow is negatively affected by this change, please
   report it to git@vger.kernel.org so that we can take a look into
   it.  After doing so, you can set the 'rebase.backend' configuration
   variable to 'apply', in order to use the old default behaviour in
   the meantime.


UI, Workflows & Features

 * Sample credential helper for using .netrc has been updated to work
   out of the box.

 * gpg.minTrustLevel configuration variable has been introduced to
   tell various signature verification codepaths the required minimum
   trust level.

 * The command line completion (in contrib/) learned to complete
   subcommands and arguments to "git worktree".

 * Disambiguation logic to tell revisions and pathspec apart has been
   tweaked so that backslash-escaped glob special characters do not
   count in the "wildcards are pathspec" rule.

 * One effect of specifying where the GIT_DIR is (either with the
   environment variable, or with the "git --git-dir=<where> cmd"
   option) is to disable the repository discovery.  This has been
   placed a bit more stress in the documentation, as new users often
   get confused.

 * Two help messages given when "git add" notices the user gave it
   nothing to add have been updated to use advise() API.

 * A new version of fsmonitor-watchman hook has been introduced, to
   avoid races.

 * "git config" learned to show in which "scope", in addition to in
   which file, each config setting comes from.

 * The basic 7 colors learned the brighter counterparts
   (e.g. "brightred").

 * "git sparse-checkout" learned a new "add" subcommand.

 * A configuration element used for credential subsystem can now use
   wildcard pattern to specify for which set of URLs the entry
   applies.

 * "git clone --recurse-submodules --single-branch" now uses the same
   single-branch option when cloning the submodules.

 * "git rm" and "git stash" learns the new "--pathspec-from-file"
   option.

 * "git am --show-current-patch" is a way to show the piece of e-mail
   for the stopped step, which is not suitable to directly feed "git
   apply" (it is designed to be a good "git am" input).  It learned a
   new option to show only the patch part.

 * Handling of conflicting renames in merge-recursive have further
   been made consistent with how existing codepaths try to mimic what
   is done to add/add conflicts.


Performance, Internal Implementation, Development Support etc.

 * Tell .editorconfig that in this project, *.txt files are indented
   with tabs.

 * The test-lint machinery knew to check "VAR=VAL shell_function"
   construct, but did not check "VAR= shell_function", which has been
   corrected.

 * Replace "git config --bool" calls with "git config --type=bool" in
   sample templates.

 * The effort to move "git-add--interactive" to C continues.

 * Improve error message generation for "git submodule add".

 * Preparation of test scripts for the day when the object names will
   use SHA-256 continues.

 * Warn programmers about pretend_object_file() that allows the code
   to tentatively use in-core objects.

 * The way "git pack-objects" reuses objects stored in existing pack
   to generate its result has been improved.

 * The transport protocol version 2 becomes the default one.

 * Traditionally, we avoided threaded grep while searching in objects
   (as opposed to files in the working tree) as accesses to the object
   layer is not thread-safe.  This limitation is getting lifted.

 * "git rebase -i" (and friends) used to unnecessarily check out the
   tip of the branch to be rebased, which has been corrected.

 * A low-level API function get_oid(), that accepts various ways to
   name an object, used to issue end-user facing error messages
   without l10n, which has been updated to be translatable.

 * Unneeded connectivity check is now disabled in a partial clone when
   fetching into it.

 * Some rough edges in the sparse-checkout feature, especially around
   the cone mode, have been cleaned up.

 * The diff-* plumbing family of subcommands now pay attention to the
   diff.wsErrorHighlight configuration, which has been ignored before;
   this allows "git add -p" to also show the whitespace problems to
   the end user.

 * Some codepaths were given a repository instance as a parameter to
   work in the repository, but passed the_repository instance to its
   callees, which has been cleaned up (somewhat).

 * Memory footprint and performance of "git name-rev" has been
   improved.

 * The object reachability bitmap machinery and the partial cloning
   machinery were not prepared to work well together, because some
   object-filtering criteria that partial clones use inherently rely
   on object traversal, but the bitmap machinery is an optimization
   to bypass that object traversal.  There however are some cases
   where they can work together, and they were taught about them.

 * "git rebase" has learned to use the merge backend (i.e. the
   machinery that drives "rebase -i") by default, while allowing
   "--apply" option to use the "apply" backend (e.g. the moral
   equivalent of "format-patch piped to am").  The rebase.backend
   configuration variable can be set to customize.

 * Underlying machinery of "git bisect--helper" is being refactored
   into pieces that are more easily reused.


Fixes since v2.25
-----------------

 * "git commit" gives output similar to "git status" when there is
   nothing to commit, but without honoring the advise.statusHints
   configuration variable, which has been corrected.

 * has_object_file() said "no" given an object registered to the
   system via pretend_object_file(), making it inconsistent with
   read_object_file(), causing lazy fetch to attempt fetching an
   empty tree from promisor remotes.

 * Complete an update to tutorial that encourages "git switch" over
   "git checkout" that was done only half-way.

 * C pedantry ;-) fix.

 * The code that tries to skip over the entries for the paths in a
   single directory using the cache-tree was not careful enough
   against corrupt index file.

 * Reduce unnecessary round-trip when running "ls-remote" over the
   stateless RPC mechanism.

 * "git restore --staged" did not correctly update the cache-tree
   structure, resulting in bogus trees to be written afterwards, which
   has been corrected.

 * The code recently added to move to the entry beyond the ones in the
   same directory in the index in the sparse-cone mode did not count
   the number of entries to skip over incorrectly, which has been
   corrected.

 * Rendering by "git log --graph" of ancestry lines leading to a merge
   commit were made suboptimal to waste vertical space a bit with a
   recent update, which has been corrected.

 * Work around test breakages caused by custom regex engine used in
   libasan, when address sanitizer is used with more recent versions
   of gcc and clang.

 * Minor bugfixes to "git add -i" that has recently been rewritten in C.

 * "git fetch --refmap=" option has got a better documentation.

 * "git checkout X" did not correctly fail when X is not a local
   branch but could name more than one remote-tracking branches
   (i.e. to be dwimmed as the starting point to create a corresponding
   local branch), which has been corrected.
   (merge fa74180d08 am/checkout-file-and-ref-ref-ambiguity later to maint).

 * Corner case bugs in "git clean" that stems from a (necessarily for
   performance reasons) awkward calling convention in the directory
   enumeration API has been corrected.

 * A fetch that is told to recursively fetch updates in submodules
   inevitably produces reams of output, and it becomes hard to spot
   error messages.  The command has been taught to enumerate
   submodules that had errors at the end of the operation.
   (merge 0222540827 es/fetch-show-failed-submodules-atend later to maint).

 * The "--recurse-submodules" option of various subcommands did not
   work well when run in an alternate worktree, which has been
   corrected.

 * Futureproofing a test not to depend on the current implementation
   detail.

 * Running "git rm" on a submodule failed unnecessarily when
   .gitmodules is only cache-dirty, which has been corrected.

 * C pedantry ;-) fix.

 * "git grep --no-index" should not get affected by the contents of
   the .gitmodules file but when "--recurse-submodules" is given or
   the "submodule.recurse" variable is set, it did.  Now these
   settings are ignored in the "--no-index" mode.

 * Technical details of the bundle format has been documented.

 * Unhelpful warning messages during documentation build have been squelched.

 * "git rebase -i" identifies existing commits in its todo file with
   their abbreviated object name, which could become ambiguous as it
   goes to create new commits, and has a mechanism to avoid ambiguity
   in the main part of its execution.  A few other cases however were
   not covered by the protection against ambiguity, which has been
   corrected.

 * Allow the rebase.missingCommitsCheck configuration to kick in when
   "rebase --edit-todo" and "rebase --continue" restarts the procedure.
   (merge 5a5445d878 ag/edit-todo-drop-check later to maint).

 * The way "git submodule status" reports an initialized but not yet
   populated submodule has not been reimplemented correctly when a
   part of the "git submodule" command was rewritten in C, which has
   been corrected.
   (merge f38c92452d pk/status-of-uncloned-submodule later to maint).

 * The code to automatically shrink the fan-out in the notes tree had
   an off-by-one bug, which has been killed.

 * The index-pack code now diagnoses a bad input packstream that
   records the same object twice when it is used as delta base; the
   code used to declare a software bug when encountering such an
   input, but it is an input error.


 * The code to compute the commit-graph has been taught to use a more
   robust way to tell if two object directories refer to the same
   thing.
   (merge a7df60cac8 tb/commit-graph-object-dir later to maint).

 * "git remote rename X Y" needs to adjust configuration variables
   (e.g. branch.<name>.remote) whose value used to be X to Y.
   branch.<name>.pushRemote is now also updated.

 * Update to doc-diff.

 * Doc markup fix.

 * "git check-ignore" did not work when the given path is explicitly
   marked as not ignored with a negative entry in the .gitignore file.

 * The merge-recursive machinery failed to refresh the cache entry for
   a merge result in a couple of places, resulting in an unnecessary
   merge failure, which has been fixed.

 * Fix for a bug revealed by a recent change to make the protocol v2
   the default.

 * In rare cases "git worktree add <path>" could think that <path>
   was already a registered worktree even when it wasn't and refuse
   to add the new worktree. This has been corrected.
   (merge bb69b3b009 es/worktree-avoid-duplication-fix later to maint).

 * "git push" should stop from updating a branch that is checked out
   when receive.denyCurrentBranch configuration is set, but it failed
   to pay attention to checkouts in secondary worktrees.  This has
   been corrected.
   (merge 4d864895a2 hv/receive-denycurrent-everywhere later to maint).

 * "git rebase BASE BRANCH" rebased/updated the tip of BRANCH and
   checked it out, even when the BRANCH is checked out in a different
   worktree.  This has been corrected.
   (merge b5cabb4a96 es/do-not-let-rebase-switch-to-protected-branch later to maint).

 * "git describe" in a repository with multiple root commits sometimes
   gave up looking for the best tag to describe a given commit with
   too early, which has been adjusted.

 * "git merge signed-tag" while lacking the public key started to say
   "No signature", which was utterly wrong.  This regression has been
   reverted.

 * MinGW's poll() emulation has been improved.

 * "git show" and others gave an object name in raw format in its
   error output, which has been corrected to give it in hex.

 * "git fetch" over HTTP walker protocol did not show any progress
   output.  We inherently do not know how much work remains, but still
   we can show something not to bore users.
   (merge 7655b4119d rs/show-progress-in-dumb-http-fetch later to maint).

 * Both "git ls-remote -h" and "git grep -h" give short usage help,
   like any other Git subcommand, but it is not unreasonable to expect
   that the former would behave the same as "git ls-remote --head"
   (there is no other sensible behaviour for the latter).  The
   documentation has been updated in an attempt to clarify this.

 * Other code cleanup, docfix, build fix, etc.
   (merge d0d0a357a1 am/update-pathspec-f-f-tests later to maint).
   (merge f94f7bd00d am/test-pathspec-f-f-error-cases later to maint).
   (merge c513a958b6 ss/t6025-modernize later to maint).
   (merge b441717256 dl/test-must-fail-fixes later to maint).
   (merge d031049da3 mt/sparse-checkout-doc-update later to maint).
   (merge 145136a95a jc/skip-prefix later to maint).
   (merge 5290d45134 jk/alloc-cleanups later to maint).
   (merge 7a9f8ca805 rs/parse-options-concat-dup later to maint).
   (merge 517b60564e rs/strbuf-insertstr later to maint).
   (merge f696a2b1c8 jk/mailinfo-cleanup later to maint).
   (merge de26f02db1 js/test-avoid-pipe later to maint).
   (merge a2dc43414c es/doc-mentoring later to maint).
   (merge 02bbbe9df9 es/worktree-cleanup later to maint).
   (merge 2ce6d075fa rs/micro-cleanups later to maint).
   (merge 27f182b3fc rs/blame-typefix-for-fingerprint later to maint).
   (merge 3c29e21eb0 ma/test-cleanup later to maint).
   (merge 240fc04f81 ag/rebase-remove-redundant-code later to maint).
   (merge d68ce906c7 rs/commit-graph-code-simplification later to maint).
   (merge a51d9e8f07 rj/t1050-use-test-path-is-file later to maint).
   (merge fd0bc17557 kk/complete-diff-color-moved later to maint).
   (merge 65bf820d0e en/test-cleanup later to maint).

----------------------------------------------------------------

Changes since v2.25.0 are as follows:

Abhishek Kumar (2):
      lib-log-graph: consolidate test_cmp_graph logic
      lib-log-graph: consolidate colored graph cmp logic

Alban Gruin (4):
      rebase -i: stop checking out the tip of the branch to rebase
      sequencer: move check_todo_list_from_file() to rebase-interactive.c
      rebase-interactive: warn if commit is dropped with `rebase --edit-todo'
      builtin/rebase: remove a call to get_oid() on `options.switch_to'

Alessandro Menti (2):
      l10n: it.po: update the Italian translation for Git 2.26.0 round 1
      l10n: it.po: update the Italian translation for Git 2.26.0 round 2

Alexander Shopov (2):
      l10n: bg.po: Updated Bulgarian translation (4835t)
      l10n: bg.po: Updated Bulgarian translation (4839t)

Alexandr Miloslavskiy (14):
      parse_branchname_arg(): extract part as new function
      checkout: don't revert file on ambiguous tracking branches
      t: add tests for error conditions with --pathspec-from-file
      t: fix quotes tests for --pathspec-from-file
      t: directly test parse_pathspec_file()
      doc: rm: synchronize <pathspec> description
      rm: support the --pathspec-from-file option
      doc: stash: split options from description (1)
      doc: stash: split options from description (2)
      doc: stash: document more options
      doc: stash: synchronize <pathspec> description
      stash: eliminate crude option parsing
      stash push: support the --pathspec-from-file option
      mingw: workaround for hangs when sending STDIN

Beat Bolli (1):
      unicode: update the width tables to Unicode 13.0

Benno Evers (1):
      describe: don't abort too early when searching tags

Bert Wesarg (6):
      pull --rebase/remote rename: document and honor single-letter abbreviations rebase types
      remote: clean-up by returning early to avoid one indentation
      remote: clean-up config callback
      remote rename/remove: handle branch.<name>.pushRemote config values
      config: provide access to the current line number
      remote rename/remove: gently handle remote.pushDefault config

Christian Stimming (3):
      git-gui: update pot template and German translation to current source code
      git-gui: extend translation glossary template with more terms
      git-gui: update German translation

Christopher Diaz Riveros (1):
      l10n: es: 2.26.0 round#2

David Turner (1):
      git rm submodule: succeed if .gitmodules index stat info is zero

Denton Liu (34):
      t/lib-git-p4: use test_path_is_missing()
      t0000: replace test_must_fail with run_sub_test_lib_test_err()
      t0003: use named parameters in attr_check()
      t0003: use test_must_be_empty()
      t0003: don't use `test_must_fail attr_check`
      t0020: don't use `test_must_fail has_cr`
      t0020: use ! check_packed_refs_marked
      t1306: convert `test_might_fail rm` to `rm -f`
      t1307: reorder `nongit test_must_fail`
      t1409: let sed open its own input file
      t1409: use test_path_is_missing()
      t1501: remove use of `test_might_fail cp`
      t1507: stop losing return codes of git commands
      t1507: run commands within test_expect_success
      t1507: inline full_name()
      contrib/credential/netrc: make PERL_PATH configurable
      contrib/credential/netrc: work outside a repo
      t2018: remove trailing space from test description
      t2018: add space between function name and ()
      t2018: improve style of if-statement
      .mailmap: fix erroneous authorship for Johannes Schindelin
      t2018: be more discerning when checking for expected exit codes
      t2018: teach do_checkout() to accept `!` arg
      t2018: don't lose return code of git commands
      t2018: replace "sha" with "oid"
      t3030: use test_path_is_missing()
      t3310: extract common notes_merge_files_gone()
      t3415: stop losing return codes of git commands
      t3415: increase granularity of test_auto_{fixup,squash}()
      t3419: stop losing return code of git command
      t3507: fix indentation
      t3507: use test_path_is_missing()
      t4124: only mark git command with test_must_fail
      .mailmap: map Yi-Jyun Pan's email

Derrick Stolee (26):
      unpack-trees: correctly compute result count
      graph: add test to demonstrate horizontal line bug
      graph: fix collapse of multiple edges
      clean: demonstrate a bug with pathspecs
      fetch: document and test --refmap=""
      t1091: use check_files to reduce boilerplate
      t1091: improve here-docs
      sparse-checkout: create leading directories
      clone: fix --sparse option with URLs
      sparse-checkout: cone mode does not recognize "**"
      sparse-checkout: detect short patterns
      sparse-checkout: warn on globs in cone patterns
      sparse-checkout: properly match escaped characters
      sparse-checkout: write escaped patterns in cone mode
      sparse-checkout: unquote C-style strings over --stdin
      sparse-checkout: use C-style quotes in 'list' subcommand
      sparse-checkout: escape all glob characters on write
      sparse-checkout: improve docs around 'set' in cone mode
      sparse-checkout: fix cone mode behavior mismatch
      sparse-checkout: extract add_patterns_from_input()
      sparse-checkout: extract pattern update from 'set' subcommand
      sparse-checkout: create 'add' subcommand
      sparse-checkout: work with Windows paths
      sparse-checkout: allow one-character directories in cone mode
      partial-clone: demonstrate bugs in partial fetch
      partial-clone: avoid fetching when looking for objects

Elijah Newren (36):
      unpack-trees: exit check_updates() early if updates are not wanted
      string-list: note in docs that callers can specify sorting function
      dir: treat_leading_path() and read_directory_recursive(), round 2
      git-rebase.txt: update description of --allow-empty-message
      t3404: directly test the behavior of interest
      rebase (interactive-backend): make --keep-empty the default
      rebase (interactive-backend): fix handling of commits that become empty
      t3406: simplify an already simple test
      rebase, sequencer: remove the broken GIT_QUIET handling
      rebase: make sure to pass along the quiet flag to the sequencer
      rebase: fix handling of restrict_revision
      t3432: make these tests work with either am or merge backends
      rebase: allow more types of rebases to fast-forward
      git-rebase.txt: add more details about behavioral differences of backends
      rebase: move incompatibility checks between backend options a bit earlier
      rebase: add an --am option
      git-prompt: change the prompt for interactive-based rebases
      rebase: drop '-i' from the reflog for interactive-based rebases
      rebase tests: mark tests specific to the am-backend with --am
      rebase tests: repeat some tests using the merge backend instead of am
      rebase: make the backend configurable via config setting
      rebase: change the default backend from "am" to "merge"
      rebase: rename the two primary rebase backends
      check-ignore: fix documentation and implementation to match
      t3433: new rebase testcase documenting a stat-dirty-like failure
      merge-recursive: fix the refresh logic in update_file_flags
      merge-recursive: apply collision handling unification to recursive case
      t602[1236], t6034: modernize test formatting
      t6020, t6022, t6035: update merge tests to use test helper functions
      t3035: prefer test_must_fail to bash negation for git commands
      t6022, t6046: test expected behavior instead of testing a proxy for it
      t6020: new test with interleaved lexicographic ordering of directories
      sequencer: clear state upon dropping a become-empty commit
      git-rebase.txt: highlight backend differences with commit rewording
      t6022, t6046: fix flaky files-are-updated checks
      RelNotes/2.26.0: fix various typos

Emily Shaffer (9):
      unpack-trees: watch for out-of-range index position
      fetch: emphasize failure during submodule fetch
      MyFirstContribution: add avenues for getting help
      submodule: add newline on invalid submodule error
      MyFirstContribution: rephrase contact info
      prefix_path: show gitdir when arg is outside repo
      submodule--helper: use C99 named initializer
      clone: pass --single-branch during --recurse-submodules
      prefix_path: show gitdir if worktree unavailable

Emir Sarı (5):
      l10n: tr: Add Turkish translation team info
      l10n: tr: Add Turkish translations
      l10n: tr: Add glossary for Turkish translations
      l10n: tr: v2.26.0 round 2
      l10n: tr: Fix a couple of ambiguities

Eric Sunshine (6):
      t3400: make test clean up after itself
      rebase: refuse to switch to branch already checked out elsewhere
      worktree: drop unused code from get_main_worktree()
      worktree: improve find_worktree() documentation
      worktree: add utility to find worktree by pathname
      worktree: don't allow "add" validation to be fooled by suffix matching

Eyal Soha (3):
      color.c: refactor color_output arguments
      color.c: support bright aixterm colors
      color.c: alias RGB colors 8-15 to aixterm colors

Fangyi Zhou (1):
      l10n: zh_CN: Revise v2.26.0 translation

Hans Jerry Illikainen (2):
      editorconfig: indent text files with tabs
      gpg-interface: add minTrustLevel as a configuration option

Harald van Dijk (1):
      show_one_mergetag: print non-parent in hex form.

Hariom Verma (4):
      get_main_worktree(): allow it to be called in the Git directory
      t5509: use a bare repository for test push target
      receive.denyCurrentBranch: respect all worktrees
      t2402: test worktree path when called in .git directory

Heba Waly (5):
      commit: honor advice.statusHints when rejecting an empty commit
      doc/gitcore-tutorial: fix prose to match example command
      add: use advise function to display hints
      git: update documentation for --git-dir
      add: change advice config variables used by the add API

Jacques Bodin-Hullin (1):
      parse-options: lose an unnecessary space in an error message

Jean-Noël Avila (2):
      l10n: fr v2.26.0 rnd1
      l10n: fr : v2.26.0 rnd 2

Jeff King (70):
      builtin/pack-objects: report reused packfile objects
      packfile: expose get_delta_base()
      restore: invalidate cache-tree when removing entries with --staged
      transport: don't flush when disconnecting stateless-rpc helper
      dir: restructure in a way to avoid passing around a struct dirent
      dir: point treat_leading_path() warning to the right place
      Makefile: use compat regex with SANITIZE=address
      t4018: drop "debugging" cat from hunk-header tests
      t7800: don't rely on reuse_worktree_file()
      ewah/bitmap: introduce bitmap_word_alloc()
      pack-bitmap: introduce bitmap_walk_contains()
      pack-bitmap: uninteresting oid can be outside bitmapped packfile
      pack-bitmap: simplify bitmap_has_oid_in_uninteresting()
      csum-file: introduce hashfile_total()
      pack-objects: introduce pack.allowPackReuse
      builtin/pack-objects: introduce obj_is_packed()
      pack-objects: improve partial packfile reuse
      pack-objects: add checks for duplicate objects
      pack-bitmap: don't rely on bitmap_git->reuse_objects
      sparse-checkout: fix documentation typo for core.sparseCheckoutCone
      verify_filename(): handle backslashes in "wildcards are pathspecs" rule
      merge-recursive: silence -Wxor-used-as-pow warning
      t1400: avoid "test" string comparisons
      t1506: drop space after redirection operator
      avoid computing zero offsets from NULL pointer
      xdiff: avoid computing non-zero offset from NULL pointer
      obstack: avoid computing offsets from NULL pointer
      doc: drop "explicitly given" from push.default description
      sha1-name: mark get_oid() error messages for translation
      normalize_path_copy(): document "dst" size expectations
      walker_fetch(): avoid raw array length computation
      traverse_trees(): use stack array for name entries
      diff: move diff.wsErrorHighlight to "basic" config
      tree-walk.c: break circular dependency with unpack-trees
      index-pack: downgrade twice-resolved REF_DELTA to die()
      mailinfo: treat header values as C strings
      mailinfo: simplify parsing of header values
      mailinfo: be more liberal with header whitespace
      mailinfo: factor out some repeated header handling
      pack-bitmap: factor out type iterator initialization
      pack-bitmap: fix leak of haves/wants object lists
      rev-list: fallback to non-bitmap traversal when filtering
      pack-bitmap: refuse to do a bitmap traversal with pathspecs
      rev-list: factor out bitmap-optimized routines
      rev-list: make --count work with --objects
      rev-list: allow bitmaps when counting objects
      t5310: factor out bitmap traversal comparison
      rev-list: allow commit-only bitmap traversals
      pack-bitmap: basic noop bitmap filter infrastructure
      rev-list: use bitmap filters for traversal
      bitmap: add bitmap_unset() function
      pack-bitmap: implement BLOB_NONE filtering
      pack-bitmap: implement BLOB_LIMIT filtering
      pack-objects: support filters with bitmaps
      doc: move credential helper info into gitcredentials(7)
      doc/config/push: use longer "--" line for preformatted example
      doc-diff: use single-colon rule in rendering Makefile
      run-command.h: fix mis-indented struct member
      nth_packed_object_oid(): use customary integer return
      pack-objects: read delta base oid into object_id struct
      pack-objects: convert oe_set_delta_ext() to use object_id
      pack-objects: use object_id struct in pack-reuse code
      pack-bitmap: use object_id when loading on-disk bitmaps
      pack-check: convert "internal error" die to a BUG()
      pack-check: push oid lookup into loop
      packed_object_info(): use object_id for returning delta base
      packed_object_info(): use object_id internally for delta base
      packfile: drop nth_packed_object_sha1()
      config.mak.dev: re-enable -Wformat-zero-length
      remote: drop "explicit" parameter from remote_ref_for_branch()

Jiang Xin (5):
      l10n: git.pot: v2.26.0 round 1 (73 new, 38 removed)
      l10n: git.pot: v2.26.0 round 2 (7 new, 2 removed)
      i18n: unmark a message in rebase.c
      l10n: zh_CN: for git v2.26.0 l10n round 1 and 2
      l10n: tr.po: change file mode to 644

Johan Herland (2):
      t3305: check notes fanout more carefully and robustly
      notes.c: fix off-by-one error when decreasing notes fanout

Johannes Berg (1):
      pack-format: correct multi-pack-index description

Johannes Schindelin (33):
      built-in add -p: prepare for patch modes other than "stage"
      built-in add -p: implement the "stash" and "reset" patch modes
      legacy stash -p: respect the add.interactive.usebuiltin setting
      built-in stash: use the built-in `git add -p` if so configured
      built-in add -p: implement the "checkout" patch modes
      built-in add -p: implement the "worktree" patch modes
      commit --interactive: make it work with the built-in `add -i`
      t3701: adjust difffilter test
      built-in add -p: support interactive.diffFilter
      built-in add -p: handle diff.algorithm
      terminal: make the code of disable_echo() reusable
      terminal: accommodate Git for Windows' default terminal
      terminal: add a new function to read a single keystroke
      built-in add -p: respect the `interactive.singlekey` config setting
      built-in add -p: handle Escape sequences in interactive.singlekey mode
      built-in add -p: handle Escape sequences more efficiently
      ci: include the built-in `git add -i` in the `linux-gcc` job
      msvc: accommodate for vcpkg's upgrade to OpenSSL v1.1.x
      built-in add -i: do not try to `patch`/`diff` an empty list of files
      built-in add -i: accept open-ended ranges again
      parse_insn_line(): improve error message when parsing failed
      rebase -i: re-fix short SHA-1 collision
      rebase -i: also avoid SHA-1 collisions with missingCommitsCheck
      ci: ignore rubygems warning in the "Documentation" job
      convert: fix typo
      tests: fix --write-junit-xml with subshells
      t9001, t9116: avoid pipes
      t5580: test cloning without file://, test fetching via UNC paths
      mingw: add a helper function to attach GDB to the current process
      t/lib-httpd: avoid using macOS' sed
      ci: prevent `perforce` from being quarantined
      Azure Pipeline: switch to the latest agent pools
      t5537: adjust test_oid label

Johannes Sixt (1):
      t3504: do check for conflict marker after failed cherry-pick

Jonathan Nieder (9):
      sha1-file: document how to use pretend_object_file
      fetch test: avoid use of "VAR= cmd" with a shell function
      t/check-non-portable-shell: detect "FOO= shell_func", too
      fetch test: mark test of "skipping" haves as v0-only
      fetch test: use more robust test for filtered objects
      config doc: protocol.version is not experimental
      test: request GIT_TEST_PROTOCOL_VERSION=0 when appropriate
      protocol test: let protocol.version override GIT_TEST_PROTOCOL_VERSION
      fetch: default to protocol version 2

Jonathan Tan (4):
      sha1-file: remove OBJECT_INFO_SKIP_CACHED
      t5616: make robust to delta base change
      connected: verify promisor-ness of partial clone
      fetch: forgo full connectivity check if --filter

Jordi Mas (3):
      l10n: Update Catalan translation
      l10n: Update Catalan translation
      l10n: Update Catalan translation

Junio C Hamano (21):
      The first batch post 2.25 cycle
      merge-recursive: use subtraction to flip stage
      .mailmap: fix GGG authoship screwup
      The second batch
      C: use skip_prefix() to avoid hardcoded string length
      The third batch for 2.26
      The fourth batch for 2.26
      The fifth batch for 2.26
      Git 2.25.1
      The sixth batch for 2.26
      rev-list --count: comment on the use of count_right++
      The seventh batch for 2.26
      Documentation: clarify that `-h` alone stands for `help`
      Revert "gpg-interface: prefer check_signature() for GPG verification"
      The eighth batch for 2.26
      Git 2.26-rc0
      Git 2.26-rc1
      Hopefully the final batch before -rc2
      Git 2.26-rc2
      Git 2.25.2
      Git 2.26

Kevin Willford (4):
      fsmonitor: change last update timestamp on the index_state to opaque token
      fsmonitor: handle version 2 of the hooks that will use opaque token
      fsmonitor: add fsmonitor hook scripts for version 2
      fsmonitor: update documentation for hook version and watchman hooks

Kir Kolyshkin (1):
      completion: add diff --color-moved[-ws]

Kyle Meyer (2):
      submodule add: show 'add --dry-run' stderr when aborting
      submodule foreach: replace $path with $sm_path in example

Lucius Hu (1):
      templates: fix deprecated type option `--bool`

Luke Bonanomi (1):
      git-gui--askpass: coerce answers to UTF-8 on Windows

Luke Diamand (7):
      git-p4: make closeStreams() idempotent
      git-p4: add P4CommandException to report errors talking to Perforce
      git-p4: disable some pylint warnings, to get pylint output to something manageable
      git-p4: create helper function importRevisions()
      git-p4: cleanup better on error exit
      git-p4: check for access to remote host earlier
      git-p4: avoid leak of file handle when cloning

Martin Ågren (7):
      git-filter-branch.txt: wrap "maths" notation in backticks
      name-rev: rewrite create_or_update_name()
      diff-options.txt: avoid "regex" overload in example
      t4117: check for files using `test_path_is_file`
      t9810: drop debug `cat` call
      t: drop debug `cat` calls
      t1091: don't grep for `strerror()` string

Masaya Suzuki (1):
      doc: describe Git bundle format

Matheus Tavares (21):
      grep: fix race conditions on userdiff calls
      grep: fix race conditions at grep_submodule()
      grep: fix racy calls in grep_objects()
      replace-object: make replace operations thread-safe
      object-store: allow threaded access to object reading
      grep: replace grep_read_mutex by internal obj read lock
      submodule-config: add skip_if_read option to repo_read_gitmodules()
      grep: allow submodule functions to run in parallel
      grep: protect packed_git [re-]initialization
      grep: re-enable threads in non-worktree case
      grep: move driver pre-load out of critical section
      grep: use no. of cores as the default no. of threads
      doc: sparse-checkout: mention --cone option
      completion: add support for sparse-checkout
      diff: make diff_populate_filespec() honor its repo argument
      cache-tree: use given repo's hash_algo at verify_one()
      pack-check: use given repo's hash_algo at verify_packfile()
      streaming: allow open_istream() to handle any repo
      sha1-file: pass git_hash_algo to write_object_file_prepare()
      sha1-file: pass git_hash_algo to hash_object_file()
      sha1-file: allow check_object_signature() to handle any repo

Matthew Rogers (10):
      config: fix typo in variable name
      t1300: fix over-indented HERE-DOCs
      t1300: create custom config file without special characters
      config: make scope_name non-static and rename it
      config: split repo scope to local and worktree
      config: clarify meaning of command line scoping
      config: preserve scope in do_git_config_sequence
      config: teach git_config_source to remember its scope
      submodule-config: add subomdule config scope
      config: add '--show-scope' to print the scope of a config value

Matthias Rüster (1):
      l10n: de.po: Update German translation for Git 2.26.0

Miriam Rubio (3):
      bisect--helper: convert `vocab_*` char pointers to char arrays
      bisect: use the standard 'if (!var)' way to check for 0
      bisect: add enum to represent bisect returning codes

Paolo Bonzini (5):
      parse-options: add testcases for OPT_CMDMODE()
      parse-options: convert "command mode" to a flag
      am: convert "resume" variable to a struct
      am: support --show-current-patch=raw as a synonym for--show-current-patch
      am: support --show-current-patch=diff to retrieve .git/rebase-apply/patch

Peter Kaestle (3):
      t7400: add a testcase for submodule status on empty dirs
      submodule: fix status of initialized but not cloned submodules
      t7400: testcase for submodule status on unregistered inner git repos

Peter Krefting (2):
      l10n: sv.po: Update Swedish translation (4835t0f0u)
      l10n: sv.po: Update Swedish translation (4839t0f0u)

Philippe Blain (5):
      t7410: rename to t2405-worktree-submodule.sh
      t2405: use git -C and test_commit -C instead of subshells
      t2405: clarify test descriptions and simplify test
      submodule.c: use get_git_dir() instead of get_git_common_dir()
      grep: ignore --recurse-submodules if --no-index is given

Pranit Bauva (7):
      bisect--helper: return error codes from `cmd_bisect__helper()`
      bisect: libify `exit_if_skipped_commits` to `error_if_skipped*` and its dependents
      bisect: libify `bisect_checkout`
      bisect: libify `check_merge_bases` and its dependents
      bisect: libify `check_good_are_ancestors_of_bad` and its dependents
      bisect: libify `handle_bad_merge_base` and its dependents
      bisect: libify `bisect_next_all`

Pratyush Yadav (4):
      git-gui: add missing close bracket
      git-gui: fix error popup when doing blame -> "Show History Context"
      git-gui: reduce Tcl version requirement from 8.6 to 8.5
      git-gui: create a new namespace for chord script evaluation

Ralf Thielow (3):
      submodule.c: mark more strings for translation
      rebase-interactive.c: silence format-zero-length warnings
      l10n: de.po: add missing space

Rasmus Jonsson (1):
      t1050: replace test -f with test_path_is_file

René Scharfe (21):
      name-rev: remove unused typedef
      name-rev: respect const qualifier
      name-rev: don't leak path copy in name_ref()
      name-rev: don't _peek() in create_or_update_name()
      name-rev: put struct rev_name into commit slab
      name-rev: factor out get_parent_name()
      name-rev: pre-size buffer in get_parent_name()
      name-rev: generate name strings only if they are better
      name-rev: release unused name strings
      name-rev: sort tip names before applying
      strbuf: add and use strbuf_insertstr()
      mailinfo: don't insert header prefix for handle_content_type()
      parse-options: use COPY_ARRAY in parse_options_concat()
      parse-options: factor out parse_options_count()
      parse-options: const parse_options_concat() parameters
      parse-options: simplify parse_options_dup()
      quote: use isalnum() to check for alphanumeric characters
      use strpbrk(3) to search for characters from a given set
      blame: provide type of fingerprints pointer
      commit-graph: use progress title directly
      remote-curl: show progress for fetches over dumb HTTP

SZEDER Gábor (6):
      t9902-completion: add tests for the __git_find_on_cmdline() helper
      completion: clean up the __git_find_on_cmdline() helper function
      completion: return the index of found word from __git_find_on_cmdline()
      completion: simplify completing 'git worktree' subcommands and options
      completion: list existing working trees for 'git worktree' subcommands
      completion: list paths and refs for 'git worktree add'

Shourya Shukla (2):
      t6025: modernize style
      t6025: use helpers to replace test -f <path>

Tanushree Tumane (2):
      bisect--helper: change `retval` to `res`
      bisect--helper: introduce new `decide_next()` function

Taylor Blau (5):
      t5318: don't pass non-object directory to '--object-dir'
      commit-graph.h: store an odb in 'struct write_commit_graph_context'
      commit-graph.h: store object directory in 'struct commit_graph'
      commit-graph.c: remove path normalization, comparison
      commit-graph.h: use odb in 'load_commit_graph_one_fd_st'

Trần Ngọc Quân (1):
      l10n: vi(4839t): Updated Vietnamese translation for v2.26.0

Yi-Jyun Pan (2):
      l10n: zh_TW.po: v2.26.0 round 1 (11 untranslated)
      l10n: zh_TW.po: v2.26.0 round 2 (0 untranslated)

brian m. carlson (54):
      run-command: avoid undefined behavior in exists_in_PATH
      t4054: make hash-size independent
      t4066: compute index line in diffs
      t4134: compute appropriate length constant
      t4200: make hash size independent
      t4202: abstract away SHA-1-specific constants
      t4204: make hash size independent
      t4300: abstract away SHA-1-specific constants
      t5318: update for SHA-256
      t5319: change invalid offset for SHA-256 compatibility
      t5319: make test work with SHA-256
      t5324: make hash size independent
      t5504: make hash algorithm independent
      t5510: make hash size independent
      t5512: abstract away SHA-1-specific constants
      t5530: compute results based on object length
      t5537: make hash size independent
      t5540: make hash size independent
      t5562: use $ZERO_OID
      t5601: switch into repository to hash object
      t5604: make hash independent
      docs: use "currently" for the present time
      doc: move author and committer information to git-commit(1)
      docs: expand on possible and recommended user config options
      doc: provide guidance on user.name format
      doc: dissuade users from trying to ignore tracked files
      docs: mention when increasing http.postBuffer is valuable
      t/lib-pack: support SHA-256
      t3206: make hash size independent
      t3308: make test work with SHA-256
      t3309: make test work with SHA-256
      t3310: make test work with SHA-256
      t3311: make test work with SHA-256
      t4013: make test hash independent
      t4211: move SHA-1-specific test cases into a directory
      t4211: add test cases for SHA-256
      t4060: make test work with SHA-256
      t5302: make hash size independent
      t5309: make test hash independent
      t5313: make test hash independent
      t5321: make test hash independent
      t5515: make test hash independent
      t5318: update for SHA-256
      t5607: make hash size independent
      t5703: make test work with SHA-256
      t6000: abstract away SHA-1-specific constants
      t6006: make hash size independent
      t6024: update for SHA-256
      mailmap: add an additional email address for brian m. carlson
      t1300: add test for urlmatch with multiple wildcards
      t0300: add tests for some additional cases
      credential: use the last matching username in the config
      credential: allow wildcard patterns when matching config
      t3419: prevent failure when run with EXPENSIVE

Đoàn Trần Công Danh (1):
      l10n: vi: fix translation + grammar


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.26.0-rc2
@ 2020-03-16 23:25  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-03-16 23:25 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.26.0-rc2 is now available for testing
at the usual places.  It is comprised of 463 non-merge commits
since v2.25.0, contributed by 48 people, 10 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.26.0-rc2' 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.25.0 are as follows.
Welcome to the Git development community!

  Abhishek Kumar, Benno Evers, Eyal Soha, Harald van Dijk,
  Jacques Bodin-Hullin, Kir Kolyshkin, Lucius Hu, Peter Kaestle,
  Rasmus Jonsson, and Shourya Shukla.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Alban Gruin, Alexandr Miloslavskiy, Bert Wesarg, brian
  m. carlson, David Turner, Denton Liu, Derrick Stolee, Elijah
  Newren, Emily Shaffer, Eric Sunshine, Hans Jerry Illikainen,
  Hariom Verma, Heba Waly, Jeff King, Jiang Xin, Johan Herland,
  Johannes Berg, Johannes Schindelin, Johannes Sixt, Jonathan
  Nieder, Jonathan Tan, Junio C Hamano, Kevin Willford, Kyle Meyer,
  Luke Diamand, Martin Ågren, Masaya Suzuki, Matheus Tavares,
  Matthew Rogers, Miriam Rubio, Paolo Bonzini, Philippe Blain,
  Pranit Bauva, Ralf Thielow, René Scharfe, SZEDER Gábor,
  Tanushree Tumane, and Taylor Blau.

----------------------------------------------------------------

Git 2.26 Release Notes (draft)
==============================

Updates since v2.25
-------------------

Backward compatibility notes

 * "git rebase" uses a different backend that is based on the 'merge'
   machinery by default.  There are a few known differences in the
   behaviour from the traditional machniery based on patch+apply.

   If your workflow is negatively affected by this change, please
   report it to git@vger.kernel.org so that we can take a look into
   it.  After doing so, you can set the 'rebase.backend' configuration
   variable to 'apply', in order to use the old default behaviour in
   the meantime.


UI, Workflows & Features

 * Sample credential helper for using .netrc has been updated to work
   out of the box.

 * gpg.minTrustLevel configuration variable has been introduced to
   tell various signature verification codepaths the required minimum
   trust level.

 * The command line completion (in contrib/) learned to complete
   subcommands and arguments to "git worktree".

 * Disambiguation logic to tell revisions and pathspec apart has been
   tweaked so that backslash-escaped glob special characters do not
   count in the "wildcards are pathspec" rule.

 * One effect of specifying where the GIT_DIR is (either with the
   environment variable, or with the "git --git-dir=<where> cmd"
   option) is to disable the repository discovery.  This has been
   placed a bit more stress in the documentation, as new users often
   get confused.

 * Two help messages given when "git add" notices the user gave it
   nothing to add have been updated to use advise() API.

 * A new version of fsmonitor-watchman hook has been introduced, to
   avoid races.

 * "git config" learned to show in which "scope", in addition to in
   which file, each config setting comes from.

 * The basic 7 colors learned the brighter counterparts
   (e.g. "brightred").

 * "git sparse-checkout" learned a new "add" subcommand.

 * A configuration element used for credential subsystem can now use
   wildcard pattern to specify for which set of URLs the entry
   applies.

 * "git clone --recurse-submodules --single-branch" now uses the same
   single-branch option when cloning the submodules.

 * "git rm" and "git stash" learns the new "--pathspec-from-file"
   option.

 * "git am --short-current-patch" is a way to show the piece of e-mail
   for the stopped step, which is not suitable to directly feed "git
   apply" (it is designed to be a good "git am" input).  It learned a
   new option to show only the patch part.

 * Handling of conflicting renames in merge-recursive have further
   been made consistent with how existing codepaths try to mimic what
   is done to add/add conflicts.


Performance, Internal Implementation, Development Support etc.

 * Tell .editorconfig that in this project, *.txt files are indented
   with tabs.

 * The test-lint machinery knew to check "VAR=VAL shell_function"
   construct, but did not check "VAR= shell_funciton", which has been
   corrected.

 * Replace "git config --bool" calls with "git config --type=bool" in
   sample templates.

 * The effort to move "git-add--interactive" to C continues.

 * Improve error message generation for "git submodule add".

 * Preparation of test scripts for the day when the object names will
   use SHA-256 continues.

 * Warn programmers about pretend_object_file() that allows the code
   to tentatively use in-core objects.

 * The way "git pack-objects" reuses objects stored in existing pack
   to generate its result has been improved.

 * The transport protocol version 2 becomes the default one.

 * Traditionally, we avoided threaded grep while searching in objects
   (as opposed to files in the working tree) as accesses to the object
   layer is not thread-safe.  This limitation is getting lifted.

 * "git rebase -i" (and friends) used to unnecessarily check out the
   tip of the branch to be rebased, which has been corrected.

 * A low-level API function get_oid(), that accepts various ways to
   name an object, used to issue end-user facing error messages
   without l10n, which has been updated to be translatable.

 * Unneeded connectivity check is now disabled in a partial clone when
   fetching into it.

 * Some rough edges in the sparse-checkout feature, especially around
   the cone mode, have been cleaned up.

 * The diff-* plumbing family of subcommands now pay attention to the
   diff.wsErrorHighlight configuration, which has been ignored before;
   this allows "git add -p" to also show the whitespace problems to
   the end user.

 * Some codepaths were given a repository instance as a parameter to
   work in the repository, but passed the_repository instance to its
   callees, which has been cleaned up (somewhat).

 * Memory footprint and performance of "git name-rev" has been
   improved.

 * The object reachability bitmap machinery and the partial cloning
   machinery were not prepared to work well together, because some
   object-filtering criteria that partial clones use inherently rely
   on object traversal, but the bitmap machinery is an optimization
   to bypass that object traversal.  There however are some cases
   where they can work together, and they were taught about them.

 * "git rebase" has learned to use the merge backend (i.e. the
   machinery that drives "rebase -i") by default, while allowing
   "--apply" option to use the "apply" backend (e.g. the moral
   equivalent of "format-patch piped to am").  The rebase.backend
   configuration variable can be set to customize.

 * Underlying machinery of "git bisect--helper" is being refactored
   into pieces that are more easily reused.


Fixes since v2.25
-----------------

 * "git commit" gives output similar to "git status" when there is
   nothing to commit, but without honoring the advise.statusHints
   configuration variable, which has been corrected.

 * has_object_file() said "no" given an object registered to the
   system via pretend_object_file(), making it inconsistent with
   read_object_file(), causing lazy fetch to attempt fetching an
   empty tree from promisor remotes.

 * Complete an update to tutorial that encourages "git switch" over
   "git checkout" that was done only half-way.

 * C pedantry ;-) fix.

 * The code that tries to skip over the entries for the paths in a
   single directory using the cache-tree was not careful enough
   against corrupt index file.

 * Reduce unnecessary round-trip when running "ls-remote" over the
   stateless RPC mechanism.

 * "git restore --staged" did not correctly update the cache-tree
   structure, resulting in bogus trees to be written afterwards, which
   has been corrected.

 * The code recently added to move to the entry beyond the ones in the
   same directory in the index in the sparse-cone mode did not count
   the number of entries to skip over incorrectly, which has been
   corrected.

 * Rendering by "git log --graph" of ancestry lines leading to a merge
   commit were made suboptimal to waste vertical space a bit with a
   recent update, which has been corrected.

 * Work around test breakages caused by custom regex engine used in
   libasan, when address sanitizer is used with more recent versions
   of gcc and clang.

 * Minor bugfixes to "git add -i" that has recently been rewritten in C.
   (merge 849e43cc18 js/builtin-add-i-cmds later to maint).

 * "git fetch --refmap=" option has got a better documentation.

 * "git checkout X" did not correctly fail when X is not a local
   branch but could name more than one remote-tracking branches
   (i.e. to be dwimmed as the starting point to create a corresponding
   local branch), which has been corrected.
   (merge fa74180d08 am/checkout-file-and-ref-ref-ambiguity later to maint).

 * Corner case bugs in "git clean" that stems from a (necessarily for
   performance reasons) awkward calling convention in the directory
   enumeration API has been corrected.

 * A fetch that is told to recursively fetch updates in submodules
   inevitably produces reams of output, and it becomes hard to spot
   error messages.  The command has been taught to enumerate
   submodules that had errors at the end of the operation.
   (merge 0222540827 es/fetch-show-failed-submodules-atend later to maint).

 * The "--recurse-submodules" option of various subcommands did not
   work well when run in an alternate worktree, which has been
   corrected.
   (merge a9472afb63 pb/recurse-submodule-in-worktree-fix later to maint).

 * Futureproofing a test not to depend on the current implementation
   detail.

 * Running "git rm" on a submodule failed unnecessarily when
   .gitmodules is only cache-dirty, which has been corrected.
   (merge 7edee32985 dt/submodule-rm-with-stale-cache later to maint).

 * C pedantry ;-) fix.
   (merge cf82bff73f jk/clang-sanitizer-fixes later to maint).

 * "git grep --no-index" should not get affected by the contents of
   the .gitmodules file but when "--recurse-submodules" is given or
   the "submodule.recurse" variable is set, it did.  Now these
   settings are ignored in the "--no-index" mode.

 * Technical details of the bundle format has been documented.

 * Unhelpful warning messages during documentation build have been squelched.

 * "git rebase -i" identifies existing commits in its todo file with
   their abbreviated object name, which could become ambigous as it
   goes to create new commits, and has a mechanism to avoid ambiguity
   in the main part of its execution.  A few other cases however were
   not covered by the protection against ambiguity, which has been
   corrected.
   (merge 26027625dd js/rebase-i-with-colliding-hash later to maint).

 * Allow the rebase.missingCommitsCheck configuration to kick in when
   "rebase --edit-todo" and "rebase --continue" restarts the procedure.
   (merge 5a5445d878 ag/edit-todo-drop-check later to maint).

 * The way "git submodule status" reports an initialized but not yet
   populated submodule has not been reimplemented correctly when a
   part of the "git submodule" command was rewritten in C, which has
   been corrected.
   (merge f38c92452d pk/status-of-uncloned-submodule later to maint).

 * The code to automatically shrink the fan-out in the notes tree had
   an off-by-one bug, which has been killed.
   (merge dbc27477ff jh/notes-fanout-fix later to maint).

 * The index-pack code now diagnoses a bad input packstream that
   records the same object twice when it is used as delta base; the
   code used to declare a software bug when encountering such an
   input, but it is an input error.
   (merge a21781011f jk/index-pack-dupfix later to maint).

 * The code to compute the commit-graph has been taught to use a more
   robust way to tell if two object directories refer to the same
   thing.
   (merge a7df60cac8 tb/commit-graph-object-dir later to maint).

 * "git remote rename X Y" needs to adjust configuration variables
   (e.g. branch.<name>.remote) whose value used to be X to Y.
   branch.<name>.pushRemote is now also updated.

 * Update to doc-diff.
   (merge 2607d39da3 jk/doc-diff-parallel later to maint).

 * Doc markup fix.
   (merge 0aa6ce3094 jk/push-option-doc-markup-fix later to maint).

 * "git check-ignore" did not work when the given path is explicitly
   marked as not ignored with a negative entry in the .gitignore file.
   (merge 7ec8125fba en/check-ignore later to maint).

 * The merge-recursive machinery failed to refresh the cache entry for
   a merge result in a couple of places, resulting in an unnecessary
   merge failure, which has been fixed.
   (merge fb1c18fc46 en/t3433-rebase-stat-dirty-failure later to maint).

 * Fix for a bug revealed by a recent change to make the protocol v2
   the default.
   (merge 3e96c66805 ds/partial-clone-fixes later to maint).

 * In rare cases "git worktree add <path>" could think that <path>
   was already a registered worktree even when it wasn't and refuse
   to add the new worktree. This has been corrected.
   (merge bb69b3b009 es/worktree-avoid-duplication-fix later to maint).

 * "git push" should stop from updating a branch that is checked out
   when receive.denyCurrentBranch configuration is set, but it failed
   to pay attention to checkouts in secondary worktrees.  This has
   been corrected.
   (merge 4d864895a2 hv/receive-denycurrent-everywhere later to maint).

 * "git rebase BASE BRANCH" rebased/updated the tip of BRANCH and
   checked it out, even when the BRANCH is checked out in a different
   worktree.  This has been corrected.
   (merge b5cabb4a96 es/do-not-let-rebase-switch-to-protected-branch later to maint).

 * "git describe" in a repository with multiple root commits sometimes
   gave up looking for the best tag to describe a given commit with
   too early, which has been adjusted.

 * "git merge signed-tag" while lacking the public key started to say
   "No signature", which was utterly wrong.  This regression has been
   reverted.
   (merge 0106b1d4be hi/gpg-use-check-signature later to maint).

 * MinGW's poll() emulation has been improved.
   (merge 94f4d01932 am/mingw-poll-fix later to maint).

 * "git show" and others gave an object name in raw format in its
   error output, which has been corrected to give it in hex.
   (merge 237a28173f hd/show-one-mergetag-fix later to maint).

 * "git fetch" over HTTP walker protocol did not show any progress
   output.  We inherently do not know how much work remains, but still
   we can show something not to bore users.
   (merge 7655b4119d rs/show-progress-in-dumb-http-fetch later to maint).

 * Both "git ls-remote -h" and "git grep -h" give short usage help,
   like any other Git subcommand, but it is not unreasonable to expect
   that the former would behave the same as "git ls-remote --head"
   (there is no other sensible behaviour for the latter).  The
   documentation has been updated in an attempt to clarify this.
   (merge 1ff466c018 jc/doc-single-h-is-for-help later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 26f924d50e en/simplify-check-updates-in-unpack-trees later to maint).
   (merge d0d0a357a1 am/update-pathspec-f-f-tests later to maint).
   (merge f94f7bd00d am/test-pathspec-f-f-error-cases later to maint).
   (merge c513a958b6 ss/t6025-modernize later to maint).
   (merge b441717256 dl/test-must-fail-fixes later to maint).
   (merge d031049da3 mt/sparse-checkout-doc-update later to maint).
   (merge 145136a95a jc/skip-prefix later to maint).
   (merge 5290d45134 jk/alloc-cleanups later to maint).
   (merge 7a9f8ca805 rs/parse-options-concat-dup later to maint).
   (merge 517b60564e rs/strbuf-insertstr later to maint).
   (merge f696a2b1c8 jk/mailinfo-cleanup later to maint).
   (merge 076ee3e8a2 js/test-write-junit-xml-fix later to maint).
   (merge de26f02db1 js/test-avoid-pipe later to maint).
   (merge bfe2bbb47f js/test-unc-fetch later to maint).
   (merge 08809c09aa js/mingw-open-in-gdb later to maint).
   (merge cc4f2eb828 jk/doc-credential-helper later to maint).
   (merge e0020b2f82 es/outside-repo-errmsg-hints later to maint).
   (merge a2dc43414c es/doc-mentoring later to maint).
   (merge 539052f42f jk/run-command-formatfix later to maint).
   (merge 02bbbe9df9 es/worktree-cleanup later to maint).
   (merge 2ce6d075fa rs/micro-cleanups later to maint).
   (merge 27f182b3fc rs/blame-typefix-for-fingerprint later to maint).
   (merge 3c29e21eb0 ma/test-cleanup later to maint).
   (merge 240fc04f81 ag/rebase-remove-redundant-code later to maint).
   (merge 7f487ce062 js/ci-windows-update later to maint).
   (merge d68ce906c7 rs/commit-graph-code-simplification later to maint).
   (merge a51d9e8f07 rj/t1050-use-test-path-is-file later to maint).
   (merge fd0bc17557 kk/complete-diff-color-moved later to maint).
   (merge 65bf820d0e en/test-cleanup later to maint).

----------------------------------------------------------------

Changes since v2.25.0 are as follows:

Abhishek Kumar (2):
      lib-log-graph: consolidate test_cmp_graph logic
      lib-log-graph: consolidate colored graph cmp logic

Alban Gruin (4):
      rebase -i: stop checking out the tip of the branch to rebase
      sequencer: move check_todo_list_from_file() to rebase-interactive.c
      rebase-interactive: warn if commit is dropped with `rebase --edit-todo'
      builtin/rebase: remove a call to get_oid() on `options.switch_to'

Alexandr Miloslavskiy (14):
      parse_branchname_arg(): extract part as new function
      checkout: don't revert file on ambiguous tracking branches
      t: add tests for error conditions with --pathspec-from-file
      t: fix quotes tests for --pathspec-from-file
      t: directly test parse_pathspec_file()
      doc: rm: synchronize <pathspec> description
      rm: support the --pathspec-from-file option
      doc: stash: split options from description (1)
      doc: stash: split options from description (2)
      doc: stash: document more options
      doc: stash: synchronize <pathspec> description
      stash: eliminate crude option parsing
      stash push: support the --pathspec-from-file option
      mingw: workaround for hangs when sending STDIN

Benno Evers (1):
      describe: don't abort too early when searching tags

Bert Wesarg (6):
      pull --rebase/remote rename: document and honor single-letter abbreviations rebase types
      remote: clean-up by returning early to avoid one indentation
      remote: clean-up config callback
      remote rename/remove: handle branch.<name>.pushRemote config values
      config: provide access to the current line number
      remote rename/remove: gently handle remote.pushDefault config

David Turner (1):
      git rm submodule: succeed if .gitmodules index stat info is zero

Denton Liu (34):
      t/lib-git-p4: use test_path_is_missing()
      t0000: replace test_must_fail with run_sub_test_lib_test_err()
      t0003: use named parameters in attr_check()
      t0003: use test_must_be_empty()
      t0003: don't use `test_must_fail attr_check`
      t0020: don't use `test_must_fail has_cr`
      t0020: use ! check_packed_refs_marked
      t1306: convert `test_might_fail rm` to `rm -f`
      t1307: reorder `nongit test_must_fail`
      t1409: let sed open its own input file
      t1409: use test_path_is_missing()
      t1501: remove use of `test_might_fail cp`
      t1507: stop losing return codes of git commands
      t1507: run commands within test_expect_success
      t1507: inline full_name()
      contrib/credential/netrc: make PERL_PATH configurable
      contrib/credential/netrc: work outside a repo
      t2018: remove trailing space from test description
      t2018: add space between function name and ()
      t2018: improve style of if-statement
      .mailmap: fix erroneous authorship for Johannes Schindelin
      t2018: be more discerning when checking for expected exit codes
      t2018: teach do_checkout() to accept `!` arg
      t2018: don't lose return code of git commands
      t2018: replace "sha" with "oid"
      t3030: use test_path_is_missing()
      t3310: extract common notes_merge_files_gone()
      t3415: stop losing return codes of git commands
      t3415: increase granularity of test_auto_{fixup,squash}()
      t3419: stop losing return code of git command
      t3507: fix indentation
      t3507: use test_path_is_missing()
      t4124: only mark git command with test_must_fail
      .mailmap: map Yi-Jyun Pan's email

Derrick Stolee (26):
      unpack-trees: correctly compute result count
      graph: add test to demonstrate horizontal line bug
      graph: fix collapse of multiple edges
      clean: demonstrate a bug with pathspecs
      fetch: document and test --refmap=""
      t1091: use check_files to reduce boilerplate
      t1091: improve here-docs
      sparse-checkout: create leading directories
      clone: fix --sparse option with URLs
      sparse-checkout: cone mode does not recognize "**"
      sparse-checkout: detect short patterns
      sparse-checkout: warn on globs in cone patterns
      sparse-checkout: properly match escaped characters
      sparse-checkout: write escaped patterns in cone mode
      sparse-checkout: unquote C-style strings over --stdin
      sparse-checkout: use C-style quotes in 'list' subcommand
      sparse-checkout: escape all glob characters on write
      sparse-checkout: improve docs around 'set' in cone mode
      sparse-checkout: fix cone mode behavior mismatch
      sparse-checkout: extract add_patterns_from_input()
      sparse-checkout: extract pattern update from 'set' subcommand
      sparse-checkout: create 'add' subcommand
      sparse-checkout: work with Windows paths
      sparse-checkout: allow one-character directories in cone mode
      partial-clone: demonstrate bugs in partial fetch
      partial-clone: avoid fetching when looking for objects

Elijah Newren (35):
      unpack-trees: exit check_updates() early if updates are not wanted
      string-list: note in docs that callers can specify sorting function
      dir: treat_leading_path() and read_directory_recursive(), round 2
      git-rebase.txt: update description of --allow-empty-message
      t3404: directly test the behavior of interest
      rebase (interactive-backend): make --keep-empty the default
      rebase (interactive-backend): fix handling of commits that become empty
      t3406: simplify an already simple test
      rebase, sequencer: remove the broken GIT_QUIET handling
      rebase: make sure to pass along the quiet flag to the sequencer
      rebase: fix handling of restrict_revision
      t3432: make these tests work with either am or merge backends
      rebase: allow more types of rebases to fast-forward
      git-rebase.txt: add more details about behavioral differences of backends
      rebase: move incompatibility checks between backend options a bit earlier
      rebase: add an --am option
      git-prompt: change the prompt for interactive-based rebases
      rebase: drop '-i' from the reflog for interactive-based rebases
      rebase tests: mark tests specific to the am-backend with --am
      rebase tests: repeat some tests using the merge backend instead of am
      rebase: make the backend configurable via config setting
      rebase: change the default backend from "am" to "merge"
      rebase: rename the two primary rebase backends
      check-ignore: fix documentation and implementation to match
      t3433: new rebase testcase documenting a stat-dirty-like failure
      merge-recursive: fix the refresh logic in update_file_flags
      merge-recursive: apply collision handling unification to recursive case
      t602[1236], t6034: modernize test formatting
      t6020, t6022, t6035: update merge tests to use test helper functions
      t3035: prefer test_must_fail to bash negation for git commands
      t6022, t6046: test expected behavior instead of testing a proxy for it
      t6020: new test with interleaved lexicographic ordering of directories
      sequencer: clear state upon dropping a become-empty commit
      git-rebase.txt: highlight backend differences with commit rewording
      t6022, t6046: fix flaky files-are-updated checks

Emily Shaffer (9):
      unpack-trees: watch for out-of-range index position
      fetch: emphasize failure during submodule fetch
      MyFirstContribution: add avenues for getting help
      submodule: add newline on invalid submodule error
      MyFirstContribution: rephrase contact info
      prefix_path: show gitdir when arg is outside repo
      submodule--helper: use C99 named initializer
      clone: pass --single-branch during --recurse-submodules
      prefix_path: show gitdir if worktree unavailable

Eric Sunshine (6):
      t3400: make test clean up after itself
      rebase: refuse to switch to branch already checked out elsewhere
      worktree: drop unused code from get_main_worktree()
      worktree: improve find_worktree() documentation
      worktree: add utility to find worktree by pathname
      worktree: don't allow "add" validation to be fooled by suffix matching

Eyal Soha (3):
      color.c: refactor color_output arguments
      color.c: support bright aixterm colors
      color.c: alias RGB colors 8-15 to aixterm colors

Hans Jerry Illikainen (2):
      editorconfig: indent text files with tabs
      gpg-interface: add minTrustLevel as a configuration option

Harald van Dijk (1):
      show_one_mergetag: print non-parent in hex form.

Hariom Verma (4):
      get_main_worktree(): allow it to be called in the Git directory
      t5509: use a bare repository for test push target
      receive.denyCurrentBranch: respect all worktrees
      t2402: test worktree path when called in .git directory

Heba Waly (5):
      commit: honor advice.statusHints when rejecting an empty commit
      doc/gitcore-tutorial: fix prose to match example command
      add: use advise function to display hints
      git: update documentation for --git-dir
      add: change advice config variables used by the add API

Jacques Bodin-Hullin (1):
      parse-options: lose an unnecessary space in an error message

Jeff King (70):
      builtin/pack-objects: report reused packfile objects
      packfile: expose get_delta_base()
      restore: invalidate cache-tree when removing entries with --staged
      transport: don't flush when disconnecting stateless-rpc helper
      dir: restructure in a way to avoid passing around a struct dirent
      dir: point treat_leading_path() warning to the right place
      Makefile: use compat regex with SANITIZE=address
      t4018: drop "debugging" cat from hunk-header tests
      t7800: don't rely on reuse_worktree_file()
      ewah/bitmap: introduce bitmap_word_alloc()
      pack-bitmap: introduce bitmap_walk_contains()
      pack-bitmap: uninteresting oid can be outside bitmapped packfile
      pack-bitmap: simplify bitmap_has_oid_in_uninteresting()
      csum-file: introduce hashfile_total()
      pack-objects: introduce pack.allowPackReuse
      builtin/pack-objects: introduce obj_is_packed()
      pack-objects: improve partial packfile reuse
      pack-objects: add checks for duplicate objects
      pack-bitmap: don't rely on bitmap_git->reuse_objects
      sparse-checkout: fix documentation typo for core.sparseCheckoutCone
      verify_filename(): handle backslashes in "wildcards are pathspecs" rule
      merge-recursive: silence -Wxor-used-as-pow warning
      t1400: avoid "test" string comparisons
      t1506: drop space after redirection operator
      avoid computing zero offsets from NULL pointer
      xdiff: avoid computing non-zero offset from NULL pointer
      obstack: avoid computing offsets from NULL pointer
      doc: drop "explicitly given" from push.default description
      sha1-name: mark get_oid() error messages for translation
      normalize_path_copy(): document "dst" size expectations
      walker_fetch(): avoid raw array length computation
      traverse_trees(): use stack array for name entries
      diff: move diff.wsErrorHighlight to "basic" config
      tree-walk.c: break circular dependency with unpack-trees
      index-pack: downgrade twice-resolved REF_DELTA to die()
      mailinfo: treat header values as C strings
      mailinfo: simplify parsing of header values
      mailinfo: be more liberal with header whitespace
      mailinfo: factor out some repeated header handling
      pack-bitmap: factor out type iterator initialization
      pack-bitmap: fix leak of haves/wants object lists
      rev-list: fallback to non-bitmap traversal when filtering
      pack-bitmap: refuse to do a bitmap traversal with pathspecs
      rev-list: factor out bitmap-optimized routines
      rev-list: make --count work with --objects
      rev-list: allow bitmaps when counting objects
      t5310: factor out bitmap traversal comparison
      rev-list: allow commit-only bitmap traversals
      pack-bitmap: basic noop bitmap filter infrastructure
      rev-list: use bitmap filters for traversal
      bitmap: add bitmap_unset() function
      pack-bitmap: implement BLOB_NONE filtering
      pack-bitmap: implement BLOB_LIMIT filtering
      pack-objects: support filters with bitmaps
      doc: move credential helper info into gitcredentials(7)
      doc/config/push: use longer "--" line for preformatted example
      doc-diff: use single-colon rule in rendering Makefile
      run-command.h: fix mis-indented struct member
      nth_packed_object_oid(): use customary integer return
      pack-objects: read delta base oid into object_id struct
      pack-objects: convert oe_set_delta_ext() to use object_id
      pack-objects: use object_id struct in pack-reuse code
      pack-bitmap: use object_id when loading on-disk bitmaps
      pack-check: convert "internal error" die to a BUG()
      pack-check: push oid lookup into loop
      packed_object_info(): use object_id for returning delta base
      packed_object_info(): use object_id internally for delta base
      packfile: drop nth_packed_object_sha1()
      config.mak.dev: re-enable -Wformat-zero-length
      remote: drop "explicit" parameter from remote_ref_for_branch()

Jiang Xin (1):
      i18n: unmark a message in rebase.c

Johan Herland (2):
      t3305: check notes fanout more carefully and robustly
      notes.c: fix off-by-one error when decreasing notes fanout

Johannes Berg (1):
      pack-format: correct multi-pack-index description

Johannes Schindelin (33):
      built-in add -p: prepare for patch modes other than "stage"
      built-in add -p: implement the "stash" and "reset" patch modes
      legacy stash -p: respect the add.interactive.usebuiltin setting
      built-in stash: use the built-in `git add -p` if so configured
      built-in add -p: implement the "checkout" patch modes
      built-in add -p: implement the "worktree" patch modes
      commit --interactive: make it work with the built-in `add -i`
      t3701: adjust difffilter test
      built-in add -p: support interactive.diffFilter
      built-in add -p: handle diff.algorithm
      terminal: make the code of disable_echo() reusable
      terminal: accommodate Git for Windows' default terminal
      terminal: add a new function to read a single keystroke
      built-in add -p: respect the `interactive.singlekey` config setting
      built-in add -p: handle Escape sequences in interactive.singlekey mode
      built-in add -p: handle Escape sequences more efficiently
      ci: include the built-in `git add -i` in the `linux-gcc` job
      msvc: accommodate for vcpkg's upgrade to OpenSSL v1.1.x
      built-in add -i: do not try to `patch`/`diff` an empty list of files
      built-in add -i: accept open-ended ranges again
      parse_insn_line(): improve error message when parsing failed
      rebase -i: re-fix short SHA-1 collision
      rebase -i: also avoid SHA-1 collisions with missingCommitsCheck
      ci: ignore rubygems warning in the "Documentation" job
      convert: fix typo
      tests: fix --write-junit-xml with subshells
      t9001, t9116: avoid pipes
      t5580: test cloning without file://, test fetching via UNC paths
      mingw: add a helper function to attach GDB to the current process
      t/lib-httpd: avoid using macOS' sed
      ci: prevent `perforce` from being quarantined
      Azure Pipeline: switch to the latest agent pools
      t5537: adjust test_oid label

Johannes Sixt (1):
      t3504: do check for conflict marker after failed cherry-pick

Jonathan Nieder (9):
      sha1-file: document how to use pretend_object_file
      fetch test: avoid use of "VAR= cmd" with a shell function
      t/check-non-portable-shell: detect "FOO= shell_func", too
      fetch test: mark test of "skipping" haves as v0-only
      fetch test: use more robust test for filtered objects
      config doc: protocol.version is not experimental
      test: request GIT_TEST_PROTOCOL_VERSION=0 when appropriate
      protocol test: let protocol.version override GIT_TEST_PROTOCOL_VERSION
      fetch: default to protocol version 2

Jonathan Tan (4):
      sha1-file: remove OBJECT_INFO_SKIP_CACHED
      t5616: make robust to delta base change
      connected: verify promisor-ness of partial clone
      fetch: forgo full connectivity check if --filter

Junio C Hamano (19):
      The first batch post 2.25 cycle
      merge-recursive: use subtraction to flip stage
      .mailmap: fix GGG authoship screwup
      The second batch
      C: use skip_prefix() to avoid hardcoded string length
      The third batch for 2.26
      The fourth batch for 2.26
      The fifth batch for 2.26
      Git 2.25.1
      The sixth batch for 2.26
      rev-list --count: comment on the use of count_right++
      The seventh batch for 2.26
      Documentation: clarify that `-h` alone stands for `help`
      Revert "gpg-interface: prefer check_signature() for GPG verification"
      The eighth batch for 2.26
      Git 2.26-rc0
      Git 2.26-rc1
      Hopefully the final batch before -rc2
      Git 2.26-rc2

Kevin Willford (4):
      fsmonitor: change last update timestamp on the index_state to opaque token
      fsmonitor: handle version 2 of the hooks that will use opaque token
      fsmonitor: add fsmonitor hook scripts for version 2
      fsmonitor: update documentation for hook version and watchman hooks

Kir Kolyshkin (1):
      completion: add diff --color-moved[-ws]

Kyle Meyer (2):
      submodule add: show 'add --dry-run' stderr when aborting
      submodule foreach: replace $path with $sm_path in example

Lucius Hu (1):
      templates: fix deprecated type option `--bool`

Luke Diamand (7):
      git-p4: make closeStreams() idempotent
      git-p4: add P4CommandException to report errors talking to Perforce
      git-p4: disable some pylint warnings, to get pylint output to something manageable
      git-p4: create helper function importRevisions()
      git-p4: cleanup better on error exit
      git-p4: check for access to remote host earlier
      git-p4: avoid leak of file handle when cloning

Martin Ågren (7):
      git-filter-branch.txt: wrap "maths" notation in backticks
      name-rev: rewrite create_or_update_name()
      diff-options.txt: avoid "regex" overload in example
      t4117: check for files using `test_path_is_file`
      t9810: drop debug `cat` call
      t: drop debug `cat` calls
      t1091: don't grep for `strerror()` string

Masaya Suzuki (1):
      doc: describe Git bundle format

Matheus Tavares (21):
      grep: fix race conditions on userdiff calls
      grep: fix race conditions at grep_submodule()
      grep: fix racy calls in grep_objects()
      replace-object: make replace operations thread-safe
      object-store: allow threaded access to object reading
      grep: replace grep_read_mutex by internal obj read lock
      submodule-config: add skip_if_read option to repo_read_gitmodules()
      grep: allow submodule functions to run in parallel
      grep: protect packed_git [re-]initialization
      grep: re-enable threads in non-worktree case
      grep: move driver pre-load out of critical section
      grep: use no. of cores as the default no. of threads
      doc: sparse-checkout: mention --cone option
      completion: add support for sparse-checkout
      diff: make diff_populate_filespec() honor its repo argument
      cache-tree: use given repo's hash_algo at verify_one()
      pack-check: use given repo's hash_algo at verify_packfile()
      streaming: allow open_istream() to handle any repo
      sha1-file: pass git_hash_algo to write_object_file_prepare()
      sha1-file: pass git_hash_algo to hash_object_file()
      sha1-file: allow check_object_signature() to handle any repo

Matthew Rogers (10):
      config: fix typo in variable name
      t1300: fix over-indented HERE-DOCs
      t1300: create custom config file without special characters
      config: make scope_name non-static and rename it
      config: split repo scope to local and worktree
      config: clarify meaning of command line scoping
      config: preserve scope in do_git_config_sequence
      config: teach git_config_source to remember its scope
      submodule-config: add subomdule config scope
      config: add '--show-scope' to print the scope of a config value

Miriam Rubio (3):
      bisect--helper: convert `vocab_*` char pointers to char arrays
      bisect: use the standard 'if (!var)' way to check for 0
      bisect: add enum to represent bisect returning codes

Paolo Bonzini (5):
      parse-options: add testcases for OPT_CMDMODE()
      parse-options: convert "command mode" to a flag
      am: convert "resume" variable to a struct
      am: support --show-current-patch=raw as a synonym for--show-current-patch
      am: support --show-current-patch=diff to retrieve .git/rebase-apply/patch

Peter Kaestle (3):
      t7400: add a testcase for submodule status on empty dirs
      submodule: fix status of initialized but not cloned submodules
      t7400: testcase for submodule status on unregistered inner git repos

Philippe Blain (5):
      t7410: rename to t2405-worktree-submodule.sh
      t2405: use git -C and test_commit -C instead of subshells
      t2405: clarify test descriptions and simplify test
      submodule.c: use get_git_dir() instead of get_git_common_dir()
      grep: ignore --recurse-submodules if --no-index is given

Pranit Bauva (7):
      bisect--helper: return error codes from `cmd_bisect__helper()`
      bisect: libify `exit_if_skipped_commits` to `error_if_skipped*` and its dependents
      bisect: libify `bisect_checkout`
      bisect: libify `check_merge_bases` and its dependents
      bisect: libify `check_good_are_ancestors_of_bad` and its dependents
      bisect: libify `handle_bad_merge_base` and its dependents
      bisect: libify `bisect_next_all`

Ralf Thielow (2):
      submodule.c: mark more strings for translation
      rebase-interactive.c: silence format-zero-length warnings

Rasmus Jonsson (1):
      t1050: replace test -f with test_path_is_file

René Scharfe (21):
      name-rev: remove unused typedef
      name-rev: respect const qualifier
      name-rev: don't leak path copy in name_ref()
      name-rev: don't _peek() in create_or_update_name()
      name-rev: put struct rev_name into commit slab
      name-rev: factor out get_parent_name()
      name-rev: pre-size buffer in get_parent_name()
      name-rev: generate name strings only if they are better
      name-rev: release unused name strings
      name-rev: sort tip names before applying
      strbuf: add and use strbuf_insertstr()
      mailinfo: don't insert header prefix for handle_content_type()
      parse-options: use COPY_ARRAY in parse_options_concat()
      parse-options: factor out parse_options_count()
      parse-options: const parse_options_concat() parameters
      parse-options: simplify parse_options_dup()
      quote: use isalnum() to check for alphanumeric characters
      use strpbrk(3) to search for characters from a given set
      blame: provide type of fingerprints pointer
      commit-graph: use progress title directly
      remote-curl: show progress for fetches over dumb HTTP

SZEDER Gábor (6):
      t9902-completion: add tests for the __git_find_on_cmdline() helper
      completion: clean up the __git_find_on_cmdline() helper function
      completion: return the index of found word from __git_find_on_cmdline()
      completion: simplify completing 'git worktree' subcommands and options
      completion: list existing working trees for 'git worktree' subcommands
      completion: list paths and refs for 'git worktree add'

Shourya Shukla (2):
      t6025: modernize style
      t6025: use helpers to replace test -f <path>

Tanushree Tumane (2):
      bisect--helper: change `retval` to `res`
      bisect--helper: introduce new `decide_next()` function

Taylor Blau (5):
      t5318: don't pass non-object directory to '--object-dir'
      commit-graph.h: store an odb in 'struct write_commit_graph_context'
      commit-graph.h: store object directory in 'struct commit_graph'
      commit-graph.c: remove path normalization, comparison
      commit-graph.h: use odb in 'load_commit_graph_one_fd_st'

brian m. carlson (53):
      run-command: avoid undefined behavior in exists_in_PATH
      t4054: make hash-size independent
      t4066: compute index line in diffs
      t4134: compute appropriate length constant
      t4200: make hash size independent
      t4202: abstract away SHA-1-specific constants
      t4204: make hash size independent
      t4300: abstract away SHA-1-specific constants
      t5318: update for SHA-256
      t5319: change invalid offset for SHA-256 compatibility
      t5319: make test work with SHA-256
      t5324: make hash size independent
      t5504: make hash algorithm independent
      t5510: make hash size independent
      t5512: abstract away SHA-1-specific constants
      t5530: compute results based on object length
      t5537: make hash size independent
      t5540: make hash size independent
      t5562: use $ZERO_OID
      t5601: switch into repository to hash object
      t5604: make hash independent
      docs: use "currently" for the present time
      doc: move author and committer information to git-commit(1)
      docs: expand on possible and recommended user config options
      doc: provide guidance on user.name format
      doc: dissuade users from trying to ignore tracked files
      docs: mention when increasing http.postBuffer is valuable
      t/lib-pack: support SHA-256
      t3206: make hash size independent
      t3308: make test work with SHA-256
      t3309: make test work with SHA-256
      t3310: make test work with SHA-256
      t3311: make test work with SHA-256
      t4013: make test hash independent
      t4211: move SHA-1-specific test cases into a directory
      t4211: add test cases for SHA-256
      t4060: make test work with SHA-256
      t5302: make hash size independent
      t5309: make test hash independent
      t5313: make test hash independent
      t5321: make test hash independent
      t5515: make test hash independent
      t5318: update for SHA-256
      t5607: make hash size independent
      t5703: make test work with SHA-256
      t6000: abstract away SHA-1-specific constants
      t6006: make hash size independent
      t6024: update for SHA-256
      mailmap: add an additional email address for brian m. carlson
      t1300: add test for urlmatch with multiple wildcards
      t0300: add tests for some additional cases
      credential: use the last matching username in the config
      credential: allow wildcard patterns when matching config


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.26.0-rc1
@ 2020-03-10 14:57  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-03-10 14:57 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.26.0-rc1 is now available for testing
at the usual places.  It is comprised of 453 non-merge commits
since v2.25.0, contributed by 47 people, 10 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.26.0-rc1' 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.25.0 are as follows.
Welcome to the Git development community!

  Abhishek Kumar, Benno Evers, Eyal Soha, Harald van Dijk,
  Jacques Bodin-Hullin, Kir Kolyshkin, Lucius Hu, Peter Kaestle,
  Rasmus Jonsson, and Shourya Shukla.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Alban Gruin, Alexandr Miloslavskiy, Bert Wesarg, brian
  m. carlson, David Turner, Denton Liu, Derrick Stolee, Elijah
  Newren, Emily Shaffer, Eric Sunshine, Hans Jerry Illikainen,
  Hariom Verma, Heba Waly, Jeff King, Johan Herland, Johannes Berg,
  Johannes Schindelin, Johannes Sixt, Jonathan Nieder, Jonathan
  Tan, Junio C Hamano, Kevin Willford, Kyle Meyer, Luke Diamand,
  Martin Ågren, Masaya Suzuki, Matheus Tavares, Matthew Rogers,
  Miriam Rubio, Paolo Bonzini, Philippe Blain, Pranit Bauva,
  Ralf Thielow, René Scharfe, SZEDER Gábor, Tanushree Tumane,
  and Taylor Blau.

----------------------------------------------------------------

Git 2.26 Release Notes (draft)
==============================

Updates since v2.25
-------------------

UI, Workflows & Features

 * Sample credential helper for using .netrc has been updated to work
   out of the box.

 * gpg.minTrustLevel configuration variable has been introduced to
   tell various signature verification codepaths the required minimum
   trust level.

 * The command line completion (in contrib/) learned to complete
   subcommands and arguments to "git worktree".

 * Disambiguation logic to tell revisions and pathspec apart has been
   tweaked so that backslash-escaped glob special characters do not
   count in the "wildcards are pathspec" rule.

 * One effect of specifying where the GIT_DIR is (either with the
   environment variable, or with the "git --git-dir=<where> cmd"
   option) is to disable the repository discovery.  This has been
   placed a bit more stress in the documentation, as new users often
   get confused.

 * Two help messages given when "git add" notices the user gave it
   nothing to add have been updated to use advise() API.

 * A new version of fsmonitor-watchman hook has been introduced, to
   avoid races.

 * "git config" learned to show in which "scope", in addition to in
   which file, each config setting comes from.

 * The basic 7 colors learned the brighter counterparts
   (e.g. "brightred").

 * "git sparse-checkout" learned a new "add" subcommand.

 * A configuration element used for credential subsystem can now use
   wildcard pattern to specify for which set of URLs the entry
   applies.

 * "git clone --recurse-submodules --single-branch" now uses the same
   single-branch option when cloning the submodules.

 * "git rm" and "git stash" learns the new "--pathspec-from-file"
   option.

 * "git am --short-current-patch" is a way to show the piece of e-mail
   for the stopped step, which is not suitable to directly feed "git
   apply" (it is designed to be a good "git am" input).  It learned a
   new option to show only the patch part.

 * Handling of conflicting renames in merge-recursive have further
   been made consistent with how existing codepaths try to mimic what
   is done to add/add conflicts.


Performance, Internal Implementation, Development Support etc.

 * Tell .editorconfig that in this project, *.txt files are indented
   with tabs.

 * The test-lint machinery knew to check "VAR=VAL shell_function"
   construct, but did not check "VAR= shell_funciton", which has been
   corrected.

 * Replace "git config --bool" calls with "git config --type=bool" in
   sample templates.

 * The effort to move "git-add--interactive" to C continues.

 * Improve error message generation for "git submodule add".

 * Preparation of test scripts for the day when the object names will
   use SHA-256 continues.

 * Warn programmers about pretend_object_file() that allows the code
   to tentatively use in-core objects.

 * The way "git pack-objects" reuses objects stored in existing pack
   to generate its result has been improved.

 * The transport protocol version 2 becomes the default one.

 * Traditionally, we avoided threaded grep while searching in objects
   (as opposed to files in the working tree) as accesses to the object
   layer is not thread-safe.  This limitation is getting lifted.

 * "git rebase -i" (and friends) used to unnecessarily check out the
   tip of the branch to be rebased, which has been corrected.

 * A low-level API function get_oid(), that accepts various ways to
   name an object, used to issue end-user facing error messages
   without l10n, which has been updated to be translatable.

 * Unneeded connectivity check is now disabled in a partial clone when
   fetching into it.

 * Some rough edges in the sparse-checkout feature, especially around
   the cone mode, have been cleaned up.

 * The diff-* plumbing family of subcommands now pay attention to the
   diff.wsErrorHighlight configuration, which has been ignored before;
   this allows "git add -p" to also show the whitespace problems to
   the end user.

 * Some codepaths were given a repository instance as a parameter to
   work in the repository, but passed the_repository instance to its
   callees, which has been cleaned up (somewhat).

 * Memory footprint and performance of "git name-rev" has been
   improved.

 * The object reachability bitmap machinery and the partial cloning
   machinery were not prepared to work well together, because some
   object-filtering criteria that partial clones use inherently rely
   on object traversal, but the bitmap machinery is an optimization
   to bypass that object traversal.  There however are some cases
   where they can work together, and they were taught about them.

 * "git rebase" has learned to use the merge backend (i.e. the
   machinery that drives "rebase -i") by default, while allowing
   "--apply" option to use the "apply" backend (e.g. the moral
   equivalent of "format-patch piped to am").  The rebase.backend
   configuration variable can be set to customize.

 * Underlying machinery of "git bisect--helper" is being refactored
   into pieces that are more easily reused.


Fixes since v2.25
-----------------

 * "git commit" gives output similar to "git status" when there is
   nothing to commit, but without honoring the advise.statusHints
   configuration variable, which has been corrected.

 * has_object_file() said "no" given an object registered to the
   system via pretend_object_file(), making it inconsistent with
   read_object_file(), causing lazy fetch to attempt fetching an
   empty tree from promisor remotes.

 * Complete an update to tutorial that encourages "git switch" over
   "git checkout" that was done only half-way.

 * C pedantry ;-) fix.

 * The code that tries to skip over the entries for the paths in a
   single directory using the cache-tree was not careful enough
   against corrupt index file.

 * Reduce unnecessary round-trip when running "ls-remote" over the
   stateless RPC mechanism.

 * "git restore --staged" did not correctly update the cache-tree
   structure, resulting in bogus trees to be written afterwards, which
   has been corrected.

 * The code recently added to move to the entry beyond the ones in the
   same directory in the index in the sparse-cone mode did not count
   the number of entries to skip over incorrectly, which has been
   corrected.

 * Rendering by "git log --graph" of ancestry lines leading to a merge
   commit were made suboptimal to waste vertical space a bit with a
   recent update, which has been corrected.

 * Work around test breakages caused by custom regex engine used in
   libasan, when address sanitizer is used with more recent versions
   of gcc and clang.

 * Minor bugfixes to "git add -i" that has recently been rewritten in C.
   (merge 849e43cc18 js/builtin-add-i-cmds later to maint).

 * "git fetch --refmap=" option has got a better documentation.

 * "git checkout X" did not correctly fail when X is not a local
   branch but could name more than one remote-tracking branches
   (i.e. to be dwimmed as the starting point to create a corresponding
   local branch), which has been corrected.
   (merge fa74180d08 am/checkout-file-and-ref-ref-ambiguity later to maint).

 * Corner case bugs in "git clean" that stems from a (necessarily for
   performance reasons) awkward calling convention in the directory
   enumeration API has been corrected.

 * A fetch that is told to recursively fetch updates in submodules
   inevitably produces reams of output, and it becomes hard to spot
   error messages.  The command has been taught to enumerate
   submodules that had errors at the end of the operation.
   (merge 0222540827 es/fetch-show-failed-submodules-atend later to maint).

 * The "--recurse-submodules" option of various subcommands did not
   work well when run in an alternate worktree, which has been
   corrected.
   (merge a9472afb63 pb/recurse-submodule-in-worktree-fix later to maint).

 * Futureproofing a test not to depend on the current implementation
   detail.

 * Running "git rm" on a submodule failed unnecessarily when
   .gitmodules is only cache-dirty, which has been corrected.
   (merge 7edee32985 dt/submodule-rm-with-stale-cache later to maint).

 * C pedantry ;-) fix.
   (merge cf82bff73f jk/clang-sanitizer-fixes later to maint).

 * "git grep --no-index" should not get affected by the contents of
   the .gitmodules file but when "--recurse-submodules" is given or
   the "submodule.recurse" variable is set, it did.  Now these
   settings are ignored in the "--no-index" mode.

 * Technical details of the bundle format has been documented.

 * Unhelpful warning messages during documentation build have been squelched.

 * "git rebase -i" identifies existing commits in its todo file with
   their abbreviated object name, which could become ambigous as it
   goes to create new commits, and has a mechanism to avoid ambiguity
   in the main part of its execution.  A few other cases however were
   not covered by the protection against ambiguity, which has been
   corrected.
   (merge 26027625dd js/rebase-i-with-colliding-hash later to maint).

 * Allow the rebase.missingCommitsCheck configuration to kick in when
   "rebase --edit-todo" and "rebase --continue" restarts the procedure.
   (merge 5a5445d878 ag/edit-todo-drop-check later to maint).

 * The way "git submodule status" reports an initialized but not yet
   populated submodule has not been reimplemented correctly when a
   part of the "git submodule" command was rewritten in C, which has
   been corrected.
   (merge f38c92452d pk/status-of-uncloned-submodule later to maint).

 * The code to automatically shrink the fan-out in the notes tree had
   an off-by-one bug, which has been killed.
   (merge dbc27477ff jh/notes-fanout-fix later to maint).

 * The index-pack code now diagnoses a bad input packstream that
   records the same object twice when it is used as delta base; the
   code used to declare a software bug when encountering such an
   input, but it is an input error.
   (merge a21781011f jk/index-pack-dupfix later to maint).

 * The code to compute the commit-graph has been taught to use a more
   robust way to tell if two object directories refer to the same
   thing.
   (merge a7df60cac8 tb/commit-graph-object-dir later to maint).

 * "git remote rename X Y" needs to adjust configuration variables
   (e.g. branch.<name>.remote) whose value used to be X to Y.
   branch.<name>.pushRemote is now also updated.

 * Update to doc-diff.
   (merge 2607d39da3 jk/doc-diff-parallel later to maint).

 * Doc markup fix.
   (merge 0aa6ce3094 jk/push-option-doc-markup-fix later to maint).

 * "git check-ignore" did not work when the given path is explicitly
   marked as not ignored with a negative entry in the .gitignore file.
   (merge 7ec8125fba en/check-ignore later to maint).

 * The merge-recursive machinery failed to refresh the cache entry for
   a merge result in a couple of places, resulting in an unnecessary
   merge failure, which has been fixed.
   (merge fb1c18fc46 en/t3433-rebase-stat-dirty-failure later to maint).

 * Fix for a bug revealed by a recent change to make the protocol v2
   the default.
   (merge 3e96c66805 ds/partial-clone-fixes later to maint).

 * In rare cases "git worktree add <path>" could think that <path>
   was already a registered worktree even when it wasn't and refuse
   to add the new worktree. This has been corrected.
   (merge bb69b3b009 es/worktree-avoid-duplication-fix later to maint).

 * "git push" should stop from updating a branch that is checked out
   when receive.denyCurrentBranch configuration is set, but it failed
   to pay attention to checkouts in secondary worktrees.  This has
   been corrected.
   (merge 4d864895a2 hv/receive-denycurrent-everywhere later to maint).

 * "git rebase BASE BRANCH" rebased/updated the tip of BRANCH and
   checked it out, even when the BRANCH is checked out in a different
   worktree.  This has been corrected.
   (merge b5cabb4a96 es/do-not-let-rebase-switch-to-protected-branch later to maint).

 * "git describe" in a repository with multiple root commits sometimes
   gave up looking for the best tag to describe a given commit with
   too early, which has been adjusted.

 * "git merge signed-tag" while lacking the public key started to say
   "No signature", which was utterly wrong.  This regression has been
   reverted.
   (merge 0106b1d4be hi/gpg-use-check-signature later to maint).

 * MinGW's poll() emulation has been improved.
   (merge 94f4d01932 am/mingw-poll-fix later to maint).

 * "git show" and others gave an object name in raw format in its
   error output, which has been corrected to give it in hex.
   (merge 237a28173f hd/show-one-mergetag-fix later to maint).

 * "git fetch" over HTTP walker protocol did not show any progress
   output.  We inherently do not know how much work remains, but still
   we can show something not to bore users.
   (merge 7655b4119d rs/show-progress-in-dumb-http-fetch later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 26f924d50e en/simplify-check-updates-in-unpack-trees later to maint).
   (merge d0d0a357a1 am/update-pathspec-f-f-tests later to maint).
   (merge f94f7bd00d am/test-pathspec-f-f-error-cases later to maint).
   (merge c513a958b6 ss/t6025-modernize later to maint).
   (merge b441717256 dl/test-must-fail-fixes later to maint).
   (merge d031049da3 mt/sparse-checkout-doc-update later to maint).
   (merge 145136a95a jc/skip-prefix later to maint).
   (merge 5290d45134 jk/alloc-cleanups later to maint).
   (merge 7a9f8ca805 rs/parse-options-concat-dup later to maint).
   (merge 517b60564e rs/strbuf-insertstr later to maint).
   (merge f696a2b1c8 jk/mailinfo-cleanup later to maint).
   (merge 076ee3e8a2 js/test-write-junit-xml-fix later to maint).
   (merge de26f02db1 js/test-avoid-pipe later to maint).
   (merge bfe2bbb47f js/test-unc-fetch later to maint).
   (merge 08809c09aa js/mingw-open-in-gdb later to maint).
   (merge cc4f2eb828 jk/doc-credential-helper later to maint).
   (merge e0020b2f82 es/outside-repo-errmsg-hints later to maint).
   (merge a2dc43414c es/doc-mentoring later to maint).
   (merge 539052f42f jk/run-command-formatfix later to maint).
   (merge 02bbbe9df9 es/worktree-cleanup later to maint).
   (merge 2ce6d075fa rs/micro-cleanups later to maint).
   (merge 27f182b3fc rs/blame-typefix-for-fingerprint later to maint).
   (merge 3c29e21eb0 ma/test-cleanup later to maint).
   (merge 240fc04f81 ag/rebase-remove-redundant-code later to maint).
   (merge 7f487ce062 js/ci-windows-update later to maint).
   (merge d68ce906c7 rs/commit-graph-code-simplification later to maint).
   (merge a51d9e8f07 rj/t1050-use-test-path-is-file later to maint).
   (merge fd0bc17557 kk/complete-diff-color-moved later to maint).
   (merge 65bf820d0e en/test-cleanup later to maint).

----------------------------------------------------------------

Changes since v2.25.0 are as follows:

Abhishek Kumar (2):
      lib-log-graph: consolidate test_cmp_graph logic
      lib-log-graph: consolidate colored graph cmp logic

Alban Gruin (4):
      rebase -i: stop checking out the tip of the branch to rebase
      sequencer: move check_todo_list_from_file() to rebase-interactive.c
      rebase-interactive: warn if commit is dropped with `rebase --edit-todo'
      builtin/rebase: remove a call to get_oid() on `options.switch_to'

Alexandr Miloslavskiy (14):
      parse_branchname_arg(): extract part as new function
      checkout: don't revert file on ambiguous tracking branches
      t: add tests for error conditions with --pathspec-from-file
      t: fix quotes tests for --pathspec-from-file
      t: directly test parse_pathspec_file()
      doc: rm: synchronize <pathspec> description
      rm: support the --pathspec-from-file option
      doc: stash: split options from description (1)
      doc: stash: split options from description (2)
      doc: stash: document more options
      doc: stash: synchronize <pathspec> description
      stash: eliminate crude option parsing
      stash push: support the --pathspec-from-file option
      mingw: workaround for hangs when sending STDIN

Benno Evers (1):
      describe: don't abort too early when searching tags

Bert Wesarg (6):
      pull --rebase/remote rename: document and honor single-letter abbreviations rebase types
      remote: clean-up by returning early to avoid one indentation
      remote: clean-up config callback
      remote rename/remove: handle branch.<name>.pushRemote config values
      config: provide access to the current line number
      remote rename/remove: gently handle remote.pushDefault config

David Turner (1):
      git rm submodule: succeed if .gitmodules index stat info is zero

Denton Liu (34):
      t/lib-git-p4: use test_path_is_missing()
      t0000: replace test_must_fail with run_sub_test_lib_test_err()
      t0003: use named parameters in attr_check()
      t0003: use test_must_be_empty()
      t0003: don't use `test_must_fail attr_check`
      t0020: don't use `test_must_fail has_cr`
      t0020: use ! check_packed_refs_marked
      t1306: convert `test_might_fail rm` to `rm -f`
      t1307: reorder `nongit test_must_fail`
      t1409: let sed open its own input file
      t1409: use test_path_is_missing()
      t1501: remove use of `test_might_fail cp`
      t1507: stop losing return codes of git commands
      t1507: run commands within test_expect_success
      t1507: inline full_name()
      contrib/credential/netrc: make PERL_PATH configurable
      contrib/credential/netrc: work outside a repo
      t2018: remove trailing space from test description
      t2018: add space between function name and ()
      t2018: improve style of if-statement
      .mailmap: fix erroneous authorship for Johannes Schindelin
      t2018: be more discerning when checking for expected exit codes
      t2018: teach do_checkout() to accept `!` arg
      t2018: don't lose return code of git commands
      t2018: replace "sha" with "oid"
      t3030: use test_path_is_missing()
      t3310: extract common notes_merge_files_gone()
      t3415: stop losing return codes of git commands
      t3415: increase granularity of test_auto_{fixup,squash}()
      t3419: stop losing return code of git command
      t3507: fix indentation
      t3507: use test_path_is_missing()
      t4124: only mark git command with test_must_fail
      .mailmap: map Yi-Jyun Pan's email

Derrick Stolee (26):
      unpack-trees: correctly compute result count
      graph: add test to demonstrate horizontal line bug
      graph: fix collapse of multiple edges
      clean: demonstrate a bug with pathspecs
      fetch: document and test --refmap=""
      t1091: use check_files to reduce boilerplate
      t1091: improve here-docs
      sparse-checkout: create leading directories
      clone: fix --sparse option with URLs
      sparse-checkout: cone mode does not recognize "**"
      sparse-checkout: detect short patterns
      sparse-checkout: warn on globs in cone patterns
      sparse-checkout: properly match escaped characters
      sparse-checkout: write escaped patterns in cone mode
      sparse-checkout: unquote C-style strings over --stdin
      sparse-checkout: use C-style quotes in 'list' subcommand
      sparse-checkout: escape all glob characters on write
      sparse-checkout: improve docs around 'set' in cone mode
      sparse-checkout: fix cone mode behavior mismatch
      sparse-checkout: extract add_patterns_from_input()
      sparse-checkout: extract pattern update from 'set' subcommand
      sparse-checkout: create 'add' subcommand
      sparse-checkout: work with Windows paths
      sparse-checkout: allow one-character directories in cone mode
      partial-clone: demonstrate bugs in partial fetch
      partial-clone: avoid fetching when looking for objects

Elijah Newren (32):
      unpack-trees: exit check_updates() early if updates are not wanted
      string-list: note in docs that callers can specify sorting function
      dir: treat_leading_path() and read_directory_recursive(), round 2
      git-rebase.txt: update description of --allow-empty-message
      t3404: directly test the behavior of interest
      rebase (interactive-backend): make --keep-empty the default
      rebase (interactive-backend): fix handling of commits that become empty
      t3406: simplify an already simple test
      rebase, sequencer: remove the broken GIT_QUIET handling
      rebase: make sure to pass along the quiet flag to the sequencer
      rebase: fix handling of restrict_revision
      t3432: make these tests work with either am or merge backends
      rebase: allow more types of rebases to fast-forward
      git-rebase.txt: add more details about behavioral differences of backends
      rebase: move incompatibility checks between backend options a bit earlier
      rebase: add an --am option
      git-prompt: change the prompt for interactive-based rebases
      rebase: drop '-i' from the reflog for interactive-based rebases
      rebase tests: mark tests specific to the am-backend with --am
      rebase tests: repeat some tests using the merge backend instead of am
      rebase: make the backend configurable via config setting
      rebase: change the default backend from "am" to "merge"
      rebase: rename the two primary rebase backends
      check-ignore: fix documentation and implementation to match
      t3433: new rebase testcase documenting a stat-dirty-like failure
      merge-recursive: fix the refresh logic in update_file_flags
      merge-recursive: apply collision handling unification to recursive case
      t602[1236], t6034: modernize test formatting
      t6020, t6022, t6035: update merge tests to use test helper functions
      t3035: prefer test_must_fail to bash negation for git commands
      t6022, t6046: test expected behavior instead of testing a proxy for it
      t6020: new test with interleaved lexicographic ordering of directories

Emily Shaffer (8):
      unpack-trees: watch for out-of-range index position
      fetch: emphasize failure during submodule fetch
      MyFirstContribution: add avenues for getting help
      submodule: add newline on invalid submodule error
      MyFirstContribution: rephrase contact info
      prefix_path: show gitdir when arg is outside repo
      submodule--helper: use C99 named initializer
      clone: pass --single-branch during --recurse-submodules

Eric Sunshine (6):
      t3400: make test clean up after itself
      rebase: refuse to switch to branch already checked out elsewhere
      worktree: drop unused code from get_main_worktree()
      worktree: improve find_worktree() documentation
      worktree: add utility to find worktree by pathname
      worktree: don't allow "add" validation to be fooled by suffix matching

Eyal Soha (3):
      color.c: refactor color_output arguments
      color.c: support bright aixterm colors
      color.c: alias RGB colors 8-15 to aixterm colors

Hans Jerry Illikainen (2):
      editorconfig: indent text files with tabs
      gpg-interface: add minTrustLevel as a configuration option

Harald van Dijk (1):
      show_one_mergetag: print non-parent in hex form.

Hariom Verma (4):
      get_main_worktree(): allow it to be called in the Git directory
      t5509: use a bare repository for test push target
      receive.denyCurrentBranch: respect all worktrees
      t2402: test worktree path when called in .git directory

Heba Waly (5):
      commit: honor advice.statusHints when rejecting an empty commit
      doc/gitcore-tutorial: fix prose to match example command
      add: use advise function to display hints
      git: update documentation for --git-dir
      add: change advice config variables used by the add API

Jacques Bodin-Hullin (1):
      parse-options: lose an unnecessary space in an error message

Jeff King (69):
      builtin/pack-objects: report reused packfile objects
      packfile: expose get_delta_base()
      restore: invalidate cache-tree when removing entries with --staged
      transport: don't flush when disconnecting stateless-rpc helper
      dir: restructure in a way to avoid passing around a struct dirent
      dir: point treat_leading_path() warning to the right place
      Makefile: use compat regex with SANITIZE=address
      t4018: drop "debugging" cat from hunk-header tests
      t7800: don't rely on reuse_worktree_file()
      ewah/bitmap: introduce bitmap_word_alloc()
      pack-bitmap: introduce bitmap_walk_contains()
      pack-bitmap: uninteresting oid can be outside bitmapped packfile
      pack-bitmap: simplify bitmap_has_oid_in_uninteresting()
      csum-file: introduce hashfile_total()
      pack-objects: introduce pack.allowPackReuse
      builtin/pack-objects: introduce obj_is_packed()
      pack-objects: improve partial packfile reuse
      pack-objects: add checks for duplicate objects
      pack-bitmap: don't rely on bitmap_git->reuse_objects
      sparse-checkout: fix documentation typo for core.sparseCheckoutCone
      verify_filename(): handle backslashes in "wildcards are pathspecs" rule
      merge-recursive: silence -Wxor-used-as-pow warning
      t1400: avoid "test" string comparisons
      t1506: drop space after redirection operator
      avoid computing zero offsets from NULL pointer
      xdiff: avoid computing non-zero offset from NULL pointer
      obstack: avoid computing offsets from NULL pointer
      doc: drop "explicitly given" from push.default description
      sha1-name: mark get_oid() error messages for translation
      normalize_path_copy(): document "dst" size expectations
      walker_fetch(): avoid raw array length computation
      traverse_trees(): use stack array for name entries
      diff: move diff.wsErrorHighlight to "basic" config
      tree-walk.c: break circular dependency with unpack-trees
      index-pack: downgrade twice-resolved REF_DELTA to die()
      mailinfo: treat header values as C strings
      mailinfo: simplify parsing of header values
      mailinfo: be more liberal with header whitespace
      mailinfo: factor out some repeated header handling
      pack-bitmap: factor out type iterator initialization
      pack-bitmap: fix leak of haves/wants object lists
      rev-list: fallback to non-bitmap traversal when filtering
      pack-bitmap: refuse to do a bitmap traversal with pathspecs
      rev-list: factor out bitmap-optimized routines
      rev-list: make --count work with --objects
      rev-list: allow bitmaps when counting objects
      t5310: factor out bitmap traversal comparison
      rev-list: allow commit-only bitmap traversals
      pack-bitmap: basic noop bitmap filter infrastructure
      rev-list: use bitmap filters for traversal
      bitmap: add bitmap_unset() function
      pack-bitmap: implement BLOB_NONE filtering
      pack-bitmap: implement BLOB_LIMIT filtering
      pack-objects: support filters with bitmaps
      doc: move credential helper info into gitcredentials(7)
      doc/config/push: use longer "--" line for preformatted example
      doc-diff: use single-colon rule in rendering Makefile
      run-command.h: fix mis-indented struct member
      nth_packed_object_oid(): use customary integer return
      pack-objects: read delta base oid into object_id struct
      pack-objects: convert oe_set_delta_ext() to use object_id
      pack-objects: use object_id struct in pack-reuse code
      pack-bitmap: use object_id when loading on-disk bitmaps
      pack-check: convert "internal error" die to a BUG()
      pack-check: push oid lookup into loop
      packed_object_info(): use object_id for returning delta base
      packed_object_info(): use object_id internally for delta base
      packfile: drop nth_packed_object_sha1()
      config.mak.dev: re-enable -Wformat-zero-length

Johan Herland (2):
      t3305: check notes fanout more carefully and robustly
      notes.c: fix off-by-one error when decreasing notes fanout

Johannes Berg (1):
      pack-format: correct multi-pack-index description

Johannes Schindelin (33):
      built-in add -p: prepare for patch modes other than "stage"
      built-in add -p: implement the "stash" and "reset" patch modes
      legacy stash -p: respect the add.interactive.usebuiltin setting
      built-in stash: use the built-in `git add -p` if so configured
      built-in add -p: implement the "checkout" patch modes
      built-in add -p: implement the "worktree" patch modes
      commit --interactive: make it work with the built-in `add -i`
      t3701: adjust difffilter test
      built-in add -p: support interactive.diffFilter
      built-in add -p: handle diff.algorithm
      terminal: make the code of disable_echo() reusable
      terminal: accommodate Git for Windows' default terminal
      terminal: add a new function to read a single keystroke
      built-in add -p: respect the `interactive.singlekey` config setting
      built-in add -p: handle Escape sequences in interactive.singlekey mode
      built-in add -p: handle Escape sequences more efficiently
      ci: include the built-in `git add -i` in the `linux-gcc` job
      msvc: accommodate for vcpkg's upgrade to OpenSSL v1.1.x
      built-in add -i: do not try to `patch`/`diff` an empty list of files
      built-in add -i: accept open-ended ranges again
      parse_insn_line(): improve error message when parsing failed
      rebase -i: re-fix short SHA-1 collision
      rebase -i: also avoid SHA-1 collisions with missingCommitsCheck
      ci: ignore rubygems warning in the "Documentation" job
      convert: fix typo
      tests: fix --write-junit-xml with subshells
      t9001, t9116: avoid pipes
      t5580: test cloning without file://, test fetching via UNC paths
      mingw: add a helper function to attach GDB to the current process
      t/lib-httpd: avoid using macOS' sed
      ci: prevent `perforce` from being quarantined
      Azure Pipeline: switch to the latest agent pools
      t5537: adjust test_oid label

Johannes Sixt (1):
      t3504: do check for conflict marker after failed cherry-pick

Jonathan Nieder (9):
      sha1-file: document how to use pretend_object_file
      fetch test: avoid use of "VAR= cmd" with a shell function
      t/check-non-portable-shell: detect "FOO= shell_func", too
      fetch test: mark test of "skipping" haves as v0-only
      fetch test: use more robust test for filtered objects
      config doc: protocol.version is not experimental
      test: request GIT_TEST_PROTOCOL_VERSION=0 when appropriate
      protocol test: let protocol.version override GIT_TEST_PROTOCOL_VERSION
      fetch: default to protocol version 2

Jonathan Tan (4):
      sha1-file: remove OBJECT_INFO_SKIP_CACHED
      t5616: make robust to delta base change
      connected: verify promisor-ness of partial clone
      fetch: forgo full connectivity check if --filter

Junio C Hamano (16):
      The first batch post 2.25 cycle
      merge-recursive: use subtraction to flip stage
      .mailmap: fix GGG authoship screwup
      The second batch
      C: use skip_prefix() to avoid hardcoded string length
      The third batch for 2.26
      The fourth batch for 2.26
      The fifth batch for 2.26
      Git 2.25.1
      The sixth batch for 2.26
      rev-list --count: comment on the use of count_right++
      The seventh batch for 2.26
      Revert "gpg-interface: prefer check_signature() for GPG verification"
      The eighth batch for 2.26
      Git 2.26-rc0
      Git 2.26-rc1

Kevin Willford (4):
      fsmonitor: change last update timestamp on the index_state to opaque token
      fsmonitor: handle version 2 of the hooks that will use opaque token
      fsmonitor: add fsmonitor hook scripts for version 2
      fsmonitor: update documentation for hook version and watchman hooks

Kir Kolyshkin (1):
      completion: add diff --color-moved[-ws]

Kyle Meyer (2):
      submodule add: show 'add --dry-run' stderr when aborting
      submodule foreach: replace $path with $sm_path in example

Lucius Hu (1):
      templates: fix deprecated type option `--bool`

Luke Diamand (7):
      git-p4: make closeStreams() idempotent
      git-p4: add P4CommandException to report errors talking to Perforce
      git-p4: disable some pylint warnings, to get pylint output to something manageable
      git-p4: create helper function importRevisions()
      git-p4: cleanup better on error exit
      git-p4: check for access to remote host earlier
      git-p4: avoid leak of file handle when cloning

Martin Ågren (6):
      git-filter-branch.txt: wrap "maths" notation in backticks
      name-rev: rewrite create_or_update_name()
      diff-options.txt: avoid "regex" overload in example
      t4117: check for files using `test_path_is_file`
      t9810: drop debug `cat` call
      t: drop debug `cat` calls

Masaya Suzuki (1):
      doc: describe Git bundle format

Matheus Tavares (21):
      grep: fix race conditions on userdiff calls
      grep: fix race conditions at grep_submodule()
      grep: fix racy calls in grep_objects()
      replace-object: make replace operations thread-safe
      object-store: allow threaded access to object reading
      grep: replace grep_read_mutex by internal obj read lock
      submodule-config: add skip_if_read option to repo_read_gitmodules()
      grep: allow submodule functions to run in parallel
      grep: protect packed_git [re-]initialization
      grep: re-enable threads in non-worktree case
      grep: move driver pre-load out of critical section
      grep: use no. of cores as the default no. of threads
      doc: sparse-checkout: mention --cone option
      completion: add support for sparse-checkout
      diff: make diff_populate_filespec() honor its repo argument
      cache-tree: use given repo's hash_algo at verify_one()
      pack-check: use given repo's hash_algo at verify_packfile()
      streaming: allow open_istream() to handle any repo
      sha1-file: pass git_hash_algo to write_object_file_prepare()
      sha1-file: pass git_hash_algo to hash_object_file()
      sha1-file: allow check_object_signature() to handle any repo

Matthew Rogers (10):
      config: fix typo in variable name
      t1300: fix over-indented HERE-DOCs
      t1300: create custom config file without special characters
      config: make scope_name non-static and rename it
      config: split repo scope to local and worktree
      config: clarify meaning of command line scoping
      config: preserve scope in do_git_config_sequence
      config: teach git_config_source to remember its scope
      submodule-config: add subomdule config scope
      config: add '--show-scope' to print the scope of a config value

Miriam Rubio (3):
      bisect--helper: convert `vocab_*` char pointers to char arrays
      bisect: use the standard 'if (!var)' way to check for 0
      bisect: add enum to represent bisect returning codes

Paolo Bonzini (5):
      parse-options: add testcases for OPT_CMDMODE()
      parse-options: convert "command mode" to a flag
      am: convert "resume" variable to a struct
      am: support --show-current-patch=raw as a synonym for--show-current-patch
      am: support --show-current-patch=diff to retrieve .git/rebase-apply/patch

Peter Kaestle (3):
      t7400: add a testcase for submodule status on empty dirs
      submodule: fix status of initialized but not cloned submodules
      t7400: testcase for submodule status on unregistered inner git repos

Philippe Blain (5):
      t7410: rename to t2405-worktree-submodule.sh
      t2405: use git -C and test_commit -C instead of subshells
      t2405: clarify test descriptions and simplify test
      submodule.c: use get_git_dir() instead of get_git_common_dir()
      grep: ignore --recurse-submodules if --no-index is given

Pranit Bauva (7):
      bisect--helper: return error codes from `cmd_bisect__helper()`
      bisect: libify `exit_if_skipped_commits` to `error_if_skipped*` and its dependents
      bisect: libify `bisect_checkout`
      bisect: libify `check_merge_bases` and its dependents
      bisect: libify `check_good_are_ancestors_of_bad` and its dependents
      bisect: libify `handle_bad_merge_base` and its dependents
      bisect: libify `bisect_next_all`

Ralf Thielow (2):
      submodule.c: mark more strings for translation
      rebase-interactive.c: silence format-zero-length warnings

Rasmus Jonsson (1):
      t1050: replace test -f with test_path_is_file

René Scharfe (21):
      name-rev: remove unused typedef
      name-rev: respect const qualifier
      name-rev: don't leak path copy in name_ref()
      name-rev: don't _peek() in create_or_update_name()
      name-rev: put struct rev_name into commit slab
      name-rev: factor out get_parent_name()
      name-rev: pre-size buffer in get_parent_name()
      name-rev: generate name strings only if they are better
      name-rev: release unused name strings
      name-rev: sort tip names before applying
      strbuf: add and use strbuf_insertstr()
      mailinfo: don't insert header prefix for handle_content_type()
      parse-options: use COPY_ARRAY in parse_options_concat()
      parse-options: factor out parse_options_count()
      parse-options: const parse_options_concat() parameters
      parse-options: simplify parse_options_dup()
      quote: use isalnum() to check for alphanumeric characters
      use strpbrk(3) to search for characters from a given set
      blame: provide type of fingerprints pointer
      commit-graph: use progress title directly
      remote-curl: show progress for fetches over dumb HTTP

SZEDER Gábor (6):
      t9902-completion: add tests for the __git_find_on_cmdline() helper
      completion: clean up the __git_find_on_cmdline() helper function
      completion: return the index of found word from __git_find_on_cmdline()
      completion: simplify completing 'git worktree' subcommands and options
      completion: list existing working trees for 'git worktree' subcommands
      completion: list paths and refs for 'git worktree add'

Shourya Shukla (2):
      t6025: modernize style
      t6025: use helpers to replace test -f <path>

Tanushree Tumane (2):
      bisect--helper: change `retval` to `res`
      bisect--helper: introduce new `decide_next()` function

Taylor Blau (5):
      t5318: don't pass non-object directory to '--object-dir'
      commit-graph.h: store an odb in 'struct write_commit_graph_context'
      commit-graph.h: store object directory in 'struct commit_graph'
      commit-graph.c: remove path normalization, comparison
      commit-graph.h: use odb in 'load_commit_graph_one_fd_st'

brian m. carlson (53):
      run-command: avoid undefined behavior in exists_in_PATH
      t4054: make hash-size independent
      t4066: compute index line in diffs
      t4134: compute appropriate length constant
      t4200: make hash size independent
      t4202: abstract away SHA-1-specific constants
      t4204: make hash size independent
      t4300: abstract away SHA-1-specific constants
      t5318: update for SHA-256
      t5319: change invalid offset for SHA-256 compatibility
      t5319: make test work with SHA-256
      t5324: make hash size independent
      t5504: make hash algorithm independent
      t5510: make hash size independent
      t5512: abstract away SHA-1-specific constants
      t5530: compute results based on object length
      t5537: make hash size independent
      t5540: make hash size independent
      t5562: use $ZERO_OID
      t5601: switch into repository to hash object
      t5604: make hash independent
      docs: use "currently" for the present time
      doc: move author and committer information to git-commit(1)
      docs: expand on possible and recommended user config options
      doc: provide guidance on user.name format
      doc: dissuade users from trying to ignore tracked files
      docs: mention when increasing http.postBuffer is valuable
      t/lib-pack: support SHA-256
      t3206: make hash size independent
      t3308: make test work with SHA-256
      t3309: make test work with SHA-256
      t3310: make test work with SHA-256
      t3311: make test work with SHA-256
      t4013: make test hash independent
      t4211: move SHA-1-specific test cases into a directory
      t4211: add test cases for SHA-256
      t4060: make test work with SHA-256
      t5302: make hash size independent
      t5309: make test hash independent
      t5313: make test hash independent
      t5321: make test hash independent
      t5515: make test hash independent
      t5318: update for SHA-256
      t5607: make hash size independent
      t5703: make test work with SHA-256
      t6000: abstract away SHA-1-specific constants
      t6006: make hash size independent
      t6024: update for SHA-256
      mailmap: add an additional email address for brian m. carlson
      t1300: add test for urlmatch with multiple wildcards
      t0300: add tests for some additional cases
      credential: use the last matching username in the config
      credential: allow wildcard patterns when matching config


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.26.0-rc0
@ 2020-03-05 22:02  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-03-05 22:02 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

An early preview release Git v2.26.0-rc0 is now available for
testing at the usual places.  It is comprised of 426 non-merge
commits since v2.25.0, contributed by 43 people, 7 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.26.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.25.0 are as follows.
Welcome to the Git development community!

  Abhishek Kumar, Benno Evers, Eyal Soha, Jacques Bodin-Hullin,
  Lucius Hu, Peter Kaestle, and Shourya Shukla.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Alban Gruin, Alexandr Miloslavskiy, Bert Wesarg, brian
  m. carlson, David Turner, Denton Liu, Derrick Stolee, Elijah
  Newren, Emily Shaffer, Eric Sunshine, Hans Jerry Illikainen,
  Hariom Verma, Heba Waly, Jeff King, Johan Herland, Johannes Berg,
  Johannes Schindelin, Johannes Sixt, Jonathan Nieder, Jonathan
  Tan, Junio C Hamano, Kevin Willford, Kyle Meyer, Luke Diamand,
  Martin Ågren, Masaya Suzuki, Matheus Tavares, Matthew Rogers,
  Miriam Rubio, Philippe Blain, Pranit Bauva, Ralf Thielow,
  René Scharfe, SZEDER Gábor, Tanushree Tumane, and Taylor Blau.

----------------------------------------------------------------

Git 2.26 Release Notes (draft)
==============================

Updates since v2.25
-------------------

UI, Workflows & Features

 * Sample credential helper for using .netrc has been updated to work
   out of the box.

 * gpg.minTrustLevel configuration variable has been introduced to
   tell various signature verification codepaths the required minimum
   trust level.

 * The command line completion (in contrib/) learned to complete
   subcommands and arguments to "git worktree".

 * Disambiguation logic to tell revisions and pathspec apart has been
   tweaked so that backslash-escaped glob special characters do not
   count in the "wildcards are pathspec" rule.

 * One effect of specifying where the GIT_DIR is (either with the
   environment variable, or with the "git --git-dir=<where> cmd"
   option) is to disable the repository discovery.  This has been
   placed a bit more stress in the documentation, as new users often
   get confused.

 * Two help messages given when "git add" notices the user gave it
   nothing to add have been updated to use advise() API.

 * A new version of fsmonitor-watchman hook has been introduced, to
   avoid races.

 * "git config" learned to show in which "scope", in addition to in
   which file, each config setting comes from.

 * The basic 7 colors learned the brighter counterparts
   (e.g. "brightred").

 * "git sparse-checkout" learned a new "add" subcommand.

 * A configuration element used for credential subsystem can now use
   wildcard pattern to specify for which set of URLs the entry
   applies.

 * "git clone --recurse-submodules --single-branch" now uses the same
   single-branch option when cloning the submodules.


Performance, Internal Implementation, Development Support etc.

 * Tell .editorconfig that in this project, *.txt files are indented
   with tabs.

 * The test-lint machinery knew to check "VAR=VAL shell_function"
   construct, but did not check "VAR= shell_funciton", which has been
   corrected.

 * Replace "git config --bool" calls with "git config --type=bool" in
   sample templates.

 * The effort to move "git-add--interactive" to C continues.

 * Improve error message generation for "git submodule add".

 * Preparation of test scripts for the day when the object names will
   use SHA-256 continues.

 * Warn programmers about pretend_object_file() that allows the code
   to tentatively use in-core objects.

 * The way "git pack-objects" reuses objects stored in existing pack
   to generate its result has been improved.

 * The transport protocol version 2 becomes the default one.

 * Traditionally, we avoided threaded grep while searching in objects
   (as opposed to files in the working tree) as accesses to the object
   layer is not thread-safe.  This limitation is getting lifted.

 * "git rebase -i" (and friends) used to unnecessarily check out the
   tip of the branch to be rebased, which has been corrected.

 * A low-level API function get_oid(), that accepts various ways to
   name an object, used to issue end-user facing error messages
   without l10n, which has been updated to be translatable.

 * Unneeded connectivity check is now disabled in a partial clone when
   fetching into it.

 * Some rough edges in the sparse-checkout feature, especially around
   the cone mode, have been cleaned up.

 * The diff-* plumbing family of subcommands now pay attention to the
   diff.wsErrorHighlight configuration, which has been ignored before;
   this allows "git add -p" to also show the whitespace problems to
   the end user.

 * Some codepaths were given a repository instance as a parameter to
   work in the repository, but passed the_repository instance to its
   callees, which has been cleaned up (somewhat).

 * Memory footprint and performance of "git name-rev" has been
   improved.

 * The object reachability bitmap machinery and the partial cloning
   machinery were not prepared to work well together, because some
   object-filtering criteria that partial clones use inherently rely
   on object traversal, but the bitmap machinery is an optimization
   to bypass that object traversal.  There however are some cases
   where they can work together, and they were taught about them.

 * "git rebase" has learned to use the merge backend (i.e. the
   machinery that drives "rebase -i") by default, while allowing
   "--apply" option to use the "apply" backend (e.g. the moral
   equivalent of "format-patch piped to am").  The rebase.backend
   configuration variable can be set to customize.

 * Underlying machinery of "git bisect--helper" is being refactored
   into pieces that are more easily reused.


Fixes since v2.25
-----------------

 * "git commit" gives output similar to "git status" when there is
   nothing to commit, but without honoring the advise.statusHints
   configuration variable, which has been corrected.

 * has_object_file() said "no" given an object registered to the
   system via pretend_object_file(), making it inconsistent with
   read_object_file(), causing lazy fetch to attempt fetching an
   empty tree from promisor remotes.

 * Complete an update to tutorial that encourages "git switch" over
   "git checkout" that was done only half-way.

 * C pedantry ;-) fix.

 * The code that tries to skip over the entries for the paths in a
   single directory using the cache-tree was not careful enough
   against corrupt index file.

 * Reduce unnecessary round-trip when running "ls-remote" over the
   stateless RPC mechanism.

 * "git restore --staged" did not correctly update the cache-tree
   structure, resulting in bogus trees to be written afterwards, which
   has been corrected.

 * The code recently added to move to the entry beyond the ones in the
   same directory in the index in the sparse-cone mode did not count
   the number of entries to skip over incorrectly, which has been
   corrected.

 * Rendering by "git log --graph" of ancestry lines leading to a merge
   commit were made suboptimal to waste vertical space a bit with a
   recent update, which has been corrected.

 * Work around test breakages caused by custom regex engine used in
   libasan, when address sanitizer is used with more recent versions
   of gcc and clang.

 * Minor bugfixes to "git add -i" that has recently been rewritten in C.
   (merge 849e43cc18 js/builtin-add-i-cmds later to maint).

 * "git fetch --refmap=" option has got a better documentation.

 * "git checkout X" did not correctly fail when X is not a local
   branch but could name more than one remote-tracking branches
   (i.e. to be dwimmed as the starting point to create a corresponding
   local branch), which has been corrected.
   (merge fa74180d08 am/checkout-file-and-ref-ref-ambiguity later to maint).

 * Corner case bugs in "git clean" that stems from a (necessarily for
   performance reasons) awkward calling convention in the directory
   enumeration API has been corrected.

 * A fetch that is told to recursively fetch updates in submodules
   inevitably produces reams of output, and it becomes hard to spot
   error messages.  The command has been taught to enumerate
   submodules that had errors at the end of the operation.
   (merge 0222540827 es/fetch-show-failed-submodules-atend later to maint).

 * The "--recurse-submodules" option of various subcommands did not
   work well when run in an alternate worktree, which has been
   corrected.
   (merge a9472afb63 pb/recurse-submodule-in-worktree-fix later to maint).

 * Futureproofing a test not to depend on the current implementation
   detail.

 * Running "git rm" on a submodule failed unnecessarily when
   .gitmodules is only cache-dirty, which has been corrected.
   (merge 7edee32985 dt/submodule-rm-with-stale-cache later to maint).

 * C pedantry ;-) fix.
   (merge cf82bff73f jk/clang-sanitizer-fixes later to maint).

 * "git grep --no-index" should not get affected by the contents of
   the .gitmodules file but when "--recurse-submodules" is given or
   the "submodule.recurse" variable is set, it did.  Now these
   settings are ignored in the "--no-index" mode.

 * Technical details of the bundle format has been documented.

 * Unhelpful warning messages during documentation build have been squelched.

 * "git rebase -i" identifies existing commits in its todo file with
   their abbreviated object name, which could become ambigous as it
   goes to create new commits, and has a mechanism to avoid ambiguity
   in the main part of its execution.  A few other cases however were
   not covered by the protection against ambiguity, which has been
   corrected.
   (merge 26027625dd js/rebase-i-with-colliding-hash later to maint).

 * Allow the rebase.missingCommitsCheck configuration to kick in when
   "rebase --edit-todo" and "rebase --continue" restarts the procedure.
   (merge 5a5445d878 ag/edit-todo-drop-check later to maint).

 * The way "git submodule status" reports an initialized but not yet
   populated submodule has not been reimplemented correctly when a
   part of the "git submodule" command was rewritten in C, which has
   been corrected.
   (merge f38c92452d pk/status-of-uncloned-submodule later to maint).

 * The code to automatically shrink the fan-out in the notes tree had
   an off-by-one bug, which has been killed.
   (merge dbc27477ff jh/notes-fanout-fix later to maint).

 * The index-pack code now diagnoses a bad input packstream that
   records the same object twice when it is used as delta base; the
   code used to declare a software bug when encountering such an
   input, but it is an input error.
   (merge a21781011f jk/index-pack-dupfix later to maint).

 * The code to compute the commit-graph has been taught to use a more
   robust way to tell if two object directories refer to the same
   thing.
   (merge a7df60cac8 tb/commit-graph-object-dir later to maint).

 * "git remote rename X Y" needs to adjust configuration variables
   (e.g. branch.<name>.remote) whose value used to be X to Y.
   branch.<name>.pushRemote is now also updated.

 * Update to doc-diff.
   (merge 2607d39da3 jk/doc-diff-parallel later to maint).

 * Doc markup fix.
   (merge 0aa6ce3094 jk/push-option-doc-markup-fix later to maint).

 * "git check-ignore" did not work when the given path is explicitly
   marked as not ignored with a negative entry in the .gitignore file.
   (merge 7ec8125fba en/check-ignore later to maint).

 * The merge-recursive machinery failed to refresh the cache entry for
   a merge result in a couple of places, resulting in an unnecessary
   merge failure, which has been fixed.
   (merge fb1c18fc46 en/t3433-rebase-stat-dirty-failure later to maint).

 * Fix for a bug revealed by a recent change to make the protocol v2
   the default.
   (merge 3e96c66805 ds/partial-clone-fixes later to maint).

 * In rare cases "git worktree add <path>" could think that <path>
   was already a registered worktree even when it wasn't and refuse
   to add the new worktree. This has been corrected.
   (merge bb69b3b009 es/worktree-avoid-duplication-fix later to maint).

 * "git push" should stop from updating a branch that is checked out
   when receive.denyCurrentBranch configuration is set, but it failed
   to pay attention to checkouts in secondary worktrees.  This has
   been corrected.
   (merge 4d864895a2 hv/receive-denycurrent-everywhere later to maint).

 * "git rebase BASE BRANCH" rebased/updated the tip of BRANCH and
   checked it out, even when the BRANCH is checked out in a different
   worktree.  This has been corrected.
   (merge b5cabb4a96 es/do-not-let-rebase-switch-to-protected-branch later to maint).

 * "git describe" in a repository with multiple root commits sometimes
   gave up looking for the best tag to describe a given commit with
   too early, which has been adjusted.

 * "git merge signed-tag" while lacking the public key started to say
   "No signature", which was utterly wrong.  This regression has been
   reverted.
   (merge 0106b1d4be hi/gpg-use-check-signature later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 26f924d50e en/simplify-check-updates-in-unpack-trees later to maint).
   (merge d0d0a357a1 am/update-pathspec-f-f-tests later to maint).
   (merge f94f7bd00d am/test-pathspec-f-f-error-cases later to maint).
   (merge c513a958b6 ss/t6025-modernize later to maint).
   (merge b441717256 dl/test-must-fail-fixes later to maint).
   (merge d031049da3 mt/sparse-checkout-doc-update later to maint).
   (merge 145136a95a jc/skip-prefix later to maint).
   (merge 5290d45134 jk/alloc-cleanups later to maint).
   (merge 7a9f8ca805 rs/parse-options-concat-dup later to maint).
   (merge 517b60564e rs/strbuf-insertstr later to maint).
   (merge f696a2b1c8 jk/mailinfo-cleanup later to maint).
   (merge 076ee3e8a2 js/test-write-junit-xml-fix later to maint).
   (merge de26f02db1 js/test-avoid-pipe later to maint).
   (merge bfe2bbb47f js/test-unc-fetch later to maint).
   (merge 08809c09aa js/mingw-open-in-gdb later to maint).
   (merge cc4f2eb828 jk/doc-credential-helper later to maint).
   (merge e0020b2f82 es/outside-repo-errmsg-hints later to maint).
   (merge a2dc43414c es/doc-mentoring later to maint).
   (merge 539052f42f jk/run-command-formatfix later to maint).
   (merge 02bbbe9df9 es/worktree-cleanup later to maint).
   (merge 2ce6d075fa rs/micro-cleanups later to maint).
   (merge 27f182b3fc rs/blame-typefix-for-fingerprint later to maint).
   (merge 3c29e21eb0 ma/test-cleanup later to maint).
   (merge 240fc04f81 ag/rebase-remove-redundant-code later to maint).
   (merge 7f487ce062 js/ci-windows-update later to maint).
   (merge d68ce906c7 rs/commit-graph-code-simplification later to maint).

----------------------------------------------------------------

Changes since v2.25.0 are as follows:

Abhishek Kumar (2):
      lib-log-graph: consolidate test_cmp_graph logic
      lib-log-graph: consolidate colored graph cmp logic

Alban Gruin (4):
      rebase -i: stop checking out the tip of the branch to rebase
      sequencer: move check_todo_list_from_file() to rebase-interactive.c
      rebase-interactive: warn if commit is dropped with `rebase --edit-todo'
      builtin/rebase: remove a call to get_oid() on `options.switch_to'

Alexandr Miloslavskiy (5):
      parse_branchname_arg(): extract part as new function
      checkout: don't revert file on ambiguous tracking branches
      t: add tests for error conditions with --pathspec-from-file
      t: fix quotes tests for --pathspec-from-file
      t: directly test parse_pathspec_file()

Benno Evers (1):
      describe: don't abort too early when searching tags

Bert Wesarg (6):
      pull --rebase/remote rename: document and honor single-letter abbreviations rebase types
      remote: clean-up by returning early to avoid one indentation
      remote: clean-up config callback
      remote rename/remove: handle branch.<name>.pushRemote config values
      config: provide access to the current line number
      remote rename/remove: gently handle remote.pushDefault config

David Turner (1):
      git rm submodule: succeed if .gitmodules index stat info is zero

Denton Liu (34):
      t/lib-git-p4: use test_path_is_missing()
      t0000: replace test_must_fail with run_sub_test_lib_test_err()
      t0003: use named parameters in attr_check()
      t0003: use test_must_be_empty()
      t0003: don't use `test_must_fail attr_check`
      t0020: don't use `test_must_fail has_cr`
      t0020: use ! check_packed_refs_marked
      t1306: convert `test_might_fail rm` to `rm -f`
      t1307: reorder `nongit test_must_fail`
      t1409: let sed open its own input file
      t1409: use test_path_is_missing()
      t1501: remove use of `test_might_fail cp`
      t1507: stop losing return codes of git commands
      t1507: run commands within test_expect_success
      t1507: inline full_name()
      contrib/credential/netrc: make PERL_PATH configurable
      contrib/credential/netrc: work outside a repo
      t2018: remove trailing space from test description
      t2018: add space between function name and ()
      t2018: improve style of if-statement
      .mailmap: fix erroneous authorship for Johannes Schindelin
      t2018: be more discerning when checking for expected exit codes
      t2018: teach do_checkout() to accept `!` arg
      t2018: don't lose return code of git commands
      t2018: replace "sha" with "oid"
      t3030: use test_path_is_missing()
      t3310: extract common notes_merge_files_gone()
      t3415: stop losing return codes of git commands
      t3415: increase granularity of test_auto_{fixup,squash}()
      t3419: stop losing return code of git command
      t3507: fix indentation
      t3507: use test_path_is_missing()
      t4124: only mark git command with test_must_fail
      .mailmap: map Yi-Jyun Pan's email

Derrick Stolee (26):
      unpack-trees: correctly compute result count
      graph: add test to demonstrate horizontal line bug
      graph: fix collapse of multiple edges
      clean: demonstrate a bug with pathspecs
      fetch: document and test --refmap=""
      t1091: use check_files to reduce boilerplate
      t1091: improve here-docs
      sparse-checkout: create leading directories
      clone: fix --sparse option with URLs
      sparse-checkout: cone mode does not recognize "**"
      sparse-checkout: detect short patterns
      sparse-checkout: warn on globs in cone patterns
      sparse-checkout: properly match escaped characters
      sparse-checkout: write escaped patterns in cone mode
      sparse-checkout: unquote C-style strings over --stdin
      sparse-checkout: use C-style quotes in 'list' subcommand
      sparse-checkout: escape all glob characters on write
      sparse-checkout: improve docs around 'set' in cone mode
      sparse-checkout: fix cone mode behavior mismatch
      sparse-checkout: extract add_patterns_from_input()
      sparse-checkout: extract pattern update from 'set' subcommand
      sparse-checkout: create 'add' subcommand
      sparse-checkout: work with Windows paths
      sparse-checkout: allow one-character directories in cone mode
      partial-clone: demonstrate bugs in partial fetch
      partial-clone: avoid fetching when looking for objects

Elijah Newren (26):
      unpack-trees: exit check_updates() early if updates are not wanted
      string-list: note in docs that callers can specify sorting function
      dir: treat_leading_path() and read_directory_recursive(), round 2
      git-rebase.txt: update description of --allow-empty-message
      t3404: directly test the behavior of interest
      rebase (interactive-backend): make --keep-empty the default
      rebase (interactive-backend): fix handling of commits that become empty
      t3406: simplify an already simple test
      rebase, sequencer: remove the broken GIT_QUIET handling
      rebase: make sure to pass along the quiet flag to the sequencer
      rebase: fix handling of restrict_revision
      t3432: make these tests work with either am or merge backends
      rebase: allow more types of rebases to fast-forward
      git-rebase.txt: add more details about behavioral differences of backends
      rebase: move incompatibility checks between backend options a bit earlier
      rebase: add an --am option
      git-prompt: change the prompt for interactive-based rebases
      rebase: drop '-i' from the reflog for interactive-based rebases
      rebase tests: mark tests specific to the am-backend with --am
      rebase tests: repeat some tests using the merge backend instead of am
      rebase: make the backend configurable via config setting
      rebase: change the default backend from "am" to "merge"
      rebase: rename the two primary rebase backends
      check-ignore: fix documentation and implementation to match
      t3433: new rebase testcase documenting a stat-dirty-like failure
      merge-recursive: fix the refresh logic in update_file_flags

Emily Shaffer (8):
      unpack-trees: watch for out-of-range index position
      fetch: emphasize failure during submodule fetch
      MyFirstContribution: add avenues for getting help
      submodule: add newline on invalid submodule error
      MyFirstContribution: rephrase contact info
      prefix_path: show gitdir when arg is outside repo
      submodule--helper: use C99 named initializer
      clone: pass --single-branch during --recurse-submodules

Eric Sunshine (6):
      t3400: make test clean up after itself
      rebase: refuse to switch to branch already checked out elsewhere
      worktree: drop unused code from get_main_worktree()
      worktree: improve find_worktree() documentation
      worktree: add utility to find worktree by pathname
      worktree: don't allow "add" validation to be fooled by suffix matching

Eyal Soha (3):
      color.c: refactor color_output arguments
      color.c: support bright aixterm colors
      color.c: alias RGB colors 8-15 to aixterm colors

Hans Jerry Illikainen (2):
      editorconfig: indent text files with tabs
      gpg-interface: add minTrustLevel as a configuration option

Hariom Verma (4):
      get_main_worktree(): allow it to be called in the Git directory
      t5509: use a bare repository for test push target
      receive.denyCurrentBranch: respect all worktrees
      t2402: test worktree path when called in .git directory

Heba Waly (5):
      commit: honor advice.statusHints when rejecting an empty commit
      doc/gitcore-tutorial: fix prose to match example command
      add: use advise function to display hints
      git: update documentation for --git-dir
      add: change advice config variables used by the add API

Jacques Bodin-Hullin (1):
      parse-options: lose an unnecessary space in an error message

Jeff King (68):
      builtin/pack-objects: report reused packfile objects
      packfile: expose get_delta_base()
      restore: invalidate cache-tree when removing entries with --staged
      transport: don't flush when disconnecting stateless-rpc helper
      dir: restructure in a way to avoid passing around a struct dirent
      dir: point treat_leading_path() warning to the right place
      Makefile: use compat regex with SANITIZE=address
      t4018: drop "debugging" cat from hunk-header tests
      t7800: don't rely on reuse_worktree_file()
      ewah/bitmap: introduce bitmap_word_alloc()
      pack-bitmap: introduce bitmap_walk_contains()
      pack-bitmap: uninteresting oid can be outside bitmapped packfile
      pack-bitmap: simplify bitmap_has_oid_in_uninteresting()
      csum-file: introduce hashfile_total()
      pack-objects: introduce pack.allowPackReuse
      builtin/pack-objects: introduce obj_is_packed()
      pack-objects: improve partial packfile reuse
      pack-objects: add checks for duplicate objects
      pack-bitmap: don't rely on bitmap_git->reuse_objects
      sparse-checkout: fix documentation typo for core.sparseCheckoutCone
      verify_filename(): handle backslashes in "wildcards are pathspecs" rule
      merge-recursive: silence -Wxor-used-as-pow warning
      t1400: avoid "test" string comparisons
      t1506: drop space after redirection operator
      avoid computing zero offsets from NULL pointer
      xdiff: avoid computing non-zero offset from NULL pointer
      obstack: avoid computing offsets from NULL pointer
      doc: drop "explicitly given" from push.default description
      sha1-name: mark get_oid() error messages for translation
      normalize_path_copy(): document "dst" size expectations
      walker_fetch(): avoid raw array length computation
      traverse_trees(): use stack array for name entries
      diff: move diff.wsErrorHighlight to "basic" config
      tree-walk.c: break circular dependency with unpack-trees
      index-pack: downgrade twice-resolved REF_DELTA to die()
      mailinfo: treat header values as C strings
      mailinfo: simplify parsing of header values
      mailinfo: be more liberal with header whitespace
      mailinfo: factor out some repeated header handling
      pack-bitmap: factor out type iterator initialization
      pack-bitmap: fix leak of haves/wants object lists
      rev-list: fallback to non-bitmap traversal when filtering
      pack-bitmap: refuse to do a bitmap traversal with pathspecs
      rev-list: factor out bitmap-optimized routines
      rev-list: make --count work with --objects
      rev-list: allow bitmaps when counting objects
      t5310: factor out bitmap traversal comparison
      rev-list: allow commit-only bitmap traversals
      pack-bitmap: basic noop bitmap filter infrastructure
      rev-list: use bitmap filters for traversal
      bitmap: add bitmap_unset() function
      pack-bitmap: implement BLOB_NONE filtering
      pack-bitmap: implement BLOB_LIMIT filtering
      pack-objects: support filters with bitmaps
      doc: move credential helper info into gitcredentials(7)
      doc/config/push: use longer "--" line for preformatted example
      doc-diff: use single-colon rule in rendering Makefile
      run-command.h: fix mis-indented struct member
      nth_packed_object_oid(): use customary integer return
      pack-objects: read delta base oid into object_id struct
      pack-objects: convert oe_set_delta_ext() to use object_id
      pack-objects: use object_id struct in pack-reuse code
      pack-bitmap: use object_id when loading on-disk bitmaps
      pack-check: convert "internal error" die to a BUG()
      pack-check: push oid lookup into loop
      packed_object_info(): use object_id for returning delta base
      packed_object_info(): use object_id internally for delta base
      packfile: drop nth_packed_object_sha1()

Johan Herland (2):
      t3305: check notes fanout more carefully and robustly
      notes.c: fix off-by-one error when decreasing notes fanout

Johannes Berg (1):
      pack-format: correct multi-pack-index description

Johannes Schindelin (33):
      built-in add -p: prepare for patch modes other than "stage"
      built-in add -p: implement the "stash" and "reset" patch modes
      legacy stash -p: respect the add.interactive.usebuiltin setting
      built-in stash: use the built-in `git add -p` if so configured
      built-in add -p: implement the "checkout" patch modes
      built-in add -p: implement the "worktree" patch modes
      commit --interactive: make it work with the built-in `add -i`
      t3701: adjust difffilter test
      built-in add -p: support interactive.diffFilter
      built-in add -p: handle diff.algorithm
      terminal: make the code of disable_echo() reusable
      terminal: accommodate Git for Windows' default terminal
      terminal: add a new function to read a single keystroke
      built-in add -p: respect the `interactive.singlekey` config setting
      built-in add -p: handle Escape sequences in interactive.singlekey mode
      built-in add -p: handle Escape sequences more efficiently
      ci: include the built-in `git add -i` in the `linux-gcc` job
      msvc: accommodate for vcpkg's upgrade to OpenSSL v1.1.x
      built-in add -i: do not try to `patch`/`diff` an empty list of files
      built-in add -i: accept open-ended ranges again
      parse_insn_line(): improve error message when parsing failed
      rebase -i: re-fix short SHA-1 collision
      rebase -i: also avoid SHA-1 collisions with missingCommitsCheck
      ci: ignore rubygems warning in the "Documentation" job
      convert: fix typo
      tests: fix --write-junit-xml with subshells
      t9001, t9116: avoid pipes
      t5580: test cloning without file://, test fetching via UNC paths
      mingw: add a helper function to attach GDB to the current process
      t/lib-httpd: avoid using macOS' sed
      ci: prevent `perforce` from being quarantined
      Azure Pipeline: switch to the latest agent pools
      t5537: adjust test_oid label

Johannes Sixt (1):
      t3504: do check for conflict marker after failed cherry-pick

Jonathan Nieder (9):
      sha1-file: document how to use pretend_object_file
      fetch test: avoid use of "VAR= cmd" with a shell function
      t/check-non-portable-shell: detect "FOO= shell_func", too
      fetch test: mark test of "skipping" haves as v0-only
      fetch test: use more robust test for filtered objects
      config doc: protocol.version is not experimental
      test: request GIT_TEST_PROTOCOL_VERSION=0 when appropriate
      protocol test: let protocol.version override GIT_TEST_PROTOCOL_VERSION
      fetch: default to protocol version 2

Jonathan Tan (4):
      sha1-file: remove OBJECT_INFO_SKIP_CACHED
      t5616: make robust to delta base change
      connected: verify promisor-ness of partial clone
      fetch: forgo full connectivity check if --filter

Junio C Hamano (15):
      The first batch post 2.25 cycle
      merge-recursive: use subtraction to flip stage
      .mailmap: fix GGG authoship screwup
      The second batch
      C: use skip_prefix() to avoid hardcoded string length
      The third batch for 2.26
      The fourth batch for 2.26
      The fifth batch for 2.26
      Git 2.25.1
      The sixth batch for 2.26
      rev-list --count: comment on the use of count_right++
      The seventh batch for 2.26
      Revert "gpg-interface: prefer check_signature() for GPG verification"
      The eighth batch for 2.26
      Git 2.26-rc0

Kevin Willford (4):
      fsmonitor: change last update timestamp on the index_state to opaque token
      fsmonitor: handle version 2 of the hooks that will use opaque token
      fsmonitor: add fsmonitor hook scripts for version 2
      fsmonitor: update documentation for hook version and watchman hooks

Kyle Meyer (2):
      submodule add: show 'add --dry-run' stderr when aborting
      submodule foreach: replace $path with $sm_path in example

Lucius Hu (1):
      templates: fix deprecated type option `--bool`

Luke Diamand (7):
      git-p4: make closeStreams() idempotent
      git-p4: add P4CommandException to report errors talking to Perforce
      git-p4: disable some pylint warnings, to get pylint output to something manageable
      git-p4: create helper function importRevisions()
      git-p4: cleanup better on error exit
      git-p4: check for access to remote host earlier
      git-p4: avoid leak of file handle when cloning

Martin Ågren (6):
      git-filter-branch.txt: wrap "maths" notation in backticks
      name-rev: rewrite create_or_update_name()
      diff-options.txt: avoid "regex" overload in example
      t4117: check for files using `test_path_is_file`
      t9810: drop debug `cat` call
      t: drop debug `cat` calls

Masaya Suzuki (1):
      doc: describe Git bundle format

Matheus Tavares (21):
      grep: fix race conditions on userdiff calls
      grep: fix race conditions at grep_submodule()
      grep: fix racy calls in grep_objects()
      replace-object: make replace operations thread-safe
      object-store: allow threaded access to object reading
      grep: replace grep_read_mutex by internal obj read lock
      submodule-config: add skip_if_read option to repo_read_gitmodules()
      grep: allow submodule functions to run in parallel
      grep: protect packed_git [re-]initialization
      grep: re-enable threads in non-worktree case
      grep: move driver pre-load out of critical section
      grep: use no. of cores as the default no. of threads
      doc: sparse-checkout: mention --cone option
      completion: add support for sparse-checkout
      diff: make diff_populate_filespec() honor its repo argument
      cache-tree: use given repo's hash_algo at verify_one()
      pack-check: use given repo's hash_algo at verify_packfile()
      streaming: allow open_istream() to handle any repo
      sha1-file: pass git_hash_algo to write_object_file_prepare()
      sha1-file: pass git_hash_algo to hash_object_file()
      sha1-file: allow check_object_signature() to handle any repo

Matthew Rogers (10):
      config: fix typo in variable name
      t1300: fix over-indented HERE-DOCs
      t1300: create custom config file without special characters
      config: make scope_name non-static and rename it
      config: split repo scope to local and worktree
      config: clarify meaning of command line scoping
      config: preserve scope in do_git_config_sequence
      config: teach git_config_source to remember its scope
      submodule-config: add subomdule config scope
      config: add '--show-scope' to print the scope of a config value

Miriam Rubio (3):
      bisect--helper: convert `vocab_*` char pointers to char arrays
      bisect: use the standard 'if (!var)' way to check for 0
      bisect: add enum to represent bisect returning codes

Peter Kaestle (3):
      t7400: add a testcase for submodule status on empty dirs
      submodule: fix status of initialized but not cloned submodules
      t7400: testcase for submodule status on unregistered inner git repos

Philippe Blain (5):
      t7410: rename to t2405-worktree-submodule.sh
      t2405: use git -C and test_commit -C instead of subshells
      t2405: clarify test descriptions and simplify test
      submodule.c: use get_git_dir() instead of get_git_common_dir()
      grep: ignore --recurse-submodules if --no-index is given

Pranit Bauva (7):
      bisect--helper: return error codes from `cmd_bisect__helper()`
      bisect: libify `exit_if_skipped_commits` to `error_if_skipped*` and its dependents
      bisect: libify `bisect_checkout`
      bisect: libify `check_merge_bases` and its dependents
      bisect: libify `check_good_are_ancestors_of_bad` and its dependents
      bisect: libify `handle_bad_merge_base` and its dependents
      bisect: libify `bisect_next_all`

Ralf Thielow (1):
      submodule.c: mark more strings for translation

René Scharfe (20):
      name-rev: remove unused typedef
      name-rev: respect const qualifier
      name-rev: don't leak path copy in name_ref()
      name-rev: don't _peek() in create_or_update_name()
      name-rev: put struct rev_name into commit slab
      name-rev: factor out get_parent_name()
      name-rev: pre-size buffer in get_parent_name()
      name-rev: generate name strings only if they are better
      name-rev: release unused name strings
      name-rev: sort tip names before applying
      strbuf: add and use strbuf_insertstr()
      mailinfo: don't insert header prefix for handle_content_type()
      parse-options: use COPY_ARRAY in parse_options_concat()
      parse-options: factor out parse_options_count()
      parse-options: const parse_options_concat() parameters
      parse-options: simplify parse_options_dup()
      quote: use isalnum() to check for alphanumeric characters
      use strpbrk(3) to search for characters from a given set
      blame: provide type of fingerprints pointer
      commit-graph: use progress title directly

SZEDER Gábor (6):
      t9902-completion: add tests for the __git_find_on_cmdline() helper
      completion: clean up the __git_find_on_cmdline() helper function
      completion: return the index of found word from __git_find_on_cmdline()
      completion: simplify completing 'git worktree' subcommands and options
      completion: list existing working trees for 'git worktree' subcommands
      completion: list paths and refs for 'git worktree add'

Shourya Shukla (2):
      t6025: modernize style
      t6025: use helpers to replace test -f <path>

Tanushree Tumane (2):
      bisect--helper: change `retval` to `res`
      bisect--helper: introduce new `decide_next()` function

Taylor Blau (5):
      t5318: don't pass non-object directory to '--object-dir'
      commit-graph.h: store an odb in 'struct write_commit_graph_context'
      commit-graph.h: store object directory in 'struct commit_graph'
      commit-graph.c: remove path normalization, comparison
      commit-graph.h: use odb in 'load_commit_graph_one_fd_st'

brian m. carlson (53):
      run-command: avoid undefined behavior in exists_in_PATH
      t4054: make hash-size independent
      t4066: compute index line in diffs
      t4134: compute appropriate length constant
      t4200: make hash size independent
      t4202: abstract away SHA-1-specific constants
      t4204: make hash size independent
      t4300: abstract away SHA-1-specific constants
      t5318: update for SHA-256
      t5319: change invalid offset for SHA-256 compatibility
      t5319: make test work with SHA-256
      t5324: make hash size independent
      t5504: make hash algorithm independent
      t5510: make hash size independent
      t5512: abstract away SHA-1-specific constants
      t5530: compute results based on object length
      t5537: make hash size independent
      t5540: make hash size independent
      t5562: use $ZERO_OID
      t5601: switch into repository to hash object
      t5604: make hash independent
      docs: use "currently" for the present time
      doc: move author and committer information to git-commit(1)
      docs: expand on possible and recommended user config options
      doc: provide guidance on user.name format
      doc: dissuade users from trying to ignore tracked files
      docs: mention when increasing http.postBuffer is valuable
      t/lib-pack: support SHA-256
      t3206: make hash size independent
      t3308: make test work with SHA-256
      t3309: make test work with SHA-256
      t3310: make test work with SHA-256
      t3311: make test work with SHA-256
      t4013: make test hash independent
      t4211: move SHA-1-specific test cases into a directory
      t4211: add test cases for SHA-256
      t4060: make test work with SHA-256
      t5302: make hash size independent
      t5309: make test hash independent
      t5313: make test hash independent
      t5321: make test hash independent
      t5515: make test hash independent
      t5318: update for SHA-256
      t5607: make hash size independent
      t5703: make test work with SHA-256
      t6000: abstract away SHA-1-specific constants
      t6006: make hash size independent
      t6024: update for SHA-256
      mailmap: add an additional email address for brian m. carlson
      t1300: add test for urlmatch with multiple wildcards
      t0300: add tests for some additional cases
      credential: use the last matching username in the config
      credential: allow wildcard patterns when matching config


^ permalink raw reply	[relevance 2%]

* [Outreachy] [PATCH v3 00/13] Finish converting git bisect to C part 1
@ 2020-02-08  9:06  4% Miriam Rubio
  0 siblings, 0 replies; 162+ results
From: Miriam Rubio @ 2020-02-08  9:06 UTC (permalink / raw)
  To: git; +Cc: Miriam Rubio

These patches correspond to a first part of patch series 
of Outreachy project "Finish converting `git bisect` from shell to C" 
started by Pranit Bauva and Tanushree Tumane
(https://public-inbox.org/git/pull.117.git.gitgitgadget@gmail.com) and
continued by me.

This first part is formed of preparatory/clean-up patches and all 
`bisect.c` libification work. 

I would like to thank Johannes Schindelin and Junio Hamano for reviewing
the patch series.

These patch series emails were generated from:
https://gitlab.com/mirucam/git/commits/git-bisect-work-part1-v3

--- Changes since v2 Finish converting git bisect to C part 1 patch series ---

General changes
---------------

* Rebase on master branch: de93cc14ab (The third batch for 2.26, 2020-02-05).
* Amend commit messages.
* Add an enum to represent bisecting error codes.

Specific changes
----------------

[5/13] bisect--helper: introduce new `decide_next()` function

* Change const char* types to char* and fix `free()` calls.

--

[6/13] bisect: add enum to represent bisect returning codes

* New patch that adds an enum to represent bisecting error codes.

--

[7/13] bisect--helper: return error codes from `cmd_bisect__helper()`

* New patch split from `libify `check_good_are_ancestors_of_bad` and its 
dependents`.
* Change code in return for readability.

--

[8/13] bisect: libify `exit_if_skipped_commits` to `error_if_skipped*` 
and its dependents

* Remove comments.

--

[9/13] bisect: libify `bisect_checkout`

* Fix declaration block.
* Change code in return for readability.
* Add comments.

--

[11/13] bisect: libify `check_good_are_ancestors_of_bad` and its 
dependents

* Fix brace location.

--

Miriam Rubio (3):
  bisect--helper: convert `vocab_*` char pointers to char arrays
  bisect: use the standard 'if (!var)' way to check for 0
  bisect: add enum to represent bisect returning codes

Pranit Bauva (8):
  run-command: make `exists_in_PATH()` non-static
  bisect--helper: return error codes from `cmd_bisect__helper()`
  bisect: libify `exit_if_skipped_commits` to `error_if_skipped*` and
    its dependents
  bisect: libify `bisect_checkout`
  bisect: libify `check_merge_bases` and its dependents
  bisect: libify `check_good_are_ancestors_of_bad` and its dependents
  bisect: libify `handle_bad_merge_base` and its dependents
  bisect: libify `bisect_next_all`

Tanushree Tumane (2):
  bisect--helper: change `retval` to `res`
  bisect--helper: introduce new `decide_next()` function

 bisect.c                 | 135 +++++++++++++++++++++++++++------------
 bisect.h                 |  29 ++++++++-
 builtin/bisect--helper.c | 123 +++++++++++++++++++----------------
 run-command.c            |   2 +-
 run-command.h            |  11 ++++
 5 files changed, 201 insertions(+), 99 deletions(-)

-- 
2.25.0


^ permalink raw reply	[relevance 4%]

* [ANNOUNCE] Git v2.25.0
@ 2020-01-13 19:28  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-01-13 19:28 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

The latest feature release Git v2.25.0 is now available at the
usual places.  It is comprised of 583 non-merge commits since
v2.24.0, contributed by 84 people, 32 of which are new faces.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.25.0'
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!

  Ben Keene, Colin Stolley, Dominic Jäger, Erik Chen, Hariom
  Verma, Heba Waly, James Coglan, James Shubin, Johannes Schindelin
  via GitGitGadget, Jonathan Gilbert, Josh Holland, Kazuhiro
  Kato, Łukasz Niemier, Manish Goregaokar, Matthew Rogers,
  Mihail Atanassov, Miriam Rubio, Nathan Stocks, Naveen Nathan,
  Nika Layzell, pan93412, Paul Menzel, Philippe Blain, Prarit
  Bhargava, r.burenkov, Ruud van Asseldonk, ryenus, Slavica
  Đukić, Thomas Menzel, Utsav Shah, Yi-Jyun Pan, and Zoli Szabó.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Alban Gruin, Alessandro Menti, Alexander Shopov, Alexandr
  Miloslavskiy, Andreas Schwab, Andrei Rybak, brian m. carlson,
  Christopher Diaz Riveros, Daniel Ferreira, Denis Ovsienko,
  Denton Liu, Derrick Stolee, Dimitriy Ryazantcev, Đoàn Trần
  Công Danh, Ed Maste, Elia Pinto, Elijah Newren, Emily Shaffer,
  Eric Wong, Garima Singh, Hans Jerry Illikainen, Jean-Noël
  Avila, Jeff Hostetler, Jeff King, Jiang Xin, Johannes Berg,
  Johannes Schindelin, Johannes Sixt, Jonathan Nieder, Jonathan
  Tan, Jordi Mas, Junio C Hamano, Kevin Willford, Martin Ågren,
  Matthias Rüster, Mike Hommey, Peter Krefting, Philip Oakley,
  Phillip Wood, Pratyush Yadav, Ralf Thielow, René Scharfe, Robin
  H. Johnson, Rohit Ashiwal, SZEDER Gábor, Tanushree Tumane,
  Taylor Blau, Thomas Braun, Thomas Gummerer, Todd Zullinger,
  Trần Ngọc Quân, and William Baker.

----------------------------------------------------------------

Git 2.25 Release Notes
======================

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 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.

 * Miscellaneous small UX improvements on "git-p4".

 * "git sparse-checkout list" subcommand learned to give its output in
   a more concise form when the "cone" mode is in effect.


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.

 * 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.

 * FreeBSD CI support via Cirrus-CI has been added.


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).

 * Forbid pathnames that the platform's filesystem cannot represent on
   MinGW.
   (merge 4dc42c6c18 js/mingw-reserved-filenames later to maint).

 * "git rebase --signoff" stopped working when the command was written
   in C, which has been corrected.
   (merge 4fe7e43c53 en/rebase-signoff-fix later to maint).

 * An earlier update to Git for Windows declared that a tree object is
   invalid if it has a path component with backslash in it, which was
   overly strict, which has been corrected.  The only protection the
   Windows users need is to prevent such path (or any path that their
   filesystem cannot check out) from entering the index.
   (merge 224c7d70fa js/mingw-loosen-overstrict-tree-entry-checks later to maint).

 * The code to write split commit-graph file(s) upon fetching computed
   bogus value for the parameter used in splitting the resulting
   files, which has been corrected.
   (merge 63020f175f ds/commit-graph-set-size-mult 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).
   (merge 20a67e8ce9 js/use-test-tool-on-path later to maint).
   (merge 4e61b2214d ew/packfile-syscall-optim later to maint).
   (merge ace0f86c7f pb/clarify-line-log-doc later to maint).
   (merge 763a59e71c en/merge-recursive-oid-eq-simplify later to maint).
   (merge 4e2c4c0d4f do/gitweb-typofix-in-comments later to maint).
   (merge 421c0ffb02 jb/doc-multi-pack-idx-fix later to maint).
   (merge f8740c586b pm/am-in-body-header-doc-update later to maint).
   (merge 5814d44d9b tm/doc-submodule-absorb-fix 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()

Alessandro Menti (1):
      l10n: it.po: update the Italian translation for Git 2.25.0

Alexander Shopov (1):
      l10n: bg.po: Updated Bulgarian translation (4800t)

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

Ben Keene (2):
      git-p4: yes/no prompts should sanitize user text
      git-p4: show detailed help when parsing options fail

Christopher Diaz Riveros (1):
      l10n: es: 2.25.0 round #1

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

Denis Ovsienko (1):
      gitweb: fix a couple spelling errors in comments

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 (28):
      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
      sparse-checkout: list directories in cone mode
      sparse-checkout: document interactions with submodules
      sparse-checkout: use extern for global variables
      commit-graph: prefer default size_mult when given zero
      graph: drop assert() for merge with two collapsing parents
      graph: fix lack of color in horizontal lines

Dimitriy Ryazantcev (1):
      l10n: minor case fix in 'git branch' '--unset-upstream' description

Dominic Jäger (1):
      merge-strategies: fix typo "reflected to" to "reflected in"

Ed Maste (4):
      t4210: skip i18n tests that don't work on FreeBSD
      userdiff: remove empty subexpression from elixir regex
      CI: add FreeBSD CI support via Cirrus-CI
      sparse-checkout: improve OS ls compatibility

Elia Pinto (1):
      kset.h, tar.h: add missing header guard to prevent multiple inclusion

Elijah Newren (28):
      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()
      rebase: fix saving of --signoff state for am-based rebases
      merge-recursive: remove unnecessary oid_eq function

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

Eric Wong (2):
      packfile: remove redundant fcntl F_GETFD/F_SETFD
      packfile: replace lseek+read with pread

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 (3):
      doc: remove non pure ASCII characters
      doc: indent multi-line items in list
      l10n: fr.po v2.25.0 rnd 1

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

Jiang Xin (2):
      l10n: git.pot: v2.25.0 round 1 (119 new, 13 removed)
      l10n: zh_CN: for git v2.25.0 l10n round 1

Johannes Berg (1):
      multi-pack-index: correct configuration in documentation

Johannes Schindelin (96):
      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
      mingw: short-circuit the conversion of `/dev/null` to UTF-16
      mingw: refuse paths containing reserved names
      mingw: only test index entries for backslashes, not tree entries

Johannes Schindelin via GitGitGadget (1):
      mingw: safeguard better against backslashes in file names

Johannes Sixt (1):
      t3008: find test-tool through path lookup

Jonathan Gilbert (3):
      git-gui: consolidate naming conventions
      git-gui: update status bar to track operations
      git-gui: revert untracked files by deleting them

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

Jordi Mas (2):
      l10n: Update Catalan translation
      l10n: Update Catalan translation

Josh Holland (1):
      userdiff: support Python async functions

Junio C Hamano (19):
      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
      mailmap: mask accentless variant for Công Danh
      Git 2.25-rc1
      The final batch before -rc2
      Git 2.25-rc2
      Revert "Merge branch 'ra/rebase-i-more-options'"
      Git 2.25

Kazuhiro Kato (1):
      git gui: fix branch name encoding error

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 (2):
      t7004: check existence of correct tag
      config/advice.txt: fix description list separator

Matthew Rogers (1):
      rebase -r: let `label` generate safer labels

Matthias Rüster (1):
      l10n: de.po: Update German translation v2.25.0 round 1

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

Paul Menzel (1):
      am: document that Date: can appear as an in-body header

Peter Krefting (1):
      l10n: sv.po: Update Swedish translation (4800t0f0u)

Philip Oakley (1):
      Doc: Bundle file usage

Philippe Blain (6):
      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
      doc: log, gitk: document accepted line-log diff formats
      doc: log, gitk: line-log arguments must exist in starting revision

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 (2):
      git-shortlog.txt: include commit limiting options
      git-gui: allow closing console window with Escape

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.

Taylor Blau (1):
      Documentation/git-sparse-checkout.txt: fix a typo

Thomas Braun (1):
      l10n: de.po: Reword generation numbers

Thomas Gummerer (1):
      stash: make sure we have a valid index before writing it

Thomas Menzel (1):
      doc: submodule: fix typo for command absorbgitdirs

Todd Zullinger (1):
      t7812: expect failure for grep -i with invalid UTF-8 data

Trần Ngọc Quân (1):
      l10n: vi(4800t): Updated Vietnamese translation v2.25.0

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.

Yi-Jyun Pan (1):
      l10n: zh_TW: add translation for v2.24.0

Zoli Szabó (1):
      git-gui: allow opening currently selected file in default app

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

pan93412 (1):
      l10n: zh_TW.po: update translation for v2.25.0 round 1

r.burenkov (1):
      git-p4: honor lfs.storage configuration variable

ryenus (1):
      fix-typo: consecutive-word duplications

Đoàn Trần Công 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

Łukasz Niemier (1):
      userdiff: add Elixir to supported userdiff languages


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.25.0-rc2
@ 2020-01-08 22:27  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-01-08 22:27 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.25.0-rc2 is now available for testing
at the usual places.  It is comprised of 517 non-merge commits
since v2.24.1, contributed by 70 people, 29 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-rc2' 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.1 are as follows.
Welcome to the Git development community!

  Ben Keene, Colin Stolley, Dominic Jäger, Erik Chen, Hariom
  Verma, Heba Waly, James Coglan, James Shubin, Jonathan Gilbert,
  Josh Holland, Kazuhiro Kato, Łukasz Niemier, Manish Goregaokar,
  Matthew Rogers, Mihail Atanassov, Miriam Rubio, Nathan Stocks,
  Naveen Nathan, Nika Layzell, Paul Menzel, Philippe Blain,
  Prarit Bhargava, r.burenkov, Ruud van Asseldonk, ryenus,
  Slavica Đukić, Thomas Menzel, Utsav Shah, and Zoli Szabó.

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, Denis Ovsienko, Denton Liu,
  Derrick Stolee, Dimitriy Ryazantcev, Đoàn Trần Công Danh,
  Ed Maste, Elia Pinto, Elijah Newren, Emily Shaffer, Eric Wong,
  Hans Jerry Illikainen, Jean-Noël Avila, Jeff Hostetler,
  Jeff King, Johannes Berg, Johannes Schindelin, Johannes Sixt,
  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, Taylor Blau, 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.

 * Miscellaneous small UX improvements on "git-p4".

 * "git sparse-checkout list" subcommand learned to give its output in
   a more concise form when the "cone" mode is in effect.


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.

 * 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.

 * FreeBSD CI support via Cirrus-CI has been added.


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).

 * Forbid pathnames that the platform's filesystem cannot represent on
   MinGW.
   (merge 4dc42c6c18 js/mingw-reserved-filenames later to maint).

 * "git rebase --signoff" stopped working when the command was written
   in C, which has been corrected.
   (merge 4fe7e43c53 en/rebase-signoff-fix later to maint).

 * An earlier update to Git for Windows declared that a tree object is
   invalid if it has a path component with backslash in it, which was
   overly strict, which has been corrected.  The only protection the
   Windows users need is to prevent such path (or any path that their
   filesystem cannot check out) from entering the index.
   (merge 224c7d70fa js/mingw-loosen-overstrict-tree-entry-checks later to maint).

 * The code to write split commit-graph file(s) upon fetching computed
   bogus value for the parameter used in splitting the resulting
   files, which has been corrected.
   (merge 63020f175f ds/commit-graph-set-size-mult 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).
   (merge 20a67e8ce9 js/use-test-tool-on-path later to maint).
   (merge 4e61b2214d ew/packfile-syscall-optim later to maint).
   (merge ace0f86c7f pb/clarify-line-log-doc later to maint).
   (merge 763a59e71c en/merge-recursive-oid-eq-simplify later to maint).
   (merge 4e2c4c0d4f do/gitweb-typofix-in-comments later to maint).
   (merge 421c0ffb02 jb/doc-multi-pack-idx-fix later to maint).
   (merge f8740c586b pm/am-in-body-header-doc-update later to maint).
   (merge 5814d44d9b tm/doc-submodule-absorb-fix later to maint).

----------------------------------------------------------------

Changes since v2.24.1 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

Ben Keene (2):
      git-p4: yes/no prompts should sanitize user text
      git-p4: show detailed help when parsing options fail

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

Denis Ovsienko (1):
      gitweb: fix a couple spelling errors in comments

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 (28):
      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
      sparse-checkout: list directories in cone mode
      sparse-checkout: document interactions with submodules
      sparse-checkout: use extern for global variables
      commit-graph: prefer default size_mult when given zero
      graph: drop assert() for merge with two collapsing parents
      graph: fix lack of color in horizontal lines

Dimitriy Ryazantcev (1):
      l10n: minor case fix in 'git branch' '--unset-upstream' description

Dominic Jäger (1):
      merge-strategies: fix typo "reflected to" to "reflected in"

Ed Maste (4):
      t4210: skip i18n tests that don't work on FreeBSD
      userdiff: remove empty subexpression from elixir regex
      CI: add FreeBSD CI support via Cirrus-CI
      sparse-checkout: improve OS ls compatibility

Elia Pinto (1):
      kset.h, tar.h: add missing header guard to prevent multiple inclusion

Elijah Newren (28):
      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()
      rebase: fix saving of --signoff state for am-based rebases
      merge-recursive: remove unnecessary oid_eq function

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

Eric Wong (2):
      packfile: remove redundant fcntl F_GETFD/F_SETFD
      packfile: replace lseek+read with pread

Erik Chen (1):
      fetch: add trace2 instrumentation

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 (37):
      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

Johannes Berg (1):
      multi-pack-index: correct configuration in documentation

Johannes Schindelin (60):
      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
      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
      mingw: short-circuit the conversion of `/dev/null` to UTF-16
      mingw: refuse paths containing reserved names
      mingw: only test index entries for backslashes, not tree entries

Johannes Sixt (1):
      t3008: find test-tool through path lookup

Jonathan Gilbert (3):
      git-gui: consolidate naming conventions
      git-gui: update status bar to track operations
      git-gui: revert untracked files by deleting them

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 (17):
      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
      mailmap: mask accentless variant for Công Danh
      Git 2.25-rc1
      The final batch before -rc2
      Git 2.25-rc2

Kazuhiro Kato (1):
      git gui: fix branch name encoding error

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

Paul Menzel (1):
      am: document that Date: can appear as an in-body header

Philip Oakley (1):
      Doc: Bundle file usage

Philippe Blain (6):
      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
      doc: log, gitk: document accepted line-log diff formats
      doc: log, gitk: line-log arguments must exist in starting revision

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 (2):
      git-shortlog.txt: include commit limiting options
      git-gui: allow closing console window with Escape

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.

Taylor Blau (1):
      Documentation/git-sparse-checkout.txt: fix a typo

Thomas Gummerer (1):
      stash: make sure we have a valid index before writing it

Thomas Menzel (1):
      doc: submodule: fix typo for command absorbgitdirs

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.

Zoli Szabó (1):
      git-gui: allow opening currently selected file in default app

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

Đoàn Trần Công 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

Łukasz Niemier (1):
      userdiff: add Elixir to supported userdiff languages


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.25.0-rc1
@ 2020-01-02 23:33  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-01-02 23:33 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.25.0-rc1 is now available for testing
at the usual places.  It is comprised of 540 non-merge commits
since v2.24.0, contributed by 63 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-rc1' 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!

  Ben Keene, Colin Stolley, 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, Đoàn Trần Công Danh, Ed
  Maste, Elia Pinto, Elijah Newren, Emily Shaffer, Garima Singh,
  Hans Jerry Illikainen, Jean-Noël Avila, Jeff Hostetler, Jeff
  King, Johannes Schindelin, Johannes Sixt, 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.

 * Miscellaneous small UX improvements on "git-p4".


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.

 * FreeBSD CI support via Cirrus-CI has been added.


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).

 * Forbid pathnames that the platform's filesystem cannot represent on
   MinGW.
   (merge 4dc42c6c18 js/mingw-reserved-filenames later to maint).

 * "git rebase --signoff" stopped working when the command was written
   in C, which has been corrected.
   (merge 4fe7e43c53 en/rebase-signoff-fix 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).
   (merge 20a67e8ce9 js/use-test-tool-on-path 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

Ben Keene (2):
      git-p4: yes/no prompts should sanitize user text
      git-p4: show detailed help when parsing options fail

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

Dominic Jäger (1):
      merge-strategies: fix typo "reflected to" to "reflected in"

Ed Maste (4):
      t4210: skip i18n tests that don't work on FreeBSD
      userdiff: remove empty subexpression from elixir regex
      CI: add FreeBSD CI support via Cirrus-CI
      sparse-checkout: improve OS ls compatibility

Elia Pinto (1):
      kset.h, tar.h: add missing header guard to prevent multiple inclusion

Elijah Newren (27):
      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()
      rebase: fix saving of --signoff state for am-based rebases

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 (95):
      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
      mingw: short-circuit the conversion of `/dev/null` to UTF-16
      mingw: refuse paths containing reserved names

Johannes Sixt (1):
      t3008: find test-tool through path lookup

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 (15):
      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
      mailmap: mask accentless variant for Công Danh
      Git 2.25-rc1

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

Đoàn Trần Công 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

Łukasz Niemier (1):
      userdiff: add Elixir to supported userdiff languages


^ permalink raw reply	[relevance 2%]

* Re: [ANNOUNCE] Git v2.25.0-rc0
  2019-12-25 21:44  2% [ANNOUNCE] Git v2.25.0-rc0 Junio C Hamano
@ 2019-12-26  0:33  0% ` Denton Liu
  0 siblings, 0 replies; 162+ results
From: Denton Liu @ 2019-12-26  0:33 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Linux Kernel, git-packagers

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
> 

^ permalink raw reply	[relevance 0%]

* [ANNOUNCE] Git v2.25.0-rc0
@ 2019-12-25 21:44  2% Junio C Hamano
  2019-12-26  0:33  0% ` Denton Liu
  0 siblings, 1 reply; 162+ results
From: Junio C Hamano @ 2019-12-25 21:44 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers


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


^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Dec 2019, #02; Thu, 5)
@ 2019-12-05 22:36  1% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2019-12-05 22:36 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The third batch of topics are now in 'master'.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* dd/rebase-merge-reserves-onto-label (2019-11-20) 1 commit
  (merged to 'next' on 2019-11-21 at a6e4e5af0a)
 + sequencer: handle rebase-merges for "onto" message
 (this branch uses js/rebase-r-safer-label.)

 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.


* dl/range-diff-with-notes (2019-11-21) 10 commits
  (merged to 'next' on 2019-11-25 at dd6dad97c1)
 + format-patch: pass notes configuration to range-diff
 + range-diff: pass through --notes to `git log`
 + range-diff: output `## Notes ##` header
 + t3206: range-diff compares logs with commit notes
 + t3206: s/expected/expect/
 + t3206: disable parameter substitution in heredoc
 + t3206: remove spaces after redirect operators
 + pretty-options.txt: --notes accepts a ref instead of treeish
 + rev-list-options.txt: remove reference to --show-notes
 + argv-array: add space after `while`

 "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.


* dl/t5520-cleanup (2019-11-21) 15 commits
  (merged to 'next' on 2019-11-27 at 523d920acf)
 + t5520: replace `! git` with `test_must_fail git`
 + t5520: remove redundant lines in test cases
 + t5520: replace $(cat ...) comparison with test_cmp
 + t5520: don't put git in upstream of pipe
 + t5520: test single-line files by git with test_cmp
 + t5520: use test_cmp_rev where possible
 + t5520: replace test -{n,z} with test-lib functions
 + t5520: use test_line_count where possible
 + t5520: remove spaces after redirect operator
 + t5520: replace test -f with test-lib functions
 + t5520: let sed open its own input
 + t5520: use sq for test case names
 + t5520: improve test style
 + t: teach test_cmp_rev to accept ! for not-equals
 + t0000: test multiple local assignment

 Test cleanup.


* ec/fetch-mark-common-refs-trace2 (2019-11-20) 1 commit
  (merged to 'next' on 2019-11-25 at c2b8e1546c)
 + fetch: add trace2 instrumentation

 Trace2 annotation.


* ep/guard-kset-tar-headers (2019-11-07) 1 commit
  (merged to 'next' on 2019-11-21 at 6c9574b01d)
 + kset.h, tar.h: add missing header guard to prevent multiple inclusion

 Code clean-up.


* hi/gpg-optional-pkfp-fix (2019-11-23) 2 commits
  (merged to 'next' on 2019-11-25 at b0d668176f)
 + gpg-interface: limit search for primary key fingerprint
 + gpg-interface: refactor the free-and-xmemdupz pattern
 (this branch is used by hi/gpg-use-check-signature.)

 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.


* hv/assume-priumax-is-available-anywhere (2019-11-25) 1 commit
  (merged to 'next' on 2019-11-27 at caac4f633d)
 + git-compat-util.h: drop the `PRIuMAX` and other fallback definitions

 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.


* jc/azure-ci-osx-fix-fix (2019-11-20) 1 commit
  (merged to 'next' on 2019-11-25 at 7de6356e67)
 + ci(osx): update homebrew-cask repository with less noise

 CI jobs for macOS has been made less chatty when updating perforce
 package used during testing.


* jh/userdiff-python-async (2019-11-20) 1 commit
  (merged to 'next' on 2019-11-25 at 74e4a4ed9f)
 + userdiff: support Python async functions

 The userdiff machinery has been taught that "async def" is another
 way to begin a "function" in Python.


* jk/fail-show-toplevel-outside-working-tree (2019-11-20) 1 commit
  (merged to 'next' on 2019-11-25 at cd97ae38bc)
 + rev-parse: make --show-toplevel without a worktree an error

 "git rev-parse --show-toplevel" run outside of any working tree did
 not error out, which has been corrected.


* js/builtin-add-i (2019-11-18) 9 commits
  (merged to 'next' on 2019-11-21 at caefa55b89)
 + built-in add -i: implement the `help` command
 + built-in add -i: use color in the main loop
 + built-in add -i: support `?` (prompt help)
 + built-in add -i: show unique prefixes of the commands
 + built-in add -i: implement the main loop
 + built-in add -i: color the header in the `status` command
 + built-in add -i: implement the `status` command
 + diff: export diffstat interface
 + Start to implement a built-in version of `git add --interactive`
 (this branch is used by js/builtin-add-i-cmds.)

 The beginning of rewriting "git add -i" in C.


* js/git-svn-use-rebase-merges (2019-11-23) 1 commit
  (merged to 'next' on 2019-11-25 at 9585fe30f8)
 + git svn: stop using `rebase --preserve-merges`

 Prepare further for "rebase --preserve-merges" deprecation.


* js/pkt-line-h-typofix (2019-12-02) 1 commit
  (merged to 'next' on 2019-12-02 at 8f36a354ae)
 + pkt-line: fix a typo

 Typofix.


* js/rebase-r-safer-label (2019-11-18) 2 commits
  (merged to 'next' on 2019-11-21 at 791d51b0d7)
 + rebase -r: let `label` generate safer labels
 + rebase-merges: move labels' whitespace mangling into `label_oid()`
 (this branch is used by dd/rebase-merge-reserves-onto-label.)

 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.


* mg/doc-submodule-status-cached (2019-11-24) 1 commit
  (merged to 'next' on 2019-11-25 at fa833392a3)
 + doc: document 'git submodule status --cached'

 "git submodule status" and "git submodule status --cached" show
 different things, but the documentation did not cover them
 correctly, which has been corrected.


* mg/submodule-status-from-a-subdirectory (2019-11-25) 1 commit
  (merged to 'next' on 2019-11-27 at 24cb2d79ff)
 + submodule: fix 'submodule status' when called from a subdirectory

 "git submodule status" that is run from a subdirectory of the
 superproject did not work well, which has been corrected.


* mh/clear-topo-walk-upon-reset (2019-11-25) 2 commits
  (merged to 'next' on 2019-11-27 at 15871c1c2a)
 + revision: free topo_walk_info before creating a new one in init_topo_walk
 + revision: clear the topo-walk flags in reset_revision_walk

 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.


* nl/reset-patch-takes-a-tree (2019-11-25) 1 commit
  (merged to 'next' on 2019-11-25 at 34dc348eaf)
 + reset: parse rev as tree-ish in patch mode

 "git reset --patch $object" without any pathspec should allow a
 tree object to be given, but incorrectly required a committish,
 which has been corrected.


* pb/submodule-update-fetches (2019-11-24) 1 commit
  (merged to 'next' on 2019-11-25 at 7736f98351)
 + doc: mention that 'git submodule update' fetches missing commits

 Doc update.


* pw/sequencer-compare-with-right-parent-to-check-empty-commits (2019-11-23) 1 commit
  (merged to 'next' on 2019-11-25 at a4e4f06286)
 + sequencer: fix empty commit check when amending

 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.


* sg/test-bool-env (2019-11-23) 2 commits
  (merged to 'next' on 2019-11-27 at e1874e422f)
 + t5608-clone-2gb.sh: turn GIT_TEST_CLONE_2GB into a bool
 + tests: add 'test_bool_env' to catch non-bool GIT_TEST_* values

 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.


* sg/unpack-progress-throughput (2019-11-20) 1 commit
  (merged to 'next' on 2019-11-25 at 0418db6a27)
 + builtin/unpack-objects.c: show throughput progress

 "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.


* us/unpack-trees-fsmonitor (2019-11-21) 1 commit
  (merged to 'next' on 2019-11-27 at 4c06f74957)
 + unpack-trees: skip stat on fsmonitor-valid files

 Users of oneway_merge() (like "reset --hard") learned to take
 advantage of fsmonitor to avoid unnecessary lstat(2) calls.

--------------------------------------------------
[New Topics]

* am/pathspec-f-f-checkout (2019-12-04) 7 commits
 - checkout, restore: support the --pathspec-from-file option
 - doc: restore: synchronize <pathspec> description
 - doc: checkout: synchronize <pathspec> description
 - doc: checkout: fix broken text reference
 - doc: checkout: remove duplicate synopsis
 - add: support the --pathspec-from-file option
 - cmd_add: prepare for next patch
 (this branch uses am/pathspec-from-file; is tangled with es/pathspec-f-f-grep.)

 A few more commands learned the "--pathspec-from-file" command line
 option.

 Will merge to 'next'.


* dl/lore-is-the-archive (2019-12-04) 3 commits
  (merged to 'next' on 2019-12-05 at c87e168cd6)
 + doc: replace LKML link with lore.kernel.org
 + RelNotes: replace Gmane with real Message-IDs
 + doc: replace MARC links with lore.kernel.org
 (this branch uses jk/lore-is-the-archive.)

 Publicize lore.kernel.org mailing list archive and use URLs
 pointing into it to refer to notable messages in the documentation.

 Will merge to 'master'.


* dl/rebase-with-autobase (2019-12-05) 5 commits
 - rebase: fix format.useAutoBase breakage
 - format-patch: teach --no-base
 - t4014: use test_config()
 - format-patch: fix indentation
 - t3400: demonstrate failure with format.useAutoBase

 "git rebase" did not work well when format.useAutoBase
 configuration variable is set, which has been corrected.

 Will merge to 'next'.


* es/pathspec-f-f-grep (2019-12-04) 1 commit
 - grep: support the --pathspec-from-file option
 (this branch uses am/pathspec-from-file; is tangled with am/pathspec-f-f-checkout.)

 "git grep" learned the "--pathspec-from-file" command line
 option.

 Waiting for review response.


* rs/xdiff-ignore-ws-w-func-context (2019-12-05) 1 commit
 - xdiff: unignore changes in function context

 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.

 Will merge to 'next'.


* ag/edit-todo-drop-check (2019-12-04) 2 commits
 - rebase-interactive: warn if commit is dropped with `rebase --edit-todo'
 - sequencer: move check_todo_list_from_file() to rebase-interactive.c
 (this branch uses ag/sequencer-todo-updates.)

 Allow the rebase.missingCommitsCheck configuration to kick in when
 "rebase --edit-todo" and "rebase --continue" restarts the procedure.

 Seems to break when merged to 'pu'.


--------------------------------------------------
[Stalled]

* mt/threaded-grep-in-object-store (2019-10-02) 11 commits
 - grep: move driver pre-load out of critical section
 - grep: re-enable threads in non-worktree case
 - grep: protect packed_git [re-]initialization
 - grep: allow submodule functions to run in parallel
 - submodule-config: add skip_if_read option to repo_read_gitmodules()
 - grep: replace grep_read_mutex by internal obj read lock
 - object-store: allow threaded access to object reading
 - replace-object: make replace operations thread-safe
 - grep: fix racy calls in grep_objects()
 - grep: fix race conditions at grep_submodule()
 - grep: fix race conditions on userdiff calls

 Traditionally, we avoided threaded grep while searching in objects
 (as opposed to files in the working tree) as accesses to the object
 layer is not thread-safe.  This limitation is getting lifted.

 Expecting a reroll.
 cf. <CAHd-oW7UPSSExyLtfLMCObWogKrBOctYabrFrOdf9-4Q2PZmMg@mail.gmail.com>


* po/bundle-doc-clonable (2019-10-21) 1 commit
  (merged to 'next' on 2019-12-02 at bd7fa24ad6)
 + Doc: Bundle file usage

 Doc update.

 Will merge to 'master'.


* js/advise-rebase-skip (2019-10-23) 3 commits
 - commit: give correct advice for empty commit during a rebase
 - sequencer: export the function to get the path of `.git/rebase-merge/`
 - cherry-pick: add test for `--skip` advice in `git commit`

 The logic used in "git commit" to give hints and errors depending
 on what operation was in progress learned to distinguish rebase and
 cherry-pick better.

 Kicked back to 'pu'.
 cf. <nycvar.QRO.7.76.6.1911081508560.46@tvgsbejvaqbjf.bet>


* vn/reset-deleted-ita (2019-07-26) 1 commit
 - reset: unstage empty deleted ita files

 "git reset HEAD [<pathspec>]" did not reset an empty file that was
 added with the intent-to-add bit.

 Expecting a reroll.


* jn/unknown-index-extensions (2018-11-21) 2 commits
 - index: offer advice for unknown index extensions
 - index: do not warn about unrecognized extensions

 A bit too alarming warning given when unknown index extensions
 exist is getting revamped.

 Expecting a reroll.


* jc/format-patch-delay-message-id (2019-04-05) 1 commit
 - format-patch: move message-id and related headers to the end

 The location "git format-patch --thread" adds the Message-Id:
 header in the series of header fields has been moved down, which
 may help working around a suspected bug in GMail MSA, reported at
 <CAHk-=whP1stFZNAaJiMi5eZ9rj0MRt20Y_yHVczZPH+O01d+sA@mail.gmail.com>

 Waiting for feedback to see if it truly helps.
 Needs tests.


* js/protocol-advertise-multi (2018-12-28) 1 commit
 - protocol: advertise multiple supported versions

 The transport layer has been updated so that the protocol version
 used can be negotiated between the parties, by the initiator
 listing the protocol versions it is willing to talk, and the other
 side choosing from one of them.

 Expecting a reroll.
 cf. <CANq=j3u-zdb_FvNJGPCmygNMScseav63GhVvBX3NcVS4f7TejA@mail.gmail.com>


* mk/use-size-t-in-zlib (2018-10-15) 1 commit
 - zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

--------------------------------------------------
[Cooking]

* ds/commit-graph-delay-gen-progress (2019-11-27) 2 commits
  (merged to 'next' on 2019-12-05 at 9252a4b1b6)
 + commit-graph: use start_delayed_progress()
 + progress: create GIT_PROGRESS_DELAY

 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.

 Will merge to 'master'.


* ds/sparse-cone (2019-11-22) 19 commits
 - sparse-checkout: check for dirty status
 - sparse-checkout: update working directory in-process for 'init'
 - sparse-checkout: cone mode should not interact with .gitignore
 - sparse-checkout: write using lockfile
 - sparse-checkout: use in-process update for disable subcommand
 - sparse-checkout: update working directory in-process
 - sparse-checkout: sanitize for nested folders
 - unpack-trees: add progress to clear_ce_flags()
 - unpack-trees: hash less in cone mode
 - sparse-checkout: init and set in cone mode
 - sparse-checkout: use hashmaps for cone patterns
 - sparse-checkout: add 'cone' mode
 - trace2: add region in clear_ce_flags
 - sparse-checkout: create 'disable' subcommand
 - sparse-checkout: add '--stdin' option to set subcommand
 - sparse-checkout: 'set' subcommand
 - clone: add --sparse mode
 - sparse-checkout: create 'init' subcommand
 - sparse-checkout: create builtin with 'list' subcommand

 Management of sparsely checked-out working tree has gained a
 dedicated "sparse-checkout" command.

 Possibly wait for Szeder?
 cf. <bea26b66-ac52-8f0e-9557-c958db7be628@gmail.com>


* dl/test-cleanup (2019-12-04) 26 commits
 - t7700: stop losing return codes of git commands
 - t7700: make references to SHA-1 generic
 - t7700: replace egrep with grep
 - t7700: consolidate code into test_has_duplicate_object()
 - t7700: consolidate code into test_no_missing_in_packs()
 - t7700: s/test -f/test_path_is_file/
 - t7700: move keywords onto their own line
 - t7700: remove spaces after redirect operators
 - t7700: drop redirections to /dev/null
 - t7501: stop losing return codes of git commands
 - t7501: remove spaces after redirect operators
 - t5703: stop losing return codes of git commands
 - t5703: simplify one-time-sed generation logic
 - t5317: use ! grep to check for no matching lines
 - t5317: stop losing return codes of git commands
 - t4138: stop losing return codes of git commands
 - t4015: use test_write_lines()
 - t4015: stop losing return codes of git commands
 - t3600: comment on inducing SIGPIPE in `git rm`
 - t3600: stop losing return codes of git commands
 - t3600: use test_line_count() where possible
 - t3301: stop losing return codes of git commands
 - t0090: stop losing return codes of git commands
 - t0014: remove git command upstream of pipe
 - apply-one-time-sed.sh: modernize style
 - lib-bash.sh: move `then` onto its own line

 Test cleanup.

 Will merge to 'next'.


* tg/perf-remove-stale-result (2019-11-27) 1 commit
  (merged to 'next' on 2019-12-05 at 466f07fb63)
 + perf-lib: use a single filename for all measurement types

 PerfTest fix to avoid stale result mixed up with the latest round
 of test results.

 Will merge to 'master'.


* ds/fsmonitor-testing (2019-11-22) 11 commits
 - test-lib: clear watchman watches at test completion
 - t7519: disable external GIT_TEST_FSMONITOR variable
 - t7063: disable fsmonitor with status cache
 - tests: disable fsmonitor in submodule tests
 - t3600-rm.sh: disable fsmonitor when deleting populated submodule
 - t3030-merge-recursive.sh: disable fsmonitor when tweaking GIT_WORK_TREE
 - fsmonitor: disable fsmonitor with worktrees
 - t1510-repo-setup.sh: disable fsmonitor if no .git dir
 - t1301-shared-repo.sh: disable FSMONITOR
 - fsmonitor: do not output to stderr for tests
 - fsmonitor: disable in a bare repo

 Updates around testing fsmoitor integration.

 On Hold.
 cf. <bea26b66-ac52-8f0e-9557-c958db7be628@gmail.com>


* js/mingw-inherit-only-std-handles (2019-12-02) 6 commits
  (merged to 'next' on 2019-12-05 at 289f13054b)
 + mingw: forbid translating ERROR_SUCCESS to an errno value
  (merged to 'next' on 2019-12-02 at 798a952eca)
 + mingw: do set `errno` correctly when trying to restrict handle inheritance
  (merged to 'next' on 2019-11-27 at 4736894af6)
 + mingw: restrict file handle inheritance only on Windows 7 and later
 + mingw: spawned processes need to inherit only standard handles
 + mingw: work around incorrect standard handles
 + mingw: demonstrate that all file handles are inherited by child processes

 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.

 Will merge to 'master'.


* sg/assume-no-todo-update-in-cherry-pick (2019-11-24) 1 commit
  (merged to 'next' on 2019-11-27 at 6908186f85)
 + sequencer: don't re-read todo for revert and cherry-pick

 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.

 Will merge to 'master'.


* as/t7812-missing-redirects-fix (2019-12-01) 2 commits
  (merged to 'next' on 2019-12-05 at aa89a7945f)
 + t7812: expect failure for grep -i with invalid UTF-8 data
 + t7812: add missing redirects

 Test fix.

 Will merge to 'master'.


* jk/perf-wo-git-dot-pm (2019-11-27) 1 commit
  (merged to 'next' on 2019-12-05 at 6d9e3930ec)
 + t/perf: don't depend on Git.pm

 Test cleanup.

 Will merge to 'master'.


* jt/clone-recursesub-ref-advise (2019-12-03) 2 commits
  (merged to 'next' on 2019-12-05 at fc071dddfe)
 + submodule--helper: advise on fatal alternate error
 + Doc: explain submodule.alternateErrorStrategy

 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.

 Will merge to 'master'.


* ra/t5150-depends-on-perl (2019-11-27) 1 commit
 . t5150: skip request-pull test if Perl is disabled

 Some Porcelain commands are written in Perl, and tests on them are
 expected not to work when the platform lacks a working perl.

 Redo.


* rs/simplify-prepare-cmd (2019-11-27) 1 commit
  (merged to 'next' on 2019-12-02 at 12e1a9e935)
 + run-command: use prepare_git_cmd() in prepare_cmd()

 Code cleanup.

 Will merge to 'master'.


* rs/test-cleanup (2019-11-30) 7 commits
  (merged to 'next' on 2019-12-02 at eabc2e30f5)
 + t7811: don't create unused file
 + t9300: don't create unused file
 + test: use test_must_be_empty F instead of test_cmp empty F
 + test: use test_must_be_empty F instead of test -z $(cat F)
 + t1400: use test_must_be_empty
 + t1410: use test_line_count
 + t1512: use test_line_count

 Test cleanup.

 Will merge to 'master'.


* rs/use-skip-prefix-more (2019-11-27) 5 commits
  (merged to 'next' on 2019-12-02 at a2124db23e)
 + name-rev: use skip_prefix() instead of starts_with()
 + push: use skip_prefix() instead of starts_with()
 + shell: use skip_prefix() instead of starts_with()
 + fmt-merge-msg: use skip_prefix() instead of starts_with()
 + fetch: use skip_prefix() instead of starts_with()

 Code cleanup.

 Will merge to 'master'.


* sg/test-squelch-noise-in-commit-bulk (2019-11-27) 1 commit
  (merged to 'next' on 2019-12-05 at 7819efee07)
 + test-lib-functions: suppress a 'git rev-parse' error in 'test_commit_bulk'

 Code cleanup.

 Will merge to 'master'.


* ag/sequencer-continue-leakfix (2019-11-30) 1 commit
  (merged to 'next' on 2019-12-05 at 923a6a7ab6)
 + sequencer: fix a memory leak in sequencer_continue()

 Leakfix.

 Will merge to 'master'.


* bc/t9001-zsh-in-posix-emulation-mode (2019-11-30) 1 commit
  (merged to 'next' on 2019-12-05 at d0ce4bcc90)
 + t9001: avoid including non-trailing NUL bytes in variables

 Test portability fix.

 Will merge to 'master'.


* cs/store-packfiles-in-hashmap (2019-12-03) 1 commit
  (merged to 'next' on 2019-12-05 at 887d5559bb)
 + packfile.c: speed up loading lots of packfiles

 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.

 Will merge to 'master'.


* dd/time-reentrancy (2019-12-01) 3 commits
  (merged to 'next' on 2019-12-05 at d0c91f4d1b)
 + mingw: use {gm,local}time_s as backend for {gm,local}time_r
 + archive-zip.c: switch to reentrant localtime_r
 + date.c: switch to reentrant {gm,local}time_r

 Avoid gmtime() and localtime() and prefer their reentrant
 counterparts.

 Will merge to 'master'.


* em/test-skip-regex-illseq (2019-11-30) 1 commit
  (merged to 'next' on 2019-12-05 at 85c7940aeb)
 + t4210: skip i18n tests that don't work on FreeBSD

 Test portability fix.

 Will merge to 'master'.


* hi/gpg-use-check-signature (2019-11-30) 1 commit
  (merged to 'next' on 2019-12-05 at 35fc8e839a)
 + gpg-interface: prefer check_signature() for GPG verification

 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.

 Will merge to 'master'.


* hi/grep-do-not-return-void (2019-11-30) 1 commit
  (merged to 'next' on 2019-12-02 at 4409c73cfa)
 + grep: don't return an expression from pcre2_free()

 Code cleanup.

 Will merge to 'master'.


* jk/lore-is-the-archive (2019-11-30) 2 commits
  (merged to 'next' on 2019-12-02 at 603a2b0105)
 + doc: replace public-inbox links with lore.kernel.org
 + doc: recommend lore.kernel.org over public-inbox.org
 (this branch is used by dl/lore-is-the-archive.)

 Doc update for the mailing list archiving and nntp service.

 Will merge to 'master'.


* jk/send-pack-check-negative-with-quick (2019-11-30) 1 commit
  (merged to 'next' on 2019-12-02 at 2b01214601)
 + send-pack: use OBJECT_INFO_QUICK to check negative objects

 Performance tweak on "git push" into a repository with many refs
 that point at objects we have never heard of.

 Will merge to 'master'.


* sg/osx-force-gcc-9 (2019-11-29) 1 commit
  (merged to 'next' on 2019-12-02 at 4916f80e5e)
 + ci: build Git with GCC 9 in the 'osx-gcc' build job

 TravisCI update.

 Will merge to 'master'.


* dl/pretty-reference (2019-11-20) 11 commits
  (merged to 'next' on 2019-12-05 at 0972133ad2)
 + SubmittingPatches: use `--pretty=reference`
 + pretty: implement 'reference' format
 + pretty: add struct cmt_fmt_map::default_date_mode_type
 + pretty: provide short date format
 + t4205: cover `git log --reflog -z` blindspot
 + pretty.c: inline initalize format_context
 + revision: make get_revision_mark() return const pointer
 + completion: complete `tformat:` pretty format
 + SubmittingPatches: remove dq from commit reference
 + pretty-formats.txt: use generic terms for hash
 + SubmittingPatches: use generic terms for hash

 "git log" family learned "--pretty=ref" that gives the name of a
 commit in the format that is often used to refer to it in log
 messages.

 Will merge to 'master'.


* hw/doc-in-header (2019-11-18) 20 commits
 - trace2: move doc to trace2.h
 - submodule-config: move doc to submodule-config.h
 - tree-walk: move doc to tree-walk.h
 - trace: move doc to trace.h
 - run-command: move doc to run-command.h
 - parse-options: add link to doc file in parse-options.h
 - credential: move doc to credential.h
 - argv-array: move doc to argv-array.h
 - cache: move doc to cache.h
 - sigchain: move doc to sigchain.h
 - pathspec: move doc to pathspec.h
 - revision: move doc to revision.h
 - attr: move doc to attr.h
 - refs: move doc to refs.h
 - remote: move doc to remote.h and refspec.h
 - sha1-array: move doc to sha1-array.h
 - merge: move doc to ll-merge.h
 - graph: move doc to graph.h and graph.c
 - dir: move doc to dir.h
 - diff: move doc to diff.h and diffcore.h


* js/builtin-add-i-cmds (2019-12-01) 9 commits
  (merged to 'next' on 2019-12-05 at 30cfe5c15d)
 + built-in add -i: offer the `quit` command
 + built-in add -i: re-implement the `diff` command
 + built-in add -i: implement the `patch` command
 + built-in add -i: re-implement `add-untracked` in C
 + built-in add -i: re-implement `revert` in C
 + built-in add -i: implement the `update` command
 + built-in add -i: prepare for multi-selection commands
 + built-in add -i: allow filtering the modified files list
 + add-interactive: make sure to release `rev.prune_data`

 "git add -i" that is getting rewritten in C has been extended to
 cover subcommands other than the "patch".

 Will merge to 'master'.


* ma/config-bool-valex (2019-11-14) 8 commits
 - builtin/config: die if "value_regex" doesn't canonicalize as boolean
 - builtin/config: warn if "value_regex" doesn't canonicalize as boolean
 - builtin/config: canonicalize "value_regex" with `--type=bool-or-int`
 - builtin/config: canonicalize "value_regex" with `--type=bool`
 - builtin/config: collect "value_regexp" data in a struct
 - builtin/config: extract `handle_value_regex()` from `get_value()`
 - t1300: modernize part of script
 - config: make `git_parse_maybe_bool_text()` public

 "git config" can be told to affect the existing entries that
 "match" the given value via its value_regex argument.  It learned
 to normalize the value set in the configuration and the value given
 from the command line before computing they "match", e.g. "true" in
 the configuration file can now match with "yes" given from the
 command line.

 Needs a bit more work?
 cf. <CAN0heSrtwi9V607vBX9PMSfNLQ8iGcno6_iGuR4Fs8ndGxqh8A@mail.gmail.com>


* sg/name-rev-wo-recursion (2019-11-13) 13 commits
 - name-rev: cleanup name_ref()
 - name-rev: eliminate recursion in name_rev()
 - name-rev: drop name_rev()'s 'generation' and 'distance' parameters
 - name-rev: restructure creating/updating 'struct rev_name' instances
 - name-rev: restructure parsing commits and applying date cutoff
 - name-rev: pull out deref handling from the recursion
 - name-rev: extract creating/updating a 'struct name_rev' into a helper
 - t6120: add a test to cover inner conditions in 'git name-rev's name_rev()
 - name-rev: use sizeof(*ptr) instead of sizeof(type) in allocation
 - name-rev: avoid unnecessary cast in name_ref()
 - name-rev: use strbuf_strip_suffix() in get_rev_name()
 - t6120-describe: modernize the 'check_describe' helper
 - t6120-describe: correct test repo history graph in comment

 Redo "git name-rev" to avoid recursive calls.

 Looks more-or-less ready for 'next'?
 cf. <20191127181322.171734-1-jonathantanmy@google.com>
 cf. <20191127180210.168901-1-jonathantanmy@google.com>
 cf. <20191112103821.30265-1-szeder.dev@gmail.com>


* am/pathspec-from-file (2019-11-20) 6 commits
  (merged to 'next' on 2019-11-27 at ee131b80fb)
 + commit: support the --pathspec-from-file option
 + doc: commit: synchronize <pathspec> description
 + reset: support the `--pathspec-from-file` option
 + doc: reset: synchronize <pathspec> description
 + pathspec: add new function to parse file
 + parse-options.h: add new options `--pathspec-from-file`, `--pathspec-file-nul`
 (this branch is used by am/pathspec-f-f-checkout and es/pathspec-f-f-grep.)

 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.

 Will merge to 'master'.


* ra/rebase-i-more-options (2019-11-25) 7 commits
  (merged to 'next' on 2019-11-27 at e8a6d1e281)
 + rebase -i: finishing touches to --reset-author-date
 + rebase: add --reset-author-date
 + rebase -i: support --ignore-date
 + sequencer: rename amend_author to author_to_rename
 + rebase -i: support --committer-date-is-author-date
 + sequencer: allow callers of read_author_script() to ignore fields
 + rebase -i: add --ignore-whitespace flag

 "git rebase -i" learned a few options that are known by "git
 rebase" proper.

 Will merge to 'master'.


* dl/submodule-set-url (2019-10-30) 1 commit
  (merged to 'next' on 2019-12-05 at a164eccad1)
 + submodule: teach set-url subcommand

 "git submodule" learned a subcommand "set-url".

 Will merge to 'master'.


* ag/sequencer-todo-updates (2019-11-25) 5 commits
  (merged to 'next' on 2019-11-27 at 3258d51dfc)
 + sequencer: directly call pick_commits() from complete_action()
 + rebase: fill `squash_onto' in get_replay_opts()
 + sequencer: move the code writing total_nr on the disk to a new function
 + sequencer: update `done_nr' when skipping commands in a todo list
 + sequencer: update `total_nr' when adding an item to a todo list
 (this branch is used by ag/edit-todo-drop-check.)

 Reduce unnecessary reading of state variables back from the disk
 during sequencer operation.

 Will merge to 'master'.


* jk/packfile-reuse-cleanup (2019-10-23) 9 commits
  (merged to 'next' on 2019-11-19 at 9683853939)
 + pack-objects: improve partial packfile reuse
 + builtin/pack-objects: introduce obj_is_packed()
 + pack-objects: introduce pack.allowPackReuse
 + csum-file: introduce hashfile_total()
 + pack-bitmap: introduce bitmap_walk_contains()
 + pack-bitmap: don't rely on bitmap_git->reuse_objects
 + ewah/bitmap: introduce bitmap_word_alloc()
 + packfile: expose get_delta_base()
 + builtin/pack-objects: report reused packfile objects

 The way "git pack-objects" reuses objects stored in existing pack
 to generate its result has been improved.

 Hold.  There is an update to these patches that currently are on 'next'.
 cf. <20191115180319.113991-1-jonathantanmy@google.com>

^ permalink raw reply	[relevance 1%]

* Re: [GIT PULL] git-gui pull request
  @ 2019-09-18 19:23  4%   ` Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2019-09-18 19:23 UTC (permalink / raw)
  To: Pratyush Yadav; +Cc: Denton Liu, git

Denton Liu <liu.denton@gmail.com> writes:

> Hi Pratyush,
>
> Since you're the maintainer now, you should submit a patch to
> Documentation/SubmittingPatches to change
>
> 	- `git-gui/` comes from git-gui project, maintained by Pat Thoyts:
>
> 		git://repo.or.cz/git-gui.git
>
> to have your own information.

There also is MaintNotes on the todo branch, which I'll take care
of.

FWIW, the following update to the draft release notes will be part
of what I'll push out, together with the "Third batch" update to the
master.

diff --git a/Documentation/RelNotes/2.24.0.txt b/Documentation/RelNotes/2.24.0.txt
index e123d2daa6..ff48d8582c 100644
--- a/Documentation/RelNotes/2.24.0.txt
+++ b/Documentation/RelNotes/2.24.0.txt
@@ -11,6 +11,9 @@ Backward compatibility note
 
 UI, Workflows & Features
 
+ * We now have an active interim maintainer for the Git-Gui part of
+   the system.  Praise and thank Pratyush Yadav for volunteering.
+
  * The command line parser learned "--end-of-options" notation; the
    standard convention for scripters to have hardcoded set of options
    first on the command line, and force the command to treat end-user
@@ -28,6 +31,21 @@ UI, Workflows & Features
  * Device-tree files learned their own userdiff patterns.
    (merge 3c81760bc6 sb/userdiff-dts later to maint).
 
+ * "git rebase --rebase-merges" learned to drive different merge
+   strategies and pass strategy specific options to them.
+
+ * A new "pre-merge-commit" hook has been introduced.
+
+ * Command line completion updates for "git -c var.name=val" have been
+   added.
+
+ * The lazy clone machinery has been taught that there can be more
+   than one promisor remote and consult them in order when downloading
+   missing objects on demand.
+
+ * The list-objects-filter API (used to create a sparse/lazy clone)
+   learned to take a combined filter specification.
+
 
 Performance, Internal Implementation, Development Support etc.
 
@@ -39,6 +57,20 @@ Performance, Internal Implementation, Development Support etc.
 
  * Further clean-up of the initialization code.
 
+ * xmalloc() used to have a mechanism to ditch memory and address
+   space resources as the last resort upon seeing an allocation
+   failure from the underlying malloc(), which made the code complex
+   and thread-unsafe with dubious benefit, as major memory resource
+   users already do limit their uses with various other mechanisms.
+   It has been simplified away.
+
+ * Unnecessary full-tree diff in "git log -L" machinery has been
+   optimized away.
+
+ * The http transport lacked some optimization the native transports
+   learned to avoid unnecessary ref advertisement, which has been
+   corrected.
+
 
 Fixes since v2.23
 -----------------
@@ -99,6 +131,10 @@ Fixes since v2.23
    subsequent steps.
    (merge 2c65d90f75 bc/reread-attributes-during-rebase later to maint).
 
+ * Tell cURL library to use the same malloc() implementation, with the
+   xmalloc() wrapper, as the rest of the system, for consistency.
+   (merge 93b980e58f cb/curl-use-xmalloc later to maint).
+
  * Other code cleanup, docfix, build fix, etc.
    (merge d1387d3895 en/fast-import-merge-doc later to maint).
    (merge 1c24a54ea4 bm/repository-layout-typofix later to maint).

^ permalink raw reply related	[relevance 4%]

* Re: [ANNOUNCE] Git v2.23.0
  2019-08-16 21:00  2% [ANNOUNCE] Git v2.23.0 Junio C Hamano
@ 2019-08-16 21:30  0% ` Bhaskar Chowdhury
  0 siblings, 0 replies; 162+ results
From: Bhaskar Chowdhury @ 2019-08-16 21:30 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Linux Kernel, git-packagers

[-- Attachment #1: Type: text/plain, Size: 46719 bytes --]


Thanks, a bunch Junio! :)

On 14:00 Fri 16 Aug 2019, Junio C Hamano wrote:
>The latest feature release Git v2.23.0 is now available at the
>usual places.  It is comprised of 505 non-merge commits since
>v2.22.0, contributed by 77 people, 26 of which are new faces.
>
>The tarballs are found at:
>
>    https://www.kernel.org/pub/software/scm/git/
>
>The following public repositories all have a copy of the 'v2.23.0'
>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.22.0 are as follows.
>Welcome to the Git development community!
>
>  Ariadne Conill, Barret Rhoden, Ben Avison, Carmine Zaccagnino,
>  Daniel Ferreira, Doug Ilijev, Dr. Adam Nielsen, Jakub Wilk,
>  John Lin, Mark Rushakoff, Matheus Tavares, Mazo, Andrey,
>  Michael Osipov, Michael Platings, Miguel Ojeda, Mike Mueller,
>  Morian Sonnet, Philipp Weißmann, Quentin Nerden, Robert Morgan,
>  Simon Williams, Steven Roberts, Tigran Mkrtchyan, Varun Naik,
>  Vishal Verma, and Xin Li.
>
>Returning contributors who helped this release are as follows.
>Thanks for your continued support.
>
>  Ævar Arnfjörð Bjarmason, Alessandro Menti, Alexander
>  Shopov, Beat Bolli, Boxuan Li, brian m. carlson, Carlo Marcelo
>  Arenas Belón, Cesar Eduardo Barros, Chris Mayo, Christian
>  Couder, Christopher Díaz Riveros, Denton Liu, Derrick Stolee,
>  Dimitriy Ryazantcev, Edmundo Carmona Antoranz, Elijah Newren,
>  Emily Shaffer, Eric Wong, Felipe Contreras, Jean-Noël Avila,
>  Jeff Hostetler, Jeff King, Jiang Xin, Johannes Schindelin,
>  Johannes Sixt, Jonathan Nieder, Jonathan Tan, Jordi Mas, Josh
>  Steadmon, Junio C Hamano, Karsten Blees, Marc-André Lureau,
>  Martin Ågren, Matthew DeVore, Matthias Rüster, Mike Hommey,
>  Nguyễn Thái Ngọc Duy, Nickolai Belakovski, Paolo Bonzini,
>  Peter Krefting, Philip Oakley, Phillip Wood, Ramsay Jones, René
>  Scharfe, Rohit Ashiwal, Stephen Boyd, SZEDER Gábor, Taylor Blau,
>  Thomas Gummerer, Trần Ngọc Quân, and William Chargin.
>
>----------------------------------------------------------------
>
>Git 2.23 Release Notes
>======================
>
>Updates since v2.22
>-------------------
>
>Backward compatibility note
>
> * The "--base" option of "format-patch" computed the patch-ids for
>   prerequisite patches in an unstable way, which has been updated to
>   compute in a way that is compatible with "git patch-id --stable".
>
> * The "git log" command by default behaves as if the --mailmap option
>   was given.
>
>
>UI, Workflows & Features
>
> * The "git fast-export/import" pair has been taught to handle commits
>   with log messages in encoding other than UTF-8 better.
>
> * In recent versions of Git, per-worktree refs are exposed in
>   refs/worktrees/<wtname>/ hierarchy, which means that worktree names
>   must be a valid refname component.  The code now sanitizes the names
>   given to worktrees, to make sure these refs are well-formed.
>
> * "git merge" learned "--quit" option that cleans up the in-progress
>   merge while leaving the working tree and the index still in a mess.
>
> * "git format-patch" learns a configuration to set the default for
>   its --notes=<ref> option.
>
> * The code to show args with potential typo that cannot be
>   interpreted as a commit-ish has been improved.
>
> * "git clone --recurse-submodules" learned to set up the submodules
>   to ignore commit object names recorded in the superproject gitlink
>   and instead use the commits that happen to be at the tip of the
>   remote-tracking branches from the get-go, by passing the new
>   "--remote-submodules" option.
>
> * The pattern "git diff/grep" use to extract funcname and words
>   boundary for Matlab has been extend to cover Octave, which is more
>   or less equivalent.
>
> * "git help git" was hard to discover (well, at least for some
>   people).
>
> * The pattern "git diff/grep" use to extract funcname and words
>   boundary for Rust has been added.
>
> * "git status" can be told a non-standard default value for the
>   "--[no-]ahead-behind" option with a new configuration variable
>   status.aheadBehind.
>
> * "git fetch" and "git pull" reports when a fetch results in
>   non-fast-forward updates to let the user notice unusual situation.
>   The commands learned "--no-show-forced-updates" option to disable
>   this safety feature.
>
> * Two new commands "git switch" and "git restore" are introduced to
>   split "checking out a branch to work on advancing its history" and
>   "checking out paths out of the index and/or a tree-ish to work on
>   advancing the current history" out of the single "git checkout"
>   command.
>
> * "git branch --list" learned to always output the detached HEAD as
>   the first item (when the HEAD is detached, of course), regardless
>   of the locale.
>
> * The conditional inclusion mechanism learned to base the choice on
>   the branch the HEAD currently is on.
>
> * "git rev-list --objects" learned the "--no-object-names" option to
>   squelch the path to the object that is used as a grouping hint for
>   pack-objects.
>
> * A new tag.gpgSign configuration variable turns "git tag -a" into
>   "git tag -s".
>
> * "git multi-pack-index" learned expire and repack subcommands.
>
> * "git blame" learned to "ignore" commits in the history, whose
>   effects (as well as their presence) get ignored.
>
> * "git cherry-pick/revert" learned a new "--skip" action.
>
> * The tips of refs from the alternate object store can be used as
>   starting point for reachability computation now.
>
> * Extra blank lines in "git status" output have been reduced.
>
> * The commits in a repository can be described by multiple
>   commit-graph files now, which allows the commit-graph files to be
>   updated incrementally.
>
> * "git range-diff" output has been tweaked for easier identification
>   of which part of what file the patch shown is about.
>
>
>Performance, Internal Implementation, Development Support etc.
>
> * Update supporting parts of "git rebase" to remove code that should
>   no longer be used.
>
> * Developer support to emulate unsatisfied prerequisites in tests to
>   ensure that the remainder of the tests still succeeds when tests
>   with prerequisites are skipped.
>
> * "git update-server-info" learned not to rewrite the file with the
>   same contents.
>
> * The way of specifying the path to find dynamic libraries at runtime
>   has been simplified.  The old default to pass -R/path/to/dir has been
>   replaced with the new default to pass -Wl,-rpath,/path/to/dir,
>   which is the more recent GCC uses.  Those who need to build with an
>   old GCC can still use "CC_LD_DYNPATH=-R"
>
> * Prepare use of reachability index in topological walker that works
>   on a range (A..B).
>
> * A new tutorial targeting specifically aspiring git-core
>   developers has been added.
>
> * Auto-detect how to tell HP-UX aCC where to use dynamically linked
>   libraries from at runtime.
>
> * "git mergetool" and its tests now spawn fewer subprocesses.
>
> * Dev support update to help tracing out tests.
>
> * Support to build with MSVC has been updated.
>
> * "git fetch" that grabs from a group of remotes learned to run the
>   auto-gc only once at the very end.
>
> * A handful of Windows build patches have been upstreamed.
>
> * The code to read state files used by the sequencer machinery for
>   "git status" has been made more robust against a corrupt or stale
>   state files.
>
> * "git for-each-ref" with multiple patterns have been optimized.
>
> * The tree-walk API learned to pass an in-core repository
>   instance throughout more codepaths.
>
> * When one step in multi step cherry-pick or revert is reset or
>   committed, the command line prompt script failed to notice the
>   current status, which has been improved.
>
> * Many GIT_TEST_* environment variables control various aspects of
>   how our tests are run, but a few followed "non-empty is true, empty
>   or unset is false" while others followed the usual "there are a few
>   ways to spell true, like yes, on, etc., and also ways to spell
>   false, like no, off, etc." convention.
>
> * Adjust the dir-iterator API and apply it to the local clone
>   optimization codepath.
>
> * We have been trying out a few language features outside c89; the
>   coding guidelines document did not talk about them and instead had
>   a blanket ban against them.
>
> * A test helper has been introduced to optimize preparation of test
>   repositories with many simple commits, and a handful of test
>   scripts have been updated to use it.
>
>
>Fixes since v2.22
>-----------------
>
> * A relative pathname given to "git init --template=<path> <repo>"
>   ought to be relative to the directory "git init" gets invoked in,
>   but it instead was made relative to the repository, which has been
>   corrected.
>
> * "git worktree add" used to fail when another worktree connected to
>   the same repository was corrupt, which has been corrected.
>
> * The ownership rule for the file descriptor to fast-import remote
>   backend was mixed up, leading to an unrelated file descriptor getting
>   closed, which has been fixed.
>
> * A "merge -c" instruction during "git rebase --rebase-merges" should
>   give the user a chance to edit the log message, even when there is
>   otherwise no need to create a new merge and replace the existing
>   one (i.e. fast-forward instead), but did not.  Which has been
>   corrected.
>
> * Code cleanup and futureproof.
>
> * More parameter validation.
>
> * "git update-server-info" used to leave stale packfiles in its
>   output, which has been corrected.
>
> * The server side support for "git fetch" used to show incorrect
>   value for the HEAD symbolic ref when the namespace feature is in
>   use, which has been corrected.
>
> * "git am -i --resolved" segfaulted after trying to see a commit as
>   if it were a tree, which has been corrected.
>
> * "git bundle verify" needs to see if prerequisite objects exist in
>   the receiving repository, but the command did not check if we are
>   in a repository upfront, which has been corrected.
>
> * "git merge --squash" is designed to update the working tree and the
>   index without creating the commit, and this cannot be countermanded
>   by adding the "--commit" option; the command now refuses to work
>   when both options are given.
>
> * The data collected by fsmonitor was not properly written back to
>   the on-disk index file, breaking t7519 tests occasionally, which
>   has been corrected.
>
> * Update to Unicode 12.1 width table.
>
> * The command line to invoke a "git cat-file" command from inside
>   "git p4" was not properly quoted to protect a caret and running a
>   broken command on Windows, which has been corrected.
>
> * "git request-pull" learned to warn when the ref we ask them to pull
>   from in the local repository and in the published repository are
>   different.
>
> * When creating a partial clone, the object filtering criteria is
>   recorded for the origin of the clone, but this incorrectly used a
>   hardcoded name "origin" to name that remote; it has been corrected
>   to honor the "--origin <name>" option.
>
> * "git fetch" into a lazy clone forgot to fetch base objects that are
>   necessary to complete delta in a thin packfile, which has been
>   corrected.
>
> * The filter_data used in the list-objects-filter (which manages a
>   lazily sparse clone repository) did not use the dynamic array API
>   correctly---'nr' is supposed to point at one past the last element
>   of the array in use.  This has been corrected.
>
> * The description about slashes in gitignore patterns (used to
>   indicate things like "anchored to this level only" and "only
>   matches directories") has been revamped.
>
> * The URL decoding code has been updated to avoid going past the end
>   of the string while parsing %-<hex>-<hex> sequence.
>
> * The list of for-each like macros used by clang-format has been
>   updated.
>
> * "git branch --list" learned to show branches that are checked out
>   in other worktrees connected to the same repository prefixed with
>   '+', similar to the way the currently checked out branch is shown
>   with '*' in front.
>   (merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).
>
> * Code restructuring during 2.20 period broke fetching tags via
>   "import" based transports.
>
> * The commit-graph file is now part of the "files that the runtime
>   may keep open file descriptors on, all of which would need to be
>   closed when done with the object store", and the file descriptor to
>   an existing commit-graph file now is closed before "gc" finalizes a
>   new instance to replace it.
>
> * "git checkout -p" needs to selectively apply a patch in reverse,
>   which did not work well.
>
> * Code clean-up to avoid signed integer wraparounds during binary search.
>
> * "git interpret-trailers" always treated '#' as the comment
>   character, regardless of core.commentChar setting, which has been
>   corrected.
>
> * "git stash show 23" used to work, but no more after getting
>   rewritten in C; this regression has been corrected.
>
> * "git rebase --abort" used to leave refs/rewritten/ when concluding
>   "git rebase -r", which has been corrected.
>
> * An incorrect list of options was cached after command line
>   completion failed (e.g. trying to complete a command that requires
>   a repository outside one), which has been corrected.
>
> * The code to parse scaled numbers out of configuration files has
>   been made more robust and also easier to follow.
>
> * The codepath to compute delta islands used to spew progress output
>   without giving the callers any way to squelch it, which has been
>   fixed.
>
> * Protocol capabilities that go over wire should never be translated,
>   but it was incorrectly marked for translation, which has been
>   corrected.  The output of protocol capabilities for debugging has
>   been tweaked a bit.
>
> * Use "Erase in Line" CSI sequence that is already used in the editor
>   support to clear cruft in the progress output.
>
> * "git submodule foreach" did not protect command line options passed
>   to the command to be run in each submodule correctly, when the
>   "--recursive" option was in use.
>
> * The configuration variable rebase.rescheduleFailedExec should be
>   effective only while running an interactive rebase and should not
>   affect anything when running a non-interactive one, which was not
>   the case.  This has been corrected.
>
> * The "git clone" documentation refers to command line options in its
>   description in the short form; they have been replaced with long
>   forms to make them more recognisable.
>
> * Generation of pack bitmaps are now disabled when .keep files exist,
>   as these are mutually exclusive features.
>   (merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).
>
> * "git rm" to resolve a conflicted path leaked an internal message
>   "needs merge" before actually removing the path, which was
>   confusing.  This has been corrected.
>
> * "git stash --keep-index" did not work correctly on paths that have
>   been removed, which has been fixed.
>   (merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).
>
> * Window 7 update ;-)
>
> * A codepath that reads from GPG for signed object verification read
>   past the end of allocated buffer, which has been fixed.
>
> * "git clean" silently skipped a path when it cannot lstat() it; now
>   it gives a warning.
>
> * "git push --atomic" that goes over the transport-helper (namely,
>   the smart http transport) failed to prevent refs to be pushed when
>   it can locally tell that one of the ref update will fail without
>   having to consult the other end, which has been corrected.
>
> * The internal diff machinery can be made to read out of bounds while
>   looking for --function-context line in a corner case, which has been
>   corrected.
>   (merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).
>
> * Other code cleanup, docfix, build fix, etc.
>   (merge fbec05c210 cc/test-oidmap later to maint).
>   (merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint).
>   (merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint).
>   (merge d61e6ce1dd sg/fsck-config-in-doc later to maint).
>
>----------------------------------------------------------------
>
>Changes since v2.22.0 are as follows:
>
>Alessandro Menti (3):
>      l10n: it.po: update the Italian translation
>      l10n: it.po: update the Italian translation for v2.23.0
>      l10n: it.po: update the Italian localization for v2.23.0 round 2
>
>Alexander Shopov (1):
>      l10n: bg.po: Updated Bulgarian translation (4674t)
>
>Ariadne Conill (3):
>      log: add warning for unspecified log.mailmap setting
>      documentation: mention --no-use-mailmap and log.mailmap false setting
>      tests: defang pager tests by explicitly disabling the log.mailmap warning
>
>Barret Rhoden (8):
>      fsck: rename and touch up init_skiplist()
>      Move oidset_parse_file() to oidset.c
>      blame: use a helper function in blame_chunk()
>      blame: add the ability to ignore commits and their changes
>      blame: add config options for the output of ignored or unblamable lines
>      blame: optionally track line fingerprints during fill_blame_origin()
>      blame: use the fingerprint heuristic to match ignored lines
>      blame: add a test to cover blame_coalesce()
>
>Beat Bolli (2):
>      unicode: update the width tables to Unicode 12.1
>      grep: print the pcre2_jit_on value
>
>Ben Avison (1):
>      clone: add `--remote-submodules` flag
>
>Boxuan Li (2):
>      userdiff: add Octave
>      userdiff: fix grammar and style issues
>
>Carlo Marcelo Arenas Belón (6):
>      fsmonitor: avoid signed integer overflow / infinite loop
>      wrapper: avoid undefined behaviour in macOS
>      trace2: correct typo in technical documentation
>      xdiff: drop system includes in xutils.c
>      xdiff: remove duplicate headers from xhistogram.c
>      xdiff: remove duplicate headers from xpatience.c
>
>Carmine Zaccagnino (1):
>      l10n: it.po: remove an extra space
>
>Cesar Eduardo Barros (1):
>      mingw: embed a manifest to trick UAC into Doing The Right Thing
>
>Chris Mayo (1):
>      send-email: update documentation of required Perl modules
>
>Christian Couder (7):
>      t/helper: add test-oidmap.c
>      t: add t0016-oidmap.sh
>      oidmap: use sha1hash() instead of static hash() function
>      test-hashmap: remove 'hash' command
>      doc: improve usage string in MyFirstContribution
>      test-oidmap: remove 'add' subcommand
>      t0016: add 'remove' subcommand test
>
>Christopher Díaz Riveros (1):
>      l10n: es: 2.23.0 round 2
>
>Daniel Ferreira (1):
>      dir-iterator: add tests for dir-iterator API
>
>Denton Liu (5):
>      git-format-patch.txt: document --no-notes option
>      format-patch: teach format.notes config option
>      config: learn the "onbranch:" includeIf condition
>      config/alias.txt: change " and ' to `
>      config/alias.txt: document alias accepting non-command first word
>
>Derrick Stolee (51):
>      commit-graph: fix the_repository reference
>      revision: use generation for A..B --topo-order queries
>      revision: keep topo-walk free of unintersting commits
>      sha1-file: split OBJECT_INFO_FOR_PREFETCH
>      repack: refactor pack deletion for future use
>      Docs: rearrange subcommands for multi-pack-index
>      multi-pack-index: prepare for 'expire' subcommand
>      midx: simplify computation of pack name lengths
>      midx: refactor permutation logic and pack sorting
>      multi-pack-index: implement 'expire' subcommand
>      multi-pack-index: prepare 'repack' subcommand
>      midx: implement midx_repack()
>      multi-pack-index: test expire while adding packs
>      midx: add test that 'expire' respects .keep files
>      t5319-multi-pack-index.sh: test batch size zero
>      commit-graph: return with errors during write
>      commit-graph: collapse parameters into flags
>      commit-graph: remove Future Work section
>      commit-graph: create write_commit_graph_context
>      commit-graph: extract fill_oids_from_packs()
>      commit-graph: extract fill_oids_from_commit_hex()
>      commit-graph: extract fill_oids_from_all_packs()
>      commit-graph: extract count_distinct_commits()
>      commit-graph: extract copy_oids_to_commits()
>      commit-graph: extract write_commit_graph_file()
>      commit-graph: use raw_object_store when closing
>      packfile: close commit-graph in close_all_packs
>      packfile: rename close_all_packs to close_object_store
>      commit-graph: document commit-graph chains
>      commit-graph: prepare for commit-graph chains
>      commit-graph: rename commit_compare to oid_compare
>      commit-graph: load commit-graph chains
>      commit-graph: add base graphs chunk
>      commit-graph: rearrange chunk count logic
>      commit-graph: write commit-graph chains
>      commit-graph: add --split option to builtin
>      commit-graph: merge commit-graph chains
>      commit-graph: allow cross-alternate chains
>      commit-graph: expire commit-graph files
>      commit-graph: create options for split files
>      commit-graph: verify chains with --shallow mode
>      commit-graph: clean up chains after flattened write
>      commit-graph: test octopus merges with --split
>      commit-graph: test --split across alternate without --split
>      commit-graph: normalize commit-graph filenames
>      commit-graph: test verify across alternates
>      fetch: add --[no-]show-forced-updates argument
>      fetch: warn about forced updates in branch listing
>      pull: add --[no-]show-forced-updates passthrough
>      t5319: use 'test-tool path-utils' instead of 'ls -l'
>      commit-graph: fix bug around octopus merges
>
>Dimitriy Ryazantcev (2):
>      l10n: ru.po: update Russian translation
>      l10n: localizable upload progress messages
>
>Doug Ilijev (1):
>      README: fix rendering of text in angle brackets
>
>Dr. Adam Nielsen (1):
>      gitignore.txt: make slash-rules more readable
>
>Edmundo Carmona Antoranz (1):
>      builtin/merge.c - cleanup of code in for-cycle that tests strategies
>
>Elijah Newren (6):
>      t9350: fix encoding test to actually test reencoding
>      fast-import: support 'encoding' commit header
>      fast-export: avoid stripping encoding header if we cannot reencode
>      fast-export: differentiate between explicitly UTF-8 and implicitly UTF-8
>      fast-export: do automatic reencoding of commit messages only if requested
>      merge-recursive: avoid directory rename detection in recursive case
>
>Emily Shaffer (7):
>      documentation: add tutorial for first contribution
>      documentation: add anchors to MyFirstContribution
>      grep: fail if call could output and name is null
>      doc: hint about GIT_DEBUGGER in CodingGuidelines
>      doc: add some nit fixes to MyFirstContribution
>      rev-list: teach --no-object-names to enable piping
>      transport-helper: enforce atomic in push_refs_with_push
>
>Eric Wong (3):
>      update-server-info: avoid needless overwrites
>      server-info: do not list unlinked packs
>      repack: disable bitmaps-by-default if .keep files exist
>
>Felipe Contreras (5):
>      t5801 (remote-helpers): cleanup refspec stuff
>      t5801 (remote-helpers): add test to fetch tags
>      fetch: trivial cleanup
>      fetch: make the code more understandable
>      fetch: fix regression with transport helpers
>
>Jakub Wilk (1):
>      doc: don't use git.kernel.org as example gitweb URL
>
>Jean-Noël Avila (2):
>      l10n: reformat some localized strings for v2.23.0
>      l10n: fr v2.23.0 round 2
>
>Jeff Hostetler (13):
>      cache-tree/blame: avoid reusing the DEBUG constant
>      msvc: mark a variable as non-const
>      msvc: do not re-declare the timespec struct
>      msvc: define ftello()
>      msvc: fix detect_msys_tty()
>      msvc: update Makefile to allow for spaces in the compiler path
>      status: add status.aheadbehind setting
>      status: warn when a/b calculation takes too long
>      status: ignore status.aheadbehind in porcelain formats
>      msvc: support building Git using MS Visual C++
>      msvc: add a compile-time flag to allow detailed heap debugging
>      msvc: do not pretend to support all signals
>      msvc: ignore .dll and incremental compile output
>
>Jeff King (57):
>      cmd_{read,write}_tree: rename "unused" variable that is used
>      builtin: consistently pass cmd_* prefix to parse_options
>      submodule: drop unused prefix parameter from some functions
>      clone: drop dest parameter from copy_alternates()
>      read-cache: drop unused parameter from threaded load
>      wt-status: drop unused status parameter
>      mktree: drop unused length parameter
>      name-rev: drop unused parameters from is_better_name()
>      pack-objects: drop unused rev_info parameters
>      receive-pack: drop unused "commands" from prepare_shallow_update()
>      remove_all_fetch_refspecs(): drop unused "remote" parameter
>      rev-list: drop unused void pointer from finish_commit()
>      show-branch: drop unused parameter from show_independent()
>      verify-commit: simplify parameters to run_gpg_verify()
>      help_unknown_ref(): duplicate collected refnames
>      help_unknown_ref(): check for refname ambiguity
>      upload-pack: strip namespace from symref data
>      am: simplify prompt response handling
>      am: read interactive input from stdin
>      am: drop tty requirement for --interactive
>      am: fix --interactive HEAD tree resolution
>      interpret-trailers: load default config
>      verify-tag: drop signal.h include
>      wt-status.h: drop stdio.h include
>      describe: fix accidental oid/hash type-punning
>      upload-pack: rename a "sha1" variable to "oid"
>      pack-bitmap-write: convert some helpers to use object_id
>      pack-objects: convert packlist_find() to use object_id
>      pack-objects: convert locate_object_entry_hash() to object_id
>      object: convert lookup_unknown_object() to use object_id
>      object: convert lookup_object() to use object_id
>      object: convert internal hash_obj() to object_id
>      object: convert create_object() to use object_id
>      khash: drop broken oid_map typedef
>      khash: rename kh_oid_t to kh_oid_set
>      delta-islands: convert island_marks khash to use oids
>      pack-bitmap: convert khash_sha1 maps into kh_oid_map
>      khash: drop sha1-specific map types
>      khash: rename oid helper functions
>      hash.h: move object_id definition from cache.h
>      hashmap: convert sha1hash() to oidhash()
>      delta-islands: respect progress flag
>      blame: drop some unused function parameters
>      object-store.h: move for_each_alternate_ref() from transport.h
>      check_everything_connected: assume alternate ref tips are valid
>      test-lib: introduce test_commit_bulk
>      t5310: increase the number of bitmapped commits
>      t3311: use test_commit_bulk
>      t5702: use test_commit_bulk
>      t5703: use test_commit_bulk
>      t6200: use test_commit_bulk
>      xdiff: clamp function context indices in post-image
>      t: sort output of hashmap iteration
>      t7700: clean up .keep file in bitmap-writing test
>      repack: silence warnings when auto-enabled bitmaps cannot be built
>      repack: simplify handling of auto-bitmaps and .keep files
>      t0000: reword comments for "local" test
>
>Jiang Xin (3):
>      l10n: git.pot: v2.23.0 round 1 (130 new, 35 removed)
>      l10n: git.pot: v2.23.0 round 2 (4 new, 6 removed)
>      l10n: zh_CN: for git v2.23.0 l10n round 1~2
>
>Johannes Schindelin (47):
>      Drop unused git-rebase--am.sh
>      t3400: stop referring to the scripted rebase
>      .gitignore: there is no longer a built-in `git-rebase--interactive`
>      sequencer: the `am` and `rebase--interactive` scripts are gone
>      rebase: fold git-rebase--common into the -p backend
>      bisect--helper: verify HEAD could be parsed before continuing
>      fill_stat_cache_info(): prepare for an fsmonitor fix
>      mark_fsmonitor_valid(): mark the index as changed if needed
>      bundle verify: error out if called without an object database
>      poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
>      kwset: allow building with GCC 8
>      winansi: simplify loading the GetCurrentConsoleFontEx() function
>      config: avoid calling `labs()` on too-large data type
>      t3404: fix a typo
>      mingw: fix a typo in the msysGit-specific section
>      Mark .bat files as requiring CR/LF endings
>      t0001 (mingw): do not expect a specific order of stdout/stderr
>      obstack: fix compiler warning
>      mingw: replace mingw_startup() hack
>      msvc: fix dependencies of compat/msvc.c
>      t0001: fix on case-insensitive filesystems
>      msvc: avoid debug assertion windows in Debug Mode
>      mingw: enable stack smashing protector
>      mingw: get pw_name in UTF-8 format
>      mingw: use Unicode functions explicitly
>      rebase --am: ignore rebase.rescheduleFailedExec
>      mingw: fix possible buffer overrun when calling `GetUserNameW()`
>      diff: munmap() file contents before running external diff
>      mingw: support spawning programs containing spaces in their names
>      clean: show an error message when the path is too long
>      rebase: fix white-space
>      git: mark cmd_rebase as requiring a worktree
>      Vcproj.pm: auto-generate GUIDs
>      Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool
>      Vcproj.pm: urlencode '<' and '>' when generating VC projects
>      contrib/buildsystems: ignore irrelevant files in Generators/
>      contrib/buildsystems: error out on unknown option
>      contrib/buildsystems: handle libiconv, too
>      contrib/buildsystems: also handle -lexpat
>      contrib/buildsystems: handle options starting with a slash
>      contrib/buildsystems: add a backend for modern Visual Studio versions
>      msvc: add a Makefile target to pre-generate the Visual Studio solution
>      vcxproj: also link-or-copy builtins
>      .gitignore: ignore Visual Studio's temporary/generated files
>      bin-wrappers: append `.exe` to target paths if necessary
>      git: avoid calling aliased builtins via their dashed form
>      config: work around bug with includeif:onbranch and early config
>
>Johannes Sixt (5):
>      userdiff: two simplifications of patterns for rust
>      t7610-mergetool: do not place pipelines headed by `yes` in subshells
>      t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
>      mergetool: dissect strings with shell variable magic instead of `expr`
>      mergetool: use shell variable magic instead of `awk`
>
>John Lin (1):
>      status: remove the empty line after hints
>
>Jonathan Nieder (1):
>      t: decrease nesting in test_oid_to_path
>
>Jonathan Tan (5):
>      t5616: refactor packfile replacement
>      index-pack: prefetch missing REF_DELTA bases
>      t5616: use correct flag to check object is missing
>      t5616: cover case of client having delta base
>      t5551: test usage of chunked encoding explicitly
>
>Jordi Mas (2):
>      l10n: Update Catalan translation
>      l10n: Update Catalan translation
>
>Josh Steadmon (1):
>      trace2: correct trace2 field name documentation
>
>Junio C Hamano (21):
>      The first batch after 2.22
>      The second batch
>      The third batch
>      The fourth batch
>      The fifth batch
>      transport-helper: avoid var decl in for () loop control
>      rm: resolving by removal is not a warning-worthy event
>      CodingGuidelines: spell out post-C89 rules
>      The sixth batch
>      The seventh batch
>      Flush fixes up to the third batch post 2.22.0
>      Merge fixes made on the 'master' front
>      Git 2.23-rc0
>      test-dir-iterator: do not assume errno values
>      A few more last-minute fixes
>      log: flip the --mailmap default unconditionally
>      log: really flip the --mailmap default
>      Git 2.23-rc1
>      Git 2.23-rc2
>      Git 2.22.1
>      Git 2.23
>
>Karsten Blees (2):
>      gettext: always use UTF-8 on native Windows
>      mingw: initialize HOME on startup
>
>Marc-André Lureau (1):
>      userdiff: add built-in pattern for rust
>
>Mark Rushakoff (2):
>      doc: typo: s/can not/cannot/ and s/is does/does/
>      doc: fix repeated words
>
>Martin Ågren (3):
>      ref-filter: fix memory leak in `free_array_item()`
>      RelNotes/2.21.1: typofix
>      RelNotes/2.23.0: fix a few typos and other minor issues
>
>Matheus Tavares (8):
>      clone: better handle symlinked files at .git/objects/
>      dir-iterator: use warning_errno when possible
>      dir-iterator: refactor state machine model
>      dir-iterator: add flags parameter to dir_iterator_begin
>      clone: copy hidden paths at local clone
>      clone: extract function from copy_or_link_directory
>      clone: use dir-iterator to avoid explicit dir traversal
>      clone: replace strcmp by fspathcmp
>
>Matthew DeVore (5):
>      list-objects-filter-options: error is localizeable
>      list-objects-filter: correct usage of ALLOC_GROW
>      url: do not read past end of buffer
>      url: do not allow %00 to represent NUL in URLs
>      ref-filter: sort detached HEAD lines firstly
>
>Matthias Rüster (1):
>      l10n: de.po: Update German translation
>
>Mazo, Andrey (8):
>      git-p4: detect/prevent infinite loop in gitCommitByP4Change()
>      git-p4: add failing test for "git-p4: match branches case insensitively if configured"
>      git-p4: match branches case insensitively if configured
>      git-p4: don't groom exclude path list on every commit
>      git-p4: add failing test for "don't exclude other files with same prefix"
>      git-p4: don't exclude other files with same prefix
>      git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
>      git-p4: respect excluded paths when detecting branches
>
>Michael Osipov (1):
>      configure: Detect linking style for HP aCC on HP-UX
>
>Michael Platings (2):
>      blame: add a fingerprint heuristic to match ignored lines
>      t8014: remove unnecessary braces
>
>Miguel Ojeda (1):
>      clang-format: use git grep to generate the ForEachMacros list
>
>Mike Hommey (2):
>      dup() the input fd for fast-import used for remote helpers
>      Use xmmap_gently instead of xmmap in use_pack
>
>Mike Mueller (1):
>      p4 unshelve: fix "Not a valid object name HEAD0" on Windows
>
>Morian Sonnet (1):
>      submodule foreach: fix recursion of options
>
>Nguyễn Thái Ngọc Duy (63):
>      git-checkout.txt: spell out --no-option
>      git-checkout.txt: fix one syntax line
>      doc: document --overwrite-ignore
>      git-checkout.txt: fix monospace typeset
>      t: rename t2014-switch.sh to t2014-checkout-switch.sh
>      checkout: advice how to get out of detached HEAD mode
>      checkout: inform the user when removing branch state
>      checkout: keep most #include sorted
>      checkout: factor out some code in parse_branchname_arg()
>      checkout: make "opts" in cmd_checkout() a pointer
>      checkout: move 'confict_style' and 'dwim_..' to checkout_opts
>      checkout: split options[] array in three pieces
>      checkout: split part of it to new command 'switch'
>      switch: better names for -b and -B
>      switch: add --discard-changes
>      switch: remove -l
>      switch: stop accepting pathspec
>      switch: reject "do nothing" case
>      switch: only allow explicit detached HEAD
>      switch: add short option for --detach
>      switch: implicit dwim, use --no-guess to disable it
>      switch: no worktree status unless real branch switch happens
>      switch: reject if some operation is in progress
>      switch: make --orphan switch to an empty tree
>      t: add tests for switch
>      completion: support switch
>      doc: promote "git switch"
>      checkout: split part of it to new command 'restore'
>      restore: take tree-ish from --source option instead
>      restore: make pathspec mandatory
>      restore: disable overlay mode by default
>      checkout: factor out worktree checkout code
>      restore: add --worktree and --staged
>      restore: reject invalid combinations with --staged
>      restore: default to --source=HEAD when only --staged is specified
>      restore: replace --force with --ignore-unmerged
>      restore: support --patch
>      t: add tests for restore
>      completion: support restore
>      user-manual.txt: prefer 'merge --abort' over 'reset --hard'
>      doc: promote "git restore"
>      help: move git-diff and git-reset to different groups
>      Declare both git-switch and git-restore experimental
>      merge: remove drop_save() in favor of remove_merge_branch_state()
>      init: make --template path relative to $CWD
>      worktree add: sanitize worktree names
>      worktree add: be tolerant of corrupt worktrees
>      merge: add --quit
>      completion: do not cache if --git-completion-helper fails
>      fetch: only run 'gc' once when fetching multiple remotes
>      t2027: use test_must_be_empty
>      switch: allow to switch in the middle of bisect
>      completion: disable dwim on "git switch -d"
>      fetch-pack: move capability names out of i18n strings
>      fetch-pack: print all relevant supported capabilities with -v -v
>      fetch-pack: print server version at the top in -v -v
>      sha1-file.c: remove the_repo from read_object_with_reference()
>      tree-walk.c: remove the_repo from fill_tree_descriptor()
>      tree-walk.c: remove the_repo from get_tree_entry()
>      tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
>      match-trees.c: remove the_repo from shift_tree*()
>      Use the right 'struct repository' instead of the_repository
>      t7814: do not generate same commits in different repos
>
>Nickolai Belakovski (3):
>      ref-filter: add worktreepath atom
>      branch: update output to include worktree info
>      branch: add worktree info on verbose output
>
>Paolo Bonzini (2):
>      request-pull: quote regex metacharacters in local ref
>      request-pull: warn if the remote object is not the same as the local one
>
>Peter Krefting (1):
>      l10n: sv.po: Update Swedish translation (4676t0f0u)
>
>Philip Oakley (16):
>      git.c: show usage for accessing the git(1) help page
>      Doc: git.txt: remove backticks from link and add git-scm.com/docs
>      doc branch: provide examples for listing remote tracking branches
>      msvc: include sigset_t definition
>      msvc: define O_ACCMODE
>      msvc: add pragmas for common warnings
>      Vcproj.pm: list git.exe first to be startup project
>      contrib/buildsystems: ignore invalidcontinue.obj
>      contrib/buildsystems: fix misleading error message
>      contrib/buildsystems: handle quoted spaces in filenames
>      contrib/buildsystems: ignore gettext stuff
>      contrib/buildsystems: redirect errors of the dry run into a log file
>      contrib/buildsystems: optionally capture the dry-run in a file
>      contrib/buildsystems: handle the curl library option
>      .gitignore: touch up the entries regarding Visual Studio
>      .mailmap: update email address of Philip Oakley
>
>Philipp Weißmann (1):
>      l10n: de.po: Fix typo in German translation
>
>Phillip Wood (12):
>      rebase: fix a memory leak
>      rebase: warn if state directory cannot be removed
>      sequencer: return errors from sequencer_remove_state()
>      rebase --abort/--quit: cleanup refs/rewritten
>      rebase -r: always reword merge -c
>      add -p: fix checkout -p with pathological context
>      show --continue/skip etc. consistently in synopsis
>      sequencer: always allow tab after command name
>      sequencer: factor out todo command name parsing
>      status: do not report errors in sequencer/todo
>      git-prompt: improve cherry-pick/revert detection
>      t3420: remove progress lines before comparing output
>
>Quentin Nerden (2):
>      docs: git-clone: refer to long form of options
>      docs: git-clone: list short form of options first
>
>Ramsay Jones (1):
>      env--helper: mark a file-local symbol as static
>
>René Scharfe (10):
>      cleanup: fix possible overflow errors in binary search, part 2
>      coccinelle: use COPY_ARRAY for copying arrays
>      use COPY_ARRAY for copying arrays
>      config: use unsigned_mult_overflows to check for overflows
>      config: don't multiply in parse_unit_factor()
>      config: simplify parsing of unit factors
>      commit-graph: release strbufs after use
>      dir-iterator: release strbuf after use
>      test-dir-iterator: use path argument directly
>      sha1-file: release strbuf after use
>
>Robert Morgan (1):
>      gpg(docs): use correct --verify syntax
>
>Rohit Ashiwal (5):
>      sequencer: add advice for revert
>      sequencer: rename reset_for_rollback to reset_merge
>      sequencer: use argv_array in reset_merge
>      cherry-pick/revert: add --skip option
>      cherry-pick/revert: advise using --skip
>
>SZEDER Gábor (12):
>      t3404: modernize here doc style
>      t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
>      pager: add a helper function to clear the last line in the terminal
>      t5551: use 'test_i18ngrep' to check translated output
>      rebase: fix garbled progress display with '-x'
>      progress: use term_clear_line()
>      Document that 'git -C ""' works and doesn't change directory
>      ci: don't update Homebrew
>      ci: disable Homebrew's auto cleanup
>      ci/lib.sh: update a comment about installed P4 and Git-LFS versions
>      travis-ci: build with GCC 4.8 as well
>      Documentation/git-fsck.txt: include fsck.* config variables
>
>Simon Williams (1):
>      git-p4: allow unshelving of branched files
>
>Stephen Boyd (2):
>      format-patch: inform user that patch-id generation is unstable
>      format-patch: make --base patch-id output stable
>
>Steven Roberts (1):
>      gpg-interface: do not scan past the end of buffer
>
>Taylor Blau (1):
>      ref-filter.c: find disjoint pattern prefixes
>
>Thomas Gummerer (16):
>      stash: fix show referencing stash index
>      apply: replace marc.info link with public-inbox
>      apply: only pass required data to skip_tree_prefix
>      apply: only pass required data to git_header_name
>      apply: only pass required data to check_header_line
>      apply: only pass required data to find_name_*
>      apply: only pass required data to gitdiff_* functions
>      apply: make parse_git_diff_header public
>      range-diff: fix function parameter indentation
>      range-diff: split lines manually
>      range-diff: don't remove funcname from inner diff
>      range-diff: suppress line count in outer diff
>      range-diff: add section header instead of diff header
>      range-diff: add filename to inner diff
>      range-diff: add headers to the outer hunk header
>      stash: fix handling removed files with --keep-index
>
>Tigran Mkrtchyan (1):
>      tag: add tag.gpgSign config option to force all tags be GPG-signed
>
>Trần Ngọc Quân (2):
>      l10n: vi.po (4676t): Updated Vietnamese translation
>      l10n: vi(4674t): Updated translation for Vietnamese
>
>Varun Naik (1):
>      read-cache.c: do not die if mmap fails
>
>Vishal Verma (1):
>      merge: refuse --commit with --squash
>
>William Chargin (1):
>      restore: fix typo in docs
>
>Xin Li (1):
>      clone: respect user supplied origin name when setting up partial clone
>
>brian m. carlson (10):
>      t: add helper to convert object IDs to paths
>      t1410: make hash size independent
>      t1450: make hash size independent
>      t5000: make hash independent
>      t6030: make test work with SHA-256
>      t0027: make hash size independent
>      t0090: make test pass with SHA-256
>      t1007: remove SHA1 prerequisites
>      t1710: make hash independent
>      t2203: avoid hard-coded object ID values
>
>Ævar Arnfjörð Bjarmason (21):
>      send-email: move the read_config() function above getopts
>      send-email: rename the @bcclist variable for consistency
>      send-email: do defaults -> config -> getopt in that order
>      tests: add a special setup where prerequisites fail
>      Makefile: remove the NO_R_TO_GCC_LINKER flag
>      send-email: remove cargo-culted multi-patch pattern in tests
>      send-email: fix broken transferEncoding tests
>      send-email: document --no-[to|cc|bcc]
>      hash-object doc: stop mentioning git-cvsimport
>      send-email: fix regression in sendemail.identity parsing
>      Revert "test-lib: whitelist GIT_TR2_* in the environment"
>      config tests: simplify include cycle test
>      env--helper: new undocumented builtin wrapping git_env_*()
>      config.c: refactor die_bad_number() to not call gettext() early
>      t6040 test: stop using global "script" variable
>      tests: make GIT_TEST_GETTEXT_POISON a boolean
>      tests README: re-flow a previously changed paragraph
>      tests: replace test_tristate with "git env--helper"
>      tests: make GIT_TEST_FAIL_PREREQS a boolean
>      tests: mark two failing tests under FAIL_PREREQS
>      clone: test for our behavior on odd objects/* content
>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[relevance 0%]

* [ANNOUNCE] Git v2.23.0
@ 2019-08-16 21:00  2% Junio C Hamano
  2019-08-16 21:30  0% ` Bhaskar Chowdhury
  0 siblings, 1 reply; 162+ results
From: Junio C Hamano @ 2019-08-16 21:00 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

The latest feature release Git v2.23.0 is now available at the
usual places.  It is comprised of 505 non-merge commits since
v2.22.0, contributed by 77 people, 26 of which are new faces.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.23.0'
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.22.0 are as follows.
Welcome to the Git development community!

  Ariadne Conill, Barret Rhoden, Ben Avison, Carmine Zaccagnino,
  Daniel Ferreira, Doug Ilijev, Dr. Adam Nielsen, Jakub Wilk,
  John Lin, Mark Rushakoff, Matheus Tavares, Mazo, Andrey,
  Michael Osipov, Michael Platings, Miguel Ojeda, Mike Mueller,
  Morian Sonnet, Philipp Weißmann, Quentin Nerden, Robert Morgan,
  Simon Williams, Steven Roberts, Tigran Mkrtchyan, Varun Naik,
  Vishal Verma, and Xin Li.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alessandro Menti, Alexander
  Shopov, Beat Bolli, Boxuan Li, brian m. carlson, Carlo Marcelo
  Arenas Belón, Cesar Eduardo Barros, Chris Mayo, Christian
  Couder, Christopher Díaz Riveros, Denton Liu, Derrick Stolee,
  Dimitriy Ryazantcev, Edmundo Carmona Antoranz, Elijah Newren,
  Emily Shaffer, Eric Wong, Felipe Contreras, Jean-Noël Avila,
  Jeff Hostetler, Jeff King, Jiang Xin, Johannes Schindelin,
  Johannes Sixt, Jonathan Nieder, Jonathan Tan, Jordi Mas, Josh
  Steadmon, Junio C Hamano, Karsten Blees, Marc-André Lureau,
  Martin Ågren, Matthew DeVore, Matthias Rüster, Mike Hommey,
  Nguyễn Thái Ngọc Duy, Nickolai Belakovski, Paolo Bonzini,
  Peter Krefting, Philip Oakley, Phillip Wood, Ramsay Jones, René
  Scharfe, Rohit Ashiwal, Stephen Boyd, SZEDER Gábor, Taylor Blau,
  Thomas Gummerer, Trần Ngọc Quân, and William Chargin.

----------------------------------------------------------------

Git 2.23 Release Notes
======================

Updates since v2.22
-------------------

Backward compatibility note

 * The "--base" option of "format-patch" computed the patch-ids for
   prerequisite patches in an unstable way, which has been updated to
   compute in a way that is compatible with "git patch-id --stable".

 * The "git log" command by default behaves as if the --mailmap option
   was given.


UI, Workflows & Features

 * The "git fast-export/import" pair has been taught to handle commits
   with log messages in encoding other than UTF-8 better.

 * In recent versions of Git, per-worktree refs are exposed in
   refs/worktrees/<wtname>/ hierarchy, which means that worktree names
   must be a valid refname component.  The code now sanitizes the names
   given to worktrees, to make sure these refs are well-formed.

 * "git merge" learned "--quit" option that cleans up the in-progress
   merge while leaving the working tree and the index still in a mess.

 * "git format-patch" learns a configuration to set the default for
   its --notes=<ref> option.

 * The code to show args with potential typo that cannot be
   interpreted as a commit-ish has been improved.

 * "git clone --recurse-submodules" learned to set up the submodules
   to ignore commit object names recorded in the superproject gitlink
   and instead use the commits that happen to be at the tip of the
   remote-tracking branches from the get-go, by passing the new
   "--remote-submodules" option.

 * The pattern "git diff/grep" use to extract funcname and words
   boundary for Matlab has been extend to cover Octave, which is more
   or less equivalent.

 * "git help git" was hard to discover (well, at least for some
   people).

 * The pattern "git diff/grep" use to extract funcname and words
   boundary for Rust has been added.

 * "git status" can be told a non-standard default value for the
   "--[no-]ahead-behind" option with a new configuration variable
   status.aheadBehind.

 * "git fetch" and "git pull" reports when a fetch results in
   non-fast-forward updates to let the user notice unusual situation.
   The commands learned "--no-show-forced-updates" option to disable
   this safety feature.

 * Two new commands "git switch" and "git restore" are introduced to
   split "checking out a branch to work on advancing its history" and
   "checking out paths out of the index and/or a tree-ish to work on
   advancing the current history" out of the single "git checkout"
   command.

 * "git branch --list" learned to always output the detached HEAD as
   the first item (when the HEAD is detached, of course), regardless
   of the locale.

 * The conditional inclusion mechanism learned to base the choice on
   the branch the HEAD currently is on.

 * "git rev-list --objects" learned the "--no-object-names" option to
   squelch the path to the object that is used as a grouping hint for
   pack-objects.

 * A new tag.gpgSign configuration variable turns "git tag -a" into
   "git tag -s".

 * "git multi-pack-index" learned expire and repack subcommands.

 * "git blame" learned to "ignore" commits in the history, whose
   effects (as well as their presence) get ignored.

 * "git cherry-pick/revert" learned a new "--skip" action.

 * The tips of refs from the alternate object store can be used as
   starting point for reachability computation now.

 * Extra blank lines in "git status" output have been reduced.

 * The commits in a repository can be described by multiple
   commit-graph files now, which allows the commit-graph files to be
   updated incrementally.

 * "git range-diff" output has been tweaked for easier identification
   of which part of what file the patch shown is about.


Performance, Internal Implementation, Development Support etc.

 * Update supporting parts of "git rebase" to remove code that should
   no longer be used.

 * Developer support to emulate unsatisfied prerequisites in tests to
   ensure that the remainder of the tests still succeeds when tests
   with prerequisites are skipped.

 * "git update-server-info" learned not to rewrite the file with the
   same contents.

 * The way of specifying the path to find dynamic libraries at runtime
   has been simplified.  The old default to pass -R/path/to/dir has been
   replaced with the new default to pass -Wl,-rpath,/path/to/dir,
   which is the more recent GCC uses.  Those who need to build with an
   old GCC can still use "CC_LD_DYNPATH=-R"

 * Prepare use of reachability index in topological walker that works
   on a range (A..B).

 * A new tutorial targeting specifically aspiring git-core
   developers has been added.

 * Auto-detect how to tell HP-UX aCC where to use dynamically linked
   libraries from at runtime.

 * "git mergetool" and its tests now spawn fewer subprocesses.

 * Dev support update to help tracing out tests.

 * Support to build with MSVC has been updated.

 * "git fetch" that grabs from a group of remotes learned to run the
   auto-gc only once at the very end.

 * A handful of Windows build patches have been upstreamed.

 * The code to read state files used by the sequencer machinery for
   "git status" has been made more robust against a corrupt or stale
   state files.

 * "git for-each-ref" with multiple patterns have been optimized.

 * The tree-walk API learned to pass an in-core repository
   instance throughout more codepaths.

 * When one step in multi step cherry-pick or revert is reset or
   committed, the command line prompt script failed to notice the
   current status, which has been improved.

 * Many GIT_TEST_* environment variables control various aspects of
   how our tests are run, but a few followed "non-empty is true, empty
   or unset is false" while others followed the usual "there are a few
   ways to spell true, like yes, on, etc., and also ways to spell
   false, like no, off, etc." convention.

 * Adjust the dir-iterator API and apply it to the local clone
   optimization codepath.

 * We have been trying out a few language features outside c89; the
   coding guidelines document did not talk about them and instead had
   a blanket ban against them.

 * A test helper has been introduced to optimize preparation of test
   repositories with many simple commits, and a handful of test
   scripts have been updated to use it.


Fixes since v2.22
-----------------

 * A relative pathname given to "git init --template=<path> <repo>"
   ought to be relative to the directory "git init" gets invoked in,
   but it instead was made relative to the repository, which has been
   corrected.

 * "git worktree add" used to fail when another worktree connected to
   the same repository was corrupt, which has been corrected.

 * The ownership rule for the file descriptor to fast-import remote
   backend was mixed up, leading to an unrelated file descriptor getting
   closed, which has been fixed.

 * A "merge -c" instruction during "git rebase --rebase-merges" should
   give the user a chance to edit the log message, even when there is
   otherwise no need to create a new merge and replace the existing
   one (i.e. fast-forward instead), but did not.  Which has been
   corrected.

 * Code cleanup and futureproof.

 * More parameter validation.

 * "git update-server-info" used to leave stale packfiles in its
   output, which has been corrected.

 * The server side support for "git fetch" used to show incorrect
   value for the HEAD symbolic ref when the namespace feature is in
   use, which has been corrected.

 * "git am -i --resolved" segfaulted after trying to see a commit as
   if it were a tree, which has been corrected.

 * "git bundle verify" needs to see if prerequisite objects exist in
   the receiving repository, but the command did not check if we are
   in a repository upfront, which has been corrected.

 * "git merge --squash" is designed to update the working tree and the
   index without creating the commit, and this cannot be countermanded
   by adding the "--commit" option; the command now refuses to work
   when both options are given.

 * The data collected by fsmonitor was not properly written back to
   the on-disk index file, breaking t7519 tests occasionally, which
   has been corrected.

 * Update to Unicode 12.1 width table.

 * The command line to invoke a "git cat-file" command from inside
   "git p4" was not properly quoted to protect a caret and running a
   broken command on Windows, which has been corrected.

 * "git request-pull" learned to warn when the ref we ask them to pull
   from in the local repository and in the published repository are
   different.

 * When creating a partial clone, the object filtering criteria is
   recorded for the origin of the clone, but this incorrectly used a
   hardcoded name "origin" to name that remote; it has been corrected
   to honor the "--origin <name>" option.

 * "git fetch" into a lazy clone forgot to fetch base objects that are
   necessary to complete delta in a thin packfile, which has been
   corrected.

 * The filter_data used in the list-objects-filter (which manages a
   lazily sparse clone repository) did not use the dynamic array API
   correctly---'nr' is supposed to point at one past the last element
   of the array in use.  This has been corrected.

 * The description about slashes in gitignore patterns (used to
   indicate things like "anchored to this level only" and "only
   matches directories") has been revamped.

 * The URL decoding code has been updated to avoid going past the end
   of the string while parsing %-<hex>-<hex> sequence.

 * The list of for-each like macros used by clang-format has been
   updated.

 * "git branch --list" learned to show branches that are checked out
   in other worktrees connected to the same repository prefixed with
   '+', similar to the way the currently checked out branch is shown
   with '*' in front.
   (merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).

 * Code restructuring during 2.20 period broke fetching tags via
   "import" based transports.

 * The commit-graph file is now part of the "files that the runtime
   may keep open file descriptors on, all of which would need to be
   closed when done with the object store", and the file descriptor to
   an existing commit-graph file now is closed before "gc" finalizes a
   new instance to replace it.

 * "git checkout -p" needs to selectively apply a patch in reverse,
   which did not work well.

 * Code clean-up to avoid signed integer wraparounds during binary search.

 * "git interpret-trailers" always treated '#' as the comment
   character, regardless of core.commentChar setting, which has been
   corrected.

 * "git stash show 23" used to work, but no more after getting
   rewritten in C; this regression has been corrected.

 * "git rebase --abort" used to leave refs/rewritten/ when concluding
   "git rebase -r", which has been corrected.

 * An incorrect list of options was cached after command line
   completion failed (e.g. trying to complete a command that requires
   a repository outside one), which has been corrected.

 * The code to parse scaled numbers out of configuration files has
   been made more robust and also easier to follow.

 * The codepath to compute delta islands used to spew progress output
   without giving the callers any way to squelch it, which has been
   fixed.

 * Protocol capabilities that go over wire should never be translated,
   but it was incorrectly marked for translation, which has been
   corrected.  The output of protocol capabilities for debugging has
   been tweaked a bit.

 * Use "Erase in Line" CSI sequence that is already used in the editor
   support to clear cruft in the progress output.

 * "git submodule foreach" did not protect command line options passed
   to the command to be run in each submodule correctly, when the
   "--recursive" option was in use.

 * The configuration variable rebase.rescheduleFailedExec should be
   effective only while running an interactive rebase and should not
   affect anything when running a non-interactive one, which was not
   the case.  This has been corrected.

 * The "git clone" documentation refers to command line options in its
   description in the short form; they have been replaced with long
   forms to make them more recognisable.

 * Generation of pack bitmaps are now disabled when .keep files exist,
   as these are mutually exclusive features.
   (merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).

 * "git rm" to resolve a conflicted path leaked an internal message
   "needs merge" before actually removing the path, which was
   confusing.  This has been corrected.

 * "git stash --keep-index" did not work correctly on paths that have
   been removed, which has been fixed.
   (merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).

 * Window 7 update ;-)

 * A codepath that reads from GPG for signed object verification read
   past the end of allocated buffer, which has been fixed.

 * "git clean" silently skipped a path when it cannot lstat() it; now
   it gives a warning.

 * "git push --atomic" that goes over the transport-helper (namely,
   the smart http transport) failed to prevent refs to be pushed when
   it can locally tell that one of the ref update will fail without
   having to consult the other end, which has been corrected.

 * The internal diff machinery can be made to read out of bounds while
   looking for --function-context line in a corner case, which has been
   corrected.
   (merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge fbec05c210 cc/test-oidmap later to maint).
   (merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint).
   (merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint).
   (merge d61e6ce1dd sg/fsck-config-in-doc later to maint).

----------------------------------------------------------------

Changes since v2.22.0 are as follows:

Alessandro Menti (3):
      l10n: it.po: update the Italian translation
      l10n: it.po: update the Italian translation for v2.23.0
      l10n: it.po: update the Italian localization for v2.23.0 round 2

Alexander Shopov (1):
      l10n: bg.po: Updated Bulgarian translation (4674t)

Ariadne Conill (3):
      log: add warning for unspecified log.mailmap setting
      documentation: mention --no-use-mailmap and log.mailmap false setting
      tests: defang pager tests by explicitly disabling the log.mailmap warning

Barret Rhoden (8):
      fsck: rename and touch up init_skiplist()
      Move oidset_parse_file() to oidset.c
      blame: use a helper function in blame_chunk()
      blame: add the ability to ignore commits and their changes
      blame: add config options for the output of ignored or unblamable lines
      blame: optionally track line fingerprints during fill_blame_origin()
      blame: use the fingerprint heuristic to match ignored lines
      blame: add a test to cover blame_coalesce()

Beat Bolli (2):
      unicode: update the width tables to Unicode 12.1
      grep: print the pcre2_jit_on value

Ben Avison (1):
      clone: add `--remote-submodules` flag

Boxuan Li (2):
      userdiff: add Octave
      userdiff: fix grammar and style issues

Carlo Marcelo Arenas Belón (6):
      fsmonitor: avoid signed integer overflow / infinite loop
      wrapper: avoid undefined behaviour in macOS
      trace2: correct typo in technical documentation
      xdiff: drop system includes in xutils.c
      xdiff: remove duplicate headers from xhistogram.c
      xdiff: remove duplicate headers from xpatience.c

Carmine Zaccagnino (1):
      l10n: it.po: remove an extra space

Cesar Eduardo Barros (1):
      mingw: embed a manifest to trick UAC into Doing The Right Thing

Chris Mayo (1):
      send-email: update documentation of required Perl modules

Christian Couder (7):
      t/helper: add test-oidmap.c
      t: add t0016-oidmap.sh
      oidmap: use sha1hash() instead of static hash() function
      test-hashmap: remove 'hash' command
      doc: improve usage string in MyFirstContribution
      test-oidmap: remove 'add' subcommand
      t0016: add 'remove' subcommand test

Christopher Díaz Riveros (1):
      l10n: es: 2.23.0 round 2

Daniel Ferreira (1):
      dir-iterator: add tests for dir-iterator API

Denton Liu (5):
      git-format-patch.txt: document --no-notes option
      format-patch: teach format.notes config option
      config: learn the "onbranch:" includeIf condition
      config/alias.txt: change " and ' to `
      config/alias.txt: document alias accepting non-command first word

Derrick Stolee (51):
      commit-graph: fix the_repository reference
      revision: use generation for A..B --topo-order queries
      revision: keep topo-walk free of unintersting commits
      sha1-file: split OBJECT_INFO_FOR_PREFETCH
      repack: refactor pack deletion for future use
      Docs: rearrange subcommands for multi-pack-index
      multi-pack-index: prepare for 'expire' subcommand
      midx: simplify computation of pack name lengths
      midx: refactor permutation logic and pack sorting
      multi-pack-index: implement 'expire' subcommand
      multi-pack-index: prepare 'repack' subcommand
      midx: implement midx_repack()
      multi-pack-index: test expire while adding packs
      midx: add test that 'expire' respects .keep files
      t5319-multi-pack-index.sh: test batch size zero
      commit-graph: return with errors during write
      commit-graph: collapse parameters into flags
      commit-graph: remove Future Work section
      commit-graph: create write_commit_graph_context
      commit-graph: extract fill_oids_from_packs()
      commit-graph: extract fill_oids_from_commit_hex()
      commit-graph: extract fill_oids_from_all_packs()
      commit-graph: extract count_distinct_commits()
      commit-graph: extract copy_oids_to_commits()
      commit-graph: extract write_commit_graph_file()
      commit-graph: use raw_object_store when closing
      packfile: close commit-graph in close_all_packs
      packfile: rename close_all_packs to close_object_store
      commit-graph: document commit-graph chains
      commit-graph: prepare for commit-graph chains
      commit-graph: rename commit_compare to oid_compare
      commit-graph: load commit-graph chains
      commit-graph: add base graphs chunk
      commit-graph: rearrange chunk count logic
      commit-graph: write commit-graph chains
      commit-graph: add --split option to builtin
      commit-graph: merge commit-graph chains
      commit-graph: allow cross-alternate chains
      commit-graph: expire commit-graph files
      commit-graph: create options for split files
      commit-graph: verify chains with --shallow mode
      commit-graph: clean up chains after flattened write
      commit-graph: test octopus merges with --split
      commit-graph: test --split across alternate without --split
      commit-graph: normalize commit-graph filenames
      commit-graph: test verify across alternates
      fetch: add --[no-]show-forced-updates argument
      fetch: warn about forced updates in branch listing
      pull: add --[no-]show-forced-updates passthrough
      t5319: use 'test-tool path-utils' instead of 'ls -l'
      commit-graph: fix bug around octopus merges

Dimitriy Ryazantcev (2):
      l10n: ru.po: update Russian translation
      l10n: localizable upload progress messages

Doug Ilijev (1):
      README: fix rendering of text in angle brackets

Dr. Adam Nielsen (1):
      gitignore.txt: make slash-rules more readable

Edmundo Carmona Antoranz (1):
      builtin/merge.c - cleanup of code in for-cycle that tests strategies

Elijah Newren (6):
      t9350: fix encoding test to actually test reencoding
      fast-import: support 'encoding' commit header
      fast-export: avoid stripping encoding header if we cannot reencode
      fast-export: differentiate between explicitly UTF-8 and implicitly UTF-8
      fast-export: do automatic reencoding of commit messages only if requested
      merge-recursive: avoid directory rename detection in recursive case

Emily Shaffer (7):
      documentation: add tutorial for first contribution
      documentation: add anchors to MyFirstContribution
      grep: fail if call could output and name is null
      doc: hint about GIT_DEBUGGER in CodingGuidelines
      doc: add some nit fixes to MyFirstContribution
      rev-list: teach --no-object-names to enable piping
      transport-helper: enforce atomic in push_refs_with_push

Eric Wong (3):
      update-server-info: avoid needless overwrites
      server-info: do not list unlinked packs
      repack: disable bitmaps-by-default if .keep files exist

Felipe Contreras (5):
      t5801 (remote-helpers): cleanup refspec stuff
      t5801 (remote-helpers): add test to fetch tags
      fetch: trivial cleanup
      fetch: make the code more understandable
      fetch: fix regression with transport helpers

Jakub Wilk (1):
      doc: don't use git.kernel.org as example gitweb URL

Jean-Noël Avila (2):
      l10n: reformat some localized strings for v2.23.0
      l10n: fr v2.23.0 round 2

Jeff Hostetler (13):
      cache-tree/blame: avoid reusing the DEBUG constant
      msvc: mark a variable as non-const
      msvc: do not re-declare the timespec struct
      msvc: define ftello()
      msvc: fix detect_msys_tty()
      msvc: update Makefile to allow for spaces in the compiler path
      status: add status.aheadbehind setting
      status: warn when a/b calculation takes too long
      status: ignore status.aheadbehind in porcelain formats
      msvc: support building Git using MS Visual C++
      msvc: add a compile-time flag to allow detailed heap debugging
      msvc: do not pretend to support all signals
      msvc: ignore .dll and incremental compile output

Jeff King (57):
      cmd_{read,write}_tree: rename "unused" variable that is used
      builtin: consistently pass cmd_* prefix to parse_options
      submodule: drop unused prefix parameter from some functions
      clone: drop dest parameter from copy_alternates()
      read-cache: drop unused parameter from threaded load
      wt-status: drop unused status parameter
      mktree: drop unused length parameter
      name-rev: drop unused parameters from is_better_name()
      pack-objects: drop unused rev_info parameters
      receive-pack: drop unused "commands" from prepare_shallow_update()
      remove_all_fetch_refspecs(): drop unused "remote" parameter
      rev-list: drop unused void pointer from finish_commit()
      show-branch: drop unused parameter from show_independent()
      verify-commit: simplify parameters to run_gpg_verify()
      help_unknown_ref(): duplicate collected refnames
      help_unknown_ref(): check for refname ambiguity
      upload-pack: strip namespace from symref data
      am: simplify prompt response handling
      am: read interactive input from stdin
      am: drop tty requirement for --interactive
      am: fix --interactive HEAD tree resolution
      interpret-trailers: load default config
      verify-tag: drop signal.h include
      wt-status.h: drop stdio.h include
      describe: fix accidental oid/hash type-punning
      upload-pack: rename a "sha1" variable to "oid"
      pack-bitmap-write: convert some helpers to use object_id
      pack-objects: convert packlist_find() to use object_id
      pack-objects: convert locate_object_entry_hash() to object_id
      object: convert lookup_unknown_object() to use object_id
      object: convert lookup_object() to use object_id
      object: convert internal hash_obj() to object_id
      object: convert create_object() to use object_id
      khash: drop broken oid_map typedef
      khash: rename kh_oid_t to kh_oid_set
      delta-islands: convert island_marks khash to use oids
      pack-bitmap: convert khash_sha1 maps into kh_oid_map
      khash: drop sha1-specific map types
      khash: rename oid helper functions
      hash.h: move object_id definition from cache.h
      hashmap: convert sha1hash() to oidhash()
      delta-islands: respect progress flag
      blame: drop some unused function parameters
      object-store.h: move for_each_alternate_ref() from transport.h
      check_everything_connected: assume alternate ref tips are valid
      test-lib: introduce test_commit_bulk
      t5310: increase the number of bitmapped commits
      t3311: use test_commit_bulk
      t5702: use test_commit_bulk
      t5703: use test_commit_bulk
      t6200: use test_commit_bulk
      xdiff: clamp function context indices in post-image
      t: sort output of hashmap iteration
      t7700: clean up .keep file in bitmap-writing test
      repack: silence warnings when auto-enabled bitmaps cannot be built
      repack: simplify handling of auto-bitmaps and .keep files
      t0000: reword comments for "local" test

Jiang Xin (3):
      l10n: git.pot: v2.23.0 round 1 (130 new, 35 removed)
      l10n: git.pot: v2.23.0 round 2 (4 new, 6 removed)
      l10n: zh_CN: for git v2.23.0 l10n round 1~2

Johannes Schindelin (47):
      Drop unused git-rebase--am.sh
      t3400: stop referring to the scripted rebase
      .gitignore: there is no longer a built-in `git-rebase--interactive`
      sequencer: the `am` and `rebase--interactive` scripts are gone
      rebase: fold git-rebase--common into the -p backend
      bisect--helper: verify HEAD could be parsed before continuing
      fill_stat_cache_info(): prepare for an fsmonitor fix
      mark_fsmonitor_valid(): mark the index as changed if needed
      bundle verify: error out if called without an object database
      poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
      kwset: allow building with GCC 8
      winansi: simplify loading the GetCurrentConsoleFontEx() function
      config: avoid calling `labs()` on too-large data type
      t3404: fix a typo
      mingw: fix a typo in the msysGit-specific section
      Mark .bat files as requiring CR/LF endings
      t0001 (mingw): do not expect a specific order of stdout/stderr
      obstack: fix compiler warning
      mingw: replace mingw_startup() hack
      msvc: fix dependencies of compat/msvc.c
      t0001: fix on case-insensitive filesystems
      msvc: avoid debug assertion windows in Debug Mode
      mingw: enable stack smashing protector
      mingw: get pw_name in UTF-8 format
      mingw: use Unicode functions explicitly
      rebase --am: ignore rebase.rescheduleFailedExec
      mingw: fix possible buffer overrun when calling `GetUserNameW()`
      diff: munmap() file contents before running external diff
      mingw: support spawning programs containing spaces in their names
      clean: show an error message when the path is too long
      rebase: fix white-space
      git: mark cmd_rebase as requiring a worktree
      Vcproj.pm: auto-generate GUIDs
      Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool
      Vcproj.pm: urlencode '<' and '>' when generating VC projects
      contrib/buildsystems: ignore irrelevant files in Generators/
      contrib/buildsystems: error out on unknown option
      contrib/buildsystems: handle libiconv, too
      contrib/buildsystems: also handle -lexpat
      contrib/buildsystems: handle options starting with a slash
      contrib/buildsystems: add a backend for modern Visual Studio versions
      msvc: add a Makefile target to pre-generate the Visual Studio solution
      vcxproj: also link-or-copy builtins
      .gitignore: ignore Visual Studio's temporary/generated files
      bin-wrappers: append `.exe` to target paths if necessary
      git: avoid calling aliased builtins via their dashed form
      config: work around bug with includeif:onbranch and early config

Johannes Sixt (5):
      userdiff: two simplifications of patterns for rust
      t7610-mergetool: do not place pipelines headed by `yes` in subshells
      t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
      mergetool: dissect strings with shell variable magic instead of `expr`
      mergetool: use shell variable magic instead of `awk`

John Lin (1):
      status: remove the empty line after hints

Jonathan Nieder (1):
      t: decrease nesting in test_oid_to_path

Jonathan Tan (5):
      t5616: refactor packfile replacement
      index-pack: prefetch missing REF_DELTA bases
      t5616: use correct flag to check object is missing
      t5616: cover case of client having delta base
      t5551: test usage of chunked encoding explicitly

Jordi Mas (2):
      l10n: Update Catalan translation
      l10n: Update Catalan translation

Josh Steadmon (1):
      trace2: correct trace2 field name documentation

Junio C Hamano (21):
      The first batch after 2.22
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      transport-helper: avoid var decl in for () loop control
      rm: resolving by removal is not a warning-worthy event
      CodingGuidelines: spell out post-C89 rules
      The sixth batch
      The seventh batch
      Flush fixes up to the third batch post 2.22.0
      Merge fixes made on the 'master' front
      Git 2.23-rc0
      test-dir-iterator: do not assume errno values
      A few more last-minute fixes
      log: flip the --mailmap default unconditionally
      log: really flip the --mailmap default
      Git 2.23-rc1
      Git 2.23-rc2
      Git 2.22.1
      Git 2.23

Karsten Blees (2):
      gettext: always use UTF-8 on native Windows
      mingw: initialize HOME on startup

Marc-André Lureau (1):
      userdiff: add built-in pattern for rust

Mark Rushakoff (2):
      doc: typo: s/can not/cannot/ and s/is does/does/
      doc: fix repeated words

Martin Ågren (3):
      ref-filter: fix memory leak in `free_array_item()`
      RelNotes/2.21.1: typofix
      RelNotes/2.23.0: fix a few typos and other minor issues

Matheus Tavares (8):
      clone: better handle symlinked files at .git/objects/
      dir-iterator: use warning_errno when possible
      dir-iterator: refactor state machine model
      dir-iterator: add flags parameter to dir_iterator_begin
      clone: copy hidden paths at local clone
      clone: extract function from copy_or_link_directory
      clone: use dir-iterator to avoid explicit dir traversal
      clone: replace strcmp by fspathcmp

Matthew DeVore (5):
      list-objects-filter-options: error is localizeable
      list-objects-filter: correct usage of ALLOC_GROW
      url: do not read past end of buffer
      url: do not allow %00 to represent NUL in URLs
      ref-filter: sort detached HEAD lines firstly

Matthias Rüster (1):
      l10n: de.po: Update German translation

Mazo, Andrey (8):
      git-p4: detect/prevent infinite loop in gitCommitByP4Change()
      git-p4: add failing test for "git-p4: match branches case insensitively if configured"
      git-p4: match branches case insensitively if configured
      git-p4: don't groom exclude path list on every commit
      git-p4: add failing test for "don't exclude other files with same prefix"
      git-p4: don't exclude other files with same prefix
      git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
      git-p4: respect excluded paths when detecting branches

Michael Osipov (1):
      configure: Detect linking style for HP aCC on HP-UX

Michael Platings (2):
      blame: add a fingerprint heuristic to match ignored lines
      t8014: remove unnecessary braces

Miguel Ojeda (1):
      clang-format: use git grep to generate the ForEachMacros list

Mike Hommey (2):
      dup() the input fd for fast-import used for remote helpers
      Use xmmap_gently instead of xmmap in use_pack

Mike Mueller (1):
      p4 unshelve: fix "Not a valid object name HEAD0" on Windows

Morian Sonnet (1):
      submodule foreach: fix recursion of options

Nguyễn Thái Ngọc Duy (63):
      git-checkout.txt: spell out --no-option
      git-checkout.txt: fix one syntax line
      doc: document --overwrite-ignore
      git-checkout.txt: fix monospace typeset
      t: rename t2014-switch.sh to t2014-checkout-switch.sh
      checkout: advice how to get out of detached HEAD mode
      checkout: inform the user when removing branch state
      checkout: keep most #include sorted
      checkout: factor out some code in parse_branchname_arg()
      checkout: make "opts" in cmd_checkout() a pointer
      checkout: move 'confict_style' and 'dwim_..' to checkout_opts
      checkout: split options[] array in three pieces
      checkout: split part of it to new command 'switch'
      switch: better names for -b and -B
      switch: add --discard-changes
      switch: remove -l
      switch: stop accepting pathspec
      switch: reject "do nothing" case
      switch: only allow explicit detached HEAD
      switch: add short option for --detach
      switch: implicit dwim, use --no-guess to disable it
      switch: no worktree status unless real branch switch happens
      switch: reject if some operation is in progress
      switch: make --orphan switch to an empty tree
      t: add tests for switch
      completion: support switch
      doc: promote "git switch"
      checkout: split part of it to new command 'restore'
      restore: take tree-ish from --source option instead
      restore: make pathspec mandatory
      restore: disable overlay mode by default
      checkout: factor out worktree checkout code
      restore: add --worktree and --staged
      restore: reject invalid combinations with --staged
      restore: default to --source=HEAD when only --staged is specified
      restore: replace --force with --ignore-unmerged
      restore: support --patch
      t: add tests for restore
      completion: support restore
      user-manual.txt: prefer 'merge --abort' over 'reset --hard'
      doc: promote "git restore"
      help: move git-diff and git-reset to different groups
      Declare both git-switch and git-restore experimental
      merge: remove drop_save() in favor of remove_merge_branch_state()
      init: make --template path relative to $CWD
      worktree add: sanitize worktree names
      worktree add: be tolerant of corrupt worktrees
      merge: add --quit
      completion: do not cache if --git-completion-helper fails
      fetch: only run 'gc' once when fetching multiple remotes
      t2027: use test_must_be_empty
      switch: allow to switch in the middle of bisect
      completion: disable dwim on "git switch -d"
      fetch-pack: move capability names out of i18n strings
      fetch-pack: print all relevant supported capabilities with -v -v
      fetch-pack: print server version at the top in -v -v
      sha1-file.c: remove the_repo from read_object_with_reference()
      tree-walk.c: remove the_repo from fill_tree_descriptor()
      tree-walk.c: remove the_repo from get_tree_entry()
      tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
      match-trees.c: remove the_repo from shift_tree*()
      Use the right 'struct repository' instead of the_repository
      t7814: do not generate same commits in different repos

Nickolai Belakovski (3):
      ref-filter: add worktreepath atom
      branch: update output to include worktree info
      branch: add worktree info on verbose output

Paolo Bonzini (2):
      request-pull: quote regex metacharacters in local ref
      request-pull: warn if the remote object is not the same as the local one

Peter Krefting (1):
      l10n: sv.po: Update Swedish translation (4676t0f0u)

Philip Oakley (16):
      git.c: show usage for accessing the git(1) help page
      Doc: git.txt: remove backticks from link and add git-scm.com/docs
      doc branch: provide examples for listing remote tracking branches
      msvc: include sigset_t definition
      msvc: define O_ACCMODE
      msvc: add pragmas for common warnings
      Vcproj.pm: list git.exe first to be startup project
      contrib/buildsystems: ignore invalidcontinue.obj
      contrib/buildsystems: fix misleading error message
      contrib/buildsystems: handle quoted spaces in filenames
      contrib/buildsystems: ignore gettext stuff
      contrib/buildsystems: redirect errors of the dry run into a log file
      contrib/buildsystems: optionally capture the dry-run in a file
      contrib/buildsystems: handle the curl library option
      .gitignore: touch up the entries regarding Visual Studio
      .mailmap: update email address of Philip Oakley

Philipp Weißmann (1):
      l10n: de.po: Fix typo in German translation

Phillip Wood (12):
      rebase: fix a memory leak
      rebase: warn if state directory cannot be removed
      sequencer: return errors from sequencer_remove_state()
      rebase --abort/--quit: cleanup refs/rewritten
      rebase -r: always reword merge -c
      add -p: fix checkout -p with pathological context
      show --continue/skip etc. consistently in synopsis
      sequencer: always allow tab after command name
      sequencer: factor out todo command name parsing
      status: do not report errors in sequencer/todo
      git-prompt: improve cherry-pick/revert detection
      t3420: remove progress lines before comparing output

Quentin Nerden (2):
      docs: git-clone: refer to long form of options
      docs: git-clone: list short form of options first

Ramsay Jones (1):
      env--helper: mark a file-local symbol as static

René Scharfe (10):
      cleanup: fix possible overflow errors in binary search, part 2
      coccinelle: use COPY_ARRAY for copying arrays
      use COPY_ARRAY for copying arrays
      config: use unsigned_mult_overflows to check for overflows
      config: don't multiply in parse_unit_factor()
      config: simplify parsing of unit factors
      commit-graph: release strbufs after use
      dir-iterator: release strbuf after use
      test-dir-iterator: use path argument directly
      sha1-file: release strbuf after use

Robert Morgan (1):
      gpg(docs): use correct --verify syntax

Rohit Ashiwal (5):
      sequencer: add advice for revert
      sequencer: rename reset_for_rollback to reset_merge
      sequencer: use argv_array in reset_merge
      cherry-pick/revert: add --skip option
      cherry-pick/revert: advise using --skip

SZEDER Gábor (12):
      t3404: modernize here doc style
      t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
      pager: add a helper function to clear the last line in the terminal
      t5551: use 'test_i18ngrep' to check translated output
      rebase: fix garbled progress display with '-x'
      progress: use term_clear_line()
      Document that 'git -C ""' works and doesn't change directory
      ci: don't update Homebrew
      ci: disable Homebrew's auto cleanup
      ci/lib.sh: update a comment about installed P4 and Git-LFS versions
      travis-ci: build with GCC 4.8 as well
      Documentation/git-fsck.txt: include fsck.* config variables

Simon Williams (1):
      git-p4: allow unshelving of branched files

Stephen Boyd (2):
      format-patch: inform user that patch-id generation is unstable
      format-patch: make --base patch-id output stable

Steven Roberts (1):
      gpg-interface: do not scan past the end of buffer

Taylor Blau (1):
      ref-filter.c: find disjoint pattern prefixes

Thomas Gummerer (16):
      stash: fix show referencing stash index
      apply: replace marc.info link with public-inbox
      apply: only pass required data to skip_tree_prefix
      apply: only pass required data to git_header_name
      apply: only pass required data to check_header_line
      apply: only pass required data to find_name_*
      apply: only pass required data to gitdiff_* functions
      apply: make parse_git_diff_header public
      range-diff: fix function parameter indentation
      range-diff: split lines manually
      range-diff: don't remove funcname from inner diff
      range-diff: suppress line count in outer diff
      range-diff: add section header instead of diff header
      range-diff: add filename to inner diff
      range-diff: add headers to the outer hunk header
      stash: fix handling removed files with --keep-index

Tigran Mkrtchyan (1):
      tag: add tag.gpgSign config option to force all tags be GPG-signed

Trần Ngọc Quân (2):
      l10n: vi.po (4676t): Updated Vietnamese translation
      l10n: vi(4674t): Updated translation for Vietnamese

Varun Naik (1):
      read-cache.c: do not die if mmap fails

Vishal Verma (1):
      merge: refuse --commit with --squash

William Chargin (1):
      restore: fix typo in docs

Xin Li (1):
      clone: respect user supplied origin name when setting up partial clone

brian m. carlson (10):
      t: add helper to convert object IDs to paths
      t1410: make hash size independent
      t1450: make hash size independent
      t5000: make hash independent
      t6030: make test work with SHA-256
      t0027: make hash size independent
      t0090: make test pass with SHA-256
      t1007: remove SHA1 prerequisites
      t1710: make hash independent
      t2203: avoid hard-coded object ID values

Ævar Arnfjörð Bjarmason (21):
      send-email: move the read_config() function above getopts
      send-email: rename the @bcclist variable for consistency
      send-email: do defaults -> config -> getopt in that order
      tests: add a special setup where prerequisites fail
      Makefile: remove the NO_R_TO_GCC_LINKER flag
      send-email: remove cargo-culted multi-patch pattern in tests
      send-email: fix broken transferEncoding tests
      send-email: document --no-[to|cc|bcc]
      hash-object doc: stop mentioning git-cvsimport
      send-email: fix regression in sendemail.identity parsing
      Revert "test-lib: whitelist GIT_TR2_* in the environment"
      config tests: simplify include cycle test
      env--helper: new undocumented builtin wrapping git_env_*()
      config.c: refactor die_bad_number() to not call gettext() early
      t6040 test: stop using global "script" variable
      tests: make GIT_TEST_GETTEXT_POISON a boolean
      tests README: re-flow a previously changed paragraph
      tests: replace test_tristate with "git env--helper"
      tests: make GIT_TEST_FAIL_PREREQS a boolean
      tests: mark two failing tests under FAIL_PREREQS
      clone: test for our behavior on odd objects/* content


^ permalink raw reply	[relevance 2%]

* Re: [ANNOUNCE] Git v2.22.1
  2019-08-12 19:40  1% [ANNOUNCE] Git v2.22.1 Junio C Hamano
@ 2019-08-12 22:49  0% ` Bhaskar Chowdhury
  0 siblings, 0 replies; 162+ results
From: Bhaskar Chowdhury @ 2019-08-12 22:49 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Linux Kernel, git-packagers

[-- Attachment #1: Type: text/plain, Size: 14946 bytes --]


Thanks, a bunch Junio :)

On 12:40 Mon 12 Aug 2019, Junio C Hamano wrote:
>A maintenance release Git v2.22.1 is now available at the usual
>places.  This backports many of the fixes that appeared already
>on the 'master' front in preparation for the upcoming v2.23 release
>of Git.
>
>The tarballs are found at:
>
>    https://www.kernel.org/pub/software/scm/git/
>
>The following public repositories all have a copy of the 'v2.22.1'
>tag and the 'maint' 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
>
>----------------------------------------------------------------
>
>Git 2.22.1 Release Notes
>========================
>
>Fixes since v2.22
>-----------------
>
> * A relative pathname given to "git init --template=<path> <repo>"
>   ought to be relative to the directory "git init" gets invoked in,
>   but it instead was made relative to the repository, which has been
>   corrected.
>
> * "git worktree add" used to fail when another worktree connected to
>   the same repository was corrupt, which has been corrected.
>
> * The ownership rule for the file descriptor to fast-import remote
>   backend was mixed up, leading to unrelated file descriptor getting
>   closed, which has been fixed.
>
> * "git update-server-info" used to leave stale packfiles in its
>   output, which has been corrected.
>
> * The server side support for "git fetch" used to show incorrect
>   value for the HEAD symbolic ref when the namespace feature is in
>   use, which has been corrected.
>
> * "git am -i --resolved" segfaulted after trying to see a commit as
>   if it were a tree, which has been corrected.
>
> * "git bundle verify" needs to see if prerequisite objects exist in
>   the receiving repository, but the command did not check if we are
>   in a repository upfront, which has been corrected.
>
> * "git merge --squash" is designed to update the working tree and the
>   index without creating the commit, and this cannot be countermanded
>   by adding the "--commit" option; the command now refuses to work
>   when both options are given.
>
> * The data collected by fsmonitor was not properly written back to
>   the on-disk index file, breaking t7519 tests occasionally, which
>   has been corrected.
>
> * Update to Unicode 12.1 width table.
>
> * The command line to invoke a "git cat-file" command from inside
>   "git p4" was not properly quoted to protect a caret and running a
>   broken command on Windows, which has been corrected.
>
> * "git request-pull" learned to warn when the ref we ask them to pull
>   from in the local repository and in the published repository are
>   different.
>
> * When creating a partial clone, the object filtering criteria is
>   recorded for the origin of the clone, but this incorrectly used a
>   hardcoded name "origin" to name that remote; it has been corrected
>   to honor the "--origin <name>" option.
>
> * "git fetch" into a lazy clone forgot to fetch base objects that are
>   necessary to complete delta in a thin packfile, which has been
>   corrected.
>
> * The filter_data used in the list-objects-filter (which manages a
>   lazily sparse clone repository) did not use the dynamic array API
>   correctly---'nr' is supposed to point at one past the last element
>   of the array in use.  This has been corrected.
>
> * The description about slashes in gitignore patterns (used to
>   indicate things like "anchored to this level only" and "only
>   matches directories") has been revamped.
>
> * The URL decoding code has been updated to avoid going past the end
>   of the string while parsing %-<hex>-<hex> sequence.
>
> * The list of for-each like macros used by clang-format has been
>   updated.
>
> * "git push --atomic" that goes over the transport-helper (namely,
>   the smart http transport) failed to prevent refs to be pushed when
>   it can locally tell that one of the ref update will fail without
>   having to consult the other end, which has been corrected.
>
> * "git clean" silently skipped a path when it cannot lstat() it; now
>   it gives a warning.
>
> * A codepath that reads from GPG for signed object verification read
>   past the end of allocated buffer, which has been fixed.
>
> * "git rm" to resolve a conflicted path leaked an internal message
>   "needs merge" before actually removing the path, which was
>   confusing.  This has been corrected.
>
> * The "git clone" documentation refers to command line options in its
>   description in the short form; they have been replaced with long
>   forms to make them more recognisable.
>
> * The configuration variable rebase.rescheduleFailedExec should be
>   effective only while running an interactive rebase and should not
>   affect anything when running a non-interactive one, which was not
>   the case.  This has been corrected.
>
> * "git submodule foreach" did not protect command line options passed
>   to the command to be run in each submodule correctly, when the
>   "--recursive" option was in use.
>
> * Use "Erase in Line" CSI sequence that is already used in the editor
>   support to clear cruft in the progress output.
>
> * The codepath to compute delta islands used to spew progress output
>   without giving the callers any way to squelch it, which has been
>   fixed.
>
> * The code to parse scaled numbers out of configuration files has
>   been made more robust and also easier to follow.
>
> * An incorrect list of options was cached after command line
>   completion failed (e.g. trying to complete a command that requires
>   a repository outside one), which has been corrected.
>
> * "git rebase --abort" used to leave refs/rewritten/ when concluding
>   "git rebase -r", which has been corrected.
>
> * "git stash show 23" used to work, but no more after getting
>   rewritten in C; this regression has been corrected.
>
> * "git interpret-trailers" always treated '#' as the comment
>   character, regardless of core.commentChar setting, which has been
>   corrected.
>
> * Code clean-up to avoid signed integer overlaps during binary search.
>
> * "git checkout -p" needs to selectively apply a patch in reverse,
>   which did not work well.
>
> * The commit-graph file is now part of the "files that the runtime
>   may keep open file descriptors on, all of which would need to be
>   closed when done with the object store", and the file descriptor to
>   an existing commit-graph file now is closed before "gc" finalizes a
>   new instance to replace it.
>
> * Code restructuring during 2.20 period broke fetching tags via
>   "import" based transports.
>
> * We have been trying out a few language features outside c89; the
>   coding guidelines document did not talk about them and instead had
>   a blanket ban against them.
>
> * The internal diff machinery can be made to read out of bounds while
>   looking for --funcion-context line in a corner case, which has been
>   corrected.
>
>Also contains various documentation updates, code clean-ups and minor fixups.
>
>----------------------------------------------------------------
>
>Changes since v2.22.0 are as follows:
>
>Beat Bolli (1):
>      unicode: update the width tables to Unicode 12.1
>
>Carlo Marcelo Arenas Belón (5):
>      fsmonitor: avoid signed integer overflow / infinite loop
>      wrapper: avoid undefined behaviour in macOS
>      xdiff: drop system includes in xutils.c
>      xdiff: remove duplicate headers from xhistogram.c
>      xdiff: remove duplicate headers from xpatience.c
>
>Chris Mayo (1):
>      send-email: update documentation of required Perl modules
>
>Denton Liu (2):
>      config/alias.txt: change " and ' to `
>      config/alias.txt: document alias accepting non-command first word
>
>Derrick Stolee (15):
>      commit-graph: fix the_repository reference
>      sha1-file: split OBJECT_INFO_FOR_PREFETCH
>      commit-graph: return with errors during write
>      commit-graph: collapse parameters into flags
>      commit-graph: remove Future Work section
>      commit-graph: create write_commit_graph_context
>      commit-graph: extract fill_oids_from_packs()
>      commit-graph: extract fill_oids_from_commit_hex()
>      commit-graph: extract fill_oids_from_all_packs()
>      commit-graph: extract count_distinct_commits()
>      commit-graph: extract copy_oids_to_commits()
>      commit-graph: extract write_commit_graph_file()
>      commit-graph: use raw_object_store when closing
>      packfile: close commit-graph in close_all_packs
>      packfile: rename close_all_packs to close_object_store
>
>Doug Ilijev (1):
>      README: fix rendering of text in angle brackets
>
>Dr. Adam Nielsen (1):
>      gitignore.txt: make slash-rules more readable
>
>Emily Shaffer (3):
>      grep: fail if call could output and name is null
>      doc: hint about GIT_DEBUGGER in CodingGuidelines
>      transport-helper: enforce atomic in push_refs_with_push
>
>Eric Wong (1):
>      server-info: do not list unlinked packs
>
>Felipe Contreras (5):
>      t5801 (remote-helpers): cleanup refspec stuff
>      t5801 (remote-helpers): add test to fetch tags
>      fetch: trivial cleanup
>      fetch: make the code more understandable
>      fetch: fix regression with transport helpers
>
>Jakub Wilk (1):
>      doc: don't use git.kernel.org as example gitweb URL
>
>Jeff King (10):
>      upload-pack: strip namespace from symref data
>      am: simplify prompt response handling
>      am: read interactive input from stdin
>      am: drop tty requirement for --interactive
>      am: fix --interactive HEAD tree resolution
>      interpret-trailers: load default config
>      verify-tag: drop signal.h include
>      wt-status.h: drop stdio.h include
>      delta-islands: respect progress flag
>      xdiff: clamp function context indices in post-image
>
>Johannes Schindelin (14):
>      bisect--helper: verify HEAD could be parsed before continuing
>      fill_stat_cache_info(): prepare for an fsmonitor fix
>      mark_fsmonitor_valid(): mark the index as changed if needed
>      bundle verify: error out if called without an object database
>      poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
>      kwset: allow building with GCC 8
>      winansi: simplify loading the GetCurrentConsoleFontEx() function
>      config: avoid calling `labs()` on too-large data type
>      t3404: fix a typo
>      t0001: fix on case-insensitive filesystems
>      rebase --am: ignore rebase.rescheduleFailedExec
>      diff: munmap() file contents before running external diff
>      mingw: support spawning programs containing spaces in their names
>      clean: show an error message when the path is too long
>
>Jonathan Tan (5):
>      t5616: refactor packfile replacement
>      index-pack: prefetch missing REF_DELTA bases
>      t5616: use correct flag to check object is missing
>      t5616: cover case of client having delta base
>      t5551: test usage of chunked encoding explicitly
>
>Josh Steadmon (1):
>      trace2: correct trace2 field name documentation
>
>Junio C Hamano (6):
>      transport-helper: avoid var decl in for () loop control
>      rm: resolving by removal is not a warning-worthy event
>      CodingGuidelines: spell out post-C89 rules
>      Flush fixes up to the third batch post 2.22.0
>      Merge fixes made on the 'master' front
>      Git 2.22.1
>
>Martin Ågren (1):
>      RelNotes/2.21.1: typofix
>
>Matthew DeVore (3):
>      list-objects-filter: correct usage of ALLOC_GROW
>      url: do not read past end of buffer
>      url: do not allow %00 to represent NUL in URLs
>
>Miguel Ojeda (1):
>      clang-format: use git grep to generate the ForEachMacros list
>
>Mike Hommey (2):
>      dup() the input fd for fast-import used for remote helpers
>      Use xmmap_gently instead of xmmap in use_pack
>
>Mike Mueller (1):
>      p4 unshelve: fix "Not a valid object name HEAD0" on Windows
>
>Morian Sonnet (1):
>      submodule foreach: fix recursion of options
>
>Nguyễn Thái Ngọc Duy (3):
>      init: make --template path relative to $CWD
>      worktree add: be tolerant of corrupt worktrees
>      completion: do not cache if --git-completion-helper fails
>
>Paolo Bonzini (2):
>      request-pull: quote regex metacharacters in local ref
>      request-pull: warn if the remote object is not the same as the local one
>
>Philip Oakley (2):
>      doc branch: provide examples for listing remote tracking branches
>      .mailmap: update email address of Philip Oakley
>
>Phillip Wood (5):
>      rebase: fix a memory leak
>      rebase: warn if state directory cannot be removed
>      sequencer: return errors from sequencer_remove_state()
>      rebase --abort/--quit: cleanup refs/rewritten
>      add -p: fix checkout -p with pathological context
>
>Quentin Nerden (2):
>      docs: git-clone: refer to long form of options
>      docs: git-clone: list short form of options first
>
>René Scharfe (6):
>      cleanup: fix possible overflow errors in binary search, part 2
>      coccinelle: use COPY_ARRAY for copying arrays
>      use COPY_ARRAY for copying arrays
>      config: use unsigned_mult_overflows to check for overflows
>      config: don't multiply in parse_unit_factor()
>      config: simplify parsing of unit factors
>
>Robert Morgan (1):
>      gpg(docs): use correct --verify syntax
>
>SZEDER Gábor (11):
>      t3404: modernize here doc style
>      t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
>      pager: add a helper function to clear the last line in the terminal
>      t5551: use 'test_i18ngrep' to check translated output
>      rebase: fix garbled progress display with '-x'
>      progress: use term_clear_line()
>      Document that 'git -C ""' works and doesn't change directory
>      ci: don't update Homebrew
>      ci: disable Homebrew's auto cleanup
>      ci/lib.sh: update a comment about installed P4 and Git-LFS versions
>      Documentation/git-fsck.txt: include fsck.* config variables
>
>Simon Williams (1):
>      git-p4: allow unshelving of branched files
>
>Steven Roberts (1):
>      gpg-interface: do not scan past the end of buffer
>
>Thomas Gummerer (1):
>      stash: fix show referencing stash index
>
>Varun Naik (1):
>      read-cache.c: do not die if mmap fails
>
>Vishal Verma (1):
>      merge: refuse --commit with --squash
>
>Xin Li (1):
>      clone: respect user supplied origin name when setting up partial clone
>
>Ævar Arnfjörð Bjarmason (1):
>      hash-object doc: stop mentioning git-cvsimport
>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[relevance 0%]

* [ANNOUNCE] Git v2.22.1
@ 2019-08-12 19:40  1% Junio C Hamano
  2019-08-12 22:49  0% ` Bhaskar Chowdhury
  0 siblings, 1 reply; 162+ results
From: Junio C Hamano @ 2019-08-12 19:40 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A maintenance release Git v2.22.1 is now available at the usual
places.  This backports many of the fixes that appeared already
on the 'master' front in preparation for the upcoming v2.23 release
of Git.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.22.1'
tag and the 'maint' 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

----------------------------------------------------------------

Git 2.22.1 Release Notes
========================

Fixes since v2.22
-----------------

 * A relative pathname given to "git init --template=<path> <repo>"
   ought to be relative to the directory "git init" gets invoked in,
   but it instead was made relative to the repository, which has been
   corrected.

 * "git worktree add" used to fail when another worktree connected to
   the same repository was corrupt, which has been corrected.

 * The ownership rule for the file descriptor to fast-import remote
   backend was mixed up, leading to unrelated file descriptor getting
   closed, which has been fixed.

 * "git update-server-info" used to leave stale packfiles in its
   output, which has been corrected.

 * The server side support for "git fetch" used to show incorrect
   value for the HEAD symbolic ref when the namespace feature is in
   use, which has been corrected.

 * "git am -i --resolved" segfaulted after trying to see a commit as
   if it were a tree, which has been corrected.

 * "git bundle verify" needs to see if prerequisite objects exist in
   the receiving repository, but the command did not check if we are
   in a repository upfront, which has been corrected.

 * "git merge --squash" is designed to update the working tree and the
   index without creating the commit, and this cannot be countermanded
   by adding the "--commit" option; the command now refuses to work
   when both options are given.

 * The data collected by fsmonitor was not properly written back to
   the on-disk index file, breaking t7519 tests occasionally, which
   has been corrected.

 * Update to Unicode 12.1 width table.

 * The command line to invoke a "git cat-file" command from inside
   "git p4" was not properly quoted to protect a caret and running a
   broken command on Windows, which has been corrected.

 * "git request-pull" learned to warn when the ref we ask them to pull
   from in the local repository and in the published repository are
   different.

 * When creating a partial clone, the object filtering criteria is
   recorded for the origin of the clone, but this incorrectly used a
   hardcoded name "origin" to name that remote; it has been corrected
   to honor the "--origin <name>" option.

 * "git fetch" into a lazy clone forgot to fetch base objects that are
   necessary to complete delta in a thin packfile, which has been
   corrected.

 * The filter_data used in the list-objects-filter (which manages a
   lazily sparse clone repository) did not use the dynamic array API
   correctly---'nr' is supposed to point at one past the last element
   of the array in use.  This has been corrected.

 * The description about slashes in gitignore patterns (used to
   indicate things like "anchored to this level only" and "only
   matches directories") has been revamped.

 * The URL decoding code has been updated to avoid going past the end
   of the string while parsing %-<hex>-<hex> sequence.

 * The list of for-each like macros used by clang-format has been
   updated.

 * "git push --atomic" that goes over the transport-helper (namely,
   the smart http transport) failed to prevent refs to be pushed when
   it can locally tell that one of the ref update will fail without
   having to consult the other end, which has been corrected.

 * "git clean" silently skipped a path when it cannot lstat() it; now
   it gives a warning.

 * A codepath that reads from GPG for signed object verification read
   past the end of allocated buffer, which has been fixed.

 * "git rm" to resolve a conflicted path leaked an internal message
   "needs merge" before actually removing the path, which was
   confusing.  This has been corrected.

 * The "git clone" documentation refers to command line options in its
   description in the short form; they have been replaced with long
   forms to make them more recognisable.

 * The configuration variable rebase.rescheduleFailedExec should be
   effective only while running an interactive rebase and should not
   affect anything when running a non-interactive one, which was not
   the case.  This has been corrected.

 * "git submodule foreach" did not protect command line options passed
   to the command to be run in each submodule correctly, when the
   "--recursive" option was in use.

 * Use "Erase in Line" CSI sequence that is already used in the editor
   support to clear cruft in the progress output.

 * The codepath to compute delta islands used to spew progress output
   without giving the callers any way to squelch it, which has been
   fixed.

 * The code to parse scaled numbers out of configuration files has
   been made more robust and also easier to follow.

 * An incorrect list of options was cached after command line
   completion failed (e.g. trying to complete a command that requires
   a repository outside one), which has been corrected.

 * "git rebase --abort" used to leave refs/rewritten/ when concluding
   "git rebase -r", which has been corrected.

 * "git stash show 23" used to work, but no more after getting
   rewritten in C; this regression has been corrected.

 * "git interpret-trailers" always treated '#' as the comment
   character, regardless of core.commentChar setting, which has been
   corrected.

 * Code clean-up to avoid signed integer overlaps during binary search.

 * "git checkout -p" needs to selectively apply a patch in reverse,
   which did not work well.

 * The commit-graph file is now part of the "files that the runtime
   may keep open file descriptors on, all of which would need to be
   closed when done with the object store", and the file descriptor to
   an existing commit-graph file now is closed before "gc" finalizes a
   new instance to replace it.

 * Code restructuring during 2.20 period broke fetching tags via
   "import" based transports.

 * We have been trying out a few language features outside c89; the
   coding guidelines document did not talk about them and instead had
   a blanket ban against them.

 * The internal diff machinery can be made to read out of bounds while
   looking for --funcion-context line in a corner case, which has been
   corrected.

Also contains various documentation updates, code clean-ups and minor fixups.

----------------------------------------------------------------

Changes since v2.22.0 are as follows:

Beat Bolli (1):
      unicode: update the width tables to Unicode 12.1

Carlo Marcelo Arenas Belón (5):
      fsmonitor: avoid signed integer overflow / infinite loop
      wrapper: avoid undefined behaviour in macOS
      xdiff: drop system includes in xutils.c
      xdiff: remove duplicate headers from xhistogram.c
      xdiff: remove duplicate headers from xpatience.c

Chris Mayo (1):
      send-email: update documentation of required Perl modules

Denton Liu (2):
      config/alias.txt: change " and ' to `
      config/alias.txt: document alias accepting non-command first word

Derrick Stolee (15):
      commit-graph: fix the_repository reference
      sha1-file: split OBJECT_INFO_FOR_PREFETCH
      commit-graph: return with errors during write
      commit-graph: collapse parameters into flags
      commit-graph: remove Future Work section
      commit-graph: create write_commit_graph_context
      commit-graph: extract fill_oids_from_packs()
      commit-graph: extract fill_oids_from_commit_hex()
      commit-graph: extract fill_oids_from_all_packs()
      commit-graph: extract count_distinct_commits()
      commit-graph: extract copy_oids_to_commits()
      commit-graph: extract write_commit_graph_file()
      commit-graph: use raw_object_store when closing
      packfile: close commit-graph in close_all_packs
      packfile: rename close_all_packs to close_object_store

Doug Ilijev (1):
      README: fix rendering of text in angle brackets

Dr. Adam Nielsen (1):
      gitignore.txt: make slash-rules more readable

Emily Shaffer (3):
      grep: fail if call could output and name is null
      doc: hint about GIT_DEBUGGER in CodingGuidelines
      transport-helper: enforce atomic in push_refs_with_push

Eric Wong (1):
      server-info: do not list unlinked packs

Felipe Contreras (5):
      t5801 (remote-helpers): cleanup refspec stuff
      t5801 (remote-helpers): add test to fetch tags
      fetch: trivial cleanup
      fetch: make the code more understandable
      fetch: fix regression with transport helpers

Jakub Wilk (1):
      doc: don't use git.kernel.org as example gitweb URL

Jeff King (10):
      upload-pack: strip namespace from symref data
      am: simplify prompt response handling
      am: read interactive input from stdin
      am: drop tty requirement for --interactive
      am: fix --interactive HEAD tree resolution
      interpret-trailers: load default config
      verify-tag: drop signal.h include
      wt-status.h: drop stdio.h include
      delta-islands: respect progress flag
      xdiff: clamp function context indices in post-image

Johannes Schindelin (14):
      bisect--helper: verify HEAD could be parsed before continuing
      fill_stat_cache_info(): prepare for an fsmonitor fix
      mark_fsmonitor_valid(): mark the index as changed if needed
      bundle verify: error out if called without an object database
      poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
      kwset: allow building with GCC 8
      winansi: simplify loading the GetCurrentConsoleFontEx() function
      config: avoid calling `labs()` on too-large data type
      t3404: fix a typo
      t0001: fix on case-insensitive filesystems
      rebase --am: ignore rebase.rescheduleFailedExec
      diff: munmap() file contents before running external diff
      mingw: support spawning programs containing spaces in their names
      clean: show an error message when the path is too long

Jonathan Tan (5):
      t5616: refactor packfile replacement
      index-pack: prefetch missing REF_DELTA bases
      t5616: use correct flag to check object is missing
      t5616: cover case of client having delta base
      t5551: test usage of chunked encoding explicitly

Josh Steadmon (1):
      trace2: correct trace2 field name documentation

Junio C Hamano (6):
      transport-helper: avoid var decl in for () loop control
      rm: resolving by removal is not a warning-worthy event
      CodingGuidelines: spell out post-C89 rules
      Flush fixes up to the third batch post 2.22.0
      Merge fixes made on the 'master' front
      Git 2.22.1

Martin Ågren (1):
      RelNotes/2.21.1: typofix

Matthew DeVore (3):
      list-objects-filter: correct usage of ALLOC_GROW
      url: do not read past end of buffer
      url: do not allow %00 to represent NUL in URLs

Miguel Ojeda (1):
      clang-format: use git grep to generate the ForEachMacros list

Mike Hommey (2):
      dup() the input fd for fast-import used for remote helpers
      Use xmmap_gently instead of xmmap in use_pack

Mike Mueller (1):
      p4 unshelve: fix "Not a valid object name HEAD0" on Windows

Morian Sonnet (1):
      submodule foreach: fix recursion of options

Nguyễn Thái Ngọc Duy (3):
      init: make --template path relative to $CWD
      worktree add: be tolerant of corrupt worktrees
      completion: do not cache if --git-completion-helper fails

Paolo Bonzini (2):
      request-pull: quote regex metacharacters in local ref
      request-pull: warn if the remote object is not the same as the local one

Philip Oakley (2):
      doc branch: provide examples for listing remote tracking branches
      .mailmap: update email address of Philip Oakley

Phillip Wood (5):
      rebase: fix a memory leak
      rebase: warn if state directory cannot be removed
      sequencer: return errors from sequencer_remove_state()
      rebase --abort/--quit: cleanup refs/rewritten
      add -p: fix checkout -p with pathological context

Quentin Nerden (2):
      docs: git-clone: refer to long form of options
      docs: git-clone: list short form of options first

René Scharfe (6):
      cleanup: fix possible overflow errors in binary search, part 2
      coccinelle: use COPY_ARRAY for copying arrays
      use COPY_ARRAY for copying arrays
      config: use unsigned_mult_overflows to check for overflows
      config: don't multiply in parse_unit_factor()
      config: simplify parsing of unit factors

Robert Morgan (1):
      gpg(docs): use correct --verify syntax

SZEDER Gábor (11):
      t3404: modernize here doc style
      t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
      pager: add a helper function to clear the last line in the terminal
      t5551: use 'test_i18ngrep' to check translated output
      rebase: fix garbled progress display with '-x'
      progress: use term_clear_line()
      Document that 'git -C ""' works and doesn't change directory
      ci: don't update Homebrew
      ci: disable Homebrew's auto cleanup
      ci/lib.sh: update a comment about installed P4 and Git-LFS versions
      Documentation/git-fsck.txt: include fsck.* config variables

Simon Williams (1):
      git-p4: allow unshelving of branched files

Steven Roberts (1):
      gpg-interface: do not scan past the end of buffer

Thomas Gummerer (1):
      stash: fix show referencing stash index

Varun Naik (1):
      read-cache.c: do not die if mmap fails

Vishal Verma (1):
      merge: refuse --commit with --squash

Xin Li (1):
      clone: respect user supplied origin name when setting up partial clone

Ævar Arnfjörð Bjarmason (1):
      hash-object doc: stop mentioning git-cvsimport


^ permalink raw reply	[relevance 1%]

* Git for Windows v2.23.0-rc2, was Re: [ANNOUNCE] Git v2.23.0-rc2
  2019-08-09 19:29  2% [ANNOUNCE] Git v2.23.0-rc2 Junio C Hamano
  2019-08-09 21:20  0% ` Bhaskar Chowdhury
@ 2019-08-09 21:31  0% ` Johannes Schindelin
  1 sibling, 0 replies; 162+ results
From: Johannes Schindelin @ 2019-08-09 21:31 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git-for-windows, git, git-packagers

[-- Attachment #1: Type: text/plain, Size: 46623 bytes --]

Team,

On Fri, 9 Aug 2019, Junio C Hamano wrote:

> A release candidate Git v2.23.0-rc2 is now available for testing
> at the usual places.  It is comprised of 483 non-merge commits
> since v2.22.0, contributed by 67 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.23.0-rc2' 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

The corresponding Git for Windows v2.23.0-rc2 can be found here:

https://github.com/git-for-windows/git/releases/tag/v2.23.0-rc2.windows.1

Please test as much as you can.

Thanks!
Johannes

>
> New contributors whose contributions weren't in v2.22.0 are as follows.
> Welcome to the Git development community!
>
>   Ariadne Conill, Barret Rhoden, Ben Avison, Daniel Ferreira,
>   Doug Ilijev, Dr. Adam Nielsen, Jakub Wilk, John Lin, Mark
>   Rushakoff, Matheus Tavares, Mazo, Andrey, Michael Osipov,
>   Michael Platings, Miguel Ojeda, Mike Mueller, Morian Sonnet,
>   Quentin Nerden, Robert Morgan, Simon Williams, Steven Roberts,
>   Tigran Mkrtchyan, Varun Naik, Vishal Verma, and Xin Li.
>
> Returning contributors who helped this release are as follows.
> Thanks for your continued support.
>
>   Ævar Arnfjörð Bjarmason, Beat Bolli, Boxuan Li, brian
>   m. carlson, Carlo Marcelo Arenas Belón, Cesar Eduardo Barros,
>   Chris Mayo, Christian Couder, Denton Liu, Derrick Stolee,
>   Dimitriy Ryazantcev, Edmundo Carmona Antoranz, Elijah Newren,
>   Emily Shaffer, Eric Wong, Felipe Contreras, Jean-Noël Avila,
>   Jeff Hostetler, Jeff King, Johannes Schindelin, Johannes Sixt,
>   Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio C Hamano,
>   Karsten Blees, Marc-André Lureau, Martin Ågren, Matthew DeVore,
>   Mike Hommey, Nguyễn Thái Ngọc Duy, Nickolai Belakovski,
>   Paolo Bonzini, Philip Oakley, Phillip Wood, Ramsay Jones,
>   René Scharfe, Rohit Ashiwal, Stephen Boyd, SZEDER Gábor,
>   Taylor Blau, Thomas Gummerer, and William Chargin.
>
> ----------------------------------------------------------------
>
> Git 2.23 Release Notes (draft)
> ==============================
>
> Updates since v2.22
> -------------------
>
> Backward compatibility note
>
>  * The "--base" option of "format-patch" computed the patch-ids for
>    prerequisite patches in an unstable way, which has been updated to
>    compute in a way that is compatible with "git patch-id --stable".
>
>  * The "git log" command by default behaves as if the --mailmap option
>    was given.
>
>
> UI, Workflows & Features
>
>  * The "git fast-export/import" pair has been taught to handle commits
>    with log messages in encoding other than UTF-8 better.
>
>  * In recent versions of Git, per-worktree refs are exposed in
>    refs/worktrees/<wtname>/ hierarchy, which means that worktree names
>    must be a valid refname component.  The code now sanitizes the names
>    given to worktrees, to make sure these refs are well-formed.
>
>  * "git merge" learned "--quit" option that cleans up the in-progress
>    merge while leaving the working tree and the index still in a mess.
>
>  * "git format-patch" learns a configuration to set the default for
>    its --notes=<ref> option.
>
>  * The code to show args with potential typo that cannot be
>    interpreted as a commit-ish has been improved.
>
>  * "git clone --recurse-submodules" learned to set up the submodules
>    to ignore commit object names recorded in the superproject gitlink
>    and instead use the commits that happen to be at the tip of the
>    remote-tracking branches from the get-go, by passing the new
>    "--remote-submodules" option.
>
>  * The pattern "git diff/grep" use to extract funcname and words
>    boundary for Matlab has been extend to cover Octave, which is more
>    or less equivalent.
>
>  * "git help git" was hard to discover (well, at least for some
>    people).
>
>  * The pattern "git diff/grep" use to extract funcname and words
>    boundary for Rust has been added.
>
>  * "git status" can be told a non-standard default value for the
>    "--[no-]ahead-behind" option with a new configuration variable
>    status.aheadBehind.
>
>  * "git fetch" and "git pull" reports when a fetch results in
>    non-fast-forward updates to let the user notice unusual situation.
>    The commands learned "--no-show-forced-updates" option to disable
>    this safety feature.
>
>  * Two new commands "git switch" and "git restore" are introduced to
>    split "checking out a branch to work on advancing its history" and
>    "checking out paths out of the index and/or a tree-ish to work on
>    advancing the current history" out of the single "git checkout"
>    command.
>
>  * "git branch --list" learned to always output the detached HEAD as
>    the first item (when the HEAD is detached, of course), regardless
>    of the locale.
>
>  * The conditional inclusion mechanism learned to base the choice on
>    the branch the HEAD currently is on.
>
>  * "git rev-list --objects" learned the "--no-object-names" option to
>    squelch the path to the object that is used as a grouping hint for
>    pack-objects.
>
>  * A new tag.gpgSign configuration variable turns "git tag -a" into
>    "git tag -s".
>
>  * "git multi-pack-index" learned expire and repack subcommands.
>
>  * "git blame" learned to "ignore" commits in the history, whose
>    effects (as well as their presence) get ignored.
>
>  * "git cherry-pick/revert" learned a new "--skip" action.
>
>  * The tips of refs from the alternate object store can be used as
>    starting point for reachability computation now.
>
>  * Extra blank lines in "git status" output have been reduced.
>
>  * The commits in a repository can be described by multiple
>    commit-graph files now, which allows the commit-graph files to be
>    updated incrementally.
>
>  * "git range-diff" output has been tweaked for easier identification
>    of which part of what file the patch shown is about.
>
>
> Performance, Internal Implementation, Development Support etc.
>
>  * Update supporting parts of "git rebase" to remove code that should
>    no longer be used.
>
>  * Developer support to emulate unsatisfied prerequisites in tests to
>    ensure that the remainder of the tests still succeeds when tests
>    with prerequisites are skipped.
>
>  * "git update-server-info" learned not to rewrite the file with the
>    same contents.
>
>  * The way of specifying the path to find dynamic libraries at runtime
>    has been simplified.  The old default to pass -R/path/to/dir has been
>    replaced with the new default to pass -Wl,-rpath,/path/to/dir,
>    which is the more recent GCC uses.  Those who need to build with an
>    old GCC can still use "CC_LD_DYNPATH=-R"
>
>  * Prepare use of reachability index in topological walker that works
>    on a range (A..B).
>
>  * A new tutorial targeting specifically aspiring git-core
>    developers has been added.
>
>  * Auto-detect how to tell HP-UX aCC where to use dynamically linked
>    libraries from at runtime.
>
>  * "git mergetool" and its tests now spawn fewer subprocesses.
>
>  * Dev support update to help tracing out tests.
>
>  * Support to build with MSVC has been updated.
>
>  * "git fetch" that grabs from a group of remotes learned to run the
>    auto-gc only once at the very end.
>
>  * A handful of Windows build patches have been upstreamed.
>
>  * The code to read state files used by the sequencer machinery for
>    "git status" has been made more robust against a corrupt or stale
>    state files.
>
>  * "git for-each-ref" with multiple patterns have been optimized.
>
>  * The tree-walk API learned to pass an in-core repository
>    instance throughout more codepaths.
>
>  * When one step in multi step cherry-pick or revert is reset or
>    committed, the command line prompt script failed to notice the
>    current status, which has been improved.
>
>  * Many GIT_TEST_* environment variables control various aspects of
>    how our tests are run, but a few followed "non-empty is true, empty
>    or unset is false" while others followed the usual "there are a few
>    ways to spell true, like yes, on, etc., and also ways to spell
>    false, like no, off, etc." convention.
>
>  * Adjust the dir-iterator API and apply it to the local clone
>    optimization codepath.
>
>  * We have been trying out a few language features outside c89; the
>    coding guidelines document did not talk about them and instead had
>    a blanket ban against them.
>
>  * A test helper has been introduced to optimize preparation of test
>    repositories with many simple commits, and a handful of test
>    scripts have been updated to use it.
>
>
> Fixes since v2.22
> -----------------
>
>  * A relative pathname given to "git init --template=<path> <repo>"
>    ought to be relative to the directory "git init" gets invoked in,
>    but it instead was made relative to the repository, which has been
>    corrected.
>
>  * "git worktree add" used to fail when another worktree connected to
>    the same repository was corrupt, which has been corrected.
>
>  * The ownership rule for the file descriptor to fast-import remote
>    backend was mixed up, leading to an unrelated file descriptor getting
>    closed, which has been fixed.
>
>  * A "merge -c" instruction during "git rebase --rebase-merges" should
>    give the user a chance to edit the log message, even when there is
>    otherwise no need to create a new merge and replace the existing
>    one (i.e. fast-forward instead), but did not.  Which has been
>    corrected.
>
>  * Code cleanup and futureproof.
>
>  * More parameter validation.
>
>  * "git update-server-info" used to leave stale packfiles in its
>    output, which has been corrected.
>
>  * The server side support for "git fetch" used to show incorrect
>    value for the HEAD symbolic ref when the namespace feature is in
>    use, which has been corrected.
>
>  * "git am -i --resolved" segfaulted after trying to see a commit as
>    if it were a tree, which has been corrected.
>
>  * "git bundle verify" needs to see if prerequisite objects exist in
>    the receiving repository, but the command did not check if we are
>    in a repository upfront, which has been corrected.
>
>  * "git merge --squash" is designed to update the working tree and the
>    index without creating the commit, and this cannot be countermanded
>    by adding the "--commit" option; the command now refuses to work
>    when both options are given.
>
>  * The data collected by fsmonitor was not properly written back to
>    the on-disk index file, breaking t7519 tests occasionally, which
>    has been corrected.
>
>  * Update to Unicode 12.1 width table.
>
>  * The command line to invoke a "git cat-file" command from inside
>    "git p4" was not properly quoted to protect a caret and running a
>    broken command on Windows, which has been corrected.
>
>  * "git request-pull" learned to warn when the ref we ask them to pull
>    from in the local repository and in the published repository are
>    different.
>
>  * When creating a partial clone, the object filtering criteria is
>    recorded for the origin of the clone, but this incorrectly used a
>    hardcoded name "origin" to name that remote; it has been corrected
>    to honor the "--origin <name>" option.
>
>  * "git fetch" into a lazy clone forgot to fetch base objects that are
>    necessary to complete delta in a thin packfile, which has been
>    corrected.
>
>  * The filter_data used in the list-objects-filter (which manages a
>    lazily sparse clone repository) did not use the dynamic array API
>    correctly---'nr' is supposed to point at one past the last element
>    of the array in use.  This has been corrected.
>
>  * The description about slashes in gitignore patterns (used to
>    indicate things like "anchored to this level only" and "only
>    matches directories") has been revamped.
>
>  * The URL decoding code has been updated to avoid going past the end
>    of the string while parsing %-<hex>-<hex> sequence.
>
>  * The list of for-each like macros used by clang-format has been
>    updated.
>
>  * "git branch --list" learned to show branches that are checked out
>    in other worktrees connected to the same repository prefixed with
>    '+', similar to the way the currently checked out branch is shown
>    with '*' in front.
>    (merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).
>
>  * Code restructuring during 2.20 period broke fetching tags via
>    "import" based transports.
>
>  * The commit-graph file is now part of the "files that the runtime
>    may keep open file descriptors on, all of which would need to be
>    closed when done with the object store", and the file descriptor to
>    an existing commit-graph file now is closed before "gc" finalizes a
>    new instance to replace it.
>
>  * "git checkout -p" needs to selectively apply a patch in reverse,
>    which did not work well.
>
>  * Code clean-up to avoid signed integer wraparounds during binary search.
>
>  * "git interpret-trailers" always treated '#' as the comment
>    character, regardless of core.commentChar setting, which has been
>    corrected.
>
>  * "git stash show 23" used to work, but no more after getting
>    rewritten in C; this regression has been corrected.
>
>  * "git rebase --abort" used to leave refs/rewritten/ when concluding
>    "git rebase -r", which has been corrected.
>
>  * An incorrect list of options was cached after command line
>    completion failed (e.g. trying to complete a command that requires
>    a repository outside one), which has been corrected.
>
>  * The code to parse scaled numbers out of configuration files has
>    been made more robust and also easier to follow.
>
>  * The codepath to compute delta islands used to spew progress output
>    without giving the callers any way to squelch it, which has been
>    fixed.
>
>  * Protocol capabilities that go over wire should never be translated,
>    but it was incorrectly marked for translation, which has been
>    corrected.  The output of protocol capabilities for debugging has
>    been tweaked a bit.
>
>  * Use "Erase in Line" CSI sequence that is already used in the editor
>    support to clear cruft in the progress output.
>
>  * "git submodule foreach" did not protect command line options passed
>    to the command to be run in each submodule correctly, when the
>    "--recursive" option was in use.
>
>  * The configuration variable rebase.rescheduleFailedExec should be
>    effective only while running an interactive rebase and should not
>    affect anything when running a non-interactive one, which was not
>    the case.  This has been corrected.
>
>  * The "git clone" documentation refers to command line options in its
>    description in the short form; they have been replaced with long
>    forms to make them more recognisable.
>
>  * Generation of pack bitmaps are now disabled when .keep files exist,
>    as these are mutually exclusive features.
>    (merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).
>
>  * "git rm" to resolve a conflicted path leaked an internal message
>    "needs merge" before actually removing the path, which was
>    confusing.  This has been corrected.
>
>  * "git stash --keep-index" did not work correctly on paths that have
>    been removed, which has been fixed.
>    (merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).
>
>  * Window 7 update ;-)
>
>  * A codepath that reads from GPG for signed object verification read
>    past the end of allocated buffer, which has been fixed.
>
>  * "git clean" silently skipped a path when it cannot lstat() it; now
>    it gives a warning.
>
>  * "git push --atomic" that goes over the transport-helper (namely,
>    the smart http transport) failed to prevent refs to be pushed when
>    it can locally tell that one of the ref update will fail without
>    having to consult the other end, which has been corrected.
>
>  * The internal diff machinery can be made to read out of bounds while
>    looking for --function-context line in a corner case, which has been
>    corrected.
>    (merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).
>
>  * Other code cleanup, docfix, build fix, etc.
>    (merge fbec05c210 cc/test-oidmap later to maint).
>    (merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint).
>    (merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint).
>    (merge d61e6ce1dd sg/fsck-config-in-doc later to maint).
>
> ----------------------------------------------------------------
>
> Changes since v2.22.0 are as follows:
>
> Ariadne Conill (3):
>       log: add warning for unspecified log.mailmap setting
>       documentation: mention --no-use-mailmap and log.mailmap false setting
>       tests: defang pager tests by explicitly disabling the log.mailmap warning
>
> Barret Rhoden (8):
>       fsck: rename and touch up init_skiplist()
>       Move oidset_parse_file() to oidset.c
>       blame: use a helper function in blame_chunk()
>       blame: add the ability to ignore commits and their changes
>       blame: add config options for the output of ignored or unblamable lines
>       blame: optionally track line fingerprints during fill_blame_origin()
>       blame: use the fingerprint heuristic to match ignored lines
>       blame: add a test to cover blame_coalesce()
>
> Beat Bolli (2):
>       unicode: update the width tables to Unicode 12.1
>       grep: print the pcre2_jit_on value
>
> Ben Avison (1):
>       clone: add `--remote-submodules` flag
>
> Boxuan Li (2):
>       userdiff: add Octave
>       userdiff: fix grammar and style issues
>
> Carlo Marcelo Arenas Belón (6):
>       fsmonitor: avoid signed integer overflow / infinite loop
>       wrapper: avoid undefined behaviour in macOS
>       trace2: correct typo in technical documentation
>       xdiff: drop system includes in xutils.c
>       xdiff: remove duplicate headers from xhistogram.c
>       xdiff: remove duplicate headers from xpatience.c
>
> Cesar Eduardo Barros (1):
>       mingw: embed a manifest to trick UAC into Doing The Right Thing
>
> Chris Mayo (1):
>       send-email: update documentation of required Perl modules
>
> Christian Couder (7):
>       t/helper: add test-oidmap.c
>       t: add t0016-oidmap.sh
>       oidmap: use sha1hash() instead of static hash() function
>       test-hashmap: remove 'hash' command
>       doc: improve usage string in MyFirstContribution
>       test-oidmap: remove 'add' subcommand
>       t0016: add 'remove' subcommand test
>
> Daniel Ferreira (1):
>       dir-iterator: add tests for dir-iterator API
>
> Denton Liu (5):
>       git-format-patch.txt: document --no-notes option
>       format-patch: teach format.notes config option
>       config: learn the "onbranch:" includeIf condition
>       config/alias.txt: change " and ' to `
>       config/alias.txt: document alias accepting non-command first word
>
> Derrick Stolee (51):
>       commit-graph: fix the_repository reference
>       revision: use generation for A..B --topo-order queries
>       revision: keep topo-walk free of unintersting commits
>       sha1-file: split OBJECT_INFO_FOR_PREFETCH
>       repack: refactor pack deletion for future use
>       Docs: rearrange subcommands for multi-pack-index
>       multi-pack-index: prepare for 'expire' subcommand
>       midx: simplify computation of pack name lengths
>       midx: refactor permutation logic and pack sorting
>       multi-pack-index: implement 'expire' subcommand
>       multi-pack-index: prepare 'repack' subcommand
>       midx: implement midx_repack()
>       multi-pack-index: test expire while adding packs
>       midx: add test that 'expire' respects .keep files
>       t5319-multi-pack-index.sh: test batch size zero
>       commit-graph: return with errors during write
>       commit-graph: collapse parameters into flags
>       commit-graph: remove Future Work section
>       commit-graph: create write_commit_graph_context
>       commit-graph: extract fill_oids_from_packs()
>       commit-graph: extract fill_oids_from_commit_hex()
>       commit-graph: extract fill_oids_from_all_packs()
>       commit-graph: extract count_distinct_commits()
>       commit-graph: extract copy_oids_to_commits()
>       commit-graph: extract write_commit_graph_file()
>       commit-graph: use raw_object_store when closing
>       packfile: close commit-graph in close_all_packs
>       packfile: rename close_all_packs to close_object_store
>       commit-graph: document commit-graph chains
>       commit-graph: prepare for commit-graph chains
>       commit-graph: rename commit_compare to oid_compare
>       commit-graph: load commit-graph chains
>       commit-graph: add base graphs chunk
>       commit-graph: rearrange chunk count logic
>       commit-graph: write commit-graph chains
>       commit-graph: add --split option to builtin
>       commit-graph: merge commit-graph chains
>       commit-graph: allow cross-alternate chains
>       commit-graph: expire commit-graph files
>       commit-graph: create options for split files
>       commit-graph: verify chains with --shallow mode
>       commit-graph: clean up chains after flattened write
>       commit-graph: test octopus merges with --split
>       commit-graph: test --split across alternate without --split
>       commit-graph: normalize commit-graph filenames
>       commit-graph: test verify across alternates
>       fetch: add --[no-]show-forced-updates argument
>       fetch: warn about forced updates in branch listing
>       pull: add --[no-]show-forced-updates passthrough
>       t5319: use 'test-tool path-utils' instead of 'ls -l'
>       commit-graph: fix bug around octopus merges
>
> Dimitriy Ryazantcev (1):
>       l10n: localizable upload progress messages
>
> Doug Ilijev (1):
>       README: fix rendering of text in angle brackets
>
> Dr. Adam Nielsen (1):
>       gitignore.txt: make slash-rules more readable
>
> Edmundo Carmona Antoranz (1):
>       builtin/merge.c - cleanup of code in for-cycle that tests strategies
>
> Elijah Newren (6):
>       t9350: fix encoding test to actually test reencoding
>       fast-import: support 'encoding' commit header
>       fast-export: avoid stripping encoding header if we cannot reencode
>       fast-export: differentiate between explicitly UTF-8 and implicitly UTF-8
>       fast-export: do automatic reencoding of commit messages only if requested
>       merge-recursive: avoid directory rename detection in recursive case
>
> Emily Shaffer (7):
>       documentation: add tutorial for first contribution
>       documentation: add anchors to MyFirstContribution
>       grep: fail if call could output and name is null
>       doc: hint about GIT_DEBUGGER in CodingGuidelines
>       doc: add some nit fixes to MyFirstContribution
>       rev-list: teach --no-object-names to enable piping
>       transport-helper: enforce atomic in push_refs_with_push
>
> Eric Wong (3):
>       update-server-info: avoid needless overwrites
>       server-info: do not list unlinked packs
>       repack: disable bitmaps-by-default if .keep files exist
>
> Felipe Contreras (5):
>       t5801 (remote-helpers): cleanup refspec stuff
>       t5801 (remote-helpers): add test to fetch tags
>       fetch: trivial cleanup
>       fetch: make the code more understandable
>       fetch: fix regression with transport helpers
>
> Jakub Wilk (1):
>       doc: don't use git.kernel.org as example gitweb URL
>
> Jean-Noël Avila (1):
>       l10n: reformat some localized strings for v2.23.0
>
> Jeff Hostetler (13):
>       cache-tree/blame: avoid reusing the DEBUG constant
>       msvc: mark a variable as non-const
>       msvc: do not re-declare the timespec struct
>       msvc: define ftello()
>       msvc: fix detect_msys_tty()
>       msvc: update Makefile to allow for spaces in the compiler path
>       status: add status.aheadbehind setting
>       status: warn when a/b calculation takes too long
>       status: ignore status.aheadbehind in porcelain formats
>       msvc: support building Git using MS Visual C++
>       msvc: add a compile-time flag to allow detailed heap debugging
>       msvc: do not pretend to support all signals
>       msvc: ignore .dll and incremental compile output
>
> Jeff King (57):
>       cmd_{read,write}_tree: rename "unused" variable that is used
>       builtin: consistently pass cmd_* prefix to parse_options
>       submodule: drop unused prefix parameter from some functions
>       clone: drop dest parameter from copy_alternates()
>       read-cache: drop unused parameter from threaded load
>       wt-status: drop unused status parameter
>       mktree: drop unused length parameter
>       name-rev: drop unused parameters from is_better_name()
>       pack-objects: drop unused rev_info parameters
>       receive-pack: drop unused "commands" from prepare_shallow_update()
>       remove_all_fetch_refspecs(): drop unused "remote" parameter
>       rev-list: drop unused void pointer from finish_commit()
>       show-branch: drop unused parameter from show_independent()
>       verify-commit: simplify parameters to run_gpg_verify()
>       help_unknown_ref(): duplicate collected refnames
>       help_unknown_ref(): check for refname ambiguity
>       upload-pack: strip namespace from symref data
>       am: simplify prompt response handling
>       am: read interactive input from stdin
>       am: drop tty requirement for --interactive
>       am: fix --interactive HEAD tree resolution
>       interpret-trailers: load default config
>       verify-tag: drop signal.h include
>       wt-status.h: drop stdio.h include
>       describe: fix accidental oid/hash type-punning
>       upload-pack: rename a "sha1" variable to "oid"
>       pack-bitmap-write: convert some helpers to use object_id
>       pack-objects: convert packlist_find() to use object_id
>       pack-objects: convert locate_object_entry_hash() to object_id
>       object: convert lookup_unknown_object() to use object_id
>       object: convert lookup_object() to use object_id
>       object: convert internal hash_obj() to object_id
>       object: convert create_object() to use object_id
>       khash: drop broken oid_map typedef
>       khash: rename kh_oid_t to kh_oid_set
>       delta-islands: convert island_marks khash to use oids
>       pack-bitmap: convert khash_sha1 maps into kh_oid_map
>       khash: drop sha1-specific map types
>       khash: rename oid helper functions
>       hash.h: move object_id definition from cache.h
>       hashmap: convert sha1hash() to oidhash()
>       delta-islands: respect progress flag
>       blame: drop some unused function parameters
>       object-store.h: move for_each_alternate_ref() from transport.h
>       check_everything_connected: assume alternate ref tips are valid
>       test-lib: introduce test_commit_bulk
>       t5310: increase the number of bitmapped commits
>       t3311: use test_commit_bulk
>       t5702: use test_commit_bulk
>       t5703: use test_commit_bulk
>       t6200: use test_commit_bulk
>       xdiff: clamp function context indices in post-image
>       t: sort output of hashmap iteration
>       t7700: clean up .keep file in bitmap-writing test
>       repack: silence warnings when auto-enabled bitmaps cannot be built
>       repack: simplify handling of auto-bitmaps and .keep files
>       t0000: reword comments for "local" test
>
> Johannes Schindelin (47):
>       Drop unused git-rebase--am.sh
>       t3400: stop referring to the scripted rebase
>       .gitignore: there is no longer a built-in `git-rebase--interactive`
>       sequencer: the `am` and `rebase--interactive` scripts are gone
>       rebase: fold git-rebase--common into the -p backend
>       bisect--helper: verify HEAD could be parsed before continuing
>       fill_stat_cache_info(): prepare for an fsmonitor fix
>       mark_fsmonitor_valid(): mark the index as changed if needed
>       bundle verify: error out if called without an object database
>       poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
>       kwset: allow building with GCC 8
>       winansi: simplify loading the GetCurrentConsoleFontEx() function
>       config: avoid calling `labs()` on too-large data type
>       t3404: fix a typo
>       mingw: fix a typo in the msysGit-specific section
>       Mark .bat files as requiring CR/LF endings
>       t0001 (mingw): do not expect a specific order of stdout/stderr
>       obstack: fix compiler warning
>       mingw: replace mingw_startup() hack
>       msvc: fix dependencies of compat/msvc.c
>       t0001: fix on case-insensitive filesystems
>       msvc: avoid debug assertion windows in Debug Mode
>       mingw: enable stack smashing protector
>       mingw: get pw_name in UTF-8 format
>       mingw: use Unicode functions explicitly
>       rebase --am: ignore rebase.rescheduleFailedExec
>       mingw: fix possible buffer overrun when calling `GetUserNameW()`
>       diff: munmap() file contents before running external diff
>       mingw: support spawning programs containing spaces in their names
>       clean: show an error message when the path is too long
>       rebase: fix white-space
>       git: mark cmd_rebase as requiring a worktree
>       Vcproj.pm: auto-generate GUIDs
>       Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool
>       Vcproj.pm: urlencode '<' and '>' when generating VC projects
>       contrib/buildsystems: ignore irrelevant files in Generators/
>       contrib/buildsystems: error out on unknown option
>       contrib/buildsystems: handle libiconv, too
>       contrib/buildsystems: also handle -lexpat
>       contrib/buildsystems: handle options starting with a slash
>       contrib/buildsystems: add a backend for modern Visual Studio versions
>       msvc: add a Makefile target to pre-generate the Visual Studio solution
>       vcxproj: also link-or-copy builtins
>       .gitignore: ignore Visual Studio's temporary/generated files
>       bin-wrappers: append `.exe` to target paths if necessary
>       git: avoid calling aliased builtins via their dashed form
>       config: work around bug with includeif:onbranch and early config
>
> Johannes Sixt (5):
>       userdiff: two simplifications of patterns for rust
>       t7610-mergetool: do not place pipelines headed by `yes` in subshells
>       t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
>       mergetool: dissect strings with shell variable magic instead of `expr`
>       mergetool: use shell variable magic instead of `awk`
>
> John Lin (1):
>       status: remove the empty line after hints
>
> Jonathan Nieder (1):
>       t: decrease nesting in test_oid_to_path
>
> Jonathan Tan (5):
>       t5616: refactor packfile replacement
>       index-pack: prefetch missing REF_DELTA bases
>       t5616: use correct flag to check object is missing
>       t5616: cover case of client having delta base
>       t5551: test usage of chunked encoding explicitly
>
> Josh Steadmon (1):
>       trace2: correct trace2 field name documentation
>
> Junio C Hamano (19):
>       The first batch after 2.22
>       The second batch
>       The third batch
>       The fourth batch
>       The fifth batch
>       transport-helper: avoid var decl in for () loop control
>       rm: resolving by removal is not a warning-worthy event
>       CodingGuidelines: spell out post-C89 rules
>       The sixth batch
>       The seventh batch
>       Flush fixes up to the third batch post 2.22.0
>       Merge fixes made on the 'master' front
>       Git 2.23-rc0
>       test-dir-iterator: do not assume errno values
>       A few more last-minute fixes
>       log: flip the --mailmap default unconditionally
>       log: really flip the --mailmap default
>       Git 2.23-rc1
>       Git 2.23-rc2
>
> Karsten Blees (2):
>       gettext: always use UTF-8 on native Windows
>       mingw: initialize HOME on startup
>
> Marc-André Lureau (1):
>       userdiff: add built-in pattern for rust
>
> Mark Rushakoff (1):
>       doc: typo: s/can not/cannot/ and s/is does/does/
>
> Martin Ågren (3):
>       ref-filter: fix memory leak in `free_array_item()`
>       RelNotes/2.21.1: typofix
>       RelNotes/2.23.0: fix a few typos and other minor issues
>
> Matheus Tavares (8):
>       clone: better handle symlinked files at .git/objects/
>       dir-iterator: use warning_errno when possible
>       dir-iterator: refactor state machine model
>       dir-iterator: add flags parameter to dir_iterator_begin
>       clone: copy hidden paths at local clone
>       clone: extract function from copy_or_link_directory
>       clone: use dir-iterator to avoid explicit dir traversal
>       clone: replace strcmp by fspathcmp
>
> Matthew DeVore (5):
>       list-objects-filter-options: error is localizeable
>       list-objects-filter: correct usage of ALLOC_GROW
>       url: do not read past end of buffer
>       url: do not allow %00 to represent NUL in URLs
>       ref-filter: sort detached HEAD lines firstly
>
> Mazo, Andrey (8):
>       git-p4: detect/prevent infinite loop in gitCommitByP4Change()
>       git-p4: add failing test for "git-p4: match branches case insensitively if configured"
>       git-p4: match branches case insensitively if configured
>       git-p4: don't groom exclude path list on every commit
>       git-p4: add failing test for "don't exclude other files with same prefix"
>       git-p4: don't exclude other files with same prefix
>       git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
>       git-p4: respect excluded paths when detecting branches
>
> Michael Osipov (1):
>       configure: Detect linking style for HP aCC on HP-UX
>
> Michael Platings (2):
>       blame: add a fingerprint heuristic to match ignored lines
>       t8014: remove unnecessary braces
>
> Miguel Ojeda (1):
>       clang-format: use git grep to generate the ForEachMacros list
>
> Mike Hommey (2):
>       dup() the input fd for fast-import used for remote helpers
>       Use xmmap_gently instead of xmmap in use_pack
>
> Mike Mueller (1):
>       p4 unshelve: fix "Not a valid object name HEAD0" on Windows
>
> Morian Sonnet (1):
>       submodule foreach: fix recursion of options
>
> Nguyễn Thái Ngọc Duy (63):
>       git-checkout.txt: spell out --no-option
>       git-checkout.txt: fix one syntax line
>       doc: document --overwrite-ignore
>       git-checkout.txt: fix monospace typeset
>       t: rename t2014-switch.sh to t2014-checkout-switch.sh
>       checkout: advice how to get out of detached HEAD mode
>       checkout: inform the user when removing branch state
>       checkout: keep most #include sorted
>       checkout: factor out some code in parse_branchname_arg()
>       checkout: make "opts" in cmd_checkout() a pointer
>       checkout: move 'confict_style' and 'dwim_..' to checkout_opts
>       checkout: split options[] array in three pieces
>       checkout: split part of it to new command 'switch'
>       switch: better names for -b and -B
>       switch: add --discard-changes
>       switch: remove -l
>       switch: stop accepting pathspec
>       switch: reject "do nothing" case
>       switch: only allow explicit detached HEAD
>       switch: add short option for --detach
>       switch: implicit dwim, use --no-guess to disable it
>       switch: no worktree status unless real branch switch happens
>       switch: reject if some operation is in progress
>       switch: make --orphan switch to an empty tree
>       t: add tests for switch
>       completion: support switch
>       doc: promote "git switch"
>       checkout: split part of it to new command 'restore'
>       restore: take tree-ish from --source option instead
>       restore: make pathspec mandatory
>       restore: disable overlay mode by default
>       checkout: factor out worktree checkout code
>       restore: add --worktree and --staged
>       restore: reject invalid combinations with --staged
>       restore: default to --source=HEAD when only --staged is specified
>       restore: replace --force with --ignore-unmerged
>       restore: support --patch
>       t: add tests for restore
>       completion: support restore
>       user-manual.txt: prefer 'merge --abort' over 'reset --hard'
>       doc: promote "git restore"
>       help: move git-diff and git-reset to different groups
>       Declare both git-switch and git-restore experimental
>       merge: remove drop_save() in favor of remove_merge_branch_state()
>       init: make --template path relative to $CWD
>       worktree add: sanitize worktree names
>       worktree add: be tolerant of corrupt worktrees
>       merge: add --quit
>       completion: do not cache if --git-completion-helper fails
>       fetch: only run 'gc' once when fetching multiple remotes
>       t2027: use test_must_be_empty
>       switch: allow to switch in the middle of bisect
>       completion: disable dwim on "git switch -d"
>       fetch-pack: move capability names out of i18n strings
>       fetch-pack: print all relevant supported capabilities with -v -v
>       fetch-pack: print server version at the top in -v -v
>       sha1-file.c: remove the_repo from read_object_with_reference()
>       tree-walk.c: remove the_repo from fill_tree_descriptor()
>       tree-walk.c: remove the_repo from get_tree_entry()
>       tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
>       match-trees.c: remove the_repo from shift_tree*()
>       Use the right 'struct repository' instead of the_repository
>       t7814: do not generate same commits in different repos
>
> Nickolai Belakovski (3):
>       ref-filter: add worktreepath atom
>       branch: update output to include worktree info
>       branch: add worktree info on verbose output
>
> Paolo Bonzini (2):
>       request-pull: quote regex metacharacters in local ref
>       request-pull: warn if the remote object is not the same as the local one
>
> Philip Oakley (15):
>       git.c: show usage for accessing the git(1) help page
>       Doc: git.txt: remove backticks from link and add git-scm.com/docs
>       doc branch: provide examples for listing remote tracking branches
>       msvc: include sigset_t definition
>       msvc: define O_ACCMODE
>       msvc: add pragmas for common warnings
>       Vcproj.pm: list git.exe first to be startup project
>       contrib/buildsystems: ignore invalidcontinue.obj
>       contrib/buildsystems: fix misleading error message
>       contrib/buildsystems: handle quoted spaces in filenames
>       contrib/buildsystems: ignore gettext stuff
>       contrib/buildsystems: redirect errors of the dry run into a log file
>       contrib/buildsystems: optionally capture the dry-run in a file
>       contrib/buildsystems: handle the curl library option
>       .gitignore: touch up the entries regarding Visual Studio
>
> Phillip Wood (12):
>       rebase: fix a memory leak
>       rebase: warn if state directory cannot be removed
>       sequencer: return errors from sequencer_remove_state()
>       rebase --abort/--quit: cleanup refs/rewritten
>       rebase -r: always reword merge -c
>       add -p: fix checkout -p with pathological context
>       show --continue/skip etc. consistently in synopsis
>       sequencer: always allow tab after command name
>       sequencer: factor out todo command name parsing
>       status: do not report errors in sequencer/todo
>       git-prompt: improve cherry-pick/revert detection
>       t3420: remove progress lines before comparing output
>
> Quentin Nerden (2):
>       docs: git-clone: refer to long form of options
>       docs: git-clone: list short form of options first
>
> Ramsay Jones (1):
>       env--helper: mark a file-local symbol as static
>
> René Scharfe (10):
>       cleanup: fix possible overflow errors in binary search, part 2
>       coccinelle: use COPY_ARRAY for copying arrays
>       use COPY_ARRAY for copying arrays
>       config: use unsigned_mult_overflows to check for overflows
>       config: don't multiply in parse_unit_factor()
>       config: simplify parsing of unit factors
>       commit-graph: release strbufs after use
>       dir-iterator: release strbuf after use
>       test-dir-iterator: use path argument directly
>       sha1-file: release strbuf after use
>
> Robert Morgan (1):
>       gpg(docs): use correct --verify syntax
>
> Rohit Ashiwal (5):
>       sequencer: add advice for revert
>       sequencer: rename reset_for_rollback to reset_merge
>       sequencer: use argv_array in reset_merge
>       cherry-pick/revert: add --skip option
>       cherry-pick/revert: advise using --skip
>
> SZEDER Gábor (12):
>       t3404: modernize here doc style
>       t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
>       pager: add a helper function to clear the last line in the terminal
>       t5551: use 'test_i18ngrep' to check translated output
>       rebase: fix garbled progress display with '-x'
>       progress: use term_clear_line()
>       Document that 'git -C ""' works and doesn't change directory
>       ci: don't update Homebrew
>       ci: disable Homebrew's auto cleanup
>       ci/lib.sh: update a comment about installed P4 and Git-LFS versions
>       travis-ci: build with GCC 4.8 as well
>       Documentation/git-fsck.txt: include fsck.* config variables
>
> Simon Williams (1):
>       git-p4: allow unshelving of branched files
>
> Stephen Boyd (2):
>       format-patch: inform user that patch-id generation is unstable
>       format-patch: make --base patch-id output stable
>
> Steven Roberts (1):
>       gpg-interface: do not scan past the end of buffer
>
> Taylor Blau (1):
>       ref-filter.c: find disjoint pattern prefixes
>
> Thomas Gummerer (16):
>       stash: fix show referencing stash index
>       apply: replace marc.info link with public-inbox
>       apply: only pass required data to skip_tree_prefix
>       apply: only pass required data to git_header_name
>       apply: only pass required data to check_header_line
>       apply: only pass required data to find_name_*
>       apply: only pass required data to gitdiff_* functions
>       apply: make parse_git_diff_header public
>       range-diff: fix function parameter indentation
>       range-diff: split lines manually
>       range-diff: don't remove funcname from inner diff
>       range-diff: suppress line count in outer diff
>       range-diff: add section header instead of diff header
>       range-diff: add filename to inner diff
>       range-diff: add headers to the outer hunk header
>       stash: fix handling removed files with --keep-index
>
> Tigran Mkrtchyan (1):
>       tag: add tag.gpgSign config option to force all tags be GPG-signed
>
> Varun Naik (1):
>       read-cache.c: do not die if mmap fails
>
> Vishal Verma (1):
>       merge: refuse --commit with --squash
>
> William Chargin (1):
>       restore: fix typo in docs
>
> Xin Li (1):
>       clone: respect user supplied origin name when setting up partial clone
>
> brian m. carlson (10):
>       t: add helper to convert object IDs to paths
>       t1410: make hash size independent
>       t1450: make hash size independent
>       t5000: make hash independent
>       t6030: make test work with SHA-256
>       t0027: make hash size independent
>       t0090: make test pass with SHA-256
>       t1007: remove SHA1 prerequisites
>       t1710: make hash independent
>       t2203: avoid hard-coded object ID values
>
> Ævar Arnfjörð Bjarmason (21):
>       send-email: move the read_config() function above getopts
>       send-email: rename the @bcclist variable for consistency
>       send-email: do defaults -> config -> getopt in that order
>       tests: add a special setup where prerequisites fail
>       Makefile: remove the NO_R_TO_GCC_LINKER flag
>       send-email: remove cargo-culted multi-patch pattern in tests
>       send-email: fix broken transferEncoding tests
>       send-email: document --no-[to|cc|bcc]
>       hash-object doc: stop mentioning git-cvsimport
>       send-email: fix regression in sendemail.identity parsing
>       Revert "test-lib: whitelist GIT_TR2_* in the environment"
>       config tests: simplify include cycle test
>       env--helper: new undocumented builtin wrapping git_env_*()
>       config.c: refactor die_bad_number() to not call gettext() early
>       t6040 test: stop using global "script" variable
>       tests: make GIT_TEST_GETTEXT_POISON a boolean
>       tests README: re-flow a previously changed paragraph
>       tests: replace test_tristate with "git env--helper"
>       tests: make GIT_TEST_FAIL_PREREQS a boolean
>       tests: mark two failing tests under FAIL_PREREQS
>       clone: test for our behavior on odd objects/* content
>
> --
> You received this message because you are subscribed to the Google Groups "git-packagers" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to git-packagers+unsubscribe@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/git-packagers/xmqqk1bmcf3q.fsf%40gitster-ct.c.googlers.com.
>

^ permalink raw reply	[relevance 0%]

* Re: [ANNOUNCE] Git v2.23.0-rc2
  2019-08-09 19:29  2% [ANNOUNCE] Git v2.23.0-rc2 Junio C Hamano
@ 2019-08-09 21:20  0% ` Bhaskar Chowdhury
  2019-08-09 21:31  0% ` Git for Windows v2.23.0-rc2, was " Johannes Schindelin
  1 sibling, 0 replies; 162+ results
From: Bhaskar Chowdhury @ 2019-08-09 21:20 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Linux Kernel, git-packagers

[-- Attachment #1: Type: text/plain, Size: 45240 bytes --]


Thanks, Junio! will dig in. 


On 12:29 Fri 09 Aug 2019, Junio C Hamano wrote:
>A release candidate Git v2.23.0-rc2 is now available for testing
>at the usual places.  It is comprised of 483 non-merge commits
>since v2.22.0, contributed by 67 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.23.0-rc2' 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.22.0 are as follows.
>Welcome to the Git development community!
>
>  Ariadne Conill, Barret Rhoden, Ben Avison, Daniel Ferreira,
>  Doug Ilijev, Dr. Adam Nielsen, Jakub Wilk, John Lin, Mark
>  Rushakoff, Matheus Tavares, Mazo, Andrey, Michael Osipov,
>  Michael Platings, Miguel Ojeda, Mike Mueller, Morian Sonnet,
>  Quentin Nerden, Robert Morgan, Simon Williams, Steven Roberts,
>  Tigran Mkrtchyan, Varun Naik, Vishal Verma, and Xin Li.
>
>Returning contributors who helped this release are as follows.
>Thanks for your continued support.
>
>  Ævar Arnfjörð Bjarmason, Beat Bolli, Boxuan Li, brian
>  m. carlson, Carlo Marcelo Arenas Belón, Cesar Eduardo Barros,
>  Chris Mayo, Christian Couder, Denton Liu, Derrick Stolee,
>  Dimitriy Ryazantcev, Edmundo Carmona Antoranz, Elijah Newren,
>  Emily Shaffer, Eric Wong, Felipe Contreras, Jean-Noël Avila,
>  Jeff Hostetler, Jeff King, Johannes Schindelin, Johannes Sixt,
>  Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio C Hamano,
>  Karsten Blees, Marc-André Lureau, Martin Ågren, Matthew DeVore,
>  Mike Hommey, Nguyễn Thái Ngọc Duy, Nickolai Belakovski,
>  Paolo Bonzini, Philip Oakley, Phillip Wood, Ramsay Jones,
>  René Scharfe, Rohit Ashiwal, Stephen Boyd, SZEDER Gábor,
>  Taylor Blau, Thomas Gummerer, and William Chargin.
>
>----------------------------------------------------------------
>
>Git 2.23 Release Notes (draft)
>==============================
>
>Updates since v2.22
>-------------------
>
>Backward compatibility note
>
> * The "--base" option of "format-patch" computed the patch-ids for
>   prerequisite patches in an unstable way, which has been updated to
>   compute in a way that is compatible with "git patch-id --stable".
>
> * The "git log" command by default behaves as if the --mailmap option
>   was given.
>
>
>UI, Workflows & Features
>
> * The "git fast-export/import" pair has been taught to handle commits
>   with log messages in encoding other than UTF-8 better.
>
> * In recent versions of Git, per-worktree refs are exposed in
>   refs/worktrees/<wtname>/ hierarchy, which means that worktree names
>   must be a valid refname component.  The code now sanitizes the names
>   given to worktrees, to make sure these refs are well-formed.
>
> * "git merge" learned "--quit" option that cleans up the in-progress
>   merge while leaving the working tree and the index still in a mess.
>
> * "git format-patch" learns a configuration to set the default for
>   its --notes=<ref> option.
>
> * The code to show args with potential typo that cannot be
>   interpreted as a commit-ish has been improved.
>
> * "git clone --recurse-submodules" learned to set up the submodules
>   to ignore commit object names recorded in the superproject gitlink
>   and instead use the commits that happen to be at the tip of the
>   remote-tracking branches from the get-go, by passing the new
>   "--remote-submodules" option.
>
> * The pattern "git diff/grep" use to extract funcname and words
>   boundary for Matlab has been extend to cover Octave, which is more
>   or less equivalent.
>
> * "git help git" was hard to discover (well, at least for some
>   people).
>
> * The pattern "git diff/grep" use to extract funcname and words
>   boundary for Rust has been added.
>
> * "git status" can be told a non-standard default value for the
>   "--[no-]ahead-behind" option with a new configuration variable
>   status.aheadBehind.
>
> * "git fetch" and "git pull" reports when a fetch results in
>   non-fast-forward updates to let the user notice unusual situation.
>   The commands learned "--no-show-forced-updates" option to disable
>   this safety feature.
>
> * Two new commands "git switch" and "git restore" are introduced to
>   split "checking out a branch to work on advancing its history" and
>   "checking out paths out of the index and/or a tree-ish to work on
>   advancing the current history" out of the single "git checkout"
>   command.
>
> * "git branch --list" learned to always output the detached HEAD as
>   the first item (when the HEAD is detached, of course), regardless
>   of the locale.
>
> * The conditional inclusion mechanism learned to base the choice on
>   the branch the HEAD currently is on.
>
> * "git rev-list --objects" learned the "--no-object-names" option to
>   squelch the path to the object that is used as a grouping hint for
>   pack-objects.
>
> * A new tag.gpgSign configuration variable turns "git tag -a" into
>   "git tag -s".
>
> * "git multi-pack-index" learned expire and repack subcommands.
>
> * "git blame" learned to "ignore" commits in the history, whose
>   effects (as well as their presence) get ignored.
>
> * "git cherry-pick/revert" learned a new "--skip" action.
>
> * The tips of refs from the alternate object store can be used as
>   starting point for reachability computation now.
>
> * Extra blank lines in "git status" output have been reduced.
>
> * The commits in a repository can be described by multiple
>   commit-graph files now, which allows the commit-graph files to be
>   updated incrementally.
>
> * "git range-diff" output has been tweaked for easier identification
>   of which part of what file the patch shown is about.
>
>
>Performance, Internal Implementation, Development Support etc.
>
> * Update supporting parts of "git rebase" to remove code that should
>   no longer be used.
>
> * Developer support to emulate unsatisfied prerequisites in tests to
>   ensure that the remainder of the tests still succeeds when tests
>   with prerequisites are skipped.
>
> * "git update-server-info" learned not to rewrite the file with the
>   same contents.
>
> * The way of specifying the path to find dynamic libraries at runtime
>   has been simplified.  The old default to pass -R/path/to/dir has been
>   replaced with the new default to pass -Wl,-rpath,/path/to/dir,
>   which is the more recent GCC uses.  Those who need to build with an
>   old GCC can still use "CC_LD_DYNPATH=-R"
>
> * Prepare use of reachability index in topological walker that works
>   on a range (A..B).
>
> * A new tutorial targeting specifically aspiring git-core
>   developers has been added.
>
> * Auto-detect how to tell HP-UX aCC where to use dynamically linked
>   libraries from at runtime.
>
> * "git mergetool" and its tests now spawn fewer subprocesses.
>
> * Dev support update to help tracing out tests.
>
> * Support to build with MSVC has been updated.
>
> * "git fetch" that grabs from a group of remotes learned to run the
>   auto-gc only once at the very end.
>
> * A handful of Windows build patches have been upstreamed.
>
> * The code to read state files used by the sequencer machinery for
>   "git status" has been made more robust against a corrupt or stale
>   state files.
>
> * "git for-each-ref" with multiple patterns have been optimized.
>
> * The tree-walk API learned to pass an in-core repository
>   instance throughout more codepaths.
>
> * When one step in multi step cherry-pick or revert is reset or
>   committed, the command line prompt script failed to notice the
>   current status, which has been improved.
>
> * Many GIT_TEST_* environment variables control various aspects of
>   how our tests are run, but a few followed "non-empty is true, empty
>   or unset is false" while others followed the usual "there are a few
>   ways to spell true, like yes, on, etc., and also ways to spell
>   false, like no, off, etc." convention.
>
> * Adjust the dir-iterator API and apply it to the local clone
>   optimization codepath.
>
> * We have been trying out a few language features outside c89; the
>   coding guidelines document did not talk about them and instead had
>   a blanket ban against them.
>
> * A test helper has been introduced to optimize preparation of test
>   repositories with many simple commits, and a handful of test
>   scripts have been updated to use it.
>
>
>Fixes since v2.22
>-----------------
>
> * A relative pathname given to "git init --template=<path> <repo>"
>   ought to be relative to the directory "git init" gets invoked in,
>   but it instead was made relative to the repository, which has been
>   corrected.
>
> * "git worktree add" used to fail when another worktree connected to
>   the same repository was corrupt, which has been corrected.
>
> * The ownership rule for the file descriptor to fast-import remote
>   backend was mixed up, leading to an unrelated file descriptor getting
>   closed, which has been fixed.
>
> * A "merge -c" instruction during "git rebase --rebase-merges" should
>   give the user a chance to edit the log message, even when there is
>   otherwise no need to create a new merge and replace the existing
>   one (i.e. fast-forward instead), but did not.  Which has been
>   corrected.
>
> * Code cleanup and futureproof.
>
> * More parameter validation.
>
> * "git update-server-info" used to leave stale packfiles in its
>   output, which has been corrected.
>
> * The server side support for "git fetch" used to show incorrect
>   value for the HEAD symbolic ref when the namespace feature is in
>   use, which has been corrected.
>
> * "git am -i --resolved" segfaulted after trying to see a commit as
>   if it were a tree, which has been corrected.
>
> * "git bundle verify" needs to see if prerequisite objects exist in
>   the receiving repository, but the command did not check if we are
>   in a repository upfront, which has been corrected.
>
> * "git merge --squash" is designed to update the working tree and the
>   index without creating the commit, and this cannot be countermanded
>   by adding the "--commit" option; the command now refuses to work
>   when both options are given.
>
> * The data collected by fsmonitor was not properly written back to
>   the on-disk index file, breaking t7519 tests occasionally, which
>   has been corrected.
>
> * Update to Unicode 12.1 width table.
>
> * The command line to invoke a "git cat-file" command from inside
>   "git p4" was not properly quoted to protect a caret and running a
>   broken command on Windows, which has been corrected.
>
> * "git request-pull" learned to warn when the ref we ask them to pull
>   from in the local repository and in the published repository are
>   different.
>
> * When creating a partial clone, the object filtering criteria is
>   recorded for the origin of the clone, but this incorrectly used a
>   hardcoded name "origin" to name that remote; it has been corrected
>   to honor the "--origin <name>" option.
>
> * "git fetch" into a lazy clone forgot to fetch base objects that are
>   necessary to complete delta in a thin packfile, which has been
>   corrected.
>
> * The filter_data used in the list-objects-filter (which manages a
>   lazily sparse clone repository) did not use the dynamic array API
>   correctly---'nr' is supposed to point at one past the last element
>   of the array in use.  This has been corrected.
>
> * The description about slashes in gitignore patterns (used to
>   indicate things like "anchored to this level only" and "only
>   matches directories") has been revamped.
>
> * The URL decoding code has been updated to avoid going past the end
>   of the string while parsing %-<hex>-<hex> sequence.
>
> * The list of for-each like macros used by clang-format has been
>   updated.
>
> * "git branch --list" learned to show branches that are checked out
>   in other worktrees connected to the same repository prefixed with
>   '+', similar to the way the currently checked out branch is shown
>   with '*' in front.
>   (merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).
>
> * Code restructuring during 2.20 period broke fetching tags via
>   "import" based transports.
>
> * The commit-graph file is now part of the "files that the runtime
>   may keep open file descriptors on, all of which would need to be
>   closed when done with the object store", and the file descriptor to
>   an existing commit-graph file now is closed before "gc" finalizes a
>   new instance to replace it.
>
> * "git checkout -p" needs to selectively apply a patch in reverse,
>   which did not work well.
>
> * Code clean-up to avoid signed integer wraparounds during binary search.
>
> * "git interpret-trailers" always treated '#' as the comment
>   character, regardless of core.commentChar setting, which has been
>   corrected.
>
> * "git stash show 23" used to work, but no more after getting
>   rewritten in C; this regression has been corrected.
>
> * "git rebase --abort" used to leave refs/rewritten/ when concluding
>   "git rebase -r", which has been corrected.
>
> * An incorrect list of options was cached after command line
>   completion failed (e.g. trying to complete a command that requires
>   a repository outside one), which has been corrected.
>
> * The code to parse scaled numbers out of configuration files has
>   been made more robust and also easier to follow.
>
> * The codepath to compute delta islands used to spew progress output
>   without giving the callers any way to squelch it, which has been
>   fixed.
>
> * Protocol capabilities that go over wire should never be translated,
>   but it was incorrectly marked for translation, which has been
>   corrected.  The output of protocol capabilities for debugging has
>   been tweaked a bit.
>
> * Use "Erase in Line" CSI sequence that is already used in the editor
>   support to clear cruft in the progress output.
>
> * "git submodule foreach" did not protect command line options passed
>   to the command to be run in each submodule correctly, when the
>   "--recursive" option was in use.
>
> * The configuration variable rebase.rescheduleFailedExec should be
>   effective only while running an interactive rebase and should not
>   affect anything when running a non-interactive one, which was not
>   the case.  This has been corrected.
>
> * The "git clone" documentation refers to command line options in its
>   description in the short form; they have been replaced with long
>   forms to make them more recognisable.
>
> * Generation of pack bitmaps are now disabled when .keep files exist,
>   as these are mutually exclusive features.
>   (merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).
>
> * "git rm" to resolve a conflicted path leaked an internal message
>   "needs merge" before actually removing the path, which was
>   confusing.  This has been corrected.
>
> * "git stash --keep-index" did not work correctly on paths that have
>   been removed, which has been fixed.
>   (merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).
>
> * Window 7 update ;-)
>
> * A codepath that reads from GPG for signed object verification read
>   past the end of allocated buffer, which has been fixed.
>
> * "git clean" silently skipped a path when it cannot lstat() it; now
>   it gives a warning.
>
> * "git push --atomic" that goes over the transport-helper (namely,
>   the smart http transport) failed to prevent refs to be pushed when
>   it can locally tell that one of the ref update will fail without
>   having to consult the other end, which has been corrected.
>
> * The internal diff machinery can be made to read out of bounds while
>   looking for --function-context line in a corner case, which has been
>   corrected.
>   (merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).
>
> * Other code cleanup, docfix, build fix, etc.
>   (merge fbec05c210 cc/test-oidmap later to maint).
>   (merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint).
>   (merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint).
>   (merge d61e6ce1dd sg/fsck-config-in-doc later to maint).
>
>----------------------------------------------------------------
>
>Changes since v2.22.0 are as follows:
>
>Ariadne Conill (3):
>      log: add warning for unspecified log.mailmap setting
>      documentation: mention --no-use-mailmap and log.mailmap false setting
>      tests: defang pager tests by explicitly disabling the log.mailmap warning
>
>Barret Rhoden (8):
>      fsck: rename and touch up init_skiplist()
>      Move oidset_parse_file() to oidset.c
>      blame: use a helper function in blame_chunk()
>      blame: add the ability to ignore commits and their changes
>      blame: add config options for the output of ignored or unblamable lines
>      blame: optionally track line fingerprints during fill_blame_origin()
>      blame: use the fingerprint heuristic to match ignored lines
>      blame: add a test to cover blame_coalesce()
>
>Beat Bolli (2):
>      unicode: update the width tables to Unicode 12.1
>      grep: print the pcre2_jit_on value
>
>Ben Avison (1):
>      clone: add `--remote-submodules` flag
>
>Boxuan Li (2):
>      userdiff: add Octave
>      userdiff: fix grammar and style issues
>
>Carlo Marcelo Arenas Belón (6):
>      fsmonitor: avoid signed integer overflow / infinite loop
>      wrapper: avoid undefined behaviour in macOS
>      trace2: correct typo in technical documentation
>      xdiff: drop system includes in xutils.c
>      xdiff: remove duplicate headers from xhistogram.c
>      xdiff: remove duplicate headers from xpatience.c
>
>Cesar Eduardo Barros (1):
>      mingw: embed a manifest to trick UAC into Doing The Right Thing
>
>Chris Mayo (1):
>      send-email: update documentation of required Perl modules
>
>Christian Couder (7):
>      t/helper: add test-oidmap.c
>      t: add t0016-oidmap.sh
>      oidmap: use sha1hash() instead of static hash() function
>      test-hashmap: remove 'hash' command
>      doc: improve usage string in MyFirstContribution
>      test-oidmap: remove 'add' subcommand
>      t0016: add 'remove' subcommand test
>
>Daniel Ferreira (1):
>      dir-iterator: add tests for dir-iterator API
>
>Denton Liu (5):
>      git-format-patch.txt: document --no-notes option
>      format-patch: teach format.notes config option
>      config: learn the "onbranch:" includeIf condition
>      config/alias.txt: change " and ' to `
>      config/alias.txt: document alias accepting non-command first word
>
>Derrick Stolee (51):
>      commit-graph: fix the_repository reference
>      revision: use generation for A..B --topo-order queries
>      revision: keep topo-walk free of unintersting commits
>      sha1-file: split OBJECT_INFO_FOR_PREFETCH
>      repack: refactor pack deletion for future use
>      Docs: rearrange subcommands for multi-pack-index
>      multi-pack-index: prepare for 'expire' subcommand
>      midx: simplify computation of pack name lengths
>      midx: refactor permutation logic and pack sorting
>      multi-pack-index: implement 'expire' subcommand
>      multi-pack-index: prepare 'repack' subcommand
>      midx: implement midx_repack()
>      multi-pack-index: test expire while adding packs
>      midx: add test that 'expire' respects .keep files
>      t5319-multi-pack-index.sh: test batch size zero
>      commit-graph: return with errors during write
>      commit-graph: collapse parameters into flags
>      commit-graph: remove Future Work section
>      commit-graph: create write_commit_graph_context
>      commit-graph: extract fill_oids_from_packs()
>      commit-graph: extract fill_oids_from_commit_hex()
>      commit-graph: extract fill_oids_from_all_packs()
>      commit-graph: extract count_distinct_commits()
>      commit-graph: extract copy_oids_to_commits()
>      commit-graph: extract write_commit_graph_file()
>      commit-graph: use raw_object_store when closing
>      packfile: close commit-graph in close_all_packs
>      packfile: rename close_all_packs to close_object_store
>      commit-graph: document commit-graph chains
>      commit-graph: prepare for commit-graph chains
>      commit-graph: rename commit_compare to oid_compare
>      commit-graph: load commit-graph chains
>      commit-graph: add base graphs chunk
>      commit-graph: rearrange chunk count logic
>      commit-graph: write commit-graph chains
>      commit-graph: add --split option to builtin
>      commit-graph: merge commit-graph chains
>      commit-graph: allow cross-alternate chains
>      commit-graph: expire commit-graph files
>      commit-graph: create options for split files
>      commit-graph: verify chains with --shallow mode
>      commit-graph: clean up chains after flattened write
>      commit-graph: test octopus merges with --split
>      commit-graph: test --split across alternate without --split
>      commit-graph: normalize commit-graph filenames
>      commit-graph: test verify across alternates
>      fetch: add --[no-]show-forced-updates argument
>      fetch: warn about forced updates in branch listing
>      pull: add --[no-]show-forced-updates passthrough
>      t5319: use 'test-tool path-utils' instead of 'ls -l'
>      commit-graph: fix bug around octopus merges
>
>Dimitriy Ryazantcev (1):
>      l10n: localizable upload progress messages
>
>Doug Ilijev (1):
>      README: fix rendering of text in angle brackets
>
>Dr. Adam Nielsen (1):
>      gitignore.txt: make slash-rules more readable
>
>Edmundo Carmona Antoranz (1):
>      builtin/merge.c - cleanup of code in for-cycle that tests strategies
>
>Elijah Newren (6):
>      t9350: fix encoding test to actually test reencoding
>      fast-import: support 'encoding' commit header
>      fast-export: avoid stripping encoding header if we cannot reencode
>      fast-export: differentiate between explicitly UTF-8 and implicitly UTF-8
>      fast-export: do automatic reencoding of commit messages only if requested
>      merge-recursive: avoid directory rename detection in recursive case
>
>Emily Shaffer (7):
>      documentation: add tutorial for first contribution
>      documentation: add anchors to MyFirstContribution
>      grep: fail if call could output and name is null
>      doc: hint about GIT_DEBUGGER in CodingGuidelines
>      doc: add some nit fixes to MyFirstContribution
>      rev-list: teach --no-object-names to enable piping
>      transport-helper: enforce atomic in push_refs_with_push
>
>Eric Wong (3):
>      update-server-info: avoid needless overwrites
>      server-info: do not list unlinked packs
>      repack: disable bitmaps-by-default if .keep files exist
>
>Felipe Contreras (5):
>      t5801 (remote-helpers): cleanup refspec stuff
>      t5801 (remote-helpers): add test to fetch tags
>      fetch: trivial cleanup
>      fetch: make the code more understandable
>      fetch: fix regression with transport helpers
>
>Jakub Wilk (1):
>      doc: don't use git.kernel.org as example gitweb URL
>
>Jean-Noël Avila (1):
>      l10n: reformat some localized strings for v2.23.0
>
>Jeff Hostetler (13):
>      cache-tree/blame: avoid reusing the DEBUG constant
>      msvc: mark a variable as non-const
>      msvc: do not re-declare the timespec struct
>      msvc: define ftello()
>      msvc: fix detect_msys_tty()
>      msvc: update Makefile to allow for spaces in the compiler path
>      status: add status.aheadbehind setting
>      status: warn when a/b calculation takes too long
>      status: ignore status.aheadbehind in porcelain formats
>      msvc: support building Git using MS Visual C++
>      msvc: add a compile-time flag to allow detailed heap debugging
>      msvc: do not pretend to support all signals
>      msvc: ignore .dll and incremental compile output
>
>Jeff King (57):
>      cmd_{read,write}_tree: rename "unused" variable that is used
>      builtin: consistently pass cmd_* prefix to parse_options
>      submodule: drop unused prefix parameter from some functions
>      clone: drop dest parameter from copy_alternates()
>      read-cache: drop unused parameter from threaded load
>      wt-status: drop unused status parameter
>      mktree: drop unused length parameter
>      name-rev: drop unused parameters from is_better_name()
>      pack-objects: drop unused rev_info parameters
>      receive-pack: drop unused "commands" from prepare_shallow_update()
>      remove_all_fetch_refspecs(): drop unused "remote" parameter
>      rev-list: drop unused void pointer from finish_commit()
>      show-branch: drop unused parameter from show_independent()
>      verify-commit: simplify parameters to run_gpg_verify()
>      help_unknown_ref(): duplicate collected refnames
>      help_unknown_ref(): check for refname ambiguity
>      upload-pack: strip namespace from symref data
>      am: simplify prompt response handling
>      am: read interactive input from stdin
>      am: drop tty requirement for --interactive
>      am: fix --interactive HEAD tree resolution
>      interpret-trailers: load default config
>      verify-tag: drop signal.h include
>      wt-status.h: drop stdio.h include
>      describe: fix accidental oid/hash type-punning
>      upload-pack: rename a "sha1" variable to "oid"
>      pack-bitmap-write: convert some helpers to use object_id
>      pack-objects: convert packlist_find() to use object_id
>      pack-objects: convert locate_object_entry_hash() to object_id
>      object: convert lookup_unknown_object() to use object_id
>      object: convert lookup_object() to use object_id
>      object: convert internal hash_obj() to object_id
>      object: convert create_object() to use object_id
>      khash: drop broken oid_map typedef
>      khash: rename kh_oid_t to kh_oid_set
>      delta-islands: convert island_marks khash to use oids
>      pack-bitmap: convert khash_sha1 maps into kh_oid_map
>      khash: drop sha1-specific map types
>      khash: rename oid helper functions
>      hash.h: move object_id definition from cache.h
>      hashmap: convert sha1hash() to oidhash()
>      delta-islands: respect progress flag
>      blame: drop some unused function parameters
>      object-store.h: move for_each_alternate_ref() from transport.h
>      check_everything_connected: assume alternate ref tips are valid
>      test-lib: introduce test_commit_bulk
>      t5310: increase the number of bitmapped commits
>      t3311: use test_commit_bulk
>      t5702: use test_commit_bulk
>      t5703: use test_commit_bulk
>      t6200: use test_commit_bulk
>      xdiff: clamp function context indices in post-image
>      t: sort output of hashmap iteration
>      t7700: clean up .keep file in bitmap-writing test
>      repack: silence warnings when auto-enabled bitmaps cannot be built
>      repack: simplify handling of auto-bitmaps and .keep files
>      t0000: reword comments for "local" test
>
>Johannes Schindelin (47):
>      Drop unused git-rebase--am.sh
>      t3400: stop referring to the scripted rebase
>      .gitignore: there is no longer a built-in `git-rebase--interactive`
>      sequencer: the `am` and `rebase--interactive` scripts are gone
>      rebase: fold git-rebase--common into the -p backend
>      bisect--helper: verify HEAD could be parsed before continuing
>      fill_stat_cache_info(): prepare for an fsmonitor fix
>      mark_fsmonitor_valid(): mark the index as changed if needed
>      bundle verify: error out if called without an object database
>      poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
>      kwset: allow building with GCC 8
>      winansi: simplify loading the GetCurrentConsoleFontEx() function
>      config: avoid calling `labs()` on too-large data type
>      t3404: fix a typo
>      mingw: fix a typo in the msysGit-specific section
>      Mark .bat files as requiring CR/LF endings
>      t0001 (mingw): do not expect a specific order of stdout/stderr
>      obstack: fix compiler warning
>      mingw: replace mingw_startup() hack
>      msvc: fix dependencies of compat/msvc.c
>      t0001: fix on case-insensitive filesystems
>      msvc: avoid debug assertion windows in Debug Mode
>      mingw: enable stack smashing protector
>      mingw: get pw_name in UTF-8 format
>      mingw: use Unicode functions explicitly
>      rebase --am: ignore rebase.rescheduleFailedExec
>      mingw: fix possible buffer overrun when calling `GetUserNameW()`
>      diff: munmap() file contents before running external diff
>      mingw: support spawning programs containing spaces in their names
>      clean: show an error message when the path is too long
>      rebase: fix white-space
>      git: mark cmd_rebase as requiring a worktree
>      Vcproj.pm: auto-generate GUIDs
>      Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool
>      Vcproj.pm: urlencode '<' and '>' when generating VC projects
>      contrib/buildsystems: ignore irrelevant files in Generators/
>      contrib/buildsystems: error out on unknown option
>      contrib/buildsystems: handle libiconv, too
>      contrib/buildsystems: also handle -lexpat
>      contrib/buildsystems: handle options starting with a slash
>      contrib/buildsystems: add a backend for modern Visual Studio versions
>      msvc: add a Makefile target to pre-generate the Visual Studio solution
>      vcxproj: also link-or-copy builtins
>      .gitignore: ignore Visual Studio's temporary/generated files
>      bin-wrappers: append `.exe` to target paths if necessary
>      git: avoid calling aliased builtins via their dashed form
>      config: work around bug with includeif:onbranch and early config
>
>Johannes Sixt (5):
>      userdiff: two simplifications of patterns for rust
>      t7610-mergetool: do not place pipelines headed by `yes` in subshells
>      t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
>      mergetool: dissect strings with shell variable magic instead of `expr`
>      mergetool: use shell variable magic instead of `awk`
>
>John Lin (1):
>      status: remove the empty line after hints
>
>Jonathan Nieder (1):
>      t: decrease nesting in test_oid_to_path
>
>Jonathan Tan (5):
>      t5616: refactor packfile replacement
>      index-pack: prefetch missing REF_DELTA bases
>      t5616: use correct flag to check object is missing
>      t5616: cover case of client having delta base
>      t5551: test usage of chunked encoding explicitly
>
>Josh Steadmon (1):
>      trace2: correct trace2 field name documentation
>
>Junio C Hamano (19):
>      The first batch after 2.22
>      The second batch
>      The third batch
>      The fourth batch
>      The fifth batch
>      transport-helper: avoid var decl in for () loop control
>      rm: resolving by removal is not a warning-worthy event
>      CodingGuidelines: spell out post-C89 rules
>      The sixth batch
>      The seventh batch
>      Flush fixes up to the third batch post 2.22.0
>      Merge fixes made on the 'master' front
>      Git 2.23-rc0
>      test-dir-iterator: do not assume errno values
>      A few more last-minute fixes
>      log: flip the --mailmap default unconditionally
>      log: really flip the --mailmap default
>      Git 2.23-rc1
>      Git 2.23-rc2
>
>Karsten Blees (2):
>      gettext: always use UTF-8 on native Windows
>      mingw: initialize HOME on startup
>
>Marc-André Lureau (1):
>      userdiff: add built-in pattern for rust
>
>Mark Rushakoff (1):
>      doc: typo: s/can not/cannot/ and s/is does/does/
>
>Martin Ågren (3):
>      ref-filter: fix memory leak in `free_array_item()`
>      RelNotes/2.21.1: typofix
>      RelNotes/2.23.0: fix a few typos and other minor issues
>
>Matheus Tavares (8):
>      clone: better handle symlinked files at .git/objects/
>      dir-iterator: use warning_errno when possible
>      dir-iterator: refactor state machine model
>      dir-iterator: add flags parameter to dir_iterator_begin
>      clone: copy hidden paths at local clone
>      clone: extract function from copy_or_link_directory
>      clone: use dir-iterator to avoid explicit dir traversal
>      clone: replace strcmp by fspathcmp
>
>Matthew DeVore (5):
>      list-objects-filter-options: error is localizeable
>      list-objects-filter: correct usage of ALLOC_GROW
>      url: do not read past end of buffer
>      url: do not allow %00 to represent NUL in URLs
>      ref-filter: sort detached HEAD lines firstly
>
>Mazo, Andrey (8):
>      git-p4: detect/prevent infinite loop in gitCommitByP4Change()
>      git-p4: add failing test for "git-p4: match branches case insensitively if configured"
>      git-p4: match branches case insensitively if configured
>      git-p4: don't groom exclude path list on every commit
>      git-p4: add failing test for "don't exclude other files with same prefix"
>      git-p4: don't exclude other files with same prefix
>      git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
>      git-p4: respect excluded paths when detecting branches
>
>Michael Osipov (1):
>      configure: Detect linking style for HP aCC on HP-UX
>
>Michael Platings (2):
>      blame: add a fingerprint heuristic to match ignored lines
>      t8014: remove unnecessary braces
>
>Miguel Ojeda (1):
>      clang-format: use git grep to generate the ForEachMacros list
>
>Mike Hommey (2):
>      dup() the input fd for fast-import used for remote helpers
>      Use xmmap_gently instead of xmmap in use_pack
>
>Mike Mueller (1):
>      p4 unshelve: fix "Not a valid object name HEAD0" on Windows
>
>Morian Sonnet (1):
>      submodule foreach: fix recursion of options
>
>Nguyễn Thái Ngọc Duy (63):
>      git-checkout.txt: spell out --no-option
>      git-checkout.txt: fix one syntax line
>      doc: document --overwrite-ignore
>      git-checkout.txt: fix monospace typeset
>      t: rename t2014-switch.sh to t2014-checkout-switch.sh
>      checkout: advice how to get out of detached HEAD mode
>      checkout: inform the user when removing branch state
>      checkout: keep most #include sorted
>      checkout: factor out some code in parse_branchname_arg()
>      checkout: make "opts" in cmd_checkout() a pointer
>      checkout: move 'confict_style' and 'dwim_..' to checkout_opts
>      checkout: split options[] array in three pieces
>      checkout: split part of it to new command 'switch'
>      switch: better names for -b and -B
>      switch: add --discard-changes
>      switch: remove -l
>      switch: stop accepting pathspec
>      switch: reject "do nothing" case
>      switch: only allow explicit detached HEAD
>      switch: add short option for --detach
>      switch: implicit dwim, use --no-guess to disable it
>      switch: no worktree status unless real branch switch happens
>      switch: reject if some operation is in progress
>      switch: make --orphan switch to an empty tree
>      t: add tests for switch
>      completion: support switch
>      doc: promote "git switch"
>      checkout: split part of it to new command 'restore'
>      restore: take tree-ish from --source option instead
>      restore: make pathspec mandatory
>      restore: disable overlay mode by default
>      checkout: factor out worktree checkout code
>      restore: add --worktree and --staged
>      restore: reject invalid combinations with --staged
>      restore: default to --source=HEAD when only --staged is specified
>      restore: replace --force with --ignore-unmerged
>      restore: support --patch
>      t: add tests for restore
>      completion: support restore
>      user-manual.txt: prefer 'merge --abort' over 'reset --hard'
>      doc: promote "git restore"
>      help: move git-diff and git-reset to different groups
>      Declare both git-switch and git-restore experimental
>      merge: remove drop_save() in favor of remove_merge_branch_state()
>      init: make --template path relative to $CWD
>      worktree add: sanitize worktree names
>      worktree add: be tolerant of corrupt worktrees
>      merge: add --quit
>      completion: do not cache if --git-completion-helper fails
>      fetch: only run 'gc' once when fetching multiple remotes
>      t2027: use test_must_be_empty
>      switch: allow to switch in the middle of bisect
>      completion: disable dwim on "git switch -d"
>      fetch-pack: move capability names out of i18n strings
>      fetch-pack: print all relevant supported capabilities with -v -v
>      fetch-pack: print server version at the top in -v -v
>      sha1-file.c: remove the_repo from read_object_with_reference()
>      tree-walk.c: remove the_repo from fill_tree_descriptor()
>      tree-walk.c: remove the_repo from get_tree_entry()
>      tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
>      match-trees.c: remove the_repo from shift_tree*()
>      Use the right 'struct repository' instead of the_repository
>      t7814: do not generate same commits in different repos
>
>Nickolai Belakovski (3):
>      ref-filter: add worktreepath atom
>      branch: update output to include worktree info
>      branch: add worktree info on verbose output
>
>Paolo Bonzini (2):
>      request-pull: quote regex metacharacters in local ref
>      request-pull: warn if the remote object is not the same as the local one
>
>Philip Oakley (15):
>      git.c: show usage for accessing the git(1) help page
>      Doc: git.txt: remove backticks from link and add git-scm.com/docs
>      doc branch: provide examples for listing remote tracking branches
>      msvc: include sigset_t definition
>      msvc: define O_ACCMODE
>      msvc: add pragmas for common warnings
>      Vcproj.pm: list git.exe first to be startup project
>      contrib/buildsystems: ignore invalidcontinue.obj
>      contrib/buildsystems: fix misleading error message
>      contrib/buildsystems: handle quoted spaces in filenames
>      contrib/buildsystems: ignore gettext stuff
>      contrib/buildsystems: redirect errors of the dry run into a log file
>      contrib/buildsystems: optionally capture the dry-run in a file
>      contrib/buildsystems: handle the curl library option
>      .gitignore: touch up the entries regarding Visual Studio
>
>Phillip Wood (12):
>      rebase: fix a memory leak
>      rebase: warn if state directory cannot be removed
>      sequencer: return errors from sequencer_remove_state()
>      rebase --abort/--quit: cleanup refs/rewritten
>      rebase -r: always reword merge -c
>      add -p: fix checkout -p with pathological context
>      show --continue/skip etc. consistently in synopsis
>      sequencer: always allow tab after command name
>      sequencer: factor out todo command name parsing
>      status: do not report errors in sequencer/todo
>      git-prompt: improve cherry-pick/revert detection
>      t3420: remove progress lines before comparing output
>
>Quentin Nerden (2):
>      docs: git-clone: refer to long form of options
>      docs: git-clone: list short form of options first
>
>Ramsay Jones (1):
>      env--helper: mark a file-local symbol as static
>
>René Scharfe (10):
>      cleanup: fix possible overflow errors in binary search, part 2
>      coccinelle: use COPY_ARRAY for copying arrays
>      use COPY_ARRAY for copying arrays
>      config: use unsigned_mult_overflows to check for overflows
>      config: don't multiply in parse_unit_factor()
>      config: simplify parsing of unit factors
>      commit-graph: release strbufs after use
>      dir-iterator: release strbuf after use
>      test-dir-iterator: use path argument directly
>      sha1-file: release strbuf after use
>
>Robert Morgan (1):
>      gpg(docs): use correct --verify syntax
>
>Rohit Ashiwal (5):
>      sequencer: add advice for revert
>      sequencer: rename reset_for_rollback to reset_merge
>      sequencer: use argv_array in reset_merge
>      cherry-pick/revert: add --skip option
>      cherry-pick/revert: advise using --skip
>
>SZEDER Gábor (12):
>      t3404: modernize here doc style
>      t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
>      pager: add a helper function to clear the last line in the terminal
>      t5551: use 'test_i18ngrep' to check translated output
>      rebase: fix garbled progress display with '-x'
>      progress: use term_clear_line()
>      Document that 'git -C ""' works and doesn't change directory
>      ci: don't update Homebrew
>      ci: disable Homebrew's auto cleanup
>      ci/lib.sh: update a comment about installed P4 and Git-LFS versions
>      travis-ci: build with GCC 4.8 as well
>      Documentation/git-fsck.txt: include fsck.* config variables
>
>Simon Williams (1):
>      git-p4: allow unshelving of branched files
>
>Stephen Boyd (2):
>      format-patch: inform user that patch-id generation is unstable
>      format-patch: make --base patch-id output stable
>
>Steven Roberts (1):
>      gpg-interface: do not scan past the end of buffer
>
>Taylor Blau (1):
>      ref-filter.c: find disjoint pattern prefixes
>
>Thomas Gummerer (16):
>      stash: fix show referencing stash index
>      apply: replace marc.info link with public-inbox
>      apply: only pass required data to skip_tree_prefix
>      apply: only pass required data to git_header_name
>      apply: only pass required data to check_header_line
>      apply: only pass required data to find_name_*
>      apply: only pass required data to gitdiff_* functions
>      apply: make parse_git_diff_header public
>      range-diff: fix function parameter indentation
>      range-diff: split lines manually
>      range-diff: don't remove funcname from inner diff
>      range-diff: suppress line count in outer diff
>      range-diff: add section header instead of diff header
>      range-diff: add filename to inner diff
>      range-diff: add headers to the outer hunk header
>      stash: fix handling removed files with --keep-index
>
>Tigran Mkrtchyan (1):
>      tag: add tag.gpgSign config option to force all tags be GPG-signed
>
>Varun Naik (1):
>      read-cache.c: do not die if mmap fails
>
>Vishal Verma (1):
>      merge: refuse --commit with --squash
>
>William Chargin (1):
>      restore: fix typo in docs
>
>Xin Li (1):
>      clone: respect user supplied origin name when setting up partial clone
>
>brian m. carlson (10):
>      t: add helper to convert object IDs to paths
>      t1410: make hash size independent
>      t1450: make hash size independent
>      t5000: make hash independent
>      t6030: make test work with SHA-256
>      t0027: make hash size independent
>      t0090: make test pass with SHA-256
>      t1007: remove SHA1 prerequisites
>      t1710: make hash independent
>      t2203: avoid hard-coded object ID values
>
>Ævar Arnfjörð Bjarmason (21):
>      send-email: move the read_config() function above getopts
>      send-email: rename the @bcclist variable for consistency
>      send-email: do defaults -> config -> getopt in that order
>      tests: add a special setup where prerequisites fail
>      Makefile: remove the NO_R_TO_GCC_LINKER flag
>      send-email: remove cargo-culted multi-patch pattern in tests
>      send-email: fix broken transferEncoding tests
>      send-email: document --no-[to|cc|bcc]
>      hash-object doc: stop mentioning git-cvsimport
>      send-email: fix regression in sendemail.identity parsing
>      Revert "test-lib: whitelist GIT_TR2_* in the environment"
>      config tests: simplify include cycle test
>      env--helper: new undocumented builtin wrapping git_env_*()
>      config.c: refactor die_bad_number() to not call gettext() early
>      t6040 test: stop using global "script" variable
>      tests: make GIT_TEST_GETTEXT_POISON a boolean
>      tests README: re-flow a previously changed paragraph
>      tests: replace test_tristate with "git env--helper"
>      tests: make GIT_TEST_FAIL_PREREQS a boolean
>      tests: mark two failing tests under FAIL_PREREQS
>      clone: test for our behavior on odd objects/* content
>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[relevance 0%]

* [ANNOUNCE] Git v2.23.0-rc2
@ 2019-08-09 19:29  2% Junio C Hamano
  2019-08-09 21:20  0% ` Bhaskar Chowdhury
  2019-08-09 21:31  0% ` Git for Windows v2.23.0-rc2, was " Johannes Schindelin
  0 siblings, 2 replies; 162+ results
From: Junio C Hamano @ 2019-08-09 19:29 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.23.0-rc2 is now available for testing
at the usual places.  It is comprised of 483 non-merge commits
since v2.22.0, contributed by 67 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.23.0-rc2' 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.22.0 are as follows.
Welcome to the Git development community!

  Ariadne Conill, Barret Rhoden, Ben Avison, Daniel Ferreira,
  Doug Ilijev, Dr. Adam Nielsen, Jakub Wilk, John Lin, Mark
  Rushakoff, Matheus Tavares, Mazo, Andrey, Michael Osipov,
  Michael Platings, Miguel Ojeda, Mike Mueller, Morian Sonnet,
  Quentin Nerden, Robert Morgan, Simon Williams, Steven Roberts,
  Tigran Mkrtchyan, Varun Naik, Vishal Verma, and Xin Li.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Beat Bolli, Boxuan Li, brian
  m. carlson, Carlo Marcelo Arenas Belón, Cesar Eduardo Barros,
  Chris Mayo, Christian Couder, Denton Liu, Derrick Stolee,
  Dimitriy Ryazantcev, Edmundo Carmona Antoranz, Elijah Newren,
  Emily Shaffer, Eric Wong, Felipe Contreras, Jean-Noël Avila,
  Jeff Hostetler, Jeff King, Johannes Schindelin, Johannes Sixt,
  Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio C Hamano,
  Karsten Blees, Marc-André Lureau, Martin Ågren, Matthew DeVore,
  Mike Hommey, Nguyễn Thái Ngọc Duy, Nickolai Belakovski,
  Paolo Bonzini, Philip Oakley, Phillip Wood, Ramsay Jones,
  René Scharfe, Rohit Ashiwal, Stephen Boyd, SZEDER Gábor,
  Taylor Blau, Thomas Gummerer, and William Chargin.

----------------------------------------------------------------

Git 2.23 Release Notes (draft)
==============================

Updates since v2.22
-------------------

Backward compatibility note

 * The "--base" option of "format-patch" computed the patch-ids for
   prerequisite patches in an unstable way, which has been updated to
   compute in a way that is compatible with "git patch-id --stable".

 * The "git log" command by default behaves as if the --mailmap option
   was given.


UI, Workflows & Features

 * The "git fast-export/import" pair has been taught to handle commits
   with log messages in encoding other than UTF-8 better.

 * In recent versions of Git, per-worktree refs are exposed in
   refs/worktrees/<wtname>/ hierarchy, which means that worktree names
   must be a valid refname component.  The code now sanitizes the names
   given to worktrees, to make sure these refs are well-formed.

 * "git merge" learned "--quit" option that cleans up the in-progress
   merge while leaving the working tree and the index still in a mess.

 * "git format-patch" learns a configuration to set the default for
   its --notes=<ref> option.

 * The code to show args with potential typo that cannot be
   interpreted as a commit-ish has been improved.

 * "git clone --recurse-submodules" learned to set up the submodules
   to ignore commit object names recorded in the superproject gitlink
   and instead use the commits that happen to be at the tip of the
   remote-tracking branches from the get-go, by passing the new
   "--remote-submodules" option.

 * The pattern "git diff/grep" use to extract funcname and words
   boundary for Matlab has been extend to cover Octave, which is more
   or less equivalent.

 * "git help git" was hard to discover (well, at least for some
   people).

 * The pattern "git diff/grep" use to extract funcname and words
   boundary for Rust has been added.

 * "git status" can be told a non-standard default value for the
   "--[no-]ahead-behind" option with a new configuration variable
   status.aheadBehind.

 * "git fetch" and "git pull" reports when a fetch results in
   non-fast-forward updates to let the user notice unusual situation.
   The commands learned "--no-show-forced-updates" option to disable
   this safety feature.

 * Two new commands "git switch" and "git restore" are introduced to
   split "checking out a branch to work on advancing its history" and
   "checking out paths out of the index and/or a tree-ish to work on
   advancing the current history" out of the single "git checkout"
   command.

 * "git branch --list" learned to always output the detached HEAD as
   the first item (when the HEAD is detached, of course), regardless
   of the locale.

 * The conditional inclusion mechanism learned to base the choice on
   the branch the HEAD currently is on.

 * "git rev-list --objects" learned the "--no-object-names" option to
   squelch the path to the object that is used as a grouping hint for
   pack-objects.

 * A new tag.gpgSign configuration variable turns "git tag -a" into
   "git tag -s".

 * "git multi-pack-index" learned expire and repack subcommands.

 * "git blame" learned to "ignore" commits in the history, whose
   effects (as well as their presence) get ignored.

 * "git cherry-pick/revert" learned a new "--skip" action.

 * The tips of refs from the alternate object store can be used as
   starting point for reachability computation now.

 * Extra blank lines in "git status" output have been reduced.

 * The commits in a repository can be described by multiple
   commit-graph files now, which allows the commit-graph files to be
   updated incrementally.

 * "git range-diff" output has been tweaked for easier identification
   of which part of what file the patch shown is about.


Performance, Internal Implementation, Development Support etc.

 * Update supporting parts of "git rebase" to remove code that should
   no longer be used.

 * Developer support to emulate unsatisfied prerequisites in tests to
   ensure that the remainder of the tests still succeeds when tests
   with prerequisites are skipped.

 * "git update-server-info" learned not to rewrite the file with the
   same contents.

 * The way of specifying the path to find dynamic libraries at runtime
   has been simplified.  The old default to pass -R/path/to/dir has been
   replaced with the new default to pass -Wl,-rpath,/path/to/dir,
   which is the more recent GCC uses.  Those who need to build with an
   old GCC can still use "CC_LD_DYNPATH=-R"

 * Prepare use of reachability index in topological walker that works
   on a range (A..B).

 * A new tutorial targeting specifically aspiring git-core
   developers has been added.

 * Auto-detect how to tell HP-UX aCC where to use dynamically linked
   libraries from at runtime.

 * "git mergetool" and its tests now spawn fewer subprocesses.

 * Dev support update to help tracing out tests.

 * Support to build with MSVC has been updated.

 * "git fetch" that grabs from a group of remotes learned to run the
   auto-gc only once at the very end.

 * A handful of Windows build patches have been upstreamed.

 * The code to read state files used by the sequencer machinery for
   "git status" has been made more robust against a corrupt or stale
   state files.

 * "git for-each-ref" with multiple patterns have been optimized.

 * The tree-walk API learned to pass an in-core repository
   instance throughout more codepaths.

 * When one step in multi step cherry-pick or revert is reset or
   committed, the command line prompt script failed to notice the
   current status, which has been improved.

 * Many GIT_TEST_* environment variables control various aspects of
   how our tests are run, but a few followed "non-empty is true, empty
   or unset is false" while others followed the usual "there are a few
   ways to spell true, like yes, on, etc., and also ways to spell
   false, like no, off, etc." convention.

 * Adjust the dir-iterator API and apply it to the local clone
   optimization codepath.

 * We have been trying out a few language features outside c89; the
   coding guidelines document did not talk about them and instead had
   a blanket ban against them.

 * A test helper has been introduced to optimize preparation of test
   repositories with many simple commits, and a handful of test
   scripts have been updated to use it.


Fixes since v2.22
-----------------

 * A relative pathname given to "git init --template=<path> <repo>"
   ought to be relative to the directory "git init" gets invoked in,
   but it instead was made relative to the repository, which has been
   corrected.

 * "git worktree add" used to fail when another worktree connected to
   the same repository was corrupt, which has been corrected.

 * The ownership rule for the file descriptor to fast-import remote
   backend was mixed up, leading to an unrelated file descriptor getting
   closed, which has been fixed.

 * A "merge -c" instruction during "git rebase --rebase-merges" should
   give the user a chance to edit the log message, even when there is
   otherwise no need to create a new merge and replace the existing
   one (i.e. fast-forward instead), but did not.  Which has been
   corrected.

 * Code cleanup and futureproof.

 * More parameter validation.

 * "git update-server-info" used to leave stale packfiles in its
   output, which has been corrected.

 * The server side support for "git fetch" used to show incorrect
   value for the HEAD symbolic ref when the namespace feature is in
   use, which has been corrected.

 * "git am -i --resolved" segfaulted after trying to see a commit as
   if it were a tree, which has been corrected.

 * "git bundle verify" needs to see if prerequisite objects exist in
   the receiving repository, but the command did not check if we are
   in a repository upfront, which has been corrected.

 * "git merge --squash" is designed to update the working tree and the
   index without creating the commit, and this cannot be countermanded
   by adding the "--commit" option; the command now refuses to work
   when both options are given.

 * The data collected by fsmonitor was not properly written back to
   the on-disk index file, breaking t7519 tests occasionally, which
   has been corrected.

 * Update to Unicode 12.1 width table.

 * The command line to invoke a "git cat-file" command from inside
   "git p4" was not properly quoted to protect a caret and running a
   broken command on Windows, which has been corrected.

 * "git request-pull" learned to warn when the ref we ask them to pull
   from in the local repository and in the published repository are
   different.

 * When creating a partial clone, the object filtering criteria is
   recorded for the origin of the clone, but this incorrectly used a
   hardcoded name "origin" to name that remote; it has been corrected
   to honor the "--origin <name>" option.

 * "git fetch" into a lazy clone forgot to fetch base objects that are
   necessary to complete delta in a thin packfile, which has been
   corrected.

 * The filter_data used in the list-objects-filter (which manages a
   lazily sparse clone repository) did not use the dynamic array API
   correctly---'nr' is supposed to point at one past the last element
   of the array in use.  This has been corrected.

 * The description about slashes in gitignore patterns (used to
   indicate things like "anchored to this level only" and "only
   matches directories") has been revamped.

 * The URL decoding code has been updated to avoid going past the end
   of the string while parsing %-<hex>-<hex> sequence.

 * The list of for-each like macros used by clang-format has been
   updated.

 * "git branch --list" learned to show branches that are checked out
   in other worktrees connected to the same repository prefixed with
   '+', similar to the way the currently checked out branch is shown
   with '*' in front.
   (merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).

 * Code restructuring during 2.20 period broke fetching tags via
   "import" based transports.

 * The commit-graph file is now part of the "files that the runtime
   may keep open file descriptors on, all of which would need to be
   closed when done with the object store", and the file descriptor to
   an existing commit-graph file now is closed before "gc" finalizes a
   new instance to replace it.

 * "git checkout -p" needs to selectively apply a patch in reverse,
   which did not work well.

 * Code clean-up to avoid signed integer wraparounds during binary search.

 * "git interpret-trailers" always treated '#' as the comment
   character, regardless of core.commentChar setting, which has been
   corrected.

 * "git stash show 23" used to work, but no more after getting
   rewritten in C; this regression has been corrected.

 * "git rebase --abort" used to leave refs/rewritten/ when concluding
   "git rebase -r", which has been corrected.

 * An incorrect list of options was cached after command line
   completion failed (e.g. trying to complete a command that requires
   a repository outside one), which has been corrected.

 * The code to parse scaled numbers out of configuration files has
   been made more robust and also easier to follow.

 * The codepath to compute delta islands used to spew progress output
   without giving the callers any way to squelch it, which has been
   fixed.

 * Protocol capabilities that go over wire should never be translated,
   but it was incorrectly marked for translation, which has been
   corrected.  The output of protocol capabilities for debugging has
   been tweaked a bit.

 * Use "Erase in Line" CSI sequence that is already used in the editor
   support to clear cruft in the progress output.

 * "git submodule foreach" did not protect command line options passed
   to the command to be run in each submodule correctly, when the
   "--recursive" option was in use.

 * The configuration variable rebase.rescheduleFailedExec should be
   effective only while running an interactive rebase and should not
   affect anything when running a non-interactive one, which was not
   the case.  This has been corrected.

 * The "git clone" documentation refers to command line options in its
   description in the short form; they have been replaced with long
   forms to make them more recognisable.

 * Generation of pack bitmaps are now disabled when .keep files exist,
   as these are mutually exclusive features.
   (merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).

 * "git rm" to resolve a conflicted path leaked an internal message
   "needs merge" before actually removing the path, which was
   confusing.  This has been corrected.

 * "git stash --keep-index" did not work correctly on paths that have
   been removed, which has been fixed.
   (merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).

 * Window 7 update ;-)

 * A codepath that reads from GPG for signed object verification read
   past the end of allocated buffer, which has been fixed.

 * "git clean" silently skipped a path when it cannot lstat() it; now
   it gives a warning.

 * "git push --atomic" that goes over the transport-helper (namely,
   the smart http transport) failed to prevent refs to be pushed when
   it can locally tell that one of the ref update will fail without
   having to consult the other end, which has been corrected.

 * The internal diff machinery can be made to read out of bounds while
   looking for --function-context line in a corner case, which has been
   corrected.
   (merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge fbec05c210 cc/test-oidmap later to maint).
   (merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint).
   (merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint).
   (merge d61e6ce1dd sg/fsck-config-in-doc later to maint).

----------------------------------------------------------------

Changes since v2.22.0 are as follows:

Ariadne Conill (3):
      log: add warning for unspecified log.mailmap setting
      documentation: mention --no-use-mailmap and log.mailmap false setting
      tests: defang pager tests by explicitly disabling the log.mailmap warning

Barret Rhoden (8):
      fsck: rename and touch up init_skiplist()
      Move oidset_parse_file() to oidset.c
      blame: use a helper function in blame_chunk()
      blame: add the ability to ignore commits and their changes
      blame: add config options for the output of ignored or unblamable lines
      blame: optionally track line fingerprints during fill_blame_origin()
      blame: use the fingerprint heuristic to match ignored lines
      blame: add a test to cover blame_coalesce()

Beat Bolli (2):
      unicode: update the width tables to Unicode 12.1
      grep: print the pcre2_jit_on value

Ben Avison (1):
      clone: add `--remote-submodules` flag

Boxuan Li (2):
      userdiff: add Octave
      userdiff: fix grammar and style issues

Carlo Marcelo Arenas Belón (6):
      fsmonitor: avoid signed integer overflow / infinite loop
      wrapper: avoid undefined behaviour in macOS
      trace2: correct typo in technical documentation
      xdiff: drop system includes in xutils.c
      xdiff: remove duplicate headers from xhistogram.c
      xdiff: remove duplicate headers from xpatience.c

Cesar Eduardo Barros (1):
      mingw: embed a manifest to trick UAC into Doing The Right Thing

Chris Mayo (1):
      send-email: update documentation of required Perl modules

Christian Couder (7):
      t/helper: add test-oidmap.c
      t: add t0016-oidmap.sh
      oidmap: use sha1hash() instead of static hash() function
      test-hashmap: remove 'hash' command
      doc: improve usage string in MyFirstContribution
      test-oidmap: remove 'add' subcommand
      t0016: add 'remove' subcommand test

Daniel Ferreira (1):
      dir-iterator: add tests for dir-iterator API

Denton Liu (5):
      git-format-patch.txt: document --no-notes option
      format-patch: teach format.notes config option
      config: learn the "onbranch:" includeIf condition
      config/alias.txt: change " and ' to `
      config/alias.txt: document alias accepting non-command first word

Derrick Stolee (51):
      commit-graph: fix the_repository reference
      revision: use generation for A..B --topo-order queries
      revision: keep topo-walk free of unintersting commits
      sha1-file: split OBJECT_INFO_FOR_PREFETCH
      repack: refactor pack deletion for future use
      Docs: rearrange subcommands for multi-pack-index
      multi-pack-index: prepare for 'expire' subcommand
      midx: simplify computation of pack name lengths
      midx: refactor permutation logic and pack sorting
      multi-pack-index: implement 'expire' subcommand
      multi-pack-index: prepare 'repack' subcommand
      midx: implement midx_repack()
      multi-pack-index: test expire while adding packs
      midx: add test that 'expire' respects .keep files
      t5319-multi-pack-index.sh: test batch size zero
      commit-graph: return with errors during write
      commit-graph: collapse parameters into flags
      commit-graph: remove Future Work section
      commit-graph: create write_commit_graph_context
      commit-graph: extract fill_oids_from_packs()
      commit-graph: extract fill_oids_from_commit_hex()
      commit-graph: extract fill_oids_from_all_packs()
      commit-graph: extract count_distinct_commits()
      commit-graph: extract copy_oids_to_commits()
      commit-graph: extract write_commit_graph_file()
      commit-graph: use raw_object_store when closing
      packfile: close commit-graph in close_all_packs
      packfile: rename close_all_packs to close_object_store
      commit-graph: document commit-graph chains
      commit-graph: prepare for commit-graph chains
      commit-graph: rename commit_compare to oid_compare
      commit-graph: load commit-graph chains
      commit-graph: add base graphs chunk
      commit-graph: rearrange chunk count logic
      commit-graph: write commit-graph chains
      commit-graph: add --split option to builtin
      commit-graph: merge commit-graph chains
      commit-graph: allow cross-alternate chains
      commit-graph: expire commit-graph files
      commit-graph: create options for split files
      commit-graph: verify chains with --shallow mode
      commit-graph: clean up chains after flattened write
      commit-graph: test octopus merges with --split
      commit-graph: test --split across alternate without --split
      commit-graph: normalize commit-graph filenames
      commit-graph: test verify across alternates
      fetch: add --[no-]show-forced-updates argument
      fetch: warn about forced updates in branch listing
      pull: add --[no-]show-forced-updates passthrough
      t5319: use 'test-tool path-utils' instead of 'ls -l'
      commit-graph: fix bug around octopus merges

Dimitriy Ryazantcev (1):
      l10n: localizable upload progress messages

Doug Ilijev (1):
      README: fix rendering of text in angle brackets

Dr. Adam Nielsen (1):
      gitignore.txt: make slash-rules more readable

Edmundo Carmona Antoranz (1):
      builtin/merge.c - cleanup of code in for-cycle that tests strategies

Elijah Newren (6):
      t9350: fix encoding test to actually test reencoding
      fast-import: support 'encoding' commit header
      fast-export: avoid stripping encoding header if we cannot reencode
      fast-export: differentiate between explicitly UTF-8 and implicitly UTF-8
      fast-export: do automatic reencoding of commit messages only if requested
      merge-recursive: avoid directory rename detection in recursive case

Emily Shaffer (7):
      documentation: add tutorial for first contribution
      documentation: add anchors to MyFirstContribution
      grep: fail if call could output and name is null
      doc: hint about GIT_DEBUGGER in CodingGuidelines
      doc: add some nit fixes to MyFirstContribution
      rev-list: teach --no-object-names to enable piping
      transport-helper: enforce atomic in push_refs_with_push

Eric Wong (3):
      update-server-info: avoid needless overwrites
      server-info: do not list unlinked packs
      repack: disable bitmaps-by-default if .keep files exist

Felipe Contreras (5):
      t5801 (remote-helpers): cleanup refspec stuff
      t5801 (remote-helpers): add test to fetch tags
      fetch: trivial cleanup
      fetch: make the code more understandable
      fetch: fix regression with transport helpers

Jakub Wilk (1):
      doc: don't use git.kernel.org as example gitweb URL

Jean-Noël Avila (1):
      l10n: reformat some localized strings for v2.23.0

Jeff Hostetler (13):
      cache-tree/blame: avoid reusing the DEBUG constant
      msvc: mark a variable as non-const
      msvc: do not re-declare the timespec struct
      msvc: define ftello()
      msvc: fix detect_msys_tty()
      msvc: update Makefile to allow for spaces in the compiler path
      status: add status.aheadbehind setting
      status: warn when a/b calculation takes too long
      status: ignore status.aheadbehind in porcelain formats
      msvc: support building Git using MS Visual C++
      msvc: add a compile-time flag to allow detailed heap debugging
      msvc: do not pretend to support all signals
      msvc: ignore .dll and incremental compile output

Jeff King (57):
      cmd_{read,write}_tree: rename "unused" variable that is used
      builtin: consistently pass cmd_* prefix to parse_options
      submodule: drop unused prefix parameter from some functions
      clone: drop dest parameter from copy_alternates()
      read-cache: drop unused parameter from threaded load
      wt-status: drop unused status parameter
      mktree: drop unused length parameter
      name-rev: drop unused parameters from is_better_name()
      pack-objects: drop unused rev_info parameters
      receive-pack: drop unused "commands" from prepare_shallow_update()
      remove_all_fetch_refspecs(): drop unused "remote" parameter
      rev-list: drop unused void pointer from finish_commit()
      show-branch: drop unused parameter from show_independent()
      verify-commit: simplify parameters to run_gpg_verify()
      help_unknown_ref(): duplicate collected refnames
      help_unknown_ref(): check for refname ambiguity
      upload-pack: strip namespace from symref data
      am: simplify prompt response handling
      am: read interactive input from stdin
      am: drop tty requirement for --interactive
      am: fix --interactive HEAD tree resolution
      interpret-trailers: load default config
      verify-tag: drop signal.h include
      wt-status.h: drop stdio.h include
      describe: fix accidental oid/hash type-punning
      upload-pack: rename a "sha1" variable to "oid"
      pack-bitmap-write: convert some helpers to use object_id
      pack-objects: convert packlist_find() to use object_id
      pack-objects: convert locate_object_entry_hash() to object_id
      object: convert lookup_unknown_object() to use object_id
      object: convert lookup_object() to use object_id
      object: convert internal hash_obj() to object_id
      object: convert create_object() to use object_id
      khash: drop broken oid_map typedef
      khash: rename kh_oid_t to kh_oid_set
      delta-islands: convert island_marks khash to use oids
      pack-bitmap: convert khash_sha1 maps into kh_oid_map
      khash: drop sha1-specific map types
      khash: rename oid helper functions
      hash.h: move object_id definition from cache.h
      hashmap: convert sha1hash() to oidhash()
      delta-islands: respect progress flag
      blame: drop some unused function parameters
      object-store.h: move for_each_alternate_ref() from transport.h
      check_everything_connected: assume alternate ref tips are valid
      test-lib: introduce test_commit_bulk
      t5310: increase the number of bitmapped commits
      t3311: use test_commit_bulk
      t5702: use test_commit_bulk
      t5703: use test_commit_bulk
      t6200: use test_commit_bulk
      xdiff: clamp function context indices in post-image
      t: sort output of hashmap iteration
      t7700: clean up .keep file in bitmap-writing test
      repack: silence warnings when auto-enabled bitmaps cannot be built
      repack: simplify handling of auto-bitmaps and .keep files
      t0000: reword comments for "local" test

Johannes Schindelin (47):
      Drop unused git-rebase--am.sh
      t3400: stop referring to the scripted rebase
      .gitignore: there is no longer a built-in `git-rebase--interactive`
      sequencer: the `am` and `rebase--interactive` scripts are gone
      rebase: fold git-rebase--common into the -p backend
      bisect--helper: verify HEAD could be parsed before continuing
      fill_stat_cache_info(): prepare for an fsmonitor fix
      mark_fsmonitor_valid(): mark the index as changed if needed
      bundle verify: error out if called without an object database
      poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
      kwset: allow building with GCC 8
      winansi: simplify loading the GetCurrentConsoleFontEx() function
      config: avoid calling `labs()` on too-large data type
      t3404: fix a typo
      mingw: fix a typo in the msysGit-specific section
      Mark .bat files as requiring CR/LF endings
      t0001 (mingw): do not expect a specific order of stdout/stderr
      obstack: fix compiler warning
      mingw: replace mingw_startup() hack
      msvc: fix dependencies of compat/msvc.c
      t0001: fix on case-insensitive filesystems
      msvc: avoid debug assertion windows in Debug Mode
      mingw: enable stack smashing protector
      mingw: get pw_name in UTF-8 format
      mingw: use Unicode functions explicitly
      rebase --am: ignore rebase.rescheduleFailedExec
      mingw: fix possible buffer overrun when calling `GetUserNameW()`
      diff: munmap() file contents before running external diff
      mingw: support spawning programs containing spaces in their names
      clean: show an error message when the path is too long
      rebase: fix white-space
      git: mark cmd_rebase as requiring a worktree
      Vcproj.pm: auto-generate GUIDs
      Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool
      Vcproj.pm: urlencode '<' and '>' when generating VC projects
      contrib/buildsystems: ignore irrelevant files in Generators/
      contrib/buildsystems: error out on unknown option
      contrib/buildsystems: handle libiconv, too
      contrib/buildsystems: also handle -lexpat
      contrib/buildsystems: handle options starting with a slash
      contrib/buildsystems: add a backend for modern Visual Studio versions
      msvc: add a Makefile target to pre-generate the Visual Studio solution
      vcxproj: also link-or-copy builtins
      .gitignore: ignore Visual Studio's temporary/generated files
      bin-wrappers: append `.exe` to target paths if necessary
      git: avoid calling aliased builtins via their dashed form
      config: work around bug with includeif:onbranch and early config

Johannes Sixt (5):
      userdiff: two simplifications of patterns for rust
      t7610-mergetool: do not place pipelines headed by `yes` in subshells
      t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
      mergetool: dissect strings with shell variable magic instead of `expr`
      mergetool: use shell variable magic instead of `awk`

John Lin (1):
      status: remove the empty line after hints

Jonathan Nieder (1):
      t: decrease nesting in test_oid_to_path

Jonathan Tan (5):
      t5616: refactor packfile replacement
      index-pack: prefetch missing REF_DELTA bases
      t5616: use correct flag to check object is missing
      t5616: cover case of client having delta base
      t5551: test usage of chunked encoding explicitly

Josh Steadmon (1):
      trace2: correct trace2 field name documentation

Junio C Hamano (19):
      The first batch after 2.22
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      transport-helper: avoid var decl in for () loop control
      rm: resolving by removal is not a warning-worthy event
      CodingGuidelines: spell out post-C89 rules
      The sixth batch
      The seventh batch
      Flush fixes up to the third batch post 2.22.0
      Merge fixes made on the 'master' front
      Git 2.23-rc0
      test-dir-iterator: do not assume errno values
      A few more last-minute fixes
      log: flip the --mailmap default unconditionally
      log: really flip the --mailmap default
      Git 2.23-rc1
      Git 2.23-rc2

Karsten Blees (2):
      gettext: always use UTF-8 on native Windows
      mingw: initialize HOME on startup

Marc-André Lureau (1):
      userdiff: add built-in pattern for rust

Mark Rushakoff (1):
      doc: typo: s/can not/cannot/ and s/is does/does/

Martin Ågren (3):
      ref-filter: fix memory leak in `free_array_item()`
      RelNotes/2.21.1: typofix
      RelNotes/2.23.0: fix a few typos and other minor issues

Matheus Tavares (8):
      clone: better handle symlinked files at .git/objects/
      dir-iterator: use warning_errno when possible
      dir-iterator: refactor state machine model
      dir-iterator: add flags parameter to dir_iterator_begin
      clone: copy hidden paths at local clone
      clone: extract function from copy_or_link_directory
      clone: use dir-iterator to avoid explicit dir traversal
      clone: replace strcmp by fspathcmp

Matthew DeVore (5):
      list-objects-filter-options: error is localizeable
      list-objects-filter: correct usage of ALLOC_GROW
      url: do not read past end of buffer
      url: do not allow %00 to represent NUL in URLs
      ref-filter: sort detached HEAD lines firstly

Mazo, Andrey (8):
      git-p4: detect/prevent infinite loop in gitCommitByP4Change()
      git-p4: add failing test for "git-p4: match branches case insensitively if configured"
      git-p4: match branches case insensitively if configured
      git-p4: don't groom exclude path list on every commit
      git-p4: add failing test for "don't exclude other files with same prefix"
      git-p4: don't exclude other files with same prefix
      git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
      git-p4: respect excluded paths when detecting branches

Michael Osipov (1):
      configure: Detect linking style for HP aCC on HP-UX

Michael Platings (2):
      blame: add a fingerprint heuristic to match ignored lines
      t8014: remove unnecessary braces

Miguel Ojeda (1):
      clang-format: use git grep to generate the ForEachMacros list

Mike Hommey (2):
      dup() the input fd for fast-import used for remote helpers
      Use xmmap_gently instead of xmmap in use_pack

Mike Mueller (1):
      p4 unshelve: fix "Not a valid object name HEAD0" on Windows

Morian Sonnet (1):
      submodule foreach: fix recursion of options

Nguyễn Thái Ngọc Duy (63):
      git-checkout.txt: spell out --no-option
      git-checkout.txt: fix one syntax line
      doc: document --overwrite-ignore
      git-checkout.txt: fix monospace typeset
      t: rename t2014-switch.sh to t2014-checkout-switch.sh
      checkout: advice how to get out of detached HEAD mode
      checkout: inform the user when removing branch state
      checkout: keep most #include sorted
      checkout: factor out some code in parse_branchname_arg()
      checkout: make "opts" in cmd_checkout() a pointer
      checkout: move 'confict_style' and 'dwim_..' to checkout_opts
      checkout: split options[] array in three pieces
      checkout: split part of it to new command 'switch'
      switch: better names for -b and -B
      switch: add --discard-changes
      switch: remove -l
      switch: stop accepting pathspec
      switch: reject "do nothing" case
      switch: only allow explicit detached HEAD
      switch: add short option for --detach
      switch: implicit dwim, use --no-guess to disable it
      switch: no worktree status unless real branch switch happens
      switch: reject if some operation is in progress
      switch: make --orphan switch to an empty tree
      t: add tests for switch
      completion: support switch
      doc: promote "git switch"
      checkout: split part of it to new command 'restore'
      restore: take tree-ish from --source option instead
      restore: make pathspec mandatory
      restore: disable overlay mode by default
      checkout: factor out worktree checkout code
      restore: add --worktree and --staged
      restore: reject invalid combinations with --staged
      restore: default to --source=HEAD when only --staged is specified
      restore: replace --force with --ignore-unmerged
      restore: support --patch
      t: add tests for restore
      completion: support restore
      user-manual.txt: prefer 'merge --abort' over 'reset --hard'
      doc: promote "git restore"
      help: move git-diff and git-reset to different groups
      Declare both git-switch and git-restore experimental
      merge: remove drop_save() in favor of remove_merge_branch_state()
      init: make --template path relative to $CWD
      worktree add: sanitize worktree names
      worktree add: be tolerant of corrupt worktrees
      merge: add --quit
      completion: do not cache if --git-completion-helper fails
      fetch: only run 'gc' once when fetching multiple remotes
      t2027: use test_must_be_empty
      switch: allow to switch in the middle of bisect
      completion: disable dwim on "git switch -d"
      fetch-pack: move capability names out of i18n strings
      fetch-pack: print all relevant supported capabilities with -v -v
      fetch-pack: print server version at the top in -v -v
      sha1-file.c: remove the_repo from read_object_with_reference()
      tree-walk.c: remove the_repo from fill_tree_descriptor()
      tree-walk.c: remove the_repo from get_tree_entry()
      tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
      match-trees.c: remove the_repo from shift_tree*()
      Use the right 'struct repository' instead of the_repository
      t7814: do not generate same commits in different repos

Nickolai Belakovski (3):
      ref-filter: add worktreepath atom
      branch: update output to include worktree info
      branch: add worktree info on verbose output

Paolo Bonzini (2):
      request-pull: quote regex metacharacters in local ref
      request-pull: warn if the remote object is not the same as the local one

Philip Oakley (15):
      git.c: show usage for accessing the git(1) help page
      Doc: git.txt: remove backticks from link and add git-scm.com/docs
      doc branch: provide examples for listing remote tracking branches
      msvc: include sigset_t definition
      msvc: define O_ACCMODE
      msvc: add pragmas for common warnings
      Vcproj.pm: list git.exe first to be startup project
      contrib/buildsystems: ignore invalidcontinue.obj
      contrib/buildsystems: fix misleading error message
      contrib/buildsystems: handle quoted spaces in filenames
      contrib/buildsystems: ignore gettext stuff
      contrib/buildsystems: redirect errors of the dry run into a log file
      contrib/buildsystems: optionally capture the dry-run in a file
      contrib/buildsystems: handle the curl library option
      .gitignore: touch up the entries regarding Visual Studio

Phillip Wood (12):
      rebase: fix a memory leak
      rebase: warn if state directory cannot be removed
      sequencer: return errors from sequencer_remove_state()
      rebase --abort/--quit: cleanup refs/rewritten
      rebase -r: always reword merge -c
      add -p: fix checkout -p with pathological context
      show --continue/skip etc. consistently in synopsis
      sequencer: always allow tab after command name
      sequencer: factor out todo command name parsing
      status: do not report errors in sequencer/todo
      git-prompt: improve cherry-pick/revert detection
      t3420: remove progress lines before comparing output

Quentin Nerden (2):
      docs: git-clone: refer to long form of options
      docs: git-clone: list short form of options first

Ramsay Jones (1):
      env--helper: mark a file-local symbol as static

René Scharfe (10):
      cleanup: fix possible overflow errors in binary search, part 2
      coccinelle: use COPY_ARRAY for copying arrays
      use COPY_ARRAY for copying arrays
      config: use unsigned_mult_overflows to check for overflows
      config: don't multiply in parse_unit_factor()
      config: simplify parsing of unit factors
      commit-graph: release strbufs after use
      dir-iterator: release strbuf after use
      test-dir-iterator: use path argument directly
      sha1-file: release strbuf after use

Robert Morgan (1):
      gpg(docs): use correct --verify syntax

Rohit Ashiwal (5):
      sequencer: add advice for revert
      sequencer: rename reset_for_rollback to reset_merge
      sequencer: use argv_array in reset_merge
      cherry-pick/revert: add --skip option
      cherry-pick/revert: advise using --skip

SZEDER Gábor (12):
      t3404: modernize here doc style
      t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
      pager: add a helper function to clear the last line in the terminal
      t5551: use 'test_i18ngrep' to check translated output
      rebase: fix garbled progress display with '-x'
      progress: use term_clear_line()
      Document that 'git -C ""' works and doesn't change directory
      ci: don't update Homebrew
      ci: disable Homebrew's auto cleanup
      ci/lib.sh: update a comment about installed P4 and Git-LFS versions
      travis-ci: build with GCC 4.8 as well
      Documentation/git-fsck.txt: include fsck.* config variables

Simon Williams (1):
      git-p4: allow unshelving of branched files

Stephen Boyd (2):
      format-patch: inform user that patch-id generation is unstable
      format-patch: make --base patch-id output stable

Steven Roberts (1):
      gpg-interface: do not scan past the end of buffer

Taylor Blau (1):
      ref-filter.c: find disjoint pattern prefixes

Thomas Gummerer (16):
      stash: fix show referencing stash index
      apply: replace marc.info link with public-inbox
      apply: only pass required data to skip_tree_prefix
      apply: only pass required data to git_header_name
      apply: only pass required data to check_header_line
      apply: only pass required data to find_name_*
      apply: only pass required data to gitdiff_* functions
      apply: make parse_git_diff_header public
      range-diff: fix function parameter indentation
      range-diff: split lines manually
      range-diff: don't remove funcname from inner diff
      range-diff: suppress line count in outer diff
      range-diff: add section header instead of diff header
      range-diff: add filename to inner diff
      range-diff: add headers to the outer hunk header
      stash: fix handling removed files with --keep-index

Tigran Mkrtchyan (1):
      tag: add tag.gpgSign config option to force all tags be GPG-signed

Varun Naik (1):
      read-cache.c: do not die if mmap fails

Vishal Verma (1):
      merge: refuse --commit with --squash

William Chargin (1):
      restore: fix typo in docs

Xin Li (1):
      clone: respect user supplied origin name when setting up partial clone

brian m. carlson (10):
      t: add helper to convert object IDs to paths
      t1410: make hash size independent
      t1450: make hash size independent
      t5000: make hash independent
      t6030: make test work with SHA-256
      t0027: make hash size independent
      t0090: make test pass with SHA-256
      t1007: remove SHA1 prerequisites
      t1710: make hash independent
      t2203: avoid hard-coded object ID values

Ævar Arnfjörð Bjarmason (21):
      send-email: move the read_config() function above getopts
      send-email: rename the @bcclist variable for consistency
      send-email: do defaults -> config -> getopt in that order
      tests: add a special setup where prerequisites fail
      Makefile: remove the NO_R_TO_GCC_LINKER flag
      send-email: remove cargo-culted multi-patch pattern in tests
      send-email: fix broken transferEncoding tests
      send-email: document --no-[to|cc|bcc]
      hash-object doc: stop mentioning git-cvsimport
      send-email: fix regression in sendemail.identity parsing
      Revert "test-lib: whitelist GIT_TR2_* in the environment"
      config tests: simplify include cycle test
      env--helper: new undocumented builtin wrapping git_env_*()
      config.c: refactor die_bad_number() to not call gettext() early
      t6040 test: stop using global "script" variable
      tests: make GIT_TEST_GETTEXT_POISON a boolean
      tests README: re-flow a previously changed paragraph
      tests: replace test_tristate with "git env--helper"
      tests: make GIT_TEST_FAIL_PREREQS a boolean
      tests: mark two failing tests under FAIL_PREREQS
      clone: test for our behavior on odd objects/* content


^ permalink raw reply	[relevance 2%]

* Re: What's cooking in git.git (Jul 2019, #06; Thu, 25)
  2019-08-09  2:07  0%     ` Taylor Blau
@ 2019-08-09  3:04  0%       ` Ariadne Conill
  0 siblings, 0 replies; 162+ results
From: Ariadne Conill @ 2019-08-09  3:04 UTC (permalink / raw)
  To: Taylor Blau; +Cc: Junio C Hamano, Git Mailing List, Phil Hord

Hello,

On Thu, Aug 8, 2019 at 9:07 PM Taylor Blau <me@ttaylorr.com> wrote:
>
> Hi Ariadne,
>
> Thank you for replying. I'm replying myself to the quoted hunks below,
> and I very much appreciate your input. I would like to note that I
> myself did not come up with these concerns alone, they were merely
> suggested to me by a coworker, and I found them concerning.
>
> I am not myself transgender, instead I am simply raising an issue that I
> found myself concerning.

Sure, there are concerns with the use of .mailmap being the primary
source of truth for identities in a git repository.  However, this is
the present design.  I'm not against improving the design, but see no
reason to block changes that *improve quality of life* for people who
are both transgender (or simply have changed their name for whatever
reason) and those who collaborate with said people.  I also believe
that this is an *intended* use of the design, since mailmap allows
rewriting names.  If it is not intended, then why does mailmap support
rewriting names?

This isn't an either/or thing.  This is more along the lines of --
lets improve what we have now -- and deal with making a more robust
mailmap replacement down the line, because that is going to require
more careful consideration.

> On Thu, Aug 08, 2019 at 09:34:15PM -0400, Ariadne Conill wrote:
> > Hello,
> >
> > On August 8, 2019 8:13:15 PM EDT, Taylor Blau <me@ttaylorr.com> wrote:
> > >Hi Junio,
> > >
> > >On Thu, Jul 25, 2019 at 05:19:23PM -0700, Junio C Hamano wrote:
> > >> Here are the topics that have been cooking.  Commits prefixed with
> > >> '-' are only in 'pu' (proposed updates) while commits prefixed with
> > >> '+' are in 'next'.  The ones marked with '.' do not appear in any of
> > >> the integration branches, but I am still holding onto them.
> > >>
> > >> The seventh batch is in; I've merged fix-up topics that has been in
> > >> 'master' for some time (i.e. up to the third batch of this cycle)
> > >> down to 'maint'.
> > >>
> > >> You can find the changes described here in the integration branches
> > >> of the repositories listed at
> > >>
> > >>     http://git-blame.blogspot.com/p/git-public-repositories.html
> > >>
> > >> --------------------------------------------------
> > >> [Graduated to "master"]
> > >>
> > >> *snip*
> > >>
> > >> * ac/log-use-mailmap-by-default-transition (2019-07-15) 3 commits
> > >>   (merged to 'next' on 2019-07-19 at e5669de950)
> > >>  + tests: defang pager tests by explicitly disabling the log.mailmap
> > >warning
> > >>  + documentation: mention --no-use-mailmap and log.mailmap false
> > >setting
> > >>  + log: add warning for unspecified log.mailmap setting
> > >>
> > >>  The "git log" command learns to issue a warning when log.mailmap
> > >>  configuration is not set and --[no-]mailmap option is not used, to
> > >>  prepare users for future versions of Git that uses the mailmap by
> > >>  default.
> > >
> > >Sorry for jumping into this discussion quite late. I was discussing
> > >this
> > >change with a colleague of mine who pointed out an issue with the
> > >eventual new defaults. I'd like to re-raise the issues they shared with
> > >me on the list for discussion, and if agreement is reached, I will send
> > >a series that reverts these changes.
> > >
> > >If a transgender person uses '.mailmap' to rewrite their deadname to
> > >their legal name (as was the original motivation in [1]), there are two
> > >potential issues:
> >
> > What does myself being transgender have to do with anything?  Please
> > explain.
> >
> > My motivation was to allow anyone to document their name change.
> > People other than transgender individuals do change their names.
>
> I think that the '.mailmap' is a good solution for other identity
> changes, like when someone leaves a company, acquires an email address,
> and wishes to take their contributions with them.

Then maybe .mailmap should be scoped to rewriting e-mail addresses only.

> I don't think that being transgender changes one's usage of '.mailmap'.
> I do, however, share the concern with my coworker that these patches are
> being used to assist in deadname rewriting. It was my impression that
> these patches are a response to the thread [1] that I linked in my last
> email, and thus that eventually turning on '.mailmap'-rewriting by
> default was the solution given to Phil Hord.

Yes, they *are* being used to assist in deadname rewriting, because
that is the mechanism that already exists in the code to facilitate
it.

In what case would you *not* want to know the current name of the
person who authored a contribution?  There are legal situations
involving auditing the copyright status of contributions where
*current* identity information for the author is desirable over what
was there historically, because you need to contact the author and
find out his or her wishes involving the code.  Situations like
relicensing, for example.

> > Perhaps the fact that I am transgender means I am more attuned to the
> > risks involved in using .mailmap in this way.
>
> I'll certainly defer to your opinion on how this feature affects
> transgender users over mine, and very much appreciate your perspective
> and insight.
>
> > >  - The '.mailmap' provides a list of transgender individuals, along
> > >    with their deadname, which can be used to harass them.
> >
> > This is potentially a problem but it's not as bad as you depict.  A
> > mailmap rule can match against e-mail only, which is precisely what I
> > have done in my projects.
>
> Ah, I may be severely mistaken -- my memory was that '.mailmap'
> rewriting could be used to rewrite both name and email, not merely
> email. I thought that records could take:
>
>   A U Thor <author@xample.com> -> B C Xyzz <newname@example.com>
>
> instead of canonicalizing by email alone. If this is the case, then I
> completely agree and share the opinion that this is not as bad as I
> originally depicted.

Yes, you can write mailmap entries with just the email like I have
done in pkgconf for example[1].

> > And to be clear, anybody who is out there doxing transgender people
> > are going to be using sources that are more reliable than a mailmap
> > file.
>
> Indeed. I think the '.mailmap' file doesn't contain much information if
> it doesn't remap author names, and certainly individuals can choose not
> to use it.
>
> > >  - If they are not in control of the '.mailmap', and 'log.mailmap' is
> > >    not specifiable (and instead defaults to 'true'), then a malicious
> > >    maintainer or contributor can submit a change that rewrites their
> > >    real name to their deadname, and harasses them further.
> >
> > The log.mailmap setting remains specifiable in these changes.  Sure, a
> > maintainer can abuse mailmap, but they could already do so.  This
> > commit changes absolutely nothing in that regard.
>
> I think that I might be mistaken about the intentions of your patch
> series. Do you hope to eventually remove 'log.mailmap', instead having
> all clients automatically obey the '.mailmap'? If so, I think that this
> does change the behavior, at least down the road. If a maintainer wishes
> to abuse mailmap, today no one has to see it, because they have the
> option to turn off mailmap rewriting. If this setting doesn't exist, it
> gives more power to maintainers and contributors with write-level
> access to force mailmap rewriting to take place.

I have no interest in removing the log.mailmap setting, but I would
like to see the setting behave consistently across all applets.  In
other words, "git shortlog", "git log" and "git blame" should have the
same behaviour given log.mailmap being set a certain way.  They
presently don't have consistent behaviour (shortlog and blame always
use mailmap), and I found that surprising.  This allows people to look
at the raw data if they have explicit interest in it, by setting
log.mailmap to false, and ensuring that people get reasonable
behaviour by default (log.mailmap is default to true).

I also want to explicitly state that I believe wholeheartedly that
people will fork projects with a hostile maintainer who renames people
in the mailmap file to derogatory names, so I think that is a
non-issue.  Somebody who is trolling by using mailmap files to rewrite
contributor names is indicative that a project shouldn't be taken
seriously.

> > The commit does make `git shortlog` and `git log` consistent which is what most people expect.
> >
> > >This issue was not raised in the original discussion, but it's clear
> > >that this has the potential be used for bad, not good.
> >
> > Every tool has the potential to be abused.  I would not have submitted
> > this merge request if I thought that the benefits outweighed the
> > trolling possibilities.
>
> Yes, I agree that tools can be abused, and I do not question your
> judgement in submitting this patch whatsoever. Again, I was merely
> pointing out that there does seem to be a greater potential for this
> tool to be misused, but only if I am understanding it correctly.

Based on your misunderstanding of the mailmap feature, I believe
you're not understanding the patches correctly.

> > >Given that the release is so close, I propose we revert this change
> > >before v2.23.0 is tagged. After that, we ought to discuss ways for
> > >folks
> > >to change how their name is displayed in porcelain commands, and
> > >thoroughly consider whether or not a new plan is exploitable.
> > >
> > >If you think this is a good course of action, I will send a series to
> > >revert the changes that were queued here.
> >
> > I do not think this is a good course of action and I think your
> > justification is extremely flimsy.
> >
> > While I would like to see the ability to commit a special commit that
> > documents a name change, this does not change the fact that such
> > commits will be mined in the same way.
> >
> > While I am glad that you are concerned about this from a trolling and
> > harassment issue, I propose that you should allow individuals to make
> > their own assessments on what they should do regarding documenting
> > their changes using the mailmap file.
>
> I'm happy to defer to the judgement of others, here; again I merely
> wanted to raise a concern and share a proposed course of action in
> response to it. If others do not buy into the justification, or if I
> have misunderstood the feature, then we ought to let the release proceed
> as normal.

As previously stated, I think that your justification is flimsy, but I
think that's simply due to a misunderstanding of how mailmap works,
and to what level of consistency mailmap is respected.  Hopefully this
explanation is useful.

[1]: https://git.sr.ht/~kaniini/pkgconf/tree/master/.mailmap

Ariadne

^ permalink raw reply	[relevance 0%]

* Re: What's cooking in git.git (Jul 2019, #06; Thu, 25)
  2019-08-09  1:34  0%   ` Ariadne Conill
@ 2019-08-09  2:07  0%     ` Taylor Blau
  2019-08-09  3:04  0%       ` Ariadne Conill
  0 siblings, 1 reply; 162+ results
From: Taylor Blau @ 2019-08-09  2:07 UTC (permalink / raw)
  To: Ariadne Conill; +Cc: Taylor Blau, Junio C Hamano, git, Phil Hord

Hi Ariadne,

Thank you for replying. I'm replying myself to the quoted hunks below,
and I very much appreciate your input. I would like to note that I
myself did not come up with these concerns alone, they were merely
suggested to me by a coworker, and I found them concerning.

I am not myself transgender, instead I am simply raising an issue that I
found myself concerning.

On Thu, Aug 08, 2019 at 09:34:15PM -0400, Ariadne Conill wrote:
> Hello,
>
> On August 8, 2019 8:13:15 PM EDT, Taylor Blau <me@ttaylorr.com> wrote:
> >Hi Junio,
> >
> >On Thu, Jul 25, 2019 at 05:19:23PM -0700, Junio C Hamano wrote:
> >> Here are the topics that have been cooking.  Commits prefixed with
> >> '-' are only in 'pu' (proposed updates) while commits prefixed with
> >> '+' are in 'next'.  The ones marked with '.' do not appear in any of
> >> the integration branches, but I am still holding onto them.
> >>
> >> The seventh batch is in; I've merged fix-up topics that has been in
> >> 'master' for some time (i.e. up to the third batch of this cycle)
> >> down to 'maint'.
> >>
> >> You can find the changes described here in the integration branches
> >> of the repositories listed at
> >>
> >>     http://git-blame.blogspot.com/p/git-public-repositories.html
> >>
> >> --------------------------------------------------
> >> [Graduated to "master"]
> >>
> >> *snip*
> >>
> >> * ac/log-use-mailmap-by-default-transition (2019-07-15) 3 commits
> >>   (merged to 'next' on 2019-07-19 at e5669de950)
> >>  + tests: defang pager tests by explicitly disabling the log.mailmap
> >warning
> >>  + documentation: mention --no-use-mailmap and log.mailmap false
> >setting
> >>  + log: add warning for unspecified log.mailmap setting
> >>
> >>  The "git log" command learns to issue a warning when log.mailmap
> >>  configuration is not set and --[no-]mailmap option is not used, to
> >>  prepare users for future versions of Git that uses the mailmap by
> >>  default.
> >
> >Sorry for jumping into this discussion quite late. I was discussing
> >this
> >change with a colleague of mine who pointed out an issue with the
> >eventual new defaults. I'd like to re-raise the issues they shared with
> >me on the list for discussion, and if agreement is reached, I will send
> >a series that reverts these changes.
> >
> >If a transgender person uses '.mailmap' to rewrite their deadname to
> >their legal name (as was the original motivation in [1]), there are two
> >potential issues:
>
> What does myself being transgender have to do with anything?  Please
> explain.
>
> My motivation was to allow anyone to document their name change.
> People other than transgender individuals do change their names.

I think that the '.mailmap' is a good solution for other identity
changes, like when someone leaves a company, acquires an email address,
and wishes to take their contributions with them.

I don't think that being transgender changes one's usage of '.mailmap'.
I do, however, share the concern with my coworker that these patches are
being used to assist in deadname rewriting. It was my impression that
these patches are a response to the thread [1] that I linked in my last
email, and thus that eventually turning on '.mailmap'-rewriting by
default was the solution given to Phil Hord.

> Perhaps the fact that I am transgender means I am more attuned to the
> risks involved in using .mailmap in this way.

I'll certainly defer to your opinion on how this feature affects
transgender users over mine, and very much appreciate your perspective
and insight.

> >  - The '.mailmap' provides a list of transgender individuals, along
> >    with their deadname, which can be used to harass them.
>
> This is potentially a problem but it's not as bad as you depict.  A
> mailmap rule can match against e-mail only, which is precisely what I
> have done in my projects.

Ah, I may be severely mistaken -- my memory was that '.mailmap'
rewriting could be used to rewrite both name and email, not merely
email. I thought that records could take:

  A U Thor <author@xample.com> -> B C Xyzz <newname@example.com>

instead of canonicalizing by email alone. If this is the case, then I
completely agree and share the opinion that this is not as bad as I
originally depicted.

> And to be clear, anybody who is out there doxing transgender people
> are going to be using sources that are more reliable than a mailmap
> file.

Indeed. I think the '.mailmap' file doesn't contain much information if
it doesn't remap author names, and certainly individuals can choose not
to use it.

> >  - If they are not in control of the '.mailmap', and 'log.mailmap' is
> >    not specifiable (and instead defaults to 'true'), then a malicious
> >    maintainer or contributor can submit a change that rewrites their
> >    real name to their deadname, and harasses them further.
>
> The log.mailmap setting remains specifiable in these changes.  Sure, a
> maintainer can abuse mailmap, but they could already do so.  This
> commit changes absolutely nothing in that regard.

I think that I might be mistaken about the intentions of your patch
series. Do you hope to eventually remove 'log.mailmap', instead having
all clients automatically obey the '.mailmap'? If so, I think that this
does change the behavior, at least down the road. If a maintainer wishes
to abuse mailmap, today no one has to see it, because they have the
option to turn off mailmap rewriting. If this setting doesn't exist, it
gives more power to maintainers and contributors with write-level
access to force mailmap rewriting to take place.

> The commit does make `git shortlog` and `git log` consistent which is what most people expect.
>
> >This issue was not raised in the original discussion, but it's clear
> >that this has the potential be used for bad, not good.
>
> Every tool has the potential to be abused.  I would not have submitted
> this merge request if I thought that the benefits outweighed the
> trolling possibilities.

Yes, I agree that tools can be abused, and I do not question your
judgement in submitting this patch whatsoever. Again, I was merely
pointing out that there does seem to be a greater potential for this
tool to be misused, but only if I am understanding it correctly.

> >Given that the release is so close, I propose we revert this change
> >before v2.23.0 is tagged. After that, we ought to discuss ways for
> >folks
> >to change how their name is displayed in porcelain commands, and
> >thoroughly consider whether or not a new plan is exploitable.
> >
> >If you think this is a good course of action, I will send a series to
> >revert the changes that were queued here.
>
> I do not think this is a good course of action and I think your
> justification is extremely flimsy.
>
> While I would like to see the ability to commit a special commit that
> documents a name change, this does not change the fact that such
> commits will be mined in the same way.
>
> While I am glad that you are concerned about this from a trolling and
> harassment issue, I propose that you should allow individuals to make
> their own assessments on what they should do regarding documenting
> their changes using the mailmap file.

I'm happy to defer to the judgement of others, here; again I merely
wanted to raise a concern and share a proposed course of action in
response to it. If others do not buy into the justification, or if I
have misunderstood the feature, then we ought to let the release proceed
as normal.

> >Thanks,
> >Taylor
> >
> >[1]:
> >https://public-inbox.org/git/CABURp0poUjSBTTFUXP8dAmJ=37qvpe64=o+t_+mHOiK9Cv+=kg@mail.gmail.com/
>
> Ariadne

Thanks,
Taylor

^ permalink raw reply	[relevance 0%]

* Re: What's cooking in git.git (Jul 2019, #06; Thu, 25)
  2019-08-09  0:13  0% ` Taylor Blau
@ 2019-08-09  1:34  0%   ` Ariadne Conill
  2019-08-09  2:07  0%     ` Taylor Blau
  0 siblings, 1 reply; 162+ results
From: Ariadne Conill @ 2019-08-09  1:34 UTC (permalink / raw)
  To: Taylor Blau, Junio C Hamano; +Cc: git, Phil Hord

Hello,

On August 8, 2019 8:13:15 PM EDT, Taylor Blau <me@ttaylorr.com> wrote:
>Hi Junio,
>
>On Thu, Jul 25, 2019 at 05:19:23PM -0700, Junio C Hamano wrote:
>> Here are the topics that have been cooking.  Commits prefixed with
>> '-' are only in 'pu' (proposed updates) while commits prefixed with
>> '+' are in 'next'.  The ones marked with '.' do not appear in any of
>> the integration branches, but I am still holding onto them.
>>
>> The seventh batch is in; I've merged fix-up topics that has been in
>> 'master' for some time (i.e. up to the third batch of this cycle)
>> down to 'maint'.
>>
>> You can find the changes described here in the integration branches
>> of the repositories listed at
>>
>>     http://git-blame.blogspot.com/p/git-public-repositories.html
>>
>> --------------------------------------------------
>> [Graduated to "master"]
>>
>> *snip*
>>
>> * ac/log-use-mailmap-by-default-transition (2019-07-15) 3 commits
>>   (merged to 'next' on 2019-07-19 at e5669de950)
>>  + tests: defang pager tests by explicitly disabling the log.mailmap
>warning
>>  + documentation: mention --no-use-mailmap and log.mailmap false
>setting
>>  + log: add warning for unspecified log.mailmap setting
>>
>>  The "git log" command learns to issue a warning when log.mailmap
>>  configuration is not set and --[no-]mailmap option is not used, to
>>  prepare users for future versions of Git that uses the mailmap by
>>  default.
>
>Sorry for jumping into this discussion quite late. I was discussing
>this
>change with a colleague of mine who pointed out an issue with the
>eventual new defaults. I'd like to re-raise the issues they shared with
>me on the list for discussion, and if agreement is reached, I will send
>a series that reverts these changes.
>
>If a transgender person uses '.mailmap' to rewrite their deadname to
>their legal name (as was the original motivation in [1]), there are two
>potential issues:

What does myself being transgender have to do with anything?  Please explain.

My motivation was to allow anyone to document their name change.  People other than transgender individuals do change their names.

Perhaps the fact that I am transgender means I am more attuned to the risks involved in using .mailmap in this way.

>  - The '.mailmap' provides a list of transgender individuals, along
>    with their deadname, which can be used to harass them.

This is potentially a problem but it's not as bad as you depict.  A mailmap rule can match against e-mail only, which is precisely what I have done in my projects.

And to be clear, anybody who is out there doxing transgender people are going to be using sources that are more reliable than a mailmap file.

>  - If they are not in control of the '.mailmap', and 'log.mailmap' is
>    not specifiable (and instead defaults to 'true'), then a malicious
>    maintainer or contributor can submit a change that rewrites their
>    real name to their deadname, and harasses them further.

The log.mailmap setting remains specifiable in these changes.  Sure, a maintainer can abuse mailmap, but they could already do so.  This commit changes absolutely nothing in that regard.

The commit does make `git shortlog` and `git log` consistent which is what most people expect.

>This issue was not raised in the original discussion, but it's clear
>that this has the potential be used for bad, not good.

Every tool has the potential to be abused.  I would not have submitted this merge request if I thought that the benefits outweighed the trolling possibilities.

>Given that the release is so close, I propose we revert this change
>before v2.23.0 is tagged. After that, we ought to discuss ways for
>folks
>to change how their name is displayed in porcelain commands, and
>thoroughly consider whether or not a new plan is exploitable.
>
>If you think this is a good course of action, I will send a series to
>revert the changes that were queued here.

I do not think this is a good course of action and I think your justification is extremely flimsy.

While I would like to see the ability to commit a special commit that documents a name change, this does not change the fact that such commits will be mined in the same way.

While I am glad that you are concerned about this from a trolling and harassment issue, I propose that you should allow individuals to make their own assessments on what they should do regarding documenting their changes using the mailmap file.

>Thanks,
>Taylor
>
>[1]:
>https://public-inbox.org/git/CABURp0poUjSBTTFUXP8dAmJ=37qvpe64=o+t_+mHOiK9Cv+=kg@mail.gmail.com/

Ariadne

^ permalink raw reply	[relevance 0%]

* Re: What's cooking in git.git (Jul 2019, #06; Thu, 25)
  2019-07-26  0:19  1% What's cooking in git.git (Jul 2019, #06; Thu, 25) Junio C Hamano
  2019-07-26 14:33  0% ` Johannes Schindelin
@ 2019-08-09  0:13  0% ` Taylor Blau
  2019-08-09  1:34  0%   ` Ariadne Conill
  1 sibling, 1 reply; 162+ results
From: Taylor Blau @ 2019-08-09  0:13 UTC (permalink / raw)
  To: Junio C Hamano, Ariadne Conill; +Cc: git, Phil Hord

Hi Junio,

On Thu, Jul 25, 2019 at 05:19:23PM -0700, Junio C Hamano wrote:
> Here are the topics that have been cooking.  Commits prefixed with
> '-' are only in 'pu' (proposed updates) while commits prefixed with
> '+' are in 'next'.  The ones marked with '.' do not appear in any of
> the integration branches, but I am still holding onto them.
>
> The seventh batch is in; I've merged fix-up topics that has been in
> 'master' for some time (i.e. up to the third batch of this cycle)
> down to 'maint'.
>
> You can find the changes described here in the integration branches
> of the repositories listed at
>
>     http://git-blame.blogspot.com/p/git-public-repositories.html
>
> --------------------------------------------------
> [Graduated to "master"]
>
> *snip*
>
> * ac/log-use-mailmap-by-default-transition (2019-07-15) 3 commits
>   (merged to 'next' on 2019-07-19 at e5669de950)
>  + tests: defang pager tests by explicitly disabling the log.mailmap warning
>  + documentation: mention --no-use-mailmap and log.mailmap false setting
>  + log: add warning for unspecified log.mailmap setting
>
>  The "git log" command learns to issue a warning when log.mailmap
>  configuration is not set and --[no-]mailmap option is not used, to
>  prepare users for future versions of Git that uses the mailmap by
>  default.

Sorry for jumping into this discussion quite late. I was discussing this
change with a colleague of mine who pointed out an issue with the
eventual new defaults. I'd like to re-raise the issues they shared with
me on the list for discussion, and if agreement is reached, I will send
a series that reverts these changes.

If a transgender person uses '.mailmap' to rewrite their deadname to
their legal name (as was the original motivation in [1]), there are two
potential issues:

  - The '.mailmap' provides a list of transgender individuals, along
    with their deadname, which can be used to harass them.

  - If they are not in control of the '.mailmap', and 'log.mailmap' is
    not specifiable (and instead defaults to 'true'), then a malicious
    maintainer or contributor can submit a change that rewrites their
    real name to their deadname, and harasses them further.

This issue was not raised in the original discussion, but it's clear
that this has the potential be used for bad, not good.

Given that the release is so close, I propose we revert this change
before v2.23.0 is tagged. After that, we ought to discuss ways for folks
to change how their name is displayed in porcelain commands, and
thoroughly consider whether or not a new plan is exploitable.

If you think this is a good course of action, I will send a series to
revert the changes that were queued here.

Thanks,
Taylor

[1]: https://public-inbox.org/git/CABURp0poUjSBTTFUXP8dAmJ=37qvpe64=o+t_+mHOiK9Cv+=kg@mail.gmail.com/

^ permalink raw reply	[relevance 0%]

* [ANNOUNCE] Git v2.23.0-rc1
@ 2019-08-02 22:06  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2019-08-02 22:06 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.23.0-rc1 is now available for testing
at the usual places.  It is comprised of 471 non-merge commits
since v2.22.0, contributed by 63 people, 23 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.23.0-rc1' 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.22.0 are as follows.
Welcome to the Git development community!

  Ariadne Conill, Barret Rhoden, Ben Avison, Daniel Ferreira, Doug
  Ilijev, Dr. Adam Nielsen, Jakub Wilk, John Lin, Matheus Tavares,
  Mazo, Andrey, Michael Osipov, Michael Platings, Miguel Ojeda,
  Mike Mueller, Morian Sonnet, Quentin Nerden, Robert Morgan,
  Simon Williams, Steven Roberts, Tigran Mkrtchyan, Varun Naik,
  Vishal Verma, and Xin Li.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Beat Bolli, Boxuan Li, brian
  m. carlson, Carlo Marcelo Arenas Belón, Cesar Eduardo Barros,
  Chris Mayo, Christian Couder, Denton Liu, Derrick Stolee,
  Dimitriy Ryazantcev, Edmundo Carmona Antoranz, Elijah Newren,
  Emily Shaffer, Eric Wong, Felipe Contreras, Jeff Hostetler,
  Jeff King, Johannes Schindelin, Johannes Sixt, Jonathan Tan,
  Josh Steadmon, Junio C Hamano, Karsten Blees, Marc-André Lureau,
  Martin Ågren, Matthew DeVore, Mike Hommey, Nguyễn Thái Ngọc
  Duy, Nickolai Belakovski, Paolo Bonzini, Philip Oakley, Phillip
  Wood, Ramsay Jones, René Scharfe, Rohit Ashiwal, Stephen Boyd,
  SZEDER Gábor, Taylor Blau, and Thomas Gummerer.

----------------------------------------------------------------

Git 2.23 Release Notes (draft)
==============================

Updates since v2.22
-------------------

Backward compatibility note

 * The "--base" option of "format-patch" computed the patch-ids for
   prerequisite patches in an unstable way, which has been updated to
   compute in a way that is compatible with "git patch-id --stable".

 * The "git log" command by default behaves as if the --mailmap option
   was given.


UI, Workflows & Features

 * The "git fast-export/import" pair has been taught to handle commits
   with log messages in encoding other than UTF-8 better.

 * In recent versions of Git, per-worktree refs are exposed in
   refs/worktrees/<wtname>/ hierarchy, which means that worktree names
   must be a valid refname component.  The code now sanitizes the names
   given to worktrees, to make sure these refs are well-formed.

 * "git merge" learned "--quit" option that cleans up the in-progress
   merge while leaving the working tree and the index still in a mess.

 * "git format-patch" learns a configuration to set the default for
   its --notes=<ref> option.

 * The code to show args with potential typo that cannot be
   interpreted as a commit-ish has been improved.

 * "git clone --recurse-submodules" learned to set up the submodules
   to ignore commit object names recorded in the superproject gitlink
   and instead use the commits that happen to be at the tip of the
   remote-tracking branches from the get-go, by passing the new
   "--remote-submodules" option.

 * The pattern "git diff/grep" use to extract funcname and words
   boundary for Matlab has been extend to cover Octave, which is more
   or less equivalent.

 * "git help git" was hard to discover (well, at least for some
   people).

 * The pattern "git diff/grep" use to extract funcname and words
   boundary for Rust has been added.

 * "git status" can be told a non-standard default value for the
   "--[no-]ahead-behind" option with a new configuration variable
   status.aheadBehind.

 * "git fetch" and "git pull" reports when a fetch results in
   non-fast-forward updates to let the user notice unusual situation.
   The commands learned "--no-show-forced-updates" option to disable
   this safety feature.

 * Two new commands "git switch" and "git restore" are introduced to
   split "checking out a branch to work on advancing its history" and
   "checking out paths out of the index and/or a tree-ish to work on
   advancing the current history" out of the single "git checkout"
   command.

 * "git branch --list" learned to always output the detached HEAD as
   the first item (when the HEAD is detached, of course), regardless
   of the locale.

 * The conditional inclusion mechanism learned to base the choice on
   the branch the HEAD currently is on.

 * "git rev-list --objects" learned the "--no-object-names" option to
   squelch the path to the object that is used as a grouping hint for
   pack-objects.

 * A new tag.gpgSign configuration variable turns "git tag -a" into
   "git tag -s".

 * "git multi-pack-index" learned expire and repack subcommands.

 * "git blame" learned to "ignore" commits in the history, whose
   effects (as well as their presence) get ignored.

 * "git cherry-pick/revert" learned a new "--skip" action.

 * The tips of refs from the alternate object store can be used as
   starting point for reachability computation now.

 * Extra blank lines in "git status" output have been reduced.

 * The commits in a repository can be described by multiple
   commit-graph files now, which allows the commit-graph files to be
   updated incrementally.

 * "git range-diff" output has been tweaked for easier identification
   of which part of what file the patch shown is about.


Performance, Internal Implementation, Development Support etc.

 * Update supporting parts of "git rebase" to remove code that should
   no longer be used.

 * Developer support to emulate unsatisfied prerequisites in tests to
   ensure that the remainder of the tests still succeeds when tests
   with prerequisites are skipped.

 * "git update-server-info" learned not to rewrite the file with the
   same contents.

 * The way of specifying the path to find dynamic libraries at runtime
   has been simplified.  The old default to pass -R/path/to/dir has been
   replaced with the new default to pass -Wl,-rpath,/path/to/dir,
   which is the more recent GCC uses.  Those who need to build with an
   old GCC can still use "CC_LD_DYNPATH=-R"

 * Prepare use of reachability index in topological walker that works
   on a range (A..B).

 * A new tutorial targeting specifically aspiring git-core
   developers has been added.

 * Auto-detect how to tell HP-UX aCC where to use dynamically linked
   libraries from at runtime.

 * "git mergetool" and its tests now spawn fewer subprocesses.

 * Dev support update to help tracing out tests.

 * Support to build with MSVC has been updated.

 * "git fetch" that grabs from a group of remotes learned to run the
   auto-gc only once at the very end.

 * A handful of Windows build patches have been upstreamed.

 * The code to read state files used by the sequencer machinery for
   "git status" has been made more robust against a corrupt or stale
   state files.

 * "git for-each-ref" with multiple patterns have been optimized.

 * The tree-walk API learned to pass an in-core repository
   instance throughout more codepaths.

 * When one step in multi step cherry-pick or revert is reset or
   committed, the command line prompt script failed to notice the
   current status, which has been improved.

 * Many GIT_TEST_* environment variables control various aspects of
   how our tests are run, but a few followed "non-empty is true, empty
   or unset is false" while others followed the usual "there are a few
   ways to spell true, like yes, on, etc., and also ways to spell
   false, like no, off, etc." convention.

 * Adjust the dir-iterator API and apply it to the local clone
   optimization codepath.

 * We have been trying out a few language features outside c89; the
   coding guidelines document did not talk about them and instead had
   a blanket ban against them.

 * A test helper has been introduced to optimize preparation of test
   repositories with many simple commits, and a handful of test
   scripts have been updated to use it.


Fixes since v2.22
-----------------

 * A relative pathname given to "git init --template=<path> <repo>"
   ought to be relative to the directory "git init" gets invoked in,
   but it instead was made relative to the repository, which has been
   corrected.

 * "git worktree add" used to fail when another worktree connected to
   the same repository was corrupt, which has been corrected.

 * The ownership rule for the file descriptor to fast-import remote
   backend was mixed up, leading to an unrelated file descriptor getting
   closed, which has been fixed.

 * A "merge -c" instruction during "git rebase --rebase-merges" should
   give the user a chance to edit the log message, even when there is
   otherwise no need to create a new merge and replace the existing
   one (i.e. fast-forward instead), but did not.  Which has been
   corrected.

 * Code cleanup and futureproof.

 * More parameter validation.

 * "git update-server-info" used to leave stale packfiles in its
   output, which has been corrected.

 * The server side support for "git fetch" used to show incorrect
   value for the HEAD symbolic ref when the namespace feature is in
   use, which has been corrected.

 * "git am -i --resolved" segfaulted after trying to see a commit as
   if it were a tree, which has been corrected.

 * "git bundle verify" needs to see if prerequisite objects exist in
   the receiving repository, but the command did not check if we are
   in a repository upfront, which has been corrected.

 * "git merge --squash" is designed to update the working tree and the
   index without creating the commit, and this cannot be countermanded
   by adding the "--commit" option; the command now refuses to work
   when both options are given.

 * The data collected by fsmonitor was not properly written back to
   the on-disk index file, breaking t7519 tests occasionally, which
   has been corrected.

 * Update to Unicode 12.1 width table.

 * The command line to invoke a "git cat-file" command from inside
   "git p4" was not properly quoted to protect a caret and running a
   broken command on Windows, which has been corrected.

 * "git request-pull" learned to warn when the ref we ask them to pull
   from in the local repository and in the published repository are
   different.

 * When creating a partial clone, the object filtering criteria is
   recorded for the origin of the clone, but this incorrectly used a
   hardcoded name "origin" to name that remote; it has been corrected
   to honor the "--origin <name>" option.

 * "git fetch" into a lazy clone forgot to fetch base objects that are
   necessary to complete delta in a thin packfile, which has been
   corrected.

 * The filter_data used in the list-objects-filter (which manages a
   lazily sparse clone repository) did not use the dynamic array API
   correctly---'nr' is supposed to point at one past the last element
   of the array in use.  This has been corrected.

 * The description about slashes in gitignore patterns (used to
   indicate things like "anchored to this level only" and "only
   matches directories") has been revamped.

 * The URL decoding code has been updated to avoid going past the end
   of the string while parsing %-<hex>-<hex> sequence.

 * The list of for-each like macros used by clang-format has been
   updated.

 * "git branch --list" learned to show branches that are checked out
   in other worktrees connected to the same repository prefixed with
   '+', similar to the way the currently checked out branch is shown
   with '*' in front.
   (merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).

 * Code restructuring during 2.20 period broke fetching tags via
   "import" based transports.

 * The commit-graph file is now part of the "files that the runtime
   may keep open file descriptors on, all of which would need to be
   closed when done with the object store", and the file descriptor to
   an existing commit-graph file now is closed before "gc" finalizes a
   new instance to replace it.

 * "git checkout -p" needs to selectively apply a patch in reverse,
   which did not work well.

 * Code clean-up to avoid signed integer wraparounds during binary search.

 * "git interpret-trailers" always treated '#' as the comment
   character, regardless of core.commentChar setting, which has been
   corrected.

 * "git stash show 23" used to work, but no more after getting
   rewritten in C; this regression has been corrected.

 * "git rebase --abort" used to leave refs/rewritten/ when concluding
   "git rebase -r", which has been corrected.

 * An incorrect list of options was cached after command line
   completion failed (e.g. trying to complete a command that requires
   a repository outside one), which has been corrected.

 * The code to parse scaled numbers out of configuration files has
   been made more robust and also easier to follow.

 * The codepath to compute delta islands used to spew progress output
   without giving the callers any way to squelch it, which has been
   fixed.

 * Protocol capabilities that go over wire should never be translated,
   but it was incorrectly marked for translation, which has been
   corrected.  The output of protocol capabilities for debugging has
   been tweaked a bit.

 * Use "Erase in Line" CSI sequence that is already used in the editor
   support to clear cruft in the progress output.

 * "git submodule foreach" did not protect command line options passed
   to the command to be run in each submodule correctly, when the
   "--recursive" option was in use.

 * The configuration variable rebase.rescheduleFailedExec should be
   effective only while running an interactive rebase and should not
   affect anything when running a non-interactive one, which was not
   the case.  This has been corrected.

 * The "git clone" documentation refers to command line options in its
   description in the short form; they have been replaced with long
   forms to make them more recognisable.

 * Generation of pack bitmaps are now disabled when .keep files exist,
   as these are mutually exclusive features.
   (merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).

 * "git rm" to resolve a conflicted path leaked an internal message
   "needs merge" before actually removing the path, which was
   confusing.  This has been corrected.

 * "git stash --keep-index" did not work correctly on paths that have
   been removed, which has been fixed.
   (merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).

 * Window 7 update ;-)

 * A codepath that reads from GPG for signed object verification read
   past the end of allocated buffer, which has been fixed.

 * "git clean" silently skipped a path when it cannot lstat() it; now
   it gives a warning.

 * "git push --atomic" that goes over the transport-helper (namely,
   the smart http transport) failed to prevent refs to be pushed when
   it can locally tell that one of the ref update will fail without
   having to consult the other end, which has been corrected.

 * The internal diff machinery can be made to read out of bounds while
   looking for --function-context line in a corner case, which has been
   corrected.
   (merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge fbec05c210 cc/test-oidmap later to maint).
   (merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint).
   (merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint).
   (merge d61e6ce1dd sg/fsck-config-in-doc later to maint).

----------------------------------------------------------------

Changes since v2.22.0 are as follows:

Ariadne Conill (3):
      log: add warning for unspecified log.mailmap setting
      documentation: mention --no-use-mailmap and log.mailmap false setting
      tests: defang pager tests by explicitly disabling the log.mailmap warning

Barret Rhoden (8):
      fsck: rename and touch up init_skiplist()
      Move oidset_parse_file() to oidset.c
      blame: use a helper function in blame_chunk()
      blame: add the ability to ignore commits and their changes
      blame: add config options for the output of ignored or unblamable lines
      blame: optionally track line fingerprints during fill_blame_origin()
      blame: use the fingerprint heuristic to match ignored lines
      blame: add a test to cover blame_coalesce()

Beat Bolli (2):
      unicode: update the width tables to Unicode 12.1
      grep: print the pcre2_jit_on value

Ben Avison (1):
      clone: add `--remote-submodules` flag

Boxuan Li (2):
      userdiff: add Octave
      userdiff: fix grammar and style issues

Carlo Marcelo Arenas Belón (6):
      fsmonitor: avoid signed integer overflow / infinite loop
      wrapper: avoid undefined behaviour in macOS
      trace2: correct typo in technical documentation
      xdiff: drop system includes in xutils.c
      xdiff: remove duplicate headers from xhistogram.c
      xdiff: remove duplicate headers from xpatience.c

Cesar Eduardo Barros (1):
      mingw: embed a manifest to trick UAC into Doing The Right Thing

Chris Mayo (1):
      send-email: update documentation of required Perl modules

Christian Couder (7):
      t/helper: add test-oidmap.c
      t: add t0016-oidmap.sh
      oidmap: use sha1hash() instead of static hash() function
      test-hashmap: remove 'hash' command
      doc: improve usage string in MyFirstContribution
      test-oidmap: remove 'add' subcommand
      t0016: add 'remove' subcommand test

Daniel Ferreira (1):
      dir-iterator: add tests for dir-iterator API

Denton Liu (5):
      git-format-patch.txt: document --no-notes option
      format-patch: teach format.notes config option
      config: learn the "onbranch:" includeIf condition
      config/alias.txt: change " and ' to `
      config/alias.txt: document alias accepting non-command first word

Derrick Stolee (50):
      commit-graph: fix the_repository reference
      revision: use generation for A..B --topo-order queries
      revision: keep topo-walk free of unintersting commits
      sha1-file: split OBJECT_INFO_FOR_PREFETCH
      repack: refactor pack deletion for future use
      Docs: rearrange subcommands for multi-pack-index
      multi-pack-index: prepare for 'expire' subcommand
      midx: simplify computation of pack name lengths
      midx: refactor permutation logic and pack sorting
      multi-pack-index: implement 'expire' subcommand
      multi-pack-index: prepare 'repack' subcommand
      midx: implement midx_repack()
      multi-pack-index: test expire while adding packs
      midx: add test that 'expire' respects .keep files
      t5319-multi-pack-index.sh: test batch size zero
      commit-graph: return with errors during write
      commit-graph: collapse parameters into flags
      commit-graph: remove Future Work section
      commit-graph: create write_commit_graph_context
      commit-graph: extract fill_oids_from_packs()
      commit-graph: extract fill_oids_from_commit_hex()
      commit-graph: extract fill_oids_from_all_packs()
      commit-graph: extract count_distinct_commits()
      commit-graph: extract copy_oids_to_commits()
      commit-graph: extract write_commit_graph_file()
      commit-graph: use raw_object_store when closing
      packfile: close commit-graph in close_all_packs
      packfile: rename close_all_packs to close_object_store
      commit-graph: document commit-graph chains
      commit-graph: prepare for commit-graph chains
      commit-graph: rename commit_compare to oid_compare
      commit-graph: load commit-graph chains
      commit-graph: add base graphs chunk
      commit-graph: rearrange chunk count logic
      commit-graph: write commit-graph chains
      commit-graph: add --split option to builtin
      commit-graph: merge commit-graph chains
      commit-graph: allow cross-alternate chains
      commit-graph: expire commit-graph files
      commit-graph: create options for split files
      commit-graph: verify chains with --shallow mode
      commit-graph: clean up chains after flattened write
      commit-graph: test octopus merges with --split
      commit-graph: test --split across alternate without --split
      commit-graph: normalize commit-graph filenames
      commit-graph: test verify across alternates
      fetch: add --[no-]show-forced-updates argument
      fetch: warn about forced updates in branch listing
      pull: add --[no-]show-forced-updates passthrough
      t5319: use 'test-tool path-utils' instead of 'ls -l'

Dimitriy Ryazantcev (1):
      l10n: localizable upload progress messages

Doug Ilijev (1):
      README: fix rendering of text in angle brackets

Dr. Adam Nielsen (1):
      gitignore.txt: make slash-rules more readable

Edmundo Carmona Antoranz (1):
      builtin/merge.c - cleanup of code in for-cycle that tests strategies

Elijah Newren (5):
      t9350: fix encoding test to actually test reencoding
      fast-import: support 'encoding' commit header
      fast-export: avoid stripping encoding header if we cannot reencode
      fast-export: differentiate between explicitly UTF-8 and implicitly UTF-8
      fast-export: do automatic reencoding of commit messages only if requested

Emily Shaffer (7):
      documentation: add tutorial for first contribution
      documentation: add anchors to MyFirstContribution
      grep: fail if call could output and name is null
      doc: hint about GIT_DEBUGGER in CodingGuidelines
      doc: add some nit fixes to MyFirstContribution
      rev-list: teach --no-object-names to enable piping
      transport-helper: enforce atomic in push_refs_with_push

Eric Wong (3):
      update-server-info: avoid needless overwrites
      server-info: do not list unlinked packs
      repack: disable bitmaps-by-default if .keep files exist

Felipe Contreras (5):
      t5801 (remote-helpers): cleanup refspec stuff
      t5801 (remote-helpers): add test to fetch tags
      fetch: trivial cleanup
      fetch: make the code more understandable
      fetch: fix regression with transport helpers

Jakub Wilk (1):
      doc: don't use git.kernel.org as example gitweb URL

Jeff Hostetler (13):
      cache-tree/blame: avoid reusing the DEBUG constant
      msvc: mark a variable as non-const
      msvc: do not re-declare the timespec struct
      msvc: define ftello()
      msvc: fix detect_msys_tty()
      msvc: update Makefile to allow for spaces in the compiler path
      status: add status.aheadbehind setting
      status: warn when a/b calculation takes too long
      status: ignore status.aheadbehind in porcelain formats
      msvc: support building Git using MS Visual C++
      msvc: add a compile-time flag to allow detailed heap debugging
      msvc: do not pretend to support all signals
      msvc: ignore .dll and incremental compile output

Jeff King (56):
      cmd_{read,write}_tree: rename "unused" variable that is used
      builtin: consistently pass cmd_* prefix to parse_options
      submodule: drop unused prefix parameter from some functions
      clone: drop dest parameter from copy_alternates()
      read-cache: drop unused parameter from threaded load
      wt-status: drop unused status parameter
      mktree: drop unused length parameter
      name-rev: drop unused parameters from is_better_name()
      pack-objects: drop unused rev_info parameters
      receive-pack: drop unused "commands" from prepare_shallow_update()
      remove_all_fetch_refspecs(): drop unused "remote" parameter
      rev-list: drop unused void pointer from finish_commit()
      show-branch: drop unused parameter from show_independent()
      verify-commit: simplify parameters to run_gpg_verify()
      help_unknown_ref(): duplicate collected refnames
      help_unknown_ref(): check for refname ambiguity
      upload-pack: strip namespace from symref data
      am: simplify prompt response handling
      am: read interactive input from stdin
      am: drop tty requirement for --interactive
      am: fix --interactive HEAD tree resolution
      interpret-trailers: load default config
      verify-tag: drop signal.h include
      wt-status.h: drop stdio.h include
      describe: fix accidental oid/hash type-punning
      upload-pack: rename a "sha1" variable to "oid"
      pack-bitmap-write: convert some helpers to use object_id
      pack-objects: convert packlist_find() to use object_id
      pack-objects: convert locate_object_entry_hash() to object_id
      object: convert lookup_unknown_object() to use object_id
      object: convert lookup_object() to use object_id
      object: convert internal hash_obj() to object_id
      object: convert create_object() to use object_id
      khash: drop broken oid_map typedef
      khash: rename kh_oid_t to kh_oid_set
      delta-islands: convert island_marks khash to use oids
      pack-bitmap: convert khash_sha1 maps into kh_oid_map
      khash: drop sha1-specific map types
      khash: rename oid helper functions
      hash.h: move object_id definition from cache.h
      hashmap: convert sha1hash() to oidhash()
      delta-islands: respect progress flag
      blame: drop some unused function parameters
      object-store.h: move for_each_alternate_ref() from transport.h
      check_everything_connected: assume alternate ref tips are valid
      test-lib: introduce test_commit_bulk
      t5310: increase the number of bitmapped commits
      t3311: use test_commit_bulk
      t5702: use test_commit_bulk
      t5703: use test_commit_bulk
      t6200: use test_commit_bulk
      xdiff: clamp function context indices in post-image
      t: sort output of hashmap iteration
      t7700: clean up .keep file in bitmap-writing test
      repack: silence warnings when auto-enabled bitmaps cannot be built
      repack: simplify handling of auto-bitmaps and .keep files

Johannes Schindelin (47):
      Drop unused git-rebase--am.sh
      t3400: stop referring to the scripted rebase
      .gitignore: there is no longer a built-in `git-rebase--interactive`
      sequencer: the `am` and `rebase--interactive` scripts are gone
      rebase: fold git-rebase--common into the -p backend
      bisect--helper: verify HEAD could be parsed before continuing
      fill_stat_cache_info(): prepare for an fsmonitor fix
      mark_fsmonitor_valid(): mark the index as changed if needed
      bundle verify: error out if called without an object database
      poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
      kwset: allow building with GCC 8
      winansi: simplify loading the GetCurrentConsoleFontEx() function
      config: avoid calling `labs()` on too-large data type
      t3404: fix a typo
      mingw: fix a typo in the msysGit-specific section
      Mark .bat files as requiring CR/LF endings
      t0001 (mingw): do not expect a specific order of stdout/stderr
      obstack: fix compiler warning
      mingw: replace mingw_startup() hack
      msvc: fix dependencies of compat/msvc.c
      t0001: fix on case-insensitive filesystems
      msvc: avoid debug assertion windows in Debug Mode
      mingw: enable stack smashing protector
      mingw: get pw_name in UTF-8 format
      mingw: use Unicode functions explicitly
      rebase --am: ignore rebase.rescheduleFailedExec
      mingw: fix possible buffer overrun when calling `GetUserNameW()`
      diff: munmap() file contents before running external diff
      mingw: support spawning programs containing spaces in their names
      clean: show an error message when the path is too long
      rebase: fix white-space
      git: mark cmd_rebase as requiring a worktree
      Vcproj.pm: auto-generate GUIDs
      Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool
      Vcproj.pm: urlencode '<' and '>' when generating VC projects
      contrib/buildsystems: ignore irrelevant files in Generators/
      contrib/buildsystems: error out on unknown option
      contrib/buildsystems: handle libiconv, too
      contrib/buildsystems: also handle -lexpat
      contrib/buildsystems: handle options starting with a slash
      contrib/buildsystems: add a backend for modern Visual Studio versions
      msvc: add a Makefile target to pre-generate the Visual Studio solution
      vcxproj: also link-or-copy builtins
      .gitignore: ignore Visual Studio's temporary/generated files
      bin-wrappers: append `.exe` to target paths if necessary
      git: avoid calling aliased builtins via their dashed form
      config: work around bug with includeif:onbranch and early config

Johannes Sixt (5):
      userdiff: two simplifications of patterns for rust
      t7610-mergetool: do not place pipelines headed by `yes` in subshells
      t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
      mergetool: dissect strings with shell variable magic instead of `expr`
      mergetool: use shell variable magic instead of `awk`

John Lin (1):
      status: remove the empty line after hints

Jonathan Tan (5):
      t5616: refactor packfile replacement
      index-pack: prefetch missing REF_DELTA bases
      t5616: use correct flag to check object is missing
      t5616: cover case of client having delta base
      t5551: test usage of chunked encoding explicitly

Josh Steadmon (1):
      trace2: correct trace2 field name documentation

Junio C Hamano (18):
      The first batch after 2.22
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      transport-helper: avoid var decl in for () loop control
      rm: resolving by removal is not a warning-worthy event
      CodingGuidelines: spell out post-C89 rules
      The sixth batch
      The seventh batch
      Flush fixes up to the third batch post 2.22.0
      Merge fixes made on the 'master' front
      Git 2.23-rc0
      test-dir-iterator: do not assume errno values
      A few more last-minute fixes
      log: flip the --mailmap default unconditionally
      log: really flip the --mailmap default
      Git 2.23-rc1

Karsten Blees (2):
      gettext: always use UTF-8 on native Windows
      mingw: initialize HOME on startup

Marc-André Lureau (1):
      userdiff: add built-in pattern for rust

Martin Ågren (3):
      ref-filter: fix memory leak in `free_array_item()`
      RelNotes/2.21.1: typofix
      RelNotes/2.23.0: fix a few typos and other minor issues

Matheus Tavares (8):
      clone: better handle symlinked files at .git/objects/
      dir-iterator: use warning_errno when possible
      dir-iterator: refactor state machine model
      dir-iterator: add flags parameter to dir_iterator_begin
      clone: copy hidden paths at local clone
      clone: extract function from copy_or_link_directory
      clone: use dir-iterator to avoid explicit dir traversal
      clone: replace strcmp by fspathcmp

Matthew DeVore (5):
      list-objects-filter-options: error is localizeable
      list-objects-filter: correct usage of ALLOC_GROW
      url: do not read past end of buffer
      url: do not allow %00 to represent NUL in URLs
      ref-filter: sort detached HEAD lines firstly

Mazo, Andrey (8):
      git-p4: detect/prevent infinite loop in gitCommitByP4Change()
      git-p4: add failing test for "git-p4: match branches case insensitively if configured"
      git-p4: match branches case insensitively if configured
      git-p4: don't groom exclude path list on every commit
      git-p4: add failing test for "don't exclude other files with same prefix"
      git-p4: don't exclude other files with same prefix
      git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
      git-p4: respect excluded paths when detecting branches

Michael Osipov (1):
      configure: Detect linking style for HP aCC on HP-UX

Michael Platings (2):
      blame: add a fingerprint heuristic to match ignored lines
      t8014: remove unnecessary braces

Miguel Ojeda (1):
      clang-format: use git grep to generate the ForEachMacros list

Mike Hommey (2):
      dup() the input fd for fast-import used for remote helpers
      Use xmmap_gently instead of xmmap in use_pack

Mike Mueller (1):
      p4 unshelve: fix "Not a valid object name HEAD0" on Windows

Morian Sonnet (1):
      submodule foreach: fix recursion of options

Nguyễn Thái Ngọc Duy (63):
      git-checkout.txt: spell out --no-option
      git-checkout.txt: fix one syntax line
      doc: document --overwrite-ignore
      git-checkout.txt: fix monospace typeset
      t: rename t2014-switch.sh to t2014-checkout-switch.sh
      checkout: advice how to get out of detached HEAD mode
      checkout: inform the user when removing branch state
      checkout: keep most #include sorted
      checkout: factor out some code in parse_branchname_arg()
      checkout: make "opts" in cmd_checkout() a pointer
      checkout: move 'confict_style' and 'dwim_..' to checkout_opts
      checkout: split options[] array in three pieces
      checkout: split part of it to new command 'switch'
      switch: better names for -b and -B
      switch: add --discard-changes
      switch: remove -l
      switch: stop accepting pathspec
      switch: reject "do nothing" case
      switch: only allow explicit detached HEAD
      switch: add short option for --detach
      switch: implicit dwim, use --no-guess to disable it
      switch: no worktree status unless real branch switch happens
      switch: reject if some operation is in progress
      switch: make --orphan switch to an empty tree
      t: add tests for switch
      completion: support switch
      doc: promote "git switch"
      checkout: split part of it to new command 'restore'
      restore: take tree-ish from --source option instead
      restore: make pathspec mandatory
      restore: disable overlay mode by default
      checkout: factor out worktree checkout code
      restore: add --worktree and --staged
      restore: reject invalid combinations with --staged
      restore: default to --source=HEAD when only --staged is specified
      restore: replace --force with --ignore-unmerged
      restore: support --patch
      t: add tests for restore
      completion: support restore
      user-manual.txt: prefer 'merge --abort' over 'reset --hard'
      doc: promote "git restore"
      help: move git-diff and git-reset to different groups
      Declare both git-switch and git-restore experimental
      merge: remove drop_save() in favor of remove_merge_branch_state()
      init: make --template path relative to $CWD
      worktree add: sanitize worktree names
      worktree add: be tolerant of corrupt worktrees
      merge: add --quit
      completion: do not cache if --git-completion-helper fails
      fetch: only run 'gc' once when fetching multiple remotes
      t2027: use test_must_be_empty
      switch: allow to switch in the middle of bisect
      completion: disable dwim on "git switch -d"
      fetch-pack: move capability names out of i18n strings
      fetch-pack: print all relevant supported capabilities with -v -v
      fetch-pack: print server version at the top in -v -v
      sha1-file.c: remove the_repo from read_object_with_reference()
      tree-walk.c: remove the_repo from fill_tree_descriptor()
      tree-walk.c: remove the_repo from get_tree_entry()
      tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
      match-trees.c: remove the_repo from shift_tree*()
      Use the right 'struct repository' instead of the_repository
      t7814: do not generate same commits in different repos

Nickolai Belakovski (3):
      ref-filter: add worktreepath atom
      branch: update output to include worktree info
      branch: add worktree info on verbose output

Paolo Bonzini (2):
      request-pull: quote regex metacharacters in local ref
      request-pull: warn if the remote object is not the same as the local one

Philip Oakley (15):
      git.c: show usage for accessing the git(1) help page
      Doc: git.txt: remove backticks from link and add git-scm.com/docs
      doc branch: provide examples for listing remote tracking branches
      msvc: include sigset_t definition
      msvc: define O_ACCMODE
      msvc: add pragmas for common warnings
      Vcproj.pm: list git.exe first to be startup project
      contrib/buildsystems: ignore invalidcontinue.obj
      contrib/buildsystems: fix misleading error message
      contrib/buildsystems: handle quoted spaces in filenames
      contrib/buildsystems: ignore gettext stuff
      contrib/buildsystems: redirect errors of the dry run into a log file
      contrib/buildsystems: optionally capture the dry-run in a file
      contrib/buildsystems: handle the curl library option
      .gitignore: touch up the entries regarding Visual Studio

Phillip Wood (12):
      rebase: fix a memory leak
      rebase: warn if state directory cannot be removed
      sequencer: return errors from sequencer_remove_state()
      rebase --abort/--quit: cleanup refs/rewritten
      rebase -r: always reword merge -c
      add -p: fix checkout -p with pathological context
      show --continue/skip etc. consistently in synopsis
      sequencer: always allow tab after command name
      sequencer: factor out todo command name parsing
      status: do not report errors in sequencer/todo
      git-prompt: improve cherry-pick/revert detection
      t3420: remove progress lines before comparing output

Quentin Nerden (2):
      docs: git-clone: refer to long form of options
      docs: git-clone: list short form of options first

Ramsay Jones (1):
      env--helper: mark a file-local symbol as static

René Scharfe (6):
      cleanup: fix possible overflow errors in binary search, part 2
      coccinelle: use COPY_ARRAY for copying arrays
      use COPY_ARRAY for copying arrays
      config: use unsigned_mult_overflows to check for overflows
      config: don't multiply in parse_unit_factor()
      config: simplify parsing of unit factors

Robert Morgan (1):
      gpg(docs): use correct --verify syntax

Rohit Ashiwal (5):
      sequencer: add advice for revert
      sequencer: rename reset_for_rollback to reset_merge
      sequencer: use argv_array in reset_merge
      cherry-pick/revert: add --skip option
      cherry-pick/revert: advise using --skip

SZEDER Gábor (12):
      t3404: modernize here doc style
      t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
      pager: add a helper function to clear the last line in the terminal
      t5551: use 'test_i18ngrep' to check translated output
      rebase: fix garbled progress display with '-x'
      progress: use term_clear_line()
      Document that 'git -C ""' works and doesn't change directory
      ci: don't update Homebrew
      ci: disable Homebrew's auto cleanup
      ci/lib.sh: update a comment about installed P4 and Git-LFS versions
      travis-ci: build with GCC 4.8 as well
      Documentation/git-fsck.txt: include fsck.* config variables

Simon Williams (1):
      git-p4: allow unshelving of branched files

Stephen Boyd (2):
      format-patch: inform user that patch-id generation is unstable
      format-patch: make --base patch-id output stable

Steven Roberts (1):
      gpg-interface: do not scan past the end of buffer

Taylor Blau (1):
      ref-filter.c: find disjoint pattern prefixes

Thomas Gummerer (16):
      stash: fix show referencing stash index
      apply: replace marc.info link with public-inbox
      apply: only pass required data to skip_tree_prefix
      apply: only pass required data to git_header_name
      apply: only pass required data to check_header_line
      apply: only pass required data to find_name_*
      apply: only pass required data to gitdiff_* functions
      apply: make parse_git_diff_header public
      range-diff: fix function parameter indentation
      range-diff: split lines manually
      range-diff: don't remove funcname from inner diff
      range-diff: suppress line count in outer diff
      range-diff: add section header instead of diff header
      range-diff: add filename to inner diff
      range-diff: add headers to the outer hunk header
      stash: fix handling removed files with --keep-index

Tigran Mkrtchyan (1):
      tag: add tag.gpgSign config option to force all tags be GPG-signed

Varun Naik (1):
      read-cache.c: do not die if mmap fails

Vishal Verma (1):
      merge: refuse --commit with --squash

Xin Li (1):
      clone: respect user supplied origin name when setting up partial clone

brian m. carlson (10):
      t: add helper to convert object IDs to paths
      t1410: make hash size independent
      t1450: make hash size independent
      t5000: make hash independent
      t6030: make test work with SHA-256
      t0027: make hash size independent
      t0090: make test pass with SHA-256
      t1007: remove SHA1 prerequisites
      t1710: make hash independent
      t2203: avoid hard-coded object ID values

Ævar Arnfjörð Bjarmason (21):
      send-email: move the read_config() function above getopts
      send-email: rename the @bcclist variable for consistency
      send-email: do defaults -> config -> getopt in that order
      tests: add a special setup where prerequisites fail
      Makefile: remove the NO_R_TO_GCC_LINKER flag
      send-email: remove cargo-culted multi-patch pattern in tests
      send-email: fix broken transferEncoding tests
      send-email: document --no-[to|cc|bcc]
      hash-object doc: stop mentioning git-cvsimport
      send-email: fix regression in sendemail.identity parsing
      Revert "test-lib: whitelist GIT_TR2_* in the environment"
      config tests: simplify include cycle test
      env--helper: new undocumented builtin wrapping git_env_*()
      config.c: refactor die_bad_number() to not call gettext() early
      t6040 test: stop using global "script" variable
      tests: make GIT_TEST_GETTEXT_POISON a boolean
      tests README: re-flow a previously changed paragraph
      tests: replace test_tristate with "git env--helper"
      tests: make GIT_TEST_FAIL_PREREQS a boolean
      tests: mark two failing tests under FAIL_PREREQS
      clone: test for our behavior on odd objects/* content


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.23.0-rc0
@ 2019-07-29 21:49  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2019-07-29 21:49 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

An early preview release Git v2.23.0-rc0 is now available for
testing at the usual places.  It is comprised of 420 non-merge
commits since v2.22.0, contributed by 62 people, 23 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.23.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.22.0 are as follows.
Welcome to the Git development community!

  Ariadne Conill, Barret Rhoden, Ben Avison, Daniel Ferreira, Doug
  Ilijev, Dr. Adam Nielsen, Jakub Wilk, John Lin, Matheus Tavares,
  Mazo, Andrey, Michael Osipov, Michael Platings, Miguel Ojeda,
  Mike Mueller, Morian Sonnet, Quentin Nerden, Robert Morgan,
  Simon Williams, Steven Roberts, Tigran Mkrtchyan, Varun Naik,
  Vishal Verma, and Xin Li.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Beat Bolli, Boxuan Li, Carlo Marcelo
  Arenas Belón, Cesar Eduardo Barros, Chris Mayo, Christian
  Couder, Denton Liu, Derrick Stolee, Dimitriy Ryazantcev,
  Edmundo Carmona Antoranz, Elijah Newren, Emily Shaffer, Eric
  Wong, Felipe Contreras, Jeff Hostetler, Jeff King, Johannes
  Schindelin, Johannes Sixt, Jonathan Tan, Josh Steadmon, Junio
  C Hamano, Karsten Blees, Marc-André Lureau, Martin Ågren,
  Matthew DeVore, Mike Hommey, Nguyễn Thái Ngọc Duy, Nickolai
  Belakovski, Paolo Bonzini, Philip Oakley, Phillip Wood, Ramsay
  Jones, René Scharfe, Rohit Ashiwal, Stephen Boyd, SZEDER Gábor,
  Taylor Blau, and Thomas Gummerer.

----------------------------------------------------------------

Git 2.23 Release Notes (draft)
==============================

Updates since v2.22
-------------------

Backward compatibility note

 * The "--base" option of "format-patch" computed the patch-ids for
   prerequisite patches in an unstable way, which has been updated to
   compute in a way that is compatible with "git patch-id --stable".


UI, Workflows & Features

 * The "git fast-export/import" pair has been taught to handle commits
   with log messages in encoding other than UTF-8 better.

 * In recent versions of Git, per-worktree refs are exposed in
   refs/worktrees/<wtname>/ hierarchy, which means that worktree names
   must be a valid refname component.  The code now sanitizes the names
   given to worktrees, to make sure these refs are well-formed.

 * "git merge" learned "--quit" option that cleans up the in-progress
   merge while leaving the working tree and the index still in a mess.

 * "git format-patch" learns a configuration to set the default for
   its --notes=<ref> option.

 * The code to show args with potential typo that cannot be
   interpreted as a commit-ish has been improved.

 * "git clone --recurse-submodules" learned to set up the submodules
   to ignore commit object names recorded in the superproject gitlink
   and instead use the commits that happen to be at the tip of the
   remote-tracking branches from the get-go, by passing the new
   "--remote-submodules" option.

 * The pattern "git diff/grep" use to extract funcname and words
   boundary for Matlab has been extend to cover Octave, which is more
   or less equivalent.

 * "git help git" was hard to discover (well, at least for some
   people).

 * The pattern "git diff/grep" use to extract funcname and words
   boundary for Rust has been added.

 * "git status" can be told a non-standard default value for the
   "--[no-]ahead-behind" option with a new configuration variable
   status.aheadBehind.

 * "git fetch" and "git pull" reports when a fetch results in
   non-fast-forward updates to let the user notice unusual situation.
   The commands learned "--no-shown-forced-updates" option to disable
   this safety feature.

 * Two new commands "git switch" and "git restore" are introduced to
   split "checking out a branch to work on advancing its history" and
   "checking out paths out of the index and/or a tree-ish to work on
   advancing the current history" out of the single "git checkout"
   command.

 * "git branch --list" learned to always output the detached HEAD as
   the first item (when the HEAD is detached, of course), regardless
   of the locale.

 * The conditional inclusion mechanism learned to base the choice on
   the branch the HEAD currently is on.

 * "git rev-list --objects" learned with "--no-object-names" option to
   squelch the path to the object that is used as a grouping hint for
   pack-objects.

 * A new tag.gpgSign configuration variable turns "git tag -a" into
   "git tag -s".

 * "git multi-pack-index" learned expire and repack subcommands.

 * "git blame" learned to "ignore" commits in the history, whose
   effects (as well as their presence) get ignored.

 * "git cherry-pick/revert" learned a new "--skip" action.

 * The tips of refs from the alternate object store can be used as
   starting point for reachability computation now.

 * Extra blank lines in "git status" output have been reduced.

 * The commits in a repository can be described by multiple
   commit-graph files now, which allows the commit-graph files to be
   updated incrementally.

 * The "git log" command learns to issue a warning when log.mailmap
   configuration is not set and --[no-]mailmap option is not used, to
   prepare users for future versions of Git that uses the mailmap by
   default.

 * "git range-diff" output has been tweaked for easier identification
   of which part of what file the patch shown is about.


Performance, Internal Implementation, Development Support etc.

 * Update supporting parts of "git rebase" to remove code that should
   no longer be used.

 * Developer support to emulate unsatisfied prerequisites in tests to
   ensure that the remainer of the tests still succeeds when tests
   with prerequisites are skipped.

 * "git update-server-info" learned not to rewrite the file with the
   same contents.

 * The way of specifying the path to find dynamic libraries at runtime
   has been simplified.  The old default to pass -R/path/to/dir has been
   replaced with the new default to pass -Wl,-rpath,/path/to/dir,
   which is the more recent GCC uses.  Those who need to build with an
   old GCC can still use "CC_LD_DYNPATH=-R"

 * Prepare use of reachability index in topological walker that works
   on a range (A..B).

 * A new tutorial targetting specifically aspiring git-core
   developers has been added.

 * Auto-detect how to tell HP-UX aCC where to use dynamically linked
   libraries from at runtime.

 * "git mergetool" and its tests now spawn fewer subprocesses.

 * Dev support update to help tracing out tests.

 * Support to build with MSVC has been updated.

 * "git fetch" that grabs from a group of remotes learned to run the
   auto-gc only once at the very end.

 * A handful of Windows build patches have been upstreamed.

 * The code to read state files used by the sequencer machinery for
   "git status" has been made more robust against a corrupt or stale
   state files.

 * "git for-each-ref" with multiple patterns have been optimized.

 * The tree-walk API learned to pass an in-core repository
   instance throughout more codepaths.

 * When one step in multi step cherry-pick or revert is reset or
   committed, the command line prompt script failed to notice the
   current status, which has been improved.

 * Many GIT_TEST_* environment variables control various aspects of
   how our tests are run, but a few followed "non-empty is true, empty
   or unset is false" while others followed the usual "there are a few
   ways to spell true, like yes, on, etc., and also ways to spell
   false, like no, off, etc." convention.

 * Adjust the dir-iterator API and apply it to the local clone
   optimization codepath.

 * We have been trying out a few language features outside c89; the
   coding guidelines document did not talk about them and instead had
   a blanket ban against them.
   (merge cc0c42975a jc/post-c89-rules-doc later to maint).

 * A test helper has been introduced to optimize preparation of test
   repositories with many simple commits, and a handful of test
   scripts have been updated to use it.


Fixes since v2.22
-----------------

 * A relative pathname given to "git init --template=<path> <repo>"
   ought to be relative to the directory "git init" gets invoked in,
   but it instead was made relative to the repository, which has been
   corrected.
   (merge e1df7fe43f nd/init-relative-template-fix later to maint).

 * "git worktree add" used to fail when another worktree connected to
   the same repository was corrupt, which has been corrected.
   (merge 105df73e71 nd/corrupt-worktrees later to maint).

 * The ownership rule for the file descriptor to fast-import remote
   backend was mixed up, leading to unrelated file descriptor getting
   closed, which has been fixed.
   (merge 3203566a71 mh/import-transport-fd-fix later to maint).

 * A "merge -c" instruction during "git rebase --rebase-merges" should
   give the user a chance to edit the log message, even when there is
   otherwise no need to create a new merge and replace the existing
   one (i.e. fast-forward instead), but did not.  Which has been
   corrected.

 * Code cleanup and futureproof.
   (merge 31f5256c82 ds/object-info-for-prefetch-fix later to maint).

 * More parameter validation.
   (merge de99eb0c24 es/grep-require-name-when-needed later to maint).

 * "git update-server-info" used to leave stale packfiles in its
   output, which has been corrected.
   (merge e941c48d49 ew/server-info-remove-crufts later to maint).

 * The server side support for "git fetch" used to show incorrect
   value for the HEAD symbolic ref when the namespace feature is in
   use, which has been corrected.
   (merge 533e088250 jk/HEAD-symref-in-xfer-namespaces later to maint).

 * "git am -i --resolved" segfaulted after trying to see a commit as
   if it were a tree, which has been corrected.
   (merge 7663e438c5 jk/am-i-resolved-fix later to maint).

 * "git bundle verify" needs to see if prerequisite objects exist in
   the receiving repository, but the command did not check if we are
   in a repository upfront, which has been corrected.
   (merge 3bbbe467f2 js/bundle-verify-require-object-store later to maint).

 * "git merge --squash" is designed to update the working tree and the
   index without creating the commit, and this cannot be countermanded
   by adding the "--commit" option; the command now refuses to work
   when both options are given.
   (merge 1d14d0c994 vv/merge-squash-with-explicit-commit later to maint).

 * The data collected by fsmonitor was not properly written back to
   the on-disk index file, breaking t7519 tests occasionally, which
   has been corrected.
   (merge b5a8169752 js/fsmonitor-unflake later to maint).

 * Update to Unicode 12.1 width table.
   (merge 5817f9caa3 bb/unicode-12.1-reiwa later to maint).

 * The command line to invoke a "git cat-file" command from inside
   "git p4" was not properly quoted to protect a caret and running a
   broken command on Windows, which has been corrected.
   (merge c3f2358de3 mm/p4-unshelve-windows-fix later to maint).

 * "git request-pull" learned to warn when the ref we ask them to pull
   from in the local repository and in the published repository are
   different.
   (merge 0454220d66 pb/request-pull-verify-remote-ref later to maint).

 * When creating a partial clone, the object filtering criteria is
   recorded for the origin of the clone, but this incorrectly used a
   hardcoded name "origin" to name that remote; it has been corrected
   to honor the "--origin <name>" option.
   (merge 1c4a9f9114 xl/record-partial-clone-origin later to maint).

 * "git fetch" into a lazy clone forgot to fetch base objects that are
   necessary to complete delta in a thin packfile, which has been
   corrected.
   (merge 810e19322d jt/partial-clone-missing-ref-delta-base later to maint).

 * The filter_data used in the list-objects-filter (which manages a
   lazily sparse clone repository) did not use the dynamic array API
   correctly---'nr' is supposed to point at one past the last element
   of the array in use.  This has been corrected.
   (merge 7140600e2e md/list-objects-filter-memfix later to maint).

 * The description about slashes in gitignore patterns (used to
   indicate things like "anchored to this level only" and "only
   matches directories") has been revamped.
   (merge 1a58bad014 an/ignore-doc-update later to maint).

 * The URL decoding code has been updated to avoid going past the end
   of the string while parsing %-<hex>-<hex> sequence.
   (merge d37dc239a4 md/url-parse-harden later to maint).

 * The list of for-each like macros used by clang-format has been
   updated.
   (merge fc7e03aace mo/clang-format-for-each-update later to maint).

 * "git branch --list" learned to show branches that are checked out
   in other worktrees connected to the same repository prefixed with
   '+', similar to the way the currently checked out branch is shown
   with '*' in front.
   (merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).

 * Code restructuring during 2.20 period broke fetching tags via
   "import" based transports.
   (merge f80d922355 fc/fetch-with-import-fix later to maint).

 * The commit-graph file is now part of the "files that the runtime
   may keep open file descriptors on, all of which would need to be
   closed when done with the object store", and the file descriptor to
   an existing commit-graph file now is closed before "gc" finalizes a
   new instance to replace it.
   (merge 2d511cfc0b ds/close-object-store later to maint).

 * "git checkout -p" needs to selectively apply a patch in reverse,
   which did not work well.
   (merge 2bd69b9024 pw/add-p-recount later to maint).

 * Code clean-up to avoid signed integer wraparounds during binary search.
   (merge 568a05c5ec rs/avoid-overflow-in-midpoint-computation later to maint).

 * "git interpret-trailers" always treated '#' as the comment
   character, regardless of core.commentChar setting, which has been
   corrected.
   (merge 29c83fc23f jk/trailers-use-config later to maint).

 * "git stash show 23" used to work, but no more after getting
   rewritten in C; this regression has been corrected.
   (merge 63b50c8ffe tg/stash-ref-by-index-fix later to maint).

 * "git rebase --abort" used to leave refs/rewritten/ when concluding
   "git rebase -r", which has been corrected.
   (merge d559f502c5 pw/rebase-abort-clean-rewritten later to maint).

 * An incorrect list of options was cached after command line
   completion failed (e.g. trying to complete a command that requires
   a repository outside one), which has been corrected.
   (merge 69702523af nd/completion-no-cache-failure later to maint).

 * The code to parse scaled numbers out of configuration files has
   been made more robust and also easier to follow.
   (merge 39c575c969 rs/config-unit-parsing later to maint).

 * The codepath to compute delta islands used to spew progress output
   without giving the callers any way to squelch it, which has been
   fixed.
   (merge bdbdf42f8a jk/delta-islands-progress-fix later to maint).

 * Protocol capabilities that go over wire should never be translated,
   but it was incorrectly marked for translation, which has been
   corrected.  The output of protocol capabilities for debugging has
   been tweaked a bit.

 * Use "Erase in Line" CSI sequence that is already used in the editor
   support to clear cruft in the progress output.
   (merge 5b12e3123b sg/rebase-progress later to maint).

 * "git submodule foreach" did not protect command line options passed
   to the command to be run in each submodule correctly, when the
   "--recursive" option was in use.
   (merge 30db18b148 ms/submodule-foreach-fix later to maint).

 * The configuration variable rebase.rescheduleFailedExec should be
   effective only while running an interactive rebase and should not
   affect anything when running an non-interactive one, which was not
   the case.  This has been corrected.
   (merge 906b63942a js/rebase-reschedule-applies-only-to-interactive later to maint).

 * The "git clone" documentation refers to command line options in its
   description in the short form; they have been replaced with long
   forms to make them more recognisable.
   (merge bfc8c84ed5 qn/clone-doc-use-long-form later to maint).

 * Generation of pack bitmaps are now disabled when .keep files exist,
   as these are mutually exclusive features.
   (merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).

 * "git rm" to resolve a conflicted path leaked an internal message
   "needs merge" before actually removing the path, which was
   confusing.  This has been corrected.
   (merge b2b1f615ce jc/denoise-rm-to-resolve later to maint).

 * "git stash --keep-index" did not work correctly on paths that have
   been removed, which has been fixed.
   (merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).

 * Window 7 update ;-)
   (merge eb7c786314 js/mingw-spawn-with-spaces-in-path later to maint).

 * A codepath that reads from GPG for signed object verification read
   past the end of allocated buffer, which has been fixed.
   (merge 64c45dc72e sr/gpg-interface-stop-at-the-end later to maint).

 * "git clean" silently skipped a path when it cannot lstat() it; now
   it gives a warning.
   (merge b09364c47a js/clean-report-too-long-a-path later to maint).

 * "git push --atomic" that goes over the transport-helper (namely,
   the smart http transport) failed to prevent refs to be pushed when
   it can locally tell that one of the ref update will fail without
   having to consult the other end, which has been corrected.
   (merge 2581ea3d31 es/local-atomic-push-failure-with-http later to maint).

 * The internal diff machinery can be made to read out of bounds while
   looking for --funcion-context line in a corner case, which has been
   corrected.
   (merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge f547101b26 es/git-debugger-doc later to maint).
   (merge 7877ac3d7b js/bisect-helper-check-get-oid-return-value later to maint).
   (merge 0108f47eb3 sw/git-p4-unshelve-branched-files later to maint).
   (merge 9df8f734fd cm/send-email-document-req-modules later to maint).
   (merge afc3bf6eb1 ab/hash-object-doc later to maint).
   (merge 1fde99cfc7 po/doc-branch later to maint).
   (merge 459842e1c2 dl/config-alias-doc later to maint).
   (merge 5d137fc2c7 cb/fsmonitor-intfix later to maint).
   (merge 921d49be86 rs/copy-array later to maint).
   (merge cc8d872e69 js/t3404-typofix later to maint).
   (merge 729a9b558b cb/mkstemps-uint-type-fix later to maint).
   (merge 9dae4fe79f js/gcc-8-and-9 later to maint).
   (merge ed33bd8f30 js/t0001-case-insensitive later to maint).
   (merge dfa880e336 jw/gitweb-sample-update later to maint).
   (merge e532a90a9f sg/t5551-fetch-smart-error-is-translated later to maint).
   (merge 8d45ad8c29 jt/t5551-test-chunked later to maint).
   (merge 1a64e07d23 sg/git-C-empty-doc later to maint).
   (merge 37a2e35395 sg/ci-brew-gcc-workaround later to maint).
   (merge 24df0d49c4 js/trace2-signo-typofix later to maint).
   (merge fbec05c210 cc/test-oidmap later to maint).
   (merge 7926cee904 di/readme-markup-fix later to maint).
   (merge 02638d1e11 vn/xmmap-gently later to maint).
   (merge f7bf24d4dd rm/gpg-program-doc-fix later to maint).
   (merge 3aef54e8b8 js/unmap-before-ext-diff later to maint).

----------------------------------------------------------------

Changes since v2.22.0 are as follows:

Ariadne Conill (3):
      log: add warning for unspecified log.mailmap setting
      documentation: mention --no-use-mailmap and log.mailmap false setting
      tests: defang pager tests by explicitly disabling the log.mailmap warning

Barret Rhoden (8):
      fsck: rename and touch up init_skiplist()
      Move oidset_parse_file() to oidset.c
      blame: use a helper function in blame_chunk()
      blame: add the ability to ignore commits and their changes
      blame: add config options for the output of ignored or unblamable lines
      blame: optionally track line fingerprints during fill_blame_origin()
      blame: use the fingerprint heuristic to match ignored lines
      blame: add a test to cover blame_coalesce()

Beat Bolli (2):
      unicode: update the width tables to Unicode 12.1
      grep: print the pcre2_jit_on value

Ben Avison (1):
      clone: add `--remote-submodules` flag

Boxuan Li (2):
      userdiff: add Octave
      userdiff: fix grammar and style issues

Carlo Marcelo Arenas Belón (3):
      fsmonitor: avoid signed integer overflow / infinite loop
      wrapper: avoid undefined behaviour in macOS
      trace2: correct typo in technical documentation

Cesar Eduardo Barros (1):
      mingw: embed a manifest to trick UAC into Doing The Right Thing

Chris Mayo (1):
      send-email: update documentation of required Perl modules

Christian Couder (7):
      t/helper: add test-oidmap.c
      t: add t0016-oidmap.sh
      oidmap: use sha1hash() instead of static hash() function
      test-hashmap: remove 'hash' command
      doc: improve usage string in MyFirstContribution
      test-oidmap: remove 'add' subcommand
      t0016: add 'remove' subcommand test

Daniel Ferreira (1):
      dir-iterator: add tests for dir-iterator API

Denton Liu (5):
      git-format-patch.txt: document --no-notes option
      format-patch: teach format.notes config option
      config: learn the "onbranch:" includeIf condition
      config/alias.txt: change " and ' to `
      config/alias.txt: document alias accepting non-command first word

Derrick Stolee (50):
      commit-graph: fix the_repository reference
      revision: use generation for A..B --topo-order queries
      revision: keep topo-walk free of unintersting commits
      sha1-file: split OBJECT_INFO_FOR_PREFETCH
      repack: refactor pack deletion for future use
      Docs: rearrange subcommands for multi-pack-index
      multi-pack-index: prepare for 'expire' subcommand
      midx: simplify computation of pack name lengths
      midx: refactor permutation logic and pack sorting
      multi-pack-index: implement 'expire' subcommand
      multi-pack-index: prepare 'repack' subcommand
      midx: implement midx_repack()
      multi-pack-index: test expire while adding packs
      midx: add test that 'expire' respects .keep files
      t5319-multi-pack-index.sh: test batch size zero
      commit-graph: return with errors during write
      commit-graph: collapse parameters into flags
      commit-graph: remove Future Work section
      commit-graph: create write_commit_graph_context
      commit-graph: extract fill_oids_from_packs()
      commit-graph: extract fill_oids_from_commit_hex()
      commit-graph: extract fill_oids_from_all_packs()
      commit-graph: extract count_distinct_commits()
      commit-graph: extract copy_oids_to_commits()
      commit-graph: extract write_commit_graph_file()
      commit-graph: use raw_object_store when closing
      packfile: close commit-graph in close_all_packs
      packfile: rename close_all_packs to close_object_store
      commit-graph: document commit-graph chains
      commit-graph: prepare for commit-graph chains
      commit-graph: rename commit_compare to oid_compare
      commit-graph: load commit-graph chains
      commit-graph: add base graphs chunk
      commit-graph: rearrange chunk count logic
      commit-graph: write commit-graph chains
      commit-graph: add --split option to builtin
      commit-graph: merge commit-graph chains
      commit-graph: allow cross-alternate chains
      commit-graph: expire commit-graph files
      commit-graph: create options for split files
      commit-graph: verify chains with --shallow mode
      commit-graph: clean up chains after flattened write
      commit-graph: test octopus merges with --split
      commit-graph: test --split across alternate without --split
      commit-graph: normalize commit-graph filenames
      commit-graph: test verify across alternates
      fetch: add --[no-]show-forced-updates argument
      fetch: warn about forced updates in branch listing
      pull: add --[no-]show-forced-updates passthrough
      t5319: use 'test-tool path-utils' instead of 'ls -l'

Dimitriy Ryazantcev (1):
      l10n: localizable upload progress messages

Doug Ilijev (1):
      README: fix rendering of text in angle brackets

Dr. Adam Nielsen (1):
      gitignore.txt: make slash-rules more readable

Edmundo Carmona Antoranz (1):
      builtin/merge.c - cleanup of code in for-cycle that tests strategies

Elijah Newren (5):
      t9350: fix encoding test to actually test reencoding
      fast-import: support 'encoding' commit header
      fast-export: avoid stripping encoding header if we cannot reencode
      fast-export: differentiate between explicitly UTF-8 and implicitly UTF-8
      fast-export: do automatic reencoding of commit messages only if requested

Emily Shaffer (7):
      documentation: add tutorial for first contribution
      documentation: add anchors to MyFirstContribution
      grep: fail if call could output and name is null
      doc: hint about GIT_DEBUGGER in CodingGuidelines
      doc: add some nit fixes to MyFirstContribution
      rev-list: teach --no-object-names to enable piping
      transport-helper: enforce atomic in push_refs_with_push

Eric Wong (3):
      update-server-info: avoid needless overwrites
      server-info: do not list unlinked packs
      repack: disable bitmaps-by-default if .keep files exist

Felipe Contreras (5):
      t5801 (remote-helpers): cleanup refspec stuff
      t5801 (remote-helpers): add test to fetch tags
      fetch: trivial cleanup
      fetch: make the code more understandable
      fetch: fix regression with transport helpers

Jakub Wilk (1):
      doc: don't use git.kernel.org as example gitweb URL

Jeff Hostetler (13):
      cache-tree/blame: avoid reusing the DEBUG constant
      msvc: mark a variable as non-const
      msvc: do not re-declare the timespec struct
      msvc: define ftello()
      msvc: fix detect_msys_tty()
      msvc: update Makefile to allow for spaces in the compiler path
      status: add status.aheadbehind setting
      status: warn when a/b calculation takes too long
      status: ignore status.aheadbehind in porcelain formats
      msvc: support building Git using MS Visual C++
      msvc: add a compile-time flag to allow detailed heap debugging
      msvc: do not pretend to support all signals
      msvc: ignore .dll and incremental compile output

Jeff King (50):
      cmd_{read,write}_tree: rename "unused" variable that is used
      builtin: consistently pass cmd_* prefix to parse_options
      submodule: drop unused prefix parameter from some functions
      clone: drop dest parameter from copy_alternates()
      read-cache: drop unused parameter from threaded load
      wt-status: drop unused status parameter
      mktree: drop unused length parameter
      name-rev: drop unused parameters from is_better_name()
      pack-objects: drop unused rev_info parameters
      receive-pack: drop unused "commands" from prepare_shallow_update()
      remove_all_fetch_refspecs(): drop unused "remote" parameter
      rev-list: drop unused void pointer from finish_commit()
      show-branch: drop unused parameter from show_independent()
      verify-commit: simplify parameters to run_gpg_verify()
      help_unknown_ref(): duplicate collected refnames
      help_unknown_ref(): check for refname ambiguity
      upload-pack: strip namespace from symref data
      am: simplify prompt response handling
      am: read interactive input from stdin
      am: drop tty requirement for --interactive
      am: fix --interactive HEAD tree resolution
      interpret-trailers: load default config
      describe: fix accidental oid/hash type-punning
      upload-pack: rename a "sha1" variable to "oid"
      pack-bitmap-write: convert some helpers to use object_id
      pack-objects: convert packlist_find() to use object_id
      pack-objects: convert locate_object_entry_hash() to object_id
      object: convert lookup_unknown_object() to use object_id
      object: convert lookup_object() to use object_id
      object: convert internal hash_obj() to object_id
      object: convert create_object() to use object_id
      khash: drop broken oid_map typedef
      khash: rename kh_oid_t to kh_oid_set
      delta-islands: convert island_marks khash to use oids
      pack-bitmap: convert khash_sha1 maps into kh_oid_map
      khash: drop sha1-specific map types
      khash: rename oid helper functions
      hash.h: move object_id definition from cache.h
      hashmap: convert sha1hash() to oidhash()
      delta-islands: respect progress flag
      blame: drop some unused function parameters
      object-store.h: move for_each_alternate_ref() from transport.h
      check_everything_connected: assume alternate ref tips are valid
      test-lib: introduce test_commit_bulk
      t5310: increase the number of bitmapped commits
      t3311: use test_commit_bulk
      t5702: use test_commit_bulk
      t5703: use test_commit_bulk
      t6200: use test_commit_bulk
      xdiff: clamp function context indices in post-image

Johannes Schindelin (32):
      Drop unused git-rebase--am.sh
      t3400: stop referring to the scripted rebase
      .gitignore: there is no longer a built-in `git-rebase--interactive`
      sequencer: the `am` and `rebase--interactive` scripts are gone
      rebase: fold git-rebase--common into the -p backend
      bisect--helper: verify HEAD could be parsed before continuing
      fill_stat_cache_info(): prepare for an fsmonitor fix
      mark_fsmonitor_valid(): mark the index as changed if needed
      bundle verify: error out if called without an object database
      poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
      kwset: allow building with GCC 8
      winansi: simplify loading the GetCurrentConsoleFontEx() function
      config: avoid calling `labs()` on too-large data type
      t3404: fix a typo
      mingw: fix a typo in the msysGit-specific section
      Mark .bat files as requiring CR/LF endings
      t0001 (mingw): do not expect a specific order of stdout/stderr
      obstack: fix compiler warning
      mingw: replace mingw_startup() hack
      msvc: fix dependencies of compat/msvc.c
      t0001: fix on case-insensitive filesystems
      msvc: avoid debug assertion windows in Debug Mode
      mingw: enable stack smashing protector
      mingw: get pw_name in UTF-8 format
      mingw: use Unicode functions explicitly
      rebase --am: ignore rebase.rescheduleFailedExec
      mingw: fix possible buffer overrun when calling `GetUserNameW()`
      diff: munmap() file contents before running external diff
      mingw: support spawning programs containing spaces in their names
      clean: show an error message when the path is too long
      rebase: fix white-space
      git: mark cmd_rebase as requiring a worktree

Johannes Sixt (5):
      userdiff: two simplifications of patterns for rust
      t7610-mergetool: do not place pipelines headed by `yes` in subshells
      t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
      mergetool: dissect strings with shell variable magic instead of `expr`
      mergetool: use shell variable magic instead of `awk`

John Lin (1):
      status: remove the empty line after hints

Jonathan Tan (5):
      t5616: refactor packfile replacement
      index-pack: prefetch missing REF_DELTA bases
      t5616: use correct flag to check object is missing
      t5616: cover case of client having delta base
      t5551: test usage of chunked encoding explicitly

Josh Steadmon (1):
      trace2: correct trace2 field name documentation

Junio C Hamano (13):
      The first batch after 2.22
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      transport-helper: avoid var decl in for () loop control
      rm: resolving by removal is not a warning-worthy event
      CodingGuidelines: spell out post-C89 rules
      The sixth batch
      The seventh batch
      Flush fixes up to the third batch post 2.22.0
      Merge fixes made on the 'master' front
      Git 2.23-rc0

Karsten Blees (2):
      gettext: always use UTF-8 on native Windows
      mingw: initialize HOME on startup

Marc-André Lureau (1):
      userdiff: add built-in pattern for rust

Martin Ågren (1):
      ref-filter: fix memory leak in `free_array_item()`

Matheus Tavares (8):
      clone: better handle symlinked files at .git/objects/
      dir-iterator: use warning_errno when possible
      dir-iterator: refactor state machine model
      dir-iterator: add flags parameter to dir_iterator_begin
      clone: copy hidden paths at local clone
      clone: extract function from copy_or_link_directory
      clone: use dir-iterator to avoid explicit dir traversal
      clone: replace strcmp by fspathcmp

Matthew DeVore (5):
      list-objects-filter-options: error is localizeable
      list-objects-filter: correct usage of ALLOC_GROW
      url: do not read past end of buffer
      url: do not allow %00 to represent NUL in URLs
      ref-filter: sort detached HEAD lines firstly

Mazo, Andrey (8):
      git-p4: detect/prevent infinite loop in gitCommitByP4Change()
      git-p4: add failing test for "git-p4: match branches case insensitively if configured"
      git-p4: match branches case insensitively if configured
      git-p4: don't groom exclude path list on every commit
      git-p4: add failing test for "don't exclude other files with same prefix"
      git-p4: don't exclude other files with same prefix
      git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
      git-p4: respect excluded paths when detecting branches

Michael Osipov (1):
      configure: Detect linking style for HP aCC on HP-UX

Michael Platings (2):
      blame: add a fingerprint heuristic to match ignored lines
      t8014: remove unnecessary braces

Miguel Ojeda (1):
      clang-format: use git grep to generate the ForEachMacros list

Mike Hommey (2):
      dup() the input fd for fast-import used for remote helpers
      Use xmmap_gently instead of xmmap in use_pack

Mike Mueller (1):
      p4 unshelve: fix "Not a valid object name HEAD0" on Windows

Morian Sonnet (1):
      submodule foreach: fix recursion of options

Nguyễn Thái Ngọc Duy (63):
      git-checkout.txt: spell out --no-option
      git-checkout.txt: fix one syntax line
      doc: document --overwrite-ignore
      git-checkout.txt: fix monospace typeset
      t: rename t2014-switch.sh to t2014-checkout-switch.sh
      checkout: advice how to get out of detached HEAD mode
      checkout: inform the user when removing branch state
      checkout: keep most #include sorted
      checkout: factor out some code in parse_branchname_arg()
      checkout: make "opts" in cmd_checkout() a pointer
      checkout: move 'confict_style' and 'dwim_..' to checkout_opts
      checkout: split options[] array in three pieces
      checkout: split part of it to new command 'switch'
      switch: better names for -b and -B
      switch: add --discard-changes
      switch: remove -l
      switch: stop accepting pathspec
      switch: reject "do nothing" case
      switch: only allow explicit detached HEAD
      switch: add short option for --detach
      switch: implicit dwim, use --no-guess to disable it
      switch: no worktree status unless real branch switch happens
      switch: reject if some operation is in progress
      switch: make --orphan switch to an empty tree
      t: add tests for switch
      completion: support switch
      doc: promote "git switch"
      checkout: split part of it to new command 'restore'
      restore: take tree-ish from --source option instead
      restore: make pathspec mandatory
      restore: disable overlay mode by default
      checkout: factor out worktree checkout code
      restore: add --worktree and --staged
      restore: reject invalid combinations with --staged
      restore: default to --source=HEAD when only --staged is specified
      restore: replace --force with --ignore-unmerged
      restore: support --patch
      t: add tests for restore
      completion: support restore
      user-manual.txt: prefer 'merge --abort' over 'reset --hard'
      doc: promote "git restore"
      help: move git-diff and git-reset to different groups
      Declare both git-switch and git-restore experimental
      merge: remove drop_save() in favor of remove_merge_branch_state()
      init: make --template path relative to $CWD
      worktree add: sanitize worktree names
      worktree add: be tolerant of corrupt worktrees
      merge: add --quit
      completion: do not cache if --git-completion-helper fails
      fetch: only run 'gc' once when fetching multiple remotes
      t2027: use test_must_be_empty
      switch: allow to switch in the middle of bisect
      completion: disable dwim on "git switch -d"
      fetch-pack: move capability names out of i18n strings
      fetch-pack: print all relevant supported capabilities with -v -v
      fetch-pack: print server version at the top in -v -v
      sha1-file.c: remove the_repo from read_object_with_reference()
      tree-walk.c: remove the_repo from fill_tree_descriptor()
      tree-walk.c: remove the_repo from get_tree_entry()
      tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
      match-trees.c: remove the_repo from shift_tree*()
      Use the right 'struct repository' instead of the_repository
      t7814: do not generate same commits in different repos

Nickolai Belakovski (3):
      ref-filter: add worktreepath atom
      branch: update output to include worktree info
      branch: add worktree info on verbose output

Paolo Bonzini (2):
      request-pull: quote regex metacharacters in local ref
      request-pull: warn if the remote object is not the same as the local one

Philip Oakley (6):
      git.c: show usage for accessing the git(1) help page
      Doc: git.txt: remove backticks from link and add git-scm.com/docs
      doc branch: provide examples for listing remote tracking branches
      msvc: include sigset_t definition
      msvc: define O_ACCMODE
      msvc: add pragmas for common warnings

Phillip Wood (12):
      rebase: fix a memory leak
      rebase: warn if state directory cannot be removed
      sequencer: return errors from sequencer_remove_state()
      rebase --abort/--quit: cleanup refs/rewritten
      rebase -r: always reword merge -c
      add -p: fix checkout -p with pathological context
      show --continue/skip etc. consistently in synopsis
      sequencer: always allow tab after command name
      sequencer: factor out todo command name parsing
      status: do not report errors in sequencer/todo
      git-prompt: improve cherry-pick/revert detection
      t3420: remove progress lines before comparing output

Quentin Nerden (2):
      docs: git-clone: refer to long form of options
      docs: git-clone: list short form of options first

Ramsay Jones (1):
      env--helper: mark a file-local symbol as static

René Scharfe (6):
      cleanup: fix possible overflow errors in binary search, part 2
      coccinelle: use COPY_ARRAY for copying arrays
      use COPY_ARRAY for copying arrays
      config: use unsigned_mult_overflows to check for overflows
      config: don't multiply in parse_unit_factor()
      config: simplify parsing of unit factors

Robert Morgan (1):
      gpg(docs): use correct --verify syntax

Rohit Ashiwal (5):
      sequencer: add advice for revert
      sequencer: rename reset_for_rollback to reset_merge
      sequencer: use argv_array in reset_merge
      cherry-pick/revert: add --skip option
      cherry-pick/revert: advise using --skip

SZEDER Gábor (11):
      t3404: modernize here doc style
      t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
      pager: add a helper function to clear the last line in the terminal
      t5551: use 'test_i18ngrep' to check translated output
      rebase: fix garbled progress display with '-x'
      progress: use term_clear_line()
      Document that 'git -C ""' works and doesn't change directory
      ci: don't update Homebrew
      ci: disable Homebrew's auto cleanup
      ci/lib.sh: update a comment about installed P4 and Git-LFS versions
      travis-ci: build with GCC 4.8 as well

Simon Williams (1):
      git-p4: allow unshelving of branched files

Stephen Boyd (2):
      format-patch: inform user that patch-id generation is unstable
      format-patch: make --base patch-id output stable

Steven Roberts (1):
      gpg-interface: do not scan past the end of buffer

Taylor Blau (1):
      ref-filter.c: find disjoint pattern prefixes

Thomas Gummerer (16):
      stash: fix show referencing stash index
      apply: replace marc.info link with public-inbox
      apply: only pass required data to skip_tree_prefix
      apply: only pass required data to git_header_name
      apply: only pass required data to check_header_line
      apply: only pass required data to find_name_*
      apply: only pass required data to gitdiff_* functions
      apply: make parse_git_diff_header public
      range-diff: fix function parameter indentation
      range-diff: split lines manually
      range-diff: don't remove funcname from inner diff
      range-diff: suppress line count in outer diff
      range-diff: add section header instead of diff header
      range-diff: add filename to inner diff
      range-diff: add headers to the outer hunk header
      stash: fix handling removed files with --keep-index

Tigran Mkrtchyan (1):
      tag: add tag.gpgSign config option to force all tags be GPG-signed

Varun Naik (1):
      read-cache.c: do not die if mmap fails

Vishal Verma (1):
      merge: refuse --commit with --squash

Xin Li (1):
      clone: respect user supplied origin name when setting up partial clone

Ævar Arnfjörð Bjarmason (21):
      send-email: move the read_config() function above getopts
      send-email: rename the @bcclist variable for consistency
      send-email: do defaults -> config -> getopt in that order
      tests: add a special setup where prerequisites fail
      Makefile: remove the NO_R_TO_GCC_LINKER flag
      send-email: remove cargo-culted multi-patch pattern in tests
      send-email: fix broken transferEncoding tests
      send-email: document --no-[to|cc|bcc]
      hash-object doc: stop mentioning git-cvsimport
      send-email: fix regression in sendemail.identity parsing
      Revert "test-lib: whitelist GIT_TR2_* in the environment"
      config tests: simplify include cycle test
      env--helper: new undocumented builtin wrapping git_env_*()
      config.c: refactor die_bad_number() to not call gettext() early
      t6040 test: stop using global "script" variable
      tests: make GIT_TEST_GETTEXT_POISON a boolean
      tests README: re-flow a previously changed paragraph
      tests: replace test_tristate with "git env--helper"
      tests: make GIT_TEST_FAIL_PREREQS a boolean
      tests: mark two failing tests under FAIL_PREREQS
      clone: test for our behavior on odd objects/* content


^ permalink raw reply	[relevance 2%]

* Re: What's cooking in git.git (Jul 2019, #06; Thu, 25)
  2019-07-26 14:33  0% ` Johannes Schindelin
@ 2019-07-26 20:23  0%   ` Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2019-07-26 20:23 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: git

Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:

> Hi Junio,
>
> On Thu, 25 Jul 2019, Junio C Hamano wrote:
>
>> The seventh batch is in; I've merged fix-up topics that has been in
>> 'master' for some time (i.e. up to the third batch of this cycle)
>> down to 'maint'.
>
> Would you terribly mind also merging `js/gcc-8-and-9` into `maint`?
> Otherwise, the CI build is broken after my upgrade of the Git for
> Windows SDk to GCC v9.x.

I do not mind.  I am just taking things in smaller batches than just
the whole ball of wax.

^ permalink raw reply	[relevance 0%]

* Re: What's cooking in git.git (Jul 2019, #06; Thu, 25)
  2019-07-26  0:19  1% What's cooking in git.git (Jul 2019, #06; Thu, 25) Junio C Hamano
@ 2019-07-26 14:33  0% ` Johannes Schindelin
  2019-07-26 20:23  0%   ` Junio C Hamano
  2019-08-09  0:13  0% ` Taylor Blau
  1 sibling, 1 reply; 162+ results
From: Johannes Schindelin @ 2019-07-26 14:33 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

Hi Junio,

On Thu, 25 Jul 2019, Junio C Hamano wrote:

> The seventh batch is in; I've merged fix-up topics that has been in
> 'master' for some time (i.e. up to the third batch of this cycle)
> down to 'maint'.

Would you terribly mind also merging `js/gcc-8-and-9` into `maint`?
Otherwise, the CI build is broken after my upgrade of the Git for
Windows SDk to GCC v9.x.

Thanks,
Dscho

^ permalink raw reply	[relevance 0%]

* What's cooking in git.git (Jul 2019, #06; Thu, 25)
@ 2019-07-26  0:19  1% Junio C Hamano
  2019-07-26 14:33  0% ` Johannes Schindelin
  2019-08-09  0:13  0% ` Taylor Blau
  0 siblings, 2 replies; 162+ results
From: Junio C Hamano @ 2019-07-26  0:19 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The seventh batch is in; I've merged fix-up topics that has been in
'master' for some time (i.e. up to the third batch of this cycle)
down to 'maint'.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ab/test-env (2019-07-11) 9 commits
  (merged to 'next' on 2019-07-15 at 42e86beb20)
 + env--helper: mark a file-local symbol as static
  (merged to 'next' on 2019-07-09 at 096658f382)
 + tests: make GIT_TEST_FAIL_PREREQS a boolean
 + tests: replace test_tristate with "git env--helper"
 + tests README: re-flow a previously changed paragraph
 + tests: make GIT_TEST_GETTEXT_POISON a boolean
 + t6040 test: stop using global "script" variable
 + config.c: refactor die_bad_number() to not call gettext() early
 + env--helper: new undocumented builtin wrapping git_env_*()
 + config tests: simplify include cycle test

 Many GIT_TEST_* environment variables control various aspects of
 how our tests are run, but a few followed "non-empty is true, empty
 or unset is false" while others followed the usual "there are a few
 ways to spell true, like yes, on, etc., and also ways to spell
 false, like no, off, etc." convention.


* ac/log-use-mailmap-by-default-transition (2019-07-15) 3 commits
  (merged to 'next' on 2019-07-19 at e5669de950)
 + tests: defang pager tests by explicitly disabling the log.mailmap warning
 + documentation: mention --no-use-mailmap and log.mailmap false setting
 + log: add warning for unspecified log.mailmap setting

 The "git log" command learns to issue a warning when log.mailmap
 configuration is not set and --[no-]mailmap option is not used, to
 prepare users for future versions of Git that uses the mailmap by
 default.


* di/readme-markup-fix (2019-07-18) 1 commit
  (merged to 'next' on 2019-07-19 at 339470d824)
 + README: fix rendering of text in angle brackets

 Docfix.


* es/local-atomic-push-failure-with-http (2019-07-16) 2 commits
  (merged to 'next' on 2019-07-19 at 8d5b776a96)
 + transport-helper: avoid var decl in for () loop control
  (merged to 'next' on 2019-07-15 at 960e92d24f)
 + transport-helper: enforce atomic in push_refs_with_push

 "git push --atomic" that goes over the transport-helper (namely,
 the smart http transport) failed to prevent refs to be pushed when
 it can locally tell that one of the ref update will fail without
 having to consult the other end, which has been corrected.


* jc/denoise-rm-to-resolve (2019-07-18) 1 commit
  (merged to 'next' on 2019-07-19 at 12f7e5d413)
 + rm: resolving by removal is not a warning-worthy event

 "git rm" to resolve a conflicted path leaked an internal message
 "needs merge" before actually removing the path, which was
 confusing.  This has been corrected.


* jc/post-c89-rules-doc (2019-07-18) 1 commit
  (merged to 'next' on 2019-07-19 at 8acd58e189)
 + CodingGuidelines: spell out post-C89 rules

 We have been trying out a few language features outside c89; the
 coding guidelines document did not talk about them and instead had
 a blanket ban against them.


* jk/test-commit-bulk (2019-07-23) 6 commits
  (merged to 'next' on 2019-07-23 at edc849c7dd)
 + t6200: use test_commit_bulk
 + t5703: use test_commit_bulk
 + t5702: use test_commit_bulk
 + t3311: use test_commit_bulk
 + t5310: increase the number of bitmapped commits
 + test-lib: introduce test_commit_bulk

 A test helper has been introduced to optimize preparation of test
 repositories with many simple commits, and a handful of test
 scripts have been updated to use it.


* js/clean-report-too-long-a-path (2019-07-19) 1 commit
  (merged to 'next' on 2019-07-19 at b7da0a821c)
 + clean: show an error message when the path is too long

 "git clean" silently skipped a path when it cannot lstat() it; now
 it gives a warning.


* js/mingw-spawn-with-spaces-in-path (2019-07-16) 1 commit
  (merged to 'next' on 2019-07-19 at 33dd6d0401)
 + mingw: support spawning programs containing spaces in their names

 Window 7 update ;-)


* js/unmap-before-ext-diff (2019-07-11) 1 commit
  (merged to 'next' on 2019-07-15 at 7aa292c66c)
 + diff: munmap() file contents before running external diff

 Windows update.


* mt/dir-iterator-updates (2019-07-11) 10 commits
  (merged to 'next' on 2019-07-19 at 2ebb586ce6)
 + clone: replace strcmp by fspathcmp
 + clone: use dir-iterator to avoid explicit dir traversal
 + clone: extract function from copy_or_link_directory
 + clone: copy hidden paths at local clone
 + dir-iterator: add flags parameter to dir_iterator_begin
 + dir-iterator: refactor state machine model
 + dir-iterator: use warning_errno when possible
 + dir-iterator: add tests for dir-iterator API
 + clone: better handle symlinked files at .git/objects/
 + clone: test for our behavior on odd objects/* content

 Adjust the dir-iterator API and apply it to the local clone
 optimization codepath.


* rm/gpg-program-doc-fix (2019-07-12) 1 commit
  (merged to 'next' on 2019-07-15 at ef358ec2e9)
 + gpg(docs): use correct --verify syntax

 Docfix.


* sr/gpg-interface-stop-at-the-end (2019-07-16) 1 commit
  (merged to 'next' on 2019-07-19 at 5d38aa1236)
 + gpg-interface: do not scan past the end of buffer

 A codepath that reads from GPG for signed object verification read
 past the end of allocated buffer, which has been fixed.


* tg/range-diff-output-update (2019-07-11) 14 commits
  (merged to 'next' on 2019-07-15 at b847d206ed)
 + range-diff: add headers to the outer hunk header
 + range-diff: add filename to inner diff
 + range-diff: add section header instead of diff header
 + range-diff: suppress line count in outer diff
 + range-diff: don't remove funcname from inner diff
 + range-diff: split lines manually
 + range-diff: fix function parameter indentation
 + apply: make parse_git_diff_header public
 + apply: only pass required data to gitdiff_* functions
 + apply: only pass required data to find_name_*
 + apply: only pass required data to check_header_line
 + apply: only pass required data to git_header_name
 + apply: only pass required data to skip_tree_prefix
 + apply: replace marc.info link with public-inbox

 "git range-diff" output has been tweaked for easier identification
 of which part of what file the patch shown is about.


* tg/stash-keep-index-with-removed-paths (2019-07-16) 1 commit
  (merged to 'next' on 2019-07-19 at d4ae24a939)
 + stash: fix handling removed files with --keep-index

 "git stash --keep-index" did not work correctly on paths that have
 been removed, which has been fixed.


* vn/xmmap-gently (2019-07-14) 1 commit
  (merged to 'next' on 2019-07-19 at d95c1d2be3)
 + read-cache.c: do not die if mmap fails

 Clean-up an error codepath.

--------------------------------------------------
[New Topics]

* bb/grep-pcre2-bug-message-fix (2019-07-23) 1 commit
  (merged to 'next' on 2019-07-23 at 8bd5a68618)
 + grep: print the pcre2_jit_on value

 BUG() message fix.

 The codepath may want to just simply be removed, though.


* ra/rebase-i-more-options (2019-07-23) 4 commits
 - SQUASH???
 - rebase -i: support --committer-date-is-author-date
 - sequencer: add NULL checks under read_author_script
 - rebase -i: add --ignore-whitespace flag

 "git rebase -i" learned a few options that are known by "git
 rebase" proper.

 Needs a bit of fixups, at least.


* sg/travis-gcc-4.8 (2019-07-19) 1 commit
  (merged to 'next' on 2019-07-25 at e3d546eb15)
 + travis-ci: build with GCC 4.8 as well

 Add a job to build with a tad older GCC to make sure we are still
 buildable.

 Will merge to 'master'.


* ab/pcre-jit-fixes (2019-07-24) 3 commits
 - grep: stop using a custom JIT stack with PCRE v1
 - grep: stop "using" a custom JIT stack with PCRE v2
 - grep: remove overly paranoid BUG(...) code

 A few simplification and bugfixes to PCRE interface.

 Will merge to 'next'.


* jk/xdiff-clamp-funcname-context-index (2019-07-23) 1 commit
  (merged to 'next' on 2019-07-25 at b2944a0ba6)
 + xdiff: clamp function context indices in post-image

 The internal diff machinery can be made to read out of bounds while
 looking for --funcion-context line in a corner case, which has been
 corrected.

 Will merge to 'master'.


* js/rebase-cleanup (2019-07-25) 2 commits
  (merged to 'next' on 2019-07-25 at 3d9cedf470)
 + git: mark cmd_rebase as requiring a worktree
 + rebase: fix white-space

 A few leftover cleanup to "git rebase" in C.

 Will merge to 'master'.


* js/rebase-r-strategy (2019-07-25) 12 commits
 - rebase -r: do not (re-)generate root commits with `--root` *and* `--onto`
 - t3418: test `rebase -r` with merge strategies
 - t/lib-rebase: prepare for testing `git rebase --rebase-merges`
 - rebase -r: support merge strategies other than `recursive`
 - t3427: mark two test cases as requiring support for `git rebase -p`
 - t3427: fix another incorrect assumption
 - t3427: accommodate for the `rebase --merge` backend having been replaced
 - t3427: fix erroneous assumption
 - t3427: condense the unnecessarily repetitive test cases into three
 - t3427: move the `filter-branch` invocation into the `setup` case
 - t3427: simplify the `setup` test case significantly
 - t3427: add a clarifying comment

 "git rebase --rebase-merges" learned to drive different merge
 strategies and pass strategy specific options to them.


* js/trace2-json-schema (2019-07-25) 3 commits
 - ci: run trace2 schema validation in the CI suite
 - trace2: add a schema validator for trace2 events
 - trace2: add a JSON schema for trace2 events

 The JSON output produced by "trace2" subsystem now has JSON schema
 defined on it, to allow us validate the output and catch deviation.

 The CI integration may be a bit too heavy-handed.

--------------------------------------------------
[Stalled]

* cb/xdiff-no-system-includes-in-dot-c (2019-06-19) 1 commit
 - xdiff: avoid accidental redefinition of LFS feature in OpenIndiana

 Compilation fix.

 Will be rerolled together with patches from the
 jk/no-system-includes-in-dot-c topic.


* jk/no-system-includes-in-dot-c (2019-06-19) 2 commits
 - wt-status.h: drop stdio.h include
 - verify-tag: drop signal.h include

 Compilation fix.

 Will be rerolled with the above.


* nd/index-dump-in-json (2019-06-26) 11 commits
 - SQUASH???
 - t3008: use the new SINGLE_CPU prereq
 - read-cache.c: dump "IEOT" extension as json
 - read-cache.c: dump "EOIE" extension as json
 - resolve-undo.c: dump "REUC" extension as json
 - fsmonitor.c: dump "FSMN" extension as json
 - split-index.c: dump "link" extension as json
 - dir.c: dump "UNTR" extension as json
 - cache-tree.c: dump "TREE" extension as json
 - read-cache.c: dump common extension info in json
 - ls-files: add --json to dump the index

 "ls-files" learned "--debug-json" option to dump the contents and
 the extensions of the index file.

 At least the fixup at the tip needs to be squashed into the right
 commit.  Also the new test seems flaky.


* jn/unknown-index-extensions (2018-11-21) 2 commits
 - index: offer advice for unknown index extensions
 - index: do not warn about unrecognized extensions

 A bit too alarming warning given when unknown index extensions
 exist is getting revamped.

 Expecting a reroll.


* jc/format-patch-delay-message-id (2019-04-05) 1 commit
 - format-patch: move message-id and related headers to the end

 The location "git format-patch --thread" adds the Message-Id:
 header in the series of header fields has been moved down, which
 may help working around a suspected bug in GMail MSA, reported at
 <CAHk-=whP1stFZNAaJiMi5eZ9rj0MRt20Y_yHVczZPH+O01d+sA@mail.gmail.com>

 Waiting for feedback to see if it truly helps.
 Needs tests.


* jt/fetch-cdn-offload (2019-03-12) 9 commits
 - SQUASH???
 - upload-pack: send part of packfile response as uri
 - fetch-pack: support more than one pack lockfile
 - upload-pack: refactor reading of pack-objects out
 - Documentation: add Packfile URIs design doc
 - Documentation: order protocol v2 sections
 - http-fetch: support fetching packfiles by URL
 - http: improve documentation of http_pack_request
 - http: use --stdin when getting dumb HTTP pack

 WIP for allowing a response to "git fetch" to instruct the bulk of
 the pack contents to be instead taken from elsewhere (aka CDN).


* js/protocol-advertise-multi (2018-12-28) 1 commit
 - protocol: advertise multiple supported versions

 The transport layer has been updated so that the protocol version
 used can be negotiated between the parties, by the initiator
 listing the protocol versions it is willing to talk, and the other
 side choosing from one of them.

 Expecting a reroll.
 cf. <CANq=j3u-zdb_FvNJGPCmygNMScseav63GhVvBX3NcVS4f7TejA@mail.gmail.com>


* mk/use-size-t-in-zlib (2018-10-15) 1 commit
 - zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".


* dl/remote-save-to-push (2018-12-11) 1 commit
 - remote: add --save-to-push option to git remote set-url

 "git remote set-url" learned a new option that moves existing value
 of the URL field to pushURL field of the remote before replacing
 the URL field with a new value.

 Anybody who wants to champion this topic?
 I am personally not yet quite convinced if this is worth pursuing.

--------------------------------------------------
[Cooking]

* js/builtin-add-i (2019-07-18) 11 commits
 - built-in add -i: implement the `help` command
 - built-in add -i: use color in the main loop
 - built-in add -i: support `?` (prompt help)
 - built-in add -i: show unique prefixes of the commands
 - Add a function to determine unique prefixes for a list of strings
 - built-in add -i: implement the main loop
 - built-in add -i: color the header in the `status` command
 - built-in add -i: refresh the index before running `status`
 - built-in add -i: implement the `status` command
 - diff: export diffstat interface
 - Start to implement a built-in version of `git add --interactive`

 The beginning of rewriting "git add -i" in C.


* js/visual-studio (2019-07-18) 24 commits
 - git: avoid calling aliased builtins via their dashed form
 - t5505,t5516: create .git/branches/ when needed
 - bin-wrappers: append `.exe` to target paths if necessary
 - .gitignore: ignore Visual Studio's temporary/generated files
 - .gitignore: touch up the entries regarding Visual Studio
 - vcxproj: also link-or-copy builtins
 - msvc: add a Makefile target to pre-generate the Visual Studio solution
 - contrib/buildsystems: add a backend for modern Visual Studio versions
 - contrib/buildsystems: handle options starting with a slash
 - contrib/buildsystems: also handle -lexpat
 - contrib/buildsystems: handle libiconv, too
 - contrib/buildsystems: handle the curl library option
 - contrib/buildsystems: error out on unknown option
 - contrib/buildsystems: optionally capture the dry-run in a file
 - contrib/buildsystems: redirect errors of the dry run into a log file
 - contrib/buildsystems: ignore gettext stuff
 - contrib/buildsystems: handle quoted spaces in filenames
 - contrib/buildsystems: fix misleading error message
 - contrib/buildsystems: ignore irrelevant files in Generators/
 - contrib/buildsystems: ignore invalidcontinue.obj
 - Vcproj.pm: urlencode '<' and '>' when generating VC projects
 - Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool
 - Vcproj.pm: list git.exe first to be startup project
 - Vcproj.pm: auto-generate GUIDs

 Support building Git with Visual Studio

 The ".git/branches" bit needs to be ejected and treated separately,
 but other than that, the topic looked reasonable.


* bc/hash-independent-tests-part-4 (2019-07-01) 10 commits
 - t2203: avoid hard-coded object ID values
 - t1710: make hash independent
 - t1007: remove SHA1 prerequisites
 - t0090: make test pass with SHA-256
 - t0027: make hash size independent
 - t6030: make test work with SHA-256
 - t5000: make hash independent
 - t1450: make hash size independent
 - t1410: make hash size independent
 - t: add helper to convert object IDs to paths

 Update to the tests to help SHA-256 transition continues.

 Will merge to 'next'.


* es/walken-tutorial (2019-07-02) 1 commit
 - documentation: add tutorial for revision walking

 Yet another revision walker tutorial.


* ds/early-access (2019-07-01) 3 commits
 - repo-settings: pack.useSparse=true
 - repo-settings: use index.version=4 by default
 - repo-settings: create core.featureAdoptionRate setting

 A mechanism to enable newish configuration settings in bulk has
 been invented.

 Will replace with a redesigned variant which is being discussed
 when the dust settles.
 cf. <pull.292.v2.git.gitgitgadget@gmail.com> (v2)


* ab/no-kwset (2019-07-01) 10 commits
  (merged to 'next' on 2019-07-15 at ed0479ce3d)
 + grep: use PCRE v2 for optimized fixed-string search
 + grep: remove the kwset optimization
 + grep: drop support for \0 in --fixed-strings <pattern>
 + grep: make the behavior for NUL-byte in patterns sane
 + grep tests: move binary pattern tests into their own file
 + grep tests: move "grep binary" alongside the rest
 + grep: inline the return value of a function call used only once
 + t4210: skip more command-line encoding tests on MinGW
 + grep: don't use PCRE2?_UTF8 with "log --encoding=<non-utf8>"
 + log tests: test regex backends in "--encode=<enc>" tests

 Retire use of kwset library, which is an optimization for looking
 for fixed strings, with use of pcre2 JIT.

 Needs to wait for a few pcre JIT related fixups, including the
 handling of non-UTF8 haystack.


* md/list-objects-filter-combo (2019-06-28) 10 commits
 - list-objects-filter-options: make parser void
 - list-objects-filter-options: clean up use of ALLOC_GROW
 - list-objects-filter-options: allow mult. --filter
 - strbuf: give URL-encoding API a char predicate fn
 - list-objects-filter-options: make filter_spec a string_list
 - list-objects-filter-options: move error check up
 - list-objects-filter: implement composite filters
 - list-objects-filter-options: always supply *errbuf
 - list-objects-filter: put omits set in filter struct
 - list-objects-filter: encapsulate filter components

 The list-objects-filter API (used to create a sparse/lazy clone)
 learned to take a combined filter specification.

 Will merge to 'next'.


* cc/multi-promisor (2019-06-25) 15 commits
 - Move core_partial_clone_filter_default to promisor-remote.c
 - Move repository_format_partial_clone to promisor-remote.c
 - Remove fetch-object.{c,h} in favor of promisor-remote.{c,h}
 - remote: add promisor and partial clone config to the doc
 - partial-clone: add multiple remotes in the doc
 - t0410: test fetching from many promisor remotes
 - builtin/fetch: remove unique promisor remote limitation
 - promisor-remote: parse remote.*.partialclonefilter
 - Use promisor_remote_get_direct() and has_promisor_remote()
 - promisor-remote: use repository_format_partial_clone
 - promisor-remote: add promisor_remote_reinit()
 - promisor-remote: implement promisor_remote_get_direct()
 - Add initial support for many promisor remotes
 - fetch-object: make functions return an error code
 - t0410: remove pipes after git commands

 Teach the lazy clone machinery that there can be more than one
 promisor remote and consult them in order when downloading missing
 objects on demand.

 Will merge to 'next'.


* jc/format-patch-noclobber (2019-02-22) 1 commit
 - format-patch: --no-clobber refrains from overwriting output files

 "git format-patch" used to overwrite an existing patch/cover-letter
 file.  A new "--no-clobber" option stops it.

 Will discard.


* dl/rebase-i-keep-base (2019-04-25) 6 commits
 - rebase: teach rebase --keep-base
 - rebase: fast-forward --fork-point in more cases
 - rebase: fast-forward --onto in more cases
 - rebase: refactor can_fast_forward into goto tower
 - t3432: test rebase fast-forward behavior
 - t3431: add rebase --fork-point tests

 "git rebase --keep-base <upstream>" tries to find the original base
 of the topic being rebased and rebase on top of that same base,
 which is useful when running the "git rebase -i" (and its limited
 variant "git rebase -x").

 The command also has learned to fast-forward in more cases where it
 can instead of replaying to recreate identical commits.

 On hold.
 cf. <20190508001252.15752-1-avarab@gmail.com>
 cf. <20190719210156.GA9688@archbookpro.localdomain>

^ permalink raw reply	[relevance 1%]

* Re: What's cooking in git.git (Jul 2019, #01; Wed, 3)
  2019-07-03 22:28  1% What's cooking in git.git (Jul 2019, #01; Wed, 3) Junio C Hamano
@ 2019-07-04  9:56  0% ` Phillip Wood
  0 siblings, 0 replies; 162+ results
From: Phillip Wood @ 2019-07-04  9:56 UTC (permalink / raw)
  To: Junio C Hamano, git

On 03/07/2019 23:28, Junio C Hamano wrote:
> Here are the topics that have been cooking.  Commits prefixed with
> '-' are only in 'pu' (proposed updates) while commits prefixed with
> '+' are in 'next'.  The ones marked with '.' do not appear in any of
> the integration branches, but I am still holding onto them.
> 
> The third batch of topics post 2.22 are now in 'master', and the tip
> of 'next' has been rewound.
> 
> You can find the changes described here in the integration branches
> of the repositories listed at
> 
>     http://git-blame.blogspot.com/p/git-public-repositories.html
> 
> --------------------------------------------------
> [New Topics]
> 
> * pw/rebase-progress-test-cleanup (2019-07-01) 1 commit
>  - t3420: remove progress lines before comparing output
>  (this branch uses sg/rebase-progress.)
> 
>  Test cleanup.
> 
>  Will merge to 'next'.

I've just posted an update to this which avoids the repeated printf calls

Best Wishes

Phillip

^ permalink raw reply	[relevance 0%]

* What's cooking in git.git (Jul 2019, #01; Wed, 3)
@ 2019-07-03 22:28  1% Junio C Hamano
  2019-07-04  9:56  0% ` Phillip Wood
  0 siblings, 1 reply; 162+ results
From: Junio C Hamano @ 2019-07-03 22:28 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The third batch of topics post 2.22 are now in 'master', and the tip
of 'next' has been rewound.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* bc/hash-independent-tests-part-4 (2019-07-01) 10 commits
 - t2203: avoid hard-coded object ID values
 - t1710: make hash independent
 - t1007: remove SHA1 prerequisites
 - t0090: make test pass with SHA-256
 - t0027: make hash size independent
 - t6030: make test work with SHA-256
 - t5000: make hash independent
 - t1450: make hash size independent
 - t1410: make hash size independent
 - t: add helper to convert object IDs to paths

 Update to the tests to help SHA-256 transition continues.


* pw/prompt-cherry-pick-revert-fix (2019-07-01) 1 commit
 - git-prompt: improve cherry-pick/revert detection

 When one step in multi step cherry-pick or revert is reset or
 committed, the command line prompt script failed to notice the
 current status, which has been improved.

 Will merge to 'next'.


* pw/rebase-progress-test-cleanup (2019-07-01) 1 commit
 - t3420: remove progress lines before comparing output
 (this branch uses sg/rebase-progress.)

 Test cleanup.

 Will merge to 'next'.


* sg/git-C-empty-doc (2019-07-01) 1 commit
 - Document that 'git -C ""' works and doesn't change directory

 Doc update.

 Will merge to 'next'.


* es/local-atomic-push-failure-with-http (2019-07-02) 2 commits
 - SQUASH???
 - transport-helper: enforce atomic in push_refs_with_push

 "git push --atomic" that goes over the transport-helper (namely,
 the smart http transport) failed to prevent refs to be pushed when
 it can locally tell that one of the ref update will fail without
 having to consult the other end, which has been corrected.

 Need to either wait for reroll or squash the fix in directly.


* es/walken-tutorial (2019-07-02) 1 commit
 - documentation: add tutorial for revision walking

 Yet another revision walker tutorial.


* qn/clone-doc-use-long-form (2019-07-02) 2 commits
 - docs: git-clone: list short form of options first
 - docs: git-clone: refer to long form of options

 The "git clone" documentation refers to command line options in its
 description in the short form; they have been replaced with long
 forms to make them more recognisable.

 Will merge to 'next'.


* sg/ci-brew-gcc-workaround (2019-07-03) 2 commits
 - ci: disable Homebrew's auto cleanup
 - ci: don't update Homebrew

 Dev support update.

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* jn/unknown-index-extensions (2018-11-21) 2 commits
 - index: offer advice for unknown index extensions
 - index: do not warn about unrecognized extensions

 A bit too alarming warning given when unknown index extensions
 exist is getting revamped.

 Expecting a reroll.


* jc/format-patch-delay-message-id (2019-04-05) 1 commit
 - format-patch: move message-id and related headers to the end

 The location "git format-patch --thread" adds the Message-Id:
 header in the series of header fields has been moved down, which
 may help working around a suspected bug in GMail MSA, reported at
 <CAHk-=whP1stFZNAaJiMi5eZ9rj0MRt20Y_yHVczZPH+O01d+sA@mail.gmail.com>

 Waiting for feedback to see if it truly helps.
 Needs tests.


* jt/fetch-cdn-offload (2019-03-12) 9 commits
 - SQUASH???
 - upload-pack: send part of packfile response as uri
 - fetch-pack: support more than one pack lockfile
 - upload-pack: refactor reading of pack-objects out
 - Documentation: add Packfile URIs design doc
 - Documentation: order protocol v2 sections
 - http-fetch: support fetching packfiles by URL
 - http: improve documentation of http_pack_request
 - http: use --stdin when getting dumb HTTP pack

 WIP for allowing a response to "git fetch" to instruct the bulk of
 the pack contents to be instead taken from elsewhere (aka CDN).

 Stalled


* js/protocol-advertise-multi (2018-12-28) 1 commit
 - protocol: advertise multiple supported versions

 The transport layer has been updated so that the protocol version
 used can be negotiated between the parties, by the initiator
 listing the protocol versions it is willing to talk, and the other
 side choosing from one of them.

 Expecting a reroll.
 cf. <CANq=j3u-zdb_FvNJGPCmygNMScseav63GhVvBX3NcVS4f7TejA@mail.gmail.com>


* mk/use-size-t-in-zlib (2018-10-15) 1 commit
 - zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".


* dl/remote-save-to-push (2018-12-11) 1 commit
 - remote: add --save-to-push option to git remote set-url

 "git remote set-url" learned a new option that moves existing value
 of the URL field to pushURL field of the remote before replacing
 the URL field with a new value.

 Anybody who wants to champion this topic?
 I am personally not yet quite convinced if this is worth pursuing.

--------------------------------------------------
[Cooking]

* cb/windows-manifest (2019-06-27) 1 commit
  (merged to 'next' on 2019-07-03 at 875721bdc9)
 + mingw: embed a manifest to trick UAC into Doing The Right Thing

 Windows update.

 Will merge to 'master'.


* js/mingw-gcc-stack-protect (2019-06-27) 1 commit
  (merged to 'next' on 2019-07-03 at 7e3185f69d)
 + mingw: enable stack smashing protector

 Windows update.

 Will merge to 'master'.


* js/mingw-use-utf8 (2019-06-27) 2 commits
  (merged to 'next' on 2019-07-03 at f528daf88d)
 + mingw: use Unicode functions explicitly
 + mingw: get pw_name in UTF-8 format

 Windows update.

 Will merge to 'master'.


* kb/windows-force-utf8 (2019-06-27) 1 commit
 - gettext: always use UTF-8 on native Windows

 Windows update.

 On hold.
 cf. <nycvar.QRO.7.76.6.1907031321270.44@tvgsbejvaqbjf.bet>


* js/rebase-reschedule-applies-only-to-interactive (2019-07-01) 1 commit
 - rebase --am: ignore rebase.rescheduleFailedExec

 The configuration variable rebase.rescheduleFailedExec should be
 effective only while running an interactive rebase and should not
 affect anything when running an non-interactive one, which was not
 the case.  This has been corrected.

 Will merge to 'next'.


* jt/t5551-test-chunked (2019-06-27) 1 commit
  (merged to 'next' on 2019-07-03 at aafd74451c)
 + t5551: test usage of chunked encoding explicitly

 Update smart-http test.

 Will merge to 'master'.


* tb/ref-filter-multiple-patterns (2019-06-27) 1 commit
  (merged to 'next' on 2019-07-03 at f59ad42c4a)
 + ref-filter.c: find disjoint pattern prefixes

 "git for-each-ref" with multiple patterns have been optimized.

 Will merge to 'master'.


* ew/repack-with-bitmaps-by-default (2019-07-01) 1 commit
 - repack: disable bitmaps-by-default if .keep files exist

 Generation of pack bitmaps are now disabled when .keep files exist,
 as these are mutually exclusive features.

 Will merge to 'next'.


* jk/check-connected-with-alternates (2019-07-01) 2 commits
 - check_everything_connected: assume alternate ref tips are valid
 - object-store.h: move for_each_alternate_ref() from transport.h

 The tips of refs from the alternate object store can be used as
 starting point for reachability computation now.

 Will merge to 'next'.


* jk/test-commit-bulk (2019-07-02) 7 commits
 - SQUASH???
 - t6200: use test_commit_bulk
 - t5703: use test_commit_bulk
 - t5702: use test_commit_bulk
 - t3311: use test_commit_bulk
 - t5310: increase the number of bitmapped commits
 - test-lib: introduce test_commit_bulk

 A test helper has been introduced to optimize preparation of test
 repositories with many simple commits, and a handful of test
 scripts have been updated to use it.

 Will merge to 'next'.
 I think I spotted one unused command, which we may want to remove, though.


* ab/test-env (2019-06-21) 8 commits
 - tests: make GIT_TEST_FAIL_PREREQS a boolean
 - tests: replace test_tristate with "git env--helper"
 - tests README: re-flow a previously changed paragraph
 - tests: make GIT_TEST_GETTEXT_POISON a boolean
 - t6040 test: stop using global "script" variable
 - config.c: refactor die_bad_number() to not call gettext() early
 - env--helper: new undocumented builtin wrapping git_env_*()
 - config tests: simplify include cycle test

 Many GIT_TEST_* environment variables control various aspects of
 how our tests are run, but a few followed "non-empty is true, empty
 or unset is false" while others followed the usual "there are a few
 ways to spell true, like yes, on, etc., and also ways to spell
 false, like no, off, etc." convention.

 Will merge to 'next'.


* cc/first-contrib-tutorial (2019-06-24) 1 commit
  (merged to 'next' on 2019-06-27 at a9f2ab2f21)
 + doc: improve usage string in MyFirstContribution

 Update docs used in a tutorial.

 Will merge to 'master'.


* ds/early-access (2019-07-01) 3 commits
 - repo-settings: pack.useSparse=true
 - repo-settings: use index.version=4 by default
 - repo-settings: create core.featureAdoptionRate setting

 A mechanism to enable newish configuration settings in bulk has
 been invented.

 The model may need to be rethought.  A linear scale with "early
 adoption" mindset may not match diverse use cases of the tool.


* jh/msvc (2019-06-25) 20 commits
  (merged to 'next' on 2019-06-27 at 5a16e3d67c)
 + msvc: ignore .dll and incremental compile output
 + msvc: avoid debug assertion windows in Debug Mode
 + msvc: do not pretend to support all signals
 + msvc: add pragmas for common warnings
 + msvc: add a compile-time flag to allow detailed heap debugging
 + msvc: support building Git using MS Visual C++
 + msvc: update Makefile to allow for spaces in the compiler path
 + msvc: fix detect_msys_tty()
 + msvc: define ftello()
 + msvc: do not re-declare the timespec struct
 + msvc: mark a variable as non-const
 + msvc: define O_ACCMODE
 + msvc: include sigset_t definition
 + msvc: fix dependencies of compat/msvc.c
 + mingw: replace mingw_startup() hack
 + obstack: fix compiler warning
 + cache-tree/blame: avoid reusing the DEBUG constant
 + t0001 (mingw): do not expect a specific order of stdout/stderr
 + Mark .bat files as requiring CR/LF endings
 + mingw: fix a typo in the msysGit-specific section

 Support to build with MSVC has been updated.

 Will merge to 'master'.


* jk/delta-islands-progress-fix (2019-06-20) 1 commit
  (merged to 'next' on 2019-06-27 at 644526ba73)
 + delta-islands: respect progress flag

 The codepath to compute delta islands used to spew progress output
 without giving the callers any way to squelch it, which has been
 fixed.

 Will merge to 'master'.


* jk/oidhash (2019-06-20) 17 commits
  (merged to 'next' on 2019-06-27 at 7bf6b87738)
 + hashmap: convert sha1hash() to oidhash()
 + hash.h: move object_id definition from cache.h
 + khash: rename oid helper functions
 + khash: drop sha1-specific map types
 + pack-bitmap: convert khash_sha1 maps into kh_oid_map
 + delta-islands: convert island_marks khash to use oids
 + khash: rename kh_oid_t to kh_oid_set
 + khash: drop broken oid_map typedef
 + object: convert create_object() to use object_id
 + object: convert internal hash_obj() to object_id
 + object: convert lookup_object() to use object_id
 + object: convert lookup_unknown_object() to use object_id
 + pack-objects: convert locate_object_entry_hash() to object_id
 + pack-objects: convert packlist_find() to use object_id
 + pack-bitmap-write: convert some helpers to use object_id
 + upload-pack: rename a "sha1" variable to "oid"
 + describe: fix accidental oid/hash type-punning

 Code clean-up to remove hardcoded SHA-1 hash from manty places.

 Will merge to 'master'.


* nd/fetch-capability-tweak (2019-06-20) 3 commits
  (merged to 'next' on 2019-06-27 at dedbcb31a1)
 + fetch-pack: print server version at the top in -v -v
 + fetch-pack: print all relevant supported capabilities with -v -v
 + fetch-pack: move capability names out of i18n strings

 Protocol capabilities that go over wire should never be translated,
 but it was incorrectly marked for translation, which has been
 corrected.  The output of protocol capabilities for debugging has
 been tweaked a bit.

 Will merge to 'master'.


* nd/index-dump-in-json (2019-06-26) 11 commits
 - SQUASH???
 - t3008: use the new SINGLE_CPU prereq
 - read-cache.c: dump "IEOT" extension as json
 - read-cache.c: dump "EOIE" extension as json
 - resolve-undo.c: dump "REUC" extension as json
 - fsmonitor.c: dump "FSMN" extension as json
 - split-index.c: dump "link" extension as json
 - dir.c: dump "UNTR" extension as json
 - cache-tree.c: dump "TREE" extension as json
 - read-cache.c: dump common extension info in json
 - ls-files: add --json to dump the index

 "ls-files" learned "--debug-json" option to dump the contents and
 the extensions of the index file.

 At least the fixup at the tip needs to be squashed into the right
 commit.


* rs/config-unit-parsing (2019-06-24) 3 commits
  (merged to 'next' on 2019-06-27 at db633f85fe)
 + config: simplify parsing of unit factors
 + config: don't multiply in parse_unit_factor()
 + config: use unsigned_mult_overflows to check for overflows
 (this branch uses js/gcc-8-and-9.)

 The code to parse scaled numbers out of configuration files has
 been made more robust and also easier to follow.

 Will merge to 'master'.


* ab/fail-prereqs-in-test (2019-06-21) 1 commit
  (merged to 'next' on 2019-06-27 at 4df04aa1a0)
 + tests: mark two failing tests under FAIL_PREREQS

 Test updates.

 Will merge to 'master'.


* ds/fetch-disable-force-notice (2019-06-21) 3 commits
  (merged to 'next' on 2019-06-27 at 3ff4516f85)
 + pull: add --[no-]show-forced-updates passthrough
 + fetch: warn about forced updates in branch listing
 + fetch: add --[no-]show-forced-updates argument

 "git fetch" and "git pull" reports when a fetch results in
 non-fast-forward updates to let the user notice unusual situation.
 The commands learned "--no-shown-forced-updates" option to disable
 this safety feature.

 Will merge to 'master'.


* jh/status-aheadbehind (2019-06-21) 3 commits
  (merged to 'next' on 2019-06-27 at 362ee6b059)
 + status: ignore status.aheadbehind in porcelain formats
 + status: warn when a/b calculation takes too long
 + status: add status.aheadbehind setting

 "git status" can be told a non-standard default value for the
 "--[no-]ahead-behind" option with a new configuration variable
 status.aheadBehind.

 Will merge to 'master'.


* js/t0001-case-insensitive (2019-06-24) 1 commit
  (merged to 'next' on 2019-06-27 at 6c0001aebb)
 + t0001: fix on case-insensitive filesystems

 Test update.

 Will merge to 'master'.


* dr/progress-i18n (2019-07-02) 1 commit
 - l10n: localizable upload progress messages

 Progress messages have been made localizable.

 Will merge to 'next'.


* jw/gitweb-sample-update (2019-06-24) 1 commit
  (merged to 'next' on 2019-06-27 at 30a5e91e76)
 + doc: don't use git.kernel.org as example gitweb URL

 Doc update.

 Will merge to 'master'.


* ms/submodule-foreach-fix (2019-06-25) 1 commit
  (merged to 'next' on 2019-06-27 at ccd37d4dac)
 + submodule foreach: fix recursion of options

 "git submodule foreach" did not protect command line options passed
 to the command to be run in each submodule correctly, when the
 "--recursive" option was in use.

 Will merge to 'master'.


* pw/status-with-corrupt-sequencer-state (2019-06-27) 3 commits
  (merged to 'next' on 2019-07-03 at 273aee6b3c)
 + status: do not report errors in sequencer/todo
 + sequencer: factor out todo command name parsing
 + sequencer: always allow tab after command name

 The code to read state files used by the sequencer machinery for
 "git status" has been made more robust against a corrupt or stale
 state files.

 Will merge to 'master'.


* sg/t5551-fetch-smart-error-is-translated (2019-06-25) 1 commit
  (merged to 'next' on 2019-06-27 at 967c03da24)
 + t5551: use 'test_i18ngrep' to check translated output

 Test update.

 Will merge to 'master'.


* ab/no-kwset (2019-07-01) 10 commits
 - grep: use PCRE v2 for optimized fixed-string search
 - grep: remove the kwset optimization
 - grep: drop support for \0 in --fixed-strings <pattern>
 - grep: make the behavior for NUL-byte in patterns sane
 - grep tests: move binary pattern tests into their own file
 - grep tests: move "grep binary" alongside the rest
 - grep: inline the return value of a function call used only once
 - t4210: skip more command-line encoding tests on MinGW
 - grep: don't use PCRE2?_UTF8 with "log --encoding=<non-utf8>"
 - log tests: test regex backends in "--encode=<enc>" tests

 Retire use of kwset library, which is an optimization for looking
 for fixed strings, with use of pcre2 JIT.

 On hold.
 cf. <nycvar.QRO.7.76.6.1907021417050.48@tvgsbejvaqbjf.bet>


* mt/dir-iterator-updates (2019-06-25) 10 commits
 - clone: replace strcmp by fspathcmp
 - clone: use dir-iterator to avoid explicit dir traversal
 - clone: extract function from copy_or_link_directory
 - clone: copy hidden paths at local clone
 - dir-iterator: add flags parameter to dir_iterator_begin
 - dir-iterator: refactor state machine model
 - dir-iterator: use warning_errno when possible
 - dir-iterator: add tests for dir-iterator API
 - clone: better handle symlinked files at .git/objects/
 - clone: test for our behavior on odd objects/* content

 Adjust the dir-iterator API and apply it to the local clone
 optimization codepath.

 Is this ready for 'next'?


* nd/tree-walk-with-repo (2019-06-28) 7 commits
 - t7814: do not generate same commits in different repos
 - Use the right 'struct repository' instead of the_repository
 - match-trees.c: remove the_repo from shift_tree*()
 - tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
 - tree-walk.c: remove the_repo from get_tree_entry()
 - tree-walk.c: remove the_repo from fill_tree_descriptor()
 - sha1-file.c: remove the_repo from read_object_with_reference()

 The tree-walk API learned to pass an in-core repository
 instance throughout more codepaths.

 Will merge to 'next'.


* cb/fsmonitor-intfix (2019-06-17) 1 commit
  (merged to 'next' on 2019-06-26 at bed7c7e78b)
 + fsmonitor: avoid signed integer overflow / infinite loop

 Variable type fix.

 Will merge to 'master'.


* es/rev-list-no-object-names (2019-06-20) 1 commit
  (merged to 'next' on 2019-06-27 at 6d95228e01)
 + rev-list: teach --no-object-names to enable piping

 "git rev-list --objects" learned with "--no-object-names" option to
 squelch the path to the object that is used as a grouping hint for
 pack-objects.

 Will merge to 'master'.


* md/list-objects-filter-combo (2019-06-28) 10 commits
 - list-objects-filter-options: make parser void
 - list-objects-filter-options: clean up use of ALLOC_GROW
 - list-objects-filter-options: allow mult. --filter
 - strbuf: give URL-encoding API a char predicate fn
 - list-objects-filter-options: make filter_spec a string_list
 - list-objects-filter-options: move error check up
 - list-objects-filter: implement composite filters
 - list-objects-filter-options: always supply *errbuf
 - list-objects-filter: put omits set in filter struct
 - list-objects-filter: encapsulate filter components

 The list-objects-filter API (used to create a sparse/lazy clone)
 learned to take a combined filter specification.

 There is a bit of interaction with cc/multi-promisor topic, whose
 conflict resolution I have no confidence in X-<.  Extra sets of
 eyes are appreciated.


* pw/doc-synopsis-markup-opmode-options (2019-06-17) 1 commit
  (merged to 'next' on 2019-06-26 at 4258eddd2d)
 + show --continue/skip etc. consistently in synopsis

 Docfix.

 Will merge to 'master'.


* rs/copy-array (2019-06-17) 2 commits
  (merged to 'next' on 2019-06-26 at dfaa162f88)
 + use COPY_ARRAY for copying arrays
 + coccinelle: use COPY_ARRAY for copying arrays

 Code clean-up.

 Will merge to 'master'.


* cb/mkstemps-uint-type-fix (2019-06-19) 1 commit
  (merged to 'next' on 2019-06-26 at df44db4a69)
 + wrapper: avoid undefined behaviour in macOS

 Variable type fix.

 Will merge to 'master'.


* cb/xdiff-no-system-includes-in-dot-c (2019-06-19) 1 commit
 - xdiff: avoid accidental redefinition of LFS feature in OpenIndiana

 Compilation fix.

 Will be rerolled together with patches from the
 jk/no-system-includes-in-dot-c topic.


* jk/no-system-includes-in-dot-c (2019-06-19) 2 commits
 - wt-status.h: drop stdio.h include
 - verify-tag: drop signal.h include

 Compilation fix.

 Will be rerolled with the above.


* jk/trailers-use-config (2019-06-19) 1 commit
  (merged to 'next' on 2019-06-26 at 1ba8a7c2dd)
 + interpret-trailers: load default config

 "git interpret-trailers" always treated '#' as the comment
 character, regardless of core.commentChar setting, which has been
 corrected.

 Will merge to 'master'.


* nd/fetch-multi-gc-once (2019-06-19) 1 commit
  (merged to 'next' on 2019-06-27 at 0225ada5e2)
 + fetch: only run 'gc' once when fetching multiple remotes

 "git fetch" that grabs from a group of remotes learned to run the
 auto-gc only once at the very end.

 Will merge to 'master'.


* ra/cherry-pick-revert-skip (2019-07-02) 5 commits
 - cherry-pick/revert: advise using --skip
 - cherry-pick/revert: add --skip option
 - sequencer: use argv_array in reset_merge
 - sequencer: rename reset_for_rollback to reset_merge
 - sequencer: add advice for revert

 "git cherry-pick/revert" learned a new "--skip" action.

 Will merge to 'next'.


* tg/stash-ref-by-index-fix (2019-06-19) 1 commit
  (merged to 'next' on 2019-06-26 at ee2e6308ae)
 + stash: fix show referencing stash index

 "git stash show 23" used to work, but no more after getting
 rewritten in C; this regression has been corrected.

 Will merge to 'master'.


* js/gcc-8-and-9 (2019-06-13) 4 commits
  (merged to 'next' on 2019-06-27 at 92bb0db3c7)
 + config: avoid calling `labs()` on too-large data type
 + winansi: simplify loading the GetCurrentConsoleFontEx() function
 + kwset: allow building with GCC 8
 + poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
 (this branch is used by rs/config-unit-parsing.)

 Code clean-up for new compilers.

 Will merge to 'master'.
 The 'kwset' one may get a wholesale replacement, either with new
 version of kwset from upstream or removal of its users, but in the
 meantime, it is probably OK to merge it down.


* pw/add-p-recount (2019-06-13) 1 commit
  (merged to 'next' on 2019-06-26 at 63e063d65d)
 + add -p: fix checkout -p with pathological context

 "git checkout -p" needs to selectively apply a patch in reverse,
 which did not work well.

 Will merge to 'master'.


* rs/avoid-overflow-in-midpoint-computation (2019-06-13) 1 commit
  (merged to 'next' on 2019-06-26 at e6bd5b496b)
 + cleanup: fix possible overflow errors in binary search, part 2

 Code clean-up to avoid signed integer overlaps during binary search.

 Will merge to 'master'.


* js/t3404-typofix (2019-06-14) 1 commit
  (merged to 'next' on 2019-06-26 at ba3fcc1fc1)
 + t3404: fix a typo

 Typofix.

 Will merge to 'master'.


* mo/hpux-dynpath (2019-06-07) 1 commit
  (merged to 'next' on 2019-06-26 at 5add3b28b2)
 + configure: Detect linking style for HP aCC on HP-UX

 Auto-detect how to tell HP-UX aCC where to use dynamically linked
 libraries from at runtime.

 Will merge to 'master'.


* js/mergetool-optim (2019-06-12) 4 commits
  (merged to 'next' on 2019-06-26 at 8ad650bfa8)
 + mergetool: use shell variable magic instead of `awk`
 + mergetool: dissect strings with shell variable magic instead of `expr`
 + t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
 + t7610-mergetool: do not place pipelines headed by `yes` in subshells

 "git mergetool" and its tests now spawn fewer subprocesses.

 Will merge to 'master'.


* cc/test-oidmap (2019-07-01) 6 commits
  (merged to 'next' on 2019-07-01 at 331a414a24)
 + t0016: add 'remove' subcommand test
 + test-oidmap: remove 'add' subcommand
  (merged to 'next' on 2019-06-27 at 247a4341ca)
 + test-hashmap: remove 'hash' command
 + oidmap: use sha1hash() instead of static hash() function
 + t: add t0016-oidmap.sh
 + t/helper: add test-oidmap.c

 Extend the test coverage a bit.

 Will merge to 'master'.


* ds/midx-expire-repack (2019-07-01) 12 commits
  (merged to 'next' on 2019-07-01 at c2a907f395)
 + t5319: use 'test-tool path-utils' instead of 'ls -l'
  (merged to 'next' on 2019-06-27 at 35e6e3b38d)
 + t5319-multi-pack-index.sh: test batch size zero
 + midx: add test that 'expire' respects .keep files
 + multi-pack-index: test expire while adding packs
 + midx: implement midx_repack()
 + multi-pack-index: prepare 'repack' subcommand
 + multi-pack-index: implement 'expire' subcommand
 + midx: refactor permutation logic and pack sorting
 + midx: simplify computation of pack name lengths
 + multi-pack-index: prepare for 'expire' subcommand
 + Docs: rearrange subcommands for multi-pack-index
 + repack: refactor pack deletion for future use

 "git multi-pack-index" learned expire and repack subcommands.

 Will merge to 'master'.


* md/sort-detached-head-first (2019-06-19) 1 commit
  (merged to 'next' on 2019-06-27 at dc50dbe045)
 + ref-filter: sort detached HEAD lines firstly

 "git branch --list" learned to always output the detached HEAD as
 the first item (when the HEAD is detached, of course), regardless
 of the locale.

 Will merge to 'master'.


* nd/completion-no-cache-failure (2019-06-12) 1 commit
  (merged to 'next' on 2019-06-26 at f7b5a0a622)
 + completion: do not cache if --git-completion-helper fails

 An incorrect list of options was cached after command line
 completion failed (e.g. trying to complete a command that requires
 a repository outside one), which has been corrected.

 Will merge to 'master'.


* sg/rebase-progress (2019-06-27) 5 commits
  (merged to 'next' on 2019-06-27 at 425dd45c81)
 + progress: use term_clear_line()
 + rebase: fix garbled progress display with '-x'
 + pager: add a helper function to clear the last line in the terminal
 + t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
 + t3404: modernize here doc style
 (this branch is used by pw/rebase-progress-test-cleanup.)

 Use "Erase in Line" CSI sequence that is already used in the editor
 support to clear cruft in the progress output.

 Will merge to 'master'.


* sg/trace2-rename (2019-06-27) 2 commits
  (merged to 'next' on 2019-06-27 at 6e189bdb20)
 + trace2: correct typo in technical documentation
  (merged to 'next' on 2019-06-26 at 8ee228c455)
 + Revert "test-lib: whitelist GIT_TR2_* in the environment"

 Dev support update to help tracing out tests.

 Will merge to 'master'.


* fc/fetch-with-import-fix (2019-06-04) 5 commits
  (merged to 'next' on 2019-06-26 at b7e7f359a9)
 + fetch: fix regression with transport helpers
 + fetch: make the code more understandable
 + fetch: trivial cleanup
 + t5801 (remote-helpers): add test to fetch tags
 + t5801 (remote-helpers): cleanup refspec stuff

 Code restructuring during 2.20 period broke fetching tags via
 "import" based transports.

 Will merge to 'master'.


* jl/status-reduce-vertical-blank (2019-06-21) 1 commit
 - status: remove the empty line after hints
 (this branch uses nd/switch-and-restore.)

 Extra blank lines in "git status" output have been reduced.

 Needs to wait on nd/switch-and-restore to stabilize.


* dl/config-alias-doc (2019-06-06) 2 commits
  (merged to 'next' on 2019-06-26 at 3776902022)
 + config/alias.txt: document alias accepting non-command first word
 + config/alias.txt: change " and ' to `

 Doc update.

 Will merge to 'master'.


* dl/includeif-onbranch (2019-06-05) 1 commit
  (merged to 'next' on 2019-06-27 at ef7250bbae)
 + config: learn the "onbranch:" includeIf condition

 The conditional inclusion mechanism learned to base the choice on
 the branch the HEAD currently is on.

 Will merge to 'master'.


* ds/commit-graph-incremental (2019-06-19) 18 commits
  (merged to 'next' on 2019-07-03 at 5dee5edbdf)
 + commit-graph: test verify across alternates
 + commit-graph: normalize commit-graph filenames
 + commit-graph: test --split across alternate without --split
 + commit-graph: test octopus merges with --split
 + commit-graph: clean up chains after flattened write
 + commit-graph: verify chains with --shallow mode
 + commit-graph: create options for split files
 + commit-graph: expire commit-graph files
 + commit-graph: allow cross-alternate chains
 + commit-graph: merge commit-graph chains
 + commit-graph: add --split option to builtin
 + commit-graph: write commit-graph chains
 + commit-graph: rearrange chunk count logic
 + commit-graph: add base graphs chunk
 + commit-graph: load commit-graph chains
 + commit-graph: rename commit_compare to oid_compare
 + commit-graph: prepare for commit-graph chains
 + commit-graph: document commit-graph chains
 (this branch uses ds/close-object-store and ds/commit-graph-write-refactor.)

 The commits in a repository can be described by multiple
 commit-graph files now, which allows the commit-graph files to be
 updated incrementally.

 Will cook in 'next'.


* tm/tag-gpgsign-config (2019-06-05) 1 commit
  (merged to 'next' on 2019-06-26 at 015709def5)
 + tag: add tag.gpgSign config option to force all tags be GPG-signed

 A new tag.gpgSign configuration variable turns "git tag -a" into
 "git tag -s".

 Will merge to 'master'.


* po/doc-branch (2019-05-29) 1 commit
  (merged to 'next' on 2019-06-26 at 0debcb13e5)
 + doc branch: provide examples for listing remote tracking branches

 Doc update.

 Will merge to 'master'.


* ds/close-object-store (2019-06-12) 3 commits
  (merged to 'next' on 2019-06-26 at 86b60f2631)
 + packfile: rename close_all_packs to close_object_store
 + packfile: close commit-graph in close_all_packs
 + commit-graph: use raw_object_store when closing
 (this branch is used by ds/commit-graph-incremental; uses ds/commit-graph-write-refactor.)

 The commit-graph file is now part of the "files that the runtime
 may keep open file descriptors on, all of which would need to be
 closed when done with the object store", and the file descriptor to
 an existing commit-graph file now is closed before "gc" finalizes a
 new instance to replace it.

 Will merge to 'master'.


* pw/rebase-abort-clean-rewritten (2019-05-15) 4 commits
  (merged to 'next' on 2019-06-27 at 97c9f12c4d)
 + rebase --abort/--quit: cleanup refs/rewritten
 + sequencer: return errors from sequencer_remove_state()
 + rebase: warn if state directory cannot be removed
 + rebase: fix a memory leak

 "git rebase --abort" used to leave refs/rewritten/ when concluding
 "git rebase -r", which has been corrected.

 Will merge to 'master'.
 cf. <2a37d4c2-6eec-548d-0bd0-12bbd49c8071@gmail.com>


* nb/branch-show-other-worktrees-head (2019-05-07) 3 commits
  (merged to 'next' on 2019-06-26 at ae3b7a626d)
 + branch: add worktree info on verbose output
 + branch: update output to include worktree info
 + ref-filter: add worktreepath atom

 "git branch --list" learned to show branches that are checked out
 in other worktrees connected to the same repository prefixed with
 '+', similar to the way the currently checked out branch is shown
 with '*' in front.

 Will merge to 'master'.


* cc/multi-promisor (2019-06-25) 15 commits
 - Move core_partial_clone_filter_default to promisor-remote.c
 - Move repository_format_partial_clone to promisor-remote.c
 - Remove fetch-object.{c,h} in favor of promisor-remote.{c,h}
 - remote: add promisor and partial clone config to the doc
 - partial-clone: add multiple remotes in the doc
 - t0410: test fetching from many promisor remotes
 - builtin/fetch: remove unique promisor remote limitation
 - promisor-remote: parse remote.*.partialclonefilter
 - Use promisor_remote_get_direct() and has_promisor_remote()
 - promisor-remote: use repository_format_partial_clone
 - promisor-remote: add promisor_remote_reinit()
 - promisor-remote: implement promisor_remote_get_direct()
 - Add initial support for many promisor remotes
 - fetch-object: make functions return an error code
 - t0410: remove pipes after git commands

 Teach the lazy clone machinery that there can be more than one
 promisor remote and consult them in order when downloading missing
 objects on demand.

 There is a bit of interaction with md/list-objects-filter-combo
 topic, whose conflict resolution I have no confidence in X-<.
 Extra sets of eyes are appreciated.


* nd/switch-and-restore (2019-06-20) 46 commits
  (merged to 'next' on 2019-06-27 at 85f83ad8d6)
 + completion: disable dwim on "git switch -d"
 + switch: allow to switch in the middle of bisect
 + t2027: use test_must_be_empty
 + Declare both git-switch and git-restore experimental
 + help: move git-diff and git-reset to different groups
 + doc: promote "git restore"
 + user-manual.txt: prefer 'merge --abort' over 'reset --hard'
 + completion: support restore
 + t: add tests for restore
 + restore: support --patch
 + restore: replace --force with --ignore-unmerged
 + restore: default to --source=HEAD when only --staged is specified
 + restore: reject invalid combinations with --staged
 + restore: add --worktree and --staged
 + checkout: factor out worktree checkout code
 + restore: disable overlay mode by default
 + restore: make pathspec mandatory
 + restore: take tree-ish from --source option instead
 + checkout: split part of it to new command 'restore'
 + doc: promote "git switch"
 + completion: support switch
 + t: add tests for switch
 + switch: make --orphan switch to an empty tree
 + switch: reject if some operation is in progress
 + switch: no worktree status unless real branch switch happens
 + switch: implicit dwim, use --no-guess to disable it
 + switch: add short option for --detach
 + switch: only allow explicit detached HEAD
 + switch: reject "do nothing" case
 + switch: stop accepting pathspec
 + switch: remove -l
 + switch: add --discard-changes
 + switch: better names for -b and -B
 + checkout: split part of it to new command 'switch'
 + checkout: split options[] array in three pieces
 + checkout: move 'confict_style' and 'dwim_..' to checkout_opts
 + checkout: make "opts" in cmd_checkout() a pointer
 + checkout: factor out some code in parse_branchname_arg()
 + checkout: keep most #include sorted
 + checkout: inform the user when removing branch state
 + checkout: advice how to get out of detached HEAD mode
 + t: rename t2014-switch.sh to t2014-checkout-switch.sh
 + git-checkout.txt: fix monospace typeset
 + doc: document --overwrite-ignore
 + git-checkout.txt: fix one syntax line
 + git-checkout.txt: spell out --no-option
 (this branch is used by jl/status-reduce-vertical-blank.)

 Two new commands "git switch" and "git restore" are introduced to
 split "checking out a branch to work on advancing its history" and
 "checking out paths out of the index and/or a tree-ish to work on
 advancing the current history" out of the single "git checkout"
 command.

 Will merge to 'master'.
 cf. <20190329103919.15642-1-pclouds@gmail.com> (switch v6)
 cf. <20190425094600.15673-1-pclouds@gmail.com> (restore v3)


* jc/format-patch-noclobber (2019-02-22) 1 commit
 - format-patch: --no-clobber refrains from overwriting output files

 "git format-patch" used to overwrite an existing patch/cover-letter
 file.  A new "--no-clobber" option stops it.

 Undecided but inclined to discard.


* am/p4-branches-excludes (2019-04-02) 8 commits
  (merged to 'next' on 2019-06-27 at 5b4fb87c45)
 + git-p4: respect excluded paths when detecting branches
 + git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
 + git-p4: don't exclude other files with same prefix
 + git-p4: add failing test for "don't exclude other files with same prefix"
 + git-p4: don't groom exclude path list on every commit
 + git-p4: match branches case insensitively if configured
 + git-p4: add failing test for "git-p4: match branches case insensitively if configured"
 + git-p4: detect/prevent infinite loop in gitCommitByP4Change()

 "git p4" update.

 Will merge to 'master'.


* dl/rebase-i-keep-base (2019-04-25) 6 commits
 - rebase: teach rebase --keep-base
 - rebase: fast-forward --fork-point in more cases
 - rebase: fast-forward --onto in more cases
 - rebase: refactor can_fast_forward into goto tower
 - t3432: test rebase fast-forward behavior
 - t3431: add rebase --fork-point tests

 "git rebase --keep-base <upstream>" tries to find the original base
 of the topic being rebased and rebase on top of that same base,
 which is useful when running the "git rebase -i" (and its limited
 variant "git rebase -x").

 The command also has learned to fast-forward in more cases where it
 can instead of replaying to recreate identical commits.

 On hold.
 cf. <20190508001252.15752-1-avarab@gmail.com>
 cf. <xmqqa7fxionx.fsf@gitster-ct.c.googlers.com>


* ds/commit-graph-write-refactor (2019-06-12) 11 commits
  (merged to 'next' on 2019-06-26 at 5430eafe51)
 + commit-graph: extract write_commit_graph_file()
 + commit-graph: extract copy_oids_to_commits()
 + commit-graph: extract count_distinct_commits()
 + commit-graph: extract fill_oids_from_all_packs()
 + commit-graph: extract fill_oids_from_commit_hex()
 + commit-graph: extract fill_oids_from_packs()
 + commit-graph: create write_commit_graph_context
 + commit-graph: remove Future Work section
 + commit-graph: collapse parameters into flags
 + commit-graph: return with errors during write
 + commit-graph: fix the_repository reference
 (this branch is used by ds/close-object-store and ds/commit-graph-incremental.)

 Renamed from commit-graph-format-v2 and changed scope.

 Will merge to 'master'.


* br/blame-ignore (2019-07-01) 11 commits
  (merged to 'next' on 2019-07-01 at f4b79421c9)
 + t8014: remove unnecessary braces
 + blame: drop some unused function parameters
  (merged to 'next' on 2019-06-27 at 36b91a787f)
 + blame: add a test to cover blame_coalesce()
 + blame: use the fingerprint heuristic to match ignored lines
 + blame: add a fingerprint heuristic to match ignored lines
 + blame: optionally track line fingerprints during fill_blame_origin()
 + blame: add config options for the output of ignored or unblamable lines
 + blame: add the ability to ignore commits and their changes
 + blame: use a helper function in blame_chunk()
 + Move oidset_parse_file() to oidset.c
 + fsck: rename and touch up init_skiplist()

 "git blame" learned to "ignore" commits in the history, whose
 effects (as well as their presence) get ignored.

 Will cook in 'next'.

^ permalink raw reply	[relevance 1%]

* What's cooking in git.git (Jun 2019, #07; Fri, 28)
@ 2019-06-28 22:17  1% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2019-06-28 22:17 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The third batch of topics post 2.22 are now in 'master', and the tip
of 'next' has been rewound.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* cb/windows-manifest (2019-06-27) 1 commit
 - mingw: embed a manifest to trick UAC into Doing The Right Thing

 Windows update.

 Will merge to 'next'.


* js/mingw-gcc-stash-protect (2019-06-27) 1 commit
 - mingw: enable stack smashing protector

 Windows update.

 Will merge to 'next'.


* js/mingw-use-utf8 (2019-06-27) 2 commits
 - mingw: use Unicode functions explicitly
 - mingw: get pw_name in UTF-8 format

 Windows update.

 Will merge to 'next'.


* kb/windows-force-utf8 (2019-06-27) 1 commit
 - gettext: always use UTF-8 on native Windows

 Windows update.

 Will merge to 'next'.


* js/rebase-reschedule-applies-only-to-interactive (2019-06-27) 1 commit
 - rebase: ignore rebase.reschedulefailedexec unless interactive

 The configuration variable rebase.rescheduleFailedExec should be
 effective only while running an interactive rebase and should not
 affect anything when running an non-interactive one, which was not
 the case.  This has been corrected.

 Almost there, modulo minor nits.
 


* jt/t5551-test-chunked (2019-06-27) 1 commit
 - t5551: test usage of chunked encoding explicitly

 Update smart-http test.

 Will merge to 'next'.


* tb/ref-filter-multiple-patterns (2019-06-27) 1 commit
 - ref-filter.c: find disjoint pattern prefixes

 "git for-each-ref" with multiple patterns have been optimized.

 Will merge to 'next'.


* ew/repack-with-bitmaps-by-default (2019-06-28) 1 commit
 - repack: disable bitmaps-by-default if .keep files exist

 Generation of pack bitmaps are now disabled when .keep files exist,
 as these are mutually exclusive features.


* jk/br-blame-ignore-unused-fix (2019-06-28) 1 commit
 - blame: drop some unused function parameters
 (this branch uses br/blame-ignore.)

 Move this into the base topic, once acked.


* jk/check-connected-with-alternates (2019-06-28) 1 commit
 - check_connected: assume alternate ref tips are valid

 The tips of refs from the alternate object store can be used as
 starting point for reachability computation now.

 Will merge to 'next'.


* jk/test-commit-bulk (2019-06-28) 6 commits
 - t6200: use test_commit_bulk
 - t5703: use test_commit_bulk
 - t5702: use test_commit_bulk
 - t3311: use test_commit_bulk
 - t5310: increase the number of bitmapped commits
 - test-lib: introduce test_commit_bulk

 A test helper has been introduced to optimize preparation of test
 repositories with many simple commits, and a handful of test
 scripts have been updated to use it.

 Will merge to 'next'.
 I think I spotted one unused command, which we may want to remove, though.

--------------------------------------------------
[Stalled]

* jn/unknown-index-extensions (2018-11-21) 2 commits
 - index: offer advice for unknown index extensions
 - index: do not warn about unrecognized extensions

 A bit too alarming warning given when unknown index extensions
 exist is getting revamped.

 Expecting a reroll.


* jc/format-patch-delay-message-id (2019-04-05) 1 commit
 - format-patch: move message-id and related headers to the end

 The location "git format-patch --thread" adds the Message-Id:
 header in the series of header fields has been moved down, which
 may help working around a suspected bug in GMail MSA, reported at
 <CAHk-=whP1stFZNAaJiMi5eZ9rj0MRt20Y_yHVczZPH+O01d+sA@mail.gmail.com>

 Waiting for feedback to see if it truly helps.
 Needs tests.


* jt/fetch-cdn-offload (2019-03-12) 9 commits
 - SQUASH???
 - upload-pack: send part of packfile response as uri
 - fetch-pack: support more than one pack lockfile
 - upload-pack: refactor reading of pack-objects out
 - Documentation: add Packfile URIs design doc
 - Documentation: order protocol v2 sections
 - http-fetch: support fetching packfiles by URL
 - http: improve documentation of http_pack_request
 - http: use --stdin when getting dumb HTTP pack

 WIP for allowing a response to "git fetch" to instruct the bulk of
 the pack contents to be instead taken from elsewhere (aka CDN).

 Stalled


* js/protocol-advertise-multi (2018-12-28) 1 commit
 - protocol: advertise multiple supported versions

 The transport layer has been updated so that the protocol version
 used can be negotiated between the parties, by the initiator
 listing the protocol versions it is willing to talk, and the other
 side choosing from one of them.

 Expecting a reroll.
 cf. <CANq=j3u-zdb_FvNJGPCmygNMScseav63GhVvBX3NcVS4f7TejA@mail.gmail.com>


* mk/use-size-t-in-zlib (2018-10-15) 1 commit
 - zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".


* dl/remote-save-to-push (2018-12-11) 1 commit
 - remote: add --save-to-push option to git remote set-url

 "git remote set-url" learned a new option that moves existing value
 of the URL field to pushURL field of the remote before replacing
 the URL field with a new value.

 Anybody who wants to champion this topic?
 I am personally not yet quite convinced if this is worth pursuing.

--------------------------------------------------
[Cooking]

* ab/test-env (2019-06-21) 8 commits
 - tests: make GIT_TEST_FAIL_PREREQS a boolean
 - tests: replace test_tristate with "git env--helper"
 - tests README: re-flow a previously changed paragraph
 - tests: make GIT_TEST_GETTEXT_POISON a boolean
 - t6040 test: stop using global "script" variable
 - config.c: refactor die_bad_number() to not call gettext() early
 - env--helper: new undocumented builtin wrapping git_env_*()
 - config tests: simplify include cycle test

 Many GIT_TEST_* environment variables control various aspects of
 how our tests are run, but a few followed "non-empty is true, empty
 or unset is false" while others followed the usual "there are a few
 ways to spell true, like yes, on, etc., and also ways to spell
 false, like no, off, etc." convention.


* cc/first-contrib-tutorial (2019-06-24) 1 commit
  (merged to 'next' on 2019-06-27 at a9f2ab2f21)
 + doc: improve usage string in MyFirstContribution

 Update docs used in a tutorial.

 Will merge to 'master'.


* ds/early-access (2019-06-20) 3 commits
 - repo-settings: pack.useSparse=true
 - repo-settings: use index.version=4 by default
 - repo-settings: create core.featureAdoptionRate setting

 A mechanism to enable newish configuration settings in bulk has
 been invented.

 Looked mostly sane, modulo minor nits.


* jh/msvc (2019-06-25) 20 commits
  (merged to 'next' on 2019-06-27 at 5a16e3d67c)
 + msvc: ignore .dll and incremental compile output
 + msvc: avoid debug assertion windows in Debug Mode
 + msvc: do not pretend to support all signals
 + msvc: add pragmas for common warnings
 + msvc: add a compile-time flag to allow detailed heap debugging
 + msvc: support building Git using MS Visual C++
 + msvc: update Makefile to allow for spaces in the compiler path
 + msvc: fix detect_msys_tty()
 + msvc: define ftello()
 + msvc: do not re-declare the timespec struct
 + msvc: mark a variable as non-const
 + msvc: define O_ACCMODE
 + msvc: include sigset_t definition
 + msvc: fix dependencies of compat/msvc.c
 + mingw: replace mingw_startup() hack
 + obstack: fix compiler warning
 + cache-tree/blame: avoid reusing the DEBUG constant
 + t0001 (mingw): do not expect a specific order of stdout/stderr
 + Mark .bat files as requiring CR/LF endings
 + mingw: fix a typo in the msysGit-specific section

 Support to build with MSVC has been updated.

 Will merge to 'master'.


* jk/delta-islands-progress-fix (2019-06-20) 1 commit
  (merged to 'next' on 2019-06-27 at 644526ba73)
 + delta-islands: respect progress flag

 The codepath to compute delta islands used to spew progress output
 without giving the callers any way to squelch it, which has been
 fixed.

 Will merge to 'master'.


* jk/oidhash (2019-06-20) 17 commits
  (merged to 'next' on 2019-06-27 at 7bf6b87738)
 + hashmap: convert sha1hash() to oidhash()
 + hash.h: move object_id definition from cache.h
 + khash: rename oid helper functions
 + khash: drop sha1-specific map types
 + pack-bitmap: convert khash_sha1 maps into kh_oid_map
 + delta-islands: convert island_marks khash to use oids
 + khash: rename kh_oid_t to kh_oid_set
 + khash: drop broken oid_map typedef
 + object: convert create_object() to use object_id
 + object: convert internal hash_obj() to object_id
 + object: convert lookup_object() to use object_id
 + object: convert lookup_unknown_object() to use object_id
 + pack-objects: convert locate_object_entry_hash() to object_id
 + pack-objects: convert packlist_find() to use object_id
 + pack-bitmap-write: convert some helpers to use object_id
 + upload-pack: rename a "sha1" variable to "oid"
 + describe: fix accidental oid/hash type-punning

 Code clean-up to remove hardcoded SHA-1 hash from manty places.

 Will merge to 'master'.


* nd/fetch-capability-tweak (2019-06-20) 3 commits
  (merged to 'next' on 2019-06-27 at dedbcb31a1)
 + fetch-pack: print server version at the top in -v -v
 + fetch-pack: print all relevant supported capabilities with -v -v
 + fetch-pack: move capability names out of i18n strings

 Protocol capabilities that go over wire should never be translated,
 but it was incorrectly marked for translation, which has been
 corrected.  The output of protocol capabilities for debugging has
 been tweaked a bit.

 Will merge to 'master'.


* nd/index-dump-in-json (2019-06-26) 11 commits
 - SQUASH???
 - t3008: use the new SINGLE_CPU prereq
 - read-cache.c: dump "IEOT" extension as json
 - read-cache.c: dump "EOIE" extension as json
 - resolve-undo.c: dump "REUC" extension as json
 - fsmonitor.c: dump "FSMN" extension as json
 - split-index.c: dump "link" extension as json
 - dir.c: dump "UNTR" extension as json
 - cache-tree.c: dump "TREE" extension as json
 - read-cache.c: dump common extension info in json
 - ls-files: add --json to dump the index

 "ls-files" learned "--debug-json" option to dump the contents and
 the extensions of the index file.

 At least the fixup at the tip needs to be squashed into the right
 commit.


* rs/config-unit-parsing (2019-06-24) 3 commits
  (merged to 'next' on 2019-06-27 at db633f85fe)
 + config: simplify parsing of unit factors
 + config: don't multiply in parse_unit_factor()
 + config: use unsigned_mult_overflows to check for overflows
 (this branch uses js/gcc-8-and-9.)

 The code to parse scaled numbers out of configuration files has
 been made more robust and also easier to follow.

 Will merge to 'master'.


* ab/fail-prereqs-in-test (2019-06-21) 1 commit
  (merged to 'next' on 2019-06-27 at 4df04aa1a0)
 + tests: mark two failing tests under FAIL_PREREQS

 Test updates.

 Will merge to 'master'.


* ds/fetch-disable-force-notice (2019-06-21) 3 commits
  (merged to 'next' on 2019-06-27 at 3ff4516f85)
 + pull: add --[no-]show-forced-updates passthrough
 + fetch: warn about forced updates in branch listing
 + fetch: add --[no-]show-forced-updates argument

 "git fetch" and "git pull" reports when a fetch results in
 non-fast-forward updates to let the user notice unusual situation.
 The commands learned "--no-shown-forced-updates" option to disable
 this safety feature.

 Will merge to 'master'.


* jh/status-aheadbehind (2019-06-21) 3 commits
  (merged to 'next' on 2019-06-27 at 362ee6b059)
 + status: ignore status.aheadbehind in porcelain formats
 + status: warn when a/b calculation takes too long
 + status: add status.aheadbehind setting

 "git status" can be told a non-standard default value for the
 "--[no-]ahead-behind" option with a new configuration variable
 status.aheadBehind.

 Will merge to 'master'.


* js/t0001-case-insensitive (2019-06-24) 1 commit
  (merged to 'next' on 2019-06-27 at 6c0001aebb)
 + t0001: fix on case-insensitive filesystems

 Test update.

 Will merge to 'master'.


* dr/progress-i18n (2019-06-24) 1 commit
 - l10n: localizable upload progress messages

 Progress messages have been made localizable.

 Not quite with the code duplication...


* jw/gitweb-sample-update (2019-06-24) 1 commit
  (merged to 'next' on 2019-06-27 at 30a5e91e76)
 + doc: don't use git.kernel.org as example gitweb URL

 Doc update.

 Will merge to 'master'.


* ms/submodule-foreach-fix (2019-06-25) 1 commit
  (merged to 'next' on 2019-06-27 at ccd37d4dac)
 + submodule foreach: fix recursion of options

 "git submodule foreach" did not protect command line options passed
 to the command to be run in each submodule correctly, when the
 "--recursive" option was in use.

 Will merge to 'master'.


* pw/status-with-corrupt-sequencer-state (2019-06-27) 3 commits
 - status: do not report errors in sequencer/todo
 - sequencer: factor out todo command name parsing
 - sequencer: always allow tab after command name

 The code to read state files used by the sequencer machinery for
 "git status" has been made more robust against a corrupt or stale
 state files.

 Will merge to 'next'.


* sg/t5551-fetch-smart-error-is-translated (2019-06-25) 1 commit
  (merged to 'next' on 2019-06-27 at 967c03da24)
 + t5551: use 'test_i18ngrep' to check translated output

 Test update.

 Will merge to 'master'.


* ab/no-kwset (2019-06-28) 9 commits
 - grep: use PCRE v2 for optimized fixed-string search
 - grep: remove the kwset optimization
 - grep: drop support for \0 in --fixed-strings <pattern>
 - grep: make the behavior for NUL-byte in patterns sane
 - grep tests: move binary pattern tests into their own file
 - grep tests: move "grep binary" alongside the rest
 - grep: inline the return value of a function call used only once
 - grep: don't use PCRE2?_UTF8 with "log --encoding=<non-utf8>"
 - log tests: test regex backends in "--encode=<enc>" tests

 Retire use of kwset library, which is an optimization for looking
 for fixed strings, with use of pcre2 JIT.

 Will merge to 'next'.


* mt/dir-iterator-updates (2019-06-25) 10 commits
 - clone: replace strcmp by fspathcmp
 - clone: use dir-iterator to avoid explicit dir traversal
 - clone: extract function from copy_or_link_directory
 - clone: copy hidden paths at local clone
 - dir-iterator: add flags parameter to dir_iterator_begin
 - dir-iterator: refactor state machine model
 - dir-iterator: use warning_errno when possible
 - dir-iterator: add tests for dir-iterator API
 - clone: better handle symlinked files at .git/objects/
 - clone: test for our behavior on odd objects/* content

 Adjust the dir-iterator API and apply it to the local clone
 optimization codepath.

 Is this ready for 'next'?


* nd/tree-walk-with-repo (2019-06-28) 7 commits
 - t7814: do not generate same commits in different repos
 - Use the right 'struct repository' instead of the_repository
 - match-trees.c: remove the_repo from shift_tree*()
 - tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
 - tree-walk.c: remove the_repo from get_tree_entry()
 - tree-walk.c: remove the_repo from fill_tree_descriptor()
 - sha1-file.c: remove the_repo from read_object_with_reference()

 The tree-walk API learned to pass an in-core repository
 instance throughout more codepaths.


* cb/fsmonitor-intfix (2019-06-17) 1 commit
  (merged to 'next' on 2019-06-26 at bed7c7e78b)
 + fsmonitor: avoid signed integer overflow / infinite loop

 Variable type fix.

 Will merge to 'master'.


* es/rev-list-no-object-names (2019-06-20) 1 commit
  (merged to 'next' on 2019-06-27 at 6d95228e01)
 + rev-list: teach --no-object-names to enable piping

 "git rev-list --objects" learned with "--no-object-names" option to
 squelch the path to the object that is used as a grouping hint for
 pack-objects.

 Will merge to 'master'.


* md/list-objects-filter-combo (2019-06-28) 10 commits
 - list-objects-filter-options: make parser void
 - list-objects-filter-options: clean up use of ALLOC_GROW
 - list-objects-filter-options: allow mult. --filter
 - strbuf: give URL-encoding API a char predicate fn
 - list-objects-filter-options: make filter_spec a string_list
 - list-objects-filter-options: move error check up
 - list-objects-filter: implement composite filters
 - list-objects-filter-options: always supply *errbuf
 - list-objects-filter: put omits set in filter struct
 - list-objects-filter: encapsulate filter components

 The list-objects-filter API (used to create a sparse/lazy clone)
 learned to take a combined filter specification.

 There is a bit of interaction with cc/multi-promisor topic, whose
 conflict resolution I have no confidence in X-<.


* pw/doc-synopsis-markup-opmode-options (2019-06-17) 1 commit
  (merged to 'next' on 2019-06-26 at 4258eddd2d)
 + show --continue/skip etc. consistently in synopsis

 Docfix.

 Will merge to 'master'.


* rs/copy-array (2019-06-17) 2 commits
  (merged to 'next' on 2019-06-26 at dfaa162f88)
 + use COPY_ARRAY for copying arrays
 + coccinelle: use COPY_ARRAY for copying arrays

 Code clean-up.

 Will merge to 'master'.


* cb/mkstemps-uint-type-fix (2019-06-19) 1 commit
  (merged to 'next' on 2019-06-26 at df44db4a69)
 + wrapper: avoid undefined behaviour in macOS

 Variable type fix.

 Will merge to 'master'.


* cb/xdiff-no-system-includes-in-dot-c (2019-06-19) 1 commit
 - xdiff: avoid accidental redefinition of LFS feature in OpenIndiana

 Compilation fix.

 Will be rerolled together with patches from the
 jk/no-system-includes-in-dot-c topic.


* jk/no-system-includes-in-dot-c (2019-06-19) 2 commits
 - wt-status.h: drop stdio.h include
 - verify-tag: drop signal.h include

 Compilation fix.

 Will be rerolled with the above.


* jk/trailers-use-config (2019-06-19) 1 commit
  (merged to 'next' on 2019-06-26 at 1ba8a7c2dd)
 + interpret-trailers: load default config

 "git interpret-trailers" always treated '#' as the comment
 character, regardless of core.commentChar setting, which has been
 corrected.

 Will merge to 'master'.


* nd/fetch-multi-gc-once (2019-06-19) 1 commit
  (merged to 'next' on 2019-06-27 at 0225ada5e2)
 + fetch: only run 'gc' once when fetching multiple remotes

 "git fetch" that grabs from a group of remotes learned to run the
 auto-gc only once at the very end.

 Will merge to 'master'.


* ra/cherry-pick-revert-skip (2019-06-24) 6 commits
 - cherry-pick/revert: advise using --skip
 - cherry-pick/revert: add --skip option
 - sequencer: use argv_array in reset_merge
 - sequencer: rename reset_for_rollback to reset_merge
 - sequencer: add advice for revert
 - advice: add sequencerInUse config variable

 "git cherry-pick/revert" learned a new "--skip" action.

 Will merge to 'next'.


* tg/stash-ref-by-index-fix (2019-06-19) 1 commit
  (merged to 'next' on 2019-06-26 at ee2e6308ae)
 + stash: fix show referencing stash index

 "git stash show 23" used to work, but no more after getting
 rewritten in C; this regression has been corrected.

 Will merge to 'master'.


* js/gcc-8-and-9 (2019-06-13) 4 commits
  (merged to 'next' on 2019-06-27 at 92bb0db3c7)
 + config: avoid calling `labs()` on too-large data type
 + winansi: simplify loading the GetCurrentConsoleFontEx() function
 + kwset: allow building with GCC 8
 + poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
 (this branch is used by rs/config-unit-parsing.)

 Code clean-up for new compilers.

 Will merge to 'master'.
 The 'kwset' one may get a wholesale replacement, either with new
 version of kwset from upstream or removal of its users, but in the
 meantime, it is probably OK to merge it down.


* pw/add-p-recount (2019-06-13) 1 commit
  (merged to 'next' on 2019-06-26 at 63e063d65d)
 + add -p: fix checkout -p with pathological context

 "git checkout -p" needs to selectively apply a patch in reverse,
 which did not work well.

 Will merge to 'master'.


* rs/avoid-overflow-in-midpoint-computation (2019-06-13) 1 commit
  (merged to 'next' on 2019-06-26 at e6bd5b496b)
 + cleanup: fix possible overflow errors in binary search, part 2

 Code clean-up to avoid signed integer overlaps during binary search.

 Will merge to 'master'.


* js/t3404-typofix (2019-06-14) 1 commit
  (merged to 'next' on 2019-06-26 at ba3fcc1fc1)
 + t3404: fix a typo

 Typofix.

 Will merge to 'master'.


* mo/hpux-dynpath (2019-06-07) 1 commit
  (merged to 'next' on 2019-06-26 at 5add3b28b2)
 + configure: Detect linking style for HP aCC on HP-UX

 Auto-detect how to tell HP-UX aCC where to use dynamically linked
 libraries from at runtime.

 Will merge to 'master'.


* js/mergetool-optim (2019-06-12) 4 commits
  (merged to 'next' on 2019-06-26 at 8ad650bfa8)
 + mergetool: use shell variable magic instead of `awk`
 + mergetool: dissect strings with shell variable magic instead of `expr`
 + t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
 + t7610-mergetool: do not place pipelines headed by `yes` in subshells

 "git mergetool" and its tests now spawn fewer subprocesses.

 Will merge to 'master'.


* cc/test-oidmap (2019-06-17) 4 commits
  (merged to 'next' on 2019-06-27 at 247a4341ca)
 + test-hashmap: remove 'hash' command
 + oidmap: use sha1hash() instead of static hash() function
 + t: add t0016-oidmap.sh
 + t/helper: add test-oidmap.c

 Extend the test coverage a bit.

 Will merge to 'master'.


* ds/midx-expire-repack (2019-06-11) 11 commits
  (merged to 'next' on 2019-06-27 at 35e6e3b38d)
 + t5319-multi-pack-index.sh: test batch size zero
 + midx: add test that 'expire' respects .keep files
 + multi-pack-index: test expire while adding packs
 + midx: implement midx_repack()
 + multi-pack-index: prepare 'repack' subcommand
 + multi-pack-index: implement 'expire' subcommand
 + midx: refactor permutation logic and pack sorting
 + midx: simplify computation of pack name lengths
 + multi-pack-index: prepare for 'expire' subcommand
 + Docs: rearrange subcommands for multi-pack-index
 + repack: refactor pack deletion for future use

 "git multi-pack-index" learned expire and repack subcommands.

 Will merge to 'master'.


* md/sort-detached-head-first (2019-06-19) 1 commit
  (merged to 'next' on 2019-06-27 at dc50dbe045)
 + ref-filter: sort detached HEAD lines firstly

 "git branch --list" learned to always output the detached HEAD as
 the first item (when the HEAD is detached, of course), regardless
 of the locale.

 Will merge to 'master'.


* nd/completion-no-cache-failure (2019-06-12) 1 commit
  (merged to 'next' on 2019-06-26 at f7b5a0a622)
 + completion: do not cache if --git-completion-helper fails

 An incorrect list of options was cached after command line
 completion failed (e.g. trying to complete a command that requires
 a repository outside one), which has been corrected.

 Will merge to 'master'.


* sg/rebase-progress (2019-06-27) 5 commits
  (merged to 'next' on 2019-06-27 at 425dd45c81)
 + progress: use term_clear_line()
 + rebase: fix garbled progress display with '-x'
 + pager: add a helper function to clear the last line in the terminal
 + t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
 + t3404: modernize here doc style

 Use "Erase in Line" CSI sequence that is already used in the editor
 support to clear cruft in the progress output.

 Will merge to 'master'.


* sg/trace2-rename (2019-06-27) 2 commits
  (merged to 'next' on 2019-06-27 at 6e189bdb20)
 + trace2: correct typo in technical documentation
  (merged to 'next' on 2019-06-26 at 8ee228c455)
 + Revert "test-lib: whitelist GIT_TR2_* in the environment"

 Dev support update to help tracing out tests.

 Will merge to 'master'.


* fc/fetch-with-import-fix (2019-06-04) 5 commits
  (merged to 'next' on 2019-06-26 at b7e7f359a9)
 + fetch: fix regression with transport helpers
 + fetch: make the code more understandable
 + fetch: trivial cleanup
 + t5801 (remote-helpers): add test to fetch tags
 + t5801 (remote-helpers): cleanup refspec stuff

 Code restructuring during 2.20 period broke fetching tags via
 "import" based transports.

 Will merge to 'master'.


* jl/status-reduce-vertical-blank (2019-06-21) 1 commit
 - status: remove the empty line after hints
 (this branch uses nd/switch-and-restore.)

 Extra blank lines in "git status" output have been reduced.

 Needs to wait on nd/switch-and-restore to stabilize.


* dl/config-alias-doc (2019-06-06) 2 commits
  (merged to 'next' on 2019-06-26 at 3776902022)
 + config/alias.txt: document alias accepting non-command first word
 + config/alias.txt: change " and ' to `

 Doc update.

 Will merge to 'master'.


* dl/includeif-onbranch (2019-06-05) 1 commit
  (merged to 'next' on 2019-06-27 at ef7250bbae)
 + config: learn the "onbranch:" includeIf condition

 The conditional inclusion mechanism learned to base the choice on
 the branch the HEAD currently is on.

 Will merge to 'master'.


* ds/commit-graph-incremental (2019-06-19) 18 commits
 - commit-graph: test verify across alternates
 - commit-graph: normalize commit-graph filenames
 - commit-graph: test --split across alternate without --split
 - commit-graph: test octopus merges with --split
 - commit-graph: clean up chains after flattened write
 - commit-graph: verify chains with --shallow mode
 - commit-graph: create options for split files
 - commit-graph: expire commit-graph files
 - commit-graph: allow cross-alternate chains
 - commit-graph: merge commit-graph chains
 - commit-graph: add --split option to builtin
 - commit-graph: write commit-graph chains
 - commit-graph: rearrange chunk count logic
 - commit-graph: add base graphs chunk
 - commit-graph: load commit-graph chains
 - commit-graph: rename commit_compare to oid_compare
 - commit-graph: prepare for commit-graph chains
 - commit-graph: document commit-graph chains
 (this branch uses ds/close-object-store and ds/commit-graph-write-refactor.)

 The commits in a repository can be described by multiple
 commit-graph files now, which allows the commit-graph files to be
 updated incrementally.

 Will merge to 'next'.


* tm/tag-gpgsign-config (2019-06-05) 1 commit
  (merged to 'next' on 2019-06-26 at 015709def5)
 + tag: add tag.gpgSign config option to force all tags be GPG-signed

 A new tag.gpgSign configuration variable turns "git tag -a" into
 "git tag -s".

 Will merge to 'master'.


* po/doc-branch (2019-05-29) 1 commit
  (merged to 'next' on 2019-06-26 at 0debcb13e5)
 + doc branch: provide examples for listing remote tracking branches

 Doc update.

 Will merge to 'master'.


* ds/close-object-store (2019-06-12) 3 commits
  (merged to 'next' on 2019-06-26 at 86b60f2631)
 + packfile: rename close_all_packs to close_object_store
 + packfile: close commit-graph in close_all_packs
 + commit-graph: use raw_object_store when closing
 (this branch is used by ds/commit-graph-incremental; uses ds/commit-graph-write-refactor.)

 The commit-graph file is now part of the "files that the runtime
 may keep open file descriptors on, all of which would need to be
 closed when done with the object store", and the file descriptor to
 an existing commit-graph file now is closed before "gc" finalizes a
 new instance to replace it.

 Will merge to 'master'.


* pw/rebase-abort-clean-rewritten (2019-05-15) 4 commits
  (merged to 'next' on 2019-06-27 at 97c9f12c4d)
 + rebase --abort/--quit: cleanup refs/rewritten
 + sequencer: return errors from sequencer_remove_state()
 + rebase: warn if state directory cannot be removed
 + rebase: fix a memory leak

 "git rebase --abort" used to leave refs/rewritten/ when concluding
 "git rebase -r", which has been corrected.

 Will merge to 'master'.
 cf. <2a37d4c2-6eec-548d-0bd0-12bbd49c8071@gmail.com>


* nb/branch-show-other-worktrees-head (2019-05-07) 3 commits
  (merged to 'next' on 2019-06-26 at ae3b7a626d)
 + branch: add worktree info on verbose output
 + branch: update output to include worktree info
 + ref-filter: add worktreepath atom

 "git branch --list" learned to show branches that are checked out
 in other worktrees connected to the same repository prefixed with
 '+', similar to the way the currently checked out branch is shown
 with '*' in front.

 Will merge to 'master'.


* cc/multi-promisor (2019-06-25) 15 commits
 - Move core_partial_clone_filter_default to promisor-remote.c
 - Move repository_format_partial_clone to promisor-remote.c
 - Remove fetch-object.{c,h} in favor of promisor-remote.{c,h}
 - remote: add promisor and partial clone config to the doc
 - partial-clone: add multiple remotes in the doc
 - t0410: test fetching from many promisor remotes
 - builtin/fetch: remove unique promisor remote limitation
 - promisor-remote: parse remote.*.partialclonefilter
 - Use promisor_remote_get_direct() and has_promisor_remote()
 - promisor-remote: use repository_format_partial_clone
 - promisor-remote: add promisor_remote_reinit()
 - promisor-remote: implement promisor_remote_get_direct()
 - Add initial support for many promisor remotes
 - fetch-object: make functions return an error code
 - t0410: remove pipes after git commands

 Teach the lazy clone machinery that there can be more than one
 promisor remote and consult them in order when downloading missing
 objects on demand.

 There is a bit of interaction with md/list-objects-filter-combo
 topic, whose conflict resolution I have no confidence in X-<.


* nd/switch-and-restore (2019-06-20) 46 commits
  (merged to 'next' on 2019-06-27 at 85f83ad8d6)
 + completion: disable dwim on "git switch -d"
 + switch: allow to switch in the middle of bisect
 + t2027: use test_must_be_empty
 + Declare both git-switch and git-restore experimental
 + help: move git-diff and git-reset to different groups
 + doc: promote "git restore"
 + user-manual.txt: prefer 'merge --abort' over 'reset --hard'
 + completion: support restore
 + t: add tests for restore
 + restore: support --patch
 + restore: replace --force with --ignore-unmerged
 + restore: default to --source=HEAD when only --staged is specified
 + restore: reject invalid combinations with --staged
 + restore: add --worktree and --staged
 + checkout: factor out worktree checkout code
 + restore: disable overlay mode by default
 + restore: make pathspec mandatory
 + restore: take tree-ish from --source option instead
 + checkout: split part of it to new command 'restore'
 + doc: promote "git switch"
 + completion: support switch
 + t: add tests for switch
 + switch: make --orphan switch to an empty tree
 + switch: reject if some operation is in progress
 + switch: no worktree status unless real branch switch happens
 + switch: implicit dwim, use --no-guess to disable it
 + switch: add short option for --detach
 + switch: only allow explicit detached HEAD
 + switch: reject "do nothing" case
 + switch: stop accepting pathspec
 + switch: remove -l
 + switch: add --discard-changes
 + switch: better names for -b and -B
 + checkout: split part of it to new command 'switch'
 + checkout: split options[] array in three pieces
 + checkout: move 'confict_style' and 'dwim_..' to checkout_opts
 + checkout: make "opts" in cmd_checkout() a pointer
 + checkout: factor out some code in parse_branchname_arg()
 + checkout: keep most #include sorted
 + checkout: inform the user when removing branch state
 + checkout: advice how to get out of detached HEAD mode
 + t: rename t2014-switch.sh to t2014-checkout-switch.sh
 + git-checkout.txt: fix monospace typeset
 + doc: document --overwrite-ignore
 + git-checkout.txt: fix one syntax line
 + git-checkout.txt: spell out --no-option
 (this branch is used by jl/status-reduce-vertical-blank.)

 Two new commands "git switch" and "git restore" are introduced to
 split "checking out a branch to work on advancing its history" and
 "checking out paths out of the index and/or a tree-ish to work on
 advancing the current history" out of the single "git checkout"
 command.

 Will merge to 'master'.
 cf. <20190329103919.15642-1-pclouds@gmail.com> (switch v6)
 cf. <20190425094600.15673-1-pclouds@gmail.com> (restore v3)


* jc/format-patch-noclobber (2019-02-22) 1 commit
 - format-patch: --no-clobber refrains from overwriting output files

 "git format-patch" used to overwrite an existing patch/cover-letter
 file.  A new "--no-clobber" option stops it.

 Undecided but inclined to discard.


* am/p4-branches-excludes (2019-04-02) 8 commits
  (merged to 'next' on 2019-06-27 at 5b4fb87c45)
 + git-p4: respect excluded paths when detecting branches
 + git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
 + git-p4: don't exclude other files with same prefix
 + git-p4: add failing test for "don't exclude other files with same prefix"
 + git-p4: don't groom exclude path list on every commit
 + git-p4: match branches case insensitively if configured
 + git-p4: add failing test for "git-p4: match branches case insensitively if configured"
 + git-p4: detect/prevent infinite loop in gitCommitByP4Change()

 "git p4" update.

 Will merge to 'master'.


* dl/rebase-i-keep-base (2019-04-25) 6 commits
 - rebase: teach rebase --keep-base
 - rebase: fast-forward --fork-point in more cases
 - rebase: fast-forward --onto in more cases
 - rebase: refactor can_fast_forward into goto tower
 - t3432: test rebase fast-forward behavior
 - t3431: add rebase --fork-point tests

 "git rebase --keep-base <upstream>" tries to find the original base
 of the topic being rebased and rebase on top of that same base,
 which is useful when running the "git rebase -i" (and its limited
 variant "git rebase -x").

 The command also has learned to fast-forward in more cases where it
 can instead of replaying to recreate identical commits.

 On hold.
 cf. <20190508001252.15752-1-avarab@gmail.com>
 cf. <xmqqa7fxionx.fsf@gitster-ct.c.googlers.com>


* ds/commit-graph-write-refactor (2019-06-12) 11 commits
  (merged to 'next' on 2019-06-26 at 5430eafe51)
 + commit-graph: extract write_commit_graph_file()
 + commit-graph: extract copy_oids_to_commits()
 + commit-graph: extract count_distinct_commits()
 + commit-graph: extract fill_oids_from_all_packs()
 + commit-graph: extract fill_oids_from_commit_hex()
 + commit-graph: extract fill_oids_from_packs()
 + commit-graph: create write_commit_graph_context
 + commit-graph: remove Future Work section
 + commit-graph: collapse parameters into flags
 + commit-graph: return with errors during write
 + commit-graph: fix the_repository reference
 (this branch is used by ds/close-object-store and ds/commit-graph-incremental.)

 Renamed from commit-graph-format-v2 and changed scope.

 Will merge to 'master'.


* br/blame-ignore (2019-06-20) 9 commits
  (merged to 'next' on 2019-06-27 at 36b91a787f)
 + blame: add a test to cover blame_coalesce()
 + blame: use the fingerprint heuristic to match ignored lines
 + blame: add a fingerprint heuristic to match ignored lines
 + blame: optionally track line fingerprints during fill_blame_origin()
 + blame: add config options for the output of ignored or unblamable lines
 + blame: add the ability to ignore commits and their changes
 + blame: use a helper function in blame_chunk()
 + Move oidset_parse_file() to oidset.c
 + fsck: rename and touch up init_skiplist()
 (this branch is used by jk/br-blame-ignore-unused-fix.)

 "git blame" learned to "ignore" commits in the history, whose
 effects (as well as their presence) get ignored.

 Needs a touch-up to reduce -Wunused-parameters error.

^ permalink raw reply	[relevance 1%]

* What's cooking in git.git (Jun 2019, #06; Wed, 26)
@ 2019-06-26 22:29  1% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2019-06-26 22:29 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The third batch of topics post 2.22 are now in 'master', and the tip
of 'next' has been rewound.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ab/hash-object-doc (2019-05-28) 1 commit
  (merged to 'next' on 2019-06-06 at 8e4d85b906)
 + hash-object doc: stop mentioning git-cvsimport

 Doc update.


* an/ignore-doc-update (2019-06-04) 1 commit
  (merged to 'next' on 2019-06-06 at 8579d82c0d)
 + gitignore.txt: make slash-rules more readable

 The description about slashes in gitignore patterns (used to
 indicate things like "anchored to this level only" and "only
 matches directories") has been revamped.


* cm/send-email-document-req-modules (2019-05-31) 1 commit
  (merged to 'next' on 2019-06-06 at acf1c2fc96)
 + send-email: update documentation of required Perl modules

 A doc update.


* jt/partial-clone-missing-ref-delta-base (2019-06-11) 4 commits
  (merged to 'next' on 2019-06-12 at 95628af9bb)
 + t5616: cover case of client having delta base
 + t5616: use correct flag to check object is missing
  (merged to 'next' on 2019-05-29 at 5d7573a151)
 + index-pack: prefetch missing REF_DELTA bases
 + t5616: refactor packfile replacement

 "git fetch" into a lazy clone forgot to fetch base objects that are
 necessary to complete delta in a thin packfile, which has been
 corrected.


* md/list-objects-filter-memfix (2019-05-31) 1 commit
  (merged to 'next' on 2019-06-06 at 80f0187cef)
 + list-objects-filter: correct usage of ALLOC_GROW

 The filter_data used in the list-objects-filter (which manages a
 lazily sparse clone repository) did not use the dynamic array API
 correctly---'nr' is supposed to point at one past the last element
 of the array in use.  This has been corrected.


* md/list-objects-filter-parse-msgfix (2019-05-31) 1 commit
  (merged to 'next' on 2019-06-06 at 736f3c175b)
 + list-objects-filter-options: error is localizeable

 Make an end-user facing message localizable.


* md/url-parse-harden (2019-06-04) 2 commits
  (merged to 'next' on 2019-06-06 at b187c3dbfe)
 + url: do not allow %00 to represent NUL in URLs
 + url: do not read past end of buffer

 The URL decoding code has been updated to avoid going past the end
 of the string while parsing %-<hex>-<hex> sequence.


* ml/userdiff-rust (2019-05-30) 2 commits
  (merged to 'next' on 2019-06-12 at 33b88fa9e5)
 + userdiff: two simplifications of patterns for rust
  (merged to 'next' on 2019-05-19 at 1266fddce5)
 + userdiff: add built-in pattern for rust

 The pattern "git diff/grep" use to extract funcname and words
 boundary for Rust has been added.


* mo/clang-format-for-each-update (2019-06-04) 1 commit
  (merged to 'next' on 2019-06-06 at ee3066bb65)
 + clang-format: use git grep to generate the ForEachMacros list

 The list of for-each like macros used by clang-format has been
 updated.

--------------------------------------------------
[New Topics]

* ab/test-env (2019-06-21) 8 commits
 - tests: make GIT_TEST_FAIL_PREREQS a boolean
 - tests: replace test_tristate with "git env--helper"
 - tests README: re-flow a previously changed paragraph
 - tests: make GIT_TEST_GETTEXT_POISON a boolean
 - t6040 test: stop using global "script" variable
 - config.c: refactor die_bad_number() to not call gettext() early
 - env--helper: new undocumented builtin wrapping git_env_*()
 - config tests: simplify include cycle test

 Many GIT_TEST_* environment variables control various aspects of
 how our tests are run, but a few followed "non-empty is true, empty
 or unset is false" while others followed the usual "there are a few
 ways to spell true, like yes, on, etc., and also ways to spell
 false, like no, off, etc." convention.


* cc/first-contrib-tutorial (2019-06-24) 1 commit
 - doc: improve usage string in MyFirstContribution

 Update docs used in a tutorial.

 Will merge to 'next'.


* ds/early-access (2019-06-20) 3 commits
 - repo-settings: pack.useSparse=true
 - repo-settings: use index.version=4 by default
 - repo-settings: create core.featureAdoptionRate setting

 A mechanism to enable newish configuration settings in bulk has
 been invented.


* jh/msvc (2019-06-25) 20 commits
 - msvc: ignore .dll and incremental compile output
 - msvc: avoid debug assertion windows in Debug Mode
 - msvc: do not pretend to support all signals
 - msvc: add pragmas for common warnings
 - msvc: add a compile-time flag to allow detailed heap debugging
 - msvc: support building Git using MS Visual C++
 - msvc: update Makefile to allow for spaces in the compiler path
 - msvc: fix detect_msys_tty()
 - msvc: define ftello()
 - msvc: do not re-declare the timespec struct
 - msvc: mark a variable as non-const
 - msvc: define O_ACCMODE
 - msvc: include sigset_t definition
 - msvc: fix dependencies of compat/msvc.c
 - mingw: replace mingw_startup() hack
 - obstack: fix compiler warning
 - cache-tree/blame: avoid reusing the DEBUG constant
 - t0001 (mingw): do not expect a specific order of stdout/stderr
 - Mark .bat files as requiring CR/LF endings
 - mingw: fix a typo in the msysGit-specific section

 Support to build with MSVC has been updated.

 Will merge to 'next'.


* jk/delta-islands-progress-fix (2019-06-20) 1 commit
 - delta-islands: respect progress flag

 The codepath to compute delta islands used to spew progress output
 without giving the callers any way to squelch it, which has been
 fixed.

 Will merge to 'next'.


* jk/oidhash (2019-06-20) 17 commits
 - hashmap: convert sha1hash() to oidhash()
 - hash.h: move object_id definition from cache.h
 - khash: rename oid helper functions
 - khash: drop sha1-specific map types
 - pack-bitmap: convert khash_sha1 maps into kh_oid_map
 - delta-islands: convert island_marks khash to use oids
 - khash: rename kh_oid_t to kh_oid_set
 - khash: drop broken oid_map typedef
 - object: convert create_object() to use object_id
 - object: convert internal hash_obj() to object_id
 - object: convert lookup_object() to use object_id
 - object: convert lookup_unknown_object() to use object_id
 - pack-objects: convert locate_object_entry_hash() to object_id
 - pack-objects: convert packlist_find() to use object_id
 - pack-bitmap-write: convert some helpers to use object_id
 - upload-pack: rename a "sha1" variable to "oid"
 - describe: fix accidental oid/hash type-punning

 Code clean-up to remove hardcoded SHA-1 hash from manty places.

 Will merge to 'next'.


* nd/fetch-capability-tweak (2019-06-20) 3 commits
 - fetch-pack: print server version at the top in -v -v
 - fetch-pack: print all relevant supported capabilities with -v -v
 - fetch-pack: move capability names out of i18n strings

 Protocol capabilities that go over wire should never be translated,
 but it was incorrectly marked for translation, which has been
 corrected.  The output of protocol capabilities for debugging has
 been tweaked a bit.

 Will merge to 'next'.


* nd/index-dump-in-json (2019-06-26) 11 commits
 - SQUASH???
 - t3008: use the new SINGLE_CPU prereq
 - read-cache.c: dump "IEOT" extension as json
 - read-cache.c: dump "EOIE" extension as json
 - resolve-undo.c: dump "REUC" extension as json
 - fsmonitor.c: dump "FSMN" extension as json
 - split-index.c: dump "link" extension as json
 - dir.c: dump "UNTR" extension as json
 - cache-tree.c: dump "TREE" extension as json
 - read-cache.c: dump common extension info in json
 - ls-files: add --json to dump the index

 "ls-files" learned "--debug-json" option to dump the contents and
 the extensions of the index file.


* nd/switch-and-restore-more (2019-06-20) 2 commits
 - completion: disable dwim on "git switch -d"
 - switch: allow to switch in the middle of bisect
 (this branch is used by jl/status-reduce-vertical-blank; uses nd/switch-and-restore.)

 (this topic is just bits and pieces out of 4 patches)


* rs/config-unit-parsing (2019-06-24) 3 commits
 - config: simplify parsing of unit factors
 - config: don't multiply in parse_unit_factor()
 - config: use unsigned_mult_overflows to check for overflows
 (this branch uses js/gcc-8-and-9.)

 The code to parse scaled numbers out of configuration files has
 been made more robust and also easier to follow.

 Will merge to 'next'.


* ab/fail-prereqs-in-test (2019-06-21) 1 commit
 - tests: mark two failing tests under FAIL_PREREQS

 Test updates.

 Will merge to 'next'.


* ds/fetch-disable-force-notice (2019-06-21) 3 commits
 - pull: add --[no-]show-forced-updates passthrough
 - fetch: warn about forced updates in branch listing
 - fetch: add --[no-]show-forced-updates argument

 "git fetch" and "git pull" reports when a fetch results in
 non-fast-forward updates to let the user notice unusual situation.
 The commands learned "--no-shown-forced-updates" option to disable
 this safety feature.

 Will merge to 'next'.


* jh/status-aheadbehind (2019-06-21) 3 commits
 - status: ignore status.aheadbehind in porcelain formats
 - status: warn when a/b calculation takes too long
 - status: add status.aheadbehind setting

 "git status" can be told a non-standard default value for the
 "--[no-]ahead-behind" option with a new configuration variable
 status.aheadBehind.

 Will merge to 'next'.


* js/t0001-case-insensitive (2019-06-24) 1 commit
 - t0001: fix on case-insensitive filesystems

 Test update.

 Will merge to 'next'.


* dr/progress-i18n (2019-06-24) 1 commit
 - l10n: localizable upload progress messages

 Progress messages have been made localizable.

 Not quite with the code duplication...


* jw/gitweb-sample-update (2019-06-24) 1 commit
 - doc: don't use git.kernel.org as example gitweb URL

 Doc update.

 Will merge to 'next'.


* ms/submodule-foreach-fix (2019-06-25) 1 commit
 - submodule foreach: fix recursion of options

 "git submodule foreach" did not protect command line options passed
 to the command to be run in each submodule correctly, when the
 "--recursive" option was in use.

 Will merge to 'next'.


* pw/status-with-corrupt-sequencer-state (2019-06-25) 3 commits
 - status: do not report errors in sequencer/todo
 - sequencer: factor out todo command name parsing
 - sequencer: always allow tab after command name

 The code to read state files used by the sequencer machinery for
 "git status" has been made more robust against a corrupt or stale
 state files.


* sg/t5551-fetch-smart-error-is-translated (2019-06-25) 1 commit
 - t5551: use 'test_i18ngrep' to check translated output

 Test update.

 Will merge to 'next'.


* ab/no-kwset (2019-06-26) 7 commits
 - grep: use PCRE v2 for optimized fixed-string search
 - grep: remove the kwset optimization
 - grep: drop support for \0 in --fixed-strings <pattern>
 - grep: make the behavior for \0 in patterns sane
 - grep tests: move binary pattern tests into their own file
 - grep tests: move "grep binary" alongside the rest
 - grep: inline the return value of a function call used only once

 Retire use of kwset library, which is an optimization for looking
 for fixed strings, with use of pcre2 JIT.

 Will merge to 'next'.


* mt/dir-iterator-updates (2019-06-25) 10 commits
 - clone: replace strcmp by fspathcmp
 - clone: use dir-iterator to avoid explicit dir traversal
 - clone: extract function from copy_or_link_directory
 - clone: copy hidden paths at local clone
 - dir-iterator: add flags parameter to dir_iterator_begin
 - dir-iterator: refactor state machine model
 - dir-iterator: use warning_errno when possible
 - dir-iterator: add tests for dir-iterator API
 - clone: better handle symlinked files at .git/objects/
 - clone: test for our behavior on odd objects/* content

 Adjust the dir-iterator API and apply it to the local clone
 optimization codepath.

 Is this ready for 'next'?


* nd/tree-walk-with-repo (2019-06-26) 6 commits
 - Use the right 'struct repository' instead of the_repository
 - match-trees.c: remove the_repo from shift_tree*()
 - tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
 - tree-walk.c: remove the_repo from get_tree_entry()
 - tree-walk.c: remove the_repo from fill_tree_descriptor()
 - sha1-file.c: remove the_repo from read_object_with_reference()

 The tree-walk API learned to pass an in-core repository
 instance throughout more codepaths.


* jh/trace2-sid-fix (2019-06-26) 1 commit
 - trace2: correct typo in technical documentation

 Typofix.

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* jn/unknown-index-extensions (2018-11-21) 2 commits
 - index: offer advice for unknown index extensions
 - index: do not warn about unrecognized extensions

 A bit too alarming warning given when unknown index extensions
 exist is getting revamped.

 Expecting a reroll.


* jc/format-patch-delay-message-id (2019-04-05) 1 commit
 - format-patch: move message-id and related headers to the end

 The location "git format-patch --thread" adds the Message-Id:
 header in the series of header fields has been moved down, which
 may help working around a suspected bug in GMail MSA, reported at
 <CAHk-=whP1stFZNAaJiMi5eZ9rj0MRt20Y_yHVczZPH+O01d+sA@mail.gmail.com>

 Waiting for feedback to see if it truly helps.
 Needs tests.


* jt/fetch-cdn-offload (2019-03-12) 9 commits
 - SQUASH???
 - upload-pack: send part of packfile response as uri
 - fetch-pack: support more than one pack lockfile
 - upload-pack: refactor reading of pack-objects out
 - Documentation: add Packfile URIs design doc
 - Documentation: order protocol v2 sections
 - http-fetch: support fetching packfiles by URL
 - http: improve documentation of http_pack_request
 - http: use --stdin when getting dumb HTTP pack

 WIP for allowing a response to "git fetch" to instruct the bulk of
 the pack contents to be instead taken from elsewhere (aka CDN).

 Stalled


* js/protocol-advertise-multi (2018-12-28) 1 commit
 - protocol: advertise multiple supported versions

 The transport layer has been updated so that the protocol version
 used can be negotiated between the parties, by the initiator
 listing the protocol versions it is willing to talk, and the other
 side choosing from one of them.

 Expecting a reroll.
 cf. <CANq=j3u-zdb_FvNJGPCmygNMScseav63GhVvBX3NcVS4f7TejA@mail.gmail.com>


* mk/use-size-t-in-zlib (2018-10-15) 1 commit
 - zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".


* dl/remote-save-to-push (2018-12-11) 1 commit
 - remote: add --save-to-push option to git remote set-url

 "git remote set-url" learned a new option that moves existing value
 of the URL field to pushURL field of the remote before replacing
 the URL field with a new value.

 Anybody who wants to champion this topic?
 I am personally not yet quite convinced if this is worth pursuing.

--------------------------------------------------
[Cooking]

* cb/fsmonitor-intfix (2019-06-17) 1 commit
  (merged to 'next' on 2019-06-26 at bed7c7e78b)
 + fsmonitor: avoid signed integer overflow / infinite loop

 Variable type fix.

 Will merge to 'master'.


* es/rev-list-no-object-names (2019-06-20) 1 commit
 - rev-list: teach --no-object-names to enable piping

 "git rev-list --objects" learned with "--no-object-names" option to
 squelch the path to the object that is used as a grouping hint for
 pack-objects.

 Will merge to 'next'.


* md/list-objects-filter-combo (2019-06-17) 10 commits
 - list-objects-filter-options: make parser void
 - list-objects-filter-options: clean up use of ALLOC_GROW
 - list-objects-filter-options: allow mult. --filter
 - strbuf: give URL-encoding API a char predicate fn
 - list-objects-filter-options: make filter_spec a string_list
 - list-objects-filter-options: move error check up
 - list-objects-filter: implement composite filters
 - list-objects-filter-options: always supply *errbuf
 - list-objects-filter: put omits set in filter struct
 - list-objects-filter: make API easier to use

 The list-objects-filter API (used to create a sparse/lazy clone)
 learned to take a combined filter specification.

 Will merge to 'next'.


* pw/doc-synopsis-markup-opmode-options (2019-06-17) 1 commit
  (merged to 'next' on 2019-06-26 at 4258eddd2d)
 + show --continue/skip etc. consistently in synopsis

 Docfix.

 Will merge to 'master'.


* rs/copy-array (2019-06-17) 2 commits
  (merged to 'next' on 2019-06-26 at dfaa162f88)
 + use COPY_ARRAY for copying arrays
 + coccinelle: use COPY_ARRAY for copying arrays

 Code clean-up.

 Will merge to 'master'.


* cb/mkstemps-uint-type-fix (2019-06-19) 1 commit
  (merged to 'next' on 2019-06-26 at df44db4a69)
 + wrapper: avoid undefined behaviour in macOS

 Variable type fix.

 Will merge to 'master'.


* cb/xdiff-no-system-includes-in-dot-c (2019-06-19) 1 commit
 - xdiff: avoid accidental redefinition of LFS feature in OpenIndiana

 Compilation fix.

 Will be rerolled together with patches from the
 jk/no-system-includes-in-dot-c topic.


* jk/no-system-includes-in-dot-c (2019-06-19) 2 commits
 - wt-status.h: drop stdio.h include
 - verify-tag: drop signal.h include

 Compilation fix.

 Will be rerolled with the above.


* jk/trailers-use-config (2019-06-19) 1 commit
  (merged to 'next' on 2019-06-26 at 1ba8a7c2dd)
 + interpret-trailers: load default config

 "git interpret-trailers" always treated '#' as the comment
 character, regardless of core.commentChar setting, which has been
 corrected.

 Will merge to 'master'.


* nd/fetch-multi-gc-once (2019-06-19) 1 commit
 - fetch: only run 'gc' once when fetching multiple remotes

 "git fetch" that grabs from a group of remotes learned to run the
 auto-gc only once at the very end.

 Will merge to 'next'.


* ra/cherry-pick-revert-skip (2019-06-24) 6 commits
 - cherry-pick/revert: advise using --skip
 - cherry-pick/revert: add --skip option
 - sequencer: use argv_array in reset_merge
 - sequencer: rename reset_for_rollback to reset_merge
 - sequencer: add advice for revert
 - advice: add sequencerInUse config variable

 "git cherry-pick/revert" learned a new "--skip" action.

 Is this one ready for 'next'?


* tg/stash-ref-by-index-fix (2019-06-19) 1 commit
  (merged to 'next' on 2019-06-26 at ee2e6308ae)
 + stash: fix show referencing stash index

 "git stash show 23" used to work, but no more after getting
 rewritten in C; this regression has been corrected.

 Will merge to 'master'.


* js/gcc-8-and-9 (2019-06-13) 4 commits
 - config: avoid calling `labs()` on too-large data type
 - winansi: simplify loading the GetCurrentConsoleFontEx() function
 - kwset: allow building with GCC 8
 - poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
 (this branch is used by rs/config-unit-parsing.)

 Code clean-up for new compilers.

 Will merge to 'next'.
 The 'kwset' one may get a wholesale replacement, either with new
 version of kwset from upstream or removal of its users, but in the
 meantime, it is probably OK to merge it down.


* pw/add-p-recount (2019-06-13) 1 commit
  (merged to 'next' on 2019-06-26 at 63e063d65d)
 + add -p: fix checkout -p with pathological context

 "git checkout -p" needs to selectively apply a patch in reverse,
 which did not work well.

 Will merge to 'master'.


* rs/avoid-overflow-in-midpoint-computation (2019-06-13) 1 commit
  (merged to 'next' on 2019-06-26 at e6bd5b496b)
 + cleanup: fix possible overflow errors in binary search, part 2

 Code clean-up to avoid signed integer overlaps during binary search.

 Will merge to 'master'.


* js/t3404-typofix (2019-06-14) 1 commit
  (merged to 'next' on 2019-06-26 at ba3fcc1fc1)
 + t3404: fix a typo

 Typofix.

 Will merge to 'master'.


* mo/hpux-dynpath (2019-06-07) 1 commit
  (merged to 'next' on 2019-06-26 at 5add3b28b2)
 + configure: Detect linking style for HP aCC on HP-UX

 Auto-detect how to tell HP-UX aCC where to use dynamically linked
 libraries from at runtime.

 Will merge to 'master'.


* js/mergetool-optim (2019-06-12) 4 commits
  (merged to 'next' on 2019-06-26 at 8ad650bfa8)
 + mergetool: use shell variable magic instead of `awk`
 + mergetool: dissect strings with shell variable magic instead of `expr`
 + t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
 + t7610-mergetool: do not place pipelines headed by `yes` in subshells

 "git mergetool" and its tests now spawn fewer subprocesses.

 Will merge to 'master'.


* cc/test-oidmap (2019-06-17) 4 commits
 - test-hashmap: remove 'hash' command
 - oidmap: use sha1hash() instead of static hash() function
 - t: add t0016-oidmap.sh
 - t/helper: add test-oidmap.c

 Extend the test coverage a bit.

 Will merge to 'next'.


* ds/midx-expire-repack (2019-06-11) 11 commits
 - t5319-multi-pack-index.sh: test batch size zero
 - midx: add test that 'expire' respects .keep files
 - multi-pack-index: test expire while adding packs
 - midx: implement midx_repack()
 - multi-pack-index: prepare 'repack' subcommand
 - multi-pack-index: implement 'expire' subcommand
 - midx: refactor permutation logic and pack sorting
 - midx: simplify computation of pack name lengths
 - multi-pack-index: prepare for 'expire' subcommand
 - Docs: rearrange subcommands for multi-pack-index
 - repack: refactor pack deletion for future use

 "git multi-pack-index" learned expire and repack subcommands.

 Will merge to 'next'.


* md/sort-detached-head-first (2019-06-19) 1 commit
 - ref-filter: sort detached HEAD lines firstly

 "git branch --list" learned to always output the detached HEAD as
 the first item (when the HEAD is detached, of course), regardless
 of the locale.

 Will merge to 'next'.


* nd/completion-no-cache-failure (2019-06-12) 1 commit
  (merged to 'next' on 2019-06-26 at f7b5a0a622)
 + completion: do not cache if --git-completion-helper fails

 An incorrect list of options was cached after command line
 completion failed (e.g. trying to complete a command that requires
 a repository outside one), which has been corrected.

 Will merge to 'master'.


* sg/rebase-progress (2019-06-24) 5 commits
 - progress: use term_clear_line()
 - rebase: fix garbled progress display with '-x'
 - pager: add a helper function to clear the last line in the terminal
 - t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
 - t3404: modernize here doc style

 Use "Erase in Line" CSI sequence that is already used in the editor
 support to clear cruft in the progress output.

 Will merge to 'next'.


* sg/trace2-rename (2019-06-12) 1 commit
  (merged to 'next' on 2019-06-26 at 8ee228c455)
 + Revert "test-lib: whitelist GIT_TR2_* in the environment"

 Dev support update to help tracing out tests.

 Will merge to 'master'.


* fc/fetch-with-import-fix (2019-06-04) 5 commits
  (merged to 'next' on 2019-06-26 at b7e7f359a9)
 + fetch: fix regression with transport helpers
 + fetch: make the code more understandable
 + fetch: trivial cleanup
 + t5801 (remote-helpers): add test to fetch tags
 + t5801 (remote-helpers): cleanup refspec stuff

 Code restructuring during 2.20 period broke fetching tags via
 "import" based transports.

 Will merge to 'master'.


* jl/status-reduce-vertical-blank (2019-06-21) 1 commit
 - status: remove the empty line after hints
 (this branch uses nd/switch-and-restore and nd/switch-and-restore-more.)

 Extra blank lines in "git status" output have been reduced.

 Needs to wait on nd/switch-and-restore to stabilize.


* dl/config-alias-doc (2019-06-06) 2 commits
  (merged to 'next' on 2019-06-26 at 3776902022)
 + config/alias.txt: document alias accepting non-command first word
 + config/alias.txt: change " and ' to `

 Doc update.

 Will merge to 'master'.


* dl/includeif-onbranch (2019-06-05) 1 commit
 - config: learn the "onbranch:" includeIf condition

 The conditional inclusion mechanism learned to base the choice on
 the branch the HEAD currently is on.

 Will merge to 'next'.


* ds/commit-graph-incremental (2019-06-19) 18 commits
 - commit-graph: test verify across alternates
 - commit-graph: normalize commit-graph filenames
 - commit-graph: test --split across alternate without --split
 - commit-graph: test octopus merges with --split
 - commit-graph: clean up chains after flattened write
 - commit-graph: verify chains with --shallow mode
 - commit-graph: create options for split files
 - commit-graph: expire commit-graph files
 - commit-graph: allow cross-alternate chains
 - commit-graph: merge commit-graph chains
 - commit-graph: add --split option to builtin
 - commit-graph: write commit-graph chains
 - commit-graph: rearrange chunk count logic
 - commit-graph: add base graphs chunk
 - commit-graph: load commit-graph chains
 - commit-graph: rename commit_compare to oid_compare
 - commit-graph: prepare for commit-graph chains
 - commit-graph: document commit-graph chains
 (this branch uses ds/close-object-store and ds/commit-graph-write-refactor.)

 The commits in a repository can be described by multiple
 commit-graph files now, which allows the commit-graph files to be
 updated incrementally.

 Will merge to 'next'.


* tm/tag-gpgsign-config (2019-06-05) 1 commit
  (merged to 'next' on 2019-06-26 at 015709def5)
 + tag: add tag.gpgSign config option to force all tags be GPG-signed

 A new tag.gpgSign configuration variable turns "git tag -a" into
 "git tag -s".

 Will merge to 'master'.


* po/doc-branch (2019-05-29) 1 commit
  (merged to 'next' on 2019-06-26 at 0debcb13e5)
 + doc branch: provide examples for listing remote tracking branches

 Doc update.

 Will merge to 'master'.


* ds/close-object-store (2019-06-12) 3 commits
  (merged to 'next' on 2019-06-26 at 86b60f2631)
 + packfile: rename close_all_packs to close_object_store
 + packfile: close commit-graph in close_all_packs
 + commit-graph: use raw_object_store when closing
 (this branch is used by ds/commit-graph-incremental; uses ds/commit-graph-write-refactor.)

 The commit-graph file is now part of the "files that the runtime
 may keep open file descriptors on, all of which would need to be
 closed when done with the object store", and the file descriptor to
 an existing commit-graph file now is closed before "gc" finalizes a
 new instance to replace it.

 Will merge to 'master'.


* pw/rebase-abort-clean-rewritten (2019-05-15) 4 commits
 - rebase --abort/--quit: cleanup refs/rewritten
 - sequencer: return errors from sequencer_remove_state()
 - rebase: warn if state directory cannot be removed
 - rebase: fix a memory leak

 "git rebase --abort" used to leave refs/rewritten/ when concluding
 "git rebase -r", which has been corrected.

 Will merge to 'next'.
 cf. <2a37d4c2-6eec-548d-0bd0-12bbd49c8071@gmail.com>


* nb/branch-show-other-worktrees-head (2019-05-07) 3 commits
  (merged to 'next' on 2019-06-26 at ae3b7a626d)
 + branch: add worktree info on verbose output
 + branch: update output to include worktree info
 + ref-filter: add worktreepath atom

 "git branch --list" learned to show branches that are checked out
 in other worktrees connected to the same repository prefixed with
 '+', similar to the way the currently checked out branch is shown
 with '*' in front.

 Will merge to 'master'.


* cc/multi-promisor (2019-06-25) 15 commits
 - Move core_partial_clone_filter_default to promisor-remote.c
 - Move repository_format_partial_clone to promisor-remote.c
 - Remove fetch-object.{c,h} in favor of promisor-remote.{c,h}
 - remote: add promisor and partial clone config to the doc
 - partial-clone: add multiple remotes in the doc
 - t0410: test fetching from many promisor remotes
 - builtin/fetch: remove unique promisor remote limitation
 - promisor-remote: parse remote.*.partialclonefilter
 - Use promisor_remote_get_direct() and has_promisor_remote()
 - promisor-remote: use repository_format_partial_clone
 - promisor-remote: add promisor_remote_reinit()
 - promisor-remote: implement promisor_remote_get_direct()
 - Add initial support for many promisor remotes
 - fetch-object: make functions return an error code
 - t0410: remove pipes after git commands

 Teach the lazy clone machinery that there can be more than one
 promisor remote and consult them in order when downloading missing
 objects on demand.


* nd/switch-and-restore (2019-06-20) 44 commits
 - t2027: use test_must_be_empty
 - Declare both git-switch and git-restore experimental
 - help: move git-diff and git-reset to different groups
 - doc: promote "git restore"
 - user-manual.txt: prefer 'merge --abort' over 'reset --hard'
 - completion: support restore
 - t: add tests for restore
 - restore: support --patch
 - restore: replace --force with --ignore-unmerged
 - restore: default to --source=HEAD when only --staged is specified
 - restore: reject invalid combinations with --staged
 - restore: add --worktree and --staged
 - checkout: factor out worktree checkout code
 - restore: disable overlay mode by default
 - restore: make pathspec mandatory
 - restore: take tree-ish from --source option instead
 - checkout: split part of it to new command 'restore'
 - doc: promote "git switch"
 - completion: support switch
 - t: add tests for switch
 - switch: make --orphan switch to an empty tree
 - switch: reject if some operation is in progress
 - switch: no worktree status unless real branch switch happens
 - switch: implicit dwim, use --no-guess to disable it
 - switch: add short option for --detach
 - switch: only allow explicit detached HEAD
 - switch: reject "do nothing" case
 - switch: stop accepting pathspec
 - switch: remove -l
 - switch: add --discard-changes
 - switch: better names for -b and -B
 - checkout: split part of it to new command 'switch'
 - checkout: split options[] array in three pieces
 - checkout: move 'confict_style' and 'dwim_..' to checkout_opts
 - checkout: make "opts" in cmd_checkout() a pointer
 - checkout: factor out some code in parse_branchname_arg()
 - checkout: keep most #include sorted
 - checkout: inform the user when removing branch state
 - checkout: advice how to get out of detached HEAD mode
 - t: rename t2014-switch.sh to t2014-checkout-switch.sh
 - git-checkout.txt: fix monospace typeset
 - doc: document --overwrite-ignore
 - git-checkout.txt: fix one syntax line
 - git-checkout.txt: spell out --no-option
 (this branch is used by jl/status-reduce-vertical-blank and nd/switch-and-restore-more.)

 Two new commands "git switch" and "git restore" are introduced to
 split "checking out a branch to work on advancing its history" and
 "checking out paths out of the index and/or a tree-ish to work on
 advancing the current history" out of the single "git checkout"
 command.

 Will merge to 'next'.
 cf. <20190329103919.15642-1-pclouds@gmail.com> (switch v6)
 cf. <20190425094600.15673-1-pclouds@gmail.com> (restore v3)


* jc/format-patch-noclobber (2019-02-22) 1 commit
 - format-patch: --no-clobber refrains from overwriting output files

 "git format-patch" used to overwrite an existing patch/cover-letter
 file.  A new "--no-clobber" option stops it.

 Undecided but inclined to discard.


* am/p4-branches-excludes (2019-04-02) 8 commits
 - git-p4: respect excluded paths when detecting branches
 - git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
 - git-p4: don't exclude other files with same prefix
 - git-p4: add failing test for "don't exclude other files with same prefix"
 - git-p4: don't groom exclude path list on every commit
 - git-p4: match branches case insensitively if configured
 - git-p4: add failing test for "git-p4: match branches case insensitively if configured"
 - git-p4: detect/prevent infinite loop in gitCommitByP4Change()

 "git p4" update.

 Will merge to 'next'.


* dl/rebase-i-keep-base (2019-04-25) 6 commits
 - rebase: teach rebase --keep-base
 - rebase: fast-forward --fork-point in more cases
 - rebase: fast-forward --onto in more cases
 - rebase: refactor can_fast_forward into goto tower
 - t3432: test rebase fast-forward behavior
 - t3431: add rebase --fork-point tests

 "git rebase --keep-base <upstream>" tries to find the original base
 of the topic being rebased and rebase on top of that same base,
 which is useful when running the "git rebase -i" (and its limited
 variant "git rebase -x").

 The command also has learned to fast-forward in more cases where it
 can instead of replaying to recreate identical commits.

 On hold.
 cf. <20190508001252.15752-1-avarab@gmail.com>
 cf. <xmqqa7fxionx.fsf@gitster-ct.c.googlers.com>


* ds/commit-graph-write-refactor (2019-06-12) 11 commits
  (merged to 'next' on 2019-06-26 at 5430eafe51)
 + commit-graph: extract write_commit_graph_file()
 + commit-graph: extract copy_oids_to_commits()
 + commit-graph: extract count_distinct_commits()
 + commit-graph: extract fill_oids_from_all_packs()
 + commit-graph: extract fill_oids_from_commit_hex()
 + commit-graph: extract fill_oids_from_packs()
 + commit-graph: create write_commit_graph_context
 + commit-graph: remove Future Work section
 + commit-graph: collapse parameters into flags
 + commit-graph: return with errors during write
 + commit-graph: fix the_repository reference
 (this branch is used by ds/close-object-store and ds/commit-graph-incremental.)

 Renamed from commit-graph-format-v2 and changed scope.

 Will merge to 'master'.


* br/blame-ignore (2019-06-20) 9 commits
 - blame: add a test to cover blame_coalesce()
 - blame: use the fingerprint heuristic to match ignored lines
 - blame: add a fingerprint heuristic to match ignored lines
 - blame: optionally track line fingerprints during fill_blame_origin()
 - blame: add config options for the output of ignored or unblamable lines
 - blame: add the ability to ignore commits and their changes
 - blame: use a helper function in blame_chunk()
 - Move oidset_parse_file() to oidset.c
 - fsck: rename and touch up init_skiplist()

 "git blame" learned to "ignore" commits in the history, whose
 effects (as well as their presence) get ignored.

 Will merge to 'next'.
 cf. <20190620163820.231316-1-brho@google.com> (v9)

^ permalink raw reply	[relevance 1%]

* [PATCH v6 00/15] Many promisor remotes
@ 2019-06-25 13:40  3% Christian Couder
  0 siblings, 0 replies; 162+ results
From: Christian Couder @ 2019-06-25 13:40 UTC (permalink / raw)
  To: git
  Cc: Junio C Hamano, Jeff King, Ben Peart, Jonathan Tan,
	Jonathan Nieder, Nguyen Thai Ngoc Duy, Mike Hommey,
	Lars Schneider, Eric Wong, Christian Couder, Jeff Hostetler,
	Eric Sunshine, Beat Bolli, SZEDER Gábor, Ramsay Jones,
	Derrick Stolee

This patch series is based on master as of 8dca754b1e (The third batch, 2019-06-21).

It was previously based on jt/batch-fetch-blobs-in-diff, but this has
been merged into master.

Introduction
~~~~~~~~~~~~

This path series is a follow up from the "remote odb" patch series
that I sent last year, which were a follow up from previous
series. See the links section for more information.

The goal of this patch series is to make it possible to have and to
fetch missing objects from multiple remotes instead of only one.

For now the fetch order is the order of the remotes in the config,
except for the remote specified by extensions.partialclone config
option which comes last in the fetch order.

I selected the name "Promisor remote" over "Partial clone remote"
because it is shorter and because it is not only about cloning.

The existing extensions.partialclone config option is respected, but
it is not written in the config when a partial clone or fetch is
made. Instead remote.<name>.promisor is set to "true". This may create
a compatibility issue, but it makes it possible to start using many
promisor remotes by just cloning and fetching from different remotes
with partial clone filters. The compatibility issue could be resolved
in a future iteration by just setting extensions.partialclone instead
of remote.<name>.promisor the first time a promisor remote is used.

The code might not work with many promisor remotes that don't all have
all the promised objects, as that would require the fetch protocol to
send packs with best effort, as described by Junio in:

https://public-inbox.org/git/xmqqpnqve71d.fsf@gitster-ct.c.googlers.com/

I plan to take a look at improving that soon.

In general I have tried to change as few things as possible in the
first patches of the series, though the last patches try to hide the
old features that only made sense for the general code to use when
there was only one promisor remote.

High level view of changes since the V5
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The only patchs that changed since V5 are:  

  - Patch 4/15 (promisor-remote: implement promisor_remote_get_direct())

The new OBJECT_INFO_SKIP_FETCH_OBJECT flag is used instead of using
the ugly fetch_if_missing global variable as suggested by Stolee.

Also, "missing" in variable names has been replaced with "remaining"
as suggested by Stolee.

  - Patch 7/15 (Use promisor_remote_get_direct() and
    has_promisor_remote())

The changes to diff.c that were in patch 8/16 in V5 have been squashed
into this patch as the squashed patch applied to diff.c the same
changes that are made in this patch. They were in a separate patch
because the changes in diff.c needed to be made only if the
jt/batch-fetch-blobs-in-diff series was merged, which has happened.

Some similar changes in builtin/index-pack.c were also added to this
patch. They were necessary since 8a30a1efd1 (index-pack: prefetch
missing REF_DELTA bases, 2019-05-14) has been merged.

High level overview of old patches in this patch series
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

   - Patch 1/15 (t0410: remove pipes after git commands)

This is a preparatory cleanup patch to improve t0410 as suggested by
Szeder Gábor.

  - Patch 2/15 (fetch-object: make functions return an error code)

This patch, makes functions in fetch-object.c return an error code,
which is necessary to later tell that they failed and try another
promisor remote when there is more than one. This could also just be
seen as a fix to these functions.

  - Patch 3/15 (Add initial support for many promisor remotes)

This introduces the minimum infrastructure for promisor remotes.

  - Patch 4/15 (promisor-remote: implement promisor_remote_get_direct()) 
  - Patch 5/15 (promisor-remote: add promisor_remote_reinit())
  - Patch 6/15 (promisor-remote: use repository_format_partial_clone)

These patches add a few missing bits in the promisor remote
infrastructure that will be needed in the following patches.

  - Patch 7/15 (Use promisor_remote_get_direct() and has_promisor_remote())

This replaces the previous interface that used only one promisor
remote defined in extensions.partialclone with the new interface
created by the previous patches.

  - Patch 8/15 (promisor-remote: parse remote.*.partialclonefilter)

This replaces the way a partial clone filter was handled by a new way
based on the previous patches that support more than one partial clone
filter.

  - Patch 9/15 (builtin/fetch: remove unique promisor remote limitation)

This patch removes the limitation in builtin/fetch.c to have only one
promisor remote.

  - Patch 10/15 (t0410: test fetching from many promisor remotes)

This adds test cases that shows that now more than one promisor remote
can be used and that remote.<name>.promisor is set to "true" when
fetching from a new promisor remote.

  - Patch 11/15 (partial-clone: add multiple remotes in the doc)
  - Patch 12/15 (remote: add promisor and partial clone config to the doc)

These documentation patches explain how things can work with more than
one promisor remote.

  - Patch 13/15 (Remove fetch-object.{c,h} in favor of promisor-remote.{c,h})
  - Patch 14/15 (Move repository_format_partial_clone to promisor-remote.c)
  - Patch 15/15 (Move core_partial_clone_filter_default to promisor-remote.c)

These patches try to hide the old features (fetch_objects(),
repository_format_partial_clone and core_partial_clone_filter_default)
that only made sense for the general code to use when there was only
one promisor remote. This ensures that there will be compilation
errors rather than bugs or test failures if the old features are used
in the old fashion way.

Links
~~~~~

This patch series on GitHub:

V6: https://github.com/chriscool/git/commits/many-promisor-remotes
V5: https://github.com/chriscool/git/commits/many-promisor-remotes68
V4: https://github.com/chriscool/git/commits/many-promisor-remotes58
V3: https://github.com/chriscool/git/commits/many-promisor-remotes40
V2: https://github.com/chriscool/git/commits/many-promisor-remotes35
V1: https://github.com/chriscool/git/commits/many-promisor-remotes17

On the mailing list:

V5: https://public-inbox.org/git/20190409161116.30256-1-chriscool@tuxfamily.org/
V4: https://public-inbox.org/git/20190401164045.17328-1-chriscool@tuxfamily.org/
V3: https://public-inbox.org/git/20190312132959.11764-1-chriscool@tuxfamily.org/
V2: https://public-inbox.org/git/20190122144212.15119-1-chriscool@tuxfamily.org/
V1: https://public-inbox.org/git/20181211052746.16218-1-chriscool@tuxfamily.org/

This patch series is a follow up from the discussions related to
the remote odb V4 patch series:

https://public-inbox.org/git/20180802061505.2983-1-chriscool@tuxfamily.org/

Especially in:

https://public-inbox.org/git/CAP8UFD3nrhjANwNDqTwx5ZtnZNcnbAFqUN=u=LrvzuH4+3wQQA@mail.gmail.com/

I said that I would like to work on things in the following order:

  1) Teaching partial clone to attempt to fetch missing objects from
multiple remotes instead of only one using the order in the config.

  2) Simplifying the protocol for fetching missing objects so that it
can be satisfied by a lighter weight object storage system than a full
Git server.

  3) Making it possible to explicitly define an order in which the
remotes are accessed.

  4) Making the criteria for what objects can be missing more
aggressive, so that I can "git add" a large file and work with it
using Git without even having a second copy of that object in my local
object store.

And this patch series is about the 1).

The previous remote odb patch series on GitHub:

V5: https://github.com/chriscool/git/commits/remote-odb
V4: https://github.com/chriscool/git/commits/remote-odb5
V3: https://github.com/chriscool/git/commits/remote-odb3
V2: https://github.com/chriscool/git/commits/remote-odb2
V1: https://github.com/chriscool/git/commits/remote-odb1

Discussions related to previous versions of the odb patch series:

V4: https://public-inbox.org/git/20180802061505.2983-1-chriscool@tuxfamily.org/
V3: https://public-inbox.org/git/20180713174959.16748-1-chriscool@tuxfamily.org/
V2: https://public-inbox.org/git/20180630083542.20347-1-chriscool@tuxfamily.org/
V1: https://public-inbox.org/git/20180623121846.19750-1-chriscool@tuxfamily.org/

Christian Couder (15):
  t0410: remove pipes after git commands
  fetch-object: make functions return an error code
  Add initial support for many promisor remotes
  promisor-remote: implement promisor_remote_get_direct()
  promisor-remote: add promisor_remote_reinit()
  promisor-remote: use repository_format_partial_clone
  Use promisor_remote_get_direct() and has_promisor_remote()
  promisor-remote: parse remote.*.partialclonefilter
  builtin/fetch: remove unique promisor remote limitation
  t0410: test fetching from many promisor remotes
  partial-clone: add multiple remotes in the doc
  remote: add promisor and partial clone config to the doc
  Remove fetch-object.{c,h} in favor of promisor-remote.{c,h}
  Move repository_format_partial_clone to promisor-remote.c
  Move core_partial_clone_filter_default to promisor-remote.c

 Documentation/config/remote.txt           |   8 +
 Documentation/technical/partial-clone.txt | 117 +++++++---
 Makefile                                  |   2 +-
 builtin/cat-file.c                        |   5 +-
 builtin/fetch.c                           |  29 +--
 builtin/gc.c                              |   3 +-
 builtin/index-pack.c                      |   8 +-
 builtin/repack.c                          |   3 +-
 cache-tree.c                              |   3 +-
 cache.h                                   |   2 -
 config.c                                  |   5 -
 connected.c                               |   3 +-
 diff.c                                    |   9 +-
 environment.c                             |   2 -
 fetch-object.c                            |  40 ----
 fetch-object.h                            |   9 -
 list-objects-filter-options.c             |  51 +++--
 list-objects-filter-options.h             |   3 +-
 packfile.c                                |   3 +-
 promisor-remote.c                         | 265 ++++++++++++++++++++++
 promisor-remote.h                         |  31 +++
 setup.c                                   |   3 +-
 sha1-file.c                               |  15 +-
 t/t0410-partial-clone.sh                  |  61 ++++-
 t/t5601-clone.sh                          |   3 +-
 t/t5616-partial-clone.sh                  |   4 +-
 unpack-trees.c                            |   8 +-
 27 files changed, 523 insertions(+), 172 deletions(-)
 delete mode 100644 fetch-object.c
 delete mode 100644 fetch-object.h
 create mode 100644 promisor-remote.c
 create mode 100644 promisor-remote.h

-- 
2.22.0.229.ga13d9ffdf7.dirty


^ permalink raw reply	[relevance 3%]

* Re: [ANNOUNCE] Git v2.22.0
  2019-06-07 21:31  2% [ANNOUNCE] Git v2.22.0 Junio C Hamano
@ 2019-06-07 22:48  0% ` Bhaskar Chowdhury
  0 siblings, 0 replies; 162+ results
From: Bhaskar Chowdhury @ 2019-06-07 22:48 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Linux Kernel, git-packagers

[-- Attachment #1: Type: text/plain, Size: 73593 bytes --]

Thanks, a bunch Junio!

On 14:31 Fri 07 Jun , Junio C Hamano wrote:
>The latest feature release Git v2.22.0 is now available at the
>usual places.  It is comprised of 745 non-merge commits since
>v2.21.0, contributed by 74 people, 18 of which are new faces.
>
>The tarballs are found at:
>
>    https://www.kernel.org/pub/software/scm/git/
>
>The following public repositories all have a copy of the 'v2.22.0'
>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.21.0 are as follows.
>Welcome to the Git development community!
>
>  Alexander Blesius, Baruch Siach, Boxuan Li, Cédric Malard,
>  Chris Mayo, Chris. Webster, Clément Chigot, Corentin BOMPARD,
>  Damien Robert, Dustin Spicuzza, Emily Shaffer, Michal Suchanek,
>  Rohit Ashiwal, Sun Chao, Tanushree Tumane, Vadim Kochan,
>  William Hubbs, and Yash Bhatambare.
>
>Returning contributors who helped this release are as follows.
>Thanks for your continued support.
>
>  Ævar Arnfjörð Bjarmason, Alban Gruin, Alessandro Menti,
>  Alexander Shopov, Anders Waldenborg, Andreas Heiduk, Andrei
>  Rybak, Beat Bolli, Ben Peart, Brandon Richardson, brian
>  m. carlson, Carlo Marcelo Arenas Belón, Christian Couder,
>  Christopher Díaz Riveros, Daniels Umanovskis, David Aguilar,
>  David Kastrup, Denton Liu, Derrick Stolee, Elijah Newren, Eric
>  Sunshine, Eric Wong, Fangyi Zhou, İsmail Dönmez, Jean-Noël
>  Avila, Jeff Hostetler, Jeff King, Jiang Xin, Joel Teichroeb,
>  Joey Hess, Johannes Schindelin, Jonathan Tan, Jordi Mas, Josh
>  Steadmon, Junio C Hamano, Kyle Meyer, Martin Ågren, Matthew
>  Kraai, Matthias Rüster, Mike Hommey, Nguyễn Thái Ngọc
>  Duy, Paul-Sebastian Ungureanu, Peter Krefting, Philip Oakley,
>  Phillip Wood, Ralf Thielow, Ramsay Jones, René Scharfe, Robert
>  P. J. Day, Sven Strickroth, SZEDER Gábor, Taylor Blau, Thomas
>  Gummerer, Todd Zullinger, Torsten Bögershausen, and Trần
>  Ngọc Quân.
>
>----------------------------------------------------------------
>
>Git 2.22 Release Notes
>======================
>
>Updates since v2.21
>-------------------
>
>Backward compatibility note
>
> * The filter specification "--filter=sparse:path=<path>" used to
>   create a lazy/partial clone has been removed.  Using a blob that is
>   part of the project as sparse specification is still supported with
>   the "--filter=sparse:oid=<blob>" option.
>
>UI, Workflows & Features
>
> * "git checkout --no-overlay" can be used to trigger a new mode of
>   checking out paths out of the tree-ish, that allows paths that
>   match the pathspec that are in the current index and working tree
>   and are not in the tree-ish.
>
> * The %(trailers) formatter in "git log --format=..."  now allows to
>   optionally pick trailers selectively by keyword, show only values,
>   etc.
>
> * Four new configuration variables {author,committer}.{name,email}
>   have been introduced to override user.{name,email} in more specific
>   cases.
>
> * Command-line completion (in contrib/) learned to tab-complete the
>   "git submodule absorbgitdirs" subcommand.
>
> * "git branch" learned a new subcommand "--show-current".
>
> * Output from "diff --cc" did not show the original paths when the
>   merge involved renames.  A new option adds the paths in the
>   original trees to the output.
>
> * The command line completion (in contrib/) has been taught to
>   complete more subcommand parameters.
>
> * The final report from "git bisect" used to show the suspected
>   culprit using a raw "diff-tree", with which there is no output for
>   a merge commit.  This has been updated to use a more modern and
>   human readable output that still is concise enough.
>
> * "git rebase --rebase-merges" replaces its old "--preserve-merges"
>   option; the latter is now marked as deprecated.
>
> * Error message given while cloning with --recurse-submodules has
>   been updated.
>
> * The completion helper code now pays attention to repository-local
>   configuration (when available), which allows --list-cmds to honour
>   a repository specific setting of completion.commands, for example.
>
> * "git mergetool" learned to offer Sublime Merge (smerge) as one of
>   its backends.
>
> * A new hook "post-index-change" is called when the on-disk index
>   file changes, which can help e.g. a virtualized working tree
>   implementation.
>
> * "git difftool" can now run outside a repository.
>
> * "git checkout -m <other>" was about carrying the differences
>   between HEAD and the working-tree files forward while checking out
>   another branch, and ignored the differences between HEAD and the
>   index.  The command has been taught to abort when the index and the
>   HEAD are different.
>
> * A progress indicator has been added to the "index-pack" step, which
>   often makes users wait for completion during "git clone".
>
> * "git submodule" learns "set-branch" subcommand that allows the
>   submodule.*.branch settings to be modified.
>
> * "git merge-recursive" backend recently learned a new heuristics to
>   infer file movement based on how other files in the same directory
>   moved.  As this is inherently less robust heuristics than the one
>   based on the content similarity of the file itself (rather than
>   based on what its neighbours are doing), it sometimes gives an
>   outcome unexpected by the end users.  This has been toned down to
>   leave the renamed paths in higher/conflicted stages in the index so
>   that the user can examine and confirm the result.
>
> * "git tag" learned to give an advice suggesting it might be a
>   mistake when creating an annotated or signed tag that points at
>   another tag.
>
> * The "git pack-objects" command learned to report the number of
>   objects it packed via the trace2 mechanism.
>
> * The list of conflicted paths shown in the editor while concluding a
>   conflicted merge was shown above the scissors line when the
>   clean-up mode is set to "scissors", even though it was commented
>   out just like the list of updated paths and other information to
>   help the user explain the merge better.
>
> * The trace2 tracing facility learned to auto-generate a filename
>   when told to log to a directory.
>
> * "git clone" learned a new --server-option option when talking over
>   the protocol version 2.
>
> * The connectivity bitmaps are created by default in bare
>   repositories now; also the pathname hash-cache is created by
>   default to avoid making crappy deltas when repacking.
>
> * "git branch new A...B" and "git checkout -b new A...B" have been
>   taught that in their contexts, the notation A...B means "the merge
>   base between these two commits", just like "git checkout A...B"
>   detaches HEAD at that commit.
>
> * Update "git difftool" and "git mergetool" so that the combinations
>   of {diff,merge}.{tool,guitool} configuration variables serve as
>   fallback settings of each other in a sensible order.
>
> * The "--dir-diff" mode of "git difftool" is not useful in "--no-index"
>   mode; they are now explicitly marked as mutually incompatible.
>
>
>Performance, Internal Implementation, Development Support etc.
>
> * The diff machinery, one of the oldest parts of the system, which
>   long predates the parse-options API, uses fairly long and complex
>   handcrafted option parser.  This is being rewritten to use the
>   parse-options API.
>
> * The implementation of pack-redundant has been updated for
>   performance in a repository with many packfiles.
>
> * A more structured way to obtain execution trace has been added.
>
> * "git prune" has been taught to take advantage of reachability
>   bitmap when able.
>
> * The command line parser of "git commit-tree" has been rewritten to
>   use the parse-options API.
>
> * Suggest GitGitGadget instead of submitGit as a way to submit
>   patches based on GitHub PR to us.
>
> * The test framework has been updated to help developers by making it
>   easier to run most of the tests under different versions of
>   over-the-wire protocols.
>
> * Dev support update to make it easier to compare two formatted
>   results from our documentation.
>
> * The scripted "git rebase" implementation has been retired.
>
> * "git multi-pack-index verify" did not scale well with the number of
>   packfiles, which is being improved.
>
> * "git stash" has been rewritten in C.
>
> * The "check-docs" Makefile target to support developers has been
>   updated.
>
> * The tests have been updated not to rely on the abbreviated option
>   names the parse-options API offers, to protect us from an
>   abbreviated form of an option that used to be unique within the
>   command getting non-unique when a new option that share the same
>   prefix is added.
>
> * The scripted version of "git rebase -i" wrote and rewrote the todo
>   list many times during a single step of its operation, and the
>   recent C-rewrite made a faithful conversion of the logic to C.  The
>   implementation has been updated to carry necessary information
>   around in-core to avoid rewriting the same file over and over
>   unnecessarily.
>
> * Test framework update to more robustly clean up leftover files and
>   processes after tests are done.
>
> * Conversion from unsigned char[20] to struct object_id continues.
>
> * While running "git diff" in a lazy clone, we can upfront know which
>   missing blobs we will need, instead of waiting for the on-demand
>   machinery to discover them one by one.  The code learned to aim to
>   achieve better performance by batching the request for these
>   promised blobs.
>
> * During an initial "git clone --depth=..." partial clone, it is
>   pointless to spend cycles for a large portion of the connectivity
>   check that enumerates and skips promisor objects (which by
>   definition is all objects fetched from the other side).  This has
>   been optimized out.
>
> * Mechanically and systematically drop "extern" from function
>   declaration.
>
> * The script to aggregate perf result unconditionally depended on
>   libjson-perl even though it did not have to, which has been
>   corrected.
>
> * The internal implementation of "git rebase -i" has been updated to
>   avoid forking a separate "rebase--interactive" process.
>
> * Allow DEP and ASLR for Windows build to for security hardening.
>
> * Performance test framework has been broken and measured the version
>   of Git that happens to be on $PATH, not the specified one to
>   measure, for a while, which has been corrected.
>
> * Optionally "make coccicheck" can feed multiple source files to
>   spatch, gaining performance while spending more memory.
>
> * Attempt to use an abbreviated option in "git clone --recurs" is
>   responded by a request to disambiguate between --recursive and
>   --recurse-submodules, which is bad because these two are synonyms.
>   The parse-options API has been extended to define such synonyms
>   more easily and not produce an unnecessary failure.
>
> * A pair of private functions in http.c that had names similar to
>   fread/fwrite did not return the number of elements, which was found
>   to be confusing.
>
> * Update collision-detecting SHA-1 code to build properly on HP-UX.
>
>
>Fixes since v2.21
>-----------------
>
> * "git prune-packed" did not notice and complain against excess
>   arguments given from the command line, which now it does.
>   (merge 9b0bd87ed2 rj/prune-packed-excess-args later to maint).
>
> * Split-index fix.
>   (merge 6e37c8ed3c nd/split-index-null-base-fix later to maint).
>
> * "git diff --no-index" may still want to access Git goodies like
>   --ext-diff and --textconv, but so far these have been ignored,
>   which has been corrected.
>   (merge 287ab28bfa jk/diff-no-index-initialize later to maint).
>
> * Unify RPC code for smart http in protocol v0/v1 and v2, which fixes
>   a bug in the latter (lack of authentication retry) and generally
>   improves the code base.
>   (merge a97d00799a jt/http-auth-proto-v2-fix later to maint).
>
> * The include file compat/bswap.h has been updated so that it is safe
>   to (accidentally) include it more than once.
>   (merge 33aa579a55 jk/guard-bswap-header later to maint).
>
> * The set of header files used by "make hdr-check" unconditionally
>   included sha256/gcrypt.h, even when it is not used, causing the
>   make target to fail.  We now skip it when GCRYPT_SHA256 is not in
>   use.
>   (merge f23aa18e7f rj/hdr-check-gcrypt-fix later to maint).
>
> * The Makefile uses 'find' utility to enumerate all the *.h header
>   files, which is expensive on platforms with slow filesystems; it
>   now optionally uses "ls-files" if working within a repository,
>   which is a trick similar to how all sources are enumerated to run
>   ETAGS on.
>   (merge 92b88eba9f js/find-lib-h-with-ls-files-when-possible later to maint).
>
> * "git rebase" that was reimplemented in C did not set ORIG_HEAD
>   correctly, which has been corrected.
>   (merge cbd29ead92 js/rebase-orig-head-fix later to maint).
>
> * Dev support.
>   (merge f545737144 js/stress-test-ui-tweak later to maint).
>
> * CFLAGS now can be tweaked when invoking Make while using
>   DEVELOPER=YesPlease; this did not work well before.
>   (merge 6d5d4b4e93 ab/makefile-help-devs-more later to maint).
>
> * "git fsck --connectivity-only" omits computation necessary to sift
>   the objects that are not reachable from any of the refs into
>   unreachable and dangling.  This is now enabled when dangling
>   objects are requested (which is done by default, but can be
>   overridden with the "--no-dangling" option).
>   (merge 8d8c2a5aef jk/fsck-doc later to maint).
>
> * On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX),
>   the upload-pack that runs on the other end that hangs up after
>   detecting an error could cause "git fetch" to die with a signal,
>   which led to a flaky test.  "git fetch" now ignores SIGPIPE during
>   the network portion of its operation (this is not a problem as we
>   check the return status from our write(2)s).
>   (merge 143588949c jk/no-sigpipe-during-network-transport later to maint).
>
> * A recent update broke "is this object available to us?" check for
>   well-known objects like an empty tree (which should yield "yes",
>   even when there is no on-disk object for an empty tree), which has
>   been corrected.
>   (merge f06ab027ef jk/virtual-objects-do-exist later to maint).
>
> * The setup code has been cleaned up to avoid leaks around the
>   repository_format structure.
>   (merge e8805af1c3 ma/clear-repository-format later to maint).
>
> * "git config --type=color ..." is meant to replace "git config --get-color"
>   but there is a slight difference that wasn't documented, which is
>   now fixed.
>   (merge cd8e7593b9 jk/config-type-color-ends-with-lf later to maint).
>
> * When the "clean" filter can reduce the size of a huge file in the
>   working tree down to a small "token" (a la Git LFS), there is no
>   point in allocating a huge scratch area upfront, but the buffer is
>   sized based on the original file size.  The convert mechanism now
>   allocates very minimum and reallocates as it receives the output
>   from the clean filter process.
>   (merge 02156ab031 jh/resize-convert-scratch-buffer later to maint).
>
> * "git rebase" uses the refs/rewritten/ hierarchy to store its
>   intermediate states, which inherently makes the hierarchy per
>   worktree, but it didn't quite work well.
>   (merge b9317d55a3 nd/rewritten-ref-is-per-worktree later to maint).
>
> * "git log -L<from>,<to>:<path>" with "-s" did not suppress the patch
>   output as it should.  This has been corrected.
>   (merge 05314efaea jk/line-log-with-patch later to maint).
>
> * "git worktree add" used to do a "find an available name with stat
>   and then mkdir", which is race-prone.  This has been fixed by using
>   mkdir and reacting to EEXIST in a loop.
>   (merge 7af01f2367 ms/worktree-add-atomic-mkdir later to maint).
>
> * Build update for SHA-1 with collision detection.
>   (merge 07a20f569b jk/sha1dc later to maint).
>
> * Build procedure has been fixed around use of asciidoctor instead of
>   asciidoc.
>   (merge 185f9a0ea0 ma/asciidoctor-fixes later to maint).
>
> * remote-http transport did not anonymize URLs reported in its error
>   messages at places.
>   (merge c1284b21f2 js/anonymize-remote-curl-diag later to maint).
>
> * Error messages given from the http transport have been updated so
>   that they can be localized.
>   (merge ed8b4132c8 js/remote-curl-i18n later to maint).
>
> * "git init" forgot to read platform-specific repository
>   configuration, which made Windows port to ignore settings of
>   core.hidedotfiles, for example.
>
> * A corner-case object name ambiguity while the sequencer machinery
>   is working (e.g. "rebase -i -x") has been fixed.
>
> * "git format-patch" did not diagnose an error while opening the
>   output file for the cover-letter, which has been corrected.
>   (merge 2fe95f494c jc/format-patch-error-check later to maint).
>
> * "git checkout -f <branch>" while the index has an unmerged path
>   incorrectly left some paths in an unmerged state, which has been
>   corrected.
>
> * A corner case bug in the refs API has been corrected.
>   (merge d3322eb28b jk/refs-double-abort later to maint).
>
> * Unicode update.
>   (merge 584b62c37b bb/unicode-12 later to maint).
>
> * dumb-http walker has been updated to share more error recovery
>   strategy with the normal codepath.
>
> * A buglet in configuration parser has been fixed.
>   (merge 19e7fdaa58 nd/include-if-wildmatch later to maint).
>
> * The documentation for "git read-tree --reset -u" has been updated.
>   (merge b5a0bd694c nd/read-tree-reset-doc later to maint).
>
> * Code clean-up around a much-less-important-than-it-used-to-be
>   update_server_info() function.
>   (merge b3223761c8 jk/server-info-rabbit-hole later to maint).
>
> * The message given when "git commit -a <paths>" errors out has been
>   updated.
>   (merge 5a1dbd48bc nd/commit-a-with-paths-msg-update later to maint).
>
> * "git cherry-pick --options A..B", after giving control back to the
>   user to ask help resolving a conflicted step, did not honor the
>   options it originally received, which has been corrected.
>
> * Various glitches in "git gc" around reflog handling have been fixed.
>
> * The code to read from commit-graph file has been cleanup with more
>   careful error checking before using data read from it.
>
> * Performance fix around "git fetch" that grabs many refs.
>   (merge b764300912 jt/fetch-pack-wanted-refs-optim later to maint).
>
> * Protocol v2 support in "git fetch-pack" of shallow clones has been
>   corrected.
>
> * Performance fix around "git blame", especially in a linear history
>   (which is the norm we should optimize for).
>   (merge f892014943 dk/blame-keep-origin-blob later to maint).
>
> * Performance fix for "rev-list --parents -- pathspec".
>   (merge 8320b1dbe7 jk/revision-rewritten-parents-in-prio-queue later to maint).
>
> * Updating the display with progress message has been cleaned up to
>   deal better with overlong messages.
>   (merge 545dc345eb sg/overlong-progress-fix later to maint).
>
> * "git blame -- path" in a non-bare repository starts blaming from
>   the working tree, and the same command in a bare repository errors
>   out because there is no working tree by definition.  The command
>   has been taught to instead start blaming from the commit at HEAD,
>   which is more useful.
>   (merge a544fb08f8 sg/blame-in-bare-start-at-head later to maint).
>
> * An underallocation in the code to read the untracked cache
>   extension has been corrected.
>   (merge 3a7b45a623 js/untracked-cache-allocfix later to maint).
>
> * The code is updated to check the result of memory allocation before
>   it is used in more places, by using xmalloc and/or xcalloc calls.
>   (merge 999b951b28 jk/xmalloc later to maint).
>
> * The GETTEXT_POISON test option has been quite broken ever since it
>   was made runtime-tunable, which has been fixed.
>   (merge f88b9cb603 jc/gettext-test-fix later to maint).
>
> * Test fix on APFS that is incapable of store paths in Latin-1.
>   (merge 3889149619 js/iso8895-test-on-apfs later to maint).
>
> * "git submodule foreach <command> --quiet" did not pass the option
>   down correctly, which has been corrected.
>   (merge a282f5a906 nd/submodule-foreach-quiet later to maint).
>
> * "git send-email" has been taught to use quoted-printable when the
>   payload contains carriage-return.  The use of the mechanism is in
>   line with the design originally added the codepath that chooses QP
>   when the payload has overly long lines.
>   (merge 74d76a1701 bc/send-email-qp-cr later to maint).
>
> * The recently added feature to add addresses that are on
>   anything-by: trailers in 'git send-email' was found to be way too
>   eager and considered nonsense strings as if they can be legitimate
>   beginning of *-by: trailer.  This has been tightened.
>
> * Builds with gettext broke on recent macOS w/ Homebrew, which
>   seems to have stopped including from /usr/local/include; this
>   has been corrected.
>   (merge 92a1377a2a js/macos-gettext-build later to maint).
>
> * Running "git add" on a repository created inside the current
>   repository is an explicit indication that the user wants to add it
>   as a submodule, but when the HEAD of the inner repository is on an
>   unborn branch, it cannot be added as a submodule.  Worse, the files
>   in its working tree can be added as if they are a part of the outer
>   repository, which is not what the user wants.  These problems are
>   being addressed.
>   (merge f937bc2f86 km/empty-repo-is-still-a-repo later to maint).
>
> * "git cherry-pick" run with the "-x" or the "--signoff" option used
>   to (and more importantly, ought to) clean up the commit log message
>   with the --cleanup=space option by default, but this has been
>   broken since late 2017.  This has been fixed.
>
> * When given a tag that points at a commit-ish, "git replace --graft"
>   failed to peel the tag before writing a replace ref, which did not
>   make sense because the old graft mechanism the feature wants to
>   mimic only allowed to replace one commit object with another.
>   This has been fixed.
>   (merge ee521ec4cb cc/replace-graft-peel-tags later to maint).
>
> * Code tightening against a "wrong" object appearing where an object
>   of a different type is expected, instead of blindly assuming that
>   the connection between objects are correctly made.
>   (merge 97dd512af7 tb/unexpected later to maint).
>
> * An earlier update for MinGW and Cygwin accidentally broke MSVC build,
>   which has been fixed.
>   (merge 22c3634c0f ss/msvc-path-utils-fix later to maint).
>
> * %(push:track) token used in the --format option to "git
>   for-each-ref" and friends was not showing the right branch, which
>   has been fixed.
>   (merge c646d0934e dr/ref-filter-push-track-fix later to maint).
>
> * "make check-docs", "git help -a", etc. did not account for cases
>   where a particular build may deliberately omit some subcommands,
>   which has been corrected.
>
> * The logic to tell if a Git repository has a working tree protects
>   "git branch -D" from removing the branch that is currently checked
>   out by mistake.  The implementation of this logic was broken for
>   repositories with unusual name, which unfortunately is the norm for
>   submodules these days.  This has been fixed.
>   (merge f3534c98e4 jt/submodule-repo-is-with-worktree later to maint).
>
> * AIX shared the same build issues with other BSDs around fileno(fp),
>   which has been corrected.
>   (merge ee662bf5c6 cc/aix-has-fileno-as-a-macro later to maint).
>
> * The autoconf generated configure script failed to use the right
>   gettext() implementations from -libintl by ignoring useless stub
>   implementations shipped in some C library, which has been
>   corrected.
>   (merge b71e56a683 vk/autoconf-gettext later to maint).
>
> * Fix index-pack perf test so that the repeated invocations always
>   run in an empty repository, which emulates the initial clone
>   situation better.
>   (merge 775c71e16d jk/p5302-avoid-collision-check-cost later to maint).
>
> * A "ls-files" that emulates "find" to enumerate files in the working
>   tree resulted in duplicated Makefile rules that caused the build to
>   issue an unnecessary warning during a trial build after merge
>   conflicts are resolved in working tree *.h files but before the
>   resolved results are added to the index.  This has been corrected.
>
> * "git cherry-pick" (and "revert" that shares the same runtime engine)
>   that deals with multiple commits got confused when the final step
>   gets stopped with a conflict and the user concluded the sequence
>   with "git commit".  Attempt to fix it by cleaning up the state
>   files used by these commands in such a situation.
>   (merge 4a72486de9 pw/clean-sequencer-state-upon-final-commit later to maint).
>
> * On a filesystem like HFS+, the names of the refs stored as filesystem
>   entities may become different from what the end-user expects, just
>   like files in the working tree get "renamed".  Work around the
>   mismatch by paying attention to the core.precomposeUnicode
>   configuration.
>   (merge 8e712ef6fc en/unicode-in-refnames later to maint).
>
> * The code to generate the multi-pack idx file was not prepared to
>   see too many packfiles and ran out of open file descriptor, which
>   has been corrected.
>
> * To run tests for Git SVN, our scripts for CI used to install the
>   git-svn package (in the hope that it would bring in the right
>   dependencies).  This has been updated to install the more direct
>   dependency, namely, libsvn-perl.
>   (merge db864306cf sg/ci-libsvn-perl later to maint).
>
> * "git cvsexportcommit" running on msys did not expect cvsnt showed
>   "cvs status" output with CRLF line endings.
>
> * The fsmonitor interface got out of sync after the in-core index
>   file gets discarded, which has been corrected.
>   (merge 398a3b0899 js/fsmonitor-refresh-after-discarding-index later to maint).
>
> * "git status" did not know that the "label" instruction in the
>   todo-list "rebase -i -r" uses should not be shown as a hex object
>   name.
>
> * A prerequisite check in the test suite to see if a working jgit is
>   available was made more robust.
>   (merge abd0f28983 tz/test-lib-check-working-jgit later to maint).
>
> * The codepath to parse :<path> that obtains the object name for an
>   indexed object has been made more robust.
>
> * Code cleanup, docfix, build fix, etc.
>   (merge 11f470aee7 jc/test-yes-doc later to maint).
>   (merge 90503a240b js/doc-symref-in-proto-v1 later to maint).
>   (merge 5c326d1252 jk/unused-params later to maint).
>   (merge 68cabbfda3 dl/doc-submodule-wo-subcommand later to maint).
>   (merge 9903623761 ab/receive-pack-use-after-free-fix later to maint).
>   (merge 1ede45e44b en/merge-options-doc later to maint).
>   (merge 3e14dd2c8e rd/doc-hook-used-in-sample later to maint).
>   (merge c271dc28fd nd/no-more-check-racy later to maint).
>   (merge e6e15194a8 yb/utf-16le-bom-spellfix later to maint).
>   (merge bb101aaf0c rd/attr.c-comment-typofix later to maint).
>   (merge 716a5af812 rd/gc-prune-doc-fix later to maint).
>   (merge 50b206371d js/untravis-windows later to maint).
>   (merge dbf47215e3 js/rebase-recreate-merge later to maint).
>   (merge 56cb2d30f8 dl/reset-doc-no-wrt-abbrev later to maint).
>   (merge 64eca306a2 ja/dir-rename-doc-markup-fix later to maint).
>   (merge af91b0230c dl/ignore-docs later to maint).
>   (merge 59a06e947b ra/t3600-test-path-funcs later to maint).
>   (merge e041d0781b ar/t4150-remove-cruft later to maint).
>   (merge 8d75a1d183 ma/asciidoctor-fixes-more later to maint).
>   (merge 74cc547b0f mh/pack-protocol-doc-fix later to maint).
>   (merge ed31851fa6 ab/doc-misc-typofixes later to maint).
>   (merge a7256debd4 nd/checkout-m-doc-update later to maint).
>   (merge 3a9e1ad78d jt/t5551-protocol-v2-does-not-have-half-auth later to maint).
>   (merge 0b918b75af sg/t5318-cleanup later to maint).
>   (merge 68ed71b53c cb/doco-mono later to maint).
>   (merge a34dca2451 nd/interpret-trailers-docfix later to maint).
>   (merge cf7b857a77 en/fast-import-parsing-fix later to maint).
>   (merge fe61ccbc35 po/rerere-doc-fmt later to maint).
>   (merge ffea0248bf po/describe-not-necessarily-7 later to maint).
>   (merge 7cb7283adb tg/ls-files-debug-format-fix later to maint).
>   (merge f64a21bd82 tz/doc-apostrophe-no-longer-needed later to maint).
>   (merge dbe7b41019 js/t3301-unbreak-notes-test later to maint).
>   (merge d8083e4180 km/t3000-retitle later to maint).
>   (merge 9e4cbccbd7 tz/git-svn-doc-markup-fix later to maint).
>   (merge da9ca955a7 jk/ls-files-doc-markup-fix later to maint).
>   (merge 6804ba3a58 cw/diff-highlight later to maint).
>   (merge 1a8787144d nd/submodule-helper-incomplete-line-fix later to maint).
>   (merge d9ef573837 jk/apache-lsan later to maint).
>   (merge c871fbee2b js/t6500-use-windows-pid-on-mingw later to maint).
>   (merge ce4c7bfc90 bl/t4253-exit-code-from-format-patch later to maint).
>   (merge 397a46db78 js/t5580-unc-alternate-test later to maint).
>   (merge d4907720a2 cm/notes-comment-fix later to maint).
>   (merge 9dde06de13 cb/http-push-null-in-message-fix later to maint).
>   (merge 4c785c0edc js/rebase-config-bitfix later to maint).
>   (merge 8e9fe16c87 es/doc-gitsubmodules-markup later to maint).
>
>----------------------------------------------------------------
>
>Changes since v2.21.0 are as follows:
>
>Alban Gruin (18):
>      sequencer: changes in parse_insn_buffer()
>      sequencer: make the todo_list structure public
>      sequencer: remove the 'arg' field from todo_item
>      sequencer: refactor transform_todos() to work on a todo_list
>      sequencer: introduce todo_list_write_to_file()
>      sequencer: refactor check_todo_list() to work on a todo_list
>      sequencer: refactor sequencer_add_exec_commands() to work on a todo_list
>      sequencer: refactor rearrange_squash() to work on a todo_list
>      sequencer: make sequencer_make_script() write its script to a strbuf
>      sequencer: change complete_action() to use the refactored functions
>      rebase--interactive: move sequencer_add_exec_commands()
>      rebase--interactive: move rearrange_squash_in_todo_file()
>      sequencer: refactor skip_unnecessary_picks() to work on a todo_list
>      rebase-interactive: use todo_list_write_to_file() in edit_todo_list()
>      rebase-interactive: append_todo_help() changes
>      rebase-interactive: rewrite edit_todo_list() to handle the initial edit
>      sequencer: use edit_todo_list() in complete_action()
>      rebase--interactive: move transform_todo_file()
>
>Alessandro Menti (1):
>      l10n: it.po: Updated Italian translation
>
>Alexander Blesius (1):
>      doc: fix typos in man pages
>
>Alexander Shopov (4):
>      gitk: Update Bulgarian translation (317t)
>      l10n: bg.po: Updated Bulgarian translation (4577t)
>      l10n: bg.po: Updated Bulgarian translation (4580t)
>      l10n: bg.po: Updated Bulgarian translation (4581t)
>
>Anders Waldenborg (7):
>      doc: group pretty-format.txt placeholders descriptions
>      pretty: allow %(trailers) options with explicit value
>      pretty: single return path in %(trailers) handling
>      pretty: allow showing specific trailers
>      pretty: add support for "valueonly" option in %(trailers)
>      strbuf: separate callback for strbuf_expand:ing literals
>      pretty: add support for separator option in %(trailers)
>
>Andreas Heiduk (1):
>      revisions.txt: remove ambibuity between <rev>:<path> and :<path>
>
>Andrei Rybak (1):
>      t4150: remove unused variable
>
>Baruch Siach (1):
>      send-email: don't cc *-by lines with '-' prefix
>
>Beat Bolli (1):
>      unicode: update the width tables to Unicode 12
>
>Ben Peart (1):
>      read-cache: add post-index-change hook
>
>Boxuan Li (1):
>      t4253-am-keep-cr-dos: avoid using pipes
>
>Brandon Richardson (1):
>      commit-tree: utilize parse-options api
>
>Carlo Marcelo Arenas Belón (1):
>      http-push: prevent format overflow warning with gcc >= 9
>
>Chris Mayo (1):
>      notes: correct documentation of format_display_notes()
>
>Chris. Webster (1):
>      diff-highlight: use correct /dev/null for UNIX and Windows
>
>Christian Couder (5):
>      t6050: use test_line_count instead of wc -l
>      t6050: redirect expected error output to a file
>      replace: peel tag when passing a tag as parent to --graft
>      replace: peel tag when passing a tag first to --graft
>      list-objects-filter: disable 'sparse:path' filters
>
>Christopher Díaz Riveros (3):
>      l10n: es: 2.22.0 round 1
>      l10n: es: 2.22.0 round 2
>      l10n: es: 2.22.0 round 3
>
>Clément Chigot (2):
>      Makefile: use fileno macro work around on AIX
>      git-compat-util: work around for access(X_OK) under root
>
>Corentin BOMPARD (2):
>      doc/CodingGuidelines: URLs and paths as monospace
>      doc: format pathnames and URLs as monospace.
>
>Cédric Malard (1):
>      l10n: fr.po: Review French translation
>
>Damien Robert (1):
>      ref-filter: use correct branch for %(push:track)
>
>Daniels Umanovskis (1):
>      branch: introduce --show-current display option
>
>David Aguilar (2):
>      mergetools: add support for smerge (Sublime Merge)
>      contrib/completion: add smerge to the mergetool completion candidates
>
>David Kastrup (1):
>      blame.c: don't drop origin blobs as eagerly
>
>Denton Liu (38):
>      completion: complete git submodule absorbgitdirs
>      git-submodule.txt: "--branch <branch>" option defaults to 'master'
>      submodule--helper: teach config subcommand --unset
>      submodule: document default behavior
>      git-reset.txt: clarify documentation
>      git-clean.txt: clarify ignore pattern files
>      docs: move core.excludesFile from git-add to gitignore
>      contrib/subtree: ensure only one rev is provided
>      midx.c: convert FLEX_ALLOC_MEM to FLEX_ALLOC_STR
>      cocci: FLEX_ALLOC_MEM to FLEX_ALLOC_STR
>      tag: fix formatting
>      submodule: teach set-branch subcommand
>      tag: advise on nested tags
>      t7600: clean up style
>      t3507: clean up style
>      t7604: clean up style
>      t7502: clean up style
>      commit: extract cleanup_mode functions to sequencer
>      parse-options.h: extract common --cleanup option
>      merge: cleanup messages like commit
>      merge: add scissors line on merge conflict
>      cherry-pick/revert: add scissors line on merge conflict
>      t7610: unsuppress output
>      t7610: add mergetool --gui tests
>      *.[ch]: remove extern from function declarations using spatch
>      *.[ch]: remove extern from function declarations using sed
>      *.[ch]: manually align parameter lists
>      t2018: cleanup in current test
>      branch: make create_branch accept a merge base rev
>      revisions.txt: change "rev" to "<rev>"
>      revisions.txt: mark optional rev arguments with []
>      revisions.txt: mention <rev>~ form
>      tag: fix typo in nested tagging hint
>      mergetool: use get_merge_tool function
>      mergetool--lib: create gui_mode function
>      mergetool: fallback to tool when guitool unavailable
>      difftool: make --gui, --tool and --extcmd mutually exclusive
>      difftool: fallback on merge.guitool
>
>Derrick Stolee (4):
>      trace2:data: pack-objects: add trace2 regions
>      midx: pass a repository pointer
>      midx: add packs to packed_git linked list
>      trace2: add variable description to git.txt
>
>Dustin Spicuzza (1):
>      cvsexportcommit: force crlf translation
>
>Elijah Newren (24):
>      log,diff-tree: add --combined-all-paths option
>      merge-options.txt: correct wording of --no-commit option
>      t9300: demonstrate bug with get-mark and empty orphan commits
>      git-fast-import.txt: fix wording about where ls command can appear
>      fast-import: check most prominent commands first
>      fast-import: only allow cat-blob requests where it makes sense
>      fast-import: fix erroneous handling of get-mark with empty orphan commits
>      Use 'unsigned short' for mode, like diff_filespec does
>      merge-recursive: rename merge_options argument from 'o' to 'opt'
>      merge-recursive: rename diff_filespec 'one' to 'o'
>      merge-recursive: rename locals 'o' and 'a' to 'obuf' and 'abuf'
>      merge-recursive: use 'ci' for rename_conflict_info variable name
>      merge-recursive: move some struct declarations together
>      merge-recursive: shrink rename_conflict_info
>      merge-recursive: remove ren[12]_other fields from rename_conflict_info
>      merge-recursive: track branch where rename occurred in rename struct
>      merge-recursive: cleanup handle_rename_* function signatures
>      merge-recursive: switch from (oid,mode) pairs to a diff_filespec
>      t6043: fix copied test description to match its purpose
>      merge-recursive: track information associated with directory renames
>      merge-recursive: give callers of handle_content_merge() access to contents
>      merge-recursive: switch directory rename detection default
>      Honor core.precomposeUnicode in more places
>      merge-recursive: restore accidentally dropped setting of path
>
>Emily Shaffer (1):
>      gitsubmodules: align html and nroff lists
>
>Eric Sunshine (1):
>      check-non-portable-shell: support Perl versions older than 5.10
>
>Eric Wong (1):
>      repack: enable bitmaps by default on bare repos
>
>Fangyi Zhou (1):
>      l10n: zh_CN: Revision for git v2.22.0 l10n
>
>Jean-Noël Avila (6):
>      l10n: fr.po remove obsolete entries
>      Doc: fix misleading asciidoc formating
>      l10n: fr.po v2.22.0.rnd1
>      diff: fix mistake in translatable strings
>      l10n: fr.po v2.22.0 round 2
>      l10n: fr v2.22.0 rnd 3
>
>Jeff Hostetler (30):
>      trace2: Documentation/technical/api-trace2.txt
>      trace2: create new combined trace facility
>      trace2: collect Windows-specific process information
>      trace2:data: add trace2 regions to wt-status
>      trace2:data: add editor/pager child classification
>      trace2:data: add trace2 sub-process classification
>      trace2:data: add trace2 transport child classification
>      trace2:data: add subverb to checkout command
>      trace2:data: add subverb to reset command
>      trace2:data: add trace2 hook classification
>      trace2:data: add subverb for rebase
>      trace2:data: add trace2 instrumentation to index read/write
>      trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh
>      trace2: add for_each macros to clang-format
>      progress: add sparse mode to force 100% complete message
>      trace2:data: add trace2 data to midx
>      midx: add progress indicators in multi-pack-index verify
>      midx: during verify group objects by packfile to speed verification
>      config: initialize opts structure in repo_read_config()
>      trace2: refactor setting process starting time
>      trace2: add absolute elapsed time to start event
>      trace2: find exec-dir before trace2 initialization
>      config: add read_very_early_config()
>      trace2: use system/global config for default trace2 settings
>      trace2: report peak memory usage of the process
>      trace2: clarify UTC datetime formatting
>      trace2: make SIDs more unique
>      trace2: update docs to describe system/global config settings
>      trace2: fixup access problem on /etc/gitconfig in read_very_early_config
>      trace2: fix tracing when NO_PTHREADS is defined
>
>Jeff King (92):
>      prune: lazily perform reachability traversal
>      prune: use bitmaps for reachability traversal
>      prune: check SEEN flag for reachability
>      t5304: rename "sha1" variables to "oid"
>      diff: drop options parameter from diffcore_fix_diff_index()
>      diff: drop unused color reset parameters
>      diff: drop unused emit data parameter from sane_truncate_line()
>      diff: drop complete_rewrite parameter from run_external_diff()
>      merge-recursive: drop several unused parameters
>      pack-objects: drop unused parameter from oe_map_new_pack()
>      files-backend: drop refs parameter from split_symref_update()
>      ref-filter: drop unused buf/sz pairs
>      ref-filter: drop unused "obj" parameters
>      ref-filter: drop unused "sz" parameters
>      diff: reuse diff setup for --no-index case
>      bisect: use string arguments to feed internal diff-tree
>      bisect: fix internal diff-tree config loading
>      bisect: make diff-tree output prettier
>      fetch: avoid calling write_or_die()
>      fetch: ignore SIGPIPE during network operation
>      rev-list: allow cached objects in existence check
>      doc/fsck: clarify --connectivity-only behavior
>      fsck: always compute USED flags for unreachable objects
>      compat/bswap: add include header guards
>      config: document --type=color output is a complete line
>      line-log: suppress diff output with "-s"
>      line-log: detect unsupported formats
>      point pull requesters to GitGitGadget
>      Makefile: fix unaligned loads in sha1dc with UBSan
>      t5310: correctly remove bitmaps for jgit test
>      pack-objects: default to writing bitmap hash-cache
>      perf-lib.sh: rely on test-lib.sh for --tee handling
>      revision: drop some unused "revs" parameters
>      log: drop unused rev_info from early output
>      log: drop unused "len" from show_tagger()
>      update-index: drop unused prefix_length parameter from do_reupdate()
>      test-date: drop unused "now" parameter from parse_dates()
>      unpack-trees: drop name_entry from traverse_by_cache_tree()
>      unpack-trees: drop unused error_type parameters
>      report_path_error(): drop unused prefix parameter
>      fetch_pack(): drop unused parameters
>      parse-options: drop unused ctx parameter from show_gitcomp()
>      pretty: drop unused "type" parameter in needs_rfc2047_encoding()
>      pretty: drop unused strbuf from parse_padding_placeholder()
>      git: read local config in --list-cmds
>      completion: fix multiple command removals
>      parse_opt_ref_sorting: always use with NONEG flag
>      refs/files-backend: handle packed transaction prepare failure
>      refs/files-backend: don't look at an aborted transaction
>      http: factor out curl result code normalization
>      http: normalize curl results for dumb loose and alternates fetches
>      http: use normalize_curl_result() instead of manual conversion
>      revision: use a prio_queue to hold rewritten parents
>      get_commit_tree(): return NULL for broken tree
>      rev-list: let traversal die when --missing is not in use
>      rev-list: detect broken root trees
>      test-prio-queue: use xmalloc
>      xdiff: use git-compat-util
>      xdiff: use xmalloc/xrealloc
>      progress: use xmalloc/xcalloc
>      t5516: drop ok=sigpipe from unreachable-want tests
>      t5530: check protocol response for "not our ref"
>      upload-pack: send ERR packet for non-tip objects
>      pkt-line: prepare buffer before handling ERR packets
>      fetch: use free_refs()
>      remote.c: make singular free_ref() public
>      fetch: do not consider peeled tags as advertised tips
>      packfile.h: drop extern from function declarations
>      pack-revindex: open index if necessary
>      t5319: fix bogus cat-file argument
>      t5319: drop useless --buffer from cat-file
>      midx: check both pack and index names for containment
>      packfile: fix pack basename computation
>      http: simplify parsing of remote objects/info/packs
>      server-info: fix blind pointer arithmetic
>      server-info: simplify cleanup in parse_pack_def()
>      server-info: use strbuf to read old info/packs file
>      server-info: drop nr_alloc struct member
>      server-info: drop objdirlen pointer arithmetic
>      update_info_refs(): drop unused force parameter
>      t5304: add a test for pruning with bitmaps
>      untracked-cache: be defensive about missing NULs in index
>      untracked-cache: simplify parsing by dropping "next"
>      untracked-cache: simplify parsing by dropping "len"
>      p5302: create the repo in each index-pack test
>      doc/ls-files: put nested list for "-t" option into block
>      t/perf: depend on perl JSON only when using --codespeed
>      t/perf: add perf script for partial clones
>      coccicheck: optionally batch spatch invocations
>      t/lib-httpd: pass LSAN_OPTIONS through apache
>      coccicheck: make batch size of 0 mean "unlimited"
>      get_oid: handle NULL repo->index
>
>Jiang Xin (9):
>      t5323: test cases for git-pack-redundant
>      pack-redundant: delay creation of unique_objects
>      pack-redundant: rename pack_list.all_objects
>      pack-redundant: consistent sort method
>      l10n: git.pot: v2.22.0 round 1 (270 new, 56 removed)
>      l10n: git.pot: v2.22.0 round 2 (6 new, 3 removed)
>      i18n: fix typos found during l10n for git 2.22.0
>      l10n: git.pot: v2.22.0 round 3 (3 new, 2 removed)
>      l10n: zh_CN: for git v2.22.0 l10n round 1~3
>
>Joel Teichroeb (5):
>      stash: improve option parsing test coverage
>      stash: convert apply to builtin
>      stash: convert drop and clear to builtin
>      stash: convert branch to builtin
>      stash: convert pop to builtin
>
>Joey Hess (1):
>      convert: avoid malloc of original file size
>
>Johannes Schindelin (67):
>      ident: add the ability to provide a "fallback identity"
>      travis: remove the hack to build the Windows job on Azure Pipelines
>      tests: let --stress-limit=<N> imply --stress
>      tests: introduce --stress-jobs=<N>
>      built-in rebase: no need to check out `onto` twice
>      built-in rebase: use the correct reflog when switching branches
>      built-in rebase: demonstrate that ORIG_HEAD is not set correctly
>      built-in rebase: set ORIG_HEAD just once, before the rebase
>      Makefile: use `git ls-files` to list header files, if possible
>      curl: anonymize URLs in error messages and warnings
>      remote-curl: mark all error messages for translation
>      stash: add back the original, scripted `git stash`
>      stash: optionally use the scripted version again
>      tests: add a special setup where stash.useBuiltin is off
>      legacy stash: fix "rudimentary backport of -q"
>      built-in stash: handle :(glob) pathspecs again
>      mingw: drop MakeMaker reference
>      mingw: allow building with an MSYS2 runtime v3.x
>      rebase: deprecate --preserve-merges
>      mingw: respect core.hidedotfiles = false in git-init again
>      test-lib: introduce 'test_atexit'
>      git-daemon: use 'test_atexit` to stop 'git-daemon'
>      git p4 test: use 'test_atexit' to kill p4d and the watchdog process
>      rebase -i: demonstrate obscure loose object cache bug
>      sequencer: improve error message when an OID could not be parsed
>      sequencer: move stale comment into correct location
>      get_oid(): when an object was not found, try harder
>      difftool: remove obsolete (and misleading) comment
>      parse-options: make OPT_ARGUMENT() more useful
>      difftool: allow running outside Git worktrees with --no-index
>      docs: move gitremote-helpers into section 7
>      docs: do not document the `git remote-testgit` command
>      check-docs: really look at the documented commands again
>      check-docs: do not expect guide pages to correspond to commands
>      check-docs: fix for setups where executables have an extension
>      tests (rebase): spell out the `--keep-empty` option
>      tests (rebase): spell out the `--force-rebase` option
>      t7810: do not abbreviate `--no-exclude-standard` nor `--invert-match`
>      t5531: avoid using an abbreviated option
>      tests (push): do not abbreviate the `--follow-tags` option
>      tests (status): spell out the `--find-renames` option in full
>      tests (pack-objects): use the full, unabbreviated `--revs` option
>      t3301: fix false negative
>      untracked cache: fix off-by-one
>      tests: disallow the use of abbreviated options (by default)
>      t9822: skip tests if file names cannot be ISO-8859-1 encoded
>      macOS: make sure that gettext is found
>      remote-testgit: move it into the support directory for t5801
>      Makefile: drop the NO_INSTALL variable
>      help -a: do not list commands that are excluded from the build
>      check-docs: allow command-list.txt to contain excluded commands
>      docs: exclude documentation for commands that have been excluded
>      check-docs: do not bother checking for legacy scripts' documentation
>      test-tool: handle the `-C <directory>` option just like `git`
>      Turn `git serve` into a test helper
>      t5580: verify that alternates can be UNC paths
>      fsmonitor: demonstrate that it is not refreshed after discard_index()
>      fsmonitor: force a refresh after the index was discarded
>      t6500(mingw): use the Windows PID of the shell
>      difftool --no-index: error out on --dir-diff (and don't crash)
>      status: fix display of rebase -ir's `label` command
>      parse-options: adjust `parse_opt_unknown_cb()`s declared return type
>      stash: document stash.useBuiltin
>      rebase: replace incorrect logical negation by correct bitwise one
>      tests: mark a couple more test cases as requiring `rebase -p`
>      docs: say that `--rebase=preserve` is deprecated
>      rebase docs: recommend `-r` over `-p`
>
>Jonathan Tan (25):
>      remote-curl: reduce scope of rpc_state.argv
>      remote-curl: reduce scope of rpc_state.stdin_preamble
>      remote-curl: reduce scope of rpc_state.result
>      remote-curl: refactor reading into rpc_state's buf
>      remote-curl: use post_rpc() for protocol v2 also
>      tests: define GIT_TEST_PROTOCOL_VERSION
>      t5601: check ssh command only with protocol v0
>      tests: always test fetch of unreachable with v0
>      t5503: fix overspecification of trace expectation
>      t5512: compensate for v0 only sending HEAD symrefs
>      t5700: only run with protocol version 1
>      tests: fix protocol version for overspecifications
>      t5552: compensate for v2 filtering ref adv.
>      submodule: explain first attempt failure clearly
>      t5551: mark half-auth no-op fetch test as v0-only
>      fetch-pack: call prepare_shallow_info only if v0
>      fetch-pack: respect --no-update-shallow in v2
>      sha1-file: support OBJECT_INFO_FOR_PREFETCH
>      fetch-pack: binary search when storing wanted-refs
>      diff: batch fetching of missing blobs
>      pack-objects: write objects packed to trace2
>      transport: die if server options are unsupported
>      clone: send server options when using protocol v2
>      worktree: update is_bare heuristics
>      fetch-pack: send server options after command
>
>Jordi Mas (2):
>      l10n: Fixes to Catalan translation
>      l10n: Update Catalan translation
>
>Josh Steadmon (5):
>      protocol-capabilities.txt: document symref
>      trace2: write to directory targets
>      clone: do faster object check for partial clones
>      trace2: fix incorrect function pointer check
>      commit-graph: fix memory leak
>
>Junio C Hamano (19):
>      test: caution on our version of 'yes'
>      builtin/log: downcase the beginning of error messages
>      format-patch: notice failure to open cover letter for writing
>      Start 2.22 cycle
>      The second batch
>      The third batch
>      The fourth batch
>      gettext tests: export the restored GIT_TEST_GETTEXT_POISON
>      The fifth batch
>      The sixth batch
>      Makefile: dedup list of files obtained from ls-files
>      The seventh batch
>      The eighth batch
>      Git 2.22-rc0
>      pkt-line: drop 'const'-ness of a param to set_packet_header()
>      Git 2.22-rc1
>      Git 2.22-rc2
>      Git 2.22-rc3
>      Git 2.22
>
>Kyle Meyer (5):
>      rebase docs: fix "gitlink" typo
>      submodule: refuse to add repository with no commits
>      dir: do not traverse repositories with no commits
>      add: error appropriately on repository with no commits
>      t3000 (ls-files -o): widen description to reflect current tests
>
>Martin Ågren (14):
>      setup: free old value before setting `work_tree`
>      setup: fix memory leaks with `struct repository_format`
>      config/diff.txt: drop spurious backtick
>      config/fsck.txt: avoid starting line with dash
>      git.txt: remove empty line before list continuation
>      git-svn.txt: drop escaping '\' that ends up being rendered
>      Documentation: turn middle-of-line tabs into spaces
>      Documentation/Makefile: add missing xsl dependencies for manpages
>      Documentation/Makefile: add missing dependency on asciidoctor-extensions
>      asciidoctor-extensions: fix spurious space after linkgit
>      Doc: auto-detect changed build flags
>      doc-diff: let `render_tree()` take an explicit directory name
>      doc-diff: support diffing from/to AsciiDoc(tor)
>      doc-diff: add `--cut-header-footer`
>
>Matthew Kraai (1):
>      t3903: add test for --intent-to-add file
>
>Matthias Rüster (2):
>      l10n: TEAMS: Change German translation team leader
>      l10n: de.po: Update German translation
>
>Michal Suchanek (1):
>      worktree: fix worktree add race
>
>Mike Hommey (2):
>      fix pack protocol example client/server communication
>      Make fread/fwrite-like functions in http.c more like fread/fwrite.
>
>Nguyễn Thái Ngọc Duy (129):
>      parse-options.h: remove extern on function prototypes
>      parse-options: add one-shot mode
>      parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
>      parse-options: add OPT_BITOP()
>      parse-options: stop abusing 'callback' for lowlevel callbacks
>      parse-options: avoid magic return codes
>      parse-options: allow ll_callback with OPTION_CALLBACK
>      diff.h: keep forward struct declarations sorted
>      diff.h: avoid bit fields in struct diff_flags
>      diff.c: prepare to use parse_options() for parsing
>      diff.c: convert -u|-p|--patch
>      diff.c: convert -U|--unified
>      diff.c: convert -W|--[no-]function-context
>      diff.c: convert --raw
>      read-cache.c: fix writing "link" index ext with null base oid
>      completion: add more parameter value completion
>      diff-parseopt: convert --patch-with-raw
>      diff-parseopt: convert --numstat and --shortstat
>      diff-parseopt: convert --dirstat and friends
>      diff-parseopt: convert --check
>      diff-parseopt: convert --summary
>      diff-parseopt: convert --patch-with-stat
>      diff-parseopt: convert --name-only
>      diff-parseopt: convert --name-status
>      diff-parseopt: convert -s|--no-patch
>      diff-parseopt: convert --stat*
>      diff-parseopt: convert --[no-]compact-summary
>      diff-parseopt: convert --output-*
>      diff-parseopt: convert -B|--break-rewrites
>      diff-parseopt: convert -M|--find-renames
>      diff-parseopt: convert -D|--irreversible-delete
>      diff-parseopt: convert -C|--find-copies
>      diff-parseopt: convert --find-copies-harder
>      diff-parseopt: convert --no-renames|--[no--rename-empty
>      diff-parseopt: convert --relative
>      diff-parseopt: convert --[no-]minimal
>      diff-parseopt: convert --ignore-some-changes
>      Delete check-racy.c
>      diff-parseopt: convert --[no-]indent-heuristic
>      diff-parseopt: convert --patience
>      diff-parseopt: convert --histogram
>      diff-parseopt: convert --diff-algorithm
>      diff-parseopt: convert --anchored
>      diff-parseopt: convert --binary
>      diff-parseopt: convert --full-index
>      diff-parseopt: convert -a|--text
>      diff-parseopt: convert -R
>      diff-parseopt: convert --[no-]follow
>      diff-parseopt: convert --[no-]color
>      diff-parseopt: convert --word-diff
>      diff-parseopt: convert --word-diff-regex
>      diff-parseopt: convert --color-words
>      diff-parseopt: convert --exit-code
>      diff-parseopt: convert --quiet
>      diff-parseopt: convert --ext-diff
>      diff-parseopt: convert --textconv
>      diff-parseopt: convert --ignore-submodules
>      diff-parseopt: convert --submodule
>      files-backend.c: factor out per-worktree code in loose_fill_ref_dir()
>      files-backend.c: reduce duplication in add_per_worktree_entries_to_dir()
>      Make sure refs/rewritten/ is per-worktree
>      unpack-trees: fix oneway_merge accidentally carry over stage index
>      checkout.txt: note about losing staged changes with --merge
>      commit: improve error message in "-a <paths>" case
>      unpack-trees: keep gently check inside add_rejected_path
>      unpack-trees: rename "gently" flag to "quiet"
>      read-tree: add --quiet
>      checkout: prevent losing staged changes with --merge
>      diff-parseopt: convert --ws-error-highlight
>      diff-parseopt: convert --ita-[in]visible-in-index
>      diff-parseopt: convert -z
>      diff-parseopt: convert -l
>      diff-parseopt: convert -S|-G
>      diff-parseopt: convert --pickaxe-all|--pickaxe-regex
>      diff-parseopt: convert -O
>      diff-parseopt: convert --find-object
>      diff-parseopt: convert --diff-filter
>      diff-parseopt: convert --[no-]abbrev
>      diff-parseopt: convert --[src|dst]-prefix
>      diff-parseopt: convert --line-prefix
>      diff-parseopt: convert --no-prefix
>      diff-parseopt: convert --inter-hunk-context
>      diff-parseopt: convert --[no-]color-moved
>      diff-parseopt: convert --color-moved-ws
>      diff.c: allow --no-color-moved-ws
>      range-diff: use parse_options() instead of diff_opt_parse()
>      diff --no-index: use parse_options() instead of diff_opt_parse()
>      am: avoid diff_opt_parse()
>      config: correct '**' matching in includeIf patterns
>      interpret-trailers.txt: start the desc line with a capital letter
>      read-tree.txt: clarify --reset and worktree changes
>      packfile.c: add repo_approximate_object_count()
>      refs.c: add refs_ref_exists()
>      refs.c: add refs_shorten_unambiguous_ref()
>      refs.c: remove the_repo from substitute_branch_name()
>      refs.c: remove the_repo from expand_ref()
>      refs.c: add repo_dwim_ref()
>      refs.c: add repo_dwim_log()
>      refs.c: remove the_repo from read_ref_at()
>      submodule foreach: fix "<command> --quiet" not being respected
>      commit.cocci: refactor code, avoid double rewrite
>      commit.c: add repo_get_commit_tree()
>      sha1-name.c: remove the_repo from sort_ambiguous()
>      sha1-name.c: remove the_repo from find_abbrev_len_packed()
>      sha1-name.c: add repo_find_unique_abbrev_r()
>      sha1-name.c: store and use repo in struct disambiguate_state
>      sha1-name.c: add repo_for_each_abbrev()
>      sha1-name.c: remove the_repo from get_short_oid()
>      sha1-name.c: remove the_repo from interpret_nth_prior_checkout()
>      sha1-name.c: remove the_repo from interpret_branch_mark()
>      sha1-name.c: add repo_interpret_branch_name()
>      sha1-name.c: remove the_repo from get_oid_oneline()
>      sha1-name.c: remove the_repo from get_describe_name()
>      sha1-name.c: remove the_repo from get_oid_basic()
>      sha1-name.c: remove the_repo from get_oid_1()
>      sha1-name.c: remove the_repo from handle_one_ref()
>      sha1-name.c: remove the_repo from diagnose_invalid_index_path()
>      sha1-name.c: remove the_repo from resolve_relative_path()
>      sha1-name.c: remove the_repo from get_oid_with_context_1()
>      sha1-name.c: add repo_get_oid()
>      submodule-config.c: use repo_get_oid for reading .gitmodules
>      sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name
>      sha1-name.c: remove the_repo from other get_oid_*
>      sha1-name.c: remove the_repo from get_oid_mb()
>      parse-options: don't emit "ambiguous option" for aliases
>      submodule--helper: add a missing \n
>      diff-parseopt: correct variable types that are used by parseopt
>      diff-parseopt: restore -U (no argument) behavior
>      parse-options: check empty value in OPT_INTEGER and OPT_ABBREV
>
>Paul-Sebastian Ungureanu (17):
>      sha1-name.c: add `get_oidf()` which acts like `get_oid()`
>      strbuf.c: add `strbuf_join_argv()`
>      strbuf.c: add `strbuf_insertf()` and `strbuf_vinsertf()`
>      t3903: modernize style
>      stash: rename test cases to be more descriptive
>      stash: add tests for `git stash show` config
>      stash: mention options in `show` synopsis
>      stash: convert list to builtin
>      stash: convert show to builtin
>      stash: convert store to builtin
>      stash: convert create to builtin
>      stash: convert push to builtin
>      stash: make push -q quiet
>      stash: convert save to builtin
>      stash: optimize `get_untracked_files()` and `check_changes()`
>      stash: replace all `write-tree` child processes with API calls
>      stash: convert `stash--helper.c` into `stash.c`
>
>Peter Krefting (2):
>      l10n: sv.po: Update Swedish translation
>      l10n: sv.po: Update Swedish translation (4577t0f0u)
>
>Philip Oakley (2):
>      rerere doc: quote `rerere.enabled`
>      describe doc: remove '7-char' abbreviation reference
>
>Phillip Wood (21):
>      am/cherry-pick/rebase/revert: document --rerere-autoupdate
>      merge: tweak --rerere-autoupdate documentation
>      sequencer: break some long lines
>      cherry-pick: demonstrate option amnesia
>      cherry-pick --continue: remember options
>      commit/reset: try to clean up sequencer state
>      fix cherry-pick/revert status after commit
>      sequencer: fix cleanup with --signoff and -x
>      sequencer.c: save and restore cleanup mode
>      sequencer: always discard index after checkout
>      rebase: don't translate trace strings
>      rebase: rename write_basic_state()
>      rebase: use OPT_RERERE_AUTOUPDATE()
>      rebase -i: combine rebase--interactive.c with rebase.c
>      rebase -i: remove duplication
>      rebase -i: use struct commit when parsing options
>      rebase -i: use struct object_id for squash_onto
>      rebase -i: use struct rebase_options to parse args
>      rebase -i: use struct rebase_options in do_interactive_rebase()
>      rebase: use a common action enum
>      rebase -i: run without forking rebase--interactive
>
>Ralf Thielow (1):
>      l10n: de.po: improve description of 'git reset --quiet'
>
>Ramsay Jones (2):
>      prune-packed: check for too many arguments
>      Makefile: fix 'hdr-check' when GCRYPT not installed
>
>René Scharfe (1):
>      get-tar-commit-id: parse comment record
>
>Robert P. J. Day (3):
>      mention use of "hooks.allownonascii" in "man githooks"
>      docs/git-gc: fix typo "--prune=all" to "--prune=now"
>      attr.c: ".gitattribute" -> ".gitattributes" (comments)
>
>Rohit Ashiwal (3):
>      test functions: add function `test_file_not_empty`
>      t3600: modernize style
>      t3600: use helpers to replace test -d/f/e/s <path>
>
>SZEDER Gábor (27):
>      test-lib: fix interrupt handling with 'dash' and '--verbose-log -x'
>      t/lib-git-daemon: make sure to kill the 'git-daemon' process
>      tests: use 'test_atexit' to stop httpd
>      t0301-credential-cache: use 'test_atexit' to stop the credentials helper
>      git p4 test: clean up the p4d cleanup functions
>      git p4 test: simplify timeout handling
>      git p4 test: disable '-x' tracing in the p4d watchdog loop
>      t9811-git-p4-label-import: fix pipeline negation
>      t5318-commit-graph: remove unused variable
>      Documentation/git-diff-tree.txt: fix formatting
>      Documentation/technical/api-config.txt: fix formatting
>      Documentation/technical/protocol-v2.txt: fix formatting
>      ci: install Asciidoctor in 'ci/install-dependencies.sh'
>      index-pack: show progress while checking objects
>      ci: stick with Asciidoctor v1.5.8 for now
>      ci: fix AsciiDoc/Asciidoctor stderr check in the documentation build job
>      progress: make display_progress() return void
>      progress: assemble percentage and counters in a strbuf before printing
>      blame: default to HEAD in a bare repo when no start commit is given
>      builtin rebase: use FREE_AND_NULL
>      builtin rebase: use oideq()
>      progress: clear previous progress update dynamically
>      progress: break too long progress bar lines
>      ci: install 'libsvn-perl' instead of 'git-svn'
>      trace2: rename environment variables to GIT_TRACE2*
>      trace2: document the supported values of GIT_TRACE2* env variables
>      progress: avoid empty line when breaking the progress line
>
>Sun Chao (2):
>      pack-redundant: delete redundant code
>      pack-redundant: new algorithm to find min packs
>
>Sven Strickroth (1):
>      MSVC: include compat/win32/path-utils.h for MSVC, too, for real_path()
>
>Tanushree Tumane (1):
>      mingw: remove obsolete IPv6-related code
>
>Taylor Blau (4):
>      t: move 'hex2oct' into test-lib-functions.sh
>      t: introduce tests for unexpected object types
>      list-objects.c: handle unexpected non-blob entries
>      list-objects.c: handle unexpected non-tree entries
>
>Thomas Gummerer (15):
>      move worktree tests to t24*
>      entry: factor out unlink_entry function
>      entry: support CE_WT_REMOVE flag in checkout_entry
>      read-cache: add invalidate parameter to remove_marked_cache_entries
>      checkout: clarify comment
>      checkout: factor out mark_cache_entry_for_checkout function
>      checkout: introduce --{,no-}overlay option
>      checkout: introduce checkout.overlayMode config
>      revert "checkout: introduce checkout.overlayMode config"
>      ident: don't require calling prepare_fallback_ident first
>      stash: drop unused parameter
>      stash: pass pathspec as pointer
>      glossary: add definition for overlay
>      stash: setup default diff output format if necessary
>      ls-files: use correct format string
>
>Todd Zullinger (9):
>      t4038-diff-combined: quote paths with whitespace
>      t9902: test multiple removals via completion.commands
>      completion: use __git when calling --list-cmds
>      Documentation/rev-list-options: wrap --date=<format> block with "--"
>      Documentation/git-status: fix titles in porcelain v2 section
>      Documentation/git-svn: improve asciidoctor compatibility
>      Documentation/git-show-branch: avoid literal {apostrophe}
>      test-lib: try harder to ensure a working jgit
>      RelNotes: minor typo fixes in 2.22.0 draft
>
>Torsten Bögershausen (1):
>      trace2: NULL is not allowed for va_list
>
>Trần Ngọc Quân (4):
>      l10n: Updated Vietnamese translation for v2.21 rd2
>      l10n: vi.po(4577t): Updated Vietnamese translation for v2.22.0 round 1
>      l10n: vi.po(4580t): Updated Vietnamese translation for v2.22.0 round 2
>      l10n: vi.po(4581t): Updated Vietnamese translation for v2.22.0 round 3
>
>Vadim Kochan (1):
>      autoconf: #include <libintl.h> when checking for gettext()
>
>William Hubbs (1):
>      config: allow giving separate author and committer idents
>
>Yash Bhatambare (1):
>      gitattributes.txt: fix typo
>
>brian m. carlson (35):
>      t/lib-submodule-update: use appropriate length constant
>      khash: move oid hash table definition
>      pack-bitmap: make bitmap header handling hash agnostic
>      pack-bitmap: convert struct stored_bitmap to object_id
>      pack-bitmap: replace sha1_to_hex
>      pack-bitmap: switch hard-coded constants to the_hash_algo
>      pack-bitmap: switch hash tables to use struct object_id
>      submodule: avoid hard-coded constants
>      notes-merge: switch to use the_hash_algo
>      notes: make hash size independent
>      notes: replace sha1_to_hex
>      object-store: rename and expand packed_git's sha1 member
>      builtin/name-rev: make hash-size independent
>      fast-import: make hash-size independent
>      fast-import: replace sha1_to_hex
>      builtin/am: make hash size independent
>      builtin/pull: make hash-size independent
>      http-push: convert to use the_hash_algo
>      http-backend: allow 64-character hex names
>      http-push: remove remaining uses of sha1_to_hex
>      http-walker: replace sha1_to_hex
>      http: replace hard-coded constant with the_hash_algo
>      http: compute hash of downloaded objects using the_hash_algo
>      http: replace sha1_to_hex
>      remote-curl: make hash size independent
>      hash: add a function to lookup hash algorithm by length
>      builtin/get-tar-commit-id: make hash size independent
>      archive: convert struct archiver_args to object_id
>      refspec: make hash size independent
>      builtin/difftool: use parse_oid_hex
>      dir: make untracked cache extension hash size independent
>      read-cache: read data in a hash-independent way
>      Git.pm: make hash size independent
>      gitweb: make hash size independent
>      send-email: default to quoted-printable when CR is present
>
>Ævar Arnfjörð Bjarmason (44):
>      receive-pack: fix use-after-free bug
>      commit-graph tests: split up corrupt_graph_and_verify()
>      commit-graph tests: test a graph that's too small
>      Makefile: remove an out-of-date comment
>      Makefile: move "strip" assignment down from flags
>      Makefile: add/remove comments at top and tweak whitespace
>      Makefile: Move *_LIBS assignment into its own section
>      Makefile: move the setting of *FLAGS closer to "include"
>      Makefile: allow for combining DEVELOPER=1 and CFLAGS="..."
>      gc: remove redundant check for gc_auto_threshold
>      gc: convert to using the_hash_algo
>      gc: refactor a "call me once" pattern
>      reflog tests: make use of "test_config" idiom
>      reflog tests: test for the "points nowhere" warning
>      rebase: remove the rebase.useBuiltin setting
>      gc docs: modernize the advice for manually running "gc"
>      gc docs: stop noting "repack" flags
>      gc docs: clean grammar for "gc.bigPackThreshold"
>      commit-graph: fix segfault on e.g. "git status"
>      commit-graph: don't early exit(1) on e.g. "git status"
>      commit-graph: don't pass filename to load_commit_graph_one_fd_st()
>      commit-graph verify: detect inability to read the graph
>      commit-graph write: don't die if the existing graph is corrupt
>      commit-graph: improve & i18n error messages
>      reflog tests: assert lack of early exit with expiry="never"
>      gc: handle & check gc.reflogExpire config
>      test-lib: whitelist GIT_TR2_* in the environment
>      gc docs: include the "gc.*" section from "config" in "gc"
>      gc docs: re-flow the "gc.*" section in "config"
>      gc docs: fix formatting for "gc.writeCommitGraph"
>      gc docs: note how --aggressive impacts --window & --depth
>      gc docs: downplay the usefulness of --aggressive
>      gc docs: note "gc --aggressive" in "fast-import"
>      gc docs: clarify that "gc" doesn't throw away referenced objects
>      gc docs: remove incorrect reference to gc.auto=0
>      perf README: correct docs for 3c8f12c96c regression
>      perf aggregate: remove GIT_TEST_INSTALLED from --codespeed
>      perf-lib.sh: make "./run <revisions>" use the correct gits
>      perf-lib.sh: remove GIT_TEST_INSTALLED from perf-lib.sh
>      perf tests: add "bindir" prefix to git tree test results
>      perf-lib.sh: forbid the use of GIT_TEST_INSTALLED
>      trace2: fix up a missing "leave" entry point
>      trace2: fix up a missing "leave" entry point
>      sha1dc: update from upstream
>
>İsmail Dönmez (2):
>      mingw: do not let ld strip relocations
>      mingw: enable DEP and ASLR
>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[relevance 0%]

* [ANNOUNCE] Git v2.22.0
@ 2019-06-07 21:31  2% Junio C Hamano
  2019-06-07 22:48  0% ` Bhaskar Chowdhury
  0 siblings, 1 reply; 162+ results
From: Junio C Hamano @ 2019-06-07 21:31 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

The latest feature release Git v2.22.0 is now available at the
usual places.  It is comprised of 745 non-merge commits since
v2.21.0, contributed by 74 people, 18 of which are new faces.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.22.0'
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.21.0 are as follows.
Welcome to the Git development community!

  Alexander Blesius, Baruch Siach, Boxuan Li, Cédric Malard,
  Chris Mayo, Chris. Webster, Clément Chigot, Corentin BOMPARD,
  Damien Robert, Dustin Spicuzza, Emily Shaffer, Michal Suchanek,
  Rohit Ashiwal, Sun Chao, Tanushree Tumane, Vadim Kochan,
  William Hubbs, and Yash Bhatambare.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alban Gruin, Alessandro Menti,
  Alexander Shopov, Anders Waldenborg, Andreas Heiduk, Andrei
  Rybak, Beat Bolli, Ben Peart, Brandon Richardson, brian
  m. carlson, Carlo Marcelo Arenas Belón, Christian Couder,
  Christopher Díaz Riveros, Daniels Umanovskis, David Aguilar,
  David Kastrup, Denton Liu, Derrick Stolee, Elijah Newren, Eric
  Sunshine, Eric Wong, Fangyi Zhou, İsmail Dönmez, Jean-Noël
  Avila, Jeff Hostetler, Jeff King, Jiang Xin, Joel Teichroeb,
  Joey Hess, Johannes Schindelin, Jonathan Tan, Jordi Mas, Josh
  Steadmon, Junio C Hamano, Kyle Meyer, Martin Ågren, Matthew
  Kraai, Matthias Rüster, Mike Hommey, Nguyễn Thái Ngọc
  Duy, Paul-Sebastian Ungureanu, Peter Krefting, Philip Oakley,
  Phillip Wood, Ralf Thielow, Ramsay Jones, René Scharfe, Robert
  P. J. Day, Sven Strickroth, SZEDER Gábor, Taylor Blau, Thomas
  Gummerer, Todd Zullinger, Torsten Bögershausen, and Trần
  Ngọc Quân.

----------------------------------------------------------------

Git 2.22 Release Notes
======================

Updates since v2.21
-------------------

Backward compatibility note

 * The filter specification "--filter=sparse:path=<path>" used to
   create a lazy/partial clone has been removed.  Using a blob that is
   part of the project as sparse specification is still supported with
   the "--filter=sparse:oid=<blob>" option.

UI, Workflows & Features

 * "git checkout --no-overlay" can be used to trigger a new mode of
   checking out paths out of the tree-ish, that allows paths that
   match the pathspec that are in the current index and working tree
   and are not in the tree-ish.

 * The %(trailers) formatter in "git log --format=..."  now allows to
   optionally pick trailers selectively by keyword, show only values,
   etc.

 * Four new configuration variables {author,committer}.{name,email}
   have been introduced to override user.{name,email} in more specific
   cases.

 * Command-line completion (in contrib/) learned to tab-complete the
   "git submodule absorbgitdirs" subcommand.

 * "git branch" learned a new subcommand "--show-current".

 * Output from "diff --cc" did not show the original paths when the
   merge involved renames.  A new option adds the paths in the
   original trees to the output.

 * The command line completion (in contrib/) has been taught to
   complete more subcommand parameters.

 * The final report from "git bisect" used to show the suspected
   culprit using a raw "diff-tree", with which there is no output for
   a merge commit.  This has been updated to use a more modern and
   human readable output that still is concise enough.

 * "git rebase --rebase-merges" replaces its old "--preserve-merges"
   option; the latter is now marked as deprecated.

 * Error message given while cloning with --recurse-submodules has
   been updated.

 * The completion helper code now pays attention to repository-local
   configuration (when available), which allows --list-cmds to honour
   a repository specific setting of completion.commands, for example.

 * "git mergetool" learned to offer Sublime Merge (smerge) as one of
   its backends.

 * A new hook "post-index-change" is called when the on-disk index
   file changes, which can help e.g. a virtualized working tree
   implementation.

 * "git difftool" can now run outside a repository.

 * "git checkout -m <other>" was about carrying the differences
   between HEAD and the working-tree files forward while checking out
   another branch, and ignored the differences between HEAD and the
   index.  The command has been taught to abort when the index and the
   HEAD are different.

 * A progress indicator has been added to the "index-pack" step, which
   often makes users wait for completion during "git clone".

 * "git submodule" learns "set-branch" subcommand that allows the
   submodule.*.branch settings to be modified.

 * "git merge-recursive" backend recently learned a new heuristics to
   infer file movement based on how other files in the same directory
   moved.  As this is inherently less robust heuristics than the one
   based on the content similarity of the file itself (rather than
   based on what its neighbours are doing), it sometimes gives an
   outcome unexpected by the end users.  This has been toned down to
   leave the renamed paths in higher/conflicted stages in the index so
   that the user can examine and confirm the result.

 * "git tag" learned to give an advice suggesting it might be a
   mistake when creating an annotated or signed tag that points at
   another tag.

 * The "git pack-objects" command learned to report the number of
   objects it packed via the trace2 mechanism.

 * The list of conflicted paths shown in the editor while concluding a
   conflicted merge was shown above the scissors line when the
   clean-up mode is set to "scissors", even though it was commented
   out just like the list of updated paths and other information to
   help the user explain the merge better.

 * The trace2 tracing facility learned to auto-generate a filename
   when told to log to a directory.

 * "git clone" learned a new --server-option option when talking over
   the protocol version 2.

 * The connectivity bitmaps are created by default in bare
   repositories now; also the pathname hash-cache is created by
   default to avoid making crappy deltas when repacking.

 * "git branch new A...B" and "git checkout -b new A...B" have been
   taught that in their contexts, the notation A...B means "the merge
   base between these two commits", just like "git checkout A...B"
   detaches HEAD at that commit.

 * Update "git difftool" and "git mergetool" so that the combinations
   of {diff,merge}.{tool,guitool} configuration variables serve as
   fallback settings of each other in a sensible order.

 * The "--dir-diff" mode of "git difftool" is not useful in "--no-index"
   mode; they are now explicitly marked as mutually incompatible.


Performance, Internal Implementation, Development Support etc.

 * The diff machinery, one of the oldest parts of the system, which
   long predates the parse-options API, uses fairly long and complex
   handcrafted option parser.  This is being rewritten to use the
   parse-options API.

 * The implementation of pack-redundant has been updated for
   performance in a repository with many packfiles.

 * A more structured way to obtain execution trace has been added.

 * "git prune" has been taught to take advantage of reachability
   bitmap when able.

 * The command line parser of "git commit-tree" has been rewritten to
   use the parse-options API.

 * Suggest GitGitGadget instead of submitGit as a way to submit
   patches based on GitHub PR to us.

 * The test framework has been updated to help developers by making it
   easier to run most of the tests under different versions of
   over-the-wire protocols.

 * Dev support update to make it easier to compare two formatted
   results from our documentation.

 * The scripted "git rebase" implementation has been retired.

 * "git multi-pack-index verify" did not scale well with the number of
   packfiles, which is being improved.

 * "git stash" has been rewritten in C.

 * The "check-docs" Makefile target to support developers has been
   updated.

 * The tests have been updated not to rely on the abbreviated option
   names the parse-options API offers, to protect us from an
   abbreviated form of an option that used to be unique within the
   command getting non-unique when a new option that share the same
   prefix is added.

 * The scripted version of "git rebase -i" wrote and rewrote the todo
   list many times during a single step of its operation, and the
   recent C-rewrite made a faithful conversion of the logic to C.  The
   implementation has been updated to carry necessary information
   around in-core to avoid rewriting the same file over and over
   unnecessarily.

 * Test framework update to more robustly clean up leftover files and
   processes after tests are done.

 * Conversion from unsigned char[20] to struct object_id continues.

 * While running "git diff" in a lazy clone, we can upfront know which
   missing blobs we will need, instead of waiting for the on-demand
   machinery to discover them one by one.  The code learned to aim to
   achieve better performance by batching the request for these
   promised blobs.

 * During an initial "git clone --depth=..." partial clone, it is
   pointless to spend cycles for a large portion of the connectivity
   check that enumerates and skips promisor objects (which by
   definition is all objects fetched from the other side).  This has
   been optimized out.

 * Mechanically and systematically drop "extern" from function
   declaration.

 * The script to aggregate perf result unconditionally depended on
   libjson-perl even though it did not have to, which has been
   corrected.

 * The internal implementation of "git rebase -i" has been updated to
   avoid forking a separate "rebase--interactive" process.

 * Allow DEP and ASLR for Windows build to for security hardening.

 * Performance test framework has been broken and measured the version
   of Git that happens to be on $PATH, not the specified one to
   measure, for a while, which has been corrected.

 * Optionally "make coccicheck" can feed multiple source files to
   spatch, gaining performance while spending more memory.

 * Attempt to use an abbreviated option in "git clone --recurs" is
   responded by a request to disambiguate between --recursive and
   --recurse-submodules, which is bad because these two are synonyms.
   The parse-options API has been extended to define such synonyms
   more easily and not produce an unnecessary failure.

 * A pair of private functions in http.c that had names similar to
   fread/fwrite did not return the number of elements, which was found
   to be confusing.

 * Update collision-detecting SHA-1 code to build properly on HP-UX.


Fixes since v2.21
-----------------

 * "git prune-packed" did not notice and complain against excess
   arguments given from the command line, which now it does.
   (merge 9b0bd87ed2 rj/prune-packed-excess-args later to maint).

 * Split-index fix.
   (merge 6e37c8ed3c nd/split-index-null-base-fix later to maint).

 * "git diff --no-index" may still want to access Git goodies like
   --ext-diff and --textconv, but so far these have been ignored,
   which has been corrected.
   (merge 287ab28bfa jk/diff-no-index-initialize later to maint).

 * Unify RPC code for smart http in protocol v0/v1 and v2, which fixes
   a bug in the latter (lack of authentication retry) and generally
   improves the code base.
   (merge a97d00799a jt/http-auth-proto-v2-fix later to maint).

 * The include file compat/bswap.h has been updated so that it is safe
   to (accidentally) include it more than once.
   (merge 33aa579a55 jk/guard-bswap-header later to maint).

 * The set of header files used by "make hdr-check" unconditionally
   included sha256/gcrypt.h, even when it is not used, causing the
   make target to fail.  We now skip it when GCRYPT_SHA256 is not in
   use.
   (merge f23aa18e7f rj/hdr-check-gcrypt-fix later to maint).

 * The Makefile uses 'find' utility to enumerate all the *.h header
   files, which is expensive on platforms with slow filesystems; it
   now optionally uses "ls-files" if working within a repository,
   which is a trick similar to how all sources are enumerated to run
   ETAGS on.
   (merge 92b88eba9f js/find-lib-h-with-ls-files-when-possible later to maint).

 * "git rebase" that was reimplemented in C did not set ORIG_HEAD
   correctly, which has been corrected.
   (merge cbd29ead92 js/rebase-orig-head-fix later to maint).

 * Dev support.
   (merge f545737144 js/stress-test-ui-tweak later to maint).

 * CFLAGS now can be tweaked when invoking Make while using
   DEVELOPER=YesPlease; this did not work well before.
   (merge 6d5d4b4e93 ab/makefile-help-devs-more later to maint).

 * "git fsck --connectivity-only" omits computation necessary to sift
   the objects that are not reachable from any of the refs into
   unreachable and dangling.  This is now enabled when dangling
   objects are requested (which is done by default, but can be
   overridden with the "--no-dangling" option).
   (merge 8d8c2a5aef jk/fsck-doc later to maint).

 * On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX),
   the upload-pack that runs on the other end that hangs up after
   detecting an error could cause "git fetch" to die with a signal,
   which led to a flaky test.  "git fetch" now ignores SIGPIPE during
   the network portion of its operation (this is not a problem as we
   check the return status from our write(2)s).
   (merge 143588949c jk/no-sigpipe-during-network-transport later to maint).

 * A recent update broke "is this object available to us?" check for
   well-known objects like an empty tree (which should yield "yes",
   even when there is no on-disk object for an empty tree), which has
   been corrected.
   (merge f06ab027ef jk/virtual-objects-do-exist later to maint).

 * The setup code has been cleaned up to avoid leaks around the
   repository_format structure.
   (merge e8805af1c3 ma/clear-repository-format later to maint).

 * "git config --type=color ..." is meant to replace "git config --get-color"
   but there is a slight difference that wasn't documented, which is
   now fixed.
   (merge cd8e7593b9 jk/config-type-color-ends-with-lf later to maint).

 * When the "clean" filter can reduce the size of a huge file in the
   working tree down to a small "token" (a la Git LFS), there is no
   point in allocating a huge scratch area upfront, but the buffer is
   sized based on the original file size.  The convert mechanism now
   allocates very minimum and reallocates as it receives the output
   from the clean filter process.
   (merge 02156ab031 jh/resize-convert-scratch-buffer later to maint).

 * "git rebase" uses the refs/rewritten/ hierarchy to store its
   intermediate states, which inherently makes the hierarchy per
   worktree, but it didn't quite work well.
   (merge b9317d55a3 nd/rewritten-ref-is-per-worktree later to maint).

 * "git log -L<from>,<to>:<path>" with "-s" did not suppress the patch
   output as it should.  This has been corrected.
   (merge 05314efaea jk/line-log-with-patch later to maint).

 * "git worktree add" used to do a "find an available name with stat
   and then mkdir", which is race-prone.  This has been fixed by using
   mkdir and reacting to EEXIST in a loop.
   (merge 7af01f2367 ms/worktree-add-atomic-mkdir later to maint).

 * Build update for SHA-1 with collision detection.
   (merge 07a20f569b jk/sha1dc later to maint).

 * Build procedure has been fixed around use of asciidoctor instead of
   asciidoc.
   (merge 185f9a0ea0 ma/asciidoctor-fixes later to maint).

 * remote-http transport did not anonymize URLs reported in its error
   messages at places.
   (merge c1284b21f2 js/anonymize-remote-curl-diag later to maint).

 * Error messages given from the http transport have been updated so
   that they can be localized.
   (merge ed8b4132c8 js/remote-curl-i18n later to maint).

 * "git init" forgot to read platform-specific repository
   configuration, which made Windows port to ignore settings of
   core.hidedotfiles, for example.

 * A corner-case object name ambiguity while the sequencer machinery
   is working (e.g. "rebase -i -x") has been fixed.

 * "git format-patch" did not diagnose an error while opening the
   output file for the cover-letter, which has been corrected.
   (merge 2fe95f494c jc/format-patch-error-check later to maint).

 * "git checkout -f <branch>" while the index has an unmerged path
   incorrectly left some paths in an unmerged state, which has been
   corrected.

 * A corner case bug in the refs API has been corrected.
   (merge d3322eb28b jk/refs-double-abort later to maint).

 * Unicode update.
   (merge 584b62c37b bb/unicode-12 later to maint).

 * dumb-http walker has been updated to share more error recovery
   strategy with the normal codepath.

 * A buglet in configuration parser has been fixed.
   (merge 19e7fdaa58 nd/include-if-wildmatch later to maint).

 * The documentation for "git read-tree --reset -u" has been updated.
   (merge b5a0bd694c nd/read-tree-reset-doc later to maint).

 * Code clean-up around a much-less-important-than-it-used-to-be
   update_server_info() function.
   (merge b3223761c8 jk/server-info-rabbit-hole later to maint).

 * The message given when "git commit -a <paths>" errors out has been
   updated.
   (merge 5a1dbd48bc nd/commit-a-with-paths-msg-update later to maint).

 * "git cherry-pick --options A..B", after giving control back to the
   user to ask help resolving a conflicted step, did not honor the
   options it originally received, which has been corrected.

 * Various glitches in "git gc" around reflog handling have been fixed.

 * The code to read from commit-graph file has been cleanup with more
   careful error checking before using data read from it.

 * Performance fix around "git fetch" that grabs many refs.
   (merge b764300912 jt/fetch-pack-wanted-refs-optim later to maint).

 * Protocol v2 support in "git fetch-pack" of shallow clones has been
   corrected.

 * Performance fix around "git blame", especially in a linear history
   (which is the norm we should optimize for).
   (merge f892014943 dk/blame-keep-origin-blob later to maint).

 * Performance fix for "rev-list --parents -- pathspec".
   (merge 8320b1dbe7 jk/revision-rewritten-parents-in-prio-queue later to maint).

 * Updating the display with progress message has been cleaned up to
   deal better with overlong messages.
   (merge 545dc345eb sg/overlong-progress-fix later to maint).

 * "git blame -- path" in a non-bare repository starts blaming from
   the working tree, and the same command in a bare repository errors
   out because there is no working tree by definition.  The command
   has been taught to instead start blaming from the commit at HEAD,
   which is more useful.
   (merge a544fb08f8 sg/blame-in-bare-start-at-head later to maint).

 * An underallocation in the code to read the untracked cache
   extension has been corrected.
   (merge 3a7b45a623 js/untracked-cache-allocfix later to maint).

 * The code is updated to check the result of memory allocation before
   it is used in more places, by using xmalloc and/or xcalloc calls.
   (merge 999b951b28 jk/xmalloc later to maint).

 * The GETTEXT_POISON test option has been quite broken ever since it
   was made runtime-tunable, which has been fixed.
   (merge f88b9cb603 jc/gettext-test-fix later to maint).

 * Test fix on APFS that is incapable of store paths in Latin-1.
   (merge 3889149619 js/iso8895-test-on-apfs later to maint).

 * "git submodule foreach <command> --quiet" did not pass the option
   down correctly, which has been corrected.
   (merge a282f5a906 nd/submodule-foreach-quiet later to maint).

 * "git send-email" has been taught to use quoted-printable when the
   payload contains carriage-return.  The use of the mechanism is in
   line with the design originally added the codepath that chooses QP
   when the payload has overly long lines.
   (merge 74d76a1701 bc/send-email-qp-cr later to maint).

 * The recently added feature to add addresses that are on
   anything-by: trailers in 'git send-email' was found to be way too
   eager and considered nonsense strings as if they can be legitimate
   beginning of *-by: trailer.  This has been tightened.

 * Builds with gettext broke on recent macOS w/ Homebrew, which
   seems to have stopped including from /usr/local/include; this
   has been corrected.
   (merge 92a1377a2a js/macos-gettext-build later to maint).

 * Running "git add" on a repository created inside the current
   repository is an explicit indication that the user wants to add it
   as a submodule, but when the HEAD of the inner repository is on an
   unborn branch, it cannot be added as a submodule.  Worse, the files
   in its working tree can be added as if they are a part of the outer
   repository, which is not what the user wants.  These problems are
   being addressed.
   (merge f937bc2f86 km/empty-repo-is-still-a-repo later to maint).

 * "git cherry-pick" run with the "-x" or the "--signoff" option used
   to (and more importantly, ought to) clean up the commit log message
   with the --cleanup=space option by default, but this has been
   broken since late 2017.  This has been fixed.

 * When given a tag that points at a commit-ish, "git replace --graft"
   failed to peel the tag before writing a replace ref, which did not
   make sense because the old graft mechanism the feature wants to
   mimic only allowed to replace one commit object with another.
   This has been fixed.
   (merge ee521ec4cb cc/replace-graft-peel-tags later to maint).

 * Code tightening against a "wrong" object appearing where an object
   of a different type is expected, instead of blindly assuming that
   the connection between objects are correctly made.
   (merge 97dd512af7 tb/unexpected later to maint).

 * An earlier update for MinGW and Cygwin accidentally broke MSVC build,
   which has been fixed.
   (merge 22c3634c0f ss/msvc-path-utils-fix later to maint).

 * %(push:track) token used in the --format option to "git
   for-each-ref" and friends was not showing the right branch, which
   has been fixed.
   (merge c646d0934e dr/ref-filter-push-track-fix later to maint).

 * "make check-docs", "git help -a", etc. did not account for cases
   where a particular build may deliberately omit some subcommands,
   which has been corrected.

 * The logic to tell if a Git repository has a working tree protects
   "git branch -D" from removing the branch that is currently checked
   out by mistake.  The implementation of this logic was broken for
   repositories with unusual name, which unfortunately is the norm for
   submodules these days.  This has been fixed.
   (merge f3534c98e4 jt/submodule-repo-is-with-worktree later to maint).

 * AIX shared the same build issues with other BSDs around fileno(fp),
   which has been corrected.
   (merge ee662bf5c6 cc/aix-has-fileno-as-a-macro later to maint).

 * The autoconf generated configure script failed to use the right
   gettext() implementations from -libintl by ignoring useless stub
   implementations shipped in some C library, which has been
   corrected.
   (merge b71e56a683 vk/autoconf-gettext later to maint).

 * Fix index-pack perf test so that the repeated invocations always
   run in an empty repository, which emulates the initial clone
   situation better.
   (merge 775c71e16d jk/p5302-avoid-collision-check-cost later to maint).

 * A "ls-files" that emulates "find" to enumerate files in the working
   tree resulted in duplicated Makefile rules that caused the build to
   issue an unnecessary warning during a trial build after merge
   conflicts are resolved in working tree *.h files but before the
   resolved results are added to the index.  This has been corrected.

 * "git cherry-pick" (and "revert" that shares the same runtime engine)
   that deals with multiple commits got confused when the final step
   gets stopped with a conflict and the user concluded the sequence
   with "git commit".  Attempt to fix it by cleaning up the state
   files used by these commands in such a situation.
   (merge 4a72486de9 pw/clean-sequencer-state-upon-final-commit later to maint).

 * On a filesystem like HFS+, the names of the refs stored as filesystem
   entities may become different from what the end-user expects, just
   like files in the working tree get "renamed".  Work around the
   mismatch by paying attention to the core.precomposeUnicode
   configuration.
   (merge 8e712ef6fc en/unicode-in-refnames later to maint).

 * The code to generate the multi-pack idx file was not prepared to
   see too many packfiles and ran out of open file descriptor, which
   has been corrected.

 * To run tests for Git SVN, our scripts for CI used to install the
   git-svn package (in the hope that it would bring in the right
   dependencies).  This has been updated to install the more direct
   dependency, namely, libsvn-perl.
   (merge db864306cf sg/ci-libsvn-perl later to maint).

 * "git cvsexportcommit" running on msys did not expect cvsnt showed
   "cvs status" output with CRLF line endings.

 * The fsmonitor interface got out of sync after the in-core index
   file gets discarded, which has been corrected.
   (merge 398a3b0899 js/fsmonitor-refresh-after-discarding-index later to maint).

 * "git status" did not know that the "label" instruction in the
   todo-list "rebase -i -r" uses should not be shown as a hex object
   name.

 * A prerequisite check in the test suite to see if a working jgit is
   available was made more robust.
   (merge abd0f28983 tz/test-lib-check-working-jgit later to maint).

 * The codepath to parse :<path> that obtains the object name for an
   indexed object has been made more robust.

 * Code cleanup, docfix, build fix, etc.
   (merge 11f470aee7 jc/test-yes-doc later to maint).
   (merge 90503a240b js/doc-symref-in-proto-v1 later to maint).
   (merge 5c326d1252 jk/unused-params later to maint).
   (merge 68cabbfda3 dl/doc-submodule-wo-subcommand later to maint).
   (merge 9903623761 ab/receive-pack-use-after-free-fix later to maint).
   (merge 1ede45e44b en/merge-options-doc later to maint).
   (merge 3e14dd2c8e rd/doc-hook-used-in-sample later to maint).
   (merge c271dc28fd nd/no-more-check-racy later to maint).
   (merge e6e15194a8 yb/utf-16le-bom-spellfix later to maint).
   (merge bb101aaf0c rd/attr.c-comment-typofix later to maint).
   (merge 716a5af812 rd/gc-prune-doc-fix later to maint).
   (merge 50b206371d js/untravis-windows later to maint).
   (merge dbf47215e3 js/rebase-recreate-merge later to maint).
   (merge 56cb2d30f8 dl/reset-doc-no-wrt-abbrev later to maint).
   (merge 64eca306a2 ja/dir-rename-doc-markup-fix later to maint).
   (merge af91b0230c dl/ignore-docs later to maint).
   (merge 59a06e947b ra/t3600-test-path-funcs later to maint).
   (merge e041d0781b ar/t4150-remove-cruft later to maint).
   (merge 8d75a1d183 ma/asciidoctor-fixes-more later to maint).
   (merge 74cc547b0f mh/pack-protocol-doc-fix later to maint).
   (merge ed31851fa6 ab/doc-misc-typofixes later to maint).
   (merge a7256debd4 nd/checkout-m-doc-update later to maint).
   (merge 3a9e1ad78d jt/t5551-protocol-v2-does-not-have-half-auth later to maint).
   (merge 0b918b75af sg/t5318-cleanup later to maint).
   (merge 68ed71b53c cb/doco-mono later to maint).
   (merge a34dca2451 nd/interpret-trailers-docfix later to maint).
   (merge cf7b857a77 en/fast-import-parsing-fix later to maint).
   (merge fe61ccbc35 po/rerere-doc-fmt later to maint).
   (merge ffea0248bf po/describe-not-necessarily-7 later to maint).
   (merge 7cb7283adb tg/ls-files-debug-format-fix later to maint).
   (merge f64a21bd82 tz/doc-apostrophe-no-longer-needed later to maint).
   (merge dbe7b41019 js/t3301-unbreak-notes-test later to maint).
   (merge d8083e4180 km/t3000-retitle later to maint).
   (merge 9e4cbccbd7 tz/git-svn-doc-markup-fix later to maint).
   (merge da9ca955a7 jk/ls-files-doc-markup-fix later to maint).
   (merge 6804ba3a58 cw/diff-highlight later to maint).
   (merge 1a8787144d nd/submodule-helper-incomplete-line-fix later to maint).
   (merge d9ef573837 jk/apache-lsan later to maint).
   (merge c871fbee2b js/t6500-use-windows-pid-on-mingw later to maint).
   (merge ce4c7bfc90 bl/t4253-exit-code-from-format-patch later to maint).
   (merge 397a46db78 js/t5580-unc-alternate-test later to maint).
   (merge d4907720a2 cm/notes-comment-fix later to maint).
   (merge 9dde06de13 cb/http-push-null-in-message-fix later to maint).
   (merge 4c785c0edc js/rebase-config-bitfix later to maint).
   (merge 8e9fe16c87 es/doc-gitsubmodules-markup later to maint).

----------------------------------------------------------------

Changes since v2.21.0 are as follows:

Alban Gruin (18):
      sequencer: changes in parse_insn_buffer()
      sequencer: make the todo_list structure public
      sequencer: remove the 'arg' field from todo_item
      sequencer: refactor transform_todos() to work on a todo_list
      sequencer: introduce todo_list_write_to_file()
      sequencer: refactor check_todo_list() to work on a todo_list
      sequencer: refactor sequencer_add_exec_commands() to work on a todo_list
      sequencer: refactor rearrange_squash() to work on a todo_list
      sequencer: make sequencer_make_script() write its script to a strbuf
      sequencer: change complete_action() to use the refactored functions
      rebase--interactive: move sequencer_add_exec_commands()
      rebase--interactive: move rearrange_squash_in_todo_file()
      sequencer: refactor skip_unnecessary_picks() to work on a todo_list
      rebase-interactive: use todo_list_write_to_file() in edit_todo_list()
      rebase-interactive: append_todo_help() changes
      rebase-interactive: rewrite edit_todo_list() to handle the initial edit
      sequencer: use edit_todo_list() in complete_action()
      rebase--interactive: move transform_todo_file()

Alessandro Menti (1):
      l10n: it.po: Updated Italian translation

Alexander Blesius (1):
      doc: fix typos in man pages

Alexander Shopov (4):
      gitk: Update Bulgarian translation (317t)
      l10n: bg.po: Updated Bulgarian translation (4577t)
      l10n: bg.po: Updated Bulgarian translation (4580t)
      l10n: bg.po: Updated Bulgarian translation (4581t)

Anders Waldenborg (7):
      doc: group pretty-format.txt placeholders descriptions
      pretty: allow %(trailers) options with explicit value
      pretty: single return path in %(trailers) handling
      pretty: allow showing specific trailers
      pretty: add support for "valueonly" option in %(trailers)
      strbuf: separate callback for strbuf_expand:ing literals
      pretty: add support for separator option in %(trailers)

Andreas Heiduk (1):
      revisions.txt: remove ambibuity between <rev>:<path> and :<path>

Andrei Rybak (1):
      t4150: remove unused variable

Baruch Siach (1):
      send-email: don't cc *-by lines with '-' prefix

Beat Bolli (1):
      unicode: update the width tables to Unicode 12

Ben Peart (1):
      read-cache: add post-index-change hook

Boxuan Li (1):
      t4253-am-keep-cr-dos: avoid using pipes

Brandon Richardson (1):
      commit-tree: utilize parse-options api

Carlo Marcelo Arenas Belón (1):
      http-push: prevent format overflow warning with gcc >= 9

Chris Mayo (1):
      notes: correct documentation of format_display_notes()

Chris. Webster (1):
      diff-highlight: use correct /dev/null for UNIX and Windows

Christian Couder (5):
      t6050: use test_line_count instead of wc -l
      t6050: redirect expected error output to a file
      replace: peel tag when passing a tag as parent to --graft
      replace: peel tag when passing a tag first to --graft
      list-objects-filter: disable 'sparse:path' filters

Christopher Díaz Riveros (3):
      l10n: es: 2.22.0 round 1
      l10n: es: 2.22.0 round 2
      l10n: es: 2.22.0 round 3

Clément Chigot (2):
      Makefile: use fileno macro work around on AIX
      git-compat-util: work around for access(X_OK) under root

Corentin BOMPARD (2):
      doc/CodingGuidelines: URLs and paths as monospace
      doc: format pathnames and URLs as monospace.

Cédric Malard (1):
      l10n: fr.po: Review French translation

Damien Robert (1):
      ref-filter: use correct branch for %(push:track)

Daniels Umanovskis (1):
      branch: introduce --show-current display option

David Aguilar (2):
      mergetools: add support for smerge (Sublime Merge)
      contrib/completion: add smerge to the mergetool completion candidates

David Kastrup (1):
      blame.c: don't drop origin blobs as eagerly

Denton Liu (38):
      completion: complete git submodule absorbgitdirs
      git-submodule.txt: "--branch <branch>" option defaults to 'master'
      submodule--helper: teach config subcommand --unset
      submodule: document default behavior
      git-reset.txt: clarify documentation
      git-clean.txt: clarify ignore pattern files
      docs: move core.excludesFile from git-add to gitignore
      contrib/subtree: ensure only one rev is provided
      midx.c: convert FLEX_ALLOC_MEM to FLEX_ALLOC_STR
      cocci: FLEX_ALLOC_MEM to FLEX_ALLOC_STR
      tag: fix formatting
      submodule: teach set-branch subcommand
      tag: advise on nested tags
      t7600: clean up style
      t3507: clean up style
      t7604: clean up style
      t7502: clean up style
      commit: extract cleanup_mode functions to sequencer
      parse-options.h: extract common --cleanup option
      merge: cleanup messages like commit
      merge: add scissors line on merge conflict
      cherry-pick/revert: add scissors line on merge conflict
      t7610: unsuppress output
      t7610: add mergetool --gui tests
      *.[ch]: remove extern from function declarations using spatch
      *.[ch]: remove extern from function declarations using sed
      *.[ch]: manually align parameter lists
      t2018: cleanup in current test
      branch: make create_branch accept a merge base rev
      revisions.txt: change "rev" to "<rev>"
      revisions.txt: mark optional rev arguments with []
      revisions.txt: mention <rev>~ form
      tag: fix typo in nested tagging hint
      mergetool: use get_merge_tool function
      mergetool--lib: create gui_mode function
      mergetool: fallback to tool when guitool unavailable
      difftool: make --gui, --tool and --extcmd mutually exclusive
      difftool: fallback on merge.guitool

Derrick Stolee (4):
      trace2:data: pack-objects: add trace2 regions
      midx: pass a repository pointer
      midx: add packs to packed_git linked list
      trace2: add variable description to git.txt

Dustin Spicuzza (1):
      cvsexportcommit: force crlf translation

Elijah Newren (24):
      log,diff-tree: add --combined-all-paths option
      merge-options.txt: correct wording of --no-commit option
      t9300: demonstrate bug with get-mark and empty orphan commits
      git-fast-import.txt: fix wording about where ls command can appear
      fast-import: check most prominent commands first
      fast-import: only allow cat-blob requests where it makes sense
      fast-import: fix erroneous handling of get-mark with empty orphan commits
      Use 'unsigned short' for mode, like diff_filespec does
      merge-recursive: rename merge_options argument from 'o' to 'opt'
      merge-recursive: rename diff_filespec 'one' to 'o'
      merge-recursive: rename locals 'o' and 'a' to 'obuf' and 'abuf'
      merge-recursive: use 'ci' for rename_conflict_info variable name
      merge-recursive: move some struct declarations together
      merge-recursive: shrink rename_conflict_info
      merge-recursive: remove ren[12]_other fields from rename_conflict_info
      merge-recursive: track branch where rename occurred in rename struct
      merge-recursive: cleanup handle_rename_* function signatures
      merge-recursive: switch from (oid,mode) pairs to a diff_filespec
      t6043: fix copied test description to match its purpose
      merge-recursive: track information associated with directory renames
      merge-recursive: give callers of handle_content_merge() access to contents
      merge-recursive: switch directory rename detection default
      Honor core.precomposeUnicode in more places
      merge-recursive: restore accidentally dropped setting of path

Emily Shaffer (1):
      gitsubmodules: align html and nroff lists

Eric Sunshine (1):
      check-non-portable-shell: support Perl versions older than 5.10

Eric Wong (1):
      repack: enable bitmaps by default on bare repos

Fangyi Zhou (1):
      l10n: zh_CN: Revision for git v2.22.0 l10n

Jean-Noël Avila (6):
      l10n: fr.po remove obsolete entries
      Doc: fix misleading asciidoc formating
      l10n: fr.po v2.22.0.rnd1
      diff: fix mistake in translatable strings
      l10n: fr.po v2.22.0 round 2
      l10n: fr v2.22.0 rnd 3

Jeff Hostetler (30):
      trace2: Documentation/technical/api-trace2.txt
      trace2: create new combined trace facility
      trace2: collect Windows-specific process information
      trace2:data: add trace2 regions to wt-status
      trace2:data: add editor/pager child classification
      trace2:data: add trace2 sub-process classification
      trace2:data: add trace2 transport child classification
      trace2:data: add subverb to checkout command
      trace2:data: add subverb to reset command
      trace2:data: add trace2 hook classification
      trace2:data: add subverb for rebase
      trace2:data: add trace2 instrumentation to index read/write
      trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh
      trace2: add for_each macros to clang-format
      progress: add sparse mode to force 100% complete message
      trace2:data: add trace2 data to midx
      midx: add progress indicators in multi-pack-index verify
      midx: during verify group objects by packfile to speed verification
      config: initialize opts structure in repo_read_config()
      trace2: refactor setting process starting time
      trace2: add absolute elapsed time to start event
      trace2: find exec-dir before trace2 initialization
      config: add read_very_early_config()
      trace2: use system/global config for default trace2 settings
      trace2: report peak memory usage of the process
      trace2: clarify UTC datetime formatting
      trace2: make SIDs more unique
      trace2: update docs to describe system/global config settings
      trace2: fixup access problem on /etc/gitconfig in read_very_early_config
      trace2: fix tracing when NO_PTHREADS is defined

Jeff King (92):
      prune: lazily perform reachability traversal
      prune: use bitmaps for reachability traversal
      prune: check SEEN flag for reachability
      t5304: rename "sha1" variables to "oid"
      diff: drop options parameter from diffcore_fix_diff_index()
      diff: drop unused color reset parameters
      diff: drop unused emit data parameter from sane_truncate_line()
      diff: drop complete_rewrite parameter from run_external_diff()
      merge-recursive: drop several unused parameters
      pack-objects: drop unused parameter from oe_map_new_pack()
      files-backend: drop refs parameter from split_symref_update()
      ref-filter: drop unused buf/sz pairs
      ref-filter: drop unused "obj" parameters
      ref-filter: drop unused "sz" parameters
      diff: reuse diff setup for --no-index case
      bisect: use string arguments to feed internal diff-tree
      bisect: fix internal diff-tree config loading
      bisect: make diff-tree output prettier
      fetch: avoid calling write_or_die()
      fetch: ignore SIGPIPE during network operation
      rev-list: allow cached objects in existence check
      doc/fsck: clarify --connectivity-only behavior
      fsck: always compute USED flags for unreachable objects
      compat/bswap: add include header guards
      config: document --type=color output is a complete line
      line-log: suppress diff output with "-s"
      line-log: detect unsupported formats
      point pull requesters to GitGitGadget
      Makefile: fix unaligned loads in sha1dc with UBSan
      t5310: correctly remove bitmaps for jgit test
      pack-objects: default to writing bitmap hash-cache
      perf-lib.sh: rely on test-lib.sh for --tee handling
      revision: drop some unused "revs" parameters
      log: drop unused rev_info from early output
      log: drop unused "len" from show_tagger()
      update-index: drop unused prefix_length parameter from do_reupdate()
      test-date: drop unused "now" parameter from parse_dates()
      unpack-trees: drop name_entry from traverse_by_cache_tree()
      unpack-trees: drop unused error_type parameters
      report_path_error(): drop unused prefix parameter
      fetch_pack(): drop unused parameters
      parse-options: drop unused ctx parameter from show_gitcomp()
      pretty: drop unused "type" parameter in needs_rfc2047_encoding()
      pretty: drop unused strbuf from parse_padding_placeholder()
      git: read local config in --list-cmds
      completion: fix multiple command removals
      parse_opt_ref_sorting: always use with NONEG flag
      refs/files-backend: handle packed transaction prepare failure
      refs/files-backend: don't look at an aborted transaction
      http: factor out curl result code normalization
      http: normalize curl results for dumb loose and alternates fetches
      http: use normalize_curl_result() instead of manual conversion
      revision: use a prio_queue to hold rewritten parents
      get_commit_tree(): return NULL for broken tree
      rev-list: let traversal die when --missing is not in use
      rev-list: detect broken root trees
      test-prio-queue: use xmalloc
      xdiff: use git-compat-util
      xdiff: use xmalloc/xrealloc
      progress: use xmalloc/xcalloc
      t5516: drop ok=sigpipe from unreachable-want tests
      t5530: check protocol response for "not our ref"
      upload-pack: send ERR packet for non-tip objects
      pkt-line: prepare buffer before handling ERR packets
      fetch: use free_refs()
      remote.c: make singular free_ref() public
      fetch: do not consider peeled tags as advertised tips
      packfile.h: drop extern from function declarations
      pack-revindex: open index if necessary
      t5319: fix bogus cat-file argument
      t5319: drop useless --buffer from cat-file
      midx: check both pack and index names for containment
      packfile: fix pack basename computation
      http: simplify parsing of remote objects/info/packs
      server-info: fix blind pointer arithmetic
      server-info: simplify cleanup in parse_pack_def()
      server-info: use strbuf to read old info/packs file
      server-info: drop nr_alloc struct member
      server-info: drop objdirlen pointer arithmetic
      update_info_refs(): drop unused force parameter
      t5304: add a test for pruning with bitmaps
      untracked-cache: be defensive about missing NULs in index
      untracked-cache: simplify parsing by dropping "next"
      untracked-cache: simplify parsing by dropping "len"
      p5302: create the repo in each index-pack test
      doc/ls-files: put nested list for "-t" option into block
      t/perf: depend on perl JSON only when using --codespeed
      t/perf: add perf script for partial clones
      coccicheck: optionally batch spatch invocations
      t/lib-httpd: pass LSAN_OPTIONS through apache
      coccicheck: make batch size of 0 mean "unlimited"
      get_oid: handle NULL repo->index

Jiang Xin (9):
      t5323: test cases for git-pack-redundant
      pack-redundant: delay creation of unique_objects
      pack-redundant: rename pack_list.all_objects
      pack-redundant: consistent sort method
      l10n: git.pot: v2.22.0 round 1 (270 new, 56 removed)
      l10n: git.pot: v2.22.0 round 2 (6 new, 3 removed)
      i18n: fix typos found during l10n for git 2.22.0
      l10n: git.pot: v2.22.0 round 3 (3 new, 2 removed)
      l10n: zh_CN: for git v2.22.0 l10n round 1~3

Joel Teichroeb (5):
      stash: improve option parsing test coverage
      stash: convert apply to builtin
      stash: convert drop and clear to builtin
      stash: convert branch to builtin
      stash: convert pop to builtin

Joey Hess (1):
      convert: avoid malloc of original file size

Johannes Schindelin (67):
      ident: add the ability to provide a "fallback identity"
      travis: remove the hack to build the Windows job on Azure Pipelines
      tests: let --stress-limit=<N> imply --stress
      tests: introduce --stress-jobs=<N>
      built-in rebase: no need to check out `onto` twice
      built-in rebase: use the correct reflog when switching branches
      built-in rebase: demonstrate that ORIG_HEAD is not set correctly
      built-in rebase: set ORIG_HEAD just once, before the rebase
      Makefile: use `git ls-files` to list header files, if possible
      curl: anonymize URLs in error messages and warnings
      remote-curl: mark all error messages for translation
      stash: add back the original, scripted `git stash`
      stash: optionally use the scripted version again
      tests: add a special setup where stash.useBuiltin is off
      legacy stash: fix "rudimentary backport of -q"
      built-in stash: handle :(glob) pathspecs again
      mingw: drop MakeMaker reference
      mingw: allow building with an MSYS2 runtime v3.x
      rebase: deprecate --preserve-merges
      mingw: respect core.hidedotfiles = false in git-init again
      test-lib: introduce 'test_atexit'
      git-daemon: use 'test_atexit` to stop 'git-daemon'
      git p4 test: use 'test_atexit' to kill p4d and the watchdog process
      rebase -i: demonstrate obscure loose object cache bug
      sequencer: improve error message when an OID could not be parsed
      sequencer: move stale comment into correct location
      get_oid(): when an object was not found, try harder
      difftool: remove obsolete (and misleading) comment
      parse-options: make OPT_ARGUMENT() more useful
      difftool: allow running outside Git worktrees with --no-index
      docs: move gitremote-helpers into section 7
      docs: do not document the `git remote-testgit` command
      check-docs: really look at the documented commands again
      check-docs: do not expect guide pages to correspond to commands
      check-docs: fix for setups where executables have an extension
      tests (rebase): spell out the `--keep-empty` option
      tests (rebase): spell out the `--force-rebase` option
      t7810: do not abbreviate `--no-exclude-standard` nor `--invert-match`
      t5531: avoid using an abbreviated option
      tests (push): do not abbreviate the `--follow-tags` option
      tests (status): spell out the `--find-renames` option in full
      tests (pack-objects): use the full, unabbreviated `--revs` option
      t3301: fix false negative
      untracked cache: fix off-by-one
      tests: disallow the use of abbreviated options (by default)
      t9822: skip tests if file names cannot be ISO-8859-1 encoded
      macOS: make sure that gettext is found
      remote-testgit: move it into the support directory for t5801
      Makefile: drop the NO_INSTALL variable
      help -a: do not list commands that are excluded from the build
      check-docs: allow command-list.txt to contain excluded commands
      docs: exclude documentation for commands that have been excluded
      check-docs: do not bother checking for legacy scripts' documentation
      test-tool: handle the `-C <directory>` option just like `git`
      Turn `git serve` into a test helper
      t5580: verify that alternates can be UNC paths
      fsmonitor: demonstrate that it is not refreshed after discard_index()
      fsmonitor: force a refresh after the index was discarded
      t6500(mingw): use the Windows PID of the shell
      difftool --no-index: error out on --dir-diff (and don't crash)
      status: fix display of rebase -ir's `label` command
      parse-options: adjust `parse_opt_unknown_cb()`s declared return type
      stash: document stash.useBuiltin
      rebase: replace incorrect logical negation by correct bitwise one
      tests: mark a couple more test cases as requiring `rebase -p`
      docs: say that `--rebase=preserve` is deprecated
      rebase docs: recommend `-r` over `-p`

Jonathan Tan (25):
      remote-curl: reduce scope of rpc_state.argv
      remote-curl: reduce scope of rpc_state.stdin_preamble
      remote-curl: reduce scope of rpc_state.result
      remote-curl: refactor reading into rpc_state's buf
      remote-curl: use post_rpc() for protocol v2 also
      tests: define GIT_TEST_PROTOCOL_VERSION
      t5601: check ssh command only with protocol v0
      tests: always test fetch of unreachable with v0
      t5503: fix overspecification of trace expectation
      t5512: compensate for v0 only sending HEAD symrefs
      t5700: only run with protocol version 1
      tests: fix protocol version for overspecifications
      t5552: compensate for v2 filtering ref adv.
      submodule: explain first attempt failure clearly
      t5551: mark half-auth no-op fetch test as v0-only
      fetch-pack: call prepare_shallow_info only if v0
      fetch-pack: respect --no-update-shallow in v2
      sha1-file: support OBJECT_INFO_FOR_PREFETCH
      fetch-pack: binary search when storing wanted-refs
      diff: batch fetching of missing blobs
      pack-objects: write objects packed to trace2
      transport: die if server options are unsupported
      clone: send server options when using protocol v2
      worktree: update is_bare heuristics
      fetch-pack: send server options after command

Jordi Mas (2):
      l10n: Fixes to Catalan translation
      l10n: Update Catalan translation

Josh Steadmon (5):
      protocol-capabilities.txt: document symref
      trace2: write to directory targets
      clone: do faster object check for partial clones
      trace2: fix incorrect function pointer check
      commit-graph: fix memory leak

Junio C Hamano (19):
      test: caution on our version of 'yes'
      builtin/log: downcase the beginning of error messages
      format-patch: notice failure to open cover letter for writing
      Start 2.22 cycle
      The second batch
      The third batch
      The fourth batch
      gettext tests: export the restored GIT_TEST_GETTEXT_POISON
      The fifth batch
      The sixth batch
      Makefile: dedup list of files obtained from ls-files
      The seventh batch
      The eighth batch
      Git 2.22-rc0
      pkt-line: drop 'const'-ness of a param to set_packet_header()
      Git 2.22-rc1
      Git 2.22-rc2
      Git 2.22-rc3
      Git 2.22

Kyle Meyer (5):
      rebase docs: fix "gitlink" typo
      submodule: refuse to add repository with no commits
      dir: do not traverse repositories with no commits
      add: error appropriately on repository with no commits
      t3000 (ls-files -o): widen description to reflect current tests

Martin Ågren (14):
      setup: free old value before setting `work_tree`
      setup: fix memory leaks with `struct repository_format`
      config/diff.txt: drop spurious backtick
      config/fsck.txt: avoid starting line with dash
      git.txt: remove empty line before list continuation
      git-svn.txt: drop escaping '\' that ends up being rendered
      Documentation: turn middle-of-line tabs into spaces
      Documentation/Makefile: add missing xsl dependencies for manpages
      Documentation/Makefile: add missing dependency on asciidoctor-extensions
      asciidoctor-extensions: fix spurious space after linkgit
      Doc: auto-detect changed build flags
      doc-diff: let `render_tree()` take an explicit directory name
      doc-diff: support diffing from/to AsciiDoc(tor)
      doc-diff: add `--cut-header-footer`

Matthew Kraai (1):
      t3903: add test for --intent-to-add file

Matthias Rüster (2):
      l10n: TEAMS: Change German translation team leader
      l10n: de.po: Update German translation

Michal Suchanek (1):
      worktree: fix worktree add race

Mike Hommey (2):
      fix pack protocol example client/server communication
      Make fread/fwrite-like functions in http.c more like fread/fwrite.

Nguyễn Thái Ngọc Duy (129):
      parse-options.h: remove extern on function prototypes
      parse-options: add one-shot mode
      parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
      parse-options: add OPT_BITOP()
      parse-options: stop abusing 'callback' for lowlevel callbacks
      parse-options: avoid magic return codes
      parse-options: allow ll_callback with OPTION_CALLBACK
      diff.h: keep forward struct declarations sorted
      diff.h: avoid bit fields in struct diff_flags
      diff.c: prepare to use parse_options() for parsing
      diff.c: convert -u|-p|--patch
      diff.c: convert -U|--unified
      diff.c: convert -W|--[no-]function-context
      diff.c: convert --raw
      read-cache.c: fix writing "link" index ext with null base oid
      completion: add more parameter value completion
      diff-parseopt: convert --patch-with-raw
      diff-parseopt: convert --numstat and --shortstat
      diff-parseopt: convert --dirstat and friends
      diff-parseopt: convert --check
      diff-parseopt: convert --summary
      diff-parseopt: convert --patch-with-stat
      diff-parseopt: convert --name-only
      diff-parseopt: convert --name-status
      diff-parseopt: convert -s|--no-patch
      diff-parseopt: convert --stat*
      diff-parseopt: convert --[no-]compact-summary
      diff-parseopt: convert --output-*
      diff-parseopt: convert -B|--break-rewrites
      diff-parseopt: convert -M|--find-renames
      diff-parseopt: convert -D|--irreversible-delete
      diff-parseopt: convert -C|--find-copies
      diff-parseopt: convert --find-copies-harder
      diff-parseopt: convert --no-renames|--[no--rename-empty
      diff-parseopt: convert --relative
      diff-parseopt: convert --[no-]minimal
      diff-parseopt: convert --ignore-some-changes
      Delete check-racy.c
      diff-parseopt: convert --[no-]indent-heuristic
      diff-parseopt: convert --patience
      diff-parseopt: convert --histogram
      diff-parseopt: convert --diff-algorithm
      diff-parseopt: convert --anchored
      diff-parseopt: convert --binary
      diff-parseopt: convert --full-index
      diff-parseopt: convert -a|--text
      diff-parseopt: convert -R
      diff-parseopt: convert --[no-]follow
      diff-parseopt: convert --[no-]color
      diff-parseopt: convert --word-diff
      diff-parseopt: convert --word-diff-regex
      diff-parseopt: convert --color-words
      diff-parseopt: convert --exit-code
      diff-parseopt: convert --quiet
      diff-parseopt: convert --ext-diff
      diff-parseopt: convert --textconv
      diff-parseopt: convert --ignore-submodules
      diff-parseopt: convert --submodule
      files-backend.c: factor out per-worktree code in loose_fill_ref_dir()
      files-backend.c: reduce duplication in add_per_worktree_entries_to_dir()
      Make sure refs/rewritten/ is per-worktree
      unpack-trees: fix oneway_merge accidentally carry over stage index
      checkout.txt: note about losing staged changes with --merge
      commit: improve error message in "-a <paths>" case
      unpack-trees: keep gently check inside add_rejected_path
      unpack-trees: rename "gently" flag to "quiet"
      read-tree: add --quiet
      checkout: prevent losing staged changes with --merge
      diff-parseopt: convert --ws-error-highlight
      diff-parseopt: convert --ita-[in]visible-in-index
      diff-parseopt: convert -z
      diff-parseopt: convert -l
      diff-parseopt: convert -S|-G
      diff-parseopt: convert --pickaxe-all|--pickaxe-regex
      diff-parseopt: convert -O
      diff-parseopt: convert --find-object
      diff-parseopt: convert --diff-filter
      diff-parseopt: convert --[no-]abbrev
      diff-parseopt: convert --[src|dst]-prefix
      diff-parseopt: convert --line-prefix
      diff-parseopt: convert --no-prefix
      diff-parseopt: convert --inter-hunk-context
      diff-parseopt: convert --[no-]color-moved
      diff-parseopt: convert --color-moved-ws
      diff.c: allow --no-color-moved-ws
      range-diff: use parse_options() instead of diff_opt_parse()
      diff --no-index: use parse_options() instead of diff_opt_parse()
      am: avoid diff_opt_parse()
      config: correct '**' matching in includeIf patterns
      interpret-trailers.txt: start the desc line with a capital letter
      read-tree.txt: clarify --reset and worktree changes
      packfile.c: add repo_approximate_object_count()
      refs.c: add refs_ref_exists()
      refs.c: add refs_shorten_unambiguous_ref()
      refs.c: remove the_repo from substitute_branch_name()
      refs.c: remove the_repo from expand_ref()
      refs.c: add repo_dwim_ref()
      refs.c: add repo_dwim_log()
      refs.c: remove the_repo from read_ref_at()
      submodule foreach: fix "<command> --quiet" not being respected
      commit.cocci: refactor code, avoid double rewrite
      commit.c: add repo_get_commit_tree()
      sha1-name.c: remove the_repo from sort_ambiguous()
      sha1-name.c: remove the_repo from find_abbrev_len_packed()
      sha1-name.c: add repo_find_unique_abbrev_r()
      sha1-name.c: store and use repo in struct disambiguate_state
      sha1-name.c: add repo_for_each_abbrev()
      sha1-name.c: remove the_repo from get_short_oid()
      sha1-name.c: remove the_repo from interpret_nth_prior_checkout()
      sha1-name.c: remove the_repo from interpret_branch_mark()
      sha1-name.c: add repo_interpret_branch_name()
      sha1-name.c: remove the_repo from get_oid_oneline()
      sha1-name.c: remove the_repo from get_describe_name()
      sha1-name.c: remove the_repo from get_oid_basic()
      sha1-name.c: remove the_repo from get_oid_1()
      sha1-name.c: remove the_repo from handle_one_ref()
      sha1-name.c: remove the_repo from diagnose_invalid_index_path()
      sha1-name.c: remove the_repo from resolve_relative_path()
      sha1-name.c: remove the_repo from get_oid_with_context_1()
      sha1-name.c: add repo_get_oid()
      submodule-config.c: use repo_get_oid for reading .gitmodules
      sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name
      sha1-name.c: remove the_repo from other get_oid_*
      sha1-name.c: remove the_repo from get_oid_mb()
      parse-options: don't emit "ambiguous option" for aliases
      submodule--helper: add a missing \n
      diff-parseopt: correct variable types that are used by parseopt
      diff-parseopt: restore -U (no argument) behavior
      parse-options: check empty value in OPT_INTEGER and OPT_ABBREV

Paul-Sebastian Ungureanu (17):
      sha1-name.c: add `get_oidf()` which acts like `get_oid()`
      strbuf.c: add `strbuf_join_argv()`
      strbuf.c: add `strbuf_insertf()` and `strbuf_vinsertf()`
      t3903: modernize style
      stash: rename test cases to be more descriptive
      stash: add tests for `git stash show` config
      stash: mention options in `show` synopsis
      stash: convert list to builtin
      stash: convert show to builtin
      stash: convert store to builtin
      stash: convert create to builtin
      stash: convert push to builtin
      stash: make push -q quiet
      stash: convert save to builtin
      stash: optimize `get_untracked_files()` and `check_changes()`
      stash: replace all `write-tree` child processes with API calls
      stash: convert `stash--helper.c` into `stash.c`

Peter Krefting (2):
      l10n: sv.po: Update Swedish translation
      l10n: sv.po: Update Swedish translation (4577t0f0u)

Philip Oakley (2):
      rerere doc: quote `rerere.enabled`
      describe doc: remove '7-char' abbreviation reference

Phillip Wood (21):
      am/cherry-pick/rebase/revert: document --rerere-autoupdate
      merge: tweak --rerere-autoupdate documentation
      sequencer: break some long lines
      cherry-pick: demonstrate option amnesia
      cherry-pick --continue: remember options
      commit/reset: try to clean up sequencer state
      fix cherry-pick/revert status after commit
      sequencer: fix cleanup with --signoff and -x
      sequencer.c: save and restore cleanup mode
      sequencer: always discard index after checkout
      rebase: don't translate trace strings
      rebase: rename write_basic_state()
      rebase: use OPT_RERERE_AUTOUPDATE()
      rebase -i: combine rebase--interactive.c with rebase.c
      rebase -i: remove duplication
      rebase -i: use struct commit when parsing options
      rebase -i: use struct object_id for squash_onto
      rebase -i: use struct rebase_options to parse args
      rebase -i: use struct rebase_options in do_interactive_rebase()
      rebase: use a common action enum
      rebase -i: run without forking rebase--interactive

Ralf Thielow (1):
      l10n: de.po: improve description of 'git reset --quiet'

Ramsay Jones (2):
      prune-packed: check for too many arguments
      Makefile: fix 'hdr-check' when GCRYPT not installed

René Scharfe (1):
      get-tar-commit-id: parse comment record

Robert P. J. Day (3):
      mention use of "hooks.allownonascii" in "man githooks"
      docs/git-gc: fix typo "--prune=all" to "--prune=now"
      attr.c: ".gitattribute" -> ".gitattributes" (comments)

Rohit Ashiwal (3):
      test functions: add function `test_file_not_empty`
      t3600: modernize style
      t3600: use helpers to replace test -d/f/e/s <path>

SZEDER Gábor (27):
      test-lib: fix interrupt handling with 'dash' and '--verbose-log -x'
      t/lib-git-daemon: make sure to kill the 'git-daemon' process
      tests: use 'test_atexit' to stop httpd
      t0301-credential-cache: use 'test_atexit' to stop the credentials helper
      git p4 test: clean up the p4d cleanup functions
      git p4 test: simplify timeout handling
      git p4 test: disable '-x' tracing in the p4d watchdog loop
      t9811-git-p4-label-import: fix pipeline negation
      t5318-commit-graph: remove unused variable
      Documentation/git-diff-tree.txt: fix formatting
      Documentation/technical/api-config.txt: fix formatting
      Documentation/technical/protocol-v2.txt: fix formatting
      ci: install Asciidoctor in 'ci/install-dependencies.sh'
      index-pack: show progress while checking objects
      ci: stick with Asciidoctor v1.5.8 for now
      ci: fix AsciiDoc/Asciidoctor stderr check in the documentation build job
      progress: make display_progress() return void
      progress: assemble percentage and counters in a strbuf before printing
      blame: default to HEAD in a bare repo when no start commit is given
      builtin rebase: use FREE_AND_NULL
      builtin rebase: use oideq()
      progress: clear previous progress update dynamically
      progress: break too long progress bar lines
      ci: install 'libsvn-perl' instead of 'git-svn'
      trace2: rename environment variables to GIT_TRACE2*
      trace2: document the supported values of GIT_TRACE2* env variables
      progress: avoid empty line when breaking the progress line

Sun Chao (2):
      pack-redundant: delete redundant code
      pack-redundant: new algorithm to find min packs

Sven Strickroth (1):
      MSVC: include compat/win32/path-utils.h for MSVC, too, for real_path()

Tanushree Tumane (1):
      mingw: remove obsolete IPv6-related code

Taylor Blau (4):
      t: move 'hex2oct' into test-lib-functions.sh
      t: introduce tests for unexpected object types
      list-objects.c: handle unexpected non-blob entries
      list-objects.c: handle unexpected non-tree entries

Thomas Gummerer (15):
      move worktree tests to t24*
      entry: factor out unlink_entry function
      entry: support CE_WT_REMOVE flag in checkout_entry
      read-cache: add invalidate parameter to remove_marked_cache_entries
      checkout: clarify comment
      checkout: factor out mark_cache_entry_for_checkout function
      checkout: introduce --{,no-}overlay option
      checkout: introduce checkout.overlayMode config
      revert "checkout: introduce checkout.overlayMode config"
      ident: don't require calling prepare_fallback_ident first
      stash: drop unused parameter
      stash: pass pathspec as pointer
      glossary: add definition for overlay
      stash: setup default diff output format if necessary
      ls-files: use correct format string

Todd Zullinger (9):
      t4038-diff-combined: quote paths with whitespace
      t9902: test multiple removals via completion.commands
      completion: use __git when calling --list-cmds
      Documentation/rev-list-options: wrap --date=<format> block with "--"
      Documentation/git-status: fix titles in porcelain v2 section
      Documentation/git-svn: improve asciidoctor compatibility
      Documentation/git-show-branch: avoid literal {apostrophe}
      test-lib: try harder to ensure a working jgit
      RelNotes: minor typo fixes in 2.22.0 draft

Torsten Bögershausen (1):
      trace2: NULL is not allowed for va_list

Trần Ngọc Quân (4):
      l10n: Updated Vietnamese translation for v2.21 rd2
      l10n: vi.po(4577t): Updated Vietnamese translation for v2.22.0 round 1
      l10n: vi.po(4580t): Updated Vietnamese translation for v2.22.0 round 2
      l10n: vi.po(4581t): Updated Vietnamese translation for v2.22.0 round 3

Vadim Kochan (1):
      autoconf: #include <libintl.h> when checking for gettext()

William Hubbs (1):
      config: allow giving separate author and committer idents

Yash Bhatambare (1):
      gitattributes.txt: fix typo

brian m. carlson (35):
      t/lib-submodule-update: use appropriate length constant
      khash: move oid hash table definition
      pack-bitmap: make bitmap header handling hash agnostic
      pack-bitmap: convert struct stored_bitmap to object_id
      pack-bitmap: replace sha1_to_hex
      pack-bitmap: switch hard-coded constants to the_hash_algo
      pack-bitmap: switch hash tables to use struct object_id
      submodule: avoid hard-coded constants
      notes-merge: switch to use the_hash_algo
      notes: make hash size independent
      notes: replace sha1_to_hex
      object-store: rename and expand packed_git's sha1 member
      builtin/name-rev: make hash-size independent
      fast-import: make hash-size independent
      fast-import: replace sha1_to_hex
      builtin/am: make hash size independent
      builtin/pull: make hash-size independent
      http-push: convert to use the_hash_algo
      http-backend: allow 64-character hex names
      http-push: remove remaining uses of sha1_to_hex
      http-walker: replace sha1_to_hex
      http: replace hard-coded constant with the_hash_algo
      http: compute hash of downloaded objects using the_hash_algo
      http: replace sha1_to_hex
      remote-curl: make hash size independent
      hash: add a function to lookup hash algorithm by length
      builtin/get-tar-commit-id: make hash size independent
      archive: convert struct archiver_args to object_id
      refspec: make hash size independent
      builtin/difftool: use parse_oid_hex
      dir: make untracked cache extension hash size independent
      read-cache: read data in a hash-independent way
      Git.pm: make hash size independent
      gitweb: make hash size independent
      send-email: default to quoted-printable when CR is present

Ævar Arnfjörð Bjarmason (44):
      receive-pack: fix use-after-free bug
      commit-graph tests: split up corrupt_graph_and_verify()
      commit-graph tests: test a graph that's too small
      Makefile: remove an out-of-date comment
      Makefile: move "strip" assignment down from flags
      Makefile: add/remove comments at top and tweak whitespace
      Makefile: Move *_LIBS assignment into its own section
      Makefile: move the setting of *FLAGS closer to "include"
      Makefile: allow for combining DEVELOPER=1 and CFLAGS="..."
      gc: remove redundant check for gc_auto_threshold
      gc: convert to using the_hash_algo
      gc: refactor a "call me once" pattern
      reflog tests: make use of "test_config" idiom
      reflog tests: test for the "points nowhere" warning
      rebase: remove the rebase.useBuiltin setting
      gc docs: modernize the advice for manually running "gc"
      gc docs: stop noting "repack" flags
      gc docs: clean grammar for "gc.bigPackThreshold"
      commit-graph: fix segfault on e.g. "git status"
      commit-graph: don't early exit(1) on e.g. "git status"
      commit-graph: don't pass filename to load_commit_graph_one_fd_st()
      commit-graph verify: detect inability to read the graph
      commit-graph write: don't die if the existing graph is corrupt
      commit-graph: improve & i18n error messages
      reflog tests: assert lack of early exit with expiry="never"
      gc: handle & check gc.reflogExpire config
      test-lib: whitelist GIT_TR2_* in the environment
      gc docs: include the "gc.*" section from "config" in "gc"
      gc docs: re-flow the "gc.*" section in "config"
      gc docs: fix formatting for "gc.writeCommitGraph"
      gc docs: note how --aggressive impacts --window & --depth
      gc docs: downplay the usefulness of --aggressive
      gc docs: note "gc --aggressive" in "fast-import"
      gc docs: clarify that "gc" doesn't throw away referenced objects
      gc docs: remove incorrect reference to gc.auto=0
      perf README: correct docs for 3c8f12c96c regression
      perf aggregate: remove GIT_TEST_INSTALLED from --codespeed
      perf-lib.sh: make "./run <revisions>" use the correct gits
      perf-lib.sh: remove GIT_TEST_INSTALLED from perf-lib.sh
      perf tests: add "bindir" prefix to git tree test results
      perf-lib.sh: forbid the use of GIT_TEST_INSTALLED
      trace2: fix up a missing "leave" entry point
      trace2: fix up a missing "leave" entry point
      sha1dc: update from upstream

İsmail Dönmez (2):
      mingw: do not let ld strip relocations
      mingw: enable DEP and ASLR


^ permalink raw reply	[relevance 2%]

* Git for Windows v2.22.0-rc3, was Re: [ANNOUNCE] Git v2.22.0-rc3
  2019-06-03 20:23  2% [ANNOUNCE] Git v2.22.0-rc3 Junio C Hamano
  2019-06-04  1:32  0% ` Ben Humphreys
  2019-06-04  1:47  0% ` Bhaskar Chowdhury
@ 2019-06-04 14:45  0% ` Johannes Schindelin
  2 siblings, 0 replies; 162+ results
From: Johannes Schindelin @ 2019-06-04 14:45 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, git-for-windows, git-packagers

[-- Attachment #1: Type: text/plain, Size: 73951 bytes --]

Team,

I was a bit too tired last night to wait for the trusty Azure Pipelines to
finish publishing this preview, so with a bit of delay, here comes the
announcement:

https://github.com/git-for-windows/git/releases/tag/v2.22.0-rc3.windows.1

Thanks,
Johannes

On Mon, 3 Jun 2019, Junio C Hamano wrote:

> A release candidate Git v2.22.0-rc3 is now available for testing
> at the usual places.  It is comprised of 718 non-merge commits
> since v2.21.0, contributed by 67 people, 17 of which are new faces.
>
> Hopefully, this will be the last -rc during this cycle.
>
> 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.22.0-rc3' 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.21.0 are as follows.
> Welcome to the Git development community!
>
>   Alexander Blesius, Baruch Siach, Boxuan Li, Chris Mayo,
>   Chris. Webster, Clément Chigot, Corentin BOMPARD, Damien Robert,
>   Dustin Spicuzza, Emily Shaffer, Michal Suchanek, Rohit Ashiwal,
>   Sun Chao, Tanushree Tumane, Vadim Kochan, William Hubbs, and
>   Yash Bhatambare.
>
> Returning contributors who helped this release are as follows.
> Thanks for your continued support.
>
>   Ævar Arnfjörð Bjarmason, Alban Gruin, Alexander Shopov, Anders
>   Waldenborg, Andreas Heiduk, Andrei Rybak, Beat Bolli, Ben Peart,
>   Brandon Richardson, brian m. carlson, Carlo Marcelo Arenas
>   Belón, Christian Couder, Daniels Umanovskis, David Aguilar,
>   David Kastrup, Denton Liu, Derrick Stolee, Elijah Newren, Eric
>   Sunshine, Eric Wong, İsmail Dönmez, Jean-Noël Avila, Jeff
>   Hostetler, Jeff King, Jiang Xin, Joel Teichroeb, Joey Hess,
>   Johannes Schindelin, Jonathan Tan, Jordi Mas, Josh Steadmon,
>   Junio C Hamano, Kyle Meyer, Martin Ågren, Matthew Kraai, Mike
>   Hommey, Nguyễn Thái Ngọc Duy, Paul-Sebastian Ungureanu,
>   Philip Oakley, Phillip Wood, Ramsay Jones, René Scharfe,
>   Robert P. J. Day, Sven Strickroth, SZEDER Gábor, Taylor Blau,
>   Thomas Gummerer, Todd Zullinger, Torsten Bögershausen, and
>   Trần Ngọc Quân.
>
> ----------------------------------------------------------------
>
> Git 2.22 Release Notes (draft)
> ==============================
>
> Updates since v2.21
> -------------------
>
> Backward compatibility note
>
>  * The filter specification "--filter=sparse:path=<path>" used to
>    create a lazy/partial clone has been removed.  Using a blob that is
>    part of the project as sparse specification is still supported with
>    the "--filter=sparse:oid=<blob>" option.
>
> UI, Workflows & Features
>
>  * "git checkout --no-overlay" can be used to trigger a new mode of
>    checking out paths out of the tree-ish, that allows paths that
>    match the pathspec that are in the current index and working tree
>    and are not in the tree-ish.
>
>  * The %(trailers) formatter in "git log --format=..."  now allows to
>    optionally pick trailers selectively by keyword, show only values,
>    etc.
>
>  * Four new configuration variables {author,committer}.{name,email}
>    have been introduced to override user.{name,email} in more specific
>    cases.
>
>  * Command-line completion (in contrib/) learned to tab-complete the
>    "git submodule absorbgitdirs" subcommand.
>
>  * "git branch" learned a new subcommand "--show-current".
>
>  * Output from "diff --cc" did not show the original paths when the
>    merge involved renames.  A new option adds the paths in the
>    original trees to the output.
>
>  * The command line completion (in contrib/) has been taught to
>    complete more subcommand parameters.
>
>  * The final report from "git bisect" used to show the suspected
>    culprit using a raw "diff-tree", with which there is no output for
>    a merge commit.  This has been updated to use a more modern and
>    human readable output that still is concise enough.
>
>  * "git rebase --rebase-merges" replaces its old "--preserve-merges"
>    option; the latter is now marked as deprecated.
>
>  * Error message given while cloning with --recurse-submodules has
>    been updated.
>
>  * The completion helper code now pays attention to repository-local
>    configuration (when available), which allows --list-cmds to honour
>    a repository specific setting of completion.commands, for example.
>
>  * "git mergetool" learned to offer Sublime Merge (smerge) as one of
>    its backends.
>
>  * A new hook "post-index-change" is called when the on-disk index
>    file changes, which can help e.g. a virtualized working tree
>    implementation.
>
>  * "git difftool" can now run outside a repository.
>
>  * "git checkout -m <other>" was about carrying the differences
>    between HEAD and the working-tree files forward while checking out
>    another branch, and ignored the differences between HEAD and the
>    index.  The command has been taught to abort when the index and the
>    HEAD are different.
>
>  * A progress indicator has been added to the "index-pack" step, which
>    often makes users wait for completion during "git clone".
>
>  * "git submodule" learns "set-branch" subcommand that allows the
>    submodule.*.branch settings to be modified.
>
>  * "git merge-recursive" backend recently learned a new heuristics to
>    infer file movement based on how other files in the same directory
>    moved.  As this is inherently less robust heuristics than the one
>    based on the content similarity of the file itself (rather than
>    based on what its neighbours are doing), it sometimes gives an
>    outcome unexpected by the end users.  This has been toned down to
>    leave the renamed paths in higher/conflicted stages in the index so
>    that the user can examine and confirm the result.
>
>  * "git tag" learned to give an advice suggesting it might be a
>    mistake when creating an annotated or signed tag that points at
>    another tag.
>
>  * The "git pack-objects" command learned to report the number of
>    objects it packed via the trace2 mechanism.
>
>  * The list of conflicted paths shown in the editor while concluding a
>    conflicted merge was shown above the scissors line when the
>    clean-up mode is set to "scissors", even though it was commented
>    out just like the list of updated paths and other information to
>    help the user explain the merge better.
>
>  * The trace2 tracing facility learned to auto-generate a filename
>    when told to log to a directory.
>
>  * "git clone" learned a new --server-option option when talking over
>    the protocol version 2.
>
>  * The connectivity bitmaps are created by default in bare
>    repositories now; also the pathname hash-cache is created by
>    default to avoid making crappy deltas when repacking.
>
>  * "git branch new A...B" and "git checkout -b new A...B" have been
>    taught that in their contexts, the notation A...B means "the merge
>    base between these two commits", just like "git checkout A...B"
>    detaches HEAD at that commit.
>
>  * Update "git difftool" and "git mergetool" so that the combinations
>    of {diff,merge}.{tool,guitool} configuration variables serve as
>    fallback settings of each other in a sensible order.
>
>  * The "--dir-diff" mode of "git difftool" is not useful in "--no-index"
>    mode; they are now explicitly marked as mutually incompatible.
>
>
> Performance, Internal Implementation, Development Support etc.
>
>  * The diff machinery, one of the oldest parts of the system, which
>    long predates the parse-options API, uses fairly long and complex
>    handcrafted option parser.  This is being rewritten to use the
>    parse-options API.
>
>  * The implementation of pack-redundant has been updated for
>    performance in a repository with many packfiles.
>
>  * A more structured way to obtain execution trace has been added.
>
>  * "git prune" has been taught to take advantage of reachability
>    bitmap when able.
>
>  * The command line parser of "git commit-tree" has been rewritten to
>    use the parse-options API.
>
>  * Suggest GitGitGadget instead of submitGit as a way to submit
>    patches based on GitHub PR to us.
>
>  * The test framework has been updated to help developers by making it
>    easier to run most of the tests under different versions of
>    over-the-wire protocols.
>
>  * Dev support update to make it easier to compare two formatted
>    results from our documentation.
>
>  * The scripted "git rebase" implementation has been retired.
>
>  * "git multi-pack-index verify" did not scale well with the number of
>    packfiles, which is being improved.
>
>  * "git stash" has been rewritten in C.
>
>  * The "check-docs" Makefile target to support developers has been
>    updated.
>
>  * The tests have been updated not to rely on the abbreviated option
>    names the parse-options API offers, to protect us from an
>    abbreviated form of an option that used to be unique within the
>    command getting non-unique when a new option that share the same
>    prefix is added.
>
>  * The scripted version of "git rebase -i" wrote and rewrote the todo
>    list many times during a single step of its operation, and the
>    recent C-rewrite made a faithful conversion of the logic to C.  The
>    implementation has been updated to carry necessary information
>    around in-core to avoid rewriting the same file over and over
>    unnecessarily.
>
>  * Test framework update to more robustly clean up leftover files and
>    processes after tests are done.
>
>  * Conversion from unsigned char[20] to struct object_id continues.
>
>  * While running "git diff" in a lazy clone, we can upfront know which
>    missing blobs we will need, instead of waiting for the on-demand
>    machinery to discover them one by one.  The code learned to aim to
>    achieve better performance by batching the request for these
>    promised blobs.
>
>  * During an initial "git clone --depth=..." partial clone, it is
>    pointless to spend cycles for a large portion of the connectivity
>    check that enumerates and skips promisor objects (which by
>    definition is all objects fetched from the other side).  This has
>    been optimized out.
>
>  * Mechanically and systematically drop "extern" from function
>    declaration.
>
>  * The script to aggregate perf result unconditionally depended on
>    libjson-perl even though it did not have to, which has been
>    corrected.
>
>  * The internal implementation of "git rebase -i" has been updated to
>    avoid forking a separate "rebase--interactive" process.
>
>  * Allow DEP and ASLR for Windows build to for security hardening.
>
>  * Performance test framework has been broken and measured the version
>    of Git that happens to be on $PATH, not the specified one to
>    measure, for a while, which has been corrected.
>
>  * Optionally "make coccicheck" can feed multiple source files to
>    spatch, gaining performance while spending more memory.
>
>  * Attempt to use an abbreviated option in "git clone --recurs" is
>    responded by a request to disambiguate between --recursive and
>    --recurse-submodules, which is bad because these two are synonyms.
>    The parse-options API has been extended to define such synonyms
>    more easily and not produce an unnecessary failure.
>
>  * A pair of private functions in http.c that had names similar to
>    fread/fwrite did not return the number of elements, which was found
>    to be confusing.
>
>  * Update collision-detecting SHA-1 code to build properly on HP-UX.
>
>
> Fixes since v2.21
> -----------------
>
>  * "git prune-packed" did not notice and complain against excess
>    arguments given from the command line, which now it does.
>    (merge 9b0bd87ed2 rj/prune-packed-excess-args later to maint).
>
>  * Split-index fix.
>    (merge 6e37c8ed3c nd/split-index-null-base-fix later to maint).
>
>  * "git diff --no-index" may still want to access Git goodies like
>    --ext-diff and --textconv, but so far these have been ignored,
>    which has been corrected.
>    (merge 287ab28bfa jk/diff-no-index-initialize later to maint).
>
>  * Unify RPC code for smart http in protocol v0/v1 and v2, which fixes
>    a bug in the latter (lack of authentication retry) and generally
>    improves the code base.
>    (merge a97d00799a jt/http-auth-proto-v2-fix later to maint).
>
>  * The include file compat/bswap.h has been updated so that it is safe
>    to (accidentally) include it more than once.
>    (merge 33aa579a55 jk/guard-bswap-header later to maint).
>
>  * The set of header files used by "make hdr-check" unconditionally
>    included sha256/gcrypt.h, even when it is not used, causing the
>    make target to fail.  We now skip it when GCRYPT_SHA256 is not in
>    use.
>    (merge f23aa18e7f rj/hdr-check-gcrypt-fix later to maint).
>
>  * The Makefile uses 'find' utility to enumerate all the *.h header
>    files, which is expensive on platforms with slow filesystems; it
>    now optionally uses "ls-files" if working within a repository,
>    which is a trick similar to how all sources are enumerated to run
>    ETAGS on.
>    (merge 92b88eba9f js/find-lib-h-with-ls-files-when-possible later to maint).
>
>  * "git rebase" that was reimplemented in C did not set ORIG_HEAD
>    correctly, which has been corrected.
>    (merge cbd29ead92 js/rebase-orig-head-fix later to maint).
>
>  * Dev support.
>    (merge f545737144 js/stress-test-ui-tweak later to maint).
>
>  * CFLAGS now can be tweaked when invoking Make while using
>    DEVELOPER=YesPlease; this did not work well before.
>    (merge 6d5d4b4e93 ab/makefile-help-devs-more later to maint).
>
>  * "git fsck --connectivity-only" omits computation necessary to sift
>    the objects that are not reachable from any of the refs into
>    unreachable and dangling.  This is now enabled when dangling
>    objects are requested (which is done by default, but can be
>    overridden with the "--no-dangling" option).
>    (merge 8d8c2a5aef jk/fsck-doc later to maint).
>
>  * On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX),
>    the upload-pack that runs on the other end that hangs up after
>    detecting an error could cause "git fetch" to die with a signal,
>    which led to a flaky test.  "git fetch" now ignores SIGPIPE during
>    the network portion of its operation (this is not a problem as we
>    check the return status from our write(2)s).
>    (merge 143588949c jk/no-sigpipe-during-network-transport later to maint).
>
>  * A recent update broke "is this object available to us?" check for
>    well-known objects like an empty tree (which should yield "yes",
>    even when there is no on-disk object for an empty tree), which has
>    been corrected.
>    (merge f06ab027ef jk/virtual-objects-do-exist later to maint).
>
>  * The setup code has been cleaned up to avoid leaks around the
>    repository_format structure.
>    (merge e8805af1c3 ma/clear-repository-format later to maint).
>
>  * "git config --type=color ..." is meant to replace "git config --get-color"
>    but there is a slight difference that wasn't documented, which is
>    now fixed.
>    (merge cd8e7593b9 jk/config-type-color-ends-with-lf later to maint).
>
>  * When the "clean" filter can reduce the size of a huge file in the
>    working tree down to a small "token" (a la Git LFS), there is no
>    point in allocating a huge scratch area upfront, but the buffer is
>    sized based on the original file size.  The convert mechanism now
>    allocates very minimum and reallocates as it receives the output
>    from the clean filter process.
>    (merge 02156ab031 jh/resize-convert-scratch-buffer later to maint).
>
>  * "git rebase" uses the refs/rewritten/ hierarchy to store its
>    intermediate states, which inherently makes the hierarchy per
>    worktree, but it didn't quite work well.
>    (merge b9317d55a3 nd/rewritten-ref-is-per-worktree later to maint).
>
>  * "git log -L<from>,<to>:<path>" with "-s" did not suppress the patch
>    output as it should.  This has been corrected.
>    (merge 05314efaea jk/line-log-with-patch later to maint).
>
>  * "git worktree add" used to do a "find an available name with stat
>    and then mkdir", which is race-prone.  This has been fixed by using
>    mkdir and reacting to EEXIST in a loop.
>    (merge 7af01f2367 ms/worktree-add-atomic-mkdir later to maint).
>
>  * Build update for SHA-1 with collision detection.
>    (merge 07a20f569b jk/sha1dc later to maint).
>
>  * Build procedure has been fixed around use of asciidoctor instead of
>    asciidoc.
>    (merge 185f9a0ea0 ma/asciidoctor-fixes later to maint).
>
>  * remote-http transport did not anonymize URLs reported in its error
>    messages at places.
>    (merge c1284b21f2 js/anonymize-remote-curl-diag later to maint).
>
>  * Error messages given from the http transport have been updated so
>    that they can be localized.
>    (merge ed8b4132c8 js/remote-curl-i18n later to maint).
>
>  * "git init" forgot to read platform-specific repository
>    configuration, which made Windows port to ignore settings of
>    core.hidedotfiles, for example.
>
>  * A corner-case object name ambiguity while the sequencer machinery
>    is working (e.g. "rebase -i -x") has been fixed.
>
>  * "git format-patch" did not diagnose an error while opening the
>    output file for the cover-letter, which has been corrected.
>    (merge 2fe95f494c jc/format-patch-error-check later to maint).
>
>  * "git checkout -f <branch>" while the index has an unmerged path
>    incorrectly left some paths in an unmerged state, which has been
>    corrected.
>
>  * A corner case bug in the refs API has been corrected.
>    (merge d3322eb28b jk/refs-double-abort later to maint).
>
>  * Unicode update.
>    (merge 584b62c37b bb/unicode-12 later to maint).
>
>  * dumb-http walker has been updated to share more error recovery
>    strategy with the normal codepath.
>
>  * A buglet in configuration parser has been fixed.
>    (merge 19e7fdaa58 nd/include-if-wildmatch later to maint).
>
>  * The documentation for "git read-tree --reset -u" has been updated.
>    (merge b5a0bd694c nd/read-tree-reset-doc later to maint).
>
>  * Code clean-up around a much-less-important-than-it-used-to-be
>    update_server_info() function.
>    (merge b3223761c8 jk/server-info-rabbit-hole later to maint).
>
>  * The message given when "git commit -a <paths>" errors out has been
>    updated.
>    (merge 5a1dbd48bc nd/commit-a-with-paths-msg-update later to maint).
>
>  * "git cherry-pick --options A..B", after giving control back to the
>    user to ask help resolving a conflicted step, did not honor the
>    options it originally received, which has been corrected.
>
>  * Various glitches in "git gc" around reflog handling have been fixed.
>
>  * The code to read from commit-graph file has been cleanup with more
>    careful error checking before using data read from it.
>
>  * Performance fix around "git fetch" that grabs many refs.
>    (merge b764300912 jt/fetch-pack-wanted-refs-optim later to maint).
>
>  * Protocol v2 support in "git fetch-pack" of shallow clones has been
>    corrected.
>
>  * Performance fix around "git blame", especially in a linear history
>    (which is the norm we should optimize for).
>    (merge f892014943 dk/blame-keep-origin-blob later to maint).
>
>  * Performance fix for "rev-list --parents -- pathspec".
>    (merge 8320b1dbe7 jk/revision-rewritten-parents-in-prio-queue later to maint).
>
>  * Updating the display with progress message has been cleaned up to
>    deal better with overlong messages.
>    (merge 545dc345eb sg/overlong-progress-fix later to maint).
>
>  * "git blame -- path" in a non-bare repository starts blaming from
>    the working tree, and the same command in a bare repository errors
>    out because there is no working tree by definition.  The command
>    has been taught to instead start blaming from the commit at HEAD,
>    which is more useful.
>    (merge a544fb08f8 sg/blame-in-bare-start-at-head later to maint).
>
>  * An underallocation in the code to read the untracked cache
>    extension has been corrected.
>    (merge 3a7b45a623 js/untracked-cache-allocfix later to maint).
>
>  * The code is updated to check the result of memory allocation before
>    it is used in more places, by using xmalloc and/or xcalloc calls.
>    (merge 999b951b28 jk/xmalloc later to maint).
>
>  * The GETTEXT_POISON test option has been quite broken ever since it
>    was made runtime-tunable, which has been fixed.
>    (merge f88b9cb603 jc/gettext-test-fix later to maint).
>
>  * Test fix on APFS that is incapable of store paths in Latin-1.
>    (merge 3889149619 js/iso8895-test-on-apfs later to maint).
>
>  * "git submodule foreach <command> --quiet" did not pass the option
>    down correctly, which has been corrected.
>    (merge a282f5a906 nd/submodule-foreach-quiet later to maint).
>
>  * "git send-email" has been taught to use quoted-printable when the
>    payload contains carriage-return.  The use of the mechanism is in
>    line with the design originally added the codepath that chooses QP
>    when the payload has overly long lines.
>    (merge 74d76a1701 bc/send-email-qp-cr later to maint).
>
>  * The recently added feature to add addresses that are on
>    anything-by: trailers in 'git send-email' was found to be way too
>    eager and considered nonsense strings as if they can be legitimate
>    beginning of *-by: trailer.  This has been tightened.
>
>  * Builds with gettext broke on recent macOS w/ Homebrew, which
>    seems to have stopped including from /usr/local/include; this
>    has been corrected.
>    (merge 92a1377a2a js/macos-gettext-build later to maint).
>
>  * Running "git add" on a repository created inside the current
>    repository is an explicit indication that the user wants to add it
>    as a submodule, but when the HEAD of the inner repository is on an
>    unborn branch, it cannot be added as a submodule.  Worse, the files
>    in its working tree can be added as if they are a part of the outer
>    repository, which is not what the user wants.  These problems are
>    being addressed.
>    (merge f937bc2f86 km/empty-repo-is-still-a-repo later to maint).
>
>  * "git cherry-pick" run with the "-x" or the "--signoff" option used
>    to (and more importantly, ought to) clean up the commit log message
>    with the --cleanup=space option by default, but this has been
>    broken since late 2017.  This has been fixed.
>
>  * When given a tag that points at a commit-ish, "git replace --graft"
>    failed to peel the tag before writing a replace ref, which did not
>    make sense because the old graft mechanism the feature wants to
>    mimic only allowed to replace one commit object with another.
>    This has been fixed.
>    (merge ee521ec4cb cc/replace-graft-peel-tags later to maint).
>
>  * Code tightening against a "wrong" object appearing where an object
>    of a different type is expected, instead of blindly assuming that
>    the connection between objects are correctly made.
>    (merge 97dd512af7 tb/unexpected later to maint).
>
>  * An earlier update for MinGW and Cygwin accidentally broke MSVC build,
>    which has been fixed.
>    (merge 22c3634c0f ss/msvc-path-utils-fix later to maint).
>
>  * %(push:track) token used in the --format option to "git
>    for-each-ref" and friends was not showing the right branch, which
>    has been fixed.
>    (merge c646d0934e dr/ref-filter-push-track-fix later to maint).
>
>  * "make check-docs", "git help -a", etc. did not account for cases
>    where a particular build may deliberately omit some subcommands,
>    which has been corrected.
>
>  * The logic to tell if a Git repository has a working tree protects
>    "git branch -D" from removing the branch that is currently checked
>    out by mistake.  The implementation of this logic was broken for
>    repositories with unusual name, which unfortunately is the norm for
>    submodules these days.  This has been fixed.
>    (merge f3534c98e4 jt/submodule-repo-is-with-worktree later to maint).
>
>  * AIX shared the same build issues with other BSDs around fileno(fp),
>    which has been corrected.
>    (merge ee662bf5c6 cc/aix-has-fileno-as-a-macro later to maint).
>
>  * The autoconf generated configure script failed to use the right
>    gettext() implementations from -libintl by ignoring useless stub
>    implementations shipped in some C library, which has been
>    corrected.
>    (merge b71e56a683 vk/autoconf-gettext later to maint).
>
>  * Fix index-pack perf test so that the repeated invocations always
>    run in an empty repository, which emulates the initial clone
>    situation better.
>    (merge 775c71e16d jk/p5302-avoid-collision-check-cost later to maint).
>
>  * A "ls-files" that emulates "find" to enumerate files in the working
>    tree resulted in duplicated Makefile rules that caused the build to
>    issue an unnecessary warning during a trial build after merge
>    conflicts are resolved in working tree *.h files but before the
>    resolved results are added to the index.  This has been corrected.
>
>  * "git cherry-pick" (and "revert" that shares the same runtime engine)
>    that deals with multiple commits got confused when the final step
>    gets stopped with a conflict and the user concluded the sequence
>    with "git commit".  Attempt to fix it by cleaning up the state
>    files used by these commands in such a situation.
>    (merge 4a72486de9 pw/clean-sequencer-state-upon-final-commit later to maint).
>
>  * On a filesystem like HFS+, the names of the refs stored as filesystem
>    entities may become different from what the end-user expects, just
>    like files in the working tree get "renamed".  Work around the
>    mismatch by paying attention to the core.precomposeUnicode
>    configuration.
>    (merge 8e712ef6fc en/unicode-in-refnames later to maint).
>
>  * The code to generate the multi-pack idx file was not prepared to
>    see too many packfiles and ran out of open file descriptor, which
>    has been corrected.
>
>  * To run tests for Git SVN, our scripts for CI used to install the
>    git-svn package (in the hope that it would bring in the right
>    dependencies).  This has been updated to install the more direct
>    dependency, namely, libsvn-perl.
>    (merge db864306cf sg/ci-libsvn-perl later to maint).
>
>  * "git cvsexportcommit" running on msys did not expect cvsnt showed
>    "cvs status" output with CRLF line endings.
>
>  * The fsmonitor interface got out of sync after the in-core index
>    file gets discarded, which has been corrected.
>    (merge 398a3b0899 js/fsmonitor-refresh-after-discarding-index later to maint).
>
>  * "git status" did not know that the "label" instruction in the
>    todo-list "rebase -i -r" uses should not be shown as a hex object
>    name.
>
>  * A prerequisite check in the test suite to see if a working jgit is
>    available was made more robust.
>    (merge abd0f28983 tz/test-lib-check-working-jgit later to maint).
>
>  * The codepath to parse :<path> that obtains the object name for an
>    indexed object has been made more robust.
>
>  * Code cleanup, docfix, build fix, etc.
>    (merge 11f470aee7 jc/test-yes-doc later to maint).
>    (merge 90503a240b js/doc-symref-in-proto-v1 later to maint).
>    (merge 5c326d1252 jk/unused-params later to maint).
>    (merge 68cabbfda3 dl/doc-submodule-wo-subcommand later to maint).
>    (merge 9903623761 ab/receive-pack-use-after-free-fix later to maint).
>    (merge 1ede45e44b en/merge-options-doc later to maint).
>    (merge 3e14dd2c8e rd/doc-hook-used-in-sample later to maint).
>    (merge c271dc28fd nd/no-more-check-racy later to maint).
>    (merge e6e15194a8 yb/utf-16le-bom-spellfix later to maint).
>    (merge bb101aaf0c rd/attr.c-comment-typofix later to maint).
>    (merge 716a5af812 rd/gc-prune-doc-fix later to maint).
>    (merge 50b206371d js/untravis-windows later to maint).
>    (merge dbf47215e3 js/rebase-recreate-merge later to maint).
>    (merge 56cb2d30f8 dl/reset-doc-no-wrt-abbrev later to maint).
>    (merge 64eca306a2 ja/dir-rename-doc-markup-fix later to maint).
>    (merge af91b0230c dl/ignore-docs later to maint).
>    (merge 59a06e947b ra/t3600-test-path-funcs later to maint).
>    (merge e041d0781b ar/t4150-remove-cruft later to maint).
>    (merge 8d75a1d183 ma/asciidoctor-fixes-more later to maint).
>    (merge 74cc547b0f mh/pack-protocol-doc-fix later to maint).
>    (merge ed31851fa6 ab/doc-misc-typofixes later to maint).
>    (merge a7256debd4 nd/checkout-m-doc-update later to maint).
>    (merge 3a9e1ad78d jt/t5551-protocol-v2-does-not-have-half-auth later to maint).
>    (merge 0b918b75af sg/t5318-cleanup later to maint).
>    (merge 68ed71b53c cb/doco-mono later to maint).
>    (merge a34dca2451 nd/interpret-trailers-docfix later to maint).
>    (merge cf7b857a77 en/fast-import-parsing-fix later to maint).
>    (merge fe61ccbc35 po/rerere-doc-fmt later to maint).
>    (merge ffea0248bf po/describe-not-necessarily-7 later to maint).
>    (merge 7cb7283adb tg/ls-files-debug-format-fix later to maint).
>    (merge f64a21bd82 tz/doc-apostrophe-no-longer-needed later to maint).
>    (merge dbe7b41019 js/t3301-unbreak-notes-test later to maint).
>    (merge d8083e4180 km/t3000-retitle later to maint).
>    (merge 9e4cbccbd7 tz/git-svn-doc-markup-fix later to maint).
>    (merge da9ca955a7 jk/ls-files-doc-markup-fix later to maint).
>    (merge 6804ba3a58 cw/diff-highlight later to maint).
>    (merge 1a8787144d nd/submodule-helper-incomplete-line-fix later to maint).
>    (merge d9ef573837 jk/apache-lsan later to maint).
>    (merge c871fbee2b js/t6500-use-windows-pid-on-mingw later to maint).
>    (merge ce4c7bfc90 bl/t4253-exit-code-from-format-patch later to maint).
>    (merge 397a46db78 js/t5580-unc-alternate-test later to maint).
>    (merge d4907720a2 cm/notes-comment-fix later to maint).
>    (merge 9dde06de13 cb/http-push-null-in-message-fix later to maint).
>    (merge 4c785c0edc js/rebase-config-bitfix later to maint).
>    (merge 8e9fe16c87 es/doc-gitsubmodules-markup later to maint).
>
> ----------------------------------------------------------------
>
> Changes since v2.21.0 are as follows:
>
> Alban Gruin (18):
>       sequencer: changes in parse_insn_buffer()
>       sequencer: make the todo_list structure public
>       sequencer: remove the 'arg' field from todo_item
>       sequencer: refactor transform_todos() to work on a todo_list
>       sequencer: introduce todo_list_write_to_file()
>       sequencer: refactor check_todo_list() to work on a todo_list
>       sequencer: refactor sequencer_add_exec_commands() to work on a todo_list
>       sequencer: refactor rearrange_squash() to work on a todo_list
>       sequencer: make sequencer_make_script() write its script to a strbuf
>       sequencer: change complete_action() to use the refactored functions
>       rebase--interactive: move sequencer_add_exec_commands()
>       rebase--interactive: move rearrange_squash_in_todo_file()
>       sequencer: refactor skip_unnecessary_picks() to work on a todo_list
>       rebase-interactive: use todo_list_write_to_file() in edit_todo_list()
>       rebase-interactive: append_todo_help() changes
>       rebase-interactive: rewrite edit_todo_list() to handle the initial edit
>       sequencer: use edit_todo_list() in complete_action()
>       rebase--interactive: move transform_todo_file()
>
> Alexander Blesius (1):
>       doc: fix typos in man pages
>
> Alexander Shopov (1):
>       gitk: Update Bulgarian translation (317t)
>
> Anders Waldenborg (7):
>       doc: group pretty-format.txt placeholders descriptions
>       pretty: allow %(trailers) options with explicit value
>       pretty: single return path in %(trailers) handling
>       pretty: allow showing specific trailers
>       pretty: add support for "valueonly" option in %(trailers)
>       strbuf: separate callback for strbuf_expand:ing literals
>       pretty: add support for separator option in %(trailers)
>
> Andreas Heiduk (1):
>       revisions.txt: remove ambibuity between <rev>:<path> and :<path>
>
> Andrei Rybak (1):
>       t4150: remove unused variable
>
> Baruch Siach (1):
>       send-email: don't cc *-by lines with '-' prefix
>
> Beat Bolli (1):
>       unicode: update the width tables to Unicode 12
>
> Ben Peart (1):
>       read-cache: add post-index-change hook
>
> Boxuan Li (1):
>       t4253-am-keep-cr-dos: avoid using pipes
>
> Brandon Richardson (1):
>       commit-tree: utilize parse-options api
>
> Carlo Marcelo Arenas Belón (1):
>       http-push: prevent format overflow warning with gcc >= 9
>
> Chris Mayo (1):
>       notes: correct documentation of format_display_notes()
>
> Chris. Webster (1):
>       diff-highlight: use correct /dev/null for UNIX and Windows
>
> Christian Couder (5):
>       t6050: use test_line_count instead of wc -l
>       t6050: redirect expected error output to a file
>       replace: peel tag when passing a tag as parent to --graft
>       replace: peel tag when passing a tag first to --graft
>       list-objects-filter: disable 'sparse:path' filters
>
> Clément Chigot (2):
>       Makefile: use fileno macro work around on AIX
>       git-compat-util: work around for access(X_OK) under root
>
> Corentin BOMPARD (2):
>       doc/CodingGuidelines: URLs and paths as monospace
>       doc: format pathnames and URLs as monospace.
>
> Damien Robert (1):
>       ref-filter: use correct branch for %(push:track)
>
> Daniels Umanovskis (1):
>       branch: introduce --show-current display option
>
> David Aguilar (2):
>       mergetools: add support for smerge (Sublime Merge)
>       contrib/completion: add smerge to the mergetool completion candidates
>
> David Kastrup (1):
>       blame.c: don't drop origin blobs as eagerly
>
> Denton Liu (38):
>       completion: complete git submodule absorbgitdirs
>       git-submodule.txt: "--branch <branch>" option defaults to 'master'
>       submodule--helper: teach config subcommand --unset
>       submodule: document default behavior
>       git-reset.txt: clarify documentation
>       git-clean.txt: clarify ignore pattern files
>       docs: move core.excludesFile from git-add to gitignore
>       contrib/subtree: ensure only one rev is provided
>       midx.c: convert FLEX_ALLOC_MEM to FLEX_ALLOC_STR
>       cocci: FLEX_ALLOC_MEM to FLEX_ALLOC_STR
>       tag: fix formatting
>       submodule: teach set-branch subcommand
>       tag: advise on nested tags
>       t7600: clean up style
>       t3507: clean up style
>       t7604: clean up style
>       t7502: clean up style
>       commit: extract cleanup_mode functions to sequencer
>       parse-options.h: extract common --cleanup option
>       merge: cleanup messages like commit
>       merge: add scissors line on merge conflict
>       cherry-pick/revert: add scissors line on merge conflict
>       t7610: unsuppress output
>       t7610: add mergetool --gui tests
>       *.[ch]: remove extern from function declarations using spatch
>       *.[ch]: remove extern from function declarations using sed
>       *.[ch]: manually align parameter lists
>       t2018: cleanup in current test
>       branch: make create_branch accept a merge base rev
>       revisions.txt: change "rev" to "<rev>"
>       revisions.txt: mark optional rev arguments with []
>       revisions.txt: mention <rev>~ form
>       tag: fix typo in nested tagging hint
>       mergetool: use get_merge_tool function
>       mergetool--lib: create gui_mode function
>       mergetool: fallback to tool when guitool unavailable
>       difftool: make --gui, --tool and --extcmd mutually exclusive
>       difftool: fallback on merge.guitool
>
> Derrick Stolee (4):
>       trace2:data: pack-objects: add trace2 regions
>       midx: pass a repository pointer
>       midx: add packs to packed_git linked list
>       trace2: add variable description to git.txt
>
> Dustin Spicuzza (1):
>       cvsexportcommit: force crlf translation
>
> Elijah Newren (23):
>       log,diff-tree: add --combined-all-paths option
>       merge-options.txt: correct wording of --no-commit option
>       t9300: demonstrate bug with get-mark and empty orphan commits
>       git-fast-import.txt: fix wording about where ls command can appear
>       fast-import: check most prominent commands first
>       fast-import: only allow cat-blob requests where it makes sense
>       fast-import: fix erroneous handling of get-mark with empty orphan commits
>       Use 'unsigned short' for mode, like diff_filespec does
>       merge-recursive: rename merge_options argument from 'o' to 'opt'
>       merge-recursive: rename diff_filespec 'one' to 'o'
>       merge-recursive: rename locals 'o' and 'a' to 'obuf' and 'abuf'
>       merge-recursive: use 'ci' for rename_conflict_info variable name
>       merge-recursive: move some struct declarations together
>       merge-recursive: shrink rename_conflict_info
>       merge-recursive: remove ren[12]_other fields from rename_conflict_info
>       merge-recursive: track branch where rename occurred in rename struct
>       merge-recursive: cleanup handle_rename_* function signatures
>       merge-recursive: switch from (oid,mode) pairs to a diff_filespec
>       t6043: fix copied test description to match its purpose
>       merge-recursive: track information associated with directory renames
>       merge-recursive: give callers of handle_content_merge() access to contents
>       merge-recursive: switch directory rename detection default
>       Honor core.precomposeUnicode in more places
>
> Emily Shaffer (1):
>       gitsubmodules: align html and nroff lists
>
> Eric Sunshine (1):
>       check-non-portable-shell: support Perl versions older than 5.10
>
> Eric Wong (1):
>       repack: enable bitmaps by default on bare repos
>
> Jean-Noël Avila (3):
>       l10n: fr.po remove obsolete entries
>       Doc: fix misleading asciidoc formating
>       diff: fix mistake in translatable strings
>
> Jeff Hostetler (30):
>       trace2: Documentation/technical/api-trace2.txt
>       trace2: create new combined trace facility
>       trace2: collect Windows-specific process information
>       trace2:data: add trace2 regions to wt-status
>       trace2:data: add editor/pager child classification
>       trace2:data: add trace2 sub-process classification
>       trace2:data: add trace2 transport child classification
>       trace2:data: add subverb to checkout command
>       trace2:data: add subverb to reset command
>       trace2:data: add trace2 hook classification
>       trace2:data: add subverb for rebase
>       trace2:data: add trace2 instrumentation to index read/write
>       trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh
>       trace2: add for_each macros to clang-format
>       progress: add sparse mode to force 100% complete message
>       trace2:data: add trace2 data to midx
>       midx: add progress indicators in multi-pack-index verify
>       midx: during verify group objects by packfile to speed verification
>       config: initialize opts structure in repo_read_config()
>       trace2: refactor setting process starting time
>       trace2: add absolute elapsed time to start event
>       trace2: find exec-dir before trace2 initialization
>       config: add read_very_early_config()
>       trace2: use system/global config for default trace2 settings
>       trace2: report peak memory usage of the process
>       trace2: clarify UTC datetime formatting
>       trace2: make SIDs more unique
>       trace2: update docs to describe system/global config settings
>       trace2: fixup access problem on /etc/gitconfig in read_very_early_config
>       trace2: fix tracing when NO_PTHREADS is defined
>
> Jeff King (92):
>       prune: lazily perform reachability traversal
>       prune: use bitmaps for reachability traversal
>       prune: check SEEN flag for reachability
>       t5304: rename "sha1" variables to "oid"
>       diff: drop options parameter from diffcore_fix_diff_index()
>       diff: drop unused color reset parameters
>       diff: drop unused emit data parameter from sane_truncate_line()
>       diff: drop complete_rewrite parameter from run_external_diff()
>       merge-recursive: drop several unused parameters
>       pack-objects: drop unused parameter from oe_map_new_pack()
>       files-backend: drop refs parameter from split_symref_update()
>       ref-filter: drop unused buf/sz pairs
>       ref-filter: drop unused "obj" parameters
>       ref-filter: drop unused "sz" parameters
>       diff: reuse diff setup for --no-index case
>       bisect: use string arguments to feed internal diff-tree
>       bisect: fix internal diff-tree config loading
>       bisect: make diff-tree output prettier
>       fetch: avoid calling write_or_die()
>       fetch: ignore SIGPIPE during network operation
>       rev-list: allow cached objects in existence check
>       doc/fsck: clarify --connectivity-only behavior
>       fsck: always compute USED flags for unreachable objects
>       compat/bswap: add include header guards
>       config: document --type=color output is a complete line
>       line-log: suppress diff output with "-s"
>       line-log: detect unsupported formats
>       point pull requesters to GitGitGadget
>       Makefile: fix unaligned loads in sha1dc with UBSan
>       t5310: correctly remove bitmaps for jgit test
>       pack-objects: default to writing bitmap hash-cache
>       perf-lib.sh: rely on test-lib.sh for --tee handling
>       revision: drop some unused "revs" parameters
>       log: drop unused rev_info from early output
>       log: drop unused "len" from show_tagger()
>       update-index: drop unused prefix_length parameter from do_reupdate()
>       test-date: drop unused "now" parameter from parse_dates()
>       unpack-trees: drop name_entry from traverse_by_cache_tree()
>       unpack-trees: drop unused error_type parameters
>       report_path_error(): drop unused prefix parameter
>       fetch_pack(): drop unused parameters
>       parse-options: drop unused ctx parameter from show_gitcomp()
>       pretty: drop unused "type" parameter in needs_rfc2047_encoding()
>       pretty: drop unused strbuf from parse_padding_placeholder()
>       git: read local config in --list-cmds
>       completion: fix multiple command removals
>       parse_opt_ref_sorting: always use with NONEG flag
>       refs/files-backend: handle packed transaction prepare failure
>       refs/files-backend: don't look at an aborted transaction
>       http: factor out curl result code normalization
>       http: normalize curl results for dumb loose and alternates fetches
>       http: use normalize_curl_result() instead of manual conversion
>       revision: use a prio_queue to hold rewritten parents
>       get_commit_tree(): return NULL for broken tree
>       rev-list: let traversal die when --missing is not in use
>       rev-list: detect broken root trees
>       test-prio-queue: use xmalloc
>       xdiff: use git-compat-util
>       xdiff: use xmalloc/xrealloc
>       progress: use xmalloc/xcalloc
>       t5516: drop ok=sigpipe from unreachable-want tests
>       t5530: check protocol response for "not our ref"
>       upload-pack: send ERR packet for non-tip objects
>       pkt-line: prepare buffer before handling ERR packets
>       fetch: use free_refs()
>       remote.c: make singular free_ref() public
>       fetch: do not consider peeled tags as advertised tips
>       packfile.h: drop extern from function declarations
>       pack-revindex: open index if necessary
>       t5319: fix bogus cat-file argument
>       t5319: drop useless --buffer from cat-file
>       midx: check both pack and index names for containment
>       packfile: fix pack basename computation
>       http: simplify parsing of remote objects/info/packs
>       server-info: fix blind pointer arithmetic
>       server-info: simplify cleanup in parse_pack_def()
>       server-info: use strbuf to read old info/packs file
>       server-info: drop nr_alloc struct member
>       server-info: drop objdirlen pointer arithmetic
>       update_info_refs(): drop unused force parameter
>       t5304: add a test for pruning with bitmaps
>       untracked-cache: be defensive about missing NULs in index
>       untracked-cache: simplify parsing by dropping "next"
>       untracked-cache: simplify parsing by dropping "len"
>       p5302: create the repo in each index-pack test
>       doc/ls-files: put nested list for "-t" option into block
>       t/perf: depend on perl JSON only when using --codespeed
>       t/perf: add perf script for partial clones
>       coccicheck: optionally batch spatch invocations
>       t/lib-httpd: pass LSAN_OPTIONS through apache
>       coccicheck: make batch size of 0 mean "unlimited"
>       get_oid: handle NULL repo->index
>
> Jiang Xin (5):
>       t5323: test cases for git-pack-redundant
>       pack-redundant: delay creation of unique_objects
>       pack-redundant: rename pack_list.all_objects
>       pack-redundant: consistent sort method
>       i18n: fix typos found during l10n for git 2.22.0
>
> Joel Teichroeb (5):
>       stash: improve option parsing test coverage
>       stash: convert apply to builtin
>       stash: convert drop and clear to builtin
>       stash: convert branch to builtin
>       stash: convert pop to builtin
>
> Joey Hess (1):
>       convert: avoid malloc of original file size
>
> Johannes Schindelin (67):
>       ident: add the ability to provide a "fallback identity"
>       travis: remove the hack to build the Windows job on Azure Pipelines
>       tests: let --stress-limit=<N> imply --stress
>       tests: introduce --stress-jobs=<N>
>       built-in rebase: no need to check out `onto` twice
>       built-in rebase: use the correct reflog when switching branches
>       built-in rebase: demonstrate that ORIG_HEAD is not set correctly
>       built-in rebase: set ORIG_HEAD just once, before the rebase
>       Makefile: use `git ls-files` to list header files, if possible
>       curl: anonymize URLs in error messages and warnings
>       remote-curl: mark all error messages for translation
>       stash: add back the original, scripted `git stash`
>       stash: optionally use the scripted version again
>       tests: add a special setup where stash.useBuiltin is off
>       legacy stash: fix "rudimentary backport of -q"
>       built-in stash: handle :(glob) pathspecs again
>       mingw: drop MakeMaker reference
>       mingw: allow building with an MSYS2 runtime v3.x
>       rebase: deprecate --preserve-merges
>       mingw: respect core.hidedotfiles = false in git-init again
>       test-lib: introduce 'test_atexit'
>       git-daemon: use 'test_atexit` to stop 'git-daemon'
>       git p4 test: use 'test_atexit' to kill p4d and the watchdog process
>       rebase -i: demonstrate obscure loose object cache bug
>       sequencer: improve error message when an OID could not be parsed
>       sequencer: move stale comment into correct location
>       get_oid(): when an object was not found, try harder
>       difftool: remove obsolete (and misleading) comment
>       parse-options: make OPT_ARGUMENT() more useful
>       difftool: allow running outside Git worktrees with --no-index
>       docs: move gitremote-helpers into section 7
>       docs: do not document the `git remote-testgit` command
>       check-docs: really look at the documented commands again
>       check-docs: do not expect guide pages to correspond to commands
>       check-docs: fix for setups where executables have an extension
>       tests (rebase): spell out the `--keep-empty` option
>       tests (rebase): spell out the `--force-rebase` option
>       t7810: do not abbreviate `--no-exclude-standard` nor `--invert-match`
>       t5531: avoid using an abbreviated option
>       tests (push): do not abbreviate the `--follow-tags` option
>       tests (status): spell out the `--find-renames` option in full
>       tests (pack-objects): use the full, unabbreviated `--revs` option
>       t3301: fix false negative
>       untracked cache: fix off-by-one
>       tests: disallow the use of abbreviated options (by default)
>       t9822: skip tests if file names cannot be ISO-8859-1 encoded
>       macOS: make sure that gettext is found
>       remote-testgit: move it into the support directory for t5801
>       Makefile: drop the NO_INSTALL variable
>       help -a: do not list commands that are excluded from the build
>       check-docs: allow command-list.txt to contain excluded commands
>       docs: exclude documentation for commands that have been excluded
>       check-docs: do not bother checking for legacy scripts' documentation
>       test-tool: handle the `-C <directory>` option just like `git`
>       Turn `git serve` into a test helper
>       t5580: verify that alternates can be UNC paths
>       fsmonitor: demonstrate that it is not refreshed after discard_index()
>       fsmonitor: force a refresh after the index was discarded
>       t6500(mingw): use the Windows PID of the shell
>       difftool --no-index: error out on --dir-diff (and don't crash)
>       status: fix display of rebase -ir's `label` command
>       parse-options: adjust `parse_opt_unknown_cb()`s declared return type
>       stash: document stash.useBuiltin
>       rebase: replace incorrect logical negation by correct bitwise one
>       tests: mark a couple more test cases as requiring `rebase -p`
>       docs: say that `--rebase=preserve` is deprecated
>       rebase docs: recommend `-r` over `-p`
>
> Jonathan Tan (25):
>       remote-curl: reduce scope of rpc_state.argv
>       remote-curl: reduce scope of rpc_state.stdin_preamble
>       remote-curl: reduce scope of rpc_state.result
>       remote-curl: refactor reading into rpc_state's buf
>       remote-curl: use post_rpc() for protocol v2 also
>       tests: define GIT_TEST_PROTOCOL_VERSION
>       t5601: check ssh command only with protocol v0
>       tests: always test fetch of unreachable with v0
>       t5503: fix overspecification of trace expectation
>       t5512: compensate for v0 only sending HEAD symrefs
>       t5700: only run with protocol version 1
>       tests: fix protocol version for overspecifications
>       t5552: compensate for v2 filtering ref adv.
>       submodule: explain first attempt failure clearly
>       t5551: mark half-auth no-op fetch test as v0-only
>       fetch-pack: call prepare_shallow_info only if v0
>       fetch-pack: respect --no-update-shallow in v2
>       sha1-file: support OBJECT_INFO_FOR_PREFETCH
>       fetch-pack: binary search when storing wanted-refs
>       diff: batch fetching of missing blobs
>       pack-objects: write objects packed to trace2
>       transport: die if server options are unsupported
>       clone: send server options when using protocol v2
>       worktree: update is_bare heuristics
>       fetch-pack: send server options after command
>
> Jordi Mas (1):
>       l10n: Fixes to Catalan translation
>
> Josh Steadmon (5):
>       protocol-capabilities.txt: document symref
>       trace2: write to directory targets
>       clone: do faster object check for partial clones
>       trace2: fix incorrect function pointer check
>       commit-graph: fix memory leak
>
> Junio C Hamano (18):
>       test: caution on our version of 'yes'
>       builtin/log: downcase the beginning of error messages
>       format-patch: notice failure to open cover letter for writing
>       Start 2.22 cycle
>       The second batch
>       The third batch
>       The fourth batch
>       gettext tests: export the restored GIT_TEST_GETTEXT_POISON
>       The fifth batch
>       The sixth batch
>       Makefile: dedup list of files obtained from ls-files
>       The seventh batch
>       The eighth batch
>       Git 2.22-rc0
>       pkt-line: drop 'const'-ness of a param to set_packet_header()
>       Git 2.22-rc1
>       Git 2.22-rc2
>       Git 2.22-rc3
>
> Kyle Meyer (5):
>       rebase docs: fix "gitlink" typo
>       submodule: refuse to add repository with no commits
>       dir: do not traverse repositories with no commits
>       add: error appropriately on repository with no commits
>       t3000 (ls-files -o): widen description to reflect current tests
>
> Martin Ågren (14):
>       setup: free old value before setting `work_tree`
>       setup: fix memory leaks with `struct repository_format`
>       config/diff.txt: drop spurious backtick
>       config/fsck.txt: avoid starting line with dash
>       git.txt: remove empty line before list continuation
>       git-svn.txt: drop escaping '\' that ends up being rendered
>       Documentation: turn middle-of-line tabs into spaces
>       Documentation/Makefile: add missing xsl dependencies for manpages
>       Documentation/Makefile: add missing dependency on asciidoctor-extensions
>       asciidoctor-extensions: fix spurious space after linkgit
>       Doc: auto-detect changed build flags
>       doc-diff: let `render_tree()` take an explicit directory name
>       doc-diff: support diffing from/to AsciiDoc(tor)
>       doc-diff: add `--cut-header-footer`
>
> Matthew Kraai (1):
>       t3903: add test for --intent-to-add file
>
> Michal Suchanek (1):
>       worktree: fix worktree add race
>
> Mike Hommey (2):
>       fix pack protocol example client/server communication
>       Make fread/fwrite-like functions in http.c more like fread/fwrite.
>
> Nguyễn Thái Ngọc Duy (129):
>       parse-options.h: remove extern on function prototypes
>       parse-options: add one-shot mode
>       parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
>       parse-options: add OPT_BITOP()
>       parse-options: stop abusing 'callback' for lowlevel callbacks
>       parse-options: avoid magic return codes
>       parse-options: allow ll_callback with OPTION_CALLBACK
>       diff.h: keep forward struct declarations sorted
>       diff.h: avoid bit fields in struct diff_flags
>       diff.c: prepare to use parse_options() for parsing
>       diff.c: convert -u|-p|--patch
>       diff.c: convert -U|--unified
>       diff.c: convert -W|--[no-]function-context
>       diff.c: convert --raw
>       read-cache.c: fix writing "link" index ext with null base oid
>       completion: add more parameter value completion
>       diff-parseopt: convert --patch-with-raw
>       diff-parseopt: convert --numstat and --shortstat
>       diff-parseopt: convert --dirstat and friends
>       diff-parseopt: convert --check
>       diff-parseopt: convert --summary
>       diff-parseopt: convert --patch-with-stat
>       diff-parseopt: convert --name-only
>       diff-parseopt: convert --name-status
>       diff-parseopt: convert -s|--no-patch
>       diff-parseopt: convert --stat*
>       diff-parseopt: convert --[no-]compact-summary
>       diff-parseopt: convert --output-*
>       diff-parseopt: convert -B|--break-rewrites
>       diff-parseopt: convert -M|--find-renames
>       diff-parseopt: convert -D|--irreversible-delete
>       diff-parseopt: convert -C|--find-copies
>       diff-parseopt: convert --find-copies-harder
>       diff-parseopt: convert --no-renames|--[no--rename-empty
>       diff-parseopt: convert --relative
>       diff-parseopt: convert --[no-]minimal
>       diff-parseopt: convert --ignore-some-changes
>       Delete check-racy.c
>       diff-parseopt: convert --[no-]indent-heuristic
>       diff-parseopt: convert --patience
>       diff-parseopt: convert --histogram
>       diff-parseopt: convert --diff-algorithm
>       diff-parseopt: convert --anchored
>       diff-parseopt: convert --binary
>       diff-parseopt: convert --full-index
>       diff-parseopt: convert -a|--text
>       diff-parseopt: convert -R
>       diff-parseopt: convert --[no-]follow
>       diff-parseopt: convert --[no-]color
>       diff-parseopt: convert --word-diff
>       diff-parseopt: convert --word-diff-regex
>       diff-parseopt: convert --color-words
>       diff-parseopt: convert --exit-code
>       diff-parseopt: convert --quiet
>       diff-parseopt: convert --ext-diff
>       diff-parseopt: convert --textconv
>       diff-parseopt: convert --ignore-submodules
>       diff-parseopt: convert --submodule
>       files-backend.c: factor out per-worktree code in loose_fill_ref_dir()
>       files-backend.c: reduce duplication in add_per_worktree_entries_to_dir()
>       Make sure refs/rewritten/ is per-worktree
>       unpack-trees: fix oneway_merge accidentally carry over stage index
>       checkout.txt: note about losing staged changes with --merge
>       commit: improve error message in "-a <paths>" case
>       unpack-trees: keep gently check inside add_rejected_path
>       unpack-trees: rename "gently" flag to "quiet"
>       read-tree: add --quiet
>       checkout: prevent losing staged changes with --merge
>       diff-parseopt: convert --ws-error-highlight
>       diff-parseopt: convert --ita-[in]visible-in-index
>       diff-parseopt: convert -z
>       diff-parseopt: convert -l
>       diff-parseopt: convert -S|-G
>       diff-parseopt: convert --pickaxe-all|--pickaxe-regex
>       diff-parseopt: convert -O
>       diff-parseopt: convert --find-object
>       diff-parseopt: convert --diff-filter
>       diff-parseopt: convert --[no-]abbrev
>       diff-parseopt: convert --[src|dst]-prefix
>       diff-parseopt: convert --line-prefix
>       diff-parseopt: convert --no-prefix
>       diff-parseopt: convert --inter-hunk-context
>       diff-parseopt: convert --[no-]color-moved
>       diff-parseopt: convert --color-moved-ws
>       diff.c: allow --no-color-moved-ws
>       range-diff: use parse_options() instead of diff_opt_parse()
>       diff --no-index: use parse_options() instead of diff_opt_parse()
>       am: avoid diff_opt_parse()
>       config: correct '**' matching in includeIf patterns
>       interpret-trailers.txt: start the desc line with a capital letter
>       read-tree.txt: clarify --reset and worktree changes
>       packfile.c: add repo_approximate_object_count()
>       refs.c: add refs_ref_exists()
>       refs.c: add refs_shorten_unambiguous_ref()
>       refs.c: remove the_repo from substitute_branch_name()
>       refs.c: remove the_repo from expand_ref()
>       refs.c: add repo_dwim_ref()
>       refs.c: add repo_dwim_log()
>       refs.c: remove the_repo from read_ref_at()
>       submodule foreach: fix "<command> --quiet" not being respected
>       commit.cocci: refactor code, avoid double rewrite
>       commit.c: add repo_get_commit_tree()
>       sha1-name.c: remove the_repo from sort_ambiguous()
>       sha1-name.c: remove the_repo from find_abbrev_len_packed()
>       sha1-name.c: add repo_find_unique_abbrev_r()
>       sha1-name.c: store and use repo in struct disambiguate_state
>       sha1-name.c: add repo_for_each_abbrev()
>       sha1-name.c: remove the_repo from get_short_oid()
>       sha1-name.c: remove the_repo from interpret_nth_prior_checkout()
>       sha1-name.c: remove the_repo from interpret_branch_mark()
>       sha1-name.c: add repo_interpret_branch_name()
>       sha1-name.c: remove the_repo from get_oid_oneline()
>       sha1-name.c: remove the_repo from get_describe_name()
>       sha1-name.c: remove the_repo from get_oid_basic()
>       sha1-name.c: remove the_repo from get_oid_1()
>       sha1-name.c: remove the_repo from handle_one_ref()
>       sha1-name.c: remove the_repo from diagnose_invalid_index_path()
>       sha1-name.c: remove the_repo from resolve_relative_path()
>       sha1-name.c: remove the_repo from get_oid_with_context_1()
>       sha1-name.c: add repo_get_oid()
>       submodule-config.c: use repo_get_oid for reading .gitmodules
>       sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name
>       sha1-name.c: remove the_repo from other get_oid_*
>       sha1-name.c: remove the_repo from get_oid_mb()
>       parse-options: don't emit "ambiguous option" for aliases
>       submodule--helper: add a missing \n
>       diff-parseopt: correct variable types that are used by parseopt
>       diff-parseopt: restore -U (no argument) behavior
>       parse-options: check empty value in OPT_INTEGER and OPT_ABBREV
>
> Paul-Sebastian Ungureanu (17):
>       sha1-name.c: add `get_oidf()` which acts like `get_oid()`
>       strbuf.c: add `strbuf_join_argv()`
>       strbuf.c: add `strbuf_insertf()` and `strbuf_vinsertf()`
>       t3903: modernize style
>       stash: rename test cases to be more descriptive
>       stash: add tests for `git stash show` config
>       stash: mention options in `show` synopsis
>       stash: convert list to builtin
>       stash: convert show to builtin
>       stash: convert store to builtin
>       stash: convert create to builtin
>       stash: convert push to builtin
>       stash: make push -q quiet
>       stash: convert save to builtin
>       stash: optimize `get_untracked_files()` and `check_changes()`
>       stash: replace all `write-tree` child processes with API calls
>       stash: convert `stash--helper.c` into `stash.c`
>
> Philip Oakley (2):
>       rerere doc: quote `rerere.enabled`
>       describe doc: remove '7-char' abbreviation reference
>
> Phillip Wood (21):
>       am/cherry-pick/rebase/revert: document --rerere-autoupdate
>       merge: tweak --rerere-autoupdate documentation
>       sequencer: break some long lines
>       cherry-pick: demonstrate option amnesia
>       cherry-pick --continue: remember options
>       commit/reset: try to clean up sequencer state
>       fix cherry-pick/revert status after commit
>       sequencer: fix cleanup with --signoff and -x
>       sequencer.c: save and restore cleanup mode
>       sequencer: always discard index after checkout
>       rebase: don't translate trace strings
>       rebase: rename write_basic_state()
>       rebase: use OPT_RERERE_AUTOUPDATE()
>       rebase -i: combine rebase--interactive.c with rebase.c
>       rebase -i: remove duplication
>       rebase -i: use struct commit when parsing options
>       rebase -i: use struct object_id for squash_onto
>       rebase -i: use struct rebase_options to parse args
>       rebase -i: use struct rebase_options in do_interactive_rebase()
>       rebase: use a common action enum
>       rebase -i: run without forking rebase--interactive
>
> Ramsay Jones (2):
>       prune-packed: check for too many arguments
>       Makefile: fix 'hdr-check' when GCRYPT not installed
>
> René Scharfe (1):
>       get-tar-commit-id: parse comment record
>
> Robert P. J. Day (3):
>       mention use of "hooks.allownonascii" in "man githooks"
>       docs/git-gc: fix typo "--prune=all" to "--prune=now"
>       attr.c: ".gitattribute" -> ".gitattributes" (comments)
>
> Rohit Ashiwal (3):
>       test functions: add function `test_file_not_empty`
>       t3600: modernize style
>       t3600: use helpers to replace test -d/f/e/s <path>
>
> SZEDER Gábor (27):
>       test-lib: fix interrupt handling with 'dash' and '--verbose-log -x'
>       t/lib-git-daemon: make sure to kill the 'git-daemon' process
>       tests: use 'test_atexit' to stop httpd
>       t0301-credential-cache: use 'test_atexit' to stop the credentials helper
>       git p4 test: clean up the p4d cleanup functions
>       git p4 test: simplify timeout handling
>       git p4 test: disable '-x' tracing in the p4d watchdog loop
>       t9811-git-p4-label-import: fix pipeline negation
>       t5318-commit-graph: remove unused variable
>       Documentation/git-diff-tree.txt: fix formatting
>       Documentation/technical/api-config.txt: fix formatting
>       Documentation/technical/protocol-v2.txt: fix formatting
>       ci: install Asciidoctor in 'ci/install-dependencies.sh'
>       index-pack: show progress while checking objects
>       ci: stick with Asciidoctor v1.5.8 for now
>       ci: fix AsciiDoc/Asciidoctor stderr check in the documentation build job
>       progress: make display_progress() return void
>       progress: assemble percentage and counters in a strbuf before printing
>       blame: default to HEAD in a bare repo when no start commit is given
>       builtin rebase: use FREE_AND_NULL
>       builtin rebase: use oideq()
>       progress: clear previous progress update dynamically
>       progress: break too long progress bar lines
>       ci: install 'libsvn-perl' instead of 'git-svn'
>       trace2: rename environment variables to GIT_TRACE2*
>       trace2: document the supported values of GIT_TRACE2* env variables
>       progress: avoid empty line when breaking the progress line
>
> Sun Chao (2):
>       pack-redundant: delete redundant code
>       pack-redundant: new algorithm to find min packs
>
> Sven Strickroth (1):
>       MSVC: include compat/win32/path-utils.h for MSVC, too, for real_path()
>
> Tanushree Tumane (1):
>       mingw: remove obsolete IPv6-related code
>
> Taylor Blau (4):
>       t: move 'hex2oct' into test-lib-functions.sh
>       t: introduce tests for unexpected object types
>       list-objects.c: handle unexpected non-blob entries
>       list-objects.c: handle unexpected non-tree entries
>
> Thomas Gummerer (15):
>       move worktree tests to t24*
>       entry: factor out unlink_entry function
>       entry: support CE_WT_REMOVE flag in checkout_entry
>       read-cache: add invalidate parameter to remove_marked_cache_entries
>       checkout: clarify comment
>       checkout: factor out mark_cache_entry_for_checkout function
>       checkout: introduce --{,no-}overlay option
>       checkout: introduce checkout.overlayMode config
>       revert "checkout: introduce checkout.overlayMode config"
>       ident: don't require calling prepare_fallback_ident first
>       stash: drop unused parameter
>       stash: pass pathspec as pointer
>       glossary: add definition for overlay
>       stash: setup default diff output format if necessary
>       ls-files: use correct format string
>
> Todd Zullinger (9):
>       t4038-diff-combined: quote paths with whitespace
>       t9902: test multiple removals via completion.commands
>       completion: use __git when calling --list-cmds
>       Documentation/rev-list-options: wrap --date=<format> block with "--"
>       Documentation/git-status: fix titles in porcelain v2 section
>       Documentation/git-svn: improve asciidoctor compatibility
>       Documentation/git-show-branch: avoid literal {apostrophe}
>       test-lib: try harder to ensure a working jgit
>       RelNotes: minor typo fixes in 2.22.0 draft
>
> Torsten Bögershausen (1):
>       trace2: NULL is not allowed for va_list
>
> Trần Ngọc Quân (1):
>       l10n: Updated Vietnamese translation for v2.21 rd2
>
> Vadim Kochan (1):
>       autoconf: #include <libintl.h> when checking for gettext()
>
> William Hubbs (1):
>       config: allow giving separate author and committer idents
>
> Yash Bhatambare (1):
>       gitattributes.txt: fix typo
>
> brian m. carlson (35):
>       t/lib-submodule-update: use appropriate length constant
>       khash: move oid hash table definition
>       pack-bitmap: make bitmap header handling hash agnostic
>       pack-bitmap: convert struct stored_bitmap to object_id
>       pack-bitmap: replace sha1_to_hex
>       pack-bitmap: switch hard-coded constants to the_hash_algo
>       pack-bitmap: switch hash tables to use struct object_id
>       submodule: avoid hard-coded constants
>       notes-merge: switch to use the_hash_algo
>       notes: make hash size independent
>       notes: replace sha1_to_hex
>       object-store: rename and expand packed_git's sha1 member
>       builtin/name-rev: make hash-size independent
>       fast-import: make hash-size independent
>       fast-import: replace sha1_to_hex
>       builtin/am: make hash size independent
>       builtin/pull: make hash-size independent
>       http-push: convert to use the_hash_algo
>       http-backend: allow 64-character hex names
>       http-push: remove remaining uses of sha1_to_hex
>       http-walker: replace sha1_to_hex
>       http: replace hard-coded constant with the_hash_algo
>       http: compute hash of downloaded objects using the_hash_algo
>       http: replace sha1_to_hex
>       remote-curl: make hash size independent
>       hash: add a function to lookup hash algorithm by length
>       builtin/get-tar-commit-id: make hash size independent
>       archive: convert struct archiver_args to object_id
>       refspec: make hash size independent
>       builtin/difftool: use parse_oid_hex
>       dir: make untracked cache extension hash size independent
>       read-cache: read data in a hash-independent way
>       Git.pm: make hash size independent
>       gitweb: make hash size independent
>       send-email: default to quoted-printable when CR is present
>
> Ævar Arnfjörð Bjarmason (44):
>       receive-pack: fix use-after-free bug
>       commit-graph tests: split up corrupt_graph_and_verify()
>       commit-graph tests: test a graph that's too small
>       Makefile: remove an out-of-date comment
>       Makefile: move "strip" assignment down from flags
>       Makefile: add/remove comments at top and tweak whitespace
>       Makefile: Move *_LIBS assignment into its own section
>       Makefile: move the setting of *FLAGS closer to "include"
>       Makefile: allow for combining DEVELOPER=1 and CFLAGS="..."
>       gc: remove redundant check for gc_auto_threshold
>       gc: convert to using the_hash_algo
>       gc: refactor a "call me once" pattern
>       reflog tests: make use of "test_config" idiom
>       reflog tests: test for the "points nowhere" warning
>       rebase: remove the rebase.useBuiltin setting
>       gc docs: modernize the advice for manually running "gc"
>       gc docs: stop noting "repack" flags
>       gc docs: clean grammar for "gc.bigPackThreshold"
>       commit-graph: fix segfault on e.g. "git status"
>       commit-graph: don't early exit(1) on e.g. "git status"
>       commit-graph: don't pass filename to load_commit_graph_one_fd_st()
>       commit-graph verify: detect inability to read the graph
>       commit-graph write: don't die if the existing graph is corrupt
>       commit-graph: improve & i18n error messages
>       reflog tests: assert lack of early exit with expiry="never"
>       gc: handle & check gc.reflogExpire config
>       test-lib: whitelist GIT_TR2_* in the environment
>       gc docs: include the "gc.*" section from "config" in "gc"
>       gc docs: re-flow the "gc.*" section in "config"
>       gc docs: fix formatting for "gc.writeCommitGraph"
>       gc docs: note how --aggressive impacts --window & --depth
>       gc docs: downplay the usefulness of --aggressive
>       gc docs: note "gc --aggressive" in "fast-import"
>       gc docs: clarify that "gc" doesn't throw away referenced objects
>       gc docs: remove incorrect reference to gc.auto=0
>       perf README: correct docs for 3c8f12c96c regression
>       perf aggregate: remove GIT_TEST_INSTALLED from --codespeed
>       perf-lib.sh: make "./run <revisions>" use the correct gits
>       perf-lib.sh: remove GIT_TEST_INSTALLED from perf-lib.sh
>       perf tests: add "bindir" prefix to git tree test results
>       perf-lib.sh: forbid the use of GIT_TEST_INSTALLED
>       trace2: fix up a missing "leave" entry point
>       trace2: fix up a missing "leave" entry point
>       sha1dc: update from upstream
>
> İsmail Dönmez (2):
>       mingw: do not let ld strip relocations
>       mingw: enable DEP and ASLR
>
> --
> You received this message because you are subscribed to the Google Groups "git-packagers" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to git-packagers+unsubscribe@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/git-packagers/xmqqlfyito3a.fsf%40gitster-ct.c.googlers.com.
> For more options, visit https://groups.google.com/d/optout.
>

^ permalink raw reply	[relevance 0%]

* Re: [ANNOUNCE] Git v2.22.0-rc3
  2019-06-03 20:23  2% [ANNOUNCE] Git v2.22.0-rc3 Junio C Hamano
  2019-06-04  1:32  0% ` Ben Humphreys
@ 2019-06-04  1:47  0% ` Bhaskar Chowdhury
  2019-06-04 14:45  0% ` Git for Windows v2.22.0-rc3, was " Johannes Schindelin
  2 siblings, 0 replies; 162+ results
From: Bhaskar Chowdhury @ 2019-06-04  1:47 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Linux Kernel, git-packagers

[-- Attachment #1: Type: text/plain, Size: 71981 bytes --]

Thanks, a bunch Junio!

On 13:23 Mon 03 Jun , Junio C Hamano wrote:
>A release candidate Git v2.22.0-rc3 is now available for testing
>at the usual places.  It is comprised of 718 non-merge commits
>since v2.21.0, contributed by 67 people, 17 of which are new faces.
>
>Hopefully, this will be the last -rc during this cycle.
>
>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.22.0-rc3' 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.21.0 are as follows.
>Welcome to the Git development community!
>
>  Alexander Blesius, Baruch Siach, Boxuan Li, Chris Mayo,
>  Chris. Webster, Clément Chigot, Corentin BOMPARD, Damien Robert,
>  Dustin Spicuzza, Emily Shaffer, Michal Suchanek, Rohit Ashiwal,
>  Sun Chao, Tanushree Tumane, Vadim Kochan, William Hubbs, and
>  Yash Bhatambare.
>
>Returning contributors who helped this release are as follows.
>Thanks for your continued support.
>
>  Ævar Arnfjörð Bjarmason, Alban Gruin, Alexander Shopov, Anders
>  Waldenborg, Andreas Heiduk, Andrei Rybak, Beat Bolli, Ben Peart,
>  Brandon Richardson, brian m. carlson, Carlo Marcelo Arenas
>  Belón, Christian Couder, Daniels Umanovskis, David Aguilar,
>  David Kastrup, Denton Liu, Derrick Stolee, Elijah Newren, Eric
>  Sunshine, Eric Wong, İsmail Dönmez, Jean-Noël Avila, Jeff
>  Hostetler, Jeff King, Jiang Xin, Joel Teichroeb, Joey Hess,
>  Johannes Schindelin, Jonathan Tan, Jordi Mas, Josh Steadmon,
>  Junio C Hamano, Kyle Meyer, Martin Ågren, Matthew Kraai, Mike
>  Hommey, Nguyễn Thái Ngọc Duy, Paul-Sebastian Ungureanu,
>  Philip Oakley, Phillip Wood, Ramsay Jones, René Scharfe,
>  Robert P. J. Day, Sven Strickroth, SZEDER Gábor, Taylor Blau,
>  Thomas Gummerer, Todd Zullinger, Torsten Bögershausen, and
>  Trần Ngọc Quân.
>
>----------------------------------------------------------------
>
>Git 2.22 Release Notes (draft)
>==============================
>
>Updates since v2.21
>-------------------
>
>Backward compatibility note
>
> * The filter specification "--filter=sparse:path=<path>" used to
>   create a lazy/partial clone has been removed.  Using a blob that is
>   part of the project as sparse specification is still supported with
>   the "--filter=sparse:oid=<blob>" option.
>
>UI, Workflows & Features
>
> * "git checkout --no-overlay" can be used to trigger a new mode of
>   checking out paths out of the tree-ish, that allows paths that
>   match the pathspec that are in the current index and working tree
>   and are not in the tree-ish.
>
> * The %(trailers) formatter in "git log --format=..."  now allows to
>   optionally pick trailers selectively by keyword, show only values,
>   etc.
>
> * Four new configuration variables {author,committer}.{name,email}
>   have been introduced to override user.{name,email} in more specific
>   cases.
>
> * Command-line completion (in contrib/) learned to tab-complete the
>   "git submodule absorbgitdirs" subcommand.
>
> * "git branch" learned a new subcommand "--show-current".
>
> * Output from "diff --cc" did not show the original paths when the
>   merge involved renames.  A new option adds the paths in the
>   original trees to the output.
>
> * The command line completion (in contrib/) has been taught to
>   complete more subcommand parameters.
>
> * The final report from "git bisect" used to show the suspected
>   culprit using a raw "diff-tree", with which there is no output for
>   a merge commit.  This has been updated to use a more modern and
>   human readable output that still is concise enough.
>
> * "git rebase --rebase-merges" replaces its old "--preserve-merges"
>   option; the latter is now marked as deprecated.
>
> * Error message given while cloning with --recurse-submodules has
>   been updated.
>
> * The completion helper code now pays attention to repository-local
>   configuration (when available), which allows --list-cmds to honour
>   a repository specific setting of completion.commands, for example.
>
> * "git mergetool" learned to offer Sublime Merge (smerge) as one of
>   its backends.
>
> * A new hook "post-index-change" is called when the on-disk index
>   file changes, which can help e.g. a virtualized working tree
>   implementation.
>
> * "git difftool" can now run outside a repository.
>
> * "git checkout -m <other>" was about carrying the differences
>   between HEAD and the working-tree files forward while checking out
>   another branch, and ignored the differences between HEAD and the
>   index.  The command has been taught to abort when the index and the
>   HEAD are different.
>
> * A progress indicator has been added to the "index-pack" step, which
>   often makes users wait for completion during "git clone".
>
> * "git submodule" learns "set-branch" subcommand that allows the
>   submodule.*.branch settings to be modified.
>
> * "git merge-recursive" backend recently learned a new heuristics to
>   infer file movement based on how other files in the same directory
>   moved.  As this is inherently less robust heuristics than the one
>   based on the content similarity of the file itself (rather than
>   based on what its neighbours are doing), it sometimes gives an
>   outcome unexpected by the end users.  This has been toned down to
>   leave the renamed paths in higher/conflicted stages in the index so
>   that the user can examine and confirm the result.
>
> * "git tag" learned to give an advice suggesting it might be a
>   mistake when creating an annotated or signed tag that points at
>   another tag.
>
> * The "git pack-objects" command learned to report the number of
>   objects it packed via the trace2 mechanism.
>
> * The list of conflicted paths shown in the editor while concluding a
>   conflicted merge was shown above the scissors line when the
>   clean-up mode is set to "scissors", even though it was commented
>   out just like the list of updated paths and other information to
>   help the user explain the merge better.
>
> * The trace2 tracing facility learned to auto-generate a filename
>   when told to log to a directory.
>
> * "git clone" learned a new --server-option option when talking over
>   the protocol version 2.
>
> * The connectivity bitmaps are created by default in bare
>   repositories now; also the pathname hash-cache is created by
>   default to avoid making crappy deltas when repacking.
>
> * "git branch new A...B" and "git checkout -b new A...B" have been
>   taught that in their contexts, the notation A...B means "the merge
>   base between these two commits", just like "git checkout A...B"
>   detaches HEAD at that commit.
>
> * Update "git difftool" and "git mergetool" so that the combinations
>   of {diff,merge}.{tool,guitool} configuration variables serve as
>   fallback settings of each other in a sensible order.
>
> * The "--dir-diff" mode of "git difftool" is not useful in "--no-index"
>   mode; they are now explicitly marked as mutually incompatible.
>
>
>Performance, Internal Implementation, Development Support etc.
>
> * The diff machinery, one of the oldest parts of the system, which
>   long predates the parse-options API, uses fairly long and complex
>   handcrafted option parser.  This is being rewritten to use the
>   parse-options API.
>
> * The implementation of pack-redundant has been updated for
>   performance in a repository with many packfiles.
>
> * A more structured way to obtain execution trace has been added.
>
> * "git prune" has been taught to take advantage of reachability
>   bitmap when able.
>
> * The command line parser of "git commit-tree" has been rewritten to
>   use the parse-options API.
>
> * Suggest GitGitGadget instead of submitGit as a way to submit
>   patches based on GitHub PR to us.
>
> * The test framework has been updated to help developers by making it
>   easier to run most of the tests under different versions of
>   over-the-wire protocols.
>
> * Dev support update to make it easier to compare two formatted
>   results from our documentation.
>
> * The scripted "git rebase" implementation has been retired.
>
> * "git multi-pack-index verify" did not scale well with the number of
>   packfiles, which is being improved.
>
> * "git stash" has been rewritten in C.
>
> * The "check-docs" Makefile target to support developers has been
>   updated.
>
> * The tests have been updated not to rely on the abbreviated option
>   names the parse-options API offers, to protect us from an
>   abbreviated form of an option that used to be unique within the
>   command getting non-unique when a new option that share the same
>   prefix is added.
>
> * The scripted version of "git rebase -i" wrote and rewrote the todo
>   list many times during a single step of its operation, and the
>   recent C-rewrite made a faithful conversion of the logic to C.  The
>   implementation has been updated to carry necessary information
>   around in-core to avoid rewriting the same file over and over
>   unnecessarily.
>
> * Test framework update to more robustly clean up leftover files and
>   processes after tests are done.
>
> * Conversion from unsigned char[20] to struct object_id continues.
>
> * While running "git diff" in a lazy clone, we can upfront know which
>   missing blobs we will need, instead of waiting for the on-demand
>   machinery to discover them one by one.  The code learned to aim to
>   achieve better performance by batching the request for these
>   promised blobs.
>
> * During an initial "git clone --depth=..." partial clone, it is
>   pointless to spend cycles for a large portion of the connectivity
>   check that enumerates and skips promisor objects (which by
>   definition is all objects fetched from the other side).  This has
>   been optimized out.
>
> * Mechanically and systematically drop "extern" from function
>   declaration.
>
> * The script to aggregate perf result unconditionally depended on
>   libjson-perl even though it did not have to, which has been
>   corrected.
>
> * The internal implementation of "git rebase -i" has been updated to
>   avoid forking a separate "rebase--interactive" process.
>
> * Allow DEP and ASLR for Windows build to for security hardening.
>
> * Performance test framework has been broken and measured the version
>   of Git that happens to be on $PATH, not the specified one to
>   measure, for a while, which has been corrected.
>
> * Optionally "make coccicheck" can feed multiple source files to
>   spatch, gaining performance while spending more memory.
>
> * Attempt to use an abbreviated option in "git clone --recurs" is
>   responded by a request to disambiguate between --recursive and
>   --recurse-submodules, which is bad because these two are synonyms.
>   The parse-options API has been extended to define such synonyms
>   more easily and not produce an unnecessary failure.
>
> * A pair of private functions in http.c that had names similar to
>   fread/fwrite did not return the number of elements, which was found
>   to be confusing.
>
> * Update collision-detecting SHA-1 code to build properly on HP-UX.
>
>
>Fixes since v2.21
>-----------------
>
> * "git prune-packed" did not notice and complain against excess
>   arguments given from the command line, which now it does.
>   (merge 9b0bd87ed2 rj/prune-packed-excess-args later to maint).
>
> * Split-index fix.
>   (merge 6e37c8ed3c nd/split-index-null-base-fix later to maint).
>
> * "git diff --no-index" may still want to access Git goodies like
>   --ext-diff and --textconv, but so far these have been ignored,
>   which has been corrected.
>   (merge 287ab28bfa jk/diff-no-index-initialize later to maint).
>
> * Unify RPC code for smart http in protocol v0/v1 and v2, which fixes
>   a bug in the latter (lack of authentication retry) and generally
>   improves the code base.
>   (merge a97d00799a jt/http-auth-proto-v2-fix later to maint).
>
> * The include file compat/bswap.h has been updated so that it is safe
>   to (accidentally) include it more than once.
>   (merge 33aa579a55 jk/guard-bswap-header later to maint).
>
> * The set of header files used by "make hdr-check" unconditionally
>   included sha256/gcrypt.h, even when it is not used, causing the
>   make target to fail.  We now skip it when GCRYPT_SHA256 is not in
>   use.
>   (merge f23aa18e7f rj/hdr-check-gcrypt-fix later to maint).
>
> * The Makefile uses 'find' utility to enumerate all the *.h header
>   files, which is expensive on platforms with slow filesystems; it
>   now optionally uses "ls-files" if working within a repository,
>   which is a trick similar to how all sources are enumerated to run
>   ETAGS on.
>   (merge 92b88eba9f js/find-lib-h-with-ls-files-when-possible later to maint).
>
> * "git rebase" that was reimplemented in C did not set ORIG_HEAD
>   correctly, which has been corrected.
>   (merge cbd29ead92 js/rebase-orig-head-fix later to maint).
>
> * Dev support.
>   (merge f545737144 js/stress-test-ui-tweak later to maint).
>
> * CFLAGS now can be tweaked when invoking Make while using
>   DEVELOPER=YesPlease; this did not work well before.
>   (merge 6d5d4b4e93 ab/makefile-help-devs-more later to maint).
>
> * "git fsck --connectivity-only" omits computation necessary to sift
>   the objects that are not reachable from any of the refs into
>   unreachable and dangling.  This is now enabled when dangling
>   objects are requested (which is done by default, but can be
>   overridden with the "--no-dangling" option).
>   (merge 8d8c2a5aef jk/fsck-doc later to maint).
>
> * On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX),
>   the upload-pack that runs on the other end that hangs up after
>   detecting an error could cause "git fetch" to die with a signal,
>   which led to a flaky test.  "git fetch" now ignores SIGPIPE during
>   the network portion of its operation (this is not a problem as we
>   check the return status from our write(2)s).
>   (merge 143588949c jk/no-sigpipe-during-network-transport later to maint).
>
> * A recent update broke "is this object available to us?" check for
>   well-known objects like an empty tree (which should yield "yes",
>   even when there is no on-disk object for an empty tree), which has
>   been corrected.
>   (merge f06ab027ef jk/virtual-objects-do-exist later to maint).
>
> * The setup code has been cleaned up to avoid leaks around the
>   repository_format structure.
>   (merge e8805af1c3 ma/clear-repository-format later to maint).
>
> * "git config --type=color ..." is meant to replace "git config --get-color"
>   but there is a slight difference that wasn't documented, which is
>   now fixed.
>   (merge cd8e7593b9 jk/config-type-color-ends-with-lf later to maint).
>
> * When the "clean" filter can reduce the size of a huge file in the
>   working tree down to a small "token" (a la Git LFS), there is no
>   point in allocating a huge scratch area upfront, but the buffer is
>   sized based on the original file size.  The convert mechanism now
>   allocates very minimum and reallocates as it receives the output
>   from the clean filter process.
>   (merge 02156ab031 jh/resize-convert-scratch-buffer later to maint).
>
> * "git rebase" uses the refs/rewritten/ hierarchy to store its
>   intermediate states, which inherently makes the hierarchy per
>   worktree, but it didn't quite work well.
>   (merge b9317d55a3 nd/rewritten-ref-is-per-worktree later to maint).
>
> * "git log -L<from>,<to>:<path>" with "-s" did not suppress the patch
>   output as it should.  This has been corrected.
>   (merge 05314efaea jk/line-log-with-patch later to maint).
>
> * "git worktree add" used to do a "find an available name with stat
>   and then mkdir", which is race-prone.  This has been fixed by using
>   mkdir and reacting to EEXIST in a loop.
>   (merge 7af01f2367 ms/worktree-add-atomic-mkdir later to maint).
>
> * Build update for SHA-1 with collision detection.
>   (merge 07a20f569b jk/sha1dc later to maint).
>
> * Build procedure has been fixed around use of asciidoctor instead of
>   asciidoc.
>   (merge 185f9a0ea0 ma/asciidoctor-fixes later to maint).
>
> * remote-http transport did not anonymize URLs reported in its error
>   messages at places.
>   (merge c1284b21f2 js/anonymize-remote-curl-diag later to maint).
>
> * Error messages given from the http transport have been updated so
>   that they can be localized.
>   (merge ed8b4132c8 js/remote-curl-i18n later to maint).
>
> * "git init" forgot to read platform-specific repository
>   configuration, which made Windows port to ignore settings of
>   core.hidedotfiles, for example.
>
> * A corner-case object name ambiguity while the sequencer machinery
>   is working (e.g. "rebase -i -x") has been fixed.
>
> * "git format-patch" did not diagnose an error while opening the
>   output file for the cover-letter, which has been corrected.
>   (merge 2fe95f494c jc/format-patch-error-check later to maint).
>
> * "git checkout -f <branch>" while the index has an unmerged path
>   incorrectly left some paths in an unmerged state, which has been
>   corrected.
>
> * A corner case bug in the refs API has been corrected.
>   (merge d3322eb28b jk/refs-double-abort later to maint).
>
> * Unicode update.
>   (merge 584b62c37b bb/unicode-12 later to maint).
>
> * dumb-http walker has been updated to share more error recovery
>   strategy with the normal codepath.
>
> * A buglet in configuration parser has been fixed.
>   (merge 19e7fdaa58 nd/include-if-wildmatch later to maint).
>
> * The documentation for "git read-tree --reset -u" has been updated.
>   (merge b5a0bd694c nd/read-tree-reset-doc later to maint).
>
> * Code clean-up around a much-less-important-than-it-used-to-be
>   update_server_info() function.
>   (merge b3223761c8 jk/server-info-rabbit-hole later to maint).
>
> * The message given when "git commit -a <paths>" errors out has been
>   updated.
>   (merge 5a1dbd48bc nd/commit-a-with-paths-msg-update later to maint).
>
> * "git cherry-pick --options A..B", after giving control back to the
>   user to ask help resolving a conflicted step, did not honor the
>   options it originally received, which has been corrected.
>
> * Various glitches in "git gc" around reflog handling have been fixed.
>
> * The code to read from commit-graph file has been cleanup with more
>   careful error checking before using data read from it.
>
> * Performance fix around "git fetch" that grabs many refs.
>   (merge b764300912 jt/fetch-pack-wanted-refs-optim later to maint).
>
> * Protocol v2 support in "git fetch-pack" of shallow clones has been
>   corrected.
>
> * Performance fix around "git blame", especially in a linear history
>   (which is the norm we should optimize for).
>   (merge f892014943 dk/blame-keep-origin-blob later to maint).
>
> * Performance fix for "rev-list --parents -- pathspec".
>   (merge 8320b1dbe7 jk/revision-rewritten-parents-in-prio-queue later to maint).
>
> * Updating the display with progress message has been cleaned up to
>   deal better with overlong messages.
>   (merge 545dc345eb sg/overlong-progress-fix later to maint).
>
> * "git blame -- path" in a non-bare repository starts blaming from
>   the working tree, and the same command in a bare repository errors
>   out because there is no working tree by definition.  The command
>   has been taught to instead start blaming from the commit at HEAD,
>   which is more useful.
>   (merge a544fb08f8 sg/blame-in-bare-start-at-head later to maint).
>
> * An underallocation in the code to read the untracked cache
>   extension has been corrected.
>   (merge 3a7b45a623 js/untracked-cache-allocfix later to maint).
>
> * The code is updated to check the result of memory allocation before
>   it is used in more places, by using xmalloc and/or xcalloc calls.
>   (merge 999b951b28 jk/xmalloc later to maint).
>
> * The GETTEXT_POISON test option has been quite broken ever since it
>   was made runtime-tunable, which has been fixed.
>   (merge f88b9cb603 jc/gettext-test-fix later to maint).
>
> * Test fix on APFS that is incapable of store paths in Latin-1.
>   (merge 3889149619 js/iso8895-test-on-apfs later to maint).
>
> * "git submodule foreach <command> --quiet" did not pass the option
>   down correctly, which has been corrected.
>   (merge a282f5a906 nd/submodule-foreach-quiet later to maint).
>
> * "git send-email" has been taught to use quoted-printable when the
>   payload contains carriage-return.  The use of the mechanism is in
>   line with the design originally added the codepath that chooses QP
>   when the payload has overly long lines.
>   (merge 74d76a1701 bc/send-email-qp-cr later to maint).
>
> * The recently added feature to add addresses that are on
>   anything-by: trailers in 'git send-email' was found to be way too
>   eager and considered nonsense strings as if they can be legitimate
>   beginning of *-by: trailer.  This has been tightened.
>
> * Builds with gettext broke on recent macOS w/ Homebrew, which
>   seems to have stopped including from /usr/local/include; this
>   has been corrected.
>   (merge 92a1377a2a js/macos-gettext-build later to maint).
>
> * Running "git add" on a repository created inside the current
>   repository is an explicit indication that the user wants to add it
>   as a submodule, but when the HEAD of the inner repository is on an
>   unborn branch, it cannot be added as a submodule.  Worse, the files
>   in its working tree can be added as if they are a part of the outer
>   repository, which is not what the user wants.  These problems are
>   being addressed.
>   (merge f937bc2f86 km/empty-repo-is-still-a-repo later to maint).
>
> * "git cherry-pick" run with the "-x" or the "--signoff" option used
>   to (and more importantly, ought to) clean up the commit log message
>   with the --cleanup=space option by default, but this has been
>   broken since late 2017.  This has been fixed.
>
> * When given a tag that points at a commit-ish, "git replace --graft"
>   failed to peel the tag before writing a replace ref, which did not
>   make sense because the old graft mechanism the feature wants to
>   mimic only allowed to replace one commit object with another.
>   This has been fixed.
>   (merge ee521ec4cb cc/replace-graft-peel-tags later to maint).
>
> * Code tightening against a "wrong" object appearing where an object
>   of a different type is expected, instead of blindly assuming that
>   the connection between objects are correctly made.
>   (merge 97dd512af7 tb/unexpected later to maint).
>
> * An earlier update for MinGW and Cygwin accidentally broke MSVC build,
>   which has been fixed.
>   (merge 22c3634c0f ss/msvc-path-utils-fix later to maint).
>
> * %(push:track) token used in the --format option to "git
>   for-each-ref" and friends was not showing the right branch, which
>   has been fixed.
>   (merge c646d0934e dr/ref-filter-push-track-fix later to maint).
>
> * "make check-docs", "git help -a", etc. did not account for cases
>   where a particular build may deliberately omit some subcommands,
>   which has been corrected.
>
> * The logic to tell if a Git repository has a working tree protects
>   "git branch -D" from removing the branch that is currently checked
>   out by mistake.  The implementation of this logic was broken for
>   repositories with unusual name, which unfortunately is the norm for
>   submodules these days.  This has been fixed.
>   (merge f3534c98e4 jt/submodule-repo-is-with-worktree later to maint).
>
> * AIX shared the same build issues with other BSDs around fileno(fp),
>   which has been corrected.
>   (merge ee662bf5c6 cc/aix-has-fileno-as-a-macro later to maint).
>
> * The autoconf generated configure script failed to use the right
>   gettext() implementations from -libintl by ignoring useless stub
>   implementations shipped in some C library, which has been
>   corrected.
>   (merge b71e56a683 vk/autoconf-gettext later to maint).
>
> * Fix index-pack perf test so that the repeated invocations always
>   run in an empty repository, which emulates the initial clone
>   situation better.
>   (merge 775c71e16d jk/p5302-avoid-collision-check-cost later to maint).
>
> * A "ls-files" that emulates "find" to enumerate files in the working
>   tree resulted in duplicated Makefile rules that caused the build to
>   issue an unnecessary warning during a trial build after merge
>   conflicts are resolved in working tree *.h files but before the
>   resolved results are added to the index.  This has been corrected.
>
> * "git cherry-pick" (and "revert" that shares the same runtime engine)
>   that deals with multiple commits got confused when the final step
>   gets stopped with a conflict and the user concluded the sequence
>   with "git commit".  Attempt to fix it by cleaning up the state
>   files used by these commands in such a situation.
>   (merge 4a72486de9 pw/clean-sequencer-state-upon-final-commit later to maint).
>
> * On a filesystem like HFS+, the names of the refs stored as filesystem
>   entities may become different from what the end-user expects, just
>   like files in the working tree get "renamed".  Work around the
>   mismatch by paying attention to the core.precomposeUnicode
>   configuration.
>   (merge 8e712ef6fc en/unicode-in-refnames later to maint).
>
> * The code to generate the multi-pack idx file was not prepared to
>   see too many packfiles and ran out of open file descriptor, which
>   has been corrected.
>
> * To run tests for Git SVN, our scripts for CI used to install the
>   git-svn package (in the hope that it would bring in the right
>   dependencies).  This has been updated to install the more direct
>   dependency, namely, libsvn-perl.
>   (merge db864306cf sg/ci-libsvn-perl later to maint).
>
> * "git cvsexportcommit" running on msys did not expect cvsnt showed
>   "cvs status" output with CRLF line endings.
>
> * The fsmonitor interface got out of sync after the in-core index
>   file gets discarded, which has been corrected.
>   (merge 398a3b0899 js/fsmonitor-refresh-after-discarding-index later to maint).
>
> * "git status" did not know that the "label" instruction in the
>   todo-list "rebase -i -r" uses should not be shown as a hex object
>   name.
>
> * A prerequisite check in the test suite to see if a working jgit is
>   available was made more robust.
>   (merge abd0f28983 tz/test-lib-check-working-jgit later to maint).
>
> * The codepath to parse :<path> that obtains the object name for an
>   indexed object has been made more robust.
>
> * Code cleanup, docfix, build fix, etc.
>   (merge 11f470aee7 jc/test-yes-doc later to maint).
>   (merge 90503a240b js/doc-symref-in-proto-v1 later to maint).
>   (merge 5c326d1252 jk/unused-params later to maint).
>   (merge 68cabbfda3 dl/doc-submodule-wo-subcommand later to maint).
>   (merge 9903623761 ab/receive-pack-use-after-free-fix later to maint).
>   (merge 1ede45e44b en/merge-options-doc later to maint).
>   (merge 3e14dd2c8e rd/doc-hook-used-in-sample later to maint).
>   (merge c271dc28fd nd/no-more-check-racy later to maint).
>   (merge e6e15194a8 yb/utf-16le-bom-spellfix later to maint).
>   (merge bb101aaf0c rd/attr.c-comment-typofix later to maint).
>   (merge 716a5af812 rd/gc-prune-doc-fix later to maint).
>   (merge 50b206371d js/untravis-windows later to maint).
>   (merge dbf47215e3 js/rebase-recreate-merge later to maint).
>   (merge 56cb2d30f8 dl/reset-doc-no-wrt-abbrev later to maint).
>   (merge 64eca306a2 ja/dir-rename-doc-markup-fix later to maint).
>   (merge af91b0230c dl/ignore-docs later to maint).
>   (merge 59a06e947b ra/t3600-test-path-funcs later to maint).
>   (merge e041d0781b ar/t4150-remove-cruft later to maint).
>   (merge 8d75a1d183 ma/asciidoctor-fixes-more later to maint).
>   (merge 74cc547b0f mh/pack-protocol-doc-fix later to maint).
>   (merge ed31851fa6 ab/doc-misc-typofixes later to maint).
>   (merge a7256debd4 nd/checkout-m-doc-update later to maint).
>   (merge 3a9e1ad78d jt/t5551-protocol-v2-does-not-have-half-auth later to maint).
>   (merge 0b918b75af sg/t5318-cleanup later to maint).
>   (merge 68ed71b53c cb/doco-mono later to maint).
>   (merge a34dca2451 nd/interpret-trailers-docfix later to maint).
>   (merge cf7b857a77 en/fast-import-parsing-fix later to maint).
>   (merge fe61ccbc35 po/rerere-doc-fmt later to maint).
>   (merge ffea0248bf po/describe-not-necessarily-7 later to maint).
>   (merge 7cb7283adb tg/ls-files-debug-format-fix later to maint).
>   (merge f64a21bd82 tz/doc-apostrophe-no-longer-needed later to maint).
>   (merge dbe7b41019 js/t3301-unbreak-notes-test later to maint).
>   (merge d8083e4180 km/t3000-retitle later to maint).
>   (merge 9e4cbccbd7 tz/git-svn-doc-markup-fix later to maint).
>   (merge da9ca955a7 jk/ls-files-doc-markup-fix later to maint).
>   (merge 6804ba3a58 cw/diff-highlight later to maint).
>   (merge 1a8787144d nd/submodule-helper-incomplete-line-fix later to maint).
>   (merge d9ef573837 jk/apache-lsan later to maint).
>   (merge c871fbee2b js/t6500-use-windows-pid-on-mingw later to maint).
>   (merge ce4c7bfc90 bl/t4253-exit-code-from-format-patch later to maint).
>   (merge 397a46db78 js/t5580-unc-alternate-test later to maint).
>   (merge d4907720a2 cm/notes-comment-fix later to maint).
>   (merge 9dde06de13 cb/http-push-null-in-message-fix later to maint).
>   (merge 4c785c0edc js/rebase-config-bitfix later to maint).
>   (merge 8e9fe16c87 es/doc-gitsubmodules-markup later to maint).
>
>----------------------------------------------------------------
>
>Changes since v2.21.0 are as follows:
>
>Alban Gruin (18):
>      sequencer: changes in parse_insn_buffer()
>      sequencer: make the todo_list structure public
>      sequencer: remove the 'arg' field from todo_item
>      sequencer: refactor transform_todos() to work on a todo_list
>      sequencer: introduce todo_list_write_to_file()
>      sequencer: refactor check_todo_list() to work on a todo_list
>      sequencer: refactor sequencer_add_exec_commands() to work on a todo_list
>      sequencer: refactor rearrange_squash() to work on a todo_list
>      sequencer: make sequencer_make_script() write its script to a strbuf
>      sequencer: change complete_action() to use the refactored functions
>      rebase--interactive: move sequencer_add_exec_commands()
>      rebase--interactive: move rearrange_squash_in_todo_file()
>      sequencer: refactor skip_unnecessary_picks() to work on a todo_list
>      rebase-interactive: use todo_list_write_to_file() in edit_todo_list()
>      rebase-interactive: append_todo_help() changes
>      rebase-interactive: rewrite edit_todo_list() to handle the initial edit
>      sequencer: use edit_todo_list() in complete_action()
>      rebase--interactive: move transform_todo_file()
>
>Alexander Blesius (1):
>      doc: fix typos in man pages
>
>Alexander Shopov (1):
>      gitk: Update Bulgarian translation (317t)
>
>Anders Waldenborg (7):
>      doc: group pretty-format.txt placeholders descriptions
>      pretty: allow %(trailers) options with explicit value
>      pretty: single return path in %(trailers) handling
>      pretty: allow showing specific trailers
>      pretty: add support for "valueonly" option in %(trailers)
>      strbuf: separate callback for strbuf_expand:ing literals
>      pretty: add support for separator option in %(trailers)
>
>Andreas Heiduk (1):
>      revisions.txt: remove ambibuity between <rev>:<path> and :<path>
>
>Andrei Rybak (1):
>      t4150: remove unused variable
>
>Baruch Siach (1):
>      send-email: don't cc *-by lines with '-' prefix
>
>Beat Bolli (1):
>      unicode: update the width tables to Unicode 12
>
>Ben Peart (1):
>      read-cache: add post-index-change hook
>
>Boxuan Li (1):
>      t4253-am-keep-cr-dos: avoid using pipes
>
>Brandon Richardson (1):
>      commit-tree: utilize parse-options api
>
>Carlo Marcelo Arenas Belón (1):
>      http-push: prevent format overflow warning with gcc >= 9
>
>Chris Mayo (1):
>      notes: correct documentation of format_display_notes()
>
>Chris. Webster (1):
>      diff-highlight: use correct /dev/null for UNIX and Windows
>
>Christian Couder (5):
>      t6050: use test_line_count instead of wc -l
>      t6050: redirect expected error output to a file
>      replace: peel tag when passing a tag as parent to --graft
>      replace: peel tag when passing a tag first to --graft
>      list-objects-filter: disable 'sparse:path' filters
>
>Clément Chigot (2):
>      Makefile: use fileno macro work around on AIX
>      git-compat-util: work around for access(X_OK) under root
>
>Corentin BOMPARD (2):
>      doc/CodingGuidelines: URLs and paths as monospace
>      doc: format pathnames and URLs as monospace.
>
>Damien Robert (1):
>      ref-filter: use correct branch for %(push:track)
>
>Daniels Umanovskis (1):
>      branch: introduce --show-current display option
>
>David Aguilar (2):
>      mergetools: add support for smerge (Sublime Merge)
>      contrib/completion: add smerge to the mergetool completion candidates
>
>David Kastrup (1):
>      blame.c: don't drop origin blobs as eagerly
>
>Denton Liu (38):
>      completion: complete git submodule absorbgitdirs
>      git-submodule.txt: "--branch <branch>" option defaults to 'master'
>      submodule--helper: teach config subcommand --unset
>      submodule: document default behavior
>      git-reset.txt: clarify documentation
>      git-clean.txt: clarify ignore pattern files
>      docs: move core.excludesFile from git-add to gitignore
>      contrib/subtree: ensure only one rev is provided
>      midx.c: convert FLEX_ALLOC_MEM to FLEX_ALLOC_STR
>      cocci: FLEX_ALLOC_MEM to FLEX_ALLOC_STR
>      tag: fix formatting
>      submodule: teach set-branch subcommand
>      tag: advise on nested tags
>      t7600: clean up style
>      t3507: clean up style
>      t7604: clean up style
>      t7502: clean up style
>      commit: extract cleanup_mode functions to sequencer
>      parse-options.h: extract common --cleanup option
>      merge: cleanup messages like commit
>      merge: add scissors line on merge conflict
>      cherry-pick/revert: add scissors line on merge conflict
>      t7610: unsuppress output
>      t7610: add mergetool --gui tests
>      *.[ch]: remove extern from function declarations using spatch
>      *.[ch]: remove extern from function declarations using sed
>      *.[ch]: manually align parameter lists
>      t2018: cleanup in current test
>      branch: make create_branch accept a merge base rev
>      revisions.txt: change "rev" to "<rev>"
>      revisions.txt: mark optional rev arguments with []
>      revisions.txt: mention <rev>~ form
>      tag: fix typo in nested tagging hint
>      mergetool: use get_merge_tool function
>      mergetool--lib: create gui_mode function
>      mergetool: fallback to tool when guitool unavailable
>      difftool: make --gui, --tool and --extcmd mutually exclusive
>      difftool: fallback on merge.guitool
>
>Derrick Stolee (4):
>      trace2:data: pack-objects: add trace2 regions
>      midx: pass a repository pointer
>      midx: add packs to packed_git linked list
>      trace2: add variable description to git.txt
>
>Dustin Spicuzza (1):
>      cvsexportcommit: force crlf translation
>
>Elijah Newren (23):
>      log,diff-tree: add --combined-all-paths option
>      merge-options.txt: correct wording of --no-commit option
>      t9300: demonstrate bug with get-mark and empty orphan commits
>      git-fast-import.txt: fix wording about where ls command can appear
>      fast-import: check most prominent commands first
>      fast-import: only allow cat-blob requests where it makes sense
>      fast-import: fix erroneous handling of get-mark with empty orphan commits
>      Use 'unsigned short' for mode, like diff_filespec does
>      merge-recursive: rename merge_options argument from 'o' to 'opt'
>      merge-recursive: rename diff_filespec 'one' to 'o'
>      merge-recursive: rename locals 'o' and 'a' to 'obuf' and 'abuf'
>      merge-recursive: use 'ci' for rename_conflict_info variable name
>      merge-recursive: move some struct declarations together
>      merge-recursive: shrink rename_conflict_info
>      merge-recursive: remove ren[12]_other fields from rename_conflict_info
>      merge-recursive: track branch where rename occurred in rename struct
>      merge-recursive: cleanup handle_rename_* function signatures
>      merge-recursive: switch from (oid,mode) pairs to a diff_filespec
>      t6043: fix copied test description to match its purpose
>      merge-recursive: track information associated with directory renames
>      merge-recursive: give callers of handle_content_merge() access to contents
>      merge-recursive: switch directory rename detection default
>      Honor core.precomposeUnicode in more places
>
>Emily Shaffer (1):
>      gitsubmodules: align html and nroff lists
>
>Eric Sunshine (1):
>      check-non-portable-shell: support Perl versions older than 5.10
>
>Eric Wong (1):
>      repack: enable bitmaps by default on bare repos
>
>Jean-Noël Avila (3):
>      l10n: fr.po remove obsolete entries
>      Doc: fix misleading asciidoc formating
>      diff: fix mistake in translatable strings
>
>Jeff Hostetler (30):
>      trace2: Documentation/technical/api-trace2.txt
>      trace2: create new combined trace facility
>      trace2: collect Windows-specific process information
>      trace2:data: add trace2 regions to wt-status
>      trace2:data: add editor/pager child classification
>      trace2:data: add trace2 sub-process classification
>      trace2:data: add trace2 transport child classification
>      trace2:data: add subverb to checkout command
>      trace2:data: add subverb to reset command
>      trace2:data: add trace2 hook classification
>      trace2:data: add subverb for rebase
>      trace2:data: add trace2 instrumentation to index read/write
>      trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh
>      trace2: add for_each macros to clang-format
>      progress: add sparse mode to force 100% complete message
>      trace2:data: add trace2 data to midx
>      midx: add progress indicators in multi-pack-index verify
>      midx: during verify group objects by packfile to speed verification
>      config: initialize opts structure in repo_read_config()
>      trace2: refactor setting process starting time
>      trace2: add absolute elapsed time to start event
>      trace2: find exec-dir before trace2 initialization
>      config: add read_very_early_config()
>      trace2: use system/global config for default trace2 settings
>      trace2: report peak memory usage of the process
>      trace2: clarify UTC datetime formatting
>      trace2: make SIDs more unique
>      trace2: update docs to describe system/global config settings
>      trace2: fixup access problem on /etc/gitconfig in read_very_early_config
>      trace2: fix tracing when NO_PTHREADS is defined
>
>Jeff King (92):
>      prune: lazily perform reachability traversal
>      prune: use bitmaps for reachability traversal
>      prune: check SEEN flag for reachability
>      t5304: rename "sha1" variables to "oid"
>      diff: drop options parameter from diffcore_fix_diff_index()
>      diff: drop unused color reset parameters
>      diff: drop unused emit data parameter from sane_truncate_line()
>      diff: drop complete_rewrite parameter from run_external_diff()
>      merge-recursive: drop several unused parameters
>      pack-objects: drop unused parameter from oe_map_new_pack()
>      files-backend: drop refs parameter from split_symref_update()
>      ref-filter: drop unused buf/sz pairs
>      ref-filter: drop unused "obj" parameters
>      ref-filter: drop unused "sz" parameters
>      diff: reuse diff setup for --no-index case
>      bisect: use string arguments to feed internal diff-tree
>      bisect: fix internal diff-tree config loading
>      bisect: make diff-tree output prettier
>      fetch: avoid calling write_or_die()
>      fetch: ignore SIGPIPE during network operation
>      rev-list: allow cached objects in existence check
>      doc/fsck: clarify --connectivity-only behavior
>      fsck: always compute USED flags for unreachable objects
>      compat/bswap: add include header guards
>      config: document --type=color output is a complete line
>      line-log: suppress diff output with "-s"
>      line-log: detect unsupported formats
>      point pull requesters to GitGitGadget
>      Makefile: fix unaligned loads in sha1dc with UBSan
>      t5310: correctly remove bitmaps for jgit test
>      pack-objects: default to writing bitmap hash-cache
>      perf-lib.sh: rely on test-lib.sh for --tee handling
>      revision: drop some unused "revs" parameters
>      log: drop unused rev_info from early output
>      log: drop unused "len" from show_tagger()
>      update-index: drop unused prefix_length parameter from do_reupdate()
>      test-date: drop unused "now" parameter from parse_dates()
>      unpack-trees: drop name_entry from traverse_by_cache_tree()
>      unpack-trees: drop unused error_type parameters
>      report_path_error(): drop unused prefix parameter
>      fetch_pack(): drop unused parameters
>      parse-options: drop unused ctx parameter from show_gitcomp()
>      pretty: drop unused "type" parameter in needs_rfc2047_encoding()
>      pretty: drop unused strbuf from parse_padding_placeholder()
>      git: read local config in --list-cmds
>      completion: fix multiple command removals
>      parse_opt_ref_sorting: always use with NONEG flag
>      refs/files-backend: handle packed transaction prepare failure
>      refs/files-backend: don't look at an aborted transaction
>      http: factor out curl result code normalization
>      http: normalize curl results for dumb loose and alternates fetches
>      http: use normalize_curl_result() instead of manual conversion
>      revision: use a prio_queue to hold rewritten parents
>      get_commit_tree(): return NULL for broken tree
>      rev-list: let traversal die when --missing is not in use
>      rev-list: detect broken root trees
>      test-prio-queue: use xmalloc
>      xdiff: use git-compat-util
>      xdiff: use xmalloc/xrealloc
>      progress: use xmalloc/xcalloc
>      t5516: drop ok=sigpipe from unreachable-want tests
>      t5530: check protocol response for "not our ref"
>      upload-pack: send ERR packet for non-tip objects
>      pkt-line: prepare buffer before handling ERR packets
>      fetch: use free_refs()
>      remote.c: make singular free_ref() public
>      fetch: do not consider peeled tags as advertised tips
>      packfile.h: drop extern from function declarations
>      pack-revindex: open index if necessary
>      t5319: fix bogus cat-file argument
>      t5319: drop useless --buffer from cat-file
>      midx: check both pack and index names for containment
>      packfile: fix pack basename computation
>      http: simplify parsing of remote objects/info/packs
>      server-info: fix blind pointer arithmetic
>      server-info: simplify cleanup in parse_pack_def()
>      server-info: use strbuf to read old info/packs file
>      server-info: drop nr_alloc struct member
>      server-info: drop objdirlen pointer arithmetic
>      update_info_refs(): drop unused force parameter
>      t5304: add a test for pruning with bitmaps
>      untracked-cache: be defensive about missing NULs in index
>      untracked-cache: simplify parsing by dropping "next"
>      untracked-cache: simplify parsing by dropping "len"
>      p5302: create the repo in each index-pack test
>      doc/ls-files: put nested list for "-t" option into block
>      t/perf: depend on perl JSON only when using --codespeed
>      t/perf: add perf script for partial clones
>      coccicheck: optionally batch spatch invocations
>      t/lib-httpd: pass LSAN_OPTIONS through apache
>      coccicheck: make batch size of 0 mean "unlimited"
>      get_oid: handle NULL repo->index
>
>Jiang Xin (5):
>      t5323: test cases for git-pack-redundant
>      pack-redundant: delay creation of unique_objects
>      pack-redundant: rename pack_list.all_objects
>      pack-redundant: consistent sort method
>      i18n: fix typos found during l10n for git 2.22.0
>
>Joel Teichroeb (5):
>      stash: improve option parsing test coverage
>      stash: convert apply to builtin
>      stash: convert drop and clear to builtin
>      stash: convert branch to builtin
>      stash: convert pop to builtin
>
>Joey Hess (1):
>      convert: avoid malloc of original file size
>
>Johannes Schindelin (67):
>      ident: add the ability to provide a "fallback identity"
>      travis: remove the hack to build the Windows job on Azure Pipelines
>      tests: let --stress-limit=<N> imply --stress
>      tests: introduce --stress-jobs=<N>
>      built-in rebase: no need to check out `onto` twice
>      built-in rebase: use the correct reflog when switching branches
>      built-in rebase: demonstrate that ORIG_HEAD is not set correctly
>      built-in rebase: set ORIG_HEAD just once, before the rebase
>      Makefile: use `git ls-files` to list header files, if possible
>      curl: anonymize URLs in error messages and warnings
>      remote-curl: mark all error messages for translation
>      stash: add back the original, scripted `git stash`
>      stash: optionally use the scripted version again
>      tests: add a special setup where stash.useBuiltin is off
>      legacy stash: fix "rudimentary backport of -q"
>      built-in stash: handle :(glob) pathspecs again
>      mingw: drop MakeMaker reference
>      mingw: allow building with an MSYS2 runtime v3.x
>      rebase: deprecate --preserve-merges
>      mingw: respect core.hidedotfiles = false in git-init again
>      test-lib: introduce 'test_atexit'
>      git-daemon: use 'test_atexit` to stop 'git-daemon'
>      git p4 test: use 'test_atexit' to kill p4d and the watchdog process
>      rebase -i: demonstrate obscure loose object cache bug
>      sequencer: improve error message when an OID could not be parsed
>      sequencer: move stale comment into correct location
>      get_oid(): when an object was not found, try harder
>      difftool: remove obsolete (and misleading) comment
>      parse-options: make OPT_ARGUMENT() more useful
>      difftool: allow running outside Git worktrees with --no-index
>      docs: move gitremote-helpers into section 7
>      docs: do not document the `git remote-testgit` command
>      check-docs: really look at the documented commands again
>      check-docs: do not expect guide pages to correspond to commands
>      check-docs: fix for setups where executables have an extension
>      tests (rebase): spell out the `--keep-empty` option
>      tests (rebase): spell out the `--force-rebase` option
>      t7810: do not abbreviate `--no-exclude-standard` nor `--invert-match`
>      t5531: avoid using an abbreviated option
>      tests (push): do not abbreviate the `--follow-tags` option
>      tests (status): spell out the `--find-renames` option in full
>      tests (pack-objects): use the full, unabbreviated `--revs` option
>      t3301: fix false negative
>      untracked cache: fix off-by-one
>      tests: disallow the use of abbreviated options (by default)
>      t9822: skip tests if file names cannot be ISO-8859-1 encoded
>      macOS: make sure that gettext is found
>      remote-testgit: move it into the support directory for t5801
>      Makefile: drop the NO_INSTALL variable
>      help -a: do not list commands that are excluded from the build
>      check-docs: allow command-list.txt to contain excluded commands
>      docs: exclude documentation for commands that have been excluded
>      check-docs: do not bother checking for legacy scripts' documentation
>      test-tool: handle the `-C <directory>` option just like `git`
>      Turn `git serve` into a test helper
>      t5580: verify that alternates can be UNC paths
>      fsmonitor: demonstrate that it is not refreshed after discard_index()
>      fsmonitor: force a refresh after the index was discarded
>      t6500(mingw): use the Windows PID of the shell
>      difftool --no-index: error out on --dir-diff (and don't crash)
>      status: fix display of rebase -ir's `label` command
>      parse-options: adjust `parse_opt_unknown_cb()`s declared return type
>      stash: document stash.useBuiltin
>      rebase: replace incorrect logical negation by correct bitwise one
>      tests: mark a couple more test cases as requiring `rebase -p`
>      docs: say that `--rebase=preserve` is deprecated
>      rebase docs: recommend `-r` over `-p`
>
>Jonathan Tan (25):
>      remote-curl: reduce scope of rpc_state.argv
>      remote-curl: reduce scope of rpc_state.stdin_preamble
>      remote-curl: reduce scope of rpc_state.result
>      remote-curl: refactor reading into rpc_state's buf
>      remote-curl: use post_rpc() for protocol v2 also
>      tests: define GIT_TEST_PROTOCOL_VERSION
>      t5601: check ssh command only with protocol v0
>      tests: always test fetch of unreachable with v0
>      t5503: fix overspecification of trace expectation
>      t5512: compensate for v0 only sending HEAD symrefs
>      t5700: only run with protocol version 1
>      tests: fix protocol version for overspecifications
>      t5552: compensate for v2 filtering ref adv.
>      submodule: explain first attempt failure clearly
>      t5551: mark half-auth no-op fetch test as v0-only
>      fetch-pack: call prepare_shallow_info only if v0
>      fetch-pack: respect --no-update-shallow in v2
>      sha1-file: support OBJECT_INFO_FOR_PREFETCH
>      fetch-pack: binary search when storing wanted-refs
>      diff: batch fetching of missing blobs
>      pack-objects: write objects packed to trace2
>      transport: die if server options are unsupported
>      clone: send server options when using protocol v2
>      worktree: update is_bare heuristics
>      fetch-pack: send server options after command
>
>Jordi Mas (1):
>      l10n: Fixes to Catalan translation
>
>Josh Steadmon (5):
>      protocol-capabilities.txt: document symref
>      trace2: write to directory targets
>      clone: do faster object check for partial clones
>      trace2: fix incorrect function pointer check
>      commit-graph: fix memory leak
>
>Junio C Hamano (18):
>      test: caution on our version of 'yes'
>      builtin/log: downcase the beginning of error messages
>      format-patch: notice failure to open cover letter for writing
>      Start 2.22 cycle
>      The second batch
>      The third batch
>      The fourth batch
>      gettext tests: export the restored GIT_TEST_GETTEXT_POISON
>      The fifth batch
>      The sixth batch
>      Makefile: dedup list of files obtained from ls-files
>      The seventh batch
>      The eighth batch
>      Git 2.22-rc0
>      pkt-line: drop 'const'-ness of a param to set_packet_header()
>      Git 2.22-rc1
>      Git 2.22-rc2
>      Git 2.22-rc3
>
>Kyle Meyer (5):
>      rebase docs: fix "gitlink" typo
>      submodule: refuse to add repository with no commits
>      dir: do not traverse repositories with no commits
>      add: error appropriately on repository with no commits
>      t3000 (ls-files -o): widen description to reflect current tests
>
>Martin Ågren (14):
>      setup: free old value before setting `work_tree`
>      setup: fix memory leaks with `struct repository_format`
>      config/diff.txt: drop spurious backtick
>      config/fsck.txt: avoid starting line with dash
>      git.txt: remove empty line before list continuation
>      git-svn.txt: drop escaping '\' that ends up being rendered
>      Documentation: turn middle-of-line tabs into spaces
>      Documentation/Makefile: add missing xsl dependencies for manpages
>      Documentation/Makefile: add missing dependency on asciidoctor-extensions
>      asciidoctor-extensions: fix spurious space after linkgit
>      Doc: auto-detect changed build flags
>      doc-diff: let `render_tree()` take an explicit directory name
>      doc-diff: support diffing from/to AsciiDoc(tor)
>      doc-diff: add `--cut-header-footer`
>
>Matthew Kraai (1):
>      t3903: add test for --intent-to-add file
>
>Michal Suchanek (1):
>      worktree: fix worktree add race
>
>Mike Hommey (2):
>      fix pack protocol example client/server communication
>      Make fread/fwrite-like functions in http.c more like fread/fwrite.
>
>Nguyễn Thái Ngọc Duy (129):
>      parse-options.h: remove extern on function prototypes
>      parse-options: add one-shot mode
>      parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
>      parse-options: add OPT_BITOP()
>      parse-options: stop abusing 'callback' for lowlevel callbacks
>      parse-options: avoid magic return codes
>      parse-options: allow ll_callback with OPTION_CALLBACK
>      diff.h: keep forward struct declarations sorted
>      diff.h: avoid bit fields in struct diff_flags
>      diff.c: prepare to use parse_options() for parsing
>      diff.c: convert -u|-p|--patch
>      diff.c: convert -U|--unified
>      diff.c: convert -W|--[no-]function-context
>      diff.c: convert --raw
>      read-cache.c: fix writing "link" index ext with null base oid
>      completion: add more parameter value completion
>      diff-parseopt: convert --patch-with-raw
>      diff-parseopt: convert --numstat and --shortstat
>      diff-parseopt: convert --dirstat and friends
>      diff-parseopt: convert --check
>      diff-parseopt: convert --summary
>      diff-parseopt: convert --patch-with-stat
>      diff-parseopt: convert --name-only
>      diff-parseopt: convert --name-status
>      diff-parseopt: convert -s|--no-patch
>      diff-parseopt: convert --stat*
>      diff-parseopt: convert --[no-]compact-summary
>      diff-parseopt: convert --output-*
>      diff-parseopt: convert -B|--break-rewrites
>      diff-parseopt: convert -M|--find-renames
>      diff-parseopt: convert -D|--irreversible-delete
>      diff-parseopt: convert -C|--find-copies
>      diff-parseopt: convert --find-copies-harder
>      diff-parseopt: convert --no-renames|--[no--rename-empty
>      diff-parseopt: convert --relative
>      diff-parseopt: convert --[no-]minimal
>      diff-parseopt: convert --ignore-some-changes
>      Delete check-racy.c
>      diff-parseopt: convert --[no-]indent-heuristic
>      diff-parseopt: convert --patience
>      diff-parseopt: convert --histogram
>      diff-parseopt: convert --diff-algorithm
>      diff-parseopt: convert --anchored
>      diff-parseopt: convert --binary
>      diff-parseopt: convert --full-index
>      diff-parseopt: convert -a|--text
>      diff-parseopt: convert -R
>      diff-parseopt: convert --[no-]follow
>      diff-parseopt: convert --[no-]color
>      diff-parseopt: convert --word-diff
>      diff-parseopt: convert --word-diff-regex
>      diff-parseopt: convert --color-words
>      diff-parseopt: convert --exit-code
>      diff-parseopt: convert --quiet
>      diff-parseopt: convert --ext-diff
>      diff-parseopt: convert --textconv
>      diff-parseopt: convert --ignore-submodules
>      diff-parseopt: convert --submodule
>      files-backend.c: factor out per-worktree code in loose_fill_ref_dir()
>      files-backend.c: reduce duplication in add_per_worktree_entries_to_dir()
>      Make sure refs/rewritten/ is per-worktree
>      unpack-trees: fix oneway_merge accidentally carry over stage index
>      checkout.txt: note about losing staged changes with --merge
>      commit: improve error message in "-a <paths>" case
>      unpack-trees: keep gently check inside add_rejected_path
>      unpack-trees: rename "gently" flag to "quiet"
>      read-tree: add --quiet
>      checkout: prevent losing staged changes with --merge
>      diff-parseopt: convert --ws-error-highlight
>      diff-parseopt: convert --ita-[in]visible-in-index
>      diff-parseopt: convert -z
>      diff-parseopt: convert -l
>      diff-parseopt: convert -S|-G
>      diff-parseopt: convert --pickaxe-all|--pickaxe-regex
>      diff-parseopt: convert -O
>      diff-parseopt: convert --find-object
>      diff-parseopt: convert --diff-filter
>      diff-parseopt: convert --[no-]abbrev
>      diff-parseopt: convert --[src|dst]-prefix
>      diff-parseopt: convert --line-prefix
>      diff-parseopt: convert --no-prefix
>      diff-parseopt: convert --inter-hunk-context
>      diff-parseopt: convert --[no-]color-moved
>      diff-parseopt: convert --color-moved-ws
>      diff.c: allow --no-color-moved-ws
>      range-diff: use parse_options() instead of diff_opt_parse()
>      diff --no-index: use parse_options() instead of diff_opt_parse()
>      am: avoid diff_opt_parse()
>      config: correct '**' matching in includeIf patterns
>      interpret-trailers.txt: start the desc line with a capital letter
>      read-tree.txt: clarify --reset and worktree changes
>      packfile.c: add repo_approximate_object_count()
>      refs.c: add refs_ref_exists()
>      refs.c: add refs_shorten_unambiguous_ref()
>      refs.c: remove the_repo from substitute_branch_name()
>      refs.c: remove the_repo from expand_ref()
>      refs.c: add repo_dwim_ref()
>      refs.c: add repo_dwim_log()
>      refs.c: remove the_repo from read_ref_at()
>      submodule foreach: fix "<command> --quiet" not being respected
>      commit.cocci: refactor code, avoid double rewrite
>      commit.c: add repo_get_commit_tree()
>      sha1-name.c: remove the_repo from sort_ambiguous()
>      sha1-name.c: remove the_repo from find_abbrev_len_packed()
>      sha1-name.c: add repo_find_unique_abbrev_r()
>      sha1-name.c: store and use repo in struct disambiguate_state
>      sha1-name.c: add repo_for_each_abbrev()
>      sha1-name.c: remove the_repo from get_short_oid()
>      sha1-name.c: remove the_repo from interpret_nth_prior_checkout()
>      sha1-name.c: remove the_repo from interpret_branch_mark()
>      sha1-name.c: add repo_interpret_branch_name()
>      sha1-name.c: remove the_repo from get_oid_oneline()
>      sha1-name.c: remove the_repo from get_describe_name()
>      sha1-name.c: remove the_repo from get_oid_basic()
>      sha1-name.c: remove the_repo from get_oid_1()
>      sha1-name.c: remove the_repo from handle_one_ref()
>      sha1-name.c: remove the_repo from diagnose_invalid_index_path()
>      sha1-name.c: remove the_repo from resolve_relative_path()
>      sha1-name.c: remove the_repo from get_oid_with_context_1()
>      sha1-name.c: add repo_get_oid()
>      submodule-config.c: use repo_get_oid for reading .gitmodules
>      sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name
>      sha1-name.c: remove the_repo from other get_oid_*
>      sha1-name.c: remove the_repo from get_oid_mb()
>      parse-options: don't emit "ambiguous option" for aliases
>      submodule--helper: add a missing \n
>      diff-parseopt: correct variable types that are used by parseopt
>      diff-parseopt: restore -U (no argument) behavior
>      parse-options: check empty value in OPT_INTEGER and OPT_ABBREV
>
>Paul-Sebastian Ungureanu (17):
>      sha1-name.c: add `get_oidf()` which acts like `get_oid()`
>      strbuf.c: add `strbuf_join_argv()`
>      strbuf.c: add `strbuf_insertf()` and `strbuf_vinsertf()`
>      t3903: modernize style
>      stash: rename test cases to be more descriptive
>      stash: add tests for `git stash show` config
>      stash: mention options in `show` synopsis
>      stash: convert list to builtin
>      stash: convert show to builtin
>      stash: convert store to builtin
>      stash: convert create to builtin
>      stash: convert push to builtin
>      stash: make push -q quiet
>      stash: convert save to builtin
>      stash: optimize `get_untracked_files()` and `check_changes()`
>      stash: replace all `write-tree` child processes with API calls
>      stash: convert `stash--helper.c` into `stash.c`
>
>Philip Oakley (2):
>      rerere doc: quote `rerere.enabled`
>      describe doc: remove '7-char' abbreviation reference
>
>Phillip Wood (21):
>      am/cherry-pick/rebase/revert: document --rerere-autoupdate
>      merge: tweak --rerere-autoupdate documentation
>      sequencer: break some long lines
>      cherry-pick: demonstrate option amnesia
>      cherry-pick --continue: remember options
>      commit/reset: try to clean up sequencer state
>      fix cherry-pick/revert status after commit
>      sequencer: fix cleanup with --signoff and -x
>      sequencer.c: save and restore cleanup mode
>      sequencer: always discard index after checkout
>      rebase: don't translate trace strings
>      rebase: rename write_basic_state()
>      rebase: use OPT_RERERE_AUTOUPDATE()
>      rebase -i: combine rebase--interactive.c with rebase.c
>      rebase -i: remove duplication
>      rebase -i: use struct commit when parsing options
>      rebase -i: use struct object_id for squash_onto
>      rebase -i: use struct rebase_options to parse args
>      rebase -i: use struct rebase_options in do_interactive_rebase()
>      rebase: use a common action enum
>      rebase -i: run without forking rebase--interactive
>
>Ramsay Jones (2):
>      prune-packed: check for too many arguments
>      Makefile: fix 'hdr-check' when GCRYPT not installed
>
>René Scharfe (1):
>      get-tar-commit-id: parse comment record
>
>Robert P. J. Day (3):
>      mention use of "hooks.allownonascii" in "man githooks"
>      docs/git-gc: fix typo "--prune=all" to "--prune=now"
>      attr.c: ".gitattribute" -> ".gitattributes" (comments)
>
>Rohit Ashiwal (3):
>      test functions: add function `test_file_not_empty`
>      t3600: modernize style
>      t3600: use helpers to replace test -d/f/e/s <path>
>
>SZEDER Gábor (27):
>      test-lib: fix interrupt handling with 'dash' and '--verbose-log -x'
>      t/lib-git-daemon: make sure to kill the 'git-daemon' process
>      tests: use 'test_atexit' to stop httpd
>      t0301-credential-cache: use 'test_atexit' to stop the credentials helper
>      git p4 test: clean up the p4d cleanup functions
>      git p4 test: simplify timeout handling
>      git p4 test: disable '-x' tracing in the p4d watchdog loop
>      t9811-git-p4-label-import: fix pipeline negation
>      t5318-commit-graph: remove unused variable
>      Documentation/git-diff-tree.txt: fix formatting
>      Documentation/technical/api-config.txt: fix formatting
>      Documentation/technical/protocol-v2.txt: fix formatting
>      ci: install Asciidoctor in 'ci/install-dependencies.sh'
>      index-pack: show progress while checking objects
>      ci: stick with Asciidoctor v1.5.8 for now
>      ci: fix AsciiDoc/Asciidoctor stderr check in the documentation build job
>      progress: make display_progress() return void
>      progress: assemble percentage and counters in a strbuf before printing
>      blame: default to HEAD in a bare repo when no start commit is given
>      builtin rebase: use FREE_AND_NULL
>      builtin rebase: use oideq()
>      progress: clear previous progress update dynamically
>      progress: break too long progress bar lines
>      ci: install 'libsvn-perl' instead of 'git-svn'
>      trace2: rename environment variables to GIT_TRACE2*
>      trace2: document the supported values of GIT_TRACE2* env variables
>      progress: avoid empty line when breaking the progress line
>
>Sun Chao (2):
>      pack-redundant: delete redundant code
>      pack-redundant: new algorithm to find min packs
>
>Sven Strickroth (1):
>      MSVC: include compat/win32/path-utils.h for MSVC, too, for real_path()
>
>Tanushree Tumane (1):
>      mingw: remove obsolete IPv6-related code
>
>Taylor Blau (4):
>      t: move 'hex2oct' into test-lib-functions.sh
>      t: introduce tests for unexpected object types
>      list-objects.c: handle unexpected non-blob entries
>      list-objects.c: handle unexpected non-tree entries
>
>Thomas Gummerer (15):
>      move worktree tests to t24*
>      entry: factor out unlink_entry function
>      entry: support CE_WT_REMOVE flag in checkout_entry
>      read-cache: add invalidate parameter to remove_marked_cache_entries
>      checkout: clarify comment
>      checkout: factor out mark_cache_entry_for_checkout function
>      checkout: introduce --{,no-}overlay option
>      checkout: introduce checkout.overlayMode config
>      revert "checkout: introduce checkout.overlayMode config"
>      ident: don't require calling prepare_fallback_ident first
>      stash: drop unused parameter
>      stash: pass pathspec as pointer
>      glossary: add definition for overlay
>      stash: setup default diff output format if necessary
>      ls-files: use correct format string
>
>Todd Zullinger (9):
>      t4038-diff-combined: quote paths with whitespace
>      t9902: test multiple removals via completion.commands
>      completion: use __git when calling --list-cmds
>      Documentation/rev-list-options: wrap --date=<format> block with "--"
>      Documentation/git-status: fix titles in porcelain v2 section
>      Documentation/git-svn: improve asciidoctor compatibility
>      Documentation/git-show-branch: avoid literal {apostrophe}
>      test-lib: try harder to ensure a working jgit
>      RelNotes: minor typo fixes in 2.22.0 draft
>
>Torsten Bögershausen (1):
>      trace2: NULL is not allowed for va_list
>
>Trần Ngọc Quân (1):
>      l10n: Updated Vietnamese translation for v2.21 rd2
>
>Vadim Kochan (1):
>      autoconf: #include <libintl.h> when checking for gettext()
>
>William Hubbs (1):
>      config: allow giving separate author and committer idents
>
>Yash Bhatambare (1):
>      gitattributes.txt: fix typo
>
>brian m. carlson (35):
>      t/lib-submodule-update: use appropriate length constant
>      khash: move oid hash table definition
>      pack-bitmap: make bitmap header handling hash agnostic
>      pack-bitmap: convert struct stored_bitmap to object_id
>      pack-bitmap: replace sha1_to_hex
>      pack-bitmap: switch hard-coded constants to the_hash_algo
>      pack-bitmap: switch hash tables to use struct object_id
>      submodule: avoid hard-coded constants
>      notes-merge: switch to use the_hash_algo
>      notes: make hash size independent
>      notes: replace sha1_to_hex
>      object-store: rename and expand packed_git's sha1 member
>      builtin/name-rev: make hash-size independent
>      fast-import: make hash-size independent
>      fast-import: replace sha1_to_hex
>      builtin/am: make hash size independent
>      builtin/pull: make hash-size independent
>      http-push: convert to use the_hash_algo
>      http-backend: allow 64-character hex names
>      http-push: remove remaining uses of sha1_to_hex
>      http-walker: replace sha1_to_hex
>      http: replace hard-coded constant with the_hash_algo
>      http: compute hash of downloaded objects using the_hash_algo
>      http: replace sha1_to_hex
>      remote-curl: make hash size independent
>      hash: add a function to lookup hash algorithm by length
>      builtin/get-tar-commit-id: make hash size independent
>      archive: convert struct archiver_args to object_id
>      refspec: make hash size independent
>      builtin/difftool: use parse_oid_hex
>      dir: make untracked cache extension hash size independent
>      read-cache: read data in a hash-independent way
>      Git.pm: make hash size independent
>      gitweb: make hash size independent
>      send-email: default to quoted-printable when CR is present
>
>Ævar Arnfjörð Bjarmason (44):
>      receive-pack: fix use-after-free bug
>      commit-graph tests: split up corrupt_graph_and_verify()
>      commit-graph tests: test a graph that's too small
>      Makefile: remove an out-of-date comment
>      Makefile: move "strip" assignment down from flags
>      Makefile: add/remove comments at top and tweak whitespace
>      Makefile: Move *_LIBS assignment into its own section
>      Makefile: move the setting of *FLAGS closer to "include"
>      Makefile: allow for combining DEVELOPER=1 and CFLAGS="..."
>      gc: remove redundant check for gc_auto_threshold
>      gc: convert to using the_hash_algo
>      gc: refactor a "call me once" pattern
>      reflog tests: make use of "test_config" idiom
>      reflog tests: test for the "points nowhere" warning
>      rebase: remove the rebase.useBuiltin setting
>      gc docs: modernize the advice for manually running "gc"
>      gc docs: stop noting "repack" flags
>      gc docs: clean grammar for "gc.bigPackThreshold"
>      commit-graph: fix segfault on e.g. "git status"
>      commit-graph: don't early exit(1) on e.g. "git status"
>      commit-graph: don't pass filename to load_commit_graph_one_fd_st()
>      commit-graph verify: detect inability to read the graph
>      commit-graph write: don't die if the existing graph is corrupt
>      commit-graph: improve & i18n error messages
>      reflog tests: assert lack of early exit with expiry="never"
>      gc: handle & check gc.reflogExpire config
>      test-lib: whitelist GIT_TR2_* in the environment
>      gc docs: include the "gc.*" section from "config" in "gc"
>      gc docs: re-flow the "gc.*" section in "config"
>      gc docs: fix formatting for "gc.writeCommitGraph"
>      gc docs: note how --aggressive impacts --window & --depth
>      gc docs: downplay the usefulness of --aggressive
>      gc docs: note "gc --aggressive" in "fast-import"
>      gc docs: clarify that "gc" doesn't throw away referenced objects
>      gc docs: remove incorrect reference to gc.auto=0
>      perf README: correct docs for 3c8f12c96c regression
>      perf aggregate: remove GIT_TEST_INSTALLED from --codespeed
>      perf-lib.sh: make "./run <revisions>" use the correct gits
>      perf-lib.sh: remove GIT_TEST_INSTALLED from perf-lib.sh
>      perf tests: add "bindir" prefix to git tree test results
>      perf-lib.sh: forbid the use of GIT_TEST_INSTALLED
>      trace2: fix up a missing "leave" entry point
>      trace2: fix up a missing "leave" entry point
>      sha1dc: update from upstream
>
>İsmail Dönmez (2):
>      mingw: do not let ld strip relocations
>      mingw: enable DEP and ASLR
>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[relevance 0%]

* Re: [ANNOUNCE] Git v2.22.0-rc3
  2019-06-03 20:23  2% [ANNOUNCE] Git v2.22.0-rc3 Junio C Hamano
@ 2019-06-04  1:32  0% ` Ben Humphreys
  2019-06-04  1:47  0% ` Bhaskar Chowdhury
  2019-06-04 14:45  0% ` Git for Windows v2.22.0-rc3, was " Johannes Schindelin
  2 siblings, 0 replies; 162+ results
From: Ben Humphreys @ 2019-06-04  1:32 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

Hi folks,

I’m one of the Bitbucket Server developers and I just wanted to let
you know of one of our test cases that is now failing on the 2.22.0
release candidates (tested rc2 and rc3). I’m still looking into it,
but figure the release is probably imminent so worth reporting sooner
than later.

The problem seems to be related to some recent changes in
merge-recursive.c. I’ve made available our test dataset and the
following steps will reproduce the problem:

$ git --version
git version 2.22.0.rc3

$ git clone https://bitbucket.org/ben_humphreys/merge-dataset.git
$ cd merge-dataset
$ git checkout branch_that_has_rename_add_triggering_content_conflict_trgt
$ git merge origin/branch_that_has_rename_add_triggering_content_conflict_src
Assertion failed: (a->path && b->path), function merge_3way, file
merge-recursive.c, line 1044.
Abort trap: 6

The assertion is failing because b->path is null:

(lldb) print a->path
(char *const) $2 = 0x00007f8e177025f8 "count.txt"
(lldb) print b->path
(char *const) $3 = 0x0000000000000000 <no value available>

On Git 2.21.0 the merge succeeds (with conflicts as expected):

$ git merge origin/branch_that_has_rename_add_triggering_content_conflict_src
CONFLICT (rename/add): Rename numbers.txt->count.txt in
origin/branch_that_has_rename_add_triggering_content_conflict_src.
Added count.txt in HEAD
Auto-merging version of count.txt from numbers.txt
Auto-merging count.txt
Automatic merge failed; fix conflicts and then commit the result.

I’ll let you know if I get any further investigating this.

Best Regards,
Ben Humphreys


On Tue, Jun 4, 2019 at 6:23 AM Junio C Hamano <gitster@pobox.com> wrote:
>
> A release candidate Git v2.22.0-rc3 is now available for testing
> at the usual places.  It is comprised of 718 non-merge commits
> since v2.21.0, contributed by 67 people, 17 of which are new faces.
>
> Hopefully, this will be the last -rc during this cycle.
>
> 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.22.0-rc3' 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.21.0 are as follows.
> Welcome to the Git development community!
>
>   Alexander Blesius, Baruch Siach, Boxuan Li, Chris Mayo,
>   Chris. Webster, Clément Chigot, Corentin BOMPARD, Damien Robert,
>   Dustin Spicuzza, Emily Shaffer, Michal Suchanek, Rohit Ashiwal,
>   Sun Chao, Tanushree Tumane, Vadim Kochan, William Hubbs, and
>   Yash Bhatambare.
>
> Returning contributors who helped this release are as follows.
> Thanks for your continued support.
>
>   Ævar Arnfjörð Bjarmason, Alban Gruin, Alexander Shopov, Anders
>   Waldenborg, Andreas Heiduk, Andrei Rybak, Beat Bolli, Ben Peart,
>   Brandon Richardson, brian m. carlson, Carlo Marcelo Arenas
>   Belón, Christian Couder, Daniels Umanovskis, David Aguilar,
>   David Kastrup, Denton Liu, Derrick Stolee, Elijah Newren, Eric
>   Sunshine, Eric Wong, İsmail Dönmez, Jean-Noël Avila, Jeff
>   Hostetler, Jeff King, Jiang Xin, Joel Teichroeb, Joey Hess,
>   Johannes Schindelin, Jonathan Tan, Jordi Mas, Josh Steadmon,
>   Junio C Hamano, Kyle Meyer, Martin Ågren, Matthew Kraai, Mike
>   Hommey, Nguyễn Thái Ngọc Duy, Paul-Sebastian Ungureanu,
>   Philip Oakley, Phillip Wood, Ramsay Jones, René Scharfe,
>   Robert P. J. Day, Sven Strickroth, SZEDER Gábor, Taylor Blau,
>   Thomas Gummerer, Todd Zullinger, Torsten Bögershausen, and
>   Trần Ngọc Quân.
>
> ----------------------------------------------------------------
>
> Git 2.22 Release Notes (draft)
> ==============================
>
> Updates since v2.21
> -------------------
>
> Backward compatibility note
>
>  * The filter specification "--filter=sparse:path=<path>" used to
>    create a lazy/partial clone has been removed.  Using a blob that is
>    part of the project as sparse specification is still supported with
>    the "--filter=sparse:oid=<blob>" option.
>
> UI, Workflows & Features
>
>  * "git checkout --no-overlay" can be used to trigger a new mode of
>    checking out paths out of the tree-ish, that allows paths that
>    match the pathspec that are in the current index and working tree
>    and are not in the tree-ish.
>
>  * The %(trailers) formatter in "git log --format=..."  now allows to
>    optionally pick trailers selectively by keyword, show only values,
>    etc.
>
>  * Four new configuration variables {author,committer}.{name,email}
>    have been introduced to override user.{name,email} in more specific
>    cases.
>
>  * Command-line completion (in contrib/) learned to tab-complete the
>    "git submodule absorbgitdirs" subcommand.
>
>  * "git branch" learned a new subcommand "--show-current".
>
>  * Output from "diff --cc" did not show the original paths when the
>    merge involved renames.  A new option adds the paths in the
>    original trees to the output.
>
>  * The command line completion (in contrib/) has been taught to
>    complete more subcommand parameters.
>
>  * The final report from "git bisect" used to show the suspected
>    culprit using a raw "diff-tree", with which there is no output for
>    a merge commit.  This has been updated to use a more modern and
>    human readable output that still is concise enough.
>
>  * "git rebase --rebase-merges" replaces its old "--preserve-merges"
>    option; the latter is now marked as deprecated.
>
>  * Error message given while cloning with --recurse-submodules has
>    been updated.
>
>  * The completion helper code now pays attention to repository-local
>    configuration (when available), which allows --list-cmds to honour
>    a repository specific setting of completion.commands, for example.
>
>  * "git mergetool" learned to offer Sublime Merge (smerge) as one of
>    its backends.
>
>  * A new hook "post-index-change" is called when the on-disk index
>    file changes, which can help e.g. a virtualized working tree
>    implementation.
>
>  * "git difftool" can now run outside a repository.
>
>  * "git checkout -m <other>" was about carrying the differences
>    between HEAD and the working-tree files forward while checking out
>    another branch, and ignored the differences between HEAD and the
>    index.  The command has been taught to abort when the index and the
>    HEAD are different.
>
>  * A progress indicator has been added to the "index-pack" step, which
>    often makes users wait for completion during "git clone".
>
>  * "git submodule" learns "set-branch" subcommand that allows the
>    submodule.*.branch settings to be modified.
>
>  * "git merge-recursive" backend recently learned a new heuristics to
>    infer file movement based on how other files in the same directory
>    moved.  As this is inherently less robust heuristics than the one
>    based on the content similarity of the file itself (rather than
>    based on what its neighbours are doing), it sometimes gives an
>    outcome unexpected by the end users.  This has been toned down to
>    leave the renamed paths in higher/conflicted stages in the index so
>    that the user can examine and confirm the result.
>
>  * "git tag" learned to give an advice suggesting it might be a
>    mistake when creating an annotated or signed tag that points at
>    another tag.
>
>  * The "git pack-objects" command learned to report the number of
>    objects it packed via the trace2 mechanism.
>
>  * The list of conflicted paths shown in the editor while concluding a
>    conflicted merge was shown above the scissors line when the
>    clean-up mode is set to "scissors", even though it was commented
>    out just like the list of updated paths and other information to
>    help the user explain the merge better.
>
>  * The trace2 tracing facility learned to auto-generate a filename
>    when told to log to a directory.
>
>  * "git clone" learned a new --server-option option when talking over
>    the protocol version 2.
>
>  * The connectivity bitmaps are created by default in bare
>    repositories now; also the pathname hash-cache is created by
>    default to avoid making crappy deltas when repacking.
>
>  * "git branch new A...B" and "git checkout -b new A...B" have been
>    taught that in their contexts, the notation A...B means "the merge
>    base between these two commits", just like "git checkout A...B"
>    detaches HEAD at that commit.
>
>  * Update "git difftool" and "git mergetool" so that the combinations
>    of {diff,merge}.{tool,guitool} configuration variables serve as
>    fallback settings of each other in a sensible order.
>
>  * The "--dir-diff" mode of "git difftool" is not useful in "--no-index"
>    mode; they are now explicitly marked as mutually incompatible.
>
>
> Performance, Internal Implementation, Development Support etc.
>
>  * The diff machinery, one of the oldest parts of the system, which
>    long predates the parse-options API, uses fairly long and complex
>    handcrafted option parser.  This is being rewritten to use the
>    parse-options API.
>
>  * The implementation of pack-redundant has been updated for
>    performance in a repository with many packfiles.
>
>  * A more structured way to obtain execution trace has been added.
>
>  * "git prune" has been taught to take advantage of reachability
>    bitmap when able.
>
>  * The command line parser of "git commit-tree" has been rewritten to
>    use the parse-options API.
>
>  * Suggest GitGitGadget instead of submitGit as a way to submit
>    patches based on GitHub PR to us.
>
>  * The test framework has been updated to help developers by making it
>    easier to run most of the tests under different versions of
>    over-the-wire protocols.
>
>  * Dev support update to make it easier to compare two formatted
>    results from our documentation.
>
>  * The scripted "git rebase" implementation has been retired.
>
>  * "git multi-pack-index verify" did not scale well with the number of
>    packfiles, which is being improved.
>
>  * "git stash" has been rewritten in C.
>
>  * The "check-docs" Makefile target to support developers has been
>    updated.
>
>  * The tests have been updated not to rely on the abbreviated option
>    names the parse-options API offers, to protect us from an
>    abbreviated form of an option that used to be unique within the
>    command getting non-unique when a new option that share the same
>    prefix is added.
>
>  * The scripted version of "git rebase -i" wrote and rewrote the todo
>    list many times during a single step of its operation, and the
>    recent C-rewrite made a faithful conversion of the logic to C.  The
>    implementation has been updated to carry necessary information
>    around in-core to avoid rewriting the same file over and over
>    unnecessarily.
>
>  * Test framework update to more robustly clean up leftover files and
>    processes after tests are done.
>
>  * Conversion from unsigned char[20] to struct object_id continues.
>
>  * While running "git diff" in a lazy clone, we can upfront know which
>    missing blobs we will need, instead of waiting for the on-demand
>    machinery to discover them one by one.  The code learned to aim to
>    achieve better performance by batching the request for these
>    promised blobs.
>
>  * During an initial "git clone --depth=..." partial clone, it is
>    pointless to spend cycles for a large portion of the connectivity
>    check that enumerates and skips promisor objects (which by
>    definition is all objects fetched from the other side).  This has
>    been optimized out.
>
>  * Mechanically and systematically drop "extern" from function
>    declaration.
>
>  * The script to aggregate perf result unconditionally depended on
>    libjson-perl even though it did not have to, which has been
>    corrected.
>
>  * The internal implementation of "git rebase -i" has been updated to
>    avoid forking a separate "rebase--interactive" process.
>
>  * Allow DEP and ASLR for Windows build to for security hardening.
>
>  * Performance test framework has been broken and measured the version
>    of Git that happens to be on $PATH, not the specified one to
>    measure, for a while, which has been corrected.
>
>  * Optionally "make coccicheck" can feed multiple source files to
>    spatch, gaining performance while spending more memory.
>
>  * Attempt to use an abbreviated option in "git clone --recurs" is
>    responded by a request to disambiguate between --recursive and
>    --recurse-submodules, which is bad because these two are synonyms.
>    The parse-options API has been extended to define such synonyms
>    more easily and not produce an unnecessary failure.
>
>  * A pair of private functions in http.c that had names similar to
>    fread/fwrite did not return the number of elements, which was found
>    to be confusing.
>
>  * Update collision-detecting SHA-1 code to build properly on HP-UX.
>
>
> Fixes since v2.21
> -----------------
>
>  * "git prune-packed" did not notice and complain against excess
>    arguments given from the command line, which now it does.
>    (merge 9b0bd87ed2 rj/prune-packed-excess-args later to maint).
>
>  * Split-index fix.
>    (merge 6e37c8ed3c nd/split-index-null-base-fix later to maint).
>
>  * "git diff --no-index" may still want to access Git goodies like
>    --ext-diff and --textconv, but so far these have been ignored,
>    which has been corrected.
>    (merge 287ab28bfa jk/diff-no-index-initialize later to maint).
>
>  * Unify RPC code for smart http in protocol v0/v1 and v2, which fixes
>    a bug in the latter (lack of authentication retry) and generally
>    improves the code base.
>    (merge a97d00799a jt/http-auth-proto-v2-fix later to maint).
>
>  * The include file compat/bswap.h has been updated so that it is safe
>    to (accidentally) include it more than once.
>    (merge 33aa579a55 jk/guard-bswap-header later to maint).
>
>  * The set of header files used by "make hdr-check" unconditionally
>    included sha256/gcrypt.h, even when it is not used, causing the
>    make target to fail.  We now skip it when GCRYPT_SHA256 is not in
>    use.
>    (merge f23aa18e7f rj/hdr-check-gcrypt-fix later to maint).
>
>  * The Makefile uses 'find' utility to enumerate all the *.h header
>    files, which is expensive on platforms with slow filesystems; it
>    now optionally uses "ls-files" if working within a repository,
>    which is a trick similar to how all sources are enumerated to run
>    ETAGS on.
>    (merge 92b88eba9f js/find-lib-h-with-ls-files-when-possible later to maint).
>
>  * "git rebase" that was reimplemented in C did not set ORIG_HEAD
>    correctly, which has been corrected.
>    (merge cbd29ead92 js/rebase-orig-head-fix later to maint).
>
>  * Dev support.
>    (merge f545737144 js/stress-test-ui-tweak later to maint).
>
>  * CFLAGS now can be tweaked when invoking Make while using
>    DEVELOPER=YesPlease; this did not work well before.
>    (merge 6d5d4b4e93 ab/makefile-help-devs-more later to maint).
>
>  * "git fsck --connectivity-only" omits computation necessary to sift
>    the objects that are not reachable from any of the refs into
>    unreachable and dangling.  This is now enabled when dangling
>    objects are requested (which is done by default, but can be
>    overridden with the "--no-dangling" option).
>    (merge 8d8c2a5aef jk/fsck-doc later to maint).
>
>  * On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX),
>    the upload-pack that runs on the other end that hangs up after
>    detecting an error could cause "git fetch" to die with a signal,
>    which led to a flaky test.  "git fetch" now ignores SIGPIPE during
>    the network portion of its operation (this is not a problem as we
>    check the return status from our write(2)s).
>    (merge 143588949c jk/no-sigpipe-during-network-transport later to maint).
>
>  * A recent update broke "is this object available to us?" check for
>    well-known objects like an empty tree (which should yield "yes",
>    even when there is no on-disk object for an empty tree), which has
>    been corrected.
>    (merge f06ab027ef jk/virtual-objects-do-exist later to maint).
>
>  * The setup code has been cleaned up to avoid leaks around the
>    repository_format structure.
>    (merge e8805af1c3 ma/clear-repository-format later to maint).
>
>  * "git config --type=color ..." is meant to replace "git config --get-color"
>    but there is a slight difference that wasn't documented, which is
>    now fixed.
>    (merge cd8e7593b9 jk/config-type-color-ends-with-lf later to maint).
>
>  * When the "clean" filter can reduce the size of a huge file in the
>    working tree down to a small "token" (a la Git LFS), there is no
>    point in allocating a huge scratch area upfront, but the buffer is
>    sized based on the original file size.  The convert mechanism now
>    allocates very minimum and reallocates as it receives the output
>    from the clean filter process.
>    (merge 02156ab031 jh/resize-convert-scratch-buffer later to maint).
>
>  * "git rebase" uses the refs/rewritten/ hierarchy to store its
>    intermediate states, which inherently makes the hierarchy per
>    worktree, but it didn't quite work well.
>    (merge b9317d55a3 nd/rewritten-ref-is-per-worktree later to maint).
>
>  * "git log -L<from>,<to>:<path>" with "-s" did not suppress the patch
>    output as it should.  This has been corrected.
>    (merge 05314efaea jk/line-log-with-patch later to maint).
>
>  * "git worktree add" used to do a "find an available name with stat
>    and then mkdir", which is race-prone.  This has been fixed by using
>    mkdir and reacting to EEXIST in a loop.
>    (merge 7af01f2367 ms/worktree-add-atomic-mkdir later to maint).
>
>  * Build update for SHA-1 with collision detection.
>    (merge 07a20f569b jk/sha1dc later to maint).
>
>  * Build procedure has been fixed around use of asciidoctor instead of
>    asciidoc.
>    (merge 185f9a0ea0 ma/asciidoctor-fixes later to maint).
>
>  * remote-http transport did not anonymize URLs reported in its error
>    messages at places.
>    (merge c1284b21f2 js/anonymize-remote-curl-diag later to maint).
>
>  * Error messages given from the http transport have been updated so
>    that they can be localized.
>    (merge ed8b4132c8 js/remote-curl-i18n later to maint).
>
>  * "git init" forgot to read platform-specific repository
>    configuration, which made Windows port to ignore settings of
>    core.hidedotfiles, for example.
>
>  * A corner-case object name ambiguity while the sequencer machinery
>    is working (e.g. "rebase -i -x") has been fixed.
>
>  * "git format-patch" did not diagnose an error while opening the
>    output file for the cover-letter, which has been corrected.
>    (merge 2fe95f494c jc/format-patch-error-check later to maint).
>
>  * "git checkout -f <branch>" while the index has an unmerged path
>    incorrectly left some paths in an unmerged state, which has been
>    corrected.
>
>  * A corner case bug in the refs API has been corrected.
>    (merge d3322eb28b jk/refs-double-abort later to maint).
>
>  * Unicode update.
>    (merge 584b62c37b bb/unicode-12 later to maint).
>
>  * dumb-http walker has been updated to share more error recovery
>    strategy with the normal codepath.
>
>  * A buglet in configuration parser has been fixed.
>    (merge 19e7fdaa58 nd/include-if-wildmatch later to maint).
>
>  * The documentation for "git read-tree --reset -u" has been updated.
>    (merge b5a0bd694c nd/read-tree-reset-doc later to maint).
>
>  * Code clean-up around a much-less-important-than-it-used-to-be
>    update_server_info() function.
>    (merge b3223761c8 jk/server-info-rabbit-hole later to maint).
>
>  * The message given when "git commit -a <paths>" errors out has been
>    updated.
>    (merge 5a1dbd48bc nd/commit-a-with-paths-msg-update later to maint).
>
>  * "git cherry-pick --options A..B", after giving control back to the
>    user to ask help resolving a conflicted step, did not honor the
>    options it originally received, which has been corrected.
>
>  * Various glitches in "git gc" around reflog handling have been fixed.
>
>  * The code to read from commit-graph file has been cleanup with more
>    careful error checking before using data read from it.
>
>  * Performance fix around "git fetch" that grabs many refs.
>    (merge b764300912 jt/fetch-pack-wanted-refs-optim later to maint).
>
>  * Protocol v2 support in "git fetch-pack" of shallow clones has been
>    corrected.
>
>  * Performance fix around "git blame", especially in a linear history
>    (which is the norm we should optimize for).
>    (merge f892014943 dk/blame-keep-origin-blob later to maint).
>
>  * Performance fix for "rev-list --parents -- pathspec".
>    (merge 8320b1dbe7 jk/revision-rewritten-parents-in-prio-queue later to maint).
>
>  * Updating the display with progress message has been cleaned up to
>    deal better with overlong messages.
>    (merge 545dc345eb sg/overlong-progress-fix later to maint).
>
>  * "git blame -- path" in a non-bare repository starts blaming from
>    the working tree, and the same command in a bare repository errors
>    out because there is no working tree by definition.  The command
>    has been taught to instead start blaming from the commit at HEAD,
>    which is more useful.
>    (merge a544fb08f8 sg/blame-in-bare-start-at-head later to maint).
>
>  * An underallocation in the code to read the untracked cache
>    extension has been corrected.
>    (merge 3a7b45a623 js/untracked-cache-allocfix later to maint).
>
>  * The code is updated to check the result of memory allocation before
>    it is used in more places, by using xmalloc and/or xcalloc calls.
>    (merge 999b951b28 jk/xmalloc later to maint).
>
>  * The GETTEXT_POISON test option has been quite broken ever since it
>    was made runtime-tunable, which has been fixed.
>    (merge f88b9cb603 jc/gettext-test-fix later to maint).
>
>  * Test fix on APFS that is incapable of store paths in Latin-1.
>    (merge 3889149619 js/iso8895-test-on-apfs later to maint).
>
>  * "git submodule foreach <command> --quiet" did not pass the option
>    down correctly, which has been corrected.
>    (merge a282f5a906 nd/submodule-foreach-quiet later to maint).
>
>  * "git send-email" has been taught to use quoted-printable when the
>    payload contains carriage-return.  The use of the mechanism is in
>    line with the design originally added the codepath that chooses QP
>    when the payload has overly long lines.
>    (merge 74d76a1701 bc/send-email-qp-cr later to maint).
>
>  * The recently added feature to add addresses that are on
>    anything-by: trailers in 'git send-email' was found to be way too
>    eager and considered nonsense strings as if they can be legitimate
>    beginning of *-by: trailer.  This has been tightened.
>
>  * Builds with gettext broke on recent macOS w/ Homebrew, which
>    seems to have stopped including from /usr/local/include; this
>    has been corrected.
>    (merge 92a1377a2a js/macos-gettext-build later to maint).
>
>  * Running "git add" on a repository created inside the current
>    repository is an explicit indication that the user wants to add it
>    as a submodule, but when the HEAD of the inner repository is on an
>    unborn branch, it cannot be added as a submodule.  Worse, the files
>    in its working tree can be added as if they are a part of the outer
>    repository, which is not what the user wants.  These problems are
>    being addressed.
>    (merge f937bc2f86 km/empty-repo-is-still-a-repo later to maint).
>
>  * "git cherry-pick" run with the "-x" or the "--signoff" option used
>    to (and more importantly, ought to) clean up the commit log message
>    with the --cleanup=space option by default, but this has been
>    broken since late 2017.  This has been fixed.
>
>  * When given a tag that points at a commit-ish, "git replace --graft"
>    failed to peel the tag before writing a replace ref, which did not
>    make sense because the old graft mechanism the feature wants to
>    mimic only allowed to replace one commit object with another.
>    This has been fixed.
>    (merge ee521ec4cb cc/replace-graft-peel-tags later to maint).
>
>  * Code tightening against a "wrong" object appearing where an object
>    of a different type is expected, instead of blindly assuming that
>    the connection between objects are correctly made.
>    (merge 97dd512af7 tb/unexpected later to maint).
>
>  * An earlier update for MinGW and Cygwin accidentally broke MSVC build,
>    which has been fixed.
>    (merge 22c3634c0f ss/msvc-path-utils-fix later to maint).
>
>  * %(push:track) token used in the --format option to "git
>    for-each-ref" and friends was not showing the right branch, which
>    has been fixed.
>    (merge c646d0934e dr/ref-filter-push-track-fix later to maint).
>
>  * "make check-docs", "git help -a", etc. did not account for cases
>    where a particular build may deliberately omit some subcommands,
>    which has been corrected.
>
>  * The logic to tell if a Git repository has a working tree protects
>    "git branch -D" from removing the branch that is currently checked
>    out by mistake.  The implementation of this logic was broken for
>    repositories with unusual name, which unfortunately is the norm for
>    submodules these days.  This has been fixed.
>    (merge f3534c98e4 jt/submodule-repo-is-with-worktree later to maint).
>
>  * AIX shared the same build issues with other BSDs around fileno(fp),
>    which has been corrected.
>    (merge ee662bf5c6 cc/aix-has-fileno-as-a-macro later to maint).
>
>  * The autoconf generated configure script failed to use the right
>    gettext() implementations from -libintl by ignoring useless stub
>    implementations shipped in some C library, which has been
>    corrected.
>    (merge b71e56a683 vk/autoconf-gettext later to maint).
>
>  * Fix index-pack perf test so that the repeated invocations always
>    run in an empty repository, which emulates the initial clone
>    situation better.
>    (merge 775c71e16d jk/p5302-avoid-collision-check-cost later to maint).
>
>  * A "ls-files" that emulates "find" to enumerate files in the working
>    tree resulted in duplicated Makefile rules that caused the build to
>    issue an unnecessary warning during a trial build after merge
>    conflicts are resolved in working tree *.h files but before the
>    resolved results are added to the index.  This has been corrected.
>
>  * "git cherry-pick" (and "revert" that shares the same runtime engine)
>    that deals with multiple commits got confused when the final step
>    gets stopped with a conflict and the user concluded the sequence
>    with "git commit".  Attempt to fix it by cleaning up the state
>    files used by these commands in such a situation.
>    (merge 4a72486de9 pw/clean-sequencer-state-upon-final-commit later to maint).
>
>  * On a filesystem like HFS+, the names of the refs stored as filesystem
>    entities may become different from what the end-user expects, just
>    like files in the working tree get "renamed".  Work around the
>    mismatch by paying attention to the core.precomposeUnicode
>    configuration.
>    (merge 8e712ef6fc en/unicode-in-refnames later to maint).
>
>  * The code to generate the multi-pack idx file was not prepared to
>    see too many packfiles and ran out of open file descriptor, which
>    has been corrected.
>
>  * To run tests for Git SVN, our scripts for CI used to install the
>    git-svn package (in the hope that it would bring in the right
>    dependencies).  This has been updated to install the more direct
>    dependency, namely, libsvn-perl.
>    (merge db864306cf sg/ci-libsvn-perl later to maint).
>
>  * "git cvsexportcommit" running on msys did not expect cvsnt showed
>    "cvs status" output with CRLF line endings.
>
>  * The fsmonitor interface got out of sync after the in-core index
>    file gets discarded, which has been corrected.
>    (merge 398a3b0899 js/fsmonitor-refresh-after-discarding-index later to maint).
>
>  * "git status" did not know that the "label" instruction in the
>    todo-list "rebase -i -r" uses should not be shown as a hex object
>    name.
>
>  * A prerequisite check in the test suite to see if a working jgit is
>    available was made more robust.
>    (merge abd0f28983 tz/test-lib-check-working-jgit later to maint).
>
>  * The codepath to parse :<path> that obtains the object name for an
>    indexed object has been made more robust.
>
>  * Code cleanup, docfix, build fix, etc.
>    (merge 11f470aee7 jc/test-yes-doc later to maint).
>    (merge 90503a240b js/doc-symref-in-proto-v1 later to maint).
>    (merge 5c326d1252 jk/unused-params later to maint).
>    (merge 68cabbfda3 dl/doc-submodule-wo-subcommand later to maint).
>    (merge 9903623761 ab/receive-pack-use-after-free-fix later to maint).
>    (merge 1ede45e44b en/merge-options-doc later to maint).
>    (merge 3e14dd2c8e rd/doc-hook-used-in-sample later to maint).
>    (merge c271dc28fd nd/no-more-check-racy later to maint).
>    (merge e6e15194a8 yb/utf-16le-bom-spellfix later to maint).
>    (merge bb101aaf0c rd/attr.c-comment-typofix later to maint).
>    (merge 716a5af812 rd/gc-prune-doc-fix later to maint).
>    (merge 50b206371d js/untravis-windows later to maint).
>    (merge dbf47215e3 js/rebase-recreate-merge later to maint).
>    (merge 56cb2d30f8 dl/reset-doc-no-wrt-abbrev later to maint).
>    (merge 64eca306a2 ja/dir-rename-doc-markup-fix later to maint).
>    (merge af91b0230c dl/ignore-docs later to maint).
>    (merge 59a06e947b ra/t3600-test-path-funcs later to maint).
>    (merge e041d0781b ar/t4150-remove-cruft later to maint).
>    (merge 8d75a1d183 ma/asciidoctor-fixes-more later to maint).
>    (merge 74cc547b0f mh/pack-protocol-doc-fix later to maint).
>    (merge ed31851fa6 ab/doc-misc-typofixes later to maint).
>    (merge a7256debd4 nd/checkout-m-doc-update later to maint).
>    (merge 3a9e1ad78d jt/t5551-protocol-v2-does-not-have-half-auth later to maint).
>    (merge 0b918b75af sg/t5318-cleanup later to maint).
>    (merge 68ed71b53c cb/doco-mono later to maint).
>    (merge a34dca2451 nd/interpret-trailers-docfix later to maint).
>    (merge cf7b857a77 en/fast-import-parsing-fix later to maint).
>    (merge fe61ccbc35 po/rerere-doc-fmt later to maint).
>    (merge ffea0248bf po/describe-not-necessarily-7 later to maint).
>    (merge 7cb7283adb tg/ls-files-debug-format-fix later to maint).
>    (merge f64a21bd82 tz/doc-apostrophe-no-longer-needed later to maint).
>    (merge dbe7b41019 js/t3301-unbreak-notes-test later to maint).
>    (merge d8083e4180 km/t3000-retitle later to maint).
>    (merge 9e4cbccbd7 tz/git-svn-doc-markup-fix later to maint).
>    (merge da9ca955a7 jk/ls-files-doc-markup-fix later to maint).
>    (merge 6804ba3a58 cw/diff-highlight later to maint).
>    (merge 1a8787144d nd/submodule-helper-incomplete-line-fix later to maint).
>    (merge d9ef573837 jk/apache-lsan later to maint).
>    (merge c871fbee2b js/t6500-use-windows-pid-on-mingw later to maint).
>    (merge ce4c7bfc90 bl/t4253-exit-code-from-format-patch later to maint).
>    (merge 397a46db78 js/t5580-unc-alternate-test later to maint).
>    (merge d4907720a2 cm/notes-comment-fix later to maint).
>    (merge 9dde06de13 cb/http-push-null-in-message-fix later to maint).
>    (merge 4c785c0edc js/rebase-config-bitfix later to maint).
>    (merge 8e9fe16c87 es/doc-gitsubmodules-markup later to maint).
>
> ----------------------------------------------------------------
>
> Changes since v2.21.0 are as follows:
>
> Alban Gruin (18):
>       sequencer: changes in parse_insn_buffer()
>       sequencer: make the todo_list structure public
>       sequencer: remove the 'arg' field from todo_item
>       sequencer: refactor transform_todos() to work on a todo_list
>       sequencer: introduce todo_list_write_to_file()
>       sequencer: refactor check_todo_list() to work on a todo_list
>       sequencer: refactor sequencer_add_exec_commands() to work on a todo_list
>       sequencer: refactor rearrange_squash() to work on a todo_list
>       sequencer: make sequencer_make_script() write its script to a strbuf
>       sequencer: change complete_action() to use the refactored functions
>       rebase--interactive: move sequencer_add_exec_commands()
>       rebase--interactive: move rearrange_squash_in_todo_file()
>       sequencer: refactor skip_unnecessary_picks() to work on a todo_list
>       rebase-interactive: use todo_list_write_to_file() in edit_todo_list()
>       rebase-interactive: append_todo_help() changes
>       rebase-interactive: rewrite edit_todo_list() to handle the initial edit
>       sequencer: use edit_todo_list() in complete_action()
>       rebase--interactive: move transform_todo_file()
>
> Alexander Blesius (1):
>       doc: fix typos in man pages
>
> Alexander Shopov (1):
>       gitk: Update Bulgarian translation (317t)
>
> Anders Waldenborg (7):
>       doc: group pretty-format.txt placeholders descriptions
>       pretty: allow %(trailers) options with explicit value
>       pretty: single return path in %(trailers) handling
>       pretty: allow showing specific trailers
>       pretty: add support for "valueonly" option in %(trailers)
>       strbuf: separate callback for strbuf_expand:ing literals
>       pretty: add support for separator option in %(trailers)
>
> Andreas Heiduk (1):
>       revisions.txt: remove ambibuity between <rev>:<path> and :<path>
>
> Andrei Rybak (1):
>       t4150: remove unused variable
>
> Baruch Siach (1):
>       send-email: don't cc *-by lines with '-' prefix
>
> Beat Bolli (1):
>       unicode: update the width tables to Unicode 12
>
> Ben Peart (1):
>       read-cache: add post-index-change hook
>
> Boxuan Li (1):
>       t4253-am-keep-cr-dos: avoid using pipes
>
> Brandon Richardson (1):
>       commit-tree: utilize parse-options api
>
> Carlo Marcelo Arenas Belón (1):
>       http-push: prevent format overflow warning with gcc >= 9
>
> Chris Mayo (1):
>       notes: correct documentation of format_display_notes()
>
> Chris. Webster (1):
>       diff-highlight: use correct /dev/null for UNIX and Windows
>
> Christian Couder (5):
>       t6050: use test_line_count instead of wc -l
>       t6050: redirect expected error output to a file
>       replace: peel tag when passing a tag as parent to --graft
>       replace: peel tag when passing a tag first to --graft
>       list-objects-filter: disable 'sparse:path' filters
>
> Clément Chigot (2):
>       Makefile: use fileno macro work around on AIX
>       git-compat-util: work around for access(X_OK) under root
>
> Corentin BOMPARD (2):
>       doc/CodingGuidelines: URLs and paths as monospace
>       doc: format pathnames and URLs as monospace.
>
> Damien Robert (1):
>       ref-filter: use correct branch for %(push:track)
>
> Daniels Umanovskis (1):
>       branch: introduce --show-current display option
>
> David Aguilar (2):
>       mergetools: add support for smerge (Sublime Merge)
>       contrib/completion: add smerge to the mergetool completion candidates
>
> David Kastrup (1):
>       blame.c: don't drop origin blobs as eagerly
>
> Denton Liu (38):
>       completion: complete git submodule absorbgitdirs
>       git-submodule.txt: "--branch <branch>" option defaults to 'master'
>       submodule--helper: teach config subcommand --unset
>       submodule: document default behavior
>       git-reset.txt: clarify documentation
>       git-clean.txt: clarify ignore pattern files
>       docs: move core.excludesFile from git-add to gitignore
>       contrib/subtree: ensure only one rev is provided
>       midx.c: convert FLEX_ALLOC_MEM to FLEX_ALLOC_STR
>       cocci: FLEX_ALLOC_MEM to FLEX_ALLOC_STR
>       tag: fix formatting
>       submodule: teach set-branch subcommand
>       tag: advise on nested tags
>       t7600: clean up style
>       t3507: clean up style
>       t7604: clean up style
>       t7502: clean up style
>       commit: extract cleanup_mode functions to sequencer
>       parse-options.h: extract common --cleanup option
>       merge: cleanup messages like commit
>       merge: add scissors line on merge conflict
>       cherry-pick/revert: add scissors line on merge conflict
>       t7610: unsuppress output
>       t7610: add mergetool --gui tests
>       *.[ch]: remove extern from function declarations using spatch
>       *.[ch]: remove extern from function declarations using sed
>       *.[ch]: manually align parameter lists
>       t2018: cleanup in current test
>       branch: make create_branch accept a merge base rev
>       revisions.txt: change "rev" to "<rev>"
>       revisions.txt: mark optional rev arguments with []
>       revisions.txt: mention <rev>~ form
>       tag: fix typo in nested tagging hint
>       mergetool: use get_merge_tool function
>       mergetool--lib: create gui_mode function
>       mergetool: fallback to tool when guitool unavailable
>       difftool: make --gui, --tool and --extcmd mutually exclusive
>       difftool: fallback on merge.guitool
>
> Derrick Stolee (4):
>       trace2:data: pack-objects: add trace2 regions
>       midx: pass a repository pointer
>       midx: add packs to packed_git linked list
>       trace2: add variable description to git.txt
>
> Dustin Spicuzza (1):
>       cvsexportcommit: force crlf translation
>
> Elijah Newren (23):
>       log,diff-tree: add --combined-all-paths option
>       merge-options.txt: correct wording of --no-commit option
>       t9300: demonstrate bug with get-mark and empty orphan commits
>       git-fast-import.txt: fix wording about where ls command can appear
>       fast-import: check most prominent commands first
>       fast-import: only allow cat-blob requests where it makes sense
>       fast-import: fix erroneous handling of get-mark with empty orphan commits
>       Use 'unsigned short' for mode, like diff_filespec does
>       merge-recursive: rename merge_options argument from 'o' to 'opt'
>       merge-recursive: rename diff_filespec 'one' to 'o'
>       merge-recursive: rename locals 'o' and 'a' to 'obuf' and 'abuf'
>       merge-recursive: use 'ci' for rename_conflict_info variable name
>       merge-recursive: move some struct declarations together
>       merge-recursive: shrink rename_conflict_info
>       merge-recursive: remove ren[12]_other fields from rename_conflict_info
>       merge-recursive: track branch where rename occurred in rename struct
>       merge-recursive: cleanup handle_rename_* function signatures
>       merge-recursive: switch from (oid,mode) pairs to a diff_filespec
>       t6043: fix copied test description to match its purpose
>       merge-recursive: track information associated with directory renames
>       merge-recursive: give callers of handle_content_merge() access to contents
>       merge-recursive: switch directory rename detection default
>       Honor core.precomposeUnicode in more places
>
> Emily Shaffer (1):
>       gitsubmodules: align html and nroff lists
>
> Eric Sunshine (1):
>       check-non-portable-shell: support Perl versions older than 5.10
>
> Eric Wong (1):
>       repack: enable bitmaps by default on bare repos
>
> Jean-Noël Avila (3):
>       l10n: fr.po remove obsolete entries
>       Doc: fix misleading asciidoc formating
>       diff: fix mistake in translatable strings
>
> Jeff Hostetler (30):
>       trace2: Documentation/technical/api-trace2.txt
>       trace2: create new combined trace facility
>       trace2: collect Windows-specific process information
>       trace2:data: add trace2 regions to wt-status
>       trace2:data: add editor/pager child classification
>       trace2:data: add trace2 sub-process classification
>       trace2:data: add trace2 transport child classification
>       trace2:data: add subverb to checkout command
>       trace2:data: add subverb to reset command
>       trace2:data: add trace2 hook classification
>       trace2:data: add subverb for rebase
>       trace2:data: add trace2 instrumentation to index read/write
>       trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh
>       trace2: add for_each macros to clang-format
>       progress: add sparse mode to force 100% complete message
>       trace2:data: add trace2 data to midx
>       midx: add progress indicators in multi-pack-index verify
>       midx: during verify group objects by packfile to speed verification
>       config: initialize opts structure in repo_read_config()
>       trace2: refactor setting process starting time
>       trace2: add absolute elapsed time to start event
>       trace2: find exec-dir before trace2 initialization
>       config: add read_very_early_config()
>       trace2: use system/global config for default trace2 settings
>       trace2: report peak memory usage of the process
>       trace2: clarify UTC datetime formatting
>       trace2: make SIDs more unique
>       trace2: update docs to describe system/global config settings
>       trace2: fixup access problem on /etc/gitconfig in read_very_early_config
>       trace2: fix tracing when NO_PTHREADS is defined
>
> Jeff King (92):
>       prune: lazily perform reachability traversal
>       prune: use bitmaps for reachability traversal
>       prune: check SEEN flag for reachability
>       t5304: rename "sha1" variables to "oid"
>       diff: drop options parameter from diffcore_fix_diff_index()
>       diff: drop unused color reset parameters
>       diff: drop unused emit data parameter from sane_truncate_line()
>       diff: drop complete_rewrite parameter from run_external_diff()
>       merge-recursive: drop several unused parameters
>       pack-objects: drop unused parameter from oe_map_new_pack()
>       files-backend: drop refs parameter from split_symref_update()
>       ref-filter: drop unused buf/sz pairs
>       ref-filter: drop unused "obj" parameters
>       ref-filter: drop unused "sz" parameters
>       diff: reuse diff setup for --no-index case
>       bisect: use string arguments to feed internal diff-tree
>       bisect: fix internal diff-tree config loading
>       bisect: make diff-tree output prettier
>       fetch: avoid calling write_or_die()
>       fetch: ignore SIGPIPE during network operation
>       rev-list: allow cached objects in existence check
>       doc/fsck: clarify --connectivity-only behavior
>       fsck: always compute USED flags for unreachable objects
>       compat/bswap: add include header guards
>       config: document --type=color output is a complete line
>       line-log: suppress diff output with "-s"
>       line-log: detect unsupported formats
>       point pull requesters to GitGitGadget
>       Makefile: fix unaligned loads in sha1dc with UBSan
>       t5310: correctly remove bitmaps for jgit test
>       pack-objects: default to writing bitmap hash-cache
>       perf-lib.sh: rely on test-lib.sh for --tee handling
>       revision: drop some unused "revs" parameters
>       log: drop unused rev_info from early output
>       log: drop unused "len" from show_tagger()
>       update-index: drop unused prefix_length parameter from do_reupdate()
>       test-date: drop unused "now" parameter from parse_dates()
>       unpack-trees: drop name_entry from traverse_by_cache_tree()
>       unpack-trees: drop unused error_type parameters
>       report_path_error(): drop unused prefix parameter
>       fetch_pack(): drop unused parameters
>       parse-options: drop unused ctx parameter from show_gitcomp()
>       pretty: drop unused "type" parameter in needs_rfc2047_encoding()
>       pretty: drop unused strbuf from parse_padding_placeholder()
>       git: read local config in --list-cmds
>       completion: fix multiple command removals
>       parse_opt_ref_sorting: always use with NONEG flag
>       refs/files-backend: handle packed transaction prepare failure
>       refs/files-backend: don't look at an aborted transaction
>       http: factor out curl result code normalization
>       http: normalize curl results for dumb loose and alternates fetches
>       http: use normalize_curl_result() instead of manual conversion
>       revision: use a prio_queue to hold rewritten parents
>       get_commit_tree(): return NULL for broken tree
>       rev-list: let traversal die when --missing is not in use
>       rev-list: detect broken root trees
>       test-prio-queue: use xmalloc
>       xdiff: use git-compat-util
>       xdiff: use xmalloc/xrealloc
>       progress: use xmalloc/xcalloc
>       t5516: drop ok=sigpipe from unreachable-want tests
>       t5530: check protocol response for "not our ref"
>       upload-pack: send ERR packet for non-tip objects
>       pkt-line: prepare buffer before handling ERR packets
>       fetch: use free_refs()
>       remote.c: make singular free_ref() public
>       fetch: do not consider peeled tags as advertised tips
>       packfile.h: drop extern from function declarations
>       pack-revindex: open index if necessary
>       t5319: fix bogus cat-file argument
>       t5319: drop useless --buffer from cat-file
>       midx: check both pack and index names for containment
>       packfile: fix pack basename computation
>       http: simplify parsing of remote objects/info/packs
>       server-info: fix blind pointer arithmetic
>       server-info: simplify cleanup in parse_pack_def()
>       server-info: use strbuf to read old info/packs file
>       server-info: drop nr_alloc struct member
>       server-info: drop objdirlen pointer arithmetic
>       update_info_refs(): drop unused force parameter
>       t5304: add a test for pruning with bitmaps
>       untracked-cache: be defensive about missing NULs in index
>       untracked-cache: simplify parsing by dropping "next"
>       untracked-cache: simplify parsing by dropping "len"
>       p5302: create the repo in each index-pack test
>       doc/ls-files: put nested list for "-t" option into block
>       t/perf: depend on perl JSON only when using --codespeed
>       t/perf: add perf script for partial clones
>       coccicheck: optionally batch spatch invocations
>       t/lib-httpd: pass LSAN_OPTIONS through apache
>       coccicheck: make batch size of 0 mean "unlimited"
>       get_oid: handle NULL repo->index
>
> Jiang Xin (5):
>       t5323: test cases for git-pack-redundant
>       pack-redundant: delay creation of unique_objects
>       pack-redundant: rename pack_list.all_objects
>       pack-redundant: consistent sort method
>       i18n: fix typos found during l10n for git 2.22.0
>
> Joel Teichroeb (5):
>       stash: improve option parsing test coverage
>       stash: convert apply to builtin
>       stash: convert drop and clear to builtin
>       stash: convert branch to builtin
>       stash: convert pop to builtin
>
> Joey Hess (1):
>       convert: avoid malloc of original file size
>
> Johannes Schindelin (67):
>       ident: add the ability to provide a "fallback identity"
>       travis: remove the hack to build the Windows job on Azure Pipelines
>       tests: let --stress-limit=<N> imply --stress
>       tests: introduce --stress-jobs=<N>
>       built-in rebase: no need to check out `onto` twice
>       built-in rebase: use the correct reflog when switching branches
>       built-in rebase: demonstrate that ORIG_HEAD is not set correctly
>       built-in rebase: set ORIG_HEAD just once, before the rebase
>       Makefile: use `git ls-files` to list header files, if possible
>       curl: anonymize URLs in error messages and warnings
>       remote-curl: mark all error messages for translation
>       stash: add back the original, scripted `git stash`
>       stash: optionally use the scripted version again
>       tests: add a special setup where stash.useBuiltin is off
>       legacy stash: fix "rudimentary backport of -q"
>       built-in stash: handle :(glob) pathspecs again
>       mingw: drop MakeMaker reference
>       mingw: allow building with an MSYS2 runtime v3.x
>       rebase: deprecate --preserve-merges
>       mingw: respect core.hidedotfiles = false in git-init again
>       test-lib: introduce 'test_atexit'
>       git-daemon: use 'test_atexit` to stop 'git-daemon'
>       git p4 test: use 'test_atexit' to kill p4d and the watchdog process
>       rebase -i: demonstrate obscure loose object cache bug
>       sequencer: improve error message when an OID could not be parsed
>       sequencer: move stale comment into correct location
>       get_oid(): when an object was not found, try harder
>       difftool: remove obsolete (and misleading) comment
>       parse-options: make OPT_ARGUMENT() more useful
>       difftool: allow running outside Git worktrees with --no-index
>       docs: move gitremote-helpers into section 7
>       docs: do not document the `git remote-testgit` command
>       check-docs: really look at the documented commands again
>       check-docs: do not expect guide pages to correspond to commands
>       check-docs: fix for setups where executables have an extension
>       tests (rebase): spell out the `--keep-empty` option
>       tests (rebase): spell out the `--force-rebase` option
>       t7810: do not abbreviate `--no-exclude-standard` nor `--invert-match`
>       t5531: avoid using an abbreviated option
>       tests (push): do not abbreviate the `--follow-tags` option
>       tests (status): spell out the `--find-renames` option in full
>       tests (pack-objects): use the full, unabbreviated `--revs` option
>       t3301: fix false negative
>       untracked cache: fix off-by-one
>       tests: disallow the use of abbreviated options (by default)
>       t9822: skip tests if file names cannot be ISO-8859-1 encoded
>       macOS: make sure that gettext is found
>       remote-testgit: move it into the support directory for t5801
>       Makefile: drop the NO_INSTALL variable
>       help -a: do not list commands that are excluded from the build
>       check-docs: allow command-list.txt to contain excluded commands
>       docs: exclude documentation for commands that have been excluded
>       check-docs: do not bother checking for legacy scripts' documentation
>       test-tool: handle the `-C <directory>` option just like `git`
>       Turn `git serve` into a test helper
>       t5580: verify that alternates can be UNC paths
>       fsmonitor: demonstrate that it is not refreshed after discard_index()
>       fsmonitor: force a refresh after the index was discarded
>       t6500(mingw): use the Windows PID of the shell
>       difftool --no-index: error out on --dir-diff (and don't crash)
>       status: fix display of rebase -ir's `label` command
>       parse-options: adjust `parse_opt_unknown_cb()`s declared return type
>       stash: document stash.useBuiltin
>       rebase: replace incorrect logical negation by correct bitwise one
>       tests: mark a couple more test cases as requiring `rebase -p`
>       docs: say that `--rebase=preserve` is deprecated
>       rebase docs: recommend `-r` over `-p`
>
> Jonathan Tan (25):
>       remote-curl: reduce scope of rpc_state.argv
>       remote-curl: reduce scope of rpc_state.stdin_preamble
>       remote-curl: reduce scope of rpc_state.result
>       remote-curl: refactor reading into rpc_state's buf
>       remote-curl: use post_rpc() for protocol v2 also
>       tests: define GIT_TEST_PROTOCOL_VERSION
>       t5601: check ssh command only with protocol v0
>       tests: always test fetch of unreachable with v0
>       t5503: fix overspecification of trace expectation
>       t5512: compensate for v0 only sending HEAD symrefs
>       t5700: only run with protocol version 1
>       tests: fix protocol version for overspecifications
>       t5552: compensate for v2 filtering ref adv.
>       submodule: explain first attempt failure clearly
>       t5551: mark half-auth no-op fetch test as v0-only
>       fetch-pack: call prepare_shallow_info only if v0
>       fetch-pack: respect --no-update-shallow in v2
>       sha1-file: support OBJECT_INFO_FOR_PREFETCH
>       fetch-pack: binary search when storing wanted-refs
>       diff: batch fetching of missing blobs
>       pack-objects: write objects packed to trace2
>       transport: die if server options are unsupported
>       clone: send server options when using protocol v2
>       worktree: update is_bare heuristics
>       fetch-pack: send server options after command
>
> Jordi Mas (1):
>       l10n: Fixes to Catalan translation
>
> Josh Steadmon (5):
>       protocol-capabilities.txt: document symref
>       trace2: write to directory targets
>       clone: do faster object check for partial clones
>       trace2: fix incorrect function pointer check
>       commit-graph: fix memory leak
>
> Junio C Hamano (18):
>       test: caution on our version of 'yes'
>       builtin/log: downcase the beginning of error messages
>       format-patch: notice failure to open cover letter for writing
>       Start 2.22 cycle
>       The second batch
>       The third batch
>       The fourth batch
>       gettext tests: export the restored GIT_TEST_GETTEXT_POISON
>       The fifth batch
>       The sixth batch
>       Makefile: dedup list of files obtained from ls-files
>       The seventh batch
>       The eighth batch
>       Git 2.22-rc0
>       pkt-line: drop 'const'-ness of a param to set_packet_header()
>       Git 2.22-rc1
>       Git 2.22-rc2
>       Git 2.22-rc3
>
> Kyle Meyer (5):
>       rebase docs: fix "gitlink" typo
>       submodule: refuse to add repository with no commits
>       dir: do not traverse repositories with no commits
>       add: error appropriately on repository with no commits
>       t3000 (ls-files -o): widen description to reflect current tests
>
> Martin Ågren (14):
>       setup: free old value before setting `work_tree`
>       setup: fix memory leaks with `struct repository_format`
>       config/diff.txt: drop spurious backtick
>       config/fsck.txt: avoid starting line with dash
>       git.txt: remove empty line before list continuation
>       git-svn.txt: drop escaping '\' that ends up being rendered
>       Documentation: turn middle-of-line tabs into spaces
>       Documentation/Makefile: add missing xsl dependencies for manpages
>       Documentation/Makefile: add missing dependency on asciidoctor-extensions
>       asciidoctor-extensions: fix spurious space after linkgit
>       Doc: auto-detect changed build flags
>       doc-diff: let `render_tree()` take an explicit directory name
>       doc-diff: support diffing from/to AsciiDoc(tor)
>       doc-diff: add `--cut-header-footer`
>
> Matthew Kraai (1):
>       t3903: add test for --intent-to-add file
>
> Michal Suchanek (1):
>       worktree: fix worktree add race
>
> Mike Hommey (2):
>       fix pack protocol example client/server communication
>       Make fread/fwrite-like functions in http.c more like fread/fwrite.
>
> Nguyễn Thái Ngọc Duy (129):
>       parse-options.h: remove extern on function prototypes
>       parse-options: add one-shot mode
>       parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
>       parse-options: add OPT_BITOP()
>       parse-options: stop abusing 'callback' for lowlevel callbacks
>       parse-options: avoid magic return codes
>       parse-options: allow ll_callback with OPTION_CALLBACK
>       diff.h: keep forward struct declarations sorted
>       diff.h: avoid bit fields in struct diff_flags
>       diff.c: prepare to use parse_options() for parsing
>       diff.c: convert -u|-p|--patch
>       diff.c: convert -U|--unified
>       diff.c: convert -W|--[no-]function-context
>       diff.c: convert --raw
>       read-cache.c: fix writing "link" index ext with null base oid
>       completion: add more parameter value completion
>       diff-parseopt: convert --patch-with-raw
>       diff-parseopt: convert --numstat and --shortstat
>       diff-parseopt: convert --dirstat and friends
>       diff-parseopt: convert --check
>       diff-parseopt: convert --summary
>       diff-parseopt: convert --patch-with-stat
>       diff-parseopt: convert --name-only
>       diff-parseopt: convert --name-status
>       diff-parseopt: convert -s|--no-patch
>       diff-parseopt: convert --stat*
>       diff-parseopt: convert --[no-]compact-summary
>       diff-parseopt: convert --output-*
>       diff-parseopt: convert -B|--break-rewrites
>       diff-parseopt: convert -M|--find-renames
>       diff-parseopt: convert -D|--irreversible-delete
>       diff-parseopt: convert -C|--find-copies
>       diff-parseopt: convert --find-copies-harder
>       diff-parseopt: convert --no-renames|--[no--rename-empty
>       diff-parseopt: convert --relative
>       diff-parseopt: convert --[no-]minimal
>       diff-parseopt: convert --ignore-some-changes
>       Delete check-racy.c
>       diff-parseopt: convert --[no-]indent-heuristic
>       diff-parseopt: convert --patience
>       diff-parseopt: convert --histogram
>       diff-parseopt: convert --diff-algorithm
>       diff-parseopt: convert --anchored
>       diff-parseopt: convert --binary
>       diff-parseopt: convert --full-index
>       diff-parseopt: convert -a|--text
>       diff-parseopt: convert -R
>       diff-parseopt: convert --[no-]follow
>       diff-parseopt: convert --[no-]color
>       diff-parseopt: convert --word-diff
>       diff-parseopt: convert --word-diff-regex
>       diff-parseopt: convert --color-words
>       diff-parseopt: convert --exit-code
>       diff-parseopt: convert --quiet
>       diff-parseopt: convert --ext-diff
>       diff-parseopt: convert --textconv
>       diff-parseopt: convert --ignore-submodules
>       diff-parseopt: convert --submodule
>       files-backend.c: factor out per-worktree code in loose_fill_ref_dir()
>       files-backend.c: reduce duplication in add_per_worktree_entries_to_dir()
>       Make sure refs/rewritten/ is per-worktree
>       unpack-trees: fix oneway_merge accidentally carry over stage index
>       checkout.txt: note about losing staged changes with --merge
>       commit: improve error message in "-a <paths>" case
>       unpack-trees: keep gently check inside add_rejected_path
>       unpack-trees: rename "gently" flag to "quiet"
>       read-tree: add --quiet
>       checkout: prevent losing staged changes with --merge
>       diff-parseopt: convert --ws-error-highlight
>       diff-parseopt: convert --ita-[in]visible-in-index
>       diff-parseopt: convert -z
>       diff-parseopt: convert -l
>       diff-parseopt: convert -S|-G
>       diff-parseopt: convert --pickaxe-all|--pickaxe-regex
>       diff-parseopt: convert -O
>       diff-parseopt: convert --find-object
>       diff-parseopt: convert --diff-filter
>       diff-parseopt: convert --[no-]abbrev
>       diff-parseopt: convert --[src|dst]-prefix
>       diff-parseopt: convert --line-prefix
>       diff-parseopt: convert --no-prefix
>       diff-parseopt: convert --inter-hunk-context
>       diff-parseopt: convert --[no-]color-moved
>       diff-parseopt: convert --color-moved-ws
>       diff.c: allow --no-color-moved-ws
>       range-diff: use parse_options() instead of diff_opt_parse()
>       diff --no-index: use parse_options() instead of diff_opt_parse()
>       am: avoid diff_opt_parse()
>       config: correct '**' matching in includeIf patterns
>       interpret-trailers.txt: start the desc line with a capital letter
>       read-tree.txt: clarify --reset and worktree changes
>       packfile.c: add repo_approximate_object_count()
>       refs.c: add refs_ref_exists()
>       refs.c: add refs_shorten_unambiguous_ref()
>       refs.c: remove the_repo from substitute_branch_name()
>       refs.c: remove the_repo from expand_ref()
>       refs.c: add repo_dwim_ref()
>       refs.c: add repo_dwim_log()
>       refs.c: remove the_repo from read_ref_at()
>       submodule foreach: fix "<command> --quiet" not being respected
>       commit.cocci: refactor code, avoid double rewrite
>       commit.c: add repo_get_commit_tree()
>       sha1-name.c: remove the_repo from sort_ambiguous()
>       sha1-name.c: remove the_repo from find_abbrev_len_packed()
>       sha1-name.c: add repo_find_unique_abbrev_r()
>       sha1-name.c: store and use repo in struct disambiguate_state
>       sha1-name.c: add repo_for_each_abbrev()
>       sha1-name.c: remove the_repo from get_short_oid()
>       sha1-name.c: remove the_repo from interpret_nth_prior_checkout()
>       sha1-name.c: remove the_repo from interpret_branch_mark()
>       sha1-name.c: add repo_interpret_branch_name()
>       sha1-name.c: remove the_repo from get_oid_oneline()
>       sha1-name.c: remove the_repo from get_describe_name()
>       sha1-name.c: remove the_repo from get_oid_basic()
>       sha1-name.c: remove the_repo from get_oid_1()
>       sha1-name.c: remove the_repo from handle_one_ref()
>       sha1-name.c: remove the_repo from diagnose_invalid_index_path()
>       sha1-name.c: remove the_repo from resolve_relative_path()
>       sha1-name.c: remove the_repo from get_oid_with_context_1()
>       sha1-name.c: add repo_get_oid()
>       submodule-config.c: use repo_get_oid for reading .gitmodules
>       sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name
>       sha1-name.c: remove the_repo from other get_oid_*
>       sha1-name.c: remove the_repo from get_oid_mb()
>       parse-options: don't emit "ambiguous option" for aliases
>       submodule--helper: add a missing \n
>       diff-parseopt: correct variable types that are used by parseopt
>       diff-parseopt: restore -U (no argument) behavior
>       parse-options: check empty value in OPT_INTEGER and OPT_ABBREV
>
> Paul-Sebastian Ungureanu (17):
>       sha1-name.c: add `get_oidf()` which acts like `get_oid()`
>       strbuf.c: add `strbuf_join_argv()`
>       strbuf.c: add `strbuf_insertf()` and `strbuf_vinsertf()`
>       t3903: modernize style
>       stash: rename test cases to be more descriptive
>       stash: add tests for `git stash show` config
>       stash: mention options in `show` synopsis
>       stash: convert list to builtin
>       stash: convert show to builtin
>       stash: convert store to builtin
>       stash: convert create to builtin
>       stash: convert push to builtin
>       stash: make push -q quiet
>       stash: convert save to builtin
>       stash: optimize `get_untracked_files()` and `check_changes()`
>       stash: replace all `write-tree` child processes with API calls
>       stash: convert `stash--helper.c` into `stash.c`
>
> Philip Oakley (2):
>       rerere doc: quote `rerere.enabled`
>       describe doc: remove '7-char' abbreviation reference
>
> Phillip Wood (21):
>       am/cherry-pick/rebase/revert: document --rerere-autoupdate
>       merge: tweak --rerere-autoupdate documentation
>       sequencer: break some long lines
>       cherry-pick: demonstrate option amnesia
>       cherry-pick --continue: remember options
>       commit/reset: try to clean up sequencer state
>       fix cherry-pick/revert status after commit
>       sequencer: fix cleanup with --signoff and -x
>       sequencer.c: save and restore cleanup mode
>       sequencer: always discard index after checkout
>       rebase: don't translate trace strings
>       rebase: rename write_basic_state()
>       rebase: use OPT_RERERE_AUTOUPDATE()
>       rebase -i: combine rebase--interactive.c with rebase.c
>       rebase -i: remove duplication
>       rebase -i: use struct commit when parsing options
>       rebase -i: use struct object_id for squash_onto
>       rebase -i: use struct rebase_options to parse args
>       rebase -i: use struct rebase_options in do_interactive_rebase()
>       rebase: use a common action enum
>       rebase -i: run without forking rebase--interactive
>
> Ramsay Jones (2):
>       prune-packed: check for too many arguments
>       Makefile: fix 'hdr-check' when GCRYPT not installed
>
> René Scharfe (1):
>       get-tar-commit-id: parse comment record
>
> Robert P. J. Day (3):
>       mention use of "hooks.allownonascii" in "man githooks"
>       docs/git-gc: fix typo "--prune=all" to "--prune=now"
>       attr.c: ".gitattribute" -> ".gitattributes" (comments)
>
> Rohit Ashiwal (3):
>       test functions: add function `test_file_not_empty`
>       t3600: modernize style
>       t3600: use helpers to replace test -d/f/e/s <path>
>
> SZEDER Gábor (27):
>       test-lib: fix interrupt handling with 'dash' and '--verbose-log -x'
>       t/lib-git-daemon: make sure to kill the 'git-daemon' process
>       tests: use 'test_atexit' to stop httpd
>       t0301-credential-cache: use 'test_atexit' to stop the credentials helper
>       git p4 test: clean up the p4d cleanup functions
>       git p4 test: simplify timeout handling
>       git p4 test: disable '-x' tracing in the p4d watchdog loop
>       t9811-git-p4-label-import: fix pipeline negation
>       t5318-commit-graph: remove unused variable
>       Documentation/git-diff-tree.txt: fix formatting
>       Documentation/technical/api-config.txt: fix formatting
>       Documentation/technical/protocol-v2.txt: fix formatting
>       ci: install Asciidoctor in 'ci/install-dependencies.sh'
>       index-pack: show progress while checking objects
>       ci: stick with Asciidoctor v1.5.8 for now
>       ci: fix AsciiDoc/Asciidoctor stderr check in the documentation build job
>       progress: make display_progress() return void
>       progress: assemble percentage and counters in a strbuf before printing
>       blame: default to HEAD in a bare repo when no start commit is given
>       builtin rebase: use FREE_AND_NULL
>       builtin rebase: use oideq()
>       progress: clear previous progress update dynamically
>       progress: break too long progress bar lines
>       ci: install 'libsvn-perl' instead of 'git-svn'
>       trace2: rename environment variables to GIT_TRACE2*
>       trace2: document the supported values of GIT_TRACE2* env variables
>       progress: avoid empty line when breaking the progress line
>
> Sun Chao (2):
>       pack-redundant: delete redundant code
>       pack-redundant: new algorithm to find min packs
>
> Sven Strickroth (1):
>       MSVC: include compat/win32/path-utils.h for MSVC, too, for real_path()
>
> Tanushree Tumane (1):
>       mingw: remove obsolete IPv6-related code
>
> Taylor Blau (4):
>       t: move 'hex2oct' into test-lib-functions.sh
>       t: introduce tests for unexpected object types
>       list-objects.c: handle unexpected non-blob entries
>       list-objects.c: handle unexpected non-tree entries
>
> Thomas Gummerer (15):
>       move worktree tests to t24*
>       entry: factor out unlink_entry function
>       entry: support CE_WT_REMOVE flag in checkout_entry
>       read-cache: add invalidate parameter to remove_marked_cache_entries
>       checkout: clarify comment
>       checkout: factor out mark_cache_entry_for_checkout function
>       checkout: introduce --{,no-}overlay option
>       checkout: introduce checkout.overlayMode config
>       revert "checkout: introduce checkout.overlayMode config"
>       ident: don't require calling prepare_fallback_ident first
>       stash: drop unused parameter
>       stash: pass pathspec as pointer
>       glossary: add definition for overlay
>       stash: setup default diff output format if necessary
>       ls-files: use correct format string
>
> Todd Zullinger (9):
>       t4038-diff-combined: quote paths with whitespace
>       t9902: test multiple removals via completion.commands
>       completion: use __git when calling --list-cmds
>       Documentation/rev-list-options: wrap --date=<format> block with "--"
>       Documentation/git-status: fix titles in porcelain v2 section
>       Documentation/git-svn: improve asciidoctor compatibility
>       Documentation/git-show-branch: avoid literal {apostrophe}
>       test-lib: try harder to ensure a working jgit
>       RelNotes: minor typo fixes in 2.22.0 draft
>
> Torsten Bögershausen (1):
>       trace2: NULL is not allowed for va_list
>
> Trần Ngọc Quân (1):
>       l10n: Updated Vietnamese translation for v2.21 rd2
>
> Vadim Kochan (1):
>       autoconf: #include <libintl.h> when checking for gettext()
>
> William Hubbs (1):
>       config: allow giving separate author and committer idents
>
> Yash Bhatambare (1):
>       gitattributes.txt: fix typo
>
> brian m. carlson (35):
>       t/lib-submodule-update: use appropriate length constant
>       khash: move oid hash table definition
>       pack-bitmap: make bitmap header handling hash agnostic
>       pack-bitmap: convert struct stored_bitmap to object_id
>       pack-bitmap: replace sha1_to_hex
>       pack-bitmap: switch hard-coded constants to the_hash_algo
>       pack-bitmap: switch hash tables to use struct object_id
>       submodule: avoid hard-coded constants
>       notes-merge: switch to use the_hash_algo
>       notes: make hash size independent
>       notes: replace sha1_to_hex
>       object-store: rename and expand packed_git's sha1 member
>       builtin/name-rev: make hash-size independent
>       fast-import: make hash-size independent
>       fast-import: replace sha1_to_hex
>       builtin/am: make hash size independent
>       builtin/pull: make hash-size independent
>       http-push: convert to use the_hash_algo
>       http-backend: allow 64-character hex names
>       http-push: remove remaining uses of sha1_to_hex
>       http-walker: replace sha1_to_hex
>       http: replace hard-coded constant with the_hash_algo
>       http: compute hash of downloaded objects using the_hash_algo
>       http: replace sha1_to_hex
>       remote-curl: make hash size independent
>       hash: add a function to lookup hash algorithm by length
>       builtin/get-tar-commit-id: make hash size independent
>       archive: convert struct archiver_args to object_id
>       refspec: make hash size independent
>       builtin/difftool: use parse_oid_hex
>       dir: make untracked cache extension hash size independent
>       read-cache: read data in a hash-independent way
>       Git.pm: make hash size independent
>       gitweb: make hash size independent
>       send-email: default to quoted-printable when CR is present
>
> Ævar Arnfjörð Bjarmason (44):
>       receive-pack: fix use-after-free bug
>       commit-graph tests: split up corrupt_graph_and_verify()
>       commit-graph tests: test a graph that's too small
>       Makefile: remove an out-of-date comment
>       Makefile: move "strip" assignment down from flags
>       Makefile: add/remove comments at top and tweak whitespace
>       Makefile: Move *_LIBS assignment into its own section
>       Makefile: move the setting of *FLAGS closer to "include"
>       Makefile: allow for combining DEVELOPER=1 and CFLAGS="..."
>       gc: remove redundant check for gc_auto_threshold
>       gc: convert to using the_hash_algo
>       gc: refactor a "call me once" pattern
>       reflog tests: make use of "test_config" idiom
>       reflog tests: test for the "points nowhere" warning
>       rebase: remove the rebase.useBuiltin setting
>       gc docs: modernize the advice for manually running "gc"
>       gc docs: stop noting "repack" flags
>       gc docs: clean grammar for "gc.bigPackThreshold"
>       commit-graph: fix segfault on e.g. "git status"
>       commit-graph: don't early exit(1) on e.g. "git status"
>       commit-graph: don't pass filename to load_commit_graph_one_fd_st()
>       commit-graph verify: detect inability to read the graph
>       commit-graph write: don't die if the existing graph is corrupt
>       commit-graph: improve & i18n error messages
>       reflog tests: assert lack of early exit with expiry="never"
>       gc: handle & check gc.reflogExpire config
>       test-lib: whitelist GIT_TR2_* in the environment
>       gc docs: include the "gc.*" section from "config" in "gc"
>       gc docs: re-flow the "gc.*" section in "config"
>       gc docs: fix formatting for "gc.writeCommitGraph"
>       gc docs: note how --aggressive impacts --window & --depth
>       gc docs: downplay the usefulness of --aggressive
>       gc docs: note "gc --aggressive" in "fast-import"
>       gc docs: clarify that "gc" doesn't throw away referenced objects
>       gc docs: remove incorrect reference to gc.auto=0
>       perf README: correct docs for 3c8f12c96c regression
>       perf aggregate: remove GIT_TEST_INSTALLED from --codespeed
>       perf-lib.sh: make "./run <revisions>" use the correct gits
>       perf-lib.sh: remove GIT_TEST_INSTALLED from perf-lib.sh
>       perf tests: add "bindir" prefix to git tree test results
>       perf-lib.sh: forbid the use of GIT_TEST_INSTALLED
>       trace2: fix up a missing "leave" entry point
>       trace2: fix up a missing "leave" entry point
>       sha1dc: update from upstream
>
> İsmail Dönmez (2):
>       mingw: do not let ld strip relocations
>       mingw: enable DEP and ASLR
>

^ permalink raw reply	[relevance 0%]

* [ANNOUNCE] Git v2.22.0-rc3
@ 2019-06-03 20:23  2% Junio C Hamano
  2019-06-04  1:32  0% ` Ben Humphreys
                   ` (2 more replies)
  0 siblings, 3 replies; 162+ results
From: Junio C Hamano @ 2019-06-03 20:23 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.22.0-rc3 is now available for testing
at the usual places.  It is comprised of 718 non-merge commits
since v2.21.0, contributed by 67 people, 17 of which are new faces.

Hopefully, this will be the last -rc during this cycle.

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.22.0-rc3' 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.21.0 are as follows.
Welcome to the Git development community!

  Alexander Blesius, Baruch Siach, Boxuan Li, Chris Mayo,
  Chris. Webster, Clément Chigot, Corentin BOMPARD, Damien Robert,
  Dustin Spicuzza, Emily Shaffer, Michal Suchanek, Rohit Ashiwal,
  Sun Chao, Tanushree Tumane, Vadim Kochan, William Hubbs, and
  Yash Bhatambare.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alban Gruin, Alexander Shopov, Anders
  Waldenborg, Andreas Heiduk, Andrei Rybak, Beat Bolli, Ben Peart,
  Brandon Richardson, brian m. carlson, Carlo Marcelo Arenas
  Belón, Christian Couder, Daniels Umanovskis, David Aguilar,
  David Kastrup, Denton Liu, Derrick Stolee, Elijah Newren, Eric
  Sunshine, Eric Wong, İsmail Dönmez, Jean-Noël Avila, Jeff
  Hostetler, Jeff King, Jiang Xin, Joel Teichroeb, Joey Hess,
  Johannes Schindelin, Jonathan Tan, Jordi Mas, Josh Steadmon,
  Junio C Hamano, Kyle Meyer, Martin Ågren, Matthew Kraai, Mike
  Hommey, Nguyễn Thái Ngọc Duy, Paul-Sebastian Ungureanu,
  Philip Oakley, Phillip Wood, Ramsay Jones, René Scharfe,
  Robert P. J. Day, Sven Strickroth, SZEDER Gábor, Taylor Blau,
  Thomas Gummerer, Todd Zullinger, Torsten Bögershausen, and
  Trần Ngọc Quân.

----------------------------------------------------------------

Git 2.22 Release Notes (draft)
==============================

Updates since v2.21
-------------------

Backward compatibility note

 * The filter specification "--filter=sparse:path=<path>" used to
   create a lazy/partial clone has been removed.  Using a blob that is
   part of the project as sparse specification is still supported with
   the "--filter=sparse:oid=<blob>" option.

UI, Workflows & Features

 * "git checkout --no-overlay" can be used to trigger a new mode of
   checking out paths out of the tree-ish, that allows paths that
   match the pathspec that are in the current index and working tree
   and are not in the tree-ish.

 * The %(trailers) formatter in "git log --format=..."  now allows to
   optionally pick trailers selectively by keyword, show only values,
   etc.

 * Four new configuration variables {author,committer}.{name,email}
   have been introduced to override user.{name,email} in more specific
   cases.

 * Command-line completion (in contrib/) learned to tab-complete the
   "git submodule absorbgitdirs" subcommand.

 * "git branch" learned a new subcommand "--show-current".

 * Output from "diff --cc" did not show the original paths when the
   merge involved renames.  A new option adds the paths in the
   original trees to the output.

 * The command line completion (in contrib/) has been taught to
   complete more subcommand parameters.

 * The final report from "git bisect" used to show the suspected
   culprit using a raw "diff-tree", with which there is no output for
   a merge commit.  This has been updated to use a more modern and
   human readable output that still is concise enough.

 * "git rebase --rebase-merges" replaces its old "--preserve-merges"
   option; the latter is now marked as deprecated.

 * Error message given while cloning with --recurse-submodules has
   been updated.

 * The completion helper code now pays attention to repository-local
   configuration (when available), which allows --list-cmds to honour
   a repository specific setting of completion.commands, for example.

 * "git mergetool" learned to offer Sublime Merge (smerge) as one of
   its backends.

 * A new hook "post-index-change" is called when the on-disk index
   file changes, which can help e.g. a virtualized working tree
   implementation.

 * "git difftool" can now run outside a repository.

 * "git checkout -m <other>" was about carrying the differences
   between HEAD and the working-tree files forward while checking out
   another branch, and ignored the differences between HEAD and the
   index.  The command has been taught to abort when the index and the
   HEAD are different.

 * A progress indicator has been added to the "index-pack" step, which
   often makes users wait for completion during "git clone".

 * "git submodule" learns "set-branch" subcommand that allows the
   submodule.*.branch settings to be modified.

 * "git merge-recursive" backend recently learned a new heuristics to
   infer file movement based on how other files in the same directory
   moved.  As this is inherently less robust heuristics than the one
   based on the content similarity of the file itself (rather than
   based on what its neighbours are doing), it sometimes gives an
   outcome unexpected by the end users.  This has been toned down to
   leave the renamed paths in higher/conflicted stages in the index so
   that the user can examine and confirm the result.

 * "git tag" learned to give an advice suggesting it might be a
   mistake when creating an annotated or signed tag that points at
   another tag.

 * The "git pack-objects" command learned to report the number of
   objects it packed via the trace2 mechanism.

 * The list of conflicted paths shown in the editor while concluding a
   conflicted merge was shown above the scissors line when the
   clean-up mode is set to "scissors", even though it was commented
   out just like the list of updated paths and other information to
   help the user explain the merge better.

 * The trace2 tracing facility learned to auto-generate a filename
   when told to log to a directory.

 * "git clone" learned a new --server-option option when talking over
   the protocol version 2.

 * The connectivity bitmaps are created by default in bare
   repositories now; also the pathname hash-cache is created by
   default to avoid making crappy deltas when repacking.

 * "git branch new A...B" and "git checkout -b new A...B" have been
   taught that in their contexts, the notation A...B means "the merge
   base between these two commits", just like "git checkout A...B"
   detaches HEAD at that commit.

 * Update "git difftool" and "git mergetool" so that the combinations
   of {diff,merge}.{tool,guitool} configuration variables serve as
   fallback settings of each other in a sensible order.

 * The "--dir-diff" mode of "git difftool" is not useful in "--no-index"
   mode; they are now explicitly marked as mutually incompatible.


Performance, Internal Implementation, Development Support etc.

 * The diff machinery, one of the oldest parts of the system, which
   long predates the parse-options API, uses fairly long and complex
   handcrafted option parser.  This is being rewritten to use the
   parse-options API.

 * The implementation of pack-redundant has been updated for
   performance in a repository with many packfiles.

 * A more structured way to obtain execution trace has been added.

 * "git prune" has been taught to take advantage of reachability
   bitmap when able.

 * The command line parser of "git commit-tree" has been rewritten to
   use the parse-options API.

 * Suggest GitGitGadget instead of submitGit as a way to submit
   patches based on GitHub PR to us.

 * The test framework has been updated to help developers by making it
   easier to run most of the tests under different versions of
   over-the-wire protocols.

 * Dev support update to make it easier to compare two formatted
   results from our documentation.

 * The scripted "git rebase" implementation has been retired.

 * "git multi-pack-index verify" did not scale well with the number of
   packfiles, which is being improved.

 * "git stash" has been rewritten in C.

 * The "check-docs" Makefile target to support developers has been
   updated.

 * The tests have been updated not to rely on the abbreviated option
   names the parse-options API offers, to protect us from an
   abbreviated form of an option that used to be unique within the
   command getting non-unique when a new option that share the same
   prefix is added.

 * The scripted version of "git rebase -i" wrote and rewrote the todo
   list many times during a single step of its operation, and the
   recent C-rewrite made a faithful conversion of the logic to C.  The
   implementation has been updated to carry necessary information
   around in-core to avoid rewriting the same file over and over
   unnecessarily.

 * Test framework update to more robustly clean up leftover files and
   processes after tests are done.

 * Conversion from unsigned char[20] to struct object_id continues.

 * While running "git diff" in a lazy clone, we can upfront know which
   missing blobs we will need, instead of waiting for the on-demand
   machinery to discover them one by one.  The code learned to aim to
   achieve better performance by batching the request for these
   promised blobs.

 * During an initial "git clone --depth=..." partial clone, it is
   pointless to spend cycles for a large portion of the connectivity
   check that enumerates and skips promisor objects (which by
   definition is all objects fetched from the other side).  This has
   been optimized out.

 * Mechanically and systematically drop "extern" from function
   declaration.

 * The script to aggregate perf result unconditionally depended on
   libjson-perl even though it did not have to, which has been
   corrected.

 * The internal implementation of "git rebase -i" has been updated to
   avoid forking a separate "rebase--interactive" process.

 * Allow DEP and ASLR for Windows build to for security hardening.

 * Performance test framework has been broken and measured the version
   of Git that happens to be on $PATH, not the specified one to
   measure, for a while, which has been corrected.

 * Optionally "make coccicheck" can feed multiple source files to
   spatch, gaining performance while spending more memory.

 * Attempt to use an abbreviated option in "git clone --recurs" is
   responded by a request to disambiguate between --recursive and
   --recurse-submodules, which is bad because these two are synonyms.
   The parse-options API has been extended to define such synonyms
   more easily and not produce an unnecessary failure.

 * A pair of private functions in http.c that had names similar to
   fread/fwrite did not return the number of elements, which was found
   to be confusing.

 * Update collision-detecting SHA-1 code to build properly on HP-UX.


Fixes since v2.21
-----------------

 * "git prune-packed" did not notice and complain against excess
   arguments given from the command line, which now it does.
   (merge 9b0bd87ed2 rj/prune-packed-excess-args later to maint).

 * Split-index fix.
   (merge 6e37c8ed3c nd/split-index-null-base-fix later to maint).

 * "git diff --no-index" may still want to access Git goodies like
   --ext-diff and --textconv, but so far these have been ignored,
   which has been corrected.
   (merge 287ab28bfa jk/diff-no-index-initialize later to maint).

 * Unify RPC code for smart http in protocol v0/v1 and v2, which fixes
   a bug in the latter (lack of authentication retry) and generally
   improves the code base.
   (merge a97d00799a jt/http-auth-proto-v2-fix later to maint).

 * The include file compat/bswap.h has been updated so that it is safe
   to (accidentally) include it more than once.
   (merge 33aa579a55 jk/guard-bswap-header later to maint).

 * The set of header files used by "make hdr-check" unconditionally
   included sha256/gcrypt.h, even when it is not used, causing the
   make target to fail.  We now skip it when GCRYPT_SHA256 is not in
   use.
   (merge f23aa18e7f rj/hdr-check-gcrypt-fix later to maint).

 * The Makefile uses 'find' utility to enumerate all the *.h header
   files, which is expensive on platforms with slow filesystems; it
   now optionally uses "ls-files" if working within a repository,
   which is a trick similar to how all sources are enumerated to run
   ETAGS on.
   (merge 92b88eba9f js/find-lib-h-with-ls-files-when-possible later to maint).

 * "git rebase" that was reimplemented in C did not set ORIG_HEAD
   correctly, which has been corrected.
   (merge cbd29ead92 js/rebase-orig-head-fix later to maint).

 * Dev support.
   (merge f545737144 js/stress-test-ui-tweak later to maint).

 * CFLAGS now can be tweaked when invoking Make while using
   DEVELOPER=YesPlease; this did not work well before.
   (merge 6d5d4b4e93 ab/makefile-help-devs-more later to maint).

 * "git fsck --connectivity-only" omits computation necessary to sift
   the objects that are not reachable from any of the refs into
   unreachable and dangling.  This is now enabled when dangling
   objects are requested (which is done by default, but can be
   overridden with the "--no-dangling" option).
   (merge 8d8c2a5aef jk/fsck-doc later to maint).

 * On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX),
   the upload-pack that runs on the other end that hangs up after
   detecting an error could cause "git fetch" to die with a signal,
   which led to a flaky test.  "git fetch" now ignores SIGPIPE during
   the network portion of its operation (this is not a problem as we
   check the return status from our write(2)s).
   (merge 143588949c jk/no-sigpipe-during-network-transport later to maint).

 * A recent update broke "is this object available to us?" check for
   well-known objects like an empty tree (which should yield "yes",
   even when there is no on-disk object for an empty tree), which has
   been corrected.
   (merge f06ab027ef jk/virtual-objects-do-exist later to maint).

 * The setup code has been cleaned up to avoid leaks around the
   repository_format structure.
   (merge e8805af1c3 ma/clear-repository-format later to maint).

 * "git config --type=color ..." is meant to replace "git config --get-color"
   but there is a slight difference that wasn't documented, which is
   now fixed.
   (merge cd8e7593b9 jk/config-type-color-ends-with-lf later to maint).

 * When the "clean" filter can reduce the size of a huge file in the
   working tree down to a small "token" (a la Git LFS), there is no
   point in allocating a huge scratch area upfront, but the buffer is
   sized based on the original file size.  The convert mechanism now
   allocates very minimum and reallocates as it receives the output
   from the clean filter process.
   (merge 02156ab031 jh/resize-convert-scratch-buffer later to maint).

 * "git rebase" uses the refs/rewritten/ hierarchy to store its
   intermediate states, which inherently makes the hierarchy per
   worktree, but it didn't quite work well.
   (merge b9317d55a3 nd/rewritten-ref-is-per-worktree later to maint).

 * "git log -L<from>,<to>:<path>" with "-s" did not suppress the patch
   output as it should.  This has been corrected.
   (merge 05314efaea jk/line-log-with-patch later to maint).

 * "git worktree add" used to do a "find an available name with stat
   and then mkdir", which is race-prone.  This has been fixed by using
   mkdir and reacting to EEXIST in a loop.
   (merge 7af01f2367 ms/worktree-add-atomic-mkdir later to maint).

 * Build update for SHA-1 with collision detection.
   (merge 07a20f569b jk/sha1dc later to maint).

 * Build procedure has been fixed around use of asciidoctor instead of
   asciidoc.
   (merge 185f9a0ea0 ma/asciidoctor-fixes later to maint).

 * remote-http transport did not anonymize URLs reported in its error
   messages at places.
   (merge c1284b21f2 js/anonymize-remote-curl-diag later to maint).

 * Error messages given from the http transport have been updated so
   that they can be localized.
   (merge ed8b4132c8 js/remote-curl-i18n later to maint).

 * "git init" forgot to read platform-specific repository
   configuration, which made Windows port to ignore settings of
   core.hidedotfiles, for example.

 * A corner-case object name ambiguity while the sequencer machinery
   is working (e.g. "rebase -i -x") has been fixed.

 * "git format-patch" did not diagnose an error while opening the
   output file for the cover-letter, which has been corrected.
   (merge 2fe95f494c jc/format-patch-error-check later to maint).

 * "git checkout -f <branch>" while the index has an unmerged path
   incorrectly left some paths in an unmerged state, which has been
   corrected.

 * A corner case bug in the refs API has been corrected.
   (merge d3322eb28b jk/refs-double-abort later to maint).

 * Unicode update.
   (merge 584b62c37b bb/unicode-12 later to maint).

 * dumb-http walker has been updated to share more error recovery
   strategy with the normal codepath.

 * A buglet in configuration parser has been fixed.
   (merge 19e7fdaa58 nd/include-if-wildmatch later to maint).

 * The documentation for "git read-tree --reset -u" has been updated.
   (merge b5a0bd694c nd/read-tree-reset-doc later to maint).

 * Code clean-up around a much-less-important-than-it-used-to-be
   update_server_info() function.
   (merge b3223761c8 jk/server-info-rabbit-hole later to maint).

 * The message given when "git commit -a <paths>" errors out has been
   updated.
   (merge 5a1dbd48bc nd/commit-a-with-paths-msg-update later to maint).

 * "git cherry-pick --options A..B", after giving control back to the
   user to ask help resolving a conflicted step, did not honor the
   options it originally received, which has been corrected.

 * Various glitches in "git gc" around reflog handling have been fixed.

 * The code to read from commit-graph file has been cleanup with more
   careful error checking before using data read from it.

 * Performance fix around "git fetch" that grabs many refs.
   (merge b764300912 jt/fetch-pack-wanted-refs-optim later to maint).

 * Protocol v2 support in "git fetch-pack" of shallow clones has been
   corrected.

 * Performance fix around "git blame", especially in a linear history
   (which is the norm we should optimize for).
   (merge f892014943 dk/blame-keep-origin-blob later to maint).

 * Performance fix for "rev-list --parents -- pathspec".
   (merge 8320b1dbe7 jk/revision-rewritten-parents-in-prio-queue later to maint).

 * Updating the display with progress message has been cleaned up to
   deal better with overlong messages.
   (merge 545dc345eb sg/overlong-progress-fix later to maint).

 * "git blame -- path" in a non-bare repository starts blaming from
   the working tree, and the same command in a bare repository errors
   out because there is no working tree by definition.  The command
   has been taught to instead start blaming from the commit at HEAD,
   which is more useful.
   (merge a544fb08f8 sg/blame-in-bare-start-at-head later to maint).

 * An underallocation in the code to read the untracked cache
   extension has been corrected.
   (merge 3a7b45a623 js/untracked-cache-allocfix later to maint).

 * The code is updated to check the result of memory allocation before
   it is used in more places, by using xmalloc and/or xcalloc calls.
   (merge 999b951b28 jk/xmalloc later to maint).

 * The GETTEXT_POISON test option has been quite broken ever since it
   was made runtime-tunable, which has been fixed.
   (merge f88b9cb603 jc/gettext-test-fix later to maint).

 * Test fix on APFS that is incapable of store paths in Latin-1.
   (merge 3889149619 js/iso8895-test-on-apfs later to maint).

 * "git submodule foreach <command> --quiet" did not pass the option
   down correctly, which has been corrected.
   (merge a282f5a906 nd/submodule-foreach-quiet later to maint).

 * "git send-email" has been taught to use quoted-printable when the
   payload contains carriage-return.  The use of the mechanism is in
   line with the design originally added the codepath that chooses QP
   when the payload has overly long lines.
   (merge 74d76a1701 bc/send-email-qp-cr later to maint).

 * The recently added feature to add addresses that are on
   anything-by: trailers in 'git send-email' was found to be way too
   eager and considered nonsense strings as if they can be legitimate
   beginning of *-by: trailer.  This has been tightened.

 * Builds with gettext broke on recent macOS w/ Homebrew, which
   seems to have stopped including from /usr/local/include; this
   has been corrected.
   (merge 92a1377a2a js/macos-gettext-build later to maint).

 * Running "git add" on a repository created inside the current
   repository is an explicit indication that the user wants to add it
   as a submodule, but when the HEAD of the inner repository is on an
   unborn branch, it cannot be added as a submodule.  Worse, the files
   in its working tree can be added as if they are a part of the outer
   repository, which is not what the user wants.  These problems are
   being addressed.
   (merge f937bc2f86 km/empty-repo-is-still-a-repo later to maint).

 * "git cherry-pick" run with the "-x" or the "--signoff" option used
   to (and more importantly, ought to) clean up the commit log message
   with the --cleanup=space option by default, but this has been
   broken since late 2017.  This has been fixed.

 * When given a tag that points at a commit-ish, "git replace --graft"
   failed to peel the tag before writing a replace ref, which did not
   make sense because the old graft mechanism the feature wants to
   mimic only allowed to replace one commit object with another.
   This has been fixed.
   (merge ee521ec4cb cc/replace-graft-peel-tags later to maint).

 * Code tightening against a "wrong" object appearing where an object
   of a different type is expected, instead of blindly assuming that
   the connection between objects are correctly made.
   (merge 97dd512af7 tb/unexpected later to maint).

 * An earlier update for MinGW and Cygwin accidentally broke MSVC build,
   which has been fixed.
   (merge 22c3634c0f ss/msvc-path-utils-fix later to maint).

 * %(push:track) token used in the --format option to "git
   for-each-ref" and friends was not showing the right branch, which
   has been fixed.
   (merge c646d0934e dr/ref-filter-push-track-fix later to maint).

 * "make check-docs", "git help -a", etc. did not account for cases
   where a particular build may deliberately omit some subcommands,
   which has been corrected.

 * The logic to tell if a Git repository has a working tree protects
   "git branch -D" from removing the branch that is currently checked
   out by mistake.  The implementation of this logic was broken for
   repositories with unusual name, which unfortunately is the norm for
   submodules these days.  This has been fixed.
   (merge f3534c98e4 jt/submodule-repo-is-with-worktree later to maint).

 * AIX shared the same build issues with other BSDs around fileno(fp),
   which has been corrected.
   (merge ee662bf5c6 cc/aix-has-fileno-as-a-macro later to maint).

 * The autoconf generated configure script failed to use the right
   gettext() implementations from -libintl by ignoring useless stub
   implementations shipped in some C library, which has been
   corrected.
   (merge b71e56a683 vk/autoconf-gettext later to maint).

 * Fix index-pack perf test so that the repeated invocations always
   run in an empty repository, which emulates the initial clone
   situation better.
   (merge 775c71e16d jk/p5302-avoid-collision-check-cost later to maint).

 * A "ls-files" that emulates "find" to enumerate files in the working
   tree resulted in duplicated Makefile rules that caused the build to
   issue an unnecessary warning during a trial build after merge
   conflicts are resolved in working tree *.h files but before the
   resolved results are added to the index.  This has been corrected.

 * "git cherry-pick" (and "revert" that shares the same runtime engine)
   that deals with multiple commits got confused when the final step
   gets stopped with a conflict and the user concluded the sequence
   with "git commit".  Attempt to fix it by cleaning up the state
   files used by these commands in such a situation.
   (merge 4a72486de9 pw/clean-sequencer-state-upon-final-commit later to maint).

 * On a filesystem like HFS+, the names of the refs stored as filesystem
   entities may become different from what the end-user expects, just
   like files in the working tree get "renamed".  Work around the
   mismatch by paying attention to the core.precomposeUnicode
   configuration.
   (merge 8e712ef6fc en/unicode-in-refnames later to maint).

 * The code to generate the multi-pack idx file was not prepared to
   see too many packfiles and ran out of open file descriptor, which
   has been corrected.

 * To run tests for Git SVN, our scripts for CI used to install the
   git-svn package (in the hope that it would bring in the right
   dependencies).  This has been updated to install the more direct
   dependency, namely, libsvn-perl.
   (merge db864306cf sg/ci-libsvn-perl later to maint).

 * "git cvsexportcommit" running on msys did not expect cvsnt showed
   "cvs status" output with CRLF line endings.

 * The fsmonitor interface got out of sync after the in-core index
   file gets discarded, which has been corrected.
   (merge 398a3b0899 js/fsmonitor-refresh-after-discarding-index later to maint).

 * "git status" did not know that the "label" instruction in the
   todo-list "rebase -i -r" uses should not be shown as a hex object
   name.

 * A prerequisite check in the test suite to see if a working jgit is
   available was made more robust.
   (merge abd0f28983 tz/test-lib-check-working-jgit later to maint).

 * The codepath to parse :<path> that obtains the object name for an
   indexed object has been made more robust.

 * Code cleanup, docfix, build fix, etc.
   (merge 11f470aee7 jc/test-yes-doc later to maint).
   (merge 90503a240b js/doc-symref-in-proto-v1 later to maint).
   (merge 5c326d1252 jk/unused-params later to maint).
   (merge 68cabbfda3 dl/doc-submodule-wo-subcommand later to maint).
   (merge 9903623761 ab/receive-pack-use-after-free-fix later to maint).
   (merge 1ede45e44b en/merge-options-doc later to maint).
   (merge 3e14dd2c8e rd/doc-hook-used-in-sample later to maint).
   (merge c271dc28fd nd/no-more-check-racy later to maint).
   (merge e6e15194a8 yb/utf-16le-bom-spellfix later to maint).
   (merge bb101aaf0c rd/attr.c-comment-typofix later to maint).
   (merge 716a5af812 rd/gc-prune-doc-fix later to maint).
   (merge 50b206371d js/untravis-windows later to maint).
   (merge dbf47215e3 js/rebase-recreate-merge later to maint).
   (merge 56cb2d30f8 dl/reset-doc-no-wrt-abbrev later to maint).
   (merge 64eca306a2 ja/dir-rename-doc-markup-fix later to maint).
   (merge af91b0230c dl/ignore-docs later to maint).
   (merge 59a06e947b ra/t3600-test-path-funcs later to maint).
   (merge e041d0781b ar/t4150-remove-cruft later to maint).
   (merge 8d75a1d183 ma/asciidoctor-fixes-more later to maint).
   (merge 74cc547b0f mh/pack-protocol-doc-fix later to maint).
   (merge ed31851fa6 ab/doc-misc-typofixes later to maint).
   (merge a7256debd4 nd/checkout-m-doc-update later to maint).
   (merge 3a9e1ad78d jt/t5551-protocol-v2-does-not-have-half-auth later to maint).
   (merge 0b918b75af sg/t5318-cleanup later to maint).
   (merge 68ed71b53c cb/doco-mono later to maint).
   (merge a34dca2451 nd/interpret-trailers-docfix later to maint).
   (merge cf7b857a77 en/fast-import-parsing-fix later to maint).
   (merge fe61ccbc35 po/rerere-doc-fmt later to maint).
   (merge ffea0248bf po/describe-not-necessarily-7 later to maint).
   (merge 7cb7283adb tg/ls-files-debug-format-fix later to maint).
   (merge f64a21bd82 tz/doc-apostrophe-no-longer-needed later to maint).
   (merge dbe7b41019 js/t3301-unbreak-notes-test later to maint).
   (merge d8083e4180 km/t3000-retitle later to maint).
   (merge 9e4cbccbd7 tz/git-svn-doc-markup-fix later to maint).
   (merge da9ca955a7 jk/ls-files-doc-markup-fix later to maint).
   (merge 6804ba3a58 cw/diff-highlight later to maint).
   (merge 1a8787144d nd/submodule-helper-incomplete-line-fix later to maint).
   (merge d9ef573837 jk/apache-lsan later to maint).
   (merge c871fbee2b js/t6500-use-windows-pid-on-mingw later to maint).
   (merge ce4c7bfc90 bl/t4253-exit-code-from-format-patch later to maint).
   (merge 397a46db78 js/t5580-unc-alternate-test later to maint).
   (merge d4907720a2 cm/notes-comment-fix later to maint).
   (merge 9dde06de13 cb/http-push-null-in-message-fix later to maint).
   (merge 4c785c0edc js/rebase-config-bitfix later to maint).
   (merge 8e9fe16c87 es/doc-gitsubmodules-markup later to maint).

----------------------------------------------------------------

Changes since v2.21.0 are as follows:

Alban Gruin (18):
      sequencer: changes in parse_insn_buffer()
      sequencer: make the todo_list structure public
      sequencer: remove the 'arg' field from todo_item
      sequencer: refactor transform_todos() to work on a todo_list
      sequencer: introduce todo_list_write_to_file()
      sequencer: refactor check_todo_list() to work on a todo_list
      sequencer: refactor sequencer_add_exec_commands() to work on a todo_list
      sequencer: refactor rearrange_squash() to work on a todo_list
      sequencer: make sequencer_make_script() write its script to a strbuf
      sequencer: change complete_action() to use the refactored functions
      rebase--interactive: move sequencer_add_exec_commands()
      rebase--interactive: move rearrange_squash_in_todo_file()
      sequencer: refactor skip_unnecessary_picks() to work on a todo_list
      rebase-interactive: use todo_list_write_to_file() in edit_todo_list()
      rebase-interactive: append_todo_help() changes
      rebase-interactive: rewrite edit_todo_list() to handle the initial edit
      sequencer: use edit_todo_list() in complete_action()
      rebase--interactive: move transform_todo_file()

Alexander Blesius (1):
      doc: fix typos in man pages

Alexander Shopov (1):
      gitk: Update Bulgarian translation (317t)

Anders Waldenborg (7):
      doc: group pretty-format.txt placeholders descriptions
      pretty: allow %(trailers) options with explicit value
      pretty: single return path in %(trailers) handling
      pretty: allow showing specific trailers
      pretty: add support for "valueonly" option in %(trailers)
      strbuf: separate callback for strbuf_expand:ing literals
      pretty: add support for separator option in %(trailers)

Andreas Heiduk (1):
      revisions.txt: remove ambibuity between <rev>:<path> and :<path>

Andrei Rybak (1):
      t4150: remove unused variable

Baruch Siach (1):
      send-email: don't cc *-by lines with '-' prefix

Beat Bolli (1):
      unicode: update the width tables to Unicode 12

Ben Peart (1):
      read-cache: add post-index-change hook

Boxuan Li (1):
      t4253-am-keep-cr-dos: avoid using pipes

Brandon Richardson (1):
      commit-tree: utilize parse-options api

Carlo Marcelo Arenas Belón (1):
      http-push: prevent format overflow warning with gcc >= 9

Chris Mayo (1):
      notes: correct documentation of format_display_notes()

Chris. Webster (1):
      diff-highlight: use correct /dev/null for UNIX and Windows

Christian Couder (5):
      t6050: use test_line_count instead of wc -l
      t6050: redirect expected error output to a file
      replace: peel tag when passing a tag as parent to --graft
      replace: peel tag when passing a tag first to --graft
      list-objects-filter: disable 'sparse:path' filters

Clément Chigot (2):
      Makefile: use fileno macro work around on AIX
      git-compat-util: work around for access(X_OK) under root

Corentin BOMPARD (2):
      doc/CodingGuidelines: URLs and paths as monospace
      doc: format pathnames and URLs as monospace.

Damien Robert (1):
      ref-filter: use correct branch for %(push:track)

Daniels Umanovskis (1):
      branch: introduce --show-current display option

David Aguilar (2):
      mergetools: add support for smerge (Sublime Merge)
      contrib/completion: add smerge to the mergetool completion candidates

David Kastrup (1):
      blame.c: don't drop origin blobs as eagerly

Denton Liu (38):
      completion: complete git submodule absorbgitdirs
      git-submodule.txt: "--branch <branch>" option defaults to 'master'
      submodule--helper: teach config subcommand --unset
      submodule: document default behavior
      git-reset.txt: clarify documentation
      git-clean.txt: clarify ignore pattern files
      docs: move core.excludesFile from git-add to gitignore
      contrib/subtree: ensure only one rev is provided
      midx.c: convert FLEX_ALLOC_MEM to FLEX_ALLOC_STR
      cocci: FLEX_ALLOC_MEM to FLEX_ALLOC_STR
      tag: fix formatting
      submodule: teach set-branch subcommand
      tag: advise on nested tags
      t7600: clean up style
      t3507: clean up style
      t7604: clean up style
      t7502: clean up style
      commit: extract cleanup_mode functions to sequencer
      parse-options.h: extract common --cleanup option
      merge: cleanup messages like commit
      merge: add scissors line on merge conflict
      cherry-pick/revert: add scissors line on merge conflict
      t7610: unsuppress output
      t7610: add mergetool --gui tests
      *.[ch]: remove extern from function declarations using spatch
      *.[ch]: remove extern from function declarations using sed
      *.[ch]: manually align parameter lists
      t2018: cleanup in current test
      branch: make create_branch accept a merge base rev
      revisions.txt: change "rev" to "<rev>"
      revisions.txt: mark optional rev arguments with []
      revisions.txt: mention <rev>~ form
      tag: fix typo in nested tagging hint
      mergetool: use get_merge_tool function
      mergetool--lib: create gui_mode function
      mergetool: fallback to tool when guitool unavailable
      difftool: make --gui, --tool and --extcmd mutually exclusive
      difftool: fallback on merge.guitool

Derrick Stolee (4):
      trace2:data: pack-objects: add trace2 regions
      midx: pass a repository pointer
      midx: add packs to packed_git linked list
      trace2: add variable description to git.txt

Dustin Spicuzza (1):
      cvsexportcommit: force crlf translation

Elijah Newren (23):
      log,diff-tree: add --combined-all-paths option
      merge-options.txt: correct wording of --no-commit option
      t9300: demonstrate bug with get-mark and empty orphan commits
      git-fast-import.txt: fix wording about where ls command can appear
      fast-import: check most prominent commands first
      fast-import: only allow cat-blob requests where it makes sense
      fast-import: fix erroneous handling of get-mark with empty orphan commits
      Use 'unsigned short' for mode, like diff_filespec does
      merge-recursive: rename merge_options argument from 'o' to 'opt'
      merge-recursive: rename diff_filespec 'one' to 'o'
      merge-recursive: rename locals 'o' and 'a' to 'obuf' and 'abuf'
      merge-recursive: use 'ci' for rename_conflict_info variable name
      merge-recursive: move some struct declarations together
      merge-recursive: shrink rename_conflict_info
      merge-recursive: remove ren[12]_other fields from rename_conflict_info
      merge-recursive: track branch where rename occurred in rename struct
      merge-recursive: cleanup handle_rename_* function signatures
      merge-recursive: switch from (oid,mode) pairs to a diff_filespec
      t6043: fix copied test description to match its purpose
      merge-recursive: track information associated with directory renames
      merge-recursive: give callers of handle_content_merge() access to contents
      merge-recursive: switch directory rename detection default
      Honor core.precomposeUnicode in more places

Emily Shaffer (1):
      gitsubmodules: align html and nroff lists

Eric Sunshine (1):
      check-non-portable-shell: support Perl versions older than 5.10

Eric Wong (1):
      repack: enable bitmaps by default on bare repos

Jean-Noël Avila (3):
      l10n: fr.po remove obsolete entries
      Doc: fix misleading asciidoc formating
      diff: fix mistake in translatable strings

Jeff Hostetler (30):
      trace2: Documentation/technical/api-trace2.txt
      trace2: create new combined trace facility
      trace2: collect Windows-specific process information
      trace2:data: add trace2 regions to wt-status
      trace2:data: add editor/pager child classification
      trace2:data: add trace2 sub-process classification
      trace2:data: add trace2 transport child classification
      trace2:data: add subverb to checkout command
      trace2:data: add subverb to reset command
      trace2:data: add trace2 hook classification
      trace2:data: add subverb for rebase
      trace2:data: add trace2 instrumentation to index read/write
      trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh
      trace2: add for_each macros to clang-format
      progress: add sparse mode to force 100% complete message
      trace2:data: add trace2 data to midx
      midx: add progress indicators in multi-pack-index verify
      midx: during verify group objects by packfile to speed verification
      config: initialize opts structure in repo_read_config()
      trace2: refactor setting process starting time
      trace2: add absolute elapsed time to start event
      trace2: find exec-dir before trace2 initialization
      config: add read_very_early_config()
      trace2: use system/global config for default trace2 settings
      trace2: report peak memory usage of the process
      trace2: clarify UTC datetime formatting
      trace2: make SIDs more unique
      trace2: update docs to describe system/global config settings
      trace2: fixup access problem on /etc/gitconfig in read_very_early_config
      trace2: fix tracing when NO_PTHREADS is defined

Jeff King (92):
      prune: lazily perform reachability traversal
      prune: use bitmaps for reachability traversal
      prune: check SEEN flag for reachability
      t5304: rename "sha1" variables to "oid"
      diff: drop options parameter from diffcore_fix_diff_index()
      diff: drop unused color reset parameters
      diff: drop unused emit data parameter from sane_truncate_line()
      diff: drop complete_rewrite parameter from run_external_diff()
      merge-recursive: drop several unused parameters
      pack-objects: drop unused parameter from oe_map_new_pack()
      files-backend: drop refs parameter from split_symref_update()
      ref-filter: drop unused buf/sz pairs
      ref-filter: drop unused "obj" parameters
      ref-filter: drop unused "sz" parameters
      diff: reuse diff setup for --no-index case
      bisect: use string arguments to feed internal diff-tree
      bisect: fix internal diff-tree config loading
      bisect: make diff-tree output prettier
      fetch: avoid calling write_or_die()
      fetch: ignore SIGPIPE during network operation
      rev-list: allow cached objects in existence check
      doc/fsck: clarify --connectivity-only behavior
      fsck: always compute USED flags for unreachable objects
      compat/bswap: add include header guards
      config: document --type=color output is a complete line
      line-log: suppress diff output with "-s"
      line-log: detect unsupported formats
      point pull requesters to GitGitGadget
      Makefile: fix unaligned loads in sha1dc with UBSan
      t5310: correctly remove bitmaps for jgit test
      pack-objects: default to writing bitmap hash-cache
      perf-lib.sh: rely on test-lib.sh for --tee handling
      revision: drop some unused "revs" parameters
      log: drop unused rev_info from early output
      log: drop unused "len" from show_tagger()
      update-index: drop unused prefix_length parameter from do_reupdate()
      test-date: drop unused "now" parameter from parse_dates()
      unpack-trees: drop name_entry from traverse_by_cache_tree()
      unpack-trees: drop unused error_type parameters
      report_path_error(): drop unused prefix parameter
      fetch_pack(): drop unused parameters
      parse-options: drop unused ctx parameter from show_gitcomp()
      pretty: drop unused "type" parameter in needs_rfc2047_encoding()
      pretty: drop unused strbuf from parse_padding_placeholder()
      git: read local config in --list-cmds
      completion: fix multiple command removals
      parse_opt_ref_sorting: always use with NONEG flag
      refs/files-backend: handle packed transaction prepare failure
      refs/files-backend: don't look at an aborted transaction
      http: factor out curl result code normalization
      http: normalize curl results for dumb loose and alternates fetches
      http: use normalize_curl_result() instead of manual conversion
      revision: use a prio_queue to hold rewritten parents
      get_commit_tree(): return NULL for broken tree
      rev-list: let traversal die when --missing is not in use
      rev-list: detect broken root trees
      test-prio-queue: use xmalloc
      xdiff: use git-compat-util
      xdiff: use xmalloc/xrealloc
      progress: use xmalloc/xcalloc
      t5516: drop ok=sigpipe from unreachable-want tests
      t5530: check protocol response for "not our ref"
      upload-pack: send ERR packet for non-tip objects
      pkt-line: prepare buffer before handling ERR packets
      fetch: use free_refs()
      remote.c: make singular free_ref() public
      fetch: do not consider peeled tags as advertised tips
      packfile.h: drop extern from function declarations
      pack-revindex: open index if necessary
      t5319: fix bogus cat-file argument
      t5319: drop useless --buffer from cat-file
      midx: check both pack and index names for containment
      packfile: fix pack basename computation
      http: simplify parsing of remote objects/info/packs
      server-info: fix blind pointer arithmetic
      server-info: simplify cleanup in parse_pack_def()
      server-info: use strbuf to read old info/packs file
      server-info: drop nr_alloc struct member
      server-info: drop objdirlen pointer arithmetic
      update_info_refs(): drop unused force parameter
      t5304: add a test for pruning with bitmaps
      untracked-cache: be defensive about missing NULs in index
      untracked-cache: simplify parsing by dropping "next"
      untracked-cache: simplify parsing by dropping "len"
      p5302: create the repo in each index-pack test
      doc/ls-files: put nested list for "-t" option into block
      t/perf: depend on perl JSON only when using --codespeed
      t/perf: add perf script for partial clones
      coccicheck: optionally batch spatch invocations
      t/lib-httpd: pass LSAN_OPTIONS through apache
      coccicheck: make batch size of 0 mean "unlimited"
      get_oid: handle NULL repo->index

Jiang Xin (5):
      t5323: test cases for git-pack-redundant
      pack-redundant: delay creation of unique_objects
      pack-redundant: rename pack_list.all_objects
      pack-redundant: consistent sort method
      i18n: fix typos found during l10n for git 2.22.0

Joel Teichroeb (5):
      stash: improve option parsing test coverage
      stash: convert apply to builtin
      stash: convert drop and clear to builtin
      stash: convert branch to builtin
      stash: convert pop to builtin

Joey Hess (1):
      convert: avoid malloc of original file size

Johannes Schindelin (67):
      ident: add the ability to provide a "fallback identity"
      travis: remove the hack to build the Windows job on Azure Pipelines
      tests: let --stress-limit=<N> imply --stress
      tests: introduce --stress-jobs=<N>
      built-in rebase: no need to check out `onto` twice
      built-in rebase: use the correct reflog when switching branches
      built-in rebase: demonstrate that ORIG_HEAD is not set correctly
      built-in rebase: set ORIG_HEAD just once, before the rebase
      Makefile: use `git ls-files` to list header files, if possible
      curl: anonymize URLs in error messages and warnings
      remote-curl: mark all error messages for translation
      stash: add back the original, scripted `git stash`
      stash: optionally use the scripted version again
      tests: add a special setup where stash.useBuiltin is off
      legacy stash: fix "rudimentary backport of -q"
      built-in stash: handle :(glob) pathspecs again
      mingw: drop MakeMaker reference
      mingw: allow building with an MSYS2 runtime v3.x
      rebase: deprecate --preserve-merges
      mingw: respect core.hidedotfiles = false in git-init again
      test-lib: introduce 'test_atexit'
      git-daemon: use 'test_atexit` to stop 'git-daemon'
      git p4 test: use 'test_atexit' to kill p4d and the watchdog process
      rebase -i: demonstrate obscure loose object cache bug
      sequencer: improve error message when an OID could not be parsed
      sequencer: move stale comment into correct location
      get_oid(): when an object was not found, try harder
      difftool: remove obsolete (and misleading) comment
      parse-options: make OPT_ARGUMENT() more useful
      difftool: allow running outside Git worktrees with --no-index
      docs: move gitremote-helpers into section 7
      docs: do not document the `git remote-testgit` command
      check-docs: really look at the documented commands again
      check-docs: do not expect guide pages to correspond to commands
      check-docs: fix for setups where executables have an extension
      tests (rebase): spell out the `--keep-empty` option
      tests (rebase): spell out the `--force-rebase` option
      t7810: do not abbreviate `--no-exclude-standard` nor `--invert-match`
      t5531: avoid using an abbreviated option
      tests (push): do not abbreviate the `--follow-tags` option
      tests (status): spell out the `--find-renames` option in full
      tests (pack-objects): use the full, unabbreviated `--revs` option
      t3301: fix false negative
      untracked cache: fix off-by-one
      tests: disallow the use of abbreviated options (by default)
      t9822: skip tests if file names cannot be ISO-8859-1 encoded
      macOS: make sure that gettext is found
      remote-testgit: move it into the support directory for t5801
      Makefile: drop the NO_INSTALL variable
      help -a: do not list commands that are excluded from the build
      check-docs: allow command-list.txt to contain excluded commands
      docs: exclude documentation for commands that have been excluded
      check-docs: do not bother checking for legacy scripts' documentation
      test-tool: handle the `-C <directory>` option just like `git`
      Turn `git serve` into a test helper
      t5580: verify that alternates can be UNC paths
      fsmonitor: demonstrate that it is not refreshed after discard_index()
      fsmonitor: force a refresh after the index was discarded
      t6500(mingw): use the Windows PID of the shell
      difftool --no-index: error out on --dir-diff (and don't crash)
      status: fix display of rebase -ir's `label` command
      parse-options: adjust `parse_opt_unknown_cb()`s declared return type
      stash: document stash.useBuiltin
      rebase: replace incorrect logical negation by correct bitwise one
      tests: mark a couple more test cases as requiring `rebase -p`
      docs: say that `--rebase=preserve` is deprecated
      rebase docs: recommend `-r` over `-p`

Jonathan Tan (25):
      remote-curl: reduce scope of rpc_state.argv
      remote-curl: reduce scope of rpc_state.stdin_preamble
      remote-curl: reduce scope of rpc_state.result
      remote-curl: refactor reading into rpc_state's buf
      remote-curl: use post_rpc() for protocol v2 also
      tests: define GIT_TEST_PROTOCOL_VERSION
      t5601: check ssh command only with protocol v0
      tests: always test fetch of unreachable with v0
      t5503: fix overspecification of trace expectation
      t5512: compensate for v0 only sending HEAD symrefs
      t5700: only run with protocol version 1
      tests: fix protocol version for overspecifications
      t5552: compensate for v2 filtering ref adv.
      submodule: explain first attempt failure clearly
      t5551: mark half-auth no-op fetch test as v0-only
      fetch-pack: call prepare_shallow_info only if v0
      fetch-pack: respect --no-update-shallow in v2
      sha1-file: support OBJECT_INFO_FOR_PREFETCH
      fetch-pack: binary search when storing wanted-refs
      diff: batch fetching of missing blobs
      pack-objects: write objects packed to trace2
      transport: die if server options are unsupported
      clone: send server options when using protocol v2
      worktree: update is_bare heuristics
      fetch-pack: send server options after command

Jordi Mas (1):
      l10n: Fixes to Catalan translation

Josh Steadmon (5):
      protocol-capabilities.txt: document symref
      trace2: write to directory targets
      clone: do faster object check for partial clones
      trace2: fix incorrect function pointer check
      commit-graph: fix memory leak

Junio C Hamano (18):
      test: caution on our version of 'yes'
      builtin/log: downcase the beginning of error messages
      format-patch: notice failure to open cover letter for writing
      Start 2.22 cycle
      The second batch
      The third batch
      The fourth batch
      gettext tests: export the restored GIT_TEST_GETTEXT_POISON
      The fifth batch
      The sixth batch
      Makefile: dedup list of files obtained from ls-files
      The seventh batch
      The eighth batch
      Git 2.22-rc0
      pkt-line: drop 'const'-ness of a param to set_packet_header()
      Git 2.22-rc1
      Git 2.22-rc2
      Git 2.22-rc3

Kyle Meyer (5):
      rebase docs: fix "gitlink" typo
      submodule: refuse to add repository with no commits
      dir: do not traverse repositories with no commits
      add: error appropriately on repository with no commits
      t3000 (ls-files -o): widen description to reflect current tests

Martin Ågren (14):
      setup: free old value before setting `work_tree`
      setup: fix memory leaks with `struct repository_format`
      config/diff.txt: drop spurious backtick
      config/fsck.txt: avoid starting line with dash
      git.txt: remove empty line before list continuation
      git-svn.txt: drop escaping '\' that ends up being rendered
      Documentation: turn middle-of-line tabs into spaces
      Documentation/Makefile: add missing xsl dependencies for manpages
      Documentation/Makefile: add missing dependency on asciidoctor-extensions
      asciidoctor-extensions: fix spurious space after linkgit
      Doc: auto-detect changed build flags
      doc-diff: let `render_tree()` take an explicit directory name
      doc-diff: support diffing from/to AsciiDoc(tor)
      doc-diff: add `--cut-header-footer`

Matthew Kraai (1):
      t3903: add test for --intent-to-add file

Michal Suchanek (1):
      worktree: fix worktree add race

Mike Hommey (2):
      fix pack protocol example client/server communication
      Make fread/fwrite-like functions in http.c more like fread/fwrite.

Nguyễn Thái Ngọc Duy (129):
      parse-options.h: remove extern on function prototypes
      parse-options: add one-shot mode
      parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
      parse-options: add OPT_BITOP()
      parse-options: stop abusing 'callback' for lowlevel callbacks
      parse-options: avoid magic return codes
      parse-options: allow ll_callback with OPTION_CALLBACK
      diff.h: keep forward struct declarations sorted
      diff.h: avoid bit fields in struct diff_flags
      diff.c: prepare to use parse_options() for parsing
      diff.c: convert -u|-p|--patch
      diff.c: convert -U|--unified
      diff.c: convert -W|--[no-]function-context
      diff.c: convert --raw
      read-cache.c: fix writing "link" index ext with null base oid
      completion: add more parameter value completion
      diff-parseopt: convert --patch-with-raw
      diff-parseopt: convert --numstat and --shortstat
      diff-parseopt: convert --dirstat and friends
      diff-parseopt: convert --check
      diff-parseopt: convert --summary
      diff-parseopt: convert --patch-with-stat
      diff-parseopt: convert --name-only
      diff-parseopt: convert --name-status
      diff-parseopt: convert -s|--no-patch
      diff-parseopt: convert --stat*
      diff-parseopt: convert --[no-]compact-summary
      diff-parseopt: convert --output-*
      diff-parseopt: convert -B|--break-rewrites
      diff-parseopt: convert -M|--find-renames
      diff-parseopt: convert -D|--irreversible-delete
      diff-parseopt: convert -C|--find-copies
      diff-parseopt: convert --find-copies-harder
      diff-parseopt: convert --no-renames|--[no--rename-empty
      diff-parseopt: convert --relative
      diff-parseopt: convert --[no-]minimal
      diff-parseopt: convert --ignore-some-changes
      Delete check-racy.c
      diff-parseopt: convert --[no-]indent-heuristic
      diff-parseopt: convert --patience
      diff-parseopt: convert --histogram
      diff-parseopt: convert --diff-algorithm
      diff-parseopt: convert --anchored
      diff-parseopt: convert --binary
      diff-parseopt: convert --full-index
      diff-parseopt: convert -a|--text
      diff-parseopt: convert -R
      diff-parseopt: convert --[no-]follow
      diff-parseopt: convert --[no-]color
      diff-parseopt: convert --word-diff
      diff-parseopt: convert --word-diff-regex
      diff-parseopt: convert --color-words
      diff-parseopt: convert --exit-code
      diff-parseopt: convert --quiet
      diff-parseopt: convert --ext-diff
      diff-parseopt: convert --textconv
      diff-parseopt: convert --ignore-submodules
      diff-parseopt: convert --submodule
      files-backend.c: factor out per-worktree code in loose_fill_ref_dir()
      files-backend.c: reduce duplication in add_per_worktree_entries_to_dir()
      Make sure refs/rewritten/ is per-worktree
      unpack-trees: fix oneway_merge accidentally carry over stage index
      checkout.txt: note about losing staged changes with --merge
      commit: improve error message in "-a <paths>" case
      unpack-trees: keep gently check inside add_rejected_path
      unpack-trees: rename "gently" flag to "quiet"
      read-tree: add --quiet
      checkout: prevent losing staged changes with --merge
      diff-parseopt: convert --ws-error-highlight
      diff-parseopt: convert --ita-[in]visible-in-index
      diff-parseopt: convert -z
      diff-parseopt: convert -l
      diff-parseopt: convert -S|-G
      diff-parseopt: convert --pickaxe-all|--pickaxe-regex
      diff-parseopt: convert -O
      diff-parseopt: convert --find-object
      diff-parseopt: convert --diff-filter
      diff-parseopt: convert --[no-]abbrev
      diff-parseopt: convert --[src|dst]-prefix
      diff-parseopt: convert --line-prefix
      diff-parseopt: convert --no-prefix
      diff-parseopt: convert --inter-hunk-context
      diff-parseopt: convert --[no-]color-moved
      diff-parseopt: convert --color-moved-ws
      diff.c: allow --no-color-moved-ws
      range-diff: use parse_options() instead of diff_opt_parse()
      diff --no-index: use parse_options() instead of diff_opt_parse()
      am: avoid diff_opt_parse()
      config: correct '**' matching in includeIf patterns
      interpret-trailers.txt: start the desc line with a capital letter
      read-tree.txt: clarify --reset and worktree changes
      packfile.c: add repo_approximate_object_count()
      refs.c: add refs_ref_exists()
      refs.c: add refs_shorten_unambiguous_ref()
      refs.c: remove the_repo from substitute_branch_name()
      refs.c: remove the_repo from expand_ref()
      refs.c: add repo_dwim_ref()
      refs.c: add repo_dwim_log()
      refs.c: remove the_repo from read_ref_at()
      submodule foreach: fix "<command> --quiet" not being respected
      commit.cocci: refactor code, avoid double rewrite
      commit.c: add repo_get_commit_tree()
      sha1-name.c: remove the_repo from sort_ambiguous()
      sha1-name.c: remove the_repo from find_abbrev_len_packed()
      sha1-name.c: add repo_find_unique_abbrev_r()
      sha1-name.c: store and use repo in struct disambiguate_state
      sha1-name.c: add repo_for_each_abbrev()
      sha1-name.c: remove the_repo from get_short_oid()
      sha1-name.c: remove the_repo from interpret_nth_prior_checkout()
      sha1-name.c: remove the_repo from interpret_branch_mark()
      sha1-name.c: add repo_interpret_branch_name()
      sha1-name.c: remove the_repo from get_oid_oneline()
      sha1-name.c: remove the_repo from get_describe_name()
      sha1-name.c: remove the_repo from get_oid_basic()
      sha1-name.c: remove the_repo from get_oid_1()
      sha1-name.c: remove the_repo from handle_one_ref()
      sha1-name.c: remove the_repo from diagnose_invalid_index_path()
      sha1-name.c: remove the_repo from resolve_relative_path()
      sha1-name.c: remove the_repo from get_oid_with_context_1()
      sha1-name.c: add repo_get_oid()
      submodule-config.c: use repo_get_oid for reading .gitmodules
      sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name
      sha1-name.c: remove the_repo from other get_oid_*
      sha1-name.c: remove the_repo from get_oid_mb()
      parse-options: don't emit "ambiguous option" for aliases
      submodule--helper: add a missing \n
      diff-parseopt: correct variable types that are used by parseopt
      diff-parseopt: restore -U (no argument) behavior
      parse-options: check empty value in OPT_INTEGER and OPT_ABBREV

Paul-Sebastian Ungureanu (17):
      sha1-name.c: add `get_oidf()` which acts like `get_oid()`
      strbuf.c: add `strbuf_join_argv()`
      strbuf.c: add `strbuf_insertf()` and `strbuf_vinsertf()`
      t3903: modernize style
      stash: rename test cases to be more descriptive
      stash: add tests for `git stash show` config
      stash: mention options in `show` synopsis
      stash: convert list to builtin
      stash: convert show to builtin
      stash: convert store to builtin
      stash: convert create to builtin
      stash: convert push to builtin
      stash: make push -q quiet
      stash: convert save to builtin
      stash: optimize `get_untracked_files()` and `check_changes()`
      stash: replace all `write-tree` child processes with API calls
      stash: convert `stash--helper.c` into `stash.c`

Philip Oakley (2):
      rerere doc: quote `rerere.enabled`
      describe doc: remove '7-char' abbreviation reference

Phillip Wood (21):
      am/cherry-pick/rebase/revert: document --rerere-autoupdate
      merge: tweak --rerere-autoupdate documentation
      sequencer: break some long lines
      cherry-pick: demonstrate option amnesia
      cherry-pick --continue: remember options
      commit/reset: try to clean up sequencer state
      fix cherry-pick/revert status after commit
      sequencer: fix cleanup with --signoff and -x
      sequencer.c: save and restore cleanup mode
      sequencer: always discard index after checkout
      rebase: don't translate trace strings
      rebase: rename write_basic_state()
      rebase: use OPT_RERERE_AUTOUPDATE()
      rebase -i: combine rebase--interactive.c with rebase.c
      rebase -i: remove duplication
      rebase -i: use struct commit when parsing options
      rebase -i: use struct object_id for squash_onto
      rebase -i: use struct rebase_options to parse args
      rebase -i: use struct rebase_options in do_interactive_rebase()
      rebase: use a common action enum
      rebase -i: run without forking rebase--interactive

Ramsay Jones (2):
      prune-packed: check for too many arguments
      Makefile: fix 'hdr-check' when GCRYPT not installed

René Scharfe (1):
      get-tar-commit-id: parse comment record

Robert P. J. Day (3):
      mention use of "hooks.allownonascii" in "man githooks"
      docs/git-gc: fix typo "--prune=all" to "--prune=now"
      attr.c: ".gitattribute" -> ".gitattributes" (comments)

Rohit Ashiwal (3):
      test functions: add function `test_file_not_empty`
      t3600: modernize style
      t3600: use helpers to replace test -d/f/e/s <path>

SZEDER Gábor (27):
      test-lib: fix interrupt handling with 'dash' and '--verbose-log -x'
      t/lib-git-daemon: make sure to kill the 'git-daemon' process
      tests: use 'test_atexit' to stop httpd
      t0301-credential-cache: use 'test_atexit' to stop the credentials helper
      git p4 test: clean up the p4d cleanup functions
      git p4 test: simplify timeout handling
      git p4 test: disable '-x' tracing in the p4d watchdog loop
      t9811-git-p4-label-import: fix pipeline negation
      t5318-commit-graph: remove unused variable
      Documentation/git-diff-tree.txt: fix formatting
      Documentation/technical/api-config.txt: fix formatting
      Documentation/technical/protocol-v2.txt: fix formatting
      ci: install Asciidoctor in 'ci/install-dependencies.sh'
      index-pack: show progress while checking objects
      ci: stick with Asciidoctor v1.5.8 for now
      ci: fix AsciiDoc/Asciidoctor stderr check in the documentation build job
      progress: make display_progress() return void
      progress: assemble percentage and counters in a strbuf before printing
      blame: default to HEAD in a bare repo when no start commit is given
      builtin rebase: use FREE_AND_NULL
      builtin rebase: use oideq()
      progress: clear previous progress update dynamically
      progress: break too long progress bar lines
      ci: install 'libsvn-perl' instead of 'git-svn'
      trace2: rename environment variables to GIT_TRACE2*
      trace2: document the supported values of GIT_TRACE2* env variables
      progress: avoid empty line when breaking the progress line

Sun Chao (2):
      pack-redundant: delete redundant code
      pack-redundant: new algorithm to find min packs

Sven Strickroth (1):
      MSVC: include compat/win32/path-utils.h for MSVC, too, for real_path()

Tanushree Tumane (1):
      mingw: remove obsolete IPv6-related code

Taylor Blau (4):
      t: move 'hex2oct' into test-lib-functions.sh
      t: introduce tests for unexpected object types
      list-objects.c: handle unexpected non-blob entries
      list-objects.c: handle unexpected non-tree entries

Thomas Gummerer (15):
      move worktree tests to t24*
      entry: factor out unlink_entry function
      entry: support CE_WT_REMOVE flag in checkout_entry
      read-cache: add invalidate parameter to remove_marked_cache_entries
      checkout: clarify comment
      checkout: factor out mark_cache_entry_for_checkout function
      checkout: introduce --{,no-}overlay option
      checkout: introduce checkout.overlayMode config
      revert "checkout: introduce checkout.overlayMode config"
      ident: don't require calling prepare_fallback_ident first
      stash: drop unused parameter
      stash: pass pathspec as pointer
      glossary: add definition for overlay
      stash: setup default diff output format if necessary
      ls-files: use correct format string

Todd Zullinger (9):
      t4038-diff-combined: quote paths with whitespace
      t9902: test multiple removals via completion.commands
      completion: use __git when calling --list-cmds
      Documentation/rev-list-options: wrap --date=<format> block with "--"
      Documentation/git-status: fix titles in porcelain v2 section
      Documentation/git-svn: improve asciidoctor compatibility
      Documentation/git-show-branch: avoid literal {apostrophe}
      test-lib: try harder to ensure a working jgit
      RelNotes: minor typo fixes in 2.22.0 draft

Torsten Bögershausen (1):
      trace2: NULL is not allowed for va_list

Trần Ngọc Quân (1):
      l10n: Updated Vietnamese translation for v2.21 rd2

Vadim Kochan (1):
      autoconf: #include <libintl.h> when checking for gettext()

William Hubbs (1):
      config: allow giving separate author and committer idents

Yash Bhatambare (1):
      gitattributes.txt: fix typo

brian m. carlson (35):
      t/lib-submodule-update: use appropriate length constant
      khash: move oid hash table definition
      pack-bitmap: make bitmap header handling hash agnostic
      pack-bitmap: convert struct stored_bitmap to object_id
      pack-bitmap: replace sha1_to_hex
      pack-bitmap: switch hard-coded constants to the_hash_algo
      pack-bitmap: switch hash tables to use struct object_id
      submodule: avoid hard-coded constants
      notes-merge: switch to use the_hash_algo
      notes: make hash size independent
      notes: replace sha1_to_hex
      object-store: rename and expand packed_git's sha1 member
      builtin/name-rev: make hash-size independent
      fast-import: make hash-size independent
      fast-import: replace sha1_to_hex
      builtin/am: make hash size independent
      builtin/pull: make hash-size independent
      http-push: convert to use the_hash_algo
      http-backend: allow 64-character hex names
      http-push: remove remaining uses of sha1_to_hex
      http-walker: replace sha1_to_hex
      http: replace hard-coded constant with the_hash_algo
      http: compute hash of downloaded objects using the_hash_algo
      http: replace sha1_to_hex
      remote-curl: make hash size independent
      hash: add a function to lookup hash algorithm by length
      builtin/get-tar-commit-id: make hash size independent
      archive: convert struct archiver_args to object_id
      refspec: make hash size independent
      builtin/difftool: use parse_oid_hex
      dir: make untracked cache extension hash size independent
      read-cache: read data in a hash-independent way
      Git.pm: make hash size independent
      gitweb: make hash size independent
      send-email: default to quoted-printable when CR is present

Ævar Arnfjörð Bjarmason (44):
      receive-pack: fix use-after-free bug
      commit-graph tests: split up corrupt_graph_and_verify()
      commit-graph tests: test a graph that's too small
      Makefile: remove an out-of-date comment
      Makefile: move "strip" assignment down from flags
      Makefile: add/remove comments at top and tweak whitespace
      Makefile: Move *_LIBS assignment into its own section
      Makefile: move the setting of *FLAGS closer to "include"
      Makefile: allow for combining DEVELOPER=1 and CFLAGS="..."
      gc: remove redundant check for gc_auto_threshold
      gc: convert to using the_hash_algo
      gc: refactor a "call me once" pattern
      reflog tests: make use of "test_config" idiom
      reflog tests: test for the "points nowhere" warning
      rebase: remove the rebase.useBuiltin setting
      gc docs: modernize the advice for manually running "gc"
      gc docs: stop noting "repack" flags
      gc docs: clean grammar for "gc.bigPackThreshold"
      commit-graph: fix segfault on e.g. "git status"
      commit-graph: don't early exit(1) on e.g. "git status"
      commit-graph: don't pass filename to load_commit_graph_one_fd_st()
      commit-graph verify: detect inability to read the graph
      commit-graph write: don't die if the existing graph is corrupt
      commit-graph: improve & i18n error messages
      reflog tests: assert lack of early exit with expiry="never"
      gc: handle & check gc.reflogExpire config
      test-lib: whitelist GIT_TR2_* in the environment
      gc docs: include the "gc.*" section from "config" in "gc"
      gc docs: re-flow the "gc.*" section in "config"
      gc docs: fix formatting for "gc.writeCommitGraph"
      gc docs: note how --aggressive impacts --window & --depth
      gc docs: downplay the usefulness of --aggressive
      gc docs: note "gc --aggressive" in "fast-import"
      gc docs: clarify that "gc" doesn't throw away referenced objects
      gc docs: remove incorrect reference to gc.auto=0
      perf README: correct docs for 3c8f12c96c regression
      perf aggregate: remove GIT_TEST_INSTALLED from --codespeed
      perf-lib.sh: make "./run <revisions>" use the correct gits
      perf-lib.sh: remove GIT_TEST_INSTALLED from perf-lib.sh
      perf tests: add "bindir" prefix to git tree test results
      perf-lib.sh: forbid the use of GIT_TEST_INSTALLED
      trace2: fix up a missing "leave" entry point
      trace2: fix up a missing "leave" entry point
      sha1dc: update from upstream

İsmail Dönmez (2):
      mingw: do not let ld strip relocations
      mingw: enable DEP and ASLR


^ permalink raw reply	[relevance 2%]

* Re: [ANNOUNCE] Git v2.22.0-rc1
  2019-05-19  9:04  2% [ANNOUNCE] Git v2.22.0-rc1 Junio C Hamano
@ 2019-05-19 20:30  0% ` Johannes Schindelin
  0 siblings, 0 replies; 162+ results
From: Johannes Schindelin @ 2019-05-19 20:30 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, git-for-windows, git-packagers

[-- Attachment #1: Type: text/plain, Size: 71780 bytes --]

Team,

Git for Windows v2.22.0-rc1 is available here:

	https://github.com/git-for-windows/git/releases/tag/v2.22.0-rc1.windows.1

Thanks,
Johannes

On Sun, 19 May 2019, Junio C Hamano wrote:

> A release candidate Git v2.22.0-rc1 is now available for testing
> at the usual places.  It is comprised of 699 non-merge commits
> since v2.21.0, contributed by 66 people, 16 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.22.0-rc1' 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.21.0 are as follows.
> Welcome to the Git development community!
>
>   Alexander Blesius, Baruch Siach, Boxuan Li, Chris Mayo,
>   Chris. Webster, Clément Chigot, Corentin BOMPARD, Damien
>   Robert, Dustin Spicuzza, Michal Suchanek, Rohit Ashiwal,
>   Sun Chao, Tanushree Tumane, Vadim Kochan, William Hubbs, and
>   Yash Bhatambare.
>
> Returning contributors who helped this release are as follows.
> Thanks for your continued support.
>
>   Ævar Arnfjörð Bjarmason, Alban Gruin, Alexander Shopov, Anders
>   Waldenborg, Andreas Heiduk, Andrei Rybak, Beat Bolli, Ben Peart,
>   Brandon Richardson, brian m. carlson, Carlo Marcelo Arenas
>   Belón, Christian Couder, Daniels Umanovskis, David Aguilar,
>   David Kastrup, Denton Liu, Derrick Stolee, Elijah Newren, Eric
>   Sunshine, Eric Wong, İsmail Dönmez, Jean-Noël Avila, Jeff
>   Hostetler, Jeff King, Jiang Xin, Joel Teichroeb, Joey Hess,
>   Johannes Schindelin, Jonathan Tan, Jordi Mas, Josh Steadmon,
>   Junio C Hamano, Kyle Meyer, Martin Ågren, Matthew Kraai, Mike
>   Hommey, Nguyễn Thái Ngọc Duy, Paul-Sebastian Ungureanu,
>   Philip Oakley, Phillip Wood, Ramsay Jones, René Scharfe,
>   Robert P. J. Day, Sven Strickroth, SZEDER Gábor, Taylor Blau,
>   Thomas Gummerer, Todd Zullinger, Torsten Bögershausen, and
>   Trần Ngọc Quân.
>
> ----------------------------------------------------------------
>
> Git 2.22 Release Notes (draft)
> ==============================
>
> Updates since v2.21
> -------------------
>
> UI, Workflows & Features
>
>  * "git checkout --no-overlay" can be used to trigger a new mode of
>    checking out paths out of the tree-ish, that allows paths that
>    match the pathspec that are in the current index and working tree
>    and are not in the tree-ish.
>
>  * The %(trailers) formatter in "git log --format=..."  now allows to
>    optionally pick trailers selectively by keyword, show only values,
>    etc.
>
>  * Four new configuration variables {author,committer}.{name,email}
>    have been introduced to override user.{name,email} in more specific
>    cases.
>
>  * Command-line completion (in contrib/) learned to tab-complete the
>    "git submodule absorbgitdirs" subcommand.
>
>  * "git branch" learned a new subcommand "--show-current".
>
>  * Output from "diff --cc" did not show the original paths when the
>    merge involved renames.  A new option adds the paths in the
>    original trees to the output.
>
>  * The command line completion (in contrib/) has been taught to
>    complete more subcommand parameters.
>
>  * The final report from "git bisect" used to show the suspected
>    culprit using a raw "diff-tree", with which there is no output for
>    a merge commit.  This has been updated to use a more modern and
>    human readable output that still is concise enough.
>
>  * "git rebase --rebase-merges" replaces its old "--preserve-merges"
>    option; the latter is now marked as deprecated.
>
>  * Error message given while cloning with --recurse-submodules has
>    been updated.
>
>  * The completion helper code now pays attention to repository-local
>    configuration (when available), which allows --list-cmds to honour
>    a repository specific setting of completion.commands, for example.
>
>  * "git mergetool" learned to offer Sublime Merge (smerge) as one of
>    its backends.
>
>  * A new hook "post-index-change" is called when the on-disk index
>    file changes, which can help e.g. a virtualized working tree
>    implementation.
>
>  * "git difftool" can now run outside a repository.
>
>  * "git checkout -m <other>" was about carrying the differences
>    between HEAD and the working-tree files forward while checking out
>    another branch, and ignored the differences between HEAD and the
>    index.  The command has been taught to abort when the index and the
>    HEAD are different.
>
>  * A progress indicator has been added to the "index-pack" step, which
>    often makes users wait for completion during "git clone".
>
>  * "git submodule" learns "set-branch" subcommand that allows the
>    submodule.*.branch settings to be modified.
>
>  * "git merge-recursive" backend recently learned a new heuristics to
>    infer file movement based on how other files in the same directory
>    moved.  As this is inherently less robust heuristics than the one
>    based on the content similarity of the file itself (rather than
>    based on what its neighbours are doing), it sometimes gives an
>    outcome unexpected by the end users.  This has been toned down to
>    leave the renamed paths in higher/conflicted stages in the index so
>    that the user can examine and confirm the result.
>
>  * "git tag" learned to give an advice suggesting it might be a
>    mistake when creating an annotated or signed tag that points at
>    another tag.
>
>  * The "git pack-objects" command learned to report the number of
>    objects it packed via the trace2 mechanism.
>
>  * The list of conflicted paths shown in the editor while concluding a
>    conflicted merge was shown above the scissors line when the
>    clean-up mode is set to "scissors", even though it was commented
>    out just like the list of updated paths and other information to
>    help the user explain the merge better.
>
>  * The trace2 tracing facility learned to auto-generate a filename
>    when told to log to a directory.
>
>  * "git clone" learned a new --server-option option when talking over
>    the protocol version 2.
>
>  * The connectivity bitmaps are created by default in bare
>    repositories now; also the pathname hash-cache is created by
>    default to avoid making crappy deltas when repacking.
>
>  * "git branch new A...B" and "git checkout -b new A...B" have been
>    taught that in their contexts, the notation A...B means "the merge
>    base between these two commits", just like "git checkout A...B"
>    detaches HEAD at that commit.
>
>  * Update "git difftool" and "git mergetool" so that the combinations
>    of {diff,merge}.{tool,guitool} configuration variables serve as
>    fallback settings of each other in a sensible order.
>
>  * The "--dir-diff" mode of "git difftool" is not useful in "--no-index"
>    mode; they are now explicitly marked as mutually incompatible.
>
>
> Performance, Internal Implementation, Development Support etc.
>
>  * The diff machinery, one of the oldest parts of the system, which
>    long predates the parse-options API, uses fairly long and complex
>    handcrafted option parser.  This is being rewritten to use the
>    parse-options API.
>
>  * The implementation of pack-redundant has been updated for
>    performance in a repository with many packfiles.
>
>  * A more structured way to obtain execution trace has been added.
>
>  * "git prune" has been taught to take advantage of reachability
>    bitmap when able.
>
>  * The command line parser of "git commit-tree" has been rewritten to
>    use the parse-options API.
>
>  * Suggest GitGitGadget instead of submitGit as a way to submit
>    patches based on GitHub PR to us.
>
>  * The test framework has been updated to help developers by making it
>    easier to run most of the tests under different versions of
>    over-the-wire protocols.
>
>  * Dev support update to make it easier to compare two formatted
>    results from our documentation.
>
>  * The scripted "git rebase" implementation has been retired.
>
>  * "git multi-pack-index verify" did not scale well with the number of
>    packfiles, which is being improved.
>
>  * "git stash" has been rewritten in C.
>
>  * The "check-docs" Makefile target to support developers has been
>    updated.
>
>  * The tests have been updated not to rely on the abbreviated option
>    names the parse-options API offers, to protect us from an
>    abbreviated form of an option that used to be unique within the
>    command getting non-unique when a new option that share the same
>    prefix is added.
>
>  * The scripted version of "git rebase -i" wrote and rewrote the todo
>    list many times during a single step of its operation, and the
>    recent C-rewrite made a faithful conversion of the logic to C.  The
>    implementation has been updated to carry necessary information
>    around in-core to avoid rewriting the same file over and over
>    unnecessarily.
>
>  * Test framework update to more robustly clean up leftover files and
>    processes after tests are done.
>
>  * Conversion from unsigned char[20] to struct object_id continues.
>
>  * While running "git diff" in a lazy clone, we can upfront know which
>    missing blobs we will need, instead of waiting for the on-demand
>    machinery to discover them one by one.  The code learned to aim to
>    achieve better performance by batching the request for these
>    promised blobs.
>
>  * During an initial "git clone --depth=..." partial clone, it is
>    pointless to spend cycles for a large portion of the connectivity
>    check that enumerates and skips promisor objects (which by
>    definition is all objects fetched from the other side).  This has
>    been optimized out.
>
>  * Mechanically and systematically drop "extern" from function
>    declarlation.
>
>  * The script to aggregate perf result unconditionally depended on
>    libjson-perl even though it did not have to, which has been
>    corrected.
>
>  * The internal implementation of "git rebase -i" has been updated to
>    avoid forking a separate "rebase--interactive" process.
>
>  * Allow DEP and ASLR for Windows build to for security hardening.
>
>  * Performance test framework has been broken and measured the version
>    of Git that happens to be on $PATH, not the specified one to
>    measure, for a while, which has been corrected.
>
>  * Optionally "make coccicheck" can feed multiple source files to
>    spatch, gaining performance while spending more memory.
>
>  * Attempt to use an abbreviated option in "git clone --recurs" is
>    responded by a request to disambiguate between --recursive and
>    --recurse-submodules, which is bad because these two are synonyms.
>    The parse-options API has been extended to define such synonyms
>    more easily and not produce an unnecessary failure.
>
>  * A pair of private functions in http.c that had names similar to
>    fread/fwrite did not return the number of elements, which was found
>    to be confusing.
>
>  * Update collision-detecting SHA-1 code to build properly on HP-UX.
>
>
> Fixes since v2.21
> -----------------
>
>  * "git prune-packed" did not notice and complain against excess
>    arguments given from the command line, which now it does.
>    (merge 9b0bd87ed2 rj/prune-packed-excess-args later to maint).
>
>  * Split-index fix.
>    (merge 6e37c8ed3c nd/split-index-null-base-fix later to maint).
>
>  * "git diff --no-index" may still want to access Git goodies like
>    --ext-diff and --textconv, but so far these have been ignored,
>    which has been corrected.
>    (merge 287ab28bfa jk/diff-no-index-initialize later to maint).
>
>  * Unify RPC code for smart http in protocol v0/v1 and v2, which fixes
>    a bug in the latter (lack of authentication retry) and generally
>    improves the code base.
>    (merge a97d00799a jt/http-auth-proto-v2-fix later to maint).
>
>  * The include file compat/bswap.h has been updated so that it is safe
>    to (accidentally) include it more than once.
>    (merge 33aa579a55 jk/guard-bswap-header later to maint).
>
>  * The set of header files used by "make hdr-check" unconditionally
>    included sha256/gcrypt.h, even when it is not used, causing the
>    make target to fail.  We now skip it when GCRYPT_SHA256 is not in
>    use.
>    (merge f23aa18e7f rj/hdr-check-gcrypt-fix later to maint).
>
>  * The Makefile uses 'find' utility to enumerate all the *.h header
>    files, which is expensive on platforms with slow filesystems; it
>    now optionally uses "ls-files" if working within a repository,
>    which is a trick similar to how all sources are enumerated to run
>    ETAGS on.
>    (merge 92b88eba9f js/find-lib-h-with-ls-files-when-possible later to maint).
>
>  * "git rebase" that was reimplemented in C did not set ORIG_HEAD
>    correctly, which has been corrected.
>    (merge cbd29ead92 js/rebase-orig-head-fix later to maint).
>
>  * Dev support.
>    (merge f545737144 js/stress-test-ui-tweak later to maint).
>
>  * CFLAGS now can be tweaked when invoking Make while using
>    DEVELOPER=YesPlease; this did not work well before.
>    (merge 6d5d4b4e93 ab/makefile-help-devs-more later to maint).
>
>  * "git fsck --connectivity-only" omits computation necessary to sift
>    the objects that are not reachable from any of the refs into
>    unreachable and dangling.  This is now enabled when dangling
>    objects are requested (which is done by default, but can be
>    overridden with the "--no-dangling" option).
>    (merge 8d8c2a5aef jk/fsck-doc later to maint).
>
>  * On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX),
>    the upload-pack that runs on the other end that hangs up after
>    detecting an error could cause "git fetch" to die with a signal,
>    which led to a flakey test.  "git fetch" now ignores SIGPIPE during
>    the network portion of its operation (this is not a problem as we
>    check the return status from our write(2)s).
>    (merge 143588949c jk/no-sigpipe-during-network-transport later to maint).
>
>  * A recent update broke "is this object available to us?" check for
>    well-known objects like an empty tree (which should yield "yes",
>    even when there is no on-disk object for an empty tree), which has
>    been corrected.
>    (merge f06ab027ef jk/virtual-objects-do-exist later to maint).
>
>  * The setup code has been cleaned up to avoid leaks around the
>    repository_format structure.
>    (merge e8805af1c3 ma/clear-repository-format later to maint).
>
>  * "git config --type=color ..." is meant to replace "git config --get-color"
>    but there is a slight difference that wasn't documented, which is
>    now fixed.
>    (merge cd8e7593b9 jk/config-type-color-ends-with-lf later to maint).
>
>  * When the "clean" filter can reduce the size of a huge file in the
>    working tree down to a small "token" (a la Git LFS), there is no
>    point in allocating a huge scratch area upfront, but the buffer is
>    sized based on the original file size.  The convert mechanism now
>    allocates very minimum and reallocates as it receives the output
>    from the clean filter process.
>    (merge 02156ab031 jh/resize-convert-scratch-buffer later to maint).
>
>  * "git rebase" uses the refs/rewritten/ hierarchy to store its
>    intermediate states, which inherently makes the hierarchy per
>    worktree, but it didn't quite work well.
>    (merge b9317d55a3 nd/rewritten-ref-is-per-worktree later to maint).
>
>  * "git log -L<from>,<to>:<path>" with "-s" did not suppress the patch
>    output as it should.  This has been corrected.
>    (merge 05314efaea jk/line-log-with-patch later to maint).
>
>  * "git worktree add" used to do a "find an available name with stat
>    and then mkdir", which is race-prone.  This has been fixed by using
>    mkdir and reacting to EEXIST in a loop.
>    (merge 7af01f2367 ms/worktree-add-atomic-mkdir later to maint).
>
>  * Build update for SHA-1 with collision detection.
>    (merge 07a20f569b jk/sha1dc later to maint).
>
>  * Build procedure has been fixed around use of asciidoctor instead of
>    asciidoc.
>    (merge 185f9a0ea0 ma/asciidoctor-fixes later to maint).
>
>  * remote-http transport did not anonymize URLs reported in its error
>    messages at places.
>    (merge c1284b21f2 js/anonymize-remote-curl-diag later to maint).
>
>  * Error messages given from the http transport have been updated so
>    that they can be localized.
>    (merge ed8b4132c8 js/remote-curl-i18n later to maint).
>
>  * "git init" forgot to read platform-specific repository
>    configuration, which made Windows port to ignore settings of
>    core.hidedotfiles, for example.
>
>  * A corner-case object name ambiguity while the sequencer machinery
>    is working (e.g. "rebase -i -x") has been fixed.
>
>  * "git format-patch" did not diagnose an error while opening the
>    output file for the cover-letter, which has been corrected.
>    (merge 2fe95f494c jc/format-patch-error-check later to maint).
>
>  * "git checkout -f <branch>" while the index has an unmerged path
>    incorrectly left some paths in an unmerged state, which has been
>    corrected.
>
>  * A corner case bug in the refs API has been corrected.
>    (merge d3322eb28b jk/refs-double-abort later to maint).
>
>  * Unicode update.
>    (merge 584b62c37b bb/unicode-12 later to maint).
>
>  * dumb-http walker has been updated to share more error recovery
>    strategy with the normal codepath.
>
>  * A buglet in configuration parser has been fixed.
>    (merge 19e7fdaa58 nd/include-if-wildmatch later to maint).
>
>  * The documentation for "git read-tree --reset -u" has been updated.
>    (merge b5a0bd694c nd/read-tree-reset-doc later to maint).
>
>  * Code clean-up around a much-less-important-than-it-used-to-be
>    update_server_info() funtion.
>    (merge b3223761c8 jk/server-info-rabbit-hole later to maint).
>
>  * The message given when "git commit -a <paths>" errors out has been
>    updated.
>    (merge 5a1dbd48bc nd/commit-a-with-paths-msg-update later to maint).
>
>  * "git cherry-pick --options A..B", after giving control back to the
>    user to ask help resolving a conflicted step, did not honor the
>    options it originally received, which has been corrected.
>
>  * Various glitches in "git gc" around reflog handling have been fixed.
>
>  * The code to read from commit-graph file has been cleanup with more
>    careful error checking before using data read from it.
>
>  * Performance fix around "git fetch" that grabs many refs.
>    (merge b764300912 jt/fetch-pack-wanted-refs-optim later to maint).
>
>  * Protocol v2 support in "git fetch-pack" of shallow clones has been
>    corrected.
>
>  * Performance fix around "git blame", especially in a linear history
>    (which is the norm we should optimize for).
>    (merge f892014943 dk/blame-keep-origin-blob later to maint).
>
>  * Performance fix for "rev-list --parents -- pathspec".
>    (merge 8320b1dbe7 jk/revision-rewritten-parents-in-prio-queue later to maint).
>
>  * Updating the display with progress message has been cleaned up to
>    deal better with overlong messages.
>    (merge 545dc345eb sg/overlong-progress-fix later to maint).
>
>  * "git blame -- path" in a non-bare repository starts blaming from
>    the working tree, and the same command in a bare repository errors
>    out because there is no working tree by definition.  The command
>    has been taught to instead start blaming from the commit at HEAD,
>    which is more useful.
>    (merge a544fb08f8 sg/blame-in-bare-start-at-head later to maint).
>
>  * An underallocation in the code to read the untracked cache
>    extension has been corrected.
>    (merge 3a7b45a623 js/untracked-cache-allocfix later to maint).
>
>  * The code is updated to check the result of memory allocation before
>    it is used in more places, by using xmalloc and/or xcalloc calls.
>    (merge 999b951b28 jk/xmalloc later to maint).
>
>  * The GETTEXT_POISON test option has been quite broken ever since it
>    was made runtime-tunable, which has been fixed.
>    (merge f88b9cb603 jc/gettext-test-fix later to maint).
>
>  * Test fix on APFS that is incapable of store paths in Latin-1.
>    (merge 3889149619 js/iso8895-test-on-apfs later to maint).
>
>  * "git submodule foreach <command> --quiet" did not pass the option
>    down correctly, which has been corrected.
>    (merge a282f5a906 nd/submodule-foreach-quiet later to maint).
>
>  * "git send-email" has been taught to use quoted-printable when the
>    payload contains carriage-return.  The use of the mechanism is in
>    line with the design originally added the codepath that chooses QP
>    when the payload has overly long lines.
>    (merge 74d76a1701 bc/send-email-qp-cr later to maint).
>
>  * The recently added feature to add addresses that are on
>    anything-by: trailers in 'git send-email' was found to be way too
>    eager and considered nonsense strings as if they can be legitimate
>    beginning of *-by: trailer.  This has been tightened.
>
>  * Builds with gettext broke on recent macOS w/ Homebrew, which
>    seems to have stopped including from /usr/local/include; this
>    has been corrected.
>    (merge 92a1377a2a js/macos-gettext-build later to maint).
>
>  * Running "git add" on a repository created inside the current
>    repository is an explicit indication that the user wants to add it
>    as a submodule, but when the HEAD of the inner repository is on an
>    unborn branch, it cannot be added as a submodule.  Worse, the files
>    in its working tree can be added as if they are a part of the outer
>    repository, which is not what the user wants.  These problems are
>    being addressed.
>    (merge f937bc2f86 km/empty-repo-is-still-a-repo later to maint).
>
>  * "git cherry-pick" run with the "-x" or the "--signoff" option used
>    to (and more importantly, ought to) clean up the commit log message
>    with the --cleanup=space option by default, but this has been
>    broken since late 2017.  This has been fixed.
>
>  * When given a tag that points at a commit-ish, "git replace --graft"
>    failed to peel the tag before writing a replace ref, which did not
>    make sense because the old graft mechanism the feature wants to
>    mimick only allowed to replace one commit object with another.
>    This has been fixed.
>    (merge ee521ec4cb cc/replace-graft-peel-tags later to maint).
>
>  * Code tightening against a "wrong" object appearing where an object
>    of a different type is expected, instead of blindly assuming that
>    the connection between objects are correctly made.
>    (merge 97dd512af7 tb/unexpected later to maint).
>
>  * An earlier update for MinGW and Cygwin accidentally broke MSVC build,
>    which has been fixed.
>    (merge 22c3634c0f ss/msvc-path-utils-fix later to maint).
>
>  * %(push:track) token used in the --format option to "git
>    for-each-ref" and friends was not showing the right branch, which
>    has been fixed.
>    (merge c646d0934e dr/ref-filter-push-track-fix later to maint).
>
>  * "make check-docs", "git help -a", etc. did not account for cases
>    where a particular build may deliberately omit some subcommands,
>    which has been corrected.
>
>  * The logic to tell if a Git repository has a working tree protects
>    "git branch -D" from removing the branch that is currently checked
>    out by mistake.  The implementation of this logic was broken for
>    repositories with unusual name, which unfortunately is the norm for
>    submodules these days.  This has been fixed.
>    (merge f3534c98e4 jt/submodule-repo-is-with-worktree later to maint).
>
>  * AIX shared the same build issues with other BSDs around fileno(fp),
>    which has been corrected.
>    (merge ee662bf5c6 cc/aix-has-fileno-as-a-macro later to maint).
>
>  * The autoconf generated configure script failed to use the right
>    gettext() implementations from -libintl by ignoring useless stub
>    implementations shipped in some C library, which has been
>    corrected.
>    (merge b71e56a683 vk/autoconf-gettext later to maint).
>
>  * Fix index-pack perf test so that the repeated invocations always
>    run in an empty repository, which emulates the initial clone
>    situation better.
>    (merge 775c71e16d jk/p5302-avoid-collision-check-cost later to maint).
>
>  * A "ls-files" that emulates "find" to enumerate files in the working
>    tree resulted in duplicated Makefile rules that caused the build to
>    issue an unnecessary warning during a trial build after merge
>    conflicts are resolved in working tree *.h files but before the
>    resolved results are added to the index.  This has been corrected.
>
>  * "git chery-pick" (and "revert" that shares the same runtime engine)
>    that deals with multiple commits got confused when the final step
>    gets stopped with a conflict and the user concluded the sequence
>    with "git commit".  Attempt to fix it by cleaning up the state
>    files used by these commands in such a situation.
>    (merge 4a72486de9 pw/clean-sequencer-state-upon-final-commit later to maint).
>
>  * On a filesystem like HFS+, the names of the refs stored as filesystem
>    entities may become different from what the end-user expects, just
>    like files in the working tree get "renamed".  Work around the
>    mismatch by paying attention to the core.precomposeUnicode
>    configuration.
>    (merge 8e712ef6fc en/unicode-in-refnames later to maint).
>
>  * The code to generate the multi-pack idx file was not prepared to
>    see too many packfiles and ran out of open file descriptor, which
>    has been corrected.
>
>  * To run tests for Git SVN, our scripts for CI used to install the
>    git-svn package (in the hope that it would bring in the right
>    dependencies).  This has been updated to install the more direct
>    dependency, namely, libsvn-perl.
>    (merge db864306cf sg/ci-libsvn-perl later to maint).
>
>  * "git cvsexportcommit" running on msys did not expect cvsnt showed
>    "cvs status" output with CRLF line endings.
>
>  * The fsmonitor interface got out of sync after the in-core index
>    file gets discarded, which has been corrected.
>    (merge 398a3b0899 js/fsmonitor-refresh-after-discarding-index later to maint).
>
>  * "git status" did not know that the "label" instruction in the
>    todo-list "rebase -i -r" uses should not be shown as a hex object
>    name.
>
>  * A prerequiste check in the test suite to see if a working jgit is
>    available was made more robust.
>    (merge abd0f28983 tz/test-lib-check-working-jgit later to maint).
>
>  * The codepath to parse :<path> that obtains the object name for an
>    indexed object has been made more robust.
>
>  * Code cleanup, docfix, build fix, etc.
>    (merge 11f470aee7 jc/test-yes-doc later to maint).
>    (merge 90503a240b js/doc-symref-in-proto-v1 later to maint).
>    (merge 5c326d1252 jk/unused-params later to maint).
>    (merge 68cabbfda3 dl/doc-submodule-wo-subcommand later to maint).
>    (merge 9903623761 ab/receive-pack-use-after-free-fix later to maint).
>    (merge 1ede45e44b en/merge-options-doc later to maint).
>    (merge 3e14dd2c8e rd/doc-hook-used-in-sample later to maint).
>    (merge c271dc28fd nd/no-more-check-racy later to maint).
>    (merge e6e15194a8 yb/utf-16le-bom-spellfix later to maint).
>    (merge bb101aaf0c rd/attr.c-comment-typofix later to maint).
>    (merge 716a5af812 rd/gc-prune-doc-fix later to maint).
>    (merge 50b206371d js/untravis-windows later to maint).
>    (merge dbf47215e3 js/rebase-recreate-merge later to maint).
>    (merge 56cb2d30f8 dl/reset-doc-no-wrt-abbrev later to maint).
>    (merge 64eca306a2 ja/dir-rename-doc-markup-fix later to maint).
>    (merge af91b0230c dl/ignore-docs later to maint).
>    (merge 59a06e947b ra/t3600-test-path-funcs later to maint).
>    (merge e041d0781b ar/t4150-remove-cruft later to maint).
>    (merge 8d75a1d183 ma/asciidoctor-fixes-more later to maint).
>    (merge 74cc547b0f mh/pack-protocol-doc-fix later to maint).
>    (merge ed31851fa6 ab/doc-misc-typofixes later to maint).
>    (merge a7256debd4 nd/checkout-m-doc-update later to maint).
>    (merge 3a9e1ad78d jt/t5551-protocol-v2-does-not-have-half-auth later to maint).
>    (merge 0b918b75af sg/t5318-cleanup later to maint).
>    (merge 68ed71b53c cb/doco-mono later to maint).
>    (merge a34dca2451 nd/interpret-trailers-docfix later to maint).
>    (merge cf7b857a77 en/fast-import-parsing-fix later to maint).
>    (merge fe61ccbc35 po/rerere-doc-fmt later to maint).
>    (merge ffea0248bf po/describe-not-necessarily-7 later to maint).
>    (merge 7cb7283adb tg/ls-files-debug-format-fix later to maint).
>    (merge f64a21bd82 tz/doc-apostrophe-no-longer-needed later to maint).
>    (merge dbe7b41019 js/t3301-unbreak-notes-test later to maint).
>    (merge d8083e4180 km/t3000-retitle later to maint).
>    (merge 9e4cbccbd7 tz/git-svn-doc-markup-fix later to maint).
>    (merge da9ca955a7 jk/ls-files-doc-markup-fix later to maint).
>    (merge 6804ba3a58 cw/diff-highlight later to maint).
>    (merge 1a8787144d nd/submodule-helper-incomplete-line-fix later to maint).
>    (merge d9ef573837 jk/apache-lsan later to maint).
>    (merge c871fbee2b js/t6500-use-windows-pid-on-mingw later to maint).
>    (merge ce4c7bfc90 bl/t4253-exit-code-from-format-patch later to maint).
>    (merge 397a46db78 js/t5580-unc-alternate-test later to maint).
>    (merge d4907720a2 cm/notes-comment-fix later to maint).
>    (merge 9dde06de13 cb/http-push-null-in-message-fix later to maint).
>
> ----------------------------------------------------------------
>
> Changes since v2.21.0 are as follows:
>
> Alban Gruin (18):
>       sequencer: changes in parse_insn_buffer()
>       sequencer: make the todo_list structure public
>       sequencer: remove the 'arg' field from todo_item
>       sequencer: refactor transform_todos() to work on a todo_list
>       sequencer: introduce todo_list_write_to_file()
>       sequencer: refactor check_todo_list() to work on a todo_list
>       sequencer: refactor sequencer_add_exec_commands() to work on a todo_list
>       sequencer: refactor rearrange_squash() to work on a todo_list
>       sequencer: make sequencer_make_script() write its script to a strbuf
>       sequencer: change complete_action() to use the refactored functions
>       rebase--interactive: move sequencer_add_exec_commands()
>       rebase--interactive: move rearrange_squash_in_todo_file()
>       sequencer: refactor skip_unnecessary_picks() to work on a todo_list
>       rebase-interactive: use todo_list_write_to_file() in edit_todo_list()
>       rebase-interactive: append_todo_help() changes
>       rebase-interactive: rewrite edit_todo_list() to handle the initial edit
>       sequencer: use edit_todo_list() in complete_action()
>       rebase--interactive: move transform_todo_file()
>
> Alexander Blesius (1):
>       doc: fix typos in man pages
>
> Alexander Shopov (1):
>       gitk: Update Bulgarian translation (317t)
>
> Anders Waldenborg (7):
>       doc: group pretty-format.txt placeholders descriptions
>       pretty: allow %(trailers) options with explicit value
>       pretty: single return path in %(trailers) handling
>       pretty: allow showing specific trailers
>       pretty: add support for "valueonly" option in %(trailers)
>       strbuf: separate callback for strbuf_expand:ing literals
>       pretty: add support for separator option in %(trailers)
>
> Andreas Heiduk (1):
>       revisions.txt: remove ambibuity between <rev>:<path> and :<path>
>
> Andrei Rybak (1):
>       t4150: remove unused variable
>
> Baruch Siach (1):
>       send-email: don't cc *-by lines with '-' prefix
>
> Beat Bolli (1):
>       unicode: update the width tables to Unicode 12
>
> Ben Peart (1):
>       read-cache: add post-index-change hook
>
> Boxuan Li (1):
>       t4253-am-keep-cr-dos: avoid using pipes
>
> Brandon Richardson (1):
>       commit-tree: utilize parse-options api
>
> Carlo Marcelo Arenas Belón (1):
>       http-push: prevent format overflow warning with gcc >= 9
>
> Chris Mayo (1):
>       notes: correct documentation of format_display_notes()
>
> Chris. Webster (1):
>       diff-highlight: use correct /dev/null for UNIX and Windows
>
> Christian Couder (4):
>       t6050: use test_line_count instead of wc -l
>       t6050: redirect expected error output to a file
>       replace: peel tag when passing a tag as parent to --graft
>       replace: peel tag when passing a tag first to --graft
>
> Clément Chigot (2):
>       Makefile: use fileno macro work around on AIX
>       git-compat-util: work around for access(X_OK) under root
>
> Corentin BOMPARD (2):
>       doc/CodingGuidelines: URLs and paths as monospace
>       doc: format pathnames and URLs as monospace.
>
> Damien Robert (1):
>       ref-filter: use correct branch for %(push:track)
>
> Daniels Umanovskis (1):
>       branch: introduce --show-current display option
>
> David Aguilar (2):
>       mergetools: add support for smerge (Sublime Merge)
>       contrib/completion: add smerge to the mergetool completion candidates
>
> David Kastrup (1):
>       blame.c: don't drop origin blobs as eagerly
>
> Denton Liu (38):
>       completion: complete git submodule absorbgitdirs
>       git-submodule.txt: "--branch <branch>" option defaults to 'master'
>       submodule--helper: teach config subcommand --unset
>       submodule: document default behavior
>       git-reset.txt: clarify documentation
>       git-clean.txt: clarify ignore pattern files
>       docs: move core.excludesFile from git-add to gitignore
>       contrib/subtree: ensure only one rev is provided
>       midx.c: convert FLEX_ALLOC_MEM to FLEX_ALLOC_STR
>       cocci: FLEX_ALLOC_MEM to FLEX_ALLOC_STR
>       tag: fix formatting
>       submodule: teach set-branch subcommand
>       tag: advise on nested tags
>       t7600: clean up style
>       t3507: clean up style
>       t7604: clean up style
>       t7502: clean up style
>       commit: extract cleanup_mode functions to sequencer
>       parse-options.h: extract common --cleanup option
>       merge: cleanup messages like commit
>       merge: add scissors line on merge conflict
>       cherry-pick/revert: add scissors line on merge conflict
>       t7610: unsuppress output
>       t7610: add mergetool --gui tests
>       *.[ch]: remove extern from function declarations using spatch
>       *.[ch]: remove extern from function declarations using sed
>       *.[ch]: manually align parameter lists
>       t2018: cleanup in current test
>       branch: make create_branch accept a merge base rev
>       revisions.txt: change "rev" to "<rev>"
>       revisions.txt: mark optional rev arguments with []
>       revisions.txt: mention <rev>~ form
>       tag: fix typo in nested tagging hint
>       mergetool: use get_merge_tool function
>       mergetool--lib: create gui_mode function
>       mergetool: fallback to tool when guitool unavailable
>       difftool: make --gui, --tool and --extcmd mutually exclusive
>       difftool: fallback on merge.guitool
>
> Derrick Stolee (4):
>       trace2:data: pack-objects: add trace2 regions
>       midx: pass a repository pointer
>       midx: add packs to packed_git linked list
>       trace2: add variable description to git.txt
>
> Dustin Spicuzza (1):
>       cvsexportcommit: force crlf translation
>
> Elijah Newren (23):
>       log,diff-tree: add --combined-all-paths option
>       merge-options.txt: correct wording of --no-commit option
>       t9300: demonstrate bug with get-mark and empty orphan commits
>       git-fast-import.txt: fix wording about where ls command can appear
>       fast-import: check most prominent commands first
>       fast-import: only allow cat-blob requests where it makes sense
>       fast-import: fix erroneous handling of get-mark with empty orphan commits
>       Use 'unsigned short' for mode, like diff_filespec does
>       merge-recursive: rename merge_options argument from 'o' to 'opt'
>       merge-recursive: rename diff_filespec 'one' to 'o'
>       merge-recursive: rename locals 'o' and 'a' to 'obuf' and 'abuf'
>       merge-recursive: use 'ci' for rename_conflict_info variable name
>       merge-recursive: move some struct declarations together
>       merge-recursive: shrink rename_conflict_info
>       merge-recursive: remove ren[12]_other fields from rename_conflict_info
>       merge-recursive: track branch where rename occurred in rename struct
>       merge-recursive: cleanup handle_rename_* function signatures
>       merge-recursive: switch from (oid,mode) pairs to a diff_filespec
>       t6043: fix copied test description to match its purpose
>       merge-recursive: track information associated with directory renames
>       merge-recursive: give callers of handle_content_merge() access to contents
>       merge-recursive: switch directory rename detection default
>       Honor core.precomposeUnicode in more places
>
> Eric Sunshine (1):
>       check-non-portable-shell: support Perl versions older than 5.10
>
> Eric Wong (1):
>       repack: enable bitmaps by default on bare repos
>
> Jean-Noël Avila (2):
>       l10n: fr.po remove obsolete entries
>       Doc: fix misleading asciidoc formating
>
> Jeff Hostetler (29):
>       trace2: Documentation/technical/api-trace2.txt
>       trace2: create new combined trace facility
>       trace2: collect Windows-specific process information
>       trace2:data: add trace2 regions to wt-status
>       trace2:data: add editor/pager child classification
>       trace2:data: add trace2 sub-process classification
>       trace2:data: add trace2 transport child classification
>       trace2:data: add subverb to checkout command
>       trace2:data: add subverb to reset command
>       trace2:data: add trace2 hook classification
>       trace2:data: add subverb for rebase
>       trace2:data: add trace2 instrumentation to index read/write
>       trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh
>       trace2: add for_each macros to clang-format
>       progress: add sparse mode to force 100% complete message
>       trace2:data: add trace2 data to midx
>       midx: add progress indicators in multi-pack-index verify
>       midx: during verify group objects by packfile to speed verification
>       config: initialize opts structure in repo_read_config()
>       trace2: refactor setting process starting time
>       trace2: add absolute elapsed time to start event
>       trace2: find exec-dir before trace2 initialization
>       config: add read_very_early_config()
>       trace2: use system/global config for default trace2 settings
>       trace2: report peak memory usage of the process
>       trace2: clarify UTC datetime formatting
>       trace2: make SIDs more unique
>       trace2: update docs to describe system/global config settings
>       trace2: fixup access problem on /etc/gitconfig in read_very_early_config
>
> Jeff King (92):
>       prune: lazily perform reachability traversal
>       prune: use bitmaps for reachability traversal
>       prune: check SEEN flag for reachability
>       t5304: rename "sha1" variables to "oid"
>       diff: drop options parameter from diffcore_fix_diff_index()
>       diff: drop unused color reset parameters
>       diff: drop unused emit data parameter from sane_truncate_line()
>       diff: drop complete_rewrite parameter from run_external_diff()
>       merge-recursive: drop several unused parameters
>       pack-objects: drop unused parameter from oe_map_new_pack()
>       files-backend: drop refs parameter from split_symref_update()
>       ref-filter: drop unused buf/sz pairs
>       ref-filter: drop unused "obj" parameters
>       ref-filter: drop unused "sz" parameters
>       diff: reuse diff setup for --no-index case
>       bisect: use string arguments to feed internal diff-tree
>       bisect: fix internal diff-tree config loading
>       bisect: make diff-tree output prettier
>       fetch: avoid calling write_or_die()
>       fetch: ignore SIGPIPE during network operation
>       rev-list: allow cached objects in existence check
>       doc/fsck: clarify --connectivity-only behavior
>       fsck: always compute USED flags for unreachable objects
>       compat/bswap: add include header guards
>       config: document --type=color output is a complete line
>       line-log: suppress diff output with "-s"
>       line-log: detect unsupported formats
>       point pull requesters to GitGitGadget
>       Makefile: fix unaligned loads in sha1dc with UBSan
>       t5310: correctly remove bitmaps for jgit test
>       pack-objects: default to writing bitmap hash-cache
>       perf-lib.sh: rely on test-lib.sh for --tee handling
>       revision: drop some unused "revs" parameters
>       log: drop unused rev_info from early output
>       log: drop unused "len" from show_tagger()
>       update-index: drop unused prefix_length parameter from do_reupdate()
>       test-date: drop unused "now" parameter from parse_dates()
>       unpack-trees: drop name_entry from traverse_by_cache_tree()
>       unpack-trees: drop unused error_type parameters
>       report_path_error(): drop unused prefix parameter
>       fetch_pack(): drop unused parameters
>       parse-options: drop unused ctx parameter from show_gitcomp()
>       pretty: drop unused "type" parameter in needs_rfc2047_encoding()
>       pretty: drop unused strbuf from parse_padding_placeholder()
>       git: read local config in --list-cmds
>       completion: fix multiple command removals
>       parse_opt_ref_sorting: always use with NONEG flag
>       refs/files-backend: handle packed transaction prepare failure
>       refs/files-backend: don't look at an aborted transaction
>       http: factor out curl result code normalization
>       http: normalize curl results for dumb loose and alternates fetches
>       http: use normalize_curl_result() instead of manual conversion
>       revision: use a prio_queue to hold rewritten parents
>       get_commit_tree(): return NULL for broken tree
>       rev-list: let traversal die when --missing is not in use
>       rev-list: detect broken root trees
>       test-prio-queue: use xmalloc
>       xdiff: use git-compat-util
>       xdiff: use xmalloc/xrealloc
>       progress: use xmalloc/xcalloc
>       t5516: drop ok=sigpipe from unreachable-want tests
>       t5530: check protocol response for "not our ref"
>       upload-pack: send ERR packet for non-tip objects
>       pkt-line: prepare buffer before handling ERR packets
>       fetch: use free_refs()
>       remote.c: make singular free_ref() public
>       fetch: do not consider peeled tags as advertised tips
>       packfile.h: drop extern from function declarations
>       pack-revindex: open index if necessary
>       t5319: fix bogus cat-file argument
>       t5319: drop useless --buffer from cat-file
>       midx: check both pack and index names for containment
>       packfile: fix pack basename computation
>       http: simplify parsing of remote objects/info/packs
>       server-info: fix blind pointer arithmetic
>       server-info: simplify cleanup in parse_pack_def()
>       server-info: use strbuf to read old info/packs file
>       server-info: drop nr_alloc struct member
>       server-info: drop objdirlen pointer arithmetic
>       update_info_refs(): drop unused force parameter
>       t5304: add a test for pruning with bitmaps
>       untracked-cache: be defensive about missing NULs in index
>       untracked-cache: simplify parsing by dropping "next"
>       untracked-cache: simplify parsing by dropping "len"
>       p5302: create the repo in each index-pack test
>       doc/ls-files: put nested list for "-t" option into block
>       t/perf: depend on perl JSON only when using --codespeed
>       t/perf: add perf script for partial clones
>       coccicheck: optionally batch spatch invocations
>       t/lib-httpd: pass LSAN_OPTIONS through apache
>       coccicheck: make batch size of 0 mean "unlimited"
>       get_oid: handle NULL repo->index
>
> Jiang Xin (4):
>       t5323: test cases for git-pack-redundant
>       pack-redundant: delay creation of unique_objects
>       pack-redundant: rename pack_list.all_objects
>       pack-redundant: consistent sort method
>
> Joel Teichroeb (5):
>       stash: improve option parsing test coverage
>       stash: convert apply to builtin
>       stash: convert drop and clear to builtin
>       stash: convert branch to builtin
>       stash: convert pop to builtin
>
> Joey Hess (1):
>       convert: avoid malloc of original file size
>
> Johannes Schindelin (63):
>       ident: add the ability to provide a "fallback identity"
>       travis: remove the hack to build the Windows job on Azure Pipelines
>       tests: let --stress-limit=<N> imply --stress
>       tests: introduce --stress-jobs=<N>
>       built-in rebase: no need to check out `onto` twice
>       built-in rebase: use the correct reflog when switching branches
>       built-in rebase: demonstrate that ORIG_HEAD is not set correctly
>       built-in rebase: set ORIG_HEAD just once, before the rebase
>       Makefile: use `git ls-files` to list header files, if possible
>       curl: anonymize URLs in error messages and warnings
>       remote-curl: mark all error messages for translation
>       stash: add back the original, scripted `git stash`
>       stash: optionally use the scripted version again
>       tests: add a special setup where stash.useBuiltin is off
>       legacy stash: fix "rudimentary backport of -q"
>       built-in stash: handle :(glob) pathspecs again
>       mingw: drop MakeMaker reference
>       mingw: allow building with an MSYS2 runtime v3.x
>       rebase: deprecate --preserve-merges
>       mingw: respect core.hidedotfiles = false in git-init again
>       test-lib: introduce 'test_atexit'
>       git-daemon: use 'test_atexit` to stop 'git-daemon'
>       git p4 test: use 'test_atexit' to kill p4d and the watchdog process
>       rebase -i: demonstrate obscure loose object cache bug
>       sequencer: improve error message when an OID could not be parsed
>       sequencer: move stale comment into correct location
>       get_oid(): when an object was not found, try harder
>       difftool: remove obsolete (and misleading) comment
>       parse-options: make OPT_ARGUMENT() more useful
>       difftool: allow running outside Git worktrees with --no-index
>       docs: move gitremote-helpers into section 7
>       docs: do not document the `git remote-testgit` command
>       check-docs: really look at the documented commands again
>       check-docs: do not expect guide pages to correspond to commands
>       check-docs: fix for setups where executables have an extension
>       tests (rebase): spell out the `--keep-empty` option
>       tests (rebase): spell out the `--force-rebase` option
>       t7810: do not abbreviate `--no-exclude-standard` nor `--invert-match`
>       t5531: avoid using an abbreviated option
>       tests (push): do not abbreviate the `--follow-tags` option
>       tests (status): spell out the `--find-renames` option in full
>       tests (pack-objects): use the full, unabbreviated `--revs` option
>       t3301: fix false negative
>       untracked cache: fix off-by-one
>       tests: disallow the use of abbreviated options (by default)
>       t9822: skip tests if file names cannot be ISO-8859-1 encoded
>       macOS: make sure that gettext is found
>       remote-testgit: move it into the support directory for t5801
>       Makefile: drop the NO_INSTALL variable
>       help -a: do not list commands that are excluded from the build
>       check-docs: allow command-list.txt to contain excluded commands
>       docs: exclude documentation for commands that have been excluded
>       check-docs: do not bother checking for legacy scripts' documentation
>       test-tool: handle the `-C <directory>` option just like `git`
>       Turn `git serve` into a test helper
>       t5580: verify that alternates can be UNC paths
>       fsmonitor: demonstrate that it is not refreshed after discard_index()
>       fsmonitor: force a refresh after the index was discarded
>       t6500(mingw): use the Windows PID of the shell
>       difftool --no-index: error out on --dir-diff (and don't crash)
>       status: fix display of rebase -ir's `label` command
>       parse-options: adjust `parse_opt_unknown_cb()`s declared return type
>       stash: document stash.useBuiltin
>
> Jonathan Tan (24):
>       remote-curl: reduce scope of rpc_state.argv
>       remote-curl: reduce scope of rpc_state.stdin_preamble
>       remote-curl: reduce scope of rpc_state.result
>       remote-curl: refactor reading into rpc_state's buf
>       remote-curl: use post_rpc() for protocol v2 also
>       tests: define GIT_TEST_PROTOCOL_VERSION
>       t5601: check ssh command only with protocol v0
>       tests: always test fetch of unreachable with v0
>       t5503: fix overspecification of trace expectation
>       t5512: compensate for v0 only sending HEAD symrefs
>       t5700: only run with protocol version 1
>       tests: fix protocol version for overspecifications
>       t5552: compensate for v2 filtering ref adv.
>       submodule: explain first attempt failure clearly
>       t5551: mark half-auth no-op fetch test as v0-only
>       fetch-pack: call prepare_shallow_info only if v0
>       fetch-pack: respect --no-update-shallow in v2
>       sha1-file: support OBJECT_INFO_FOR_PREFETCH
>       fetch-pack: binary search when storing wanted-refs
>       diff: batch fetching of missing blobs
>       pack-objects: write objects packed to trace2
>       transport: die if server options are unsupported
>       clone: send server options when using protocol v2
>       worktree: update is_bare heuristics
>
> Jordi Mas (1):
>       l10n: Fixes to Catalan translation
>
> Josh Steadmon (5):
>       protocol-capabilities.txt: document symref
>       trace2: write to directory targets
>       clone: do faster object check for partial clones
>       trace2: fix incorrect function pointer check
>       commit-graph: fix memory leak
>
> Junio C Hamano (16):
>       test: caution on our version of 'yes'
>       builtin/log: downcase the beginning of error messages
>       format-patch: notice failure to open cover letter for writing
>       Start 2.22 cycle
>       The second batch
>       The third batch
>       The fourth batch
>       gettext tests: export the restored GIT_TEST_GETTEXT_POISON
>       The fifth batch
>       The sixth batch
>       Makefile: dedup list of files obtained from ls-files
>       The seventh batch
>       The eighth batch
>       Git 2.22-rc0
>       pkt-line: drop 'const'-ness of a param to set_packet_header()
>       Git 2.22-rc1
>
> Kyle Meyer (5):
>       rebase docs: fix "gitlink" typo
>       submodule: refuse to add repository with no commits
>       dir: do not traverse repositories with no commits
>       add: error appropriately on repository with no commits
>       t3000 (ls-files -o): widen description to reflect current tests
>
> Martin Ågren (14):
>       setup: free old value before setting `work_tree`
>       setup: fix memory leaks with `struct repository_format`
>       config/diff.txt: drop spurious backtick
>       config/fsck.txt: avoid starting line with dash
>       git.txt: remove empty line before list continuation
>       git-svn.txt: drop escaping '\' that ends up being rendered
>       Documentation: turn middle-of-line tabs into spaces
>       Documentation/Makefile: add missing xsl dependencies for manpages
>       Documentation/Makefile: add missing dependency on asciidoctor-extensions
>       asciidoctor-extensions: fix spurious space after linkgit
>       Doc: auto-detect changed build flags
>       doc-diff: let `render_tree()` take an explicit directory name
>       doc-diff: support diffing from/to AsciiDoc(tor)
>       doc-diff: add `--cut-header-footer`
>
> Matthew Kraai (1):
>       t3903: add test for --intent-to-add file
>
> Michal Suchanek (1):
>       worktree: fix worktree add race
>
> Mike Hommey (2):
>       fix pack protocol example client/server communication
>       Make fread/fwrite-like functions in http.c more like fread/fwrite.
>
> Nguyễn Thái Ngọc Duy (126):
>       parse-options.h: remove extern on function prototypes
>       parse-options: add one-shot mode
>       parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
>       parse-options: add OPT_BITOP()
>       parse-options: stop abusing 'callback' for lowlevel callbacks
>       parse-options: avoid magic return codes
>       parse-options: allow ll_callback with OPTION_CALLBACK
>       diff.h: keep forward struct declarations sorted
>       diff.h: avoid bit fields in struct diff_flags
>       diff.c: prepare to use parse_options() for parsing
>       diff.c: convert -u|-p|--patch
>       diff.c: convert -U|--unified
>       diff.c: convert -W|--[no-]function-context
>       diff.c: convert --raw
>       read-cache.c: fix writing "link" index ext with null base oid
>       completion: add more parameter value completion
>       diff-parseopt: convert --patch-with-raw
>       diff-parseopt: convert --numstat and --shortstat
>       diff-parseopt: convert --dirstat and friends
>       diff-parseopt: convert --check
>       diff-parseopt: convert --summary
>       diff-parseopt: convert --patch-with-stat
>       diff-parseopt: convert --name-only
>       diff-parseopt: convert --name-status
>       diff-parseopt: convert -s|--no-patch
>       diff-parseopt: convert --stat*
>       diff-parseopt: convert --[no-]compact-summary
>       diff-parseopt: convert --output-*
>       diff-parseopt: convert -B|--break-rewrites
>       diff-parseopt: convert -M|--find-renames
>       diff-parseopt: convert -D|--irreversible-delete
>       diff-parseopt: convert -C|--find-copies
>       diff-parseopt: convert --find-copies-harder
>       diff-parseopt: convert --no-renames|--[no--rename-empty
>       diff-parseopt: convert --relative
>       diff-parseopt: convert --[no-]minimal
>       diff-parseopt: convert --ignore-some-changes
>       Delete check-racy.c
>       diff-parseopt: convert --[no-]indent-heuristic
>       diff-parseopt: convert --patience
>       diff-parseopt: convert --histogram
>       diff-parseopt: convert --diff-algorithm
>       diff-parseopt: convert --anchored
>       diff-parseopt: convert --binary
>       diff-parseopt: convert --full-index
>       diff-parseopt: convert -a|--text
>       diff-parseopt: convert -R
>       diff-parseopt: convert --[no-]follow
>       diff-parseopt: convert --[no-]color
>       diff-parseopt: convert --word-diff
>       diff-parseopt: convert --word-diff-regex
>       diff-parseopt: convert --color-words
>       diff-parseopt: convert --exit-code
>       diff-parseopt: convert --quiet
>       diff-parseopt: convert --ext-diff
>       diff-parseopt: convert --textconv
>       diff-parseopt: convert --ignore-submodules
>       diff-parseopt: convert --submodule
>       files-backend.c: factor out per-worktree code in loose_fill_ref_dir()
>       files-backend.c: reduce duplication in add_per_worktree_entries_to_dir()
>       Make sure refs/rewritten/ is per-worktree
>       unpack-trees: fix oneway_merge accidentally carry over stage index
>       checkout.txt: note about losing staged changes with --merge
>       commit: improve error message in "-a <paths>" case
>       unpack-trees: keep gently check inside add_rejected_path
>       unpack-trees: rename "gently" flag to "quiet"
>       read-tree: add --quiet
>       checkout: prevent losing staged changes with --merge
>       diff-parseopt: convert --ws-error-highlight
>       diff-parseopt: convert --ita-[in]visible-in-index
>       diff-parseopt: convert -z
>       diff-parseopt: convert -l
>       diff-parseopt: convert -S|-G
>       diff-parseopt: convert --pickaxe-all|--pickaxe-regex
>       diff-parseopt: convert -O
>       diff-parseopt: convert --find-object
>       diff-parseopt: convert --diff-filter
>       diff-parseopt: convert --[no-]abbrev
>       diff-parseopt: convert --[src|dst]-prefix
>       diff-parseopt: convert --line-prefix
>       diff-parseopt: convert --no-prefix
>       diff-parseopt: convert --inter-hunk-context
>       diff-parseopt: convert --[no-]color-moved
>       diff-parseopt: convert --color-moved-ws
>       diff.c: allow --no-color-moved-ws
>       range-diff: use parse_options() instead of diff_opt_parse()
>       diff --no-index: use parse_options() instead of diff_opt_parse()
>       am: avoid diff_opt_parse()
>       config: correct '**' matching in includeIf patterns
>       interpret-trailers.txt: start the desc line with a capital letter
>       read-tree.txt: clarify --reset and worktree changes
>       packfile.c: add repo_approximate_object_count()
>       refs.c: add refs_ref_exists()
>       refs.c: add refs_shorten_unambiguous_ref()
>       refs.c: remove the_repo from substitute_branch_name()
>       refs.c: remove the_repo from expand_ref()
>       refs.c: add repo_dwim_ref()
>       refs.c: add repo_dwim_log()
>       refs.c: remove the_repo from read_ref_at()
>       submodule foreach: fix "<command> --quiet" not being respected
>       commit.cocci: refactor code, avoid double rewrite
>       commit.c: add repo_get_commit_tree()
>       sha1-name.c: remove the_repo from sort_ambiguous()
>       sha1-name.c: remove the_repo from find_abbrev_len_packed()
>       sha1-name.c: add repo_find_unique_abbrev_r()
>       sha1-name.c: store and use repo in struct disambiguate_state
>       sha1-name.c: add repo_for_each_abbrev()
>       sha1-name.c: remove the_repo from get_short_oid()
>       sha1-name.c: remove the_repo from interpret_nth_prior_checkout()
>       sha1-name.c: remove the_repo from interpret_branch_mark()
>       sha1-name.c: add repo_interpret_branch_name()
>       sha1-name.c: remove the_repo from get_oid_oneline()
>       sha1-name.c: remove the_repo from get_describe_name()
>       sha1-name.c: remove the_repo from get_oid_basic()
>       sha1-name.c: remove the_repo from get_oid_1()
>       sha1-name.c: remove the_repo from handle_one_ref()
>       sha1-name.c: remove the_repo from diagnose_invalid_index_path()
>       sha1-name.c: remove the_repo from resolve_relative_path()
>       sha1-name.c: remove the_repo from get_oid_with_context_1()
>       sha1-name.c: add repo_get_oid()
>       submodule-config.c: use repo_get_oid for reading .gitmodules
>       sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name
>       sha1-name.c: remove the_repo from other get_oid_*
>       sha1-name.c: remove the_repo from get_oid_mb()
>       parse-options: don't emit "ambiguous option" for aliases
>       submodule--helper: add a missing \n
>
> Paul-Sebastian Ungureanu (17):
>       sha1-name.c: add `get_oidf()` which acts like `get_oid()`
>       strbuf.c: add `strbuf_join_argv()`
>       strbuf.c: add `strbuf_insertf()` and `strbuf_vinsertf()`
>       t3903: modernize style
>       stash: rename test cases to be more descriptive
>       stash: add tests for `git stash show` config
>       stash: mention options in `show` synopsis
>       stash: convert list to builtin
>       stash: convert show to builtin
>       stash: convert store to builtin
>       stash: convert create to builtin
>       stash: convert push to builtin
>       stash: make push -q quiet
>       stash: convert save to builtin
>       stash: optimize `get_untracked_files()` and `check_changes()`
>       stash: replace all `write-tree` child processes with API calls
>       stash: convert `stash--helper.c` into `stash.c`
>
> Philip Oakley (2):
>       rerere doc: quote `rerere.enabled`
>       describe doc: remove '7-char' abbreviation reference
>
> Phillip Wood (21):
>       am/cherry-pick/rebase/revert: document --rerere-autoupdate
>       merge: tweak --rerere-autoupdate documentation
>       sequencer: break some long lines
>       cherry-pick: demonstrate option amnesia
>       cherry-pick --continue: remember options
>       commit/reset: try to clean up sequencer state
>       fix cherry-pick/revert status after commit
>       sequencer: fix cleanup with --signoff and -x
>       sequencer.c: save and restore cleanup mode
>       sequencer: always discard index after checkout
>       rebase: don't translate trace strings
>       rebase: rename write_basic_state()
>       rebase: use OPT_RERERE_AUTOUPDATE()
>       rebase -i: combine rebase--interactive.c with rebase.c
>       rebase -i: remove duplication
>       rebase -i: use struct commit when parsing options
>       rebase -i: use struct object_id for squash_onto
>       rebase -i: use struct rebase_options to parse args
>       rebase -i: use struct rebase_options in do_interactive_rebase()
>       rebase: use a common action enum
>       rebase -i: run without forking rebase--interactive
>
> Ramsay Jones (2):
>       prune-packed: check for too many arguments
>       Makefile: fix 'hdr-check' when GCRYPT not installed
>
> René Scharfe (1):
>       get-tar-commit-id: parse comment record
>
> Robert P. J. Day (3):
>       mention use of "hooks.allownonascii" in "man githooks"
>       docs/git-gc: fix typo "--prune=all" to "--prune=now"
>       attr.c: ".gitattribute" -> ".gitattributes" (comments)
>
> Rohit Ashiwal (3):
>       test functions: add function `test_file_not_empty`
>       t3600: modernize style
>       t3600: use helpers to replace test -d/f/e/s <path>
>
> SZEDER Gábor (24):
>       test-lib: fix interrupt handling with 'dash' and '--verbose-log -x'
>       t/lib-git-daemon: make sure to kill the 'git-daemon' process
>       tests: use 'test_atexit' to stop httpd
>       t0301-credential-cache: use 'test_atexit' to stop the credentials helper
>       git p4 test: clean up the p4d cleanup functions
>       git p4 test: simplify timeout handling
>       git p4 test: disable '-x' tracing in the p4d watchdog loop
>       t9811-git-p4-label-import: fix pipeline negation
>       t5318-commit-graph: remove unused variable
>       Documentation/git-diff-tree.txt: fix formatting
>       Documentation/technical/api-config.txt: fix formatting
>       Documentation/technical/protocol-v2.txt: fix formatting
>       ci: install Asciidoctor in 'ci/install-dependencies.sh'
>       index-pack: show progress while checking objects
>       ci: stick with Asciidoctor v1.5.8 for now
>       ci: fix AsciiDoc/Asciidoctor stderr check in the documentation build job
>       progress: make display_progress() return void
>       progress: assemble percentage and counters in a strbuf before printing
>       blame: default to HEAD in a bare repo when no start commit is given
>       builtin rebase: use FREE_AND_NULL
>       builtin rebase: use oideq()
>       progress: clear previous progress update dynamically
>       progress: break too long progress bar lines
>       ci: install 'libsvn-perl' instead of 'git-svn'
>
> Sun Chao (2):
>       pack-redundant: delete redundant code
>       pack-redundant: new algorithm to find min packs
>
> Sven Strickroth (1):
>       MSVC: include compat/win32/path-utils.h for MSVC, too, for real_path()
>
> Tanushree Tumane (1):
>       mingw: remove obsolete IPv6-related code
>
> Taylor Blau (4):
>       t: move 'hex2oct' into test-lib-functions.sh
>       t: introduce tests for unexpected object types
>       list-objects.c: handle unexpected non-blob entries
>       list-objects.c: handle unexpected non-tree entries
>
> Thomas Gummerer (15):
>       move worktree tests to t24*
>       entry: factor out unlink_entry function
>       entry: support CE_WT_REMOVE flag in checkout_entry
>       read-cache: add invalidate parameter to remove_marked_cache_entries
>       checkout: clarify comment
>       checkout: factor out mark_cache_entry_for_checkout function
>       checkout: introduce --{,no-}overlay option
>       checkout: introduce checkout.overlayMode config
>       revert "checkout: introduce checkout.overlayMode config"
>       ident: don't require calling prepare_fallback_ident first
>       stash: drop unused parameter
>       stash: pass pathspec as pointer
>       glossary: add definition for overlay
>       stash: setup default diff output format if necessary
>       ls-files: use correct format string
>
> Todd Zullinger (8):
>       t4038-diff-combined: quote paths with whitespace
>       t9902: test multiple removals via completion.commands
>       completion: use __git when calling --list-cmds
>       Documentation/rev-list-options: wrap --date=<format> block with "--"
>       Documentation/git-status: fix titles in porcelain v2 section
>       Documentation/git-svn: improve asciidoctor compatibility
>       Documentation/git-show-branch: avoid literal {apostrophe}
>       test-lib: try harder to ensure a working jgit
>
> Torsten Bögershausen (1):
>       trace2: NULL is not allowed for va_list
>
> Trần Ngọc Quân (1):
>       l10n: Updated Vietnamese translation for v2.21 rd2
>
> Vadim Kochan (1):
>       autoconf: #include <libintl.h> when checking for gettext()
>
> William Hubbs (1):
>       config: allow giving separate author and committer idents
>
> Yash Bhatambare (1):
>       gitattributes.txt: fix typo
>
> brian m. carlson (35):
>       t/lib-submodule-update: use appropriate length constant
>       khash: move oid hash table definition
>       pack-bitmap: make bitmap header handling hash agnostic
>       pack-bitmap: convert struct stored_bitmap to object_id
>       pack-bitmap: replace sha1_to_hex
>       pack-bitmap: switch hard-coded constants to the_hash_algo
>       pack-bitmap: switch hash tables to use struct object_id
>       submodule: avoid hard-coded constants
>       notes-merge: switch to use the_hash_algo
>       notes: make hash size independent
>       notes: replace sha1_to_hex
>       object-store: rename and expand packed_git's sha1 member
>       builtin/name-rev: make hash-size independent
>       fast-import: make hash-size independent
>       fast-import: replace sha1_to_hex
>       builtin/am: make hash size independent
>       builtin/pull: make hash-size independent
>       http-push: convert to use the_hash_algo
>       http-backend: allow 64-character hex names
>       http-push: remove remaining uses of sha1_to_hex
>       http-walker: replace sha1_to_hex
>       http: replace hard-coded constant with the_hash_algo
>       http: compute hash of downloaded objects using the_hash_algo
>       http: replace sha1_to_hex
>       remote-curl: make hash size independent
>       hash: add a function to lookup hash algorithm by length
>       builtin/get-tar-commit-id: make hash size independent
>       archive: convert struct archiver_args to object_id
>       refspec: make hash size independent
>       builtin/difftool: use parse_oid_hex
>       dir: make untracked cache extension hash size independent
>       read-cache: read data in a hash-independent way
>       Git.pm: make hash size independent
>       gitweb: make hash size independent
>       send-email: default to quoted-printable when CR is present
>
> Ævar Arnfjörð Bjarmason (44):
>       receive-pack: fix use-after-free bug
>       commit-graph tests: split up corrupt_graph_and_verify()
>       commit-graph tests: test a graph that's too small
>       Makefile: remove an out-of-date comment
>       Makefile: move "strip" assignment down from flags
>       Makefile: add/remove comments at top and tweak whitespace
>       Makefile: Move *_LIBS assignment into its own section
>       Makefile: move the setting of *FLAGS closer to "include"
>       Makefile: allow for combining DEVELOPER=1 and CFLAGS="..."
>       gc: remove redundant check for gc_auto_threshold
>       gc: convert to using the_hash_algo
>       gc: refactor a "call me once" pattern
>       reflog tests: make use of "test_config" idiom
>       reflog tests: test for the "points nowhere" warning
>       rebase: remove the rebase.useBuiltin setting
>       gc docs: modernize the advice for manually running "gc"
>       gc docs: stop noting "repack" flags
>       gc docs: clean grammar for "gc.bigPackThreshold"
>       commit-graph: fix segfault on e.g. "git status"
>       commit-graph: don't early exit(1) on e.g. "git status"
>       commit-graph: don't pass filename to load_commit_graph_one_fd_st()
>       commit-graph verify: detect inability to read the graph
>       commit-graph write: don't die if the existing graph is corrupt
>       commit-graph: improve & i18n error messages
>       reflog tests: assert lack of early exit with expiry="never"
>       gc: handle & check gc.reflogExpire config
>       test-lib: whitelist GIT_TR2_* in the environment
>       gc docs: include the "gc.*" section from "config" in "gc"
>       gc docs: re-flow the "gc.*" section in "config"
>       gc docs: fix formatting for "gc.writeCommitGraph"
>       gc docs: note how --aggressive impacts --window & --depth
>       gc docs: downplay the usefulness of --aggressive
>       gc docs: note "gc --aggressive" in "fast-import"
>       gc docs: clarify that "gc" doesn't throw away referenced objects
>       gc docs: remove incorrect reference to gc.auto=0
>       perf README: correct docs for 3c8f12c96c regression
>       perf aggregate: remove GIT_TEST_INSTALLED from --codespeed
>       perf-lib.sh: make "./run <revisions>" use the correct gits
>       perf-lib.sh: remove GIT_TEST_INSTALLED from perf-lib.sh
>       perf tests: add "bindir" prefix to git tree test results
>       perf-lib.sh: forbid the use of GIT_TEST_INSTALLED
>       trace2: fix up a missing "leave" entry point
>       trace2: fix up a missing "leave" entry point
>       sha1dc: update from upstream
>
> İsmail Dönmez (2):
>       mingw: do not let ld strip relocations
>       mingw: enable DEP and ASLR
>
>
>

^ permalink raw reply	[relevance 0%]

* [ANNOUNCE] Git v2.22.0-rc1
@ 2019-05-19  9:04  2% Junio C Hamano
  2019-05-19 20:30  0% ` Johannes Schindelin
  0 siblings, 1 reply; 162+ results
From: Junio C Hamano @ 2019-05-19  9:04 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.22.0-rc1 is now available for testing
at the usual places.  It is comprised of 699 non-merge commits
since v2.21.0, contributed by 66 people, 16 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.22.0-rc1' 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.21.0 are as follows.
Welcome to the Git development community!

  Alexander Blesius, Baruch Siach, Boxuan Li, Chris Mayo,
  Chris. Webster, Clément Chigot, Corentin BOMPARD, Damien
  Robert, Dustin Spicuzza, Michal Suchanek, Rohit Ashiwal,
  Sun Chao, Tanushree Tumane, Vadim Kochan, William Hubbs, and
  Yash Bhatambare.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alban Gruin, Alexander Shopov, Anders
  Waldenborg, Andreas Heiduk, Andrei Rybak, Beat Bolli, Ben Peart,
  Brandon Richardson, brian m. carlson, Carlo Marcelo Arenas
  Belón, Christian Couder, Daniels Umanovskis, David Aguilar,
  David Kastrup, Denton Liu, Derrick Stolee, Elijah Newren, Eric
  Sunshine, Eric Wong, İsmail Dönmez, Jean-Noël Avila, Jeff
  Hostetler, Jeff King, Jiang Xin, Joel Teichroeb, Joey Hess,
  Johannes Schindelin, Jonathan Tan, Jordi Mas, Josh Steadmon,
  Junio C Hamano, Kyle Meyer, Martin Ågren, Matthew Kraai, Mike
  Hommey, Nguyễn Thái Ngọc Duy, Paul-Sebastian Ungureanu,
  Philip Oakley, Phillip Wood, Ramsay Jones, René Scharfe,
  Robert P. J. Day, Sven Strickroth, SZEDER Gábor, Taylor Blau,
  Thomas Gummerer, Todd Zullinger, Torsten Bögershausen, and
  Trần Ngọc Quân.

----------------------------------------------------------------

Git 2.22 Release Notes (draft)
==============================

Updates since v2.21
-------------------

UI, Workflows & Features

 * "git checkout --no-overlay" can be used to trigger a new mode of
   checking out paths out of the tree-ish, that allows paths that
   match the pathspec that are in the current index and working tree
   and are not in the tree-ish.

 * The %(trailers) formatter in "git log --format=..."  now allows to
   optionally pick trailers selectively by keyword, show only values,
   etc.

 * Four new configuration variables {author,committer}.{name,email}
   have been introduced to override user.{name,email} in more specific
   cases.

 * Command-line completion (in contrib/) learned to tab-complete the
   "git submodule absorbgitdirs" subcommand.

 * "git branch" learned a new subcommand "--show-current".

 * Output from "diff --cc" did not show the original paths when the
   merge involved renames.  A new option adds the paths in the
   original trees to the output.

 * The command line completion (in contrib/) has been taught to
   complete more subcommand parameters.

 * The final report from "git bisect" used to show the suspected
   culprit using a raw "diff-tree", with which there is no output for
   a merge commit.  This has been updated to use a more modern and
   human readable output that still is concise enough.

 * "git rebase --rebase-merges" replaces its old "--preserve-merges"
   option; the latter is now marked as deprecated.

 * Error message given while cloning with --recurse-submodules has
   been updated.

 * The completion helper code now pays attention to repository-local
   configuration (when available), which allows --list-cmds to honour
   a repository specific setting of completion.commands, for example.

 * "git mergetool" learned to offer Sublime Merge (smerge) as one of
   its backends.

 * A new hook "post-index-change" is called when the on-disk index
   file changes, which can help e.g. a virtualized working tree
   implementation.

 * "git difftool" can now run outside a repository.

 * "git checkout -m <other>" was about carrying the differences
   between HEAD and the working-tree files forward while checking out
   another branch, and ignored the differences between HEAD and the
   index.  The command has been taught to abort when the index and the
   HEAD are different.

 * A progress indicator has been added to the "index-pack" step, which
   often makes users wait for completion during "git clone".

 * "git submodule" learns "set-branch" subcommand that allows the
   submodule.*.branch settings to be modified.

 * "git merge-recursive" backend recently learned a new heuristics to
   infer file movement based on how other files in the same directory
   moved.  As this is inherently less robust heuristics than the one
   based on the content similarity of the file itself (rather than
   based on what its neighbours are doing), it sometimes gives an
   outcome unexpected by the end users.  This has been toned down to
   leave the renamed paths in higher/conflicted stages in the index so
   that the user can examine and confirm the result.

 * "git tag" learned to give an advice suggesting it might be a
   mistake when creating an annotated or signed tag that points at
   another tag.

 * The "git pack-objects" command learned to report the number of
   objects it packed via the trace2 mechanism.

 * The list of conflicted paths shown in the editor while concluding a
   conflicted merge was shown above the scissors line when the
   clean-up mode is set to "scissors", even though it was commented
   out just like the list of updated paths and other information to
   help the user explain the merge better.

 * The trace2 tracing facility learned to auto-generate a filename
   when told to log to a directory.

 * "git clone" learned a new --server-option option when talking over
   the protocol version 2.

 * The connectivity bitmaps are created by default in bare
   repositories now; also the pathname hash-cache is created by
   default to avoid making crappy deltas when repacking.

 * "git branch new A...B" and "git checkout -b new A...B" have been
   taught that in their contexts, the notation A...B means "the merge
   base between these two commits", just like "git checkout A...B"
   detaches HEAD at that commit.

 * Update "git difftool" and "git mergetool" so that the combinations
   of {diff,merge}.{tool,guitool} configuration variables serve as
   fallback settings of each other in a sensible order.

 * The "--dir-diff" mode of "git difftool" is not useful in "--no-index"
   mode; they are now explicitly marked as mutually incompatible.


Performance, Internal Implementation, Development Support etc.

 * The diff machinery, one of the oldest parts of the system, which
   long predates the parse-options API, uses fairly long and complex
   handcrafted option parser.  This is being rewritten to use the
   parse-options API.

 * The implementation of pack-redundant has been updated for
   performance in a repository with many packfiles.

 * A more structured way to obtain execution trace has been added.

 * "git prune" has been taught to take advantage of reachability
   bitmap when able.

 * The command line parser of "git commit-tree" has been rewritten to
   use the parse-options API.

 * Suggest GitGitGadget instead of submitGit as a way to submit
   patches based on GitHub PR to us.

 * The test framework has been updated to help developers by making it
   easier to run most of the tests under different versions of
   over-the-wire protocols.

 * Dev support update to make it easier to compare two formatted
   results from our documentation.

 * The scripted "git rebase" implementation has been retired.

 * "git multi-pack-index verify" did not scale well with the number of
   packfiles, which is being improved.

 * "git stash" has been rewritten in C.

 * The "check-docs" Makefile target to support developers has been
   updated.

 * The tests have been updated not to rely on the abbreviated option
   names the parse-options API offers, to protect us from an
   abbreviated form of an option that used to be unique within the
   command getting non-unique when a new option that share the same
   prefix is added.

 * The scripted version of "git rebase -i" wrote and rewrote the todo
   list many times during a single step of its operation, and the
   recent C-rewrite made a faithful conversion of the logic to C.  The
   implementation has been updated to carry necessary information
   around in-core to avoid rewriting the same file over and over
   unnecessarily.

 * Test framework update to more robustly clean up leftover files and
   processes after tests are done.

 * Conversion from unsigned char[20] to struct object_id continues.

 * While running "git diff" in a lazy clone, we can upfront know which
   missing blobs we will need, instead of waiting for the on-demand
   machinery to discover them one by one.  The code learned to aim to
   achieve better performance by batching the request for these
   promised blobs.

 * During an initial "git clone --depth=..." partial clone, it is
   pointless to spend cycles for a large portion of the connectivity
   check that enumerates and skips promisor objects (which by
   definition is all objects fetched from the other side).  This has
   been optimized out.

 * Mechanically and systematically drop "extern" from function
   declarlation.

 * The script to aggregate perf result unconditionally depended on
   libjson-perl even though it did not have to, which has been
   corrected.

 * The internal implementation of "git rebase -i" has been updated to
   avoid forking a separate "rebase--interactive" process.

 * Allow DEP and ASLR for Windows build to for security hardening.

 * Performance test framework has been broken and measured the version
   of Git that happens to be on $PATH, not the specified one to
   measure, for a while, which has been corrected.

 * Optionally "make coccicheck" can feed multiple source files to
   spatch, gaining performance while spending more memory.

 * Attempt to use an abbreviated option in "git clone --recurs" is
   responded by a request to disambiguate between --recursive and
   --recurse-submodules, which is bad because these two are synonyms.
   The parse-options API has been extended to define such synonyms
   more easily and not produce an unnecessary failure.

 * A pair of private functions in http.c that had names similar to
   fread/fwrite did not return the number of elements, which was found
   to be confusing.

 * Update collision-detecting SHA-1 code to build properly on HP-UX.


Fixes since v2.21
-----------------

 * "git prune-packed" did not notice and complain against excess
   arguments given from the command line, which now it does.
   (merge 9b0bd87ed2 rj/prune-packed-excess-args later to maint).

 * Split-index fix.
   (merge 6e37c8ed3c nd/split-index-null-base-fix later to maint).

 * "git diff --no-index" may still want to access Git goodies like
   --ext-diff and --textconv, but so far these have been ignored,
   which has been corrected.
   (merge 287ab28bfa jk/diff-no-index-initialize later to maint).

 * Unify RPC code for smart http in protocol v0/v1 and v2, which fixes
   a bug in the latter (lack of authentication retry) and generally
   improves the code base.
   (merge a97d00799a jt/http-auth-proto-v2-fix later to maint).

 * The include file compat/bswap.h has been updated so that it is safe
   to (accidentally) include it more than once.
   (merge 33aa579a55 jk/guard-bswap-header later to maint).

 * The set of header files used by "make hdr-check" unconditionally
   included sha256/gcrypt.h, even when it is not used, causing the
   make target to fail.  We now skip it when GCRYPT_SHA256 is not in
   use.
   (merge f23aa18e7f rj/hdr-check-gcrypt-fix later to maint).

 * The Makefile uses 'find' utility to enumerate all the *.h header
   files, which is expensive on platforms with slow filesystems; it
   now optionally uses "ls-files" if working within a repository,
   which is a trick similar to how all sources are enumerated to run
   ETAGS on.
   (merge 92b88eba9f js/find-lib-h-with-ls-files-when-possible later to maint).

 * "git rebase" that was reimplemented in C did not set ORIG_HEAD
   correctly, which has been corrected.
   (merge cbd29ead92 js/rebase-orig-head-fix later to maint).

 * Dev support.
   (merge f545737144 js/stress-test-ui-tweak later to maint).

 * CFLAGS now can be tweaked when invoking Make while using
   DEVELOPER=YesPlease; this did not work well before.
   (merge 6d5d4b4e93 ab/makefile-help-devs-more later to maint).

 * "git fsck --connectivity-only" omits computation necessary to sift
   the objects that are not reachable from any of the refs into
   unreachable and dangling.  This is now enabled when dangling
   objects are requested (which is done by default, but can be
   overridden with the "--no-dangling" option).
   (merge 8d8c2a5aef jk/fsck-doc later to maint).

 * On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX),
   the upload-pack that runs on the other end that hangs up after
   detecting an error could cause "git fetch" to die with a signal,
   which led to a flakey test.  "git fetch" now ignores SIGPIPE during
   the network portion of its operation (this is not a problem as we
   check the return status from our write(2)s).
   (merge 143588949c jk/no-sigpipe-during-network-transport later to maint).

 * A recent update broke "is this object available to us?" check for
   well-known objects like an empty tree (which should yield "yes",
   even when there is no on-disk object for an empty tree), which has
   been corrected.
   (merge f06ab027ef jk/virtual-objects-do-exist later to maint).

 * The setup code has been cleaned up to avoid leaks around the
   repository_format structure.
   (merge e8805af1c3 ma/clear-repository-format later to maint).

 * "git config --type=color ..." is meant to replace "git config --get-color"
   but there is a slight difference that wasn't documented, which is
   now fixed.
   (merge cd8e7593b9 jk/config-type-color-ends-with-lf later to maint).

 * When the "clean" filter can reduce the size of a huge file in the
   working tree down to a small "token" (a la Git LFS), there is no
   point in allocating a huge scratch area upfront, but the buffer is
   sized based on the original file size.  The convert mechanism now
   allocates very minimum and reallocates as it receives the output
   from the clean filter process.
   (merge 02156ab031 jh/resize-convert-scratch-buffer later to maint).

 * "git rebase" uses the refs/rewritten/ hierarchy to store its
   intermediate states, which inherently makes the hierarchy per
   worktree, but it didn't quite work well.
   (merge b9317d55a3 nd/rewritten-ref-is-per-worktree later to maint).

 * "git log -L<from>,<to>:<path>" with "-s" did not suppress the patch
   output as it should.  This has been corrected.
   (merge 05314efaea jk/line-log-with-patch later to maint).

 * "git worktree add" used to do a "find an available name with stat
   and then mkdir", which is race-prone.  This has been fixed by using
   mkdir and reacting to EEXIST in a loop.
   (merge 7af01f2367 ms/worktree-add-atomic-mkdir later to maint).

 * Build update for SHA-1 with collision detection.
   (merge 07a20f569b jk/sha1dc later to maint).

 * Build procedure has been fixed around use of asciidoctor instead of
   asciidoc.
   (merge 185f9a0ea0 ma/asciidoctor-fixes later to maint).

 * remote-http transport did not anonymize URLs reported in its error
   messages at places.
   (merge c1284b21f2 js/anonymize-remote-curl-diag later to maint).

 * Error messages given from the http transport have been updated so
   that they can be localized.
   (merge ed8b4132c8 js/remote-curl-i18n later to maint).

 * "git init" forgot to read platform-specific repository
   configuration, which made Windows port to ignore settings of
   core.hidedotfiles, for example.

 * A corner-case object name ambiguity while the sequencer machinery
   is working (e.g. "rebase -i -x") has been fixed.

 * "git format-patch" did not diagnose an error while opening the
   output file for the cover-letter, which has been corrected.
   (merge 2fe95f494c jc/format-patch-error-check later to maint).

 * "git checkout -f <branch>" while the index has an unmerged path
   incorrectly left some paths in an unmerged state, which has been
   corrected.

 * A corner case bug in the refs API has been corrected.
   (merge d3322eb28b jk/refs-double-abort later to maint).

 * Unicode update.
   (merge 584b62c37b bb/unicode-12 later to maint).

 * dumb-http walker has been updated to share more error recovery
   strategy with the normal codepath.

 * A buglet in configuration parser has been fixed.
   (merge 19e7fdaa58 nd/include-if-wildmatch later to maint).

 * The documentation for "git read-tree --reset -u" has been updated.
   (merge b5a0bd694c nd/read-tree-reset-doc later to maint).

 * Code clean-up around a much-less-important-than-it-used-to-be
   update_server_info() funtion.
   (merge b3223761c8 jk/server-info-rabbit-hole later to maint).

 * The message given when "git commit -a <paths>" errors out has been
   updated.
   (merge 5a1dbd48bc nd/commit-a-with-paths-msg-update later to maint).

 * "git cherry-pick --options A..B", after giving control back to the
   user to ask help resolving a conflicted step, did not honor the
   options it originally received, which has been corrected.

 * Various glitches in "git gc" around reflog handling have been fixed.

 * The code to read from commit-graph file has been cleanup with more
   careful error checking before using data read from it.

 * Performance fix around "git fetch" that grabs many refs.
   (merge b764300912 jt/fetch-pack-wanted-refs-optim later to maint).

 * Protocol v2 support in "git fetch-pack" of shallow clones has been
   corrected.

 * Performance fix around "git blame", especially in a linear history
   (which is the norm we should optimize for).
   (merge f892014943 dk/blame-keep-origin-blob later to maint).

 * Performance fix for "rev-list --parents -- pathspec".
   (merge 8320b1dbe7 jk/revision-rewritten-parents-in-prio-queue later to maint).

 * Updating the display with progress message has been cleaned up to
   deal better with overlong messages.
   (merge 545dc345eb sg/overlong-progress-fix later to maint).

 * "git blame -- path" in a non-bare repository starts blaming from
   the working tree, and the same command in a bare repository errors
   out because there is no working tree by definition.  The command
   has been taught to instead start blaming from the commit at HEAD,
   which is more useful.
   (merge a544fb08f8 sg/blame-in-bare-start-at-head later to maint).

 * An underallocation in the code to read the untracked cache
   extension has been corrected.
   (merge 3a7b45a623 js/untracked-cache-allocfix later to maint).

 * The code is updated to check the result of memory allocation before
   it is used in more places, by using xmalloc and/or xcalloc calls.
   (merge 999b951b28 jk/xmalloc later to maint).

 * The GETTEXT_POISON test option has been quite broken ever since it
   was made runtime-tunable, which has been fixed.
   (merge f88b9cb603 jc/gettext-test-fix later to maint).

 * Test fix on APFS that is incapable of store paths in Latin-1.
   (merge 3889149619 js/iso8895-test-on-apfs later to maint).

 * "git submodule foreach <command> --quiet" did not pass the option
   down correctly, which has been corrected.
   (merge a282f5a906 nd/submodule-foreach-quiet later to maint).

 * "git send-email" has been taught to use quoted-printable when the
   payload contains carriage-return.  The use of the mechanism is in
   line with the design originally added the codepath that chooses QP
   when the payload has overly long lines.
   (merge 74d76a1701 bc/send-email-qp-cr later to maint).

 * The recently added feature to add addresses that are on
   anything-by: trailers in 'git send-email' was found to be way too
   eager and considered nonsense strings as if they can be legitimate
   beginning of *-by: trailer.  This has been tightened.

 * Builds with gettext broke on recent macOS w/ Homebrew, which
   seems to have stopped including from /usr/local/include; this
   has been corrected.
   (merge 92a1377a2a js/macos-gettext-build later to maint).

 * Running "git add" on a repository created inside the current
   repository is an explicit indication that the user wants to add it
   as a submodule, but when the HEAD of the inner repository is on an
   unborn branch, it cannot be added as a submodule.  Worse, the files
   in its working tree can be added as if they are a part of the outer
   repository, which is not what the user wants.  These problems are
   being addressed.
   (merge f937bc2f86 km/empty-repo-is-still-a-repo later to maint).

 * "git cherry-pick" run with the "-x" or the "--signoff" option used
   to (and more importantly, ought to) clean up the commit log message
   with the --cleanup=space option by default, but this has been
   broken since late 2017.  This has been fixed.

 * When given a tag that points at a commit-ish, "git replace --graft"
   failed to peel the tag before writing a replace ref, which did not
   make sense because the old graft mechanism the feature wants to
   mimick only allowed to replace one commit object with another.
   This has been fixed.
   (merge ee521ec4cb cc/replace-graft-peel-tags later to maint).

 * Code tightening against a "wrong" object appearing where an object
   of a different type is expected, instead of blindly assuming that
   the connection between objects are correctly made.
   (merge 97dd512af7 tb/unexpected later to maint).

 * An earlier update for MinGW and Cygwin accidentally broke MSVC build,
   which has been fixed.
   (merge 22c3634c0f ss/msvc-path-utils-fix later to maint).

 * %(push:track) token used in the --format option to "git
   for-each-ref" and friends was not showing the right branch, which
   has been fixed.
   (merge c646d0934e dr/ref-filter-push-track-fix later to maint).

 * "make check-docs", "git help -a", etc. did not account for cases
   where a particular build may deliberately omit some subcommands,
   which has been corrected.

 * The logic to tell if a Git repository has a working tree protects
   "git branch -D" from removing the branch that is currently checked
   out by mistake.  The implementation of this logic was broken for
   repositories with unusual name, which unfortunately is the norm for
   submodules these days.  This has been fixed.
   (merge f3534c98e4 jt/submodule-repo-is-with-worktree later to maint).

 * AIX shared the same build issues with other BSDs around fileno(fp),
   which has been corrected.
   (merge ee662bf5c6 cc/aix-has-fileno-as-a-macro later to maint).

 * The autoconf generated configure script failed to use the right
   gettext() implementations from -libintl by ignoring useless stub
   implementations shipped in some C library, which has been
   corrected.
   (merge b71e56a683 vk/autoconf-gettext later to maint).

 * Fix index-pack perf test so that the repeated invocations always
   run in an empty repository, which emulates the initial clone
   situation better.
   (merge 775c71e16d jk/p5302-avoid-collision-check-cost later to maint).

 * A "ls-files" that emulates "find" to enumerate files in the working
   tree resulted in duplicated Makefile rules that caused the build to
   issue an unnecessary warning during a trial build after merge
   conflicts are resolved in working tree *.h files but before the
   resolved results are added to the index.  This has been corrected.

 * "git chery-pick" (and "revert" that shares the same runtime engine)
   that deals with multiple commits got confused when the final step
   gets stopped with a conflict and the user concluded the sequence
   with "git commit".  Attempt to fix it by cleaning up the state
   files used by these commands in such a situation.
   (merge 4a72486de9 pw/clean-sequencer-state-upon-final-commit later to maint).

 * On a filesystem like HFS+, the names of the refs stored as filesystem
   entities may become different from what the end-user expects, just
   like files in the working tree get "renamed".  Work around the
   mismatch by paying attention to the core.precomposeUnicode
   configuration.
   (merge 8e712ef6fc en/unicode-in-refnames later to maint).

 * The code to generate the multi-pack idx file was not prepared to
   see too many packfiles and ran out of open file descriptor, which
   has been corrected.

 * To run tests for Git SVN, our scripts for CI used to install the
   git-svn package (in the hope that it would bring in the right
   dependencies).  This has been updated to install the more direct
   dependency, namely, libsvn-perl.
   (merge db864306cf sg/ci-libsvn-perl later to maint).

 * "git cvsexportcommit" running on msys did not expect cvsnt showed
   "cvs status" output with CRLF line endings.

 * The fsmonitor interface got out of sync after the in-core index
   file gets discarded, which has been corrected.
   (merge 398a3b0899 js/fsmonitor-refresh-after-discarding-index later to maint).

 * "git status" did not know that the "label" instruction in the
   todo-list "rebase -i -r" uses should not be shown as a hex object
   name.

 * A prerequiste check in the test suite to see if a working jgit is
   available was made more robust.
   (merge abd0f28983 tz/test-lib-check-working-jgit later to maint).

 * The codepath to parse :<path> that obtains the object name for an
   indexed object has been made more robust.

 * Code cleanup, docfix, build fix, etc.
   (merge 11f470aee7 jc/test-yes-doc later to maint).
   (merge 90503a240b js/doc-symref-in-proto-v1 later to maint).
   (merge 5c326d1252 jk/unused-params later to maint).
   (merge 68cabbfda3 dl/doc-submodule-wo-subcommand later to maint).
   (merge 9903623761 ab/receive-pack-use-after-free-fix later to maint).
   (merge 1ede45e44b en/merge-options-doc later to maint).
   (merge 3e14dd2c8e rd/doc-hook-used-in-sample later to maint).
   (merge c271dc28fd nd/no-more-check-racy later to maint).
   (merge e6e15194a8 yb/utf-16le-bom-spellfix later to maint).
   (merge bb101aaf0c rd/attr.c-comment-typofix later to maint).
   (merge 716a5af812 rd/gc-prune-doc-fix later to maint).
   (merge 50b206371d js/untravis-windows later to maint).
   (merge dbf47215e3 js/rebase-recreate-merge later to maint).
   (merge 56cb2d30f8 dl/reset-doc-no-wrt-abbrev later to maint).
   (merge 64eca306a2 ja/dir-rename-doc-markup-fix later to maint).
   (merge af91b0230c dl/ignore-docs later to maint).
   (merge 59a06e947b ra/t3600-test-path-funcs later to maint).
   (merge e041d0781b ar/t4150-remove-cruft later to maint).
   (merge 8d75a1d183 ma/asciidoctor-fixes-more later to maint).
   (merge 74cc547b0f mh/pack-protocol-doc-fix later to maint).
   (merge ed31851fa6 ab/doc-misc-typofixes later to maint).
   (merge a7256debd4 nd/checkout-m-doc-update later to maint).
   (merge 3a9e1ad78d jt/t5551-protocol-v2-does-not-have-half-auth later to maint).
   (merge 0b918b75af sg/t5318-cleanup later to maint).
   (merge 68ed71b53c cb/doco-mono later to maint).
   (merge a34dca2451 nd/interpret-trailers-docfix later to maint).
   (merge cf7b857a77 en/fast-import-parsing-fix later to maint).
   (merge fe61ccbc35 po/rerere-doc-fmt later to maint).
   (merge ffea0248bf po/describe-not-necessarily-7 later to maint).
   (merge 7cb7283adb tg/ls-files-debug-format-fix later to maint).
   (merge f64a21bd82 tz/doc-apostrophe-no-longer-needed later to maint).
   (merge dbe7b41019 js/t3301-unbreak-notes-test later to maint).
   (merge d8083e4180 km/t3000-retitle later to maint).
   (merge 9e4cbccbd7 tz/git-svn-doc-markup-fix later to maint).
   (merge da9ca955a7 jk/ls-files-doc-markup-fix later to maint).
   (merge 6804ba3a58 cw/diff-highlight later to maint).
   (merge 1a8787144d nd/submodule-helper-incomplete-line-fix later to maint).
   (merge d9ef573837 jk/apache-lsan later to maint).
   (merge c871fbee2b js/t6500-use-windows-pid-on-mingw later to maint).
   (merge ce4c7bfc90 bl/t4253-exit-code-from-format-patch later to maint).
   (merge 397a46db78 js/t5580-unc-alternate-test later to maint).
   (merge d4907720a2 cm/notes-comment-fix later to maint).
   (merge 9dde06de13 cb/http-push-null-in-message-fix later to maint).

----------------------------------------------------------------

Changes since v2.21.0 are as follows:

Alban Gruin (18):
      sequencer: changes in parse_insn_buffer()
      sequencer: make the todo_list structure public
      sequencer: remove the 'arg' field from todo_item
      sequencer: refactor transform_todos() to work on a todo_list
      sequencer: introduce todo_list_write_to_file()
      sequencer: refactor check_todo_list() to work on a todo_list
      sequencer: refactor sequencer_add_exec_commands() to work on a todo_list
      sequencer: refactor rearrange_squash() to work on a todo_list
      sequencer: make sequencer_make_script() write its script to a strbuf
      sequencer: change complete_action() to use the refactored functions
      rebase--interactive: move sequencer_add_exec_commands()
      rebase--interactive: move rearrange_squash_in_todo_file()
      sequencer: refactor skip_unnecessary_picks() to work on a todo_list
      rebase-interactive: use todo_list_write_to_file() in edit_todo_list()
      rebase-interactive: append_todo_help() changes
      rebase-interactive: rewrite edit_todo_list() to handle the initial edit
      sequencer: use edit_todo_list() in complete_action()
      rebase--interactive: move transform_todo_file()

Alexander Blesius (1):
      doc: fix typos in man pages

Alexander Shopov (1):
      gitk: Update Bulgarian translation (317t)

Anders Waldenborg (7):
      doc: group pretty-format.txt placeholders descriptions
      pretty: allow %(trailers) options with explicit value
      pretty: single return path in %(trailers) handling
      pretty: allow showing specific trailers
      pretty: add support for "valueonly" option in %(trailers)
      strbuf: separate callback for strbuf_expand:ing literals
      pretty: add support for separator option in %(trailers)

Andreas Heiduk (1):
      revisions.txt: remove ambibuity between <rev>:<path> and :<path>

Andrei Rybak (1):
      t4150: remove unused variable

Baruch Siach (1):
      send-email: don't cc *-by lines with '-' prefix

Beat Bolli (1):
      unicode: update the width tables to Unicode 12

Ben Peart (1):
      read-cache: add post-index-change hook

Boxuan Li (1):
      t4253-am-keep-cr-dos: avoid using pipes

Brandon Richardson (1):
      commit-tree: utilize parse-options api

Carlo Marcelo Arenas Belón (1):
      http-push: prevent format overflow warning with gcc >= 9

Chris Mayo (1):
      notes: correct documentation of format_display_notes()

Chris. Webster (1):
      diff-highlight: use correct /dev/null for UNIX and Windows

Christian Couder (4):
      t6050: use test_line_count instead of wc -l
      t6050: redirect expected error output to a file
      replace: peel tag when passing a tag as parent to --graft
      replace: peel tag when passing a tag first to --graft

Clément Chigot (2):
      Makefile: use fileno macro work around on AIX
      git-compat-util: work around for access(X_OK) under root

Corentin BOMPARD (2):
      doc/CodingGuidelines: URLs and paths as monospace
      doc: format pathnames and URLs as monospace.

Damien Robert (1):
      ref-filter: use correct branch for %(push:track)

Daniels Umanovskis (1):
      branch: introduce --show-current display option

David Aguilar (2):
      mergetools: add support for smerge (Sublime Merge)
      contrib/completion: add smerge to the mergetool completion candidates

David Kastrup (1):
      blame.c: don't drop origin blobs as eagerly

Denton Liu (38):
      completion: complete git submodule absorbgitdirs
      git-submodule.txt: "--branch <branch>" option defaults to 'master'
      submodule--helper: teach config subcommand --unset
      submodule: document default behavior
      git-reset.txt: clarify documentation
      git-clean.txt: clarify ignore pattern files
      docs: move core.excludesFile from git-add to gitignore
      contrib/subtree: ensure only one rev is provided
      midx.c: convert FLEX_ALLOC_MEM to FLEX_ALLOC_STR
      cocci: FLEX_ALLOC_MEM to FLEX_ALLOC_STR
      tag: fix formatting
      submodule: teach set-branch subcommand
      tag: advise on nested tags
      t7600: clean up style
      t3507: clean up style
      t7604: clean up style
      t7502: clean up style
      commit: extract cleanup_mode functions to sequencer
      parse-options.h: extract common --cleanup option
      merge: cleanup messages like commit
      merge: add scissors line on merge conflict
      cherry-pick/revert: add scissors line on merge conflict
      t7610: unsuppress output
      t7610: add mergetool --gui tests
      *.[ch]: remove extern from function declarations using spatch
      *.[ch]: remove extern from function declarations using sed
      *.[ch]: manually align parameter lists
      t2018: cleanup in current test
      branch: make create_branch accept a merge base rev
      revisions.txt: change "rev" to "<rev>"
      revisions.txt: mark optional rev arguments with []
      revisions.txt: mention <rev>~ form
      tag: fix typo in nested tagging hint
      mergetool: use get_merge_tool function
      mergetool--lib: create gui_mode function
      mergetool: fallback to tool when guitool unavailable
      difftool: make --gui, --tool and --extcmd mutually exclusive
      difftool: fallback on merge.guitool

Derrick Stolee (4):
      trace2:data: pack-objects: add trace2 regions
      midx: pass a repository pointer
      midx: add packs to packed_git linked list
      trace2: add variable description to git.txt

Dustin Spicuzza (1):
      cvsexportcommit: force crlf translation

Elijah Newren (23):
      log,diff-tree: add --combined-all-paths option
      merge-options.txt: correct wording of --no-commit option
      t9300: demonstrate bug with get-mark and empty orphan commits
      git-fast-import.txt: fix wording about where ls command can appear
      fast-import: check most prominent commands first
      fast-import: only allow cat-blob requests where it makes sense
      fast-import: fix erroneous handling of get-mark with empty orphan commits
      Use 'unsigned short' for mode, like diff_filespec does
      merge-recursive: rename merge_options argument from 'o' to 'opt'
      merge-recursive: rename diff_filespec 'one' to 'o'
      merge-recursive: rename locals 'o' and 'a' to 'obuf' and 'abuf'
      merge-recursive: use 'ci' for rename_conflict_info variable name
      merge-recursive: move some struct declarations together
      merge-recursive: shrink rename_conflict_info
      merge-recursive: remove ren[12]_other fields from rename_conflict_info
      merge-recursive: track branch where rename occurred in rename struct
      merge-recursive: cleanup handle_rename_* function signatures
      merge-recursive: switch from (oid,mode) pairs to a diff_filespec
      t6043: fix copied test description to match its purpose
      merge-recursive: track information associated with directory renames
      merge-recursive: give callers of handle_content_merge() access to contents
      merge-recursive: switch directory rename detection default
      Honor core.precomposeUnicode in more places

Eric Sunshine (1):
      check-non-portable-shell: support Perl versions older than 5.10

Eric Wong (1):
      repack: enable bitmaps by default on bare repos

Jean-Noël Avila (2):
      l10n: fr.po remove obsolete entries
      Doc: fix misleading asciidoc formating

Jeff Hostetler (29):
      trace2: Documentation/technical/api-trace2.txt
      trace2: create new combined trace facility
      trace2: collect Windows-specific process information
      trace2:data: add trace2 regions to wt-status
      trace2:data: add editor/pager child classification
      trace2:data: add trace2 sub-process classification
      trace2:data: add trace2 transport child classification
      trace2:data: add subverb to checkout command
      trace2:data: add subverb to reset command
      trace2:data: add trace2 hook classification
      trace2:data: add subverb for rebase
      trace2:data: add trace2 instrumentation to index read/write
      trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh
      trace2: add for_each macros to clang-format
      progress: add sparse mode to force 100% complete message
      trace2:data: add trace2 data to midx
      midx: add progress indicators in multi-pack-index verify
      midx: during verify group objects by packfile to speed verification
      config: initialize opts structure in repo_read_config()
      trace2: refactor setting process starting time
      trace2: add absolute elapsed time to start event
      trace2: find exec-dir before trace2 initialization
      config: add read_very_early_config()
      trace2: use system/global config for default trace2 settings
      trace2: report peak memory usage of the process
      trace2: clarify UTC datetime formatting
      trace2: make SIDs more unique
      trace2: update docs to describe system/global config settings
      trace2: fixup access problem on /etc/gitconfig in read_very_early_config

Jeff King (92):
      prune: lazily perform reachability traversal
      prune: use bitmaps for reachability traversal
      prune: check SEEN flag for reachability
      t5304: rename "sha1" variables to "oid"
      diff: drop options parameter from diffcore_fix_diff_index()
      diff: drop unused color reset parameters
      diff: drop unused emit data parameter from sane_truncate_line()
      diff: drop complete_rewrite parameter from run_external_diff()
      merge-recursive: drop several unused parameters
      pack-objects: drop unused parameter from oe_map_new_pack()
      files-backend: drop refs parameter from split_symref_update()
      ref-filter: drop unused buf/sz pairs
      ref-filter: drop unused "obj" parameters
      ref-filter: drop unused "sz" parameters
      diff: reuse diff setup for --no-index case
      bisect: use string arguments to feed internal diff-tree
      bisect: fix internal diff-tree config loading
      bisect: make diff-tree output prettier
      fetch: avoid calling write_or_die()
      fetch: ignore SIGPIPE during network operation
      rev-list: allow cached objects in existence check
      doc/fsck: clarify --connectivity-only behavior
      fsck: always compute USED flags for unreachable objects
      compat/bswap: add include header guards
      config: document --type=color output is a complete line
      line-log: suppress diff output with "-s"
      line-log: detect unsupported formats
      point pull requesters to GitGitGadget
      Makefile: fix unaligned loads in sha1dc with UBSan
      t5310: correctly remove bitmaps for jgit test
      pack-objects: default to writing bitmap hash-cache
      perf-lib.sh: rely on test-lib.sh for --tee handling
      revision: drop some unused "revs" parameters
      log: drop unused rev_info from early output
      log: drop unused "len" from show_tagger()
      update-index: drop unused prefix_length parameter from do_reupdate()
      test-date: drop unused "now" parameter from parse_dates()
      unpack-trees: drop name_entry from traverse_by_cache_tree()
      unpack-trees: drop unused error_type parameters
      report_path_error(): drop unused prefix parameter
      fetch_pack(): drop unused parameters
      parse-options: drop unused ctx parameter from show_gitcomp()
      pretty: drop unused "type" parameter in needs_rfc2047_encoding()
      pretty: drop unused strbuf from parse_padding_placeholder()
      git: read local config in --list-cmds
      completion: fix multiple command removals
      parse_opt_ref_sorting: always use with NONEG flag
      refs/files-backend: handle packed transaction prepare failure
      refs/files-backend: don't look at an aborted transaction
      http: factor out curl result code normalization
      http: normalize curl results for dumb loose and alternates fetches
      http: use normalize_curl_result() instead of manual conversion
      revision: use a prio_queue to hold rewritten parents
      get_commit_tree(): return NULL for broken tree
      rev-list: let traversal die when --missing is not in use
      rev-list: detect broken root trees
      test-prio-queue: use xmalloc
      xdiff: use git-compat-util
      xdiff: use xmalloc/xrealloc
      progress: use xmalloc/xcalloc
      t5516: drop ok=sigpipe from unreachable-want tests
      t5530: check protocol response for "not our ref"
      upload-pack: send ERR packet for non-tip objects
      pkt-line: prepare buffer before handling ERR packets
      fetch: use free_refs()
      remote.c: make singular free_ref() public
      fetch: do not consider peeled tags as advertised tips
      packfile.h: drop extern from function declarations
      pack-revindex: open index if necessary
      t5319: fix bogus cat-file argument
      t5319: drop useless --buffer from cat-file
      midx: check both pack and index names for containment
      packfile: fix pack basename computation
      http: simplify parsing of remote objects/info/packs
      server-info: fix blind pointer arithmetic
      server-info: simplify cleanup in parse_pack_def()
      server-info: use strbuf to read old info/packs file
      server-info: drop nr_alloc struct member
      server-info: drop objdirlen pointer arithmetic
      update_info_refs(): drop unused force parameter
      t5304: add a test for pruning with bitmaps
      untracked-cache: be defensive about missing NULs in index
      untracked-cache: simplify parsing by dropping "next"
      untracked-cache: simplify parsing by dropping "len"
      p5302: create the repo in each index-pack test
      doc/ls-files: put nested list for "-t" option into block
      t/perf: depend on perl JSON only when using --codespeed
      t/perf: add perf script for partial clones
      coccicheck: optionally batch spatch invocations
      t/lib-httpd: pass LSAN_OPTIONS through apache
      coccicheck: make batch size of 0 mean "unlimited"
      get_oid: handle NULL repo->index

Jiang Xin (4):
      t5323: test cases for git-pack-redundant
      pack-redundant: delay creation of unique_objects
      pack-redundant: rename pack_list.all_objects
      pack-redundant: consistent sort method

Joel Teichroeb (5):
      stash: improve option parsing test coverage
      stash: convert apply to builtin
      stash: convert drop and clear to builtin
      stash: convert branch to builtin
      stash: convert pop to builtin

Joey Hess (1):
      convert: avoid malloc of original file size

Johannes Schindelin (63):
      ident: add the ability to provide a "fallback identity"
      travis: remove the hack to build the Windows job on Azure Pipelines
      tests: let --stress-limit=<N> imply --stress
      tests: introduce --stress-jobs=<N>
      built-in rebase: no need to check out `onto` twice
      built-in rebase: use the correct reflog when switching branches
      built-in rebase: demonstrate that ORIG_HEAD is not set correctly
      built-in rebase: set ORIG_HEAD just once, before the rebase
      Makefile: use `git ls-files` to list header files, if possible
      curl: anonymize URLs in error messages and warnings
      remote-curl: mark all error messages for translation
      stash: add back the original, scripted `git stash`
      stash: optionally use the scripted version again
      tests: add a special setup where stash.useBuiltin is off
      legacy stash: fix "rudimentary backport of -q"
      built-in stash: handle :(glob) pathspecs again
      mingw: drop MakeMaker reference
      mingw: allow building with an MSYS2 runtime v3.x
      rebase: deprecate --preserve-merges
      mingw: respect core.hidedotfiles = false in git-init again
      test-lib: introduce 'test_atexit'
      git-daemon: use 'test_atexit` to stop 'git-daemon'
      git p4 test: use 'test_atexit' to kill p4d and the watchdog process
      rebase -i: demonstrate obscure loose object cache bug
      sequencer: improve error message when an OID could not be parsed
      sequencer: move stale comment into correct location
      get_oid(): when an object was not found, try harder
      difftool: remove obsolete (and misleading) comment
      parse-options: make OPT_ARGUMENT() more useful
      difftool: allow running outside Git worktrees with --no-index
      docs: move gitremote-helpers into section 7
      docs: do not document the `git remote-testgit` command
      check-docs: really look at the documented commands again
      check-docs: do not expect guide pages to correspond to commands
      check-docs: fix for setups where executables have an extension
      tests (rebase): spell out the `--keep-empty` option
      tests (rebase): spell out the `--force-rebase` option
      t7810: do not abbreviate `--no-exclude-standard` nor `--invert-match`
      t5531: avoid using an abbreviated option
      tests (push): do not abbreviate the `--follow-tags` option
      tests (status): spell out the `--find-renames` option in full
      tests (pack-objects): use the full, unabbreviated `--revs` option
      t3301: fix false negative
      untracked cache: fix off-by-one
      tests: disallow the use of abbreviated options (by default)
      t9822: skip tests if file names cannot be ISO-8859-1 encoded
      macOS: make sure that gettext is found
      remote-testgit: move it into the support directory for t5801
      Makefile: drop the NO_INSTALL variable
      help -a: do not list commands that are excluded from the build
      check-docs: allow command-list.txt to contain excluded commands
      docs: exclude documentation for commands that have been excluded
      check-docs: do not bother checking for legacy scripts' documentation
      test-tool: handle the `-C <directory>` option just like `git`
      Turn `git serve` into a test helper
      t5580: verify that alternates can be UNC paths
      fsmonitor: demonstrate that it is not refreshed after discard_index()
      fsmonitor: force a refresh after the index was discarded
      t6500(mingw): use the Windows PID of the shell
      difftool --no-index: error out on --dir-diff (and don't crash)
      status: fix display of rebase -ir's `label` command
      parse-options: adjust `parse_opt_unknown_cb()`s declared return type
      stash: document stash.useBuiltin

Jonathan Tan (24):
      remote-curl: reduce scope of rpc_state.argv
      remote-curl: reduce scope of rpc_state.stdin_preamble
      remote-curl: reduce scope of rpc_state.result
      remote-curl: refactor reading into rpc_state's buf
      remote-curl: use post_rpc() for protocol v2 also
      tests: define GIT_TEST_PROTOCOL_VERSION
      t5601: check ssh command only with protocol v0
      tests: always test fetch of unreachable with v0
      t5503: fix overspecification of trace expectation
      t5512: compensate for v0 only sending HEAD symrefs
      t5700: only run with protocol version 1
      tests: fix protocol version for overspecifications
      t5552: compensate for v2 filtering ref adv.
      submodule: explain first attempt failure clearly
      t5551: mark half-auth no-op fetch test as v0-only
      fetch-pack: call prepare_shallow_info only if v0
      fetch-pack: respect --no-update-shallow in v2
      sha1-file: support OBJECT_INFO_FOR_PREFETCH
      fetch-pack: binary search when storing wanted-refs
      diff: batch fetching of missing blobs
      pack-objects: write objects packed to trace2
      transport: die if server options are unsupported
      clone: send server options when using protocol v2
      worktree: update is_bare heuristics

Jordi Mas (1):
      l10n: Fixes to Catalan translation

Josh Steadmon (5):
      protocol-capabilities.txt: document symref
      trace2: write to directory targets
      clone: do faster object check for partial clones
      trace2: fix incorrect function pointer check
      commit-graph: fix memory leak

Junio C Hamano (16):
      test: caution on our version of 'yes'
      builtin/log: downcase the beginning of error messages
      format-patch: notice failure to open cover letter for writing
      Start 2.22 cycle
      The second batch
      The third batch
      The fourth batch
      gettext tests: export the restored GIT_TEST_GETTEXT_POISON
      The fifth batch
      The sixth batch
      Makefile: dedup list of files obtained from ls-files
      The seventh batch
      The eighth batch
      Git 2.22-rc0
      pkt-line: drop 'const'-ness of a param to set_packet_header()
      Git 2.22-rc1

Kyle Meyer (5):
      rebase docs: fix "gitlink" typo
      submodule: refuse to add repository with no commits
      dir: do not traverse repositories with no commits
      add: error appropriately on repository with no commits
      t3000 (ls-files -o): widen description to reflect current tests

Martin Ågren (14):
      setup: free old value before setting `work_tree`
      setup: fix memory leaks with `struct repository_format`
      config/diff.txt: drop spurious backtick
      config/fsck.txt: avoid starting line with dash
      git.txt: remove empty line before list continuation
      git-svn.txt: drop escaping '\' that ends up being rendered
      Documentation: turn middle-of-line tabs into spaces
      Documentation/Makefile: add missing xsl dependencies for manpages
      Documentation/Makefile: add missing dependency on asciidoctor-extensions
      asciidoctor-extensions: fix spurious space after linkgit
      Doc: auto-detect changed build flags
      doc-diff: let `render_tree()` take an explicit directory name
      doc-diff: support diffing from/to AsciiDoc(tor)
      doc-diff: add `--cut-header-footer`

Matthew Kraai (1):
      t3903: add test for --intent-to-add file

Michal Suchanek (1):
      worktree: fix worktree add race

Mike Hommey (2):
      fix pack protocol example client/server communication
      Make fread/fwrite-like functions in http.c more like fread/fwrite.

Nguyễn Thái Ngọc Duy (126):
      parse-options.h: remove extern on function prototypes
      parse-options: add one-shot mode
      parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
      parse-options: add OPT_BITOP()
      parse-options: stop abusing 'callback' for lowlevel callbacks
      parse-options: avoid magic return codes
      parse-options: allow ll_callback with OPTION_CALLBACK
      diff.h: keep forward struct declarations sorted
      diff.h: avoid bit fields in struct diff_flags
      diff.c: prepare to use parse_options() for parsing
      diff.c: convert -u|-p|--patch
      diff.c: convert -U|--unified
      diff.c: convert -W|--[no-]function-context
      diff.c: convert --raw
      read-cache.c: fix writing "link" index ext with null base oid
      completion: add more parameter value completion
      diff-parseopt: convert --patch-with-raw
      diff-parseopt: convert --numstat and --shortstat
      diff-parseopt: convert --dirstat and friends
      diff-parseopt: convert --check
      diff-parseopt: convert --summary
      diff-parseopt: convert --patch-with-stat
      diff-parseopt: convert --name-only
      diff-parseopt: convert --name-status
      diff-parseopt: convert -s|--no-patch
      diff-parseopt: convert --stat*
      diff-parseopt: convert --[no-]compact-summary
      diff-parseopt: convert --output-*
      diff-parseopt: convert -B|--break-rewrites
      diff-parseopt: convert -M|--find-renames
      diff-parseopt: convert -D|--irreversible-delete
      diff-parseopt: convert -C|--find-copies
      diff-parseopt: convert --find-copies-harder
      diff-parseopt: convert --no-renames|--[no--rename-empty
      diff-parseopt: convert --relative
      diff-parseopt: convert --[no-]minimal
      diff-parseopt: convert --ignore-some-changes
      Delete check-racy.c
      diff-parseopt: convert --[no-]indent-heuristic
      diff-parseopt: convert --patience
      diff-parseopt: convert --histogram
      diff-parseopt: convert --diff-algorithm
      diff-parseopt: convert --anchored
      diff-parseopt: convert --binary
      diff-parseopt: convert --full-index
      diff-parseopt: convert -a|--text
      diff-parseopt: convert -R
      diff-parseopt: convert --[no-]follow
      diff-parseopt: convert --[no-]color
      diff-parseopt: convert --word-diff
      diff-parseopt: convert --word-diff-regex
      diff-parseopt: convert --color-words
      diff-parseopt: convert --exit-code
      diff-parseopt: convert --quiet
      diff-parseopt: convert --ext-diff
      diff-parseopt: convert --textconv
      diff-parseopt: convert --ignore-submodules
      diff-parseopt: convert --submodule
      files-backend.c: factor out per-worktree code in loose_fill_ref_dir()
      files-backend.c: reduce duplication in add_per_worktree_entries_to_dir()
      Make sure refs/rewritten/ is per-worktree
      unpack-trees: fix oneway_merge accidentally carry over stage index
      checkout.txt: note about losing staged changes with --merge
      commit: improve error message in "-a <paths>" case
      unpack-trees: keep gently check inside add_rejected_path
      unpack-trees: rename "gently" flag to "quiet"
      read-tree: add --quiet
      checkout: prevent losing staged changes with --merge
      diff-parseopt: convert --ws-error-highlight
      diff-parseopt: convert --ita-[in]visible-in-index
      diff-parseopt: convert -z
      diff-parseopt: convert -l
      diff-parseopt: convert -S|-G
      diff-parseopt: convert --pickaxe-all|--pickaxe-regex
      diff-parseopt: convert -O
      diff-parseopt: convert --find-object
      diff-parseopt: convert --diff-filter
      diff-parseopt: convert --[no-]abbrev
      diff-parseopt: convert --[src|dst]-prefix
      diff-parseopt: convert --line-prefix
      diff-parseopt: convert --no-prefix
      diff-parseopt: convert --inter-hunk-context
      diff-parseopt: convert --[no-]color-moved
      diff-parseopt: convert --color-moved-ws
      diff.c: allow --no-color-moved-ws
      range-diff: use parse_options() instead of diff_opt_parse()
      diff --no-index: use parse_options() instead of diff_opt_parse()
      am: avoid diff_opt_parse()
      config: correct '**' matching in includeIf patterns
      interpret-trailers.txt: start the desc line with a capital letter
      read-tree.txt: clarify --reset and worktree changes
      packfile.c: add repo_approximate_object_count()
      refs.c: add refs_ref_exists()
      refs.c: add refs_shorten_unambiguous_ref()
      refs.c: remove the_repo from substitute_branch_name()
      refs.c: remove the_repo from expand_ref()
      refs.c: add repo_dwim_ref()
      refs.c: add repo_dwim_log()
      refs.c: remove the_repo from read_ref_at()
      submodule foreach: fix "<command> --quiet" not being respected
      commit.cocci: refactor code, avoid double rewrite
      commit.c: add repo_get_commit_tree()
      sha1-name.c: remove the_repo from sort_ambiguous()
      sha1-name.c: remove the_repo from find_abbrev_len_packed()
      sha1-name.c: add repo_find_unique_abbrev_r()
      sha1-name.c: store and use repo in struct disambiguate_state
      sha1-name.c: add repo_for_each_abbrev()
      sha1-name.c: remove the_repo from get_short_oid()
      sha1-name.c: remove the_repo from interpret_nth_prior_checkout()
      sha1-name.c: remove the_repo from interpret_branch_mark()
      sha1-name.c: add repo_interpret_branch_name()
      sha1-name.c: remove the_repo from get_oid_oneline()
      sha1-name.c: remove the_repo from get_describe_name()
      sha1-name.c: remove the_repo from get_oid_basic()
      sha1-name.c: remove the_repo from get_oid_1()
      sha1-name.c: remove the_repo from handle_one_ref()
      sha1-name.c: remove the_repo from diagnose_invalid_index_path()
      sha1-name.c: remove the_repo from resolve_relative_path()
      sha1-name.c: remove the_repo from get_oid_with_context_1()
      sha1-name.c: add repo_get_oid()
      submodule-config.c: use repo_get_oid for reading .gitmodules
      sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name
      sha1-name.c: remove the_repo from other get_oid_*
      sha1-name.c: remove the_repo from get_oid_mb()
      parse-options: don't emit "ambiguous option" for aliases
      submodule--helper: add a missing \n

Paul-Sebastian Ungureanu (17):
      sha1-name.c: add `get_oidf()` which acts like `get_oid()`
      strbuf.c: add `strbuf_join_argv()`
      strbuf.c: add `strbuf_insertf()` and `strbuf_vinsertf()`
      t3903: modernize style
      stash: rename test cases to be more descriptive
      stash: add tests for `git stash show` config
      stash: mention options in `show` synopsis
      stash: convert list to builtin
      stash: convert show to builtin
      stash: convert store to builtin
      stash: convert create to builtin
      stash: convert push to builtin
      stash: make push -q quiet
      stash: convert save to builtin
      stash: optimize `get_untracked_files()` and `check_changes()`
      stash: replace all `write-tree` child processes with API calls
      stash: convert `stash--helper.c` into `stash.c`

Philip Oakley (2):
      rerere doc: quote `rerere.enabled`
      describe doc: remove '7-char' abbreviation reference

Phillip Wood (21):
      am/cherry-pick/rebase/revert: document --rerere-autoupdate
      merge: tweak --rerere-autoupdate documentation
      sequencer: break some long lines
      cherry-pick: demonstrate option amnesia
      cherry-pick --continue: remember options
      commit/reset: try to clean up sequencer state
      fix cherry-pick/revert status after commit
      sequencer: fix cleanup with --signoff and -x
      sequencer.c: save and restore cleanup mode
      sequencer: always discard index after checkout
      rebase: don't translate trace strings
      rebase: rename write_basic_state()
      rebase: use OPT_RERERE_AUTOUPDATE()
      rebase -i: combine rebase--interactive.c with rebase.c
      rebase -i: remove duplication
      rebase -i: use struct commit when parsing options
      rebase -i: use struct object_id for squash_onto
      rebase -i: use struct rebase_options to parse args
      rebase -i: use struct rebase_options in do_interactive_rebase()
      rebase: use a common action enum
      rebase -i: run without forking rebase--interactive

Ramsay Jones (2):
      prune-packed: check for too many arguments
      Makefile: fix 'hdr-check' when GCRYPT not installed

René Scharfe (1):
      get-tar-commit-id: parse comment record

Robert P. J. Day (3):
      mention use of "hooks.allownonascii" in "man githooks"
      docs/git-gc: fix typo "--prune=all" to "--prune=now"
      attr.c: ".gitattribute" -> ".gitattributes" (comments)

Rohit Ashiwal (3):
      test functions: add function `test_file_not_empty`
      t3600: modernize style
      t3600: use helpers to replace test -d/f/e/s <path>

SZEDER Gábor (24):
      test-lib: fix interrupt handling with 'dash' and '--verbose-log -x'
      t/lib-git-daemon: make sure to kill the 'git-daemon' process
      tests: use 'test_atexit' to stop httpd
      t0301-credential-cache: use 'test_atexit' to stop the credentials helper
      git p4 test: clean up the p4d cleanup functions
      git p4 test: simplify timeout handling
      git p4 test: disable '-x' tracing in the p4d watchdog loop
      t9811-git-p4-label-import: fix pipeline negation
      t5318-commit-graph: remove unused variable
      Documentation/git-diff-tree.txt: fix formatting
      Documentation/technical/api-config.txt: fix formatting
      Documentation/technical/protocol-v2.txt: fix formatting
      ci: install Asciidoctor in 'ci/install-dependencies.sh'
      index-pack: show progress while checking objects
      ci: stick with Asciidoctor v1.5.8 for now
      ci: fix AsciiDoc/Asciidoctor stderr check in the documentation build job
      progress: make display_progress() return void
      progress: assemble percentage and counters in a strbuf before printing
      blame: default to HEAD in a bare repo when no start commit is given
      builtin rebase: use FREE_AND_NULL
      builtin rebase: use oideq()
      progress: clear previous progress update dynamically
      progress: break too long progress bar lines
      ci: install 'libsvn-perl' instead of 'git-svn'

Sun Chao (2):
      pack-redundant: delete redundant code
      pack-redundant: new algorithm to find min packs

Sven Strickroth (1):
      MSVC: include compat/win32/path-utils.h for MSVC, too, for real_path()

Tanushree Tumane (1):
      mingw: remove obsolete IPv6-related code

Taylor Blau (4):
      t: move 'hex2oct' into test-lib-functions.sh
      t: introduce tests for unexpected object types
      list-objects.c: handle unexpected non-blob entries
      list-objects.c: handle unexpected non-tree entries

Thomas Gummerer (15):
      move worktree tests to t24*
      entry: factor out unlink_entry function
      entry: support CE_WT_REMOVE flag in checkout_entry
      read-cache: add invalidate parameter to remove_marked_cache_entries
      checkout: clarify comment
      checkout: factor out mark_cache_entry_for_checkout function
      checkout: introduce --{,no-}overlay option
      checkout: introduce checkout.overlayMode config
      revert "checkout: introduce checkout.overlayMode config"
      ident: don't require calling prepare_fallback_ident first
      stash: drop unused parameter
      stash: pass pathspec as pointer
      glossary: add definition for overlay
      stash: setup default diff output format if necessary
      ls-files: use correct format string

Todd Zullinger (8):
      t4038-diff-combined: quote paths with whitespace
      t9902: test multiple removals via completion.commands
      completion: use __git when calling --list-cmds
      Documentation/rev-list-options: wrap --date=<format> block with "--"
      Documentation/git-status: fix titles in porcelain v2 section
      Documentation/git-svn: improve asciidoctor compatibility
      Documentation/git-show-branch: avoid literal {apostrophe}
      test-lib: try harder to ensure a working jgit

Torsten Bögershausen (1):
      trace2: NULL is not allowed for va_list

Trần Ngọc Quân (1):
      l10n: Updated Vietnamese translation for v2.21 rd2

Vadim Kochan (1):
      autoconf: #include <libintl.h> when checking for gettext()

William Hubbs (1):
      config: allow giving separate author and committer idents

Yash Bhatambare (1):
      gitattributes.txt: fix typo

brian m. carlson (35):
      t/lib-submodule-update: use appropriate length constant
      khash: move oid hash table definition
      pack-bitmap: make bitmap header handling hash agnostic
      pack-bitmap: convert struct stored_bitmap to object_id
      pack-bitmap: replace sha1_to_hex
      pack-bitmap: switch hard-coded constants to the_hash_algo
      pack-bitmap: switch hash tables to use struct object_id
      submodule: avoid hard-coded constants
      notes-merge: switch to use the_hash_algo
      notes: make hash size independent
      notes: replace sha1_to_hex
      object-store: rename and expand packed_git's sha1 member
      builtin/name-rev: make hash-size independent
      fast-import: make hash-size independent
      fast-import: replace sha1_to_hex
      builtin/am: make hash size independent
      builtin/pull: make hash-size independent
      http-push: convert to use the_hash_algo
      http-backend: allow 64-character hex names
      http-push: remove remaining uses of sha1_to_hex
      http-walker: replace sha1_to_hex
      http: replace hard-coded constant with the_hash_algo
      http: compute hash of downloaded objects using the_hash_algo
      http: replace sha1_to_hex
      remote-curl: make hash size independent
      hash: add a function to lookup hash algorithm by length
      builtin/get-tar-commit-id: make hash size independent
      archive: convert struct archiver_args to object_id
      refspec: make hash size independent
      builtin/difftool: use parse_oid_hex
      dir: make untracked cache extension hash size independent
      read-cache: read data in a hash-independent way
      Git.pm: make hash size independent
      gitweb: make hash size independent
      send-email: default to quoted-printable when CR is present

Ævar Arnfjörð Bjarmason (44):
      receive-pack: fix use-after-free bug
      commit-graph tests: split up corrupt_graph_and_verify()
      commit-graph tests: test a graph that's too small
      Makefile: remove an out-of-date comment
      Makefile: move "strip" assignment down from flags
      Makefile: add/remove comments at top and tweak whitespace
      Makefile: Move *_LIBS assignment into its own section
      Makefile: move the setting of *FLAGS closer to "include"
      Makefile: allow for combining DEVELOPER=1 and CFLAGS="..."
      gc: remove redundant check for gc_auto_threshold
      gc: convert to using the_hash_algo
      gc: refactor a "call me once" pattern
      reflog tests: make use of "test_config" idiom
      reflog tests: test for the "points nowhere" warning
      rebase: remove the rebase.useBuiltin setting
      gc docs: modernize the advice for manually running "gc"
      gc docs: stop noting "repack" flags
      gc docs: clean grammar for "gc.bigPackThreshold"
      commit-graph: fix segfault on e.g. "git status"
      commit-graph: don't early exit(1) on e.g. "git status"
      commit-graph: don't pass filename to load_commit_graph_one_fd_st()
      commit-graph verify: detect inability to read the graph
      commit-graph write: don't die if the existing graph is corrupt
      commit-graph: improve & i18n error messages
      reflog tests: assert lack of early exit with expiry="never"
      gc: handle & check gc.reflogExpire config
      test-lib: whitelist GIT_TR2_* in the environment
      gc docs: include the "gc.*" section from "config" in "gc"
      gc docs: re-flow the "gc.*" section in "config"
      gc docs: fix formatting for "gc.writeCommitGraph"
      gc docs: note how --aggressive impacts --window & --depth
      gc docs: downplay the usefulness of --aggressive
      gc docs: note "gc --aggressive" in "fast-import"
      gc docs: clarify that "gc" doesn't throw away referenced objects
      gc docs: remove incorrect reference to gc.auto=0
      perf README: correct docs for 3c8f12c96c regression
      perf aggregate: remove GIT_TEST_INSTALLED from --codespeed
      perf-lib.sh: make "./run <revisions>" use the correct gits
      perf-lib.sh: remove GIT_TEST_INSTALLED from perf-lib.sh
      perf tests: add "bindir" prefix to git tree test results
      perf-lib.sh: forbid the use of GIT_TEST_INSTALLED
      trace2: fix up a missing "leave" entry point
      trace2: fix up a missing "leave" entry point
      sha1dc: update from upstream

İsmail Dönmez (2):
      mingw: do not let ld strip relocations
      mingw: enable DEP and ASLR


^ permalink raw reply	[relevance 2%]

* Re: [PATCH v10 00/10] Fix scissors bug during conflict
  @ 2019-04-18  9:14  5%     ` Phillip Wood
  0 siblings, 0 replies; 162+ results
From: Phillip Wood @ 2019-04-18  9:14 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Denton Liu, Git Mailing List, Eric Sunshine, Ramsay Jones,
	SZEDER Gábor, Phillip Wood

On 18/04/2019 06:19, Junio C Hamano wrote:
> Phillip Wood <phillip.wood123@gmail.com> writes:
> 
>> From: Phillip Wood <phillip.wood@dunelm.org.uk>
>>
>> With Denton's blessing I've rebased his patches on top of my patch to
>> fix the message cleanup with cherry-pick --signoff and -x [1]. I've

Note that the base is a merge of that patch (which is based on maint) 
with 041f5ea1cf ("The third batch", 2019-03-20)

>> [1] https://public-inbox.org/git/20190329110842.30604-1-phillip.wood123@gmail.com/
> 
> Hmph, I certainly saw that patch, but I do not recall seeing any
> in-depth review of it.  How ready is it?  Was it because it was
> trivially obvious that we didn't see much activity on the patch?

I think it is ready (it's a fairly simple change). Dscho said he was 
happy with it [1].

[1] 
https://public-inbox.org/git/nycvar.QRO.7.76.6.1903291651340.41@tvgsbejvaqbjf.bet/

Best Wishes

Phillip

^ permalink raw reply	[relevance 5%]

* Re: [PATCH v3 0/4] rebase: teach rebase --keep-base
  @ 2019-04-13 21:10  7%       ` Ævar Arnfjörð Bjarmason
  0 siblings, 0 replies; 162+ results
From: Ævar Arnfjörð Bjarmason @ 2019-04-13 21:10 UTC (permalink / raw)
  To: Denton Liu
  Cc: Git Mailing List, Eric Sunshine, Junio C Hamano,
	Johannes Schindelin


On Sat, Apr 06 2019, Denton Liu wrote:

> On Sat, Apr 06, 2019 at 09:44:49PM +0200, Ævar Arnfjörð Bjarmason wrote:
>>
>> On Mon, Apr 01 2019, Denton Liu wrote:
>>
>> > Thanks again for your feedback, Ævar! I think we're both on the same page now.
>> > Hopefully I've addressed all of your high-level concerns with this patchset and
>> > we can move into a discussion on implementation detail.
>>
>> Late in replying to this, have been off-list. This also applies for your
>> v4.
>>
>> The current version you have still doesn't explain the "Why would we
>> redundantly rebase every time in this case..." question I had in
>> https://public-inbox.org/git/87tvfma8yt.fsf@evledraar.gmail.com/
>>
>> I *think* it's closer to "it was easier to implement this in terms of
>> --onto, which happens to behave that way now" than "it must work this
>> way for --keep-base", which is fair enough.
>
> Correct, the reason why --keep-base was not lazy initially was because
> "--onto did it that way". You are correct in that --keep-base should be
> lazily rebasing so I changed --onto's behaviour in 3/4 because it would
> also benefit from laziness. Thus, now --keep-base lazily rebases because
> --onto also does.
>
>>
>> Although I see when I forward-port my POC patch from that E-Mail that
>> one test fails now, which is good, that wasn't the case before, but it
>> looks like that might be testing something else than just the lazy
>> behavior.
>
> The test fails because the patch disables fork_point if --keep-base is
> set. So, with the patch applied, C is rebased even though it is excluded
> when fork_point is set.
>
>>
>> It would be good to know in terms of commit message or (better) explicit
>> tests so that if we teach these various rebase modes the same lazyness
>> --fork-point uses in the future it's clear if that's OK or not.
>
> Sorry, could you please clarify what you mean by the "lazyness
> --fork-point uses"? I don't understand what laziness is introduced by
> using --fork-point. Also, are the tests in t3432 not sufficient for
> testing fast-forwarding (aka lazy) behaviour?

Late reply, sorry. I mean if I do e.g. on git.git:

    git checkout -b avar/test 041f5ea1cf

I.e. branch of Junio's "The third batch" (we're now on the 4th) and
then:

    git branch --set-upstream-to origin/master

And commit a dummy change, I'm now:

    On branch avar/test
    Your branch and 'origin/master' have diverged,
    and have 1 and 33 different commits each, respectively.

Then I run a --keep-base rebase twice:

    $ git log --oneline --no-decorate -2; ~/g/git/git --exec-path=$PWD rebase --keep-base; git rev-parse HEAD
    fc3e916c5f foo
    041f5ea1cf The third batch
    First, rewinding head to replay your work on top of it...
    Applying: foo
    b10e672074dfee6b6e8b2901c9bb49f856a13708
    $ git log --oneline --no-decorate -2; ~/g/git/git --exec-path=$PWD rebase --keep-base; git rev-parse HEAD
    b10e672074 foo
    041f5ea1cf The third batch
    First, rewinding head to replay your work on top of it...
    Applying: foo
    fd3029e73b89f5a799653ff17199d00f2a6ee2e2

I.e. I'll keep on getting a new commit, even though by any criteria I
can think of for this type of case there's no work to do. I.e. we're
already based on 041f5ea1cf, no need to rebase again.

Of course this is also currently the case with --fork-point without
argument, which'll settle on (note fourth, not third):

    $ git log --oneline --no-decorate -2; ~/g/git/git --exec-path=$PWD rebase --fork-point; git rev-parse HEAD
    85a1861cec foo
    e35b8cb8e2 The fourth batch
    First, rewinding head to replay your work on top of it...
    Applying: foo
    c6046e97af29d71bf6270080acf188c095e0cb7c
    $ git log --oneline --no-decorate -2; ~/g/git/git --exec-path=$PWD rebase --fork-point; git rev-parse HEAD
    c6046e97af foo
    e35b8cb8e2 The fourth batch
    First, rewinding head to replay your work on top of it...
    Applying: foo
    672d22d58e9aa9b6a28054531c21e1f1b598b013

Whereas a --keep-base in *this* case should be identical to:

    $ git log --oneline --no-decorate -2; ~/g/git/git --exec-path=$PWD rebase $(git merge-base --fork-point origin/master HEAD); git rev-parse HEAD
    fc3e916c5f foo
    041f5ea1cf The third batch
    Current branch avar/test is up to date.
    fc3e916c5fc707cfc83f28b3faca81046306b305

The reason I'm asking is that as noted in the thread starting at
https://public-inbox.org/git/20190224101029.GA13438@sigill.intra.peff.net/
we used to in *some* cases do the same for:

    rebase $(git merge-base --fork-point origin/master HEAD)

As for just:

    rebase --fork-point

I.e. say "Current branch is up-to-date". I'm planning to loop back to
that and fix it for the --fork-point case. So I was wondering if you
could think of a reason for why --keep-base couldn't also do the same,
or if there was some intrinsic difference I'm missing.

Anyway. Don't worry about it. When I poke at it it'll likely shake out
of the respective tests.

I was just wondering if you having looked at many of the same things
recently could understand my ramblings and knew if this was a case of
"yup, we could add a bit more to that can_fast_forward(...) case and
make it lazy too", or "no, --keep-base is special for reasons you're
missing...".

^ permalink raw reply	[relevance 7%]

* [PATCH 0/3] fix dumb-http fetch with alternates
  2019-03-23  8:53  0%             ` Jeff King
@ 2019-03-24 12:07  0%               ` Jeff King
  0 siblings, 0 replies; 162+ results
From: Jeff King @ 2019-03-24 12:07 UTC (permalink / raw)
  To: Eric Wong
  Cc: Wolfgang Denk, Heinrich Schuchardt, git, Junio C Hamano,
	Takahiro Akashi

On Sat, Mar 23, 2019 at 04:53:41AM -0400, Jeff King wrote:

> On Fri, Mar 22, 2019 at 04:50:34PM +0000, Eric Wong wrote:
> 
> > > Weird. I had set http.maxrequests to "1" to give more readable output
> > > from GIT_CURL_VERBOSE, etc. It fails with that setting, but not with the
> > > default of 5. Which certainly seems like a bug, but one that has been
> > > there for a while (at least since v2.9.x, which I tested).
> > 
> > I couldn't reproduce an error after porting your patch to
> > master (commit 041f5ea1cf987a40 "The third batch"):
> > https://80x24.org/spew/20190322163449.25362-1-e@80x24.org/raw
> > 
> > So you might've hit an ephemeral error (bad connection,
> > HTTP server restarting, etc).
> 
> No, it was quite reproducible. Curious, I decided to bisect. The problem
> started in ad75ebe5b3 (http: maintain curl sessions, 2009-11-27), but
> was later fixed by your 2abc848d54 (http: always remove curl easy from
> curlm session on release, 2016-09-13).
> 
> So trying to build the fix directly on 17966c0a63d (which is in between
> those) will run into this unrelated bug. But forward-porting does work.

Here's the patch, forward-ported on top of the current master, with
actual commit messages, a test, and a few subtle tweaks around the
curl_errorstr handling.

  [1/3]: http: factor out curl result code normalization
  [2/3]: http: normalize curl results for dumb loose and alternates fetches
  [3/3]: http: use normalize_curl_result() instead of manual conversion

 http-walker.c              | 21 ++++++++++-----------
 http.c                     | 18 ++++++++++++------
 http.h                     |  9 +++++++++
 t/t5550-http-fetch-dumb.sh | 16 ++++++++++++++++
 4 files changed, 47 insertions(+), 17 deletions(-)

^ permalink raw reply	[relevance 0%]

* Re: [BUG] Cloning with git HEAD fails for some repositories
  2019-03-22 16:50  5%           ` Eric Wong
  2019-03-22 17:42  0%             ` Heinrich Schuchardt
@ 2019-03-23  8:53  0%             ` Jeff King
  2019-03-24 12:07  0%               ` [PATCH 0/3] fix dumb-http fetch with alternates Jeff King
  1 sibling, 1 reply; 162+ results
From: Jeff King @ 2019-03-23  8:53 UTC (permalink / raw)
  To: Eric Wong
  Cc: Wolfgang Denk, Heinrich Schuchardt, git, Junio C Hamano,
	Takahiro Akashi

On Fri, Mar 22, 2019 at 04:50:34PM +0000, Eric Wong wrote:

> > Weird. I had set http.maxrequests to "1" to give more readable output
> > from GIT_CURL_VERBOSE, etc. It fails with that setting, but not with the
> > default of 5. Which certainly seems like a bug, but one that has been
> > there for a while (at least since v2.9.x, which I tested).
> 
> I couldn't reproduce an error after porting your patch to
> master (commit 041f5ea1cf987a40 "The third batch"):
> https://80x24.org/spew/20190322163449.25362-1-e@80x24.org/raw
> 
> So you might've hit an ephemeral error (bad connection,
> HTTP server restarting, etc).

No, it was quite reproducible. Curious, I decided to bisect. The problem
started in ad75ebe5b3 (http: maintain curl sessions, 2009-11-27), but
was later fixed by your 2abc848d54 (http: always remove curl easy from
curlm session on release, 2016-09-13).

So trying to build the fix directly on 17966c0a63d (which is in between
those) will run into this unrelated bug. But forward-porting does work.

-Peff

^ permalink raw reply	[relevance 0%]

* Re: [BUG] Cloning with git HEAD fails for some repositories
  2019-03-22 18:09  0%               ` Eric Wong
@ 2019-03-22 18:41  0%                 ` Heinrich Schuchardt
  0 siblings, 0 replies; 162+ results
From: Heinrich Schuchardt @ 2019-03-22 18:41 UTC (permalink / raw)
  To: Eric Wong; +Cc: Jeff King, Wolfgang Denk, git, Junio C Hamano, Takahiro Akashi

On 3/22/19 7:09 PM, Eric Wong wrote:
> Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>> On 3/22/19 5:50 PM, Eric Wong wrote:
>>> I couldn't reproduce an error after porting your patch to
>>> master (commit 041f5ea1cf987a40 "The third batch"):
>>> https://80x24.org/spew/20190322163449.25362-1-e@80x24.org/raw
>>>
>>> So you might've hit an ephemeral error (bad connection,
>>> HTTP server restarting, etc).
>>>
>>> GIT_CURL_VERBOSE=1 git \
>>> 	-c http.maxRequests=1 -c http.followRedirects=true clone \
>>> 	http://git.denx.de/u-boot-efi.git
>>>
>>
>> I applied the patch to https://github.com/git/git origin/HEAD.
>>
>> But unfortunately it does not solve the issue:
>>
>> $ git --version
>> git version 2.21.0.197.g3845f293e6
>> $ git clone http://git.denx.de/u-boot-efi.git
>> Cloning into 'u-boot-efi'...
>> warning: alternate disabled by http.followRedirects:
>
> It looks like you need to enable http.followRedirects
> (see the command-line I used above)
>
>> http://git.denx.de/u-boot.git/
>> error: Unable to find a00d15757d7a513e410f15f2f910cb52333361a3 under
>> http://git.denx.de/u-boot-efi.git
>> Cannot obtain needed object a00d15757d7a513e410f15f2f910cb52333361a3
>> error: fetch failed.
>>
>> In Wireshark I see a lot of '404 Not found' codes.
>

Yes, git HEAD + said patch works with this command:
git -c http.followRedirects=true clone http://git.denx.de/u-boot-efi.git

http.followRedirects is documented in man 1 git-config.

Why would git prior to  17966c0a63d25b1cc2dd1e98d30873e643bd581f~1 work
without this redirect parameter?

That following redirects is not secure is already described in
https://github.com/git/git/blob/master/Documentation/RelNotes/2.12.3.txt

Best regards

Heinrich

^ permalink raw reply	[relevance 0%]

* Re: [BUG] Cloning with git HEAD fails for some repositories
  2019-03-22 17:42  0%             ` Heinrich Schuchardt
@ 2019-03-22 18:09  0%               ` Eric Wong
  2019-03-22 18:41  0%                 ` Heinrich Schuchardt
  0 siblings, 1 reply; 162+ results
From: Eric Wong @ 2019-03-22 18:09 UTC (permalink / raw)
  To: Heinrich Schuchardt
  Cc: Jeff King, Wolfgang Denk, git, Junio C Hamano, Takahiro Akashi

Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> On 3/22/19 5:50 PM, Eric Wong wrote:
> > I couldn't reproduce an error after porting your patch to
> > master (commit 041f5ea1cf987a40 "The third batch"):
> > https://80x24.org/spew/20190322163449.25362-1-e@80x24.org/raw
> >
> > So you might've hit an ephemeral error (bad connection,
> > HTTP server restarting, etc).
> >
> > GIT_CURL_VERBOSE=1 git \
> > 	-c http.maxRequests=1 -c http.followRedirects=true clone \
> > 	http://git.denx.de/u-boot-efi.git
> >
> 
> I applied the patch to https://github.com/git/git origin/HEAD.
> 
> But unfortunately it does not solve the issue:
> 
> $ git --version
> git version 2.21.0.197.g3845f293e6
> $ git clone http://git.denx.de/u-boot-efi.git
> Cloning into 'u-boot-efi'...
> warning: alternate disabled by http.followRedirects:

It looks like you need to enable http.followRedirects
(see the command-line I used above)

> http://git.denx.de/u-boot.git/
> error: Unable to find a00d15757d7a513e410f15f2f910cb52333361a3 under
> http://git.denx.de/u-boot-efi.git
> Cannot obtain needed object a00d15757d7a513e410f15f2f910cb52333361a3
> error: fetch failed.
> 
> In Wireshark I see a lot of '404 Not found' codes.

^ permalink raw reply	[relevance 0%]

* Re: [BUG] Cloning with git HEAD fails for some repositories
  2019-03-22 16:50  5%           ` Eric Wong
@ 2019-03-22 17:42  0%             ` Heinrich Schuchardt
  2019-03-22 18:09  0%               ` Eric Wong
  2019-03-23  8:53  0%             ` Jeff King
  1 sibling, 1 reply; 162+ results
From: Heinrich Schuchardt @ 2019-03-22 17:42 UTC (permalink / raw)
  To: Eric Wong, Jeff King; +Cc: Wolfgang Denk, git, Junio C Hamano, Takahiro Akashi

On 3/22/19 5:50 PM, Eric Wong wrote:
> Jeff King <peff@peff.net> wrote:
>> On Fri, Mar 22, 2019 at 09:21:14AM +0100, Wolfgang Denk wrote:
>>
>>> Dear Jeff,
>>>
>>> In message <20190322071231.GA26114@sigill.intra.peff.net> you wrote:
>>>>
>>>> However, so does the parent of 17966c0a63d. So I don't know if the
>>>> u-boot-efi repo is just broken, or if there's some other different bug
>>>> at play.
>>>
>>> git fsck reports a number of dangling tags, but no other issues:
>>
>> Weird. I had set http.maxrequests to "1" to give more readable output
>> from GIT_CURL_VERBOSE, etc. It fails with that setting, but not with the
>> default of 5. Which certainly seems like a bug, but one that has been
>> there for a while (at least since v2.9.x, which I tested).
>
> I couldn't reproduce an error after porting your patch to
> master (commit 041f5ea1cf987a40 "The third batch"):
> https://80x24.org/spew/20190322163449.25362-1-e@80x24.org/raw
>
> So you might've hit an ephemeral error (bad connection,
> HTTP server restarting, etc).
>
> GIT_CURL_VERBOSE=1 git \
> 	-c http.maxRequests=1 -c http.followRedirects=true clone \
> 	http://git.denx.de/u-boot-efi.git
>

I applied the patch to https://github.com/git/git origin/HEAD.

But unfortunately it does not solve the issue:

$ git --version
git version 2.21.0.197.g3845f293e6
$ git clone http://git.denx.de/u-boot-efi.git
Cloning into 'u-boot-efi'...
warning: alternate disabled by http.followRedirects:
http://git.denx.de/u-boot.git/
error: Unable to find a00d15757d7a513e410f15f2f910cb52333361a3 under
http://git.denx.de/u-boot-efi.git
Cannot obtain needed object a00d15757d7a513e410f15f2f910cb52333361a3
error: fetch failed.

In Wireshark I see a lot of '404 Not found' codes.

Best regards

Heinrich

^ permalink raw reply	[relevance 0%]

* Re: [BUG] Cloning with git HEAD fails for some repositories
  @ 2019-03-22 16:50  5%           ` Eric Wong
  2019-03-22 17:42  0%             ` Heinrich Schuchardt
  2019-03-23  8:53  0%             ` Jeff King
  0 siblings, 2 replies; 162+ results
From: Eric Wong @ 2019-03-22 16:50 UTC (permalink / raw)
  To: Jeff King
  Cc: Wolfgang Denk, Heinrich Schuchardt, git, Junio C Hamano,
	Takahiro Akashi

Jeff King <peff@peff.net> wrote:
> On Fri, Mar 22, 2019 at 09:21:14AM +0100, Wolfgang Denk wrote:
> 
> > Dear Jeff,
> > 
> > In message <20190322071231.GA26114@sigill.intra.peff.net> you wrote:
> > >
> > > However, so does the parent of 17966c0a63d. So I don't know if the
> > > u-boot-efi repo is just broken, or if there's some other different bug
> > > at play.
> > 
> > git fsck reports a number of dangling tags, but no other issues:
> 
> Weird. I had set http.maxrequests to "1" to give more readable output
> from GIT_CURL_VERBOSE, etc. It fails with that setting, but not with the
> default of 5. Which certainly seems like a bug, but one that has been
> there for a while (at least since v2.9.x, which I tested).

I couldn't reproduce an error after porting your patch to
master (commit 041f5ea1cf987a40 "The third batch"):
https://80x24.org/spew/20190322163449.25362-1-e@80x24.org/raw

So you might've hit an ephemeral error (bad connection,
HTTP server restarting, etc).

GIT_CURL_VERBOSE=1 git \
	-c http.maxRequests=1 -c http.followRedirects=true clone \
	http://git.denx.de/u-boot-efi.git

^ permalink raw reply	[relevance 5%]

* What's cooking in git.git (Jan 2019, #03; Fri, 18)
@ 2019-01-18 23:20  1% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2019-01-18 23:20 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

A handful of topics graduated to 'master' as the third batch after
spending about a week or so in 'next', and another group of topics
are now in 'next' for their turn.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* cy/completion-typofix (2019-01-03) 1 commit
  (merged to 'next' on 2019-01-08 at 6c6f01a07d)
 + completion: fix typo in git-completion.bash

 Typofix.


* cy/zsh-completion-SP-in-path (2019-01-03) 2 commits
  (merged to 'next' on 2019-01-08 at fee27de30b)
 + completion: treat results of git ls-tree as file paths
 + zsh: complete unquoted paths with spaces correctly

 With zsh, "git cmd path<TAB>" was completed to "git cmd path name"
 when the completed path has a special character like SP in it,
 without any attempt to keep "path name" a single filename.  This
 has been fixed to complete it to "git cmd path\ name" just like
 Bash completion does.


* ds/commit-graph-assert-missing-parents (2019-01-02) 1 commit
  (merged to 'next' on 2019-01-08 at d141f063e0)
 + commit-graph: writing missing parents is a BUG

 Tightening error checking in commit-graph writer.


* ds/gc-doc-typofix (2019-01-08) 1 commit
  (merged to 'next' on 2019-01-08 at f21ffc83e0)
 + git-gc.txt: fix typo about gc.writeCommitGraph

 Typofix.


* ed/simplify-setup-git-dir (2019-01-03) 1 commit
  (merged to 'next' on 2019-01-08 at 8722c7c2ef)
 + Simplify handling of setup_git_directory_gently() failure cases.

 Code simplification.


* en/show-ref-doc-fix (2019-01-10) 1 commit
  (merged to 'next' on 2019-01-14 at f875bfb9a4)
 + git-show-ref.txt: fix order of flags

 Doc update.


* es/doc-worktree-guessremote-config (2018-12-28) 1 commit
  (merged to 'next' on 2019-01-08 at f1dc5e39a6)
 + doc/config: do a better job of introducing 'worktree.guessRemote'

 Doc clarification.


* ew/ban-strncat (2019-01-02) 1 commit
  (merged to 'next' on 2019-01-08 at 3bba2ae2bb)
 + banned.h: mark strncat() as banned

 The "strncat()" function is now among the banned functions.


* jk/dev-build-format-security (2019-01-07) 1 commit
  (merged to 'next' on 2019-01-08 at 3761ab7026)
 + config.mak.dev: add -Wall, primarily for -Wformat, to help autoconf users

 Earlier we added "-Wformat-security" to developer builds, assuming
 that "-Wall" (which includes "-Wformat" which in turn is required
 to use "-Wformat-security") is always in effect.  This is not true
 when config.mak.autogen is in use, unfortunately.  This has been
 fixed by unconditionally adding "-Wall" to developer builds.


* jn/stripspace-wo-repository (2018-12-26) 1 commit
  (merged to 'next' on 2019-01-08 at 81815821c9)
 + stripspace: allow -s/-c outside git repository

 "git stripspace" should be usable outside a git repository, but
 under the "-s" or "-c" mode, it didn't.


* js/gc-repack-close-before-remove (2019-01-11) 1 commit
  (merged to 'next' on 2019-01-14 at 9daedfee40)
 + gc/repack: release packs when needed

 "git gc" and "git repack" did not close the open packfiles that
 they found unneeded before removing them, which didn't work on a
 platform incapable of removing an open file.  This has been
 corrected.


* la/quiltimport-keep-non-patch (2019-01-07) 1 commit
  (merged to 'next' on 2019-01-08 at 37cb490792)
 + git-quiltimport: add --keep-non-patch option

 "git quiltimport" learned "--keep-non-patch" option.


* ma/asciidoctor (2018-12-26) 3 commits
  (merged to 'next' on 2019-01-08 at 3cfd4ad6cb)
 + git-status.txt: render tables correctly under Asciidoctor
 + Documentation: do not nest open blocks
 + git-column.txt: fix section header

 Some of the documentation pages formatted incorrectly with
 Asciidoctor, which have been fixed.


* mm/multimail-1.5 (2019-01-07) 1 commit
  (merged to 'next' on 2019-01-08 at 8c872af48e)
 + git-multimail: update to release 1.5.0

 Update "git multimail" from the upstream.


* nd/style-opening-brace (2018-12-10) 1 commit
  (merged to 'next' on 2019-01-08 at 80de026e14)
 + style: the opening '{' of a function is in a separate line

 Code clean-up.


* nd/worktree-remove-with-uninitialized-submodules (2019-01-07) 1 commit
  (merged to 'next' on 2019-01-08 at e19cfe8741)
 + worktree: allow to (re)move worktrees with uninitialized submodules

 "git worktree remove" and "git worktree move" refused to work when
 there is a submodule involved.  This has been loosened to ignore
 uninitialized submodules.


* ot/ref-filter-object-info (2019-01-10) 7 commits
  (merged to 'next' on 2019-01-10 at 9e740568ce)
 + ref-filter: give uintmax_t to format with %PRIuMAX
  (merged to 'next' on 2019-01-08 at 0a4d4ed36a)
 + ref-filter: add docs for new options
 + ref-filter: add tests for deltabase
 + ref-filter: add deltabase option
 + ref-filter: add tests for objectsize:disk
 + ref-filter: add check for negative file size
 + ref-filter: add objectsize:disk option

 The "--format=<placeholder>" option of for-each-ref, branch and tag
 learned to show a few more traits of objects that can be learned by
 the object_info API.


* po/git-p4-wo-login (2019-01-07) 1 commit
  (merged to 'next' on 2019-01-08 at a7cc58d6b9)
 + git-p4: fix problem when p4 login is not necessary

 "git p4" update.


* rb/hpe (2019-01-03) 5 commits
  (merged to 'next' on 2019-01-08 at 52d6995399)
 + compat/regex/regcomp.c: define intptr_t and uintptr_t on NonStop
 + git-compat-util.h: add FLOSS headers for HPE NonStop
 + config.mak.uname: support for modern HPE NonStop config.
 + transport-helper: drop read/write errno checks
 + transport-helper: use xread instead of read

 Portability updates for the HPE NonStop platform.


* rs/loose-object-cache-perffix (2019-01-08) 4 commits
  (merged to 'next' on 2019-01-08 at 36e355e099)
 + object-store: retire odb_load_loose_cache()
 + object-store: use one oid_array per subdirectory for loose cache
 + object-store: factor out odb_clear_loose_cache()
 + object-store: factor out odb_loose_cache()
 (this branch is used by jk/loose-object-cache-oid.)

 The loose object cache used to optimize existence look-up has been
 updated.


* rs/sha1-file-close-mapped-file-on-error (2019-01-07) 1 commit
  (merged to 'next' on 2019-01-08 at 5841cbc153)
 + sha1-file: close fd of empty file in map_sha1_file_1()

 Code clean-up.


* sb/submodule-fetchjobs-default-to-one (2018-12-14) 1 commit
  (merged to 'next' on 2019-01-08 at 97a522ef5e)
 + submodule update: run at most one fetch job unless otherwise set

 "git submodule update" ought to use a single job unless asked, but
 by mistake used multiple jobs, which has been fixed.


* sb/submodule-unset-core-worktree-when-worktree-is-lost (2018-12-26) 4 commits
  (merged to 'next' on 2019-01-08 at 38f3175a2b)
 + submodule deinit: unset core.worktree
 + submodule--helper: fix BUG message in ensure_core_worktree
 + submodule: unset core.worktree if no working tree is present
 + submodule update: add regression test with old style setups

 The core.worktree setting in a submodule repository should not be
 pointing at a directory when the submodule loses its working tree
 (e.g. getting deinit'ed), but the code did not properly maintain
 this invariant.


* sg/stress-test (2019-01-07) 8 commits
  (merged to 'next' on 2019-01-08 at 2a65cea5f9)
 + test-lib: add the '--stress' option to run a test repeatedly under load
 + test-lib-functions: introduce the 'test_set_port' helper function
 + test-lib: set $TRASH_DIRECTORY earlier
 + test-lib: consolidate naming of test-results paths
 + test-lib: parse command line options earlier
 + test-lib: parse options in a for loop to keep $@ intact
 + test-lib: extract Bash version check for '-x' tracing
 + test-lib: translate SIGTERM and SIGHUP to an exit
 (this branch uses sg/test-bash-version-fix.)

 Flaky tests can now be repeatedly run under load with the
 "--stress" option.


* sg/test-bash-version-fix (2019-01-03) 2 commits
  (merged to 'next' on 2019-01-08 at f83a0628a0)
 + Merge branch 'sg/test-bash-version-fix'
 + test-lib: check Bash version for '-x' without using shell arrays
 (this branch is used by sg/stress-test.)

 The test suite tried to see if it is run under bash, but the check
 itself failed under some other implementations of shell (notably
 under NetBSD).  This has been corrected.


* so/cherry-pick-always-allow-m1 (2019-01-07) 4 commits
  (merged to 'next' on 2019-01-08 at 2b790fec25)
 + t3506: validate '-m 1 -ff' is now accepted for non-merge commits
 + t3502: validate '-m 1' argument is now accepted for non-merge commits
 + cherry-pick: do not error on non-merge commits when '-m 1' is specified
 + t3510: stop using '-m 1' to force failure mid-sequence of cherry-picks

 "git cherry-pick -m1" was forbidden when picking a non-merge
 commit, even though there _is_ parent number 1 for such a commit.
 This was done to avoid mistakes back when "cherry-pick" was about
 picking a single commit, but is no longer useful with "cherry-pick"
 that can pick a range of commits.  Now the "-m$num" option is
 allowed when picking any commit, as long as $num names an existing
 parent of the commit.

 Technically this is a backward incompatible change; hopefully
 nobody is relying on the error-checking behaviour.


* tg/t5570-drop-racy-test (2019-01-07) 2 commits
  (merged to 'next' on 2019-01-08 at 9fc753bbdc)
 + Revert "t/lib-git-daemon: record daemon log"
 + t5570: drop racy test

 An inherently racy test that caused intermittent failures has been
 removed.

--------------------------------------------------
[New Topics]

* ab/commit-graph-write-optim (2019-01-17) 1 commit
 - commit-graph write: use pack order when finding commits
 (this branch uses ab/commit-graph-write-progress.)

 The codepath to write out commit-graph has been optimized by
 following the usual pattern of visiting objects in in-pack order.

 This is taken hostage of the other topic; it may be slightly better
 if the dependency were the other way around, to allow this to
 graduate faster without waiting for the other.

 Needs sign-off.


* ab/commit-graph-write-progress (2019-01-17) 9 commits
 - commit-graph write: emit a percentage for all progress
 - commit-graph write: add itermediate progress
 - commit-graph write: remove empty line for readability
 - commit-graph write: add more descriptive progress output
 - commit-graph write: show progress for object search
 - commit-graph write: more descriptive "writing out" output
 - commit-graph write: add "Writing out" progress output
 - commit-graph: don't call write_graph_chunk_large_edges() unnecessarily
 - commit-graph: rename 'num_extra_edges' variable to 'num_large_edges'
 (this branch is used by ab/commit-graph-write-optim.)

 The codepath to show progress meter while writing out commit-graph
 file has been improved.

 Proposed updates for the bottom two have been raised.
 cf. <20190118170549.30403-1-szeder.dev@gmail.com>


* cc/test-ref-store-typofix (2019-01-17) 1 commit
 - helper/test-ref-store: fix "new-sha1" vs "old-sha1" typo

 An obvious typo in an assersion error message has been fixed.

 Will merge to 'next'.


* jk/add-ignore-errors-bit-assignment-fix (2019-01-17) 1 commit
 - add: use separate ADD_CACHE_RENORMALIZE flag

 "git add --ignore-errors" did not work as advertised and instead
 worked as an unintended synonym for "git add --renormalize", which
 has been fixed.

 Will merge to 'next'.


* js/mingw-unc-path-w-backslashes (2019-01-18) 2 commits
 - mingw: special-case arguments to `sh`
 - mingw (t5580): document bug when cloning from backslashed UNC paths

 In Git for Windows, "git clone \\server\share\path" etc. that uses
 UNC paths from command line had bad interaction with its shell
 emulation.

 Will merge to 'next'.


* js/t6042-timing-fix (2019-01-17) 1 commit
 - t6042: work around speed optimization on Windows

 Test update.

 Will merge to 'next'.


* jt/namespaced-ls-refs-fix (2019-01-18) 1 commit
 - ls-refs: filter refs using namespace-stripped name

 Fix namespace support in protocol v2.

 Will merge to 'next'.


* bp/checkout-new-branch-optim (2019-01-18) 2 commits
 - checkout: fix regression in checkout -b on intitial checkout
 - checkout: add test to demonstrate regression with checkout -b on initial commit

 "git checkout -b <new> [HEAD]" to create a new branch from the
 current commit and check it out ought to be a no-op in the index
 and the working tree in normal cases, but there are corner cases
 that does require updates to the index and the working tree.
 Running it immediately after "git clone --no-checkout" is one of
 these cases that an earlier optimization kicked in incorrectly,
 which has been fixed.

 Seems to break an existing test...


* br/blame-ignore (2019-01-18) 3 commits
 - blame: add a config option to mark ignored lines
 - blame: add the ability to ignore commits and their changes
 - Move init_skiplist() outside of fsck

 "git blame" learned to "ignore" commits in the history, whose
 effects (as well as their presence) get ignored.


* js/abspath-part-inside-repo (2019-01-18) 1 commit
 - abspath_part_inside_repo: respect core.ignoreCase

 On a case-insensntive filesystem, we failed to compare the part of
 the path that is above the worktree directory in an absolute
 pathname, which has been corrected.

 Will merge to 'next'.


* nd/diff-parseopt (2019-01-18) 77 commits
 - SQUASH???
 - am: avoid diff_opt_parse()
 - diff --no-index: use parse_options() instead of diff_opt_parse()
 - range-diff: use parse_options() instead of diff_opt_parse()
 - diff.c: allow --no-color-moved-ws
 - diff.c: convert --color-moved-ws
 - diff.c: convert --color-moved
 - diff.c: convert --inter-hunk-context
 - diff.c: convert --no-prefix
 - diff.c: convert --line-prefix
 - diff.c: convert --[src|dst]-prefix
 - diff.c: convert --[no-]abbrev
 - diff.c: convert --diff-filter
 - diff.c: convert --find-object
 - diff.c: convert -O
 - diff.c: convert --pickaxe-all|--pickaxe-regex
 - diff.c: convert -S|-G
 - diff.c: convert -l
 - diff.c: convert -z
 - diff.c: convert --ita-[in]visible-in-index
 - diff.c: convert --ws-error-highlight
 - diff.c: convert --submodule
 - diff.c: convert --ignore-submodules
 - diff.c: convert --textconv
 - diff.c: convert --ext-diff
 - diff.c: convert --quiet
 - diff.c: convert --exit-code
 - diff.c: convert --color-words
 - diff.c: convert --word-diff-regex
 - diff.c: convert --word-diff
 - diff.c: convert --[no-]color
 - diff.c: convert --[no-]follow
 - diff.c: convert -R
 - diff.c: convert -a|--text
 - diff.c: convert --full-index
 - diff.c: convert --binary
 - diff.c: convert --anchored
 - diff.c: convert --diff-algorithm
 - diff.c: convert --histogram
 - diff.c: convert --patience
 - diff.c: convert --[no-]indent-heuristic
 - diff.c: convert --ignore-some-changes
 - diff.c: convert --[no-]minimal
 - diff.c: convert --relative
 - diff.c: convert --no-renames|--[no--rename-empty
 - diff.c: convert --find-copies-harder
 - diff.c: convert -C|--find-copies
 - diff.c: convert -D|--irreversible-delete
 - diff.c: convert -M|--find-renames
 - diff.c: convert -B|--break-rewrites
 - diff.c: convert --output-*
 - diff.c: convert --[no-]compact-summary
 - diff.c: convert --stat*
 - diff.c: convert -s|--no-patch
 - diff.c: convert --name-status
 - diff.c: convert --name-only
 - diff.c: convert --patch-with-stat
 - diff.c: convert --summary
 - diff.c: convert --check
 - diff.c: convert --dirstat and friends
 - diff.c: convert --numstat and --shortstat
 - diff.c: convert --patch-with-raw
 - diff.c: convert --raw
 - diff.c: convert -W|--[no-]function-context
 - diff.c: convert -U|--unified
 - diff.c: convert -u|-p|--patch
 - diff.c: prepare to use parse_options() for parsing
 - diff.h: avoid bit fields in struct diff_flags
 - diff.h: keep forward struct declarations sorted
 - parse-options: allow ll_callback with OPTION_CALLBACK
 - parse-options: avoid magic return codes
 - parse-options: stop abusing 'callback' for lowlevel callbacks
 - parse-options: add OPT_BITOP()
 - parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
 - parse-options: allow keep-unknown + stop-at-non-opt combination
 - parse-options: add one-shot mode
 - parse-options.h: remove extern on function prototypes

 The diff machinery, one of the oldest parts of the system, which
 long predates the parse-options API, uses fairly long and complex
 handcrafted option parser.  This has been rewritten to use the
 parse-options API.

--------------------------------------------------
[Cooking]

* sc/pack-redundant (2019-01-14) 5 commits
 - pack-redundant: consistent sort method
 - pack-redundant: rename pack_list.all_objects
 - pack-redundant: remove unused functions
 - pack-redundant: new algorithm to find min packs
 - t5323: test cases for git-pack-redundant

 Update the implementation of pack-redundant for performance in a
 repository with many packfiles.

 Comments?


* pw/diff-color-moved-ws-fix (2019-01-10) 9 commits
  (merged to 'next' on 2019-01-18 at e19713c82f)
 + diff --color-moved-ws: handle blank lines
 + diff --color-moved-ws: modify allow-indentation-change
 + diff --color-moved-ws: optimize allow-indentation-change
 + diff --color-moved=zebra: be stricter with color alternation
 + diff --color-moved-ws: fix false positives
 + diff --color-moved-ws: demonstrate false positives
 + diff: allow --no-color-moved-ws
 + Use "whitespace" consistently
 + diff: document --no-color-moved

 "git diff --color-moved-ws" updates.

 Will merge to 'master'.


* it/log-format-source (2019-01-11) 1 commit
  (merged to 'next' on 2019-01-18 at d660044e93)
 + log: add %S option (like --source) to log --format

 Custom userformat "log --format" learned %S atom that stands for
 the tip the traversal reached the commit from, i.e. --source.

 Will merge to 'master'.


* js/filter-options-should-use-plain-int (2019-01-15) 1 commit
  (merged to 'next' on 2019-01-18 at 6714547e6d)
 + filter-options: expand scaled numbers
 (this branch uses md/list-objects-filter-by-depth and sb/more-repo-in-api; is tangled with jt/get-reference-with-commit-graph.)

 Update the protocol message specification to allow only the limited
 use of scaled quantities.  This is ensure potential compatibility
 issues will not go out of hand.

 Will merge to 'master'.


* jt/upload-pack-deepen-relative-proto-v2 (2019-01-10) 2 commits
  (merged to 'next' on 2019-01-18 at 1483ad21db)
 + upload-pack: teach deepen-relative in protocol v2
 + fetch-pack: do not take shallow lock unnecessarily

 "git fetch --deepen=<more>" has been corrected to work over v2
 protocol.

 Will merge to 'master'.


* nd/config-move-to (2019-01-14) 7 commits
 - config.h: fix hdr-check warnings
 - config: add --move-to
 - config: factor out set_config_source_file()
 - config: use OPT_FILENAME()
 - config.c: add repo_config_set_worktree_gently()
 - worktree.c: add get_worktree_config()
 - config.c: avoid git_path() in do_git_config_sequence()

 Needs review.


* sg/travis-specific-cc (2019-01-17) 4 commits
 - travis-ci: build with the right compiler
 - travis-ci: switch to Xcode 10.1 macOS image
 - travis-ci: don't be '--quiet' when running the tests
 - .gitignore: ignore external debug symbols from GCC on macOS

 The travis CI scripts have been corrected to build Git with the
 compiler(s) of our choice.

 Will merge to 'next'.


* sg/obstack-cast-function-type-fix (2019-01-17) 1 commit
 - compat/obstack: fix -Wcast-function-type warnings

 The compat/obstack code had casts that -Wcast-function-type
 compilation option found questionable.

 Will merge to 'next'.


* cc/fetch-error-message-fix (2019-01-14) 1 commit
  (merged to 'next' on 2019-01-14 at 81078f86c0)
 + fetch: fix extensions.partialclone name in error message

 Error message fix.

 Will merge to 'master'.


* cc/parial-clone-doc-typofix (2019-01-14) 1 commit
  (merged to 'next' on 2019-01-14 at 0395de767e)
 + partial-clone: add missing 'is' in doc

 Doc fix.

 Will merge to 'master'.


* jk/remote-insteadof-cleanup (2019-01-11) 1 commit
  (merged to 'next' on 2019-01-18 at 112c93eef3)
 + remote: check config validity before creating rewrite struct

 Code clean-up.

 Will merge to 'master'.


* jk/save-getenv-result (2019-01-11) 6 commits
  (merged to 'next' on 2019-01-18 at 429c77402a)
 + builtin_diff(): read $GIT_DIFF_OPTS closer to use
 + merge-recursive: copy $GITHEAD strings
 + init: make a copy of $GIT_DIR string
 + config: make a copy of $GIT_CONFIG string
 + commit: copy saved getenv() result
 + get_super_prefix(): copy getenv() result

 There were many places the code relied on the string returned from
 getenv() to be non-volatile, which is not true, that have been
 corrected.

 Will merge to 'master'.


* jt/fetch-v2-sideband (2019-01-17) 5 commits
 - tests: define GIT_TEST_SIDEBAND_ALL
 - {fetch,upload}-pack: sideband v2 fetch response
 - sideband: reverse its dependency on pkt-line
 - pkt-line: introduce struct packet_writer
 - Merge branch 'ms/packet-err-check' into jt/fetch-v2-sideband
 (this branch uses ms/packet-err-check.)

 "git fetch" and "git upload-pack" learned to send all exchange over
 the sideband channel while talking the v2 protocol.

 Will merge to 'next'.


* kg/external-diff-save-env (2019-01-11) 1 commit
  (merged to 'next' on 2019-01-14 at 8281bbd48b)
 + diff: ensure correct lifetime of external_diff_cmd

 The code to drive GIT_EXTERNAL_DIFF command relied on the string
 returned from getenv() to be non-volatile, which is not true, that
 has been corrected.

 Will merge to 'master'.


* ld/git-p4-shelve-update-fix (2019-01-18) 2 commits
 - git-p4: handle update of moved/copied files when updating a shelve
 - git-p4: add failing test for shelved CL update involving move/copy

 "git p4" failed to update a shelved change when there were moved
 files, which has been corrected.

 Will merge to 'next'.


* ma/clear-repository-format (2019-01-14) 3 commits
 - setup: add `clear_repository_format()`
 - setup: do not use invalid `repository_format`
 - setup: free old value before setting `work_tree`

 The setup code has been cleaned up to avoid leaks around the
 repository_format structure.

 cf. <20190115193112.GE4886@sigill.intra.peff.net>


* nd/the-index-final (2019-01-14) 11 commits
 - cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch
 - read-cache.c: remove the_* from index_has_changes()
 - merge-recursive.c: remove implicit dependency on the_repository
 - merge-recursive.c: remove implicit dependency on the_index
 - sha1-name.c: remove implicit dependency on the_index
 - read-cache.c: replace update_index_if_able with repo_&
 - read-cache.c: kill read_index()
 - checkout: avoid the_index when possible
 - repository.c: replace hold_locked_index() with repo_hold_locked_index()
 - notes-utils.c: remove the_repository references
 - grep: use grep_opt->repo instead of explict repo argument

 The assumption to work on the single "in-core index" instance has
 been reduced from the library-ish part of the codebase.

 This obviously has fallouts with a few topics in flight, but
 otherwise it seemed to be in good enough shape.


* bc/tree-walk-oid (2019-01-15) 5 commits
  (merged to 'next' on 2019-01-18 at 60c38b9e4a)
 + cache: make oidcpy always copy GIT_MAX_RAWSZ bytes
 + tree-walk: store object_id in a separate member
 + match-trees: use hashcpy to splice trees
 + match-trees: compute buffer offset correctly when splicing
 + tree-walk: copy object ID before use

 The code to walk tree objects has been taught that we may be
 working with object names that are not computed with SHA-1.

 Will merge to 'master'.


* js/add-e-clear-patch-before-stating (2019-01-15) 1 commit
  (merged to 'next' on 2019-01-18 at 9ea7fc4b49)
 + add --edit: truncate the patch file

 "git add -e" got confused when the change it wants to let the user
 edit is smaller than the previous change that was left over in a
 temporary file.

 Will merge to 'master'.


* jt/fetch-pack-v2 (2019-01-10) 1 commit
  (merged to 'next' on 2019-01-18 at 75ceb55ff8)
 + fetch-pack: support protocol version 2

 "git fetch-pack" now can talk the version 2 protocol.

 Will merge to 'master'.


* jp/author-committer-config (2019-01-02) 2 commits
 - DONTMERGE
 - Add author and committer configuration settings

 Four new configuration variables {author,committer}.{name,email}
 have been introduced to override user.{name,email} in more specific
 cases.

 Expecting a reroll.
 cf. <xmqq1s5uk6qh.fsf@gitster-ct.c.googlers.com>


* js/rebase-am (2019-01-18) 4 commits
 - built-in rebase: call `git am` directly
 - rebase: teach `reset_head()` to optionally skip the worktree
 - rebase: avoid double reflog entry when switching branches
 - rebase: move `reset_head()` into a better spot

 Instead of going through "git-rebase--am" scriptlet to use the "am"
 backend, the built-in version of "git rebase" learned to drive the
 "am" backend directly.

 Waiting for a review response.
 Looked almost ready.


* ms/packet-err-check (2019-01-02) 2 commits
 - pack-protocol.txt: accept error packets in any context
 - Use packet_reader instead of packet_read_line
 (this branch is used by jt/fetch-v2-sideband.)

 Error checking of data sent over the pack-protocol has been
 revamped so that error packets are always diagnosed properly.

 Will merge to 'next'.


* os/rebase-runs-post-checkout-hook (2019-01-02) 2 commits
  (merged to 'next' on 2019-01-18 at a03d536318)
 + rebase: run post-checkout hook on checkout
 + t5403: simplify by using a single repository

 "git rebase" internally runs "checkout" to switch between branches,
 and the command used to call the post-checkout hook, but the
 reimplementation stopped doing so, which is getting fixed.

 Will merge to 'master'.


* ms/http-no-more-failonerror (2019-01-10) 5 commits
  (merged to 'next' on 2019-01-18 at 8938d70b6d)
 + test: test GIT_CURL_VERBOSE=1 shows an error
 + remote-curl: unset CURLOPT_FAILONERROR
 + remote-curl: define struct for CURLOPT_WRITEFUNCTION
 + http: enable keep_error for HTTP requests
 + http: support file handles for HTTP_KEEP_ERROR

 Debugging help for http transport.

 Will merge to 'master'.


* tt/bisect-in-c (2019-01-02) 7 commits
 - bisect--helper: `bisect_start` shell function partially in C
 - bisect--helper: `get_terms` & `bisect_terms` shell function in C
 - bisect--helper: `bisect_next_check` shell function in C
 - bisect--helper: `check_and_set_terms` shell function in C
 - wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
 - bisect--helper: `bisect_write` shell function in C
 - bisect--helper: `bisect_reset` shell function in C

 More code in "git bisect" has been rewritten in C.

 Comments?


* ja/doc-build-l10n (2019-01-07) 1 commit
  (merged to 'next' on 2019-01-18 at 5dbe5ad3d7)
 + Documentation/Makefile add optional targets for l10n

 Prepare Documentation/Makefile so that manpage localization can
 reuse it by overriding and tweaking the list of build products.

 Will merge to 'master'.


* jk/loose-object-cache-oid (2019-01-08) 11 commits
 . prefer "hash mismatch" to "sha1 mismatch"
 . sha1-file: avoid "sha1 file" for generic use in messages
 . sha1-file: prefer "loose object file" to "sha1 file" in messages
 . sha1-file: drop has_sha1_file()
 - convert has_sha1_file() callers to has_object_file()
 - sha1-file: convert pass-through functions to object_id
 - sha1-file: modernize loose header/stream functions
 - sha1-file: modernize loose object file functions
 - http: use struct object_id instead of bare sha1
 - update comment references to sha1_object_info()
 - sha1-file: fix outdated sha1 comment references

 Code clean-up.

 Later parts of the series crash heavily with sb/more-repo-in-api
 and are left out for now.  I am not sure if keeping that other
 topic is worth keeping to block the clean-up value of this topic
 which is probably more clear.


* lt/date-human (2019-01-18) 5 commits
 - Add `human` date format tests.
 - Add `human` format to test-tool
 - Add 'human' date format documentation
 - Remove the proposed use of auto as secondary way to specify human
 - Add 'human' date format

 A new date format "--date=human" that morphs its output depending
 on how far the time is from the current time has been introduced.
 "--date=auto" can be used to use this new format when the output is
 goint to the pager or to the terminal and otherwise the default
 format.

 The design around "auto" may need to be rethought.
 The tests need to be updated, too.
 cf. <20190104075034.GA26014@sigill.intra.peff.net>
 cf. <a5412274-028f-3662-e4f5-dbbcad4d9a40@iee.org>


* ds/midx-expire-repack (2019-01-10) 9 commits
 - multi-pack-index: test expire while adding packs
 - midx: implement midx_repack()
 - multi-pack-index: prepare 'repack' subcommand
 - multi-pack-index: implement 'expire' subcommand
 - midx: refactor permutation logic and pack sorting
 - midx: simplify computation of pack name lengths
 - multi-pack-index: prepare for 'expire' subcommand
 - Docs: rearrange subcommands for multi-pack-index
 - repack: refactor pack deletion for future use

 "git multi-pack-index expire/repack" are new subcommands that
 consult midx file and are used to drop unused pack files and
 coalesce small pack files that are still in use.

 Comments?


* ds/push-sparse-tree-walk (2019-01-17) 5 commits
 - pack-objects: create GIT_TEST_PACK_SPARSE
 - pack-objects: create pack.useSparse setting
 - revision: implement sparse algorithm
 - list-objects: consume sparse tree walk
 - revision: add mark_tree_uninteresting_sparse

 "git pack-objects" learned another algorithm to compute the set of
 objects to send, that trades the resulting packfile off to save
 traversal cost to favor small pushes.

 Will merge to 'next'.


* js/rebase-i-redo-exec (2018-12-11) 3 commits
  (merged to 'next' on 2019-01-18 at 71be3fedb7)
 + rebase: introduce a shortcut for --reschedule-failed-exec
 + rebase: add a config option to default to --reschedule-failed-exec
 + rebase: introduce --reschedule-failed-exec

 "git rebase -i" learned to re-execute a command given with 'exec'
 to run after it failed the last time.

 Will merge to 'master'.


* md/list-objects-filter-by-depth (2019-01-15) 4 commits
 + tree:<depth>: skip some trees even when collecting omits
 + list-objects-filter: teach tree:# how to handle >0
 + Merge branch 'nd/the-index' into md/list-objects-filter-by-depth
 + Merge branch 'sb/more-repo-in-api' into md/list-objects-filter-by-depth
 (this branch is used by js/filter-options-should-use-plain-int; uses sb/more-repo-in-api; is tangled with jt/get-reference-with-commit-graph.)

 The objects-filter machinery learned "tree:<depth>" to filter
 objects up to a given depth; earlier it only supported depth=0,
 i.e. usable to create a commit-only lazy clone.

 Will merge to 'next'.


* tg/checkout-no-overlay (2019-01-08) 8 commits
  (merged to 'next' on 2019-01-18 at 1e2a79ba5c)
 + checkout: introduce checkout.overlayMode config
 + checkout: introduce --{,no-}overlay option
 + checkout: factor out mark_cache_entry_for_checkout function
 + checkout: clarify comment
 + read-cache: add invalidate parameter to remove_marked_cache_entries
 + entry: support CE_WT_REMOVE flag in checkout_entry
 + entry: factor out unlink_entry function
 + move worktree tests to t24*

 "git checkout --no-overlay" can be used to trigger a new mode of
 checking out paths out of the tree-ish, that allows paths that
 match the pathspec that are in the current index and working tree
 and are not in the tree-ish.

 Will merge to 'master'.


* jk/proto-v2-hidden-refs-fix (2019-01-10) 1 commit
  (merged to 'next' on 2019-01-18 at 875dbbc71f)
 + upload-pack: support hidden refs with protocol v2

 The v2 upload-pack protocol implementation failed to honor
 hidden-ref configuration, which has been corrected.

 Will merge to 'master'.
 An earlier attempt reverted out of 'next'.


* js/commit-graph-chunk-table-fix (2019-01-15) 3 commits
 - Makefile: correct example fuzz build
 - commit-graph: fix buffer read-overflow
 - commit-graph, fuzz: add fuzzer for commit-graph

 The codepath to read from the commit-graph file attempted to read
 past the end of it when the file's table-of-contents was corrupt.

 Will merge to 'next'.


* jt/get-reference-with-commit-graph (2018-12-28) 1 commit
  (merged to 'next' on 2019-01-18 at bfc4eb9411)
 + revision: use commit graph in get_reference()
 (this branch uses sb/more-repo-in-api; is tangled with js/filter-options-should-use-plain-int and md/list-objects-filter-by-depth.)

 Micro-optimize the code that prepares commit objects to be walked
 by "git rev-list" when the commit-graph is available.

 Will merge to 'master'.


* dl/merge-cleanup-scissors-fix (2018-11-21) 2 commits
 - merge: add scissors line on merge conflict
 - t7600: clean up 'merge --squash c3 with c7' test

 The list of conflicted paths shown in the editor while concluding a
 conflicted merge was shown above the scissors line when the
 clean-up mode is set to "scissors", even though it was commented
 out just like the list of updated paths and other information to
 help the user explain the merge better.

 Ready?


* aw/pretty-trailers (2018-12-09) 7 commits
 - pretty: add support for separator option in %(trailers)
 - strbuf: separate callback for strbuf_expand:ing literals
 - pretty: add support for "valueonly" option in %(trailers)
 - pretty: allow showing specific trailers
 - pretty: single return path in %(trailers) handling
 - pretty: allow %(trailers) options with explicit value
 - doc: group pretty-format.txt placeholders descriptions

 The %(trailers) formatter in "git log --format=..."  now allows to
 optionally pick trailers selectively by keyword, show only values,
 etc.

 How's the doneness of this one?


* jn/unknown-index-extensions (2018-11-21) 2 commits
 - index: offer advice for unknown index extensions
 - index: do not warn about unrecognized extensions

 A bit too alarming warning given when unknown index extensions
 exist is getting revamped.

 Expecting a reroll.


* en/rebase-merge-on-sequencer (2019-01-07) 8 commits
 - rebase: implement --merge via the interactive machinery
 - rebase: define linearization ordering and enforce it
 - git-legacy-rebase: simplify unnecessary triply-nested if
 - git-rebase, sequencer: extend --quiet option for the interactive machinery
 - am, rebase--merge: do not overlook --skip'ed commits with post-rewrite
 - t5407: add a test demonstrating how interactive handles --skip differently
 - rebase: fix incompatible options error message
 - rebase: make builtin and legacy script error messages the same

 "git rebase --merge" as been reimplemented by reusing the internal
 machinery used for "git rebase -i".

 On hold.
 cf. <CABPp-BFckuONYcGGkCY3BuPypRULmhsk_OFHyYA2E4jM66BfeQ@mail.gmail.com>


* dl/remote-save-to-push (2018-12-11) 1 commit
 - remote: add --save-to-push option to git remote set-url

 "git remote set-url" learned a new option that moves existing value
 of the URL field to pushURL field of the remote before replacing
 the URL field with a new value.

 I am personally not yet quite convinced if this is worth pursuing.


* js/protocol-advertise-multi (2018-12-28) 1 commit
 - protocol: advertise multiple supported versions

 The transport layer has been updated so that the protocol version
 used can be negotiated between the parties, by the initiator
 listing the protocol versions it is willing to talk, and the other
 side choosing from one of them.


* js/smart-http-detect-remote-error (2019-01-07) 3 commits
 - remote-curl: die on server-side errors
 - remote-curl: tighten "version 2" check for smart-http
 - remote-curl: refactor smart-http discovery

 Some errors from the other side coming over smart HTTP transport
 were not noticed, which has been corrected.

 Will merge to 'next'.


* nb/branch-show-other-worktrees-head (2019-01-15) 3 commits
 - branch: add an extra verbose output displaying worktree path for checked out branch
 - branch: mark and color a branch that is checked out in a linked worktree differently
 - ref-filter: add worktreepath atom

 "git branch --list" learned to show branches that are checked out
 in other worktrees connected to the same repository prefixed with
 '+', similar to the way the currently checked out branch is shown
 with '*' in front.

 The second one is of dubious value.  The third one requires extra
 "-v" to trigger extra information, but a new feature that improves
 human-readable Porcelain output, it probably shouldn't.  Needs
 sign-off.


* sb/more-repo-in-api (2018-12-28) 23 commits
 + t/helper/test-repository: celebrate independence from the_repository
 + path.h: make REPO_GIT_PATH_FUNC repository agnostic
 + commit: prepare free_commit_buffer and release_commit_memory for any repo
 + commit-graph: convert remaining functions to handle any repo
 + submodule: don't add submodule as odb for push
 + submodule: use submodule repos for object lookup
 + pretty: prepare format_commit_message to handle arbitrary repositories
 + commit: prepare logmsg_reencode to handle arbitrary repositories
 + commit: prepare repo_unuse_commit_buffer to handle any repo
 + commit: prepare get_commit_buffer to handle any repo
 + commit-reach: prepare in_merge_bases[_many] to handle any repo
 + commit-reach: prepare get_merge_bases to handle any repo
 + commit-reach.c: allow get_merge_bases_many_0 to handle any repo
 + commit-reach.c: allow remove_redundant to handle any repo
 + commit-reach.c: allow merge_bases_many to handle any repo
 + commit-reach.c: allow paint_down_to_common to handle any repo
 + commit: allow parse_commit* to handle any repo
 + object: parse_object to honor its repository argument
 + object-store: prepare has_{sha1, object}_file to handle any repo
 + object-store: prepare read_object_file to deal with any repo
 + object-store: allow read_object_file_extended to read from any repo
 + packfile: allow has_packed_and_bad to handle arbitrary repositories
 + sha1_file: allow read_object to read objects in arbitrary repositories
 (this branch is used by js/filter-options-should-use-plain-int, jt/get-reference-with-commit-graph and md/list-objects-filter-by-depth.)

 The in-core repository instances are passed through more codepaths.

 Will merge to 'next'.


* bc/sha-256 (2018-11-14) 12 commits
  (merged to 'next' on 2019-01-18 at 3f161d31bb)
 + hash: add an SHA-256 implementation using OpenSSL
 + sha256: add an SHA-256 implementation using libgcrypt
 + Add a base implementation of SHA-256 support
 + commit-graph: convert to using the_hash_algo
 + t/helper: add a test helper to compute hash speed
 + sha1-file: add a constant for hash block size
 + t: make the sha1 test-tool helper generic
 + t: add basic tests for our SHA-1 implementation
 + cache: make hashcmp and hasheq work with larger hashes
 + hex: introduce functions to print arbitrary hashes
 + sha1-file: provide functions to look up hash algorithms
 + sha1-file: rename algorithm to "sha1"

 Add sha-256 hash and plug it through the code to allow building Git
 with the "NewHash".

 Will merge to 'master'.


* js/vsts-ci (2018-10-16) 13 commits
 . travis: fix skipping tagged releases
 . README: add a build badge (status of the Azure Pipelines build)
 . tests: record more stderr with --write-junit-xml in case of failure
 . tests: include detailed trace logs with --write-junit-xml upon failure
 . git-p4: use `test_atexit` to kill the daemon
 . git-daemon: use `test_atexit` in the tests
 . tests: introduce `test_atexit`
 . ci: add a build definition for Azure DevOps
 . ci/lib.sh: add support for Azure Pipelines
 . tests: optionally write results as JUnit-style .xml
 . test-date: add a subcommand to measure times in shell scripts
 . ci/lib.sh: encapsulate Travis-specific things
 . ci: rename the library of common functions

 Prepare to run test suite on Azure DevOps.

 Ejected out of 'pu', as doing so seems to help other topics get
 tested at TravisCI.

 https://travis-ci.org/git/git/builds/452713184 is a sample of a
 build whose tests on 4 hang (with this series in).  Ejecting it
 gave us https://travis-ci.org/git/git/builds/452778963 which still
 shows breakages from other topics not yet in 'next', but at least
 the tests do not stall.


* du/branch-show-current (2018-10-26) 1 commit
 - branch: introduce --show-current display option

 "git branch" learned a new subcommand "--show-current".

 I am personally not yet quite convinced if this is worth pursuing.


* mk/use-size-t-in-zlib (2018-10-15) 1 commit
 - zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".


* ag/sequencer-reduce-rewriting-todo (2019-01-14) 18 commits
 - rebase-interactive.h: fix hdr-check warnings
 - sequencer: mark file local symbols as static
 - rebase-interactive: move transform_todo_file() to rebase--interactive.c
 - sequencer: use edit_todo_list() in complete_action()
 - rebase-interactive: rewrite edit_todo_list() to handle the initial edit
 - rebase-interactive: append_todo_help() changes
 - rebase-interactive: use todo_list_write_to_file() in edit_todo_list()
 - sequencer: refactor skip_unnecessary_picks() to work on a todo_list
 - sequencer: change complete_action() to use the refactored functions
 - sequencer: make sequencer_make_script() write its script to a strbuf
 - sequencer: refactor rearrange_squash() to work on a todo_list
 - sequencer: refactor sequencer_add_exec_commands() to work on a todo_list
 - sequencer: refactor check_todo_list() to work on a todo_list
 - sequencer: introduce todo_list_write_to_file()
 - sequencer: refactor transform_todos() to work on a todo_list
 - sequencer: remove the 'arg' field from todo_item
 - sequencer: make the todo_list structure public
 - sequencer: changes in parse_insn_buffer()

 The scripted version of "git rebase -i" wrote and rewrote the todo
 list many times during a single step of its operation, and the
 recent C-rewrite made a faithful conversion of the logic to C.  The
 implementation has been updated to carry necessary information
 around in-core to avoid rewriting the same file over and over
 unnecessarily.

 May need a further update, including squashing the tip commit to a
 releavant place.


* sb/submodule-recursive-fetch-gets-the-tip (2018-12-09) 9 commits
  (merged to 'next' on 2019-01-18 at 79a2809fbc)
 + fetch: ensure submodule objects fetched
 + submodule.c: fetch in submodules git directory instead of in worktree
 + submodule: migrate get_next_submodule to use repository structs
 + repository: repo_submodule_init to take a submodule struct
 + submodule: store OIDs in changed_submodule_names
 + submodule.c: tighten scope of changed_submodule_names struct
 + submodule.c: sort changed_submodule_names before searching it
 + submodule.c: fix indentation
 + sha1-array: provide oid_array_filter

 "git fetch --recurse-submodules" may not fetch the necessary commit
 that is bound to the superproject, which is getting corrected.

 Will merge to 'master'.


* js/add-i-coalesce-after-editing-hunk (2018-08-28) 1 commit
 - add -p: coalesce hunks before testing applicability

 Applicability check after a patch is edited in a "git add -i/p"
 session has been improved.

 Will hold.
 cf. <e5b2900a-0558-d3bf-8ea1-d526b078bbc2@talktalk.net>


* ps/stash-in-c (2019-01-18) 28 commits
 - stash: fix segmentation fault when files were added with intent
 - tests: add a special setup where stash.useBuiltin is off
 - stash: optionally use the scripted version again
 - stash: add back the original, scripted `git stash`
 - stash: convert `stash--helper.c` into `stash.c`
 - stash: replace all `write-tree` child processes with API calls
 - stash: optimize `get_untracked_files()` and `check_changes()`
 - stash: convert save to builtin
 - stash: make push -q quiet
 - stash: convert push to builtin
 - stash: convert create to builtin
 - stash: convert store to builtin
 - stash: convert show to builtin
 - stash: convert list to builtin
 - stash: convert pop to builtin
 - stash: convert branch to builtin
 - stash: convert drop and clear to builtin
 - stash: convert apply to builtin
 - stash: mention options in `show` synopsis
 - stash: add tests for `git stash show` config
 - stash: rename test cases to be more descriptive
 - t3903: modernize style
 - stash: improve option parsing test coverage
 - ident: add the ability to provide a "fallback identity"
 - strbuf.c: add `strbuf_insertf()` and `strbuf_vinsertf()`
 - strbuf.c: add `strbuf_join_argv()`
 - sha1-name.c: add `get_oidf()` which acts like `get_oid()`
 - Merge branch 'sd/stash-wo-user-name'

 "git stash" rewritten in C.

 Will merge to 'next'.


* pw/add-p-select (2018-07-26) 4 commits
 - add -p: optimize line selection for short hunks
 - add -p: allow line selection to be inverted
 - add -p: select modified lines correctly
 - add -p: select individual hunk lines

 "git add -p" interactive interface learned to let users choose
 individual added/removed lines to be used in the operation, instead
 of accepting or rejecting a whole hunk.

 Will discard.
 No further feedbacks on the topic for quite some time.

 cf. <d622a95b-7302-43d4-4ec9-b2cf3388c653@talktalk.net>
 I found the feature to be hard to explain, and may result in more
 end-user complaints, but let's see.

^ permalink raw reply	[relevance 1%]

* [ANNOUNCE] Git v2.18.0
@ 2018-06-21 19:27  1% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2018-06-21 19:27 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

The latest feature release Git v2.18.0 is now available at the
usual places.  It is comprised of 903 non-merge commits since
v2.17.0, contributed by 80 people, 24 of which are new faces.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.18.0'
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.17.0 are as follows.
Welcome to the Git development community!

  Bill Ritcher, Birger Skogeng Pedersen, Casey Fitzpatrick,
  Dan Jacques, Drew DeVault, Eckhard S. Maaß, Erik E Brady,
  Florian Gamböck, Harald Nordgren, Jeremy Linton, Karthikeyan
  Singaravelan, Leif Middelschulte, Loganaden Velvindron, Luis
  Marsano, Meng-Sung Wu, Paul-Sebastian Ungureanu, Pedro Alvarez
  Piedehierro, Pratik Karki, Romain Merland, Ryan Dammrose,
  Takuto Ikuta, Tao Qingyun, Wink Saville, and Yuki Kokubun.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alexander Shopov, Anders Kaseorg,
  Andreas Heiduk, Andre Hinrichs, Antonio Ospite, Beat Bolli,
  Ben Peart, Brandon Williams, brian m. carlson, Changwoo Ryu,
  Christian Couder, Christian Hesse, Christopher Diaz Riveros,
  Clemens Buchacher, David Turner, Derrick Stolee, Elijah Newren,
  Eric Sunshine, Jameson Miller, Jean-Noël Avila, Jeff King,
  Jiang Xin, Johannes Schindelin, Johannes Sixt, Jonathan Nieder,
  Jonathan Tan, Jordi Mas, Junio C Hamano, Kaartic Sivaraam,
  Kyle Meyer, Lars Schneider, Lucas Werkmeister, Luke Diamand,
  Martin Ågren, Michal Nazarewicz, Michele Locati, Nguyễn Thái
  Ngọc Duy, Olga Telezhnaya, Orgad Shaneh, Peter Krefting, Philip
  Oakley, Phillip Wood, Ralf Thielow, Ramsay Jones, René Scharfe,
  Robert P. J. Day, Sergey Organov, Stefan Agner, Stefan Beller,
  SZEDER Gábor, Taylor Blau, Thomas Gummerer, Todd Zullinger,
  Torsten Bögershausen, and Trần Ngọc Quân.

----------------------------------------------------------------

Git 2.18 Release Notes
======================

Updates since v2.17
-------------------

UI, Workflows & Features

 * Rename detection logic that is used in "merge" and "cherry-pick" has
   learned to guess when all of x/a, x/b and x/c have moved to z/a,
   z/b and z/c, it is likely that x/d added in the meantime would also
   want to move to z/d by taking the hint that the entire directory
   'x' moved to 'z'.  A bug causing dirty files involved in a rename
   to be overwritten during merge has also been fixed as part of this
   work.  Incidentally, this also avoids updating a file in the
   working tree after a (non-trivial) merge whose result matches what
   our side originally had.

 * "git filter-branch" learned to use a different exit code to allow
   the callers to tell the case where there was no new commits to
   rewrite from other error cases.

 * When built with more recent cURL, GIT_SSL_VERSION can now specify
   "tlsv1.3" as its value.

 * "git gui" learned that "~/.ssh/id_ecdsa.pub" and
   "~/.ssh/id_ed25519.pub" are also possible SSH key files.
   (merge 2e2f0288ef bb/git-gui-ssh-key-files later to maint).

 * "git gui" performs commit upon CTRL/CMD+ENTER but the
   CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the
   same key binding.  It now does.
   (merge 28a1d94a06 bp/git-gui-bind-kp-enter later to maint).

 * "git gui" has been taught to work with old versions of tk (like
   8.5.7) that do not support "ttk::style theme use" as a way to query
   the current theme.
   (merge 4891961105 cb/git-gui-ttk-style later to maint).

 * "git rebase" has learned to honor "--signoff" option when using
   backends other than "am" (but not "--preserve-merges").

 * "git branch --list" during an interrupted "rebase -i" now lets
   users distinguish the case where a detached HEAD is being rebased
   and a normal branch is being rebased.

 * "git mergetools" learned talking to guiffy.

 * The scripts in contrib/emacs/ have outlived their usefulness and
   have been replaced with a stub that errors out and tells the user
   there are replacements.

 * The new "working-tree-encoding" attribute can ask Git to convert the
   contents to the specified encoding when checking out to the working
   tree (and the other way around when checking in).

 * The "git config" command uses separate options e.g. "--int",
   "--bool", etc. to specify what type the caller wants the value to
   be interpreted as.  A new "--type=<typename>" option has been
   introduced, which would make it cleaner to define new types.

 * "git config --get" learned the "--default" option, to help the
   calling script.  Building on top of the above changes, the
   "git config" learns "--type=color" type.  Taken together, you can
   do things like "git config --get foo.color --default blue" and get
   the ANSI color sequence for the color given to foo.color variable,
   or "blue" if the variable does not exist.

 * "git ls-remote" learned an option to allow sorting its output based
   on the refnames being shown.

 * The command line completion (in contrib/) has been taught that "git
   stash save" has been deprecated ("git stash push" is the preferred
   spelling in the new world) and does not offer it as a possible
   completion candidate when "git stash push" can be.

 * "git gc --prune=nonsense" spent long time repacking and then
   silently failed when underlying "git prune --expire=nonsense"
   failed to parse its command line.  This has been corrected.

 * Error messages from "git push" can be painted for more visibility.

 * "git http-fetch" (deprecated) had an optional and experimental
   "feature" to fetch only commits and/or trees, which nobody used.
   This has been removed.

 * The functionality of "$GIT_DIR/info/grafts" has been superseded by
   the "refs/replace/" mechanism for some time now, but the internal
   code had support for it in many places, which has been cleaned up
   in order to drop support of the "grafts" mechanism.

 * "git worktree add" learned to check out an existing branch.

 * "git --no-pager cmd" did not have short-and-sweet single letter
   option. Now it does as "-P".
   (merge 7213c28818 js/no-pager-shorthand later to maint).

 * "git rebase" learned "--rebase-merges" to transplant the whole
   topology of commit graph elsewhere.

 * "git status" learned to pay attention to UI related diff
   configuration variables such as diff.renames.

 * The command line completion mechanism (in contrib/) learned to load
   custom completion file for "git $command" where $command is a
   custom "git-$command" that the end user has on the $PATH when using
   newer version of bash-completion.

 * "git send-email" can sometimes offer confirmation dialog "Send this
   email?" with choices 'Yes', 'No', 'Quit', and 'All'.  A new action
   'Edit' has been added to this dialog's choice.

 * With merge.renames configuration set to false, the recursive merge
   strategy can be told not to spend cycles trying to find renamed
   paths and merge them accordingly.

 * "git status" learned to honor a new status.renames configuration to
   skip rename detection, which could be useful for those who want to
   do so without disabling the default rename detection done by the
   "git diff" command.

 * Command line completion (in contrib/) learned to complete pathnames
   for various commands better.

 * "git blame" learns to unhighlight uninteresting metadata from the
   originating commit on lines that are the same as the previous one,
   and also paint lines in different colors depending on the age of
   the commit.

 * Transfer protocol v2 learned to support the partial clone.

 * When a short hexadecimal string is used to name an object but there
   are multiple objects that share the string as the prefix of their
   names, the code lists these ambiguous candidates in a help message.
   These object names are now sorted according to their types for
   easier eyeballing.

 * "git fetch $there $refspec" that talks over protocol v2 can take
   advantage of server-side ref filtering; the code has been extended
   so that this mechanism triggers also when fetching with configured
   refspec.

 * Our HTTP client code used to advertise that we accept gzip encoding
   from the other side; instead, just let cURL library to advertise
   and negotiate the best one.

 * "git p4" learned to "unshelve" shelved commit from P4.
   (merge 123f631761 ld/p4-unshelve later to maint).


Performance, Internal Implementation, Development Support etc.

 * A "git fetch" from a repository with insane number of refs into a
   repository that is already up-to-date still wasted too many cycles
   making many lstat(2) calls to see if these objects at the tips
   exist as loose objects locally.  These lstat(2) calls are optimized
   away by enumerating all loose objects beforehand.
   It is unknown if the new strategy negatively affects existing use
   cases, fetching into a repository with many loose objects from a
   repository with small number of refs.

 * Git can be built to use either v1 or v2 of the PCRE library, and so
   far, the build-time configuration USE_LIBPCRE=YesPlease instructed
   the build procedure to use v1, but now it means v2.  USE_LIBPCRE1
   and USE_LIBPCRE2 can be used to explicitly choose which version to
   use, as before.

 * The build procedure learned to optionally use symbolic links
   (instead of hardlinks and copies) to install "git-foo" for built-in
   commands, whose binaries are all identical.

 * Conversion from uchar[20] to struct object_id continues.

 * The way "git worktree prune" worked internally has been simplified,
   by assuming how "git worktree move" moves an existing worktree to a
   different place.

 * Code clean-up for the "repository" abstraction.
   (merge 00a3da2a13 nd/remove-ignore-env-field later to maint).

 * Code to find the length to uniquely abbreviate object names based
   on packfile content, which is a relatively recent addtion, has been
   optimized to use the same fan-out table.

 * The mechanism to use parse-options API to automate the command line
   completion continues to get extended and polished.

 * Copies of old scripted Porcelain commands in contrib/examples/ have
   been removed.

 * Some tests that rely on the exact hardcoded values of object names
   have been updated in preparation for hash function migration.

 * Perf-test update.

 * Test helper update.

 * The effort continues to refactor the internal global data structure
   to make it possible to open multiple repositories, work with and
   then close them,

 * Small test-helper programs have been consolidated into a single
   binary.

 * API clean-up around ref-filter code.

 * Shell completion (in contrib) that gives list of paths have been
   optimized somewhat.

 * The index file is updated to record the fsmonitor section after a
   full scan was made, to avoid wasting the effort that has already
   spent.

 * Performance measuring framework in t/perf learned to help bisecting
   performance regressions.

 * Some multi-word source filenames are being renamed to separate
   words with dashes instead of underscores.

 * An reusable "memory pool" implementation has been extracted from
   fast-import.c, which in turn has become the first user of the
   mem-pool API.

 * A build-time option has been added to allow Git to be told to refer
   to its associated files relative to the main binary, in the same
   way that has been possible on Windows for quite some time, for
   Linux, BSDs and Darwin.

 * Precompute and store information necessary for ancestry traversal
   in a separate file to optimize graph walking.

 * The effort to pass the repository in-core structure throughout the
   API continues.  This round deals with the code that implements the
   refs/replace/ mechanism.

 * The build procedure "make DEVELOPER=YesPlease" learned to enable a
   bit more warning options depending on the compiler used to help
   developers more.  There also is "make DEVOPTS=tokens" knob
   available now, for those who want to help fixing warnings we
   usually ignore, for example.

 * A new version of the transport protocol is being worked on.

 * The code to interface to GPG has been restructured somewhat to make
   it cleaner to integrate with other types of signature systems later.

 * The code has been taught to use the duplicated information stored
   in the commit-graph file to learn the tree object name for a commit
   to avoid opening and parsing the commit object when it makes sense
   to do so.

 * "git gc" in a large repository takes a lot of time as it considers
   to repack all objects into one pack by default.  The command has
   been taught to pretend as if the largest existing packfile is
   marked with ".keep" so that it is left untouched while objects in
   other packs and loose ones are repacked.

 * The transport protocol v2 is getting updated further.

 * The codepath around object-info API has been taught to take the
   repository object (which in turn tells the API which object store
   the objects are to be located).

 * "git pack-objects" needs to allocate tons of "struct object_entry"
   while doing its work, and shrinking its size helps the performance
   quite a bit.

 * The implementation of "git rebase -i --root" has been updated to use
   the sequencer machinery more.

 * Developer support update, by using BUG() macro instead of die() to
   mark codepaths that should not happen more clearly.

 * Developer support.  Use newer GCC on one of the builds done at
   TravisCI.org to get more warnings and errors diagnosed.

 * Conversion from uchar[20] to struct object_id continues.

 * By code restructuring of submodule merge in merge-recursive,
   informational messages from the codepath are now given using the
   same mechanism as other output, and honor the merge.verbosity
   configuration.  The code also learned to give a few new messages
   when a submodule three-way merge resolves cleanly when one side
   records a descendant of the commit chosen by the other side.

 * Avoid unchecked snprintf() to make future code auditing easier.
   (merge ac4896f007 jk/snprintf-truncation later to maint).

 * Many tests hardcode the raw object names, which would change once
   we migrate away from SHA-1.  While some of them must test against
   exact object names, most of them do not have to use hardcoded
   constants in the test.  The latter kind of tests have been updated
   to test the moral equivalent of the original without hardcoding the
   actual object names.

 * The list of commands with their various attributes were spread
   across a few places in the build procedure, but it now is getting a
   bit more consolidated to allow more automation.

 * Quite a many tests assumed that newly created refs are made as
   loose refs using the files backend, which have been updated to use
   proper plumbing like rev-parse and update-ref, to avoid breakage
   once we start using different ref backends.


Also contains various documentation updates and code clean-ups.


Fixes since v2.17
-----------------

 * "git shortlog cruft" aborted with a BUG message when run outside a
   Git repository.  The command has been taught to complain about
   extra and unwanted arguments on its command line instead in such a
   case.
   (merge 4aa0161e83 ma/shortlog-revparse later to maint).

 * "git stash push -u -- <pathspec>" gave an unnecessary and confusing
   error message when there was no tracked files that match the
   <pathspec>, which has been fixed.
   (merge 353278687e tg/stash-untracked-with-pathspec-fix later to maint).

 * "git tag --contains no-such-commit" gave a full list of options
   after giving an error message.
   (merge 3bb0923f06 ps/contains-id-error-message later to maint).

 * "diff-highlight" filter (in contrib/) learned to understand "git log
   --graph" output better.
   (merge 4551fbba14 jk/diff-highlight-graph-fix later to maint).

 * when refs that do not point at committish are given, "git
   filter-branch" gave a misleading error messages.  This has been
   corrected.
   (merge f78ab355e7 yk/filter-branch-non-committish-refs later to maint).

 * "git submodule status" misbehaved on a submodule that has been
   removed from the working tree.
   (merge 74b6bda32f rs/status-with-removed-submodule later to maint).

 * When credential helper exits very quickly without reading its
   input, it used to cause Git to die with SIGPIPE, which has been
   fixed.
   (merge a0d51e8d0e eb/cred-helper-ignore-sigpipe later to maint).

 * "git rebase --keep-empty" still removed an empty commit if the
   other side contained an empty commit (due to the "does an
   equivalent patch exist already?" check), which has been corrected.
   (merge 3d946165e1 pw/rebase-keep-empty-fixes later to maint).

 * Some codepaths, including the refs API, get and keep relative
   paths, that go out of sync when the process does chdir(2).  The
   chdir-notify API is introduced to let these codepaths adjust these
   cached paths to the new current directory.
   (merge fb9c2d2703 jk/relative-directory-fix later to maint).

 * "cd sub/dir && git commit ../path" ought to record the changes to
   the file "sub/path", but this regressed long time ago.
   (merge 86238e07ef bw/commit-partial-from-subdirectory-fix later to maint).

 * Recent introduction of "--log-destination" option to "git daemon"
   did not work well when the daemon was run under "--inetd" mode.
   (merge e67d906d73 lw/daemon-log-destination later to maint).

 * Small fix to the autoconf build procedure.
   (merge 249482daf0 es/fread-reads-dir-autoconf-fix later to maint).

 * Fix an unexploitable (because the oversized contents are not under
   attacker's control) buffer overflow.
   (merge d8579accfa bp/fsmonitor-bufsize-fix later to maint).

 * Recent simplification of build procedure forgot a bit of tweak to
   the build procedure of contrib/mw-to-git/
   (merge d8698987f3 ab/simplify-perl-makefile later to maint).

 * Moving a submodule that itself has submodule in it with "git mv"
   forgot to make necessary adjustment to the nested sub-submodules;
   now the codepath learned to recurse into the submodules.

 * "git config --unset a.b", when "a.b" is the last variable in an
   otherwise empty section "a", left an empty section "a" behind, and
   worse yet, a subsequent "git config a.c value" did not reuse that
   empty shell and instead created a new one.  These have been
   (partially) corrected.
   (merge c71d8bb38a js/empty-config-section-fix later to maint).

 * "git worktree remove" learned that "-f" is a shorthand for
   "--force" option, just like for "git worktree add".
   (merge d228eea514 sb/worktree-remove-opt-force later to maint).

 * The completion script (in contrib/) learned to clear cached list of
   command line options upon dot-sourcing it again in a more efficient
   way.
   (merge 94408dc71c sg/completion-clear-cached later to maint).

 * "git svn" had a minor thinko/typo which has been fixed.
   (merge 51db271587 ab/git-svn-get-record-typofix later to maint).

 * During a "rebase -i" session, the code could give older timestamp
   to commits created by later "pick" than an earlier "reword", which
   has been corrected.
   (merge 12f7babd6b js/ident-date-fix later to maint).

 * "git submodule status" did not check the symbolic revision name it
   computed for the submodule HEAD is not the NULL, and threw it at
   printf routines, which has been corrected.
   (merge 0b5e2ea7cf nd/submodule-status-fix later to maint).

 * When fed input that already has In-Reply-To: and/or References:
   headers and told to add the same information, "git send-email"
   added these headers separately, instead of appending to an existing
   one, which is a violation of the RFC.  This has been corrected.
   (merge 256be1d3f0 sa/send-email-dedup-some-headers later to maint).

 * "git fast-export" had a regression in v2.15.0 era where it skipped
   some merge commits in certain cases, which has been corrected.
   (merge be011bbe00 ma/fast-export-skip-merge-fix later to maint).

 * The code did not propagate the terminal width to subprocesses via
   COLUMNS environment variable, which it now does.  This caused
   trouble to "git column" helper subprocess when "git tag --column=row"
   tried to list the existing tags on a display with non-default width.
   (merge b5d5a567fb nd/term-columns later to maint).

 * We learned that our source files with ".pl" and ".py" extensions
   are Perl and Python files respectively and changes to them are
   better viewed as such with appropriate diff drivers.
   (merge 7818b619e2 ab/perl-python-attrs later to maint).

 * "git rebase -i" sometimes left intermediate "# This is a
   combination of N commits" message meant for the human consumption
   inside an editor in the final result in certain corner cases, which
   has been fixed.
   (merge 15ef69314d js/rebase-i-clean-msg-after-fixup-continue later to maint).

 * A test to see if the filesystem normalizes UTF-8 filename has been
   updated to check what we need to know in a more direct way, i.e. a
   path created in NFC form can be accessed with NFD form (or vice
   versa) to cope with APFS as well as HFS.
   (merge 742ae10e35 tb/test-apfs-utf8-normalization later to maint).

 * "git format-patch --cover --attach" created a broken MIME multipart
   message for the cover letter, which has been fixed by keeping the
   cover letter as plain text file.
   (merge 50cd54ef4e bc/format-patch-cover-no-attach later to maint).

 * The split-index feature had a long-standing and dormant bug in
   certain use of the in-core merge machinery, which has been fixed.
   (merge 7db118303a en/unpack-trees-split-index-fix later to maint).

 * Asciidoctor gives a reasonable imitation for AsciiDoc, but does not
   render illustration in a literal block correctly when indented with
   HT by default. The problem is fixed by forcing 8-space tabs.
   (merge 379805051d bc/asciidoctor-tab-width later to maint).

 * Code clean-up to adjust to a more recent lockfile API convention that
   allows lockfile instances kept on the stack.
   (merge 0fa5a2ed8d ma/lockfile-cleanup later to maint).

 * the_repository->index is not a allocated piece of memory but
   repo_clear() indiscriminately attempted to free(3) it, which has
   been corrected.
   (merge 74373b5f10 nd/repo-clear-keep-the-index later to maint).

 * Code clean-up to avoid non-standard-conformant pointer arithmetic.
   (merge c112084af9 rs/no-null-ptr-arith-in-fast-export later to maint).

 * Code clean-up to turn history traversal more robust in a
   semi-corrupt repository.
   (merge 8702b30fd7 jk/unavailable-can-be-missing later to maint).

 * "git update-ref A B" is supposed to ensure that ref A does not yet
   exist when B is a NULL OID, but this check was not done correctly
   for pseudo-refs outside refs/ hierarchy, e.g. MERGE_HEAD.

 * "git submodule update" and "git submodule add" supported the
   "--reference" option to borrow objects from a neighbouring local
   repository like "git clone" does, but lacked the more recent
   invention "--dissociate".  Also "git submodule add" has been taught
   to take the "--progress" option.
   (merge a0ef29341a cf/submodule-progress-dissociate later to maint).

 * Update credential-netrc helper (in contrib/) to allow customizing
   the GPG used to decrypt the encrypted .netrc file.
   (merge 786ef50a23 lm/credential-netrc later to maint).

 * "git submodule update" attempts two different kinds of "git fetch"
   against the upstream repository to grab a commit bound at the
   submodule's path, but it incorrectly gave up if the first kind
   (i.e. a normal fetch) failed, making the second "last resort" one
   (i.e. fetching an exact commit object by object name) ineffective.
   This has been corrected.
   (merge e30d833671 sb/submodule-update-try-harder later to maint).

 * Error behaviour of "git grep" when it cannot read the index was
   inconsistent with other commands that uses the index, which has
   been corrected to error out early.
   (merge b2aa84c789 sb/grep-die-on-unreadable-index later to maint).

 * We used to call regfree() after regcomp() failed in some codepaths,
   which have been corrected.
   (merge 17154b1576 ma/regex-no-regfree-after-comp-fail later to maint).

 * The import-tars script (in contrib/) has been taught to handle
   tarballs with overly long paths that use PAX extended headers.
   (merge 12ecea46e3 pa/import-tars-long-names later to maint).

 * "git rev-parse Y..." etc. misbehaved when given endpoints were
   not committishes.
   (merge 0ed556d38f en/rev-parse-invalid-range later to maint).

 * "git pull --recurse-submodules --rebase", when the submodule
   repository's history did not have anything common between ours and
   the upstream's, failed to execute.  We need to fetch from them to
   continue even in such a case.
   (merge 4d36f88be7 jt/submodule-pull-recurse-rebase later to maint).

 * "git remote update" can take both a single remote nickname and a
   nickname for remote groups, but only one of them was documented.
   (merge a97447a42a nd/remote-update-doc later to maint).

 * "index-pack --strict" has been taught to make sure that it runs the
   final object integrity checks after making the freshly indexed
   packfile available to itself.
   (merge 3737746120 jk/index-pack-maint later to maint).

 * Make zlib inflate codepath more robust against versions of zlib
   that clobber unused portion of outbuf.
   (merge b611396e97 jl/zlib-restore-nul-termination later to maint).

 * Fix old merge glitch in Documentation during v2.13-rc0 era.
   (merge 28cb06020b mw/doc-merge-enumfix later to maint).

 * The code to read compressed bitmap was not careful to avoid reading
   past the end of the file, which has been corrected.
   (merge 1140bf01ec jk/ewah-bounds-check later to maint).

 * "make NO_ICONV=NoThanks" did not override NEEDS_LIBICONV
   (i.e. linkage of -lintl, -liconv, etc. that are platform-specific
   tweaks), which has been corrected.
   (merge fdb1fbbc7d es/make-no-iconv later to maint).

 * Other minor doc, test and build updates and code cleanups.
   (merge 248f66ed8e nd/trace-with-env later to maint).
   (merge 14ced5562c ys/bisect-object-id-missing-conversion-fix later to maint).
   (merge 5988eb631a ab/doc-hash-brokenness later to maint).
   (merge a4d4e32a70 pk/test-avoid-pipe-hiding-exit-status later to maint).
   (merge 05e293c1ac jk/flockfile-stdio later to maint).
   (merge e9184b0789 jk/t5561-missing-curl later to maint).
   (merge b1801b85a3 nd/worktree-move later to maint).
   (merge bbd374dd20 ak/bisect-doc-typofix later to maint).
   (merge 4855f06fb3 mn/send-email-credential-doc later to maint).
   (merge 8523b1e355 en/doc-typoes later to maint).
   (merge 43b44ccfe7 js/t5404-path-fix later to maint).
   (merge decf711fc1 ps/test-chmtime-get later to maint).
   (merge 22d11a6e8e es/worktree-docs later to maint).
   (merge 92a5dbbc22 tg/use-git-contacts later to maint).
   (merge adc887221f tq/t1510 later to maint).
   (merge bed21a8ad6 sg/doc-gc-quote-mismatch-fix later to maint).
   (merge 73364e4f10 tz/doc-git-urls-reference later to maint).
   (merge cd1e606bad bc/mailmap-self later to maint).
   (merge f7997e3682 ao/config-api-doc later to maint).
   (merge ee930754d8 jk/apply-p-doc later to maint).
   (merge 011b648646 nd/pack-format-doc later to maint).
   (merge 87a6bb701a sg/t5310-jgit-bitmap-test later to maint).
   (merge f6b82970aa sg/t5516-fixes later to maint).
   (merge 4362da078e sg/t7005-spaces-in-filenames-cleanup later to maint).
   (merge 7d0ee47c11 js/test-unset-prereq later to maint).
   (merge 5356a3c354 ah/misc-doc-updates later to maint).
   (merge 92c4a7a129 nd/completion-aliasfiletype-typofix later to maint).
   (merge 58bd77b66a nd/pack-unreachable-objects-doc later to maint).
   (merge 4ed79d5203 sg/t6500-no-redirect-of-stdin later to maint).
   (merge 17b8a2d6cd jk/config-blob-sans-repo later to maint).
   (merge 590551ca2c rd/tag-doc-lightweight later to maint).
   (merge 44f560fc16 rd/init-typo later to maint).
   (merge f156a0934a rd/p4-doc-markup-env later to maint).
   (merge 2a00502b14 tg/doc-sec-list later to maint).
   (merge 47cc91310a jk/submodule-fsck-loose-fixup later to maint).
   (merge efde7b725c rd/comment-typofix-in-sha1-file later to maint).
   (merge 7eedad15df rd/diff-options-typofix later to maint).
   (merge 58ebd936cc km/doc-workflows-typofix later to maint).
   (merge 30aa96cdf8 rd/doc-remote-tracking-with-hyphen later to maint).
   (merge cf317877e3 ks/branch-set-upstream later to maint).
   (merge 8de19d6be8 sg/t7406-chain-fix later to maint).

----------------------------------------------------------------

Changes since v2.17.0 are as follows:

Alexander Shopov (2):
      l10n: bg.po: Updated Bulgarian translation (3608t)
      l10n: bg.po: Updated Bulgarian translation (3608t)

Anders Kaseorg (1):
      Documentation/git-bisect.txt: git bisect term → git bisect terms

Andre Hinrichs (1):
      l10n: de.po: fix typos

Andreas Heiduk (9):
      git-svn: search --authors-prog in PATH too
      git-svn: allow empty email-address using authors-prog and authors-file
      doc: improve formatting in githooks.txt
      doc: align 'diff --no-index' in text and synopsis
      doc: clarify ignore rules for git ls-files
      doc: add '-d' and '-o' for 'git push'
      git-svn: remove ''--add-author-from' for 'commit-diff'
      doc: add note about shell quoting to revision.txt
      doc: normalize [--options] to [options] in git-diff

Antonio Ospite (1):
      doc: fix config API documentation about config_with_options

Beat Bolli (1):
      git-gui: search for all current SSH key types

Ben Peart (7):
      fsmonitor: fix incorrect buffer size when printing version number
      fsmonitor: force index write after full scan
      test-drop-caches: simplify delay loading of NtSetSystemInformation
      merge: update documentation for {merge,diff}.renameLimit
      merge: add merge.renames config setting
      merge: pass aggressive when rename detection is turned off
      add status config and command line options for rename detection

Bill Ritcher (1):
      mergetools: add support for guiffy

Birger Skogeng Pedersen (1):
      git-gui: bind CTRL/CMD+numpad ENTER to do_commit

Brandon Williams (79):
      pkt-line: introduce packet_read_with_status
      pkt-line: allow peeking a packet line without consuming it
      pkt-line: add delim packet support
      upload-pack: convert to a builtin
      upload-pack: factor out processing lines
      transport: use get_refs_via_connect to get refs
      connect: convert get_remote_heads to use struct packet_reader
      connect: discover protocol version outside of get_remote_heads
      transport: store protocol version
      protocol: introduce enum protocol_version value protocol_v2
      test-pkt-line: introduce a packet-line test helper
      serve: introduce git-serve
      ls-refs: introduce ls-refs server command
      connect: request remote refs using v2
      transport: convert get_refs_list to take a list of ref prefixes
      transport: convert transport_get_remote_refs to take a list of ref prefixes
      ls-remote: pass ref prefixes when requesting a remote's refs
      fetch: pass ref prefixes when fetching
      push: pass ref prefixes when pushing
      upload-pack: introduce fetch server command
      fetch-pack: perform a fetch using v2
      fetch-pack: support shallow requests
      connect: refactor git_connect to only get the protocol version once
      connect: don't request v2 when pushing
      transport-helper: remove name parameter
      transport-helper: refactor process_connect_service
      transport-helper: introduce stateless-connect
      pkt-line: add packet_buf_write_len function
      remote-curl: create copy of the service name
      remote-curl: store the protocol version the server responded with
      http: allow providing extra headers for http requests
      http: don't always add Git-Protocol header
      http: eliminate "# service" line when using protocol v2
      remote-curl: implement stateless-connect command
      remote-curl: don't request v2 when pushing
      commit: allow partial commits with relative paths
      serve: introduce the server-option capability
      ls-remote: send server options when using protocol v2
      fetch: send server options when using protocol v2
      refspec: move refspec parsing logic into its own file
      refspec: rename struct refspec to struct refspec_item
      refspec: factor out parsing a single refspec
      refspec: introduce struct refspec
      refspec: convert valid_fetch_refspec to use parse_refspec
      submodule--helper: convert push_check to use struct refspec
      pull: convert get_tracking_branch to use refspec_item_init
      transport: convert transport_push to use struct refspec
      remote: convert check_push_refs to use struct refspec
      remote: convert match_push_refs to use struct refspec
      clone: convert cmd_clone to use refspec_item_init
      fast-export: convert to use struct refspec
      remote: convert push refspecs to struct refspec
      remote: convert fetch refspecs to struct refspec
      remote: remove add_prune_tags_to_fetch_refspec
      transport-helper: convert to use struct refspec
      fetch: convert fetch_one to use struct refspec
      fetch: convert refmap to use struct refspec
      refspec: remove the deprecated functions
      fetch: convert do_fetch to take a struct refspec
      fetch: convert get_ref_map to take a struct refspec
      fetch: convert prune_refs to take a struct refspec
      remote: convert get_stale_heads to take a struct refspec
      remote: convert apply_refspecs to take a struct refspec
      remote: convert query_refspecs to take a struct refspec
      remote: convert get_ref_match to take a struct refspec
      remote: convert match_explicit_refs to take a struct refspec
      push: check for errors earlier
      push: convert to use struct refspec
      transport: convert transport_push to take a struct refspec
      send-pack: store refspecs in a struct refspec
      transport: remove transport_verify_remote_names
      http-push: store refspecs in a struct refspec
      remote: convert match_push_refs to take a struct refspec
      remote: convert check_push_refs to take a struct refspec
      submodule: convert push_unpushed_submodules to take a struct refspec
      refspec: consolidate ref-prefix generation logic
      fetch: generate ref-prefixes when using a configured refspec
      remote-curl: accept all encodings supported by curl
      remote-curl: accept compressed responses with protocol v2

Casey Fitzpatrick (3):
      submodule: clean up substitutions in script
      submodule: add --progress option to add command
      submodule: add --dissociate option to add/update commands

Changwoo Ryu (1):
      l10n: ko.po: Update Korean translation

Christian Couder (7):
      perf/aggregate: add display_dir()
      perf/aggregate: add --sort-by=regression option
      perf/run: add --subsection option
      t/perf: add scripts to bisect performance regressions
      perf/aggregate: use Getopt::Long for option parsing
      perf/bisect_run_script: disable codespeed
      t990X: use '.git/objects' as 'deep inside .git' path

Christian Hesse (2):
      perl: fix installing modules from contrib
      Makefile: mark perllibdir as a .PHONY target

Christopher Diaz Riveros (3):
      l10n: es.po: Spanish update for v2.18.0 round 1
      l10n: es.po: Spanish update for v2.18.0 round 2
      l10n: es.po: Spanish update for v2.18.0 round 3

Clemens Buchacher (2):
      git-gui: workaround ttk:style theme use
      completion: improve ls-files filter performance

Dan Jacques (3):
      Makefile: generate Perl header from template file
      Makefile: add Perl runtime prefix support
      exec_cmd: RUNTIME_PREFIX on some POSIX systems

David Turner (1):
      t: make many tests depend less on the refs being files

Derrick Stolee (20):
      packfile: define and use bsearch_pack()
      sha1_name: use bsearch_pack() for abbreviations
      csum-file: rename hashclose() to finalize_hashfile()
      csum-file: refactor finalize_hashfile() method
      commit-graph: add format document
      graph: add commit graph design document
      commit-graph: create git-commit-graph builtin
      commit-graph: implement write_commit_graph()
      commit-graph: implement git-commit-graph write
      commit-graph: implement git commit-graph read
      commit-graph: add core.commitGraph setting
      commit-graph: close under reachability
      commit: integrate commit graph with commit parsing
      commit-graph: read only from specific pack-indexes
      commit-graph: build graph from starting commits
      commit-graph: implement "--append" option
      treewide: rename tree to maybe_tree
      commit: create get_commit_tree() method
      treewide: replace maybe_tree with accessor methods
      commit-graph: lazy-load trees for commits

Drew DeVault (1):
      git-send-email: allow re-editing of message

Eckhard S. Maaß (1):
      wt-status: use settings from git_diff_ui_config

Elijah Newren (73):
      directory rename detection: basic testcases
      directory rename detection: directory splitting testcases
      directory rename detection: testcases to avoid taking detection too far
      directory rename detection: partially renamed directory testcase/discussion
      directory rename detection: files/directories in the way of some renames
      directory rename detection: testcases checking which side did the rename
      directory rename detection: more involved edge/corner testcases
      directory rename detection: testcases exploring possibly suboptimal merges
      directory rename detection: miscellaneous testcases to complete coverage
      directory rename detection: tests for handling overwriting untracked files
      directory rename detection: tests for handling overwriting dirty files
      merge-recursive: move the get_renames() function
      merge-recursive: introduce new functions to handle rename logic
      merge-recursive: fix leaks of allocated renames and diff_filepairs
      merge-recursive: make !o->detect_rename codepath more obvious
      merge-recursive: split out code for determining diff_filepairs
      merge-recursive: make a helper function for cleanup for handle_renames
      merge-recursive: add get_directory_renames()
      merge-recursive: check for directory level conflicts
      merge-recursive: add computation of collisions due to dir rename & merging
      merge-recursive: check for file level conflicts then get new name
      merge-recursive: when comparing files, don't include trees
      merge-recursive: apply necessary modifications for directory renames
      merge-recursive: avoid clobbering untracked files with directory renames
      merge-recursive: fix overwriting dirty files involved in renames
      merge-recursive: fix remaining directory rename + dirty overwrite cases
      directory rename detection: new testcases showcasing a pair of bugs
      merge-recursive: avoid spurious rename/rename conflict from dir renames
      merge-recursive: ensure we write updates for directory-renamed file
      Documentation: fix several one-character-off spelling errors
      Documentation: normalize spelling of 'normalised'
      directory rename detection: basic testcases
      directory rename detection: directory splitting testcases
      directory rename detection: testcases to avoid taking detection too far
      directory rename detection: partially renamed directory testcase/discussion
      directory rename detection: files/directories in the way of some renames
      directory rename detection: testcases checking which side did the rename
      directory rename detection: more involved edge/corner testcases
      directory rename detection: testcases exploring possibly suboptimal merges
      directory rename detection: miscellaneous testcases to complete coverage
      directory rename detection: tests for handling overwriting untracked files
      directory rename detection: tests for handling overwriting dirty files
      merge-recursive: move the get_renames() function
      merge-recursive: introduce new functions to handle rename logic
      merge-recursive: fix leaks of allocated renames and diff_filepairs
      merge-recursive: make !o->detect_rename codepath more obvious
      merge-recursive: split out code for determining diff_filepairs
      merge-recursive: make a helper function for cleanup for handle_renames
      Make running git under other debugger-like programs easy
      unpack_trees: fix breakage when o->src_index != o->dst_index
      merge-recursive: add get_directory_renames()
      merge-recursive: check for directory level conflicts
      merge-recursive: add computation of collisions due to dir rename & merging
      merge-recursive: check for file level conflicts then get new name
      merge-recursive: when comparing files, don't include trees
      merge-recursive: apply necessary modifications for directory renames
      merge-recursive: avoid clobbering untracked files with directory renames
      merge-recursive: fix overwriting dirty files involved in renames
      merge-recursive: fix remaining directory rename + dirty overwrite cases
      directory rename detection: new testcases showcasing a pair of bugs
      merge-recursive: avoid spurious rename/rename conflict from dir renames
      merge-recursive: improve add_cacheinfo error handling
      merge-recursive: move more is_dirty handling to merge_content
      merge-recursive: avoid triggering add_cacheinfo error with dirty mod
      t6046: testcases checking whether updates can be skipped in a merge
      merge-recursive: fix was_tracked() to quit lying with some renamed paths
      merge-recursive: fix remainder of was_dirty() to use original index
      merge-recursive: make "Auto-merging" comment show for other merges
      merge-recursive: fix check for skipability of working tree updates
      merge-recursive: provide pair of `unpack_trees_{start,finish}()`
      rev-parse: check lookup'ed commit references for NULL
      RelNotes: remove duplicate release note
      RelNotes 2.18: clarify where directory rename detection applies

Eric Sunshine (6):
      t3200: verify "branch --list" sanity when rebasing from detached HEAD
      t2028: tighten grep expression to make "move worktree" test more robust
      git-worktree.txt: recommend 'git worktree remove' over manual deletion
      git-worktree.txt: unify command-line prompt in example blocks
      configure.ac: fix botched FREAD_READS_DIRECTORIES check
      Makefile: make NO_ICONV really mean "no iconv"

Erik E Brady (1):
      credential: ignore SIGPIPE when writing to credential helpers

Florian Gamböck (1):
      completion: load completion file for external subcommand

Harald Nordgren (1):
      ls-remote: create '--sort' option

Jameson Miller (3):
      fast-import: rename mem_pool type to mp_block
      fast-import: introduce mem_pool type
      mem-pool: move reusable parts of memory pool into its own file

Jean-Noël Avila (2):
      l10n: fr.po v2.18 round 1
      l10n: fr.po v2.18.0 round 3

Jeff King (60):
      diff-highlight: correct test graph diagram
      diff-highlight: use test_tick in graph test
      diff-highlight: prefer "echo" to "cat" in tests
      diff-highlight: test interleaved parallel lines of history
      diff-highlight: test graphs with --color
      diff-highlight: use flush() helper consistently
      diff-highlight: detect --graph by indent
      set_git_dir: die when setenv() fails
      add chdir-notify API
      set_work_tree: use chdir_notify
      refs: use chdir_notify to update cached relative paths
      config: move flockfile() closer to unlocked functions
      t5561: drop curl stderr redirects
      t5561: skip tests if curl is not available
      ref-filter: use "struct object_id" consistently
      ref-filter: make ref_array_item allocation more consistent
      ref-filter: factor ref_array pushing into its own function
      t7004: fix mistaken tag name
      gpg-interface: handle bool user.signingkey
      gpg-interface: modernize function declarations
      gpg-interface: use size_t for signature buffer size
      gpg-interface: fix const-correctness of "eol" pointer
      gpg-interface: extract gpg line matching helper
      gpg-interface: find the last gpg signature line
      apply: clarify "-p" documentation
      pager: set COLUMNS to term_columns()
      mark_tree_contents_uninteresting(): drop missing object check
      mark_parents_uninteresting(): drop missing object check
      mark_parents_uninteresting(): replace list with stack
      mark_parents_uninteresting(): avoid most allocation
      get_main_ref_store: BUG() when outside a repository
      config: die when --blob is used outside a repository
      http: use strbufs instead of fixed buffers
      log_write_email_headers: use strbufs
      shorten_unambiguous_ref: use xsnprintf
      fmt_with_err: add a comment that truncation is OK
      submodule-config: verify submodule names as paths
      is_ntfs_dotgit: use a size_t for traversing string
      is_hfs_dotgit: match other .git files
      skip_prefix: add case-insensitive variant
      verify_path: drop clever fallthrough
      verify_dotfile: mention case-insensitivity in comment
      update-index: stat updated files earlier
      verify_path: disallow symlinks in .gitmodules
      index-pack: make fsck error message more specific
      fsck: simplify ".git" check
      fsck: actually fsck blob data
      fsck: detect gitmodules files
      fsck: handle promisor objects in .gitmodules check
      fsck: check .gitmodules content
      fsck: call fsck_finish() after fscking objects
      unpack-objects: call fsck_finish() after fscking objects
      index-pack: check .gitmodules files with --strict
      fsck: complain when .gitmodules is a symlink
      prepare_commit_graft: treat non-repository as a noop
      index-pack: handle --strict checks of non-repo packs
      t7415: don't bother creating commit for symlink test
      fsck: avoid looking at NULL blob->object
      ewah_read_mmap: bounds-check mmap reads
      ewah: adjust callers of ewah_read_mmap()

Jeremy Linton (1):
      packfile: correct zlib buffer handling

Jiang Xin (4):
      l10n: git.pot: v2.18.0 round 1 (108 new, 14 removed)
      l10n: git.pot: v2.18.0 round 2 (144 new, 6 removed)
      l10n: git.pot: v2.18.0 round 3 (1 new, 1 removed)
      l10n: zh_CN: for git v2.18.0 l10n round 1 to 3

Johannes Schindelin (69):
      git_config_set: fix off-by-two
      t1300: rename it to reflect that `repo-config` was deprecated
      t1300: demonstrate that --replace-all can "invent" newlines
      config --replace-all: avoid extra line breaks
      t1300: avoid relying on a bug
      t1300: remove unreasonable expectation from TODO
      t5404: relax overzealous test
      t1300: add a few more hairy examples of sections becoming empty
      t1300: `--unset-all` can leave an empty section behind (bug)
      config: introduce an optional event stream while parsing
      config: avoid using the global variable `store`
      config_set_store: rename some fields for consistency
      git_config_set: do not use a state machine
      git_config_set: make use of the config parser's event stream
      git config --unset: remove empty sections (in the common case)
      git_config_set: reuse empty sections
      exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
      mingw/msvc: use the new-style RUNTIME_PREFIX helper
      color: introduce support for colorizing stderr
      push: test to verify that push errors are colored
      config: document the settings to colorize push errors/hints
      gettext: avoid initialization if the locale dir is not present
      git_setup_gettext: plug memory leak
      sequencer: avoid using errno clobbered by rollback_lock_file()
      sequencer: make rearrange_squash() a bit more obvious
      sequencer: refactor how original todo list lines are accessed
      sequencer: offer helpful advice when a command was rescheduled
      sequencer: introduce new commands to reset the revision
      sequencer: introduce the `merge` command
      sequencer: fast-forward `merge` commands, if possible
      rebase-helper --make-script: introduce a flag to rebase merges
      rebase: introduce the --rebase-merges option
      sequencer: make refs generated by the `label` command worktree-local
      sequencer: handle post-rewrite for merge commands
      rebase --rebase-merges: avoid "empty merges"
      pull: accept --rebase=merges to recreate the branch topology
      rebase -i: introduce --rebase-merges=[no-]rebase-cousins
      rebase -i --rebase-merges: add a section to the man page
      argv_array: offer to split a string by whitespace
      commit: Let the callback of for_each_mergetag return on error
      replace: avoid using die() to indicate a bug
      tests: introduce test_unset_prereq, for debugging
      replace: "libify" create_graft() and callees
      replace: prepare create_graft() for converting graft files wholesale
      replace: introduce --convert-graft-file
      Add a test for `git replace --convert-graft-file`
      Deprecate support for .git/info/grafts
      filter-branch: stop suggesting to use grafts
      technical/shallow: stop referring to grafts
      technical/shallow: describe why shallow cannot use replace refs
      Remove obsolete script to convert grafts to replace refs
      rebase -i: demonstrate bugs with fixup!/squash! commit messages
      rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
      sequencer: always commit without editing when asked for
      rebase --skip: clean up commit message after a failed fixup/squash
      sequencer: extract helper to update active_cache_tree
      sequencer: allow introducing new root commits
      rebase --rebase-merges: a "merge" into a new root is a fast-forward
      sequencer: learn about the special "fake root commit" handling
      rebase --rebase-merges: root commits can be cousins, too
      rebase -i --root: let the sequencer handle even the initial part
      test-tool: help verifying BUG() code paths
      run-command: use BUG() to report bugs, not die()
      Replace all die("BUG: ...") calls by BUG() ones
      Convert remaining die*(BUG) messages
      config: a user-provided invalid section is not a BUG
      is_ntfs_dotgit: match other .git files
      is_{hfs,ntfs}_dotgitmodules: add tests
      rebase --root: fix amending root commit messages

Johannes Sixt (2):
      sequencer: reset the committer date before commits
      git: add -P as a short option for --no-pager

Jonathan Nieder (6):
      sha1_file: allow map_sha1_file_1 to handle arbitrary repositories
      sha1_file: allow sha1_loose_object_info to handle arbitrary repositories
      Makefile: remove unused @@PERLLIBDIR@@ substitution variable
      Makefile: quote $INSTLIBDIR when passing it to sed
      packfile: add repository argument to packed_object_info
      fetch: do not pass ref-prefixes for fetch by exact SHA1

Jonathan Tan (5):
      grep: remove "repo" arg from non-supporting funcs
      upload-pack: fix error message typo
      upload-pack: read config when serving protocol v2
      {fetch,upload}-pack: support filter in protocol v2
      submodule: do not pass null OID to setup_revisions

Jordi Mas (1):
      l10n: Update Catalan translation

Junio C Hamano (27):
      stash: fix nonsense pipeline
      The first batch for 2.18 cycle
      The second batch for 2.18
      The third batch for 2.18
      Revert "Merge branch 'en/rename-directory-detection'"
      gc: do not upcase error message shown with die()
      parseopt: handle malformed --expire arguments more nicely
      The fourth batch for 2.18
      The fifth batch for 2.18
      argv-array: return the pushed string from argv_push*()
      Git 2.13.7
      Git 2.14.4
      Git 2.15.2
      Git 2.16.4
      Git 2.17.1
      The sixth batch for 2.18
      The seventh batch for 2.18
      Git 2.18-rc0
      refspec-api: avoid uninitialized field in refspec item
      A bit more topics before -rc1
      Git 2.18-rc1
      RelNotes 2.18: typofixes
      index-pack: correct install_packed_git() args
      Git 2.18-rc2
      A bunch of micro-fixes before going 2.18 final
      Almost 2.18 final
      Git 2.18

Kaartic Sivaraam (2):
      branch --list: print useful info whilst interactive rebasing a detached HEAD
      t3200: clarify description of --set-upstream test

Karthikeyan Singaravelan (1):
      doc: fix typos in documentation and release notes

Kyle Meyer (1):
      gitworkflows: fix grammar in 'Merge upwards' rule

Lars Schneider (10):
      strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
      strbuf: add xstrdup_toupper()
      strbuf: add a case insensitive starts_with()
      utf8: teach same_encoding() alternative UTF encoding names
      utf8: add function to detect prohibited UTF-16/32 BOM
      utf8: add function to detect a missing UTF-16/32 BOM
      convert: add 'working-tree-encoding' attribute
      convert: check for detectable errors in UTF encodings
      convert: add tracing for 'working-tree-encoding' attribute
      convert: add round trip check based on 'core.checkRoundtripEncoding'

Leif Middelschulte (2):
      merge-recursive: give notice when submodule commit gets fast-forwarded
      merge-submodule: reduce output verbosity

Loganaden Velvindron (1):
      http: allow use of TLS 1.3

Lucas Werkmeister (1):
      daemon.c: fix condition for redirecting stderr

Luis Marsano (2):
      git-credential-netrc: adapt to test framework for git
      git-credential-netrc: accept gpg option

Luke Diamand (7):
      git-p4: add unshelve command
      git-p4: disable-rebase: allow setting this via configuration
      git-p4: add option to disable syncing of p4/master with p4
      git-p4: better error reporting when p4 fails
      git-p4: raise exceptions from p4CmdList based on error from p4 server
      git-p4: narrow the scope of exceptions caught when parsing an int
      git-p4: auto-size the block

Martin Ågren (24):
      git-shortlog.txt: reorder usages
      shortlog: add usage-string for stdin-reading
      shortlog: disallow left-over arguments outside repo
      doc: convert \--option to --option
      doc: convert [\--] to [--]
      git-[short]log.txt: unify quoted standalone --
      git-submodule.txt: quote usage in monospace, drop backslash
      fast-export: fix regression skipping some merge-commits
      http-fetch: make `-a` standard behaviour
      walker: drop fields of `struct walker` which are always 1
      t/helper/test-write-cache: clean up lock-handling
      refs.c: do not die if locking fails in `write_pseudoref()`
      refs.c: do not die if locking fails in `delete_pseudoref()`
      lock_file: make function-local locks non-static
      lock_file: move static locks into functions
      refs.c: refer to "object ID", not "sha1", in error messages
      t1400: add tests around adding/deleting pseudorefs
      refs: handle zero oid for pseudorefs
      merge: setup `opts` later in `checkout_fast_forward()`
      config: free resources of `struct config_store_data`
      config: let `config_store_data_clear()` handle `value_regex`
      config: let `config_store_data_clear()` handle `key`
      regex: do not call `regfree()` if compilation fails
      unpack_trees_options: free messages when done

Meng-Sung Wu (1):
      doc: update the order of the syntax `git merge --continue`

Michal Nazarewicz (1):
      send-email: simplify Gmail example in the documentation

Michele Locati (1):
      filter-branch: return 2 when nothing to rewrite

Nguyễn Thái Ngọc Duy (108):
      repository: initialize the_repository in main()
      repository.c: move env-related setup code back to environment.c
      repository.c: delete dead functions
      sha1_file.c: move delayed getenv(altdb) back to setup_git_env()
      repository: delete ignore_env member
      gc.txt: more details about what gc does
      worktree: delete dead code
      worktree prune: improve prune logic when worktree is moved
      repository.h: add comment and clarify repo_set_gitdir
      git.c: move cmd_struct declaration up
      git.c: add hidden option --list-parseopt-builtins
      completion: mention the oldest version we need to support
      completion: factor out _git_xxx calling code
      completion: add --option completion for most builtin commands
      completion: delete option-only completion commands
      completion: use __gitcomp_builtin in _git_ls_tree
      completion: use __gitcomp_builtin in _git_cherry
      packfile: keep prepare_packed_git() private
      t/helper: add an empty test-tool program
      t/helper: merge test-chmtime into test-tool
      t/helper: merge test-sha1 into test-tool
      t/helper: merge test-lazy-init-name-hash into test-tool
      t/helper: merge test-config into test-tool
      t/helper: merge test-ctype into test-tool
      t/helper: merge test-date into test-tool
      t/helper: merge (unused) test-delta into test-tool
      t/helper: merge test-drop-caches into test-tool
      t/helper: merge test-dump-cache-tree into test-tool
      t/helper: merge test-dump-split-index into test-tool
      t/helper: merge test-example-decorate into test-tool
      t/helper: merge test-genrandom into test-tool
      t/helper: merge test-hashmap into test-tool
      t/helper: merge test-index-version into test-tool
      t/helper: merge (unused) test-match-trees into test-tool
      t/helper: merge (unused) test-mergesort into test-tool
      t/helper: merge test-mktemp into test-tool
      t/helper: merge test-online-cpus into test-tool
      t/helper: merge test-path-utils into test-tool
      t/helper: merge test-prio-queue into test-tool
      t/helper: merge test-read-cache into test-tool
      t/helper: merge test-ref-store into test-tool
      t/helper: merge test-regex into test-tool
      t/helper: merge test-revision-walking into test-tool
      t/helper: merge test-run-command into test-tool
      t/helper: merge test-scrap-cache-tree into test-tool
      t/helper: merge test-sha1-array into test-tool
      t/helper: merge test-sigchain into test-tool
      t/helper: merge test-strcmp-offset into test-tool
      t/helper: merge test-string-list into test-tool
      t/helper: merge test-submodule-config into test-tool
      t/helper: merge test-subprocess into test-tool
      t/helper: merge test-urlmatch-normalization into test-tool
      t/helper: merge test-wildmatch into test-tool
      t/helper: merge test-write-cache into test-tool
      trace.c: export trace_setup_key
      read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean
      pack-objects: a bit of document about struct object_entry
      pack-objects: turn type and in_pack_type to bitfields
      pack-objects: use bitfield for object_entry::dfs_state
      pack-objects: use bitfield for object_entry::depth
      pack-objects: move in_pack_pos out of struct object_entry
      pack-objects: move in_pack out of struct object_entry
      pack-objects: refer to delta objects by index instead of pointer
      pack-objects: shrink z_delta_size field in struct object_entry
      pack-objects: don't check size when the object is bad
      pack-objects: clarify the use of object_entry::size
      pack-objects: shrink size field in struct object_entry
      pack-objects: shrink delta_size field in struct object_entry
      pack-objects: reorder members to shrink struct object_entry
      ci: exercise the whole test suite with uncommon code in pack-objects
      t7700: have closing quote of a test at the beginning of line
      repack: add --keep-pack option
      gc: add --keep-largest-pack option
      gc: add gc.bigPackThreshold config
      gc: handle a corner case in gc.bigPackThreshold
      gc --auto: exclude base pack if not enough mem to "repack -ad"
      pack-objects: show some progress when counting kept objects
      connect.c: mark die_initial_contact() NORETURN
      Makefile: detect compiler and enable more warnings in DEVELOPER=1
      submodule--helper: don't print null in 'submodule status'
      doc: keep first level section header in upper case
      pack-objects: validation and documentation about unreachable options
      completion: fix misspelled config key aliasesfiletype
      repository: fix free problem with repo_clear(the_repository)
      generate-cmds.sh: factor out synopsis extract code
      generate-cmds.sh: export all commands to command-list.h
      help: use command-list.h for common command list
      Remove common-cmds.h
      pack-format.txt: more details on pack file format
      column: fix off-by-one default width
      commit.h: rearrange 'index' to shrink struct commit
      git.c: convert --list-* to --list-cmds=*
      git --list-cmds: collect command list in a string_list
      completion: implement and use --list-cmds=main,others
      git: support --list-cmds=list-<category>
      help: add "-a --verbose" to list all commands with synopsis
      help: use command-list.txt for the source of guides
      command-list.txt: documentation and guide line
      completion: let git provide the completable command list
      completion: reduce completable command list
      Move declaration for alias.c to alias.h
      completion: add and use --list-cmds=nohelpers
      completion: add and use --list-cmds=alias
      completion: allow to customize the completable command list
      travis-ci: run gcc-8 on linux-gcc jobs
      Use OPT_SET_INT_F() for cmdline option specification
      remote.txt: update documentation for 'update' command
      remote: doc typofix

Olga Telezhnaya (6):
      ref-filter: add shortcut to work with strbufs
      ref-filter: start adding strbufs with errors
      ref-filter: add return value && strbuf to handlers
      ref-filter: change parsing function error handling
      ref-filter: add return value to parsers
      ref-filter: libify get_ref_atom_value()

Orgad Shaneh (1):
      git-rebase--interactive: fix copy-paste mistake

Paul-Sebastian Ungureanu (2):
      parse-options: do not show usage upon invalid option value
      t/helper: 'test-chmtime (--get|-g)' to print only the mtime

Pedro Alvarez Piedehierro (1):
      import-tars: read overlong names from pax extended header

Peter Krefting (2):
      l10n: sv.po: Update Swedish translation (3470t0f0u)
      l10n: sv.po: Update Swedish translation (3608t0f0u)

Philip Oakley (1):
      Avoid multiple PREFIX definitions

Phillip Wood (7):
      rebase --root: stop assuming squash_onto is unset
      rebase -i --keep-empty: don't prune empty commits
      rebase: respect --no-keep-empty
      rebase: extend --signoff support
      rebase -p: error out if --signoff is given
      rebase --keep-empty: always use interactive rebase
      rebase --rebase-merges: add test for --keep-empty

Pratik Karki (1):
      test: avoid pipes in git related commands for test

Ralf Thielow (1):
      l10n: TEAMS: remove inactive de team members

Ramsay Jones (1):
      BUG_exit_code: fix sparse "symbol not declared" warning

René Scharfe (11):
      sha1_name: use bsearch_pack() in unique_in_pack()
      bisect: use oid_to_hex() for converting object_id hashes to hex strings
      run-command: use strbuf_addstr() for adding a string to a strbuf
      submodule: check for NULL return of get_submodule_ref_store()
      replace_object: use oidmap
      fast-export: avoid NULL pointer arithmetic
      t5512: run git fetch inside test
      fsmonitor: use internal argv_array of struct child_process
      merge-recursive: use xstrdup() instead of fixed buffer
      blame: release string_list after use in parse_color_fields()
      merge-recursive: use xstrdup() instead of fixed buffer

Robert P. J. Day (7):
      Use proper syntax for replaceables in command docs
      tag: clarify in the doc that a tag can refer to a non-commit object
      init: fix grammar in "templates not found" msg
      p4.txt: Use backquotes for variable names
      sha1-file.c: correct $GITDIR to $GIT_DIR in a comment
      diff-options.txt: fix minor typos, font inconsistencies, in docs
      Use hyphenated "remote-tracking branch" (docs and comments)

Romain Merland (1):
      git-p4: add options --commit and --disable-rebase

Ryan Dammrose (1):
      push: colorize errors

SZEDER Gábor (25):
      test_must_be_empty: simplify file existence check
      t9902-completion: add tests demonstrating issues with quoted pathnames
      completion: move __git_complete_index_file() next to its helpers
      completion: simplify prefix path component handling during path completion
      completion: support completing non-ASCII pathnames
      completion: improve handling quoted paths on the command line
      completion: let 'ls-files' and 'diff-index' filter matching paths
      completion: use 'awk' to strip trailing path components
      t9902-completion: ignore COMPREPLY element order in some tests
      completion: remove repeated dirnames with 'awk' during path completion
      completion: improve handling quoted paths in 'git ls-files's output
      completion: fill COMPREPLY directly when completing paths
      completion: reduce overhead of clearing cached --options
      docs/git-gc: fix minor rendering issue
      coccinelle: avoid wrong transformation suggestions from commit.cocci
      t6050-replace: don't disable stdin for the whole test script
      t5310-pack-bitmaps: make JGit tests work with GIT_TEST_SPLIT_INDEX
      t5516-fetch-push: fix 'push with dry-run' test
      t5516-fetch-push: fix broken &&-chain
      t7005-editor: get rid of the SPACES_IN_FILENAMES prereq
      completion: don't return with error from __gitcomp_file_direct()
      t9902-completion: exercise __git_complete_index_file() directly
      completion: correct zsh detection when run from git-completion.zsh
      t7406-submodule-update: fix broken &&-chains
      RelNotes 2.18: minor fix to entry about dynamically loading completions

Sergey Organov (1):
      glossary: substitute "ancestor" for "direct ancestor" in 'push' description.

Stefan Agner (1):
      send-email: avoid duplicate In-Reply-To/References

Stefan Beller (82):
      repository: introduce raw object store field
      object-store: migrate alternates struct and functions from cache.h
      object-store: move alt_odb_list and alt_odb_tail to object store
      object-store: free alt_odb_list
      object-store: move packed_git and packed_git_mru to object store
      object-store: close all packs upon clearing the object store
      pack: move prepare_packed_git_run_once to object store
      pack: move approximate object count to object store
      sha1_file: add raw_object_store argument to alt_odb_usable
      sha1_file: add repository argument to link_alt_odb_entry
      sha1_file: add repository argument to read_info_alternates
      sha1_file: add repository argument to link_alt_odb_entries
      sha1_file: add repository argument to prepare_alt_odb
      sha1_file: allow link_alt_odb_entries to handle arbitrary repositories
      sha1_file: allow prepare_alt_odb to handle arbitrary repositories
      sha1_file: add repository argument to sha1_file_name
      sha1_file: add repository argument to stat_sha1_file
      sha1_file: add repository argument to open_sha1_file
      sha1_file: add repository argument to map_sha1_file_1
      sha1_file: add repository argument to map_sha1_file
      sha1_file: add repository argument to sha1_loose_object_info
      sha1_file: allow sha1_file_name to handle arbitrary repositories
      sha1_file: allow stat_sha1_file to handle arbitrary repositories
      sha1_file: allow open_sha1_file to handle arbitrary repositories
      sha1_file: allow map_sha1_file to handle arbitrary repositories
      packfile: allow prepare_packed_git_mru to handle arbitrary repositories
      packfile: allow rearrange_packed_git to handle arbitrary repositories
      packfile: allow install_packed_git to handle arbitrary repositories
      packfile: add repository argument to prepare_packed_git_one
      packfile: add repository argument to prepare_packed_git
      packfile: add repository argument to reprepare_packed_git
      packfile: allow prepare_packed_git_one to handle arbitrary repositories
      packfile: allow prepare_packed_git to handle arbitrary repositories
      packfile: allow reprepare_packed_git to handle arbitrary repositories
      packfile: add repository argument to find_pack_entry
      packfile: allow find_pack_entry to handle arbitrary repositories
      submodule.h: drop declaration of connect_work_tree_and_git_dir
      submodule-config: allow submodule_free to handle arbitrary repositories
      submodule-config: add repository argument to submodule_from_{name, path}
      submodule-config: remove submodule_from_cache
      submodule: fixup nested submodules after moving the submodule
      write_or_die.c: rename to use dashes in file name
      unicode_width.h: rename to use dash in file name
      exec_cmd: rename to use dash in file name
      sha1_name.c: rename to use dash in file name
      sha1_file.c: rename to use dash in file name
      replace_object.c: rename to use dash in file name
      replace-object: move replace_map to object store
      object-store: move lookup_replace_object to replace-object.h
      replace-object: eliminate replace objects prepared flag
      replace-object: check_replace_refs is safe in multi repo environment
      refs: add repository argument to get_main_ref_store
      refs: add repository argument to for_each_replace_ref
      replace-object: add repository argument to prepare_replace_object
      replace-object: add repository argument to do_lookup_replace_object
      replace-object: add repository argument to lookup_replace_object
      refs: store the main ref store inside the repository struct
      refs: allow for_each_replace_ref to handle arbitrary repositories
      replace-object: allow prepare_replace_object to handle arbitrary repositories
      replace-object: allow do_lookup_replace_object to handle arbitrary repositories
      replace-object: allow lookup_replace_object to handle arbitrary repositories
      worktree: accept -f as short for --force for removal
      builtin/blame: dim uninteresting metadata lines
      builtin/blame: highlight recently changed lines
      builtin/blame: add new coloring scheme config
      cache.h: add repository argument to oid_object_info_extended
      cache.h: add repository argument to oid_object_info
      packfile: add repository argument to retry_bad_packed_offset
      packfile: add repository argument to packed_to_object_type
      packfile: add repository argument to read_object
      packfile: add repository argument to unpack_entry
      packfile: add repository argument to cache_or_unpack_entry
      cache.h: allow oid_object_info to handle arbitrary repositories
      git-rebase--interactive: clarify arguments
      object.c: free replace map in raw_object_store_clear
      replace-object.c: remove the_repository from prepare_replace_object
      grep: handle corrupt index files early
      git-submodule.sh: try harder to fetch a submodule
      submodule.c: move submodule merging to merge-recursive.c
      merge-recursive: i18n submodule merge output and respect verbosity
      object.c: clear replace map before freeing it
      t7400: encapsulate setup code in test_expect_success

Takuto Ikuta (1):
      fetch-pack.c: use oidset to check existence of loose object

Tao Qingyun (1):
      t1510-repo-setup.sh: remove useless mkdir

Taylor Blau (5):
      builtin/config.c: treat type specifiers singularly
      builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
      builtin/config: introduce `--default`
      config.c: introduce 'git_config_color' to parse ANSI colors
      builtin/config: introduce `color` type specifier

Thomas Gummerer (12):
      stash push: avoid printing errors
      stash push -u: don't create empty stash
      stash: drop superfluos pathspec parameter
      SubmittingPatches: mention the git contacts command
      completion: stop showing 'save' for stash by default
      completion: make stash -p and alias for stash push -p
      worktree: remove extra members from struct add_opts
      worktree: improve message when creating a new worktree
      worktree: factor out dwim_branch function
      worktree: teach "add" to check out existing branches
      SubmittingPatches: replace numbered attributes with names
      note git-security@googlegroups.com in more places

Todd Zullinger (3):
      doc/clone: update caption for GIT URLS cross-reference
      rebase --root: demonstrate a bug while amending root commit messages
      t3404: check root commit in 'rebase -i --root reword root commit'

Torsten Bögershausen (1):
      test: correct detection of UTF8_NFD_TO_NFC for APFS

Trần Ngọc Quân (3):
      l10n: vi(3470t): Updated Vietnamese translation for v2.18.0
      l10n: vi.po(3608t): Update Vietnamese translation for v2.18.0 round2
      l10n: vi.po(3608t): Update Vietnamese translation for v2.18.0 round 3

Wink Saville (8):
      rebase-interactive: simplify pick_on_preserving_merges
      rebase: update invocation of rebase dot-sourced scripts
      rebase: reindent function git_rebase__interactive
      rebase: extract functions out of git_rebase__interactive
      rebase: add and use git_rebase__interactive__preserve_merges
      rebase: remove unused code paths from git_rebase__interactive
      rebase: remove unused code paths from git_rebase__interactive__preserve_merges
      rebase: remove merges_option and a blank line

Yuki Kokubun (1):
      filter-branch: fix errors caused by refs that point at non-committish

brian m. carlson (123):
      bulk-checkin: convert index_bulk_checkin to struct object_id
      builtin/write-tree: convert to struct object_id
      cache-tree: convert write_*_as_tree to object_id
      cache-tree: convert remnants to struct object_id
      resolve-undo: convert struct resolve_undo_info to object_id
      tree: convert read_tree_recursive to struct object_id
      ref-filter: convert grab_objectname to struct object_id
      strbuf: convert strbuf_add_unique_abbrev to use struct object_id
      wt-status: convert struct wt_status_state to object_id
      Convert find_unique_abbrev* to struct object_id
      http-walker: convert struct object_request to use struct object_id
      send-pack: convert remaining functions to struct object_id
      replace_object: convert struct replace_object to object_id
      builtin/mktag: convert to struct object_id
      archive: convert write_archive_entry_fn_t to object_id
      archive: convert sha1_file_to_archive to struct object_id
      builtin/index-pack: convert struct ref_delta_entry to object_id
      sha1_file: convert read_loose_object to use struct object_id
      sha1_file: convert check_sha1_signature to struct object_id
      streaming: convert open_istream to use struct object_id
      builtin/mktree: convert to struct object_id
      sha1_file: convert assert_sha1_type to object_id
      sha1_file: convert retry_bad_packed_offset to struct object_id
      packfile: convert unpack_entry to struct object_id
      Convert remaining callers of sha1_object_info_extended to object_id
      sha1_file: convert sha1_object_info* to object_id
      builtin/fmt-merge-msg: convert remaining code to object_id
      builtin/notes: convert static functions to object_id
      tree-walk: convert get_tree_entry_follow_symlinks internals to object_id
      streaming: convert istream internals to struct object_id
      tree-walk: convert tree entry functions to object_id
      sha1_file: convert read_object_with_reference to object_id
      sha1_file: convert read_sha1_file to struct object_id
      Convert lookup_replace_object to struct object_id
      sha1_file: introduce a constant for max header length
      convert: convert to struct object_id
      sha1_name: convert struct min_abbrev_data to object_id
      t1011: abstract away SHA-1-specific constants
      t1304: abstract away SHA-1-specific constants
      t1300: abstract away SHA-1-specific constants
      t1405: sort reflog entries in a hash-independent way
      t1411: abstract away SHA-1-specific constants
      t1507: abstract away SHA-1-specific constants
      t2020: abstract away SHA-1 specific constants
      t2101: modernize test style
      t2101: abstract away SHA-1-specific constants
      t2107: abstract away SHA-1-specific constants
      format-patch: make cover letters always text/plain
      cache: add a function to read an object ID from a buffer
      server-info: remove unused members from struct pack_info
      Remove unused member in struct object_context
      packfile: remove unused member from struct pack_entry
      packfile: convert has_sha1_pack to object_id
      sha1-file: convert freshen functions to object_id
      packfile: convert find_pack_entry to object_id
      packfile: abstract away hash constant values
      pack-objects: abstract away hash algorithm
      pack-redundant: abstract away hash algorithm
      tree-walk: avoid hard-coded 20 constant
      tree-walk: convert get_tree_entry_follow_symlinks to object_id
      fsck: convert static functions to struct object_id
      submodule-config: convert structures to object_id
      split-index: convert struct split_index to object_id
      Update struct index_state to use struct object_id
      pack-redundant: convert linked lists to use struct object_id
      index-pack: abstract away hash function constant
      commit: convert uses of get_sha1_hex to get_oid_hex
      dir: convert struct untracked_cache_dir to object_id
      http: eliminate hard-coded constants
      revision: replace use of hard-coded constants
      upload-pack: replace use of several hard-coded constants
      diff: specify abbreviation size in terms of the_hash_algo
      builtin/receive-pack: avoid hard-coded constants for push certs
      sha1-file: add functions for hex empty tree and blob OIDs
      builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
      builtin/merge: switch tree functions to use object_id
      merge: convert empty tree constant to the_hash_algo
      sequencer: convert one use of EMPTY_TREE_SHA1_HEX
      submodule: convert several uses of EMPTY_TREE_SHA1_HEX
      wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
      builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
      builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
      sha1_file: convert cached object code to struct object_id
      cache-tree: use is_empty_tree_oid
      sequencer: use the_hash_algo for empty tree object ID
      dir: use the_hash_algo for empty blob object ID
      sha1_file: only expose empty object constants through git_hash_algo
      Update shell scripts to compute empty tree object ID
      add--interactive: compute the empty tree value
      merge-one-file: compute empty blob object ID
      Documentation: use 8-space tabs with Asciidoctor
      Documentation: render revisions correctly under Asciidoctor
      mailmap: update brian m. carlson's email address
      t/test-lib: add an SHA1 prerequisite
      t/test-lib: introduce ZERO_OID
      t: switch $_z40 to $ZERO_OID
      t/test-lib: introduce OID_REGEX
      t: switch $_x40 to $OID_REGEX
      t0000: annotate with SHA1 prerequisite
      t1007: annotate with SHA1 prerequisite
      t1512: skip test if not using SHA-1
      t4044: skip test if not using SHA-1
      t: skip pack tests if not using SHA-1
      t2203: abstract away SHA-1-specific constants
      t3103: abstract away SHA-1-specific constants
      t3702: abstract away SHA-1-specific constants
      t3905: abstract away SHA-1-specific constants
      t4007: abstract away SHA-1-specific constants
      t4008: abstract away SHA-1-specific constants
      t4014: abstract away SHA-1-specific constants
      t4020: abstract away SHA-1-specific constants
      t4022: abstract away SHA-1-specific constants
      t4029: fix test indentation
      t4029: abstract away SHA-1-specific constants
      t4030: abstract away SHA-1-specific constants
      t/lib-diff-alternative: abstract away SHA-1-specific constants
      t4205: sort log output in a hash-independent way
      t4042: abstract away SHA-1-specific constants
      t4045: abstract away SHA-1-specific constants
      t4208: abstract away SHA-1-specific constants
      t5300: abstract away SHA-1-specific constants
      sequencer: ensure labels that are object IDs are rewritten
      t3430: test clean-up

Ævar Arnfjörð Bjarmason (22):
      configure: fix a regression in PCRE v1 detection
      configure: detect redundant --with-libpcre & --with-libpcre1
      Makefile: make USE_LIBPCRE=YesPlease mean v2, not v1
      Makefile: fix broken bindir_relative variable
      Makefile: add a gitexecdir_relative variable
      Makefile: optionally symlink libexec/git-core binaries to bin/git
      Remove contrib/examples/*
      doc hash-function-transition: clarify how older gits die on NewHash
      doc hash-function-transition: clarify what SHAttered means
      git-svn: avoid warning on undef readline()
      Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
      Makefile: add a DEVOPTS to get all of -Wextra
      git{,-blame}.el: remove old bitrotting Emacs code
      .gitattributes: add *.pl extension for Perl
      .gitattributes: use the "perl" differ for Perl
      .gitattributes: add a diff driver for Python
      sha1-name.c: remove stray newline
      sha1-array.h: align function arguments
      git-p4: change "commitish" typo to "committish"
      sha1-name.c: move around the collect_ambiguous() function
      get_short_oid: sort ambiguous objects by type, then SHA-1
      git-credential-netrc: remove use of "autodie"


^ permalink raw reply	[relevance 1%]

* [ANNOUNCE] Git v2.18.0-rc1
@ 2018-06-04 13:53  1% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2018-06-04 13:53 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.18.0-rc1 is now available for testing
at the usual places.  It is comprised of 842 non-merge commits
since v2.17.0, contributed by 65 people, 20 of which are new faces.

I plan to go offline for most of the remainder of the week, and then
tag (hopefully) the last -rc early next week, with any urgent
regression fix accumulated on the list during this week.  Happy bug
hunting ;-)

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.18.0-rc1' 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.17.0 are as follows.
Welcome to the Git development community!

  Bill Ritcher, Birger Skogeng Pedersen, Casey Fitzpatrick,
  Dan Jacques, Drew DeVault, Eckhard S. Maaß, Erik E Brady,
  Florian Gamböck, Harald Nordgren, Leif Middelschulte,
  Loganaden Velvindron, Luis Marsano, Paul-Sebastian Ungureanu,
  Pedro Alvarez Piedehierro, Pratik Karki, Ryan Dammrose, Takuto
  Ikuta, Tao Qingyun, Wink Saville, and Yuki Kokubun.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Anders Kaseorg, Andreas Heiduk,
  Antonio Ospite, Beat Bolli, Ben Peart, Brandon Williams, brian
  m. carlson, Christian Couder, Christian Hesse, Clemens Buchacher,
  David Turner, Derrick Stolee, Elijah Newren, Eric Sunshine,
  Jameson Miller, Jeff King, Johannes Schindelin, Johannes Sixt,
  Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kaartic Sivaraam,
  Lars Schneider, Lucas Werkmeister, Luke Diamand, Martin Ågren,
  Michal Nazarewicz, Michele Locati, Nguyễn Thái Ngọc Duy,
  Olga Telezhnaya, Orgad Shaneh, Philip Oakley, Phillip Wood,
  Ramsay Jones, René Scharfe, Robert P. J. Day, Sergey Organov,
  Stefan Agner, Stefan Beller, SZEDER Gábor, Taylor Blau, Thomas
  Gummerer, Todd Zullinger, and Torsten Bögershausen.

----------------------------------------------------------------

Git 2.18 Release Notes (draft)
==============================

Updates since v2.17
-------------------

UI, Workflows & Features

 * Rename detection logic in "diff" family that is used in "merge" has
   learned to guess when all of x/a, x/b and x/c have moved to z/a,
   z/b and z/c, it is likely that x/d added in the meantime would also
   want to move to z/d by taking the hint that the entire directory
   'x' moved to 'z'.  A bug causing dirty files involved in a rename
   to be overwritten during merge has also been fixed as part of this
   work.  Incidentally, this also avoids updating a file in the
   working tree after a (non-trivial) merge whose result matches what
   our side originally had.

 * "git filter-branch" learned to use a different exit code to allow
   the callers to tell the case where there was no new commits to
   rewrite from other error cases.

 * When built with more recent cURL, GIT_SSL_VERSION can now specify
   "tlsv1.3" as its value.

 * "git gui" learned that "~/.ssh/id_ecdsa.pub" and
   "~/.ssh/id_ed25519.pub" are also possible SSH key files.
   (merge 2e2f0288ef bb/git-gui-ssh-key-files later to maint).

 * "git gui" performs commit upon CTRL/CMD+ENTER but the
   CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the
   same key binding.  It now does.
   (merge 28a1d94a06 bp/git-gui-bind-kp-enter later to maint).

 * "git gui" has been taught to work with old versions of tk (like
   8.5.7) that do not support "ttk::style theme use" as a way to query
   the current theme.
   (merge 4891961105 cb/git-gui-ttk-style later to maint).

 * "git rebase" has learned to honor "--signoff" option when using
   backends other than "am" (but not "--preserve-merges").

 * "git branch --list" during an interrupted "rebase -i" now lets
   users distinguish the case where a detached HEAD is being rebased
   and a normal branch is being rebased.

 * "git mergetools" learned talking to guiffy.

 * The scripts in contrib/emacs/ have outlived their usefulness and
   have been replaced with a stub that errors out and tells the user
   there are replacements.

 * The new "checkout-encoding" attribute can ask Git to convert the
   contents to the specified encoding when checking out to the working
   tree (and the other way around when checking in).

 * The "git config" command uses separate options e.g. "--int",
   "--bool", etc. to specify what type the caller wants the value to
   be interpreted as.  A new "--type=<typename>" option has been
   introduced, which would make it cleaner to define new types.

 * "git config --get" learned the "--default" option, to help the
   calling script.  Building on top of the above changes, the
   "git config" learns "--type=color" type.  Taken together, you can
   do things like "git config --get foo.color --default blue" and get
   the ANSI color sequence for the color given to foo.color variable,
   or "blue" if the variable does not exist.

 * "git ls-remote" learned an option to allow sorting its output based
   on the refnames being shown.

 * The command line completion (in contrib/) has been taught that "git
   stash save" has been deprecated ("git stash push" is the preferred
   spelling in the new world) and does not offer it as a possible
   completion candidate when "git stash push" can be.

 * "git gc --prune=nonsense" spent long time repacking and then
   silently failed when underlying "git prune --expire=nonsense"
   failed to parse its command line.  This has been corrected.

 * Error messages from "git push" can be painted for more visibility.

 * "git http-fetch" (deprecated) had an optional and experimental
   "feature" to fetch only commits and/or trees, which nobody used.
   This has been removed.

 * The functionality of "$GIT_DIR/info/grafts" has been superseded by
   the "refs/replace/" mechanism for some time now, but the internal
   code had support for it in many places, which has been cleaned up
   in order to drop support of the "grafts" mechanism.

 * "git worktree add" learned to check out an existing branch.

 * "git --no-pager cmd" did not have short-and-sweet single letter
   option. Now it does as "-P".
   (merge 7213c28818 js/no-pager-shorthand later to maint).

 * "git rebase" learned "--rebase-merges" to transplant the whole
   topology of commit graph elsewhere.

 * "git status" learned to pay attention to UI related diff
   configuration variables such as diff.renames.

 * The command line completion mechanism (in contrib/) learned to load
   custom completion file for "git $command" where $command is a
   custom "git-$command" that the end user has on the $PATH when using
   newer version of bash.

 * "git send-email" can sometimes offer confirmation dialog "Send this
   email?" with choices 'Yes', 'No', 'Quit', and 'All'.  A new action
   'Edit' has been added to this dialog's choice.

 * With merge.renames configuration set to false, the recursive merge
   strategy can be told not to spend cycles trying to find renamed
   paths and merge them accordingly.

 * "git status" learned to honor a new status.renames configuration to
   skip rename detection, which could be useful for those who want to
   do so without disabling the default rename detection done by the
   "git diff" command.

 * Command line completion (in contrib/) learned to complete pathnames
   for various commands better.

 * "git blame" learns to unhighlight uninteresting metadata from the
   originating commit on lines that are the same as the previous one,
   and also paint lines in different colors depending on the age of
   the commit.

 * Transfer protocol v2 learned to support the partial clone.

 * When a short hexadecimal string is used to name an object but there
   are multiple objects that share the string as the prefix of their
   names, the code lists these ambiguous candidates in a help message.
   These object names are now sorted according to their types for
   easier eyeballing.

 * "git fetch $there $refspec" that talks over protocol v2 can take
   advantage of server-side ref filtering; the code has been extended
   so that this mechanism triggers also when fetching with configured
   refspec.

 * Our HTTP client code used to advertise that we accept gzip encoding
   from the other side; instead, just let cURL library to advertise
   and negotiate the best one.

 * "git p4" learned to "unshelve" shelved commit from P4.
   (merge 123f631761 ld/p4-unshelve later to maint).


Performance, Internal Implementation, Development Support etc.

 * A "git fetch" from a repository with insane number of refs into a
   repository that is already up-to-date still wasted too many cycles
   making many lstat(2) calls to see if these objects at the tips
   exist as loose objects locally.  These lstat(2) calls are optimized
   away by enumerating all loose objects beforehand.
   It is unknown if the new strategy negatively affects existing use
   cases, fetching into a repository with many loose objects from a
   repository with small number of refs.

 * Git can be built to use either v1 or v2 of the PCRE library, and so
   far, the build-time configuration USE_LIBPCRE=YesPlease instructed
   the build procedure to use v1, but now it means v2.  USE_LIBPCRE1
   and USE_LIBPCRE2 can be used to explicitly choose which version to
   use, as before.

 * The build procedure learned to optionally use symbolic links
   (instead of hardlinks and copies) to install "git-foo" for built-in
   commands, whose binaries are all identical.

 * Conversion from uchar[20] to struct object_id continues.

 * The way "git worktree prune" worked internally has been simplified,
   by assuming how "git worktree move" moves an existing worktree to a
   different place.

 * Code clean-up for the "repository" abstraction.
   (merge 00a3da2a13 nd/remove-ignore-env-field later to maint).

 * Code to find the length to uniquely abbreviate object names based
   on packfile content, which is a relatively recent addtion, has been
   optimized to use the same fan-out table.

 * The mechanism to use parse-options API to automate the command line
   completion continues to get extended and polished.

 * Copies of old scripted Porcelain commands in contrib/examples/ have
   been removed.

 * Some tests that rely on the exact hardcoded values of object names
   have been updated in preparation for hash function migration.

 * Perf-test update.

 * Test helper update.

 * The effort continues to refactor the internal global data structure
   to make it possible to open multiple repositories, work with and
   then close them,

 * Small test-helper programs have been consolidated into a single
   binary.

 * API clean-up around ref-filter code.

 * Shell completion (in contrib) that gives list of paths have been
   optimized somewhat.

 * The index file is updated to record the fsmonitor section after a
   full scan was made, to avoid wasting the effort that has already
   spent.

 * Performance measuring framework in t/perf learned to help bisecting
   performance regressions.

 * Some multi-word source filenames are being renamed to separate
   words with dashes instead of underscores.

 * An reusable "memory pool" implementation has been extracted from
   fast-import.c, which in turn has become the first user of the
   mem-pool API.

 * A build-time option has been added to allow Git to be told to refer
   to its associated files relative to the main binary, in the same
   way that has been possible on Windows for quite some time, for
   Linux, BSDs and Darwin.

 * Precompute and store information necessary for ancestry traversal
   in a separate file to optimize graph walking.

 * The effort to pass the repository in-core structure throughout the
   API continues.  This round deals with the code that implements the
   refs/replace/ mechanism.

 * The build procedure "make DEVELOPER=YesPlease" learned to enable a
   bit more warning options depending on the compiler used to help
   developers more.  There also is "make DEVOPTS=tokens" knob
   available now, for those who want to help fixing warnings we
   usually ignore, for example.

 * A new version of the transport protocol is being worked on.

 * The code to interface to GPG has been restructured somewhat to make
   it cleaner to integrate with other types of signature systems later.

 * The code has been taught to use the duplicated information stored
   in the commit-graph file to learn the tree object name for a commit
   to avoid opening and parsing the commit object when it makes sense
   to do so.

 * "git gc" in a large repository takes a lot of time as it considers
   to repack all objects into one pack by default.  The command has
   been taught to pretend as if the largest existing packfile is
   marked with ".keep" so that it is left untouched while objects in
   other packs and loose ones are repacked.

 * The transport protocol v2 is getting updated further.

 * The codepath around object-info API has been taught to take the
   repository object (which in turn tells the API which object store
   the objects are to be located).

 * "git pack-objects" needs to allocate tons of "struct object_entry"
   while doing its work, and shrinking its size helps the performance
   quite a bit.

 * The implementation of "git rebase -i --root" has been updated to use
   the sequencer machinery more.

 * Developer support update, by using BUG() macro instead of die() to
   mark codepaths that should not happen more clearly.

 * Developer support.  Use newer GCC on one of the builds done at
   TravisCI.org to get more warnings and errors diagnosed.

 * Conversion from uchar[20] to struct object_id continues.

 * By code restructuring of submodule merge in merge-recursive,
   informational messages from the codepath are now given using the
   same mechanism as other output, and honor the merge.verbosity
   configuration.  The code also learned to give a few new messages
   when a submodule three-way merge resolves cleanly when one side
   records a descendant of the commit chosen by the other side.

 * Avoid unchecked snprintf() to make future code auditing easier.
   (merge ac4896f007 jk/snprintf-truncation later to maint).

 * Many tests hardcode the raw object names, which would change once
   we migrate away from SHA-1.  While some of them must test against
   exact object names, most of them do not have to use hardcoded
   constants in the test.  The latter kind of tests have been updated
   to test the moral equivalent of the original without hardcoding the
   actual object names.

 * The list of commands with their various attributes were spread
   across a few places in the build procedure, but it now is getting a
   bit more consolidated to allow more automation.

 * Quite a many tests assumed that newly created refs are made as
   loose refs using the files backend, which have been updated to use
   proper plumbing like rev-parse and update-ref, to avoid breakage
   once we start using different ref backends.


Also contains various documentation updates and code clean-ups.


Fixes since v2.17
-----------------

 * "git shortlog cruft" aborted with a BUG message when run outside a
   Git repository.  The command has been taught to complain about
   extra and unwanted arguments on its command line instead in such a
   case.
   (merge 4aa0161e83 ma/shortlog-revparse later to maint).

 * "git stash push -u -- <pathspec>" gave an unnecessary and confusing
   error message when there was no tracked files that match the
   <pathspec>, which has been fixed.
   (merge 353278687e tg/stash-untracked-with-pathspec-fix later to maint).

 * "git tag --contains no-such-commit" gave a full list of options
   after giving an error message.
   (merge 3bb0923f06 ps/contains-id-error-message later to maint).

 * "diff-highlight" filter (in contrib/) learned to undertand "git log
   --graph" output better.
   (merge 4551fbba14 jk/diff-highlight-graph-fix later to maint).

 * when refs that do not point at committish are given, "git
   filter-branch" gave a misleading error messages.  This has been
   corrected.
   (merge f78ab355e7 yk/filter-branch-non-committish-refs later to maint).

 * "git submodule status" misbehaved on a submodule that has been
   removed from the working tree.
   (merge 74b6bda32f rs/status-with-removed-submodule later to maint).

 * When credential helper exits very quickly without reading its
   input, it used to cause Git to die with SIGPIPE, which has been
   fixed.
   (merge a0d51e8d0e eb/cred-helper-ignore-sigpipe later to maint).

 * "git rebase --keep-empty" still removed an empty commit if the
   other side contained an empty commit (due to the "does an
   equivalent patch exist already?" check), which has been corrected.
   (merge 3d946165e1 pw/rebase-keep-empty-fixes later to maint).

 * Some codepaths, including the refs API, get and keep relative
   paths, that go out of sync when the process does chdir(2).  The
   chdir-notify API is introduced to let these codepaths adjust these
   cached paths to the new current directory.
   (merge fb9c2d2703 jk/relative-directory-fix later to maint).

 * "cd sub/dir && git commit ../path" ought to record the changes to
   the file "sub/path", but this regressed long time ago.
   (merge 86238e07ef bw/commit-partial-from-subdirectory-fix later to maint).

 * Recent introduction of "--log-destination" option to "git daemon"
   did not work well when the daemon was run under "--inetd" mode.
   (merge e67d906d73 lw/daemon-log-destination later to maint).

 * Small fix to the autoconf build procedure.
   (merge 249482daf0 es/fread-reads-dir-autoconf-fix later to maint).

 * Fix an unexploitable (because the oversized contents are not under
   attacker's control) buffer overflow.
   (merge d8579accfa bp/fsmonitor-bufsize-fix later to maint).

 * Recent simplification of build procedure forgot a bit of tweak to
   the build procedure of contrib/mw-to-git/
   (merge d8698987f3 ab/simplify-perl-makefile later to maint).

 * Moving a submodule that itself has submodule in it with "git mv"
   forgot to make necessary adjustment to the nested sub-submodules;
   now the codepath learned to recurse into the submodules.

 * "git config --unset a.b", when "a.b" is the last variable in an
   otherwise empty section "a", left an empty section "a" behind, and
   worse yet, a subsequent "git config a.c value" did not reuse that
   empty shell and instead created a new one.  These have been
   (partially) corrected.
   (merge c71d8bb38a js/empty-config-section-fix later to maint).

 * "git worktree remove" learned that "-f" is a shorthand for
   "--force" option, just like for "git worktree add".
   (merge d228eea514 sb/worktree-remove-opt-force later to maint).

 * The completion script (in contrib/) learned to clear cached list of
   command line options upon dot-sourcing it again in a more efficient
   way.
   (merge 94408dc71c sg/completion-clear-cached later to maint).

 * "git svn" had a minor thinko/typo which has been fixed.
   (merge 51db271587 ab/git-svn-get-record-typofix later to maint).

 * During a "rebase -i" session, the code could give older timestamp
   to commits created by later "pick" than an earlier "reword", which
   has been corrected.
   (merge 12f7babd6b js/ident-date-fix later to maint).

 * "git submodule status" did not check the symbolic revision name it
   computed for the submodule HEAD is not the NULL, and threw it at
   printf routines, which has been corrected.
   (merge 0b5e2ea7cf nd/submodule-status-fix later to maint).

 * When fed input that already has In-Reply-To: and/or References:
   headers and told to add the same information, "git send-email"
   added these headers separately, instead of appending to an existing
   one, which is a violation of the RFC.  This has been corrected.
   (merge 256be1d3f0 sa/send-email-dedup-some-headers later to maint).

 * "git fast-export" had a regression in v2.15.0 era where it skipped
   some merge commits in certain cases, which has been corrected.
   (merge be011bbe00 ma/fast-export-skip-merge-fix later to maint).

 * The code did not propagate the terminal width to subprocesses via
   COLUMNS environment variable, which it now does.  This caused
   trouble to "git column" helper subprocess when "git tag --column=row"
   tried to list the existing tags on a display with non-default width.
   (merge b5d5a567fb nd/term-columns later to maint).

 * We learned that our source files with ".pl" and ".py" extensions
   are Perl and Python files respectively and changes to them are
   better viewed as such with appropriate diff drivers.
   (merge 7818b619e2 ab/perl-python-attrs later to maint).

 * "git rebase -i" sometimes left intermediate "# This is a
   combination of N commits" message meant for the human consumption
   inside an editor in the final result in certain corner cases, which
   has been fixed.
   (merge 15ef69314d js/rebase-i-clean-msg-after-fixup-continue later to maint).

 * A test to see if the filesystem normalizes UTF-8 filename has been
   updated to check what we need to know in a more direct way, i.e. a
   path created in NFC form can be accessed with NFD form (or vice
   versa) to cope with APFS as well as HFS.
   (merge 742ae10e35 tb/test-apfs-utf8-normalization later to maint).

 * "git format-patch --cover --attach" created a broken MIME multipart
   message for the cover letter, which has been fixed by keeping the
   cover letter as plain text file.
   (merge 50cd54ef4e bc/format-patch-cover-no-attach later to maint).

 * The split-index feature had a long-standing and dormant bug in
   certain use of the in-core merge machinery, which has been fixed.
   (merge 7db118303a en/unpack-trees-split-index-fix later to maint).

 * Asciidoctor gives a reasonable imitation for AsciiDoc, but does not
   render illustration in a literal block correctly when indented with
   HT by default. The problem is fixed by forcing 8-space tabs.
   (merge 379805051d bc/asciidoctor-tab-width later to maint).

 * Code clean-up to adjust to a more recent lockfile API convention that
   allows lockfile instances kept on the stack.
   (merge 0fa5a2ed8d ma/lockfile-cleanup later to maint).

 * the_repository->index is not a allocated piece of memory but
   repo_clear() indiscriminately attempted to free(3) it, which has
   been corrected.
   (merge 74373b5f10 nd/repo-clear-keep-the-index later to maint).

 * Code clean-up to avoid non-standard-conformant pointer arithmetic.
   (merge c112084af9 rs/no-null-ptr-arith-in-fast-export later to maint).

 * Code clean-up to turn history traversal more robust in a
   semi-corrupt repository.
   (merge 8702b30fd7 jk/unavailable-can-be-missing later to maint).

 * "git update-ref A B" is supposed to ensure that ref A does not yet
   exist when B is a NULL OID, but this check was not done correctly
   for pseudo-refs outside refs/ hierarchy, e.g. MERGE_HEAD.

 * "git submodule update" and "git submodule add" supported the
   "--reference" option to borrow objects from a neighbouring local
   repository like "git clone" does, but lacked the more recent
   invention "--dissociate".  Also "git submodule add" has been taught
   to take the "--progress" option.
   (merge a0ef29341a cf/submodule-progress-dissociate later to maint).

 * Update credential-netrc helper (in contrib/) to allow customizing
   the GPG used to decrypt the encrypted .netrc file.
   (merge 786ef50a23 lm/credential-netrc later to maint).

 * "git submodule update" attempts two different kinds of "git fetch"
   against the upstream repository to grab a commit bound at the
   submodule's path, but it incorrectly gave up if the first kind
   (i.e. a normal fetch) failed, making the second "last resort" one
   (i.e. fetching an exact commit object by object name) ineffective.
   This has been corrected.
   (merge e30d833671 sb/submodule-update-try-harder later to maint).

 * Error behaviour of "git grep" when it cannot read the index was
   inconsistent with other commands that uses the index, which has
   been corrected to error out early.
   (merge b2aa84c789 sb/grep-die-on-unreadable-index later to maint).

 * We used to call regfree() after regcomp() failed in some codepaths,
   which have been corrected.
   (merge 17154b1576 ma/regex-no-regfree-after-comp-fail later to maint).

 * The import-tars script (in contrib/) has been taught to handle
   tarballs with overly long paths that use PAX extended headers.
   (merge 12ecea46e3 pa/import-tars-long-names later to maint).

 * "git rev-parse Y..." etc. misbehaved when given endpoints were
   not committishes.
   (merge 0ed556d38f en/rev-parse-invalid-range later to maint).

 * "git pull -recurse-submodules --rebase", when the submodule
   repository's history did not have anything common between ours and
   the upstream's, failed to execute.  We need to fetch from them to
   continue even in such a case.
   (merge 4d36f88be7 jt/submodule-pull-recurse-rebase later to maint).

 * "git remote update" can take both a single remote nickname and a
   nickname for remote groups, but only one of them was documented.
   (merge a97447a42a nd/remote-update-doc later to maint).

 * Other minor doc, test and build updates and code cleanups.
   (merge 248f66ed8e nd/trace-with-env later to maint).
   (merge 14ced5562c ys/bisect-object-id-missing-conversion-fix later to maint).
   (merge 5988eb631a ab/doc-hash-brokenness later to maint).
   (merge a4d4e32a70 pk/test-avoid-pipe-hiding-exit-status later to maint).
   (merge 05e293c1ac jk/flockfile-stdio later to maint).
   (merge e9184b0789 jk/t5561-missing-curl later to maint).
   (merge b1801b85a3 nd/worktree-move later to maint).
   (merge bbd374dd20 ak/bisect-doc-typofix later to maint).
   (merge 4855f06fb3 mn/send-email-credential-doc later to maint).
   (merge 8523b1e355 en/doc-typoes later to maint).
   (merge 43b44ccfe7 js/t5404-path-fix later to maint).
   (merge decf711fc1 ps/test-chmtime-get later to maint).
   (merge 22d11a6e8e es/worktree-docs later to maint).
   (merge 92a5dbbc22 tg/use-git-contacts later to maint).
   (merge adc887221f tq/t1510 later to maint).
   (merge bed21a8ad6 sg/doc-gc-quote-mismatch-fix later to maint).
   (merge 73364e4f10 tz/doc-git-urls-reference later to maint).
   (merge cd1e606bad bc/mailmap-self later to maint).
   (merge f7997e3682 ao/config-api-doc later to maint).
   (merge ee930754d8 jk/apply-p-doc later to maint).
   (merge 011b648646 nd/pack-format-doc later to maint).
   (merge 87a6bb701a sg/t5310-jgit-bitmap-test later to maint).
   (merge f6b82970aa sg/t5516-fixes later to maint).
   (merge 4362da078e sg/t7005-spaces-in-filenames-cleanup later to maint).
   (merge 7d0ee47c11 js/test-unset-prereq later to maint).
   (merge 5356a3c354 ah/misc-doc-updates later to maint).
   (merge 92c4a7a129 nd/completion-aliasfiletype-typofix later to maint).
   (merge 58bd77b66a nd/pack-unreachable-objects-doc later to maint).
   (merge 4ed79d5203 sg/t6500-no-redirect-of-stdin later to maint).
   (merge 17b8a2d6cd jk/config-blob-sans-repo later to maint).
   (merge 590551ca2c rd/tag-doc-lightweight later to maint).
   (merge 44f560fc16 rd/init-typo later to maint).
   (merge f156a0934a rd/p4-doc-markup-env later to maint).
   (merge 2a00502b14 tg/doc-sec-list later to maint).

----------------------------------------------------------------

Changes since v2.17.0 are as follows:

Anders Kaseorg (1):
      Documentation/git-bisect.txt: git bisect term → git bisect terms

Andreas Heiduk (9):
      git-svn: search --authors-prog in PATH too
      git-svn: allow empty email-address using authors-prog and authors-file
      doc: improve formatting in githooks.txt
      doc: align 'diff --no-index' in text and synopsis
      doc: clarify ignore rules for git ls-files
      doc: add '-d' and '-o' for 'git push'
      git-svn: remove ''--add-author-from' for 'commit-diff'
      doc: add note about shell quoting to revision.txt
      doc: normalize [--options] to [options] in git-diff

Antonio Ospite (1):
      doc: fix config API documentation about config_with_options

Beat Bolli (1):
      git-gui: search for all current SSH key types

Ben Peart (7):
      fsmonitor: fix incorrect buffer size when printing version number
      fsmonitor: force index write after full scan
      test-drop-caches: simplify delay loading of NtSetSystemInformation
      merge: update documentation for {merge,diff}.renameLimit
      merge: add merge.renames config setting
      merge: pass aggressive when rename detection is turned off
      add status config and command line options for rename detection

Bill Ritcher (1):
      mergetools: add support for guiffy

Birger Skogeng Pedersen (1):
      git-gui: bind CTRL/CMD+numpad ENTER to do_commit

Brandon Williams (79):
      pkt-line: introduce packet_read_with_status
      pkt-line: allow peeking a packet line without consuming it
      pkt-line: add delim packet support
      upload-pack: convert to a builtin
      upload-pack: factor out processing lines
      transport: use get_refs_via_connect to get refs
      connect: convert get_remote_heads to use struct packet_reader
      connect: discover protocol version outside of get_remote_heads
      transport: store protocol version
      protocol: introduce enum protocol_version value protocol_v2
      test-pkt-line: introduce a packet-line test helper
      serve: introduce git-serve
      ls-refs: introduce ls-refs server command
      connect: request remote refs using v2
      transport: convert get_refs_list to take a list of ref prefixes
      transport: convert transport_get_remote_refs to take a list of ref prefixes
      ls-remote: pass ref prefixes when requesting a remote's refs
      fetch: pass ref prefixes when fetching
      push: pass ref prefixes when pushing
      upload-pack: introduce fetch server command
      fetch-pack: perform a fetch using v2
      fetch-pack: support shallow requests
      connect: refactor git_connect to only get the protocol version once
      connect: don't request v2 when pushing
      transport-helper: remove name parameter
      transport-helper: refactor process_connect_service
      transport-helper: introduce stateless-connect
      pkt-line: add packet_buf_write_len function
      remote-curl: create copy of the service name
      remote-curl: store the protocol version the server responded with
      http: allow providing extra headers for http requests
      http: don't always add Git-Protocol header
      http: eliminate "# service" line when using protocol v2
      remote-curl: implement stateless-connect command
      remote-curl: don't request v2 when pushing
      commit: allow partial commits with relative paths
      serve: introduce the server-option capability
      ls-remote: send server options when using protocol v2
      fetch: send server options when using protocol v2
      refspec: move refspec parsing logic into its own file
      refspec: rename struct refspec to struct refspec_item
      refspec: factor out parsing a single refspec
      refspec: introduce struct refspec
      refspec: convert valid_fetch_refspec to use parse_refspec
      submodule--helper: convert push_check to use struct refspec
      pull: convert get_tracking_branch to use refspec_item_init
      transport: convert transport_push to use struct refspec
      remote: convert check_push_refs to use struct refspec
      remote: convert match_push_refs to use struct refspec
      clone: convert cmd_clone to use refspec_item_init
      fast-export: convert to use struct refspec
      remote: convert push refspecs to struct refspec
      remote: convert fetch refspecs to struct refspec
      remote: remove add_prune_tags_to_fetch_refspec
      transport-helper: convert to use struct refspec
      fetch: convert fetch_one to use struct refspec
      fetch: convert refmap to use struct refspec
      refspec: remove the deprecated functions
      fetch: convert do_fetch to take a struct refspec
      fetch: convert get_ref_map to take a struct refspec
      fetch: convert prune_refs to take a struct refspec
      remote: convert get_stale_heads to take a struct refspec
      remote: convert apply_refspecs to take a struct refspec
      remote: convert query_refspecs to take a struct refspec
      remote: convert get_ref_match to take a struct refspec
      remote: convert match_explicit_refs to take a struct refspec
      push: check for errors earlier
      push: convert to use struct refspec
      transport: convert transport_push to take a struct refspec
      send-pack: store refspecs in a struct refspec
      transport: remove transport_verify_remote_names
      http-push: store refspecs in a struct refspec
      remote: convert match_push_refs to take a struct refspec
      remote: convert check_push_refs to take a struct refspec
      submodule: convert push_unpushed_submodules to take a struct refspec
      refspec: consolidate ref-prefix generation logic
      fetch: generate ref-prefixes when using a configured refspec
      remote-curl: accept all encodings supported by curl
      remote-curl: accept compressed responses with protocol v2

Casey Fitzpatrick (3):
      submodule: clean up substitutions in script
      submodule: add --progress option to add command
      submodule: add --dissociate option to add/update commands

Christian Couder (7):
      perf/aggregate: add display_dir()
      perf/aggregate: add --sort-by=regression option
      perf/run: add --subsection option
      t/perf: add scripts to bisect performance regressions
      perf/aggregate: use Getopt::Long for option parsing
      perf/bisect_run_script: disable codespeed
      t990X: use '.git/objects' as 'deep inside .git' path

Christian Hesse (2):
      perl: fix installing modules from contrib
      Makefile: mark perllibdir as a .PHONY target

Clemens Buchacher (2):
      git-gui: workaround ttk:style theme use
      completion: improve ls-files filter performance

Dan Jacques (3):
      Makefile: generate Perl header from template file
      Makefile: add Perl runtime prefix support
      exec_cmd: RUNTIME_PREFIX on some POSIX systems

David Turner (1):
      t: make many tests depend less on the refs being files

Derrick Stolee (20):
      packfile: define and use bsearch_pack()
      sha1_name: use bsearch_pack() for abbreviations
      csum-file: rename hashclose() to finalize_hashfile()
      csum-file: refactor finalize_hashfile() method
      commit-graph: add format document
      graph: add commit graph design document
      commit-graph: create git-commit-graph builtin
      commit-graph: implement write_commit_graph()
      commit-graph: implement git-commit-graph write
      commit-graph: implement git commit-graph read
      commit-graph: add core.commitGraph setting
      commit-graph: close under reachability
      commit: integrate commit graph with commit parsing
      commit-graph: read only from specific pack-indexes
      commit-graph: build graph from starting commits
      commit-graph: implement "--append" option
      treewide: rename tree to maybe_tree
      commit: create get_commit_tree() method
      treewide: replace maybe_tree with accessor methods
      commit-graph: lazy-load trees for commits

Drew DeVault (1):
      git-send-email: allow re-editing of message

Eckhard S. Maaß (1):
      wt-status: use settings from git_diff_ui_config

Elijah Newren (72):
      directory rename detection: basic testcases
      directory rename detection: directory splitting testcases
      directory rename detection: testcases to avoid taking detection too far
      directory rename detection: partially renamed directory testcase/discussion
      directory rename detection: files/directories in the way of some renames
      directory rename detection: testcases checking which side did the rename
      directory rename detection: more involved edge/corner testcases
      directory rename detection: testcases exploring possibly suboptimal merges
      directory rename detection: miscellaneous testcases to complete coverage
      directory rename detection: tests for handling overwriting untracked files
      directory rename detection: tests for handling overwriting dirty files
      merge-recursive: move the get_renames() function
      merge-recursive: introduce new functions to handle rename logic
      merge-recursive: fix leaks of allocated renames and diff_filepairs
      merge-recursive: make !o->detect_rename codepath more obvious
      merge-recursive: split out code for determining diff_filepairs
      merge-recursive: make a helper function for cleanup for handle_renames
      merge-recursive: add get_directory_renames()
      merge-recursive: check for directory level conflicts
      merge-recursive: add computation of collisions due to dir rename & merging
      merge-recursive: check for file level conflicts then get new name
      merge-recursive: when comparing files, don't include trees
      merge-recursive: apply necessary modifications for directory renames
      merge-recursive: avoid clobbering untracked files with directory renames
      merge-recursive: fix overwriting dirty files involved in renames
      merge-recursive: fix remaining directory rename + dirty overwrite cases
      directory rename detection: new testcases showcasing a pair of bugs
      merge-recursive: avoid spurious rename/rename conflict from dir renames
      merge-recursive: ensure we write updates for directory-renamed file
      Documentation: fix several one-character-off spelling errors
      Documentation: normalize spelling of 'normalised'
      directory rename detection: basic testcases
      directory rename detection: directory splitting testcases
      directory rename detection: testcases to avoid taking detection too far
      directory rename detection: partially renamed directory testcase/discussion
      directory rename detection: files/directories in the way of some renames
      directory rename detection: testcases checking which side did the rename
      directory rename detection: more involved edge/corner testcases
      directory rename detection: testcases exploring possibly suboptimal merges
      directory rename detection: miscellaneous testcases to complete coverage
      directory rename detection: tests for handling overwriting untracked files
      directory rename detection: tests for handling overwriting dirty files
      merge-recursive: move the get_renames() function
      merge-recursive: introduce new functions to handle rename logic
      merge-recursive: fix leaks of allocated renames and diff_filepairs
      merge-recursive: make !o->detect_rename codepath more obvious
      merge-recursive: split out code for determining diff_filepairs
      merge-recursive: make a helper function for cleanup for handle_renames
      Make running git under other debugger-like programs easy
      unpack_trees: fix breakage when o->src_index != o->dst_index
      merge-recursive: add get_directory_renames()
      merge-recursive: check for directory level conflicts
      merge-recursive: add computation of collisions due to dir rename & merging
      merge-recursive: check for file level conflicts then get new name
      merge-recursive: when comparing files, don't include trees
      merge-recursive: apply necessary modifications for directory renames
      merge-recursive: avoid clobbering untracked files with directory renames
      merge-recursive: fix overwriting dirty files involved in renames
      merge-recursive: fix remaining directory rename + dirty overwrite cases
      directory rename detection: new testcases showcasing a pair of bugs
      merge-recursive: avoid spurious rename/rename conflict from dir renames
      merge-recursive: improve add_cacheinfo error handling
      merge-recursive: move more is_dirty handling to merge_content
      merge-recursive: avoid triggering add_cacheinfo error with dirty mod
      t6046: testcases checking whether updates can be skipped in a merge
      merge-recursive: fix was_tracked() to quit lying with some renamed paths
      merge-recursive: fix remainder of was_dirty() to use original index
      merge-recursive: make "Auto-merging" comment show for other merges
      merge-recursive: fix check for skipability of working tree updates
      merge-recursive: provide pair of `unpack_trees_{start,finish}()`
      rev-parse: check lookup'ed commit references for NULL
      RelNotes: remove duplicate release note

Eric Sunshine (5):
      t3200: verify "branch --list" sanity when rebasing from detached HEAD
      t2028: tighten grep expression to make "move worktree" test more robust
      git-worktree.txt: recommend 'git worktree remove' over manual deletion
      git-worktree.txt: unify command-line prompt in example blocks
      configure.ac: fix botched FREAD_READS_DIRECTORIES check

Erik E Brady (1):
      credential: ignore SIGPIPE when writing to credential helpers

Florian Gamböck (1):
      completion: load completion file for external subcommand

Harald Nordgren (1):
      ls-remote: create '--sort' option

Jameson Miller (3):
      fast-import: rename mem_pool type to mp_block
      fast-import: introduce mem_pool type
      mem-pool: move reusable parts of memory pool into its own file

Jeff King (54):
      diff-highlight: correct test graph diagram
      diff-highlight: use test_tick in graph test
      diff-highlight: prefer "echo" to "cat" in tests
      diff-highlight: test interleaved parallel lines of history
      diff-highlight: test graphs with --color
      diff-highlight: use flush() helper consistently
      diff-highlight: detect --graph by indent
      set_git_dir: die when setenv() fails
      add chdir-notify API
      set_work_tree: use chdir_notify
      refs: use chdir_notify to update cached relative paths
      config: move flockfile() closer to unlocked functions
      t5561: drop curl stderr redirects
      t5561: skip tests if curl is not available
      ref-filter: use "struct object_id" consistently
      ref-filter: make ref_array_item allocation more consistent
      ref-filter: factor ref_array pushing into its own function
      t7004: fix mistaken tag name
      gpg-interface: handle bool user.signingkey
      gpg-interface: modernize function declarations
      gpg-interface: use size_t for signature buffer size
      gpg-interface: fix const-correctness of "eol" pointer
      gpg-interface: extract gpg line matching helper
      gpg-interface: find the last gpg signature line
      apply: clarify "-p" documentation
      pager: set COLUMNS to term_columns()
      mark_tree_contents_uninteresting(): drop missing object check
      mark_parents_uninteresting(): drop missing object check
      mark_parents_uninteresting(): replace list with stack
      mark_parents_uninteresting(): avoid most allocation
      get_main_ref_store: BUG() when outside a repository
      config: die when --blob is used outside a repository
      http: use strbufs instead of fixed buffers
      log_write_email_headers: use strbufs
      shorten_unambiguous_ref: use xsnprintf
      fmt_with_err: add a comment that truncation is OK
      submodule-config: verify submodule names as paths
      is_ntfs_dotgit: use a size_t for traversing string
      is_hfs_dotgit: match other .git files
      skip_prefix: add case-insensitive variant
      verify_path: drop clever fallthrough
      verify_dotfile: mention case-insensitivity in comment
      update-index: stat updated files earlier
      verify_path: disallow symlinks in .gitmodules
      index-pack: make fsck error message more specific
      fsck: simplify ".git" check
      fsck: actually fsck blob data
      fsck: detect gitmodules files
      fsck: handle promisor objects in .gitmodules check
      fsck: check .gitmodules content
      fsck: call fsck_finish() after fscking objects
      unpack-objects: call fsck_finish() after fscking objects
      index-pack: check .gitmodules files with --strict
      fsck: complain when .gitmodules is a symlink

Johannes Schindelin (68):
      git_config_set: fix off-by-two
      t1300: rename it to reflect that `repo-config` was deprecated
      t1300: demonstrate that --replace-all can "invent" newlines
      config --replace-all: avoid extra line breaks
      t1300: avoid relying on a bug
      t1300: remove unreasonable expectation from TODO
      t5404: relax overzealous test
      t1300: add a few more hairy examples of sections becoming empty
      t1300: `--unset-all` can leave an empty section behind (bug)
      config: introduce an optional event stream while parsing
      config: avoid using the global variable `store`
      config_set_store: rename some fields for consistency
      git_config_set: do not use a state machine
      git_config_set: make use of the config parser's event stream
      git config --unset: remove empty sections (in the common case)
      git_config_set: reuse empty sections
      exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
      mingw/msvc: use the new-style RUNTIME_PREFIX helper
      color: introduce support for colorizing stderr
      push: test to verify that push errors are colored
      config: document the settings to colorize push errors/hints
      gettext: avoid initialization if the locale dir is not present
      git_setup_gettext: plug memory leak
      sequencer: avoid using errno clobbered by rollback_lock_file()
      sequencer: make rearrange_squash() a bit more obvious
      sequencer: refactor how original todo list lines are accessed
      sequencer: offer helpful advice when a command was rescheduled
      sequencer: introduce new commands to reset the revision
      sequencer: introduce the `merge` command
      sequencer: fast-forward `merge` commands, if possible
      rebase-helper --make-script: introduce a flag to rebase merges
      rebase: introduce the --rebase-merges option
      sequencer: make refs generated by the `label` command worktree-local
      sequencer: handle post-rewrite for merge commands
      rebase --rebase-merges: avoid "empty merges"
      pull: accept --rebase=merges to recreate the branch topology
      rebase -i: introduce --rebase-merges=[no-]rebase-cousins
      rebase -i --rebase-merges: add a section to the man page
      argv_array: offer to split a string by whitespace
      commit: Let the callback of for_each_mergetag return on error
      replace: avoid using die() to indicate a bug
      tests: introduce test_unset_prereq, for debugging
      replace: "libify" create_graft() and callees
      replace: prepare create_graft() for converting graft files wholesale
      replace: introduce --convert-graft-file
      Add a test for `git replace --convert-graft-file`
      Deprecate support for .git/info/grafts
      filter-branch: stop suggesting to use grafts
      technical/shallow: stop referring to grafts
      technical/shallow: describe why shallow cannot use replace refs
      Remove obsolete script to convert grafts to replace refs
      rebase -i: demonstrate bugs with fixup!/squash! commit messages
      rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
      sequencer: always commit without editing when asked for
      rebase --skip: clean up commit message after a failed fixup/squash
      sequencer: extract helper to update active_cache_tree
      sequencer: learn about the special "fake root commit" handling
      rebase -i --root: let the sequencer handle even the initial part
      sequencer: allow introducing new root commits
      rebase --rebase-merges: a "merge" into a new root is a fast-forward
      rebase --rebase-merges: root commits can be cousins, too
      test-tool: help verifying BUG() code paths
      run-command: use BUG() to report bugs, not die()
      Replace all die("BUG: ...") calls by BUG() ones
      Convert remaining die*(BUG) messages
      config: a user-provided invalid section is not a BUG
      is_ntfs_dotgit: match other .git files
      is_{hfs,ntfs}_dotgitmodules: add tests

Johannes Sixt (2):
      sequencer: reset the committer date before commits
      git: add -P as a short option for --no-pager

Jonathan Nieder (6):
      sha1_file: allow map_sha1_file_1 to handle arbitrary repositories
      sha1_file: allow sha1_loose_object_info to handle arbitrary repositories
      Makefile: remove unused @@PERLLIBDIR@@ substitution variable
      Makefile: quote $INSTLIBDIR when passing it to sed
      packfile: add repository argument to packed_object_info
      fetch: do not pass ref-prefixes for fetch by exact SHA1

Jonathan Tan (5):
      grep: remove "repo" arg from non-supporting funcs
      upload-pack: fix error message typo
      upload-pack: read config when serving protocol v2
      {fetch,upload}-pack: support filter in protocol v2
      submodule: do not pass null OID to setup_revisions

Junio C Hamano (21):
      stash: fix nonsense pipeline
      The first batch for 2.18 cycle
      The second batch for 2.18
      The third batch for 2.18
      Revert "Merge branch 'en/rename-directory-detection'"
      gc: do not upcase error message shown with die()
      parseopt: handle malformed --expire arguments more nicely
      The fourth batch for 2.18
      The fifth batch for 2.18
      argv-array: return the pushed string from argv_push*()
      Git 2.13.7
      Git 2.14.4
      Git 2.15.2
      Git 2.16.4
      Git 2.17.1
      The sixth batch for 2.18
      The seventh batch for 2.18
      Git 2.18-rc0
      refspec-api: avoid uninitialized field in refspec item
      A bit more topics before -rc1
      Git 2.18-rc1

Kaartic Sivaraam (1):
      branch --list: print useful info whilst interactive rebasing a detached HEAD

Lars Schneider (10):
      strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
      strbuf: add xstrdup_toupper()
      strbuf: add a case insensitive starts_with()
      utf8: teach same_encoding() alternative UTF encoding names
      utf8: add function to detect prohibited UTF-16/32 BOM
      utf8: add function to detect a missing UTF-16/32 BOM
      convert: add 'working-tree-encoding' attribute
      convert: check for detectable errors in UTF encodings
      convert: add tracing for 'working-tree-encoding' attribute
      convert: add round trip check based on 'core.checkRoundtripEncoding'

Leif Middelschulte (1):
      merge-recursive: give notice when submodule commit gets fast-forwarded

Loganaden Velvindron (1):
      http: allow use of TLS 1.3

Lucas Werkmeister (1):
      daemon.c: fix condition for redirecting stderr

Luis Marsano (2):
      git-credential-netrc: adapt to test framework for git
      git-credential-netrc: accept gpg option

Luke Diamand (1):
      git-p4: add unshelve command

Martin Ågren (24):
      git-shortlog.txt: reorder usages
      shortlog: add usage-string for stdin-reading
      shortlog: disallow left-over arguments outside repo
      doc: convert \--option to --option
      doc: convert [\--] to [--]
      git-[short]log.txt: unify quoted standalone --
      git-submodule.txt: quote usage in monospace, drop backslash
      fast-export: fix regression skipping some merge-commits
      http-fetch: make `-a` standard behaviour
      walker: drop fields of `struct walker` which are always 1
      t/helper/test-write-cache: clean up lock-handling
      refs.c: do not die if locking fails in `write_pseudoref()`
      refs.c: do not die if locking fails in `delete_pseudoref()`
      lock_file: make function-local locks non-static
      lock_file: move static locks into functions
      refs.c: refer to "object ID", not "sha1", in error messages
      t1400: add tests around adding/deleting pseudorefs
      refs: handle zero oid for pseudorefs
      merge: setup `opts` later in `checkout_fast_forward()`
      config: free resources of `struct config_store_data`
      config: let `config_store_data_clear()` handle `value_regex`
      config: let `config_store_data_clear()` handle `key`
      regex: do not call `regfree()` if compilation fails
      unpack_trees_options: free messages when done

Michal Nazarewicz (1):
      send-email: simplify Gmail example in the documentation

Michele Locati (1):
      filter-branch: return 2 when nothing to rewrite

Nguyễn Thái Ngọc Duy (108):
      repository: initialize the_repository in main()
      repository.c: move env-related setup code back to environment.c
      repository.c: delete dead functions
      sha1_file.c: move delayed getenv(altdb) back to setup_git_env()
      repository: delete ignore_env member
      gc.txt: more details about what gc does
      worktree: delete dead code
      worktree prune: improve prune logic when worktree is moved
      repository.h: add comment and clarify repo_set_gitdir
      git.c: move cmd_struct declaration up
      git.c: add hidden option --list-parseopt-builtins
      completion: mention the oldest version we need to support
      completion: factor out _git_xxx calling code
      completion: add --option completion for most builtin commands
      completion: delete option-only completion commands
      completion: use __gitcomp_builtin in _git_ls_tree
      completion: use __gitcomp_builtin in _git_cherry
      packfile: keep prepare_packed_git() private
      t/helper: add an empty test-tool program
      t/helper: merge test-chmtime into test-tool
      t/helper: merge test-sha1 into test-tool
      t/helper: merge test-lazy-init-name-hash into test-tool
      t/helper: merge test-config into test-tool
      t/helper: merge test-ctype into test-tool
      t/helper: merge test-date into test-tool
      t/helper: merge (unused) test-delta into test-tool
      t/helper: merge test-drop-caches into test-tool
      t/helper: merge test-dump-cache-tree into test-tool
      t/helper: merge test-dump-split-index into test-tool
      t/helper: merge test-example-decorate into test-tool
      t/helper: merge test-genrandom into test-tool
      t/helper: merge test-hashmap into test-tool
      t/helper: merge test-index-version into test-tool
      t/helper: merge (unused) test-match-trees into test-tool
      t/helper: merge (unused) test-mergesort into test-tool
      t/helper: merge test-mktemp into test-tool
      t/helper: merge test-online-cpus into test-tool
      t/helper: merge test-path-utils into test-tool
      t/helper: merge test-prio-queue into test-tool
      t/helper: merge test-read-cache into test-tool
      t/helper: merge test-ref-store into test-tool
      t/helper: merge test-regex into test-tool
      t/helper: merge test-revision-walking into test-tool
      t/helper: merge test-run-command into test-tool
      t/helper: merge test-scrap-cache-tree into test-tool
      t/helper: merge test-sha1-array into test-tool
      t/helper: merge test-sigchain into test-tool
      t/helper: merge test-strcmp-offset into test-tool
      t/helper: merge test-string-list into test-tool
      t/helper: merge test-submodule-config into test-tool
      t/helper: merge test-subprocess into test-tool
      t/helper: merge test-urlmatch-normalization into test-tool
      t/helper: merge test-wildmatch into test-tool
      t/helper: merge test-write-cache into test-tool
      trace.c: export trace_setup_key
      read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean
      pack-objects: a bit of document about struct object_entry
      pack-objects: turn type and in_pack_type to bitfields
      pack-objects: use bitfield for object_entry::dfs_state
      pack-objects: use bitfield for object_entry::depth
      pack-objects: move in_pack_pos out of struct object_entry
      pack-objects: move in_pack out of struct object_entry
      pack-objects: refer to delta objects by index instead of pointer
      pack-objects: shrink z_delta_size field in struct object_entry
      pack-objects: don't check size when the object is bad
      pack-objects: clarify the use of object_entry::size
      pack-objects: shrink size field in struct object_entry
      pack-objects: shrink delta_size field in struct object_entry
      pack-objects: reorder members to shrink struct object_entry
      ci: exercise the whole test suite with uncommon code in pack-objects
      t7700: have closing quote of a test at the beginning of line
      repack: add --keep-pack option
      gc: add --keep-largest-pack option
      gc: add gc.bigPackThreshold config
      gc: handle a corner case in gc.bigPackThreshold
      gc --auto: exclude base pack if not enough mem to "repack -ad"
      pack-objects: show some progress when counting kept objects
      connect.c: mark die_initial_contact() NORETURN
      Makefile: detect compiler and enable more warnings in DEVELOPER=1
      submodule--helper: don't print null in 'submodule status'
      doc: keep first level section header in upper case
      pack-objects: validation and documentation about unreachable options
      completion: fix misspelled config key aliasesfiletype
      repository: fix free problem with repo_clear(the_repository)
      generate-cmds.sh: factor out synopsis extract code
      generate-cmds.sh: export all commands to command-list.h
      help: use command-list.h for common command list
      Remove common-cmds.h
      pack-format.txt: more details on pack file format
      column: fix off-by-one default width
      commit.h: rearrange 'index' to shrink struct commit
      git.c: convert --list-* to --list-cmds=*
      git --list-cmds: collect command list in a string_list
      completion: implement and use --list-cmds=main,others
      git: support --list-cmds=list-<category>
      help: add "-a --verbose" to list all commands with synopsis
      help: use command-list.txt for the source of guides
      command-list.txt: documentation and guide line
      completion: let git provide the completable command list
      completion: reduce completable command list
      Move declaration for alias.c to alias.h
      completion: add and use --list-cmds=nohelpers
      completion: add and use --list-cmds=alias
      completion: allow to customize the completable command list
      travis-ci: run gcc-8 on linux-gcc jobs
      Use OPT_SET_INT_F() for cmdline option specification
      remote.txt: update documentation for 'update' command
      remote: doc typofix

Olga Telezhnaya (6):
      ref-filter: add shortcut to work with strbufs
      ref-filter: start adding strbufs with errors
      ref-filter: add return value && strbuf to handlers
      ref-filter: change parsing function error handling
      ref-filter: add return value to parsers
      ref-filter: libify get_ref_atom_value()

Orgad Shaneh (1):
      git-rebase--interactive: fix copy-paste mistake

Paul-Sebastian Ungureanu (2):
      parse-options: do not show usage upon invalid option value
      t/helper: 'test-chmtime (--get|-g)' to print only the mtime

Pedro Alvarez Piedehierro (1):
      import-tars: read overlong names from pax extended header

Philip Oakley (1):
      Avoid multiple PREFIX definitions

Phillip Wood (7):
      rebase --root: stop assuming squash_onto is unset
      rebase -i --keep-empty: don't prune empty commits
      rebase: respect --no-keep-empty
      rebase: extend --signoff support
      rebase -p: error out if --signoff is given
      rebase --keep-empty: always use interactive rebase
      rebase --rebase-merges: add test for --keep-empty

Pratik Karki (1):
      test: avoid pipes in git related commands for test

Ramsay Jones (1):
      BUG_exit_code: fix sparse "symbol not declared" warning

René Scharfe (8):
      sha1_name: use bsearch_pack() in unique_in_pack()
      bisect: use oid_to_hex() for converting object_id hashes to hex strings
      run-command: use strbuf_addstr() for adding a string to a strbuf
      submodule: check for NULL return of get_submodule_ref_store()
      replace_object: use oidmap
      fast-export: avoid NULL pointer arithmetic
      t5512: run git fetch inside test
      fsmonitor: use internal argv_array of struct child_process

Robert P. J. Day (4):
      Use proper syntax for replaceables in command docs
      tag: clarify in the doc that a tag can refer to a non-commit object
      init: fix grammar in "templates not found" msg
      p4.txt: Use backquotes for variable names

Ryan Dammrose (1):
      push: colorize errors

SZEDER Gábor (22):
      test_must_be_empty: simplify file existence check
      t9902-completion: add tests demonstrating issues with quoted pathnames
      completion: move __git_complete_index_file() next to its helpers
      completion: simplify prefix path component handling during path completion
      completion: support completing non-ASCII pathnames
      completion: improve handling quoted paths on the command line
      completion: let 'ls-files' and 'diff-index' filter matching paths
      completion: use 'awk' to strip trailing path components
      t9902-completion: ignore COMPREPLY element order in some tests
      completion: remove repeated dirnames with 'awk' during path completion
      completion: improve handling quoted paths in 'git ls-files's output
      completion: fill COMPREPLY directly when completing paths
      completion: reduce overhead of clearing cached --options
      docs/git-gc: fix minor rendering issue
      coccinelle: avoid wrong transformation suggestions from commit.cocci
      t6050-replace: don't disable stdin for the whole test script
      t5310-pack-bitmaps: make JGit tests work with GIT_TEST_SPLIT_INDEX
      t5516-fetch-push: fix 'push with dry-run' test
      t5516-fetch-push: fix broken &&-chain
      t7005-editor: get rid of the SPACES_IN_FILENAMES prereq
      completion: don't return with error from __gitcomp_file_direct()
      t9902-completion: exercise __git_complete_index_file() directly

Sergey Organov (1):
      glossary: substitute "ancestor" for "direct ancestor" in 'push' description.

Stefan Agner (1):
      send-email: avoid duplicate In-Reply-To/References

Stefan Beller (81):
      repository: introduce raw object store field
      object-store: migrate alternates struct and functions from cache.h
      object-store: move alt_odb_list and alt_odb_tail to object store
      object-store: free alt_odb_list
      object-store: move packed_git and packed_git_mru to object store
      object-store: close all packs upon clearing the object store
      pack: move prepare_packed_git_run_once to object store
      pack: move approximate object count to object store
      sha1_file: add raw_object_store argument to alt_odb_usable
      sha1_file: add repository argument to link_alt_odb_entry
      sha1_file: add repository argument to read_info_alternates
      sha1_file: add repository argument to link_alt_odb_entries
      sha1_file: add repository argument to prepare_alt_odb
      sha1_file: allow link_alt_odb_entries to handle arbitrary repositories
      sha1_file: allow prepare_alt_odb to handle arbitrary repositories
      sha1_file: add repository argument to sha1_file_name
      sha1_file: add repository argument to stat_sha1_file
      sha1_file: add repository argument to open_sha1_file
      sha1_file: add repository argument to map_sha1_file_1
      sha1_file: add repository argument to map_sha1_file
      sha1_file: add repository argument to sha1_loose_object_info
      sha1_file: allow sha1_file_name to handle arbitrary repositories
      sha1_file: allow stat_sha1_file to handle arbitrary repositories
      sha1_file: allow open_sha1_file to handle arbitrary repositories
      sha1_file: allow map_sha1_file to handle arbitrary repositories
      packfile: allow prepare_packed_git_mru to handle arbitrary repositories
      packfile: allow rearrange_packed_git to handle arbitrary repositories
      packfile: allow install_packed_git to handle arbitrary repositories
      packfile: add repository argument to prepare_packed_git_one
      packfile: add repository argument to prepare_packed_git
      packfile: add repository argument to reprepare_packed_git
      packfile: allow prepare_packed_git_one to handle arbitrary repositories
      packfile: allow prepare_packed_git to handle arbitrary repositories
      packfile: allow reprepare_packed_git to handle arbitrary repositories
      packfile: add repository argument to find_pack_entry
      packfile: allow find_pack_entry to handle arbitrary repositories
      submodule.h: drop declaration of connect_work_tree_and_git_dir
      submodule-config: allow submodule_free to handle arbitrary repositories
      submodule-config: add repository argument to submodule_from_{name, path}
      submodule-config: remove submodule_from_cache
      submodule: fixup nested submodules after moving the submodule
      write_or_die.c: rename to use dashes in file name
      unicode_width.h: rename to use dash in file name
      exec_cmd: rename to use dash in file name
      sha1_name.c: rename to use dash in file name
      sha1_file.c: rename to use dash in file name
      replace_object.c: rename to use dash in file name
      replace-object: move replace_map to object store
      object-store: move lookup_replace_object to replace-object.h
      replace-object: eliminate replace objects prepared flag
      replace-object: check_replace_refs is safe in multi repo environment
      refs: add repository argument to get_main_ref_store
      refs: add repository argument to for_each_replace_ref
      replace-object: add repository argument to prepare_replace_object
      replace-object: add repository argument to do_lookup_replace_object
      replace-object: add repository argument to lookup_replace_object
      refs: store the main ref store inside the repository struct
      refs: allow for_each_replace_ref to handle arbitrary repositories
      replace-object: allow prepare_replace_object to handle arbitrary repositories
      replace-object: allow do_lookup_replace_object to handle arbitrary repositories
      replace-object: allow lookup_replace_object to handle arbitrary repositories
      worktree: accept -f as short for --force for removal
      builtin/blame: dim uninteresting metadata lines
      builtin/blame: highlight recently changed lines
      builtin/blame: add new coloring scheme config
      cache.h: add repository argument to oid_object_info_extended
      cache.h: add repository argument to oid_object_info
      packfile: add repository argument to retry_bad_packed_offset
      packfile: add repository argument to packed_to_object_type
      packfile: add repository argument to read_object
      packfile: add repository argument to unpack_entry
      packfile: add repository argument to cache_or_unpack_entry
      cache.h: allow oid_object_info to handle arbitrary repositories
      git-rebase--interactive: clarify arguments
      object.c: free replace map in raw_object_store_clear
      replace-object.c: remove the_repository from prepare_replace_object
      grep: handle corrupt index files early
      git-submodule.sh: try harder to fetch a submodule
      submodule.c: move submodule merging to merge-recursive.c
      merge-recursive: i18n submodule merge output and respect verbosity
      object.c: clear replace map before freeing it

Takuto Ikuta (1):
      fetch-pack.c: use oidset to check existence of loose object

Tao Qingyun (1):
      t1510-repo-setup.sh: remove useless mkdir

Taylor Blau (5):
      builtin/config.c: treat type specifiers singularly
      builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
      builtin/config: introduce `--default`
      config.c: introduce 'git_config_color' to parse ANSI colors
      builtin/config: introduce `color` type specifier

Thomas Gummerer (12):
      stash push: avoid printing errors
      stash push -u: don't create empty stash
      stash: drop superfluos pathspec parameter
      SubmittingPatches: mention the git contacts command
      completion: stop showing 'save' for stash by default
      completion: make stash -p and alias for stash push -p
      worktree: remove extra members from struct add_opts
      worktree: improve message when creating a new worktree
      worktree: factor out dwim_branch function
      worktree: teach "add" to check out existing branches
      SubmittingPatches: replace numbered attributes with names
      note git-security@googlegroups.com in more places

Todd Zullinger (1):
      doc/clone: update caption for GIT URLS cross-reference

Torsten Bögershausen (1):
      test: correct detection of UTF8_NFD_TO_NFC for APFS

Wink Saville (8):
      rebase-interactive: simplify pick_on_preserving_merges
      rebase: update invocation of rebase dot-sourced scripts
      rebase: reindent function git_rebase__interactive
      rebase: extract functions out of git_rebase__interactive
      rebase: add and use git_rebase__interactive__preserve_merges
      rebase: remove unused code paths from git_rebase__interactive
      rebase: remove unused code paths from git_rebase__interactive__preserve_merges
      rebase: remove merges_option and a blank line

Yuki Kokubun (1):
      filter-branch: fix errors caused by refs that point at non-committish

brian m. carlson (123):
      bulk-checkin: convert index_bulk_checkin to struct object_id
      builtin/write-tree: convert to struct object_id
      cache-tree: convert write_*_as_tree to object_id
      cache-tree: convert remnants to struct object_id
      resolve-undo: convert struct resolve_undo_info to object_id
      tree: convert read_tree_recursive to struct object_id
      ref-filter: convert grab_objectname to struct object_id
      strbuf: convert strbuf_add_unique_abbrev to use struct object_id
      wt-status: convert struct wt_status_state to object_id
      Convert find_unique_abbrev* to struct object_id
      http-walker: convert struct object_request to use struct object_id
      send-pack: convert remaining functions to struct object_id
      replace_object: convert struct replace_object to object_id
      builtin/mktag: convert to struct object_id
      archive: convert write_archive_entry_fn_t to object_id
      archive: convert sha1_file_to_archive to struct object_id
      builtin/index-pack: convert struct ref_delta_entry to object_id
      sha1_file: convert read_loose_object to use struct object_id
      sha1_file: convert check_sha1_signature to struct object_id
      streaming: convert open_istream to use struct object_id
      builtin/mktree: convert to struct object_id
      sha1_file: convert assert_sha1_type to object_id
      sha1_file: convert retry_bad_packed_offset to struct object_id
      packfile: convert unpack_entry to struct object_id
      Convert remaining callers of sha1_object_info_extended to object_id
      sha1_file: convert sha1_object_info* to object_id
      builtin/fmt-merge-msg: convert remaining code to object_id
      builtin/notes: convert static functions to object_id
      tree-walk: convert get_tree_entry_follow_symlinks internals to object_id
      streaming: convert istream internals to struct object_id
      tree-walk: convert tree entry functions to object_id
      sha1_file: convert read_object_with_reference to object_id
      sha1_file: convert read_sha1_file to struct object_id
      Convert lookup_replace_object to struct object_id
      sha1_file: introduce a constant for max header length
      convert: convert to struct object_id
      sha1_name: convert struct min_abbrev_data to object_id
      t1011: abstract away SHA-1-specific constants
      t1304: abstract away SHA-1-specific constants
      t1300: abstract away SHA-1-specific constants
      t1405: sort reflog entries in a hash-independent way
      t1411: abstract away SHA-1-specific constants
      t1507: abstract away SHA-1-specific constants
      t2020: abstract away SHA-1 specific constants
      t2101: modernize test style
      t2101: abstract away SHA-1-specific constants
      t2107: abstract away SHA-1-specific constants
      format-patch: make cover letters always text/plain
      cache: add a function to read an object ID from a buffer
      server-info: remove unused members from struct pack_info
      Remove unused member in struct object_context
      packfile: remove unused member from struct pack_entry
      packfile: convert has_sha1_pack to object_id
      sha1-file: convert freshen functions to object_id
      packfile: convert find_pack_entry to object_id
      packfile: abstract away hash constant values
      pack-objects: abstract away hash algorithm
      pack-redundant: abstract away hash algorithm
      tree-walk: avoid hard-coded 20 constant
      tree-walk: convert get_tree_entry_follow_symlinks to object_id
      fsck: convert static functions to struct object_id
      submodule-config: convert structures to object_id
      split-index: convert struct split_index to object_id
      Update struct index_state to use struct object_id
      pack-redundant: convert linked lists to use struct object_id
      index-pack: abstract away hash function constant
      commit: convert uses of get_sha1_hex to get_oid_hex
      dir: convert struct untracked_cache_dir to object_id
      http: eliminate hard-coded constants
      revision: replace use of hard-coded constants
      upload-pack: replace use of several hard-coded constants
      diff: specify abbreviation size in terms of the_hash_algo
      builtin/receive-pack: avoid hard-coded constants for push certs
      sha1-file: add functions for hex empty tree and blob OIDs
      builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
      builtin/merge: switch tree functions to use object_id
      merge: convert empty tree constant to the_hash_algo
      sequencer: convert one use of EMPTY_TREE_SHA1_HEX
      submodule: convert several uses of EMPTY_TREE_SHA1_HEX
      wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
      builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
      builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
      sha1_file: convert cached object code to struct object_id
      cache-tree: use is_empty_tree_oid
      sequencer: use the_hash_algo for empty tree object ID
      dir: use the_hash_algo for empty blob object ID
      sha1_file: only expose empty object constants through git_hash_algo
      Update shell scripts to compute empty tree object ID
      add--interactive: compute the empty tree value
      merge-one-file: compute empty blob object ID
      Documentation: use 8-space tabs with Asciidoctor
      Documentation: render revisions correctly under Asciidoctor
      mailmap: update brian m. carlson's email address
      t/test-lib: add an SHA1 prerequisite
      t/test-lib: introduce ZERO_OID
      t: switch $_z40 to $ZERO_OID
      t/test-lib: introduce OID_REGEX
      t: switch $_x40 to $OID_REGEX
      t0000: annotate with SHA1 prerequisite
      t1007: annotate with SHA1 prerequisite
      t1512: skip test if not using SHA-1
      t4044: skip test if not using SHA-1
      t: skip pack tests if not using SHA-1
      t2203: abstract away SHA-1-specific constants
      t3103: abstract away SHA-1-specific constants
      t3702: abstract away SHA-1-specific constants
      t3905: abstract away SHA-1-specific constants
      t4007: abstract away SHA-1-specific constants
      t4008: abstract away SHA-1-specific constants
      t4014: abstract away SHA-1-specific constants
      t4020: abstract away SHA-1-specific constants
      t4022: abstract away SHA-1-specific constants
      t4029: fix test indentation
      t4029: abstract away SHA-1-specific constants
      t4030: abstract away SHA-1-specific constants
      t/lib-diff-alternative: abstract away SHA-1-specific constants
      t4205: sort log output in a hash-independent way
      t4042: abstract away SHA-1-specific constants
      t4045: abstract away SHA-1-specific constants
      t4208: abstract away SHA-1-specific constants
      t5300: abstract away SHA-1-specific constants
      sequencer: ensure labels that are object IDs are rewritten
      t3430: test clean-up

Ævar Arnfjörð Bjarmason (21):
      configure: fix a regression in PCRE v1 detection
      configure: detect redundant --with-libpcre & --with-libpcre1
      Makefile: make USE_LIBPCRE=YesPlease mean v2, not v1
      Makefile: fix broken bindir_relative variable
      Makefile: add a gitexecdir_relative variable
      Makefile: optionally symlink libexec/git-core binaries to bin/git
      Remove contrib/examples/*
      doc hash-function-transition: clarify how older gits die on NewHash
      doc hash-function-transition: clarify what SHAttered means
      git-svn: avoid warning on undef readline()
      Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
      Makefile: add a DEVOPTS to get all of -Wextra
      git{,-blame}.el: remove old bitrotting Emacs code
      .gitattributes: add *.pl extension for Perl
      .gitattributes: use the "perl" differ for Perl
      .gitattributes: add a diff driver for Python
      sha1-name.c: remove stray newline
      sha1-array.h: align function arguments
      git-p4: change "commitish" typo to "committish"
      sha1-name.c: move around the collect_ambiguous() function
      get_short_oid: sort ambiguous objects by type, then SHA-1


^ permalink raw reply	[relevance 1%]

* [ANNOUNCE] Git v2.18.0-rc0
@ 2018-05-30 22:47  1% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2018-05-30 22:47 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

An early preview release Git v2.18.0-rc0 is now available for
testing at the usual places.  It is comprised of 802 non-merge
commits since v2.17.0, contributed by 60 people, 19 of which are
new faces.

As the above numbers show, especially the non-merge commit count, it
turned out that 2.18 is relatively sizeable cycle.  Let's plan to
start cooling down and giving it a bit of extra polish to make sure
there is no/little regression.  I am tagging the preview now as I
want to do the -rc1 before I go offline early next week for a few
days for travelling.  I may go offline for the rest of the day as I
seem to have caught something X-<, but plan to spend the next 48
hours re-reviewing what is in (or close to be in) 'next' to see which
ones should be in -rc1.

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.18.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.17.0 are as follows.
Welcome to the Git development community!

  Bill Ritcher, Birger Skogeng Pedersen, Casey Fitzpatrick,
  Dan Jacques, Drew DeVault, Eckhard S. Maaß, Erik E Brady,
  Florian Gamböck, Harald Nordgren, Leif Middelschulte, Loganaden
  Velvindron, Luis Marsano, Paul-Sebastian Ungureanu, Pratik
  Karki, Ryan Dammrose, Takuto Ikuta, Tao Qingyun, Wink Saville,
  and Yuki Kokubun.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Anders Kaseorg, Andreas Heiduk,
  Antonio Ospite, Beat Bolli, Ben Peart, Brandon Williams, brian
  m. carlson, Christian Couder, Christian Hesse, Clemens Buchacher,
  Derrick Stolee, Elijah Newren, Eric Sunshine, Jameson Miller,
  Jeff King, Johannes Schindelin, Johannes Sixt, Jonathan Nieder,
  Jonathan Tan, Junio C Hamano, Kaartic Sivaraam, Lars Schneider,
  Lucas Werkmeister, Martin Ågren, Michal Nazarewicz, Michele
  Locati, Nguyễn Thái Ngọc Duy, Olga Telezhnaya, Philip
  Oakley, Phillip Wood, Ramsay Jones, René Scharfe, Sergey
  Organov, Stefan Agner, Stefan Beller, SZEDER Gábor, Taylor Blau,
  Thomas Gummerer, Todd Zullinger, and Torsten Bögershausen.

----------------------------------------------------------------

Git 2.18 Release Notes (draft)
==============================

Updates since v2.17
-------------------

UI, Workflows & Features

 * Rename detection logic in "diff" family that is used in "merge" has
   learned to guess when all of x/a, x/b and x/c have moved to z/a,
   z/b and z/c, it is likely that x/d added in the meantime would also
   want to move to z/d by taking the hint that the entire directory
   'x' moved to 'z'.  A bug causing dirty files involved in a rename
   to be overwritten during merge has also been fixed as part of this
   work.

 * "git filter-branch" learned to use a different exit code to allow
   the callers to tell the case where there was no new commits to
   rewrite from other error cases.

 * When built with more recent cURL, GIT_SSL_VERSION can now specify
   "tlsv1.3" as its value.

 * "git gui" learned that "~/.ssh/id_ecdsa.pub" and
   "~/.ssh/id_ed25519.pub" are also possible SSH key files.
   (merge 2e2f0288ef bb/git-gui-ssh-key-files later to maint).

 * "git gui" performs commit upon CTRL/CMD+ENTER but the
   CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the
   same key binding.  It now does.
   (merge 28a1d94a06 bp/git-gui-bind-kp-enter later to maint).

 * "git gui" has been taught to work with old versions of tk (like
   8.5.7) that do not support "ttk::style theme use" as a way to query
   the current theme.
   (merge 4891961105 cb/git-gui-ttk-style later to maint).

 * "git rebase" has learned to honor "--signoff" option when using
   backends other than "am" (but not "--preserve-merges").

 * "git branch --list" during an interrupted "rebase -i" now lets
   users distinguish the case where a detached HEAD is being rebased
   and a normal branch is being rebased.

 * "git mergetools" learned talking to guiffy.

 * The scripts in contrib/emacs/ have outlived their usefulness and
   have been replaced with a stub that errors out and tells the user
   there are replacements.

 * The new "checkout-encoding" attribute can ask Git to convert the
   contents to the specified encoding when checking out to the working
   tree (and the other way around when checking in).

 * The "git config" command uses separate options e.g. "--int",
   "--bool", etc. to specify what type the caller wants the value to
   be interpreted as.  A new "--type=<typename>" option has been
   introduced, which would make it cleaner to define new types.

 * "git config --get" learned the "--default" option, to help the
   calling script.  Building on top of the above changes, the
   "git config" learns "--type=color" type.  Taken together, you can
   do things like "git config --get foo.color --default blue" and get
   the ANSI color sequence for the color given to foo.color variable,
   or "blue" if the variable does not exist.

 * "git ls-remote" learned an option to allow sorting its output based
   on the refnames being shown.

 * The command line completion (in contrib/) has been taught that "git
   stash save" has been deprecated ("git stash push" is the preferred
   spelling in the new world) and does not offer it as a possible
   completion candidate when "git stash push" can be.

 * "git gc --prune=nonsense" spent long time repacking and then
   silently failed when underlying "git prune --expire=nonsense"
   failed to parse its command line.  This has been corrected.

 * Error messages from "git push" can be painted for more visibility.

 * "git http-fetch" (deprecated) had an optional and experimental
   "feature" to fetch only commits and/or trees, which nobody used.
   This has been removed.

 * The functionality of "$GIT_DIR/info/grafts" has been superseded by
   the "refs/replace/" mechanism for some time now, but the internal
   code had support for it in many places, which has been cleaned up
   in order to drop support of the "grafts" mechanism.

 * "git worktree add" learned to check out an existing branch.

 * "git --no-pager cmd" did not have short-and-sweet single letter
   option. Now it does as "-P".
   (merge 7213c28818 js/no-pager-shorthand later to maint).

 * "git rebase" learned "--rebase-merges" to transplant the whole
   topology of commit graph elsewhere.

 * "git status" learned to pay attention to UI related diff
   configuration variables such as diff.renames.

 * The command line completion mechanism (in contrib/) learned to load
   custom completion file for "git $command" where $command is a
   custom "git-$command" that the end user has on the $PATH when using
   newer version of bash.

 * "git send-email" can sometimes offer confirmation dialog "Send this
   email?" with choices 'Yes', 'No', 'Quit', and 'All'.  A new action
   'Edit' has been added to this dialog's choice.

 * With merge.renames configuration set to false, the recursive merge
   strategy can be told not to spend cycles trying to find renamed
   paths and merge them accordingly.

 * "git status" learned to honor a new status.renames configuration to
   skip rename detection, which could be useful for those who want to
   do so without disabling the default rename detection done by the
   "git diff" command.

 * Command line completion (in contrib/) learned to complete pathnames
   for various commands better.

 * "git blame" learns to unhighlight uninteresting metadata from the
   originating commit on lines that are the same as the previous one,
   and also paint lines in different colors depending on the age of
   the commit.

 * Transfer protocol v2 learned to support the partial clone.

 * When a short hexadecimal string is used to name an object but there
   are multiple objects that share the string as the prefix of their
   names, the code lists these ambiguous candidates in a help message.
   These object names are now sorted according to their types for
   easier eyeballing.

 * "git fetch $there $refspec" that talks over protocol v2 can take
   advantage of server-side ref filtering; the code has been extended
   so that this mechanism triggers also when fetching with configured
   refspec.

 * Our HTTP client code used to advertise that we accept gzip encoding
   from the other side; instead, just let cURL library to advertise
   and negotiate the best one.


Performance, Internal Implementation, Development Support etc.

 * A "git fetch" from a repository with insane number of refs into a
   repository that is already up-to-date still wasted too many cycles
   making many lstat(2) calls to see if these objects at the tips
   exist as loose objects locally.  These lstat(2) calls are optimized
   away by enumerating all loose objects beforehand.
   It is unknown if the new strategy negatively affects existing use
   cases, fetching into a repository with many loose objects from a
   repository with small number of refs.

 * Git can be built to use either v1 or v2 of the PCRE library, and so
   far, the build-time configuration USE_LIBPCRE=YesPlease instructed
   the build procedure to use v1, but now it means v2.  USE_LIBPCRE1
   and USE_LIBPCRE2 can be used to explicitly choose which version to
   use, as before.

 * The build procedure learned to optionally use symbolic links
   (instead of hardlinks and copies) to install "git-foo" for built-in
   commands, whose binaries are all identical.

 * Conversion from uchar[20] to struct object_id continues.

 * The way "git worktree prune" worked internally has been simplified,
   by assuming how "git worktree move" moves an existing worktree to a
   different place.

 * Code clean-up for the "repository" abstraction.
   (merge 00a3da2a13 nd/remove-ignore-env-field later to maint).

 * Code to find the length to uniquely abbreviate object names based
   on packfile content, which is a relatively recent addtion, has been
   optimized to use the same fan-out table.

 * The mechanism to use parse-options API to automate the command line
   completion continues to get extended and polished.

 * Copies of old scripted Porcelain commands in contrib/examples/ have
   been removed.

 * Some tests that rely on the exact hardcoded values of object names
   have been updated in preparation for hash function migration.

 * Perf-test update.

 * Test helper update.

 * The effort continues to refactor the internal global data structure
   to make it possible to open multiple repositories, work with and
   then close them,

 * Small test-helper programs have been consolidated into a single
   binary.

 * API clean-up around ref-filter code.

 * Shell completion (in contrib) that gives list of paths have been
   optimized somewhat.

 * The index file is updated to record the fsmonitor section after a
   full scan was made, to avoid wasting the effort that has already
   spent.

 * Performance measuring framework in t/perf learned to help bisecting
   performance regressions.

 * Some multi-word source filenames are being renamed to separate
   words with dashes instead of underscores.

 * An reusable "memory pool" implementation has been extracted from
   fast-import.c, which in turn has become the first user of the
   mem-pool API.

 * A build-time option has been added to allow Git to be told to refer
   to its associated files relative to the main binary, in the same
   way that has been possible on Windows for quite some time, for
   Linux, BSDs and Darwin.

 * Precompute and store information necessary for ancestry traversal
   in a separate file to optimize graph walking.

 * The effort to pass the repository in-core structure throughout the
   API continues.  This round deals with the code that implements the
   refs/replace/ mechanism.

 * The build procedure "make DEVELOPER=YesPlease" learned to enable a
   bit more warning options depending on the compiler used to help
   developers more.  There also is "make DEVOPTS=tokens" knob
   available now, for those who want to help fixing warnings we
   usually ignore, for example.

 * A new version of the transport protocol is being worked on.

 * The code to interface to GPG has been restructured somewhat to make
   it cleaner to integrate with other types of signature systems later.

 * The code has been taught to use the duplicated information stored
   in the commit-graph file to learn the tree object name for a commit
   to avoid opening and parsing the commit object when it makes sense
   to do so.

 * "git gc" in a large repository takes a lot of time as it considers
   to repack all objects into one pack by default.  The command has
   been taught to pretend as if the largest existing packfile is
   marked with ".keep" so that it is left untouched while objects in
   other packs and loose ones are repacked.

 * The transport protocol v2 is getting updated further.

 * The codepath around object-info API has been taught to take the
   repository object (which in turn tells the API which object store
   the objects are to be located).

 * Rename detection logic in "diff" family that is used in "merge" has
   learned to guess when all of x/a, x/b and x/c have moved to z/a,
   z/b and z/c, it is likely that x/d added in the meantime would also
   want to move to z/d by taking the hint that the entire directory
   'x' moved to 'z'.  A bug causing dirty files involved in a rename
   to be overwritten during merge has also been fixed as part of this
   work.  Incidentally, this also avoids updating a file in the
   working tree after a (non-trivial) merge whose result matches what
   our side originally had.

 * "git pack-objects" needs to allocate tons of "struct object_entry"
   while doing its work, and shrinking its size helps the performance
   quite a bit.

 * The implementation of "git rebase -i --root" has been updated to use
   the sequencer machinery more.

 * Developer support update, by using BUG() macro instead of die() to
   mark codepaths that should not happen more clearly.

 * Developer support.  Use newer GCC on one of the builds done at
   TravisCI.org to get more warnings and errors diagnosed.

 * Conversion from uchar[20] to struct object_id continues.

 * By code restructuring of submodule merge in merge-recursive,
   informational messages from the codepath are now given using the
   same mechanism as other output, and honor the merge.verbosity
   configuration.  The code also learned to give a few new messages
   when a submodule three-way merge resolves cleanly when one side
   records a descendant of the commit chosen by the other side.

 * Avoid unchecked snprintf() to make future code auditing easier.
   (merge ac4896f007 jk/snprintf-truncation later to maint).

 * Many tests hardcode the raw object names, which would change once
   we migrate away from SHA-1.  While some of them must test against
   exact object names, most of them do not have to use hardcoded
   constants in the test.  The latter kind of tests have been updated
   to test the moral equivalent of the original without hardcoding the
   actual object names.


Also contains various documentation updates and code clean-ups.


Fixes since v2.17
-----------------

 * "git shortlog cruft" aborted with a BUG message when run outside a
   Git repository.  The command has been taught to complain about
   extra and unwanted arguments on its command line instead in such a
   case.
   (merge 4aa0161e83 ma/shortlog-revparse later to maint).

 * "git stash push -u -- <pathspec>" gave an unnecessary and confusing
   error message when there was no tracked files that match the
   <pathspec>, which has been fixed.
   (merge 353278687e tg/stash-untracked-with-pathspec-fix later to maint).

 * "git tag --contains no-such-commit" gave a full list of options
   after giving an error message.
   (merge 3bb0923f06 ps/contains-id-error-message later to maint).

 * "diff-highlight" filter (in contrib/) learned to undertand "git log
   --graph" output better.
   (merge 4551fbba14 jk/diff-highlight-graph-fix later to maint).

 * when refs that do not point at committish are given, "git
   filter-branch" gave a misleading error messages.  This has been
   corrected.
   (merge f78ab355e7 yk/filter-branch-non-committish-refs later to maint).

 * "git submodule status" misbehaved on a submodule that has been
   removed from the working tree.
   (merge 74b6bda32f rs/status-with-removed-submodule later to maint).

 * When credential helper exits very quickly without reading its
   input, it used to cause Git to die with SIGPIPE, which has been
   fixed.
   (merge a0d51e8d0e eb/cred-helper-ignore-sigpipe later to maint).

 * "git rebase --keep-empty" still removed an empty commit if the
   other side contained an empty commit (due to the "does an
   equivalent patch exist already?" check), which has been corrected.
   (merge 3d946165e1 pw/rebase-keep-empty-fixes later to maint).

 * Some codepaths, including the refs API, get and keep relative
   paths, that go out of sync when the process does chdir(2).  The
   chdir-notify API is introduced to let these codepaths adjust these
   cached paths to the new current directory.
   (merge fb9c2d2703 jk/relative-directory-fix later to maint).

 * "cd sub/dir && git commit ../path" ought to record the changes to
   the file "sub/path", but this regressed long time ago.
   (merge 86238e07ef bw/commit-partial-from-subdirectory-fix later to maint).

 * Recent introduction of "--log-destination" option to "git daemon"
   did not work well when the daemon was run under "--inetd" mode.
   (merge e67d906d73 lw/daemon-log-destination later to maint).

 * Small fix to the autoconf build procedure.
   (merge 249482daf0 es/fread-reads-dir-autoconf-fix later to maint).

 * Fix an unexploitable (because the oversized contents are not under
   attacker's control) buffer overflow.
   (merge d8579accfa bp/fsmonitor-bufsize-fix later to maint).

 * Recent simplification of build procedure forgot a bit of tweak to
   the build procedure of contrib/mw-to-git/
   (merge d8698987f3 ab/simplify-perl-makefile later to maint).

 * Moving a submodule that itself has submodule in it with "git mv"
   forgot to make necessary adjustment to the nested sub-submodules;
   now the codepath learned to recurse into the submodules.

 * "git config --unset a.b", when "a.b" is the last variable in an
   otherwise empty section "a", left an empty section "a" behind, and
   worse yet, a subsequent "git config a.c value" did not reuse that
   empty shell and instead created a new one.  These have been
   (partially) corrected.
   (merge c71d8bb38a js/empty-config-section-fix later to maint).

 * "git worktree remove" learned that "-f" is a shorthand for
   "--force" option, just like for "git worktree add".
   (merge d228eea514 sb/worktree-remove-opt-force later to maint).

 * The completion script (in contrib/) learned to clear cached list of
   command line options upon dot-sourcing it again in a more efficient
   way.
   (merge 94408dc71c sg/completion-clear-cached later to maint).

 * "git svn" had a minor thinko/typo which has been fixed.
   (merge 51db271587 ab/git-svn-get-record-typofix later to maint).

 * During a "rebase -i" session, the code could give older timestamp
   to commits created by later "pick" than an earlier "reword", which
   has been corrected.
   (merge 12f7babd6b js/ident-date-fix later to maint).

 * "git submodule status" did not check the symbolic revision name it
   computed for the submodule HEAD is not the NULL, and threw it at
   printf routines, which has been corrected.
   (merge 0b5e2ea7cf nd/submodule-status-fix later to maint).

 * When fed input that already has In-Reply-To: and/or References:
   headers and told to add the same information, "git send-email"
   added these headers separately, instead of appending to an existing
   one, which is a violation of the RFC.  This has been corrected.
   (merge 256be1d3f0 sa/send-email-dedup-some-headers later to maint).

 * "git fast-export" had a regression in v2.15.0 era where it skipped
   some merge commits in certain cases, which has been corrected.
   (merge be011bbe00 ma/fast-export-skip-merge-fix later to maint).

 * The code did not propagate the terminal width to subprocesses via
   COLUMNS environment variable, which it now does.  This caused
   trouble to "git column" helper subprocess when "git tag --column=row"
   tried to list the existing tags on a display with non-default width.
   (merge b5d5a567fb nd/term-columns later to maint).

 * We learned that our source files with ".pl" and ".py" extensions
   are Perl and Python files respectively and changes to them are
   better viewed as such with appropriate diff drivers.
   (merge 7818b619e2 ab/perl-python-attrs later to maint).

 * "git rebase -i" sometimes left intermediate "# This is a
   combination of N commits" message meant for the human consumption
   inside an editor in the final result in certain corner cases, which
   has been fixed.
   (merge 15ef69314d js/rebase-i-clean-msg-after-fixup-continue later to maint).

 * A test to see if the filesystem normalizes UTF-8 filename has been
   updated to check what we need to know in a more direct way, i.e. a
   path created in NFC form can be accessed with NFD form (or vice
   versa) to cope with APFS as well as HFS.
   (merge 742ae10e35 tb/test-apfs-utf8-normalization later to maint).

 * "git format-patch --cover --attach" created a broken MIME multipart
   message for the cover letter, which has been fixed by keeping the
   cover letter as plain text file.
   (merge 50cd54ef4e bc/format-patch-cover-no-attach later to maint).

 * The split-index feature had a long-standing and dormant bug in
   certain use of the in-core merge machinery, which has been fixed.
   (merge 7db118303a en/unpack-trees-split-index-fix later to maint).

 * Asciidoctor gives a reasonable imitation for AsciiDoc, but does not
   render illustration in a literal block correctly when indented with
   HT by default. The problem is fixed by forcing 8-space tabs.
   (merge 379805051d bc/asciidoctor-tab-width later to maint).

 * Code clean-up to adjust to a more recent lockfile API convention that
   allows lockfile instances kept on the stack.
   (merge 0fa5a2ed8d ma/lockfile-cleanup later to maint).

 * the_repository->index is not a allocated piece of memory but
   repo_clear() indiscriminately attempted to free(3) it, which has
   been corrected.
   (merge 74373b5f10 nd/repo-clear-keep-the-index later to maint).

 * Code clean-up to avoid non-standard-conformant pointer arithmetic.
   (merge c112084af9 rs/no-null-ptr-arith-in-fast-export later to maint).

 * Code clean-up to turn history traversal more robust in a
   semi-corrupt repository.
   (merge 8702b30fd7 jk/unavailable-can-be-missing later to maint).

 * "git update-ref A B" is supposed to ensure that ref A does not yet
   exist when B is a NULL OID, but this check was not done correctly
   for pseudo-refs outside refs/ hierarchy, e.g. MERGE_HEAD.

 * "git submodule update" and "git submodule add" supported the
   "--reference" option to borrow objects from a neighbouring local
   repository like "git clone" does, but lacked the more recent
   invention "--dissociate".  Also "git submodule add" has been taught
   to take the "--progress" option.
   (merge a0ef29341a cf/submodule-progress-dissociate later to maint).

 * Update credential-netrc helper (in contrib/) to allow customizing
   the GPG used to decrypt the encrypted .netrc file.
   (merge 786ef50a23 lm/credential-netrc later to maint).

 * "git submodule update" attempts two different kinds of "git fetch"
   against the upstream repository to grab a commit bound at the
   submodule's path, but it incorrectly gave up if the first kind
   (i.e. a normal fetch) failed, making the second "last resort" one
   (i.e. fetching an exact commit object by object name) ineffective.
   This has been corrected.
   (merge e30d833671 sb/submodule-update-try-harder later to maint).

 * Error behaviour of "git grep" when it cannot read the index was
   inconsistent with other commands that uses the index, which has
   been corrected to error out early.
   (merge b2aa84c789 sb/grep-die-on-unreadable-index later to maint).

 * We used to call regfree() after regcomp() failed in some codepaths,
   which have been corrected.
   (merge 17154b1576 ma/regex-no-regfree-after-comp-fail later to maint).

 * Other minor doc, test and build updates and code cleanups.
   (merge 248f66ed8e nd/trace-with-env later to maint).
   (merge 14ced5562c ys/bisect-object-id-missing-conversion-fix later to maint).
   (merge 5988eb631a ab/doc-hash-brokenness later to maint).
   (merge a4d4e32a70 pk/test-avoid-pipe-hiding-exit-status later to maint).
   (merge 05e293c1ac jk/flockfile-stdio later to maint).
   (merge e9184b0789 jk/t5561-missing-curl later to maint).
   (merge b1801b85a3 nd/worktree-move later to maint).
   (merge bbd374dd20 ak/bisect-doc-typofix later to maint).
   (merge 4855f06fb3 mn/send-email-credential-doc later to maint).
   (merge 8523b1e355 en/doc-typoes later to maint).
   (merge 43b44ccfe7 js/t5404-path-fix later to maint).
   (merge decf711fc1 ps/test-chmtime-get later to maint).
   (merge 22d11a6e8e es/worktree-docs later to maint).
   (merge 92a5dbbc22 tg/use-git-contacts later to maint).
   (merge adc887221f tq/t1510 later to maint).
   (merge bed21a8ad6 sg/doc-gc-quote-mismatch-fix later to maint).
   (merge 73364e4f10 tz/doc-git-urls-reference later to maint).
   (merge cd1e606bad bc/mailmap-self later to maint).
   (merge f7997e3682 ao/config-api-doc later to maint).
   (merge ee930754d8 jk/apply-p-doc later to maint).
   (merge 011b648646 nd/pack-format-doc later to maint).
   (merge 87a6bb701a sg/t5310-jgit-bitmap-test later to maint).
   (merge f6b82970aa sg/t5516-fixes later to maint).
   (merge 4362da078e sg/t7005-spaces-in-filenames-cleanup later to maint).
   (merge 7d0ee47c11 js/test-unset-prereq later to maint).
   (merge 5356a3c354 ah/misc-doc-updates later to maint).
   (merge 92c4a7a129 nd/completion-aliasfiletype-typofix later to maint).
   (merge 58bd77b66a nd/pack-unreachable-objects-doc later to maint).
   (merge 4ed79d5203 sg/t6500-no-redirect-of-stdin later to maint).
   (merge 17b8a2d6cd jk/config-blob-sans-repo later to maint).

----------------------------------------------------------------

Changes since v2.17.0 are as follows:

Anders Kaseorg (1):
      Documentation/git-bisect.txt: git bisect term → git bisect terms

Andreas Heiduk (9):
      git-svn: search --authors-prog in PATH too
      git-svn: allow empty email-address using authors-prog and authors-file
      doc: improve formatting in githooks.txt
      doc: align 'diff --no-index' in text and synopsis
      doc: clarify ignore rules for git ls-files
      doc: add '-d' and '-o' for 'git push'
      git-svn: remove ''--add-author-from' for 'commit-diff'
      doc: add note about shell quoting to revision.txt
      doc: normalize [--options] to [options] in git-diff

Antonio Ospite (1):
      doc: fix config API documentation about config_with_options

Beat Bolli (1):
      git-gui: search for all current SSH key types

Ben Peart (7):
      fsmonitor: fix incorrect buffer size when printing version number
      fsmonitor: force index write after full scan
      test-drop-caches: simplify delay loading of NtSetSystemInformation
      merge: update documentation for {merge,diff}.renameLimit
      merge: add merge.renames config setting
      merge: pass aggressive when rename detection is turned off
      add status config and command line options for rename detection

Bill Ritcher (1):
      mergetools: add support for guiffy

Birger Skogeng Pedersen (1):
      git-gui: bind CTRL/CMD+numpad ENTER to do_commit

Brandon Williams (79):
      pkt-line: introduce packet_read_with_status
      pkt-line: allow peeking a packet line without consuming it
      pkt-line: add delim packet support
      upload-pack: convert to a builtin
      upload-pack: factor out processing lines
      transport: use get_refs_via_connect to get refs
      connect: convert get_remote_heads to use struct packet_reader
      connect: discover protocol version outside of get_remote_heads
      transport: store protocol version
      protocol: introduce enum protocol_version value protocol_v2
      test-pkt-line: introduce a packet-line test helper
      serve: introduce git-serve
      ls-refs: introduce ls-refs server command
      connect: request remote refs using v2
      transport: convert get_refs_list to take a list of ref prefixes
      transport: convert transport_get_remote_refs to take a list of ref prefixes
      ls-remote: pass ref prefixes when requesting a remote's refs
      fetch: pass ref prefixes when fetching
      push: pass ref prefixes when pushing
      upload-pack: introduce fetch server command
      fetch-pack: perform a fetch using v2
      fetch-pack: support shallow requests
      connect: refactor git_connect to only get the protocol version once
      connect: don't request v2 when pushing
      transport-helper: remove name parameter
      transport-helper: refactor process_connect_service
      transport-helper: introduce stateless-connect
      pkt-line: add packet_buf_write_len function
      remote-curl: create copy of the service name
      remote-curl: store the protocol version the server responded with
      http: allow providing extra headers for http requests
      http: don't always add Git-Protocol header
      http: eliminate "# service" line when using protocol v2
      remote-curl: implement stateless-connect command
      remote-curl: don't request v2 when pushing
      commit: allow partial commits with relative paths
      serve: introduce the server-option capability
      ls-remote: send server options when using protocol v2
      fetch: send server options when using protocol v2
      refspec: move refspec parsing logic into its own file
      refspec: rename struct refspec to struct refspec_item
      refspec: factor out parsing a single refspec
      refspec: introduce struct refspec
      refspec: convert valid_fetch_refspec to use parse_refspec
      submodule--helper: convert push_check to use struct refspec
      pull: convert get_tracking_branch to use refspec_item_init
      transport: convert transport_push to use struct refspec
      remote: convert check_push_refs to use struct refspec
      remote: convert match_push_refs to use struct refspec
      clone: convert cmd_clone to use refspec_item_init
      fast-export: convert to use struct refspec
      remote: convert push refspecs to struct refspec
      remote: convert fetch refspecs to struct refspec
      remote: remove add_prune_tags_to_fetch_refspec
      transport-helper: convert to use struct refspec
      fetch: convert fetch_one to use struct refspec
      fetch: convert refmap to use struct refspec
      refspec: remove the deprecated functions
      fetch: convert do_fetch to take a struct refspec
      fetch: convert get_ref_map to take a struct refspec
      fetch: convert prune_refs to take a struct refspec
      remote: convert get_stale_heads to take a struct refspec
      remote: convert apply_refspecs to take a struct refspec
      remote: convert query_refspecs to take a struct refspec
      remote: convert get_ref_match to take a struct refspec
      remote: convert match_explicit_refs to take a struct refspec
      push: check for errors earlier
      push: convert to use struct refspec
      transport: convert transport_push to take a struct refspec
      send-pack: store refspecs in a struct refspec
      transport: remove transport_verify_remote_names
      http-push: store refspecs in a struct refspec
      remote: convert match_push_refs to take a struct refspec
      remote: convert check_push_refs to take a struct refspec
      submodule: convert push_unpushed_submodules to take a struct refspec
      refspec: consolidate ref-prefix generation logic
      fetch: generate ref-prefixes when using a configured refspec
      remote-curl: accept all encodings supported by curl
      remote-curl: accept compressed responses with protocol v2

Casey Fitzpatrick (3):
      submodule: clean up substitutions in script
      submodule: add --progress option to add command
      submodule: add --dissociate option to add/update commands

Christian Couder (6):
      perf/aggregate: add display_dir()
      perf/aggregate: add --sort-by=regression option
      perf/run: add --subsection option
      t/perf: add scripts to bisect performance regressions
      perf/aggregate: use Getopt::Long for option parsing
      perf/bisect_run_script: disable codespeed

Christian Hesse (2):
      perl: fix installing modules from contrib
      Makefile: mark perllibdir as a .PHONY target

Clemens Buchacher (2):
      git-gui: workaround ttk:style theme use
      completion: improve ls-files filter performance

Dan Jacques (3):
      Makefile: generate Perl header from template file
      Makefile: add Perl runtime prefix support
      exec_cmd: RUNTIME_PREFIX on some POSIX systems

Derrick Stolee (20):
      packfile: define and use bsearch_pack()
      sha1_name: use bsearch_pack() for abbreviations
      csum-file: rename hashclose() to finalize_hashfile()
      csum-file: refactor finalize_hashfile() method
      commit-graph: add format document
      graph: add commit graph design document
      commit-graph: create git-commit-graph builtin
      commit-graph: implement write_commit_graph()
      commit-graph: implement git-commit-graph write
      commit-graph: implement git commit-graph read
      commit-graph: add core.commitGraph setting
      commit-graph: close under reachability
      commit: integrate commit graph with commit parsing
      commit-graph: read only from specific pack-indexes
      commit-graph: build graph from starting commits
      commit-graph: implement "--append" option
      treewide: rename tree to maybe_tree
      commit: create get_commit_tree() method
      treewide: replace maybe_tree with accessor methods
      commit-graph: lazy-load trees for commits

Drew DeVault (1):
      git-send-email: allow re-editing of message

Eckhard S. Maaß (1):
      wt-status: use settings from git_diff_ui_config

Elijah Newren (70):
      directory rename detection: basic testcases
      directory rename detection: directory splitting testcases
      directory rename detection: testcases to avoid taking detection too far
      directory rename detection: partially renamed directory testcase/discussion
      directory rename detection: files/directories in the way of some renames
      directory rename detection: testcases checking which side did the rename
      directory rename detection: more involved edge/corner testcases
      directory rename detection: testcases exploring possibly suboptimal merges
      directory rename detection: miscellaneous testcases to complete coverage
      directory rename detection: tests for handling overwriting untracked files
      directory rename detection: tests for handling overwriting dirty files
      merge-recursive: move the get_renames() function
      merge-recursive: introduce new functions to handle rename logic
      merge-recursive: fix leaks of allocated renames and diff_filepairs
      merge-recursive: make !o->detect_rename codepath more obvious
      merge-recursive: split out code for determining diff_filepairs
      merge-recursive: make a helper function for cleanup for handle_renames
      merge-recursive: add get_directory_renames()
      merge-recursive: check for directory level conflicts
      merge-recursive: add computation of collisions due to dir rename & merging
      merge-recursive: check for file level conflicts then get new name
      merge-recursive: when comparing files, don't include trees
      merge-recursive: apply necessary modifications for directory renames
      merge-recursive: avoid clobbering untracked files with directory renames
      merge-recursive: fix overwriting dirty files involved in renames
      merge-recursive: fix remaining directory rename + dirty overwrite cases
      directory rename detection: new testcases showcasing a pair of bugs
      merge-recursive: avoid spurious rename/rename conflict from dir renames
      merge-recursive: ensure we write updates for directory-renamed file
      Documentation: fix several one-character-off spelling errors
      Documentation: normalize spelling of 'normalised'
      directory rename detection: basic testcases
      directory rename detection: directory splitting testcases
      directory rename detection: testcases to avoid taking detection too far
      directory rename detection: partially renamed directory testcase/discussion
      directory rename detection: files/directories in the way of some renames
      directory rename detection: testcases checking which side did the rename
      directory rename detection: more involved edge/corner testcases
      directory rename detection: testcases exploring possibly suboptimal merges
      directory rename detection: miscellaneous testcases to complete coverage
      directory rename detection: tests for handling overwriting untracked files
      directory rename detection: tests for handling overwriting dirty files
      merge-recursive: move the get_renames() function
      merge-recursive: introduce new functions to handle rename logic
      merge-recursive: fix leaks of allocated renames and diff_filepairs
      merge-recursive: make !o->detect_rename codepath more obvious
      merge-recursive: split out code for determining diff_filepairs
      merge-recursive: make a helper function for cleanup for handle_renames
      Make running git under other debugger-like programs easy
      unpack_trees: fix breakage when o->src_index != o->dst_index
      merge-recursive: add get_directory_renames()
      merge-recursive: check for directory level conflicts
      merge-recursive: add computation of collisions due to dir rename & merging
      merge-recursive: check for file level conflicts then get new name
      merge-recursive: when comparing files, don't include trees
      merge-recursive: apply necessary modifications for directory renames
      merge-recursive: avoid clobbering untracked files with directory renames
      merge-recursive: fix overwriting dirty files involved in renames
      merge-recursive: fix remaining directory rename + dirty overwrite cases
      directory rename detection: new testcases showcasing a pair of bugs
      merge-recursive: avoid spurious rename/rename conflict from dir renames
      merge-recursive: improve add_cacheinfo error handling
      merge-recursive: move more is_dirty handling to merge_content
      merge-recursive: avoid triggering add_cacheinfo error with dirty mod
      t6046: testcases checking whether updates can be skipped in a merge
      merge-recursive: fix was_tracked() to quit lying with some renamed paths
      merge-recursive: fix remainder of was_dirty() to use original index
      merge-recursive: make "Auto-merging" comment show for other merges
      merge-recursive: fix check for skipability of working tree updates
      merge-recursive: provide pair of `unpack_trees_{start,finish}()`

Eric Sunshine (5):
      t3200: verify "branch --list" sanity when rebasing from detached HEAD
      t2028: tighten grep expression to make "move worktree" test more robust
      git-worktree.txt: recommend 'git worktree remove' over manual deletion
      git-worktree.txt: unify command-line prompt in example blocks
      configure.ac: fix botched FREAD_READS_DIRECTORIES check

Erik E Brady (1):
      credential: ignore SIGPIPE when writing to credential helpers

Florian Gamböck (1):
      completion: load completion file for external subcommand

Harald Nordgren (1):
      ls-remote: create '--sort' option

Jameson Miller (3):
      fast-import: rename mem_pool type to mp_block
      fast-import: introduce mem_pool type
      mem-pool: move reusable parts of memory pool into its own file

Jeff King (54):
      diff-highlight: correct test graph diagram
      diff-highlight: use test_tick in graph test
      diff-highlight: prefer "echo" to "cat" in tests
      diff-highlight: test interleaved parallel lines of history
      diff-highlight: test graphs with --color
      diff-highlight: use flush() helper consistently
      diff-highlight: detect --graph by indent
      set_git_dir: die when setenv() fails
      add chdir-notify API
      set_work_tree: use chdir_notify
      refs: use chdir_notify to update cached relative paths
      config: move flockfile() closer to unlocked functions
      t5561: drop curl stderr redirects
      t5561: skip tests if curl is not available
      ref-filter: use "struct object_id" consistently
      ref-filter: make ref_array_item allocation more consistent
      ref-filter: factor ref_array pushing into its own function
      t7004: fix mistaken tag name
      gpg-interface: handle bool user.signingkey
      gpg-interface: modernize function declarations
      gpg-interface: use size_t for signature buffer size
      gpg-interface: fix const-correctness of "eol" pointer
      gpg-interface: extract gpg line matching helper
      gpg-interface: find the last gpg signature line
      apply: clarify "-p" documentation
      pager: set COLUMNS to term_columns()
      mark_tree_contents_uninteresting(): drop missing object check
      mark_parents_uninteresting(): drop missing object check
      mark_parents_uninteresting(): replace list with stack
      mark_parents_uninteresting(): avoid most allocation
      get_main_ref_store: BUG() when outside a repository
      config: die when --blob is used outside a repository
      http: use strbufs instead of fixed buffers
      log_write_email_headers: use strbufs
      shorten_unambiguous_ref: use xsnprintf
      fmt_with_err: add a comment that truncation is OK
      submodule-config: verify submodule names as paths
      is_ntfs_dotgit: use a size_t for traversing string
      is_hfs_dotgit: match other .git files
      skip_prefix: add case-insensitive variant
      verify_path: drop clever fallthrough
      verify_dotfile: mention case-insensitivity in comment
      update-index: stat updated files earlier
      verify_path: disallow symlinks in .gitmodules
      index-pack: make fsck error message more specific
      fsck: simplify ".git" check
      fsck: actually fsck blob data
      fsck: detect gitmodules files
      fsck: handle promisor objects in .gitmodules check
      fsck: check .gitmodules content
      fsck: call fsck_finish() after fscking objects
      unpack-objects: call fsck_finish() after fscking objects
      index-pack: check .gitmodules files with --strict
      fsck: complain when .gitmodules is a symlink

Johannes Schindelin (68):
      git_config_set: fix off-by-two
      t1300: rename it to reflect that `repo-config` was deprecated
      t1300: demonstrate that --replace-all can "invent" newlines
      config --replace-all: avoid extra line breaks
      t1300: avoid relying on a bug
      t1300: remove unreasonable expectation from TODO
      t5404: relax overzealous test
      t1300: add a few more hairy examples of sections becoming empty
      t1300: `--unset-all` can leave an empty section behind (bug)
      config: introduce an optional event stream while parsing
      config: avoid using the global variable `store`
      config_set_store: rename some fields for consistency
      git_config_set: do not use a state machine
      git_config_set: make use of the config parser's event stream
      git config --unset: remove empty sections (in the common case)
      git_config_set: reuse empty sections
      exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
      mingw/msvc: use the new-style RUNTIME_PREFIX helper
      color: introduce support for colorizing stderr
      push: test to verify that push errors are colored
      config: document the settings to colorize push errors/hints
      gettext: avoid initialization if the locale dir is not present
      git_setup_gettext: plug memory leak
      sequencer: avoid using errno clobbered by rollback_lock_file()
      sequencer: make rearrange_squash() a bit more obvious
      sequencer: refactor how original todo list lines are accessed
      sequencer: offer helpful advice when a command was rescheduled
      sequencer: introduce new commands to reset the revision
      sequencer: introduce the `merge` command
      sequencer: fast-forward `merge` commands, if possible
      rebase-helper --make-script: introduce a flag to rebase merges
      rebase: introduce the --rebase-merges option
      sequencer: make refs generated by the `label` command worktree-local
      sequencer: handle post-rewrite for merge commands
      rebase --rebase-merges: avoid "empty merges"
      pull: accept --rebase=merges to recreate the branch topology
      rebase -i: introduce --rebase-merges=[no-]rebase-cousins
      rebase -i --rebase-merges: add a section to the man page
      argv_array: offer to split a string by whitespace
      commit: Let the callback of for_each_mergetag return on error
      replace: avoid using die() to indicate a bug
      tests: introduce test_unset_prereq, for debugging
      replace: "libify" create_graft() and callees
      replace: prepare create_graft() for converting graft files wholesale
      replace: introduce --convert-graft-file
      Add a test for `git replace --convert-graft-file`
      Deprecate support for .git/info/grafts
      filter-branch: stop suggesting to use grafts
      technical/shallow: stop referring to grafts
      technical/shallow: describe why shallow cannot use replace refs
      Remove obsolete script to convert grafts to replace refs
      rebase -i: demonstrate bugs with fixup!/squash! commit messages
      rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
      sequencer: always commit without editing when asked for
      rebase --skip: clean up commit message after a failed fixup/squash
      sequencer: extract helper to update active_cache_tree
      sequencer: learn about the special "fake root commit" handling
      rebase -i --root: let the sequencer handle even the initial part
      sequencer: allow introducing new root commits
      rebase --rebase-merges: a "merge" into a new root is a fast-forward
      rebase --rebase-merges: root commits can be cousins, too
      test-tool: help verifying BUG() code paths
      run-command: use BUG() to report bugs, not die()
      Replace all die("BUG: ...") calls by BUG() ones
      Convert remaining die*(BUG) messages
      config: a user-provided invalid section is not a BUG
      is_ntfs_dotgit: match other .git files
      is_{hfs,ntfs}_dotgitmodules: add tests

Johannes Sixt (2):
      sequencer: reset the committer date before commits
      git: add -P as a short option for --no-pager

Jonathan Nieder (5):
      sha1_file: allow map_sha1_file_1 to handle arbitrary repositories
      sha1_file: allow sha1_loose_object_info to handle arbitrary repositories
      Makefile: remove unused @@PERLLIBDIR@@ substitution variable
      Makefile: quote $INSTLIBDIR when passing it to sed
      packfile: add repository argument to packed_object_info

Jonathan Tan (4):
      grep: remove "repo" arg from non-supporting funcs
      upload-pack: fix error message typo
      upload-pack: read config when serving protocol v2
      {fetch,upload}-pack: support filter in protocol v2

Junio C Hamano (18):
      stash: fix nonsense pipeline
      The first batch for 2.18 cycle
      The second batch for 2.18
      The third batch for 2.18
      Revert "Merge branch 'en/rename-directory-detection'"
      gc: do not upcase error message shown with die()
      parseopt: handle malformed --expire arguments more nicely
      The fourth batch for 2.18
      The fifth batch for 2.18
      argv-array: return the pushed string from argv_push*()
      Git 2.13.7
      Git 2.14.4
      Git 2.15.2
      Git 2.16.4
      Git 2.17.1
      The sixth batch for 2.18
      The seventh batch for 2.18
      Git 2.18-rc0

Kaartic Sivaraam (1):
      branch --list: print useful info whilst interactive rebasing a detached HEAD

Lars Schneider (10):
      strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
      strbuf: add xstrdup_toupper()
      strbuf: add a case insensitive starts_with()
      utf8: teach same_encoding() alternative UTF encoding names
      utf8: add function to detect prohibited UTF-16/32 BOM
      utf8: add function to detect a missing UTF-16/32 BOM
      convert: add 'working-tree-encoding' attribute
      convert: check for detectable errors in UTF encodings
      convert: add tracing for 'working-tree-encoding' attribute
      convert: add round trip check based on 'core.checkRoundtripEncoding'

Leif Middelschulte (1):
      merge-recursive: give notice when submodule commit gets fast-forwarded

Loganaden Velvindron (1):
      http: allow use of TLS 1.3

Lucas Werkmeister (1):
      daemon.c: fix condition for redirecting stderr

Luis Marsano (2):
      git-credential-netrc: adapt to test framework for git
      git-credential-netrc: accept gpg option

Martin Ågren (24):
      git-shortlog.txt: reorder usages
      shortlog: add usage-string for stdin-reading
      shortlog: disallow left-over arguments outside repo
      doc: convert \--option to --option
      doc: convert [\--] to [--]
      git-[short]log.txt: unify quoted standalone --
      git-submodule.txt: quote usage in monospace, drop backslash
      fast-export: fix regression skipping some merge-commits
      http-fetch: make `-a` standard behaviour
      walker: drop fields of `struct walker` which are always 1
      t/helper/test-write-cache: clean up lock-handling
      refs.c: do not die if locking fails in `write_pseudoref()`
      refs.c: do not die if locking fails in `delete_pseudoref()`
      lock_file: make function-local locks non-static
      lock_file: move static locks into functions
      refs.c: refer to "object ID", not "sha1", in error messages
      t1400: add tests around adding/deleting pseudorefs
      refs: handle zero oid for pseudorefs
      merge: setup `opts` later in `checkout_fast_forward()`
      config: free resources of `struct config_store_data`
      config: let `config_store_data_clear()` handle `value_regex`
      config: let `config_store_data_clear()` handle `key`
      regex: do not call `regfree()` if compilation fails
      unpack_trees_options: free messages when done

Michal Nazarewicz (1):
      send-email: simplify Gmail example in the documentation

Michele Locati (1):
      filter-branch: return 2 when nothing to rewrite

Nguyễn Thái Ngọc Duy (88):
      repository: initialize the_repository in main()
      repository.c: move env-related setup code back to environment.c
      repository.c: delete dead functions
      sha1_file.c: move delayed getenv(altdb) back to setup_git_env()
      repository: delete ignore_env member
      gc.txt: more details about what gc does
      worktree: delete dead code
      worktree prune: improve prune logic when worktree is moved
      repository.h: add comment and clarify repo_set_gitdir
      git.c: move cmd_struct declaration up
      git.c: add hidden option --list-parseopt-builtins
      completion: mention the oldest version we need to support
      completion: factor out _git_xxx calling code
      completion: add --option completion for most builtin commands
      completion: delete option-only completion commands
      completion: use __gitcomp_builtin in _git_ls_tree
      completion: use __gitcomp_builtin in _git_cherry
      packfile: keep prepare_packed_git() private
      t/helper: add an empty test-tool program
      t/helper: merge test-chmtime into test-tool
      t/helper: merge test-sha1 into test-tool
      t/helper: merge test-lazy-init-name-hash into test-tool
      t/helper: merge test-config into test-tool
      t/helper: merge test-ctype into test-tool
      t/helper: merge test-date into test-tool
      t/helper: merge (unused) test-delta into test-tool
      t/helper: merge test-drop-caches into test-tool
      t/helper: merge test-dump-cache-tree into test-tool
      t/helper: merge test-dump-split-index into test-tool
      t/helper: merge test-example-decorate into test-tool
      t/helper: merge test-genrandom into test-tool
      t/helper: merge test-hashmap into test-tool
      t/helper: merge test-index-version into test-tool
      t/helper: merge (unused) test-match-trees into test-tool
      t/helper: merge (unused) test-mergesort into test-tool
      t/helper: merge test-mktemp into test-tool
      t/helper: merge test-online-cpus into test-tool
      t/helper: merge test-path-utils into test-tool
      t/helper: merge test-prio-queue into test-tool
      t/helper: merge test-read-cache into test-tool
      t/helper: merge test-ref-store into test-tool
      t/helper: merge test-regex into test-tool
      t/helper: merge test-revision-walking into test-tool
      t/helper: merge test-run-command into test-tool
      t/helper: merge test-scrap-cache-tree into test-tool
      t/helper: merge test-sha1-array into test-tool
      t/helper: merge test-sigchain into test-tool
      t/helper: merge test-strcmp-offset into test-tool
      t/helper: merge test-string-list into test-tool
      t/helper: merge test-submodule-config into test-tool
      t/helper: merge test-subprocess into test-tool
      t/helper: merge test-urlmatch-normalization into test-tool
      t/helper: merge test-wildmatch into test-tool
      t/helper: merge test-write-cache into test-tool
      trace.c: export trace_setup_key
      read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean
      pack-objects: a bit of document about struct object_entry
      pack-objects: turn type and in_pack_type to bitfields
      pack-objects: use bitfield for object_entry::dfs_state
      pack-objects: use bitfield for object_entry::depth
      pack-objects: move in_pack_pos out of struct object_entry
      pack-objects: move in_pack out of struct object_entry
      pack-objects: refer to delta objects by index instead of pointer
      pack-objects: shrink z_delta_size field in struct object_entry
      pack-objects: don't check size when the object is bad
      pack-objects: clarify the use of object_entry::size
      pack-objects: shrink size field in struct object_entry
      pack-objects: shrink delta_size field in struct object_entry
      pack-objects: reorder members to shrink struct object_entry
      ci: exercise the whole test suite with uncommon code in pack-objects
      t7700: have closing quote of a test at the beginning of line
      repack: add --keep-pack option
      gc: add --keep-largest-pack option
      gc: add gc.bigPackThreshold config
      gc: handle a corner case in gc.bigPackThreshold
      gc --auto: exclude base pack if not enough mem to "repack -ad"
      pack-objects: show some progress when counting kept objects
      connect.c: mark die_initial_contact() NORETURN
      Makefile: detect compiler and enable more warnings in DEVELOPER=1
      submodule--helper: don't print null in 'submodule status'
      doc: keep first level section header in upper case
      pack-objects: validation and documentation about unreachable options
      completion: fix misspelled config key aliasesfiletype
      repository: fix free problem with repo_clear(the_repository)
      pack-format.txt: more details on pack file format
      column: fix off-by-one default width
      commit.h: rearrange 'index' to shrink struct commit
      travis-ci: run gcc-8 on linux-gcc jobs

Olga Telezhnaya (6):
      ref-filter: add shortcut to work with strbufs
      ref-filter: start adding strbufs with errors
      ref-filter: add return value && strbuf to handlers
      ref-filter: change parsing function error handling
      ref-filter: add return value to parsers
      ref-filter: libify get_ref_atom_value()

Paul-Sebastian Ungureanu (2):
      parse-options: do not show usage upon invalid option value
      t/helper: 'test-chmtime (--get|-g)' to print only the mtime

Philip Oakley (1):
      Avoid multiple PREFIX definitions

Phillip Wood (7):
      rebase --root: stop assuming squash_onto is unset
      rebase -i --keep-empty: don't prune empty commits
      rebase: respect --no-keep-empty
      rebase: extend --signoff support
      rebase -p: error out if --signoff is given
      rebase --keep-empty: always use interactive rebase
      rebase --rebase-merges: add test for --keep-empty

Pratik Karki (1):
      test: avoid pipes in git related commands for test

Ramsay Jones (1):
      BUG_exit_code: fix sparse "symbol not declared" warning

René Scharfe (8):
      sha1_name: use bsearch_pack() in unique_in_pack()
      bisect: use oid_to_hex() for converting object_id hashes to hex strings
      run-command: use strbuf_addstr() for adding a string to a strbuf
      submodule: check for NULL return of get_submodule_ref_store()
      replace_object: use oidmap
      fast-export: avoid NULL pointer arithmetic
      t5512: run git fetch inside test
      fsmonitor: use internal argv_array of struct child_process

Ryan Dammrose (1):
      push: colorize errors

SZEDER Gábor (22):
      test_must_be_empty: simplify file existence check
      t9902-completion: add tests demonstrating issues with quoted pathnames
      completion: move __git_complete_index_file() next to its helpers
      completion: simplify prefix path component handling during path completion
      completion: support completing non-ASCII pathnames
      completion: improve handling quoted paths on the command line
      completion: let 'ls-files' and 'diff-index' filter matching paths
      completion: use 'awk' to strip trailing path components
      t9902-completion: ignore COMPREPLY element order in some tests
      completion: remove repeated dirnames with 'awk' during path completion
      completion: improve handling quoted paths in 'git ls-files's output
      completion: fill COMPREPLY directly when completing paths
      completion: reduce overhead of clearing cached --options
      docs/git-gc: fix minor rendering issue
      coccinelle: avoid wrong transformation suggestions from commit.cocci
      t6050-replace: don't disable stdin for the whole test script
      t5310-pack-bitmaps: make JGit tests work with GIT_TEST_SPLIT_INDEX
      t5516-fetch-push: fix 'push with dry-run' test
      t5516-fetch-push: fix broken &&-chain
      t7005-editor: get rid of the SPACES_IN_FILENAMES prereq
      completion: don't return with error from __gitcomp_file_direct()
      t9902-completion: exercise __git_complete_index_file() directly

Sergey Organov (1):
      glossary: substitute "ancestor" for "direct ancestor" in 'push' description.

Stefan Agner (1):
      send-email: avoid duplicate In-Reply-To/References

Stefan Beller (81):
      repository: introduce raw object store field
      object-store: migrate alternates struct and functions from cache.h
      object-store: move alt_odb_list and alt_odb_tail to object store
      object-store: free alt_odb_list
      object-store: move packed_git and packed_git_mru to object store
      object-store: close all packs upon clearing the object store
      pack: move prepare_packed_git_run_once to object store
      pack: move approximate object count to object store
      sha1_file: add raw_object_store argument to alt_odb_usable
      sha1_file: add repository argument to link_alt_odb_entry
      sha1_file: add repository argument to read_info_alternates
      sha1_file: add repository argument to link_alt_odb_entries
      sha1_file: add repository argument to prepare_alt_odb
      sha1_file: allow link_alt_odb_entries to handle arbitrary repositories
      sha1_file: allow prepare_alt_odb to handle arbitrary repositories
      sha1_file: add repository argument to sha1_file_name
      sha1_file: add repository argument to stat_sha1_file
      sha1_file: add repository argument to open_sha1_file
      sha1_file: add repository argument to map_sha1_file_1
      sha1_file: add repository argument to map_sha1_file
      sha1_file: add repository argument to sha1_loose_object_info
      sha1_file: allow sha1_file_name to handle arbitrary repositories
      sha1_file: allow stat_sha1_file to handle arbitrary repositories
      sha1_file: allow open_sha1_file to handle arbitrary repositories
      sha1_file: allow map_sha1_file to handle arbitrary repositories
      packfile: allow prepare_packed_git_mru to handle arbitrary repositories
      packfile: allow rearrange_packed_git to handle arbitrary repositories
      packfile: allow install_packed_git to handle arbitrary repositories
      packfile: add repository argument to prepare_packed_git_one
      packfile: add repository argument to prepare_packed_git
      packfile: add repository argument to reprepare_packed_git
      packfile: allow prepare_packed_git_one to handle arbitrary repositories
      packfile: allow prepare_packed_git to handle arbitrary repositories
      packfile: allow reprepare_packed_git to handle arbitrary repositories
      packfile: add repository argument to find_pack_entry
      packfile: allow find_pack_entry to handle arbitrary repositories
      submodule.h: drop declaration of connect_work_tree_and_git_dir
      submodule-config: allow submodule_free to handle arbitrary repositories
      submodule-config: add repository argument to submodule_from_{name, path}
      submodule-config: remove submodule_from_cache
      submodule: fixup nested submodules after moving the submodule
      write_or_die.c: rename to use dashes in file name
      unicode_width.h: rename to use dash in file name
      exec_cmd: rename to use dash in file name
      sha1_name.c: rename to use dash in file name
      sha1_file.c: rename to use dash in file name
      replace_object.c: rename to use dash in file name
      replace-object: move replace_map to object store
      object-store: move lookup_replace_object to replace-object.h
      replace-object: eliminate replace objects prepared flag
      replace-object: check_replace_refs is safe in multi repo environment
      refs: add repository argument to get_main_ref_store
      refs: add repository argument to for_each_replace_ref
      replace-object: add repository argument to prepare_replace_object
      replace-object: add repository argument to do_lookup_replace_object
      replace-object: add repository argument to lookup_replace_object
      refs: store the main ref store inside the repository struct
      refs: allow for_each_replace_ref to handle arbitrary repositories
      replace-object: allow prepare_replace_object to handle arbitrary repositories
      replace-object: allow do_lookup_replace_object to handle arbitrary repositories
      replace-object: allow lookup_replace_object to handle arbitrary repositories
      worktree: accept -f as short for --force for removal
      builtin/blame: dim uninteresting metadata lines
      builtin/blame: highlight recently changed lines
      builtin/blame: add new coloring scheme config
      cache.h: add repository argument to oid_object_info_extended
      cache.h: add repository argument to oid_object_info
      packfile: add repository argument to retry_bad_packed_offset
      packfile: add repository argument to packed_to_object_type
      packfile: add repository argument to read_object
      packfile: add repository argument to unpack_entry
      packfile: add repository argument to cache_or_unpack_entry
      cache.h: allow oid_object_info to handle arbitrary repositories
      git-rebase--interactive: clarify arguments
      object.c: free replace map in raw_object_store_clear
      replace-object.c: remove the_repository from prepare_replace_object
      grep: handle corrupt index files early
      git-submodule.sh: try harder to fetch a submodule
      submodule.c: move submodule merging to merge-recursive.c
      merge-recursive: i18n submodule merge output and respect verbosity
      object.c: clear replace map before freeing it

Takuto Ikuta (1):
      fetch-pack.c: use oidset to check existence of loose object

Tao Qingyun (1):
      t1510-repo-setup.sh: remove useless mkdir

Taylor Blau (5):
      builtin/config.c: treat type specifiers singularly
      builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
      builtin/config: introduce `--default`
      config.c: introduce 'git_config_color' to parse ANSI colors
      builtin/config: introduce `color` type specifier

Thomas Gummerer (10):
      stash push: avoid printing errors
      stash push -u: don't create empty stash
      stash: drop superfluos pathspec parameter
      SubmittingPatches: mention the git contacts command
      completion: stop showing 'save' for stash by default
      completion: make stash -p and alias for stash push -p
      worktree: remove extra members from struct add_opts
      worktree: improve message when creating a new worktree
      worktree: factor out dwim_branch function
      worktree: teach "add" to check out existing branches

Todd Zullinger (1):
      doc/clone: update caption for GIT URLS cross-reference

Torsten Bögershausen (1):
      test: correct detection of UTF8_NFD_TO_NFC for APFS

Wink Saville (8):
      rebase-interactive: simplify pick_on_preserving_merges
      rebase: update invocation of rebase dot-sourced scripts
      rebase: reindent function git_rebase__interactive
      rebase: extract functions out of git_rebase__interactive
      rebase: add and use git_rebase__interactive__preserve_merges
      rebase: remove unused code paths from git_rebase__interactive
      rebase: remove unused code paths from git_rebase__interactive__preserve_merges
      rebase: remove merges_option and a blank line

Yuki Kokubun (1):
      filter-branch: fix errors caused by refs that point at non-committish

brian m. carlson (121):
      bulk-checkin: convert index_bulk_checkin to struct object_id
      builtin/write-tree: convert to struct object_id
      cache-tree: convert write_*_as_tree to object_id
      cache-tree: convert remnants to struct object_id
      resolve-undo: convert struct resolve_undo_info to object_id
      tree: convert read_tree_recursive to struct object_id
      ref-filter: convert grab_objectname to struct object_id
      strbuf: convert strbuf_add_unique_abbrev to use struct object_id
      wt-status: convert struct wt_status_state to object_id
      Convert find_unique_abbrev* to struct object_id
      http-walker: convert struct object_request to use struct object_id
      send-pack: convert remaining functions to struct object_id
      replace_object: convert struct replace_object to object_id
      builtin/mktag: convert to struct object_id
      archive: convert write_archive_entry_fn_t to object_id
      archive: convert sha1_file_to_archive to struct object_id
      builtin/index-pack: convert struct ref_delta_entry to object_id
      sha1_file: convert read_loose_object to use struct object_id
      sha1_file: convert check_sha1_signature to struct object_id
      streaming: convert open_istream to use struct object_id
      builtin/mktree: convert to struct object_id
      sha1_file: convert assert_sha1_type to object_id
      sha1_file: convert retry_bad_packed_offset to struct object_id
      packfile: convert unpack_entry to struct object_id
      Convert remaining callers of sha1_object_info_extended to object_id
      sha1_file: convert sha1_object_info* to object_id
      builtin/fmt-merge-msg: convert remaining code to object_id
      builtin/notes: convert static functions to object_id
      tree-walk: convert get_tree_entry_follow_symlinks internals to object_id
      streaming: convert istream internals to struct object_id
      tree-walk: convert tree entry functions to object_id
      sha1_file: convert read_object_with_reference to object_id
      sha1_file: convert read_sha1_file to struct object_id
      Convert lookup_replace_object to struct object_id
      sha1_file: introduce a constant for max header length
      convert: convert to struct object_id
      sha1_name: convert struct min_abbrev_data to object_id
      t1011: abstract away SHA-1-specific constants
      t1304: abstract away SHA-1-specific constants
      t1300: abstract away SHA-1-specific constants
      t1405: sort reflog entries in a hash-independent way
      t1411: abstract away SHA-1-specific constants
      t1507: abstract away SHA-1-specific constants
      t2020: abstract away SHA-1 specific constants
      t2101: modernize test style
      t2101: abstract away SHA-1-specific constants
      t2107: abstract away SHA-1-specific constants
      format-patch: make cover letters always text/plain
      cache: add a function to read an object ID from a buffer
      server-info: remove unused members from struct pack_info
      Remove unused member in struct object_context
      packfile: remove unused member from struct pack_entry
      packfile: convert has_sha1_pack to object_id
      sha1-file: convert freshen functions to object_id
      packfile: convert find_pack_entry to object_id
      packfile: abstract away hash constant values
      pack-objects: abstract away hash algorithm
      pack-redundant: abstract away hash algorithm
      tree-walk: avoid hard-coded 20 constant
      tree-walk: convert get_tree_entry_follow_symlinks to object_id
      fsck: convert static functions to struct object_id
      submodule-config: convert structures to object_id
      split-index: convert struct split_index to object_id
      Update struct index_state to use struct object_id
      pack-redundant: convert linked lists to use struct object_id
      index-pack: abstract away hash function constant
      commit: convert uses of get_sha1_hex to get_oid_hex
      dir: convert struct untracked_cache_dir to object_id
      http: eliminate hard-coded constants
      revision: replace use of hard-coded constants
      upload-pack: replace use of several hard-coded constants
      diff: specify abbreviation size in terms of the_hash_algo
      builtin/receive-pack: avoid hard-coded constants for push certs
      sha1-file: add functions for hex empty tree and blob OIDs
      builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
      builtin/merge: switch tree functions to use object_id
      merge: convert empty tree constant to the_hash_algo
      sequencer: convert one use of EMPTY_TREE_SHA1_HEX
      submodule: convert several uses of EMPTY_TREE_SHA1_HEX
      wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
      builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
      builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
      sha1_file: convert cached object code to struct object_id
      cache-tree: use is_empty_tree_oid
      sequencer: use the_hash_algo for empty tree object ID
      dir: use the_hash_algo for empty blob object ID
      sha1_file: only expose empty object constants through git_hash_algo
      Update shell scripts to compute empty tree object ID
      add--interactive: compute the empty tree value
      merge-one-file: compute empty blob object ID
      Documentation: use 8-space tabs with Asciidoctor
      Documentation: render revisions correctly under Asciidoctor
      mailmap: update brian m. carlson's email address
      t/test-lib: add an SHA1 prerequisite
      t/test-lib: introduce ZERO_OID
      t: switch $_z40 to $ZERO_OID
      t/test-lib: introduce OID_REGEX
      t: switch $_x40 to $OID_REGEX
      t0000: annotate with SHA1 prerequisite
      t1007: annotate with SHA1 prerequisite
      t1512: skip test if not using SHA-1
      t4044: skip test if not using SHA-1
      t: skip pack tests if not using SHA-1
      t2203: abstract away SHA-1-specific constants
      t3103: abstract away SHA-1-specific constants
      t3702: abstract away SHA-1-specific constants
      t3905: abstract away SHA-1-specific constants
      t4007: abstract away SHA-1-specific constants
      t4008: abstract away SHA-1-specific constants
      t4014: abstract away SHA-1-specific constants
      t4020: abstract away SHA-1-specific constants
      t4022: abstract away SHA-1-specific constants
      t4029: fix test indentation
      t4029: abstract away SHA-1-specific constants
      t4030: abstract away SHA-1-specific constants
      t/lib-diff-alternative: abstract away SHA-1-specific constants
      t4205: sort log output in a hash-independent way
      t4042: abstract away SHA-1-specific constants
      t4045: abstract away SHA-1-specific constants
      t4208: abstract away SHA-1-specific constants
      t5300: abstract away SHA-1-specific constants

Ævar Arnfjörð Bjarmason (21):
      configure: fix a regression in PCRE v1 detection
      configure: detect redundant --with-libpcre & --with-libpcre1
      Makefile: make USE_LIBPCRE=YesPlease mean v2, not v1
      Makefile: fix broken bindir_relative variable
      Makefile: add a gitexecdir_relative variable
      Makefile: optionally symlink libexec/git-core binaries to bin/git
      Remove contrib/examples/*
      doc hash-function-transition: clarify how older gits die on NewHash
      doc hash-function-transition: clarify what SHAttered means
      git-svn: avoid warning on undef readline()
      Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
      Makefile: add a DEVOPTS to get all of -Wextra
      git{,-blame}.el: remove old bitrotting Emacs code
      .gitattributes: add *.pl extension for Perl
      .gitattributes: use the "perl" differ for Perl
      .gitattributes: add a diff driver for Python
      sha1-name.c: remove stray newline
      sha1-array.h: align function arguments
      git-p4: change "commitish" typo to "committish"
      sha1-name.c: move around the collect_ambiguous() function
      get_short_oid: sort ambiguous objects by type, then SHA-1


^ permalink raw reply	[relevance 1%]

* [ANNOUNCE] Git v2.16.0
@ 2018-01-18  5:54  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2018-01-18  5:54 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

The latest feature release Git v2.16.0 is now available at the
usual places.  It is comprised of 509 non-merge commits since
v2.15.0, contributed by 91 people, 26 of which are new faces.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.16.0'
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.15.0 are as follows.
Welcome to the Git development community!

  Albert Astals Cid, Antoine Beaupré, Damien Marié, Daniel
  Bensoussan, Fangyi Zhou, Florian Klink, Gennady Kupava, Guillaume
  Castagnino, Haaris Mehmood, Hans Jerry Illikainen, Ingo Ruhnke,
  Jakub Bereżański, Jean Carlo Machado, Julien Dusser, J Wyman,
  Kevin, Louis Bettens, Łukasz Stelmach, Marius Paliga, Olga
  Telezhnaya, Rafael Ascensão, Robert Abel, Robert P. J. Day,
  Shuyu Wei, Wei Shuyu, and Zhou Fangyi.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alexander Shopov,
  Alex Vandiver, Anders Kaseorg, Andrey Okoshkin, Ann T Ropea,
  Beat Bolli, Ben Peart, Brandon Williams, brian m. carlson, Carlos
  Martín Nieto, Changwoo Ryu, Charles Bailey, Christian Couder,
  Christopher Díaz Riveros, Dave Borowitz, Dennis Kaarsemaker,
  Derrick Stolee, Dimitriy Ryazantcev, Elijah Newren, Emily Xie,
  Eric Sunshine, Eric Wong, Heiko Voigt, Jacob Keller, Jameson
  Miller, Jean-Noel Avila, Jeff Hostetler, Jeff King, Jiang Xin,
  Johannes Schindelin, Jonathan Nieder, Jonathan Tan, Jordi Mas,
  Junio C Hamano, Kaartic Sivaraam, Kevin Daudt, Lars Schneider,
  Liam Beguin, Luke Diamand, Martin Ågren, Michael Haggerty,
  Nicolas Morey-Chaisemartin, Peter Krefting, Phil Hord, Phillip
  Wood, Pranit Bauva, Prathamesh Chavan, Ralf Thielow, Ramsay
  Jones, Randall S. Becker, Rasmus Villemoes, René Scharfe,
  Simon Ruderich, Stefan Beller, Steffen Prohaska, Stephan Beyer,
  SZEDER Gábor, Thomas Braun, Thomas Gummerer, Todd Zullinger,
  Torsten Bögershausen, Trần Ngọc Quân, and W. Trevor King.

----------------------------------------------------------------

Git 2.16 Release Notes
======================

Backward compatibility notes and other notable changes.

 * Use of an empty string as a pathspec element that is used for
   'everything matches' is now an error.


Updates since v2.15
-------------------

UI, Workflows & Features

 * An empty string as a pathspec element that means "everything"
   i.e. 'git add ""', is now illegal.  We started this by first
   deprecating and warning a pathspec that has such an element in
   2.11 (Nov 2016).

 * A hook script that is set unexecutable is simply ignored.  Git
   notifies when such a file is ignored, unless the message is
   squelched via advice.ignoredHook configuration.

 * "git pull" has been taught to accept "--[no-]signoff" option and
   pass it down to "git merge".

 * The "--push-option=<string>" option to "git push" now defaults to a
   list of strings configured via push.pushOption variable.

 * "gitweb" checks if a directory is searchable with Perl's "-x"
   operator, which can be enhanced by using "filetest 'access'"
   pragma, which now we do.

 * "git stash save" has been deprecated in favour of "git stash push".

 * The set of paths output from "git status --ignored" was tied
   closely with its "--untracked=<mode>" option, but now it can be
   controlled more flexibly.  Most notably, a directory that is
   ignored because it is listed to be ignored in the ignore/exclude
   mechanism can be handled differently from a directory that ends up
   to be ignored only because all files in it are ignored.

 * The remote-helper for talking to MediaWiki has been updated to
   truncate an overlong pagename so that ".mw" suffix can still be
   added.

 * The remote-helper for talking to MediaWiki has been updated to
   work with mediawiki namespaces.

 * The "--format=..." option "git for-each-ref" takes learned to show
   the name of the 'remote' repository and the ref at the remote side
   that is affected for 'upstream' and 'push' via "%(push:remotename)"
   and friends.

 * Doc and message updates to teach users "bisect view" is a synonym
   for "bisect visualize".

 * "git bisect run" that did not specify any command to run used to go
   ahead and treated all commits to be tested as 'good'.  This has
   been corrected by making the command error out.

 * The SubmittingPatches document has been converted to produce an
   HTML version via AsciiDoc/Asciidoctor.

 * We learned to optionally talk to a file system monitor via new
   fsmonitor extension to speed up "git status" and other operations
   that need to see which paths have been modified.  Currently we only
   support "watchman".  See File System Monitor section of
   git-update-index(1) for more detail.

 * The "diff" family of commands learned to ignore differences in
   carriage return at the end of line.

 * Places that know about "sendemail.to", like documentation and shell
   completion (in contrib/) have been taught about "sendemail.tocmd",
   too.

 * "git add --renormalize ." is a new and safer way to record the fact
   that you are correcting the end-of-line convention and other
   "convert_to_git()" glitches in the in-repository data.

 * "git branch" and "git checkout -b" are now forbidden from creating
   a branch whose name is "HEAD".

 * "git branch --list" learned to show its output through the pager by
   default when the output is going to a terminal, which is controlled
   by the pager.branch configuration variable.  This is similar to a
   recent change to "git tag --list".

 * "git grep -W", "git diff -W" and their friends learned a heuristic
   to extend a pre-context beyond the line that matches the "function
   pattern" (aka "diff.*.xfuncname") to include a comment block, if
   exists, that immediately precedes it.

 * "git config --expiry-date gc.reflogexpire" can read "2.weeks" from
   the configuration and report it as a timestamp, just like "--int"
   would read "1k" and report 1024, to help consumption by scripts.

 * The shell completion (in contrib/) learned that "git pull" can take
   the "--autostash" option.

 * The tagnames "git log --decorate" uses to annotate the commits can
   now be limited to subset of available refs with the two additional
   options, --decorate-refs[-exclude]=<pattern>.

 * "git grep" compiled with libpcre2 sometimes triggered a segfault,
   which is being fixed.

 * "git send-email" tries to see if the sendmail program is available
   in /usr/lib and /usr/sbin; extend the list of locations to be
   checked to also include directories on $PATH.

 * "git diff" learned, "--anchored", a variant of the "--patience"
   algorithm, to which the user can specify which 'unique' line to be
   used as anchoring points.

 * The way "git worktree add" determines what branch to create from
   where and checkout in the new worktree has been updated a bit.

 * Ancient part of codebase still shows dots after an abbreviated
   object name just to show that it is not a full object name, but
   these ellipses are confusing to people who newly discovered Git
   who are used to seeing abbreviated object names and find them
   confusing with the range syntax.

 * With a configuration variable rebase.abbreviateCommands set,
   "git rebase -i" produces the todo list with a single-letter
   command names.

 * "git worktree add" learned to run the post-checkout hook, just like
   "git checkout" does, after the initial checkout.

 * "git svn" has been updated to strip CRs in the commit messages, as
   recent versions of Subversion rejects them.

 * "git imap-send" did not correctly quote the folder name when
   making a request to the server, which has been corrected.

 * Error messages from "git rebase" have been somewhat cleaned up.

 * Git has been taught to support an https:// URL used for http.proxy
   when using recent versions of libcurl.

 * "git merge" learned to pay attention to merge.verifySignatures
   configuration variable and pretend as if '--verify-signatures'
   option was given from the command line.

 * "git describe" was taught to dig trees deeper to find a
   <commit-ish>:<path> that refers to a given blob object.


Performance, Internal Implementation, Development Support etc.

 * An earlier update made it possible to use an on-stack in-core
   lockfile structure (as opposed to having to deliberately leak an
   on-heap one).  Many codepaths have been updated to take advantage
   of this new facility.

 * Calling cmd_foo() as if it is a general purpose helper function is
   a no-no.  Correct two instances of such to set an example.

 * We try to see if somebody runs our test suite with a shell that
   does not support "local" like bash/dash does.

 * An early part of piece-by-piece rewrite of "git bisect" in C.

 * GSoC to piece-by-piece rewrite "git submodule" in C.

 * Optimize the code to find shortest unique prefix of object names.

 * Pathspec-limited revision traversal was taught not to keep finding
   unneeded differences once it knows two trees are different inside
   given pathspec.

 * Conversion from uchar[20] to struct object_id continues.

 * Code cleanup.

 * A single-word "unsigned flags" in the diff options is being split
   into a structure with many bitfields.

 * TravisCI build updates.

 * Parts of a test to drive the long-running content filter interface
   has been split into its own module, hopefully to eventually become
   reusable.

 * Drop (perhaps overly cautious) sanity check before using the index
   read from the filesystem at runtime.

 * The build procedure has been taught to avoid some unnecessary
   instability in the build products.

 * A new mechanism to upgrade the wire protocol in place is proposed
   and demonstrated that it works with the older versions of Git
   without harming them.

 * An infrastructure to define what hash function is used in Git is
   introduced, and an effort to plumb that throughout various
   codepaths has been started.

 * The code to iterate over loose object files got optimized.

 * An internal function that was left for backward compatibility has
   been removed, as there is no remaining callers.

 * Historically, the diff machinery for rename detection had a
   hardcoded limit of 32k paths; this is being lifted to allow users
   trade cycles with a (possibly) easier to read result.

 * The tracing infrastructure has been optimized for cases where no
   tracing is requested.

 * In preparation for implementing narrow/partial clone, the object
   walking machinery has been taught a way to tell it to "filter" some
   objects from enumeration.

 * A few structures and variables that are implementation details of
   the decorate API have been renamed and then the API got documented
   better.

 * Assorted updates for TravisCI integration.
   (merge 4f26366679 sg/travis-fixes later to maint).

 * Introduce a helper to simplify code to parse a common pattern that
   expects either "--key" or "--key=<something>".

 * "git version --build-options" learned to report the host CPU and
   the exact commit object name the binary was built from.

Also contains various documentation updates and code clean-ups.


Fixes since v2.15
-----------------

 * "auto" as a value for the columnar output configuration ought to
   judge "is the output consumed by humans?" with the same criteria as
   "auto" for coloured output configuration, i.e. either the standard
   output stream is going to tty, or a pager is in use.  We forgot the
   latter, which has been fixed.

 * The experimental "color moved lines differently in diff output"
   feature was buggy around "ignore whitespace changes" edges, which
   has been corrected.

 * Instead of using custom line comparison and hashing functions to
   implement "moved lines" coloring in the diff output, use the pair
   of these functions from lower-layer xdiff/ code.

 * Some codepaths did not check for errors when asking what branch the
   HEAD points at, which have been fixed.

 * "git commit", after making a commit, did not check for errors when
   asking on what branch it made the commit, which has been corrected.

 * "git status --ignored -u" did not stop at a working tree of a
   separate project that is embedded in an ignored directory and
   listed files in that other project, instead of just showing the
   directory itself as ignored.

 * A broken access to object databases in recent update to "git grep
   --recurse-submodules" has been fixed.

 * A recent regression in "git rebase -i" that broke execution of git
   commands from subdirectories via "exec" instruction has been fixed.

 * A (possibly flakey) test fix.

 * "git check-ref-format --branch @{-1}" bit a "BUG()" when run
   outside a repository for obvious reasons; clarify the documentation
   and make sure we do not even try to expand the at-mark magic in
   such a case, but still call the validation logic for branch names.

 * "git fetch --recurse-submodules" now knows that submodules can be
   moved around in the superproject in addition to getting updated,
   and finds the ones that need to be fetched accordingly.

 * Command line completion (in contrib/) update.

 * Description of blame.{showroot,blankboundary,showemail,date}
   configuration variables have been added to "git config --help".

 * After an error from lstat(), diff_populate_filespec() function
   sometimes still went ahead and used invalid data in struct stat,
   which has been fixed.

 * UNC paths are also relevant in Cygwin builds and they are now
   tested just like Mingw builds.

 * Correct start-up sequence so that a repository could be placed
   immediately under the root directory again (which was broken at
   around Git 2.13).

 * The credential helper for libsecret (in contrib/) has been improved
   to allow possibly prompting the end user to unlock secrets that are
   currently locked (otherwise the secrets may not be loaded).

 * MinGW updates.

 * Error checking in "git imap-send" for empty response has been
   improved.

 * Recent update to the refs infrastructure implementation started
   rewriting packed-refs file more often than before; this has been
   optimized again for most trivial cases.

 * Some error messages did not quote filenames shown in it, which have
   been fixed.

 * "git rebase -i" recently started misbehaving when a submodule that
   is configured with 'submodule.<name>.ignore' is dirty; this has
   been corrected.

 * Building with NO_LIBPCRE1_JIT did not disable it, which has been fixed.

 * We used to add an empty alternate object database to the system
   that does not help anything; it has been corrected.

 * Doc update around use of "format-patch --subject-prefix" etc.

 * A fix for an ancient bug in "git apply --ignore-space-change" codepath.

 * Clarify and enhance documentation for "merge-base --fork-point", as
   it was clear what it computed but not why/what for.

 * A few scripts (both in production and tests) incorrectly redirected
   their error output.  These have been corrected.

 * "git notes" sent its error message to its standard output stream,
   which was corrected.

 * The three-way merge performed by "git cherry-pick" was confused
   when a new submodule was added in the meantime, which has been
   fixed (or "papered over").

 * The sequencer machinery (used by "git cherry-pick A..B", and "git
   rebase -i", among other things) would have lost a commit if stopped
   due to an unlockable index file, which has been fixed.

 * "git apply --inaccurate-eof" when used with "--ignore-space-change"
   triggered an internal sanity check, which has been fixed.

 * Command line completion (in contrib/) has been taught about the
   "--copy" option of "git branch".

 * When "git rebase" prepared a mailbox of changes and fed it to "git
   am" to replay them, it was confused when a stray "From " happened
   to be in the log message of one of the replayed changes.  This has
   been corrected.

 * There was a recent semantic mismerge in the codepath to write out a
   section of a configuration section, which has been corrected.

 * Mentions of "git-rebase" and "git-am" (dashed form) still remained
   in end-user visible strings emitted by the "git rebase" command;
   they have been corrected.

 * Contrary to the documentation, "git pull -4/-6 other-args" did not
   ask the underlying "git fetch" to go over IPv4/IPv6, which has been
   corrected.

 * "git checkout --recursive" may overwrite and rewind the history of
   the branch that happens to be checked out in submodule
   repositories, which might not be desirable.  Detach the HEAD but
   still allow the recursive checkout to succeed in such a case.
   (merge 57f22bf997 sb/submodule-recursive-checkout-detach-head later to maint).

 * "git branch --set-upstream" has been deprecated and (sort of)
   removed, as "--set-upstream-to" is the preferred one these days.
   The documentation still had "--set-upstream" listed on its
   synopsis section, which has been corrected.
   (merge a060f3d3d8 tz/branch-doc-remove-set-upstream later to maint).

 * Internally we use 0{40} as a placeholder object name to signal the
   codepath that there is no such object (e.g. the fast-forward check
   while "git fetch" stores a new remote-tracking ref says "we know
   there is no 'old' thing pointed at by the ref, as we are creating
   it anew" by passing 0{40} for the 'old' side), and expect that a
   codepath to locate an in-core object to return NULL as a sign that
   the object does not exist.  A look-up for an object that does not
   exist however is quite costly with a repository with large number
   of packfiles.  This access pattern has been optimized.
   (merge 87b5e236a1 jk/fewer-pack-rescan later to maint).

 * In addition to "git stash -m message", the command learned to
   accept "git stash -mmessage" form.
   (merge 5675473fcb ph/stash-save-m-option-fix later to maint).

 * @{-N} in "git checkout @{-N}" may refer to a detached HEAD state,
   but the documentation was not clear about it, which has been fixed.
   (merge 75ce149575 ks/doc-checkout-previous later to maint).

 * A regression in the progress eye-candy was fixed.
   (merge 9c5951cacf jk/progress-delay-fix later to maint).

 * The code internal to the recursive merge strategy was not fully
   prepared to see a path that is renamed to try overwriting another
   path that is only different in case on case insensitive systems.
   This does not matter in the current code, but will start to matter
   once the rename detection logic starts taking hints from nearby
   paths moving to some directory and moves a new path along with them.
   (merge 4cba2b0108 en/merge-recursive-icase-removal later to maint).

 * An v2.12-era regression in pathspec match logic, which made it look
   into submodule tree even when it is not desired, has been fixed.
   (merge eef3df5a93 bw/pathspec-match-submodule-boundary later to maint).

 * Amending commits in git-gui broke the author name that is non-ascii
   due to incorrect enconding conversion.

 * Recent update to the submodule configuration code broke "diff-tree"
   by accidentally stopping to read from the index upfront.
   (merge fd66bcc31f bw/submodule-config-cleanup later to maint).

 * Git shows a message to tell the user that it is waiting for the
   user to finish editing when spawning an editor, in case the editor
   opens to a hidden window or somewhere obscure and the user gets
   lost.
   (merge abfb04d0c7 ls/editor-waiting-message later to maint).

 * The "safe crlf" check incorrectly triggered for contents that does
   not use CRLF as line endings, which has been corrected.
   (merge 649f1f0948 tb/check-crlf-for-safe-crlf later to maint).

 * "git clone --shared" to borrow from a (secondary) worktree did not
   work, even though "git clone --local" did.  Both are now accepted.
   (merge b3b05971c1 es/clone-shared-worktree later to maint).

 * The build procedure now allows not just the repositories but also
   the refs to be used to take pre-formatted manpages and html
   documents to install.
   (merge 65289e9dcd rb/quick-install-doc later to maint).

 * Update the shell prompt script (in contrib/) to strip trailing CR
   from strings read from various "state" files.
   (merge 041fe8fc83 ra/prompt-eread-fix later to maint).

 * "git merge -s recursive" did not correctly abort when the index is
   dirty, if the merged tree happened to be the same as the current
   HEAD, which has been fixed.

 * Bytes with high-bit set were encoded incorrectly and made
   credential helper fail.
   (merge 4c267f2ae3 jd/fix-strbuf-add-urlencode-bytes later to maint).

 * "git rebase -p -X<option>" did not propagate the option properly
   down to underlying merge strategy backend.
   (merge dd6fb0053c js/fix-merge-arg-quoting-in-rebase-p later to maint).

 * "git merge -s recursive" did not correctly abort when the index is
   dirty, if the merged tree happened to be the same as the current
   HEAD, which has been fixed.
   (merge f309e8e768 ew/empty-merge-with-dirty-index-maint later to maint).

 * Other minor doc, test and build updates and code cleanups.
   (merge 1a1fc2d5b5 rd/man-prune-progress later to maint).
   (merge 0ba014035a rd/man-reflog-add-n later to maint).
   (merge e54b63359f rd/doc-notes-prune-fix later to maint).
   (merge ff4c9b413a sp/doc-info-attributes later to maint).
   (merge 7db2cbf4f1 jc/receive-pack-hook-doc later to maint).
   (merge 5a0526264b tg/t-readme-updates later to maint).
   (merge 5e83cca0b8 jk/no-optional-locks later to maint).
   (merge 826c778f7c js/hashmap-update-sample later to maint).
   (merge 176b2d328c sg/setup-doc-update later to maint).
   (merge 1b09073514 rs/am-builtin-leakfix later to maint).
   (merge addcf6cfde rs/fmt-merge-msg-string-leak-fix later to maint).
   (merge c3ff8f6c14 rs/strbuf-read-once-reset-length later to maint).
   (merge 6b0eb884f9 db/doc-workflows-neuter-the-maintainer later to maint).
   (merge 8c87bdfb21 jk/cvsimport-quoting later to maint).
   (merge 176cb979fe rs/fmt-merge-msg-leakfix later to maint).
   (merge 5a03360e73 tb/delimit-pretty-trailers-args-with-comma later to maint).
   (merge d0e6326026 ot/pretty later to maint).
   (merge 44103f4197 sb/test-helper-excludes later to maint).
   (merge 170078693f jt/transport-no-more-rsync later to maint).
   (merge c07b3adff1 bw/path-doc later to maint).
   (merge bf9d7df950 tz/lib-git-svn-svnserve-tests later to maint).
   (merge dec366c9a8 sr/http-sslverify-config-doc later to maint).
   (merge 3f824e91c8 jk/test-suite-tracing later to maint).
   (merge 1feb061701 db/doc-config-section-names-with-bs later to maint).
   (merge 74dea0e13c jh/memihash-opt later to maint).
   (merge 2e9fdc795c ma/bisect-leakfix later to maint).

----------------------------------------------------------------

Changes since v2.15.0 are as follows:

Adam Dinwoodie (3):
      t5580: add Cygwin support
      rebase -i: fix comment typo
      doc/SubmittingPatches: correct subject guidance

Albert Astals Cid (1):
      completion: add --autostash and --no-autostash to pull

Alex Vandiver (7):
      fsmonitor: read entirety of watchman output
      fsmonitor: set the PWD to the top of the working tree
      fsmonitor: don't bother pretty-printing JSON from watchman
      fsmonitor: document GIT_TRACE_FSMONITOR
      fsmonitor: delay updating state until after split index is merged
      fsmonitor: read from getcwd(), not the PWD environment variable
      fsmonitor: store fsmonitor bitmap before splitting index

Alexander Shopov (2):
      l10n: bg.po: Updated Bulgarian translation (3284t)
      l10n: bg.po: Updated Bulgarian translation (3288t)

Anders Kaseorg (1):
      git-gui: sort entries in optimized tclIndex

Andrey Okoshkin (3):
      commit: check result of resolve_ref_unsafe
      diff: fix lstat() error handling in diff_populate_filespec()
      merge-recursive: check GIT_MERGE_VERBOSITY only once

Ann T Ropea (7):
      Documentation: revisions: fix typo: "three dot" ---> "three-dot" (in line with "two-dot").
      Documentation: user-manual: limit usage of ellipsis
      print_sha1_ellipsis: introduce helper
      checkout: describe_detached_head: remove ellipsis after committish
      t4013: prepare for upcoming "diff --raw --abbrev" output format change
      diff: diff_aligned_abbrev: remove ellipsis after abbreviated SHA-1 value
      t4013: test new output from diff --abbrev --raw

Antoine Beaupré (6):
      remote-mediawiki: limit filenames to legal
      remote-mediawiki: show known namespace choices on failure
      remote-mediawiki: skip virtual namespaces
      remote-mediawiki: support fetching from (Main) namespace
      remote-mediawiki: process namespaces in order
      remote-mediawiki: show progress while fetching namespaces

Beat Bolli (2):
      contrib/git-jump: allow to configure the grep command
      t3900: add some more quotes

Ben Peart (16):
      bswap: add 64 bit endianness helper get_be64
      preload-index: add override to enable testing preload-index
      update-index: add a new --force-write-index option
      fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
      fsmonitor: add documentation for the fsmonitor extension.
      ls-files: Add support in ls-files to display the fsmonitor valid bit
      update-index: add fsmonitor support to update-index
      fsmonitor: add a test tool to dump the index extension
      split-index: disable the fsmonitor extension when running the split index test
      fsmonitor: add test cases for fsmonitor extension
      fsmonitor: add a sample integration script for Watchman
      fsmonitor: add a performance test
      fsmonitor: MINGW support for watchman integration
      fsmonitor: preserve utf8 filenames in fsmonitor-watchman log
      read_index_from(): speed index loading by skipping verification of the entry order
      fsmonitor: simplify determining the git worktree under Windows

Brandon Williams (24):
      pkt-line: add packet_write function
      protocol: introduce protocol extension mechanisms
      daemon: recognize hidden request arguments
      upload-pack, receive-pack: introduce protocol version 1
      connect: teach client to recognize v1 server response
      connect: tell server that the client understands v1
      http: tell server that the client understands v1
      i5700: add interop test for protocol transition
      ssh: introduce a 'simple' ssh variant
      add, reset: use DIFF_OPT_SET macro to set a diff flag
      diff: convert flags to be stored in bitfields
      diff: add flag to indicate textconv was set via cmdline
      diff: remove touched flags
      diff: remove DIFF_OPT_TST macro
      diff: remove DIFF_OPT_SET macro
      diff: remove DIFF_OPT_CLR macro
      diff: make struct diff_flags members lowercase
      wt-status: actually ignore submodules when requested
      pathspec: only match across submodule boundaries when requested
      diff-tree: read the index so attribute checks work in bare repositories
      submodule: convert stage_updated_gitmodules to take a struct index_state
      submodule: used correct index in is_staging_gitmodules_ok
      submodule: convert get_next_submodule to not rely on the_index
      path: document path functions

Carlos Martín Nieto (1):
      diff: --indent-heuristic is no longer experimental

Changwoo Ryu (2):
      l10n: ko.po: Update Korean translation
      l10n: TEAMS: Add ko team members

Charles Bailey (2):
      t4201: make use of abbreviation in the test more robust
      grep: fix NO_LIBPCRE1_JIT to fully disable JIT

Christian Couder (24):
      perf/run: add '--config' option to the 'run' script
      perf/run: add get_var_from_env_or_config()
      perf/run: add GIT_PERF_DIRS_OR_REVS
      perf/run: add calls to get_var_from_env_or_config()
      perf/run: add get_subsections()
      perf/run: update get_var_from_env_or_config() for subsections
      perf/run: add run_subsection()
      perf/run: show name of rev being built
      perf: store subsection results in "test-results/$GIT_PERF_SUBSECTION/"
      t0021/rot13-filter: fix list comparison
      t0021/rot13-filter: refactor packet reading functions
      t0021/rot13-filter: improve 'if .. elsif .. else' style
      t0021/rot13-filter: improve error message
      t0021/rot13-filter: add packet_initialize()
      t0021/rot13-filter: refactor checking final lf
      t0021/rot13-filter: add capability functions
      Git/Packet.pm: extract parts of t0021/rot13-filter.pl for reuse
      Git/Packet: clarify that packet_required_key_val_read allows EOF
      Git/Packet.pm: use 'if' instead of 'unless'
      list-objects-filter-options: fix 'keword' typo in comment
      git-compat-util: introduce skip_to_optional_arg()
      index-pack: use skip_to_optional_arg()
      diff: use skip_to_optional_arg()
      diff: use skip_to_optional_arg_default()

Christopher Díaz Riveros (3):
      l10n: Update Spanish translation
      l10n: es.po: Update Spanish Translation v2.16.0
      l10n: es.po: Spanish translation 2.16.0 round 2

Damien Marié (1):
      run-command: add hint when a hook is ignored

Daniel Bensoussan (1):
      doc: reword gitworkflows.txt for neutrality

Dave Borowitz (1):
      config.txt: document behavior of backslashes in subsections

Dennis Kaarsemaker (1):
      credential-libsecret: unlock locked secrets

Derrick Stolee (5):
      p4211-line-log.sh: add log --online --raw --parents perf test
      sha1_name: unroll len loop in find_unique_abbrev_r()
      sha1_name: parse less while finding common prefix
      sha1_name: minimize OID comparisons during disambiguation
      sha1_file: use strbuf_add() instead of strbuf_addf()

Dimitriy Ryazantcev (1):
      l10n: ru.po: update Russian translation

Elijah Newren (10):
      sequencer: warn when internal merge may be suboptimal due to renameLimit
      merge-recursive: handle addition of submodule on our side of history
      progress: fix progress meters when dealing with lots of work
      diff: remove silent clamp of renameLimit
      sequencer: show rename progress during cherry picks
      merge-recursive: ignore_case shouldn't reject intentional removals
      strbuf: remove unused stripspace function alias
      t6044: recursive can silently incorporate dirty changes in a merge
      move index_has_changes() from builtin/am.c to merge.c for reuse
      merge-recursive: avoid incorporating uncommitted changes in a merge

Emily Xie (1):
      pathspec: die on empty strings as pathspec

Eric Sunshine (3):
      worktree: invoke post-checkout hook (unless --no-checkout)
      clone: support 'clone --shared' from a worktree
      version --build-options: also report host CPU

Eric Wong (2):
      rebase: use mboxrd format to avoid split errors
      git-svn: convert CRLF to LF in commit message to SVN

Fangyi Zhou (1):
      l10n: zh_CN translate parameter name

Florian Klink (1):
      git-send-email: honor $PATH for sendmail binary

Gennady Kupava (2):
      trace: remove trace key normalization
      trace: improve performance while category is disabled

Guillaume Castagnino (1):
      gitweb: use filetest to allow ACLs

Haaris Mehmood (1):
      config: add --expiry-date

Hans Jerry Illikainen (2):
      merge: add config option for verifySignatures
      t: add tests for pull --verify-signatures

Heiko Voigt (3):
      fetch: add test to make sure we stay backwards compatible
      implement fetching of moved submodules
      submodule: simplify decision tree whether to or not to fetch

Ingo Ruhnke (1):
      remote-mediawiki: allow fetching namespaces with spaces

J Wyman (1):
      for-each-ref: let upstream/push report the remote ref name

Jacob Keller (2):
      sequencer: pass absolute GIT_DIR to exec commands
      diff: add tests for --relative without optional prefix value

Jakub Bereżański (2):
      t0302: check helper can handle empty credentials
      wincred: handle empty username/password correctly

Jameson Miller (4):
      status: add option to show ignored files differently
      status: report matching ignored and normal untracked
      status: document options to show matching ignored files
      status: test ignored modes

Jean Carlo Machado (1):
      fix typos in 2.15.0 release notes

Jean-Noel Avila (3):
      submodule--helper.c: i18n: add a missing space in message
      l10n: fr.po v2.16.0 round 1
      l10n: fr.po 2.16 round 2

Jeff Hostetler (9):
      dir: allow exclusions from blob in addition to file
      oidmap: add oidmap iterator methods
      oidset: add iterator methods to oidset
      list-objects: filter objects in traverse_commit_list
      rev-list: add list-objects filtering support
      pack-objects: add list-objects filtering
      list-objects-filter-options: support --no-filter
      rev-list: support --no-filter argument
      partial-clone: design doc

Jeff King (27):
      revision: quit pruning diff more quickly when possible
      t4015: refactor --color-moved whitespace test
      t4015: check "negative" case for "-w --color-moved"
      t4015: test the output of "diff --color-moved -b"
      diff: fix whitespace-skipping with --color-moved
      diff: handle NULs in get_string_hash()
      test-ref-store: avoid passing NULL to printf
      remote: handle broken symrefs
      log: handle broken HEAD in decoration check
      worktree: handle broken symrefs in find_shared_symref()
      setup: avoid double slashes when looking for HEAD
      link_alt_odb_entries: make empty input a noop
      git-jump: give contact instructions in the README
      p5550: factor out nonsense-pack creation
      t/perf/lib-pack: use fast-import checkpoint to create packs
      p5551: add a script to test fetch pack-dir rescans
      everything_local: use "quick" object existence check
      sha1_file: fast-path null sha1 as a missing object
      git-status.txt: mention --no-optional-locks
      progress: set default delay threshold to 100%, not 0%
      docs/pretty-formats: mention commas in %(trailers) syntax
      cvsimport: apply shell-quoting regex globally
      test-lib: silence "-x" cleanup under bash
      t5615: avoid re-using descriptor 4
      test-lib: make "-x" work with "--verbose-log"
      t/Makefile: introduce TEST_SHELL_PATH
      docs/diff-options: clarify scope of diff-filter types

Jiang Xin (4):
      l10n: git.pot: v2.16.0 round 1 (64 new, 25 removed)
      l10n: git.pot: v2.16.0 round 2 (8 new, 4 removed)
      l10n: zh_CN: for git v2.16.0 l10n round 2
      l10n: TEAMS: add zh_CN team members

Johannes Schindelin (22):
      for-each-ref: let upstream/push optionally report the remote name
      status: do not get confused by submodules in excluded directories
      mingw: include the full version information in the resources
      mingw: add experimental feature to redirect standard handles
      mingw: optionally redirect stderr/stdout via the same handle
      mingw: document the standard handle redirection
      for-each-ref: test :remotename and :remoteref
      hashmap: adjust documentation to reflect reality
      version --build-options: report commit, too, if possible
      rebase: do not continue when the todo list generation failed
      sequencer: strip bogus LF at end of error messages
      sequencer: remove superfluous conditional
      sequencer: report when noop has an argument
      sequencer: do not invent whitespace when transforming OIDs
      Allow the test suite to pass in a directory whose name contains spaces
      t0302 & t3900: add forgotten quotes
      rebase -p: fix quoting when calling `git merge`
      git gui: fix staging a second line to a 1-line file
      git-gui: avoid exception upon Ctrl+T in an empty list
      git-gui: fix exception when trying to stage with empty file list
      git-gui: allow Ctrl+T to toggle multiple paths
      mingw: handle GITPERLLIB in t0021 in a Windows-compatible way

Jonathan Nieder (10):
      ssh test: make copy_ssh_wrapper_as clean up after itself
      connect: move no_fork fallback to git_tcp_connect
      connect: split git:// setup into a separate function
      connect: split ssh command line options into separate function
      connect: split ssh option computation to its own function
      ssh: 'auto' variant to select between 'ssh' and 'simple'
      ssh: 'simple' variant does not support -4/-6
      ssh: 'simple' variant does not support --port
      connect: correct style of C-style comment
      generate-cmdlist: avoid non-deterministic output

Jonathan Tan (10):
      connect: in ref advertisement, shallows are last
      Documentation: document Extra Parameters
      Tests: clean up and document submodule helpers
      Tests: clean up submodule recursive helpers
      diff: support anchoring line(s)
      diffcore-rename: make diff-tree -l0 mean -l<large>
      decorate: clean up and document API
      transport: remove unused "push" in vtable
      clone, fetch: remove redundant transport check
      transport: make transport vtable more private

Jordi Mas (1):
      l10n: Fixes to Catalan translation

Julien Dusser (1):
      strbuf: fix urlencode format string on signed char

Junio C Hamano (42):
      t0027: do not use an empty string as a pathspec element
      describe: do not use cmd_*() as a subroutine
      merge-ours: do not use cmd_*() as a subroutine
      branch: streamline "attr_only" handling in validate_new_branchname()
      branch: split validate_new_branchname() into two
      t5601: rm the target file of cp that could still be executing
      check-ref-format --branch: do not expand @{...} outside repository
      check-ref-format --branch: strip refs/heads/ using skip_prefix
      check-ref-format doc: --branch validates and expands <branch>
      column: do not include pager.c
      xdiff: reassign xpparm_t.flags bits
      The first batch for 2.16
      RelNotes: the second batch post 2.15 comes
      diff: --ignore-cr-at-eol
      merge-base --fork-point doc: clarify the example and failure modes
      RelNotes: the third batch for 2.16
      branch: correctly reject refs/heads/{-dash,HEAD}
      Start preparation for 2.15.1
      RelNotes: the fourth batch for 2.16
      Almost ready for 2.15.1
      RelNotes: the fifth batch for 2.16
      hooks doc: clarify when receive-pack invokes its hooks
      A bit more fixes for 2.15.1
      RelNotes: the sixth batch for 2.16
      Git 2.15.1
      RelNotes: the seventh batch
      t2020: test variations that matter
      Prepare for 2.15.2
      RelNotes: the eighth batch
      diff: use skip_to_optional_arg_default() in parsing --relative
      t4045: reindent to make helpers readable
      RelNotes: the ninth batch
      RelNotes: the tenth batch
      t5573, t7612: clean up after unexpected success of 'pull' and 'merge'
      sequencer.c: drop 'const' from function return type
      RelNotes: the eleventh batch
      Git 2.16-rc0
      Git 2.16-rc1
      merge-recursive: do not look at the index during recursive merge
      RelNotes update before -rc2
      Git 2.16-rc2
      Git 2.16

Kaartic Sivaraam (12):
      mailmap: use Kaartic Sivaraam's new address
      builtin/branch: remove redundant check for HEAD
      git-rebase: clean up dashed-usages in messages
      Doc/checkout: checking out using @{-N} can lead to detached state
      branch: improve documentation and naming of create_branch() parameters
      branch: group related arguments of create_branch()
      branch: update warning message shown when copying a misnamed branch
      builtin/branch: strip refs/heads/ using skip_prefix
      Doc/check-ref-format: clarify information about @{-N} syntax
      rebase: consistently use branch_name variable
      rebase: distinguish user input by quoting it
      rebase: rebasing can also be done when HEAD is detached

Kevin (1):
      remote-mediawiki: add namespace support

Kevin Daudt (1):
      column: show auto columns when pager is active

Lars Schneider (3):
      refactor "dumb" terminal determination
      progress: drop delay-threshold code
      launch_editor(): indicate that Git waits for user input

Liam Beguin (9):
      Documentation: move rebase.* configs to new file
      Documentation: use preferred name for the 'todo list' script
      rebase -i: set commit to null in exec commands
      rebase -i: refactor transform_todo_ids
      rebase -i: replace reference to sha1 with oid
      rebase -i: update functions to use a flags parameter
      rebase -i -x: add exec commands via the rebase--helper
      rebase -i: learn to abbreviate command names
      t3404: add test case for abbreviated commands

Louis Bettens (1):
      l10n: fr.po: "worktree list" mistranslated as prune

Luke Diamand (1):
      git-p4: update multiple shelved change lists

Marius Paliga (1):
      builtin/push.c: add push.pushOption config

Martin Ågren (22):
      sha1_file: do not leak `lock_file`
      treewide: prefer lockfiles on the stack
      lockfile: fix documentation on `close_lock_file_gently()`
      tempfile: fix documentation on `delete_tempfile()`
      checkout-index: simplify locking logic
      cache-tree: simplify locking logic
      apply: move lockfile into `apply_state`
      apply: remove `newfd` from `struct apply_state`
      cache.h: document `write_locked_index()`
      read-cache: drop explicit `CLOSE_LOCK`-flag
      read-cache: leave lock in right state in `write_locked_index()`
      read_cache: roll back lock in `update_index_if_able()`
      grep: take the read-lock when adding a submodule
      bisect: change calling-convention of `find_bisection()`
      bisect: fix memory leak in `find_bisection()`
      bisect: fix off-by-one error in `best_bisection_sorted()`
      bisect: fix memory leak when returning best element
      builtin/merge-base: free commit lists
      reduce_heads: fix memory leaks
      t7006: add tests for how git branch paginates
      branch: respect `pager.branch` in list-mode only
      branch: change default of `pager.branch` to "on"

Michael Haggerty (12):
      t1409: check that `packed-refs` is not rewritten unnecessarily
      files-backend: don't rewrite the `packed-refs` file unnecessarily
      t0000: check whether the shell supports the "local" keyword
      files_transaction_prepare(): don't leak flags to packed transaction
      prune_ref(): call `ref_transaction_add_update()` directly
      ref_transaction_update(): die on disallowed flags
      ref_transaction_add_update(): remove a check
      refs: tidy up and adjust visibility of the `ref_update` flags
      refs: rename constant `REF_NODEREF` to `REF_NO_DEREF`
      refs: rename constant `REF_ISPRUNING` to `REF_IS_PRUNING`
      write_packed_entry(): take `object_id` arguments
      refs: update some more docs to use "oid" rather than "sha1"

Nicolas Morey-Chaisemartin (1):
      imap-send: URI encode server folder

Olga Telezhnaya (2):
      format: create pretty.h file
      format: create docs for pretty.h

Peter Krefting (2):
      l10n: sv.po: Update Swedish translation (3284t0f0u)
      l10n: sv.po: Update Swedish translation (3288t0f0u)

Phil Hord (2):
      doc: prefer 'stash push' over 'stash save'
      stash: learn to parse -m/--message like commit does

Phillip Wood (2):
      config: avoid "write_in_full(fd, buf, len) != len" pattern
      sequencer: reschedule pick if index can't be locked

Pranit Bauva (6):
      bisect--helper: use OPT_CMDMODE instead of OPT_BOOL
      bisect--helper: rewrite `check_term_format` shell function in C
      bisect--helper: `write_terms` shell function in C
      bisect--helper: `bisect_clean_state` shell function in C
      t6030: explicitly test for bisection cleanup
      bisect--helper: `is_expected_rev` & `check_expected_revs` shell function in C

Prathamesh Chavan (3):
      submodule--helper: introduce get_submodule_displaypath()
      submodule--helper: introduce for_each_listed_submodule()
      submodule: port submodule subcommand 'status' from shell to C

Rafael Ascensão (1):
      log: add option to choose which refs to decorate

Ralf Thielow (3):
      Documentation/git-worktree.txt: add missing `
      l10n: de.po: improve messages when a branch starts to track another ref
      l10n: de.po: translate 72 new messages

Ramsay Jones (1):
      repository: fix a sparse 'using integer as NULL pointer' warning

Randall S. Becker (1):
      install-doc-quick: allow specifying what ref to install

Rasmus Villemoes (2):
      Documentation/config: add sendemail.tocmd to list preceding "See git-send-email(1)"
      completion: add git config sendemail.tocmd

René Scharfe (23):
      notes: move hex_to_bytes() to hex.c and export it
      http-push: use hex_to_bytes()
      sha1_file: use hex_to_bytes()
      sequencer: factor out rewrite_file()
      sequencer: use O_TRUNC to truncate files
      imap-send: handle NULL return of next_arg()
      imap-send: handle missing response codes gracefully
      apply: avoid out-of-bounds access in fuzzy_matchlines()
      apply: update line lengths for --inaccurate-eof
      config: flip return value of write_section()
      t4051: add test for comments preceding function lines
      xdiff: factor out is_func_rec()
      xdiff: show non-empty lines before functions with -W
      t7810: improve check of -W with user-defined function lines
      grep: update boundary variable for pre-context
      grep: show non-empty lines before functions with -W
      am: release strbuf after use in split_mail_mbox()
      fmt-merge-msg: avoid leaking strbuf in shortlog()
      strbuf: release memory on read error in strbuf_read_once()
      transport-helper: plug strbuf and string_list leaks
      p7519: improve check for prerequisite WATCHMAN
      http: use internal argv_array of struct child_process
      send-pack: use internal argv_array of struct child_process

Robert Abel (3):
      l10n: fixes to German translation
      git-prompt: make __git_eread intended use explicit
      git-prompt: fix reading files with windows line endings

Robert P. J. Day (4):
      bisect: mention "view" as an alternative to "visualize"
      doc: add missing "-n" (dry-run) option to reflog man page
      prune: add "--progress" to man page and usage msg
      notes: correct 'git notes prune' options to '[-n] [-v]'

SZEDER Gábor (17):
      travis-ci: fix running P4 and Git LFS tests in Linux build jobs
      travis-ci: don't build Git for the static analysis job
      setup.c: fix comment about order of .git directory discovery
      travis-ci: introduce a $jobname variable for 'ci/*' scripts
      travis-ci: move setting environment variables to 'ci/lib-travisci.sh'
      travis-ci: set GIT_TEST_HTTPD in 'ci/lib-travisci.sh'
      travis-ci: use 'set -x' in 'ci/*' scripts for extra tracing output
      travis-ci: fine tune the use of 'set -x' in 'ci/*' scripts
      travis-ci: don't install default addon packages for the 32 bit Linux build
      travis-ci: save prove state for the 32 bit Linux build
      travis-ci: only print test failures if there are test results available
      travis-ci: print the "tip of branch is exactly at tag" message in color
      travis-ci: create the cache directory early in the build process
      travis-ci: record and skip successfully built trees
      travis-ci: don't store P4 and Git LFS in the working tree
      travis-ci: check that all build artifacts are .gitignore-d
      RelNotes: minor typofix

Shuyu Wei (1):
      pull: pass -4/-6 option to 'git fetch'

Simon Ruderich (3):
      sequencer.c: check return value of close() in rewrite_file()
      wrapper.c: consistently quote filenames in error messages
      config: document default value of http.sslVerify

Stefan Beller (16):
      recursive submodules: detach HEAD from new state
      Documentation/checkout: clarify submodule HEADs to be detached
      xdiff-interface: export comparing and hashing strings
      diff.c: get rid of duplicate implementation
      t6120: fix typo in test name
      list-objects.c: factor out traverse_trees_and_blobs
      config: document blame configuration
      t/3512: demonstrate unrelated submodule/file conflict as cherry-pick failure
      revision.h: introduce blob/tree walking in order of the commits
      builtin/describe.c: rename `oid` to avoid variable shadowing
      builtin/describe.c: print debug statements earlier
      builtin/describe.c: factor out describe_commit
      Documentation/git-clone: improve description for submodule recursing
      t/helper: ignore everything but sources
      builtin/describe.c: describe a blob
      t/helper/test-lazy-name-hash: fix compilation

Steffen Prohaska (1):
      doc: Mention info/attributes in gitrepository-layout

Stephan Beyer (1):
      bisect run: die if no command is given

Thomas Braun (1):
      completion: add remaining flags to checkout

Thomas Gummerer (12):
      stash: replace "git stash save" with "git stash push" in the documentation
      stash: mark "git stash save" deprecated in the man page
      stash: remove now superfluos help for "stash push"
      checkout: factor out functions to new lib file
      worktree: add can be created from any commit-ish
      worktree: add --[no-]track option to the add subcommand
      worktree: make add <path> <branch> dwim
      t/README: remove mention of adding copyright notices
      t/README: document test_cmp_rev
      worktree: add --guess-remote flag to add subcommand
      add worktree.guessRemote config option
      oidset: don't return value from oidset_init

Todd Zullinger (13):
      Replace Free Software Foundation address in license notices
      Replace Free Software Foundation address in license notices
      t/lib-gpg: fix gpgconf stderr redirect to /dev/null
      rebase: fix stderr redirect in apply_autostash()
      notes: send "Automatic notes merge failed" messages to stderr
      branch doc: remove --set-upstream from synopsis
      completion: add '--copy' option to 'git branch'
      RelNotes: minor typo fixes in 2.15.1 draft
      t/lib-git-svn: cleanup inconsistent tab/space usage
      t/lib-git-svn.sh: improve svnserve tests with parallel make test
      RelNotes: minor typo fixes in 2.16.0 draft
      doc/SubmittingPatches: improve text formatting
      http: fix v1 protocol tests with apache httpd < 2.4

Torsten Bögershausen (4):
      add: introduce "--renormalize"
      convert: tighten the safe autocrlf handling
      t0027: Adapt the new MIX tests to Windows
      check-non-portable-shell.pl: `wc -l` may have leading WS

Trần Ngọc Quân (1):
      l10n: vi.po(3288t): Updated Vietnamese translation for v2.16.0 round 2

W. Trevor King (1):
      pull: pass --signoff/--no-signoff to "git merge"

Wei Shuyu (1):
      http: support CURLPROXY_HTTPS

Zhou Fangyi (1):
      l10n: zh_CN Fix typo

brian m. carlson (31):
      walker: convert to struct object_id
      refs/files-backend: convert struct ref_to_prune to object_id
      refs: convert delete_ref and refs_delete_ref to struct object_id
      refs: convert update_ref and refs_update_ref to use struct object_id
      refs: prevent accidental NULL dereference in write_pseudoref
      refs: update ref transactions to use struct object_id
      Convert check_connected to use struct object_id
      refs: convert resolve_refdup and refs_resolve_refdup to struct object_id
      refs: convert read_ref and read_ref_full to object_id
      refs: convert dwim_ref and expand_ref to struct object_id
      builtin/reflog: convert remaining unsigned char uses to object_id
      refs: convert dwim_log to struct object_id
      pack-bitmap: convert traverse_bitmap_commit_list to object_id
      builtin/pack-objects: convert to struct object_id
      refs: convert peel_ref to struct object_id
      refs: convert read_ref_at to struct object_id
      refs: convert reflog_expire parameter to struct object_id
      sha1_file: convert index_path and index_fd to struct object_id
      Convert remaining callers of resolve_gitlink_ref to object_id
      refs: convert resolve_gitlink_ref to struct object_id
      worktree: convert struct worktree to object_id
      refs: convert resolve_ref_unsafe to struct object_id
      refs: convert peel_object to struct object_id
      refs: convert read_raw_ref backends to struct object_id
      refs/files-backend: convert static functions to object_id
      Documentation: enable compat-mode for Asciidoctor
      setup: expose enumerated repo info
      Add structure representing hash algorithm
      Integrate hash algorithm support with repo setup
      Switch empty tree and blob lookups to use hash abstraction
      Documentation: convert SubmittingPatches to AsciiDoc

Ævar Arnfjörð Bjarmason (4):
      test-lib: add LIBPCRE1 & LIBPCRE2 prerequisites
      grep: fix segfault under -P + PCRE2 <=10.30 + (*NO_JIT)
      Makefile: NO_OPENSSL=1 should no longer imply BLK_SHA1=1
      bisect: fix a regression causing a segfault

Łukasz Stelmach (1):
      git-gui: prevent double UTF-8 conversion


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.16.0-rc1
@ 2018-01-05 23:30  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2018-01-05 23:30 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.16.0-rc1 is now available for testing
at the usual places.  It is comprised of 455 non-merge commits
since v2.15.0, contributed by 79 people, 23 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.16.0-rc1' 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.15.0 are as follows.
Welcome to the Git development community!

  Albert Astals Cid, Antoine Beaupré, Damien Marié, Daniel
  Bensoussan, Florian Klink, Gennady Kupava, Guillaume Castagnino,
  Haaris Mehmood, Hans Jerry Illikainen, Ingo Ruhnke, Jakub
  Bereżański, Jean Carlo Machado, Julien Dusser, J Wyman,
  Kevin, Łukasz Stelmach, Marius Paliga, Olga Telezhnaya,
  Rafael Ascensão, Robert Abel, Robert P. J. Day, Shuyu Wei,
  and Wei Shuyu.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Vandiver,
  Anders Kaseorg, Andrey Okoshkin, Ann T Ropea, Beat Bolli,
  Ben Peart, Brandon Williams, brian m. carlson, Carlos Martín
  Nieto, Charles Bailey, Christian Couder, Dave Borowitz, Dennis
  Kaarsemaker, Derrick Stolee, Elijah Newren, Emily Xie, Eric
  Sunshine, Eric Wong, Heiko Voigt, Jacob Keller, Jameson Miller,
  Jean-Noel Avila, Jeff Hostetler, Jeff King, Johannes Schindelin,
  Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kaartic Sivaraam,
  Kevin Daudt, Lars Schneider, Liam Beguin, Luke Diamand, Martin
  Ågren, Michael Haggerty, Nicolas Morey-Chaisemartin, Phil
  Hord, Phillip Wood, Pranit Bauva, Prathamesh Chavan, Ramsay
  Jones, Randall S. Becker, Rasmus Villemoes, René Scharfe,
  Simon Ruderich, Stefan Beller, Steffen Prohaska, Stephan Beyer,
  SZEDER Gábor, Thomas Braun, Thomas Gummerer, Todd Zullinger,
  Torsten Bögershausen, and W. Trevor King.

----------------------------------------------------------------

Git 2.16 Release Notes (draft)
==============================

Backward compatibility notes and other notable changes.

 * Use of an empty string as a pathspec element that is used for
   'everything matches' is now an error.


Updates since v2.15
-------------------

UI, Workflows & Features

 * An empty string as a pathspec element that means "everything"
   i.e. 'git add ""', is now illegal.  We started this by first
   deprecating and warning a pathspec that has such an element in
   2.11 (Nov 2016).

 * A hook script that is set unexecutable is simply ignored.  Git
   notifies when such a file is ignored, unless the message is
   squelched via advice.ignoredHook configuration.

 * "git pull" has been taught to accept "--[no-]signoff" option and
   pass it down to "git merge".

 * The "--push-option=<string>" option to "git push" now defaults to a
   list of strings configured via push.pushOption variable.

 * "gitweb" checks if a directory is searchable with Perl's "-x"
   operator, which can be enhanced by using "filetest 'access'"
   pragma, which now we do.

 * "git stash save" has been deprecated in favour of "git stash push".

 * The set of paths output from "git status --ignored" was tied
   closely with its "--untracked=<mode>" option, but now it can be
   controlled more flexibly.  Most notably, a directory that is
   ignored because it is listed to be ignored in the ignore/exclude
   mechanism can be handled differently from a directory that ends up
   to be ignored only because all files in it are ignored.

 * The remote-helper for talking to MediaWiki has been updated to
   truncate an overlong pagename so that ".mw" suffix can still be
   added.

 * The remote-helper for talking to MediaWiki has been updated to
   work with mediawiki namespaces.

 * The "--format=..." option "git for-each-ref" takes learned to show
   the name of the 'remote' repository and the ref at the remote side
   that is affected for 'upstream' and 'push' via "%(push:remotename)"
   and friends.

 * Doc and message updates to teach users "bisect view" is a synonym
   for "bisect visualize".

 * "git bisect run" that did not specify any command to run used to go
   ahead and treated all commits to be tested as 'good'.  This has
   been corrected by making the command error out.

 * The SubmittingPatches document has been converted to produce an
   HTML version via AsciiDoc/Asciidoctor.

 * We learned to talk to watchman to speed up "git status" and other
   operations that need to see which paths have been modified.

 * The "diff" family of commands learned to ignore differences in
   carriage return at the end of line.

 * Places that know about "sendemail.to", like documentation and shell
   completion (in contrib/) have been taught about "sendemail.tocmd",
   too.

 * "git add --renormalize ." is a new and safer way to record the fact
   that you are correcting the end-of-line convention and other
   "convert_to_git()" glitches in the in-repository data.

 * "git branch" and "git checkout -b" are now forbidden from creating
   a branch whose name is "HEAD".

 * "git branch --list" learned to show its output through the pager by
   default when the output is going to a terminal, which is controlled
   by the pager.branch configuration variable.  This is similar to a
   recent change to "git tag --list".

 * "git grep -W", "git diff -W" and their friends learned a heuristic
   to extend a pre-context beyond the line that matches the "function
   pattern" (aka "diff.*.xfuncname") to include a comment block, if
   exists, that immediately precedes it.

 * "git config --expiry-date gc.reflogexpire" can read "2.weeks" from
   the configuration and report it as a timestamp, just like "--int"
   would read "1k" and report 1024, to help consumption by scripts.

 * The shell completion (in contrib/) learned that "git pull" can take
   the "--autostash" option.

 * The tagnames "git log --decorate" uses to annotate the commits can
   now be limited to subset of available refs with the two additional
   options, --decorate-refs[-exclude]=<pattern>.

 * "git grep" compiled with libpcre2 sometimes triggered a segfault,
   which is being fixed.

 * "git send-email" tries to see if the sendmail program is available
   in /usr/lib and /usr/sbin; extend the list of locations to be
   checked to also include directories on $PATH.

 * "git diff" learned, "--anchored", a variant of the "--patience"
   algorithm, to which the user can specify which 'unique' line to be
   used as anchoring points.

 * The way "git worktree add" determines what branch to create from
   where and checkout in the new worktree has been updated a bit.

 * Ancient part of codebase still shows dots after an abbreviated
   object name just to show that it is not a full object name, but
   these ellipses are confusing to people who newly discovered Git
   who are used to seeing abbreviated object names and find them
   confusing with the range syntax.

 * With a configuration variable rebase.abbreviateCommands set,
   "git rebase -i" produces the todo list with a single-letter
   command names.

 * "git worktree add" learned to run the post-checkout hook, just like
   "git checkout" does, after the initial checkout.

 * "git svn" has been updated to strip CRs in the commit messages, as
   recent versions of Subversion rejects them.

 * "git imap-send" did not correctly quote the folder name when
   making a request to the server, which has been corrected.

 * Error messages from "git rebase" have been somewhat cleaned up.

 * Git has been taught to support an https:// URL used for http.proxy
   when using recent versions of libcurl.

 * "git merge" learned to pay attention to merge.verifySignatures
   configuration variable and pretend as if '--verify-signatures'
   option was given from the command line.

 * "git describe" was taught to dig trees deeper to find a
   <commit-ish>:<path> that refers to a given blob object.


Performance, Internal Implementation, Development Support etc.

 * An earlier update made it possible to use an on-stack in-core
   lockfile structure (as opposed to having to deliberately leak an
   on-heap one).  Many codepaths have been updated to take advantage
   of this new facility.

 * Calling cmd_foo() as if it is a general purpose helper function is
   a no-no.  Correct two instances of such to set an example.

 * We try to see if somebody runs our test suite with a shell that
   does not support "local" like bash/dash does.

 * An early part of piece-by-piece rewrite of "git bisect" in C.

 * GSoC to piece-by-piece rewrite "git submodule" in C.

 * Optimize the code to find shortest unique prefix of object names.

 * Pathspec-limited revision traversal was taught not to keep finding
   unneeded differences once it knows two trees are different inside
   given pathspec.

 * Conversion from uchar[20] to struct object_id continues.

 * Code cleanup.

 * A single-word "unsigned flags" in the diff options is being split
   into a structure with many bitfields.

 * TravisCI build updates.

 * Parts of a test to drive the long-running content filter interface
   has been split into its own module, hopefully to eventually become
   reusable.

 * Drop (perhaps overly cautious) sanity check before using the index
   read from the filesystem at runtime.

 * The build procedure has been taught to avoid some unnecessary
   instability in the build products.

 * A new mechanism to upgrade the wire protocol in place is proposed
   and demonstrated that it works with the older versions of Git
   without harming them.

 * An infrastructure to define what hash function is used in Git is
   introduced, and an effort to plumb that throughout various
   codepaths has been started.

 * The code to iterate over loose object files got optimized.

 * An internal function that was left for backward compatibility has
   been removed, as there is no remaining callers.

 * Historically, the diff machinery for rename detection had a
   hardcoded limit of 32k paths; this is being lifted to allow users
   trade cycles with a (possibly) easier to read result.

 * The tracing infrastructure has been optimized for cases where no
   tracing is requested.

 * In preparation for implementing narrow/partial clone, the object
   walking machinery has been taught a way to tell it to "filter" some
   objects from enumeration.

 * A few structures and variables that are implementation details of
   the decorate API have been renamed and then the API got documented
   better.

 * Assorted updates for TravisCI integration.
   (merge 4f26366679 sg/travis-fixes later to maint).

 * Introduce a helper to simplify code to parse a common pattern that
   expects either "--key" or "--key=<something>".

 * "git version --build-options" learned to report the host CPU and
   the exact commit object name the binary was built from.

Also contains various documentation updates and code clean-ups.


Fixes since v2.15
-----------------

 * "auto" as a value for the columnar output configuration ought to
   judge "is the output consumed by humans?" with the same criteria as
   "auto" for coloured output configuration, i.e. either the standard
   output stream is going to tty, or a pager is in use.  We forgot the
   latter, which has been fixed.

 * The experimental "color moved lines differently in diff output"
   feature was buggy around "ignore whitespace changes" edges, which
   has been corrected.

 * Instead of using custom line comparison and hashing functions to
   implement "moved lines" coloring in the diff output, use the pair
   of these functions from lower-layer xdiff/ code.

 * Some codepaths did not check for errors when asking what branch the
   HEAD points at, which have been fixed.

 * "git commit", after making a commit, did not check for errors when
   asking on what branch it made the commit, which has been corrected.

 * "git status --ignored -u" did not stop at a working tree of a
   separate project that is embedded in an ignored directory and
   listed files in that other project, instead of just showing the
   directory itself as ignored.

 * A broken access to object databases in recent update to "git grep
   --recurse-submodules" has been fixed.

 * A recent regression in "git rebase -i" that broke execution of git
   commands from subdirectories via "exec" instruction has been fixed.

 * A (possibly flakey) test fix.

 * "git check-ref-format --branch @{-1}" bit a "BUG()" when run
   outside a repository for obvious reasons; clarify the documentation
   and make sure we do not even try to expand the at-mark magic in
   such a case, but still call the validation logic for branch names.

 * "git fetch --recurse-submodules" now knows that submodules can be
   moved around in the superproject in addition to getting updated,
   and finds the ones that need to be fetched accordingly.

 * Command line completion (in contrib/) update.

 * Description of blame.{showroot,blankboundary,showemail,date}
   configuration variables have been added to "git config --help".

 * After an error from lstat(), diff_populate_filespec() function
   sometimes still went ahead and used invalid data in struct stat,
   which has been fixed.

 * UNC paths are also relevant in Cygwin builds and they are now
   tested just like Mingw builds.

 * Correct start-up sequence so that a repository could be placed
   immediately under the root directory again (which was broken at
   around Git 2.13).

 * The credential helper for libsecret (in contrib/) has been improved
   to allow possibly prompting the end user to unlock secrets that are
   currently locked (otherwise the secrets may not be loaded).

 * MinGW updates.

 * Error checking in "git imap-send" for empty response has been
   improved.

 * Recent update to the refs infrastructure implementation started
   rewriting packed-refs file more often than before; this has been
   optimized again for most trivial cases.

 * Some error messages did not quote filenames shown in it, which have
   been fixed.

 * "git rebase -i" recently started misbehaving when a submodule that
   is configured with 'submodule.<name>.ignore' is dirty; this has
   been corrected.

 * Building with NO_LIBPCRE1_JIT did not disable it, which has been fixed.

 * We used to add an empty alternate object database to the system
   that does not help anything; it has been corrected.

 * Doc update around use of "format-patch --subject-prefix" etc.

 * A fix for an ancient bug in "git apply --ignore-space-change" codepath.

 * Clarify and enhance documentation for "merge-base --fork-point", as
   it was clear what it computed but not why/what for.

 * A few scripts (both in production and tests) incorrectly redirected
   their error output.  These have been corrected.

 * "git notes" sent its error message to its standard output stream,
   which was corrected.

 * The three-way merge performed by "git cherry-pick" was confused
   when a new submodule was added in the meantime, which has been
   fixed (or "papered over").

 * The sequencer machinery (used by "git cherry-pick A..B", and "git
   rebase -i", among other things) would have lost a commit if stopped
   due to an unlockable index file, which has been fixed.

 * "git apply --inaccurate-eof" when used with "--ignore-space-change"
   triggered an internal sanity check, which has been fixed.

 * Command line completion (in contrib/) has been taught about the
   "--copy" option of "git branch".

 * When "git rebase" prepared an mailbox of changes and fed it to "git
   am" to replay them, it was confused when a stray "From " happened
   to be in the log message of one of the replayed changes.  This has
   been corrected.

 * There was a recent semantic mismerge in the codepath to write out a
   section of a configuration section, which has been corrected.

 * Mentions of "git-rebase" and "git-am" (dashed form) still remained
   in end-user visible strings emitted by the "git rebase" command;
   they have been corrected.

 * Contrary to the documentation, "git pull -4/-6 other-args" did not
   ask the underlying "git fetch" to go over IPv4/IPv6, which has been
   corrected.

 * "git checkout --recursive" may overwrite and rewind the history of
   the branch that happens to be checked out in submodule
   repositories, which might not be desirable.  Detach the HEAD but
   still allow the recursive checkout to succeed in such a case.
   (merge 57f22bf997 sb/submodule-recursive-checkout-detach-head later to maint).

 * "git branch --set-upstream" has been deprecated and (sort of)
   removed, as "--set-upstream-to" is the preferred one these days.
   The documentation still had "--set-upstream" listed on its
   synopsis section, which has been corrected.
   (merge a060f3d3d8 tz/branch-doc-remove-set-upstream later to maint).

 * Internally we use 0{40} as a placeholder object name to signal the
   codepath that there is no such object (e.g. the fast-forward check
   while "git fetch" stores a new remote-tracking ref says "we know
   there is no 'old' thing pointed at by the ref, as we are creating
   it anew" by passing 0{40} for the 'old' side), and expect that a
   codepath to locate an in-core object to return NULL as a sign that
   the object does not exist.  A look-up for an object that does not
   exist however is quite costly with a repository with large number
   of packfiles.  This access pattern has been optimized.
   (merge 87b5e236a1 jk/fewer-pack-rescan later to maint).

 * In addition to "git stash -m message", the command learned to
   accept "git stash -mmessage" form.
   (merge 5675473fcb ph/stash-save-m-option-fix later to maint).

 * @{-N} in "git checkout @{-N}" may refer to a detached HEAD state,
   but the documentation was not clear about it, which has been fixed.
   (merge 75ce149575 ks/doc-checkout-previous later to maint).

 * A regression in the progress eye-candy was fixed.
   (merge 9c5951cacf jk/progress-delay-fix later to maint).

 * The code internal to the recursive merge strategy was not fully
   prepared to see a path that is renamed to try overwriting another
   path that is only different in case on case insensitive systems.
   This does not matter in the current code, but will start to matter
   once the rename detection logic starts taking hints from nearby
   paths moving to some directory and moves a new path along with them.
   (merge 4cba2b0108 en/merge-recursive-icase-removal later to maint).

 * An v2.12-era regression in pathspec match logic, which made it look
   into submodule tree even when it is not desired, has been fixed.
   (merge eef3df5a93 bw/pathspec-match-submodule-boundary later to maint).

 * Amending commits in git-gui broke the author name that is non-ascii
   due to incorrect enconding conversion.

 * Recent update to the submodule configuration code broke "diff-tree"
   by accidentally stopping to read from the index upfront.
   (merge fd66bcc31f bw/submodule-config-cleanup later to maint).

 * Git shows a message to tell the user that it is waiting for the
   user to finish editing when spawning an editor, in case the editor
   opens to a hidden window or somewhere obscure and the user gets
   lost.
   (merge abfb04d0c7 ls/editor-waiting-message later to maint).

 * The "safe crlf" check incorrectly triggered for contents that does
   not use CRLF as line endings, which has been corrected.
   (merge 649f1f0948 tb/check-crlf-for-safe-crlf later to maint).

 * "git clone --shared" to borrow from a (secondary) worktree did not
   work, even though "git clone --local" did.  Both are now accepted.
   (merge b3b05971c1 es/clone-shared-worktree later to maint).

 * The build procedure now allows not just the repositories but also
   the refs to be used to take pre-formatted manpages and html
   documents to install.
   (merge 65289e9dcd rb/quick-install-doc later to maint).

 * Update the shell prompt script (in contrib/) to strip trailing CR
   from strings read from various "state" files.
   (merge 041fe8fc83 ra/prompt-eread-fix later to maint).

 * "git merge -s recursive" did not correctly abort when the index is
   dirty, if the merged tree happened to be the same as the current
   HEAD, which has been fixed.

 * Bytes with high-bit set were encoded incorrectly and made
   credential helper fail.
   (merge 4c267f2ae3 jd/fix-strbuf-add-urlencode-bytes later to maint).

 * Other minor doc, test and build updates and code cleanups.
   (merge 1a1fc2d5b5 rd/man-prune-progress later to maint).
   (merge 0ba014035a rd/man-reflog-add-n later to maint).
   (merge e54b63359f rd/doc-notes-prune-fix later to maint).
   (merge ff4c9b413a sp/doc-info-attributes later to maint).
   (merge 7db2cbf4f1 jc/receive-pack-hook-doc later to maint).
   (merge 5a0526264b tg/t-readme-updates later to maint).
   (merge 5e83cca0b8 jk/no-optional-locks later to maint).
   (merge 826c778f7c js/hashmap-update-sample later to maint).
   (merge 176b2d328c sg/setup-doc-update later to maint).
   (merge 1b09073514 rs/am-builtin-leakfix later to maint).
   (merge addcf6cfde rs/fmt-merge-msg-string-leak-fix later to maint).
   (merge c3ff8f6c14 rs/strbuf-read-once-reset-length later to maint).
   (merge 6b0eb884f9 db/doc-workflows-neuter-the-maintainer later to maint).
   (merge 8c87bdfb21 jk/cvsimport-quoting later to maint).
   (merge 176cb979fe rs/fmt-merge-msg-leakfix later to maint).
   (merge 5a03360e73 tb/delimit-pretty-trailers-args-with-comma later to maint).
   (merge d0e6326026 ot/pretty later to maint).
   (merge 44103f4197 sb/test-helper-excludes later to maint).
   (merge 170078693f jt/transport-no-more-rsync later to maint).
   (merge c07b3adff1 bw/path-doc later to maint).
   (merge bf9d7df950 tz/lib-git-svn-svnserve-tests later to maint).
   (merge dec366c9a8 sr/http-sslverify-config-doc later to maint).
   (merge 3f824e91c8 jk/test-suite-tracing later to maint).
   (merge 1feb061701 db/doc-config-section-names-with-bs later to maint).
   (merge 74dea0e13c jh/memihash-opt later to maint).

----------------------------------------------------------------

Changes since v2.15.0 are as follows:

Adam Dinwoodie (3):
      t5580: add Cygwin support
      rebase -i: fix comment typo
      doc/SubmittingPatches: correct subject guidance

Albert Astals Cid (1):
      completion: add --autostash and --no-autostash to pull

Alex Vandiver (7):
      fsmonitor: read entirety of watchman output
      fsmonitor: set the PWD to the top of the working tree
      fsmonitor: don't bother pretty-printing JSON from watchman
      fsmonitor: document GIT_TRACE_FSMONITOR
      fsmonitor: delay updating state until after split index is merged
      fsmonitor: read from getcwd(), not the PWD environment variable
      fsmonitor: store fsmonitor bitmap before splitting index

Anders Kaseorg (1):
      git-gui: sort entries in optimized tclIndex

Andrey Okoshkin (3):
      commit: check result of resolve_ref_unsafe
      diff: fix lstat() error handling in diff_populate_filespec()
      merge-recursive: check GIT_MERGE_VERBOSITY only once

Ann T Ropea (7):
      Documentation: revisions: fix typo: "three dot" ---> "three-dot" (in line with "two-dot").
      Documentation: user-manual: limit usage of ellipsis
      print_sha1_ellipsis: introduce helper
      checkout: describe_detached_head: remove ellipsis after committish
      t4013: prepare for upcoming "diff --raw --abbrev" output format change
      diff: diff_aligned_abbrev: remove ellipsis after abbreviated SHA-1 value
      t4013: test new output from diff --abbrev --raw

Antoine Beaupré (6):
      remote-mediawiki: limit filenames to legal
      remote-mediawiki: show known namespace choices on failure
      remote-mediawiki: skip virtual namespaces
      remote-mediawiki: support fetching from (Main) namespace
      remote-mediawiki: process namespaces in order
      remote-mediawiki: show progress while fetching namespaces

Beat Bolli (1):
      contrib/git-jump: allow to configure the grep command

Ben Peart (16):
      bswap: add 64 bit endianness helper get_be64
      preload-index: add override to enable testing preload-index
      update-index: add a new --force-write-index option
      fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
      fsmonitor: add documentation for the fsmonitor extension.
      ls-files: Add support in ls-files to display the fsmonitor valid bit
      update-index: add fsmonitor support to update-index
      fsmonitor: add a test tool to dump the index extension
      split-index: disable the fsmonitor extension when running the split index test
      fsmonitor: add test cases for fsmonitor extension
      fsmonitor: add a sample integration script for Watchman
      fsmonitor: add a performance test
      fsmonitor: MINGW support for watchman integration
      fsmonitor: preserve utf8 filenames in fsmonitor-watchman log
      read_index_from(): speed index loading by skipping verification of the entry order
      fsmonitor: simplify determining the git worktree under Windows

Brandon Williams (24):
      pkt-line: add packet_write function
      protocol: introduce protocol extension mechanisms
      daemon: recognize hidden request arguments
      upload-pack, receive-pack: introduce protocol version 1
      connect: teach client to recognize v1 server response
      connect: tell server that the client understands v1
      http: tell server that the client understands v1
      i5700: add interop test for protocol transition
      ssh: introduce a 'simple' ssh variant
      add, reset: use DIFF_OPT_SET macro to set a diff flag
      diff: convert flags to be stored in bitfields
      diff: add flag to indicate textconv was set via cmdline
      diff: remove touched flags
      diff: remove DIFF_OPT_TST macro
      diff: remove DIFF_OPT_SET macro
      diff: remove DIFF_OPT_CLR macro
      diff: make struct diff_flags members lowercase
      wt-status: actually ignore submodules when requested
      pathspec: only match across submodule boundaries when requested
      diff-tree: read the index so attribute checks work in bare repositories
      submodule: convert stage_updated_gitmodules to take a struct index_state
      submodule: used correct index in is_staging_gitmodules_ok
      submodule: convert get_next_submodule to not rely on the_index
      path: document path functions

Carlos Martín Nieto (1):
      diff: --indent-heuristic is no longer experimental

Charles Bailey (2):
      t4201: make use of abbreviation in the test more robust
      grep: fix NO_LIBPCRE1_JIT to fully disable JIT

Christian Couder (24):
      perf/run: add '--config' option to the 'run' script
      perf/run: add get_var_from_env_or_config()
      perf/run: add GIT_PERF_DIRS_OR_REVS
      perf/run: add calls to get_var_from_env_or_config()
      perf/run: add get_subsections()
      perf/run: update get_var_from_env_or_config() for subsections
      perf/run: add run_subsection()
      perf/run: show name of rev being built
      perf: store subsection results in "test-results/$GIT_PERF_SUBSECTION/"
      t0021/rot13-filter: fix list comparison
      t0021/rot13-filter: refactor packet reading functions
      t0021/rot13-filter: improve 'if .. elsif .. else' style
      t0021/rot13-filter: improve error message
      t0021/rot13-filter: add packet_initialize()
      t0021/rot13-filter: refactor checking final lf
      t0021/rot13-filter: add capability functions
      Git/Packet.pm: extract parts of t0021/rot13-filter.pl for reuse
      Git/Packet: clarify that packet_required_key_val_read allows EOF
      Git/Packet.pm: use 'if' instead of 'unless'
      list-objects-filter-options: fix 'keword' typo in comment
      git-compat-util: introduce skip_to_optional_arg()
      index-pack: use skip_to_optional_arg()
      diff: use skip_to_optional_arg()
      diff: use skip_to_optional_arg_default()

Damien Marié (1):
      run-command: add hint when a hook is ignored

Daniel Bensoussan (1):
      doc: reword gitworkflows.txt for neutrality

Dave Borowitz (1):
      config.txt: document behavior of backslashes in subsections

Dennis Kaarsemaker (1):
      credential-libsecret: unlock locked secrets

Derrick Stolee (5):
      p4211-line-log.sh: add log --online --raw --parents perf test
      sha1_name: unroll len loop in find_unique_abbrev_r()
      sha1_name: parse less while finding common prefix
      sha1_name: minimize OID comparisons during disambiguation
      sha1_file: use strbuf_add() instead of strbuf_addf()

Elijah Newren (10):
      sequencer: warn when internal merge may be suboptimal due to renameLimit
      merge-recursive: handle addition of submodule on our side of history
      progress: fix progress meters when dealing with lots of work
      diff: remove silent clamp of renameLimit
      sequencer: show rename progress during cherry picks
      merge-recursive: ignore_case shouldn't reject intentional removals
      strbuf: remove unused stripspace function alias
      t6044: recursive can silently incorporate dirty changes in a merge
      move index_has_changes() from builtin/am.c to merge.c for reuse
      merge-recursive: avoid incorporating uncommitted changes in a merge

Emily Xie (1):
      pathspec: die on empty strings as pathspec

Eric Sunshine (3):
      worktree: invoke post-checkout hook (unless --no-checkout)
      clone: support 'clone --shared' from a worktree
      version --build-options: also report host CPU

Eric Wong (2):
      rebase: use mboxrd format to avoid split errors
      git-svn: convert CRLF to LF in commit message to SVN

Florian Klink (1):
      git-send-email: honor $PATH for sendmail binary

Gennady Kupava (2):
      trace: remove trace key normalization
      trace: improve performance while category is disabled

Guillaume Castagnino (1):
      gitweb: use filetest to allow ACLs

Haaris Mehmood (1):
      config: add --expiry-date

Hans Jerry Illikainen (2):
      merge: add config option for verifySignatures
      t: add tests for pull --verify-signatures

Heiko Voigt (3):
      fetch: add test to make sure we stay backwards compatible
      implement fetching of moved submodules
      submodule: simplify decision tree whether to or not to fetch

Ingo Ruhnke (1):
      remote-mediawiki: allow fetching namespaces with spaces

J Wyman (1):
      for-each-ref: let upstream/push report the remote ref name

Jacob Keller (2):
      sequencer: pass absolute GIT_DIR to exec commands
      diff: add tests for --relative without optional prefix value

Jakub Bereżański (2):
      t0302: check helper can handle empty credentials
      wincred: handle empty username/password correctly

Jameson Miller (4):
      status: add option to show ignored files differently
      status: report matching ignored and normal untracked
      status: document options to show matching ignored files
      status: test ignored modes

Jean Carlo Machado (1):
      fix typos in 2.15.0 release notes

Jean-Noel Avila (1):
      submodule--helper.c: i18n: add a missing space in message

Jeff Hostetler (9):
      dir: allow exclusions from blob in addition to file
      oidmap: add oidmap iterator methods
      oidset: add iterator methods to oidset
      list-objects: filter objects in traverse_commit_list
      rev-list: add list-objects filtering support
      pack-objects: add list-objects filtering
      list-objects-filter-options: support --no-filter
      rev-list: support --no-filter argument
      partial-clone: design doc

Jeff King (26):
      revision: quit pruning diff more quickly when possible
      t4015: refactor --color-moved whitespace test
      t4015: check "negative" case for "-w --color-moved"
      t4015: test the output of "diff --color-moved -b"
      diff: fix whitespace-skipping with --color-moved
      diff: handle NULs in get_string_hash()
      test-ref-store: avoid passing NULL to printf
      remote: handle broken symrefs
      log: handle broken HEAD in decoration check
      worktree: handle broken symrefs in find_shared_symref()
      setup: avoid double slashes when looking for HEAD
      link_alt_odb_entries: make empty input a noop
      git-jump: give contact instructions in the README
      p5550: factor out nonsense-pack creation
      t/perf/lib-pack: use fast-import checkpoint to create packs
      p5551: add a script to test fetch pack-dir rescans
      everything_local: use "quick" object existence check
      sha1_file: fast-path null sha1 as a missing object
      git-status.txt: mention --no-optional-locks
      progress: set default delay threshold to 100%, not 0%
      docs/pretty-formats: mention commas in %(trailers) syntax
      cvsimport: apply shell-quoting regex globally
      test-lib: silence "-x" cleanup under bash
      t5615: avoid re-using descriptor 4
      test-lib: make "-x" work with "--verbose-log"
      t/Makefile: introduce TEST_SHELL_PATH

Johannes Schindelin (14):
      for-each-ref: let upstream/push optionally report the remote name
      status: do not get confused by submodules in excluded directories
      mingw: include the full version information in the resources
      mingw: add experimental feature to redirect standard handles
      mingw: optionally redirect stderr/stdout via the same handle
      mingw: document the standard handle redirection
      for-each-ref: test :remotename and :remoteref
      hashmap: adjust documentation to reflect reality
      version --build-options: report commit, too, if possible
      rebase: do not continue when the todo list generation failed
      sequencer: strip bogus LF at end of error messages
      sequencer: remove superfluous conditional
      sequencer: report when noop has an argument
      sequencer: do not invent whitespace when transforming OIDs

Jonathan Nieder (10):
      ssh test: make copy_ssh_wrapper_as clean up after itself
      connect: move no_fork fallback to git_tcp_connect
      connect: split git:// setup into a separate function
      connect: split ssh command line options into separate function
      connect: split ssh option computation to its own function
      ssh: 'auto' variant to select between 'ssh' and 'simple'
      ssh: 'simple' variant does not support -4/-6
      ssh: 'simple' variant does not support --port
      connect: correct style of C-style comment
      generate-cmdlist: avoid non-deterministic output

Jonathan Tan (10):
      connect: in ref advertisement, shallows are last
      Documentation: document Extra Parameters
      Tests: clean up and document submodule helpers
      Tests: clean up submodule recursive helpers
      diff: support anchoring line(s)
      diffcore-rename: make diff-tree -l0 mean -l<large>
      decorate: clean up and document API
      transport: remove unused "push" in vtable
      clone, fetch: remove redundant transport check
      transport: make transport vtable more private

Julien Dusser (1):
      strbuf: fix urlencode format string on signed char

Junio C Hamano (38):
      t0027: do not use an empty string as a pathspec element
      describe: do not use cmd_*() as a subroutine
      merge-ours: do not use cmd_*() as a subroutine
      branch: streamline "attr_only" handling in validate_new_branchname()
      branch: split validate_new_branchname() into two
      t5601: rm the target file of cp that could still be executing
      check-ref-format --branch: do not expand @{...} outside repository
      check-ref-format --branch: strip refs/heads/ using skip_prefix
      check-ref-format doc: --branch validates and expands <branch>
      column: do not include pager.c
      xdiff: reassign xpparm_t.flags bits
      The first batch for 2.16
      RelNotes: the second batch post 2.15 comes
      diff: --ignore-cr-at-eol
      merge-base --fork-point doc: clarify the example and failure modes
      RelNotes: the third batch for 2.16
      branch: correctly reject refs/heads/{-dash,HEAD}
      Start preparation for 2.15.1
      RelNotes: the fourth batch for 2.16
      Almost ready for 2.15.1
      RelNotes: the fifth batch for 2.16
      hooks doc: clarify when receive-pack invokes its hooks
      A bit more fixes for 2.15.1
      RelNotes: the sixth batch for 2.16
      Git 2.15.1
      RelNotes: the seventh batch
      t2020: test variations that matter
      Prepare for 2.15.2
      RelNotes: the eighth batch
      diff: use skip_to_optional_arg_default() in parsing --relative
      t4045: reindent to make helpers readable
      RelNotes: the ninth batch
      RelNotes: the tenth batch
      t5573, t7612: clean up after unexpected success of 'pull' and 'merge'
      sequencer.c: drop 'const' from function return type
      RelNotes: the eleventh batch
      Git 2.16-rc0
      Git 2.16-rc1

Kaartic Sivaraam (12):
      mailmap: use Kaartic Sivaraam's new address
      builtin/branch: remove redundant check for HEAD
      git-rebase: clean up dashed-usages in messages
      Doc/checkout: checking out using @{-N} can lead to detached state
      branch: improve documentation and naming of create_branch() parameters
      branch: group related arguments of create_branch()
      branch: update warning message shown when copying a misnamed branch
      builtin/branch: strip refs/heads/ using skip_prefix
      Doc/check-ref-format: clarify information about @{-N} syntax
      rebase: consistently use branch_name variable
      rebase: distinguish user input by quoting it
      rebase: rebasing can also be done when HEAD is detached

Kevin (1):
      remote-mediawiki: add namespace support

Kevin Daudt (1):
      column: show auto columns when pager is active

Lars Schneider (3):
      refactor "dumb" terminal determination
      progress: drop delay-threshold code
      launch_editor(): indicate that Git waits for user input

Liam Beguin (9):
      Documentation: move rebase.* configs to new file
      Documentation: use preferred name for the 'todo list' script
      rebase -i: set commit to null in exec commands
      rebase -i: refactor transform_todo_ids
      rebase -i: replace reference to sha1 with oid
      rebase -i: update functions to use a flags parameter
      rebase -i -x: add exec commands via the rebase--helper
      rebase -i: learn to abbreviate command names
      t3404: add test case for abbreviated commands

Luke Diamand (1):
      git-p4: update multiple shelved change lists

Marius Paliga (1):
      builtin/push.c: add push.pushOption config

Martin Ågren (22):
      sha1_file: do not leak `lock_file`
      treewide: prefer lockfiles on the stack
      lockfile: fix documentation on `close_lock_file_gently()`
      tempfile: fix documentation on `delete_tempfile()`
      checkout-index: simplify locking logic
      cache-tree: simplify locking logic
      apply: move lockfile into `apply_state`
      apply: remove `newfd` from `struct apply_state`
      cache.h: document `write_locked_index()`
      read-cache: drop explicit `CLOSE_LOCK`-flag
      read-cache: leave lock in right state in `write_locked_index()`
      read_cache: roll back lock in `update_index_if_able()`
      grep: take the read-lock when adding a submodule
      bisect: change calling-convention of `find_bisection()`
      bisect: fix memory leak in `find_bisection()`
      bisect: fix off-by-one error in `best_bisection_sorted()`
      bisect: fix memory leak when returning best element
      builtin/merge-base: free commit lists
      reduce_heads: fix memory leaks
      t7006: add tests for how git branch paginates
      branch: respect `pager.branch` in list-mode only
      branch: change default of `pager.branch` to "on"

Michael Haggerty (12):
      t1409: check that `packed-refs` is not rewritten unnecessarily
      files-backend: don't rewrite the `packed-refs` file unnecessarily
      t0000: check whether the shell supports the "local" keyword
      files_transaction_prepare(): don't leak flags to packed transaction
      prune_ref(): call `ref_transaction_add_update()` directly
      ref_transaction_update(): die on disallowed flags
      ref_transaction_add_update(): remove a check
      refs: tidy up and adjust visibility of the `ref_update` flags
      refs: rename constant `REF_NODEREF` to `REF_NO_DEREF`
      refs: rename constant `REF_ISPRUNING` to `REF_IS_PRUNING`
      write_packed_entry(): take `object_id` arguments
      refs: update some more docs to use "oid" rather than "sha1"

Nicolas Morey-Chaisemartin (1):
      imap-send: URI encode server folder

Olga Telezhnaya (2):
      format: create pretty.h file
      format: create docs for pretty.h

Phil Hord (2):
      doc: prefer 'stash push' over 'stash save'
      stash: learn to parse -m/--message like commit does

Phillip Wood (2):
      config: avoid "write_in_full(fd, buf, len) != len" pattern
      sequencer: reschedule pick if index can't be locked

Pranit Bauva (6):
      bisect--helper: use OPT_CMDMODE instead of OPT_BOOL
      bisect--helper: rewrite `check_term_format` shell function in C
      bisect--helper: `write_terms` shell function in C
      bisect--helper: `bisect_clean_state` shell function in C
      t6030: explicitly test for bisection cleanup
      bisect--helper: `is_expected_rev` & `check_expected_revs` shell function in C

Prathamesh Chavan (3):
      submodule--helper: introduce get_submodule_displaypath()
      submodule--helper: introduce for_each_listed_submodule()
      submodule: port submodule subcommand 'status' from shell to C

Rafael Ascensão (1):
      log: add option to choose which refs to decorate

Ramsay Jones (1):
      repository: fix a sparse 'using integer as NULL pointer' warning

Randall S. Becker (1):
      install-doc-quick: allow specifying what ref to install

Rasmus Villemoes (2):
      Documentation/config: add sendemail.tocmd to list preceding "See git-send-email(1)"
      completion: add git config sendemail.tocmd

René Scharfe (23):
      notes: move hex_to_bytes() to hex.c and export it
      http-push: use hex_to_bytes()
      sha1_file: use hex_to_bytes()
      sequencer: factor out rewrite_file()
      sequencer: use O_TRUNC to truncate files
      imap-send: handle NULL return of next_arg()
      imap-send: handle missing response codes gracefully
      apply: avoid out-of-bounds access in fuzzy_matchlines()
      apply: update line lengths for --inaccurate-eof
      config: flip return value of write_section()
      t4051: add test for comments preceding function lines
      xdiff: factor out is_func_rec()
      xdiff: show non-empty lines before functions with -W
      t7810: improve check of -W with user-defined function lines
      grep: update boundary variable for pre-context
      grep: show non-empty lines before functions with -W
      am: release strbuf after use in split_mail_mbox()
      fmt-merge-msg: avoid leaking strbuf in shortlog()
      strbuf: release memory on read error in strbuf_read_once()
      transport-helper: plug strbuf and string_list leaks
      p7519: improve check for prerequisite WATCHMAN
      http: use internal argv_array of struct child_process
      send-pack: use internal argv_array of struct child_process

Robert Abel (2):
      git-prompt: make __git_eread intended use explicit
      git-prompt: fix reading files with windows line endings

Robert P. J. Day (4):
      bisect: mention "view" as an alternative to "visualize"
      doc: add missing "-n" (dry-run) option to reflog man page
      prune: add "--progress" to man page and usage msg
      notes: correct 'git notes prune' options to '[-n] [-v]'

SZEDER Gábor (7):
      travis-ci: fix running P4 and Git LFS tests in Linux build jobs
      travis-ci: don't build Git for the static analysis job
      setup.c: fix comment about order of .git directory discovery
      travis-ci: introduce a $jobname variable for 'ci/*' scripts
      travis-ci: move setting environment variables to 'ci/lib-travisci.sh'
      travis-ci: set GIT_TEST_HTTPD in 'ci/lib-travisci.sh'
      travis-ci: use 'set -x' in 'ci/*' scripts for extra tracing output

Shuyu Wei (1):
      pull: pass -4/-6 option to 'git fetch'

Simon Ruderich (3):
      sequencer.c: check return value of close() in rewrite_file()
      wrapper.c: consistently quote filenames in error messages
      config: document default value of http.sslVerify

Stefan Beller (16):
      recursive submodules: detach HEAD from new state
      Documentation/checkout: clarify submodule HEADs to be detached
      xdiff-interface: export comparing and hashing strings
      diff.c: get rid of duplicate implementation
      t6120: fix typo in test name
      list-objects.c: factor out traverse_trees_and_blobs
      config: document blame configuration
      t/3512: demonstrate unrelated submodule/file conflict as cherry-pick failure
      revision.h: introduce blob/tree walking in order of the commits
      builtin/describe.c: rename `oid` to avoid variable shadowing
      builtin/describe.c: print debug statements earlier
      builtin/describe.c: factor out describe_commit
      Documentation/git-clone: improve description for submodule recursing
      t/helper: ignore everything but sources
      builtin/describe.c: describe a blob
      t/helper/test-lazy-name-hash: fix compilation

Steffen Prohaska (1):
      doc: Mention info/attributes in gitrepository-layout

Stephan Beyer (1):
      bisect run: die if no command is given

Thomas Braun (1):
      completion: add remaining flags to checkout

Thomas Gummerer (11):
      stash: replace "git stash save" with "git stash push" in the documentation
      stash: mark "git stash save" deprecated in the man page
      stash: remove now superfluos help for "stash push"
      checkout: factor out functions to new lib file
      worktree: add can be created from any commit-ish
      worktree: add --[no-]track option to the add subcommand
      worktree: make add <path> <branch> dwim
      t/README: remove mention of adding copyright notices
      t/README: document test_cmp_rev
      worktree: add --guess-remote flag to add subcommand
      add worktree.guessRemote config option

Todd Zullinger (11):
      Replace Free Software Foundation address in license notices
      Replace Free Software Foundation address in license notices
      t/lib-gpg: fix gpgconf stderr redirect to /dev/null
      rebase: fix stderr redirect in apply_autostash()
      notes: send "Automatic notes merge failed" messages to stderr
      branch doc: remove --set-upstream from synopsis
      completion: add '--copy' option to 'git branch'
      RelNotes: minor typo fixes in 2.15.1 draft
      t/lib-git-svn: cleanup inconsistent tab/space usage
      t/lib-git-svn.sh: improve svnserve tests with parallel make test
      RelNotes: minor typo fixes in 2.16.0 draft

Torsten Bögershausen (4):
      add: introduce "--renormalize"
      convert: tighten the safe autocrlf handling
      t0027: Adapt the new MIX tests to Windows
      check-non-portable-shell.pl: `wc -l` may have leading WS

W. Trevor King (1):
      pull: pass --signoff/--no-signoff to "git merge"

Wei Shuyu (1):
      http: support CURLPROXY_HTTPS

brian m. carlson (31):
      walker: convert to struct object_id
      refs/files-backend: convert struct ref_to_prune to object_id
      refs: convert delete_ref and refs_delete_ref to struct object_id
      refs: convert update_ref and refs_update_ref to use struct object_id
      refs: prevent accidental NULL dereference in write_pseudoref
      refs: update ref transactions to use struct object_id
      Convert check_connected to use struct object_id
      refs: convert resolve_refdup and refs_resolve_refdup to struct object_id
      refs: convert read_ref and read_ref_full to object_id
      refs: convert dwim_ref and expand_ref to struct object_id
      builtin/reflog: convert remaining unsigned char uses to object_id
      refs: convert dwim_log to struct object_id
      pack-bitmap: convert traverse_bitmap_commit_list to object_id
      builtin/pack-objects: convert to struct object_id
      refs: convert peel_ref to struct object_id
      refs: convert read_ref_at to struct object_id
      refs: convert reflog_expire parameter to struct object_id
      sha1_file: convert index_path and index_fd to struct object_id
      Convert remaining callers of resolve_gitlink_ref to object_id
      refs: convert resolve_gitlink_ref to struct object_id
      worktree: convert struct worktree to object_id
      refs: convert resolve_ref_unsafe to struct object_id
      refs: convert peel_object to struct object_id
      refs: convert read_raw_ref backends to struct object_id
      refs/files-backend: convert static functions to object_id
      Documentation: enable compat-mode for Asciidoctor
      setup: expose enumerated repo info
      Add structure representing hash algorithm
      Integrate hash algorithm support with repo setup
      Switch empty tree and blob lookups to use hash abstraction
      Documentation: convert SubmittingPatches to AsciiDoc

Ævar Arnfjörð Bjarmason (2):
      test-lib: add LIBPCRE1 & LIBPCRE2 prerequisites
      grep: fix segfault under -P + PCRE2 <=10.30 + (*NO_JIT)

Łukasz Stelmach (1):
      git-gui: prevent double UTF-8 conversion


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.16.0-rc0
@ 2017-12-29  4:30  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2017-12-29  4:30 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

An early preview release Git v2.16.0-rc0 is now available for
testing at the usual places.  It is comprised of 435 non-merge
commits since v2.15.0, contributed by 76 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.16.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.15.0 are as follows.
Welcome to the Git development community!

  Albert Astals Cid, Antoine Beaupré, Damien Marié, Daniel
  Bensoussan, Florian Klink, Gennady Kupava, Guillaume Castagnino,
  Haaris Mehmood, Hans Jerry Illikainen, Ingo Ruhnke, Jakub
  Bereżański, Jean Carlo Machado, J Wyman, Kevin, Łukasz
  Stelmach, Marius Paliga, Olga Telezhnaya, Rafael Ascensão,
  Robert Abel, Robert P. J. Day, Shuyu Wei, and Wei Shuyu.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Vandiver,
  Anders Kaseorg, Andrey Okoshkin, Ann T Ropea, Beat Bolli, Ben
  Peart, Brandon Williams, brian m. carlson, Carlos Martín Nieto,
  Charles Bailey, Christian Couder, Dennis Kaarsemaker, Derrick
  Stolee, Elijah Newren, Emily Xie, Eric Sunshine, Eric Wong,
  Heiko Voigt, Jacob Keller, Jameson Miller, Jean-Noel Avila,
  Jeff Hostetler, Jeff King, Johannes Schindelin, Jonathan Nieder,
  Jonathan Tan, Junio C Hamano, Kaartic Sivaraam, Kevin Daudt,
  Lars Schneider, Liam Beguin, Martin Ågren, Michael Haggerty,
  Nicolas Morey-Chaisemartin, Phil Hord, Phillip Wood, Pranit
  Bauva, Prathamesh Chavan, Ramsay Jones, Randall S. Becker,
  Rasmus Villemoes, René Scharfe, Simon Ruderich, Stefan Beller,
  Steffen Prohaska, Stephan Beyer, SZEDER Gábor, Thomas Braun,
  Thomas Gummerer, Todd Zullinger, Torsten Bögershausen, and
  W. Trevor King.

----------------------------------------------------------------

Git 2.16 Release Notes (draft)
==============================

Backward compatibility notes and other notable changes.

 * Use of an empty string as a pathspec element that is used for
   'everything matches' is now an error.


Updates since v2.15
-------------------

UI, Workflows & Features

 * An empty string as a pathspec element that means "everything"
   i.e. 'git add ""', is now illegal.  We started this by first
   deprecating and warning a pathspec that has such an element in
   2.11 (Nov 2016).

 * A hook script that is set unexecutable is simply ignored.  Git
   notifies when such a file is ignored, unless the message is
   squelched via advice.ignoredHook configuration.

 * "git pull" has been taught to accept "--[no-]signoff" option and
   pass it down to "git merge".

 * The "--push-option=<string>" option to "git push" now defaults to a
   list of strings configured via push.pushOption variable.

 * "gitweb" checks if a directory is searchable with Perl's "-x"
   operator, which can be enhanced by using "filetest 'access'"
   pragma, which now we do.

 * "git stash save" has been deprecated in favour of "git stash push".

 * The set of paths output from "git status --ignored" was tied
   closely with its "--untracked=<mode>" option, but now it can be
   controlled more flexibly.  Most notably, a directory that is
   ignored because it is listed to be ignored in the ignore/exclude
   mechanism can be handled differently from a directory that ends up
   to be ignored only because all files in it are ignored.

 * The remote-helper for talking to MediaWiki has been updated to
   truncate an overlong pagename so that ".mw" suffix can still be
   added.

 * The remote-helper for talking to MediaWiki has been updated to
   work with mediawiki namespaces.

 * The "--format=..." option "git for-each-ref" takes learned to show
   the name of the 'remote' repository and the ref at the remote side
   that is affected for 'upstream' and 'push' via "%(push:remotename)"
   and friends.

 * Doc and message updates to teach users "bisect view" is a synonym
   for "bisect visualize".

 * "git bisect run" that did not specify any command to run used to go
   ahead and treated all commits to be tested as 'good'.  This has
   been corrected by making the command error out.

 * The SubmittingPatches document has been converted to produce an
   HTML version via AsciiDoc/Asciidoctor.

 * We learned to talk to watchman to speed up "git status" and other
   operations that need to see which paths have been modified.

 * The "diff" family of commands learned to ignore differences in
   carriage return at the end of line.

 * Places that know about "sendemail.to", like documentation and shell
   completion (in contrib/) have been taught about "sendemail.tocmd",
   too.

 * "git add --renormalize ." is a new and safer way to record the fact
   that you are correcting the end-of-line convention and other
   "convert_to_git()" glitches in the in-repository data.

 * "git branch" and "git checkout -b" are now forbidden from creating
   a branch whose name is "HEAD".

 * "git branch --list" learned to show its output through the pager by
   default when the output is going to a terminal, which is controlled
   by the pager.branch configuration variable.  This is similar to a
   recent change to "git tag --list".

 * "git grep -W", "git diff -W" and their friends learned a heuristic
   to extend a pre-context beyond the line that matches the "function
   pattern" (aka "diff.*.xfuncname") to include a comment block, if
   exists, that immediately precedes it.

 * "git config --expiry-date gc.reflogexpire" can read "2.weeks" from
   the configuration and report it as a timestamp, just like "--int"
   would read "1k" and report 1024, to help consumption by scripts.

 * The shell completion (in contrib/) learned that "git pull" can take
   the "--autostash" option.

 * The tagnames "git log --decorate" uses to annotate the commits can
   now be limited to subset of available refs with the two additional
   options, --decorate-refs[-exclude]=<pattern>.

 * "git grep" compiled with libpcre2 sometimes triggered a segfault,
   which is being fixed.

 * "git send-email" tries to see if the sendmail program is available
   in /usr/lib and /usr/sbin; extend the list of locations to be
   checked to also include directories on $PATH.

 * "git diff" learned, "--anchored", a variant of the "--patience"
   algorithm, to which the user can specify which 'unique' line to be
   used as anchoring points.

 * The way "git worktree add" determines what branch to create from
   where and checkout in the new worktree has been updated a bit.

 * Ancient part of codebase still shows dots after an abbreviated
   object name just to show that it is not a full object name, but
   these ellipses are confusing to people who newly discovered Git
   who are used to seeing abbreviated object names and find them
   confusing with the range syntax.

 * With a configuration variable rebase.abbreviateCommands set,
   "git rebase -i" produces the todo list with a single-letter
   command names.

 * "git worktree add" learned to run the post-checkout hook, just like
   "git checkout" does, after the initial checkout.

 * "git svn" has been updated to strip CRs in the commit messages, as
   recent versions of Subversion rejects them.

 * "git imap-send" did not correctly quote the folder name when
   making a request to the server, which has been corrected.

 * Error messages from "git rebase" have been somewhat cleaned up.

 * Git has been taught to support an https:// URL used for http.proxy
   when using recent versions of libcurl.

 * "git merge" learned to pay attention to merge.verifySignatures
   configuration variable and pretend as if '--verify-signatures'
   option was given from the command line.

 * "git describe" was taught to dig trees deeper to find a
   <commit-ish>:<path> that refers to a given blob object.


Performance, Internal Implementation, Development Support etc.

 * An earlier update made it possible to use an on-stack in-core
   lockfile structure (as opposed to having to deliberately leak an
   on-heap one).  Many codepaths have been updated to take advantage
   of this new facility.

 * Calling cmd_foo() as if it is a general purpose helper function is
   a no-no.  Correct two instances of such to set an example.

 * We try to see if somebody runs our test suite with a shell that
   does not support "local" like bash/dash does.

 * An early part of piece-by-piece rewrite of "git bisect" in C.

 * GSoC to piece-by-piece rewrite "git submodule" in C.

 * Optimize the code to find shortest unique prefix of object names.

 * Pathspec-limited revision traversal was taught not to keep finding
   unneeded differences once it knows two trees are different inside
   given pathspec.

 * Conversion from uchar[20] to struct object_id continues.

 * Code cleanup.

 * A single-word "unsigned flags" in the diff options is being split
   into a structure with many bitfields.

 * TravisCI build updates.

 * Parts of a test to drive the long-running content filter interface
   has been split into its own module, hopefully to eventually become
   reusable.

 * Drop (perhaps overly cautious) sanity check before using the index
   read from the filesystem at runtime.

 * The build procedure has been taught to avoid some unnecessary
   instability in the build products.

 * A new mechanism to upgrade the wire protocol in place is proposed
   and demonstrated that it works with the older versions of Git
   without harming them.

 * An infrastructure to define what hash function is used in Git is
   introduced, and an effort to plumb that throughout various
   codepaths has been started.

 * The code to iterate over loose object files got optimized.

 * An internal function that was left for backward compatibility has
   been removed, as there is no remaining callers.

 * Historically, the diff machinery for rename detection had a
   hardcoded limit of 32k paths; this is being lifted to allow users
   trade cycles with a (possibly) easier to read result.

 * The tracing infrastructure has been optimized for cases where no
   tracing is requested.

 * In preparation for implementing narrow/partial clone, the object
   walking machinery has been taught a way to tell it to "filter" some
   objects from enumeration.

 * A few structures and variables that are implementation details of
   the decorate API have been renamed and then the API got documented
   better.

 * Assorted updates for TravisCI integration.
   (merge 4f26366679 sg/travis-fixes later to maint).

 * Introduce a helper to simplify code to parse a common pattern that
   expects either "--key" or "--key=<something>".

 * "git version --build-options" learned to report the host CPU and
   the exact commit object name the binary was built from.

Also contains various documentation updates and code clean-ups.


Fixes since v2.15
-----------------

 * "auto" as a value for the columnar output configuration ought to
   judge "is the output consumed by humans?" with the same criteria as
   "auto" for coloured output configuration, i.e. either the standard
   output stream is going to tty, or a pager is in use.  We forgot the
   latter, which has been fixed.

 * The experimental "color moved lines differently in diff output"
   feature was buggy around "ignore whitespace changes" edges, which
   has been corrected.

 * Instead of using custom line comparison and hashing functions to
   implement "moved lines" coloring in the diff output, use the pair
   of these functions from lower-layer xdiff/ code.

 * Some codepaths did not check for errors when asking what branch the
   HEAD points at, which have been fixed.

 * "git commit", after making a commit, did not check for errors when
   asking on what branch it made the commit, which has been corrected.

 * "git status --ignored -u" did not stop at a working tree of a
   separate project that is embedded in an ignored directory and
   listed files in that other project, instead of just showing the
   directory itself as ignored.

 * A broken access to object databases in recent update to "git grep
   --recurse-submodules" has been fixed.

 * A recent regression in "git rebase -i" that broke execution of git
   commands from subdirectories via "exec" instruction has been fixed.

 * A (possibly flakey) test fix.

 * "git check-ref-format --branch @{-1}" bit a "BUG()" when run
   outside a repository for obvious reasons; clarify the documentation
   and make sure we do not even try to expand the at-mark magic in
   such a case, but still call the validation logic for branch names.

 * "git fetch --recurse-submodules" now knows that submodules can be
   moved around in the superproject in addition to getting updated,
   and finds the ones that need to be fetched accordingly.

 * Command line completion (in contrib/) update.

 * Description of blame.{showroot,blankboundary,showemail,date}
   configuration variables have been added to "git config --help".

 * After an error from lstat(), diff_populate_filespec() function
   sometimes still went ahead and used invalid data in struct stat,
   which has been fixed.

 * UNC paths are also relevant in Cygwin builds and they are now
   tested just like Mingw builds.

 * Correct start-up sequence so that a repository could be placed
   immediately under the root directory again (which was broken at
   around Git 2.13).

 * The credential helper for libsecret (in contrib/) has been improved
   to allow possibly prompting the end user to unlock secrets that are
   currently locked (otherwise the secrets may not be loaded).

 * MinGW updates.

 * Error checking in "git imap-send" for empty response has been
   improved.

 * Recent update to the refs infrastructure implementation started
   rewriting packed-refs file more often than before; this has been
   optimized again for most trivial cases.

 * Some error messages did not quote filenames shown in it, which have
   been fixed.

 * "git rebase -i" recently started misbehaving when a submodule that
   is configured with 'submodule.<name>.ignore' is dirty; this has
   been corrected.

 * Building with NO_LIBPCRE1_JIT did not disable it, which has been fixed.

 * We used to add an empty alternate object database to the system
   that does not help anything; it has been corrected.

 * Doc update around use of "format-patch --subject-prefix" etc.

 * A fix for an ancient bug in "git apply --ignore-space-change" codepath.

 * Clarify and enhance documentation for "merge-base --fork-point", as
   it was clear what it computed but not why/what for.

 * A few scripts (both in production and tests) incorrectly redirected
   their error output.  These have been corrected.

 * "git notes" sent its error message to its standard output stream,
   which was corrected.

 * The three-way merge performed by "git cherry-pick" was confused
   when a new submodule was added in the meantime, which has been
   fixed (or "papered over").

 * The sequencer machinery (used by "git cherry-pick A..B", and "git
   rebase -i", among other things) would have lost a commit if stopped
   due to an unlockable index file, which has been fixed.

 * "git apply --inaccurate-eof" when used with "--ignore-space-change"
   triggered an internal sanity check, which has been fixed.

 * Command line completion (in contrib/) has been taught about the
   "--copy" option of "git branch".

 * When "git rebase" prepared an mailbox of changes and fed it to "git
   am" to replay them, it was confused when a stray "From " happened
   to be in the log message of one of the replayed changes.  This has
   been corrected.

 * There was a recent semantic mismerge in the codepath to write out a
   section of a configuration section, which has been corrected.

 * Mentions of "git-rebase" and "git-am" (dashed form) still remained
   in end-user visible strings emitted by the "git rebase" command;
   they have been corrected.

 * Contrary to the documentation, "git pull -4/-6 other-args" did not
   ask the underlying "git fetch" to go over IPv4/IPv6, which has been
   corrected.

 * "git checkout --recursive" may overwrite and rewind the history of
   the branch that happens to be checked out in submodule
   repositories, which might not be desirable.  Detach the HEAD but
   still allow the recursive checkout to succeed in such a case.
   (merge 57f22bf997 sb/submodule-recursive-checkout-detach-head later to maint).

 * "git branch --set-upstream" has been deprecated and (sort of)
   removed, as "--set-upstream-to" is the preferred one these days.
   The documentation still had "--set-upstream" listed on its
   synopsis section, which has been corrected.
   (merge a060f3d3d8 tz/branch-doc-remove-set-upstream later to maint).

 * Internally we use 0{40} as a placeholder object name to signal the
   codepath that there is no such object (e.g. the fast-forward check
   while "git fetch" stores a new remote-tracking ref says "we know
   there is no 'old' thing pointed at by the ref, as we are creating
   it anew" by passing 0{40} for the 'old' side), and expect that a
   codepath to locate an in-core object to return NULL as a sign that
   the object does not exist.  A look-up for an object that does not
   exist however is quite costly with a repository with large number
   of packfiles.  This access pattern has been optimized.
   (merge 87b5e236a1 jk/fewer-pack-rescan later to maint).

 * In addition to "git stash -m message", the command learned to
   accept "git stash -mmessage" form.
   (merge 5675473fcb ph/stash-save-m-option-fix later to maint).

 * @{-N} in "git checkout @{-N}" may refer to a detached HEAD state,
   but the documentation was not clear about it, which has been fixed.
   (merge 75ce149575 ks/doc-checkout-previous later to maint).

 * A regression in the progress eye-candy was fixed.
   (merge 9c5951cacf jk/progress-delay-fix later to maint).

 * The code internal to the recursive merge strategy was not fully
   prepared to see a path that is renamed to try overwriting another
   path that is only different in case on case insensitive systems.
   This does not matter in the current code, but will start to matter
   once the rename detection logic starts taking hints from nearby
   paths moving to some directory and moves a new path along with them.
   (merge 4cba2b0108 en/merge-recursive-icase-removal later to maint).

 * An v2.12-era regression in pathspec match logic, which made it look
   into submodule tree even when it is not desired, has been fixed.
   (merge eef3df5a93 bw/pathspec-match-submodule-boundary later to maint).

 * Amending commits in git-gui broke the author name that is non-ascii
   due to incorrect enconding conversion.

 * Recent update to the submodule configuration code broke "diff-tree"
   by accidentally stopping to read from the index upfront.
   (merge fd66bcc31f bw/submodule-config-cleanup later to maint).

 * Git shows a message to tell the user that it is waiting for the
   user to finish editing when spawning an editor, in case the editor
   opens to a hidden window or somewhere obscure and the user gets
   lost.
   (merge abfb04d0c7 ls/editor-waiting-message later to maint).

 * The "safe crlf" check incorrectly triggered for contents that does
   not use CRLF as line endings, which has been corrected.
   (merge 649f1f0948 tb/check-crlf-for-safe-crlf later to maint).

 * "git clone --shared" to borrow from a (secondary) worktree did not
   work, even though "git clone --local" did.  Both are now accepted.
   (merge b3b05971c1 es/clone-shared-worktree later to maint).

 * The build procedure now allows not just the repositories but also
   the refs to be used to take pre-formatted manpages and html
   documents to install.
   (merge 65289e9dcd rb/quick-install-doc later to maint).

 * Update the shell prompt script (in contrib/) to strip trailing CR
   from strings read from various "state" files.
   (merge 041fe8fc83 ra/prompt-eread-fix later to maint).

 * Other minor doc, test and build updates and code cleanups.
   (merge 1a1fc2d5b5 rd/man-prune-progress later to maint).
   (merge 0ba014035a rd/man-reflog-add-n later to maint).
   (merge e54b63359f rd/doc-notes-prune-fix later to maint).
   (merge ff4c9b413a sp/doc-info-attributes later to maint).
   (merge 7db2cbf4f1 jc/receive-pack-hook-doc later to maint).
   (merge 5a0526264b tg/t-readme-updates later to maint).
   (merge 5e83cca0b8 jk/no-optional-locks later to maint).
   (merge 826c778f7c js/hashmap-update-sample later to maint).
   (merge 176b2d328c sg/setup-doc-update later to maint).
   (merge 1b09073514 rs/am-builtin-leakfix later to maint).
   (merge addcf6cfde rs/fmt-merge-msg-string-leak-fix later to maint).
   (merge c3ff8f6c14 rs/strbuf-read-once-reset-length later to maint).
   (merge 6b0eb884f9 db/doc-workflows-neuter-the-maintainer later to maint).
   (merge 8c87bdfb21 jk/cvsimport-quoting later to maint).
   (merge 176cb979fe rs/fmt-merge-msg-leakfix later to maint).
   (merge 5a03360e73 tb/delimit-pretty-trailers-args-with-comma later to maint).
   (merge d0e6326026 ot/pretty later to maint).
   (merge 44103f4197 sb/test-helper-excludes later to maint).
   (merge 170078693f jt/transport-no-more-rsync later to maint).
   (merge c07b3adff1 bw/path-doc later to maint).
   (merge bf9d7df950 tz/lib-git-svn-svnserve-tests later to maint).
   (merge dec366c9a8 sr/http-sslverify-config-doc later to maint).

----------------------------------------------------------------

Changes since v2.15.0 are as follows:

Adam Dinwoodie (3):
      t5580: add Cygwin support
      rebase -i: fix comment typo
      doc/SubmittingPatches: correct subject guidance

Albert Astals Cid (1):
      completion: add --autostash and --no-autostash to pull

Alex Vandiver (7):
      fsmonitor: read entirety of watchman output
      fsmonitor: set the PWD to the top of the working tree
      fsmonitor: don't bother pretty-printing JSON from watchman
      fsmonitor: document GIT_TRACE_FSMONITOR
      fsmonitor: delay updating state until after split index is merged
      fsmonitor: read from getcwd(), not the PWD environment variable
      fsmonitor: store fsmonitor bitmap before splitting index

Anders Kaseorg (1):
      git-gui: sort entries in optimized tclIndex

Andrey Okoshkin (3):
      commit: check result of resolve_ref_unsafe
      diff: fix lstat() error handling in diff_populate_filespec()
      merge-recursive: check GIT_MERGE_VERBOSITY only once

Ann T Ropea (7):
      Documentation: revisions: fix typo: "three dot" ---> "three-dot" (in line with "two-dot").
      Documentation: user-manual: limit usage of ellipsis
      print_sha1_ellipsis: introduce helper
      checkout: describe_detached_head: remove ellipsis after committish
      t4013: prepare for upcoming "diff --raw --abbrev" output format change
      diff: diff_aligned_abbrev: remove ellipsis after abbreviated SHA-1 value
      t4013: test new output from diff --abbrev --raw

Antoine Beaupré (6):
      remote-mediawiki: limit filenames to legal
      remote-mediawiki: show known namespace choices on failure
      remote-mediawiki: skip virtual namespaces
      remote-mediawiki: support fetching from (Main) namespace
      remote-mediawiki: process namespaces in order
      remote-mediawiki: show progress while fetching namespaces

Beat Bolli (1):
      contrib/git-jump: allow to configure the grep command

Ben Peart (16):
      bswap: add 64 bit endianness helper get_be64
      preload-index: add override to enable testing preload-index
      update-index: add a new --force-write-index option
      fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
      fsmonitor: add documentation for the fsmonitor extension.
      ls-files: Add support in ls-files to display the fsmonitor valid bit
      update-index: add fsmonitor support to update-index
      fsmonitor: add a test tool to dump the index extension
      split-index: disable the fsmonitor extension when running the split index test
      fsmonitor: add test cases for fsmonitor extension
      fsmonitor: add a sample integration script for Watchman
      fsmonitor: add a performance test
      fsmonitor: MINGW support for watchman integration
      fsmonitor: preserve utf8 filenames in fsmonitor-watchman log
      read_index_from(): speed index loading by skipping verification of the entry order
      fsmonitor: simplify determining the git worktree under Windows

Brandon Williams (24):
      pkt-line: add packet_write function
      protocol: introduce protocol extension mechanisms
      daemon: recognize hidden request arguments
      upload-pack, receive-pack: introduce protocol version 1
      connect: teach client to recognize v1 server response
      connect: tell server that the client understands v1
      http: tell server that the client understands v1
      i5700: add interop test for protocol transition
      ssh: introduce a 'simple' ssh variant
      add, reset: use DIFF_OPT_SET macro to set a diff flag
      diff: convert flags to be stored in bitfields
      diff: add flag to indicate textconv was set via cmdline
      diff: remove touched flags
      diff: remove DIFF_OPT_TST macro
      diff: remove DIFF_OPT_SET macro
      diff: remove DIFF_OPT_CLR macro
      diff: make struct diff_flags members lowercase
      wt-status: actually ignore submodules when requested
      pathspec: only match across submodule boundaries when requested
      diff-tree: read the index so attribute checks work in bare repositories
      submodule: convert stage_updated_gitmodules to take a struct index_state
      submodule: used correct index in is_staging_gitmodules_ok
      submodule: convert get_next_submodule to not rely on the_index
      path: document path functions

Carlos Martín Nieto (1):
      diff: --indent-heuristic is no longer experimental

Charles Bailey (2):
      t4201: make use of abbreviation in the test more robust
      grep: fix NO_LIBPCRE1_JIT to fully disable JIT

Christian Couder (24):
      perf/run: add '--config' option to the 'run' script
      perf/run: add get_var_from_env_or_config()
      perf/run: add GIT_PERF_DIRS_OR_REVS
      perf/run: add calls to get_var_from_env_or_config()
      perf/run: add get_subsections()
      perf/run: update get_var_from_env_or_config() for subsections
      perf/run: add run_subsection()
      perf/run: show name of rev being built
      perf: store subsection results in "test-results/$GIT_PERF_SUBSECTION/"
      t0021/rot13-filter: fix list comparison
      t0021/rot13-filter: refactor packet reading functions
      t0021/rot13-filter: improve 'if .. elsif .. else' style
      t0021/rot13-filter: improve error message
      t0021/rot13-filter: add packet_initialize()
      t0021/rot13-filter: refactor checking final lf
      t0021/rot13-filter: add capability functions
      Git/Packet.pm: extract parts of t0021/rot13-filter.pl for reuse
      Git/Packet: clarify that packet_required_key_val_read allows EOF
      Git/Packet.pm: use 'if' instead of 'unless'
      list-objects-filter-options: fix 'keword' typo in comment
      git-compat-util: introduce skip_to_optional_arg()
      index-pack: use skip_to_optional_arg()
      diff: use skip_to_optional_arg()
      diff: use skip_to_optional_arg_default()

Damien Marié (1):
      run-command: add hint when a hook is ignored

Daniel Bensoussan (1):
      doc: reword gitworkflows.txt for neutrality

Dennis Kaarsemaker (1):
      credential-libsecret: unlock locked secrets

Derrick Stolee (5):
      p4211-line-log.sh: add log --online --raw --parents perf test
      sha1_name: unroll len loop in find_unique_abbrev_r()
      sha1_name: parse less while finding common prefix
      sha1_name: minimize OID comparisons during disambiguation
      sha1_file: use strbuf_add() instead of strbuf_addf()

Elijah Newren (7):
      sequencer: warn when internal merge may be suboptimal due to renameLimit
      merge-recursive: handle addition of submodule on our side of history
      progress: fix progress meters when dealing with lots of work
      diff: remove silent clamp of renameLimit
      sequencer: show rename progress during cherry picks
      merge-recursive: ignore_case shouldn't reject intentional removals
      strbuf: remove unused stripspace function alias

Emily Xie (1):
      pathspec: die on empty strings as pathspec

Eric Sunshine (3):
      worktree: invoke post-checkout hook (unless --no-checkout)
      clone: support 'clone --shared' from a worktree
      version --build-options: also report host CPU

Eric Wong (2):
      rebase: use mboxrd format to avoid split errors
      git-svn: convert CRLF to LF in commit message to SVN

Florian Klink (1):
      git-send-email: honor $PATH for sendmail binary

Gennady Kupava (2):
      trace: remove trace key normalization
      trace: improve performance while category is disabled

Guillaume Castagnino (1):
      gitweb: use filetest to allow ACLs

Haaris Mehmood (1):
      config: add --expiry-date

Hans Jerry Illikainen (2):
      merge: add config option for verifySignatures
      t: add tests for pull --verify-signatures

Heiko Voigt (3):
      fetch: add test to make sure we stay backwards compatible
      implement fetching of moved submodules
      submodule: simplify decision tree whether to or not to fetch

Ingo Ruhnke (1):
      remote-mediawiki: allow fetching namespaces with spaces

J Wyman (1):
      for-each-ref: let upstream/push report the remote ref name

Jacob Keller (2):
      sequencer: pass absolute GIT_DIR to exec commands
      diff: add tests for --relative without optional prefix value

Jakub Bereżański (2):
      t0302: check helper can handle empty credentials
      wincred: handle empty username/password correctly

Jameson Miller (4):
      status: add option to show ignored files differently
      status: report matching ignored and normal untracked
      status: document options to show matching ignored files
      status: test ignored modes

Jean Carlo Machado (1):
      fix typos in 2.15.0 release notes

Jean-Noel Avila (1):
      submodule--helper.c: i18n: add a missing space in message

Jeff Hostetler (9):
      dir: allow exclusions from blob in addition to file
      oidmap: add oidmap iterator methods
      oidset: add iterator methods to oidset
      list-objects: filter objects in traverse_commit_list
      rev-list: add list-objects filtering support
      pack-objects: add list-objects filtering
      list-objects-filter-options: support --no-filter
      rev-list: support --no-filter argument
      partial-clone: design doc

Jeff King (22):
      revision: quit pruning diff more quickly when possible
      t4015: refactor --color-moved whitespace test
      t4015: check "negative" case for "-w --color-moved"
      t4015: test the output of "diff --color-moved -b"
      diff: fix whitespace-skipping with --color-moved
      diff: handle NULs in get_string_hash()
      test-ref-store: avoid passing NULL to printf
      remote: handle broken symrefs
      log: handle broken HEAD in decoration check
      worktree: handle broken symrefs in find_shared_symref()
      setup: avoid double slashes when looking for HEAD
      link_alt_odb_entries: make empty input a noop
      git-jump: give contact instructions in the README
      p5550: factor out nonsense-pack creation
      t/perf/lib-pack: use fast-import checkpoint to create packs
      p5551: add a script to test fetch pack-dir rescans
      everything_local: use "quick" object existence check
      sha1_file: fast-path null sha1 as a missing object
      git-status.txt: mention --no-optional-locks
      progress: set default delay threshold to 100%, not 0%
      docs/pretty-formats: mention commas in %(trailers) syntax
      cvsimport: apply shell-quoting regex globally

Johannes Schindelin (9):
      for-each-ref: let upstream/push optionally report the remote name
      status: do not get confused by submodules in excluded directories
      mingw: include the full version information in the resources
      mingw: add experimental feature to redirect standard handles
      mingw: optionally redirect stderr/stdout via the same handle
      mingw: document the standard handle redirection
      for-each-ref: test :remotename and :remoteref
      hashmap: adjust documentation to reflect reality
      version --build-options: report commit, too, if possible

Jonathan Nieder (10):
      ssh test: make copy_ssh_wrapper_as clean up after itself
      connect: move no_fork fallback to git_tcp_connect
      connect: split git:// setup into a separate function
      connect: split ssh command line options into separate function
      connect: split ssh option computation to its own function
      ssh: 'auto' variant to select between 'ssh' and 'simple'
      ssh: 'simple' variant does not support -4/-6
      ssh: 'simple' variant does not support --port
      connect: correct style of C-style comment
      generate-cmdlist: avoid non-deterministic output

Jonathan Tan (10):
      connect: in ref advertisement, shallows are last
      Documentation: document Extra Parameters
      Tests: clean up and document submodule helpers
      Tests: clean up submodule recursive helpers
      diff: support anchoring line(s)
      diffcore-rename: make diff-tree -l0 mean -l<large>
      decorate: clean up and document API
      transport: remove unused "push" in vtable
      clone, fetch: remove redundant transport check
      transport: make transport vtable more private

Junio C Hamano (37):
      t0027: do not use an empty string as a pathspec element
      describe: do not use cmd_*() as a subroutine
      merge-ours: do not use cmd_*() as a subroutine
      branch: streamline "attr_only" handling in validate_new_branchname()
      branch: split validate_new_branchname() into two
      t5601: rm the target file of cp that could still be executing
      check-ref-format --branch: do not expand @{...} outside repository
      check-ref-format --branch: strip refs/heads/ using skip_prefix
      check-ref-format doc: --branch validates and expands <branch>
      column: do not include pager.c
      xdiff: reassign xpparm_t.flags bits
      The first batch for 2.16
      RelNotes: the second batch post 2.15 comes
      diff: --ignore-cr-at-eol
      merge-base --fork-point doc: clarify the example and failure modes
      RelNotes: the third batch for 2.16
      branch: correctly reject refs/heads/{-dash,HEAD}
      Start preparation for 2.15.1
      RelNotes: the fourth batch for 2.16
      Almost ready for 2.15.1
      RelNotes: the fifth batch for 2.16
      hooks doc: clarify when receive-pack invokes its hooks
      A bit more fixes for 2.15.1
      RelNotes: the sixth batch for 2.16
      Git 2.15.1
      RelNotes: the seventh batch
      t2020: test variations that matter
      Prepare for 2.15.2
      RelNotes: the eighth batch
      diff: use skip_to_optional_arg_default() in parsing --relative
      t4045: reindent to make helpers readable
      RelNotes: the ninth batch
      RelNotes: the tenth batch
      t5573, t7612: clean up after unexpected success of 'pull' and 'merge'
      sequencer.c: drop 'const' from function return type
      RelNotes: the eleventh batch
      Git 2.16-rc0

Kaartic Sivaraam (12):
      mailmap: use Kaartic Sivaraam's new address
      builtin/branch: remove redundant check for HEAD
      git-rebase: clean up dashed-usages in messages
      Doc/checkout: checking out using @{-N} can lead to detached state
      branch: improve documentation and naming of create_branch() parameters
      branch: group related arguments of create_branch()
      branch: update warning message shown when copying a misnamed branch
      builtin/branch: strip refs/heads/ using skip_prefix
      Doc/check-ref-format: clarify information about @{-N} syntax
      rebase: consistently use branch_name variable
      rebase: distinguish user input by quoting it
      rebase: rebasing can also be done when HEAD is detached

Kevin (1):
      remote-mediawiki: add namespace support

Kevin Daudt (1):
      column: show auto columns when pager is active

Lars Schneider (3):
      refactor "dumb" terminal determination
      progress: drop delay-threshold code
      launch_editor(): indicate that Git waits for user input

Liam Beguin (9):
      Documentation: move rebase.* configs to new file
      Documentation: use preferred name for the 'todo list' script
      rebase -i: set commit to null in exec commands
      rebase -i: refactor transform_todo_ids
      rebase -i: replace reference to sha1 with oid
      rebase -i: update functions to use a flags parameter
      rebase -i -x: add exec commands via the rebase--helper
      rebase -i: learn to abbreviate command names
      t3404: add test case for abbreviated commands

Marius Paliga (1):
      builtin/push.c: add push.pushOption config

Martin Ågren (22):
      sha1_file: do not leak `lock_file`
      treewide: prefer lockfiles on the stack
      lockfile: fix documentation on `close_lock_file_gently()`
      tempfile: fix documentation on `delete_tempfile()`
      checkout-index: simplify locking logic
      cache-tree: simplify locking logic
      apply: move lockfile into `apply_state`
      apply: remove `newfd` from `struct apply_state`
      cache.h: document `write_locked_index()`
      read-cache: drop explicit `CLOSE_LOCK`-flag
      read-cache: leave lock in right state in `write_locked_index()`
      read_cache: roll back lock in `update_index_if_able()`
      grep: take the read-lock when adding a submodule
      bisect: change calling-convention of `find_bisection()`
      bisect: fix memory leak in `find_bisection()`
      bisect: fix off-by-one error in `best_bisection_sorted()`
      bisect: fix memory leak when returning best element
      builtin/merge-base: free commit lists
      reduce_heads: fix memory leaks
      t7006: add tests for how git branch paginates
      branch: respect `pager.branch` in list-mode only
      branch: change default of `pager.branch` to "on"

Michael Haggerty (12):
      t1409: check that `packed-refs` is not rewritten unnecessarily
      files-backend: don't rewrite the `packed-refs` file unnecessarily
      t0000: check whether the shell supports the "local" keyword
      files_transaction_prepare(): don't leak flags to packed transaction
      prune_ref(): call `ref_transaction_add_update()` directly
      ref_transaction_update(): die on disallowed flags
      ref_transaction_add_update(): remove a check
      refs: tidy up and adjust visibility of the `ref_update` flags
      refs: rename constant `REF_NODEREF` to `REF_NO_DEREF`
      refs: rename constant `REF_ISPRUNING` to `REF_IS_PRUNING`
      write_packed_entry(): take `object_id` arguments
      refs: update some more docs to use "oid" rather than "sha1"

Nicolas Morey-Chaisemartin (1):
      imap-send: URI encode server folder

Olga Telezhnaya (2):
      format: create pretty.h file
      format: create docs for pretty.h

Phil Hord (2):
      doc: prefer 'stash push' over 'stash save'
      stash: learn to parse -m/--message like commit does

Phillip Wood (2):
      config: avoid "write_in_full(fd, buf, len) != len" pattern
      sequencer: reschedule pick if index can't be locked

Pranit Bauva (6):
      bisect--helper: use OPT_CMDMODE instead of OPT_BOOL
      bisect--helper: rewrite `check_term_format` shell function in C
      bisect--helper: `write_terms` shell function in C
      bisect--helper: `bisect_clean_state` shell function in C
      t6030: explicitly test for bisection cleanup
      bisect--helper: `is_expected_rev` & `check_expected_revs` shell function in C

Prathamesh Chavan (3):
      submodule--helper: introduce get_submodule_displaypath()
      submodule--helper: introduce for_each_listed_submodule()
      submodule: port submodule subcommand 'status' from shell to C

Rafael Ascensão (1):
      log: add option to choose which refs to decorate

Ramsay Jones (1):
      repository: fix a sparse 'using integer as NULL pointer' warning

Randall S. Becker (1):
      install-doc-quick: allow specifying what ref to install

Rasmus Villemoes (2):
      Documentation/config: add sendemail.tocmd to list preceding "See git-send-email(1)"
      completion: add git config sendemail.tocmd

René Scharfe (21):
      notes: move hex_to_bytes() to hex.c and export it
      http-push: use hex_to_bytes()
      sha1_file: use hex_to_bytes()
      sequencer: factor out rewrite_file()
      sequencer: use O_TRUNC to truncate files
      imap-send: handle NULL return of next_arg()
      imap-send: handle missing response codes gracefully
      apply: avoid out-of-bounds access in fuzzy_matchlines()
      apply: update line lengths for --inaccurate-eof
      config: flip return value of write_section()
      t4051: add test for comments preceding function lines
      xdiff: factor out is_func_rec()
      xdiff: show non-empty lines before functions with -W
      t7810: improve check of -W with user-defined function lines
      grep: update boundary variable for pre-context
      grep: show non-empty lines before functions with -W
      am: release strbuf after use in split_mail_mbox()
      fmt-merge-msg: avoid leaking strbuf in shortlog()
      strbuf: release memory on read error in strbuf_read_once()
      transport-helper: plug strbuf and string_list leaks
      p7519: improve check for prerequisite WATCHMAN

Robert Abel (2):
      git-prompt: make __git_eread intended use explicit
      git-prompt: fix reading files with windows line endings

Robert P. J. Day (4):
      bisect: mention "view" as an alternative to "visualize"
      doc: add missing "-n" (dry-run) option to reflog man page
      prune: add "--progress" to man page and usage msg
      notes: correct 'git notes prune' options to '[-n] [-v]'

SZEDER Gábor (7):
      travis-ci: fix running P4 and Git LFS tests in Linux build jobs
      travis-ci: don't build Git for the static analysis job
      setup.c: fix comment about order of .git directory discovery
      travis-ci: introduce a $jobname variable for 'ci/*' scripts
      travis-ci: move setting environment variables to 'ci/lib-travisci.sh'
      travis-ci: set GIT_TEST_HTTPD in 'ci/lib-travisci.sh'
      travis-ci: use 'set -x' in 'ci/*' scripts for extra tracing output

Shuyu Wei (1):
      pull: pass -4/-6 option to 'git fetch'

Simon Ruderich (3):
      sequencer.c: check return value of close() in rewrite_file()
      wrapper.c: consistently quote filenames in error messages
      config: document default value of http.sslVerify

Stefan Beller (15):
      recursive submodules: detach HEAD from new state
      Documentation/checkout: clarify submodule HEADs to be detached
      xdiff-interface: export comparing and hashing strings
      diff.c: get rid of duplicate implementation
      t6120: fix typo in test name
      list-objects.c: factor out traverse_trees_and_blobs
      config: document blame configuration
      t/3512: demonstrate unrelated submodule/file conflict as cherry-pick failure
      revision.h: introduce blob/tree walking in order of the commits
      builtin/describe.c: rename `oid` to avoid variable shadowing
      builtin/describe.c: print debug statements earlier
      builtin/describe.c: factor out describe_commit
      Documentation/git-clone: improve description for submodule recursing
      t/helper: ignore everything but sources
      builtin/describe.c: describe a blob

Steffen Prohaska (1):
      doc: Mention info/attributes in gitrepository-layout

Stephan Beyer (1):
      bisect run: die if no command is given

Thomas Braun (1):
      completion: add remaining flags to checkout

Thomas Gummerer (11):
      stash: replace "git stash save" with "git stash push" in the documentation
      stash: mark "git stash save" deprecated in the man page
      stash: remove now superfluos help for "stash push"
      checkout: factor out functions to new lib file
      worktree: add can be created from any commit-ish
      worktree: add --[no-]track option to the add subcommand
      worktree: make add <path> <branch> dwim
      t/README: remove mention of adding copyright notices
      t/README: document test_cmp_rev
      worktree: add --guess-remote flag to add subcommand
      add worktree.guessRemote config option

Todd Zullinger (11):
      Replace Free Software Foundation address in license notices
      Replace Free Software Foundation address in license notices
      t/lib-gpg: fix gpgconf stderr redirect to /dev/null
      rebase: fix stderr redirect in apply_autostash()
      notes: send "Automatic notes merge failed" messages to stderr
      branch doc: remove --set-upstream from synopsis
      completion: add '--copy' option to 'git branch'
      RelNotes: minor typo fixes in 2.15.1 draft
      t/lib-git-svn: cleanup inconsistent tab/space usage
      t/lib-git-svn.sh: improve svnserve tests with parallel make test
      RelNotes: minor typo fixes in 2.16.0 draft

Torsten Bögershausen (3):
      add: introduce "--renormalize"
      convert: tighten the safe autocrlf handling
      t0027: Adapt the new MIX tests to Windows

W. Trevor King (1):
      pull: pass --signoff/--no-signoff to "git merge"

Wei Shuyu (1):
      http: support CURLPROXY_HTTPS

brian m. carlson (31):
      walker: convert to struct object_id
      refs/files-backend: convert struct ref_to_prune to object_id
      refs: convert delete_ref and refs_delete_ref to struct object_id
      refs: convert update_ref and refs_update_ref to use struct object_id
      refs: prevent accidental NULL dereference in write_pseudoref
      refs: update ref transactions to use struct object_id
      Convert check_connected to use struct object_id
      refs: convert resolve_refdup and refs_resolve_refdup to struct object_id
      refs: convert read_ref and read_ref_full to object_id
      refs: convert dwim_ref and expand_ref to struct object_id
      builtin/reflog: convert remaining unsigned char uses to object_id
      refs: convert dwim_log to struct object_id
      pack-bitmap: convert traverse_bitmap_commit_list to object_id
      builtin/pack-objects: convert to struct object_id
      refs: convert peel_ref to struct object_id
      refs: convert read_ref_at to struct object_id
      refs: convert reflog_expire parameter to struct object_id
      sha1_file: convert index_path and index_fd to struct object_id
      Convert remaining callers of resolve_gitlink_ref to object_id
      refs: convert resolve_gitlink_ref to struct object_id
      worktree: convert struct worktree to object_id
      refs: convert resolve_ref_unsafe to struct object_id
      refs: convert peel_object to struct object_id
      refs: convert read_raw_ref backends to struct object_id
      refs/files-backend: convert static functions to object_id
      Documentation: enable compat-mode for Asciidoctor
      setup: expose enumerated repo info
      Add structure representing hash algorithm
      Integrate hash algorithm support with repo setup
      Switch empty tree and blob lookups to use hash abstraction
      Documentation: convert SubmittingPatches to AsciiDoc

Ævar Arnfjörð Bjarmason (2):
      test-lib: add LIBPCRE1 & LIBPCRE2 prerequisites
      grep: fix segfault under -P + PCRE2 <=10.30 + (*NO_JIT)

Łukasz Stelmach (1):
      git-gui: prevent double UTF-8 conversion


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.15.0-rc2
@ 2017-10-20  6:49  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2017-10-20  6:49 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel

A release candidate Git v2.15.0-rc2 is now available for testing
at the usual places.  It is comprised of 737 non-merge commits
since v2.14.0, contributed by 75 people, 22 of which are new faces.

We had to back-track a bit wrt to the "git add -p" regression; for
now, we simply revert the changes that caused issues to users
without redefining 'color.ui=always' to mean 'color.ui=auto', which
may or may not happen in future releases.

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.15.0-rc2' 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.14.0 are as follows.
Welcome to the Git development community!

  Ann T Ropea, Daniel Watkins, Derrick Stolee, Dimitrios
  Christidis, Eric Rannaud, Evan Zacks, Hielke Christian Braun,
  Ian Campbell, Ilya Kantor, Jameson Miller, Job Snijders, Joel
  Teichroeb, joernchen, Łukasz Gryglicki, Manav Rathi, Martin
  Ågren, Michael Forney, Patryk Obara, Randall S. Becker, Ross
  Kabus, Taylor Blau, and Urs Thuermann.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Andreas Heiduk,
  Anthony Sottile, Ben Boeckel, Brandon Casey, Brandon Williams,
  brian m. carlson, Christian Couder, David Glasser, Eric Blake,
  Han-Wen Nienhuys, Heiko Voigt, Jean-Noel Avila, Jeff Hostetler,
  Jeff King, Johannes Schindelin, Johannes Sixt, Jonathan Nieder,
  Jonathan Tan, Junio C Hamano, Kaartic Sivaraam, Kevin Daudt,
  Kevin Willford, Lars Schneider, Martin Koegler, Matthieu Moy,
  Max Kirillov, Michael Haggerty, Michael J Gruber, Nguyễn Thái
  Ngọc Duy, Nicolas Morey-Chaisemartin, Øystein Walle, Paolo
  Bonzini, Pat Thoyts, Philip Oakley, Phillip Wood, Ralf Thielow,
  Raman Gupta, Ramsay Jones, René Scharfe, Sahil Dua, Santiago
  Torres, Stefan Beller, Stephan Beyer, Takashi Iwai, Thomas
  Braun, Thomas Gummerer, Todd Zullinger, Tom G. Christensen,
  Torsten Bögershausen, William Duclot, and W. Trevor King.

----------------------------------------------------------------

Git 2.15 Release Notes (draft)
==============================

Backward compatibility notes and other notable changes.

 * Use of an empty string as a pathspec element that is used for
   'everything matches' is still warned and Git asks users to use a
   more explicit '.' for that instead.  The hope is that existing
   users will not mind this change, and eventually the warning can be
   turned into a hard error, upgrading the deprecation into removal of
   this (mis)feature.  That is now scheduled to happen in Git v2.16,
   the next major release after this one.

 * Git now avoids blindly falling back to ".git" when the setup
   sequence said we are _not_ in Git repository.  A corner case that
   happens to work right now may be broken by a call to BUG().
   We've tried hard to locate such cases and fixed them, but there
   might still be cases that need to be addressed--bug reports are
   greatly appreciated.

 * "branch --set-upstream" that has been deprecated in Git 1.8 has
   finally been retired.


Updates since v2.14
-------------------

UI, Workflows & Features

 * An example that is now obsolete has been removed from a sample hook,
   and an old example in it that added a sign-off manually has been
   improved to use the interpret-trailers command.

 * The advice message given when "git rebase" stops for conflicting
   changes has been improved.

 * The "rerere-train" script (in contrib/) learned the "--overwrite"
   option to allow overwriting existing recorded resolutions.

 * "git contacts" (in contrib/) now lists the address on the
   "Reported-by:" trailer to its output, in addition to those on
   S-o-b: and other trailers, to make it easier to notify (and thank)
   the original bug reporter.

 * "git rebase", especially when it is run by mistake and ends up
   trying to replay many changes, spent long time in silence.  The
   command has been taught to show progress report when it spends
   long time preparing these many changes to replay (which would give
   the user a chance to abort with ^C).

 * "git merge" learned a "--signoff" option to add the Signed-off-by:
   trailer with the committer's name.

 * "git diff" learned to optionally paint new lines that are the same
   as deleted lines elsewhere differently from genuinely new lines.

 * "git interpret-trailers" learned to take the trailer specifications
   from the command line that overrides the configured values.

 * "git interpret-trailers" has been taught a "--parse" and a few
   other options to make it easier for scripts to grab existing
   trailer lines from a commit log message.

 * The "--format=%(trailers)" option "git log" and its friends take
   learned to take the 'unfold' and 'only' modifiers to normalize its
   output, e.g. "git log --format=%(trailers:only,unfold)".

 * "gitweb" shows a link to visit the 'raw' contents of blbos in the
   history overview page.

 * "[gc] rerereResolved = 5.days" used to be invalid, as the variable
   is defined to take an integer counting the number of days.  It now
   is allowed.

 * The code to acquire a lock on a reference (e.g. while accepting a
   push from a client) used to immediately fail when the reference is
   already locked---now it waits for a very short while and retries,
   which can make it succeed if the lock holder was holding it during
   a read-only operation.

 * "branch --set-upstream" that has been deprecated in Git 1.8 has
   finally been retired.

 * The codepath to call external process filter for smudge/clean
   operation learned to show the progress meter.

 * "git rev-parse" learned "--is-shallow-repository", that is to be
   used in a way similar to existing "--is-bare-repository" and
   friends.

 * "git describe --match <pattern>" has been taught to play well with
   the "--all" option.

 * "git branch" learned "-c/-C" to create a new branch by copying an
   existing one.

 * Some commands (most notably "git status") makes an opportunistic
   update when performing a read-only operation to help optimize later
   operations in the same repository.  The new "--no-optional-locks"
   option can be passed to Git to disable them.

 * "git for-each-ref --format=..." learned a new format element,
   %(trailers), to show only the commit log trailer part of the log
   message.


Performance, Internal Implementation, Development Support etc.

 * Conversion from uchar[20] to struct object_id continues.

 * Start using selected c99 constructs in small, stable and
   essentialpart of the system to catch people who care about
   older compilers that do not grok them.

 * The filter-process interface learned to allow a process with long
   latency give a "delayed" response.

 * Many uses of comparision callback function the hashmap API uses
   cast the callback function type when registering it to
   hashmap_init(), which defeats the compile time type checking when
   the callback interface changes (e.g. gaining more parameters).
   The callback implementations have been updated to take "void *"
   pointers and cast them to the type they expect instead.

 * Because recent Git for Windows do come with a real msgfmt, the
   build procedure for git-gui has been updated to use it instead of a
   hand-rolled substitute.

 * "git grep --recurse-submodules" has been reworked to give a more
   consistent output across submodule boundary (and do its thing
   without having to fork a separate process).

 * A helper function to read a single whole line into strbuf
   mistakenly triggered OOM error at EOF under certain conditions,
   which has been fixed.

 * The "ref-store" code reorganization continues.

 * "git commit" used to discard the index and re-read from the filesystem
   just in case the pre-commit hook has updated it in the middle; this
   has been optimized out when we know we do not run the pre-commit hook.
   (merge 680ee550d7 kw/commit-keep-index-when-pre-commit-is-not-run later to maint).

 * Updates to the HTTP layer we made recently unconditionally used
   features of libCurl without checking the existence of them, causing
   compilation errors, which has been fixed.  Also migrate the code to
   check feature macros, not version numbers, to cope better with
   libCurl that vendor ships with backported features.

 * The API to start showing progress meter after a short delay has
   been simplified.
   (merge 8aade107dd jc/simplify-progress later to maint).

 * Code clean-up to avoid mixing values read from the .gitmodules file
   and values read from the .git/config file.

 * We used to spend more than necessary cycles allocating and freeing
   piece of memory while writing each index entry out.  This has been
   optimized.

 * Platforms that ship with a separate sha1 with collision detection
   library can link to it instead of using the copy we ship as part of
   our source tree.

 * Code around "notes" have been cleaned up.
   (merge 3964281524 mh/notes-cleanup later to maint).

 * The long-standing rule that an in-core lockfile instance, once it
   is used, must not be freed, has been lifted and the lockfile and
   tempfile APIs have been updated to reduce the chance of programming
   errors.

 * Our hashmap implementation in hashmap.[ch] is not thread-safe when
   adding a new item needs to expand the hashtable by rehashing; add
   an API to disable the automatic rehashing to work it around.

 * Many of our programs consider that it is OK to release dynamic
   storage that is used throughout the life of the program by simply
   exiting, but this makes it harder to leak detection tools to avoid
   reporting false positives.  Plug many existing leaks and introduce
   a mechanism for developers to mark that the region of memory
   pointed by a pointer is not lost/leaking to help these tools.

 * As "git commit" to conclude a conflicted "git merge" honors the
   commit-msg hook, "git merge" that records a merge commit that
   cleanly auto-merges should, but it didn't.

 * The codepath for "git merge-recursive" has been cleaned up.

 * Many leaks of strbuf have been fixed.

 * "git imap-send" has our own implementation of the protocol and also
   can use more recent libCurl with the imap protocol support.  Update
   the latter so that it can use the credential subsystem, and then
   make it the default option to use, so that we can eventually
   deprecate and remove the former.

 * "make style" runs git-clang-format to help developers by pointing
   out coding style issues.

 * A test to demonstrate "git mv" failing to adjust nested submodules
   has been added.
   (merge c514167df2 hv/mv-nested-submodules-test later to maint).

 * On Cygwin, "ulimit -s" does not report failure but it does not work
   at all, which causes an unexpected success of some tests that
   expect failures under a limited stack situation.  This has been
   fixed.

 * Many codepaths have been updated to squelch -Wimplicit-fallthrough
   warnings from Gcc 7 (which is a good code hygiene).

 * Add a helper for DLL loading in anticipation for its need in a
   future topic RSN.

 * "git status --ignored", when noticing that a directory without any
   tracked path is ignored, still enumerated all the ignored paths in
   the directory, which is unnecessary.  The codepath has been
   optimized to avoid this overhead.

 * The final batch to "git rebase -i" updates to move more code from
   the shell script to C has been merged.

 * Operations that do not touch (majority of) packed refs have been
   optimized by making accesses to packed-refs file lazy; we no longer
   pre-parse everything, and an access to a single ref in the
   packed-refs does not touch majority of irrelevant refs, either.

 * Add comment to clarify that the style file is meant to be used with
   clang-5 and the rules are still work in progress.

 * Many variables that points at a region of memory that will live
   throughout the life of the program have been marked with UNLEAK
   marker to help the leak checkers concentrate on real leaks..

 * Plans for weaning us off of SHA-1 has been documented.

 * A new "oidmap" API has been introduced and oidset API has been
   rewritten to use it.


Also contains various documentation updates and code clean-ups.


Fixes since v2.14
-----------------

 * "%C(color name)" in the pretty print format always produced ANSI
   color escape codes, which was an early design mistake.  They now
   honor the configuration (e.g. "color.ui = never") and also tty-ness
   of the output medium.

 * The http.{sslkey,sslCert} configuration variables are to be
   interpreted as a pathname that honors "~[username]/" prefix, but
   weren't, which has been fixed.

 * Numerous bugs in walking of reflogs via "log -g" and friends have
   been fixed.

 * "git commit" when seeing an totally empty message said "you did not
   edit the message", which is clearly wrong.  The message has been
   corrected.

 * When a directory is not readable, "gitweb" fails to build the
   project list.  Work this around by skipping such a directory.

 * Some versions of GnuPG fails to kill gpg-agent it auto-spawned
   and such a left-over agent can interfere with a test.  Work it
   around by attempting to kill one before starting a new test.

 * A recently added test for the "credential-cache" helper revealed
   that EOF detection done around the time the connection to the cache
   daemon is torn down were flaky.  This was fixed by reacting to
   ECONNRESET and behaving as if we got an EOF.

 * "git log --tag=no-such-tag" showed log starting from HEAD, which
   has been fixed---it now shows nothing.

 * The "tag.pager" configuration variable was useless for those who
   actually create tag objects, as it interfered with the use of an
   editor.  A new mechanism has been introduced for commands to enable
   pager depending on what operation is being carried out to fix this,
   and then "git tag -l" is made to run pager by default.

 * "git push --recurse-submodules $there HEAD:$target" was not
   propagated down to the submodules, but now it is.

 * Commands like "git rebase" accepted the --rerere-autoupdate option
   from the command line, but did not always use it.  This has been
   fixed.

 * "git clone --recurse-submodules --quiet" did not pass the quiet
   option down to submodules.

 * Test portability fix for OBSD.

 * Portability fix for OBSD.

 * "git am -s" has been taught that some input may end with a trailer
   block that is not Signed-off-by: and it should refrain from adding
   an extra blank line before adding a new sign-off in such a case.

 * "git svn" used with "--localtime" option did not compute the tz
   offset for the timestamp in question and instead always used the
   current time, which has been corrected.

 * Memory leak in an error codepath has been plugged.

 * "git stash -u" used the contents of the committed version of the
   ".gitignore" file to decide which paths are ignored, even when the
   file has local changes.  The command has been taught to instead use
   the locally modified contents.

 * bash 4.4 or newer gave a warning on NUL byte in command
   substitution done in "git stash"; this has been squelched.

 * "git grep -L" and "git grep --quiet -L" reported different exit
   codes; this has been corrected.

 * When handshake with a subprocess filter notices that the process
   asked for an unknown capability, Git did not report what program
   the offending subprocess was running.  This has been corrected.

 * "git apply" that is used as a better "patch -p1" failed to apply a
   taken from a file with CRLF line endings to a file with CRLF line
   endings.  The root cause was because it misused convert_to_git()
   that tried to do "safe-crlf" processing by looking at the index
   entry at the same path, which is a nonsense---in that mode, "apply"
   is not working on the data in (or derived from) the index at all.
   This has been fixed.

 * Killing "git merge --edit" before the editor returns control left
   the repository in a state with MERGE_MSG but without MERGE_HEAD,
   which incorrectly tells the subsequent "git commit" that there was
   a squash merge in progress.  This has been fixed.

 * "git archive" did not work well with pathspecs and the
   export-ignore attribute.

 * In addition to "cc: <a@dd.re.ss> # cruft", "cc: a@dd.re.ss # cruft"
   was taught to "git send-email" as a valid way to tell it that it
   needs to also send a carbon copy to <a@dd.re.ss> in the trailer
   section.

 * "git branch -M a b" while on a branch that is completely unrelated
   to either branch a or branch b misbehaved when multiple worktree
   was in use.  This has been fixed.
   (merge 31824d180d nd/worktree-kill-parse-ref later to maint).

 * "git gc" and friends when multiple worktrees are used off of a
   single repository did not consider the index and per-worktree refs
   of other worktrees as the root for reachability traversal, making
   objects that are in use only in other worktrees to be subject to
   garbage collection.

 * A regression to "gitk --bisect" by a recent update has been fixed.

 * "git -c submodule.recurse=yes pull" did not work as if the
   "--recurse-submodules" option was given from the command line.
   This has been corrected.

 * Unlike "git commit-tree < file", "git commit-tree -F file" did not
   pass the contents of the file verbatim and instead completed an
   incomplete line at the end, if exists.  The latter has been updated
   to match the behaviour of the former.

 * Many codepaths did not diagnose write failures correctly when disks
   go full, due to their misuse of write_in_full() helper function,
   which have been corrected.
   (merge f48ecd38cb jk/write-in-full-fix later to maint).

 * "git help co" now says "co is aliased to ...", not "git co is".
   (merge b3a8076e0d ks/help-alias-label later to maint).

 * "git archive", especially when used with pathspec, stored an empty
   directory in its output, even though Git itself never does so.
   This has been fixed.

 * API error-proofing which happens to also squelch warnings from GCC.

 * The explanation of the cut-line in the commit log editor has been
   slightly tweaked.
   (merge 8c4b1a3593 ks/commit-do-not-touch-cut-line later to maint).

 * "git gc" tries to avoid running two instances at the same time by
   reading and writing pid/host from and to a lock file; it used to
   use an incorrect fscanf() format when reading, which has been
   corrected.

 * The scripts to drive TravisCI has been reorganized and then an
   optimization to avoid spending cycles on a branch whose tip is
   tagged has been implemented.
   (merge 8376eb4a8f ls/travis-scriptify later to maint).

 * The test linter has been taught that we do not like "echo -e".

 * Code cmp.std.c nitpick.

 * A regression fix for 2.11 that made the code to read the list of
   alternate object stores overrun the end of the string.
   (merge f0f7bebef7 jk/info-alternates-fix later to maint).

 * "git describe --match" learned to take multiple patterns in v2.13
   series, but the feature ignored the patterns after the first one
   and did not work at all.  This has been fixed.

 * "git filter-branch" cannot reproduce a history with a tag without
   the tagger field, which only ancient versions of Git allowed to be
   created.  This has been corrected.
   (merge b2c1ca6b4b ic/fix-filter-branch-to-handle-tag-without-tagger later to maint).

 * "git cat-file --textconv" started segfaulting recently, which
   has been corrected.

 * The built-in pattern to detect the "function header" for HTML did
   not match <H1>..<H6> elements without any attributes, which has
   been fixed.

 * "git mailinfo" was loose in decoding quoted printable and produced
   garbage when the two letters after the equal sign are not
   hexadecimal.  This has been fixed.

 * The machinery to create xdelta used in pack files received the
   sizes of the data in size_t, but lost the higher bits of them by
   storing them in "unsigned int" during the computation, which is
   fixed.

 * The delta format used in the packfile cannot reference data at
   offset larger than what can be expressed in 4-byte, but the
   generator for the data failed to make sure the offset does not
   overflow.  This has been corrected.

 * The documentation for '-X<option>' for merges was misleadingly
   written to suggest that "-s theirs" exists, which is not the case.

 * "git fast-export" with -M/-C option issued "copy" instruction on a
   path that is simultaneously modified, which was incorrect.
   (merge b3e8ca89cf jt/fast-export-copy-modify-fix later to maint).

 * Many codepaths have been updated to squelch -Wsign-compare
   warnings.
   (merge 071bcaab64 rj/no-sign-compare later to maint).

 * Memory leaks in various codepaths have been plugged.
   (merge 4d01a7fa65 ma/leakplugs later to maint).

 * Recent versions of "git rev-parse --parseopt" did not parse the
   option specification that does not have the optional flags (*=?!)
   correctly, which has been corrected.
   (merge a6304fa4c2 bc/rev-parse-parseopt-fix later to maint).

 * The checkpoint command "git fast-import" did not flush updates to
   refs and marks unless at least one object was created since the
   last checkpoint, which has been corrected, as these things can
   happen without any new object getting created.
   (merge 30e215a65c er/fast-import-dump-refs-on-checkpoint later to maint).

 * Spell the name of our system as "Git" in the output from
   request-pull script.

 * Fixes for a handful memory access issues identified by valgrind.

 * Backports a moral equivalent of 2015 fix to the poll() emulation
   from the upstream gnulib to fix occasional breakages on HPE NonStop.

 * Users with "color.ui = always" in their configuration were broken
   by a recent change that made plumbing commands to pay attention to
   them as the patch created internally by "git add -p" were colored
   (heh) and made unusable.  This has been fixed by reverting the
   offending change.

 * In the "--format=..." option of the "git for-each-ref" command (and
   its friends, i.e. the listing mode of "git branch/tag"), "%(atom:)"
   (e.g. "%(refname:)", "%(body:)" used to error out.  Instead, treat
   them as if the colon and an empty string that follows it were not
   there.

 * An ancient bug that made Git misbehave with creation/renaming of
   refs has been fixed.

 * "git fetch <there> <src>:<dst>" allows an object name on the <src>
   side when the other side accepts such a request since Git v2.5, but
   the documentation was left stale.
   (merge 83558a412a jc/fetch-refspec-doc-update later to maint).

 * Update the documentation for "git filter-branch" so that the filter
   options are listed in the same order as they are applied, as
   described in an earlier part of the doc.
   (merge 07c4984508 dg/filter-branch-filter-order-doc later to maint).

 * Other minor doc, test and build updates and code cleanups.
   (merge f094b89a4d ma/parse-maybe-bool later to maint).
   (merge 6cdf8a7929 ma/ts-cleanups later to maint).
   (merge 7560f547e6 ma/up-to-date later to maint).
   (merge 0db3dc75f3 rs/apply-epoch later to maint).
   (merge 276d0e35c0 ma/split-symref-update-fix later to maint).
   (merge f777623514 ks/branch-tweak-error-message-for-extra-args later to maint).
   (merge 33f3c683ec ks/verify-filename-non-option-error-message-tweak later to maint).
   (merge 7cbbf9d6a2 ls/filter-process-delayed later to maint).
   (merge 488aa65c8f wk/merge-options-gpg-sign-doc later to maint).
   (merge e61cb19a27 jc/branch-force-doc-readability-fix later to maint).

----------------------------------------------------------------

Changes since v2.14.0 are as follows:

Adam Dinwoodie (1):
      doc: correct command formatting

Andreas Heiduk (2):
      doc: add missing values "none" and "default" for diff.wsErrorHighlight
      doc: clarify "config --bool" behaviour with empty string

Ann T Ropea (1):
      request-pull: capitalise "Git" to make it a proper noun

Anthony Sottile (1):
      git-grep: correct exit code with --quiet and -L

Ben Boeckel (1):
      Documentation: mention that `eol` can change the dirty status of paths

Brandon Casey (7):
      t1502: demonstrate rev-parse --parseopt option mis-parsing
      rev-parse parseopt: do not search help text for flag chars
      rev-parse parseopt: interpret any whitespace as start of help text
      git-rebase: don't ignore unexpected command line arguments
      t0040,t1502: Demonstrate parse_options bugs
      parse-options: write blank line to correct output stream
      parse-options: only insert newline in help text if needed

Brandon Williams (29):
      repo_read_index: don't discard the index
      repository: have the_repository use the_index
      submodule--helper: teach push-check to handle HEAD
      cache.h: add GITMODULES_FILE macro
      config: add config_from_gitmodules
      submodule: remove submodule.fetchjobs from submodule-config parsing
      submodule: remove fetch.recursesubmodules from submodule-config parsing
      submodule: check for unstaged .gitmodules outside of config parsing
      submodule: check for unmerged .gitmodules outside of config parsing
      submodule: merge repo_read_gitmodules and gitmodules_config
      grep: recurse in-process using 'struct repository'
      t7411: check configuration parsing errors
      submodule: don't use submodule_from_name
      add, reset: ensure submodules can be added or reset
      submodule--helper: don't overlay config in remote_submodule_branch
      submodule--helper: don't overlay config in update-clone
      fetch: don't overlay config with submodule-config
      submodule: don't rely on overlayed config when setting diffopts
      unpack-trees: don't respect submodule.update
      submodule: remove submodule_config callback routine
      diff: stop allowing diff to have submodules configured in .git/config
      submodule-config: remove support for overlaying repository config
      submodule-config: move submodule-config functions to submodule-config.c
      submodule-config: lazy-load a repository's .gitmodules file
      unpack-trees: improve loading of .gitmodules
      submodule: remove gitmodules_config
      clone: teach recursive clones to respect -q
      clang-format: outline the git project's coding style
      Makefile: add style build rule

Christian Couder (3):
      refs: use skip_prefix() in ref_is_hidden()
      sub-process: print the cmd when a capability is unsupported
      sha1-lookup: remove sha1_entry_pos() from header file

Daniel Watkins (1):
      diff-highlight: add clean target to Makefile

David Glasser (1):
      doc: list filter-branch subdirectory-filter first

Derrick Stolee (1):
      cleanup: fix possible overflow errors in binary search

Dimitrios Christidis (1):
      fmt-merge-msg: fix coding style

Eric Blake (1):
      git-contacts: also recognise "Reported-by:"

Eric Rannaud (1):
      fast-import: checkpoint: dump branches/tags/marks even if object_count==0

Evan Zacks (1):
      doc: fix minor typos (extra/duplicated words)

Han-Wen Nienhuys (5):
      submodule.h: typofix
      submodule.c: describe submodule_to_gitdir() in a new comment
      real_path: clarify return value ownership
      read_gitfile_gently: clarify return value ownership.
      string-list.h: move documentation from Documentation/api/ into header

Heiko Voigt (2):
      t5526: fix some broken && chains
      add test for bug in git-mv for recursive submodules

Hielke Christian Braun (1):
      gitweb: skip unreadable subdirectories

Ian Campbell (4):
      filter-branch: reset $GIT_* before cleaning up
      filter-branch: preserve and restore $GIT_AUTHOR_* and $GIT_COMMITTER_*
      filter-branch: stash away ref map in a branch
      filter-branch: use hash-object instead of mktag

Ilya Kantor (1):
      userdiff: fix HTML hunk header regexp

Jameson Miller (1):
      Improve performance of git status --ignored

Jean-Noel Avila (1):
      i18n: add a missing space in message

Jeff Hostetler (1):
      hashmap: add API to disable item counting when threaded

Jeff King (134):
      t1414: document some reflog-walk oddities
      revision: disallow reflog walking with revs->limited
      log: clarify comment about reflog cycles
      log: do not free parents when walking reflog
      get_revision_1(): replace do-while with an early return
      rev-list: check reflog_info before showing usage
      reflog-walk: stop using fake parents
      reflog-walk: apply --since/--until to reflog dates
      check return value of verify_ref_format()
      docs/for-each-ref: update pointer to color syntax
      t: use test_decode_color rather than literal ANSI codes
      ref-filter: simplify automatic color reset
      ref-filter: abstract ref format into its own struct
      ref-filter: move need_color_reset_at_eol into ref_format
      ref-filter: provide a function for parsing sort options
      ref-filter: make parse_ref_filter_atom a private function
      ref-filter: factor out the parsing of sorting atoms
      ref-filter: pass ref_format struct to atom parsers
      color: check color.ui in git_default_config()
      for-each-ref: load config earlier
      rev-list: pass diffopt->use_colors through to pretty-print
      pretty: respect color settings for %C placeholders
      ref-filter: consult want_color() before emitting colors
      strbuf: use designated initializers in STRBUF_INIT
      t/lib-proto-disable: restore protocol.allow after config tests
      t5813: add test for hostname starting with dash
      connect: factor out "looks like command line option" check
      connect: reject dashed arguments for proxy commands
      connect: reject paths that look like command line options
      t6018: flesh out empty input/output rev-list tests
      revision: add rev_input_given flag
      rev-list: don't show usage when we see empty ref patterns
      revision: do not fallback to default when rev_input_given is set
      hashcmp: use memcmp instead of open-coded loop
      sha1_file: drop experimental GIT_USE_LOOKUP search
      trailer: put process_trailers() options into a struct
      interpret-trailers: add an option to show only the trailers
      interpret-trailers: add an option to show only existing trailers
      interpret-trailers: add an option to unfold values
      interpret-trailers: add --parse convenience option
      pretty: move trailer formatting to trailer.c
      t4205: refactor %(trailers) tests
      pretty: support normalization options for %(trailers)
      doc: fix typo in sendemail.identity
      config: use a static lock_file struct
      write_index_as_tree: cleanup tempfile on error
      setup_temporary_shallow: avoid using inactive tempfile
      setup_temporary_shallow: move tempfile struct into function
      verify_signed_buffer: prefer close_tempfile() to close()
      always check return value of close_tempfile
      tempfile: do not delete tempfile on failed close
      lockfile: do not rollback lock on failed close
      tempfile: prefer is_tempfile_active to bare access
      tempfile: handle NULL tempfile pointers gracefully
      tempfile: replace die("BUG") with BUG()
      tempfile: factor out activation
      tempfile: factor out deactivation
      tempfile: robustify cleanup handler
      tempfile: release deactivated strbufs instead of resetting
      tempfile: use list.h for linked list
      tempfile: remove deactivated list entries
      tempfile: auto-allocate tempfiles on heap
      lockfile: update lifetime requirements in documentation
      ref_lock: stop leaking lock_files
      stop leaking lock structs in some simple cases
      test-lib: --valgrind should not override --verbose-log
      test-lib: set LSAN_OPTIONS to abort by default
      add: free leaked pathspec after add_files_to_cache()
      update-index: fix cache entry leak in add_one_file()
      config: plug user_config leak
      reset: make tree counting less confusing
      reset: free allocated tree buffers
      repository: free fields before overwriting them
      set_git_dir: handle feeding gitdir to itself
      rev-parse: don't trim bisect refnames
      system_path: move RUNTIME_PREFIX to a sub-function
      git_extract_argv0_path: do nothing without RUNTIME_PREFIX
      add UNLEAK annotation for reducing leak false positives
      shortlog: skip format/parse roundtrip for internal traversal
      shell: drop git-cvsserver support by default
      archimport: use safe_pipe_capture for user input
      cvsimport: shell-quote variable used in backticks
      config: avoid "write_in_full(fd, buf, len) < len" pattern
      get-tar-commit-id: check write_in_full() return against 0
      avoid "write_in_full(fd, buf, len) != len" pattern
      convert less-trivial versions of "write_in_full() != len"
      pkt-line: check write_in_full() errors against "< 0"
      notes-merge: use ssize_t for write_in_full() return value
      config: flip return value of store_write_*()
      read_pack_header: handle signed/unsigned comparison in read result
      prefix_ref_iterator: break when we leave the prefix
      read_info_alternates: read contents into strbuf
      read_info_alternates: warn on non-trivial errors
      revision: replace "struct cmdline_pathspec" with argv_array
      cat-file: handle NULL object_context.path
      test-line-buffer: simplify command parsing
      curl_trace(): eliminate switch fallthrough
      consistently use "fallthrough" comments in switches
      doc: put literal block delimiter around table
      files-backend: prefer "0" for write_in_full() error check
      notes-merge: drop dead zero-write code
      prefer "!=" when checking read_in_full() result
      avoid looking at errno for short read_in_full() returns
      distinguish error versus short read from read_in_full()
      worktree: use xsize_t to access file size
      worktree: check the result of read_in_full()
      validate_headref: NUL-terminate HEAD buffer
      validate_headref: use skip_prefix for symref parsing
      validate_headref: use get_oid_hex for detached HEADs
      git: add --no-optional-locks option
      test-terminal: set TERM=vt100
      t4015: prefer --color to -c color.diff=always
      t3701: use test-terminal to collect color output
      t7508: use test_terminal for color output
      t7502: use diff.noprefix for --verbose test
      t6006: drop "always" color config tests
      t3203: drop "always" color test
      t3205: use --color instead of color.branch=always
      provide --color option for all ref-filter users
      color: make "always" the same as "auto" in config
      t4015: use --color with --color-moved
      t7301: use test_terminal to check color
      path.c: fix uninitialized memory access
      sha1_loose_object_info: handle errors from unpack_sha1_rest
      t3308: create a real ref directory/file conflict
      refs_resolve_ref_unsafe: handle d/f conflicts for writes
      write_entry: fix leak when retrying delayed filter
      write_entry: avoid reading blobs in CE_RETRY case
      write_entry: untangle symlink and regular-file cases
      diff: fix infinite loop with --color-moved --ignore-space-change
      Revert "color: make "always" the same as "auto" in config"
      Revert "t6006: drop "always" color config tests"
      Revert "color: check color.ui in git_default_config()"
      tag: respect color.ui config

Job Snijders (1):
      gitweb: add 'raw' blob_plain link in history overview

Joel Teichroeb (3):
      stash: add a test for stash create with no files
      stash: add a test for when apply fails during stash branch
      stash: add a test for stashing in a detached state

Johannes Schindelin (14):
      run_processes_parallel: change confusing task_cb convention
      git-gui (MinGW): make use of MSys2's msgfmt
      t3415: verify that an empty instructionFormat is handled as before
      rebase -i: generate the script via rebase--helper
      rebase -i: remove useless indentation
      rebase -i: do not invent onelines when expanding/collapsing SHA-1s
      rebase -i: also expand/collapse the SHA-1s via the rebase--helper
      t3404: relax rebase.missingCommitsCheck tests
      rebase -i: check for missing commits in the rebase--helper
      rebase -i: skip unnecessary picks using the rebase--helper
      t3415: test fixup with wrapped oneline
      rebase -i: rearrange fixup/squash lines using the rebase--helper
      Win32: simplify loading of DLL functions
      clang-format: adjust line break penalties

Johannes Sixt (1):
      sub-process: use child_process.args instead of child_process.argv

Jonathan Nieder (8):
      vcs-svn: remove more unused prototypes and declarations
      vcs-svn: remove custom mode constants
      vcs-svn: remove repo_delete wrapper function
      vcs-svn: move remaining repo_tree functions to fast_export.h
      pack: make packed_git_mru global a value instead of a pointer
      pathspec doc: parse_pathspec does not maintain references to args
      technical doc: add a design doc for hash function transition
      strbuf doc: reuse after strbuf_release is fine

Jonathan Tan (40):
      fsck: remove redundant parse_tree() invocation
      object: remove "used" field from struct object
      fsck: cleanup unused variable
      Documentation: migrate sub-process docs to header
      sub-process: refactor handshake to common function
      tests: ensure fsck fails on corrupt packfiles
      sha1_file: set whence in storage-specific info fn
      sha1_file: remove read_packed_sha1()
      diff: avoid redundantly clearing a flag
      diff: respect MIN_BLOCK_LENGTH for last block
      diff: define block by number of alphanumeric chars
      Doc: clarify that pack-objects makes packs, plural
      pack: move pack name-related functions
      pack: move static state variables
      pack: move pack_report()
      pack: move open_pack_index(), parse_pack_index()
      pack: move release_pack_memory()
      pack: move pack-closing functions
      pack: move use_pack()
      pack: move unuse_pack()
      pack: move add_packed_git()
      pack: move install_packed_git()
      pack: move {,re}prepare_packed_git and approximate_object_count
      pack: move unpack_object_header_buffer()
      pack: move get_size_from_delta()
      pack: move unpack_object_header()
      pack: move clear_delta_base_cache(), packed_object_info(), unpack_entry()
      pack: move nth_packed_object_{sha1,oid}
      pack: move check_pack_index_ptr(), nth_packed_object_offset()
      pack: move find_pack_entry_one(), is_pack_valid()
      pack: move find_sha1_pack()
      pack: move find_pack_entry() and make it global
      pack: move has_sha1_pack()
      pack: move has_pack_index()
      pack: move for_each_packed_object()
      Remove inadvertently added outgoing/packfile.h
      Add t/helper/test-write-cache to .gitignore
      git-compat-util: make UNLEAK less error-prone
      fast-export: do not copy from modified file
      oidmap: map with OID as key

Junio C Hamano (58):
      t1408: add a test of stale packed refs covered by loose refs
      clean.c: use designated initializer
      http.c: http.sslcert and http.sslkey are both pathnames
      connect: reject ssh hostname that begins with a dash
      Git 2.7.6
      Git 2.8.6
      Git 2.9.5
      Git 2.10.4
      Git 2.11.3
      Git 2.12.4
      Git 2.13.5
      Git 2.14.1
      Start post 2.14 cycle
      perl/Git.pm: typofix in a comment
      The first batch of topics after the 2.14 cycle
      diff: retire sane_truncate_fn
      progress: simplify "delayed" progress API
      The second batch post 2.14
      t4200: give us a clean slate after "rerere gc" tests
      t4200: make "rerere gc" test more robust
      t4200: gather "rerere gc" together
      t4200: parameterize "rerere gc" custom expiry test
      rerere: represent time duration in timestamp_t internally
      rerere: allow approxidate in gc.rerereResolved/gc.rerereUnresolved
      The third batch post 2.14
      Prepare for 2.14.2
      The fourth batch post 2.14
      The fifth batch post 2.14
      The sixth batch post 2.14
      RelNotes: further fixes for 2.14.2 from the master front
      The seventh batch post 2.14
      travis: dedent a few scripts that are indented overly deeply
      subprocess: loudly die when subprocess asks for an unsupported capability
      cvsserver: move safe_pipe_capture() to the main package
      cvsserver: use safe_pipe_capture for `constant commands` as well
      gc: call fscanf() with %<len>s, not %<len>c, when reading hostname
      The eighth batch for 2.15
      Git 2.10.5
      Git 2.11.4
      Git 2.12.5
      Git 2.13.6
      Git 2.14.2
      branch: fix "copy" to never touch HEAD
      merge-strategies: avoid implying that "-s theirs" exists
      The ninth batch for 2.15
      The tenth batch for 2.15
      The eleventh batch for 2.15
      The twelfth batch for 2.15
      Git 2.15-rc0
      Prepare for -rc1
      Git 2.15-rc1
      checkout doc: clarify command line args for "checkout paths" mode
      Crawling towards -rc2
      fetch doc: src side of refspec could be full SHA-1
      Preparing for rc2 continues
      branch doc: sprinkle a few commas for readability
      Prepare for 2.14.3
      Git 2.15-rc2

Kaartic Sivaraam (15):
      hook: cleanup script
      hook: name the positional variables
      hook: add sign-off using "interpret-trailers"
      hook: add a simple first example
      commit: check for empty message before the check for untouched template
      hook: use correct logical variable
      t3200: cleanup cruft of a test
      builtin/branch: stop supporting the "--set-upstream" option
      branch: quote branch/ref names to improve readability
      help: change a message to be more precise
      commit-template: change a message to be more intuitive
      t/README: fix typo and grammatically improve a sentence
      doc: camelCase the config variables to improve readability
      branch: change the error messages to be more meaningful
      setup: update error message to be more meaningful

Kevin Daudt (3):
      stash: prevent warning about null bytes in input
      doc/for-each-ref: consistently use '=' to between argument names and values
      doc/for-each-ref: explicitly specify option names

Kevin Willford (9):
      format-patch: have progress option while generating patches
      rebase: turn on progress option by default for format-patch
      commit: skip discarding the index if there is no pre-commit hook
      perf: add test for writing the index
      read-cache: fix memory leak in do_write_index
      read-cache: avoid allocating every ondisk entry when writing
      merge-recursive: fix memory leak
      merge-recursive: remove return value from get_files_dirs
      merge-recursive: change current file dir string_lists to hashmap

Lars Schneider (13):
      t0021: keep filter log files on comparison
      t0021: make debug log file name configurable
      t0021: write "OUT <size>" only on success
      convert: put the flags field before the flag itself for consistent style
      convert: move multiple file filter error handling to separate function
      convert: refactor capabilities negotiation
      convert: add "status=delayed" to filter process protocol
      convert: display progress for filtered objects that have been delayed
      travis-ci: move Travis CI code into dedicated scripts
      travis-ci: skip a branch build if equal tag is present
      travis-ci: fix "skip_branch_tip_with_tag()" string comparison
      entry.c: update cache entry only for existing files
      entry.c: check if file exists after checkout

Manav Rathi (1):
      docs: improve discoverability of exclude pathspec

Martin Koegler (2):
      diff-delta: fix encoding size that would not fit in "unsigned int"
      diff-delta: do not allow delta offset truncation

Martin Ågren (33):
      builtin.h: take over documentation from api-builtin.txt
      git.c: let builtins opt for handling `pager.foo` themselves
      git.c: provide setup_auto_pager()
      t7006: add tests for how git tag paginates
      tag: respect `pager.tag` in list-mode only
      tag: change default of `pager.tag` to "on"
      git.c: ignore pager.* when launching builtin as dashed external
      Doc/git-{push,send-pack}: correct --sign= to --signed=
      t5334: document that git push --signed=1 does not work
      config: introduce git_parse_maybe_bool_text
      config: make git_{config,parse}_maybe_bool equivalent
      treewide: deprecate git_config_maybe_bool, use git_parse_maybe_bool
      parse_decoration_style: drop unused argument `var`
      doc/interpret-trailers: fix "the this" typo
      convert: always initialize attr_action in convert_attrs
      pack-objects: take lock before accessing `remaining`
      strbuf_setlen: don't write to strbuf_slopbuf
      ThreadSanitizer: add suppressions
      Documentation/user-manual: update outdated example output
      treewide: correct several "up-to-date" to "up to date"
      pkt-line: re-'static'-ify buffer in packet_write_fmt_1()
      config: remove git_config_maybe_bool
      refs/files-backend: add longer-scoped copy of string to list
      refs/files-backend: fix memory leak in lock_ref_for_update
      refs/files-backend: correct return value in lock_ref_for_update
      refs/files-backend: add `refname`, not "HEAD", to list
      builtin/commit: fix memory leak in `prepare_index()`
      commit: fix memory leak in `reduce_heads()`
      leak_pending: use `object_array_clear()`, not `free()`
      object_array: use `object_array_clear()`, not `free()`
      object_array: add and use `object_array_pop()`
      pack-bitmap[-write]: use `object_array_clear()`, don't leak
      builtin/: add UNLEAKs

Matthieu Moy (2):
      send-email: fix garbage removal after address
      send-email: don't use Mail::Address, even if available

Max Kirillov (2):
      describe: fix matching to actually match all patterns
      describe: teach --match to handle branches and remotes

Michael Forney (1):
      scripts: use "git foo" not "git-foo"

Michael Haggerty (77):
      add_packed_ref(): teach function to overwrite existing refs
      packed_ref_store: new struct
      packed_ref_store: move `packed_refs_path` here
      packed_ref_store: move `packed_refs_lock` member here
      clear_packed_ref_cache(): take a `packed_ref_store *` parameter
      validate_packed_ref_cache(): take a `packed_ref_store *` parameter
      get_packed_ref_cache(): take a `packed_ref_store *` parameter
      get_packed_refs(): take a `packed_ref_store *` parameter
      add_packed_ref(): take a `packed_ref_store *` parameter
      lock_packed_refs(): take a `packed_ref_store *` parameter
      commit_packed_refs(): take a `packed_ref_store *` parameter
      rollback_packed_refs(): take a `packed_ref_store *` parameter
      get_packed_ref(): take a `packed_ref_store *` parameter
      repack_without_refs(): take a `packed_ref_store *` parameter
      packed_peel_ref(): new function, extracted from `files_peel_ref()`
      packed_ref_store: support iteration
      packed_read_raw_ref(): new function, replacing `resolve_packed_ref()`
      packed-backend: new module for handling packed references
      packed_ref_store: make class into a subclass of `ref_store`
      commit_packed_refs(): report errors rather than dying
      commit_packed_refs(): use a staging file separate from the lockfile
      packed_refs_lock(): function renamed from lock_packed_refs()
      packed_refs_lock(): report errors via a `struct strbuf *err`
      packed_refs_unlock(), packed_refs_is_locked(): new functions
      clear_packed_ref_cache(): don't protest if the lock is held
      commit_packed_refs(): remove call to `packed_refs_unlock()`
      repack_without_refs(): don't lock or unlock the packed refs
      t3210: add some tests of bogus packed-refs file contents
      read_packed_refs(): die if `packed-refs` contains bogus data
      packed_ref_store: handle a packed-refs file that is a symlink
      files-backend: cheapen refname_available check when locking refs
      refs: retry acquiring reference locks for 100ms
      notes: make GET_NIBBLE macro more robust
      load_subtree(): remove unnecessary conditional
      load_subtree(): reduce the scope of some local variables
      load_subtree(): fix incorrect comment
      load_subtree(): separate logic for internal vs. terminal entries
      load_subtree(): check earlier whether an internal node is a tree entry
      load_subtree(): only consider blobs to be potential notes
      get_oid_hex_segment(): return 0 on success
      load_subtree(): combine some common code
      get_oid_hex_segment(): don't pad the rest of `oid`
      hex_to_bytes(): simpler replacement for `get_oid_hex_segment()`
      load_subtree(): declare some variables to be `size_t`
      load_subtree(): check that `prefix_len` is in the expected range
      packed-backend: don't adjust the reference count on lock/unlock
      struct ref_transaction: add a place for backends to store data
      packed_ref_store: implement reference transactions
      packed_delete_refs(): implement method
      files_pack_refs(): use a reference transaction to write packed refs
      prune_refs(): also free the linked list
      files_initial_transaction_commit(): use a transaction for packed refs
      t1404: demonstrate two problems with reference transactions
      files_ref_store: use a transaction to update packed refs
      packed-backend: rip out some now-unused code
      files_transaction_finish(): delete reflogs before references
      ref_iterator: keep track of whether the iterator output is ordered
      packed_ref_cache: add a backlink to the associated `packed_ref_store`
      die_unterminated_line(), die_invalid_line(): new functions
      read_packed_refs(): use mmap to read the `packed-refs` file
      read_packed_refs(): only check for a header at the top of the file
      read_packed_refs(): make parsing of the header line more robust
      for_each_string_list_item: avoid undefined behavior for empty list
      read_packed_refs(): read references with minimal copying
      packed_ref_cache: remember the file-wide peeling state
      mmapped_ref_iterator: add iterator over a packed-refs file
      mmapped_ref_iterator_advance(): no peeled value for broken refs
      packed-backend.c: reorder some definitions
      packed_ref_cache: keep the `packed-refs` file mmapped if possible
      read_packed_refs(): ensure that references are ordered when read
      packed_ref_iterator_begin(): iterate using `mmapped_ref_iterator`
      packed_read_raw_ref(): read the reference from the mmapped buffer
      ref_store: implement `refs_peel_ref()` generically
      packed_ref_store: get rid of the `ref_cache` entirely
      ref_cache: remove support for storing peeled values
      mmapped_ref_iterator: inline into `packed_ref_iterator`
      packed-backend.c: rename a bunch of things and update comments

Michael J Gruber (11):
      Documentation: use proper wording for ref format strings
      Documentation/git-for-each-ref: clarify peeling of tags for --format
      Documentation/git-merge: explain --continue
      merge: clarify call chain
      merge: split write_merge_state in two
      merge: save merge state earlier
      name-rev: change ULONG_MAX to TIME_MAX
      t7004: move limited stack prereq to test-lib
      t6120: test name-rev --all and --stdin
      t6120: clean up state after breaking repo
      t6120: test describe and name-rev with deep repos

Nguyễn Thái Ngọc Duy (17):
      branch: fix branch renaming not updating HEADs correctly
      revision.h: new flag in struct rev_info wrt. worktree-related refs
      refs.c: use is_dir_sep() in resolve_gitlink_ref()
      revision.c: refactor add_index_objects_to_pending()
      revision.c: --indexed-objects add objects from all worktrees
      refs.c: refactor get_submodule_ref_store(), share common free block
      refs: move submodule slash stripping code to get_submodule_ref_store
      refs: add refs_head_ref()
      revision.c: use refs_for_each*() instead of for_each_*_submodule()
      refs.c: move for_each_remote_ref_submodule() to submodule.c
      refs: remove dead for_each_*_submodule()
      revision.c: --all adds HEAD from all worktrees
      files-backend: make reflog iterator go through per-worktree reflog
      revision.c: --reflog add HEAD reflog from all worktrees
      rev-list: expose and document --single-worktree
      refs.c: remove fallback-to-main-store code get_submodule_ref_store()
      refs.c: reindent get_submodule_ref_store()

Nicolas Morey-Chaisemartin (7):
      stash: clean untracked files before reset
      pull: fix cli and config option parsing order
      pull: honor submodule.recurse config option
      imap-send: return with error if curl failed
      imap-send: add wrapper to get server credentials if needed
      imap_send: setup_curl: retreive credentials if not set in config file
      imap-send: use curl by default when possible

Paolo Bonzini (4):
      trailers: export action enums and corresponding lookup functions
      trailers: introduce struct new_trailer_item
      interpret-trailers: add options for actions
      interpret-trailers: fix documentation typo

Patryk Obara (10):
      sha1_file: fix definition of null_sha1
      commit: replace the raw buffer with strbuf in read_graft_line
      commit: allocate array using object_id size
      commit: rewrite read_graft_line
      builtin/hash-object: convert to struct object_id
      read-cache: convert to struct object_id
      sha1_file: convert index_path to struct object_id
      sha1_file: convert index_fd to struct object_id
      sha1_file: convert hash_sha1_file_literally to struct object_id
      sha1_file: convert index_stream to struct object_id

Philip Oakley (4):
      git-gui: remove duplicate entries from .gitconfig's gui.recentrepo
      git gui: cope with duplicates in _get_recentrepo
      git gui: de-dup selected repo from recentrepo history
      git gui: allow for a long recentrepo list

Phillip Wood (7):
      am: remember --rerere-autoupdate setting
      rebase: honor --rerere-autoupdate
      rebase -i: honor --rerere-autoupdate
      t3504: use test_commit
      cherry-pick/revert: remember --rerere-autoupdate
      cherry-pick/revert: reject --rerere-autoupdate when continuing
      am: fix signoff when other trailers are present

Ralf Thielow (2):
      sequencer.c: fix and unify error messages in rearrange_squash()
      sequencer.c: unify an error message

Raman Gupta (1):
      contrib/rerere-train: optionally overwrite existing resolutions

Ramsay Jones (9):
      credential-cache: interpret an ECONNRESET as an EOF
      builtin/add: add detail to a 'cannot chmod' error message
      test-lib: don't use ulimit in test prerequisites on cygwin
      test-lib: use more compact expression in PIPE prerequisite
      t9010-*.sh: skip all tests if the PIPE prereq is missing
      git-compat-util.h: xsize_t() - avoid -Wsign-compare warnings
      commit-slab.h: avoid -Wsign-compare warnings
      cache.h: hex2chr() - avoid -Wsign-compare warnings
      ALLOC_GROW: avoid -Wsign-compare warnings

Randall S. Becker (1):
      poll.c: always set revents, even if to zero

René Scharfe (81):
      tree-diff: don't access hash of NULL object_id pointer
      notes: don't access hash of NULL object_id pointer
      receive-pack: don't access hash of NULL object_id pointer
      bswap: convert to unsigned before shifting in get_be32
      bswap: convert get_be16, get_be32 and put_be32 to inline functions
      add MOVE_ARRAY
      use MOVE_ARRAY
      apply: use COPY_ARRAY and MOVE_ARRAY in update_image()
      ls-files: don't try to prune an empty index
      dir: support platforms that require aligned reads
      pack-objects: remove unnecessary NULL check
      t0001: skip test with restrictive permissions if getpwd(3) respects them
      test-path-utils: handle const parameter of basename and dirname
      t3700: fix broken test under !POSIXPERM
      t4062: use less than 256 repetitions in regex
      sha1_file: avoid comparison if no packed hash matches the first byte
      apply: remove prefix_length member from apply_state
      merge: use skip_prefix()
      win32: plug memory leak on realloc() failure in syslog()
      strbuf: clear errno before calling getdelim(3)
      fsck: free buffers on error in fsck_obj()
      sha1_file: release delta_stack on error in unpack_entry()
      tree-walk: convert fill_tree_descriptor() to object_id
      t1002: stop using sum(1)
      t5001: add tests for export-ignore attributes and exclude pathspecs
      archive: factor out helper functions for handling attributes
      archive: don't queue excluded directories
      commit: remove unused inline function single_parent()
      apply: check date of potential epoch timestamps first
      apply: remove epoch date from regex
      am: release strbufs after use in detect_patch_format()
      am: release strbuf on error return in hg_patch_to_mail()
      am: release strbuf after use in safe_to_abort()
      check-ref-format: release strbuf after use in check_ref_format_branch()
      clean: release strbuf after use in remove_dirs()
      clone: release strbuf after use in remove_junk()
      commit: release strbuf on error return in commit_tree_extended()
      connect: release strbuf on error return in git_connect()
      convert: release strbuf on error return in filter_buffer_or_fd()
      diff: release strbuf after use in diff_summary()
      diff: release strbuf after use in show_rename_copy()
      diff: release strbuf after use in show_stats()
      help: release strbuf on error return in exec_man_konqueror()
      help: release strbuf on error return in exec_man_man()
      help: release strbuf on error return in exec_woman_emacs()
      mailinfo: release strbuf after use in handle_from()
      mailinfo: release strbuf on error return in handle_boundary()
      merge: release strbuf after use in save_state()
      merge: release strbuf after use in write_merge_heads()
      notes: release strbuf after use in notes_copy_from_stdin()
      refs: release strbuf on error return in write_pseudoref()
      remote: release strbuf after use in read_remote_branches()
      remote: release strbuf after use in migrate_file()
      remote: release strbuf after use in set_url()
      send-pack: release strbuf on error return in send_pack()
      sha1_file: release strbuf on error return in index_path()
      shortlog: release strbuf after use in insert_one_record()
      sequencer: release strbuf after use in save_head()
      transport-helper: release strbuf after use in process_connect_service()
      userdiff: release strbuf after use in userdiff_get_textconv()
      utf8: release strbuf on error return in strbuf_utf8_replace()
      vcs-svn: release strbuf after use in end_revision()
      wt-status: release strbuf after use in read_rebase_todolist()
      wt-status: release strbuf after use in wt_longstatus_print_tracking()
      archive: don't add empty directories to archives
      refs: make sha1 output parameter of refs_resolve_ref_unsafe() optional
      refs: pass NULL to refs_resolve_ref_unsafe() if hash is not needed
      refs: pass NULL to resolve_ref_unsafe() if hash is not needed
      mailinfo: don't decode invalid =XY quoted-printable sequences
      refs: pass NULL to refs_resolve_refdup() if hash is not needed
      refs: pass NULL to resolve_refdup() if hash is not needed
      coccinelle: remove parentheses that become unnecessary
      path: use strbuf_add_real_path()
      use strbuf_addstr() for adding strings to strbufs
      graph: use strbuf_addchars() to add spaces
      tag: avoid NULL pointer arithmetic
      repository: use FREE_AND_NULL
      run-command: use ALLOC_ARRAY
      test-stringlist: avoid buffer underrun when sorting nothing
      fsck: handle NULL return of lookup_blob() and lookup_tree()
      .mailmap: normalize name for René Scharfe

Ross Kabus (1):
      commit-tree: do not complete line in -F input

Sahil Dua (2):
      config: create a function to format section headers
      branch: add a --copy (-c) option to go with --move (-m)

Santiago Torres (1):
      t: lib-gpg: flush gpg agent on startup

Stefan Beller (51):
      diff.c: readability fix
      diff.c: move line ending check into emit_hunk_header
      diff.c: factor out diff_flush_patch_all_file_pairs
      diff.c: introduce emit_diff_symbol
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_MARKER
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_FRAGINFO
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_NO_LF_EOF
      diff.c: migrate emit_line_checked to use emit_diff_symbol
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_WORDS[_PORCELAIN]
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_INCOMPLETE
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_FILEPAIR_{PLUS, MINUS}
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_HEADER
      diff.c: emit_diff_symbol learns about DIFF_SYMBOL_BINARY_FILES
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_REWRITE_DIFF
      submodule.c: migrate diff output to use emit_diff_symbol
      diff.c: convert emit_binary_diff_body to use emit_diff_symbol
      diff.c: convert show_stats to use emit_diff_symbol
      diff.c: convert word diffing to use emit_diff_symbol
      diff.c: emit_diff_symbol learns about DIFF_SYMBOL_STAT_SEP
      diff.c: emit_diff_symbol learns about DIFF_SYMBOL_SUMMARY
      diff.c: buffer all output if asked to
      diff.c: color moved lines differently
      diff.c: color moved lines differently, plain mode
      diff.c: add dimming to moved line detection
      diff: document the new --color-moved setting
      attr.c: drop hashmap_cmp_fn cast
      builtin/difftool.c: drop hashmap_cmp_fn cast
      builtin/describe: drop hashmap_cmp_fn cast
      config.c: drop hashmap_cmp_fn cast
      convert/sub-process: drop cast to hashmap_cmp_fn
      patch-ids.c: drop hashmap_cmp_fn cast
      remote.c: drop hashmap_cmp_fn cast
      submodule-config.c: drop hashmap_cmp_fn cast
      name-hash.c: drop hashmap_cmp_fn cast
      t/helper/test-hashmap: use custom data instead of duplicate cmp functions
      commit: convert lookup_commit_graft to struct object_id
      tag: convert gpg_verify_tag to use struct object_id
      t8008: rely on rev-parse'd HEAD instead of sha1 value
      t1200: remove t1200-tutorial.sh
      sha1_file: make read_info_alternates static
      submodule.sh: remove unused variable
      builtin/merge: honor commit-msg hook for merges
      push, fetch: error out for submodule entries not pointing to commits
      replace-objects: evaluate replacement refs without using the object store
      Documentation/githooks: mention merge in commit-msg hook
      Documentation/config: clarify the meaning of submodule.<name>.update
      t7406: submodule.<name>.update command must not be run from .gitmodules
      diff: correct newline in summary for renamed files
      submodule: correct error message for missing commits
      branch: reset instead of release a strbuf
      tests: fix diff order arguments in test_cmp

Stephan Beyer (1):
      clang-format: add a comment about the meaning/status of the

Takashi Iwai (2):
      sha1dc: build git plumbing code more explicitly
      sha1dc: allow building with the external sha1dc library

Taylor Blau (8):
      pretty.c: delimit "%(trailers)" arguments with ","
      t4205: unfold across multiple lines
      doc: 'trailers' is the preferred way to format trailers
      doc: use "`<literal>`"-style quoting for literal strings
      t6300: refactor %(trailers) tests
      ref-filter.c: use trailer_opts to format trailers
      ref-filter.c: parse trailers arguments with %(contents) atom
      ref-filter.c: pass empty-string as NULL to atom parsers

Thomas Braun (1):
      completion: add --broken and --dirty to describe

Thomas Gummerer (3):
      read-cache: fix index corruption with index v4
      refs: strip out not allowed flags from ref_transaction_update
      http-push: fix construction of hex value from path

Todd Zullinger (1):
      api-argv-array.txt: remove broken link to string-list API

Tom G. Christensen (2):
      http: fix handling of missing CURLPROTO_*
      http: use a feature check to enable GSSAPI delegation control

Torsten Bögershausen (3):
      convert: add SAFE_CRLF_KEEP_CRLF
      apply: file commited with CRLF should roundtrip diff and apply
      test-lint: echo -e (or -E) is not portable

Urs Thuermann (1):
      git svn fetch: Create correct commit timestamp when using --localtime

W. Trevor King (1):
      Documentation/merge-options.txt: describe -S/--gpg-sign for 'pull'

William Duclot (1):
      rebase: make resolve message clearer for inexperienced users

brian m. carlson (14):
      builtin/fsck: convert remaining caller of get_sha1 to object_id
      builtin/merge-tree: convert remaining caller of get_sha1 to object_id
      submodule: convert submodule config lookup to use object_id
      remote: convert struct push_cas to struct object_id
      sequencer: convert to struct object_id
      builtin/update_ref: convert to struct object_id
      bisect: convert bisect_checkout to struct object_id
      builtin/unpack-file: convert to struct object_id
      Convert remaining callers of get_sha1 to get_oid.
      sha1_name: convert get_sha1* to get_oid*
      sha1_name: convert GET_SHA1* flags to GET_OID*
      sha1_name: convert uses of 40 to GIT_SHA1_HEXSZ
      vcs-svn: remove unused prototypes
      vcs-svn: rename repo functions to "svn_repo"

joernchen (1):
      cvsserver: use safe_pipe_capture instead of backticks

Ævar Arnfjörð Bjarmason (2):
      branch: add test for -m renaming multiple config sections
      tests: don't give unportable ">" to "test" built-in, use -gt

Øystein Walle (1):
      rev-parse: rev-parse: add --is-shallow-repository

Łukasz Gryglicki (1):
      merge: add a --signoff flag


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.15.0-rc1
@ 2017-10-11  6:35  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2017-10-11  6:35 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel

A release candidate Git v2.15.0-rc1 is now available for testing
at the usual places.  It is comprised of 721 non-merge commits
since v2.14.0, contributed by 72 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.15.0-rc1' 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.14.0 are as follows.
Welcome to the Git development community!

  Ann T Ropea, Daniel Watkins, Derrick Stolee, Dimitrios
  Christidis, Eric Rannaud, Evan Zacks, Hielke Christian Braun,
  Ian Campbell, Ilya Kantor, Jameson Miller, Job Snijders, Joel
  Teichroeb, joernchen, Łukasz Gryglicki, Manav Rathi, Martin
  Ågren, Michael Forney, Patryk Obara, Randall S. Becker, Ross
  Kabus, Taylor Blau, and Urs Thuermann.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Andreas Heiduk,
  Anthony Sottile, Ben Boeckel, Brandon Casey, Brandon Williams,
  brian m. carlson, Christian Couder, Eric Blake, Han-Wen Nienhuys,
  Heiko Voigt, Jean-Noel Avila, Jeff Hostetler, Jeff King, Johannes
  Schindelin, Johannes Sixt, Jonathan Nieder, Jonathan Tan,
  Junio C Hamano, Kaartic Sivaraam, Kevin Daudt, Kevin Willford,
  Lars Schneider, Martin Koegler, Matthieu Moy, Max Kirillov,
  Michael Haggerty, Michael J Gruber, Nguyễn Thái Ngọc Duy,
  Nicolas Morey-Chaisemartin, Øystein Walle, Paolo Bonzini,
  Pat Thoyts, Philip Oakley, Phillip Wood, Raman Gupta, Ramsay
  Jones, René Scharfe, Sahil Dua, Santiago Torres, Stefan Beller,
  Stephan Beyer, Takashi Iwai, Thomas Braun, Thomas Gummerer,
  Todd Zullinger, Tom G. Christensen, Torsten Bögershausen,
  and William Duclot.

----------------------------------------------------------------

Git 2.15 Release Notes (draft)
==============================

Backward compatibility notes and other notable changes.

 * Use of an empty string as a pathspec element that is used for
   'everything matches' is still warned and Git asks users to use a
   more explicit '.' for that instead.  The hope is that existing
   users will not mind this change, and eventually the warning can be
   turned into a hard error, upgrading the deprecation into removal of
   this (mis)feature.  That is now scheduled to happen in Git v2.16,
   the next major release after this one.

 * Git now avoids blindly falling back to ".git" when the setup
   sequence said we are _not_ in Git repository.  A corner case that
   happens to work right now may be broken by a call to BUG().
   We've tried hard to locate such cases and fixed them, but there
   might still be cases that need to be addressed--bug reports are
   greatly appreciated.

 * "branch --set-upstream" that has been deprecated in Git 1.8 has
   finally been retired.


Updates since v2.14
-------------------

UI, Workflows & Features

 * An example that is now obsolete has been removed from a sample hook,
   and an old example in it that added a sign-off manually has been
   improved to use the interpret-trailers command.

 * The advice message given when "git rebase" stops for conflicting
   changes has been improved.

 * The "rerere-train" script (in contrib/) learned the "--overwrite"
   option to allow overwriting existing recorded resolutions.

 * "git contacts" (in contrib/) now lists the address on the
   "Reported-by:" trailer to its output, in addition to those on
   S-o-b: and other trailers, to make it easier to notify (and thank)
   the original bug reporter.

 * "git rebase", especially when it is run by mistake and ends up
   trying to replay many changes, spent long time in silence.  The
   command has been taught to show progress report when it spends
   long time preparing these many changes to replay (which would give
   the user a chance to abort with ^C).

 * "git merge" learned a "--signoff" option to add the Signed-off-by:
   trailer with the committer's name.

 * "git diff" learned to optionally paint new lines that are the same
   as deleted lines elsewhere differently from genuinely new lines.

 * "git interpret-trailers" learned to take the trailer specifications
   from the command line that overrides the configured values.

 * "git interpret-trailers" has been taught a "--parse" and a few
   other options to make it easier for scripts to grab existing
   trailer lines from a commit log message.

 * The "--format=%(trailers)" option "git log" and its friends take
   learned to take the 'unfold' and 'only' modifiers to normalize its
   output, e.g. "git log --format=%(trailers:only,unfold)".

 * "gitweb" shows a link to visit the 'raw' contents of blbos in the
   history overview page.

 * "[gc] rerereResolved = 5.days" used to be invalid, as the variable
   is defined to take an integer counting the number of days.  It now
   is allowed.

 * The code to acquire a lock on a reference (e.g. while accepting a
   push from a client) used to immediately fail when the reference is
   already locked---now it waits for a very short while and retries,
   which can make it succeed if the lock holder was holding it during
   a read-only operation.

 * "branch --set-upstream" that has been deprecated in Git 1.8 has
   finally been retired.

 * The codepath to call external process filter for smudge/clean
   operation learned to show the progress meter.

 * "git rev-parse" learned "--is-shallow-repository", that is to be
   used in a way similar to existing "--is-bare-repository" and
   friends.

 * "git describe --match <pattern>" has been taught to play well with
   the "--all" option.

 * "git branch" learned "-c/-C" to create a new branch by copying an
   existing one.

 * Some commands (most notably "git status") makes an opportunistic
   update when performing a read-only operation to help optimize later
   operations in the same repository.  The new "--no-optional-locks"
   option can be passed to Git to disable them.

 * "git for-each-ref --format=..." learned a new format element,
   %(trailers), to show only the commit log trailer part of the log
   message.


Performance, Internal Implementation, Development Support etc.

 * Conversion from uchar[20] to struct object_id continues.

 * Start using selected c99 constructs in small, stable and
   essentialpart of the system to catch people who care about
   older compilers that do not grok them.

 * The filter-process interface learned to allow a process with long
   latency give a "delayed" response.

 * Many uses of comparision callback function the hashmap API uses
   cast the callback function type when registering it to
   hashmap_init(), which defeats the compile time type checking when
   the callback interface changes (e.g. gaining more parameters).
   The callback implementations have been updated to take "void *"
   pointers and cast them to the type they expect instead.

 * Because recent Git for Windows do come with a real msgfmt, the
   build procedure for git-gui has been updated to use it instead of a
   hand-rolled substitute.

 * "git grep --recurse-submodules" has been reworked to give a more
   consistent output across submodule boundary (and do its thing
   without having to fork a separate process).

 * A helper function to read a single whole line into strbuf
   mistakenly triggered OOM error at EOF under certain conditions,
   which has been fixed.
   (merge 642956cf45 rs/strbuf-getwholeline-fix later to maint).

 * The "ref-store" code reorganization continues.

 * "git commit" used to discard the index and re-read from the filesystem
   just in case the pre-commit hook has updated it in the middle; this
   has been optimized out when we know we do not run the pre-commit hook.
   (merge 680ee550d7 kw/commit-keep-index-when-pre-commit-is-not-run later to maint).

 * Updates to the HTTP layer we made recently unconditionally used
   features of libCurl without checking the existence of them, causing
   compilation errors, which has been fixed.  Also migrate the code to
   check feature macros, not version numbers, to cope better with
   libCurl that vendor ships with backported features.

 * The API to start showing progress meter after a short delay has
   been simplified.
   (merge 8aade107dd jc/simplify-progress later to maint).

 * Code clean-up to avoid mixing values read from the .gitmodules file
   and values read from the .git/config file.

 * We used to spend more than necessary cycles allocating and freeing
   piece of memory while writing each index entry out.  This has been
   optimized.

 * Platforms that ship with a separate sha1 with collision detection
   library can link to it instead of using the copy we ship as part of
   our source tree.

 * Code around "notes" have been cleaned up.
   (merge 3964281524 mh/notes-cleanup later to maint).

 * The long-standing rule that an in-core lockfile instance, once it
   is used, must not be freed, has been lifted and the lockfile and
   tempfile APIs have been updated to reduce the chance of programming
   errors.

 * Our hashmap implementation in hashmap.[ch] is not thread-safe when
   adding a new item needs to expand the hashtable by rehashing; add
   an API to disable the automatic rehashing to work it around.

 * Many of our programs consider that it is OK to release dynamic
   storage that is used throughout the life of the program by simply
   exiting, but this makes it harder to leak detection tools to avoid
   reporting false positives.  Plug many existing leaks and introduce
   a mechanism for developers to mark that the region of memory
   pointed by a pointer is not lost/leaking to help these tools.

 * As "git commit" to conclude a conflicted "git merge" honors the
   commit-msg hook, "git merge" that records a merge commit that
   cleanly auto-merges should, but it didn't.

 * The codepath for "git merge-recursive" has been cleaned up.

 * Many leaks of strbuf have been fixed.

 * "git imap-send" has our own implementation of the protocol and also
   can use more recent libCurl with the imap protocol support.  Update
   the latter so that it can use the credential subsystem, and then
   make it the default option to use, so that we can eventually
   deprecate and remove the former.

 * "make style" runs git-clang-format to help developers by pointing
   out coding style issues.

 * A test to demonstrate "git mv" failing to adjust nested submodules
   has been added.
   (merge c514167df2 hv/mv-nested-submodules-test later to maint).

 * On Cygwin, "ulimit -s" does not report failure but it does not work
   at all, which causes an unexpected success of some tests that
   expect failures under a limited stack situation.  This has been
   fixed.

 * Many codepaths have been updated to squelch -Wimplicit-fallthrough
   warnings from Gcc 7 (which is a good code hygiene).

 * Add a helper for DLL loading in anticipation for its need in a
   future topic RSN.

 * "git status --ignored", when noticing that a directory without any
   tracked path is ignored, still enumerated all the ignored paths in
   the directory, which is unnecessary.  The codepath has been
   optimized to avoid this overhead.

 * The final batch to "git rebase -i" updates to move more code from
   the shell script to C has been merged.

 * Operations that do not touch (majority of) packed refs have been
   optimized by making accesses to packed-refs file lazy; we no longer
   pre-parse everything, and an access to a single ref in the
   packed-refs does not touch majority of irrelevant refs, either.

 * Add comment to clarify that the style file is meant to be used with
   clang-5 and the rules are still work in progress.

 * Many variables that points at a region of memory that will live
   throughout the life of the program have been marked with UNLEAK
   marker to help the leak checkers concentrate on real leaks..

 * Plans for weaning us off of SHA-1 has been documented.

 * A new "oidmap" API has been introduced and oidset API has been
   rewritten to use it.


Also contains various documentation updates and code clean-ups.


Fixes since v2.14
-----------------

 * "%C(color name)" in the pretty print format always produced ANSI
   color escape codes, which was an early design mistake.  They now
   honor the configuration (e.g. "color.ui = never") and also tty-ness
   of the output medium.

 * The http.{sslkey,sslCert} configuration variables are to be
   interpreted as a pathname that honors "~[username]/" prefix, but
   weren't, which has been fixed.

 * Numerous bugs in walking of reflogs via "log -g" and friends have
   been fixed.

 * "git commit" when seeing an totally empty message said "you did not
   edit the message", which is clearly wrong.  The message has been
   corrected.

 * When a directory is not readable, "gitweb" fails to build the
   project list.  Work this around by skipping such a directory.

 * Some versions of GnuPG fails to kill gpg-agent it auto-spawned
   and such a left-over agent can interfere with a test.  Work it
   around by attempting to kill one before starting a new test.

 * A recently added test for the "credential-cache" helper revealed
   that EOF detection done around the time the connection to the cache
   daemon is torn down were flaky.  This was fixed by reacting to
   ECONNRESET and behaving as if we got an EOF.

 * "git log --tag=no-such-tag" showed log starting from HEAD, which
   has been fixed---it now shows nothing.

 * The "tag.pager" configuration variable was useless for those who
   actually create tag objects, as it interfered with the use of an
   editor.  A new mechanism has been introduced for commands to enable
   pager depending on what operation is being carried out to fix this,
   and then "git tag -l" is made to run pager by default.

 * "git push --recurse-submodules $there HEAD:$target" was not
   propagated down to the submodules, but now it is.

 * Commands like "git rebase" accepted the --rerere-autoupdate option
   from the command line, but did not always use it.  This has been
   fixed.

 * "git clone --recurse-submodules --quiet" did not pass the quiet
   option down to submodules.

 * Test portability fix for OBSD.

 * Portability fix for OBSD.

 * "git am -s" has been taught that some input may end with a trailer
   block that is not Signed-off-by: and it should refrain from adding
   an extra blank line before adding a new sign-off in such a case.

 * "git svn" used with "--localtime" option did not compute the tz
   offset for the timestamp in question and instead always used the
   current time, which has been corrected.

 * Memory leak in an error codepath has been plugged.

 * "git stash -u" used the contents of the committed version of the
   ".gitignore" file to decide which paths are ignored, even when the
   file has local changes.  The command has been taught to instead use
   the locally modified contents.

 * bash 4.4 or newer gave a warning on NUL byte in command
   substitution done in "git stash"; this has been squelched.

 * "git grep -L" and "git grep --quiet -L" reported different exit
   codes; this has been corrected.

 * When handshake with a subprocess filter notices that the process
   asked for an unknown capability, Git did not report what program
   the offending subprocess was running.  This has been corrected.

 * "git apply" that is used as a better "patch -p1" failed to apply a
   taken from a file with CRLF line endings to a file with CRLF line
   endings.  The root cause was because it misused convert_to_git()
   that tried to do "safe-crlf" processing by looking at the index
   entry at the same path, which is a nonsense---in that mode, "apply"
   is not working on the data in (or derived from) the index at all.
   This has been fixed.

 * Killing "git merge --edit" before the editor returns control left
   the repository in a state with MERGE_MSG but without MERGE_HEAD,
   which incorrectly tells the subsequent "git commit" that there was
   a squash merge in progress.  This has been fixed.

 * "git archive" did not work well with pathspecs and the
   export-ignore attribute.

 * In addition to "cc: <a@dd.re.ss> # cruft", "cc: a@dd.re.ss # cruft"
   was taught to "git send-email" as a valid way to tell it that it
   needs to also send a carbon copy to <a@dd.re.ss> in the trailer
   section.
   (merge cc90750677 mm/send-email-cc-cruft later to maint).

 * "git branch -M a b" while on a branch that is completely unrelated
   to either branch a or branch b misbehaved when multiple worktree
   was in use.  This has been fixed.
   (merge 31824d180d nd/worktree-kill-parse-ref later to maint).

 * "git gc" and friends when multiple worktrees are used off of a
   single repository did not consider the index and per-worktree refs
   of other worktrees as the root for reachability traversal, making
   objects that are in use only in other worktrees to be subject to
   garbage collection.

 * A regression to "gitk --bisect" by a recent update has been fixed.
   (merge 1d0538e486 mh/packed-ref-store-prep later to maint).

 * "git -c submodule.recurse=yes pull" did not work as if the
   "--recurse-submodules" option was given from the command line.
   This has been corrected.

 * Unlike "git commit-tree < file", "git commit-tree -F file" did not
   pass the contents of the file verbatim and instead completed an
   incomplete line at the end, if exists.  The latter has been updated
   to match the behaviour of the former.
   (merge c818e74332 rk/commit-tree-make-F-verbatim later to maint).

 * Many codepaths did not diagnose write failures correctly when disks
   go full, due to their misuse of write_in_full() helper function,
   which have been corrected.
   (merge f48ecd38cb jk/write-in-full-fix later to maint).

 * "git help co" now says "co is aliased to ...", not "git co is".
   (merge b3a8076e0d ks/help-alias-label later to maint).

 * "git archive", especially when used with pathspec, stored an empty
   directory in its output, even though Git itself never does so.
   This has been fixed.
   (merge 4318094047 rs/archive-excluded-directory later to maint).

 * API error-proofing which happens to also squelch warnings from GCC.
   (merge c788c54cde tg/refs-allowed-flags later to maint).

 * The explanation of the cut-line in the commit log editor has been
   slightly tweaked.
   (merge 8c4b1a3593 ks/commit-do-not-touch-cut-line later to maint).

 * "git gc" tries to avoid running two instances at the same time by
   reading and writing pid/host from and to a lock file; it used to
   use an incorrect fscanf() format when reading, which has been
   corrected.
   (merge afe2fab72c aw/gc-lockfile-fscanf-fix later to maint).

 * The scripts to drive TravisCI has been reorganized and then an
   optimization to avoid spending cycles on a branch whose tip is
   tagged has been implemented.
   (merge 8376eb4a8f ls/travis-scriptify later to maint).

 * The test linter has been taught that we do not like "echo -e".
   (merge 1a6d46895d tb/test-lint-echo-e later to maint).

 * Code cmp.std.c nitpick.
   (merge ac7da78ede mh/for-each-string-list-item-empty-fix later to maint).

 * A regression fix for 2.11 that made the code to read the list of
   alternate object stores overrun the end of the string.
   (merge f0f7bebef7 jk/info-alternates-fix later to maint).

 * "git describe --match" learned to take multiple patterns in v2.13
   series, but the feature ignored the patterns after the first one
   and did not work at all.  This has been fixed.
   (merge da769d2986 jk/describe-omit-some-refs later to maint).

 * "git filter-branch" cannot reproduce a history with a tag without
   the tagger field, which only ancient versions of Git allowed to be
   created.  This has been corrected.
   (merge b2c1ca6b4b ic/fix-filter-branch-to-handle-tag-without-tagger later to maint).

 * "git cat-file --textconv" started segfaulting recently, which
   has been corrected.
   (merge cc0ea7c9e5 jk/diff-blob later to maint).

 * The built-in pattern to detect the "function header" for HTML did
   not match <H1>..<H6> elements without any attributes, which has
   been fixed.
   (merge 9c03caca2c ik/userdiff-html-h-element-fix later to maint).

 * "git mailinfo" was loose in decoding quoted printable and produced
   garbage when the two letters after the equal sign are not
   hexadecimal.  This has been fixed.
   (merge c8cf423eab rs/mailinfo-qp-decode-fix later to maint).

 * The machinery to create xdelta used in pack files received the
   sizes of the data in size_t, but lost the higher bits of them by
   storing them in "unsigned int" during the computation, which is
   fixed.

 * The delta format used in the packfile cannot reference data at
   offset larger than what can be expressed in 4-byte, but the
   generator for the data failed to make sure the offset does not
   overflow.  This has been corrected.

 * The documentation for '-X<option>' for merges was misleadingly
   written to suggest that "-s theirs" exists, which is not the case.
   (merge c25d98b2a7 jc/merge-x-theirs-docfix later to maint).

 * "git fast-export" with -M/-C option issued "copy" instruction on a
   path that is simultaneously modified, which was incorrect.
   (merge b3e8ca89cf jt/fast-export-copy-modify-fix later to maint).

 * Many codepaths have been updated to squelch -Wsign-compare
   warnings.
   (merge 071bcaab64 rj/no-sign-compare later to maint).

 * Memory leaks in various codepaths have been plugged.
   (merge 4d01a7fa65 ma/leakplugs later to maint).

 * Recent versions of "git rev-parse --parseopt" did not parse the
   option specification that does not have the optional flags (*=?!)
   correctly, which has been corrected.
   (merge a6304fa4c2 bc/rev-parse-parseopt-fix later to maint).

 * The checkpoint command "git fast-import" did not flush updates to
   refs and marks unless at least one object was created since the
   last checkpoint, which has been corrected, as these things can
   happen without any new object getting created.
   (merge 30e215a65c er/fast-import-dump-refs-on-checkpoint later to maint).

 * Spell the name of our system as "Git" in the output from
   request-pull script.
   (merge e66d7c37a5 ar/request-pull-phrasofix later to maint).

 * Fixes for a handful memory access issues identified by valgrind.
   (merge 2944a94c6b tg/memfixes later to maint).

 * Backports a moral equivalent of 2015 fix to the poll() emulation
   from the upstream gnulib to fix occasional breakages on HPE NonStop.
   (merge 61b2a1acaa rb/compat-poll-fix later to maint).

 * Users with "color.ui = always" in their configuration were broken
   by a recent change that made plumbing commands to pay attention to
   them as the patch created internally by "git add -p" were colored
   (heh) and made unusable.  Fix this regression by redefining
   'always' to mean the same thing as 'auto'.
   (merge 6be4595edb jk/ui-color-always-to-auto-maint later to maint).

 * In the "--format=..." option of the "git for-each-ref" command (and
   its friends, i.e. the listing mode of "git branch/tag"), "%(atom:)"
   (e.g. "%(refname:)", "%(body:)" used to error out.  Instead, treat
   them as if the colon and an empty string that follows it were not
   there.
   (merge bea4dbeafd tb/ref-filter-empty-modifier later to maint).

 * An ancient bug that made Git misbehave with creation/renaming of
   refs has been fixed.

 * Other minor doc, test and build updates and code cleanups.
   (merge f094b89a4d ma/parse-maybe-bool later to maint).
   (merge 39b00fa4d4 jk/drop-sha1-entry-pos later to maint).
   (merge 6cdf8a7929 ma/ts-cleanups later to maint).
   (merge 7560f547e6 ma/up-to-date later to maint).
   (merge 0db3dc75f3 rs/apply-epoch later to maint).
   (merge 74f1bd912b dw/diff-highlight-makefile-fix later to maint).
   (merge f991761eb8 jk/config-lockfile-leak-fix later to maint).
   (merge 150efef1e7 ma/pkt-line-leakfix later to maint).
   (merge 5554451de6 mg/timestamp-t-fix later to maint).
   (merge 276d0e35c0 ma/split-symref-update-fix later to maint).
   (merge 3bc4b8f7c7 bb/doc-eol-dirty later to maint).
   (merge c1bb33c99c jk/system-path-cleanup later to maint).
   (merge ab46e6fc72 cc/subprocess-handshake-missing-capabilities later to maint).
   (merge f7a32dd97f kd/doc-for-each-ref later to maint).
   (merge be94568bc7 ez/doc-duplicated-words-fix later to maint).
   (merge 01e4be6c3d ks/test-readme-phrasofix later to maint).
   (merge 217bb56d4f hn/typofix later to maint).
   (merge c08fd6388c jk/doc-read-tree-table-asciidoctor-fix later to maint).
   (merge c3342b362e ks/doc-use-camelcase-for-config-name later to maint).
   (merge 0bca165fdb jk/validate-headref-fix later to maint).
   (merge 93dbefb389 mr/doc-negative-pathspec later to maint).
   (merge 5e633326e4 ad/doc-markup-fix later to maint).
   (merge 9ca356fa8b rs/cocci-de-paren-call-params later to maint).
   (merge 7099153e8d rs/tag-null-pointer-arith-fix later to maint).
   (merge 0e187d758c rs/run-command-use-alloc-array later to maint).
   (merge e0222159fa jn/strbuf-doc-re-reuse later to maint).
   (merge 97487ea11a rs/qsort-s later to maint).
   (merge a9155c50bd sb/branch-avoid-repeated-strbuf-release later to maint).
   (merge f777623514 ks/branch-tweak-error-message-for-extra-args later to maint).
   (merge 33f3c683ec ks/verify-filename-non-option-error-message-tweak later to maint).
   (merge b3ea7dd32d jk/sha1-loose-object-info-fix later to maint).
   (merge 2720f6db5d rs/fsck-null-return-from-lookup later to maint).
   (merge 99b7b687a6 rs/rs-mailmap later to maint).
   (merge 7823655082 tb/complete-describe later to maint).
   (merge 7cbbf9d6a2 ls/filter-process-delayed later to maint).

----------------------------------------------------------------

Changes since v2.14.0 are as follows:

Adam Dinwoodie (1):
      doc: correct command formatting

Andreas Heiduk (2):
      doc: add missing values "none" and "default" for diff.wsErrorHighlight
      doc: clarify "config --bool" behaviour with empty string

Ann T Ropea (1):
      request-pull: capitalise "Git" to make it a proper noun

Anthony Sottile (1):
      git-grep: correct exit code with --quiet and -L

Ben Boeckel (1):
      Documentation: mention that `eol` can change the dirty status of paths

Brandon Casey (7):
      t1502: demonstrate rev-parse --parseopt option mis-parsing
      rev-parse parseopt: do not search help text for flag chars
      rev-parse parseopt: interpret any whitespace as start of help text
      git-rebase: don't ignore unexpected command line arguments
      t0040,t1502: Demonstrate parse_options bugs
      parse-options: write blank line to correct output stream
      parse-options: only insert newline in help text if needed

Brandon Williams (29):
      repo_read_index: don't discard the index
      repository: have the_repository use the_index
      submodule--helper: teach push-check to handle HEAD
      cache.h: add GITMODULES_FILE macro
      config: add config_from_gitmodules
      submodule: remove submodule.fetchjobs from submodule-config parsing
      submodule: remove fetch.recursesubmodules from submodule-config parsing
      submodule: check for unstaged .gitmodules outside of config parsing
      submodule: check for unmerged .gitmodules outside of config parsing
      submodule: merge repo_read_gitmodules and gitmodules_config
      grep: recurse in-process using 'struct repository'
      t7411: check configuration parsing errors
      submodule: don't use submodule_from_name
      add, reset: ensure submodules can be added or reset
      submodule--helper: don't overlay config in remote_submodule_branch
      submodule--helper: don't overlay config in update-clone
      fetch: don't overlay config with submodule-config
      submodule: don't rely on overlayed config when setting diffopts
      unpack-trees: don't respect submodule.update
      submodule: remove submodule_config callback routine
      diff: stop allowing diff to have submodules configured in .git/config
      submodule-config: remove support for overlaying repository config
      submodule-config: move submodule-config functions to submodule-config.c
      submodule-config: lazy-load a repository's .gitmodules file
      unpack-trees: improve loading of .gitmodules
      submodule: remove gitmodules_config
      clone: teach recursive clones to respect -q
      clang-format: outline the git project's coding style
      Makefile: add style build rule

Christian Couder (3):
      refs: use skip_prefix() in ref_is_hidden()
      sub-process: print the cmd when a capability is unsupported
      sha1-lookup: remove sha1_entry_pos() from header file

Daniel Watkins (1):
      diff-highlight: add clean target to Makefile

Derrick Stolee (1):
      cleanup: fix possible overflow errors in binary search

Dimitrios Christidis (1):
      fmt-merge-msg: fix coding style

Eric Blake (1):
      git-contacts: also recognise "Reported-by:"

Eric Rannaud (1):
      fast-import: checkpoint: dump branches/tags/marks even if object_count==0

Evan Zacks (1):
      doc: fix minor typos (extra/duplicated words)

Han-Wen Nienhuys (5):
      submodule.h: typofix
      submodule.c: describe submodule_to_gitdir() in a new comment
      real_path: clarify return value ownership
      read_gitfile_gently: clarify return value ownership.
      string-list.h: move documentation from Documentation/api/ into header

Heiko Voigt (2):
      t5526: fix some broken && chains
      add test for bug in git-mv for recursive submodules

Hielke Christian Braun (1):
      gitweb: skip unreadable subdirectories

Ian Campbell (4):
      filter-branch: reset $GIT_* before cleaning up
      filter-branch: preserve and restore $GIT_AUTHOR_* and $GIT_COMMITTER_*
      filter-branch: stash away ref map in a branch
      filter-branch: use hash-object instead of mktag

Ilya Kantor (1):
      userdiff: fix HTML hunk header regexp

Jameson Miller (1):
      Improve performance of git status --ignored

Jean-Noel Avila (1):
      i18n: add a missing space in message

Jeff Hostetler (1):
      hashmap: add API to disable item counting when threaded

Jeff King (129):
      t1414: document some reflog-walk oddities
      revision: disallow reflog walking with revs->limited
      log: clarify comment about reflog cycles
      log: do not free parents when walking reflog
      get_revision_1(): replace do-while with an early return
      rev-list: check reflog_info before showing usage
      reflog-walk: stop using fake parents
      reflog-walk: apply --since/--until to reflog dates
      check return value of verify_ref_format()
      docs/for-each-ref: update pointer to color syntax
      t: use test_decode_color rather than literal ANSI codes
      ref-filter: simplify automatic color reset
      ref-filter: abstract ref format into its own struct
      ref-filter: move need_color_reset_at_eol into ref_format
      ref-filter: provide a function for parsing sort options
      ref-filter: make parse_ref_filter_atom a private function
      ref-filter: factor out the parsing of sorting atoms
      ref-filter: pass ref_format struct to atom parsers
      color: check color.ui in git_default_config()
      for-each-ref: load config earlier
      rev-list: pass diffopt->use_colors through to pretty-print
      pretty: respect color settings for %C placeholders
      ref-filter: consult want_color() before emitting colors
      strbuf: use designated initializers in STRBUF_INIT
      t/lib-proto-disable: restore protocol.allow after config tests
      t5813: add test for hostname starting with dash
      connect: factor out "looks like command line option" check
      connect: reject dashed arguments for proxy commands
      connect: reject paths that look like command line options
      t6018: flesh out empty input/output rev-list tests
      revision: add rev_input_given flag
      rev-list: don't show usage when we see empty ref patterns
      revision: do not fallback to default when rev_input_given is set
      hashcmp: use memcmp instead of open-coded loop
      sha1_file: drop experimental GIT_USE_LOOKUP search
      trailer: put process_trailers() options into a struct
      interpret-trailers: add an option to show only the trailers
      interpret-trailers: add an option to show only existing trailers
      interpret-trailers: add an option to unfold values
      interpret-trailers: add --parse convenience option
      pretty: move trailer formatting to trailer.c
      t4205: refactor %(trailers) tests
      pretty: support normalization options for %(trailers)
      doc: fix typo in sendemail.identity
      config: use a static lock_file struct
      write_index_as_tree: cleanup tempfile on error
      setup_temporary_shallow: avoid using inactive tempfile
      setup_temporary_shallow: move tempfile struct into function
      verify_signed_buffer: prefer close_tempfile() to close()
      always check return value of close_tempfile
      tempfile: do not delete tempfile on failed close
      lockfile: do not rollback lock on failed close
      tempfile: prefer is_tempfile_active to bare access
      tempfile: handle NULL tempfile pointers gracefully
      tempfile: replace die("BUG") with BUG()
      tempfile: factor out activation
      tempfile: factor out deactivation
      tempfile: robustify cleanup handler
      tempfile: release deactivated strbufs instead of resetting
      tempfile: use list.h for linked list
      tempfile: remove deactivated list entries
      tempfile: auto-allocate tempfiles on heap
      lockfile: update lifetime requirements in documentation
      ref_lock: stop leaking lock_files
      stop leaking lock structs in some simple cases
      test-lib: --valgrind should not override --verbose-log
      test-lib: set LSAN_OPTIONS to abort by default
      add: free leaked pathspec after add_files_to_cache()
      update-index: fix cache entry leak in add_one_file()
      config: plug user_config leak
      reset: make tree counting less confusing
      reset: free allocated tree buffers
      repository: free fields before overwriting them
      set_git_dir: handle feeding gitdir to itself
      rev-parse: don't trim bisect refnames
      system_path: move RUNTIME_PREFIX to a sub-function
      git_extract_argv0_path: do nothing without RUNTIME_PREFIX
      add UNLEAK annotation for reducing leak false positives
      shortlog: skip format/parse roundtrip for internal traversal
      shell: drop git-cvsserver support by default
      archimport: use safe_pipe_capture for user input
      cvsimport: shell-quote variable used in backticks
      config: avoid "write_in_full(fd, buf, len) < len" pattern
      get-tar-commit-id: check write_in_full() return against 0
      avoid "write_in_full(fd, buf, len) != len" pattern
      convert less-trivial versions of "write_in_full() != len"
      pkt-line: check write_in_full() errors against "< 0"
      notes-merge: use ssize_t for write_in_full() return value
      config: flip return value of store_write_*()
      read_pack_header: handle signed/unsigned comparison in read result
      prefix_ref_iterator: break when we leave the prefix
      read_info_alternates: read contents into strbuf
      read_info_alternates: warn on non-trivial errors
      revision: replace "struct cmdline_pathspec" with argv_array
      cat-file: handle NULL object_context.path
      test-line-buffer: simplify command parsing
      curl_trace(): eliminate switch fallthrough
      consistently use "fallthrough" comments in switches
      doc: put literal block delimiter around table
      files-backend: prefer "0" for write_in_full() error check
      notes-merge: drop dead zero-write code
      prefer "!=" when checking read_in_full() result
      avoid looking at errno for short read_in_full() returns
      distinguish error versus short read from read_in_full()
      worktree: use xsize_t to access file size
      worktree: check the result of read_in_full()
      validate_headref: NUL-terminate HEAD buffer
      validate_headref: use skip_prefix for symref parsing
      validate_headref: use get_oid_hex for detached HEADs
      git: add --no-optional-locks option
      test-terminal: set TERM=vt100
      t4015: prefer --color to -c color.diff=always
      t3701: use test-terminal to collect color output
      t7508: use test_terminal for color output
      t7502: use diff.noprefix for --verbose test
      t6006: drop "always" color config tests
      t3203: drop "always" color test
      t3205: use --color instead of color.branch=always
      provide --color option for all ref-filter users
      color: make "always" the same as "auto" in config
      t4015: use --color with --color-moved
      t7301: use test_terminal to check color
      path.c: fix uninitialized memory access
      sha1_loose_object_info: handle errors from unpack_sha1_rest
      t3308: create a real ref directory/file conflict
      refs_resolve_ref_unsafe: handle d/f conflicts for writes
      write_entry: fix leak when retrying delayed filter
      write_entry: avoid reading blobs in CE_RETRY case
      write_entry: untangle symlink and regular-file cases

Job Snijders (1):
      gitweb: add 'raw' blob_plain link in history overview

Joel Teichroeb (3):
      stash: add a test for stash create with no files
      stash: add a test for when apply fails during stash branch
      stash: add a test for stashing in a detached state

Johannes Schindelin (14):
      run_processes_parallel: change confusing task_cb convention
      git-gui (MinGW): make use of MSys2's msgfmt
      t3415: verify that an empty instructionFormat is handled as before
      rebase -i: generate the script via rebase--helper
      rebase -i: remove useless indentation
      rebase -i: do not invent onelines when expanding/collapsing SHA-1s
      rebase -i: also expand/collapse the SHA-1s via the rebase--helper
      t3404: relax rebase.missingCommitsCheck tests
      rebase -i: check for missing commits in the rebase--helper
      rebase -i: skip unnecessary picks using the rebase--helper
      t3415: test fixup with wrapped oneline
      rebase -i: rearrange fixup/squash lines using the rebase--helper
      Win32: simplify loading of DLL functions
      clang-format: adjust line break penalties

Johannes Sixt (1):
      sub-process: use child_process.args instead of child_process.argv

Jonathan Nieder (8):
      vcs-svn: remove more unused prototypes and declarations
      vcs-svn: remove custom mode constants
      vcs-svn: remove repo_delete wrapper function
      vcs-svn: move remaining repo_tree functions to fast_export.h
      pack: make packed_git_mru global a value instead of a pointer
      pathspec doc: parse_pathspec does not maintain references to args
      technical doc: add a design doc for hash function transition
      strbuf doc: reuse after strbuf_release is fine

Jonathan Tan (40):
      fsck: remove redundant parse_tree() invocation
      object: remove "used" field from struct object
      fsck: cleanup unused variable
      Documentation: migrate sub-process docs to header
      sub-process: refactor handshake to common function
      tests: ensure fsck fails on corrupt packfiles
      sha1_file: set whence in storage-specific info fn
      sha1_file: remove read_packed_sha1()
      diff: avoid redundantly clearing a flag
      diff: respect MIN_BLOCK_LENGTH for last block
      diff: define block by number of alphanumeric chars
      Doc: clarify that pack-objects makes packs, plural
      pack: move pack name-related functions
      pack: move static state variables
      pack: move pack_report()
      pack: move open_pack_index(), parse_pack_index()
      pack: move release_pack_memory()
      pack: move pack-closing functions
      pack: move use_pack()
      pack: move unuse_pack()
      pack: move add_packed_git()
      pack: move install_packed_git()
      pack: move {,re}prepare_packed_git and approximate_object_count
      pack: move unpack_object_header_buffer()
      pack: move get_size_from_delta()
      pack: move unpack_object_header()
      pack: move clear_delta_base_cache(), packed_object_info(), unpack_entry()
      pack: move nth_packed_object_{sha1,oid}
      pack: move check_pack_index_ptr(), nth_packed_object_offset()
      pack: move find_pack_entry_one(), is_pack_valid()
      pack: move find_sha1_pack()
      pack: move find_pack_entry() and make it global
      pack: move has_sha1_pack()
      pack: move has_pack_index()
      pack: move for_each_packed_object()
      Remove inadvertently added outgoing/packfile.h
      Add t/helper/test-write-cache to .gitignore
      git-compat-util: make UNLEAK less error-prone
      fast-export: do not copy from modified file
      oidmap: map with OID as key

Junio C Hamano (51):
      t1408: add a test of stale packed refs covered by loose refs
      clean.c: use designated initializer
      http.c: http.sslcert and http.sslkey are both pathnames
      connect: reject ssh hostname that begins with a dash
      Git 2.7.6
      Git 2.8.6
      Git 2.9.5
      Git 2.10.4
      Git 2.11.3
      Git 2.12.4
      Git 2.13.5
      Git 2.14.1
      Start post 2.14 cycle
      perl/Git.pm: typofix in a comment
      The first batch of topics after the 2.14 cycle
      diff: retire sane_truncate_fn
      progress: simplify "delayed" progress API
      The second batch post 2.14
      t4200: give us a clean slate after "rerere gc" tests
      t4200: make "rerere gc" test more robust
      t4200: gather "rerere gc" together
      t4200: parameterize "rerere gc" custom expiry test
      rerere: represent time duration in timestamp_t internally
      rerere: allow approxidate in gc.rerereResolved/gc.rerereUnresolved
      The third batch post 2.14
      Prepare for 2.14.2
      The fourth batch post 2.14
      The fifth batch post 2.14
      The sixth batch post 2.14
      RelNotes: further fixes for 2.14.2 from the master front
      The seventh batch post 2.14
      travis: dedent a few scripts that are indented overly deeply
      subprocess: loudly die when subprocess asks for an unsupported capability
      cvsserver: move safe_pipe_capture() to the main package
      cvsserver: use safe_pipe_capture for `constant commands` as well
      gc: call fscanf() with %<len>s, not %<len>c, when reading hostname
      The eighth batch for 2.15
      Git 2.10.5
      Git 2.11.4
      Git 2.12.5
      Git 2.13.6
      Git 2.14.2
      branch: fix "copy" to never touch HEAD
      merge-strategies: avoid implying that "-s theirs" exists
      The ninth batch for 2.15
      The tenth batch for 2.15
      The eleventh batch for 2.15
      The twelfth batch for 2.15
      Git 2.15-rc0
      Prepare for -rc1
      Git 2.15-rc1

Kaartic Sivaraam (15):
      hook: cleanup script
      hook: name the positional variables
      hook: add sign-off using "interpret-trailers"
      hook: add a simple first example
      commit: check for empty message before the check for untouched template
      hook: use correct logical variable
      t3200: cleanup cruft of a test
      builtin/branch: stop supporting the "--set-upstream" option
      branch: quote branch/ref names to improve readability
      help: change a message to be more precise
      commit-template: change a message to be more intuitive
      t/README: fix typo and grammatically improve a sentence
      doc: camelCase the config variables to improve readability
      branch: change the error messages to be more meaningful
      setup: update error message to be more meaningful

Kevin Daudt (3):
      stash: prevent warning about null bytes in input
      doc/for-each-ref: consistently use '=' to between argument names and values
      doc/for-each-ref: explicitly specify option names

Kevin Willford (9):
      format-patch: have progress option while generating patches
      rebase: turn on progress option by default for format-patch
      commit: skip discarding the index if there is no pre-commit hook
      perf: add test for writing the index
      read-cache: fix memory leak in do_write_index
      read-cache: avoid allocating every ondisk entry when writing
      merge-recursive: fix memory leak
      merge-recursive: remove return value from get_files_dirs
      merge-recursive: change current file dir string_lists to hashmap

Lars Schneider (13):
      t0021: keep filter log files on comparison
      t0021: make debug log file name configurable
      t0021: write "OUT <size>" only on success
      convert: put the flags field before the flag itself for consistent style
      convert: move multiple file filter error handling to separate function
      convert: refactor capabilities negotiation
      convert: add "status=delayed" to filter process protocol
      convert: display progress for filtered objects that have been delayed
      travis-ci: move Travis CI code into dedicated scripts
      travis-ci: skip a branch build if equal tag is present
      travis-ci: fix "skip_branch_tip_with_tag()" string comparison
      entry.c: update cache entry only for existing files
      entry.c: check if file exists after checkout

Manav Rathi (1):
      docs: improve discoverability of exclude pathspec

Martin Koegler (2):
      diff-delta: fix encoding size that would not fit in "unsigned int"
      diff-delta: do not allow delta offset truncation

Martin Ågren (33):
      builtin.h: take over documentation from api-builtin.txt
      git.c: let builtins opt for handling `pager.foo` themselves
      git.c: provide setup_auto_pager()
      t7006: add tests for how git tag paginates
      tag: respect `pager.tag` in list-mode only
      tag: change default of `pager.tag` to "on"
      git.c: ignore pager.* when launching builtin as dashed external
      Doc/git-{push,send-pack}: correct --sign= to --signed=
      t5334: document that git push --signed=1 does not work
      config: introduce git_parse_maybe_bool_text
      config: make git_{config,parse}_maybe_bool equivalent
      treewide: deprecate git_config_maybe_bool, use git_parse_maybe_bool
      parse_decoration_style: drop unused argument `var`
      doc/interpret-trailers: fix "the this" typo
      convert: always initialize attr_action in convert_attrs
      pack-objects: take lock before accessing `remaining`
      strbuf_setlen: don't write to strbuf_slopbuf
      ThreadSanitizer: add suppressions
      Documentation/user-manual: update outdated example output
      treewide: correct several "up-to-date" to "up to date"
      pkt-line: re-'static'-ify buffer in packet_write_fmt_1()
      config: remove git_config_maybe_bool
      refs/files-backend: add longer-scoped copy of string to list
      refs/files-backend: fix memory leak in lock_ref_for_update
      refs/files-backend: correct return value in lock_ref_for_update
      refs/files-backend: add `refname`, not "HEAD", to list
      builtin/commit: fix memory leak in `prepare_index()`
      commit: fix memory leak in `reduce_heads()`
      leak_pending: use `object_array_clear()`, not `free()`
      object_array: use `object_array_clear()`, not `free()`
      object_array: add and use `object_array_pop()`
      pack-bitmap[-write]: use `object_array_clear()`, don't leak
      builtin/: add UNLEAKs

Matthieu Moy (2):
      send-email: fix garbage removal after address
      send-email: don't use Mail::Address, even if available

Max Kirillov (2):
      describe: fix matching to actually match all patterns
      describe: teach --match to handle branches and remotes

Michael Forney (1):
      scripts: use "git foo" not "git-foo"

Michael Haggerty (77):
      add_packed_ref(): teach function to overwrite existing refs
      packed_ref_store: new struct
      packed_ref_store: move `packed_refs_path` here
      packed_ref_store: move `packed_refs_lock` member here
      clear_packed_ref_cache(): take a `packed_ref_store *` parameter
      validate_packed_ref_cache(): take a `packed_ref_store *` parameter
      get_packed_ref_cache(): take a `packed_ref_store *` parameter
      get_packed_refs(): take a `packed_ref_store *` parameter
      add_packed_ref(): take a `packed_ref_store *` parameter
      lock_packed_refs(): take a `packed_ref_store *` parameter
      commit_packed_refs(): take a `packed_ref_store *` parameter
      rollback_packed_refs(): take a `packed_ref_store *` parameter
      get_packed_ref(): take a `packed_ref_store *` parameter
      repack_without_refs(): take a `packed_ref_store *` parameter
      packed_peel_ref(): new function, extracted from `files_peel_ref()`
      packed_ref_store: support iteration
      packed_read_raw_ref(): new function, replacing `resolve_packed_ref()`
      packed-backend: new module for handling packed references
      packed_ref_store: make class into a subclass of `ref_store`
      commit_packed_refs(): report errors rather than dying
      commit_packed_refs(): use a staging file separate from the lockfile
      packed_refs_lock(): function renamed from lock_packed_refs()
      packed_refs_lock(): report errors via a `struct strbuf *err`
      packed_refs_unlock(), packed_refs_is_locked(): new functions
      clear_packed_ref_cache(): don't protest if the lock is held
      commit_packed_refs(): remove call to `packed_refs_unlock()`
      repack_without_refs(): don't lock or unlock the packed refs
      t3210: add some tests of bogus packed-refs file contents
      read_packed_refs(): die if `packed-refs` contains bogus data
      packed_ref_store: handle a packed-refs file that is a symlink
      files-backend: cheapen refname_available check when locking refs
      refs: retry acquiring reference locks for 100ms
      notes: make GET_NIBBLE macro more robust
      load_subtree(): remove unnecessary conditional
      load_subtree(): reduce the scope of some local variables
      load_subtree(): fix incorrect comment
      load_subtree(): separate logic for internal vs. terminal entries
      load_subtree(): check earlier whether an internal node is a tree entry
      load_subtree(): only consider blobs to be potential notes
      get_oid_hex_segment(): return 0 on success
      load_subtree(): combine some common code
      get_oid_hex_segment(): don't pad the rest of `oid`
      hex_to_bytes(): simpler replacement for `get_oid_hex_segment()`
      load_subtree(): declare some variables to be `size_t`
      load_subtree(): check that `prefix_len` is in the expected range
      packed-backend: don't adjust the reference count on lock/unlock
      struct ref_transaction: add a place for backends to store data
      packed_ref_store: implement reference transactions
      packed_delete_refs(): implement method
      files_pack_refs(): use a reference transaction to write packed refs
      prune_refs(): also free the linked list
      files_initial_transaction_commit(): use a transaction for packed refs
      t1404: demonstrate two problems with reference transactions
      files_ref_store: use a transaction to update packed refs
      packed-backend: rip out some now-unused code
      files_transaction_finish(): delete reflogs before references
      ref_iterator: keep track of whether the iterator output is ordered
      packed_ref_cache: add a backlink to the associated `packed_ref_store`
      die_unterminated_line(), die_invalid_line(): new functions
      read_packed_refs(): use mmap to read the `packed-refs` file
      read_packed_refs(): only check for a header at the top of the file
      read_packed_refs(): make parsing of the header line more robust
      for_each_string_list_item: avoid undefined behavior for empty list
      read_packed_refs(): read references with minimal copying
      packed_ref_cache: remember the file-wide peeling state
      mmapped_ref_iterator: add iterator over a packed-refs file
      mmapped_ref_iterator_advance(): no peeled value for broken refs
      packed-backend.c: reorder some definitions
      packed_ref_cache: keep the `packed-refs` file mmapped if possible
      read_packed_refs(): ensure that references are ordered when read
      packed_ref_iterator_begin(): iterate using `mmapped_ref_iterator`
      packed_read_raw_ref(): read the reference from the mmapped buffer
      ref_store: implement `refs_peel_ref()` generically
      packed_ref_store: get rid of the `ref_cache` entirely
      ref_cache: remove support for storing peeled values
      mmapped_ref_iterator: inline into `packed_ref_iterator`
      packed-backend.c: rename a bunch of things and update comments

Michael J Gruber (11):
      Documentation: use proper wording for ref format strings
      Documentation/git-for-each-ref: clarify peeling of tags for --format
      Documentation/git-merge: explain --continue
      merge: clarify call chain
      merge: split write_merge_state in two
      merge: save merge state earlier
      name-rev: change ULONG_MAX to TIME_MAX
      t7004: move limited stack prereq to test-lib
      t6120: test name-rev --all and --stdin
      t6120: clean up state after breaking repo
      t6120: test describe and name-rev with deep repos

Nguyễn Thái Ngọc Duy (17):
      branch: fix branch renaming not updating HEADs correctly
      revision.h: new flag in struct rev_info wrt. worktree-related refs
      refs.c: use is_dir_sep() in resolve_gitlink_ref()
      revision.c: refactor add_index_objects_to_pending()
      revision.c: --indexed-objects add objects from all worktrees
      refs.c: refactor get_submodule_ref_store(), share common free block
      refs: move submodule slash stripping code to get_submodule_ref_store
      refs: add refs_head_ref()
      revision.c: use refs_for_each*() instead of for_each_*_submodule()
      refs.c: move for_each_remote_ref_submodule() to submodule.c
      refs: remove dead for_each_*_submodule()
      revision.c: --all adds HEAD from all worktrees
      files-backend: make reflog iterator go through per-worktree reflog
      revision.c: --reflog add HEAD reflog from all worktrees
      rev-list: expose and document --single-worktree
      refs.c: remove fallback-to-main-store code get_submodule_ref_store()
      refs.c: reindent get_submodule_ref_store()

Nicolas Morey-Chaisemartin (7):
      stash: clean untracked files before reset
      pull: fix cli and config option parsing order
      pull: honor submodule.recurse config option
      imap-send: return with error if curl failed
      imap-send: add wrapper to get server credentials if needed
      imap_send: setup_curl: retreive credentials if not set in config file
      imap-send: use curl by default when possible

Paolo Bonzini (4):
      trailers: export action enums and corresponding lookup functions
      trailers: introduce struct new_trailer_item
      interpret-trailers: add options for actions
      interpret-trailers: fix documentation typo

Patryk Obara (10):
      sha1_file: fix definition of null_sha1
      commit: replace the raw buffer with strbuf in read_graft_line
      commit: allocate array using object_id size
      commit: rewrite read_graft_line
      builtin/hash-object: convert to struct object_id
      read-cache: convert to struct object_id
      sha1_file: convert index_path to struct object_id
      sha1_file: convert index_fd to struct object_id
      sha1_file: convert hash_sha1_file_literally to struct object_id
      sha1_file: convert index_stream to struct object_id

Philip Oakley (4):
      git-gui: remove duplicate entries from .gitconfig's gui.recentrepo
      git gui: cope with duplicates in _get_recentrepo
      git gui: de-dup selected repo from recentrepo history
      git gui: allow for a long recentrepo list

Phillip Wood (7):
      am: remember --rerere-autoupdate setting
      rebase: honor --rerere-autoupdate
      rebase -i: honor --rerere-autoupdate
      t3504: use test_commit
      cherry-pick/revert: remember --rerere-autoupdate
      cherry-pick/revert: reject --rerere-autoupdate when continuing
      am: fix signoff when other trailers are present

Raman Gupta (1):
      contrib/rerere-train: optionally overwrite existing resolutions

Ramsay Jones (9):
      credential-cache: interpret an ECONNRESET as an EOF
      builtin/add: add detail to a 'cannot chmod' error message
      test-lib: don't use ulimit in test prerequisites on cygwin
      test-lib: use more compact expression in PIPE prerequisite
      t9010-*.sh: skip all tests if the PIPE prereq is missing
      git-compat-util.h: xsize_t() - avoid -Wsign-compare warnings
      commit-slab.h: avoid -Wsign-compare warnings
      cache.h: hex2chr() - avoid -Wsign-compare warnings
      ALLOC_GROW: avoid -Wsign-compare warnings

Randall S. Becker (1):
      poll.c: always set revents, even if to zero

René Scharfe (81):
      tree-diff: don't access hash of NULL object_id pointer
      notes: don't access hash of NULL object_id pointer
      receive-pack: don't access hash of NULL object_id pointer
      bswap: convert to unsigned before shifting in get_be32
      bswap: convert get_be16, get_be32 and put_be32 to inline functions
      add MOVE_ARRAY
      use MOVE_ARRAY
      apply: use COPY_ARRAY and MOVE_ARRAY in update_image()
      ls-files: don't try to prune an empty index
      dir: support platforms that require aligned reads
      pack-objects: remove unnecessary NULL check
      t0001: skip test with restrictive permissions if getpwd(3) respects them
      test-path-utils: handle const parameter of basename and dirname
      t3700: fix broken test under !POSIXPERM
      t4062: use less than 256 repetitions in regex
      sha1_file: avoid comparison if no packed hash matches the first byte
      apply: remove prefix_length member from apply_state
      merge: use skip_prefix()
      win32: plug memory leak on realloc() failure in syslog()
      strbuf: clear errno before calling getdelim(3)
      fsck: free buffers on error in fsck_obj()
      sha1_file: release delta_stack on error in unpack_entry()
      tree-walk: convert fill_tree_descriptor() to object_id
      t1002: stop using sum(1)
      t5001: add tests for export-ignore attributes and exclude pathspecs
      archive: factor out helper functions for handling attributes
      archive: don't queue excluded directories
      commit: remove unused inline function single_parent()
      apply: check date of potential epoch timestamps first
      apply: remove epoch date from regex
      am: release strbufs after use in detect_patch_format()
      am: release strbuf on error return in hg_patch_to_mail()
      am: release strbuf after use in safe_to_abort()
      check-ref-format: release strbuf after use in check_ref_format_branch()
      clean: release strbuf after use in remove_dirs()
      clone: release strbuf after use in remove_junk()
      commit: release strbuf on error return in commit_tree_extended()
      connect: release strbuf on error return in git_connect()
      convert: release strbuf on error return in filter_buffer_or_fd()
      diff: release strbuf after use in diff_summary()
      diff: release strbuf after use in show_rename_copy()
      diff: release strbuf after use in show_stats()
      help: release strbuf on error return in exec_man_konqueror()
      help: release strbuf on error return in exec_man_man()
      help: release strbuf on error return in exec_woman_emacs()
      mailinfo: release strbuf after use in handle_from()
      mailinfo: release strbuf on error return in handle_boundary()
      merge: release strbuf after use in save_state()
      merge: release strbuf after use in write_merge_heads()
      notes: release strbuf after use in notes_copy_from_stdin()
      refs: release strbuf on error return in write_pseudoref()
      remote: release strbuf after use in read_remote_branches()
      remote: release strbuf after use in migrate_file()
      remote: release strbuf after use in set_url()
      send-pack: release strbuf on error return in send_pack()
      sha1_file: release strbuf on error return in index_path()
      shortlog: release strbuf after use in insert_one_record()
      sequencer: release strbuf after use in save_head()
      transport-helper: release strbuf after use in process_connect_service()
      userdiff: release strbuf after use in userdiff_get_textconv()
      utf8: release strbuf on error return in strbuf_utf8_replace()
      vcs-svn: release strbuf after use in end_revision()
      wt-status: release strbuf after use in read_rebase_todolist()
      wt-status: release strbuf after use in wt_longstatus_print_tracking()
      archive: don't add empty directories to archives
      refs: make sha1 output parameter of refs_resolve_ref_unsafe() optional
      refs: pass NULL to refs_resolve_ref_unsafe() if hash is not needed
      refs: pass NULL to resolve_ref_unsafe() if hash is not needed
      mailinfo: don't decode invalid =XY quoted-printable sequences
      refs: pass NULL to refs_resolve_refdup() if hash is not needed
      refs: pass NULL to resolve_refdup() if hash is not needed
      coccinelle: remove parentheses that become unnecessary
      path: use strbuf_add_real_path()
      use strbuf_addstr() for adding strings to strbufs
      graph: use strbuf_addchars() to add spaces
      tag: avoid NULL pointer arithmetic
      repository: use FREE_AND_NULL
      run-command: use ALLOC_ARRAY
      test-stringlist: avoid buffer underrun when sorting nothing
      fsck: handle NULL return of lookup_blob() and lookup_tree()
      .mailmap: normalize name for René Scharfe

Ross Kabus (1):
      commit-tree: do not complete line in -F input

Sahil Dua (2):
      config: create a function to format section headers
      branch: add a --copy (-c) option to go with --move (-m)

Santiago Torres (1):
      t: lib-gpg: flush gpg agent on startup

Stefan Beller (51):
      diff.c: readability fix
      diff.c: move line ending check into emit_hunk_header
      diff.c: factor out diff_flush_patch_all_file_pairs
      diff.c: introduce emit_diff_symbol
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_MARKER
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_FRAGINFO
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_NO_LF_EOF
      diff.c: migrate emit_line_checked to use emit_diff_symbol
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_WORDS[_PORCELAIN]
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_INCOMPLETE
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_FILEPAIR_{PLUS, MINUS}
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_HEADER
      diff.c: emit_diff_symbol learns about DIFF_SYMBOL_BINARY_FILES
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_REWRITE_DIFF
      submodule.c: migrate diff output to use emit_diff_symbol
      diff.c: convert emit_binary_diff_body to use emit_diff_symbol
      diff.c: convert show_stats to use emit_diff_symbol
      diff.c: convert word diffing to use emit_diff_symbol
      diff.c: emit_diff_symbol learns about DIFF_SYMBOL_STAT_SEP
      diff.c: emit_diff_symbol learns about DIFF_SYMBOL_SUMMARY
      diff.c: buffer all output if asked to
      diff.c: color moved lines differently
      diff.c: color moved lines differently, plain mode
      diff.c: add dimming to moved line detection
      diff: document the new --color-moved setting
      attr.c: drop hashmap_cmp_fn cast
      builtin/difftool.c: drop hashmap_cmp_fn cast
      builtin/describe: drop hashmap_cmp_fn cast
      config.c: drop hashmap_cmp_fn cast
      convert/sub-process: drop cast to hashmap_cmp_fn
      patch-ids.c: drop hashmap_cmp_fn cast
      remote.c: drop hashmap_cmp_fn cast
      submodule-config.c: drop hashmap_cmp_fn cast
      name-hash.c: drop hashmap_cmp_fn cast
      t/helper/test-hashmap: use custom data instead of duplicate cmp functions
      commit: convert lookup_commit_graft to struct object_id
      tag: convert gpg_verify_tag to use struct object_id
      t8008: rely on rev-parse'd HEAD instead of sha1 value
      t1200: remove t1200-tutorial.sh
      sha1_file: make read_info_alternates static
      submodule.sh: remove unused variable
      builtin/merge: honor commit-msg hook for merges
      push, fetch: error out for submodule entries not pointing to commits
      replace-objects: evaluate replacement refs without using the object store
      Documentation/githooks: mention merge in commit-msg hook
      Documentation/config: clarify the meaning of submodule.<name>.update
      t7406: submodule.<name>.update command must not be run from .gitmodules
      diff: correct newline in summary for renamed files
      submodule: correct error message for missing commits
      branch: reset instead of release a strbuf
      tests: fix diff order arguments in test_cmp

Stephan Beyer (1):
      clang-format: add a comment about the meaning/status of the

Takashi Iwai (2):
      sha1dc: build git plumbing code more explicitly
      sha1dc: allow building with the external sha1dc library

Taylor Blau (8):
      pretty.c: delimit "%(trailers)" arguments with ","
      t4205: unfold across multiple lines
      doc: 'trailers' is the preferred way to format trailers
      doc: use "`<literal>`"-style quoting for literal strings
      t6300: refactor %(trailers) tests
      ref-filter.c: use trailer_opts to format trailers
      ref-filter.c: parse trailers arguments with %(contents) atom
      ref-filter.c: pass empty-string as NULL to atom parsers

Thomas Braun (1):
      completion: add --broken and --dirty to describe

Thomas Gummerer (3):
      read-cache: fix index corruption with index v4
      refs: strip out not allowed flags from ref_transaction_update
      http-push: fix construction of hex value from path

Todd Zullinger (1):
      api-argv-array.txt: remove broken link to string-list API

Tom G. Christensen (2):
      http: fix handling of missing CURLPROTO_*
      http: use a feature check to enable GSSAPI delegation control

Torsten Bögershausen (3):
      convert: add SAFE_CRLF_KEEP_CRLF
      apply: file commited with CRLF should roundtrip diff and apply
      test-lint: echo -e (or -E) is not portable

Urs Thuermann (1):
      git svn fetch: Create correct commit timestamp when using --localtime

William Duclot (1):
      rebase: make resolve message clearer for inexperienced users

brian m. carlson (14):
      builtin/fsck: convert remaining caller of get_sha1 to object_id
      builtin/merge-tree: convert remaining caller of get_sha1 to object_id
      submodule: convert submodule config lookup to use object_id
      remote: convert struct push_cas to struct object_id
      sequencer: convert to struct object_id
      builtin/update_ref: convert to struct object_id
      bisect: convert bisect_checkout to struct object_id
      builtin/unpack-file: convert to struct object_id
      Convert remaining callers of get_sha1 to get_oid.
      sha1_name: convert get_sha1* to get_oid*
      sha1_name: convert GET_SHA1* flags to GET_OID*
      sha1_name: convert uses of 40 to GIT_SHA1_HEXSZ
      vcs-svn: remove unused prototypes
      vcs-svn: rename repo functions to "svn_repo"

joernchen (1):
      cvsserver: use safe_pipe_capture instead of backticks

Ævar Arnfjörð Bjarmason (2):
      branch: add test for -m renaming multiple config sections
      tests: don't give unportable ">" to "test" built-in, use -gt

Øystein Walle (1):
      rev-parse: rev-parse: add --is-shallow-repository

Łukasz Gryglicki (1):
      merge: add a --signoff flag


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.15.0-rc0
@ 2017-10-05  5:55  2% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2017-10-05  5:55 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel

An early preview release Git v2.15.0-rc0 is now available for
testing at the usual places.  It is comprised of 672 non-merge
commits since v2.14.0, contributed by 66 people, 20 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.15.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.14.0 are as follows.
Welcome to the Git development community!

  Ann T Ropea, Daniel Watkins, Dimitrios Christidis, Eric Rannaud,
  Evan Zacks, Hielke Christian Braun, Ian Campbell, Ilya Kantor,
  Jameson Miller, Job Snijders, Joel Teichroeb, joernchen,
  Łukasz Gryglicki, Manav Rathi, Martin Ågren, Michael Forney,
  Patryk Obara, Rene Scharfe, Ross Kabus, and Urs Thuermann.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Andreas Heiduk,
  Anthony Sottile, Ben Boeckel, Brandon Casey, Brandon Williams,
  brian m. carlson, Christian Couder, Eric Blake, Han-Wen Nienhuys,
  Heiko Voigt, Jeff Hostetler, Jeff King, Johannes Schindelin,
  Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kaartic Sivaraam,
  Kevin Daudt, Kevin Willford, Lars Schneider, Martin Koegler,
  Matthieu Moy, Max Kirillov, Michael Haggerty, Michael J Gruber,
  Nguyễn Thái Ngọc Duy, Nicolas Morey-Chaisemartin, Øystein
  Walle, Paolo Bonzini, Pat Thoyts, Philip Oakley, Phillip
  Wood, Raman Gupta, Ramsay Jones, René Scharfe, Sahil Dua,
  Santiago Torres, Stefan Beller, Stephan Beyer, Takashi Iwai,
  Thomas Gummerer, Tom G. Christensen, Torsten Bögershausen,
  and William Duclot.

----------------------------------------------------------------

Git 2.15 Release Notes (draft)
==============================

Backward compatibility notes and other notable changes.

 * Use of an empty string as a pathspec element that is used for
   'everything matches' is still warned and Git asks users to use a
   more explicit '.' for that instead.  The hope is that existing
   users will not mind this change, and eventually the warning can be
   turned into a hard error, upgrading the deprecation into removal of
   this (mis)feature.  That is now scheduled to happen in the upcoming
   release.

 * Git now avoids blindly falling back to ".git" when the setup
   sequence said we are _not_ in Git repository.  A corner case that
   happens to work right now may be broken by a call to die("BUG").
   We've tried hard to locate such cases and fixed them, but there
   might still be cases that need to be addressed--bug reports are
   greatly appreciated.

 * "branch --set-upstream" that has been deprecated in Git 1.8 has
   finally been retired.


Updates since v2.14
-------------------

UI, Workflows & Features

 * An example that is now obsolete has been removed from a sample hook,
   and an old example in it that added a sign-off manually has been
   improved to use the interpret-trailers command.

 * The advice message given when "git rebase" stops for conflicting
   changes has been improved.

 * The "rerere-train" script (in contrib/) learned the "--overwrite"
   option to allow overwriting existing recorded resolutions.

 * "git contacts" (in contrib/) now lists the address on the
   "Reported-by:" trailer to its output, in addition to those on
   S-o-b: and other trailers, to make it easier to notify (and thank)
   the original bug reporter.

 * "git rebase", especially when it is run by mistake and ends up
   trying to replay many changes, spent long time in silence.  The
   command has been taught to show progress report when it spends
   long time preparing these many changes to replay (which would give
   the user a chance to abort with ^C).

 * "git merge" learned a "--signoff" option to add the Signed-off-by:
   trailer with the committer's name.

 * "git diff" learned to optionally paint new lines that are the same
   as deleted lines elsewhere differently from genuinely new lines.

 * "git interpret-trailers" learned to take the trailer specifications
   from the command line that overrides the configured values.

 * "git interpret-trailers" has been taught a "--parse" and a few
   other options to make it easier for scripts to grab existing
   trailer lines from a commit log message.

 * "gitweb" shows a link to visit the 'raw' contents of blbos in the
   history overview page.

 * "[gc] rerereResolved = 5.days" used to be invalid, as the variable
   is defined to take an integer counting the number of days.  It now
   is allowed.

 * The code to acquire a lock on a reference (e.g. while accepting a
   push from a client) used to immediately fail when the reference is
   already locked---now it waits for a very short while and retries,
   which can make it succeed if the lock holder was holding it during
   a read-only operation.

 * "branch --set-upstream" that has been deprecated in Git 1.8 has
   finally been retired.

 * The codepath to call external process filter for smudge/clean
   operation learned to show the progress meter.

 * "git rev-parse" learned "--is-shallow-repository", that is to be
   used in a way similar to existing "--is-bare-repository" and
   friends.

 * "git describe --match <pattern>" has been taught to play well with
   the "--all" option.

 * "git branch" learned "-c/-C" to create a new branch by copying an
   existing one.

 * Some commands (most notably "git status") makes an opportunistic
   update when performing a read-only operation to help optimize later
   operations in the same repository.  The new "--no-optional-locks"
   option can be passed to Git to disable them.


Performance, Internal Implementation, Development Support etc.

 * Conversion from uchar[20] to struct object_id continues.

 * Start using selected c99 constructs in small, stable and
   essentialpart of the system to catch people who care about
   older compilers that do not grok them.

 * The filter-process interface learned to allow a process with long
   latency give a "delayed" response.

 * Many uses of comparision callback function the hashmap API uses
   cast the callback function type when registering it to
   hashmap_init(), which defeats the compile time type checking when
   the callback interface changes (e.g. gaining more parameters).
   The callback implementations have been updated to take "void *"
   pointers and cast them to the type they expect instead.

 * Because recent Git for Windows do come with a real msgfmt, the
   build procedure for git-gui has been updated to use it instead of a
   hand-rolled substitute.

 * "git grep --recurse-submodules" has been reworked to give a more
   consistent output across submodule boundary (and do its thing
   without having to fork a separate process).

 * A helper function to read a single whole line into strbuf
   mistakenly triggered OOM error at EOF under certain conditions,
   which has been fixed.
   (merge 642956cf45 rs/strbuf-getwholeline-fix later to maint).

 * The "ref-store" code reorganization continues.

 * "git commit" used to discard the index and re-read from the filesystem
   just in case the pre-commit hook has updated it in the middle; this
   has been optimized out when we know we do not run the pre-commit hook.
   (merge 680ee550d7 kw/commit-keep-index-when-pre-commit-is-not-run later to maint).

 * Updates to the HTTP layer we made recently unconditionally used
   features of libCurl without checking the existence of them, causing
   compilation errors, which has been fixed.  Also migrate the code to
   check feature macros, not version numbers, to cope better with
   libCurl that vendor ships with backported features.

 * The API to start showing progress meter after a short delay has
   been simplified.
   (merge 8aade107dd jc/simplify-progress later to maint).

 * Code clean-up to avoid mixing values read from the .gitmodules file
   and values read from the .git/config file.

 * We used to spend more than necessary cycles allocating and freeing
   piece of memory while writing each index entry out.  This has been
   optimized.

 * Platforms that ship with a separate sha1 with collision detection
   library can link to it instead of using the copy we ship as part of
   our source tree.

 * Code around "notes" have been cleaned up.
   (merge 3964281524 mh/notes-cleanup later to maint).

 * The long-standing rule that an in-core lockfile instance, once it
   is used, must not be freed, has been lifted and the lockfile and
   tempfile APIs have been updated to reduce the chance of programming
   errors.

 * Our hashmap implementation in hashmap.[ch] is not thread-safe when
   adding a new item needs to expand the hashtable by rehashing; add
   an API to disable the automatic rehashing to work it around.

 * Many of our programs consider that it is OK to release dynamic
   storage that is used throughout the life of the program by simply
   exiting, but this makes it harder to leak detection tools to avoid
   reporting false positives.  Plug many existing leaks and introduce
   a mechanism for developers to mark that the region of memory
   pointed by a pointer is not lost/leaking to help these tools.

 * As "git commit" to conclude a conflicted "git merge" honors the
   commit-msg hook, "git merge" that records a merge commit that
   cleanly auto-merges should, but it didn't.

 * The codepath for "git merge-recursive" has been cleaned up.

 * Many leaks of strbuf have been fixed.

 * "git imap-send" has our own implementation of the protocol and also
   can use more recent libCurl with the imap protocol support.  Update
   the latter so that it can use the credential subsystem, and then
   make it the default option to use, so that we can eventually
   deprecate and remove the former.

 * "make style" runs git-clang-format to help developers by pointing
   out coding style issues.

 * A test to demonstrate "git mv" failing to adjust nested submodules
   has been added.
   (merge c514167df2 hv/mv-nested-submodules-test later to maint).

 * On Cygwin, "ulimit -s" does not report failure but it does not work
   at all, which causes an unexpected success of some tests that
   expect failures under a limited stack situation.  This has been
   fixed.

 * Many codepaths have been updated to squelch -Wimplicit-fallthrough
   warnings from Gcc 7 (which is a good code hygiene).

 * Add a helper for DLL loading in anticipation for its need in a
   future topic RSN.

 * "git status --ignored", when noticing that a directory without any
   tracked path is ignored, still enumerated all the ignored paths in
   the directory, which is unnecessary.  The codepath has been
   optimized to avoid this overhead.

 * The final batch to "git rebase -i" updates to move more code from
   the shell script to C has been merged.

 * Operations that do not touch (majority of) packed refs have been
   optimized by making accesses to packed-refs file lazy; we no longer
   pre-parse everything, and an access to a single ref in the
   packed-refs does not touch majority of irrelevant refs, either.

 * Add comment to clarify that the style file is meant to be used with
   clang-5 and the rules are still work in progress.

Also contains various documentation updates and code clean-ups.


Fixes since v2.14
-----------------

 * "%C(color name)" in the pretty print format always produced ANSI
   color escape codes, which was an early design mistake.  They now
   honor the configuration (e.g. "color.ui = never") and also tty-ness
   of the output medium.

 * The http.{sslkey,sslCert} configuration variables are to be
   interpreted as a pathname that honors "~[username]/" prefix, but
   weren't, which has been fixed.

 * Numerous bugs in walking of reflogs via "log -g" and friends have
   been fixed.

 * "git commit" when seeing an totally empty message said "you did not
   edit the message", which is clearly wrong.  The message has been
   corrected.

 * When a directory is not readable, "gitweb" fails to build the
   project list.  Work this around by skipping such a directory.

 * Some versions of GnuPG fails to kill gpg-agent it auto-spawned
   and such a left-over agent can interfere with a test.  Work it
   around by attempting to kill one before starting a new test.

 * A recently added test for the "credential-cache" helper revealed
   that EOF detection done around the time the connection to the cache
   daemon is torn down were flaky.  This was fixed by reacting to
   ECONNRESET and behaving as if we got an EOF.

 * "git log --tag=no-such-tag" showed log starting from HEAD, which
   has been fixed---it now shows nothing.

 * The "tag.pager" configuration variable was useless for those who
   actually create tag objects, as it interfered with the use of an
   editor.  A new mechanism has been introduced for commands to enable
   pager depending on what operation is being carried out to fix this,
   and then "git tag -l" is made to run pager by default.

 * "git push --recurse-submodules $there HEAD:$target" was not
   propagated down to the submodules, but now it is.

 * Commands like "git rebase" accepted the --rerere-autoupdate option
   from the command line, but did not always use it.  This has been
   fixed.

 * "git clone --recurse-submodules --quiet" did not pass the quiet
   option down to submodules.

 * Test portability fix for OBSD.

 * Portability fix for OBSD.

 * "git am -s" has been taught that some input may end with a trailer
   block that is not Signed-off-by: and it should refrain from adding
   an extra blank line before adding a new sign-off in such a case.

 * "git svn" used with "--localtime" option did not compute the tz
   offset for the timestamp in question and instead always used the
   current time, which has been corrected.

 * Memory leak in an error codepath has been plugged.

 * "git stash -u" used the contents of the committed version of the
   ".gitignore" file to decide which paths are ignored, even when the
   file has local changes.  The command has been taught to instead use
   the locally modified contents.

 * bash 4.4 or newer gave a warning on NUL byte in command
   substitution done in "git stash"; this has been squelched.

 * "git grep -L" and "git grep --quiet -L" reported different exit
   codes; this has been corrected.

 * When handshake with a subprocess filter notices that the process
   asked for an unknown capability, Git did not report what program
   the offending subprocess was running.  This has been corrected.

 * "git apply" that is used as a better "patch -p1" failed to apply a
   taken from a file with CRLF line endings to a file with CRLF line
   endings.  The root cause was because it misused convert_to_git()
   that tried to do "safe-crlf" processing by looking at the index
   entry at the same path, which is a nonsense---in that mode, "apply"
   is not working on the data in (or derived from) the index at all.
   This has been fixed.

 * Killing "git merge --edit" before the editor returns control left
   the repository in a state with MERGE_MSG but without MERGE_HEAD,
   which incorrectly tells the subsequent "git commit" that there was
   a squash merge in progress.  This has been fixed.

 * "git archive" did not work well with pathspecs and the
   export-ignore attribute.

 * In addition to "cc: <a@dd.re.ss> # cruft", "cc: a@dd.re.ss # cruft"
   was taught to "git send-email" as a valid way to tell it that it
   needs to also send a carbon copy to <a@dd.re.ss> in the trailer
   section.
   (merge cc90750677 mm/send-email-cc-cruft later to maint).

 * "git branch -M a b" while on a branch that is completely unrelated
   to either branch a or branch b misbehaved when multiple worktree
   was in use.  This has been fixed.
   (merge 31824d180d nd/worktree-kill-parse-ref later to maint).

 * "git gc" and friends when multiple worktrees are used off of a
   single repository did not consider the index and per-worktree refs
   of other worktrees as the root for reachability traversal, making
   objects that are in use only in other worktrees to be subject to
   garbage collection.

 * A regression to "gitk --bisect" by a recent update has been fixed.
   (merge 1d0538e486 mh/packed-ref-store-prep later to maint).

 * "git -c submodule.recurse=yes pull" did not work as if the
   "--recurse-submodules" option was given from the command line.
   This has been corrected.

 * Unlike "git commit-tree < file", "git commit-tree -F file" did not
   pass the contents of the file verbatim and instead completed an
   incomplete line at the end, if exists.  The latter has been updated
   to match the behaviour of the former.
   (merge c818e74332 rk/commit-tree-make-F-verbatim later to maint).

 * Many codepaths did not diagnose write failures correctly when disks
   go full, due to their misuse of write_in_full() helper function,
   which have been corrected.
   (merge f48ecd38cb jk/write-in-full-fix later to maint).

 * "git help co" now says "co is aliased to ...", not "git co is".
   (merge b3a8076e0d ks/help-alias-label later to maint).

 * "git archive", especially when used with pathspec, stored an empty
   directory in its output, even though Git itself never does so.
   This has been fixed.
   (merge 4318094047 rs/archive-excluded-directory later to maint).

 * API error-proofing which happens to also squelch warnings from GCC.
   (merge c788c54cde tg/refs-allowed-flags later to maint).

 * The explanation of the cut-line in the commit log editor has been
   slightly tweaked.
   (merge 8c4b1a3593 ks/commit-do-not-touch-cut-line later to maint).

 * "git gc" tries to avoid running two instances at the same time by
   reading and writing pid/host from and to a lock file; it used to
   use an incorrect fscanf() format when reading, which has been
   corrected.
   (merge afe2fab72c aw/gc-lockfile-fscanf-fix later to maint).

 * The scripts to drive TravisCI has been reorganized and then an
   optimization to avoid spending cycles on a branch whose tip is
   tagged has been implemented.
   (merge 8376eb4a8f ls/travis-scriptify later to maint).

 * The test linter has been taught that we do not like "echo -e".
   (merge 1a6d46895d tb/test-lint-echo-e later to maint).

 * Code cmp.std.c nitpick.
   (merge ac7da78ede mh/for-each-string-list-item-empty-fix later to maint).

 * A regression fix for 2.11 that made the code to read the list of
   alternate object stores overrun the end of the string.
   (merge f0f7bebef7 jk/info-alternates-fix later to maint).

 * "git describe --match" learned to take multiple patterns in v2.13
   series, but the feature ignored the patterns after the first one
   and did not work at all.  This has been fixed.
   (merge da769d2986 jk/describe-omit-some-refs later to maint).

 * "git filter-branch" cannot reproduce a history with a tag without
   the tagger field, which only ancient versions of Git allowed to be
   created.  This has been corrected.
   (merge b2c1ca6b4b ic/fix-filter-branch-to-handle-tag-without-tagger later to maint).

 * "git cat-file --textconv" started segfaulting recently, which
   has been corrected.
   (merge cc0ea7c9e5 jk/diff-blob later to maint).

 * The built-in pattern to detect the "function header" for HTML did
   not match <H1>..<H6> elements without any attributes, which has
   been fixed.
   (merge 9c03caca2c ik/userdiff-html-h-element-fix later to maint).

 * "git mailinfo" was loose in decoding quoted printable and produced
   garbage when the two letters after the equal sign are not
   hexadecimal.  This has been fixed.
   (merge c8cf423eab rs/mailinfo-qp-decode-fix later to maint).

 * The machinery to create xdelta used in pack files received the
   sizes of the data in size_t, but lost the higher bits of them by
   storing them in "unsigned int" during the computation, which is
   fixed.

 * The delta format used in the packfile cannot reference data at
   offset larger than what can be expressed in 4-byte, but the
   generator for the data failed to make sure the offset does not
   overflow.  This has been corrected.

 * The documentation for '-X<option>' for merges was misleadingly
   written to suggest that "-s theirs" exists, which is not the case.
   (merge c25d98b2a7 jc/merge-x-theirs-docfix later to maint).

 * "git fast-export" with -M/-C option issued "copy" instruction on a
   path that is simultaneously modified, which was incorrect.
   (merge b3e8ca89cf jt/fast-export-copy-modify-fix later to maint).

 * Many codepaths have been updated to squelch -Wsign-compare
   warnings.
   (merge 071bcaab64 rj/no-sign-compare later to maint).

 * Memory leaks in various codepaths have been plugged.
   (merge 4d01a7fa65 ma/leakplugs later to maint).

 * Recent versions of "git rev-parse --parseopt" did not parse the
   option specification that does not have the optional flags (*=?!)
   correctly, which has been corrected.
   (merge a6304fa4c2 bc/rev-parse-parseopt-fix later to maint).

 * The checkpoint command "git fast-import" did not flush updates to
   refs and marks unless at least one object was created since the
   last checkpoint, which has been corrected, as these things can
   happen without any new object getting created.
   (merge 30e215a65c er/fast-import-dump-refs-on-checkpoint later to maint).

 * Spell the name of our system as "Git" in the output from
   request-pull script.
   (merge e66d7c37a5 ar/request-pull-phrasofix later to maint).

 * Other minor doc, test and build updates and code cleanups.
   (merge f094b89a4d ma/parse-maybe-bool later to maint).
   (merge 39b00fa4d4 jk/drop-sha1-entry-pos later to maint).
   (merge 6cdf8a7929 ma/ts-cleanups later to maint).
   (merge 7560f547e6 ma/up-to-date later to maint).
   (merge 0db3dc75f3 rs/apply-epoch later to maint).
   (merge 74f1bd912b dw/diff-highlight-makefile-fix later to maint).
   (merge f991761eb8 jk/config-lockfile-leak-fix later to maint).
   (merge 150efef1e7 ma/pkt-line-leakfix later to maint).
   (merge 5554451de6 mg/timestamp-t-fix later to maint).
   (merge 276d0e35c0 ma/split-symref-update-fix later to maint).
   (merge 3bc4b8f7c7 bb/doc-eol-dirty later to maint).
   (merge c1bb33c99c jk/system-path-cleanup later to maint).
   (merge ab46e6fc72 cc/subprocess-handshake-missing-capabilities later to maint).
   (merge f7a32dd97f kd/doc-for-each-ref later to maint).
   (merge be94568bc7 ez/doc-duplicated-words-fix later to maint).
   (merge 01e4be6c3d ks/test-readme-phrasofix later to maint).
   (merge 217bb56d4f hn/typofix later to maint).
   (merge c08fd6388c jk/doc-read-tree-table-asciidoctor-fix later to maint).
   (merge c3342b362e ks/doc-use-camelcase-for-config-name later to maint).
   (merge 0bca165fdb jk/validate-headref-fix later to maint).
   (merge 93dbefb389 mr/doc-negative-pathspec later to maint).
   (merge 5e633326e4 ad/doc-markup-fix later to maint).
   (merge 9ca356fa8b rs/cocci-de-paren-call-params later to maint).
   (merge 7099153e8d rs/tag-null-pointer-arith-fix later to maint).
   (merge 0e187d758c rs/run-command-use-alloc-array later to maint).

----------------------------------------------------------------

Changes since v2.14.0 are as follows:

Adam Dinwoodie (1):
      doc: correct command formatting

Andreas Heiduk (2):
      doc: add missing values "none" and "default" for diff.wsErrorHighlight
      doc: clarify "config --bool" behaviour with empty string

Ann T Ropea (1):
      request-pull: capitalise "Git" to make it a proper noun

Anthony Sottile (1):
      git-grep: correct exit code with --quiet and -L

Ben Boeckel (1):
      Documentation: mention that `eol` can change the dirty status of paths

Brandon Casey (7):
      t1502: demonstrate rev-parse --parseopt option mis-parsing
      rev-parse parseopt: do not search help text for flag chars
      rev-parse parseopt: interpret any whitespace as start of help text
      git-rebase: don't ignore unexpected command line arguments
      t0040,t1502: Demonstrate parse_options bugs
      parse-options: write blank line to correct output stream
      parse-options: only insert newline in help text if needed

Brandon Williams (29):
      repo_read_index: don't discard the index
      repository: have the_repository use the_index
      submodule--helper: teach push-check to handle HEAD
      cache.h: add GITMODULES_FILE macro
      config: add config_from_gitmodules
      submodule: remove submodule.fetchjobs from submodule-config parsing
      submodule: remove fetch.recursesubmodules from submodule-config parsing
      submodule: check for unstaged .gitmodules outside of config parsing
      submodule: check for unmerged .gitmodules outside of config parsing
      submodule: merge repo_read_gitmodules and gitmodules_config
      grep: recurse in-process using 'struct repository'
      t7411: check configuration parsing errors
      submodule: don't use submodule_from_name
      add, reset: ensure submodules can be added or reset
      submodule--helper: don't overlay config in remote_submodule_branch
      submodule--helper: don't overlay config in update-clone
      fetch: don't overlay config with submodule-config
      submodule: don't rely on overlayed config when setting diffopts
      unpack-trees: don't respect submodule.update
      submodule: remove submodule_config callback routine
      diff: stop allowing diff to have submodules configured in .git/config
      submodule-config: remove support for overlaying repository config
      submodule-config: move submodule-config functions to submodule-config.c
      submodule-config: lazy-load a repository's .gitmodules file
      unpack-trees: improve loading of .gitmodules
      submodule: remove gitmodules_config
      clone: teach recursive clones to respect -q
      clang-format: outline the git project's coding style
      Makefile: add style build rule

Christian Couder (3):
      refs: use skip_prefix() in ref_is_hidden()
      sub-process: print the cmd when a capability is unsupported
      sha1-lookup: remove sha1_entry_pos() from header file

Daniel Watkins (1):
      diff-highlight: add clean target to Makefile

Dimitrios Christidis (1):
      fmt-merge-msg: fix coding style

Eric Blake (1):
      git-contacts: also recognise "Reported-by:"

Eric Rannaud (1):
      fast-import: checkpoint: dump branches/tags/marks even if object_count==0

Evan Zacks (1):
      doc: fix minor typos (extra/duplicated words)

Han-Wen Nienhuys (5):
      submodule.h: typofix
      submodule.c: describe submodule_to_gitdir() in a new comment
      real_path: clarify return value ownership
      read_gitfile_gently: clarify return value ownership.
      string-list.h: move documentation from Documentation/api/ into header

Heiko Voigt (2):
      t5526: fix some broken && chains
      add test for bug in git-mv for recursive submodules

Hielke Christian Braun (1):
      gitweb: skip unreadable subdirectories

Ian Campbell (4):
      filter-branch: reset $GIT_* before cleaning up
      filter-branch: preserve and restore $GIT_AUTHOR_* and $GIT_COMMITTER_*
      filter-branch: stash away ref map in a branch
      filter-branch: use hash-object instead of mktag

Ilya Kantor (1):
      userdiff: fix HTML hunk header regexp

Jameson Miller (1):
      Improve performance of git status --ignored

Jeff Hostetler (1):
      hashmap: add API to disable item counting when threaded

Jeff King (110):
      t1414: document some reflog-walk oddities
      revision: disallow reflog walking with revs->limited
      log: clarify comment about reflog cycles
      log: do not free parents when walking reflog
      get_revision_1(): replace do-while with an early return
      rev-list: check reflog_info before showing usage
      reflog-walk: stop using fake parents
      reflog-walk: apply --since/--until to reflog dates
      check return value of verify_ref_format()
      docs/for-each-ref: update pointer to color syntax
      t: use test_decode_color rather than literal ANSI codes
      ref-filter: simplify automatic color reset
      ref-filter: abstract ref format into its own struct
      ref-filter: move need_color_reset_at_eol into ref_format
      ref-filter: provide a function for parsing sort options
      ref-filter: make parse_ref_filter_atom a private function
      ref-filter: factor out the parsing of sorting atoms
      ref-filter: pass ref_format struct to atom parsers
      color: check color.ui in git_default_config()
      for-each-ref: load config earlier
      rev-list: pass diffopt->use_colors through to pretty-print
      pretty: respect color settings for %C placeholders
      ref-filter: consult want_color() before emitting colors
      strbuf: use designated initializers in STRBUF_INIT
      t/lib-proto-disable: restore protocol.allow after config tests
      t5813: add test for hostname starting with dash
      connect: factor out "looks like command line option" check
      connect: reject dashed arguments for proxy commands
      connect: reject paths that look like command line options
      t6018: flesh out empty input/output rev-list tests
      revision: add rev_input_given flag
      rev-list: don't show usage when we see empty ref patterns
      revision: do not fallback to default when rev_input_given is set
      hashcmp: use memcmp instead of open-coded loop
      sha1_file: drop experimental GIT_USE_LOOKUP search
      trailer: put process_trailers() options into a struct
      interpret-trailers: add an option to show only the trailers
      interpret-trailers: add an option to show only existing trailers
      interpret-trailers: add an option to unfold values
      interpret-trailers: add --parse convenience option
      pretty: move trailer formatting to trailer.c
      t4205: refactor %(trailers) tests
      pretty: support normalization options for %(trailers)
      doc: fix typo in sendemail.identity
      config: use a static lock_file struct
      write_index_as_tree: cleanup tempfile on error
      setup_temporary_shallow: avoid using inactive tempfile
      setup_temporary_shallow: move tempfile struct into function
      verify_signed_buffer: prefer close_tempfile() to close()
      always check return value of close_tempfile
      tempfile: do not delete tempfile on failed close
      lockfile: do not rollback lock on failed close
      tempfile: prefer is_tempfile_active to bare access
      tempfile: handle NULL tempfile pointers gracefully
      tempfile: replace die("BUG") with BUG()
      tempfile: factor out activation
      tempfile: factor out deactivation
      tempfile: robustify cleanup handler
      tempfile: release deactivated strbufs instead of resetting
      tempfile: use list.h for linked list
      tempfile: remove deactivated list entries
      tempfile: auto-allocate tempfiles on heap
      lockfile: update lifetime requirements in documentation
      ref_lock: stop leaking lock_files
      stop leaking lock structs in some simple cases
      test-lib: --valgrind should not override --verbose-log
      test-lib: set LSAN_OPTIONS to abort by default
      add: free leaked pathspec after add_files_to_cache()
      update-index: fix cache entry leak in add_one_file()
      config: plug user_config leak
      reset: make tree counting less confusing
      reset: free allocated tree buffers
      repository: free fields before overwriting them
      set_git_dir: handle feeding gitdir to itself
      rev-parse: don't trim bisect refnames
      system_path: move RUNTIME_PREFIX to a sub-function
      git_extract_argv0_path: do nothing without RUNTIME_PREFIX
      add UNLEAK annotation for reducing leak false positives
      shortlog: skip format/parse roundtrip for internal traversal
      shell: drop git-cvsserver support by default
      archimport: use safe_pipe_capture for user input
      cvsimport: shell-quote variable used in backticks
      config: avoid "write_in_full(fd, buf, len) < len" pattern
      get-tar-commit-id: check write_in_full() return against 0
      avoid "write_in_full(fd, buf, len) != len" pattern
      convert less-trivial versions of "write_in_full() != len"
      pkt-line: check write_in_full() errors against "< 0"
      notes-merge: use ssize_t for write_in_full() return value
      config: flip return value of store_write_*()
      read_pack_header: handle signed/unsigned comparison in read result
      prefix_ref_iterator: break when we leave the prefix
      read_info_alternates: read contents into strbuf
      read_info_alternates: warn on non-trivial errors
      revision: replace "struct cmdline_pathspec" with argv_array
      cat-file: handle NULL object_context.path
      test-line-buffer: simplify command parsing
      curl_trace(): eliminate switch fallthrough
      consistently use "fallthrough" comments in switches
      doc: put literal block delimiter around table
      files-backend: prefer "0" for write_in_full() error check
      notes-merge: drop dead zero-write code
      prefer "!=" when checking read_in_full() result
      avoid looking at errno for short read_in_full() returns
      distinguish error versus short read from read_in_full()
      worktree: use xsize_t to access file size
      worktree: check the result of read_in_full()
      validate_headref: NUL-terminate HEAD buffer
      validate_headref: use skip_prefix for symref parsing
      validate_headref: use get_oid_hex for detached HEADs
      git: add --no-optional-locks option

Job Snijders (1):
      gitweb: add 'raw' blob_plain link in history overview

Joel Teichroeb (3):
      stash: add a test for stash create with no files
      stash: add a test for when apply fails during stash branch
      stash: add a test for stashing in a detached state

Johannes Schindelin (14):
      run_processes_parallel: change confusing task_cb convention
      git-gui (MinGW): make use of MSys2's msgfmt
      t3415: verify that an empty instructionFormat is handled as before
      rebase -i: generate the script via rebase--helper
      rebase -i: remove useless indentation
      rebase -i: do not invent onelines when expanding/collapsing SHA-1s
      rebase -i: also expand/collapse the SHA-1s via the rebase--helper
      t3404: relax rebase.missingCommitsCheck tests
      rebase -i: check for missing commits in the rebase--helper
      rebase -i: skip unnecessary picks using the rebase--helper
      t3415: test fixup with wrapped oneline
      rebase -i: rearrange fixup/squash lines using the rebase--helper
      Win32: simplify loading of DLL functions
      clang-format: adjust line break penalties

Jonathan Nieder (6):
      vcs-svn: remove more unused prototypes and declarations
      vcs-svn: remove custom mode constants
      vcs-svn: remove repo_delete wrapper function
      vcs-svn: move remaining repo_tree functions to fast_export.h
      pack: make packed_git_mru global a value instead of a pointer
      pathspec doc: parse_pathspec does not maintain references to args

Jonathan Tan (39):
      fsck: remove redundant parse_tree() invocation
      object: remove "used" field from struct object
      fsck: cleanup unused variable
      Documentation: migrate sub-process docs to header
      sub-process: refactor handshake to common function
      tests: ensure fsck fails on corrupt packfiles
      sha1_file: set whence in storage-specific info fn
      sha1_file: remove read_packed_sha1()
      diff: avoid redundantly clearing a flag
      diff: respect MIN_BLOCK_LENGTH for last block
      diff: define block by number of alphanumeric chars
      Doc: clarify that pack-objects makes packs, plural
      pack: move pack name-related functions
      pack: move static state variables
      pack: move pack_report()
      pack: move open_pack_index(), parse_pack_index()
      pack: move release_pack_memory()
      pack: move pack-closing functions
      pack: move use_pack()
      pack: move unuse_pack()
      pack: move add_packed_git()
      pack: move install_packed_git()
      pack: move {,re}prepare_packed_git and approximate_object_count
      pack: move unpack_object_header_buffer()
      pack: move get_size_from_delta()
      pack: move unpack_object_header()
      pack: move clear_delta_base_cache(), packed_object_info(), unpack_entry()
      pack: move nth_packed_object_{sha1,oid}
      pack: move check_pack_index_ptr(), nth_packed_object_offset()
      pack: move find_pack_entry_one(), is_pack_valid()
      pack: move find_sha1_pack()
      pack: move find_pack_entry() and make it global
      pack: move has_sha1_pack()
      pack: move has_pack_index()
      pack: move for_each_packed_object()
      Remove inadvertently added outgoing/packfile.h
      Add t/helper/test-write-cache to .gitignore
      git-compat-util: make UNLEAK less error-prone
      fast-export: do not copy from modified file

Junio C Hamano (49):
      t1408: add a test of stale packed refs covered by loose refs
      clean.c: use designated initializer
      http.c: http.sslcert and http.sslkey are both pathnames
      connect: reject ssh hostname that begins with a dash
      Git 2.7.6
      Git 2.8.6
      Git 2.9.5
      Git 2.10.4
      Git 2.11.3
      Git 2.12.4
      Git 2.13.5
      Git 2.14.1
      Start post 2.14 cycle
      perl/Git.pm: typofix in a comment
      The first batch of topics after the 2.14 cycle
      diff: retire sane_truncate_fn
      progress: simplify "delayed" progress API
      The second batch post 2.14
      t4200: give us a clean slate after "rerere gc" tests
      t4200: make "rerere gc" test more robust
      t4200: gather "rerere gc" together
      t4200: parameterize "rerere gc" custom expiry test
      rerere: represent time duration in timestamp_t internally
      rerere: allow approxidate in gc.rerereResolved/gc.rerereUnresolved
      The third batch post 2.14
      Prepare for 2.14.2
      The fourth batch post 2.14
      The fifth batch post 2.14
      The sixth batch post 2.14
      RelNotes: further fixes for 2.14.2 from the master front
      The seventh batch post 2.14
      travis: dedent a few scripts that are indented overly deeply
      subprocess: loudly die when subprocess asks for an unsupported capability
      cvsserver: move safe_pipe_capture() to the main package
      cvsserver: use safe_pipe_capture for `constant commands` as well
      gc: call fscanf() with %<len>s, not %<len>c, when reading hostname
      The eighth batch for 2.15
      Git 2.10.5
      Git 2.11.4
      Git 2.12.5
      Git 2.13.6
      Git 2.14.2
      branch: fix "copy" to never touch HEAD
      merge-strategies: avoid implying that "-s theirs" exists
      The ninth batch for 2.15
      The tenth batch for 2.15
      The eleventh batch for 2.15
      The twelfth batch for 2.15
      Git 2.15-rc0

Kaartic Sivaraam (13):
      hook: cleanup script
      hook: name the positional variables
      hook: add sign-off using "interpret-trailers"
      hook: add a simple first example
      commit: check for empty message before the check for untouched template
      hook: use correct logical variable
      t3200: cleanup cruft of a test
      builtin/branch: stop supporting the "--set-upstream" option
      branch: quote branch/ref names to improve readability
      help: change a message to be more precise
      commit-template: change a message to be more intuitive
      t/README: fix typo and grammatically improve a sentence
      doc: camelCase the config variables to improve readability

Kevin Daudt (3):
      stash: prevent warning about null bytes in input
      doc/for-each-ref: consistently use '=' to between argument names and values
      doc/for-each-ref: explicitly specify option names

Kevin Willford (9):
      format-patch: have progress option while generating patches
      rebase: turn on progress option by default for format-patch
      commit: skip discarding the index if there is no pre-commit hook
      perf: add test for writing the index
      read-cache: fix memory leak in do_write_index
      read-cache: avoid allocating every ondisk entry when writing
      merge-recursive: fix memory leak
      merge-recursive: remove return value from get_files_dirs
      merge-recursive: change current file dir string_lists to hashmap

Lars Schneider (11):
      t0021: keep filter log files on comparison
      t0021: make debug log file name configurable
      t0021: write "OUT <size>" only on success
      convert: put the flags field before the flag itself for consistent style
      convert: move multiple file filter error handling to separate function
      convert: refactor capabilities negotiation
      convert: add "status=delayed" to filter process protocol
      convert: display progress for filtered objects that have been delayed
      travis-ci: move Travis CI code into dedicated scripts
      travis-ci: skip a branch build if equal tag is present
      travis-ci: fix "skip_branch_tip_with_tag()" string comparison

Manav Rathi (1):
      docs: improve discoverability of exclude pathspec

Martin Koegler (2):
      diff-delta: fix encoding size that would not fit in "unsigned int"
      diff-delta: do not allow delta offset truncation

Martin Ågren (32):
      builtin.h: take over documentation from api-builtin.txt
      git.c: let builtins opt for handling `pager.foo` themselves
      git.c: provide setup_auto_pager()
      t7006: add tests for how git tag paginates
      tag: respect `pager.tag` in list-mode only
      tag: change default of `pager.tag` to "on"
      git.c: ignore pager.* when launching builtin as dashed external
      Doc/git-{push,send-pack}: correct --sign= to --signed=
      t5334: document that git push --signed=1 does not work
      config: introduce git_parse_maybe_bool_text
      config: make git_{config,parse}_maybe_bool equivalent
      treewide: deprecate git_config_maybe_bool, use git_parse_maybe_bool
      parse_decoration_style: drop unused argument `var`
      doc/interpret-trailers: fix "the this" typo
      convert: always initialize attr_action in convert_attrs
      pack-objects: take lock before accessing `remaining`
      strbuf_setlen: don't write to strbuf_slopbuf
      ThreadSanitizer: add suppressions
      Documentation/user-manual: update outdated example output
      treewide: correct several "up-to-date" to "up to date"
      pkt-line: re-'static'-ify buffer in packet_write_fmt_1()
      config: remove git_config_maybe_bool
      refs/files-backend: add longer-scoped copy of string to list
      refs/files-backend: fix memory leak in lock_ref_for_update
      refs/files-backend: correct return value in lock_ref_for_update
      refs/files-backend: add `refname`, not "HEAD", to list
      builtin/commit: fix memory leak in `prepare_index()`
      commit: fix memory leak in `reduce_heads()`
      leak_pending: use `object_array_clear()`, not `free()`
      object_array: use `object_array_clear()`, not `free()`
      object_array: add and use `object_array_pop()`
      pack-bitmap[-write]: use `object_array_clear()`, don't leak

Matthieu Moy (2):
      send-email: fix garbage removal after address
      send-email: don't use Mail::Address, even if available

Max Kirillov (2):
      describe: fix matching to actually match all patterns
      describe: teach --match to handle branches and remotes

Michael Forney (1):
      scripts: use "git foo" not "git-foo"

Michael Haggerty (77):
      add_packed_ref(): teach function to overwrite existing refs
      packed_ref_store: new struct
      packed_ref_store: move `packed_refs_path` here
      packed_ref_store: move `packed_refs_lock` member here
      clear_packed_ref_cache(): take a `packed_ref_store *` parameter
      validate_packed_ref_cache(): take a `packed_ref_store *` parameter
      get_packed_ref_cache(): take a `packed_ref_store *` parameter
      get_packed_refs(): take a `packed_ref_store *` parameter
      add_packed_ref(): take a `packed_ref_store *` parameter
      lock_packed_refs(): take a `packed_ref_store *` parameter
      commit_packed_refs(): take a `packed_ref_store *` parameter
      rollback_packed_refs(): take a `packed_ref_store *` parameter
      get_packed_ref(): take a `packed_ref_store *` parameter
      repack_without_refs(): take a `packed_ref_store *` parameter
      packed_peel_ref(): new function, extracted from `files_peel_ref()`
      packed_ref_store: support iteration
      packed_read_raw_ref(): new function, replacing `resolve_packed_ref()`
      packed-backend: new module for handling packed references
      packed_ref_store: make class into a subclass of `ref_store`
      commit_packed_refs(): report errors rather than dying
      commit_packed_refs(): use a staging file separate from the lockfile
      packed_refs_lock(): function renamed from lock_packed_refs()
      packed_refs_lock(): report errors via a `struct strbuf *err`
      packed_refs_unlock(), packed_refs_is_locked(): new functions
      clear_packed_ref_cache(): don't protest if the lock is held
      commit_packed_refs(): remove call to `packed_refs_unlock()`
      repack_without_refs(): don't lock or unlock the packed refs
      t3210: add some tests of bogus packed-refs file contents
      read_packed_refs(): die if `packed-refs` contains bogus data
      packed_ref_store: handle a packed-refs file that is a symlink
      files-backend: cheapen refname_available check when locking refs
      refs: retry acquiring reference locks for 100ms
      notes: make GET_NIBBLE macro more robust
      load_subtree(): remove unnecessary conditional
      load_subtree(): reduce the scope of some local variables
      load_subtree(): fix incorrect comment
      load_subtree(): separate logic for internal vs. terminal entries
      load_subtree(): check earlier whether an internal node is a tree entry
      load_subtree(): only consider blobs to be potential notes
      get_oid_hex_segment(): return 0 on success
      load_subtree(): combine some common code
      get_oid_hex_segment(): don't pad the rest of `oid`
      hex_to_bytes(): simpler replacement for `get_oid_hex_segment()`
      load_subtree(): declare some variables to be `size_t`
      load_subtree(): check that `prefix_len` is in the expected range
      packed-backend: don't adjust the reference count on lock/unlock
      struct ref_transaction: add a place for backends to store data
      packed_ref_store: implement reference transactions
      packed_delete_refs(): implement method
      files_pack_refs(): use a reference transaction to write packed refs
      prune_refs(): also free the linked list
      files_initial_transaction_commit(): use a transaction for packed refs
      t1404: demonstrate two problems with reference transactions
      files_ref_store: use a transaction to update packed refs
      packed-backend: rip out some now-unused code
      files_transaction_finish(): delete reflogs before references
      ref_iterator: keep track of whether the iterator output is ordered
      packed_ref_cache: add a backlink to the associated `packed_ref_store`
      die_unterminated_line(), die_invalid_line(): new functions
      read_packed_refs(): use mmap to read the `packed-refs` file
      read_packed_refs(): only check for a header at the top of the file
      read_packed_refs(): make parsing of the header line more robust
      for_each_string_list_item: avoid undefined behavior for empty list
      read_packed_refs(): read references with minimal copying
      packed_ref_cache: remember the file-wide peeling state
      mmapped_ref_iterator: add iterator over a packed-refs file
      mmapped_ref_iterator_advance(): no peeled value for broken refs
      packed-backend.c: reorder some definitions
      packed_ref_cache: keep the `packed-refs` file mmapped if possible
      read_packed_refs(): ensure that references are ordered when read
      packed_ref_iterator_begin(): iterate using `mmapped_ref_iterator`
      packed_read_raw_ref(): read the reference from the mmapped buffer
      ref_store: implement `refs_peel_ref()` generically
      packed_ref_store: get rid of the `ref_cache` entirely
      ref_cache: remove support for storing peeled values
      mmapped_ref_iterator: inline into `packed_ref_iterator`
      packed-backend.c: rename a bunch of things and update comments

Michael J Gruber (11):
      Documentation: use proper wording for ref format strings
      Documentation/git-for-each-ref: clarify peeling of tags for --format
      Documentation/git-merge: explain --continue
      merge: clarify call chain
      merge: split write_merge_state in two
      merge: save merge state earlier
      name-rev: change ULONG_MAX to TIME_MAX
      t7004: move limited stack prereq to test-lib
      t6120: test name-rev --all and --stdin
      t6120: clean up state after breaking repo
      t6120: test describe and name-rev with deep repos

Nguyễn Thái Ngọc Duy (17):
      branch: fix branch renaming not updating HEADs correctly
      revision.h: new flag in struct rev_info wrt. worktree-related refs
      refs.c: use is_dir_sep() in resolve_gitlink_ref()
      revision.c: refactor add_index_objects_to_pending()
      revision.c: --indexed-objects add objects from all worktrees
      refs.c: refactor get_submodule_ref_store(), share common free block
      refs: move submodule slash stripping code to get_submodule_ref_store
      refs: add refs_head_ref()
      revision.c: use refs_for_each*() instead of for_each_*_submodule()
      refs.c: move for_each_remote_ref_submodule() to submodule.c
      refs: remove dead for_each_*_submodule()
      revision.c: --all adds HEAD from all worktrees
      files-backend: make reflog iterator go through per-worktree reflog
      revision.c: --reflog add HEAD reflog from all worktrees
      rev-list: expose and document --single-worktree
      refs.c: remove fallback-to-main-store code get_submodule_ref_store()
      refs.c: reindent get_submodule_ref_store()

Nicolas Morey-Chaisemartin (7):
      stash: clean untracked files before reset
      pull: fix cli and config option parsing order
      pull: honor submodule.recurse config option
      imap-send: return with error if curl failed
      imap-send: add wrapper to get server credentials if needed
      imap_send: setup_curl: retreive credentials if not set in config file
      imap-send: use curl by default when possible

Paolo Bonzini (4):
      trailers: export action enums and corresponding lookup functions
      trailers: introduce struct new_trailer_item
      interpret-trailers: add options for actions
      interpret-trailers: fix documentation typo

Patryk Obara (10):
      sha1_file: fix definition of null_sha1
      commit: replace the raw buffer with strbuf in read_graft_line
      commit: allocate array using object_id size
      commit: rewrite read_graft_line
      builtin/hash-object: convert to struct object_id
      read-cache: convert to struct object_id
      sha1_file: convert index_path to struct object_id
      sha1_file: convert index_fd to struct object_id
      sha1_file: convert hash_sha1_file_literally to struct object_id
      sha1_file: convert index_stream to struct object_id

Philip Oakley (4):
      git-gui: remove duplicate entries from .gitconfig's gui.recentrepo
      git gui: cope with duplicates in _get_recentrepo
      git gui: de-dup selected repo from recentrepo history
      git gui: allow for a long recentrepo list

Phillip Wood (7):
      am: remember --rerere-autoupdate setting
      rebase: honor --rerere-autoupdate
      rebase -i: honor --rerere-autoupdate
      t3504: use test_commit
      cherry-pick/revert: remember --rerere-autoupdate
      cherry-pick/revert: reject --rerere-autoupdate when continuing
      am: fix signoff when other trailers are present

Raman Gupta (1):
      contrib/rerere-train: optionally overwrite existing resolutions

Ramsay Jones (9):
      credential-cache: interpret an ECONNRESET as an EOF
      builtin/add: add detail to a 'cannot chmod' error message
      test-lib: don't use ulimit in test prerequisites on cygwin
      test-lib: use more compact expression in PIPE prerequisite
      t9010-*.sh: skip all tests if the PIPE prereq is missing
      git-compat-util.h: xsize_t() - avoid -Wsign-compare warnings
      commit-slab.h: avoid -Wsign-compare warnings
      cache.h: hex2chr() - avoid -Wsign-compare warnings
      ALLOC_GROW: avoid -Wsign-compare warnings

Rene Scharfe (34):
      am: release strbufs after use in detect_patch_format()
      am: release strbuf on error return in hg_patch_to_mail()
      am: release strbuf after use in safe_to_abort()
      check-ref-format: release strbuf after use in check_ref_format_branch()
      clean: release strbuf after use in remove_dirs()
      clone: release strbuf after use in remove_junk()
      commit: release strbuf on error return in commit_tree_extended()
      connect: release strbuf on error return in git_connect()
      convert: release strbuf on error return in filter_buffer_or_fd()
      diff: release strbuf after use in diff_summary()
      diff: release strbuf after use in show_rename_copy()
      diff: release strbuf after use in show_stats()
      help: release strbuf on error return in exec_man_konqueror()
      help: release strbuf on error return in exec_man_man()
      help: release strbuf on error return in exec_woman_emacs()
      mailinfo: release strbuf after use in handle_from()
      mailinfo: release strbuf on error return in handle_boundary()
      merge: release strbuf after use in save_state()
      merge: release strbuf after use in write_merge_heads()
      notes: release strbuf after use in notes_copy_from_stdin()
      refs: release strbuf on error return in write_pseudoref()
      remote: release strbuf after use in read_remote_branches()
      remote: release strbuf after use in migrate_file()
      remote: release strbuf after use in set_url()
      send-pack: release strbuf on error return in send_pack()
      sha1_file: release strbuf on error return in index_path()
      shortlog: release strbuf after use in insert_one_record()
      sequencer: release strbuf after use in save_head()
      transport-helper: release strbuf after use in process_connect_service()
      userdiff: release strbuf after use in userdiff_get_textconv()
      utf8: release strbuf on error return in strbuf_utf8_replace()
      vcs-svn: release strbuf after use in end_revision()
      wt-status: release strbuf after use in read_rebase_todolist()
      wt-status: release strbuf after use in wt_longstatus_print_tracking()

René Scharfe (44):
      tree-diff: don't access hash of NULL object_id pointer
      notes: don't access hash of NULL object_id pointer
      receive-pack: don't access hash of NULL object_id pointer
      bswap: convert to unsigned before shifting in get_be32
      bswap: convert get_be16, get_be32 and put_be32 to inline functions
      add MOVE_ARRAY
      use MOVE_ARRAY
      apply: use COPY_ARRAY and MOVE_ARRAY in update_image()
      ls-files: don't try to prune an empty index
      dir: support platforms that require aligned reads
      pack-objects: remove unnecessary NULL check
      t0001: skip test with restrictive permissions if getpwd(3) respects them
      test-path-utils: handle const parameter of basename and dirname
      t3700: fix broken test under !POSIXPERM
      t4062: use less than 256 repetitions in regex
      sha1_file: avoid comparison if no packed hash matches the first byte
      apply: remove prefix_length member from apply_state
      merge: use skip_prefix()
      win32: plug memory leak on realloc() failure in syslog()
      strbuf: clear errno before calling getdelim(3)
      fsck: free buffers on error in fsck_obj()
      sha1_file: release delta_stack on error in unpack_entry()
      tree-walk: convert fill_tree_descriptor() to object_id
      t1002: stop using sum(1)
      t5001: add tests for export-ignore attributes and exclude pathspecs
      archive: factor out helper functions for handling attributes
      archive: don't queue excluded directories
      commit: remove unused inline function single_parent()
      apply: check date of potential epoch timestamps first
      apply: remove epoch date from regex
      archive: don't add empty directories to archives
      refs: make sha1 output parameter of refs_resolve_ref_unsafe() optional
      refs: pass NULL to refs_resolve_ref_unsafe() if hash is not needed
      refs: pass NULL to resolve_ref_unsafe() if hash is not needed
      mailinfo: don't decode invalid =XY quoted-printable sequences
      refs: pass NULL to refs_resolve_refdup() if hash is not needed
      refs: pass NULL to resolve_refdup() if hash is not needed
      coccinelle: remove parentheses that become unnecessary
      path: use strbuf_add_real_path()
      use strbuf_addstr() for adding strings to strbufs
      graph: use strbuf_addchars() to add spaces
      tag: avoid NULL pointer arithmetic
      repository: use FREE_AND_NULL
      run-command: use ALLOC_ARRAY

Ross Kabus (1):
      commit-tree: do not complete line in -F input

Sahil Dua (2):
      config: create a function to format section headers
      branch: add a --copy (-c) option to go with --move (-m)

Santiago Torres (1):
      t: lib-gpg: flush gpg agent on startup

Stefan Beller (49):
      diff.c: readability fix
      diff.c: move line ending check into emit_hunk_header
      diff.c: factor out diff_flush_patch_all_file_pairs
      diff.c: introduce emit_diff_symbol
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_MARKER
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_FRAGINFO
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_NO_LF_EOF
      diff.c: migrate emit_line_checked to use emit_diff_symbol
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_WORDS[_PORCELAIN]
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_INCOMPLETE
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_FILEPAIR_{PLUS, MINUS}
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_HEADER
      diff.c: emit_diff_symbol learns about DIFF_SYMBOL_BINARY_FILES
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_REWRITE_DIFF
      submodule.c: migrate diff output to use emit_diff_symbol
      diff.c: convert emit_binary_diff_body to use emit_diff_symbol
      diff.c: convert show_stats to use emit_diff_symbol
      diff.c: convert word diffing to use emit_diff_symbol
      diff.c: emit_diff_symbol learns about DIFF_SYMBOL_STAT_SEP
      diff.c: emit_diff_symbol learns about DIFF_SYMBOL_SUMMARY
      diff.c: buffer all output if asked to
      diff.c: color moved lines differently
      diff.c: color moved lines differently, plain mode
      diff.c: add dimming to moved line detection
      diff: document the new --color-moved setting
      attr.c: drop hashmap_cmp_fn cast
      builtin/difftool.c: drop hashmap_cmp_fn cast
      builtin/describe: drop hashmap_cmp_fn cast
      config.c: drop hashmap_cmp_fn cast
      convert/sub-process: drop cast to hashmap_cmp_fn
      patch-ids.c: drop hashmap_cmp_fn cast
      remote.c: drop hashmap_cmp_fn cast
      submodule-config.c: drop hashmap_cmp_fn cast
      name-hash.c: drop hashmap_cmp_fn cast
      t/helper/test-hashmap: use custom data instead of duplicate cmp functions
      commit: convert lookup_commit_graft to struct object_id
      tag: convert gpg_verify_tag to use struct object_id
      t8008: rely on rev-parse'd HEAD instead of sha1 value
      t1200: remove t1200-tutorial.sh
      sha1_file: make read_info_alternates static
      submodule.sh: remove unused variable
      builtin/merge: honor commit-msg hook for merges
      push, fetch: error out for submodule entries not pointing to commits
      replace-objects: evaluate replacement refs without using the object store
      Documentation/githooks: mention merge in commit-msg hook
      Documentation/config: clarify the meaning of submodule.<name>.update
      t7406: submodule.<name>.update command must not be run from .gitmodules
      diff: correct newline in summary for renamed files
      submodule: correct error message for missing commits

Stephan Beyer (1):
      clang-format: add a comment about the meaning/status of the

Takashi Iwai (2):
      sha1dc: build git plumbing code more explicitly
      sha1dc: allow building with the external sha1dc library

Thomas Gummerer (2):
      read-cache: fix index corruption with index v4
      refs: strip out not allowed flags from ref_transaction_update

Tom G. Christensen (2):
      http: fix handling of missing CURLPROTO_*
      http: use a feature check to enable GSSAPI delegation control

Torsten Bögershausen (3):
      convert: add SAFE_CRLF_KEEP_CRLF
      apply: file commited with CRLF should roundtrip diff and apply
      test-lint: echo -e (or -E) is not portable

Urs Thuermann (1):
      git svn fetch: Create correct commit timestamp when using --localtime

William Duclot (1):
      rebase: make resolve message clearer for inexperienced users

brian m. carlson (14):
      builtin/fsck: convert remaining caller of get_sha1 to object_id
      builtin/merge-tree: convert remaining caller of get_sha1 to object_id
      submodule: convert submodule config lookup to use object_id
      remote: convert struct push_cas to struct object_id
      sequencer: convert to struct object_id
      builtin/update_ref: convert to struct object_id
      bisect: convert bisect_checkout to struct object_id
      builtin/unpack-file: convert to struct object_id
      Convert remaining callers of get_sha1 to get_oid.
      sha1_name: convert get_sha1* to get_oid*
      sha1_name: convert GET_SHA1* flags to GET_OID*
      sha1_name: convert uses of 40 to GIT_SHA1_HEXSZ
      vcs-svn: remove unused prototypes
      vcs-svn: rename repo functions to "svn_repo"

joernchen (1):
      cvsserver: use safe_pipe_capture instead of backticks

Ævar Arnfjörð Bjarmason (2):
      branch: add test for -m renaming multiple config sections
      tests: don't give unportable ">" to "test" built-in, use -gt

Øystein Walle (1):
      rev-parse: rev-parse: add --is-shallow-repository

Łukasz Gryglicki (1):
      merge: add a --signoff flag


^ permalink raw reply	[relevance 2%]

* Short-term plans for the post 2.9 cycle
@ 2016-06-19 22:52  5% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-06-19 22:52 UTC (permalink / raw)
  To: git

Here are the list of topics that are in the "private edition" I use
for every day work, grouped by where they sit in the the near-term
plan of merging them up to 'next' and then to 'master'.

These will be merged to 'master' soonish.

 ew/fast-import-unpack-limit
 ah/no-verify-signature-with-pull-rebase
 ew/daemon-socket-keepalive
 sb/submodule-misc-cleanups
 sb/submodule-recommend-shallowness
 et/pretty-format-c-auto
 jg/dash-is-last-branch-in-worktree-add
 aq/upload-pack-use-parse-options
 jc/clear-pathspec
 wd/userdiff-css
 jk/rev-list-count-with-bitmap
 rs/xdiff-hunk-with-func-line

These will be in 'next' immediately after the above gets merged to
'master'.

 cc/apply-introduce-state

These have been in 'next', but will be kicked back to give them
chance to clean up when 'next' is rewound.

 mh/split-under-lock
 mh/ref-iterators
 jc/attr
 sb/pathspec-label

These are expected to be merged to 'next' in the first batch after
'next' gets rewound.

 pc/occurred
 tr/doc-tt
 ap/git-svn-propset-doc
 jk/fetch-prune-doc
 dn/gpg-doc
 pb/strbuf-read-file-doc
 lf/receive-pack-auto-gc-to-client
 mg/cherry-pick-multi-on-unborn
 sg/reflog-past-root
 vs/prompt-avoid-unset-variable
 rj/compat-regex-size-max-fix
 jk/avoid-unbounded-alloca
 et/add-chmod-x
 jc/deref-tag
 nb/gnome-keyring-build
 lv/status-say-working-tree-not-directory
 tb/complete-status
 em/newer-freebsd-shells-are-fine-with-returns

These are the second batch for 'next'.

 km/fetch-do-not-free-remote-name
 jk/parseopt-string-list
 jk/string-list-static-init
 lf/sideband-returns-void
 jk/bisect-show-tree
 jk/add-i-diff-compact-heuristics
 jk/big-and-future-archive-tar
 jk/send-pack-stdio
 lf/recv-sideband-cleanup
 pb/commit-editmsg-path
 nd/test-lib-httpd-show-error-log-in-verbose
 ep/http-curl-trace

These are the third batch.

 mh/connect
 ew/mboxrd-format-am
 jk/repack-keep-unreachable
 jk/gpg-interface-cleanup
 sb/submodule-clone-retry
 mg/signature-doc

These are the fourth.

 nd/worktree-cleanup-post-head-protection
 jk/upload-pack-hook
 nd/graph-width-padded
 nd/shallow-deepen
 sb/submodule-default-paths
 nd/worktree-lock

These are the remainder.

 jc/blame-reverse
 jc/send-email-skip-backup
 va/i18n-even-more
 dt/index-helper
 dk/blame-move-no-reason-for-1-line-context
 sb/clone-shallow-passthru

Some of them that are regression fixes may need to jump the queue
and land on 'master' earlier than others.

^ permalink raw reply	[relevance 5%]

* What's cooking in git.git (Apr 2016, #04; Tue, 12)
@ 2016-04-12 23:08  1% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-04-12 23:08 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The 'master' branch now has the third batch of topics of this
cycle.

There are a handful of topics that are stuck; they are marked as
"Needs review", "Needs an Ack", etc. in the following list.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* jc/merge-refuse-new-root (2016-03-23) 1 commit
  (merged to 'next' on 2016-04-04 at cd70fd6)
 + merge: refuse to create too cool a merge by default

 Originally merged to 'next' on 2016-03-23

 "git merge" used to allow merging two branches that have no common
 base by default, which led to a brand new history of an existing
 project created and then get pulled by an unsuspecting maintainer,
 which allowed an unnecessary parallel history merged into the
 existing project.  The command has been taught not to allow this by
 default, with an escape hatch "--allow-unrelated-histories" option
 to be used in a rare event that merges histories of two projects
 that started their lives independently.


* nd/apply-doc (2016-03-24) 2 commits
  (merged to 'next' on 2016-04-06 at f9bd355)
 + git-apply.txt: mention the behavior inside a subdir
 + git-apply.txt: remove a space

 A minor documentation update.


* nd/apply-report-skip (2016-03-24) 1 commit
  (merged to 'next' on 2016-04-06 at ae2c824)
 + apply: report patch skipping in verbose mode

 "git apply -v" learned to report paths in the patch that were
 skipped via --include/--exclude mechanism or being outside the
 current working directory.


* oa/doc-diff-check (2016-03-29) 1 commit
  (merged to 'next' on 2016-04-06 at e3d6e8d)
 + Documentation: git diff --check detects conflict markers

 A minor documentation update.


* pb/opt-cmdmode-doc (2016-03-25) 1 commit
  (merged to 'next' on 2016-04-06 at a5f3835)
 + api-parse-options.txt: document OPT_CMDMODE()

 Minor API documentation update.


* ss/msvc (2016-03-30) 2 commits
  (merged to 'next' on 2016-04-06 at 4b53bce)
 + MSVC: use shipped headers instead of fallback definitions
 + MSVC: vsnprintf in Visual Studio 2015 doesn't need SNPRINTF_SIZE_CORR any more

 Build updates for MSVC.

--------------------------------------------------
[New Topics]

* ad/commit-have-m-option (2016-04-07) 2 commits
 - commit: do not ignore an empty message given by -m ''
 - commit: --amend -m '' silently fails to wipe message

 "git commit" misbehaved in a few minor ways when an empty message
 is given via -m '', all of which has been corrected.

 Will merge to 'next'.


* jc/xstrfmt-null-with-prec-0 (2016-04-07) 1 commit
 - setup.c: do not feed NULL to "%.*s" even with precision 0

 Will merge to 'next'.


* dt/pre-refs-backend (2016-04-10) 24 commits
 - refs: on symref reflog expire, lock symref not referrent
 - refs: move resolve_ref_unsafe into common code
 - show_head_ref(): check the result of resolve_ref_namespace()
 - check_aliased_update(): check that dst_name is non-NULL
 - checkout_paths(): remove unneeded flag variable
 - cmd_merge(): remove unneeded flag variable
 - fsck_head_link(): remove unneeded flag variable
 - read_raw_ref(): change flags parameter to unsigned int
 - files-backend: inline resolve_ref_1() into resolve_ref_unsafe()
 - read_raw_ref(): manage own scratch space
 - files-backend: break out ref reading
 - resolve_ref_1(): eliminate local variable "bad_name"
 - resolve_ref_1(): reorder code
 - resolve_ref_1(): eliminate local variable
 - resolve_ref_unsafe(): ensure flags is always set
 - resolve_ref_unsafe(): use for loop to count up to MAXDEPTH
 - resolve_missing_loose_ref(): simplify semantics
 - t1430: improve test coverage of deletion of badly-named refs
 - t1430: test for-each-ref in the presence of badly-named refs
 - t1430: don't rely on symbolic-ref for creating broken symrefs
 - t1430: clean up broken refs/tags/shadow
 - t1430: test the output and error of some commands more carefully
 - refs: move for_each_*ref* functions into common code
 - refs: move head_ref{,_submodule} to the common code
 (this branch uses jk/check-repository-format.)

 Code restructuring around the "refs" area to prepare for pluggable
 refs backends.

 Will merge to 'next'.


* ky/imap-send (2016-04-08) 2 commits
 - imap-send: fix CRAM-MD5 response calculation
 - imap-send: check for NOLOGIN capability only when using LOGIN command

 Support for CRAM-MD5 authentication method in "git imap-send" did
 not work well.

 Will merge to 'next'.


* ky/imap-send-openssl-1.1.0 (2016-04-08) 4 commits
 - configure: remove checking for HMAC_CTX_cleanup
 - imap-send: avoid deprecated TLSv1_method()
 - imap-send: check NULL return of SSL_CTX_new()
 - imap-send: use HMAC() function provided by OpenSSL

 Upcoming OpenSSL 1.1.0 will break compilation b updating a few APIs
 we use in imap-send, which has been adjusted for the change.

 Will merge to 'next'.


* jc/http-socks5h (2016-04-10) 1 commit
 - http: differentiate socks5:// and socks5h://

 The socks5:// proxy support added back in 2.6.4 days was not aware
 that socks5h:// proxies behave differently.

 Will merge to 'next'.


* jc/send-email-skip-backup (2016-04-12) 1 commit
 - send-email: detect and offer to skip backup files

 A careless invocation of "git send-email directory/" after editing
 0001-change.patch with an editor often ends up sending both
 0001-change.patch and its backup file, 0001-change.patch~, causing
 embarrassment and a minor confusion.  Detect such an input and
 offer to skip the backup files when sending the patches out.

 Needs review.


* jk/do-not-printf-NULL (2016-04-10) 3 commits
 - git_config_set_multivar_in_file: handle "unset" errors
 - git_config_set_multivar_in_file: all non-zero returns are errors
 - config: lower-case first word of error strings

 "git config" had a codepath that tried to pass a NULL to
 printf("%s"), which nobody seems to have noticed.

 Will merge to 'next'.


* jk/use-write-script-more (2016-04-12) 3 commits
 - t3404: use write_script
 - t1020: do not overuse printf and use write_script
 - t5532: use write_script

 Code clean-up.

 Will merge to 'next'.


* nf/mergetool-prompt (2016-04-12) 2 commits
 - SQUASH???
 - difftool/mergetool: make the form of yes/no questions consistent

 UI consistency improvements.


* va/i18n-misc-updates (2016-04-12) 4 commits
 - i18n: builtin/rm.c: remove a comma ',' from string
 - i18n: unpack-trees: mark strings for translation
 - i18n: builtin/branch.c: mark option for translation
 - i18n: index-pack: use plural string instead of normal one

 Mark several messages for translation.

--------------------------------------------------
[Stalled]

* tb/safe-crlf-output-fix (2016-04-01) 7 commits
 . convert.c: more safer crlf handling with text attribute
 . correct blame for files commited with CRLF
 . convert: unify the "auto" handling of CRLF
 . t0027: test cases for combined attributes
 . convert: allow core.autocrlf=input and core.eol=crlf
 . convert.c: stream and early out
 . read-cache: factor out get_sha1_from_index() helper

 The "safe CRLF" facility disables line-end conversion from CRLF to
 LF when checking in if the blob registered to the index already
 contains CR, but some codepaths like "git blame" did not know this,
 and instead assumed that only the configuration and attribute
 settings determined how the data from the working tree is converted.

 Will be rerolled.
 ($gmane/290637)


* da/user-useconfigonly (2016-04-01) 2 commits
 - ident: give "please tell me" message upon useConfigOnly error
 - ident: check for useConfigOnly before auto-detection of name/email

 The "user.useConfigOnly" configuration variable makes it an error
 if users do not explicitly set user.name and user.email.  However,
 its check was not done early enough and allowed another error to
 trigger, reporting that the default value we guessed from the
 system setting was unusable.  This was a suboptimal end-user
 experience as we want the users to set user.name/user.email without
 relying on the auto-detection at all.

 Waiting for Acks.
 ($gmane/290340)


* sb/clone-shallow-passthru (2016-03-23) 3 commits
 - clone: add t5614 to test cloning submodules with shallowness involved
 - submodule clone: pass along `local` option
 - clone: add `--shallow-submodules` flag

 "git clone" learned "--shallow-submodules" option.

 Needs review.


* sg/completion-updates (2016-02-28) 21 commits
 - completion: cache the path to the repository
 - completion: extract repository discovery from __gitdir()
 - completion: don't guard git executions with __gitdir()
 - completion: consolidate silencing errors from git commands
 - completion: don't use __gitdir() for git commands
 - completion: respect 'git -C <path>'
 - completion: fix completion after 'git -C <path>'
 - completion: don't offer commands when 'git --opt' needs an argument
 - rev-parse: add '--absolute-git-dir' option
 - completion: list short refs from a remote given as a URL
 - completion: don't list 'HEAD' when trying refs completion outside of a repo
 - completion: list refs from remote when remote's name matches a directory
 - completion: respect 'git --git-dir=<path>' when listing remote refs
 - completion: fix most spots not respecting 'git --git-dir=<path>'
 - completion: ensure that the repository path given on the command line exists
 - completion tests: add tests for the __git_refs() helper function
 - completion tests: check __gitdir()'s output in the error cases
 - completion tests: consolidate getting path of current working directory
 - completion tests: make the $cur variable local to the test helper functions
 - completion tests: don't add test cruft to the test repository
 - completion: improve __git_refs()'s in-code documentation

 Will be rerolled.
 ($gmane/287839)


* nd/shallow-deepen (2016-02-23) 25 commits
 - fetch, upload-pack: --deepen=N extends shallow boundary by N commits
 - upload-pack: add get_reachable_list()
 - upload-pack: split check_unreachable() in two, prep for get_reachable_list()
 - t5500, t5539: tests for shallow depth excluding a ref
 - clone: define shallow clone boundary with --shallow-exclude
 - fetch: define shallow boundary with --shallow-exclude
 - upload-pack: support define shallow boundary by excluding revisions
 - refs: add expand_ref()
 - t5500, t5539: tests for shallow depth since a specific date
 - clone: define shallow clone boundary based on time with --shallow-since
 - fetch: define shallow boundary with --shallow-since
 - upload-pack: add deepen-since to cut shallow repos based on time
 - shallow.c: implement a generic shallow boundary finder based on rev-list
 - fetch-pack: use a separate flag for fetch in deepening mode
 - fetch-pack: use a common function for verbose printing
 - fetch-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move rev-list code out of check_non_tip()
 - upload-pack: tighten number parsing at "deepen" lines
 - upload-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move "unshallow" sending code out of deepen()
 - upload-pack: remove unused variable "backup"
 - upload-pack: move "shallow" sending code out of deepen()
 - upload-pack: move shallow deepen code out of receive_needs()
 - transport-helper.c: refactor set_helper_option()
 - remote-curl.c: convert fetch_git() to use argv_array

 The existing "git fetch --depth=<n>" option was hard to use
 correctly when making the history of an existing shallow clone
 deeper.  A new option, "--deepen=<n>", has been added to make this
 easier to use.  "git clone" also learned "--shallow-since=<date>"
 and "--shallow-exclude=<tag>" options to make it easier to specify
 "I am interested only in the recent N months worth of history" and
 "Give me only the history since that version".

 Needs review.


* sb/submodule-init (2016-03-15) 2 commits
 . submodule: port init from shell to C
 . submodule: port resolve_relative_url from shell to C

 Update of "git submodule" to move pieces of logic to C continues.

 Needs to be adjusted for the recent "prefix" fixes.


* az/p4-bare-no-rebase (2016-02-19) 1 commit
 - git-p4.py: Don't try to rebase on submit from bare repository

 "git p4 submit" attempts to do a rebase, which would fail if done
 in a bare repository.  Not doing this rebase would paper over the
 failure, which is what this patch does, but it is unclear what the
 side effect of not rebasing is.

 Needs a better explanation.


* ss/commit-dry-run-resolve-merge-to-no-op (2016-02-17) 1 commit
 - wt-status.c: set commitable bit if there is a meaningful merge.

 "git commit --dry-run" reported "No, no, you cannot commit." in one
 case where "git commit" would have allowed you to commit, and this
 improves it a little bit ("git commit --dry-run --short" still does
 not give you the correct answer, for example).


* nd/icase (2016-02-15) 12 commits
 - grep.c: reuse "icase" variable
 - diffcore-pickaxe: support case insensitive match on non-ascii
 - diffcore-pickaxe: "share" regex error handling code
 - grep/pcre: support utf-8
 - gettext: add is_utf8_locale()
 - grep/pcre: prepare locale-dependent tables for icase matching
 - grep/icase: avoid kwsset when -F is specified
 - grep/icase: avoid kwsset on literal non-ascii strings
 - test-regex: expose full regcomp() to the command line
 - test-regex: isolate the bug test code
 - grep: break down an "if" stmt in preparation for next changes
 - grep: allow -F -i combination

 "git grep -i" has been taught to fold case in non-ascii locales.

 Needs review.
 ($gmane/286137)


* ec/annotate-deleted (2015-11-20) 1 commit
 - annotate: skip checking working tree if a revision is provided

 Usability fix for annotate-specific "<file> <rev>" syntax with deleted
 files.

 Waiting for review.


* dg/subtree-rebase-test (2016-01-19) 1 commit
 - contrib/subtree: Add a test for subtree rebase that loses commits

 Reviewed up to v5.
 Will be rerolled.
 ($gmane/284426)


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
 - am: make a direct call to merge_recursive
 - merge_recursive_options: introduce the "gently" flag

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.

 Being able to make a direct call would be good in general, but as a
 performance thing, the change needs to be backed up by numbers.

 Needs review.

 I haven't gone through the "gently" change with fine toothed comb;
 I can see that the change avoids calling die(), but I haven't made
 sure that the program states (e.g. what's in the in-core index) are
 adjusted sensibly when it returns to the caller instead of dying,
 or the codepaths that used to die() are free of resource leaks.
 The original code certainly did not care the program states at the
 point of dying exactly because it knew it is going to exit, but now
 they have to care, and they need to be audited.


* dk/gc-more-wo-pack (2016-01-13) 4 commits
 - gc: clean garbage .bitmap files from pack dir
 - t5304: ensure non-garbage files are not deleted
 - t5304: test .bitmap garbage files
 - prepare_packed_git(): find more garbage

 Follow-on to dk/gc-idx-wo-pack topic, to clean up stale
 .bitmap and .keep files.

 Waiting for a reroll.
 ($gmane/284368).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.
 Will discard.

--------------------------------------------------
[Cooking]

* jc/drop-git-spec-in (2016-04-06) 1 commit
 - Makefile: stop pretending to support rpmbuild

 As nobody maintains our in-tree git.spec.in and distros use their
 own spec file, we stopped pretending that we support "make rpm".

 Comments?


* jc/makefile-redirection-stderr (2016-04-05) 1 commit
  (merged to 'next' on 2016-04-06 at e3f2ded)
 + Makefile: fix misdirected redirections

 A minor fix in the Makefile.

 Will merge to 'master'.


* js/mingw-tests-2.8 (2016-04-04) 1 commit
  (merged to 'next' on 2016-04-06 at f85a013)
 + Windows: shorten code by re-using convert_slashes()

 Code clean-up.

 Will merge to 'master'.


* ar/diff-args-osx-precompose (2016-04-05) 1 commit
 - diff: run arguments through precompose_argv

 Many commands normalize command line arguments from NFD to NFC
 variant of UTF-8 on OSX, but commands in the "diff" family did
 not, causing "git diff $path" to complain that no such path is
 known to Git.  They have been taught to do the normalization.

 Will be rerolled?
 ($gmane/290724)


* ep/trace-doc-sample-fix (2016-04-05) 1 commit
  (merged to 'next' on 2016-04-06 at 0df7357)
 + api-trace.txt: fix typo

 Fix a typo in an example in the trace API documentation.

 Will merge to 'master'.


* ew/send-email-readable-message-id (2016-04-06) 1 commit
 - send-email: more meaningful Message-ID

 "git send-email" now uses a more readable timestamps when
 formulating a message ID.

 Will merge to 'next'.


* mg/complete-cherry-mark-to-log (2016-04-05) 1 commit
  (merged to 'next' on 2016-04-06 at 3002be6)
 + completion: complete --cherry-mark for git log

 The completion scripts (in contrib/) did not include the
 "--cherry-mark" option when completing "git log <HT>".

 Will merge to 'master'.


* tb/blame-force-read-cache-to-workaround-safe-crlf (2016-04-05) 1 commit
  (merged to 'next' on 2016-04-06 at 263bba8)
 + correct blame for files commited with CRLF

 When running "git blame $path" with unnormalized data in the index
 for the path, the data in the working tree was blamed, even though
 "git add" would not have changed what is already in the index, due
 to "safe crlf" that disables the line-end conversion.  It has been
 corrected.

 Will merge to 'master'.


* st/verify-tag (2016-04-06) 3 commits
 - verify-tag: change variable name for readability
 - t7030: test verifying multiple tags
 - builtin/verify-tag.c: ignore SIGPIPE in gpg-interface

 Only the first three patches in a six-patch series.
 Needs further work.


* ew/send-email-drop-data-dumper (2016-04-06) 1 commit
 - send-email: do not load Data::Dumper

 Code clean-up.

 Will merge to 'next'.


* es/format-patch-doc-hide-no-patch (2016-04-04) 1 commit
  (merged to 'next' on 2016-04-06 at 25d79bb)
 + git-format-patch.txt: don't show -s as shorthand for multiple options

 "git format-patch --help" showed `-s` and `--no-patch` as if these
 are valid options to the command.  We already hide `--patch` option
 from the documentation, because format-patch is about showing the
 diff, and the documentation now hides these options as well.

 Will merge to 'master'.


* jk/branch-shortening-funny-symrefs (2016-04-04) 1 commit
  (merged to 'next' on 2016-04-06 at 1a3f8be)
 + branch: fix shortening of non-remote symrefs

 A change back in version 2.7 to "git branch" broke display of a
 symbolic ref in a non-standard place in the refs/ hierarchy (we
 expect symbolic refs to appear in refs/remotes/*/HEAD to point at
 the primary branch the remote has, and as .git/HEAD to point at the
 branch we locally checked out).

 Will merge to 'next' and later down to maint-2.7.


* jn/mergetools-examdiff (2016-04-04) 2 commits
  (merged to 'next' on 2016-04-06 at 819e858)
 + mergetools: add support for ExamDiff
 + mergetools: create mergetool_find_win32_cmd() helper function for winmerge

 "git mergetools" learned to drive ExamDiff.

 Will merge to 'master'.


* kn/for-each-tag-branch (2016-03-30) 1 commit
  (merged to 'next' on 2016-04-06 at 4595ad3)
 + for-each-ref: fix description of '--contains' in manpage

 A minor documentation update.

 Will merge to 'master'.


* kn/ref-filter-branch-list (2016-04-12) 16 commits
 . branch: implement '--format' option
 . branch: use ref-filter printing APIs
 . branch, tag: use porcelain output
 . ref-filter: allow porcelain to translate messages in the output
 . ref-filter: add support for %(refname:dir) and %(refname:base)
 . ref-filter: introduce refname_atom_parser()
 . ref-filter: introduce symref_atom_parser()
 . ref-filter: make "%(symref)" atom work with the ':short' modifier
 . ref-filter: add support for %(upstream:track,nobracket)
 . ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
 . ref-filter: introduce format_ref_array_item()
 . ref-filter: move get_head_description() from branch.c
 . ref-filter: modify "%(objectname:short)" to take length
 . ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
 . ref-filter: include reference to 'used_atom' within 'atom_value'
 . ref-filter: implement %(if), %(then), and %(else) atoms

 The code to list branches in "git branch" has been consolidated
 with the more generic ref-filter API.

 Rerolled but seems to lack jk/branch-shortening-funny-symrefs aka
 $gmane/291295 yet.


* rz/worktree-no-checkout (2016-03-29) 1 commit
  (merged to 'next' on 2016-04-06 at e725216)
 + worktree: add: introduce --checkout option

 "git worktree add" can be given "--no-checkout" option to only
 create an empty worktree without checking out the files.

 Will merge to 'master'.


* sb/misc-cleanups (2016-04-01) 4 commits
  (merged to 'next' on 2016-04-06 at 4e63691)
 + credential-cache, send_request: close fd when done
 + bundle: don't leak an fd in case of early return
 + abbrev_sha1_in_line: don't leak memory
 + notes: don't leak memory in git_config_get_notes_strategy

 Assorted minor clean-ups.

 Will merge to 'master'.


* sb/submodule-helper-clone-regression-fix (2016-04-01) 6 commits
 - submodule--helper, module_clone: catch fprintf failure
 - submodule--helper: do not borrow absolute_path() result for too long
 - submodule--helper, module_clone: always operate on absolute paths
 - submodule--helper clone: create the submodule path just once
 - submodule--helper: fix potential NULL-dereference
 - recursive submodules: test for relative paths

 A partial rewrite of "git submodule" in the 2.7 timeframe changed
 the way the gitdir: pointer in the submodules point at the real
 repository location to use absolute paths by accident.  This has
 been corrected.

 Will merge to 'next'.


* sb/submodule-path-misc-bugs (2016-03-30) 6 commits
 - t7407: make expectation as clear as possible
 - submodule update: test recursive path reporting from subdirectory
 - submodule update: align reporting path for custom command execution
 - submodule status: correct path handling in recursive submodules
 - submodule update --init: correct path handling in recursive submodules
 - submodule foreach: correct path display in recursive submodules

 "git submodule" reports the paths of submodules the command
 recurses into, but this was incorrect when the command was not run
 from the root level of the superproject.

 Any further comments?  Otherwise will merge to 'next'.


* sg/diff-multiple-identical-renames (2016-03-30) 1 commit
  (merged to 'next' on 2016-04-06 at ac19e48)
 + diffcore: fix iteration order of identical files during rename detection

 "git diff -M" used to work better when two originally identical
 files A and B got renamed to X/A and X/B by pairing A to X/A and B
 to X/B, but this was broken in the 2.0 timeframe.

 Will merge to 'master'.


* sk/send-pack-all-fix (2016-03-31) 1 commit
  (merged to 'next' on 2016-04-06 at 31e1e1b)
 + git-send-pack: fix --all option when used with directory

 "git send-pack --all <there>" was broken when its command line
 option parsing was written in the 2.6 timeframe.

 Will merge to 'master'.


* xy/format-patch-base (2016-04-12) 4 commits
 - format-patch: introduce format.base configuration
 - format-patch: introduce --base=auto option
 - format-patch: add '--base' option to record base tree info
 - patch-ids: make commit_patch_id() a public helper function

 "git format-patch" learned a new "--base" option to record what
 (public, well-known) commit the original series was built on in
 its output.

 Review comments sent.
 ($gmane/291198)


* ak/use-hashmap-iter-first-in-submodule-config (2016-03-23) 1 commit
  (merged to 'next' on 2016-04-06 at 2aab890)
 + submodule-config: use hashmap_iter_first()

 Minor code cleanup.

 Will merge to 'master'.


* ky/branch-d-worktree (2016-03-29) 1 commit
  (merged to 'next' on 2016-04-06 at 00f9bff)
 + branch -d: refuse deleting a branch which is currently checked out

 When "git worktree" feature is in use, "git branch -d" allowed
 deletion of a branch that is checked out in another worktree

 Will merge to 'master'.


* ky/branch-m-worktree (2016-04-08) 3 commits
  (merged to 'next' on 2016-04-08 at b673b5e)
 + set_worktree_head_symref(): fix error message
  (merged to 'next' on 2016-04-06 at e7b285c)
 + branch -m: update all per-worktree HEADs
 + refs: add a new function set_worktree_head_symref

 When "git worktree" feature is in use, "git branch -m" renamed a
 branch that is checked out in another worktree without adjusting
 the HEAD symbolic ref for the worktree.

 Will merge to 'master'.


* rt/completion-help (2016-03-24) 2 commits
  (merged to 'next' on 2016-04-06 at 8c3ee08)
 + completion: add 'revisions' and 'everyday' to 'git help'
 + completion: add option '--guides' to 'git help'

 Shell completion (in contrib/) updates.

 Will merge to 'master'.


* rt/rebase-i-shorten-stop-report (2016-03-28) 1 commit
  (merged to 'next' on 2016-04-06 at 7a766b7)
 + rebase-i: print an abbreviated hash when stop for editing

 The commit object name reported when "rebase -i" stops has been
 shortened.

 Will merge to 'master'.


* jk/check-repository-format (2016-03-11) 10 commits
  (merged to 'next' on 2016-04-06 at a0dada0)
 + verify_repository_format: mark messages for translation
 + setup: drop repository_format_version global
 + setup: unify repository version callbacks
 + init: use setup.c's repo version verification
 + setup: refactor repo format reading and verification
 + config: drop git_config_early
 + check_repository_format_gently: stop using git_config_early
 + lazily load core.sharedrepository
 + wrap shared_repository global in get/set accessors
 + setup: document check_repository_format()
 (this branch is used by dt/pre-refs-backend.)

 The repository set-up sequence has been streamlined (the biggest
 change is that there is no longer git_config_early()), so that we
 do not attempt to look into refs/* when we know we do not have a
 Git repository.

 Will merge to 'master'.


* mj/pull-rebase-autostash (2016-04-04) 9 commits
  (merged to 'next' on 2016-04-06 at b4e4f31)
 + t5520: test --[no-]autostash with pull.rebase=true
 + t5520: reduce commom lines of code
 + t5520: factor out common "failing autostash" code
 + t5520: factor out common "successful autostash" code
 + t5520: use better test to check stderr output
 + t5520: ensure consistent test conditions
 + t5520: use consistent capitalization in test titles
 + pull --rebase: add --[no-]autostash flag
 + git-pull.c: introduce git_pull_config()

 "git pull --rebase" learned "--[no-]autostash" option, so that
 the rebase.autostash configuration variable set to true can be
 overridden from the command line.

 Will merge to 'master'.


* pb/commit-verbose-config (2016-04-12) 6 commits
 . commit: add a commit.verbose config variable
 . t7507-commit-verbose: improve test coverage by testing number of diffs
 . parse-options.c: make OPTION_COUNTUP respect "unspecified" values
 . t0040-parse-options: improve test coverage
 . test-parse-options: print quiet as integer
 . t0040-test-parse-options.sh: fix style issues

 "git commit" learned to pay attention to "commit.verbose"
 configuration variable and act as if "--verbose" option was
 given from the command line.

 Old one reverted, will wait for reroll.
 ($gmane/291303).


* lt/pretty-expand-tabs (2016-04-04) 4 commits
  (merged to 'next' on 2016-04-06 at 186ac2a)
 + pretty: test --expand-tabs
 + pretty: allow tweaking tabwidth in --expand-tabs
 + pretty: enable --expand-tabs by default for selected pretty formats
 + pretty: expand tabs in indented logs to make things line up properly

 When "git log" shows the log message indented by 4-spaces, the
 remainder of a line after a HT does not align in the way the author
 originally intended.  The command now expands tabs by default in
 such a case, and allows the users to override it with a new option,
 '--no-expand-tabs'.

 Will merge to 'master'.


* cc/apply (2016-04-01) 4 commits
  (merged to 'next' on 2016-04-06 at 2e23c44)
 + builtin/apply: free patch when parse_chunk() fails
 + builtin/apply: handle parse_binary() failure
 + apply: remove unused call to free() in gitdiff_{old,new}name()
 + builtin/apply: get rid of useless 'name' variable

 Minor code clean-up.

 Will merge to 'master'.


* dt/index-helper (2016-04-07) 16 commits
 - read-cache: config for waiting for index-helper
 - index-helper: optionally automatically run
 - index-helper: autorun mode
 - index-helper: don't run if already running
 - index-helper: kill mode
 - unpack-trees: preserve index extensions
 - update-index: enable/disable watchman support
 - index-helper: use watchman to avoid refreshing index with lstat()
 - add watchman support to reduce index refresh cost
 - read-cache: add watchman 'WAMA' extension
 - index-helper: add --detach
 - daemonize(): set a flag before exiting the main process
 - index-helper: add --strict
 - index-helper: new daemon for caching index and related stuff
 - read-cache: allow to keep mmap'd memory after reading
 - read-cache.c: fix constness of verify_hdr()

 Needs review.


* jc/bundle (2016-03-03) 6 commits
 - index-pack: --clone-bundle option
 - Merge branch 'jc/index-pack' into jc/bundle
 - bundle v3: the beginning
 - bundle: keep a copy of bundle file name in the in-core bundle header
 - bundle: plug resource leak
 - bundle doc: 'verify' is not about verifying the bundle

 The beginning of "split bundle", which could be one of the
 ingredients to allow "git clone" traffic off of the core server
 network to CDN.


* ad/cygwin-wants-rename (2015-08-07) 1 commit
 - config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES

 Will hold.
 ($gmane/275680).


* jc/rerere-multi (2016-04-06) 11 commits
 - rerere: adjust 'forget' to multi-variant world order
 - rerere: split code to call ll_merge() further
 - rerere: move code related to "forget" together
 - rerere: gc and clear
 - rerere: do use multiple variants
 - t4200: rerere a merge with two identical conflicts
 - rerere: allow multiple variants to exist
 - rerere: delay the recording of preimage
 - rerere: handle leftover rr-cache/$ID directory and postimage files
 - rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
 - rerere: split conflict ID further

 "git rerere" can encounter two or more files with the same conflict
 signature that have to be resolved in different ways, but there was
 no way to record these separate resolutions.

 Will merge to 'next'.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
 - merge: drop 'git merge <message> HEAD <commit>' syntax

 Stop supporting "git merge <message> HEAD <commit>" syntax that has
 been deprecated since October 2007, and issues a deprecation
 warning message since v2.5.0.

 It has been reported that git-gui still uses the deprecated syntax,
 which needs to be fixed before this final step can proceed.
 ($gmane/282594)

^ permalink raw reply	[relevance 1%]

* What's cooking in git.git (Aug 2015, #03; Mon, 17)
@ 2015-08-17 22:34  1% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2015-08-17 22:34 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

The third batch of topics have graduated to 'master'.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* dt/untracked-sparse (2015-07-31) 1 commit
  (merged to 'next' on 2015-08-12 at 234434d)
 + untracked-cache: support sparse checkout
 (this branch is used by dt/untracked-subdir.)

 Allow untracked cache (experimental) to be used when sparse
 checkout (experimental) is also in use.


* kd/pull-rebase-autostash (2015-07-22) 1 commit
  (merged to 'next' on 2015-08-12 at de88e8e)
 + pull: allow dirty tree when rebase.autostash enabled

 "git pull --rebase" has been taught to pay attention to
 rebase.autostash configuration.


* mh/get-remote-group-fix (2015-07-28) 4 commits
  (merged to 'next' on 2015-08-12 at b77820e)
 + get_remote_group(): use skip_prefix()
 + get_remote_group(): eliminate superfluous call to strcspn()
 + get_remote_group(): rename local variable "space" to "wordlen"
 + get_remote_group(): handle remotes with single-character names

 An off-by-one error made "git remote" to mishandle a remote with a
 single letter nickname.


* ta/docfix-index-format-tech (2015-07-28) 1 commit
  (merged to 'next' on 2015-08-12 at 662d88a)
 + typofix for index-format.txt

--------------------------------------------------
[New Topics]

* db/push-sign-if-asked (2015-08-17) 7 commits
 - DONTMERGE: dropped bits to add config; needs tests
 - push: support signed pushes iff the server supports it
 - transport: remove git_transport_options.push_cert
 - gitremote-helpers.txt: document pushcert option
 - Documentation/git-send-pack.txt: document --signed
 - Documentation/git-send-pack.txt: wrap long synopsis line
 - Documentation/git-push.txt: document when --signed may fail

 The client side codepaths in "git push" have been cleaned up
 and the user can request to perform an optional "signed push",
 i.e. sign only when the other end accepts signed push.

 Expecting a reroll.


* dk/gc-idx-wo-pack (2015-08-17) 3 commits
 - DONTMERGE: log message, grace-period and tests $gmane/276058
 - gc: remove stale .idx files without corresponding .pack file
 - prepare_packed_git(): refactor garbage reporting in pack directory

 Having a leftover .idx file without correspoinding .pack file in
 the repository hurts performance; "git gc" learned to prune them.

 Expecting a reroll.


* ep/http-configure-ssl-version (2015-08-17) 1 commit
 - http: add support for specifying the SSL version

 A new configuration variable http.sslVersion can be used to specify
 what specific version of SSL/TLS to use to make a connection.

 Will merge to 'next'.


* jv/send-email-selective-smtp-auth (2015-08-17) 1 commit
 - send-email: provide whitelist of SMTP AUTH mechanisms

 "git send-email" learned a new option --smtp-auth to limit the SMTP
 AUTH mechanisms to be used to a subset of what the system library
 supports.

 Will merge to 'next'.


* po/po-readme (2015-08-17) 1 commit
 - po/README: Update directions for l10n contributors

 Will merge to 'next'.


* pt/am-builtin-abort-fix (2015-08-17) 1 commit
 - am --abort: merge ORIG_HEAD tree into index

 "git am" that has recently reimplemented in C had a performance
 regression in "git am --abort" that goes back to the version before
 an attempted (and failed) patch application.

 Will merge to 'next'.


* ss/fix-config-fd-leak (2015-08-14) 1 commit
 - config: close config file handle in case of error

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* nd/list-files (2015-02-09) 21 commits
 - t3080: tests for git-list-files
 - list-files: -M aka diff-cached
 - list-files -F: show submodules with the new indicator '&'
 - list-files: add -F/--classify
 - list-files: show directories as well as files
 - list-files: do not show duplicate cached entries
 - list-files: sort output and remove duplicates
 - list-files: add -t back
 - list-files: add -1 short for --no-column
 - list-files: add -R/--recursive short for --max-depth=-1
 - list-files: -u does not imply showing stages
 - list-files: make alias 'ls' default to 'list-files'
 - list-files: a user friendly version of ls-files and more
 - ls-files: support --max-depth
 - ls-files: add --column
 - ls-files: add --color to highlight file names
 - ls-files: buffer full item in strbuf before printing
 - ls_colors.c: highlight submodules like directories
 - ls_colors.c: add a function to color a file name
 - ls_colors.c: parse color.ls.* from config file
 - ls_colors.c: add $LS_COLORS parsing code

 A new "git list-files" Porcelain command, "ls-files" with bells and
 whistles.

 Reroll to base on wt-status work ($gmane/265142) has seen some
 positive discussions.

 Waiting for a further polished reroll ($gmane/265534).


* mh/numparse (2015-03-19) 14 commits
 . diff_opt_parse(): use convert_i() when handling --abbrev=<num>
 . diff_opt_parse(): use convert_i() when handling "-l<num>"
 . opt_arg(): simplify pointer handling
 . opt_arg(): report errors parsing option values
 . opt_arg(): use convert_i() in implementation
 . opt_arg(): val is always non-NULL
 . builtin_diff(): detect errors when parsing --unified argument
 . handle_revision_opt(): use convert_ui() when handling "--abbrev="
 . strtoul_ui(), strtol_i(): remove functions
 . handle_revision_opt(): use convert_i() when handling "-<digit>"
 . handle_revision_opt(): use skip_prefix() in many places
 . write_subdirectory(): use convert_ui() for parsing mode
 . cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
 . numparse: new module for parsing integral numbers

 Many codepaths use unchecked use of strtol() and friends (or even
 worse, atoi()).  Introduce a set of wrappers that try to be more
 careful.

 Expecting a reroll.
 ($gmane/268058).


* kk/log-merges-config (2015-04-21) 5 commits
 - bash-completion: add support for git-log --merges= and log.merges
 - t4202-log: add tests for --merges=
 - Documentation: add git-log --merges= option and log.merges config. var
 - log: honor log.merges= option
 - revision: add --merges={show|only|hide} option

 "git log" (but not other commands in the "log" family) learned to
 pay attention to the log.merges configuration variable that can be
 set to "show" (the normal behaviour), "only" (hide non-merge
 commits), or "hide" (hide merge commits).  --merges=(show|only|hide)
 can be used to override the setting from the command line.

 The documentation may need to be updated once more ($gmane/267250).
 Waiting for a reroll.


* mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
 - t/lib-git-svn: check same httpd module dirs as lib-httpd
 - t/lib-httpd: load mod_unixd

 This is the first two commits in a three-patch series $gmane/266962

 Expecting a reroll.
 with updated log message ($gmane/268061).


* bw/portability-solaris (2015-07-20) 3 commits
 - tests: fix sed usage in tests to work around broken xpg4/sed on Solaris
 - tests: fix sed usage in tests to work around broken xpg4/sed on Solaris
 - tests: modify tr expressions so that xpg4/tr handles it on Solaris

 Needs another reroll?
 ($gmane/274296)


* jc/clone-bundle (2015-04-30) 1 commit
 - repack: optionally create a clone.bundle

 Waiting for further work.
 Still an early WIP.


* mg/index-read-error-messages (2015-06-01) 2 commits
 - messages: uniform error messages for index write
 - show-index: uniform error messages for index read

 The tip was RFC.
 Expecting a reroll.


* hv/submodule-config (2015-06-15) 4 commits
 - do not die on error of parsing fetchrecursesubmodules option
 - use new config API for worktree configurations of submodules
 - extract functions for submodule config set and lookup
 - implement submodule config API for lookup of .gitmodules values

 The gitmodules API accessed from the C code learned to cache stuff
 lazily.

 Needs another reroll?
 ($gmane/273743)


* jk/log-missing-default-HEAD (2015-06-03) 1 commit
 - log: diagnose empty HEAD more clearly

 "git init empty && git -C empty log" said "bad default revision 'HEAD'",
 which was found to be a bit confusing to new users.

 What's the status of this one?


* wp/sha1-name-negative-match (2015-06-08) 2 commits
 - sha1_name.c: introduce '^{/!-<negative pattern>}' notation
 - test for '!' handling in rev-parse's named commits

 Introduce "branch^{/!-<pattern>}" notation to name a commit
 reachable from branch that does not match the given pattern.

 Expecting a reroll.


* mk/utf8-no-iconv-warn (2015-06-08) 1 commit
 - utf8.c: print warning about disabled iconv

 Warn when a reencoding is requested in a build without iconv
 support, as the end user is likely to get an unexpected result.  I
 think the same level of safety should be added to a build with
 iconv support when the specified encoding is not available, but the
 patch does not go there.

 Expecting a reroll.


* ak/format-patch-odir-config (2015-06-19) 1 commit
 - format-patch: introduce format.outputDirectory configuration

 Reroll exists but didn't pick it up as it seemed to be still
 collecting review comments.

 Expecting a reroll.
 ($gmane/272180).


* ad/bisect-terms (2015-08-03) 4 commits
 - bisect: allow setting any user-specified in 'git bisect start'
 - bisect: add 'git bisect terms' to view the current terms
 - bisect: add the terms old/new
 - bisect: sanity check on terms

 The use of 'good/bad' in "git bisect" made it confusing to use when
 hunting for a state change that is not a regression (e.g. bugfix).
 The command learned 'old/new' and then allows the end user to
 say e.g. "bisect start --term-old=fast --term=new=slow" to find a
 performance regression.

 Michael's idea to make 'good/bad' more intelligent does have
 certain attractiveness ($gname/272867), and makes some of the work
 on this topic a moot point.

 Will hold.


* mh/notes-allow-reading-treeish (2015-07-13) 1 commit
 - notes: allow treeish expressions as notes ref

 Some "git notes" operations, e.g. "git log --notes=<note>", should
 be able to read notes from any tree-ish that is shaped like a notes
 tree, but the notes infrastructure required that the argument must
 be a ref under refs/notes/.  Loosen it to require a valid ref only
 when the operation would update the notes (in which case we must
 have a place to store the updated notes tree, iow, a ref).

 Needs update to docs.
 ($gmane/273928)


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.


* pw/remote-set-url-fetch (2014-11-26) 1 commit
 . remote: add --fetch and --both options to set-url

 Ejected.


* tr/remerge-diff (2014-11-10) 9 commits
 - t4213: avoid "|" in sed regexp
 - log --remerge-diff: show what the conflict resolution changed
 - name-hash: allow dir hashing even when !ignore_case
 - merge-recursive: allow storing conflict hunks in index
 - merge_diff_mode: fold all merge diff variants into an enum
 - combine-diff: do not pass revs->dense_combined_merges redundantly
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 Waiting for a reroll.
 ($gmane/256591).


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


* jc/show-branch (2014-03-24) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit.

--------------------------------------------------
[Cooking]

* bb/remote-get-url (2015-08-05) 1 commit
 - remote: add get-url subcommand

 "git remote" learned "get-url" subcommand to show the URL for a
 given remote name used for fetching and pushing.

 Waiting for a reroll.
 ($gmane/275401)


* cb/open-noatime-clear-errno (2015-08-12) 1 commit
  (merged to 'next' on 2015-08-17 at 6aa43a1)
 + git_open_noatime: return with errno=0 on success

 When trying to see that an object does not exist, a state errno
 leaked from our "first try to open a packfile with O_NOATIME and
 then if it fails retry without it" logic on a system that refuses
 O_NOATIME.  This confused us and caused us to die, saying that the
 packfile is unreadable, when we should have just reported that the
 object does not exist in that packfile to the caller.

 Will merge to 'master'.


* jk/guess-repo-name-regression-fix (2015-08-10) 2 commits
  (merged to 'next' on 2015-08-12 at 4cba33c)
 + clone: use computed length in guess_dir_name
 + clone: add tests for output directory
 (this branch is used by ps/guess-repo-name-at-root.)

 "git clone $URL" in recent releases of Git contains a regression in
 the code that invents a new repository name incorrectly based on
 the $URL.  This has been corrected.

 Will merge to 'master'.


* ps/guess-repo-name-at-root (2015-08-10) 3 commits
  (merged to 'next' on 2015-08-12 at 088860f)
 + clone: abort if no dir name could be guessed
 + clone: do not use port number as dir name
 + clone: do not include authentication data in guessed dir
 (this branch uses jk/guess-repo-name-regression-fix.)

 "git clone $URL", when cloning from a site whose sole purpose is to
 host a single repository (hence, no path after <scheme>://<site>/),
 tried to use the site name as the new repository name, but did not
 remove username or password when <site> part was of the form
 <user>@<pass>:<host>.  The code is taught to redact these.

 Will merge to 'master'.


* jk/notes-merge-config (2015-08-14) 4 commits
 - notes: teach git-notes about notes.<ref>.mergestrategy option
 - notes: add notes.mergestrategy option to select default strategy
 - notes: add tests for --commit/--abort/--strategy exclusivity
 - notes: document cat_sort_uniq rewriteMode

 "git notes merge" can be told with "--strategy=<how>" option how to
 automatically handle conflicts; this can now be configured by
 setting notes.merge configuration variable.

 The latest reroll (v8) hasn't been picked up.
 Expecting a reroll.
 ($gmane/276068)


* mk/submodule-gitdir-path (2015-08-05) 2 commits
 - path: implement common_dir handling in git_path_submodule()
 - submodule refactor: use git_path_submodule() in add_submodule_odb()

 The submodule code has been taught to work better with separate
 work trees created via "git worktree add".

 Waiting for a review.
 ($gmane/275340).


* mm/pull-upload-pack (2015-07-30) 1 commit
  (merged to 'next' on 2015-08-12 at 14d2a52)
 + pull.sh: quote $upload_pack when passing it to git-fetch

 "git pull" in recent releases of Git has a regression in the code
 that allows custom path to the --upload-pack=<program>.  This has
 been corrected.

 Will merge to 'maint'.

 Note that this is irrelevant for 'master' with "git pull" rewritten
 in C.


* ps/t1509-chroot-test-fixup (2015-08-05) 2 commits
  (merged to 'next' on 2015-08-12 at 6d10ea5)
 + tests: fix cleanup after tests in t1509-root-worktree
 + tests: fix broken && chains in t1509-root-worktree

 t1509 test that requires a dedicated VM environment had some
 bitrot, which has been corrected.

 Will merge to 'master'.


* pt/am-builtin-options (2015-08-12) 3 commits
  (merged to 'next' on 2015-08-12 at e57f754)
 + am: let --signoff override --no-signoff
 + am: let command-line options override saved options
 + test_terminal: redirect child process' stdin to a pty

 After "git am --opt1" stops, running "git am --opt2" pays attention
 to "--opt2" only for the patch that caused the original invocation
 to stop.

 Will merge to 'master'.


* sb/remove-get-pathspec (2015-08-03) 1 commit
 - builtin/mv: remove get_pathspec()

 Expecting a reroll.
 ($gmane/275224)


* sb/submodule-helper (2015-08-07) 1 commit
 - submodule: implement `module_list` as a builtin helper

 The beginning of "git submodule" rewritten in C.


* tb/complete-rebase-i-edit-todo (2015-08-05) 1 commit
  (merged to 'next' on 2015-08-12 at 9606c21)
 + completion: offer '--edit-todo' during interactive rebase

 The command-line completion script (in contrib/) has been updated.

 Will merge to 'master'.


* dt/untracked-subdir (2015-08-07) 2 commits
 - DONTMERGE: wait for Duy to Ack or comment
 - untracked-cache: fix subdirectory handling

 Waiting for a review cycle to conclude.
 ($gmane/276019).


* jk/test-with-x (2015-08-07) 2 commits
  (merged to 'next' on 2015-08-12 at 06576a1)
 + test-lib: disable trace when test is not verbose
 + test-lib: turn off "-x" tracing during chain-lint check

 Running tests with the "-x" option to make them verbose had some
 unpleasant interactions with other features of the test suite.

 Will merge to 'master'.


* ad/cygwin-wants-rename (2015-08-07) 1 commit
 - config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES

 Will hold.
 ($gmane/275680).


* ee/clean-remove-dirs (2015-08-11) 1 commit
  (merged to 'next' on 2015-08-12 at fc41b09)
 + t7300-clean: require POSIXPERM for chmod 0 test

 Test updates for Windows.

 Will merge to 'master'.


* jc/finalize-temp-file (2015-08-10) 1 commit
  (merged to 'next' on 2015-08-12 at 6fe62fe)
 + sha1_file.c: rename move_temp_to_file() to finalize_object_file()

 Long overdue micro clean-up.

 Will merge to 'master'.


* jk/git-path (2015-08-10) 16 commits
  (merged to 'next' on 2015-08-12 at 7ebe864)
 + memoize common git-path "constant" files
 + get_repo_path: refactor path-allocation
 + find_hook: keep our own static buffer
 + refs.c: remove_empty_directories can take a strbuf
 + refs.c: avoid git_path assignment in lock_ref_sha1_basic
 + refs.c: avoid repeated git_path calls in rename_tmp_log
 + refs.c: simplify strbufs in reflog setup and writing
 + path.c: drop git_path_submodule
 + refs.c: remove extra git_path calls from read_loose_refs
 + remote.c: drop extraneous local variable from migrate_file
 + prefer mkpathdup to mkpath in assignments
 + prefer git_pathdup to git_path in some possibly-dangerous cases
 + add_to_alternates_file: don't add duplicate entries
 + t5700: modernize style
 + cache.h: complete set of git_path_submodule helpers
 + cache.h: clarify documentation for git_path, et al

 git_path() and mkpath() are handy helper functions but it is easy
 to misuse, as the callers need to be careful to keep the number of
 active results below 4.  Their uses have been reduced.

 Will merge to 'master'.


* jk/long-error-messages (2015-08-11) 2 commits
  (merged to 'next' on 2015-08-12 at 36303cd)
 + vreportf: avoid intermediate buffer
 + vreportf: report to arbitrary filehandles

 The codepath to produce error messages had a hard-coded limit to
 the size of the message, primarily to avoid memory allocation while
 calling die().

 Will merge to 'master'.


* nd/dwim-wildcards-as-pathspecs (2015-08-11) 1 commit
  (merged to 'next' on 2015-08-12 at bb73f4d)
 + t2019: skip test requiring '*' in a file name non Windows

 Test updates for Windows.

 Will merge to 'master'.


* sg/config-name-only (2015-08-10) 2 commits
  (merged to 'next' on 2015-08-12 at c658fe4)
 + completion: list variable names reliably with 'git config --name-only'
 + config: add '--name-only' option to list only variable names

 "git config --list" output was hard to parse when values consist of
 multiple lines.  "--name-only" option is added to help this.

 Will merge to 'master'.


* mh/tempfile (2015-08-12) 16 commits
  (merged to 'next' on 2015-08-12 at 80efcb7)
 + credential-cache--daemon: use tempfile module
 + credential-cache--daemon: delete socket from main()
 + gc: use tempfile module to handle gc.pid file
 + lock_repo_for_gc(): compute the path to "gc.pid" only once
 + diff: use tempfile module
 + setup_temporary_shallow(): use tempfile module
 + write_shared_index(): use tempfile module
 + register_tempfile(): new function to handle an existing temporary file
 + tempfile: add several functions for creating temporary files
 + prepare_tempfile_object(): new function, extracted from create_tempfile()
 + tempfile: a new module for handling temporary files
 + commit_lock_file(): use get_locked_file_path()
 + lockfile: add accessor get_lock_file_path()
 + lockfile: add accessors get_lock_file_fd() and get_lock_file_fp()
 + create_bundle(): duplicate file descriptor to avoid closing it twice
 + lockfile: move documentation to lockfile.h and lockfile.c

 The "lockfile" API has been rebuilt on top of a new "tempfile" API.

 Will merge to 'master'.


* jh/strbuf-read-use-read-in-full (2015-08-10) 1 commit
  (merged to 'next' on 2015-08-12 at db16247)
 + strbuf_read(): skip unnecessary strbuf_grow() at eof

 strbuf_read() used to have one extra iteration (and an unnecessary
 strbuf_grow() of 8kB), which was eliminated.

 Will merge to 'master'.


* sb/check-return-from-read-ref (2015-08-03) 1 commit
  (merged to 'next' on 2015-08-12 at 4a1c801)
 + transport-helper: die on errors reading refs.

 Will merge to 'master'.


* jk/negative-hiderefs (2015-08-07) 2 commits
  (merged to 'next' on 2015-08-12 at bdc478d)
 + refs: support negative transfer.hideRefs
 + docs/config.txt: reorder hideRefs config

 A negative !ref entry in multi-value transfer.hideRefs
 configuration can be used to say "don't hide this one".

 Will merge to 'master'.


* dt/notes-multiple (2015-08-11) 2 commits
  (merged to 'next' on 2015-08-12 at 0052055)
 + notes: handle multiple worktrees
 + worktrees: add find_shared_symref

 When linked worktree is used, simultaneous "notes merge" instances
 for the same ref in refs/notes/* are prevented from stomping on
 each other.

 Will merge to 'master'.


* dt/refs-pseudo (2015-08-11) 6 commits
  (merged to 'next' on 2015-08-12 at 7078eb6)
 + pseudoref: check return values from read_ref()
  (merged to 'next' on 2015-08-03 at 3eafd33)
 + sequencer: replace write_cherry_pick_head with update_ref
 + bisect: use update_ref
 + pseudorefs: create and use pseudoref update and delete functions
 + refs: add ref_type function
 + refs: introduce pseudoref and per-worktree ref concepts

 To prepare for allowing a different "ref" backend to be plugged in
 to the system, update_ref()/delete_ref() have been taught about
 ref-like things like MERGE_HEAD that are per-worktree (they will
 always be written to the filesystem inside $GIT_DIR).

 Will merge to 'master'.


* kn/for-each-tag-branch (2015-08-03) 11 commits
  (merged to 'next' on 2015-08-03 at d9e94b9)
 + for-each-ref: add '--contains' option
 + ref-filter: implement '--contains' option
 + parse-options.h: add macros for '--contains' option
 + parse-option: rename parse_opt_with_commit()
 + for-each-ref: add '--merged' and '--no-merged' options
 + ref-filter: implement '--merged' and '--no-merged' options
 + ref-filter: add parse_opt_merge_filter()
 + for-each-ref: add '--points-at' option
 + ref-filter: implement '--points-at' option
 + tag: libify parse_opt_points_at()
 + t6302: for-each-ref tests for ref-filter APIs

 Originally merged to 'next' on 2015-07-15

 Some features from "git tag -l" and "git branch -l" have been made
 available to "git for-each-ref" so that eventually the unified
 implementation can be shared across all three, in a follow-up
 series or two.


* jc/rerere (2015-07-24) 21 commits
 - rerere: un-nest merge() further
 - rerere: use "struct rerere_id" instead of "char *" for conflict ID
 - rerere: call conflict-ids IDs
 - rerere: further clarify do_rerere_one_path()
 - rerere: further de-dent do_plain_rerere()
 - rerere: refactor "replay" part of do_plain_rerere()
 - rerere: explain the remainder
 - rerere: explain "rerere forget" codepath
 - rerere: explain the primary codepath
 - rerere: explain MERGE_RR management helpers
 - rerere: fix benign off-by-one non-bug and clarify code
 - rerere: explain the rerere I/O abstraction
 - rerere: do not leak mmfile[] for a path with multiple stage #1 entries
 - rerere: stop looping unnecessarily
 - rerere: drop want_sp parameter from is_cmarker()
 - rerere: report autoupdated paths only after actually updating them
 - rerere: write out each record of MERGE_RR in one go
 - rerere: lift PATH_MAX limitation
 - rerere: plug conflict ID leaks
 - rerere: handle conflicts with multiple stage #1 entries
 - rerere: fix an off-by-one non-bug
 (this branch is used by jc/rerere-multi.)

 Code clean-up and minor fixes (so far).


* jc/rerere-multi (2015-07-30) 7 commits
 . t4200: rerere a merge with two identical conflicts
 . WIP
 . rerere: allow multiple variants to exist
 - rerere: delay the recording of preimage
 - rerere: handle leftover rr-cache/$ID directory and postimage files
 - rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
 - rerere: split conflict ID further
 (this branch uses jc/rerere.)

 This is a contination of jc/rerere topic.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
  (merged to 'next' on 2015-08-03 at a52c2b2)
 + merge: drop 'git merge <message> HEAD <commit>' syntax

 Originally merged to 'next' on 2015-05-28

 Stop supporting "git merge <message> HEAD <commit>" syntax that
 has been deprecated since October 2007.

 Will keep in 'next' during the 2.6 cycle.

^ permalink raw reply	[relevance 1%]

* Re: [PATCH v4 1/3] clone: do not include authentication data in guessed dir
  @ 2015-08-05 19:36  5%       ` Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2015-08-05 19:36 UTC (permalink / raw)
  To: Patrick Steinhardt, Jeff King; +Cc: git, sunshine, pclouds

Junio C Hamano <gitster@pobox.com> writes:

> Perhaps add
>
> "test_clone_dir ssh://user:passw@rd@host/ host"
>
> here?  How is this expected to be parsed?

For completeness, here is what I think the end result (together with
Peff's series) of the test should look like.

The first hunk is merely style.  We could drop 'in "$@"' from there
and some people may argue that it would be more obvious, but I think
being explict is fine.

As to the second hunk:

 - the first batch is for "trailing slash removal" for scp-like
   syntax;

 - the second batch is for "omitting path should default to host" for
   the same;

 - the third batch is for "omitting authentication material" for the
   same.

Note that ssh://user:passw@rd@host:1234/ and user:passw@rd@host:/
tests fail for the same reason (finding @ should be greedy, I think).

 t/t5603-clone-dirname.sh | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/t/t5603-clone-dirname.sh b/t/t5603-clone-dirname.sh
index 27dbd6c..4897ea8 100755
--- a/t/t5603-clone-dirname.sh
+++ b/t/t5603-clone-dirname.sh
@@ -22,7 +22,8 @@ test_clone_dir () {
 	expect=success
 	bare=non-bare
 	clone_opts=
-	for i in "$@"; do
+	for i in "$@"
+	do
 		case "$i" in
 		fail)
 			expect=failure
@@ -61,12 +62,23 @@ test_clone_dir ssh://host/foo/ foo
 test_clone_dir ssh://host/foo.git/ foo
 test_clone_dir ssh://host/foo/.git/ foo
 
+test_clone_dir host:foo/ foo
+test_clone_dir host:foo.git/ foo
+test_clone_dir host:foo/.git/ foo
+
 # omitting the path should default to the hostname
 test_clone_dir ssh://host/ host
 test_clone_dir ssh://host:1234/ host
 test_clone_dir ssh://user@host/ host
+test_clone_dir host:/ host
+
+# auth materials should be redacted
 test_clone_dir ssh://user:password@host/ host
 test_clone_dir ssh://user:password@host:1234/ host
+test_clone_dir ssh://user:passw@rd@host:1234/ host
+test_clone_dir user@host:/ host
+test_clone_dir user:password@host:/ host
+test_clone_dir user:passw@rd@host:/ host
 
 # trailing port-like numbers should not be stripped for paths
 test_clone_dir ssh://user:password@host/test:1234 1234

^ permalink raw reply related	[relevance 5%]

* What's cooking in git.git (May 2015, #04; Mon, 11)
@ 2015-05-11 22:46  4% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2015-05-11 22:46 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

Git 2.3.8 has been tagged; it contains Linus's favorite fix for "git
commit --date=now", among other things, and it will be the last for
2.3.x series for now.

We saw a few sizable topics rerolled this morning on the list;
sorry, but I didn't have time to get to them.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ep/do-not-feed-a-pointer-to-array-size (2015-05-05) 1 commit
  (merged to 'next' on 2015-05-07 at 64d9a20)
 + git-compat-util.h: implement a different ARRAY_SIZE macro for for safely deriving the size of array

 Catch a programmer mistake to feed a pointer not an array to
 ARRAY_SIZE() macro, by using a couple of GCC extensions.


* jc/daemon-no-ipv6-for-2.4.1 (2015-05-05) 1 commit
  (merged to 'next' on 2015-05-05 at 1eb279f)
 + daemon: unbreak NO_IPV6 build regression

 "git daemon" fails to build from the source under NO_IPV6
 configuration (regression in 2.4).


* jc/hash-object (2015-05-05) 4 commits
  (merged to 'next' on 2015-05-07 at 9b81a06)
 + write_sha1_file(): do not use a separate sha1[] array
 + t1007: add hash-object --literally tests
 + hash-object --literally: fix buffer overrun with extra-long object type
 + git-hash-object.txt: document --literally option

 "hash-object --literally" introduced in v2.2 was not prepared to
 take a really long object type name.


* jc/plug-fmt-merge-msg-leak (2015-04-20) 1 commit
  (merged to 'next' on 2015-05-05 at bd94828)
 + fmt-merge-msg: plug small leak of commit buffer

 Originally merged to 'next' on 2015-04-21


* jk/filter-branch-use-of-sed-on-incomplete-line (2015-04-29) 1 commit
  (merged to 'next' on 2015-05-07 at 849a24d)
 + filter-branch: avoid passing commit message through sed

 "filter-branch" corrupted commit log message that ends with an
 incomplete line on platforms with some "sed" implementations that
 munge such a line.  Work it around by avoiding to use "sed".


* jk/reading-packed-refs (2015-04-16) 9 commits
  (merged to 'next' on 2015-05-05 at 89b5694)
 + t1430: add another refs-escape test
 + read_packed_refs: avoid double-checking sane refs
 + strbuf_getwholeline: use getdelim if it is available
 + strbuf_getwholeline: avoid calling strbuf_grow
 + strbuf_addch: avoid calling strbuf_grow
 + config: use getc_unlocked when reading from file
 + strbuf_getwholeline: use getc_unlocked
 + git-compat-util: add fallbacks for unlocked stdio
 + strbuf_getwholeline: use getc macro

 Originally merged to 'next' on 2015-04-21

 An earlier rewrite to use strbuf_getwholeline() instead of fgets(3)
 to read packed-refs file revealed that the former is unacceptably
 inefficient.


* jk/rebase-quiet-noop (2015-04-28) 1 commit
  (merged to 'next' on 2015-05-05 at 82780b9)
 + rebase: silence "git checkout" for noop rebase

 "git rebase --quiet" was not quite quiet when there is nothing to
 do.


* jk/sha1-file-reduce-useless-warnings (2015-03-30) 1 commit
  (merged to 'next' on 2015-05-05 at a8de68e)
 + sha1_file: squelch "packfile cannot be accessed" warnings

 Originally merged to 'next' on 2015-04-21


* jk/still-interesting (2015-04-17) 1 commit
  (merged to 'next' on 2015-05-05 at 6a5c89c)
 + limit_list: avoid quadratic behavior from still_interesting

 Originally merged to 'next' on 2015-04-21

 "git rev-list --objects $old --not --all" to see if everything that
 is reachable from $old is already connected to the existing refs
 was very inefficient.


* jn/clean-use-error-not-fprintf-on-stderr (2015-05-04) 1 commit
  (merged to 'next' on 2015-05-05 at 12391f1)
 + config: use error() instead of fprintf(stderr, ...)

 Some error messages in "git config" were emitted without calling
 the usual error() facility.


* ld/p4-case-fold (2015-04-28) 1 commit
  (merged to 'next' on 2015-05-05 at 03ecbd0)
 + git-p4: add failing tests for case-folding p4d


* lm/squelch-bg-progress (2015-04-15) 2 commits
  (merged to 'next' on 2015-05-05 at a2fe74d)
 + compat/mingw: stubs for getpgid() and tcgetpgrp()
 + progress: no progress in background

 Originally merged to 'next' on 2015-04-21

 Many long-running operations show progress eye-candy, even when
 they are later backgrounded.  Hide the eye-candy when the process
 is sent to the background instead.


* ls/p4-changes-block-size (2015-04-20) 1 commit
  (merged to 'next' on 2015-05-05 at 92596d4)
 + git-p4: use -m when running p4 changes

 Originally merged to 'next' on 2015-04-21

 "git p4" learned "--changes-block-size <n>" to read the changes in
 chunks from Perforce, instead of making one call to "p4 changes"
 that may trigger "too many rows scanned" error from Perforce.


* mm/add-p-split-error (2015-04-16) 5 commits
  (merged to 'next' on 2015-05-05 at c556011)
 + stash -p: demonstrate failure of split with mixed y/n
 + t3904-stash-patch: factor PERL prereq at the top of the file
 + t3904-stash-patch: fix test description
 + add -p: demonstrate failure when running 'edit' after a split
 + t3701-add-interactive: simplify code

 Originally merged to 'next' on 2015-04-23

 When "add--interactive" splits a hunk into two overlapping hunks
 and then let the user choose only one, it sometimes feeds an
 incorrect patch text to "git apply".  Add tests to demonstrate
 this.

 I have a slight suspicion that this may be $gmane/87202 coming back
 and biting us (I seem to have said "let's run with this and see
 what happens" back then).


* nd/multiple-work-trees (2015-03-31) 41 commits
  (merged to 'next' on 2015-05-05 at 0f04a1c)
 + prune --worktrees: fix expire vs worktree existence condition
 + t1501: fix test with split index
 + t2026: fix broken &&-chain
 + t2026 needs procondition SANITY
 + git-checkout.txt: a note about multiple checkout support for submodules
 + checkout: add --ignore-other-wortrees
 + checkout: pass whole struct to parse_branchname_arg instead of individual flags
 + git-common-dir: make "modules/" per-working-directory directory
 + checkout: do not fail if target is an empty directory
 + t2025: add a test to make sure grafts is working from a linked checkout
 + checkout: don't require a work tree when checking out into a new one
 + git_path(): keep "info/sparse-checkout" per work-tree
 + count-objects: report unused files in $GIT_DIR/worktrees/...
 + gc: support prune --worktrees
 + gc: factor out gc.pruneexpire parsing code
 + gc: style change -- no SP before closing parenthesis
 + checkout: clean up half-prepared directories in --to mode
 + checkout: reject if the branch is already checked out elsewhere
 + prune: strategies for linked checkouts
 + checkout: support checking out into a new working directory
 + use new wrapper write_file() for simple file writing
 + wrapper.c: wrapper to open a file, fprintf then close
 + setup.c: support multi-checkout repo setup
 + setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 + setup.c: convert check_repository_format_gently to use strbuf
 + setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 + setup.c: convert is_git_directory() to use strbuf
 + git-stash: avoid hardcoding $GIT_DIR/logs/....
 + *.sh: avoid hardcoding $GIT_DIR/hooks/...
 + git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 + $GIT_COMMON_DIR: a new environment variable
 + commit: use SEQ_DIR instead of hardcoding "sequencer"
 + fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 + reflog: avoid constructing .lock path with git_path
 + *.sh: respect $GIT_INDEX_FILE
 + git_path(): be aware of file relocation in $GIT_DIR
 + path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 + path.c: rename vsnpath() to do_git_path()
 + git_snpath(): retire and replace with strbuf_git_path()
 + path.c: make get_pathname() call sites return const char *
 + path.c: make get_pathname() return strbuf instead of static buffer

 Originally merged to 'next' on 2015-04-02

 A replacement for contrib/workdir/git-new-workdir that does not
 rely on symbolic links and make sharing of objects and refs safer
 by making the borrowee and borrowers aware of each other.


* nd/slim-index-pack-memory-usage (2015-04-18) 2 commits
  (merged to 'next' on 2015-05-05 at 42bd845)
 + index-pack: kill union delta_base to save memory
 + index-pack: reduce object_entry size to save memory

 Originally merged to 'next' on 2015-04-21

 Memory usage of "git index-pack" has been trimmed by tens of
 per-cent.


* pt/credential-xdg (2015-03-25) 4 commits
  (merged to 'next' on 2015-05-05 at 0d6711f)
 + t0302: "unreadable" test needs POSIXPERM
 + t0302: test credential-store support for XDG_CONFIG_HOME
 + git-credential-store: support XDG_CONFIG_HOME
 + git-credential-store: support multiple credential files
 (this branch is used by pt/xdg-config-path.)

 Originally merged to 'next' on 2015-03-25

 Tweak the sample "store" backend of the credential helper to honor
 XDG configuration file locations when specified.


* pt/xdg-config-path (2015-05-06) 7 commits
  (merged to 'next' on 2015-05-07 at 38e7071)
 + path.c: remove home_config_paths()
 + git-config: replace use of home_config_paths()
 + git-commit: replace use of home_config_paths()
 + credential-store.c: replace home_config_paths() with xdg_config_home()
 + dir.c: replace home_config_paths() with xdg_config_home()
 + attr.c: replace home_config_paths() with xdg_config_home()
 + path.c: implement xdg_config_home()
 (this branch uses pt/credential-xdg.)

 Code clean-up for xdg configuration path support.


* sb/prefix-path-free-results (2015-05-05) 1 commit
  (merged to 'next' on 2015-05-07 at 64f15a8)
 + prefix_path(): unconditionally free results in the callers

 Code clean-up (not a leak-fix).


* sg/complete-decorate-full-not-long (2015-05-03) 1 commit
  (merged to 'next' on 2015-05-07 at 2beb429)
 + completion: fix and update 'git log --decorate=' options

 The completion for "log --decorate=" parameter value was incorrect.


* sg/completion-no-redundant-all-command-list (2015-05-03) 1 commit
  (merged to 'next' on 2015-05-07 at 00b4bd9)
 + completion: remove redundant __git_compute_all_commands() call

 Code simplification.


* tb/blame-resurrect-convert-to-git (2015-05-03) 1 commit
  (merged to 'next' on 2015-05-05 at 8e1974e)
 + blame: CRLF in the working tree and LF in the repo

 Some time ago, "git blame" (incorrectly) lost the convert_to_git()
 call when synthesizing a fake "tip" commit that represents the
 state in the working tree, which broke folks who record the history
 with LF line ending to make their project portabile across
 platforms while terminating lines in their working tree files with
 CRLF for their platform.


* tb/t0027-crlf (2015-04-25) 3 commits
  (merged to 'next' on 2015-05-05 at 36accbb)
 + t0027: Add repoMIX and LF_nul
 + t0027: support NATIVE_CRLF platforms
 + t0027: cleanup: rename functions; avoid non-leading TABs

 Originally merged to 'next' on 2015-04-21

 More line-ending tests.


* va/fix-git-p4-tests (2015-04-28) 1 commit
  (merged to 'next' on 2015-05-05 at 795e858)
 + git-p4: t9814: prevent --chain-lint failure


* va/p4-client-path (2015-04-23) 2 commits
  (merged to 'next' on 2015-05-05 at 852facc)
 + git-p4: improve client path detection when branches are used
 + t9801: check git-p4's branch detection with client spec enabled

 Originally merged to 'next' on 2015-04-23

 git p4 attempts to better handle branches in Perforce.

--------------------------------------------------
[New Topics]

* dl/branch-error-message (2015-05-06) 1 commit
  (merged to 'next' on 2015-05-11 at ed947ab)
 + branch: do not call a "remote-tracking branch" a "remote branch"

 Error messages from "git branch" called remote-tracking branches as
 "remote branches".

 Will merge to 'master'.


* dl/subtree-push-no-squash (2015-05-07) 1 commit
  (merged to 'next' on 2015-05-11 at 74d07ca)
 + contrib/subtree: there's no push --squash

 "git subtree" script (in contrib/) does not have --squash option
 when pushing, but the documentation and help text pretended as if
 it did.

 Will merge to 'master'.


* ld/p4-editor-multi-words (2015-05-07) 2 commits
 - git-p4: fix handling of multi-word P4EDITOR
 - git-p4: add failing test for P4EDITOR handling

 Unlike "$EDITOR" and "$GIT_EDITOR" that can hold the path to the
 command and initial options (e.g. "/path/to/emacs -nw"), 'git p4'
 did not let the shell interpolate the contents of the environment
 variable that name the editor "$P4EDITOR" (and "$EDITOR", too).
 Make it in line with the rest of Git, as well as with Perforce.

 Reported to break some tests that assume the non-interpolating
 behaviour that need to be fixed.


* dl/subtree-avoid-tricky-echo (2015-05-08) 1 commit
  (merged to 'next' on 2015-05-11 at 36d4f0e)
 + contrib/subtree: portability fix for string printing

 "git subtree" script (in contrib/) used "echo -n" to produce
 progress messages in a non-portable way.

 Will merge to 'master'.


* ls/http-ssl-cipher-list (2015-05-08) 1 commit
  (merged to 'next' on 2015-05-11 at 55764ce)
 + http: add support for specifying an SSL cipher list

 Introduce http.<url>.SSLCipherList configuration variable to tweak
 the list of cipher suite to be used with libcURL when talking with
 https:// sites.

 Will merge to 'master'.


* ps/bundle-verify-arg (2015-05-08) 1 commit
  (merged to 'next' on 2015-05-11 at 9f1b1ae)
 + bundle: verify arguments more strictly

 "git bundle verify" did not diagnose extra parameters on the
 command line.

 Will merge to 'master'.


* sg/help-subcommands (2015-05-08) 1 commit
  (merged to 'next' on 2015-05-11 at 91e4f9e)
 + command-list.txt: fix whitespace inconsistency

 A preparatory clean-up step.

 Will merge to 'master'.


* mh/ref-directory-file-2 (2015-05-10) 19 commits
 - SQUASH???
 - reflog_expire(): integrate lock_ref_sha1_basic() errors into ours
 - ref_transaction_commit(): delete extra "the" from error message
 - ref_transaction_commit(): provide better error messages
 - rename_ref(): integrate lock_ref_sha1_basic() errors into ours
 - lock_ref_sha1_basic(): improve diagnostics for D/F conflicts
 - lock_ref_sha1_basic(): report errors via a "struct strbuf *err"
 - verify_refname_available(): report errors via a "struct strbuf *err"
 - verify_refname_available(): rename function
 - refs: check for D/F conflicts among refs processed in a transaction
 - ref_transaction_commit(): use a string_list for detecting duplicates
 - is_refname_available(): use dirname in first loop
 - struct nonmatching_ref_data: store a refname instead of a ref_entry
 - report_refname_conflict(): inline function
 - entry_matches(): inline function
 - is_refname_available(): convert local variable "dirname" to strbuf
 - is_refname_available(): avoid shadowing "dir" variable
 - is_refname_available(): explain the reason for an early exit
 - t1404: new tests of D/F conflicts within ref transactions
 (this branch uses mh/write-refs-sooner-2.2, mh/write-refs-sooner-2.3 and mh/write-refs-sooner-2.4.)

 A reroll is posted, but haven't got a chance to pick it up yet.


* mh/write-refs-sooner-2.2 (2015-05-10) 8 commits
 - ref_transaction_commit(): fix atomicity and avoid fd exhaustion
 - ref_transaction_commit(): remove the local flags variable
 - ref_transaction_commit(): inline call to write_ref_sha1()
 - rename_ref(): inline calls to write_ref_sha1() from this function
 - commit_ref_update(): new function, extracted from write_ref_sha1()
 - write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
 - t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
 - update-ref: test handling large transactions properly
 (this branch is used by mh/ref-directory-file-2, mh/write-refs-sooner-2.3 and mh/write-refs-sooner-2.4.)

 Multi-ref transaction support we merged a few releases ago
 unnecessarily kept many file descriptors open, risking to fail with
 resource exhaustion.


* mh/write-refs-sooner-2.3 (2015-05-10) 1 commit
 - Merge branch 'mh/write-refs-sooner' into mh/write-refs-sooner-2.3
 (this branch is used by mh/ref-directory-file-2 and mh/write-refs-sooner-2.4; uses mh/write-refs-sooner-2.2.)

 Multi-ref transaction support we merged a few releases ago
 unnecessarily kept many file descriptors open, risking to fail with
 resource exhaustion.  This is for 2.3.x track.


* mh/write-refs-sooner-2.4 (2015-05-10) 1 commit
 - Merge branch 'mh/write-refs-sooner-2.3' into mh/write-refs-sooner-2.4
 (this branch is used by mh/ref-directory-file-2; uses mh/write-refs-sooner-2.2 and mh/write-refs-sooner-2.3.)

 Multi-ref transaction support we merged a few releases ago
 unnecessarily kept many file descriptors open, risking to fail with
 resource exhaustion.  This is for 2.4.x track.


* sb/ref-lock-lose-lock-fd (2015-05-10) 1 commit
 - refs.c: remove lock_fd from struct ref_lock

 The refs API uses ref_lock struct which had its own "int fd", even
 though the same file descriptor was in the lock struct it contains.
 Clean-up the code to lose this redundant field.

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* kk/log-merges-config (2015-04-21) 5 commits
 - bash-completion: add support for git-log --merges= and log.merges
 - t4202-log: add tests for --merges=
 - Documentation: add git-log --merges= option and log.merges config. var
 - log: honor log.merges= option
 - revision: add --merges={show|only|hide} option

 "git log" (but not other commands in the "log" family) learned to
 pay attention to the log.merges configuration variable that can be
 set to "show" (the normal behaviour), "only" (hide non-merge
 commits), or "hide" (hide merge commits).  --merges=(show|only|hide)
 can be used to override the setting from the command line.

 The documentation may need to be updated once more ($gmane/267250).
 Waiting for a reroll.


* mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
 - t/lib-git-svn: check same httpd module dirs as lib-httpd
 - t/lib-httpd: load mod_unixd

 This is the first two commits in a three-patch series $gmane/266962
 Will be rerolled.
 with updated log message ($gmane/268061).


* mh/numparse (2015-03-19) 14 commits
 - diff_opt_parse(): use convert_i() when handling --abbrev=<num>
 - diff_opt_parse(): use convert_i() when handling "-l<num>"
 - opt_arg(): simplify pointer handling
 - opt_arg(): report errors parsing option values
 - opt_arg(): use convert_i() in implementation
 - opt_arg(): val is always non-NULL
 - builtin_diff(): detect errors when parsing --unified argument
 - handle_revision_opt(): use convert_ui() when handling "--abbrev="
 - strtoul_ui(), strtol_i(): remove functions
 - handle_revision_opt(): use convert_i() when handling "-<digit>"
 - handle_revision_opt(): use skip_prefix() in many places
 - write_subdirectory(): use convert_ui() for parsing mode
 - cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
 - numparse: new module for parsing integral numbers

 Many codepaths use unchecked use of strtol() and friends (or even
 worse, atoi()).  Introduce a set of wrappers that try to be more
 careful.

 Will be rerolled.
 ($gmane/268058).


* tf/gitweb-project-listing (2015-03-19) 5 commits
 - gitweb: make category headings into links when they are directories
 - gitweb: optionally set project category from its pathname
 - gitweb: add a link under the search box to clear a project filter
 - gitweb: if the PATH_INFO is incomplete, use it as a project_filter
 - gitweb: fix typo in man page

 Update gitweb to make it more pleasant to deal with a hierarchical
 forest of repositories.

 Any comments from those who use or have their own code in Gitweb?


* jc/a-lone-dash-stands-for-previous-branch (2015-03-16) 1 commit
 - "-" and "@{-1}" on various programs

 Lose special case code to make a lone dash "-" mean the previous
 branch aka "@{-1}" from a handful subcommands, and instead support
 the notation throughout the system by reimplementing it at the
 revisions layer.

 Needs tests, documentation updates, etc.  Also does only a half-way
 job dealing with range notation, which needs to be fixed before the
 series goes anywhere.


* nd/list-files (2015-02-09) 21 commits
 - t3080: tests for git-list-files
 - list-files: -M aka diff-cached
 - list-files -F: show submodules with the new indicator '&'
 - list-files: add -F/--classify
 - list-files: show directories as well as files
 - list-files: do not show duplicate cached entries
 - list-files: sort output and remove duplicates
 - list-files: add -t back
 - list-files: add -1 short for --no-column
 - list-files: add -R/--recursive short for --max-depth=-1
 - list-files: -u does not imply showing stages
 - list-files: make alias 'ls' default to 'list-files'
 - list-files: a user friendly version of ls-files and more
 - ls-files: support --max-depth
 - ls-files: add --column
 - ls-files: add --color to highlight file names
 - ls-files: buffer full item in strbuf before printing
 - ls_colors.c: highlight submodules like directories
 - ls_colors.c: add a function to color a file name
 - ls_colors.c: parse color.ls.* from config file
 - ls_colors.c: add $LS_COLORS parsing code

 A new "git list-files" Porcelain command, "ls-files" with bells and
 whistles.

 Reroll to base on wt-status work ($gmane/265142) has seen some
 positive discussions.

 Waiting for a further polished reroll ($gmane/265534).


* js/fsck-opt (2015-01-21) 19 commits
 - fsck: support ignoring objects in `git fsck` via fsck.skiplist
 - fsck: git receive-pack: support excluding objects from fsck'ing
 - fsck: introduce `git fsck --quick`
 - fsck: support demoting errors to warnings
 - fsck: document the new receive.fsck.* options
 - fsck: allow upgrading fsck warnings to errors
 - fsck: optionally ignore specific fsck issues completely
 - fsck: disallow demoting grave fsck errors to warnings
 - fsck: add a simple test for receive.fsck.*
 - fsck: make fsck_tag() warn-friendly
 - fsck: handle multiple authors in commits specially
 - fsck: make fsck_commit() warn-friendly
 - fsck: make fsck_ident() warn-friendly
 - fsck: report the ID of the error/warning
 - fsck: allow demoting errors to warnings via receive.fsck.warn = <key>
 - fsck: offer a function to demote fsck errors to warnings
 - fsck: provide a function to parse fsck message IDs
 - fsck: introduce identifiers for fsck messages
 - fsck: introduce fsck options

 "fsck.warnings = <list of error tokens>" I suggested turned out to
 be an unpopular choice (sorry Dscho).

 Expecting a reroll.


* nd/untracked-cache (2015-03-12) 24 commits
 - git-status.txt: advertisement for untracked cache
 - untracked cache: guard and disable on system changes
 - mingw32: add uname()
 - t7063: tests for untracked cache
 - update-index: test the system before enabling untracked cache
 - update-index: manually enable or disable untracked cache
 - status: enable untracked cache
 - untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
 - untracked cache: mark index dirty if untracked cache is updated
 - untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
 - untracked cache: avoid racy timestamps
 - read-cache.c: split racy stat test to a separate function
 - untracked cache: invalidate at index addition or removal
 - untracked cache: load from UNTR index extension
 - untracked cache: save to an index extension
 - ewah: add convenient wrapper ewah_serialize_strbuf()
 - untracked cache: don't open non-existent .gitignore
 - untracked cache: mark what dirs should be recursed/saved
 - untracked cache: record/validate dir mtime and reuse cached output
 - untracked cache: make a wrapper around {open,read,close}dir()
 - untracked cache: invalidate dirs recursively if .gitignore changes
 - untracked cache: initial untracked cache validation
 - untracked cache: record .gitignore information and dir hierarchy
 - dir.c: optionally compute sha-1 of a .gitignore file

 Need extra sets of eyes to review this.


* nd/pathspec-strip-fix (2015-04-18) 1 commit
 - pathspec: adjust prefixlen after striping trailing slash

 Does not quite fix ($gmane/267614).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.


* pw/remote-set-url-fetch (2014-11-26) 1 commit
 - remote: add --fetch and --both options to set-url

 Expecting a reroll.


* tr/remerge-diff (2014-11-10) 9 commits
 - t4213: avoid "|" in sed regexp
 - log --remerge-diff: show what the conflict resolution changed
 - name-hash: allow dir hashing even when !ignore_case
 - merge-recursive: allow storing conflict hunks in index
 - merge_diff_mode: fold all merge diff variants into an enum
 - combine-diff: do not pass revs->dense_combined_merges redundantly
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 Waiting for a reroll ($gmane/256591).


* hv/submodule-config (2014-11-11) 4 commits
 - do not die on error of parsing fetchrecursesubmodules option
 - use new config API for worktree configurations of submodules
 - extract functions for submodule config set and lookup
 - implement submodule config cache for lookup of submodule names

 Kicked back to 'pu' per request ($gmane/255610).


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


* jc/show-branch (2014-03-24) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit.

--------------------------------------------------
[Cooking]

* sg/completion-omit-credential-helpers (2015-05-06) 1 commit
  (merged to 'next' on 2015-05-11 at aa7e554)
 + completion: remove credential helpers from porcelain commands

 The Git subcommand completion (in contrib/) listed credential
 helpers among candidates, which is not something the end user would
 invoke interatively.

 Will merge to 'master'.


* jk/skip-http-tests-under-no-curl (2015-05-07) 2 commits
  (merged to 'next' on 2015-05-11 at a52b711)
 + tests: skip dav http-push tests under NO_EXPAT=NoThanks
 + t/lib-httpd.sh: skip tests if NO_CURL is defined

 Test clean-up.

 Will merge to 'master'.


* nd/dwim-wildcards-as-pathspecs (2015-05-03) 1 commit
  (merged to 'next' on 2015-05-07 at 8176de7)
 + pathspec: avoid the need of "--" when wildcard is used

 A heuristic to help the "git <cmd> <revs> <pathspec>" command line
 convention to catch mistyped paths is to make sure all the non-rev
 parameters in the later part of the command line are names of the
 files in the working tree, but that means "git grep $str -- \*.c"
 must always be disambiguated with "--", because nobody sane will
 create a file whose name literally is asterisk-dot-see.  Loosen the
 heuristic to declare that with a wildcard string the user likely
 meant to give us a pathspec.

 Will merge to 'master' in the third batch.


* pt/pull-tests (2015-05-03) 7 commits
 - t5521: test --dry-run does not make any changes
 - t5520: test --rebase failure on unborn branch with index
 - t5520: test --rebase with multiple branches
 - t5520: test work tree fast-forward when fetch updates head
 - t5520: test for failure if index has unresolved entries
 - t5520: implement tests for no merge candidates cases
 - t5520: test pulling multiple branches into an empty repository

 Add more test coverage to "git pull".  This conflicts slightly with
 a new test jc/merge topic adds, but resolution is fairly trivial.

 Expecting a reroll ($gmane/268391).


* jc/clone-bundle (2015-04-30) 1 commit
 - repack: optionally create a clone.bundle

 Still an early WIP


* jk/at-push-sha1 (2015-05-03) 12 commits
 - for-each-ref: accept "%(push)" format
 - for-each-ref: use skip_prefix instead of starts_with
 - sha1_name: implement @{push} shorthand
 - sha1_name: refactor interpret_upstream_mark
 - sha1_name: refactor upstream_mark
 - remote.c: add branch_get_push
 - remote.c: report specific errors from branch_get_upstream
 - remote.c: introduce branch_get_upstream helper
 - remote.c: provide per-branch pushremote name
 - remote.c: hoist branch.*.remote lookup out of remote_get_1
 - remote.c: drop "remote" pointer from "struct branch"
 - remote.c: drop default_remote_name variable

 Introduce <branch>@{push} short-hand to denote the remote-tracking
 branch that tracks the branch at the remote the <branch> would be
 pushed to.

 Expecting a reroll ($gmane/268419, etc.).


* ph/rebase-i-redo (2015-04-29) 1 commit
  (merged to 'next' on 2015-05-07 at 8fc1f52)
 + rebase -i: redo tasks that die during cherry-pick

 "git rebase -i" moved the "current" command from "todo" to "done" a
 bit too prematurely, losing a step when a "pick" did not even start.

 Will merge to 'master' in the third batch.


* ee/clean-remove-dirs (2015-04-26) 5 commits
 - clean: improve performance when removing lots of directories
 - p7300: add performance tests for clean
 - t7300: add tests to document behavior of clean and nested git
 - setup: sanity check file size in read_gitfile_gently
 - setup: add gentle version of read_gitfile

 Replace "is this subdirectory a separate repository that should not
 be touched?" check "git clean" does by checking if it has .git/HEAD
 using the submodule-related code with a more optimized check.

 Waiting for a reroll.


* jc/gitignore-precedence (2015-04-22) 1 commit
  (merged to 'next' on 2015-05-05 at 6ef85da)
 + ignore: info/exclude should trump core.excludesfile

 core.excludesfile (defaulting to $XDG_HOME/git/ignore) is supposed
 to be overridden by repository-specific .git/info/exclude file, but
 the order was swapped from the beginning. This belatedly fixes it.

 Will merge to 'master' in the third batch.


* jk/git-no-more-argv0-path-munging (2015-04-22) 1 commit
  (merged to 'next' on 2015-05-05 at b3f9a45)
 + stop putting argv[0] dirname at front of PATH

 We have prepended $GIT_EXEC_PATH and the path "git" is installed in
 (typically "/usr/bin") to $PATH when invoking subprograms and hooks
 for almost eternity, but the original use case the latter tried to
 support was semi-bogus (i.e. install git to /opt/foo/git and run it
 without having /opt/foo on $PATH), and more importantly it has
 become less and less relevant as Git grew more mainstream (i.e. the
 users would _want_ to have it on their $PATH).  Stop prepending the
 path in which "git" is installed to users' $PATH, as that would
 interfere the command search order people depend on (e.g. they may
 not like versions of programs that are unrelated to Git in /usr/bin
 and want to override them by having different ones in /usr/local/bin
 and have the latter directory earlier in their $PATH).

 Will merge to 'master' in the third batch.


* jk/stash-require-clean-index (2015-04-22) 3 commits
  (merged to 'next' on 2015-05-05 at b5f6c32)
 + stash: require a clean index to apply
 + t3903: avoid applying onto dirty index
 + t3903: stop hard-coding commit sha1s

 "git stash pop/apply" forgot to make sure that not just the working
 tree is clean but also the index is clean. The latter is important
 as a stash application can conflict and the index will be used for
 conflict resolution.

 Will merge to 'master' in the third batch.


* jc/merge (2015-04-29) 15 commits
  (merged to 'next' on 2015-05-07 at 1c56512)
 + merge: deprecate 'git merge <message> HEAD <commit>' syntax
 + merge: handle FETCH_HEAD internally
 + merge: decide if we auto-generate the message early in collect_parents()
 + merge: make collect_parents() auto-generate the merge message
 + merge: extract prepare_merge_message() logic out
 + merge: narrow scope of merge_names
 + merge: split reduce_parents() out of collect_parents()
 + merge: clarify collect_parents() logic
 + merge: small leakfix and code simplification
 + merge: do not check argc to determine number of remote heads
 + merge: clarify "pulling into void" special case
 + t5520: test pulling an octopus into an unborn branch
 + t5520: style fixes
 + merge: simplify code flow
 + merge: test the top-level merge driver
 (this branch is used by jc/merge-drop-old-syntax.)

 "git merge FETCH_HEAD" learned that the previous "git fetch" could
 be to create an Octopus merge, i.e. recording multiple branches
 that are not marked as "not-for-merge"; this allows us to lose an
 old style invocation "git merge <msg> HEAD $commits..." in the
 implementation of "git pull" script; the old style syntax can now
 be deprecated.

 Will merge to 'master' in the third batch.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
 - merge: drop 'git merge <message> HEAD <commit>' syntax
 (this branch uses jc/merge.)

 Stop supporting "git merge <messsage> HEAD <commit>" syntax that
 has been deprecated since October 2007.

 Will merge to 'next' and keep there during the 2.5 cycle.


* jk/test-chain-lint (2015-04-28) 2 commits
  (merged to 'next' on 2015-05-05 at e6f0290)
 + test-lib: turn on GIT_TEST_CHAIN_LINT by default
 + t7502-commit.sh: fix a broken and-chain

 Developer support to automatically detect broken &&-chain in the
 test scripts is now turned on by default.

 Will merge to 'master' in the third batch.


* bc/connect-plink (2015-04-28) 3 commits
  (merged to 'next' on 2015-05-05 at 9def2e1)
 + connect: improve check for plink to reduce false positives
 + t5601: fix quotation error leading to skipped tests
 + connect: simplify SSH connection code path

 The connection initiation code for "ssh" transport tried to absorb
 differences between the stock "ssh" and Putty-supplied "plink" and
 its derivatives, but the logic to tell that we are using "plink"
 variants were too loose and falsely triggered when "plink" appeared
 anywhere in the path (e.g. "/home/me/bin/uplink/ssh").

 Will merge to 'master' in the third batch.


* jc/test-prereq-validate (2015-04-28) 1 commit
  (merged to 'next' on 2015-05-05 at a30464c)
 + test: validate prerequistes syntax

 Help us to find broken test script that splits the body part of the
 test by mistaken use of wrong kind of quotes.

 Will merge to 'master' in the third batch.


* fg/document-commit-message-stripping (2015-04-27) 1 commit
  (merged to 'next' on 2015-05-05 at 1892a99)
 + Documentation: clarify how "git commit" cleans up the edited log message

 Will merge to 'master' in the third batch.


* ah/usage-strings (2015-05-03) 2 commits
 - branch: fix funny-sounding error message
 - blame, log: format usage strings similarly to those in documentation

 A few usage string updates.  The tip one still needs work.


* kn/cat-file-literally (2015-05-06) 4 commits
 - t1006: add tests for git cat-file --allow-unknown-type
 - cat-file: teach cat-file a '--allow-unknown-type' option
 - cat-file: make the options mutually exclusive
 - sha1_file: support reading from a loose object of unknown type

 Add the "--allow-unknown-type" option to "cat-file" to allow
 inspecting loose objects of an experimental or a broken type.

 Will merge to 'next'.


* nd/diff-i-t-a (2015-03-23) 1 commit
  (merged to 'next' on 2015-05-05 at cba9cd9)
 + diff-lib.c: adjust position of i-t-a entries in diff

 Originally merged to 'next' on 2015-03-24

 After "git add -N", the path appeared in output of "git diff HEAD"
 and "git diff --cached HEAD", leading "git status" to classify it
 as "Changes to be committed".  Such a path, however, is not yet to
 be scheduled to be committed.  "git diff" showed the change to the
 path as modification, not as a "new file", in the header of its
 output.

 Treat such paths as "yet to be added to the index but Git already
 know about them"; "git diff HEAD" and "git diff --cached HEAD"
 should not talk about them, and "git diff" should show them as new
 files yet to be added to the index.

 Will merge to 'master' in the third batch.

--------------------------------------------------
[Discarded]


* mh/ref-directory-file (2015-05-05) 19 commits
 . SQUASH???
 . reflog_expire(): integrate lock_ref_sha1_basic() errors into ours
 . ref_transaction_commit(): delete extra "the" from error message
 . ref_transaction_commit(): provide better error messages
 . rename_ref(): integrate lock_ref_sha1_basic() errors into ours
 . lock_ref_sha1_basic(): improve diagnostics for D/F conflicts
 . lock_ref_sha1_basic(): report errors via a "struct strbuf *err"
 . verify_refname_available(): report errors via a "struct strbuf *err"
 . verify_refname_available(): rename function
 . refs: check for D/F conflicts among refs processed in a transaction
 . ref_transaction_commit(): use a string_list for detecting duplicates
 . is_refname_available(): use dirname in first loop
 . struct nonmatching_ref_data: store a refname instead of a ref_entry
 . report_refname_conflict(): inline function
 . entry_matches(): inline function
 . is_refname_available(): convert local variable "dirname" to strbuf
 . is_refname_available(): avoid shadowing "dir" variable
 . is_refname_available(): explain the reason for an early exit
 . t1404: new tests of D/F conflicts within ref transactions
 (this branch uses mh/ref-lock-avoid-running-out-of-fds.)

 Reroll posted, but didn't have time to pick it up.



* mh/ref-lock-avoid-running-out-of-fds (2015-04-25) 8 commits
 . ref_transaction_commit(): only keep one lockfile open at a time
 . ref_transaction_commit(): remove the local flags variables
 . write_ref_sha1(): inline function at callers
 . commit_ref_update(): new function, extracted from write_ref_sha1()
 . write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
 . refs.c: remove lock_fd from struct ref_lock
 . t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
 . update-ref: test handling large transactions properly
 (this branch is used by mh/ref-directory-file.)

 Superseded by mh/write-refs-sooner* series.

^ permalink raw reply	[relevance 4%]

* What's cooking in git.git (May 2015, #03; Fri, 8)
@ 2015-05-08 22:26  6% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2015-05-08 22:26 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* dl/branch-error-message (2015-05-06) 1 commit
 - branch: do not call a "remote-tracking branch" a "remote branch"

 Will merge to 'next'.


* dl/subtree-push-no-squash (2015-05-07) 1 commit
 - contrib/subtree: there's no push --squash

 Will merge to 'next'.


* ld/p4-editor-multi-words (2015-05-07) 2 commits
 - git-p4: fix handling of multi-word P4EDITOR
 - git-p4: add failing test for P4EDITOR handling

 Unlike "$EDITOR" and "$GIT_EDITOR" that can hold the path to the
 command and initial options (e.g. "/path/to/emacs -nw"), 'git p4'
 did not let the shell interpolate the contents of the environment
 variable that name the editor "$P4EDITOR" (and "$EDITOR", too).
 Make it in line with the rest of Git, as well as with Perforce.

 Reported to break some tests that assume the non-interpolating
 behaviour that need to be fixed.


* dl/subtree-avoid-tricky-echo (2015-05-08) 1 commit
 - contrib/subtree: portability fix for string printing

 "git subtree" script (in contrib/) used "echo -n" to produce
 progress messages in a non-portable way.

 Will merge to 'next'.


* ls/http-ssl-cipher-list (2015-05-08) 1 commit
 - http: add support for specifying an SSL cipher list

 Introduce http.<url>.SSLCipherList configuration variable to tweak
 the list of cipher suite to be used with libcURL when talking with
 https:// sites.

 Will merge to 'next'.


* ps/bundle-verify-arg (2015-05-08) 1 commit
 - bundle: verify arguments more strictly

 Will merge to 'next'.


* sg/help-subcommands (2015-05-08) 1 commit
 - command-list.txt: fix whitespace inconsistency

 A preparatory clean-up step.

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* kk/log-merges-config (2015-04-21) 5 commits
 - bash-completion: add support for git-log --merges= and log.merges
 - t4202-log: add tests for --merges=
 - Documentation: add git-log --merges= option and log.merges config. var
 - log: honor log.merges= option
 - revision: add --merges={show|only|hide} option

 "git log" (but not other commands in the "log" family) learned to
 pay attention to the log.merges configuration variable that can be
 set to "show" (the normal behaviour), "only" (hide non-merge
 commits), or "hide" (hide merge commits).  --merges=(show|only|hide)
 can be used to override the setting from the command line.

 The documentation may need to be updated once more ($gmane/267250).
 Waiting for a reroll.


* mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
 - t/lib-git-svn: check same httpd module dirs as lib-httpd
 - t/lib-httpd: load mod_unixd

 This is the first two commits in a three-patch series $gmane/266962
 Will be rerolled.
 with updated log message ($gmane/268061).


* mh/numparse (2015-03-19) 14 commits
 - diff_opt_parse(): use convert_i() when handling --abbrev=<num>
 - diff_opt_parse(): use convert_i() when handling "-l<num>"
 - opt_arg(): simplify pointer handling
 - opt_arg(): report errors parsing option values
 - opt_arg(): use convert_i() in implementation
 - opt_arg(): val is always non-NULL
 - builtin_diff(): detect errors when parsing --unified argument
 - handle_revision_opt(): use convert_ui() when handling "--abbrev="
 - strtoul_ui(), strtol_i(): remove functions
 - handle_revision_opt(): use convert_i() when handling "-<digit>"
 - handle_revision_opt(): use skip_prefix() in many places
 - write_subdirectory(): use convert_ui() for parsing mode
 - cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
 - numparse: new module for parsing integral numbers

 Many codepaths use unchecked use of strtol() and friends (or even
 worse, atoi()).  Introduce a set of wrappers that try to be more
 careful.

 Will be rerolled.
 ($gmane/268058).


* tf/gitweb-project-listing (2015-03-19) 5 commits
 - gitweb: make category headings into links when they are directories
 - gitweb: optionally set project category from its pathname
 - gitweb: add a link under the search box to clear a project filter
 - gitweb: if the PATH_INFO is incomplete, use it as a project_filter
 - gitweb: fix typo in man page

 Update gitweb to make it more pleasant to deal with a hierarchical
 forest of repositories.

 Any comments from those who use or have their own code in Gitweb?


* jc/a-lone-dash-stands-for-previous-branch (2015-03-16) 1 commit
 - "-" and "@{-1}" on various programs

 Lose special case code to make a lone dash "-" mean the previous
 branch aka "@{-1}" from a handful subcommands, and instead support
 the notation throughout the system by reimplementing it at the
 revisions layer.

 Needs tests, documentation updates, etc.  Also does only a half-way
 job dealing with range notation, which needs to be fixed before the
 series goes anywhere.


* nd/list-files (2015-02-09) 21 commits
 - t3080: tests for git-list-files
 - list-files: -M aka diff-cached
 - list-files -F: show submodules with the new indicator '&'
 - list-files: add -F/--classify
 - list-files: show directories as well as files
 - list-files: do not show duplicate cached entries
 - list-files: sort output and remove duplicates
 - list-files: add -t back
 - list-files: add -1 short for --no-column
 - list-files: add -R/--recursive short for --max-depth=-1
 - list-files: -u does not imply showing stages
 - list-files: make alias 'ls' default to 'list-files'
 - list-files: a user friendly version of ls-files and more
 - ls-files: support --max-depth
 - ls-files: add --column
 - ls-files: add --color to highlight file names
 - ls-files: buffer full item in strbuf before printing
 - ls_colors.c: highlight submodules like directories
 - ls_colors.c: add a function to color a file name
 - ls_colors.c: parse color.ls.* from config file
 - ls_colors.c: add $LS_COLORS parsing code

 A new "git list-files" Porcelain command, "ls-files" with bells and
 whistles.

 Reroll to base on wt-status work ($gmane/265142) has seen some
 positive discussions.

 Waiting for a further polished reroll ($gmane/265534).


* js/fsck-opt (2015-01-21) 19 commits
 - fsck: support ignoring objects in `git fsck` via fsck.skiplist
 - fsck: git receive-pack: support excluding objects from fsck'ing
 - fsck: introduce `git fsck --quick`
 - fsck: support demoting errors to warnings
 - fsck: document the new receive.fsck.* options
 - fsck: allow upgrading fsck warnings to errors
 - fsck: optionally ignore specific fsck issues completely
 - fsck: disallow demoting grave fsck errors to warnings
 - fsck: add a simple test for receive.fsck.*
 - fsck: make fsck_tag() warn-friendly
 - fsck: handle multiple authors in commits specially
 - fsck: make fsck_commit() warn-friendly
 - fsck: make fsck_ident() warn-friendly
 - fsck: report the ID of the error/warning
 - fsck: allow demoting errors to warnings via receive.fsck.warn = <key>
 - fsck: offer a function to demote fsck errors to warnings
 - fsck: provide a function to parse fsck message IDs
 - fsck: introduce identifiers for fsck messages
 - fsck: introduce fsck options

 "fsck.warnings = <list of error tokens>" I suggested turned out to
 be an unpopular choice (sorry Dscho).

 Expecting a reroll.


* nd/untracked-cache (2015-03-12) 24 commits
 - git-status.txt: advertisement for untracked cache
 - untracked cache: guard and disable on system changes
 - mingw32: add uname()
 - t7063: tests for untracked cache
 - update-index: test the system before enabling untracked cache
 - update-index: manually enable or disable untracked cache
 - status: enable untracked cache
 - untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
 - untracked cache: mark index dirty if untracked cache is updated
 - untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
 - untracked cache: avoid racy timestamps
 - read-cache.c: split racy stat test to a separate function
 - untracked cache: invalidate at index addition or removal
 - untracked cache: load from UNTR index extension
 - untracked cache: save to an index extension
 - ewah: add convenient wrapper ewah_serialize_strbuf()
 - untracked cache: don't open non-existent .gitignore
 - untracked cache: mark what dirs should be recursed/saved
 - untracked cache: record/validate dir mtime and reuse cached output
 - untracked cache: make a wrapper around {open,read,close}dir()
 - untracked cache: invalidate dirs recursively if .gitignore changes
 - untracked cache: initial untracked cache validation
 - untracked cache: record .gitignore information and dir hierarchy
 - dir.c: optionally compute sha-1 of a .gitignore file

 Need extra sets of eyes to review this.


* nd/pathspec-strip-fix (2015-04-18) 1 commit
 - pathspec: adjust prefixlen after striping trailing slash

 Does not quite fix ($gmane/267614).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.


* pw/remote-set-url-fetch (2014-11-26) 1 commit
 - remote: add --fetch and --both options to set-url

 Expecting a reroll.


* tr/remerge-diff (2014-11-10) 9 commits
 - t4213: avoid "|" in sed regexp
 - log --remerge-diff: show what the conflict resolution changed
 - name-hash: allow dir hashing even when !ignore_case
 - merge-recursive: allow storing conflict hunks in index
 - merge_diff_mode: fold all merge diff variants into an enum
 - combine-diff: do not pass revs->dense_combined_merges redundantly
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 Waiting for a reroll ($gmane/256591).


* hv/submodule-config (2014-11-11) 4 commits
 - do not die on error of parsing fetchrecursesubmodules option
 - use new config API for worktree configurations of submodules
 - extract functions for submodule config set and lookup
 - implement submodule config cache for lookup of submodule names

 Kicked back to 'pu' per request ($gmane/255610).


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


* jc/show-branch (2014-03-24) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit.

--------------------------------------------------
[Cooking]

* jc/daemon-no-ipv6-for-2.4.1 (2015-05-05) 1 commit
  (merged to 'next' on 2015-05-05 at 1eb279f)
 + daemon: unbreak NO_IPV6 build regression

 "git daemon" fails to build from the source under NO_IPV6
 configuration (regression in 2.4).

 Will merge to 'master' in the second batch.


* sb/prefix-path-free-results (2015-05-05) 1 commit
  (merged to 'next' on 2015-05-07 at 64f15a8)
 + prefix_path(): unconditionally free results in the callers

 Code clean-up (not a leak-fix).

 Will merge to 'master' in the second batch.


* sg/completion-omit-credential-helpers (2015-05-06) 1 commit
 - completion: remove credential helpers from porcelain commands

 The Git subcommand completion (in contrib/) listed credential
 helpers among candidates, which is not something the end user would
 invoke interatively.

 Will merge to 'next'.


* jk/skip-http-tests-under-no-curl (2015-05-07) 2 commits
 - tests: skip dav http-push tests under NO_EXPAT=NoThanks
 - t/lib-httpd.sh: skip tests if NO_CURL is defined

 Test clean-up.

 Will merge to 'next'.


* mh/ref-directory-file (2015-05-05) 19 commits
 - SQUASH???
 - reflog_expire(): integrate lock_ref_sha1_basic() errors into ours
 - ref_transaction_commit(): delete extra "the" from error message
 - ref_transaction_commit(): provide better error messages
 - rename_ref(): integrate lock_ref_sha1_basic() errors into ours
 - lock_ref_sha1_basic(): improve diagnostics for D/F conflicts
 - lock_ref_sha1_basic(): report errors via a "struct strbuf *err"
 - verify_refname_available(): report errors via a "struct strbuf *err"
 - verify_refname_available(): rename function
 - refs: check for D/F conflicts among refs processed in a transaction
 - ref_transaction_commit(): use a string_list for detecting duplicates
 - is_refname_available(): use dirname in first loop
 - struct nonmatching_ref_data: store a refname instead of a ref_entry
 - report_refname_conflict(): inline function
 - entry_matches(): inline function
 - is_refname_available(): convert local variable "dirname" to strbuf
 - is_refname_available(): avoid shadowing "dir" variable
 - is_refname_available(): explain the reason for an early exit
 - t1404: new tests of D/F conflicts within ref transactions
 (this branch uses mh/ref-lock-avoid-running-out-of-fds.)

 Expecting a reroll.


* nd/dwim-wildcards-as-pathspecs (2015-05-03) 1 commit
  (merged to 'next' on 2015-05-07 at 8176de7)
 + pathspec: avoid the need of "--" when wildcard is used

 A heuristic to help the "git <cmd> <revs> <pathspec>" command line
 convention to catch mistyped paths is to make sure all the non-rev
 parameters in the later part of the command line are names of the
 files in the working tree, but that means "git grep $str -- \*.c"
 must always be disambiguated with "--", because nobody sane will
 create a file whose name literally is asterisk-dot-see.  Loosen the
 heuristic to declare that with a wildcard string the user likely
 meant to give us a pathspec.

 Will merge to 'master' in the third batch.


* pt/pull-tests (2015-05-03) 7 commits
 - t5521: test --dry-run does not make any changes
 - t5520: test --rebase failure on unborn branch with index
 - t5520: test --rebase with multiple branches
 - t5520: test work tree fast-forward when fetch updates head
 - t5520: test for failure if index has unresolved entries
 - t5520: implement tests for no merge candidates cases
 - t5520: test pulling multiple branches into an empty repository

 Add more test coverage to "git pull".  This conflicts slightly with
 a new test jc/merge topic adds, but resolution is fairly trivial.

 Expecting a reroll ($gmane/268391).


* sg/complete-decorate-full-not-long (2015-05-03) 1 commit
  (merged to 'next' on 2015-05-07 at 2beb429)
 + completion: fix and update 'git log --decorate=' options

 The completion for "log --decorate=" parameter value was incorrect.

 Will merge to 'master' in the second batch.


* sg/completion-no-redundant-all-command-list (2015-05-03) 1 commit
  (merged to 'next' on 2015-05-07 at 00b4bd9)
 + completion: remove redundant __git_compute_all_commands() call

 Code simplification.

 Will merge to 'master' in the second batch.


* jc/hash-object (2015-05-05) 4 commits
  (merged to 'next' on 2015-05-07 at 9b81a06)
 + write_sha1_file(): do not use a separate sha1[] array
 + t1007: add hash-object --literally tests
 + hash-object --literally: fix buffer overrun with extra-long object type
 + git-hash-object.txt: document --literally option

 "hash-object --literally" introduced in v2.2 was not prepared to
 take a really long object type name.

 Will merge to 'master' in the second batch.


* jn/clean-use-error-not-fprintf-on-stderr (2015-05-04) 1 commit
  (merged to 'next' on 2015-05-05 at 12391f1)
 + config: use error() instead of fprintf(stderr, ...)

 Some error messages in "git config" were emitted without calling
 the usual error() facility.

 Will merge to 'master' in the second batch.


* jc/clone-bundle (2015-04-30) 1 commit
 - repack: optionally create a clone.bundle

 Still an early WIP


* jk/at-push-sha1 (2015-05-03) 12 commits
 - for-each-ref: accept "%(push)" format
 - for-each-ref: use skip_prefix instead of starts_with
 - sha1_name: implement @{push} shorthand
 - sha1_name: refactor interpret_upstream_mark
 - sha1_name: refactor upstream_mark
 - remote.c: add branch_get_push
 - remote.c: report specific errors from branch_get_upstream
 - remote.c: introduce branch_get_upstream helper
 - remote.c: provide per-branch pushremote name
 - remote.c: hoist branch.*.remote lookup out of remote_get_1
 - remote.c: drop "remote" pointer from "struct branch"
 - remote.c: drop default_remote_name variable

 Introduce <branch>@{push} short-hand to denote the remote-tracking
 branch that tracks the branch at the remote the <branch> would be
 pushed to.

 Expecting a reroll ($gmane/268419, etc.).


* jk/rebase-quiet-noop (2015-04-28) 1 commit
  (merged to 'next' on 2015-05-05 at 82780b9)
 + rebase: silence "git checkout" for noop rebase

 "git rebase --quiet" was not quite quiet when there is nothing to
 do.

 Will merge to 'master' in the second batch.


* ld/p4-case-fold (2015-04-28) 1 commit
  (merged to 'next' on 2015-05-05 at 03ecbd0)
 + git-p4: add failing tests for case-folding p4d

 Will merge to 'master' in the second batch.


* va/fix-git-p4-tests (2015-04-28) 1 commit
  (merged to 'next' on 2015-05-05 at 795e858)
 + git-p4: t9814: prevent --chain-lint failure

 Will merge to 'master' in the second batch.


* jk/filter-branch-use-of-sed-on-incomplete-line (2015-04-29) 1 commit
  (merged to 'next' on 2015-05-07 at 849a24d)
 + filter-branch: avoid passing commit message through sed

 "filter-branch" corrupted commit log message that ends with an
 incomplete line on platforms with some "sed" implementations that
 munge such a line.  Work it around by avoiding to use "sed".

 Will merge to 'master' in the second batch.


* ph/rebase-i-redo (2015-04-29) 1 commit
  (merged to 'next' on 2015-05-07 at 8fc1f52)
 + rebase -i: redo tasks that die during cherry-pick

 "git rebase -i" moved the "current" command from "todo" to "done" a
 bit too prematurely, losing a step when a "pick" did not even start.

 Will merge to 'master' in the third batch.


* ep/do-not-feed-a-pointer-to-array-size (2015-05-05) 1 commit
  (merged to 'next' on 2015-05-07 at 64d9a20)
 + git-compat-util.h: implement a different ARRAY_SIZE macro for for safely deriving the size of array

 Catch a programmer mistake to feed a pointer not an array to
 ARRAY_SIZE() macro, by using a couple of GCC extensions.

 Will merge to 'master' in the second batch.


* tb/blame-resurrect-convert-to-git (2015-05-03) 1 commit
  (merged to 'next' on 2015-05-05 at 8e1974e)
 + blame: CRLF in the working tree and LF in the repo

 Some time ago, "git blame" (incorrectly) lost the convert_to_git()
 call when synthesizing a fake "tip" commit that represents the
 state in the working tree, which broke folks who record the history
 with LF line ending to make their project portabile across
 platforms while terminating lines in their working tree files with
 CRLF for their platform.

 Will merge to 'master' in the second batch.


* jc/plug-fmt-merge-msg-leak (2015-04-20) 1 commit
  (merged to 'next' on 2015-05-05 at bd94828)
 + fmt-merge-msg: plug small leak of commit buffer

 Originally merged to 'next' on 2015-04-21

 Will merge to 'master' in the second batch.


* ee/clean-remove-dirs (2015-04-26) 5 commits
 - clean: improve performance when removing lots of directories
 - p7300: add performance tests for clean
 - t7300: add tests to document behavior of clean and nested git
 - setup: sanity check file size in read_gitfile_gently
 - setup: add gentle version of read_gitfile

 Replace "is this subdirectory a separate repository that should not
 be touched?" check "git clean" does by checking if it has .git/HEAD
 using the submodule-related code with a more optimized check.

 Waiting for a reroll.


* jk/still-interesting (2015-04-17) 1 commit
  (merged to 'next' on 2015-05-05 at 6a5c89c)
 + limit_list: avoid quadratic behavior from still_interesting

 Originally merged to 'next' on 2015-04-21

 "git rev-list --objects $old --not --all" to see if everything that
 is reachable from $old is already connected to the existing refs
 was very inefficient.

 Will merge to 'master' in the second batch.


* ls/p4-changes-block-size (2015-04-20) 1 commit
  (merged to 'next' on 2015-05-05 at 92596d4)
 + git-p4: use -m when running p4 changes

 Originally merged to 'next' on 2015-04-21

 "git p4" learned "--changes-block-size <n>" to read the changes in
 chunks from Perforce, instead of making one call to "p4 changes"
 that may trigger "too many rows scanned" error from Perforce.

 Will merge to 'master' in the second batch.


* mm/add-p-split-error (2015-04-16) 5 commits
  (merged to 'next' on 2015-05-05 at c556011)
 + stash -p: demonstrate failure of split with mixed y/n
 + t3904-stash-patch: factor PERL prereq at the top of the file
 + t3904-stash-patch: fix test description
 + add -p: demonstrate failure when running 'edit' after a split
 + t3701-add-interactive: simplify code

 Originally merged to 'next' on 2015-04-23

 When "add--interactive" splits a hunk into two overlapping hunks
 and then let the user choose only one, it sometimes feeds an
 incorrect patch text to "git apply".  Add tests to demonstrate
 this.

 I have a slight suspicion that this may be $gmane/87202 coming back
 and biting us (I seem to have said "let's run with this and see
 what happens" back then).

 Will merge to 'master' in the second batch.


* tb/t0027-crlf (2015-04-25) 3 commits
  (merged to 'next' on 2015-05-05 at 36accbb)
 + t0027: Add repoMIX and LF_nul
 + t0027: support NATIVE_CRLF platforms
 + t0027: cleanup: rename functions; avoid non-leading TABs

 Originally merged to 'next' on 2015-04-21

 More line-ending tests.

 Will merge to 'master' in the second batch.


* jc/gitignore-precedence (2015-04-22) 1 commit
  (merged to 'next' on 2015-05-05 at 6ef85da)
 + ignore: info/exclude should trump core.excludesfile

 core.excludesfile (defaulting to $XDG_HOME/git/ignore) is supposed
 to be overridden by repository-specific .git/info/exclude file, but
 the order was swapped from the beginning. This belatedly fixes it.

 Will merge to 'master' in the third batch.


* jk/git-no-more-argv0-path-munging (2015-04-22) 1 commit
  (merged to 'next' on 2015-05-05 at b3f9a45)
 + stop putting argv[0] dirname at front of PATH

 We have prepended $GIT_EXEC_PATH and the path "git" is installed in
 (typically "/usr/bin") to $PATH when invoking subprograms and hooks
 for almost eternity, but the original use case the latter tried to
 support was semi-bogus (i.e. install git to /opt/foo/git and run it
 without having /opt/foo on $PATH), and more importantly it has
 become less and less relevant as Git grew more mainstream (i.e. the
 users would _want_ to have it on their $PATH).  Stop prepending the
 path in which "git" is installed to users' $PATH, as that would
 interfere the command search order people depend on (e.g. they may
 not like versions of programs that are unrelated to Git in /usr/bin
 and want to override them by having different ones in /usr/local/bin
 and have the latter directory earlier in their $PATH).

 Will merge to 'master' in the third batch.


* jk/stash-require-clean-index (2015-04-22) 3 commits
  (merged to 'next' on 2015-05-05 at b5f6c32)
 + stash: require a clean index to apply
 + t3903: avoid applying onto dirty index
 + t3903: stop hard-coding commit sha1s

 "git stash pop/apply" forgot to make sure that not just the working
 tree is clean but also the index is clean. The latter is important
 as a stash application can conflict and the index will be used for
 conflict resolution.

 Will merge to 'master' in the third batch.


* jc/merge (2015-04-29) 15 commits
  (merged to 'next' on 2015-05-07 at 1c56512)
 + merge: deprecate 'git merge <message> HEAD <commit>' syntax
 + merge: handle FETCH_HEAD internally
 + merge: decide if we auto-generate the message early in collect_parents()
 + merge: make collect_parents() auto-generate the merge message
 + merge: extract prepare_merge_message() logic out
 + merge: narrow scope of merge_names
 + merge: split reduce_parents() out of collect_parents()
 + merge: clarify collect_parents() logic
 + merge: small leakfix and code simplification
 + merge: do not check argc to determine number of remote heads
 + merge: clarify "pulling into void" special case
 + t5520: test pulling an octopus into an unborn branch
 + t5520: style fixes
 + merge: simplify code flow
 + merge: test the top-level merge driver
 (this branch is used by jc/merge-drop-old-syntax.)

 "git merge FETCH_HEAD" learned that the previous "git fetch" could
 be to create an Octopus merge, i.e. recording multiple branches
 that are not marked as "not-for-merge"; this allows us to lose an
 old style invocation "git merge <msg> HEAD $commits..." in the
 implementation of "git pull" script; the old style syntax can now
 be deprecated.

 Will merge to 'master' in the third batch.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
 - merge: drop 'git merge <message> HEAD <commit>' syntax
 (this branch uses jc/merge.)

 Stop supporting "git merge <messsage> HEAD <commit>" syntax that
 has been deprecated since October 2007.

 Will merge to 'next' and keep there during the 2.5 cycle.


* jk/test-chain-lint (2015-04-28) 2 commits
  (merged to 'next' on 2015-05-05 at e6f0290)
 + test-lib: turn on GIT_TEST_CHAIN_LINT by default
 + t7502-commit.sh: fix a broken and-chain

 Developer support to automatically detect broken &&-chain in the
 test scripts is now turned on by default.

 Will merge to 'master' in the third batch.


* mh/ref-lock-avoid-running-out-of-fds (2015-04-25) 8 commits
 - ref_transaction_commit(): only keep one lockfile open at a time
 - ref_transaction_commit(): remove the local flags variables
 - write_ref_sha1(): inline function at callers
 - commit_ref_update(): new function, extracted from write_ref_sha1()
 - write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
 - refs.c: remove lock_fd from struct ref_lock
 - t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
 - update-ref: test handling large transactions properly
 (this branch is used by mh/ref-directory-file.)

 "git update-ref --stdin" was converted to be "transactional" some
 time ago, but the ref transaction machinery was not prepared to
 handle many refs, primarily because it tried to keep the loose ref
 files open at the same time, which would cause us to hit the ENFILE
 limit.  Fix the ref_transaction_commit() code not to keep the file
 descriptors open unnecessarily.

 We would want to apply the fix to older codebase, but this fix is
 unfortunately done to apply only on v2.4.x track.

 Expecting a rebase to older codebase.


* bc/connect-plink (2015-04-28) 3 commits
  (merged to 'next' on 2015-05-05 at 9def2e1)
 + connect: improve check for plink to reduce false positives
 + t5601: fix quotation error leading to skipped tests
 + connect: simplify SSH connection code path

 The connection initiation code for "ssh" transport tried to absorb
 differences between the stock "ssh" and Putty-supplied "plink" and
 its derivatives, but the logic to tell that we are using "plink"
 variants were too loose and falsely triggered when "plink" appeared
 anywhere in the path (e.g. "/home/me/bin/uplink/ssh").

 Will merge to 'master' in the third batch.


* jc/test-prereq-validate (2015-04-28) 1 commit
  (merged to 'next' on 2015-05-05 at a30464c)
 + test: validate prerequistes syntax

 Help us to find broken test script that splits the body part of the
 test by mistaken use of wrong kind of quotes.

 Will merge to 'master' in the third batch.


* fg/document-commit-message-stripping (2015-04-27) 1 commit
  (merged to 'next' on 2015-05-05 at 1892a99)
 + Documentation: clarify how "git commit" cleans up the edited log message

 Will merge to 'master' in the third batch.


* ah/usage-strings (2015-05-03) 2 commits
 - branch: fix funny-sounding error message
 - blame, log: format usage strings similarly to those in documentation

 A few usage string updates.  The tip one still needs work.


* jk/reading-packed-refs (2015-04-16) 9 commits
  (merged to 'next' on 2015-05-05 at 89b5694)
 + t1430: add another refs-escape test
 + read_packed_refs: avoid double-checking sane refs
 + strbuf_getwholeline: use getdelim if it is available
 + strbuf_getwholeline: avoid calling strbuf_grow
 + strbuf_addch: avoid calling strbuf_grow
 + config: use getc_unlocked when reading from file
 + strbuf_getwholeline: use getc_unlocked
 + git-compat-util: add fallbacks for unlocked stdio
 + strbuf_getwholeline: use getc macro

 Originally merged to 'next' on 2015-04-21

 An earlier rewrite to use strbuf_getwholeline() instead of fgets(3)
 to read packed-refs file revealed that the former is unacceptably
 inefficient.

 Will merge to 'master' in the second batch.


* kn/cat-file-literally (2015-05-06) 4 commits
 - t1006: add tests for git cat-file --allow-unknown-type
 - cat-file: teach cat-file a '--allow-unknown-type' option
 - cat-file: make the options mutually exclusive
 - sha1_file: support reading from a loose object of unknown type

 Add the "--allow-unknown-type" option to "cat-file" to allow
 inspecting loose objects of an experimental or a broken type.

 This is v10 $gmane/267960 with fixup! squashed in.


* lm/squelch-bg-progress (2015-04-15) 2 commits
  (merged to 'next' on 2015-05-05 at a2fe74d)
 + compat/mingw: stubs for getpgid() and tcgetpgrp()
 + progress: no progress in background

 Originally merged to 'next' on 2015-04-21

 Many long-running operations show progress eye-candy, even when
 they are later backgrounded.  Hide the eye-candy when the process
 is sent to the background instead.

 Will merge to 'master' in the second batch.


* va/p4-client-path (2015-04-23) 2 commits
  (merged to 'next' on 2015-05-05 at 852facc)
 + git-p4: improve client path detection when branches are used
 + t9801: check git-p4's branch detection with client spec enabled

 Originally merged to 'next' on 2015-04-23

 git p4 attempts to better handle branches in Perforce.

 Will merge to 'master' in the second batch.


* jk/sha1-file-reduce-useless-warnings (2015-03-30) 1 commit
  (merged to 'next' on 2015-05-05 at a8de68e)
 + sha1_file: squelch "packfile cannot be accessed" warnings

 Originally merged to 'next' on 2015-04-21

 Will merge to 'master' in the second batch.


* pt/credential-xdg (2015-03-25) 4 commits
  (merged to 'next' on 2015-05-05 at 0d6711f)
 + t0302: "unreadable" test needs POSIXPERM
 + t0302: test credential-store support for XDG_CONFIG_HOME
 + git-credential-store: support XDG_CONFIG_HOME
 + git-credential-store: support multiple credential files
 (this branch is used by pt/xdg-config-path.)

 Originally merged to 'next' on 2015-03-25

 Tweak the sample "store" backend of the credential helper to honor
 XDG configuration file locations when specified.

 Will merge to 'master' in the second batch.


* pt/xdg-config-path (2015-05-06) 7 commits
  (merged to 'next' on 2015-05-07 at 38e7071)
 + path.c: remove home_config_paths()
 + git-config: replace use of home_config_paths()
 + git-commit: replace use of home_config_paths()
 + credential-store.c: replace home_config_paths() with xdg_config_home()
 + dir.c: replace home_config_paths() with xdg_config_home()
 + attr.c: replace home_config_paths() with xdg_config_home()
 + path.c: implement xdg_config_home()
 (this branch uses pt/credential-xdg.)

 Code clean-up for xdg configuration path support.

 Will merge to 'master' in the second batch.


* nd/diff-i-t-a (2015-03-23) 1 commit
  (merged to 'next' on 2015-05-05 at cba9cd9)
 + diff-lib.c: adjust position of i-t-a entries in diff

 Originally merged to 'next' on 2015-03-24

 After "git add -N", the path appeared in output of "git diff HEAD"
 and "git diff --cached HEAD", leading "git status" to classify it
 as "Changes to be committed".  Such a path, however, is not yet to
 be scheduled to be committed.  "git diff" showed the change to the
 path as modification, not as a "new file", in the header of its
 output.

 Treat such paths as "yet to be added to the index but Git already
 know about them"; "git diff HEAD" and "git diff --cached HEAD"
 should not talk about them, and "git diff" should show them as new
 files yet to be added to the index.

 Will merge to 'master' in the third batch.


* nd/slim-index-pack-memory-usage (2015-04-18) 2 commits
  (merged to 'next' on 2015-05-05 at 42bd845)
 + index-pack: kill union delta_base to save memory
 + index-pack: reduce object_entry size to save memory

 Originally merged to 'next' on 2015-04-21

 Memory usage of "git index-pack" has been trimmed by tens of
 per-cent.

 Will merge to 'master' in the second batch.


* nd/multiple-work-trees (2015-03-31) 41 commits
  (merged to 'next' on 2015-05-05 at 0f04a1c)
 + prune --worktrees: fix expire vs worktree existence condition
 + t1501: fix test with split index
 + t2026: fix broken &&-chain
 + t2026 needs procondition SANITY
 + git-checkout.txt: a note about multiple checkout support for submodules
 + checkout: add --ignore-other-wortrees
 + checkout: pass whole struct to parse_branchname_arg instead of individual flags
 + git-common-dir: make "modules/" per-working-directory directory
 + checkout: do not fail if target is an empty directory
 + t2025: add a test to make sure grafts is working from a linked checkout
 + checkout: don't require a work tree when checking out into a new one
 + git_path(): keep "info/sparse-checkout" per work-tree
 + count-objects: report unused files in $GIT_DIR/worktrees/...
 + gc: support prune --worktrees
 + gc: factor out gc.pruneexpire parsing code
 + gc: style change -- no SP before closing parenthesis
 + checkout: clean up half-prepared directories in --to mode
 + checkout: reject if the branch is already checked out elsewhere
 + prune: strategies for linked checkouts
 + checkout: support checking out into a new working directory
 + use new wrapper write_file() for simple file writing
 + wrapper.c: wrapper to open a file, fprintf then close
 + setup.c: support multi-checkout repo setup
 + setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 + setup.c: convert check_repository_format_gently to use strbuf
 + setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 + setup.c: convert is_git_directory() to use strbuf
 + git-stash: avoid hardcoding $GIT_DIR/logs/....
 + *.sh: avoid hardcoding $GIT_DIR/hooks/...
 + git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 + $GIT_COMMON_DIR: a new environment variable
 + commit: use SEQ_DIR instead of hardcoding "sequencer"
 + fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 + reflog: avoid constructing .lock path with git_path
 + *.sh: respect $GIT_INDEX_FILE
 + git_path(): be aware of file relocation in $GIT_DIR
 + path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 + path.c: rename vsnpath() to do_git_path()
 + git_snpath(): retire and replace with strbuf_git_path()
 + path.c: make get_pathname() call sites return const char *
 + path.c: make get_pathname() return strbuf instead of static buffer

 Originally merged to 'next' on 2015-04-02

 A replacement for contrib/workdir/git-new-workdir that does not
 rely on symbolic links and make sharing of objects and refs safer
 by making the borrowee and borrowers aware of each other.

 Will merge to 'master' in the second batch.

^ permalink raw reply	[relevance 6%]

* What's cooking in git.git (May 2015, #02; Wed, 6)
@ 2015-05-06 19:59  5% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2015-05-06 19:59 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

The first batch for the next feature release (tentatively called 2.5)
has been merged to 'master'.  They mostly are fixes that are meant
for the first maintenance release for 2.4.x track.  The tip of 'next'
has been rewound and rebuilt.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* bc/object-id (2015-03-13) 10 commits
  (merged to 'next' on 2015-05-05 at 975002f)
 + apply: convert threeway_stage to object_id
 + patch-id: convert to use struct object_id
 + commit: convert parts to struct object_id
 + diff: convert struct combine_diff_path to object_id
 + bulk-checkin.c: convert to use struct object_id
 + zip: use GIT_SHA1_HEXSZ for trailers
 + archive.c: convert to use struct object_id
 + bisect.c: convert leaf functions to use struct object_id
 + define utility functions for object IDs
 + define a structure for object IDs

 Originally merged to 'next' on 2015-03-24

 Identify parts of the code that knows that we use SHA-1 hash to
 name our objects too much, and use (1) symbolic constants instead
 of hardcoded 20 as byte count and/or (2) use struct object_id
 instead of unsigned char [20] for object names.


* cn/bom-in-gitignore (2015-04-16) 5 commits
  (merged to 'next' on 2015-05-05 at 8aa8b91)
 + attr: skip UTF8 BOM at the beginning of the input file
 + config: use utf8_bom[] from utf.[ch] in git_parse_source()
 + utf8-bom: introduce skip_utf8_bom() helper
 + add_excludes_from_file: clarify the bom skipping logic
 + dir: allow a BOM at the beginning of exclude files

 Originally merged to 'next' on 2015-04-21

 Teach the codepaths that read .gitignore and .gitattributes files
 that these files encoded in UTF-8 may have UTF-8 BOM marker at the
 beginning; this makes it in line with what we do for configuration
 files already.


* ep/fix-test-lib-functions-report (2015-04-16) 1 commit
  (merged to 'next' on 2015-05-05 at e49e876)
 + test-lib-functions.sh: fix the second argument to some helper functions

 Originally merged to 'next' on 2015-04-21


* jc/diff-no-index-d-f (2015-03-26) 2 commits
  (merged to 'next' on 2015-05-05 at 61538ca)
 + diff-no-index: align D/F handling with that of normal Git
 + diff-no-index: DWIM "diff D F" into "diff D/F F"

 Originally merged to 'next' on 2015-03-27

 The usual "git diff" when seeing a file turning into a directory
 showed a patchset to remove the file and create all files in the
 directory, but "git diff --no-index" simply refused to work.  Also,
 when asked to compare a file and a directory, imitate POSIX "diff"
 and compare the file with the file with the same name in the
 directory, instead of refusing to run.


* jc/epochtime-wo-tz (2015-04-15) 2 commits
  (merged to 'next' on 2015-05-05 at 3d10988)
 + parse_date_basic(): let the system handle DST conversion
 + parse_date_basic(): return early when given a bogus timestamp

 Originally merged to 'next' on 2015-04-21

 "git commit --date=now" or anything that relies on approxidate lost
 the daylight-saving-time offset.


* jk/init-core-worktree-at-root (2015-04-02) 1 commit
  (merged to 'next' on 2015-05-05 at 65c7453)
 + init: don't set core.worktree when initializing /.git

 Originally merged to 'next' on 2015-04-08

 We avoid setting core.worktree when the repository location is the
 ".git" directory directly at the top level of the working tree, but
 the code misdetected the case in which the working tree is at the
 root level of the filesystem (which arguably is a silly thing to
 do, but still valid).


* jk/prune-mtime (2015-04-20) 3 commits
  (merged to 'next' on 2015-05-05 at 6c0a311)
 + sha1_file: only freshen packs once per run
 + sha1_file: freshen pack objects before loose
 + reachable: only mark local objects as recent

 Originally merged to 'next' on 2015-04-21

 Access to objects in repositories that borrow from another one on a
 slow NFS server unnecessarily got more expensive due to recent code
 becoming more cautious in a naive way not to lose objects to pruning.


* jk/type-from-string-gently (2015-04-17) 1 commit
  (merged to 'next' on 2015-05-05 at 73b5c2a)
 + type_from_string_gently: make sure length matches

 Originally merged to 'next' on 2015-04-20

 "git cat-file bl $blob" failed to barf even though there is no
 object type that is "bl".


* ld/p4-filetype-detection (2015-04-04) 3 commits
  (merged to 'next' on 2015-05-05 at ce95858)
 + git-p4: fix filetype detection on files opened exclusively
 + git-p4: small fix for locked-file-move-test
 + git-p4: fix small bug in locked test scripts

 Originally merged to 'next' on 2015-04-08


* mh/show-branch-topic (2015-03-31) 1 commit
  (merged to 'next' on 2015-05-05 at 43c6237)
 + show-branch: show all local heads when only giving one rev along --topics

 Originally merged to 'next' on 2015-04-08

 "git show-branch --topics HEAD" (with no other arguments) did not
 do anything interesting.  Instead, contrast the given revision
 against all the local branches by default.


* mm/usage-log-l-can-take-regex (2015-04-20) 2 commits
  (merged to 'next' on 2015-05-05 at dbe590c)
 + log -L: improve error message on malformed argument
 + Documentation: change -L:<regex> to -L:<funcname>

 Originally merged to 'next' on 2015-04-21

 Documentation fix.


* nd/t1509-chroot-test (2015-04-18) 1 commit
  (merged to 'next' on 2015-05-05 at e93f60e)
 + t1509: update prepare script to be able to run t1509 in chroot again

 Originally merged to 'next' on 2015-04-21

 Correct test bitrot.


* oh/fix-config-default-user-name-section (2015-04-17) 1 commit
  (merged to 'next' on 2015-05-05 at b4778c2)
 + config: fix settings in default_user_config template

 Originally merged to 'next' on 2015-04-20

 The default $HOME/.gitconfig file created upon "git config --global"
 that edits it had incorrectly spelled user.name and user.email
 entries in it.


* sb/line-log-plug-pairdiff-leak (2015-03-30) 1 commit
  (merged to 'next' on 2015-05-05 at 3d8e735)
 + line-log.c: fix a memleak

 Originally merged to 'next' on 2015-04-08


* sb/test-bitmap-free-at-end (2015-04-12) 1 commit
  (merged to 'next' on 2015-05-05 at 2b83c75)
 + pack-bitmap.c: fix a memleak

 Originally merged to 'next' on 2015-04-14


* ts/checkout-advice-plural (2015-04-02) 1 commit
  (merged to 'next' on 2015-05-05 at 546f824)
 + checkout: call a single commit "it" intead of "them"

 Originally merged to 'next' on 2015-04-08

--------------------------------------------------
[New Topics]

* jc/daemon-no-ipv6-for-2.4.1 (2015-05-05) 1 commit
  (merged to 'next' on 2015-05-05 at 1eb279f)
 + daemon: unbreak NO_IPV6 build regression

 "git daemon" fails to build from the source under NO_IPV6
 configuration (regression in 2.4).

 Will merge to 'master' in the second batch.


* sb/prefix-path-free-results (2015-05-05) 1 commit
 - prefix_path(): unconditionally free results in the callers

 Code clean-up (not a leak-fix).

 Will merge to 'next'.


* sg/completion-omit-credential-helpers (2015-05-05) 2 commits
 - SQUASH???
 - completion: remove credential helpers from porcelain commands

 The Git subcommand completion (in contrib/) listed credential
 helpers among candidates, which is not something the end user would
 invoke interatively.

 Will merge to 'next' after squashing the fix in.


* jk/skip-http-tests-under-no-curl (2015-05-06) 1 commit
 - t/lib-httpd.sh: skip tests if NO_CURL is defined

 Test clean-up.

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* kk/log-merges-config (2015-04-21) 5 commits
 - bash-completion: add support for git-log --merges= and log.merges
 - t4202-log: add tests for --merges=
 - Documentation: add git-log --merges= option and log.merges config. var
 - log: honor log.merges= option
 - revision: add --merges={show|only|hide} option

 "git log" (but not other commands in the "log" family) learned to
 pay attention to the log.merges configuration variable that can be
 set to "show" (the normal behaviour), "only" (hide non-merge
 commits), or "hide" (hide merge commits).  --merges=(show|only|hide)
 can be used to override the setting from the command line.

 The documentation may need to be updated once more ($gmane/267250).
 Waiting for a reroll.


* mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
 - t/lib-git-svn: check same httpd module dirs as lib-httpd
 - t/lib-httpd: load mod_unixd

 This is the first two commits in a three-patch series $gmane/266962
 Will be rerolled.
 with updated log message ($gmane/268061).


* mh/numparse (2015-03-19) 14 commits
 - diff_opt_parse(): use convert_i() when handling --abbrev=<num>
 - diff_opt_parse(): use convert_i() when handling "-l<num>"
 - opt_arg(): simplify pointer handling
 - opt_arg(): report errors parsing option values
 - opt_arg(): use convert_i() in implementation
 - opt_arg(): val is always non-NULL
 - builtin_diff(): detect errors when parsing --unified argument
 - handle_revision_opt(): use convert_ui() when handling "--abbrev="
 - strtoul_ui(), strtol_i(): remove functions
 - handle_revision_opt(): use convert_i() when handling "-<digit>"
 - handle_revision_opt(): use skip_prefix() in many places
 - write_subdirectory(): use convert_ui() for parsing mode
 - cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
 - numparse: new module for parsing integral numbers

 Many codepaths use unchecked use of strtol() and friends (or even
 worse, atoi()).  Introduce a set of wrappers that try to be more
 careful.

 Will be rerolled.
 ($gmane/268058).


* tf/gitweb-project-listing (2015-03-19) 5 commits
 - gitweb: make category headings into links when they are directories
 - gitweb: optionally set project category from its pathname
 - gitweb: add a link under the search box to clear a project filter
 - gitweb: if the PATH_INFO is incomplete, use it as a project_filter
 - gitweb: fix typo in man page

 Update gitweb to make it more pleasant to deal with a hierarchical
 forest of repositories.

 Any comments from those who use or have their own code in Gitweb?


* jc/a-lone-dash-stands-for-previous-branch (2015-03-16) 1 commit
 - "-" and "@{-1}" on various programs

 Lose special case code to make a lone dash "-" mean the previous
 branch aka "@{-1}" from a handful subcommands, and instead support
 the notation throughout the system by reimplementing it at the
 revisions layer.

 Needs tests, documentation updates, etc.  Also does only a half-way
 job dealing with range notation, which needs to be fixed before the
 series goes anywhere.


* nd/list-files (2015-02-09) 21 commits
 - t3080: tests for git-list-files
 - list-files: -M aka diff-cached
 - list-files -F: show submodules with the new indicator '&'
 - list-files: add -F/--classify
 - list-files: show directories as well as files
 - list-files: do not show duplicate cached entries
 - list-files: sort output and remove duplicates
 - list-files: add -t back
 - list-files: add -1 short for --no-column
 - list-files: add -R/--recursive short for --max-depth=-1
 - list-files: -u does not imply showing stages
 - list-files: make alias 'ls' default to 'list-files'
 - list-files: a user friendly version of ls-files and more
 - ls-files: support --max-depth
 - ls-files: add --column
 - ls-files: add --color to highlight file names
 - ls-files: buffer full item in strbuf before printing
 - ls_colors.c: highlight submodules like directories
 - ls_colors.c: add a function to color a file name
 - ls_colors.c: parse color.ls.* from config file
 - ls_colors.c: add $LS_COLORS parsing code

 A new "git list-files" Porcelain command, "ls-files" with bells and
 whistles.

 Reroll to base on wt-status work ($gmane/265142) has seen some
 positive discussions.

 Waiting for a further polished reroll ($gmane/265534).


* js/fsck-opt (2015-01-21) 19 commits
 - fsck: support ignoring objects in `git fsck` via fsck.skiplist
 - fsck: git receive-pack: support excluding objects from fsck'ing
 - fsck: introduce `git fsck --quick`
 - fsck: support demoting errors to warnings
 - fsck: document the new receive.fsck.* options
 - fsck: allow upgrading fsck warnings to errors
 - fsck: optionally ignore specific fsck issues completely
 - fsck: disallow demoting grave fsck errors to warnings
 - fsck: add a simple test for receive.fsck.*
 - fsck: make fsck_tag() warn-friendly
 - fsck: handle multiple authors in commits specially
 - fsck: make fsck_commit() warn-friendly
 - fsck: make fsck_ident() warn-friendly
 - fsck: report the ID of the error/warning
 - fsck: allow demoting errors to warnings via receive.fsck.warn = <key>
 - fsck: offer a function to demote fsck errors to warnings
 - fsck: provide a function to parse fsck message IDs
 - fsck: introduce identifiers for fsck messages
 - fsck: introduce fsck options

 "fsck.warnings = <list of error tokens>" I suggested turned out to
 be an unpopular choice (sorry Dscho).

 Expecting a reroll.


* nd/untracked-cache (2015-03-12) 24 commits
 - git-status.txt: advertisement for untracked cache
 - untracked cache: guard and disable on system changes
 - mingw32: add uname()
 - t7063: tests for untracked cache
 - update-index: test the system before enabling untracked cache
 - update-index: manually enable or disable untracked cache
 - status: enable untracked cache
 - untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
 - untracked cache: mark index dirty if untracked cache is updated
 - untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
 - untracked cache: avoid racy timestamps
 - read-cache.c: split racy stat test to a separate function
 - untracked cache: invalidate at index addition or removal
 - untracked cache: load from UNTR index extension
 - untracked cache: save to an index extension
 - ewah: add convenient wrapper ewah_serialize_strbuf()
 - untracked cache: don't open non-existent .gitignore
 - untracked cache: mark what dirs should be recursed/saved
 - untracked cache: record/validate dir mtime and reuse cached output
 - untracked cache: make a wrapper around {open,read,close}dir()
 - untracked cache: invalidate dirs recursively if .gitignore changes
 - untracked cache: initial untracked cache validation
 - untracked cache: record .gitignore information and dir hierarchy
 - dir.c: optionally compute sha-1 of a .gitignore file

 Need extra sets of eyes to review this.


* nd/pathspec-strip-fix (2015-04-18) 1 commit
 - pathspec: adjust prefixlen after striping trailing slash

 Does not quite fix ($gmane/267614).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.


* pw/remote-set-url-fetch (2014-11-26) 1 commit
 - remote: add --fetch and --both options to set-url

 Expecting a reroll.


* tr/remerge-diff (2014-11-10) 9 commits
 - t4213: avoid "|" in sed regexp
 - log --remerge-diff: show what the conflict resolution changed
 - name-hash: allow dir hashing even when !ignore_case
 - merge-recursive: allow storing conflict hunks in index
 - merge_diff_mode: fold all merge diff variants into an enum
 - combine-diff: do not pass revs->dense_combined_merges redundantly
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 Waiting for a reroll ($gmane/256591).


* hv/submodule-config (2014-11-11) 4 commits
 - do not die on error of parsing fetchrecursesubmodules option
 - use new config API for worktree configurations of submodules
 - extract functions for submodule config set and lookup
 - implement submodule config cache for lookup of submodule names

 Kicked back to 'pu' per request ($gmane/255610).


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


* jc/show-branch (2014-03-24) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit.

--------------------------------------------------
[Cooking]

* mh/ref-directory-file (2015-05-05) 19 commits
 - SQUASH???
 - reflog_expire(): integrate lock_ref_sha1_basic() errors into ours
 - ref_transaction_commit(): delete extra "the" from error message
 - ref_transaction_commit(): provide better error messages
 - rename_ref(): integrate lock_ref_sha1_basic() errors into ours
 - lock_ref_sha1_basic(): improve diagnostics for D/F conflicts
 - lock_ref_sha1_basic(): report errors via a "struct strbuf *err"
 - verify_refname_available(): report errors via a "struct strbuf *err"
 - verify_refname_available(): rename function
 - refs: check for D/F conflicts among refs processed in a transaction
 - ref_transaction_commit(): use a string_list for detecting duplicates
 - is_refname_available(): use dirname in first loop
 - struct nonmatching_ref_data: store a refname instead of a ref_entry
 - report_refname_conflict(): inline function
 - entry_matches(): inline function
 - is_refname_available(): convert local variable "dirname" to strbuf
 - is_refname_available(): avoid shadowing "dir" variable
 - is_refname_available(): explain the reason for an early exit
 - t1404: new tests of D/F conflicts within ref transactions
 (this branch uses mh/ref-lock-avoid-running-out-of-fds.)

 Expecting a reroll.


* nd/dwim-wildcards-as-pathspecs (2015-05-03) 1 commit
 - pathspec: avoid the need of "--" when wildcard is used

 A heuristic to help the "git <cmd> <revs> <pathspec>" command line
 convention to catch mistyped paths is to make sure all the non-rev
 parameters in the later part of the command line are names of the
 files in the working tree, but that means "git grep $str -- \*.c"
 must always be disambiguated with "--", because nobody sane will
 create a file whose name literally is asterisk-dot-see.  Loosen the
 heuristic to declare that with a wildcard string the user likely
 meant to give us a pathspec.

 Will merge to 'next'.


* pt/pull-tests (2015-05-03) 7 commits
 - t5521: test --dry-run does not make any changes
 - t5520: test --rebase failure on unborn branch with index
 - t5520: test --rebase with multiple branches
 - t5520: test work tree fast-forward when fetch updates head
 - t5520: test for failure if index has unresolved entries
 - t5520: implement tests for no merge candidates cases
 - t5520: test pulling multiple branches into an empty repository

 Add more test coverage to "git pull".  This conflicts slightly with
 a new test jc/merge topic adds, but resolution is fairly trivial.

 Expecting a reroll ($gmane/268391).


* sg/complete-decorate-full-not-long (2015-05-03) 1 commit
 - completion: fix and update 'git log --decorate=' options

 The completion for "log --decorate=" parameter value was incorrect.

 Will merge to 'next'.


* sg/completion-no-redundant-all-command-list (2015-05-03) 1 commit
 - completion: remove redundant __git_compute_all_commands() call

 Code simplification.

 Will merge to 'next'.


* jc/hash-object (2015-05-05) 4 commits
 - write_sha1_file(): do not use a separate sha1[] array
 - t1007: add hash-object --literally tests
 - hash-object --literally: fix buffer overrun with extra-long object type
 - git-hash-object.txt: document --literally option

 "hash-object --literally" introduced in v2.2 days was not prepared
 to take a really long object type name.

 Will merge to 'next'.


* jn/clean-use-error-not-fprintf-on-stderr (2015-05-04) 1 commit
  (merged to 'next' on 2015-05-05 at 12391f1)
 + config: use error() instead of fprintf(stderr, ...)

 Some error messages in "git config" were emitted without calling
 the usual error() facility.

 Will merge to 'master' in the second batch.


* jc/clone-bundle (2015-04-30) 1 commit
 - repack: optionally create a clone.bundle

 Still an early WIP


* jk/at-push-sha1 (2015-05-03) 12 commits
 - for-each-ref: accept "%(push)" format
 - for-each-ref: use skip_prefix instead of starts_with
 - sha1_name: implement @{push} shorthand
 - sha1_name: refactor interpret_upstream_mark
 - sha1_name: refactor upstream_mark
 - remote.c: add branch_get_push
 - remote.c: report specific errors from branch_get_upstream
 - remote.c: introduce branch_get_upstream helper
 - remote.c: provide per-branch pushremote name
 - remote.c: hoist branch.*.remote lookup out of remote_get_1
 - remote.c: drop "remote" pointer from "struct branch"
 - remote.c: drop default_remote_name variable

 Introduce <branch>@{push} short-hand to denote the remote-tracking
 branch that tracks the branch at the remote the <branch> would be
 pushed to.

 Expecting a reroll ($gmane/268419, etc.).


* jk/rebase-quiet-noop (2015-04-28) 1 commit
  (merged to 'next' on 2015-05-05 at 82780b9)
 + rebase: silence "git checkout" for noop rebase

 "git rebase --quiet" was not quite quiet when there is nothing to
 do.

 Will merge to 'master' in the second batch.


* ld/p4-case-fold (2015-04-28) 1 commit
  (merged to 'next' on 2015-05-05 at 03ecbd0)
 + git-p4: add failing tests for case-folding p4d

 Will merge to 'master' in the second batch.


* va/fix-git-p4-tests (2015-04-28) 1 commit
  (merged to 'next' on 2015-05-05 at 795e858)
 + git-p4: t9814: prevent --chain-lint failure

 Will merge to 'master' in the second batch.


* jk/filter-branch-use-of-sed-on-incomplete-line (2015-04-29) 1 commit
 - filter-branch: avoid passing commit message through sed

 "filter-branch" was broken by some "sed" implementations that
 corrupt commit log message that ends with an incomplete line.
 Work it around by avoiding to use "sed".

 Will merge to 'next'.


* ph/rebase-i-redo (2015-04-29) 1 commit
 - rebase -i: redo tasks that die during cherry-pick

 "git rebase -i" moved the "current" command from "todo" to "done" a
 bit too prematurely, losing a step when a "pick" did not even start.

 Will merge to 'next'.


* ep/do-not-feed-a-pointer-to-array-size (2015-05-05) 1 commit
 - git-compat-util.h: implement a different ARRAY_SIZE macro for for safely deriving the size of array

 Catch programmer mistake to feed a pointer not an array to
 ARRAY_SIZE() macro, by using a couple of GCC extensions.

 Will merge to 'next'.


* tb/blame-resurrect-convert-to-git (2015-05-03) 1 commit
  (merged to 'next' on 2015-05-05 at 8e1974e)
 + blame: CRLF in the working tree and LF in the repo

 Some time ago, "git blame" (incorrectly) lost the convert_to_git()
 call when synthesizing a fake "tip" commit that represents the
 state in the working tree, which broke folks who record the history
 with LF line ending to make their project portabile across
 platforms while terminating lines in their working tree files with
 CRLF for their platform.

 Will merge to 'master' in the second batch.


* jc/plug-fmt-merge-msg-leak (2015-04-20) 1 commit
  (merged to 'next' on 2015-05-05 at bd94828)
 + fmt-merge-msg: plug small leak of commit buffer

 Originally merged to 'next' on 2015-04-21

 Will merge to 'master' in the second batch.


* ee/clean-remove-dirs (2015-04-26) 5 commits
 - clean: improve performance when removing lots of directories
 - p7300: add performance tests for clean
 - t7300: add tests to document behavior of clean and nested git
 - setup: sanity check file size in read_gitfile_gently
 - setup: add gentle version of read_gitfile

 Replace "is this subdirectory a separate repository that should not
 be touched?" check "git clean" does by checking if it has .git/HEAD
 using the submodule-related code with a more optimized check.

 Waiting for a reroll.


* jk/still-interesting (2015-04-17) 1 commit
  (merged to 'next' on 2015-05-05 at 6a5c89c)
 + limit_list: avoid quadratic behavior from still_interesting

 Originally merged to 'next' on 2015-04-21

 "git rev-list --objects $old --not --all" to see if everything that
 is reachable from $old is already connected to the existing refs
 was very inefficient.

 Will merge to 'master' in the second batch.


* ls/p4-changes-block-size (2015-04-20) 1 commit
  (merged to 'next' on 2015-05-05 at 92596d4)
 + git-p4: use -m when running p4 changes

 Originally merged to 'next' on 2015-04-21

 "git p4" learned "--changes-block-size <n>" to read the changes in
 chunks from Perforce, instead of making one call to "p4 changes"
 that may trigger "too many rows scanned" error from Perforce.

 Will merge to 'master' in the second batch.


* mm/add-p-split-error (2015-04-16) 5 commits
  (merged to 'next' on 2015-05-05 at c556011)
 + stash -p: demonstrate failure of split with mixed y/n
 + t3904-stash-patch: factor PERL prereq at the top of the file
 + t3904-stash-patch: fix test description
 + add -p: demonstrate failure when running 'edit' after a split
 + t3701-add-interactive: simplify code

 Originally merged to 'next' on 2015-04-23

 When "add--interactive" splits a hunk into two overlapping hunks
 and then let the user choose only one, it sometimes feeds an
 incorrect patch text to "git apply".  Add tests to demonstrate
 this.

 I have a slight suspicion that this may be $gmane/87202 coming back
 and biting us (I seem to have said "let's run with this and see
 what happens" back then).

 Will merge to 'master' in the second batch.


* tb/t0027-crlf (2015-04-25) 3 commits
  (merged to 'next' on 2015-05-05 at 36accbb)
 + t0027: Add repoMIX and LF_nul
 + t0027: support NATIVE_CRLF platforms
 + t0027: cleanup: rename functions; avoid non-leading TABs

 Originally merged to 'next' on 2015-04-21

 More line-ending tests.

 Will merge to 'master' in the second batch.


* jc/gitignore-precedence (2015-04-22) 1 commit
  (merged to 'next' on 2015-05-05 at 6ef85da)
 + ignore: info/exclude should trump core.excludesfile

 core.excludesfile (defaulting to $XDG_HOME/git/ignore) is supposed
 to be overridden by repository-specific .git/info/exclude file, but
 the order was swapped from the beginning. This belatedly fixes it.

 Will merge to 'master' in the third batch.


* jk/git-no-more-argv0-path-munging (2015-04-22) 1 commit
  (merged to 'next' on 2015-05-05 at b3f9a45)
 + stop putting argv[0] dirname at front of PATH

 We have prepended $GIT_EXEC_PATH and the path "git" is installed in
 (typically "/usr/bin") to $PATH when invoking subprograms and hooks
 for almost eternity, but the original use case the latter tried to
 support was semi-bogus (i.e. install git to /opt/foo/git and run it
 without having /opt/foo on $PATH), and more importantly it has
 become less and less relevant as Git grew more mainstream (i.e. the
 users would _want_ to have it on their $PATH).  Stop prepending the
 path in which "git" is installed to users' $PATH, as that would
 interfere the command search order people depend on (e.g. they may
 not like versions of programs that are unrelated to Git in /usr/bin
 and want to override them by having different ones in /usr/local/bin
 and have the latter directory earlier in their $PATH).

 Will merge to 'master' in the third batch.


* jk/stash-require-clean-index (2015-04-22) 3 commits
  (merged to 'next' on 2015-05-05 at b5f6c32)
 + stash: require a clean index to apply
 + t3903: avoid applying onto dirty index
 + t3903: stop hard-coding commit sha1s

 "git stash pop/apply" forgot to make sure that not just the working
 tree is clean but also the index is clean. The latter is important
 as a stash application can conflict and the index will be used for
 conflict resolution.

 Will merge to 'master' in the third batch.


* jc/merge (2015-04-29) 15 commits
 - merge: deprecate 'git merge <message> HEAD <commit>' syntax
 - merge: handle FETCH_HEAD internally
 - merge: decide if we auto-generate the message early in collect_parents()
 - merge: make collect_parents() auto-generate the merge message
 - merge: extract prepare_merge_message() logic out
 - merge: narrow scope of merge_names
 - merge: split reduce_parents() out of collect_parents()
 - merge: clarify collect_parents() logic
 - merge: small leakfix and code simplification
 - merge: do not check argc to determine number of remote heads
 - merge: clarify "pulling into void" special case
 - t5520: test pulling an octopus into an unborn branch
 - t5520: style fixes
 - merge: simplify code flow
 - merge: test the top-level merge driver
 (this branch is used by jc/merge-drop-old-syntax.)

 "git merge FETCH_HEAD" learned that the previous "git fetch" could
 be to create an Octopus merge, i.e. recording multiple branches
 that are not marked as "not-for-merge"; this allows us to lose an
 old style invocation "git merge <msg> HEAD $commits..." in the
 implementation of "git pull" script; the old style syntax can now
 be deprecated.

 Will merge to 'next'.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
 - merge: drop 'git merge <message> HEAD <commit>' syntax
 (this branch uses jc/merge.)

 Stop supporting "git merge <messsage> HEAD <commit>" syntax that
 has been deprecated since October 2007.

 Will merge to 'next' and keep there during the 2.5 cycle.


* jk/test-chain-lint (2015-04-28) 2 commits
  (merged to 'next' on 2015-05-05 at e6f0290)
 + test-lib: turn on GIT_TEST_CHAIN_LINT by default
 + t7502-commit.sh: fix a broken and-chain

 Developer support to automatically detect broken &&-chain in the
 test scripts is now turned on by default.

 Will merge to 'master' in the third batch.


* mh/ref-lock-avoid-running-out-of-fds (2015-04-25) 8 commits
 - ref_transaction_commit(): only keep one lockfile open at a time
 - ref_transaction_commit(): remove the local flags variables
 - write_ref_sha1(): inline function at callers
 - commit_ref_update(): new function, extracted from write_ref_sha1()
 - write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
 - refs.c: remove lock_fd from struct ref_lock
 - t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
 - update-ref: test handling large transactions properly
 (this branch is used by mh/ref-directory-file.)

 "git update-ref --stdin" was converted to be "transactional" some
 time ago, but the ref transaction machinery was not prepared to
 handle many refs, primarily because it tried to keep the loose ref
 files open at the same time, which would cause us to hit the ENFILE
 limit.  Fix the ref_transaction_commit() code not to keep the file
 descriptors open unnecessarily.

 We would want to apply the fix to older codebase, but this fix is
 unfortunately done to apply only on v2.4.x track.

 Expecting a rebase to older codebase.


* bc/connect-plink (2015-04-28) 3 commits
  (merged to 'next' on 2015-05-05 at 9def2e1)
 + connect: improve check for plink to reduce false positives
 + t5601: fix quotation error leading to skipped tests
 + connect: simplify SSH connection code path

 The connection initiation code for "ssh" transport tried to absorb
 differences between the stock "ssh" and Putty-supplied "plink" and
 its derivatives, but the logic to tell that we are using "plink"
 variants were too loose and falsely triggered when "plink" appeared
 anywhere in the path (e.g. "/home/me/bin/uplink/ssh").

 Will merge to 'master' in the third batch.


* jc/test-prereq-validate (2015-04-28) 1 commit
  (merged to 'next' on 2015-05-05 at a30464c)
 + test: validate prerequistes syntax

 Help us to find broken test script that splits the body part of the
 test by mistaken use of wrong kind of quotes.

 Will merge to 'master' in the third batch.


* fg/document-commit-message-stripping (2015-04-27) 1 commit
  (merged to 'next' on 2015-05-05 at 1892a99)
 + Documentation: clarify how "git commit" cleans up the edited log message

 Will merge to 'master' in the third batch.


* ah/usage-strings (2015-05-03) 2 commits
 - branch: fix funny-sounding error message
 - blame, log: format usage strings similarly to those in documentation

 A few usage string updates.  The tip one still needs work.


* jk/reading-packed-refs (2015-04-16) 9 commits
  (merged to 'next' on 2015-05-05 at 89b5694)
 + t1430: add another refs-escape test
 + read_packed_refs: avoid double-checking sane refs
 + strbuf_getwholeline: use getdelim if it is available
 + strbuf_getwholeline: avoid calling strbuf_grow
 + strbuf_addch: avoid calling strbuf_grow
 + config: use getc_unlocked when reading from file
 + strbuf_getwholeline: use getc_unlocked
 + git-compat-util: add fallbacks for unlocked stdio
 + strbuf_getwholeline: use getc macro

 Originally merged to 'next' on 2015-04-21

 An earlier rewrite to use strbuf_getwholeline() instead of fgets(3)
 to read packed-refs file revealed that the former is unacceptably
 inefficient.

 Will merge to 'master' in the second batch.


* kn/cat-file-literally (2015-05-04) 5 commits
 - fixup! sha1_file: support reading from a loose object of unknown type
 - t1006: add tests for git cat-file --allow-unknown-type
 - cat-file: teach cat-file a '--allow-unknown-type' option
 - cat-file: make the options mutually exclusive
 - sha1_file: support reading from a loose object of unknown type

 Add the "--allow-unknown-type" option to "cat-file" to allow
 inspecting loose objects of an experimental or a broken type.

 This is v10 $gmane/267960; I think with fixup! squashed in the
 series is in a good shape (the test may fail without Eric's fix
 to "hash-object --literally" elsewhere, though).


* lm/squelch-bg-progress (2015-04-15) 2 commits
  (merged to 'next' on 2015-05-05 at a2fe74d)
 + compat/mingw: stubs for getpgid() and tcgetpgrp()
 + progress: no progress in background

 Originally merged to 'next' on 2015-04-21

 Many long-running operations show progress eye-candy, even when
 they are later backgrounded.  Hide the eye-candy when the process
 is sent to the background instead.

 Will merge to 'master' in the second batch.


* va/p4-client-path (2015-04-23) 2 commits
  (merged to 'next' on 2015-05-05 at 852facc)
 + git-p4: improve client path detection when branches are used
 + t9801: check git-p4's branch detection with client spec enabled

 Originally merged to 'next' on 2015-04-23

 git p4 attempts to better handle branches in Perforce.

 Will merge to 'master' in the second batch.


* jk/sha1-file-reduce-useless-warnings (2015-03-30) 1 commit
  (merged to 'next' on 2015-05-05 at a8de68e)
 + sha1_file: squelch "packfile cannot be accessed" warnings

 Originally merged to 'next' on 2015-04-21

 Will merge to 'master' in the second batch.


* pt/credential-xdg (2015-03-25) 4 commits
  (merged to 'next' on 2015-05-05 at 0d6711f)
 + t0302: "unreadable" test needs POSIXPERM
 + t0302: test credential-store support for XDG_CONFIG_HOME
 + git-credential-store: support XDG_CONFIG_HOME
 + git-credential-store: support multiple credential files
 (this branch is used by pt/xdg-config-path.)

 Originally merged to 'next' on 2015-03-25

 Tweak the sample "store" backend of the credential helper to honor
 XDG configuration file locations when specified.

 Will merge to 'master' in the second batch.


* pt/xdg-config-path (2015-05-06) 7 commits
 - path.c: remove home_config_paths()
 - git-config: replace use of home_config_paths()
 - git-commit: replace use of home_config_paths()
 - credential-store.c: replace home_config_paths() with xdg_config_home()
 - dir.c: replace home_config_paths() with xdg_config_home()
 - attr.c: replace home_config_paths() with xdg_config_home()
 - path.c: implement xdg_config_home()
 (this branch uses pt/credential-xdg.)

 Code clean-up for xdg configuration path support.

 Will merge to 'next'.


* nd/diff-i-t-a (2015-03-23) 1 commit
  (merged to 'next' on 2015-05-05 at cba9cd9)
 + diff-lib.c: adjust position of i-t-a entries in diff

 Originally merged to 'next' on 2015-03-24

 After "git add -N", the path appeared in output of "git diff HEAD"
 and "git diff --cached HEAD", leading "git status" to classify it
 as "Changes to be committed".  Such a path, however, is not yet to
 be scheduled to be committed.  "git diff" showed the change to the
 path as modification, not as a "new file", in the header of its
 output.

 Treat such paths as "yet to be added to the index but Git already
 know about them"; "git diff HEAD" and "git diff --cached HEAD"
 should not talk about them, and "git diff" should show them as new
 files yet to be added to the index.

 Will merge to 'master' in the third batch.


* nd/slim-index-pack-memory-usage (2015-04-18) 2 commits
  (merged to 'next' on 2015-05-05 at 42bd845)
 + index-pack: kill union delta_base to save memory
 + index-pack: reduce object_entry size to save memory

 Originally merged to 'next' on 2015-04-21

 Memory usage of "git index-pack" has been trimmed by tens of
 per-cent.

 Will merge to 'master' in the second batch.


* nd/multiple-work-trees (2015-03-31) 41 commits
  (merged to 'next' on 2015-05-05 at 0f04a1c)
 + prune --worktrees: fix expire vs worktree existence condition
 + t1501: fix test with split index
 + t2026: fix broken &&-chain
 + t2026 needs procondition SANITY
 + git-checkout.txt: a note about multiple checkout support for submodules
 + checkout: add --ignore-other-wortrees
 + checkout: pass whole struct to parse_branchname_arg instead of individual flags
 + git-common-dir: make "modules/" per-working-directory directory
 + checkout: do not fail if target is an empty directory
 + t2025: add a test to make sure grafts is working from a linked checkout
 + checkout: don't require a work tree when checking out into a new one
 + git_path(): keep "info/sparse-checkout" per work-tree
 + count-objects: report unused files in $GIT_DIR/worktrees/...
 + gc: support prune --worktrees
 + gc: factor out gc.pruneexpire parsing code
 + gc: style change -- no SP before closing parenthesis
 + checkout: clean up half-prepared directories in --to mode
 + checkout: reject if the branch is already checked out elsewhere
 + prune: strategies for linked checkouts
 + checkout: support checking out into a new working directory
 + use new wrapper write_file() for simple file writing
 + wrapper.c: wrapper to open a file, fprintf then close
 + setup.c: support multi-checkout repo setup
 + setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 + setup.c: convert check_repository_format_gently to use strbuf
 + setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 + setup.c: convert is_git_directory() to use strbuf
 + git-stash: avoid hardcoding $GIT_DIR/logs/....
 + *.sh: avoid hardcoding $GIT_DIR/hooks/...
 + git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 + $GIT_COMMON_DIR: a new environment variable
 + commit: use SEQ_DIR instead of hardcoding "sequencer"
 + fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 + reflog: avoid constructing .lock path with git_path
 + *.sh: respect $GIT_INDEX_FILE
 + git_path(): be aware of file relocation in $GIT_DIR
 + path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 + path.c: rename vsnpath() to do_git_path()
 + git_snpath(): retire and replace with strbuf_git_path()
 + path.c: make get_pathname() call sites return const char *
 + path.c: make get_pathname() return strbuf instead of static buffer

 Originally merged to 'next' on 2015-04-02

 A replacement for contrib/workdir/git-new-workdir that does not
 rely on symbolic links and make sharing of objects and refs safer
 by making the borrowee and borrowers aware of each other.

 Will merge to 'master' in the second batch.

^ permalink raw reply	[relevance 5%]

* What's cooking in git.git (May 2015, #01; Mon, 4)
@ 2015-05-04 22:25  4% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2015-05-04 22:25 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

Git 2.4 final has been tagged.  We'll wait for a few days to see
if there are brown-paper-bag bugs, fix them if there are any, and
then rewind 'next' and rebuild it to kick off the next cycle.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* mh/ref-directory-file (2015-05-03) 18 commits
 - reflog_expire(): integrate lock_ref_sha1_basic() errors into ours
 - ref_transaction_commit(): delete extra "the" from error message
 - ref_transaction_commit(): provide better error messages
 - rename_ref(): integrate lock_ref_sha1_basic() errors into ours
 - lock_ref_sha1_basic(): improve diagnostics for D/F conflicts
 - lock_ref_sha1_basic(): report errors via a "struct strbuf *err"
 - verify_refname_available(): report errors via a "struct strbuf *err"
 - verify_refname_available(): rename function
 - refs: check for D/F conflicts among refs processed in a transaction
 - ref_transaction_commit(): use a string_list for detecting duplicates
 - is_refname_available(): use dirname in first loop
 - struct nonmatching_ref_data: store a refname instead of a ref_entry
 - report_refname_conflict(): inline function
 - entry_matches(): inline function
 - is_refname_available(): convert local variable "dirname" to strbuf
 - is_refname_available(): avoid shadowing "dir" variable
 - is_refname_available(): explain the reason for an early exit
 - t1404: new tests of D/F conflicts within ref transactions
 (this branch uses mh/ref-lock-avoid-running-out-of-fds.)

 Somehow this does not seem to pass its own test.


* nd/dwim-wildcards-as-pathspecs (2015-05-03) 1 commit
 - pathspec: avoid the need of "--" when wildcard is used

 A heuristic to help the "git <cmd> <revs> <pathspec>" command line
 convention to catch mistyped paths is to make sure all the non-rev
 parameters in the later part of the command line are names of the
 files in the working tree, but that means "git grep $str -- \*.c"
 must always be disambiguated with "--", because nobody sane will
 create a file whose name literally is asterisk-dot-see.  Loosen the
 heuristic to declare that with a wildcard string the user likely
 meant to give us a pathspec.

 Will merge to 'next'.


* pt/pull-tests (2015-05-03) 7 commits
 - t5521: test --dry-run does not make any changes
 - t5520: test --rebase failure on unborn branch with index
 - t5520: test --rebase with multiple branches
 - t5520: test work tree fast-forward when fetch updates head
 - t5520: test for failure if index has unresolved entries
 - t5520: implement tests for no merge candidates cases
 - t5520: test pulling multiple branches into an empty repository

 Add more test coverage to "git pull".  This conflicts slightly with
 a new test jc/merge topic adds, but resolution is fairly trivial.

 Will merge to 'next'.


* sg/complete-decorate-full-not-long (2015-05-03) 1 commit
 - completion: fix and update 'git log --decorate=' options

 The completion for "log --decorate=" parameter value was incorrect.

 Will merge to 'next'.


* sg/completion-no-redundant-all-command-list (2015-05-03) 1 commit
 - completion: remove redundant __git_compute_all_commands() call

 Will merge to 'next'.


* jc/hash-object (2015-05-04) 4 commits
 - write_sha1_file(): do not use a separate sha1[] array
 - t1007: add hash-object --literally tests
 - write_sha1_file_prepare: fix buffer overrun with extra-long object type
 - git-hash-object.txt: document --literally option

 "hash-object --literally" introduced in v2.2 days was not prepared
 to take a really long object type name.

 Will merge to 'next'.


* jn/clean-use-error-not-fprintf-on-stderr (2015-05-04) 1 commit
 - config: use error() instead of fprintf(stderr, ...)

 Some error messages in "git config" were emitted without calling
 the usual error() facility.

 Will merge to 'next'.


* jc/clone-bundle (2015-04-30) 1 commit
 - repack: optionally create a clone.bundle

 Still an early WIP

--------------------------------------------------
[Stalled]

* kk/log-merges-config (2015-04-21) 5 commits
 - bash-completion: add support for git-log --merges= and log.merges
 - t4202-log: add tests for --merges=
 - Documentation: add git-log --merges= option and log.merges config. var
 - log: honor log.merges= option
 - revision: add --merges={show|only|hide} option

 "git log" (but not other commands in the "log" family) learned to
 pay attention to the log.merges configuration variable that can be
 set to "show" (the normal behaviour), "only" (hide non-merge
 commits), or "hide" (hide merge commits).  --merges=(show|only|hide)
 can be used to override the setting from the command line.

 The documentation may need to be updated once more ($gmane/267250).
 Waiting for a reroll.


* mh/fdopen-with-retry (2015-03-06) 6 commits
 - buffer_fdinit(): use fdopen_with_retry()
 - update_info_file(): use fdopen_with_retry()
 - copy_to_log(): use fdopen_with_retry()
 - fdopen_lock_file(): use fdopen_with_retry()
 - SQUASH??? $gmane/264889
 - xfdopen(): if first attempt fails, free memory and try again

 Various parts of the code where they call fdopen() can fail when
 they run out of memory; attempt to proceed by retrying the
 operation after freeing some resource.

 Will discard.


* mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
 - t/lib-git-svn: check same httpd module dirs as lib-httpd
 - t/lib-httpd: load mod_unixd

 This is the first two commits in a three-patch series $gmane/266962
 Will be rerolled.
 with updated log message ($gmane/268061).


* pt/xdg-config-path (2015-04-12) 7 commits
 - path.c: remove home_config_paths()
 - git-config: replace use of home_config_paths()
 - git-commit: replace use of home_config_paths()
 - credential-store.c: replace home_config_paths() with xdg_config_home()
 - dir.c: replace home_config_paths() with xdg_config_home()
 - attr.c: replace home_config_paths() with xdg_config_home()
 - path.c: implement xdg_config_home()
 (this branch uses pt/credential-xdg.)

 Seen some discussions.
 Waiting for a reroll ($gmane/267518).


* mh/numparse (2015-03-19) 14 commits
 - diff_opt_parse(): use convert_i() when handling --abbrev=<num>
 - diff_opt_parse(): use convert_i() when handling "-l<num>"
 - opt_arg(): simplify pointer handling
 - opt_arg(): report errors parsing option values
 - opt_arg(): use convert_i() in implementation
 - opt_arg(): val is always non-NULL
 - builtin_diff(): detect errors when parsing --unified argument
 - handle_revision_opt(): use convert_ui() when handling "--abbrev="
 - strtoul_ui(), strtol_i(): remove functions
 - handle_revision_opt(): use convert_i() when handling "-<digit>"
 - handle_revision_opt(): use skip_prefix() in many places
 - write_subdirectory(): use convert_ui() for parsing mode
 - cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
 - numparse: new module for parsing integral numbers

 Many codepaths use unchecked use of strtol() and friends (or even
 worse, atoi()).  Introduce a set of wrappers that try to be more
 careful.

 Will be rerolled.
 ($gmane/268058).


* tf/gitweb-project-listing (2015-03-19) 5 commits
 - gitweb: make category headings into links when they are directories
 - gitweb: optionally set project category from its pathname
 - gitweb: add a link under the search box to clear a project filter
 - gitweb: if the PATH_INFO is incomplete, use it as a project_filter
 - gitweb: fix typo in man page

 Update gitweb to make it more pleasant to deal with a hierarchical
 forest of repositories.

 Any comments from those who use or have their own code in Gitweb?


* jc/a-lone-dash-stands-for-previous-branch (2015-03-16) 1 commit
 - "-" and "@{-1}" on various programs

 Lose special case code to make a lone dash "-" mean the previous
 branch aka "@{-1}" from a handful subcommands, and instead support
 the notation throughout the system by reimplementing it at the
 revisions layer.

 Needs tests, documentation updates, etc.  Also does only a half-way
 job dealing with range notation, which needs to be fixed before the
 series goes anywhere.


* nd/list-files (2015-02-09) 21 commits
 - t3080: tests for git-list-files
 - list-files: -M aka diff-cached
 - list-files -F: show submodules with the new indicator '&'
 - list-files: add -F/--classify
 - list-files: show directories as well as files
 - list-files: do not show duplicate cached entries
 - list-files: sort output and remove duplicates
 - list-files: add -t back
 - list-files: add -1 short for --no-column
 - list-files: add -R/--recursive short for --max-depth=-1
 - list-files: -u does not imply showing stages
 - list-files: make alias 'ls' default to 'list-files'
 - list-files: a user friendly version of ls-files and more
 - ls-files: support --max-depth
 - ls-files: add --column
 - ls-files: add --color to highlight file names
 - ls-files: buffer full item in strbuf before printing
 - ls_colors.c: highlight submodules like directories
 - ls_colors.c: add a function to color a file name
 - ls_colors.c: parse color.ls.* from config file
 - ls_colors.c: add $LS_COLORS parsing code

 A new "git list-files" Porcelain command, "ls-files" with bells and
 whistles.

 Reroll to base on wt-status work ($gmane/265142) has seen some
 positive discussions.

 Waiting for a further polished reroll ($gmane/265534).


* js/fsck-opt (2015-01-21) 19 commits
 - fsck: support ignoring objects in `git fsck` via fsck.skiplist
 - fsck: git receive-pack: support excluding objects from fsck'ing
 - fsck: introduce `git fsck --quick`
 - fsck: support demoting errors to warnings
 - fsck: document the new receive.fsck.* options
 - fsck: allow upgrading fsck warnings to errors
 - fsck: optionally ignore specific fsck issues completely
 - fsck: disallow demoting grave fsck errors to warnings
 - fsck: add a simple test for receive.fsck.*
 - fsck: make fsck_tag() warn-friendly
 - fsck: handle multiple authors in commits specially
 - fsck: make fsck_commit() warn-friendly
 - fsck: make fsck_ident() warn-friendly
 - fsck: report the ID of the error/warning
 - fsck: allow demoting errors to warnings via receive.fsck.warn = <key>
 - fsck: offer a function to demote fsck errors to warnings
 - fsck: provide a function to parse fsck message IDs
 - fsck: introduce identifiers for fsck messages
 - fsck: introduce fsck options

 "fsck.warnings = <list of error tokens>" I suggested turned out to
 be an unpopular choice (sorry Dscho).

 Expecting a reroll.


* nd/untracked-cache (2015-03-12) 24 commits
 - git-status.txt: advertisement for untracked cache
 - untracked cache: guard and disable on system changes
 - mingw32: add uname()
 - t7063: tests for untracked cache
 - update-index: test the system before enabling untracked cache
 - update-index: manually enable or disable untracked cache
 - status: enable untracked cache
 - untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
 - untracked cache: mark index dirty if untracked cache is updated
 - untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
 - untracked cache: avoid racy timestamps
 - read-cache.c: split racy stat test to a separate function
 - untracked cache: invalidate at index addition or removal
 - untracked cache: load from UNTR index extension
 - untracked cache: save to an index extension
 - ewah: add convenient wrapper ewah_serialize_strbuf()
 - untracked cache: don't open non-existent .gitignore
 - untracked cache: mark what dirs should be recursed/saved
 - untracked cache: record/validate dir mtime and reuse cached output
 - untracked cache: make a wrapper around {open,read,close}dir()
 - untracked cache: invalidate dirs recursively if .gitignore changes
 - untracked cache: initial untracked cache validation
 - untracked cache: record .gitignore information and dir hierarchy
 - dir.c: optionally compute sha-1 of a .gitignore file

 Need extra sets of eyes to review this.


* nd/pathspec-strip-fix (2015-04-18) 1 commit
 - pathspec: adjust prefixlen after striping trailing slash

 Does not quite fix ($gmane/267614).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.


* pw/remote-set-url-fetch (2014-11-26) 1 commit
 - remote: add --fetch and --both options to set-url

 Expecting a reroll.


* tr/remerge-diff (2014-11-10) 9 commits
 - t4213: avoid "|" in sed regexp
 - log --remerge-diff: show what the conflict resolution changed
 - name-hash: allow dir hashing even when !ignore_case
 - merge-recursive: allow storing conflict hunks in index
 - merge_diff_mode: fold all merge diff variants into an enum
 - combine-diff: do not pass revs->dense_combined_merges redundantly
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 Waiting for a reroll ($gmane/256591).


* hv/submodule-config (2014-11-11) 4 commits
 - do not die on error of parsing fetchrecursesubmodules option
 - use new config API for worktree configurations of submodules
 - extract functions for submodule config set and lookup
 - implement submodule config cache for lookup of submodule names

 Kicked back to 'pu' per request ($gmane/255610).


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


* jc/show-branch (2014-03-24) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit.

--------------------------------------------------
[Cooking]

* jk/at-push-sha1 (2015-05-03) 12 commits
 - for-each-ref: accept "%(push)" format
 - for-each-ref: use skip_prefix instead of starts_with
 - sha1_name: implement @{push} shorthand
 - sha1_name: refactor interpret_upstream_mark
 - sha1_name: refactor upstream_mark
 - remote.c: add branch_get_push
 - remote.c: report specific errors from branch_get_upstream
 - remote.c: introduce branch_get_upstream helper
 - remote.c: provide per-branch pushremote name
 - remote.c: hoist branch.*.remote lookup out of remote_get_1
 - remote.c: drop "remote" pointer from "struct branch"
 - remote.c: drop default_remote_name variable

 Introduce <branch>@{push} short-hand to denote the remote-tracking
 branch that tracks the branch at the remote the <branch> would be
 pushed to.

 Rerolled (not reviewed yet).


* jk/rebase-quiet-noop (2015-04-28) 1 commit
 - rebase: silence "git checkout" for noop rebase

 "git rebase --quiet" was not quite quiet when there is nothing to
 do.

 Will merge to 'next'.


* ld/p4-case-fold (2015-04-28) 1 commit
 - git-p4: add failing tests for case-folding p4d

 Will merge to 'next'.


* va/fix-git-p4-tests (2015-04-28) 1 commit
 - git-p4: t9814: prevent --chain-lint failure

 Will merge to 'next'.


* jk/filter-branch-use-of-sed-on-incomplete-line (2015-04-29) 1 commit
 - filter-branch: avoid passing commit message through sed

 "filter-branch" was broken by some "sed" implementations that
 corrupt commit log message that ends with an incomplete line.
 Work it around by avoiding to use "sed".

 Will merge to 'next'.


* ph/rebase-i-redo (2015-04-29) 1 commit
 - rebase -i: redo tasks that die during cherry-pick

 "git rebase -i" moved the "current" command from "todo" to "done" a
 bit too prematurely, losing a step when a "pick" did not even start.

 Will merge to 'next'.


* ep/do-not-feed-a-pointer-to-array-size (2015-04-30) 2 commits
 - SQUASH???
 - git-compat-util.h: implement a different ARRAY_SIZE macro for for safely deriving the size of array

 Catch programmer mistake to feed a pointer not an array to
 ARRAY_SIZE() macro, by using a couple of GCC extensions.

 With the fix-up, will merge to 'next'.


* tb/blame-resurrect-convert-to-git (2015-05-03) 1 commit
 - blame: CRLF in the working tree and LF in the repo

 Some time ago, "git blame" (incorrectly) lost the convert_to_git()
 call when synthesizing a fake "tip" commit that represents the
 state in the working tree, which broke folks who record the history
 with LF line ending to make their project portabile across
 platforms while terminating lines in their working tree files with
 CRLF for their platform.

 Will merge to 'next'.


* jc/epochtime-wo-tz (2015-04-15) 2 commits
  (merged to 'next' on 2015-04-21 at b926f72)
 + parse_date_basic(): let the system handle DST conversion
 + parse_date_basic(): return early when given a bogus timestamp

 "git commit --date=now" or anything that relies on approxidate lost
 the daylight-saving-time offset.

 Will merge to 'master' in the second batch of post v2.4 cycle.


* jc/plug-fmt-merge-msg-leak (2015-04-20) 1 commit
  (merged to 'next' on 2015-04-21 at 443c728)
 + fmt-merge-msg: plug small leak of commit buffer

 Will merge to 'master' in the second batch of post v2.4 cycle.


* cn/bom-in-gitignore (2015-04-16) 5 commits
  (merged to 'next' on 2015-04-21 at f7d56f1)
 + attr: skip UTF8 BOM at the beginning of the input file
 + config: use utf8_bom[] from utf.[ch] in git_parse_source()
 + utf8-bom: introduce skip_utf8_bom() helper
 + add_excludes_from_file: clarify the bom skipping logic
 + dir: allow a BOM at the beginning of exclude files

 Teach the codepaths that read .gitignore and .gitattributes files
 that these files encoded in UTF-8 may have UTF-8 BOM marker at the
 beginning; this makes it in line with what we do for configuration
 files already.

 Will merge to 'master' in the second batch of post v2.4 cycle.


* ee/clean-remove-dirs (2015-04-26) 5 commits
 - clean: improve performance when removing lots of directories
 - p7300: add performance tests for clean
 - t7300: add tests to document behavior of clean and nested git
 - setup: sanity check file size in read_gitfile_gently
 - setup: add gentle version of read_gitfile

 Replace "is this subdirectory a separate repository that should not
 be touched?" check "git clean" does by checking if it has .git/HEAD
 using the submodule-related code with a more optimized check.

 Waiting for a reroll.


* ep/fix-test-lib-functions-report (2015-04-16) 1 commit
  (merged to 'next' on 2015-04-21 at 23e584f)
 + test-lib-functions.sh: fix the second argument to some helper functions

 Will merge to 'master' in the second batch of post v2.4 cycle.


* jk/still-interesting (2015-04-17) 1 commit
  (merged to 'next' on 2015-04-21 at 58b54af)
 + limit_list: avoid quadratic behavior from still_interesting

 "git rev-list --objects $old --not --all" to see if everything that
 is reachable from $old is already connected to the existing refs
 was very inefficient.

 Will merge to 'master' in the second batch of post v2.4 cycle.


* jk/type-from-string-gently (2015-04-17) 1 commit
  (merged to 'next' on 2015-04-20 at a97611f)
 + type_from_string_gently: make sure length matches

 "git cat-file bl $blob" failed to barf even though there is no
 object type that is "bl".

 Will merge to 'master' in the first batch of post v2.4 cycle.


* ls/p4-changes-block-size (2015-04-20) 1 commit
  (merged to 'next' on 2015-04-21 at 830eeed)
 + git-p4: use -m when running p4 changes

 "git p4" learned "--changes-block-size <n>" to read the changes in
 chunks from Perforce, instead of making one call to "p4 changes"
 that may trigger "too many rows scanned" error from Perforce.

 Will merge to 'master' in the second batch of post v2.4 cycle.


* mm/add-p-split-error (2015-04-16) 5 commits
  (merged to 'next' on 2015-04-23 at b1bd21a)
 + stash -p: demonstrate failure of split with mixed y/n
 + t3904-stash-patch: factor PERL prereq at the top of the file
 + t3904-stash-patch: fix test description
 + add -p: demonstrate failure when running 'edit' after a split
 + t3701-add-interactive: simplify code

 When "add--interactive" splits a hunk into two overlapping hunks
 and then let the user choose only one, it sometimes feeds an
 incorrect patch text to "git apply".  Add tests to demonstrate
 this.

 I have a slight suspicion that this may be $gmane/87202 coming back
 and biting us (I seem to have said "let's run with this and see
 what happens" back then).

 Will merge to 'master' in the third batch of post v2.4 cycle.


* mm/usage-log-l-can-take-regex (2015-04-20) 2 commits
  (merged to 'next' on 2015-04-21 at 03e951c)
 + log -L: improve error message on malformed argument
 + Documentation: change -L:<regex> to -L:<funcname>

 Will merge to 'master' in the second batch of post v2.4 cycle.


* nd/t1509-chroot-test (2015-04-18) 1 commit
  (merged to 'next' on 2015-04-21 at 60d35d3)
 + t1509: update prepare script to be able to run t1509 in chroot again

 Correct test bitrot.

 Will merge to 'master' in the first batch of post v2.4 cycle.


* oh/fix-config-default-user-name-section (2015-04-17) 1 commit
  (merged to 'next' on 2015-04-20 at b74b914)
 + config: fix settings in default_user_config template

 The default $HOME/.gitconfig file created upon "git config --global"
 that edits it had incorrectly spelled user.name and user.email
 entries in it.

 Will merge to 'master' in the first batch of post v2.4 cycle.


* tb/t0027-crlf (2015-04-25) 3 commits
 - t0027: Add repoMIX and LF_nul
  (merged to 'next' on 2015-04-21 at 142cb99)
 + t0027: support NATIVE_CRLF platforms
 + t0027: cleanup: rename functions; avoid non-leading TABs

 Will merge to 'next'.


* jk/prune-mtime (2015-04-20) 3 commits
  (merged to 'next' on 2015-04-21 at 9990d41)
 + sha1_file: only freshen packs once per run
 + sha1_file: freshen pack objects before loose
 + reachable: only mark local objects as recent

 Access to objects in repositories that borrow from another one on a
 slow NFS server unnecessarily got more expensive due to recent code
 becoming more cautious in a naive way not to lose objects to pruning.

 Will merge to 'master' in the second batch of post v2.4 cycle.


* jc/gitignore-precedence (2015-04-22) 1 commit
 - ignore: info/exclude should trump core.excludesfile

 core.excludesfile (defaulting to $XDG_HOME/git/ignore) is supposed
 to be overridden by repository-specific .git/info/exclude file, but
 the order was swapped from the beginning. This belatedly fixes it.

 Will merge to 'next'.


* jk/git-no-more-argv0-path-munging (2015-04-22) 1 commit
 - stop putting argv[0] dirname at front of PATH

 We have prepended $GIT_EXEC_PATH and the path "git" is installed in
 (typically "/usr/bin") to $PATH when invoking subprograms and hooks
 for almost eternity, but the original use case the latter tried to
 support was semi-bogus (i.e. install git to /opt/foo/git and run it
 without having /opt/foo on $PATH), and more importantly it has
 become less and less relevant as Git grew more mainstream (i.e. the
 users would _want_ to have it on their $PATH).  Stop prepending the
 path in which "git" is installed to users' $PATH, as that would
 interfere the command search order people depend on (e.g. they may
 not like versions of programs that are unrelated to Git in /usr/bin
 and want to override them by having different ones in /usr/local/bin
 and have the latter directory earlier in their $PATH).

 Will merge to 'next'.


* jk/stash-require-clean-index (2015-04-22) 3 commits
 - stash: require a clean index to apply
 - t3903: avoid applying onto dirty index
 - t3903: stop hard-coding commit sha1s

 "git stash pop/apply" forgot to make sure that not just the working
 tree is clean but also the index is clean. The latter is important
 as a stash application can conflict and the index will be used for
 conflict resolution.

 Will merge to 'next'.


* jc/merge (2015-04-29) 15 commits
 - merge: deprecate 'git merge <message> HEAD <commit>' syntax
 - merge: handle FETCH_HEAD internally
 - merge: decide if we auto-generate the message early in collect_parents()
 - merge: make collect_parents() auto-generate the merge message
 - merge: extract prepare_merge_message() logic out
 - merge: narrow scope of merge_names
 - merge: split reduce_parents() out of collect_parents()
 - merge: clarify collect_parents() logic
 - merge: small leakfix and code simplification
 - merge: do not check argc to determine number of remote heads
 - merge: clarify "pulling into void" special case
 - t5520: test pulling an octopus into an unborn branch
 - t5520: style fixes
 - merge: simplify code flow
 - merge: test the top-level merge driver
 (this branch is used by jc/merge-drop-old-syntax.)

 "git merge FETCH_HEAD" learned that the previous "git fetch" could
 be to create an Octopus merge, i.e. recording multiple branches
 that are not marked as "not-for-merge"; this allows us to lose an
 old style invocation "git merge <msg> HEAD $commits..." in the
 implementation of "git pull" script; the old style syntax can now
 be deprecated.

 Will merge to 'next'.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
 - merge: drop 'git merge <message> HEAD <commit>' syntax
 (this branch uses jc/merge.)

 Stop supporting "git merge <messsage> HEAD <commit>" syntax that
 has been deprecated since October 2007.

 Will merge to 'next'.


* jk/test-chain-lint (2015-04-28) 2 commits
 - test-lib: turn on GIT_TEST_CHAIN_LINT by default
 - t7502-commit.sh: fix a broken and-chain

 Will merge to 'next'.


* mh/ref-lock-avoid-running-out-of-fds (2015-04-25) 8 commits
 - ref_transaction_commit(): only keep one lockfile open at a time
 - ref_transaction_commit(): remove the local flags variables
 - write_ref_sha1(): inline function at callers
 - commit_ref_update(): new function, extracted from write_ref_sha1()
 - write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
 - refs.c: remove lock_fd from struct ref_lock
 - t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
 - update-ref: test handling large transactions properly
 (this branch is used by mh/ref-directory-file.)

 "git update-ref --stdin" was converted to be "transactional" some
 time ago, but the ref transaction machinery was not prepared to
 handle many refs, primarily because it tried to keep the loose ref
 files open at the same time, which would cause us to hit the ENFILE
 limit.  Fix the ref_transaction_commit() code not to keep the file
 descriptors open unnecessarily.

 We would want to apply the fix to older codebase, but this fix is
 unfortunately done to apply only on v2.4.x track.

 Expecting a rebase to older codebase.


* bc/connect-plink (2015-04-28) 3 commits
 - connect: improve check for plink to reduce false positives
 - t5601: fix quotation error leading to skipped tests
 - connect: simplify SSH connection code path

 The connection initiation code for "ssh" transport tried to absorb
 differences between the stock "ssh" and Putty-supplied "plink" and
 its derivatives, but the logic to tell that we are using "plink"
 variants were too loose and falsely triggered when "plink" appeared
 anywhere in the path (e.g. "/home/me/bin/uplink/ssh").

 Will merge to 'next'.


* jc/test-prereq-validate (2015-04-28) 1 commit
 - test: validate prerequistes syntax

 Help us to find broken test script that splits the body part of the
 test by mistaken use of wrong kind of quotes.

 Will merge to 'next'.


* fg/document-commit-message-stripping (2015-04-27) 1 commit
 - Documentation: clarify how "git commit" cleans up the edited log message

 Will merge to 'next'.


* ah/usage-strings (2015-05-03) 2 commits
 - branch: fix funny-sounding error message
 - blame, log: format usage strings similarly to those in documentation

 A few usage string updates.  The tip one still needs work.


* jk/reading-packed-refs (2015-04-16) 9 commits
  (merged to 'next' on 2015-04-21 at c9bce73)
 + t1430: add another refs-escape test
 + read_packed_refs: avoid double-checking sane refs
 + strbuf_getwholeline: use getdelim if it is available
 + strbuf_getwholeline: avoid calling strbuf_grow
 + strbuf_addch: avoid calling strbuf_grow
 + config: use getc_unlocked when reading from file
 + strbuf_getwholeline: use getc_unlocked
 + git-compat-util: add fallbacks for unlocked stdio
 + strbuf_getwholeline: use getc macro

 An earlier rewrite to use strbuf_getwholeline() instead of fgets(3)
 to read packed-refs file revealed that the former is unacceptably
 inefficient.

 Will merge to 'master' in the second batch of post v2.4 cycle.


* kn/cat-file-literally (2015-05-04) 5 commits
 - fixup! sha1_file: support reading from a loose object of unknown type
 - t1006: add tests for git cat-file --allow-unknown-type
 - cat-file: teach cat-file a '--allow-unknown-type' option
 - cat-file: make the options mutually exclusive
 - sha1_file: support reading from a loose object of unknown type

 Add the "--allow-unknown-type" option to "cat-file" to allow
 inspecting loose objects of an experimental or a broken type.

 This is v10 $gmane/267960; I think with fixup! squashed in the
 series is in a good shape (the test may fail without Eric's fix
 to "hash-object --literally" elsewhere, though).

 Will merge to 'next'.


* ld/p4-filetype-detection (2015-04-04) 3 commits
  (merged to 'next' on 2015-04-08 at da735b4)
 + git-p4: fix filetype detection on files opened exclusively
 + git-p4: small fix for locked-file-move-test
 + git-p4: fix small bug in locked test scripts

 Will merge to 'master' in the first batch of post v2.4 cycle.


* lm/squelch-bg-progress (2015-04-15) 2 commits
  (merged to 'next' on 2015-04-21 at 9a8b1e9)
 + compat/mingw: stubs for getpgid() and tcgetpgrp()
 + progress: no progress in background

 Many long-running operations show progress eye-candy, even when
 they are later backgrounded.  Hide the eye-candy when the process
 is sent to the background instead.

 Will merge to 'master' in the second batch of post v2.4 cycle.


* sb/test-bitmap-free-at-end (2015-04-12) 1 commit
  (merged to 'next' on 2015-04-14 at 0ae4759)
 + pack-bitmap.c: fix a memleak

 Will merge to 'master' in the first batch of post v2.4 cycle.


* va/p4-client-path (2015-04-23) 2 commits
  (merged to 'next' on 2015-04-23 at e0d2065)
 + git-p4: improve client path detection when branches are used
 + t9801: check git-p4's branch detection with client spec enabled

 git p4 attempts to better handle branches in Perforce.

 Will merge to 'master' in the third batch of post v2.4 cycle.


* jk/sha1-file-reduce-useless-warnings (2015-03-30) 1 commit
  (merged to 'next' on 2015-04-21 at a8bd995)
 + sha1_file: squelch "packfile cannot be accessed" warnings

 Will merge to 'master' in the second batch of post v2.4 cycle.


* mh/show-branch-topic (2015-03-31) 1 commit
  (merged to 'next' on 2015-04-08 at 628ada5)
 + show-branch: show all local heads when only giving one rev along --topics

 "git show-branch --topics HEAD" (with no other arguments) did not
 do anything interesting.  Instead, contrast the given revision
 against all the local branches by default.

 Will merge to 'master' in the first batch of post v2.4 cycle.


* sb/line-log-plug-pairdiff-leak (2015-03-30) 1 commit
  (merged to 'next' on 2015-04-08 at 6ea8b71)
 + line-log.c: fix a memleak

 Will merge to 'master' in the first batch of post v2.4 cycle.


* jk/init-core-worktree-at-root (2015-04-02) 1 commit
  (merged to 'next' on 2015-04-08 at 92a942b)
 + init: don't set core.worktree when initializing /.git

 We avoid setting core.worktree when the repository location is the
 ".git" directory directly at the top level of the working tree, but
 the code misdetected the case in which the working tree is at the
 root level of the filesystem (which arguably is a silly thing to
 do, but still valid).

 Will merge to 'master' in the first batch of post v2.4 cycle.


* ts/checkout-advice-plural (2015-04-02) 1 commit
  (merged to 'next' on 2015-04-08 at dd5c436)
 + checkout: call a single commit "it" intead of "them"

 Will merge to 'master' in the first batch of post v2.4 cycle.


* pt/credential-xdg (2015-03-25) 4 commits
  (merged to 'next' on 2015-03-25 at 765128e)
 + t0302: "unreadable" test needs POSIXPERM
  (merged to 'next' on 2015-03-24 at 9a3706e)
 + t0302: test credential-store support for XDG_CONFIG_HOME
 + git-credential-store: support XDG_CONFIG_HOME
 + git-credential-store: support multiple credential files
 (this branch is used by pt/xdg-config-path.)

 Tweak the sample "store" backend of the credential helper to honor
 XDG configuration file locations when specified.

 As this may see further updates, and also this is not an urgent
 issue anyway, I'll give it a bit more time for it to simmer.

 Will cook in 'next'.


* jc/diff-no-index-d-f (2015-03-26) 2 commits
  (merged to 'next' on 2015-03-27 at 1f270f9)
 + diff-no-index: align D/F handling with that of normal Git
 + diff-no-index: DWIM "diff D F" into "diff D/F F"

 The usual "git diff" when seeing a file turning into a directory
 showed a patchset to remove the file and create all files in the
 directory, but "git diff --no-index" simply refused to work.  Also,
 when asked to compare a file and a directory, imitate POSIX "diff"
 and compare the file with the file with the same name in the
 directory, instead of refusing to run.

 Will merge to 'master' in the first batch of post v2.4 cycle.


* nd/diff-i-t-a (2015-03-23) 1 commit
  (merged to 'next' on 2015-03-24 at a6be89f)
 + diff-lib.c: adjust position of i-t-a entries in diff

 After "git add -N", the path appeared in output of "git diff HEAD"
 and "git diff --cached HEAD", leading "git status" to classify it
 as "Changes to be committed".  Such a path, however, is not yet to
 be scheduled to be committed.  "git diff" showed the change to the
 path as modification, not as a "new file", in the header of its
 output.

 Treat such paths as "yet to be added to the index but Git already
 know about them"; "git diff HEAD" and "git diff --cached HEAD"
 should not talk about them, and "git diff" should show them as new
 files yet to be added to the index.

 Will cook in 'next', as this brings in a new world order.


* bc/object-id (2015-03-13) 10 commits
  (merged to 'next' on 2015-03-24 at 3ec4f83)
 + apply: convert threeway_stage to object_id
 + patch-id: convert to use struct object_id
 + commit: convert parts to struct object_id
 + diff: convert struct combine_diff_path to object_id
 + bulk-checkin.c: convert to use struct object_id
 + zip: use GIT_SHA1_HEXSZ for trailers
 + archive.c: convert to use struct object_id
 + bisect.c: convert leaf functions to use struct object_id
 + define utility functions for object IDs
 + define a structure for object IDs

 Identify parts of the code that knows that we use SHA-1 hash to
 name our objects too much, and use (1) symbolic constants instead
 of hardcoded 20 as byte count and/or (2) use struct object_id
 instead of unsigned char [20] for object names.

 Will merge to 'master' in the first batch of post v2.4 cycle.


* nd/slim-index-pack-memory-usage (2015-04-18) 2 commits
  (merged to 'next' on 2015-04-21 at 919b80d)
 + index-pack: kill union delta_base to save memory
 + index-pack: reduce object_entry size to save memory

 Memory usage of "git index-pack" has been trimmed by tens of
 per-cent.

 Will merge to 'master' in the second batch of post v2.4 cycle.


* nd/multiple-work-trees (2015-03-31) 41 commits
  (merged to 'next' on 2015-04-02 at 7ea51b4)
 + prune --worktrees: fix expire vs worktree existence condition
  (merged to 'next' on 2015-03-24 at 58b5a60)
 + t1501: fix test with split index
  (merged to 'next' on 2015-03-20 at cc98ed0)
 + t2026: fix broken &&-chain
  (merged to 'next' on 2015-02-18 at b51f696)
 + t2026 needs procondition SANITY
 + git-checkout.txt: a note about multiple checkout support for submodules
 + checkout: add --ignore-other-wortrees
 + checkout: pass whole struct to parse_branchname_arg instead of individual flags
 + git-common-dir: make "modules/" per-working-directory directory
 + checkout: do not fail if target is an empty directory
 + t2025: add a test to make sure grafts is working from a linked checkout
 + checkout: don't require a work tree when checking out into a new one
 + git_path(): keep "info/sparse-checkout" per work-tree
 + count-objects: report unused files in $GIT_DIR/worktrees/...
 + gc: support prune --worktrees
 + gc: factor out gc.pruneexpire parsing code
 + gc: style change -- no SP before closing parenthesis
 + checkout: clean up half-prepared directories in --to mode
 + checkout: reject if the branch is already checked out elsewhere
 + prune: strategies for linked checkouts
 + checkout: support checking out into a new working directory
 + use new wrapper write_file() for simple file writing
 + wrapper.c: wrapper to open a file, fprintf then close
 + setup.c: support multi-checkout repo setup
 + setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 + setup.c: convert check_repository_format_gently to use strbuf
 + setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 + setup.c: convert is_git_directory() to use strbuf
 + git-stash: avoid hardcoding $GIT_DIR/logs/....
 + *.sh: avoid hardcoding $GIT_DIR/hooks/...
 + git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 + $GIT_COMMON_DIR: a new environment variable
 + commit: use SEQ_DIR instead of hardcoding "sequencer"
 + fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 + reflog: avoid constructing .lock path with git_path
 + *.sh: respect $GIT_INDEX_FILE
 + git_path(): be aware of file relocation in $GIT_DIR
 + path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 + path.c: rename vsnpath() to do_git_path()
 + git_snpath(): retire and replace with strbuf_git_path()
 + path.c: make get_pathname() call sites return const char *
 + path.c: make get_pathname() return strbuf instead of static buffer

 A replacement for contrib/workdir/git-new-workdir that does not
 rely on symbolic links and make sharing of objects and refs safer
 by making the borrowee and borrowers aware of each other.

 Will cook in 'next'.

--------------------------------------------------
[Discarded]

* as/userdiff-sh (2015-03-13) 1 commit
 . userdiff: funcname and word patterns for sh

 Add a built-in "userdiff" patterns to word-split and identify
 notable lines in shell scripts to help presentation of diff and
 grep output.


* sb/ref-lock-avoid-running-out-of-fds (2015-04-23) 5 commits
 . refs.c: enable large transactions
 . sha1_file.c: move get_max_fd_limit(void) to wrapper.c
 - refs.c: remove lock_fd from struct ref_lock
 - t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
 - update-ref: test handling large transactions properly


* jc/merge-deprecate-old-syntax (2015-03-26) 1 commit
 . merge: deprecate 'git merge <message> HEAD <commit>' syntax

 The first step to really start the process of removing the ancient
 syntax to invoke a two-way merge, which has been deprecated since
 October 2007.

 This regresses "git pull" in various ways; do not merge ($gmane/267432).

^ permalink raw reply	[relevance 4%]

* What's cooking in git.git (Apr 2015, #05; Thu, 30)
@ 2015-04-30 19:51  4% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2015-04-30 19:51 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

Git 2.4 final has been tagged.  We'll wait for a few days to see
if there are brown-paper-bag bugs, fix them if there are any, and
then rewind 'next' and rebuild it to kick off the next cycle.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* mg/show-notes-doc (2015-04-17) 1 commit
  (merged to 'next' on 2015-04-20 at 2e93969)
 + rev-list-options.txt: complete sentence about notes matching

 Documentation fix.


* mg/status-v-v (2015-04-23) 1 commit
  (merged to 'next' on 2015-04-25 at cbcaca4)
 + status: document the -v/--verbose option

 Documentation fix.


* nd/versioncmp-prereleases (2015-04-23) 1 commit
  (merged to 'next' on 2015-04-25 at f824d7f)
 + git tag: mention versionsort.prereleaseSuffix in manpage

 Documentation fix.

--------------------------------------------------
[New Topics]

* jk/rebase-quiet-noop (2015-04-28) 1 commit
 - rebase: silence "git checkout" for noop rebase

 "git rebase --quiet" was not quite quiet when there is nothing to
 do.

 Will merge to 'next'.


* ld/p4-case-fold (2015-04-28) 1 commit
 - git-p4: add failing tests for case-folding p4d

 Will merge to 'next'.


* va/fix-git-p4-tests (2015-04-28) 1 commit
 - git-p4: t9814: prevent --chain-lint failure

 Will merge to 'next'.


* jk/filter-branch-use-of-sed-on-incomplete-line (2015-04-29) 1 commit
 - filter-branch: avoid passing commit message through sed

 "filter-branch" was broken by some "sed" implementations that
 corrupt commit log message that ends with an incomplete line.
 Work it around by avoiding to use "sed".

 Will merge to 'next'.


* ph/rebase-i-redo (2015-04-29) 1 commit
 - rebase -i: redo tasks that die during cherry-pick

 "git rebase -i" moved the "current" command from "todo" to "done" a
 bit too prematurely, losing a step when a "pick" did not even start.

 Will merge to 'next'.


* ep/do-not-feed-a-pointer-to-array-size (2015-04-30) 2 commits
 - SQUASH???
 - git-compat-util.h: implement a different ARRAY_SIZE macro for for safely deriving the size of array

 Catch programmer mistake to feed a pointer not an array to
 ARRAY_SIZE() macro, by using a couple of GCC extensions.


* tb/blame-resurrect-convert-to-git (2015-04-30) 1 commit
 - blame: CRLF in the working tree and LF in the repo

 Some time ago, "git blame" (incorrectly) lost the convert_to_git()
 call when synthesizing a fake "tip" commit that represents the
 state in the working tree, which broke folks who record the history
 with LF line ending to make their project portabile across
 platforms while terminating lines in their working tree files with
 CRLF for their platform.

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* kk/log-merges-config (2015-04-21) 5 commits
 - bash-completion: add support for git-log --merges= and log.merges
 - t4202-log: add tests for --merges=
 - Documentation: add git-log --merges= option and log.merges config. var
 - log: honor log.merges= option
 - revision: add --merges={show|only|hide} option

 "git log" (but not other commands in the "log" family) learned to
 pay attention to the log.merges configuration variable that can be
 set to "show" (the normal behaviour), "only" (hide non-merge
 commits), or "hide" (hide merge commits).  --merges=(show|only|hide)
 can be used to override the setting from the command line.

 The documentation may need to be updated once more ($gmane/267250).
 Waiting for a reroll.


* mh/fdopen-with-retry (2015-03-06) 6 commits
 - buffer_fdinit(): use fdopen_with_retry()
 - update_info_file(): use fdopen_with_retry()
 - copy_to_log(): use fdopen_with_retry()
 - fdopen_lock_file(): use fdopen_with_retry()
 - SQUASH??? $gmane/264889
 - xfdopen(): if first attempt fails, free memory and try again

 Various parts of the code where they call fdopen() can fail when
 they run out of memory; attempt to proceed by retrying the
 operation after freeing some resource.

 Will discard.


* mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
 - t/lib-git-svn: check same httpd module dirs as lib-httpd
 - t/lib-httpd: load mod_unixd

 This is the first two commits in a three-patch series $gmane/266962
 Will be rerolled.
 with updated log message ($gmane/268061).


* jk/at-push-sha1 (2015-03-31) 6 commits
 - sha1_name: implement @{push} shorthand
 - sha1_name: refactor upstream_mark
 - remote.c: provide per-branch pushremote name
 - remote.c: hoist branch.*.remote lookup out of remote_get_1
 - remote.c: drop "remote" pointer from "struct branch"
 - remote.c: drop default_remote_name variable

 Introduce <branch>@{push} short-hand to denote the remote-tracking
 branch that tracks the branch at the remote the <branch> would be
 pushed to.

 Will be rerolled ($gmane/268040).


* pt/xdg-config-path (2015-04-12) 7 commits
 - path.c: remove home_config_paths()
 - git-config: replace use of home_config_paths()
 - git-commit: replace use of home_config_paths()
 - credential-store.c: replace home_config_paths() with xdg_config_home()
 - dir.c: replace home_config_paths() with xdg_config_home()
 - attr.c: replace home_config_paths() with xdg_config_home()
 - path.c: implement xdg_config_home()
 (this branch uses pt/credential-xdg.)

 Seen some discussions.
 Waiting for a reroll ($gmane/267518).


* mh/numparse (2015-03-19) 14 commits
 - diff_opt_parse(): use convert_i() when handling --abbrev=<num>
 - diff_opt_parse(): use convert_i() when handling "-l<num>"
 - opt_arg(): simplify pointer handling
 - opt_arg(): report errors parsing option values
 - opt_arg(): use convert_i() in implementation
 - opt_arg(): val is always non-NULL
 - builtin_diff(): detect errors when parsing --unified argument
 - handle_revision_opt(): use convert_ui() when handling "--abbrev="
 - strtoul_ui(), strtol_i(): remove functions
 - handle_revision_opt(): use convert_i() when handling "-<digit>"
 - handle_revision_opt(): use skip_prefix() in many places
 - write_subdirectory(): use convert_ui() for parsing mode
 - cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
 - numparse: new module for parsing integral numbers

 Many codepaths use unchecked use of strtol() and friends (or even
 worse, atoi()).  Introduce a set of wrappers that try to be more
 careful.

 Will be rerolled.
 ($gmane/268058).


* tf/gitweb-project-listing (2015-03-19) 5 commits
 - gitweb: make category headings into links when they are directories
 - gitweb: optionally set project category from its pathname
 - gitweb: add a link under the search box to clear a project filter
 - gitweb: if the PATH_INFO is incomplete, use it as a project_filter
 - gitweb: fix typo in man page

 Update gitweb to make it more pleasant to deal with a hierarchical
 forest of repositories.

 Any comments from those who use or have their own code in Gitweb?


* jc/a-lone-dash-stands-for-previous-branch (2015-03-16) 1 commit
 - "-" and "@{-1}" on various programs

 Lose special case code to make a lone dash "-" mean the previous
 branch aka "@{-1}" from a handful subcommands, and instead support
 the notation throughout the system by reimplementing it at the
 revisions layer.

 Needs tests, documentation updates, etc.  Also does only a half-way
 job dealing with range notation, which needs to be fixed before the
 series goes anywhere.


* nd/list-files (2015-02-09) 21 commits
 - t3080: tests for git-list-files
 - list-files: -M aka diff-cached
 - list-files -F: show submodules with the new indicator '&'
 - list-files: add -F/--classify
 - list-files: show directories as well as files
 - list-files: do not show duplicate cached entries
 - list-files: sort output and remove duplicates
 - list-files: add -t back
 - list-files: add -1 short for --no-column
 - list-files: add -R/--recursive short for --max-depth=-1
 - list-files: -u does not imply showing stages
 - list-files: make alias 'ls' default to 'list-files'
 - list-files: a user friendly version of ls-files and more
 - ls-files: support --max-depth
 - ls-files: add --column
 - ls-files: add --color to highlight file names
 - ls-files: buffer full item in strbuf before printing
 - ls_colors.c: highlight submodules like directories
 - ls_colors.c: add a function to color a file name
 - ls_colors.c: parse color.ls.* from config file
 - ls_colors.c: add $LS_COLORS parsing code

 A new "git list-files" Porcelain command, "ls-files" with bells and
 whistles.

 Reroll to base on wt-status work ($gmane/265142) has seen some
 positive discussions.

 Waiting for a further polished reroll ($gmane/265534).


* js/fsck-opt (2015-01-21) 19 commits
 - fsck: support ignoring objects in `git fsck` via fsck.skiplist
 - fsck: git receive-pack: support excluding objects from fsck'ing
 - fsck: introduce `git fsck --quick`
 - fsck: support demoting errors to warnings
 - fsck: document the new receive.fsck.* options
 - fsck: allow upgrading fsck warnings to errors
 - fsck: optionally ignore specific fsck issues completely
 - fsck: disallow demoting grave fsck errors to warnings
 - fsck: add a simple test for receive.fsck.*
 - fsck: make fsck_tag() warn-friendly
 - fsck: handle multiple authors in commits specially
 - fsck: make fsck_commit() warn-friendly
 - fsck: make fsck_ident() warn-friendly
 - fsck: report the ID of the error/warning
 - fsck: allow demoting errors to warnings via receive.fsck.warn = <key>
 - fsck: offer a function to demote fsck errors to warnings
 - fsck: provide a function to parse fsck message IDs
 - fsck: introduce identifiers for fsck messages
 - fsck: introduce fsck options

 "fsck.warnings = <list of error tokens>" I suggested turned out to
 be an unpopular choice (sorry Dscho).

 Expecting a reroll.


* nd/untracked-cache (2015-03-12) 24 commits
 - git-status.txt: advertisement for untracked cache
 - untracked cache: guard and disable on system changes
 - mingw32: add uname()
 - t7063: tests for untracked cache
 - update-index: test the system before enabling untracked cache
 - update-index: manually enable or disable untracked cache
 - status: enable untracked cache
 - untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
 - untracked cache: mark index dirty if untracked cache is updated
 - untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
 - untracked cache: avoid racy timestamps
 - read-cache.c: split racy stat test to a separate function
 - untracked cache: invalidate at index addition or removal
 - untracked cache: load from UNTR index extension
 - untracked cache: save to an index extension
 - ewah: add convenient wrapper ewah_serialize_strbuf()
 - untracked cache: don't open non-existent .gitignore
 - untracked cache: mark what dirs should be recursed/saved
 - untracked cache: record/validate dir mtime and reuse cached output
 - untracked cache: make a wrapper around {open,read,close}dir()
 - untracked cache: invalidate dirs recursively if .gitignore changes
 - untracked cache: initial untracked cache validation
 - untracked cache: record .gitignore information and dir hierarchy
 - dir.c: optionally compute sha-1 of a .gitignore file

 Need extra sets of eyes to review this.


* nd/pathspec-strip-fix (2015-04-18) 1 commit
 - pathspec: adjust prefixlen after striping trailing slash

 Does not quite fix ($gmane/267614).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.


* pw/remote-set-url-fetch (2014-11-26) 1 commit
 - remote: add --fetch and --both options to set-url

 Expecting a reroll.


* tr/remerge-diff (2014-11-10) 9 commits
 - t4213: avoid "|" in sed regexp
 - log --remerge-diff: show what the conflict resolution changed
 - name-hash: allow dir hashing even when !ignore_case
 - merge-recursive: allow storing conflict hunks in index
 - merge_diff_mode: fold all merge diff variants into an enum
 - combine-diff: do not pass revs->dense_combined_merges redundantly
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 Waiting for a reroll ($gmane/256591).


* hv/submodule-config (2014-11-11) 4 commits
 - do not die on error of parsing fetchrecursesubmodules option
 - use new config API for worktree configurations of submodules
 - extract functions for submodule config set and lookup
 - implement submodule config cache for lookup of submodule names

 Kicked back to 'pu' per request ($gmane/255610).


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


* jc/show-branch (2014-03-24) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit.

--------------------------------------------------
[Cooking]

* jc/epochtime-wo-tz (2015-04-15) 2 commits
  (merged to 'next' on 2015-04-21 at b926f72)
 + parse_date_basic(): let the system handle DST conversion
 + parse_date_basic(): return early when given a bogus timestamp

 "git commit --date=now" or anything that relies on approxidate lost
 the daylight-saving-time offset.

 Will merge to 'master' in the second batch of post v2.4 cycle.


* jc/plug-fmt-merge-msg-leak (2015-04-20) 1 commit
  (merged to 'next' on 2015-04-21 at 443c728)
 + fmt-merge-msg: plug small leak of commit buffer

 Will merge to 'master' in the second batch of post v2.4 cycle.


* cn/bom-in-gitignore (2015-04-16) 5 commits
  (merged to 'next' on 2015-04-21 at f7d56f1)
 + attr: skip UTF8 BOM at the beginning of the input file
 + config: use utf8_bom[] from utf.[ch] in git_parse_source()
 + utf8-bom: introduce skip_utf8_bom() helper
 + add_excludes_from_file: clarify the bom skipping logic
 + dir: allow a BOM at the beginning of exclude files

 Teach the codepaths that read .gitignore and .gitattributes files
 that these files encoded in UTF-8 may have UTF-8 BOM marker at the
 beginning; this makes it in line with what we do for configuration
 files already.

 Will merge to 'master' in the second batch of post v2.4 cycle.


* ee/clean-remove-dirs (2015-04-26) 5 commits
 - clean: improve performance when removing lots of directories
 - p7300: add performance tests for clean
 - t7300: add tests to document behavior of clean and nested git
 - setup: sanity check file size in read_gitfile_gently
 - setup: add gentle version of read_gitfile

 Replace "is this subdirectory a separate repository that should not
 be touched?" check "git clean" does by checking if it has .git/HEAD
 using the submodule-related code with a more optimized check.

 Waiting for a reroll.


* ep/fix-test-lib-functions-report (2015-04-16) 1 commit
  (merged to 'next' on 2015-04-21 at 23e584f)
 + test-lib-functions.sh: fix the second argument to some helper functions

 Will merge to 'master' in the second batch of post v2.4 cycle.


* jk/still-interesting (2015-04-17) 1 commit
  (merged to 'next' on 2015-04-21 at 58b54af)
 + limit_list: avoid quadratic behavior from still_interesting

 "git rev-list --objects $old --not --all" to see if everything that
 is reachable from $old is already connected to the existing refs
 was very inefficient.

 Will merge to 'master' in the second batch of post v2.4 cycle.


* jk/type-from-string-gently (2015-04-17) 1 commit
  (merged to 'next' on 2015-04-20 at a97611f)
 + type_from_string_gently: make sure length matches

 "git cat-file bl $blob" failed to barf even though there is no
 object type that is "bl".

 Will merge to 'master' in the first batch of post v2.4 cycle.


* ls/p4-changes-block-size (2015-04-20) 1 commit
  (merged to 'next' on 2015-04-21 at 830eeed)
 + git-p4: use -m when running p4 changes

 "git p4" learned "--changes-block-size <n>" to read the changes in
 chunks from Perforce, instead of making one call to "p4 changes"
 that may trigger "too many rows scanned" error from Perforce.

 Will merge to 'master' in the second batch of post v2.4 cycle.


* mm/add-p-split-error (2015-04-16) 5 commits
  (merged to 'next' on 2015-04-23 at b1bd21a)
 + stash -p: demonstrate failure of split with mixed y/n
 + t3904-stash-patch: factor PERL prereq at the top of the file
 + t3904-stash-patch: fix test description
 + add -p: demonstrate failure when running 'edit' after a split
 + t3701-add-interactive: simplify code

 When "add--interactive" splits a hunk into two overlapping hunks
 and then let the user choose only one, it sometimes feeds an
 incorrect patch text to "git apply".  Add tests to demonstrate
 this.

 I have a slight suspicion that this may be $gmane/87202 coming back
 and biting us (I seem to have said "let's run with this and see
 what happens" back then).

 Will merge to 'master' in the third batch of post v2.4 cycle.


* mm/usage-log-l-can-take-regex (2015-04-20) 2 commits
  (merged to 'next' on 2015-04-21 at 03e951c)
 + log -L: improve error message on malformed argument
 + Documentation: change -L:<regex> to -L:<funcname>

 Will merge to 'master' in the second batch of post v2.4 cycle.


* nd/t1509-chroot-test (2015-04-18) 1 commit
  (merged to 'next' on 2015-04-21 at 60d35d3)
 + t1509: update prepare script to be able to run t1509 in chroot again

 Correct test bitrot.

 Will merge to 'master' in the first batch of post v2.4 cycle.


* oh/fix-config-default-user-name-section (2015-04-17) 1 commit
  (merged to 'next' on 2015-04-20 at b74b914)
 + config: fix settings in default_user_config template

 The default $HOME/.gitconfig file created upon "git config --global"
 that edits it had incorrectly spelled user.name and user.email
 entries in it.

 Will merge to 'master' in the first batch of post v2.4 cycle.


* tb/t0027-crlf (2015-04-25) 3 commits
 - t0027: Add repoMIX and LF_nul
  (merged to 'next' on 2015-04-21 at 142cb99)
 + t0027: support NATIVE_CRLF platforms
 + t0027: cleanup: rename functions; avoid non-leading TABs

 Will merge to 'next'.


* jk/prune-mtime (2015-04-20) 3 commits
  (merged to 'next' on 2015-04-21 at 9990d41)
 + sha1_file: only freshen packs once per run
 + sha1_file: freshen pack objects before loose
 + reachable: only mark local objects as recent

 Access to objects in repositories that borrow from another one on a
 slow NFS server unnecessarily got more expensive due to recent code
 becoming more cautious in a naive way not to lose objects to pruning.

 Will merge to 'master' in the second batch of post v2.4 cycle.


* jc/gitignore-precedence (2015-04-22) 1 commit
 - ignore: info/exclude should trump core.excludesfile

 core.excludesfile (defaulting to $XDG_HOME/git/ignore) is supposed
 to be overridden by repository-specific .git/info/exclude file, but
 the order was swapped from the beginning. This belatedly fixes it.

 Will merge to 'next'.


* jk/git-no-more-argv0-path-munging (2015-04-22) 1 commit
 - stop putting argv[0] dirname at front of PATH

 We have prepended $GIT_EXEC_PATH and the path "git" is installed in
 (typically "/usr/bin") to $PATH when invoking subprograms and hooks
 for almost eternity, but the original use case the latter tried to
 support was semi-bogus (i.e. install git to /opt/foo/git and run it
 without having /opt/foo on $PATH), and more importantly it has
 become less and less relevant as Git grew more mainstream (i.e. the
 users would _want_ to have it on their $PATH).  Stop prepending the
 path in which "git" is installed to users' $PATH, as that would
 interfere the command search order people depend on (e.g. they may
 not like versions of programs that are unrelated to Git in /usr/bin
 and want to override them by having different ones in /usr/local/bin
 and have the latter directory earlier in their $PATH).

 Will merge to 'next'.


* jk/stash-require-clean-index (2015-04-22) 3 commits
 - stash: require a clean index to apply
 - t3903: avoid applying onto dirty index
 - t3903: stop hard-coding commit sha1s

 "git stash pop/apply" forgot to make sure that not just the working
 tree is clean but also the index is clean. The latter is important
 as a stash application can conflict and the index will be used for
 conflict resolution.

 Will merge to 'next'.


* jc/merge (2015-04-29) 15 commits
 - merge: deprecate 'git merge <message> HEAD <commit>' syntax
 - merge: handle FETCH_HEAD internally
 - merge: decide if we auto-generate the message early in collect_parents()
 - merge: make collect_parents() auto-generate the merge message
 - merge: extract prepare_merge_message() logic out
 - merge: narrow scope of merge_names
 - merge: split reduce_parents() out of collect_parents()
 - merge: clarify collect_parents() logic
 - merge: small leakfix and code simplification
 - merge: do not check argc to determine number of remote heads
 - merge: clarify "pulling into void" special case
 - t5520: test pulling an octopus into an unborn branch
 - t5520: style fixes
 - merge: simplify code flow
 - merge: test the top-level merge driver
 (this branch is used by jc/merge-drop-old-syntax.)

 "git merge FETCH_HEAD" learned that the previous "git fetch" could
 be to create an Octopus merge, i.e. recording multiple branches
 that are not marked as "not-for-merge"; this allows us to lose an
 old style invocation "git merge <msg> HEAD $commits..." in the
 implementation of "git pull" script; the old style syntax can now
 be deprecated.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
 - merge: drop 'git merge <message> HEAD <commit>' syntax
 (this branch uses jc/merge.)

 Stop supporting "git merge <messsage> HEAD <commit>" syntax that
 has been deprecated since October 2007.


* jk/test-chain-lint (2015-04-28) 2 commits
 - test-lib: turn on GIT_TEST_CHAIN_LINT by default
 - t7502-commit.sh: fix a broken and-chain

 Will merge to 'next'.


* mh/ref-lock-avoid-running-out-of-fds (2015-04-25) 8 commits
 - ref_transaction_commit(): only keep one lockfile open at a time
 - ref_transaction_commit(): remove the local flags variables
 - write_ref_sha1(): inline function at callers
 - commit_ref_update(): new function, extracted from write_ref_sha1()
 - write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
 - refs.c: remove lock_fd from struct ref_lock
 - t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
 - update-ref: test handling large transactions properly
 (this branch is tangled with sb/ref-lock-avoid-running-out-of-fds.)

 "git update-ref --stdin" was converted to be "transactional" some
 time ago, but the ref transaction machinery was not prepared to
 handle many refs, primarily because it tried to keep the loose ref
 files open at the same time, which would cause us to hit the ENFILE
 limit.  Fix the ref_transaction_commit() code not to keep the file
 descriptors open unnecessarily.

 We would probably want to apply the fix to older codebase, but this
 fix is unfortunately done to apply only on v2.4.x track.


* bc/connect-plink (2015-04-28) 3 commits
 - connect: improve check for plink to reduce false positives
 - t5601: fix quotation error leading to skipped tests
 - connect: simplify SSH connection code path

 The connection initiation code for "ssh" transport tried to absorb
 differences between the stock "ssh" and Putty-supplied "plink" and
 its derivatives, but the logic to tell that we are using "plink"
 variants were too loose and falsely triggered when "plink" appeared
 anywhere in the path (e.g. "/home/me/bin/uplink/ssh").

 Will merge to 'next'.


* jc/test-prereq-validate (2015-04-28) 1 commit
 - test: validate prerequistes syntax

 Help us to find broken test script that splits the body part of the
 test by mistaken use of wrong kind of quotes.

 Will merge to 'next'.


* fg/document-commit-message-stripping (2015-04-27) 1 commit
 - Documentation: clarify how "git commit" cleans up the edited log message

 Will merge to 'next'.


* ah/usage-strings (2015-04-02) 2 commits
 - branch: fix funny-sounding error message
 - standardize usage strings that were missed the first time

 A few usage string updates.

 Will merge to 'next'.


* jk/reading-packed-refs (2015-04-16) 9 commits
  (merged to 'next' on 2015-04-21 at c9bce73)
 + t1430: add another refs-escape test
 + read_packed_refs: avoid double-checking sane refs
 + strbuf_getwholeline: use getdelim if it is available
 + strbuf_getwholeline: avoid calling strbuf_grow
 + strbuf_addch: avoid calling strbuf_grow
 + config: use getc_unlocked when reading from file
 + strbuf_getwholeline: use getc_unlocked
 + git-compat-util: add fallbacks for unlocked stdio
 + strbuf_getwholeline: use getc macro

 An earlier rewrite to use strbuf_getwholeline() instead of fgets(3)
 to read packed-refs file revealed that the former is unacceptably
 inefficient.

 Will merge to 'master' in the second batch of post v2.4 cycle.


* kn/cat-file-literally (2015-04-15) 5 commits
 - SQUASH???
 - t1006: add tests for git cat-file --literally
 - cat-file: add documentation for '--literally' option.
 - cat-file: teach cat-file a '--literally' option
 - sha1_file.c: support reading from a loose object of unknown type

 Add the "--literally" option to "cat-file" to allow inspecting
 loose objects of an experimental or a broken type.

 This is v8 $gmane/267213; v9 was posted but it will still needs reroll.
 Waiting for reroll.


* ld/p4-filetype-detection (2015-04-04) 3 commits
  (merged to 'next' on 2015-04-08 at da735b4)
 + git-p4: fix filetype detection on files opened exclusively
 + git-p4: small fix for locked-file-move-test
 + git-p4: fix small bug in locked test scripts

 Will merge to 'master' in the first batch of post v2.4 cycle.


* lm/squelch-bg-progress (2015-04-15) 2 commits
  (merged to 'next' on 2015-04-21 at 9a8b1e9)
 + compat/mingw: stubs for getpgid() and tcgetpgrp()
 + progress: no progress in background

 Many long-running operations show progress eye-candy, even when
 they are later backgrounded.  Hide the eye-candy when the process
 is sent to the background instead.

 Will merge to 'master' in the second batch of post v2.4 cycle.


* sb/test-bitmap-free-at-end (2015-04-12) 1 commit
  (merged to 'next' on 2015-04-14 at 0ae4759)
 + pack-bitmap.c: fix a memleak

 Will merge to 'master' in the first batch of post v2.4 cycle.


* va/p4-client-path (2015-04-23) 2 commits
  (merged to 'next' on 2015-04-23 at e0d2065)
 + git-p4: improve client path detection when branches are used
 + t9801: check git-p4's branch detection with client spec enabled

 git p4 attempts to better handle branches in Perforce.

 Will merge to 'master' in the third batch of post v2.4 cycle.


* jk/sha1-file-reduce-useless-warnings (2015-03-30) 1 commit
  (merged to 'next' on 2015-04-21 at a8bd995)
 + sha1_file: squelch "packfile cannot be accessed" warnings

 Will merge to 'master' in the second batch of post v2.4 cycle.


* mh/show-branch-topic (2015-03-31) 1 commit
  (merged to 'next' on 2015-04-08 at 628ada5)
 + show-branch: show all local heads when only giving one rev along --topics

 "git show-branch --topics HEAD" (with no other arguments) did not
 do anything interesting.  Instead, contrast the given revision
 against all the local branches by default.

 Will merge to 'master' in the first batch of post v2.4 cycle.


* sb/line-log-plug-pairdiff-leak (2015-03-30) 1 commit
  (merged to 'next' on 2015-04-08 at 6ea8b71)
 + line-log.c: fix a memleak

 Will merge to 'master' in the first batch of post v2.4 cycle.


* jk/init-core-worktree-at-root (2015-04-02) 1 commit
  (merged to 'next' on 2015-04-08 at 92a942b)
 + init: don't set core.worktree when initializing /.git

 We avoid setting core.worktree when the repository location is the
 ".git" directory directly at the top level of the working tree, but
 the code misdetected the case in which the working tree is at the
 root level of the filesystem (which arguably is a silly thing to
 do, but still valid).

 Will merge to 'master' in the first batch of post v2.4 cycle.


* ts/checkout-advice-plural (2015-04-02) 1 commit
  (merged to 'next' on 2015-04-08 at dd5c436)
 + checkout: call a single commit "it" intead of "them"

 Will merge to 'master' in the first batch of post v2.4 cycle.


* pt/credential-xdg (2015-03-25) 4 commits
  (merged to 'next' on 2015-03-25 at 765128e)
 + t0302: "unreadable" test needs POSIXPERM
  (merged to 'next' on 2015-03-24 at 9a3706e)
 + t0302: test credential-store support for XDG_CONFIG_HOME
 + git-credential-store: support XDG_CONFIG_HOME
 + git-credential-store: support multiple credential files
 (this branch is used by pt/xdg-config-path.)

 Tweak the sample "store" backend of the credential helper to honor
 XDG configuration file locations when specified.

 As this may see further updates, and also this is not an urgent
 issue anyway, I'll give it a bit more time for it to simmer.

 Will cook in 'next'.


* jc/diff-no-index-d-f (2015-03-26) 2 commits
  (merged to 'next' on 2015-03-27 at 1f270f9)
 + diff-no-index: align D/F handling with that of normal Git
 + diff-no-index: DWIM "diff D F" into "diff D/F F"

 The usual "git diff" when seeing a file turning into a directory
 showed a patchset to remove the file and create all files in the
 directory, but "git diff --no-index" simply refused to work.  Also,
 when asked to compare a file and a directory, imitate POSIX "diff"
 and compare the file with the file with the same name in the
 directory, instead of refusing to run.

 Will merge to 'master' in the first batch of post v2.4 cycle.


* nd/diff-i-t-a (2015-03-23) 1 commit
  (merged to 'next' on 2015-03-24 at a6be89f)
 + diff-lib.c: adjust position of i-t-a entries in diff

 After "git add -N", the path appeared in output of "git diff HEAD"
 and "git diff --cached HEAD", leading "git status" to classify it
 as "Changes to be committed".  Such a path, however, is not yet to
 be scheduled to be committed.  "git diff" showed the change to the
 path as modification, not as a "new file", in the header of its
 output.

 Treat such paths as "yet to be added to the index but Git already
 know about them"; "git diff HEAD" and "git diff --cached HEAD"
 should not talk about them, and "git diff" should show them as new
 files yet to be added to the index.

 Will cook in 'next', as this brings in a new world order.


* bc/object-id (2015-03-13) 10 commits
  (merged to 'next' on 2015-03-24 at 3ec4f83)
 + apply: convert threeway_stage to object_id
 + patch-id: convert to use struct object_id
 + commit: convert parts to struct object_id
 + diff: convert struct combine_diff_path to object_id
 + bulk-checkin.c: convert to use struct object_id
 + zip: use GIT_SHA1_HEXSZ for trailers
 + archive.c: convert to use struct object_id
 + bisect.c: convert leaf functions to use struct object_id
 + define utility functions for object IDs
 + define a structure for object IDs

 Identify parts of the code that knows that we use SHA-1 hash to
 name our objects too much, and use (1) symbolic constants instead
 of hardcoded 20 as byte count and/or (2) use struct object_id
 instead of unsigned char [20] for object names.

 Will merge to 'master' in the first batch of post v2.4 cycle.


* nd/slim-index-pack-memory-usage (2015-04-18) 2 commits
  (merged to 'next' on 2015-04-21 at 919b80d)
 + index-pack: kill union delta_base to save memory
 + index-pack: reduce object_entry size to save memory

 Memory usage of "git index-pack" has been trimmed by tens of
 per-cent.

 Will merge to 'master' in the second batch of post v2.4 cycle.


* nd/multiple-work-trees (2015-03-31) 41 commits
  (merged to 'next' on 2015-04-02 at 7ea51b4)
 + prune --worktrees: fix expire vs worktree existence condition
  (merged to 'next' on 2015-03-24 at 58b5a60)
 + t1501: fix test with split index
  (merged to 'next' on 2015-03-20 at cc98ed0)
 + t2026: fix broken &&-chain
  (merged to 'next' on 2015-02-18 at b51f696)
 + t2026 needs procondition SANITY
 + git-checkout.txt: a note about multiple checkout support for submodules
 + checkout: add --ignore-other-wortrees
 + checkout: pass whole struct to parse_branchname_arg instead of individual flags
 + git-common-dir: make "modules/" per-working-directory directory
 + checkout: do not fail if target is an empty directory
 + t2025: add a test to make sure grafts is working from a linked checkout
 + checkout: don't require a work tree when checking out into a new one
 + git_path(): keep "info/sparse-checkout" per work-tree
 + count-objects: report unused files in $GIT_DIR/worktrees/...
 + gc: support prune --worktrees
 + gc: factor out gc.pruneexpire parsing code
 + gc: style change -- no SP before closing parenthesis
 + checkout: clean up half-prepared directories in --to mode
 + checkout: reject if the branch is already checked out elsewhere
 + prune: strategies for linked checkouts
 + checkout: support checking out into a new working directory
 + use new wrapper write_file() for simple file writing
 + wrapper.c: wrapper to open a file, fprintf then close
 + setup.c: support multi-checkout repo setup
 + setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 + setup.c: convert check_repository_format_gently to use strbuf
 + setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 + setup.c: convert is_git_directory() to use strbuf
 + git-stash: avoid hardcoding $GIT_DIR/logs/....
 + *.sh: avoid hardcoding $GIT_DIR/hooks/...
 + git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 + $GIT_COMMON_DIR: a new environment variable
 + commit: use SEQ_DIR instead of hardcoding "sequencer"
 + fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 + reflog: avoid constructing .lock path with git_path
 + *.sh: respect $GIT_INDEX_FILE
 + git_path(): be aware of file relocation in $GIT_DIR
 + path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 + path.c: rename vsnpath() to do_git_path()
 + git_snpath(): retire and replace with strbuf_git_path()
 + path.c: make get_pathname() call sites return const char *
 + path.c: make get_pathname() return strbuf instead of static buffer

 A replacement for contrib/workdir/git-new-workdir that does not
 rely on symbolic links and make sharing of objects and refs safer
 by making the borrowee and borrowers aware of each other.

 Will cook in 'next'.

--------------------------------------------------
[Discarded]

* as/userdiff-sh (2015-03-13) 1 commit
 . userdiff: funcname and word patterns for sh

 Add a built-in "userdiff" patterns to word-split and identify
 notable lines in shell scripts to help presentation of diff and
 grep output.


* sb/ref-lock-avoid-running-out-of-fds (2015-04-23) 5 commits
 . refs.c: enable large transactions
 . sha1_file.c: move get_max_fd_limit(void) to wrapper.c
 - refs.c: remove lock_fd from struct ref_lock
 - t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
 - update-ref: test handling large transactions properly
 (this branch is tangled with mh/ref-lock-avoid-running-out-of-fds.)


* jc/merge-deprecate-old-syntax (2015-03-26) 1 commit
 . merge: deprecate 'git merge <message> HEAD <commit>' syntax

 The first step to really start the process of removing the ancient
 syntax to invoke a two-way merge, which has been deprecated since
 October 2007.

 This regresses "git pull" in various ways; do not merge ($gmane/267432).

^ permalink raw reply	[relevance 4%]

* What's cooking in git.git (Dec 2014, #04; Mon, 22)
@ 2014-12-22 23:17  1% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2014-12-22 23:17 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

Quite a few topics have been merged to 'master' as the third batch
for this cycle, on top of the recent "case sensitive .Git" fix that
has been publicized very widely.  The next release which is expected
to be a small one is taking shape.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* cc/interpret-trailers-more (2014-11-10) 4 commits
  (merged to 'next' on 2014-12-15 at 77f6c6a)
 + trailer: add test with an old style conflict block
 + trailer: reuse ignore_non_trailer() to ignore conflict lines
 + commit: make ignore_non_trailer() non static
 + Merge branch 'jc/conflict-hint' into cc/interpret-trailers-more
 (this branch uses jc/conflict-hint.)

 "git interpret-trailers" learned to properly handle the
 "Conflicts:" block at the end.


* ch/new-gpg-drops-rfc-1991 (2014-12-12) 4 commits
  (merged to 'next' on 2014-12-15 at 32d7d50)
 + tests: squelch noise from GPG machinery set-up
 + tests: replace binary GPG keyrings with ASCII-armored keys
 + tests: skip RFC1991 tests for gnupg 2.1
 + tests: create gpg homedir on the fly

 Recent GPG changes the keyring format and drops support for RFC1991
 formatted signatures, breaking our existing tests.


* dm/compat-s-ifmt-for-zos (2014-12-04) 1 commit
  (merged to 'next' on 2014-12-15 at 0eb2fe6)
 + compat: convert modes to use portable file type values

 Long overdue departure from the assumption that S_IFMT is shared by
 everybody made in 2005.


* dw/shell-basename-dashdash-before-stripping-leading-dash-from-login (2014-11-25) 1 commit
  (merged to 'next' on 2014-12-15 at 42937b7)
 + git-sh-setup.sh: use dashdash with basename call


* jc/conflict-hint (2014-10-28) 4 commits
  (merged to 'next' on 2014-12-15 at b72475f)
 + merge & sequencer: turn "Conflicts:" hint into a comment
 + builtin/commit.c: extract ignore_non_trailer() helper function
 + merge & sequencer: unify codepaths that write "Conflicts:" hint
 + builtin/merge.c: drop a parameter that is never used
 (this branch is used by cc/interpret-trailers-more.)

 Unlike all the other hints given in the commit log editor, the list
 of conflicted paths were appended at the end without commented out.


* jc/exec-cmd-system-path-leak-fix (2014-11-30) 1 commit
  (merged to 'next' on 2014-12-15 at f926ee5)
 + system_path(): always return free'able memory to the caller

 The function sometimes returned a non-freeable memory and some
 other times returned a piece of memory that must be freed.


* jc/hook-cleanup (2014-12-01) 1 commit
  (merged to 'next' on 2014-12-15 at f5759d0)
 + run-command.c: retire unused run_hook_with_custom_index()

 Remove unused code.


* jc/refer-to-t-readme-from-submitting-patches (2014-11-24) 2 commits
  (merged to 'next' on 2014-12-15 at 0e88699)
 + t/README: justify why "! grep foo" is sufficient
 + SubmittingPatches: refer to t/README for tests


* jg/prompt-localize-temporary (2014-12-12) 1 commit
  (merged to 'next' on 2014-12-15 at bb9cac9)
 + git-prompt.sh: make $f local to __git_eread()

 "git-prompt" (in contrib/) used a variable from the global scope,
 possibly contaminating end-user's namespace.


* jk/always-allow-large-packets (2014-12-10) 1 commit
  (merged to 'next' on 2014-12-15 at c3fb2c8)
 + pkt-line: allow writing of LARGE_PACKET_MAX buffers

 "git push" and "git fetch" did not communicate an overlong refname
 correctly.


* jk/colors (2014-12-09) 6 commits
  (merged to 'next' on 2014-12-15 at 20b045f)
 + parse_color: drop COLOR_BACKGROUND macro
 + diff-highlight: allow configurable colors
 + parse_color: recognize "no$foo" to clear the $foo attribute
 + parse_color: support 24-bit RGB values
 + parse_color: refactor color storage
 + Merge branch 'jn/parse-config-slot' into jk/colors

 "diff-highlight" filter (in contrib/) allows its color output
 to be customized via configuration variables.


* jk/commit-date-approxidate (2014-12-11) 2 commits
  (merged to 'next' on 2014-12-15 at 047530e)
 + commit: always populate GIT_AUTHOR_* variables
 + commit: loosen ident checks when generating template

 Recent update to "git commit" broke amending an existing commit
 with bogus author/committer lines without a valid e-mail address.


* jk/credential-quit (2014-12-04) 2 commits
  (merged to 'next' on 2014-12-15 at 4cfd999)
 + prompt: respect GIT_TERMINAL_PROMPT to disable terminal prompts
 + credential: let helpers tell us to quit

 Credential helpers are asked in turn until one of them give
 positive response, which is cumbersome to turn off when you need to
 run Git in an automated setting.  The credential helper interface
 learned to allow a helper to say "stop, don't ask other helpers."
 Also GIT_TERMINAL_PROMPT environment can be set to false to disable
 our built-in prompt mechanism for passwords.


* jk/for-each-reflog-ent-reverse (2014-12-05) 2 commits
  (merged to 'next' on 2014-12-15 at de71f08)
 + for_each_reflog_ent_reverse: turn leftover check into assertion
 + for_each_reflog_ent_reverse: fix newlines on block boundaries

 The code that reads the reflog from the newer to the older entries
 did not handle an entry that crosses a boundary of block it uses to
 read them correctly.


* jk/lock-ref-sha1-basic-return-errors (2014-11-20) 1 commit
  (merged to 'next' on 2014-12-15 at c48b110)
 + lock_ref_sha1_basic: do not die on locking errors

 Correct an API anomaly.


* jk/read-packed-refs-without-path-max (2014-12-10) 3 commits
  (merged to 'next' on 2014-12-15 at c6d6f56)
 + read_packed_refs: use skip_prefix instead of static array
 + read_packed_refs: pass strbuf to parse_ref_line
 + read_packed_refs: use a strbuf for reading lines

 Git did not correctly read an overlong refname from a packed refs
 file.


* jk/test-asan (2014-12-11) 1 commit
  (merged to 'next' on 2014-12-15 at d24cb92)
 + t: support clang/gcc AddressSanitizer


* js/fsck-tag-validation (2014-12-09) 2 commits
  (merged to 'next' on 2014-12-15 at 455f26c)
 + index-pack: terminate object buffers with NUL
 + fsck: properly bound "invalid tag name" error message

 New tag object format validation added in 2.2 showed garbage
 after a tagname it reported in its error message.


* js/push-to-deploy (2014-11-30) 2 commits
  (merged to 'next' on 2014-12-15 at ef8c99f)
 + t5516: more tests for receive.denyCurrentBranch=updateInstead
 + receive-pack: add another option for receive.denyCurrentBranch
 (this branch is used by jc/push-to-checkout.)

 "git push" into a repository with a working tree normally refuses
 to modify the branch that is checked out.  The command learned to
 optionally do an equivalent of "git reset --hard" only when there
 is no change to the working tree and the index instead, which would
 be useful to "deploy" by pushing into a repository.


* js/t5000-dont-copy-bin-sh (2014-11-24) 1 commit
  (merged to 'next' on 2014-12-15 at 65ffd05)
 + t5000 on Windows: do not mistake "sh.exe" as "sh"


* js/test-hashmap-squelch-gcc (2014-12-09) 1 commit
  (merged to 'next' on 2014-12-15 at a8da691)
 + test-hashmap: squelch gcc compiler warning


* mg/add-ignore-errors (2014-11-21) 1 commit
  (merged to 'next' on 2014-12-15 at 3834789)
 + add: ignore only ignored files

 "git add --ignore-errors ..." did not ignore an error to
 give a file that did not exist.


* mg/branch-d-m-f (2014-12-09) 2 commits
  (merged to 'next' on 2014-12-15 at 8366f2c)
 + branch: allow -f with -m and -d
 + t3200-branch: test -M

 "git branch -d" (delete) and "git branch -m" (move) learned to
 honor "-f" (force) flag; unlike many other subcommands, the way to
 force these have been with separate "-D/-M" options, which was
 inconsistent.


* mg/doc-check-ignore-tracked-are-not-ignored (2014-12-04) 1 commit
  (merged to 'next' on 2014-12-15 at c50f748)
 + check-ignore: clarify treatment of tracked files


* mh/find-uniq-abbrev (2014-11-26) 1 commit
  (merged to 'next' on 2014-12-15 at e3b2b62)
 + sha1_name: avoid unnecessary sha1 lookup in find_unique_abbrev

 The code to abbreviate an object name to its short unique prefix
 has been optimized when no abbreviation was requested.


* mh/simplify-repack-without-refs (2014-11-25) 7 commits
  (merged to 'next' on 2014-12-15 at 351e03e)
 + sort_string_list(): rename to string_list_sort()
 + prune_remote(): iterate using for_each_string_list_item()
 + prune_remote(): rename local variable
 + repack_without_refs(): make the refnames argument a string_list
 + prune_remote(): sort delete_refs_list references en masse
 + prune_remote(): initialize both delete_refs lists in a single loop
 + prune_remote(): exit early if there are no stale references

 "git remote update --prune" to drop many refs has been optimized.


* nd/ls-tree-pathspec (2014-12-01) 5 commits
  (merged to 'next' on 2014-12-15 at 8da6e09)
 + t3102: style modernization
 + t3102: document that ls-tree does not yet support negated pathspec
 + ls-tree: disable negative pathspec because it's not supported
 + ls-tree: remove path filtering logic in show_tree
 + tree.c: update read_tree_recursive callback to pass strbuf as base

 "git ls-tree" does not support path selection based on negative
 pathspecs, but did not error out when negative pathspecs are given.


* nd/split-index (2014-12-11) 1 commit
  (merged to 'next' on 2014-12-15 at ed6490c)
 + index-format.txt: add a missing closing quote

 A typofix to the documentation of a feature already in the release.


* ok/rebase-i-count-todo (2014-12-10) 1 commit
  (merged to 'next' on 2014-12-15 at 4a1f7ed)
 + Show number of TODO items for interactive rebase


* pb/am-message-id-footer (2014-11-25) 2 commits
  (merged to 'next' on 2014-12-15 at b44b6bd)
 + git-am: add --message-id/--no-message-id
 + git-mailinfo: add --message-id

 "git am" learned "--message-id" option to copy the message ID of
 the incoming e-mail to the log message of resulting commit.


* pb/send-email-te (2014-11-25) 2 commits
  (merged to 'next' on 2014-12-15 at 38c2810)
 + git-send-email: add --transfer-encoding option
 + git-send-email: delay creation of MIME headers
 (this branch is used by jc/t9001-modernise.)

 "git send-email" learned "--transfer-encoding" option to force
 a non-fault Content-Transfer-Encoding header (e.g. base64).


* po/doc-assume-unchanged (2014-12-09) 2 commits
  (merged to 'next' on 2014-12-15 at 646e77e)
 + gitignore.txt: do not suggest assume-unchanged
 + doc: make clear --assume-unchanged's user contract

 Fixes long-standing misunderstanding of what assume-unchanged is
 about.  Some text near what is removed by the bottom patch may also
 have to be removed.


* ps/new-workdir-into-empty-directory (2014-12-03) 1 commit
  (merged to 'next' on 2014-12-15 at 0787b56)
 + git-new-workdir: don't fail if the target directory is empty

 "git new-workdir" (in contrib/) can be used to populate an empty
 and existing directory now.


* rj/no-xopen-source-for-cygwin (2014-11-24) 1 commit
  (merged to 'next' on 2014-12-15 at 6e8e9ff)
 + git-compat-util.h: don't define _XOPEN_SOURCE on cygwin

 Avoid compilation warnings on recent gcc toolchain on Cygwin.


* rj/t0050-passes (2014-11-30) 1 commit
  (merged to 'next' on 2014-12-15 at f56c339)
 + t0050-*.sh: mark the rename (case change) test as passing


* rs/use-strbuf-complete-line (2014-12-12) 1 commit
  (merged to 'next' on 2014-12-15 at d6426a0)
 + use strbuf_complete_line() for adding a newline if needed


* rt/completion-tag (2014-12-04) 1 commit
  (merged to 'next' on 2014-12-15 at b03ee39)
 + completion: add git-tag options


* rt/for-each-ref-spell-tcl-as-Tcl (2014-11-30) 1 commit
  (merged to 'next' on 2014-12-15 at c0fcefb)
 + for-each-ref: correct spelling of Tcl in option description


* rw/apply-does-not-take-ignore-date (2014-12-09) 1 commit
  (merged to 'next' on 2014-12-15 at ded2f99)
 + git-am.txt: --ignore-date flag is not passed to git-apply


* sb/string-list (2014-12-04) 3 commits
  (merged to 'next' on 2014-12-15 at 8bb8ddd)
 + string_list: remove string_list_insert_at_index() from its API
 + mailmap: use higher level string list functions
 + string_list: document string_list_(insert,lookup)

 API simplification.


* sv/doc-stripspace (2014-12-04) 1 commit
  (merged to 'next' on 2014-12-15 at e86f8ba)
 + Documentation/git-stripspace: add synopsis for --comment-lines


* tb/config-core-filemode-check-on-broken-fs (2014-11-21) 1 commit
  (merged to 'next' on 2014-12-15 at 3e5490b)
 + init-db: improve the filemode trustability check

 Some filesystems assign filemodes in a strange way, fooling then
 automatic "filemode trustability" check done during a new
 repository creation.


* tb/t0027-eol-conversion (2014-12-05) 1 commit
  (merged to 'next' on 2014-12-15 at ba24e75)
 + t0027: check the eol conversion warnings

--------------------------------------------------
[New Topics]

* bb/update-unicode-table (2014-12-22) 5 commits
 - update_unicode.sh: delete the command group
 - update_unicode.sh: make the output structure visible
 - update_unicode.sh: shorten uniset invocation path
 - update_unicode.sh: set UNICODE_DIR only once
 - update_unicode.sh: simplify output capture

 Simplify the procedure to generate unicode table.

 Will merge to 'next'.


* bc/fetch-thin-less-aggressive-in-normal-repository (2014-12-22) 3 commits
 - pack-objects: use --objects-edge-aggressive only for shallow repos
 - rev-list: add an option to mark fewer edges as uninteresting
 - Documentation: add missing article in rev-list-options.txt

 Earlier we made "rev-list --object-edge" more aggressively list the
 objects at the edge commits, in order to reduce number of objects
 fetched into a shallow repository, but the change affected cases
 other than "fetching into a shallow repository" and made it
 unusably slow (e.g. fetching into a normal repository should not
 have to suffer the overhead from extra processing).  Limit it to a
 more specific case by introducing --objects-edge-aggressive, a new
 option to rev-list.

 Seems to break t5500 when merged to 'pu'.


* es/squelch-openssl-warnings-on-macosx (2014-12-18) 1 commit
 - git-compat-util: suppress unavoidable Apple-specific deprecation warnings

 Squelch useless compiler warnings on Mac OS X.

 Will merge to 'next'.


* jh/pre-push-sample-no-custom-ifs (2014-12-22) 1 commit
 - pre-push.sample: remove unnecessary and misleading IFS=' '

 The sample pre-push hook used customized IFS=' ' for no good reason.

 Will merge to 'next'.


* mh/update-ref-verify (2014-12-11) 2 commits
 - update-ref: fix "verify" command with missing <oldvalue>
 - t1400: add some more tests of "update-ref --stdin"'s verify command

 "git update-ref --stdin"'s verify command did not work well when
 <oldvalue>, which is documented as optional, was missing.

 Will merge to 'next'.


* sb/atomic-push (2014-12-22) 7 commits
 - t5543-atomic-push.sh: add basic tests for atomic pushes
 - push.c: add an --atomic argument
 - receive-pack: move execute_commands_non_atomic before execute_commands
 - receive-pack.c: receive-pack.c: use a single ref_transaction for atomic pushes
 - send-pack.c: add --atomic command line argument
 - send-pack: rename ref_update_to_be_sent to check_to_send_update
 - receive-pack.c: add protocol support to negotiate atomic-push
 (this branch uses mh/reflog-expire.)

 "git push" has been taught a "--atomic" option that makes push to
 update more than one ref an "all-or-none" affair.

 Will merge to 'next'.


* sb/dco-indentation-fix (2014-12-22) 1 commit
 - Documentation/SubmittingPatches: unify whitespace/tabs for the DCO

 Will merge to 'next'.


* sb/t5400-remove-unused (2014-12-16) 1 commit
 - t5400: remove dead code

 Will merge to 'next'.


* tf/prompt-preserve-exit-status (2014-12-22) 1 commit
 - git-prompt: preserve value of $? inside shell prompt

 Using the exit status of the last command in the prompt, e.g.
 PS1='$(__git_ps1) $? ', did not work well because the helper
 function stomped on the exit status.

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* pw/remote-set-url-fetch (2014-11-26) 1 commit
 - remote: add --fetch and --both options to set-url

 Expecting a reroll.


* ms/submodule-update-config-doc (2014-11-03) 1 commit
 - submodule: clarify documentation for update subcommand

 Needs a reroll ($gmane/259037).


* je/quiltimport-no-fuzz (2014-10-21) 2 commits
 - git-quiltimport: flip the default not to allow fuzz
 - git-quiltimport.sh: allow declining fuzz with --exact option

 "quiltimport" drove "git apply" always with -C1 option to reduce
 context of the patch in order to give more chance to somewhat stale
 patches to apply.  Add an "--exact" option to disable, and also
 "-C$n" option to customize this behaviour.  The top patch
 optionally flips the default to "--exact".

 Tired of waiting for an Ack; will discard.


* jc/push-cert-hmac-optim (2014-09-25) 2 commits
 - receive-pack: truncate hmac early and convert only necessary bytes
 - sha1_to_hex: split out "hex-format n bytes" helper and use it

 This is "we could do this if we wanted to", not "we measured and it
 improves performance critical codepath".

 Will perhaps drop.


* mt/patch-id-stable (2014-06-10) 1 commit
 - patch-id: change default to stable

 Teaches "git patch-id" to compute the patch ID that does not change
 when the files in a single patch is reordered. As this new algorithm
 is backward incompatible, the last bit to flip it to be the default
 is left out of 'master' for now.

 Nobody seems to be jumping up & down requesting this last step,
 which makes the result somewhat backward incompatible.
 Will perhaps drop.


* tr/remerge-diff (2014-11-10) 9 commits
 - t4213: avoid "|" in sed regexp
 - log --remerge-diff: show what the conflict resolution changed
 - name-hash: allow dir hashing even when !ignore_case
 - merge-recursive: allow storing conflict hunks in index
 - merge_diff_mode: fold all merge diff variants into an enum
 - combine-diff: do not pass revs->dense_combined_merges redundantly
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 Waiting for a reroll ($gmane/256591).


* hv/submodule-config (2014-11-11) 4 commits
 - do not die on error of parsing fetchrecursesubmodules option
 - use new config API for worktree configurations of submodules
 - extract functions for submodule config set and lookup
 - implement submodule config cache for lookup of submodule names

 Kicked back to 'pu' per request ($gmane/255610).


* ab/add-interactive-show-diff-func-name (2014-05-12) 2 commits
 - SQUASH??? git-add--interactive: Preserve diff heading when splitting hunks
 - git-add--interactive: Preserve diff heading when splitting hunks

 Waiting for a reroll.


* jn/gitweb-utf8-in-links (2014-05-27) 1 commit
 - gitweb: Harden UTF-8 handling in generated links

 $gmane/250758?


* ss/userdiff-update-csharp-java (2014-06-02) 2 commits
 - userdiff: support Java try keyword
 - userdiff: support C# async methods and correct C# keywords

 Reviews sent; waiting for a response.


* bg/rebase-off-of-previous-branch (2014-04-16) 1 commit
 - git-rebase: print name of rev when using shorthand

 Teach "git rebase -" to report the concrete name of the branch
 (i.e. the previous one).

 But it stops short and does not do the same for "git rebase @{-1}".
 Expecting a reroll.


* rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
 - merge: drop unused arg from abort_commit method signature
 - merge: make prepare_to_commit responsible for write_merge_state
 - t7505: ensure cleanup after hook blocks merge
 - t7505: add missing &&

 Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
 run during "git merge".  The log message stresses too much on one
 hook, prepare-commit-msg, but it would equally apply to other hooks
 like post-merge, I think.

 Waiting for a reroll.


* jc/graph-post-root-gap (2013-12-30) 3 commits
 - WIP: document what we want at the end
 - graph: remove unused code a bit
 - graph: stuff the current commit into graph->columns[]

 This was primarily a RFH ($gmane/239580).


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


* jc/show-branch (2014-03-24) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit before sending it out.

--------------------------------------------------
[Cooking]

* ye/http-accept-language (2014-12-22) 1 commit
 - http: Add Accept-Language header if possible

 An earlier iteration broke various people ($gmane/260903).  Please
 retest and comment.


* jk/strbuf-doc-to-header (2014-12-12) 4 commits
 - strbuf.h: reorganize api function grouping headers
 - strbuf.h: format asciidoc code blocks as 4-space indent
 - strbuf.h: drop asciidoc list formatting from API docs
 - strbuf: migrate api-strbuf.txt documentation to strbuf.h

 Resolve the "doc vs header" to favor the latter.

 Expecting to be rerolled.


* mh/reflog-expire (2014-12-22) 24 commits
 - refs.c: let fprintf handle the formatting
 - refs.c: don't expose the internal struct ref_lock in the header file
 - lock_any_ref_for_update(): inline function
 - refs.c: remove unlock_ref/close_ref/commit_ref from the refs api
 - reflog_expire(): new function in the reference API
 - expire_reflog(): treat the policy callback data as opaque
 - Move newlog and last_kept_sha1 to "struct expire_reflog_cb"
 - expire_reflog(): move rewrite to flags argument
 - expire_reflog(): move verbose to flags argument
 - expire_reflog(): pass flags through to expire_reflog_ent()
 - struct expire_reflog_cb: a new callback data type
 - Rename expire_reflog_cb to expire_reflog_policy_cb
 - expire_reflog(): move updateref to flags argument
 - expire_reflog(): move dry_run to flags argument
 - expire_reflog(): add a "flags" argument
 - expire_reflog(): extract two policy-related functions
 - Extract function should_expire_reflog_ent()
 - expire_reflog(): use a lock_file for rewriting the reflog file
 - expire_reflog(): return early if the reference has no reflog
 - expire_reflog(): rename "ref" parameter to "refname"
 - expire_reflog(): it's not an each_ref_fn anymore
 - refs.c: add a function to append a reflog entry to a fd
 - refs.c: make ref_transaction_delete a wrapper for ref_transaction_update
 - refs.c: make ref_transaction_create a wrapper for ref_transaction_update
 (this branch is used by sb/atomic-push.)

 Restructure "reflog expire" to fit the reflogs better with the
 recently updated ref API.

 Looked reasonable (except that some shortlog entries stood out like
 a sore thumb).


* po/doc-core-ignorestat (2014-12-12) 1 commit
 - doc: core.ignoreStat clarify the --assume-unchanged effect

 Expecting a reroll.


* jk/add-i-read-error (2014-12-15) 1 commit
 - add--interactive: leave main loop on read error

 "git add -i" did not notice when the interactive command input
 stream went away and kept asking.

 Will merge to 'next'.


* pd/completion-filenames-fix (2014-12-15) 1 commit
 - Update documentation occurrences of filename .sh

 The top-of-the-file instruction for completion scripts (in contrib/)
 did not name the files correctly.

 Will merge to 'next'.


* rd/send-email-2047-fix (2014-12-15) 2 commits
 - send-email: handle adjacent RFC 2047-encoded words properly
 - send-email: align RFC 2047 decoding more closely with the spec

 "git send-email" did not handle RFC 2047 encoded headers quite
 right.

 Will merge to 'next'.


* jn/doc-api-errors (2014-12-04) 1 commit
 - doc: document error handling functions and conventions

 For discussion.


* jn/rerere-fail-on-auto-update-failure (2014-12-03) 2 commits
 - SQUASH???
 - rerere: error out on autoupdate failure

 Will be rerolled as a part of a larger series.


* jc/push-to-checkout (2014-12-01) 2 commits
 - receive-pack: support push-to-checkout hook
 - receive-pack: refactor updateInstead codepath

 Extending the js/push-to-deploy topic, the behaviour of "git push"
 when updating the working tree and the index with an update to the
 branch that is checked out can be tweaked by push-to-checkout hook.

 Needs docs.


* lh/send-email-hide-x-mailer (2014-12-15) 2 commits
 - test/send-email: --[no-]xmailer tests
 - send-email: add --[no-]xmailer option

 "git send-email" normally identifies itself via X-Mailer: header
 in the message it sends out.  A new command line flag allows the
 header to be squelched.

 Will merge to 'next'.


* nd/list-files (2014-12-01) 19 commits
 - list-files: -M aka diff-cached
 - list-files -F: show submodules with the new indicator '&'
 - list-files: add -F/--classify
 - list-files: show directories as well as files
 - list-files: do not show duplicate cached entries
 - list-files: sort output and remove duplicates
 - list-files: add -t back
 - list-files: add -1 short for --no-column
 - list-files: add -R/--recursive short for --max-depth=-1
 - list-files: -u does not imply showing stages
 - list-files: a user friendly version of ls-files and more
 - ls-files: support --max-depth
 - ls-files: add --column
 - ls-files: add --color to highlight file names
 - ls-files: buffer full item in strbuf before printing
 - ls_colors.c: highlight submodules like directories
 - ls_colors.c: add a function to color a file name
 - ls_colors.c: parse color.ls.* from config file
 - ls_colors.c: add $LS_COLORS parsing code

 A new "git list-files" Porcelain command, "ls-files" with bells and
 whistles.


* nd/multiple-work-trees (2014-12-01) 34 commits
 - git-common-dir: make "modules/" per-working-directory directory
 - checkout: do not fail if target is an empty directory
 - t2025: add a test to make sure grafts is working from a linked checkout
 - checkout: don't require a work tree when checking out into a new one
 - git_path(): keep "info/sparse-checkout" per work-tree
 - count-objects: report unused files in $GIT_DIR/worktrees/...
 - gc: support prune --worktrees
 - gc: factor out gc.pruneexpire parsing code
 - gc: style change -- no SP before closing parenthesis
 - checkout: clean up half-prepared directories in --to mode
 - checkout: reject if the branch is already checked out elsewhere
 - prune: strategies for linked checkouts
 - checkout: support checking out into a new working directory
 - use new wrapper write_file() for simple file writing
 - wrapper.c: wrapper to open a file, fprintf then close
 - setup.c: support multi-checkout repo setup
 - setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 - setup.c: convert check_repository_format_gently to use strbuf
 - setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 - setup.c: convert is_git_directory() to use strbuf
 - git-stash: avoid hardcoding $GIT_DIR/logs/....
 - *.sh: avoid hardcoding $GIT_DIR/hooks/...
 - git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 - $GIT_COMMON_DIR: a new environment variable
 - commit: use SEQ_DIR instead of hardcoding "sequencer"
 - fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 - reflog: avoid constructing .lock path with git_path
 - *.sh: respect $GIT_INDEX_FILE
 - git_path(): be aware of file relocation in $GIT_DIR
 - path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 - path.c: rename vsnpath() to do_git_path()
 - git_snpath(): retire and replace with strbuf_git_path()
 - path.c: make get_pathname() call sites return const char *
 - path.c: make get_pathname() return strbuf instead of static buffer

 A replacement for contrib/workdir/git-new-workdir that does not
 rely on symbolic links and make sharing of objects and refs safer
 by making the borrowee and borrowers aware of each other.


* sb/copy-fd-errno (2014-11-17) 1 commit
 - copy.c: make copy_fd preserve meaningful errno

 Will be rerolled as a part of a larger series.


* jc/t9001-modernise (2014-11-25) 5 commits
 - t9001: style modernisation phase #5
 - t9001: style modernisation phase #4
 - t9001: style modernisation phase #3
 - t9001: style modernisation phase #2
 - t9001: style modernisation phase #1


* jk/approxidate-avoid-y-d-m-over-future-dates (2014-11-13) 2 commits
  (merged to 'next' on 2014-12-15 at 397e986)
 + approxidate: allow ISO-like dates far in the future
 + pass TIME_DATE_NOW to approxidate future-check

 Traditionally we tried to avoid interpreting date strings given by
 the user as future dates, e.g. GIT_COMMITTER_DATE=2014-12-10 when
 used early November 2014 was taken as "October 12, 2014" because it
 is likely that a date in the future, December 10, is a mistake.

 Loosen this and do not tiebreak by future-ness of the date when

 (1) ISO-like format is used, and
 (2) the string can make sense interpreted as both y-m-d and y-d-m.

 Will cook in 'next'.


* br/imap-send-verbosity (2014-11-05) 1 commit
  (merged to 'next' on 2014-12-15 at 504af0b)
 + imap-send: use parse options API to determine verbosity
 (this branch is used by br/imap-send-via-libcurl.)

 Will cook in 'next'.


* br/imap-send-via-libcurl (2014-11-10) 1 commit
  (merged to 'next' on 2014-12-15 at 90db637)
 + git-imap-send: use libcurl for implementation
 (this branch uses br/imap-send-verbosity.)

 Newer libCurl knows how to talk IMAP; "git imap-send" has been
 updated to use this instead of a hand-rolled OpenSSL calls.

 Will cook in 'next'.


* nd/lockfile-absolute (2014-11-03) 1 commit
  (merged to 'next' on 2014-12-15 at 34db9af)
 + lockfile.c: store absolute path

 The lockfile API can get confused which file to clean up when the
 process moved the $cwd after creating a lockfile.

 Will cook in 'next'.


* jc/merge-bases (2014-10-30) 2 commits
  (merged to 'next' on 2014-12-15 at cac279e)
 + get_merge_bases(): always clean-up object flags
 + bisect: clean flags after checking merge bases

 The get_merge_bases*() API was easy to misuse by careless
 copy&paste coders, leaving object flags tainted in the commits that
 needed to be traversed.

 Will cook in 'next'.


* jc/strbuf-add-lines-avoid-sp-ht-sequence (2014-10-27) 1 commit
  (merged to 'next' on 2014-12-15 at b499889)
 + strbuf_add_commented_lines(): avoid SP-HT sequence in commented lines

 The commented output used to blindly add a SP before the payload
 line, resulting in "# \t<indented text>\n" when the payload began
 with a HT.  Instead, produce "#\t<indented text>\n".

 Will cook in 'next'.


* nd/untracked-cache (2014-12-15) 24 commits
 - SQUASH???
 - untracked cache: guard and disable on system changes
 - mingw32: add uname()
 - t7063: tests for untracked cache
 - update-index: test the system before enabling untracked cache
 - update-index: manually enable or disable untracked cache
 - status: enable untracked cache
 - untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
 - untracked cache: mark index dirty if untracked cache is updated
 - untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
 - untracked cache: avoid racy timestamps
 - read-cache.c: split racy stat test to a separate function
 - untracked cache: invalidate at index addition or removal
 - untracked cache: load from UNTR index extension
 - untracked cache: save to an index extension
 - ewah: add convenient wrapper ewah_serialize_strbuf()
 - untracked cache: don't open non-existent .gitignore
 - untracked cache: mark what dirs should be recursed/saved
 - untracked cache: record/validate dir mtime and reuse cached output
 - untracked cache: make a wrapper around {open,read,close}dir()
 - untracked cache: invalidate dirs recursively if .gitignore changes
 - untracked cache: initial untracked cache validation
 - untracked cache: record .gitignore information and dir hierarchy
 - dir.c: optionally compute sha-1 of a .gitignore file

 Comments?


* jc/diff-b-m (2014-10-23) 1 commit
  (merged to 'next' on 2014-12-15 at 59c6636)
 + diff -B -M: fix output for "copy and then rewrite" case

 Fix long-standing bug in "diff -B -M" output.

 Will cook in 'next'.


* jc/checkout-local-track-report (2014-10-14) 1 commit
  (merged to 'next' on 2014-12-15 at e91a7df)
 + checkout: report upstream correctly even with loosely defined branch.*.merge

 The report from "git checkout" on a branch that builds on another
 local branch by setting its branch.*.merge to branch name (not a
 full refname) incorrectly said that the upstream is gone.

 Will cook in 'next'.


* jc/clone-borrow (2014-10-15) 1 commit
  (merged to 'next' on 2014-12-15 at 08fdf77)
 + clone: --dissociate option to mark that reference is only temporary

 Allow "git clone --reference" to be used more safely.

 Will cook in 'next'.

--------------------------------------------------
[Discarded]

* mb/enable-lib-terminal-test-on-newer-darwin (2014-11-14) 1 commit
 . t/lib-terminal: allow TTY tests to run under recent Mac OS

 We probably should drop this ($gmane/259609).


* zk/grep-color-words (2014-10-27) 2 commits
 . Revert "grep: fix match highlighting for combined patterns with context lines"
 . grep: fix match highlighting for combined patterns with context lines

 rs/grep-color-words topic solves it in a different way.

 Will discard.


* jn/dedup-doc-header (2014-12-10) 2 commits
 . put string-list API documentation in one place
 . put strbuf API documentation in one place

 We would want to have an easy way for developers to learn about
 APIs, and also a way to encourage them to keep the API
 documentation up to date when they make changes.  Having header
 comments and API documentation duplicated in two different places
 risked them going out of sync.

 The approach taken by jk/strbuf-doc-to-header is the other way
 around, which people seem to prefer, so this is discarded.


* jt/timer-settime (2014-08-29) 6 commits
 . use timer_settime() for new platforms
 . autoconf: check for timer_settime()
 . autoconf: check for struct itimerspec
 . autoconf: check for struct sigevent
 . autoconf: check for struct timespec
 . autoconf: check for timer_t

 Was wanting for a reroll.


* rs/ref-transaction-reflog (2014-11-03) 15 commits
 . refs.c: allow deleting refs with a broken sha1
 . refs.c: remove lock_any_ref_for_update
 . refs.c: make unlock_ref/close_ref/commit_ref static
 . refs.c: rename log_ref_setup to create_reflog
 . reflog.c: use a reflog transaction when writing during expire
 . refs.c: allow multiple reflog updates during a single transaction
 . refs.c: only write reflog update if msg is non-NULL
 . refs.c: add a flag to allow reflog updates to truncate the log
 . refs.c: add a transaction function to append a reflog entry
 . copy.c: make copy_fd preserve meaningful errno
 . refs.c: add a function to append a reflog entry to a fd
 . refs.c: add a new update_type field to ref_update
 . refs.c: rename the transaction functions
 . refs.c: make ref_transaction_delete a wrapper for ref_transaction_update
 . refs.c make ref_transaction_create a wrapper to ref_transaction_update
 (this branch is used by rs/ref-transaction-rename and rs/ref-transaction-send-pack.)

 Stefan Beller started working on reorganizing these three series,
 which unfortunately did not see much reviews.


* rs/ref-transaction-rename (2014-11-07) 16 commits
 . refs.c: add an err argument to pack_refs
 . refs.c: make lock_packed_refs take an err argument
 . refs.c: make add_packed_ref return an error instead of calling die
 . refs.c: replace the onerr argument in update_ref with a strbuf err
 . refs.c: make the *_packed_refs functions static
 . refs.c: make repack_without_refs static
 . remote.c: use a transaction for deleting refs
 . refs.c: write updates to packed refs when a transaction has more than one ref
 . refs.c: move reflog updates into its own function
 . refs.c: rollback the lockfile before we die() in repack_without_refs
 . refs.c: update rename_ref to use a transaction
 . refs.c: add transaction support for renaming a reflog
 . refs.c: use a stringlist for repack_without_refs
 . refs.c: use packed refs when deleting refs during a transaction
 . refs.c: return error instead of dying when locking fails during transaction
 . refs.c: allow passing raw git_committer_info as email to _update_reflog
 (this branch is used by rs/ref-transaction-send-pack; uses rs/ref-transaction-reflog.)

 Stefan Beller started working on reorganizing these three series,
 which unfortunately did not see much reviews.


* rs/ref-transaction-send-pack (2014-11-07) 7 commits
 . refs.c: add an err argument to create_symref
 . refs.c: add an err argument to create_reflog
 . t5543-atomic-push.sh: add basic tests for atomic pushes
 . push.c: add an --atomic-push argument
 . receive-pack.c: use a single transaction when atomic-push is negotiated
 . send-pack.c: add an --atomic-push command line argument
 . receive-pack.c: add protocol support to negotiate atomic-push
 (this branch uses rs/ref-transaction-reflog and rs/ref-transaction-rename.)

 Stefan Beller started working on reorganizing these three series,
 which unfortunately did not see much reviews.


* sb/simplify-repack-without-refs (2014-11-20) 1 commit
 . refs.c: use a string_list for repack_without_refs


* sb/log-ref-write-fd (2014-11-20) 1 commit
 . refs.c: add a function to append a reflog entry to a fd

 Will be rerolled as a part of a larger series.


* sb/ref-transaction-unify-to-update (2014-11-20) 2 commits
 . refs.c: make ref_transaction_delete a wrapper for ref_transaction_update
 . refs.c: make ref_transaction_create a wrapper for ref_transaction_update
 (this branch is used by sb/ref-transaction-reflog.)

 Code simplification.

 Will be rerolled as a part of a larger series.

* sb/write-sha1-update-reflog (2014-11-24) 1 commit
 . refs.c: move reflog updates into its own function

 Moves a part of function around to add a helper that still only has
 one caller.  Need to see how this helps in a bigger picture.


* sb/ref-transaction-reflog (2014-12-03) 2 commits
 . refs.c: rename transaction.updates to transaction.ref_updates
 . refs.c: rename the transaction functions
 (this branch uses sb/ref-transaction-unify-to-update.)

 Will be rerolled as a part of a larger series.

^ permalink raw reply	[relevance 1%]

* What's cooking in git.git (Sep 2014, #03; Thu, 11)
@ 2014-09-11 22:52  1% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2014-09-11 22:52 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

The third batch of topics have graduated to 'master'.  There are too
many topics waiting to be in 'next' but without comments and reviews
on the list, which is somewhat disturbing.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* br/http-init-fix (2014-08-21) 2 commits
  (merged to 'next' on 2014-09-03 at 6d42f5e)
 + http: style fixes for curl_multi_init error check
 + http.c: die if curl_*_init fails

 Code clean-up.


* br/imap-send-simplify-tunnel-child-process (2014-09-02) 3 commits
  (merged to 'next' on 2014-09-04 at a182987)
 + imap-send: simplify v_issue_imap_cmd() and get_cmd_result() using starts_with()
 + imap-send.c: imap_folder -> imap_server_conf.folder
 + git-imap-send: simplify tunnel construction

 Code clean-up.


* dt/cache-tree-repair (2014-09-03) 5 commits
  (merged to 'next' on 2014-09-03 at 1c8ff65)
 + cache-tree: do not try to use an invalidated subtree info to build a tree
  (merged to 'next' on 2014-08-26 at 6faccdb)
 + cache-tree: Write updated cache-tree after commit
 + cache-tree: subdirectory tests
 + test-dump-cache-tree: invalid trees are not errors
 + cache-tree: create/update cache-tree on checkout

 Add a few more places in "commit" and "checkout" that make sure
 that the cache-tree is fully populated in the index.


* et/spell-poll-infinite-with-minus-one-only (2014-08-22) 1 commit
  (merged to 'next' on 2014-09-03 at 5be5957)
 + upload-pack: keep poll(2)'s timeout to -1

 We used to pass -1000 to poll(2), expecting it to also mean "no
 timeout", which should be spelled as -1.


* jk/contrib-subtree-make-all (2014-08-18) 1 commit
  (merged to 'next' on 2014-09-03 at 919d889)
 + subtree: make "all" default target of Makefile


* jk/fast-import-fixes (2014-08-25) 2 commits
  (merged to 'next' on 2014-09-04 at 74838e5)
 + fast-import: fix buffer overflow in dump_tags
 + fast-import: clean up pack_data pointer in end_packfile

 With sufficiently long refnames, fast-import could have overflown
 an on-stack buffer.


* jk/make-simplify-dependencies (2014-08-26) 3 commits
  (merged to 'next' on 2014-09-03 at 820a600)
 + Makefile: drop CHECK_HEADER_DEPENDENCIES code
 + Makefile: use `find` to determine static header dependencies
 + i18n: treat "make pot" as an explicitly-invoked target

 Admit that keeping LIB_H up-to-date, only for those that do not use
 the automatically generated dependencies, is a losing battle, and
 make it conservative by making everything depend on anything.


* jk/name-decoration-alloc (2014-08-27) 3 commits
  (merged to 'next' on 2014-09-04 at 05f0d29)
 + log-tree: use FLEX_ARRAY in name_decoration
 + log-tree: make name_decoration hash static
 + log-tree: make add_name_decoration a public function

 The API to allocate the structure to keep track of commit
 decoration was cumbersome to use, inviting lazy code to
 overallocate memory.


* jk/prune-top-level-refs-after-packing (2014-08-25) 1 commit
  (merged to 'next' on 2014-09-04 at bfe3873)
 + pack-refs: prune top-level refs like "refs/foo"

 After "pack-refs --prune" packed refs at the top-level, it failed
 to prune them.


* jn/unpack-trees-checkout-m-carry-deletion (2014-08-25) 3 commits
  (merged to 'next' on 2014-09-04 at e15803a)
 + checkout -m: attempt merge when deletion of path was staged
 + unpack-trees: use 'cuddled' style for if-else cascade
 + unpack-trees: simplify 'all other failures' case

 "git checkout -m" did not switch to another branch while carrying
 the local changes forward when a path was deleted from the index.


* mm/discourage-commit-a-to-finish-conflict-resolution (2014-08-28) 1 commit
  (merged to 'next' on 2014-09-03 at e3f872f)
 + merge, pull: stop advising 'commit -a' in case of conflict


* nd/fetch-pass-quiet-to-gc-child-process (2014-08-18) 2 commits
  (merged to 'next' on 2014-09-04 at 028cd42)
 + fetch: silence git-gc if --quiet is given
 + fetch: convert argv_gc_auto to struct argv_array

 Progress output from "git gc --auto" was visible in "git fetch -q".


* nd/large-blobs (2014-08-18) 5 commits
  (merged to 'next' on 2014-09-04 at 16d7c62)
 + diff: shortcut for diff'ing two binary SHA-1 objects
 + diff --stat: mark any file larger than core.bigfilethreshold binary
 + diff.c: allow to pass more flags to diff_populate_filespec
 + sha1_file.c: do not die failing to malloc in unpack_compressed_entry
 + wrapper.c: introduce gentle xmallocz that does not die()

 Teach a few codepaths to punt (instead of dying) when large blobs
 that would not fit in core are involved in the operation.


* nd/mv-code-cleaning (2014-09-03) 8 commits
  (merged to 'next' on 2014-09-03 at 4315447)
 + mv: no SP between function name and the first opening parenthese
 + mv: combine two if(s)
 + mv: unindent one level for directory move code
 + mv: move index search code out
 + mv: remove an "if" that's always true
 + mv: split submodule move preparation code out
 + mv: flatten error handling code block
 + mv: mark strings for translations

 Code clean-up.


* rs/child-process-init (2014-08-20) 4 commits
  (merged to 'next' on 2014-09-03 at c17c06c)
 + run-command: inline prepare_run_command_v_opt()
 + run-command: call run_command_v_opt_cd_env() instead of duplicating it
 + run-command: introduce child_process_init()
 + run-command: introduce CHILD_PROCESS_INIT

 Code clean-up.


* rs/list-optim (2014-08-25) 2 commits
  (merged to 'next' on 2014-09-04 at eecaf99)
 + walker: avoid quadratic list insertion in mark_complete
 + sha1_name: avoid quadratic list insertion in handle_one_ref

 Fix a couple of "accumulate into a sorted list" to "accumulate and
 then sort the list".


* rs/ref-transaction-1 (2014-09-03) 22 commits
  (merged to 'next' on 2014-09-03 at 68e20b8)
 + update-ref --stdin: pass transaction around explicitly
 + update-ref --stdin: narrow scope of err strbuf
 + refs.c: make delete_ref use a transaction
 + refs.c: make prune_ref use a transaction to delete the ref
 + refs.c: remove lock_ref_sha1
 + refs.c: remove the update_ref_write function
 + refs.c: remove the update_ref_lock function
 + refs.c: make lock_ref_sha1 static
 + walker.c: use ref transaction for ref updates
 + fast-import.c: use a ref transaction when dumping tags
 + receive-pack.c: use a reference transaction for updating the refs
 + refs.c: change update_ref to use a transaction
 + branch.c: use ref transaction for all ref updates
 + fast-import.c: change update_branch to use ref transactions
 + sequencer.c: use ref transactions for all ref updates
 + commit.c: use ref transactions for updates
 + replace.c: use the ref transaction functions for updates
 + tag.c: use ref transactions when doing updates
 + refs.c: add transaction.status and track OPEN/CLOSED
 + refs.c: make ref_transaction_begin take an err argument
 + refs.c: update ref_transaction_delete to check for error and return status
 + refs.c: change ref_transaction_create to do error checking and return status
 (this branch is used by rs/ref-transaction, rs/ref-transaction-multi, rs/ref-transaction-reflog and rs/ref-transaction-rename.)

 The second batch of the transactional ref update series.


* ta/config-set-1 (2014-08-07) 8 commits
  (merged to 'next' on 2014-09-03 at 184b2ef)
 + add tests for `git_config_get_string_const()`
 + add a test for semantic errors in config files
 + rewrite git_config() to use the config-set API
 + config: add `git_die_config()` to the config-set API
 + change `git_config()` return value to void
 + add line number and file name info to `config_set`
 + config.c: fix accuracy of line number in errors
 + config.c: mark error and warnings strings for translation
 (this branch is used by ta/config-set-2.)

 Use the new caching config-set API in git_config() calls.


* ta/config-set-2 (2014-08-13) 15 commits
  (merged to 'next' on 2014-09-03 at f2eff02)
 + builtin/apply.c: replace `git_config()` with `git_config_get_string_const()`
 + merge-recursive.c: replace `git_config()` with `git_config_get_int()`
 + ll-merge.c: refactor `read_merge_config()` to use `git_config_string()`
 + fast-import.c: replace `git_config()` with `git_config_get_*()` family
 + branch.c: replace `git_config()` with `git_config_get_string()
 + alias.c: replace `git_config()` with `git_config_get_string()`
 + imap-send.c: replace `git_config()` with `git_config_get_*()` family
 + pager.c: replace `git_config()` with `git_config_get_value()`
 + builtin/gc.c: replace `git_config()` with `git_config_get_*()` family
 + rerere.c: replace `git_config()` with `git_config_get_*()` family
 + fetchpack.c: replace `git_config()` with `git_config_get_*()` family
 + archive.c: replace `git_config()` with `git_config_get_bool()` family
 + read-cache.c: replace `git_config()` with `git_config_get_*()` family
 + http-backend.c: replace `git_config()` with `git_config_get_bool()` family
 + daemon.c: replace `git_config()` with `git_config_get_bool()` family
 (this branch uses ta/config-set-1.)

 Update git_config() users with callback functions for a very narrow
 scope with calls to config-set API that lets us query a single
 variable.

--------------------------------------------------
[New Topics]

* jc/hash-object (2014-09-11) 3 commits
 - hash-object: add --literally option
 - hash-object: pass 'write_object' as a flag
 - hash-object: reduce file-scope statics
 (this branch is used by jc/hash-object-fsck-tag.)

 "hash-object" learned a new "--literally" option to hash any random
 garbage into a loose object, to allow us to create a test data for
 mechanisms to catch corrupt objects.


* jc/hash-object-fsck-tag (2014-09-11) 2 commits
 - t1450: make sure fsck detects a malformed tagger line
 - Merge branch 'js/fsck-tag-validation' into HEAD
 (this branch uses jc/hash-object and js/fsck-tag-validation.)

 Using "hash-object --literally", test one of the new breakages
 js/fsck-tag-validation topic teaches "fsck" to catch is caught.


* jk/fsck-exit-code-fix (2014-09-10) 1 commit
 - fsck: exit with non-zero status upon error from fsck_obj()

 "git fsck" failed to report that it found corrupt objects via its
 exit status in some cases.

 Will merge to 'next'.


* js/fsck-tag-validation (2014-09-11) 6 commits
 - Make sure that index-pack --strict checks tag objects
 - Add regression tests for stricter tag fsck'ing
 - fsck: check tag objects' headers
 - Make sure fsck_commit_buffer() does not run out of the buffer
 - fsck_object(): allow passing object data separately from the object itself
 - Refactor type_from_string() to allow continuing after detecting an error
 (this branch is used by jc/hash-object-fsck-tag.)

 Teach "git fsck" to inspect the contents of annotated tag objects.

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* rs/ref-transaction-multi (2014-09-03) 7 commits
 - ### rs/ref-transaction-multi
 - refs.c: make the *_packed_refs functions static
 - refs.c: make repack_without_refs static
 - remote.c: use a transaction for deleting refs
 - refs.c: write updates to packed refs when a transaction has more than one ref
 - refs.c: move reflog updates into its own function
 - ### rs/ref-transaction-rename
 (this branch uses rs/ref-transaction, rs/ref-transaction-reflog and rs/ref-transaction-rename.)

 Follow-up on rs/ref-transaction series to use the packed-ref to
 achieve atomicity when multiple refs are involved.

 It appears that rs/ref-transaction series is being rerolled, so
 these will be rerolled as well.


* rs/ref-transaction-rename (2014-09-03) 6 commits
 - refs.c: rollback the lockfile before we die() in repack_without_refs
 - refs.c: update rename_ref to use a transaction
 - refs.c: use packed refs when deleting refs during a transaction
 - refs.c: return error instead of dying when locking fails during transaction
 - refs.c: allow passing raw git_committer_info as email to _update_reflog
 - ### rs/ref-transaction-reflog
 (this branch is used by rs/ref-transaction-multi; uses rs/ref-transaction and rs/ref-transaction-reflog.)

 Follow-up on rs/ref-transaction series to make renaming a ref
 transactional (i.e. "delete old and create new" should not leave
 an in-between state behind when it fails).

 It appears that rs/ref-transaction series is being rerolled, so
 these will be rerolled as well.


* rs/ref-transaction-reflog (2014-09-03) 16 commits
 - refs.c: allow deleting refs with a broken sha1
 - refs.c: remove lock_any_ref_for_update
 - refs.c: make unlock_ref/close_ref/commit_ref static
 - refs.c: rename log_ref_setup to create_reflog
 - reflog.c: use a reflog transaction when writing during expire
 - refs.c: allow multiple reflog updates during a single transaction
 - refs.c: only write reflog update if msg is non-NULL
 - refs.c: add a flag to allow reflog updates to truncate the log
 - refs.c: add a transaction function to append a reflog entry
 - lockfile.c: make hold_lock_file_for_append preserve meaningful errno
 - refs.c: add a function to append a reflog entry to a fd
 - refs.c: add a new update_type field to ref_update
 - refs.c: rename the transaction functions
 - refs.c: make ref_transaction_delete a wrapper for ref_transaction_update
 - refs.c: make ref_transaction_create a wrapper to ref_transaction_update
 - ### rs/ref-transaction
 (this branch is used by rs/ref-transaction-multi and rs/ref-transaction-rename; uses rs/ref-transaction.)

 Cover updates to reflog with the same transaction mechanism as used
 for reflog manipulations.

 It appears that rs/ref-transaction series is being rerolled, so
 these will be rerolled as well.


* rs/ref-transaction (2014-09-03) 13 commits
 - refs.c: fix handling of badly named refs
 - refs.c: make write_ref_sha1 static
 - fetch.c: change s_update_ref to use a ref transaction
 - refs.c: propagate any errno==ENOTDIR from _commit back to the callers
 - refs.c: pass a skip list to name_conflict_fn
 - refs.c: call lock_ref_sha1_basic directly from commit
 - refs.c: move the check for valid refname to lock_ref_sha1_basic
 - refs.c: pass NULL as *flags to read_ref_full
 - refs.c: pass the ref log message to _create/delete/update instead of _commit
 - refs.c: add an err argument to delete_ref_loose
 - wrapper.c: add a new function unlink_or_msg
 - wrapper.c: simplify warn_if_unremovable
 - ### rs/ref-transaction-1
 (this branch is used by rs/ref-transaction-multi, rs/ref-transaction-reflog and rs/ref-transaction-rename.)

 Rerolled and was asked to wait.  Seems to break "git remote rm".


* hv/submodule-config (2014-06-30) 4 commits
 - do not die on error of parsing fetchrecursesubmodules option
 - use new config API for worktree configurations of submodules
 - extract functions for submodule config set and lookup
 - implement submodule config cache for lookup of submodule names

 Kicked back to 'pu' per request ($gmane/255610).


* jt/timer-settime (2014-08-29) 9 commits
 - use timer_settime() for new platforms
 - autoconf: check for timer_settime()
 - autoconf: check for struct itimerspec
 - autoconf: check for struct sigevent
 - autoconf: check for struct timespec
 - autoconf: check for timer_t
 - autoconf: check for setitimer()
 - autoconf: check for struct itimerval
 - git-compat-util.h: add missing semicolon after struct itimerval

 Reviewed, discussed and wanting for a reroll.


* jk/pack-bitmap (2014-08-04) 1 commit
 - pack-bitmap: do not use gcc packed attribute

 Hold, waiting for Karsten's replacement.


* cb/mergetool-difftool (2014-07-21) 2 commits
 - difftool: don't assume that default sh is sane
 - mergetool: don't require a work tree for --tool-help

 Update the way the "difftool --help" shows the help message that is
 shared with the "mergetool" to reduce one shell dependency.

 Will be rerolled.


* rr/mergetool-temporary-filename-tweak (2014-08-21) 1 commit
 - Allow the user to change the temporary file name for mergetool

 Needs rerolling (new paragraph in doc seems to be in a wrong place)


* jk/tag-contains (2014-06-30) 8 commits
 . perf: add tests for tag --contains
 . tag: use commit_contains
 . commit: provide a fast multi-tip contains function
 . string-list: add pos to iterator callback
 . add functions for memory-efficient bitmaps
 . paint_down_to_common: use prio_queue
 . tag: factor out decision to stream tags
 . tag: allow --sort with -n

 Expecting a reroll.


* ab/add-interactive-show-diff-func-name (2014-05-12) 2 commits
 - SQUASH??? git-add--interactive: Preserve diff heading when splitting hunks
 - git-add--interactive: Preserve diff heading when splitting hunks

 Waiting for a reroll.


* jn/gitweb-utf8-in-links (2014-05-27) 1 commit
 - gitweb: Harden UTF-8 handling in generated links

 $gmane/250758?


* rh/prompt-tests (2014-06-05) 11 commits
 - t9904: new __git_ps1 tests for Zsh
 - test-lib: make it possible to override how test code is eval'd
 - lib-prompt-tests.sh: add variable for string that encodes percent in PS1
 - lib-prompt-tests.sh: put all tests inside a function
 - t9903: move prompt tests to a new lib-prompt-tests.sh file
 - t9903: move PS1 color code variable definitions to lib-bash.sh
 - t9903: include "Bash" in test names via new $shellname var
 - t9903: run pc mode tests again with PS1 expansion disabled
 - t9903: move test name prefix to a separate variable
 - t9903: put the Bash pc mode prompt test cases in a function
 - t9903: remove Zsh test from the suite of Bash prompt tests

 Expecting a reroll to limit the damage to test_eval_; also reported
 to be broken with older zsh that are still in the field ($gmane/251231).


* ss/userdiff-update-csharp-java (2014-06-02) 2 commits
 - userdiff: support Java try keyword
 - userdiff: support C# async methods and correct C# keywords

 Reviews sent; waiting for a response.


* bg/rebase-off-of-previous-branch (2014-04-16) 1 commit
 - git-rebase: print name of rev when using shorthand

 Teach "git rebase -" to report the concrete name of the branch
 (i.e. the previous one).

 But it stops short and does not do the same for "git rebase @{-1}".
 Expecting a reroll.


* jk/makefile (2014-02-05) 16 commits
 . FIXUP
 . move LESS/LV pager environment to Makefile
 . Makefile: teach scripts to include make variables
 . FIXUP
 . Makefile: auto-build C strings from make variables
 . Makefile: drop *_SQ variables
 . FIXUP
 . Makefile: add c-quote helper function
 . Makefile: introduce sq function for shell-quoting
 . Makefile: always create files via make-var
 . Makefile: store GIT-* sentinel files in MAKE/
 . Makefile: prefer printf to echo for GIT-*
 . Makefile: use tempfile/mv strategy for GIT-*
 . Makefile: introduce make-var helper function
 . Makefile: fix git-instaweb dependency on gitweb
 . Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS

 Simplify the Makefile rules and macros that exist primarily for
 quoting purposes, and make it easier to robustly express the
 dependency rules.

 Expecting a reroll.


* po/everyday-doc (2014-01-27) 1 commit
 - Make 'git help everyday' work

 This may make the said command to emit something, but the source is
 not meant to be formatted into a manual pages to begin with, and
 also its contents are a bit stale.  It may be a good first step in
 the right direction, but needs more work to at least get the
 mark-up right before public consumption.

 Waiting for a reroll (thread ending at $gmane/254746)


* rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
 - merge: drop unused arg from abort_commit method signature
 - merge: make prepare_to_commit responsible for write_merge_state
 - t7505: ensure cleanup after hook blocks merge
 - t7505: add missing &&

 Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
 run during "git merge".  The log message stresses too much on one
 hook, prepare-commit-msg, but it would equally apply to other hooks
 like post-merge, I think.

 Waiting for a reroll.


* jc/graph-post-root-gap (2013-12-30) 3 commits
 - WIP: document what we want at the end
 - graph: remove unused code a bit
 - graph: stuff the current commit into graph->columns[]

 This was primarily a RFH ($gmane/239580).


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


* jc/show-branch (2014-03-24) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit before sending it out.

--------------------------------------------------
[Cooking]

* as/calloc-takes-nmemb-then-size (2014-09-03) 1 commit
 - calloc() and xcalloc() takes nmemb and then size

 Code clean-up.

 Will merge to 'next'.


* tb/complete-diff-ignore-blank-lines (2014-09-03) 1 commit
 - completion: Add --ignore-blank-lines for diff

 Will merge to 'next'.


* jc/parseopt-verify-short-name (2014-09-04) 1 commit
 - parse-options: detect attempt to add a duplicate short option name

 Add checks for a common programming mistake to assign the same
 short option name to two separate options to help developers.

 Will merge to 'next'.


* rs/more-uses-of-skip-prefix (2014-09-02) 2 commits
 - pack-write: simplify index_pack_lockfile using skip_prefix() and xstrfmt()
 - connect: simplify check_ref() using skip_prefix() and starts_with()

 Code clean-up.

 Will merge to 'next'.


* kb/perf-trace (2014-09-08) 1 commit
 - trace: correct trace_strbuf() parameter type for !HAVE_VARIADIC_MACROS

 Compilation fix for some compilers.

 Will merge to 'next'.


* rs/export-strbuf-addchars (2014-09-08) 2 commits
 - strbuf: use strbuf_addchars() for adding a char multiple times
 - strbuf: export strbuf_addchars()

 Code clean-up.

 Will merge to 'next'.


* tr/remerge-diff (2014-09-08) 8 commits
 - log --remerge-diff: show what the conflict resolution changed
 - name-hash: allow dir hashing even when !ignore_case
 - merge-recursive: allow storing conflict hunks in index
 - merge_diff_mode: fold all merge diff variants into an enum
 - combine-diff: do not pass revs->dense_combined_merges redundantly
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 Review comments sent.


* mh/lockfile (2014-09-11) 33 commits
 - lockfile.c: store absolute path
 - Extract a function commit_lock_file_to()
 - trim_last_path_elm(): replace last_path_elm()
 - resolve_symlink(): take a strbuf parameter
 - resolve_symlink(): use a strbuf for internal scratch space
 - Change lock_file::filename into a strbuf
 - commit_lock_file(): use a strbuf to manage temporary space
 - try_merge_strategy(): use a statically-allocated lock_file object
 - try_merge_strategy(): remove redundant lock_file allocation
 - struct lock_file: declare some fields volatile
 - lockfile: avoid transitory invalid states
 - git_config_set_multivar_in_file(): avoid call to rollback_lock_file()
 - dump_marks(): remove a redundant call to rollback_lock_file()
 - api-lockfile: document edge cases
 - commit_lock_file(): rollback lock file on failure to rename
 - commit_lock_file(): if close fails, roll back
 - commit_lock_file(): die() if called for unlocked lockfile object
 - commit_lock_file(): inline temporary variable
 - remove_lock_file(): call rollback_lock_file()
 - lock_file(): exit early if lockfile cannot be opened
 - write_packed_entry_fn(): convert cb_data into a (const int *)
 - prepare_index(): declare return value to be (const char *)
 - delete_ref_loose(): don't muck around in the lock_file's filename
 - cache.h: define constants LOCK_SUFFIX and LOCK_SUFFIX_LEN
 - lockfile.c: document the various states of lock_file objects
 - lock_file(): always add lock_file object to lock_file_list
 - hold_lock_file_for_append(): release lock on errors
 - lockfile: unlock file if lockfile permissions cannot be adjusted
 - rollback_lock_file(): set fd to -1
 - rollback_lock_file(): exit early if lock is not active
 - rollback_lock_file(): do not clear filename redundantly
 - api-lockfile: expand the documentation
 - unable_to_lock_die(): rename function from unable_to_lock_index_die()

 Rerolled and reviews starting.


* nd/multiple-work-trees (2014-09-03) 32 commits
 . t2025: add a test to make sure grafts is working from a linked checkout
 . checkout: don't require a work tree when checking out into a new one
 . git_path(): keep "info/sparse-checkout" per work-tree
 . count-objects: report unused files in $GIT_DIR/repos/...
 . gc: support prune --repos
 . gc: factor out gc.pruneexpire parsing code
 . gc: style change -- no SP before closing parenthesis
 . prune: strategies for linked checkouts
 . checkout: reject if the branch is already checked out elsewhere
 . checkout: clean up half-prepared directories in --to mode
 . checkout: support checking out into a new working directory
 . use new wrapper write_file() for simple file writing
 . wrapper.c: wrapper to open a file, fprintf then close
 . setup.c: support multi-checkout repo setup
 . setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 . setup.c: convert check_repository_format_gently to use strbuf
 . setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 . setup.c: convert is_git_directory() to use strbuf
 . git-stash: avoid hardcoding $GIT_DIR/logs/....
 . *.sh: avoid hardcoding $GIT_DIR/hooks/...
 . git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 . $GIT_COMMON_DIR: a new environment variable
 . commit: use SEQ_DIR instead of hardcoding "sequencer"
 . fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 . reflog: avoid constructing .lock path with git_path
 . *.sh: respect $GIT_INDEX_FILE
 . git_path(): be aware of file relocation in $GIT_DIR
 . path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 . path.c: rename vsnpath() to do_git_path()
 . git_snpath(): retire and replace with strbuf_git_path()
 . path.c: make get_pathname() call sites return const char *
 . path.c: make get_pathname() return strbuf instead of static buffer

 A replacement for contrib/workdir/git-new-workdir that does not
 rely on symbolic links and make sharing of objects and refs safer
 by making the borrowee and borrowers aware of each other.

 Re-reroll posted but haven't had a chance to pick it up yet.
 The series already received a few comments.


* cc/interpret-trailers (2014-05-28) 11 commits
 - Documentation: add documentation for 'git interpret-trailers'
 - trailer: add tests for commands in config file
 - trailer: execute command from 'trailer.<name>.command'
 - trailer: add tests for "git interpret-trailers"
 - trailer: add interpret-trailers command
 - trailer: put all the processing together and print
 - trailer: parse trailers from file or stdin
 - trailer: process command line trailer arguments
 - trailer: read and process config information
 - trailer: process trailers from input message and arguments
 - trailer: add data structures and basic functions

 A new filter to programatically edit the tail end of the commit log
 messages.

 Comments & reviews?


* bb/date-iso-strict (2014-08-29) 1 commit
 - pretty: provide a strict ISO 8601 date format

 "log --date=iso" uses a slight variant of ISO 8601 format that is
 made more human readable.  A new "--date=iso-strict" option gives
 datetime output that is more strictly conformant.

 Will merge to 'next'.


* jk/commit-author-parsing (2014-08-29) 6 commits
 - determine_author_info(): copy getenv output
 - determine_author_info(): reuse parsing functions
 - date: use strbufs in date-formatting functions
 - record_author_date(): use find_commit_header()
 - record_author_date(): fix memory leak on malformed commit
 - commit: provide a function to find a header in a buffer

 Code clean-up.

 Will merge to 'next'.


* jk/fast-export-anonymize (2014-08-28) 2 commits
 - docs/fast-export: explain --anonymize more completely
 - teach fast-export an --anonymize option

 Sometimes users want to report a bug they experience on their
 repository, but they are not at liberty to share the contents of
 the repository.  "fast-export" was taught an "--anonymize" option
 to replace blob contents, names of people and paths and log
 messages with bland and simple strings to help them.

 Will merge to 'next'.


* jk/index-pack-threading-races (2014-08-29) 1 commit
 - index-pack: fix race condition with duplicate bases

 When receiving an invalid pack stream that records the same object
 twice, multiple threads got confused due to a race.  We should
 reject or correct such a stream upon receiving, but that will be a
 larger change.

 Will merge to 'next'.


* jk/send-pack-many-refspecs (2014-08-26) 1 commit
 - send-pack: take refspecs over stdin

 The number of refs that can be pushed at once over smart HTTP was
 limited by the command line length.  The limitation has been lifted
 by passing these refs from the standard input of send-pack.

 Will merge to 'next'.


* jp/index-with-corrupt-stages (2014-08-29) 2 commits
 - read_index_unmerged(): remove unnecessary loop index adjustment
 - read_index_from(): catch out of order entries when reading an index file

 A broken reimplementation of Git could write an invalid index that
 records both stage #0 and higher stage entries for the same path.
 Notice and reject such an index, as there is no sensible fallback
 (we do not know if the broken tool wanted to resolve and forgot to
 remove higher stage entries, or if it wanted to unresolve and
 forgot to remove the stage#0 entry).

 Will merge to 'next'.


* mb/build-contrib-svn-fe (2014-08-28) 1 commit
 - contrib/svn-fe: fix Makefile

 Will merge to 'next'.


* mb/fast-import-delete-root (2014-08-29) 2 commits
 - fast-import: fix segfault in store_tree()
 - t9300: test filedelete command

 An attempt to remove the entire tree in the "git fast-import" input
 stream caused it to misbehave.

 Will merge to 'next'.


* ah/grammofix (2014-09-02) 1 commit
 - grammofix in user-facing messages

 Will merge to 'next'.


* da/styles (2014-09-02) 1 commit
 - stylefix: asterisks stick to the variable, not the type

 Will merge to 'next'.


* da/use-rev-parse-verify-quiet-in-stash (2014-09-09) 1 commit
 - stash: prefer --quiet over shell redirection of the standard error stream

 Will merge to 'next'.


* mk/reachable-protect-detached-head (2014-09-03) 1 commit
 - reachable.c: add HEAD to reachability starting commits

 Will merge to 'next'.


* rs/merge-tree-simplify (2014-09-02) 1 commit
 - merge-tree: remove unused df_conflict arguments

 Code clean-up.

 Will merge to 'next'.


* rs/simplify-config-include (2014-09-02) 1 commit
 - config: simplify git_config_include()

 Code clean-up.

 Will merge to 'next'.


* rs/simplify-http-walker (2014-09-02) 1 commit
 - http-walker: simplify process_alternates_response() using strbuf

 Code clean-up.

 Will merge to 'next'.


* tb/crlf-tests (2014-09-02) 3 commits
 - MinGW: update tests to handle a native eol of crlf
 - Makefile: propagate NATIVE_CRLF to C
 - t0027: Tests for core.eol=native, eol=lf, eol=crlf

 Will merge to 'next'.


* ta/config-add-to-empty-or-true-fix (2014-08-18) 1 commit
  (merged to 'next' on 2014-08-29 at d219212)
 + make config --add behave correctly for empty and NULL values

 We may want to undo the "a^" bit along the lines of $gmane/255445


* sp/stream-clean-filter (2014-08-28) 6 commits
 - convert: stream from fd to required clean filter to reduce used address space
 - copy_fd(): do not close the input file descriptor
 - mmap_limit: introduce GIT_MMAP_LIMIT to allow testing expected mmap size
 - memory_limit: use git_env_ulong() to parse GIT_ALLOC_LIMIT
 - config.c: add git_env_ulong() to parse environment variable
 - convert: drop arguments other than 'path' from would_convert_to_git()

 Rerolled.  Comments & reviews?


* jc/push-cert (2014-09-08) 22 commits
 - signed push: allow stale nonce in stateless mode
 - signed push: fortify against replay attacks
 - signed push: add "pushee" header to push certificate
 - signed push: remove duplicated protocol info
 - send-pack: send feature request on push-cert packet
 - receive-pack: GPG-validate push certificates
 - push: the beginning of "git push --signed"
 - pack-protocol doc: typofix for PKT-LINE
 - gpg-interface: move parse_signature() to where it should be
 - gpg-interface: move parse_gpg_output() to where it should be
 - send-pack: clarify that cmds_sent is a boolean
 - send-pack: refactor inspecting and resetting status and sending commands
 - send-pack: rename "new_refs" to "need_pack_data"
 - receive-pack: factor out capability string generation
 - send-pack: factor out capability string generation
 - send-pack: always send capabilities
 - send-pack: refactor decision to send update per ref
 - send-pack: move REF_STATUS_REJECT_NODELETE logic a bit higher
 - receive-pack: factor out queueing of command
 - receive-pack: do not reuse old_sha1[] for other things
 - receive-pack: parse feature request a bit earlier
 - receive-pack: do not overallocate command structure

 Allow "git push" request to be signed, so that it can be verified
 audited, using the GPG signature of the person who pushed, that the
 tips of branches at a public repository really point the commits
 the pusher wanted to, without having to "trust" the server.

 Comments & reviews?


* jc/test-lazy-prereq (2014-06-13) 1 commit
 - tests: drop GIT_*_TIMING_TESTS environment variable support

 Test-script clean-up.

 Comments & reviews?
 Otherwise will merge to 'next'.


* mt/patch-id-stable (2014-06-10) 1 commit
 - patch-id: change default to stable

 Teaches "git patch-id" to compute the patch ID that does not change
 when the files in a single patch is reordered. As this new algorithm
 is backward incompatible, the last bit to flip it to be the default
 is left out of 'master' for now.

 Nobody seems to be jumping up & down requesting this last step.
 Perhaps will drop.

^ permalink raw reply	[relevance 1%]

* [PATCH v3 23/26] file-watcher: tests for the daemon
  @ 2014-02-03  4:29  4%   ` Nguyễn Thái Ngọc Duy
  0 siblings, 0 replies; 162+ results
From: Nguyễn Thái Ngọc Duy @ 2014-02-03  4:29 UTC (permalink / raw)
  To: git; +Cc: Nguyễn Thái Ngọc Duy

test-file-watcher is a simple chat program to talk to file
watcher. Typically you would write something like this

  cat >expect <<EOF
  # send "hello". Oh and this is a comment!
  <hello
  # Wait for reply and print to stdout.
  # test-file-watcher does not care about anything after '>'
  >hello
  <index foo bar
  >ok
  EOF
  test-file-watcher . <expect >actual

and test-file-watcher will execute the commands and get responses. If
all go well, "actual" should be the same as "expect". '<' and '>'
denote send and receive packets respectively. '<<' and '>>' can be
used to send and receive a list of NUL-terminated paths.

$GIT_TEST_WATCHER enables a few more commands for testing purposes.
The most important one is 'test-mode' where system inotify is taken
out and inotify events could be injected via test-file-watcher.

There are two debug commands in file-watcher that's not used by the
test suite, but would help debugging: setenv and log. They can be used
to turn on GIT_TRACE_PACKET then any "log" command will show, which
functions as barrier between events file watcher.

GIT_TRACE_WATCHER can also be enabled (dynamically or at startup) to
track inotify events.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 .gitignore                       |   1 +
 Makefile                         |   1 +
 file-watcher.c                   | 181 ++++++++++++++++++-
 t/t7513-file-watcher.sh (new +x) | 382 +++++++++++++++++++++++++++++++++++++++
 test-file-watcher.c (new)        |  96 ++++++++++
 5 files changed, 657 insertions(+), 4 deletions(-)
 create mode 100755 t/t7513-file-watcher.sh
 create mode 100644 test-file-watcher.c

diff --git a/.gitignore b/.gitignore
index 12c78f0..277f929 100644
--- a/.gitignore
+++ b/.gitignore
@@ -181,6 +181,7 @@
 /test-date
 /test-delta
 /test-dump-cache-tree
+/test-file-watcher
 /test-scrap-cache-tree
 /test-genrandom
 /test-index-version
diff --git a/Makefile b/Makefile
index 1c4d659..f0dc2cc 100644
--- a/Makefile
+++ b/Makefile
@@ -555,6 +555,7 @@ TEST_PROGRAMS_NEED_X += test-ctype
 TEST_PROGRAMS_NEED_X += test-date
 TEST_PROGRAMS_NEED_X += test-delta
 TEST_PROGRAMS_NEED_X += test-dump-cache-tree
+TEST_PROGRAMS_NEED_X += test-file-watcher
 TEST_PROGRAMS_NEED_X += test-genrandom
 TEST_PROGRAMS_NEED_X += test-index-version
 TEST_PROGRAMS_NEED_X += test-line-buffer
diff --git a/file-watcher.c b/file-watcher.c
index 1e45b25..3ab0a11 100644
--- a/file-watcher.c
+++ b/file-watcher.c
@@ -65,7 +65,8 @@ struct connection {
 static struct connection **conns;
 static struct pollfd *pfd;
 static int conns_alloc, pfd_nr, pfd_alloc;
-static int inotify_fd;
+static int inotify_fd, test_mode;
+static int wd_counter = 1;
 
 /*
  * IN_DONT_FOLLOW does not matter now as we do not monitor
@@ -78,10 +79,19 @@ static struct dir *create_dir(struct dir *parent, const char *path,
 			      const char *basename)
 {
 	struct dir *d;
-	int wd = inotify_add_watch(inotify_fd, path, INOTIFY_MASKS);
+	int wd;
+	if (!test_mode)
+		wd = inotify_add_watch(inotify_fd, path, INOTIFY_MASKS);
+	else {
+		wd = wd_counter++;
+		if (wd > 8)
+			wd = -1;
+	}
 	if (wd < 0)
 		return NULL;
 
+	trace_printf_key("GIT_TRACE_WATCHER", "inotify: watch %d %s\n",
+			 wd, path);
 	d = xmalloc(sizeof(*d));
 	memset(d, 0, sizeof(*d));
 	d->wd = wd;
@@ -124,7 +134,9 @@ static void free_dir(struct dir *d, int topdown)
 	if (d->repo)
 		d->repo->root = NULL;
 	wds[d->wd] = NULL;
-	inotify_rm_watch(inotify_fd, d->wd);
+	if (!test_mode)
+		inotify_rm_watch(inotify_fd, d->wd);
+	trace_printf_key("GIT_TRACE_WATCHER", "inotify: unwatch %d\n", d->wd);
 	if (topdown) {
 		int i;
 		for (i = 0; i < d->nr_subdirs; i++)
@@ -265,6 +277,7 @@ static inline void queue_file_changed(struct file *f, struct strbuf *sb)
 	int len = sb->len;
 	strbuf_addf(sb, "%s%s", f->parent->parent ? "/" : "", f->name);
 	string_list_append(&f->repo->updated, sb->buf);
+	trace_printf_key("GIT_TRACE_WATCHER", "watcher: changed %s\n", sb->buf);
 	f->repo->updated_sorted = 0;
 	strbuf_setlen(sb, len);
 }
@@ -324,6 +337,10 @@ static int do_handle_inotify(const struct inotify_event *event)
 	struct dir *d;
 	int pos;
 
+	trace_printf_key("GIT_TRACE_WATCHER", "inotify: event %08x wd %d %s\n",
+			 event->mask, event->wd,
+			 event->len ? event->name : "N/A");
+
 	if (event->mask & (IN_Q_OVERFLOW | IN_UNMOUNT)) {
 		int i;
 		for (i = 0; i < nr_repos; i++)
@@ -385,6 +402,81 @@ static int handle_inotify(int fd)
 	return ret;
 }
 
+struct constant {
+	const char *name;
+	int value;
+};
+
+#define CONSTANT(x) { #x, x }
+static const struct constant inotify_masks[] = {
+	CONSTANT(IN_DELETE_SELF),
+	CONSTANT(IN_MOVE_SELF),
+	CONSTANT(IN_ATTRIB),
+	CONSTANT(IN_DELETE),
+	CONSTANT(IN_MODIFY),
+	CONSTANT(IN_MOVED_FROM),
+	CONSTANT(IN_MOVED_TO),
+	CONSTANT(IN_Q_OVERFLOW),
+	CONSTANT(IN_UNMOUNT),
+	{ NULL, 0 },
+};
+
+static void inject_inotify(const char *msg)
+{
+	char buf[sizeof(struct inotify_event) + NAME_MAX + 1];
+	struct inotify_event *event = (struct inotify_event *)buf;
+	char *end, *p;
+	int i;
+	memset(event, 0, sizeof(*event));
+	event->wd = strtol(msg, &end, 0);
+	if (*end++ != ' ')
+		die("expect a space after watch descriptor");
+	p = end;
+	end = strchrnul(p, ' ');
+	if (*end)
+		strcpy(event->name, end + 1);
+	while (p < end) {
+		char *sep = strchrnul(p, '|');
+		if (sep > end)
+			sep = end;
+		*sep = '\0';
+		for (i = 0; inotify_masks[i].name; i++)
+			if (!strcmp(inotify_masks[i].name, p))
+				break;
+		if (!inotify_masks[i].name)
+			die("unrecognize event mask %s", p);
+		event->mask |= inotify_masks[i].value;
+		p = sep + 1;
+	}
+	do_handle_inotify(event);
+}
+
+static void dump_watches(struct dir *d, struct strbuf *sb, struct strbuf *out)
+{
+	int i, len = sb->len;
+	strbuf_addstr(sb, d->name);
+	strbuf_addf(out, "%s %d%c", sb->buf[0] ? sb->buf : ".", d->wd, '\0');
+	if (d->name[0])
+		strbuf_addch(sb, '/');
+	for (i = 0; i < d->nr_subdirs; i++)
+		dump_watches(d->subdirs[i], sb, out);
+	for (i = 0; i < d->nr_files; i++)
+		strbuf_addf(out, "%s%s%c", sb->buf, d->files[i]->name, '\0');
+	strbuf_setlen(sb, len);
+}
+
+static void dump_changes(struct repository *repo, struct strbuf *sb)
+{
+	int i;
+	if (!repo->updated_sorted) {
+		sort_string_list(&repo->updated);
+		repo->updated_sorted = 1;
+	}
+	for (i = 0; i < repo->updated.nr; i++)
+		strbuf_add(sb, repo->updated.items[i].string,
+			   strlen(repo->updated.items[i].string) + 1);
+}
+
 static void get_changed_list(int conn_id)
 {
 	struct strbuf sb = STRBUF_INIT;
@@ -483,11 +575,13 @@ static void unchange(int conn_id, unsigned long size)
 			item = string_list_lookup(&repo->updated, p);
 			if (!item)
 				continue;
+			trace_printf_key("GIT_TRACE_WATCHER", "watcher: unchange %s\n", p);
 			unsorted_string_list_delete_item(&repo->updated,
 							 item - repo->updated.items, 0);
 		}
 		strbuf_release(&sb);
 	}
+	trace_printf_key("GIT_TRACE_WATCHER", "watcher: unchange complete\n");
 	memcpy(repo->index_signature, conn->new_index, 40);
 	/*
 	 * If other connections on this repo are in some sort of
@@ -540,6 +634,13 @@ static void reset_watches(struct repository *repo)
 
 static void reset_repo(struct repository *repo, ino_t inode)
 {
+	if (test_mode)
+		/*
+		 * test-mode is designed for single repo, we can
+		 * safely reset wd counter because all wd should be
+		 * deleted
+		 */
+		wd_counter = 1;
 	reset_watches(repo);
 	string_list_clear(&repo->updated, 0);
 	memcpy(repo->index_signature, invalid_signature, 40);
@@ -560,6 +661,7 @@ static int shutdown_connection(int id)
 	return 0;
 }
 
+static void cleanup(void);
 static int handle_command(int conn_id)
 {
 	int fd = conns[conn_id]->sock;
@@ -754,6 +856,71 @@ static int handle_command(int conn_id)
 		}
 		unchange(conn_id, n);
 	}
+
+	/*
+	 * Testing and debugging support
+	 */
+	else if (!strcmp(msg, "test-mode") && getenv("GIT_TEST_WATCHER")) {
+		test_mode = 1;
+		packet_write(fd, "test mode on");
+	}
+	else if (starts_with(msg, "setenv ")) {
+		/* useful for setting GIT_TRACE_WATCHER or GIT_TRACE_PACKET */
+		char *sep = strchr(msg + 7, ' ');
+		if (!sep) {
+			packet_write(fd, "error invalid setenv line %s", msg);
+			return shutdown_connection(conn_id);
+		}
+		*sep = '\0';
+		setenv(msg + 7, sep + 1, 1);
+	}
+	else if (starts_with(msg, "log ")) {
+		; /* do nothing, if GIT_TRACE_PACKET is on, it's already logged */
+	}
+	else if (!strcmp(msg, "die") && getenv("GIT_TEST_WATCHER")) {
+		/*
+		 * The client will wait for "see you" before it may
+		 * run another daemon with the same path. So there's
+		 * no racing on unlink() and listen() on the same
+		 * socket path.
+		 */
+		cleanup();
+		packet_write(fd, "see you");
+		close(fd);
+		exit(0);
+	}
+	else if (starts_with(msg, "dump ") && getenv("GIT_TEST_WATCHER")) {
+		struct strbuf sb = STRBUF_INIT;
+		struct strbuf out = STRBUF_INIT;
+		const char *reply = NULL;
+		if (!strcmp(msg + 5, "watches")) {
+			if (conns[conn_id]->repo) {
+				if (conns[conn_id]->repo->root)
+					dump_watches(conns[conn_id]->repo->root, &sb, &out);
+			} else {
+				int i;
+				for (i = 0; i < nr_repos; i++) {
+					strbuf_addf(&out, "%s%c", repos[i]->work_tree, '\0');
+					if (repos[i]->root)
+						dump_watches(repos[i]->root, &sb, &out);
+					strbuf_reset(&out);
+					strbuf_reset(&sb);
+				}
+			}
+			reply = "watching";
+		} else if (!strcmp(msg + 5, "changes")) {
+			dump_changes(conns[conn_id]->repo, &out);
+			reply = "changed";
+		}
+		packet_write(fd, "%s %d", reply, (int)out.len);
+		if (out.len)
+			write_in_full(fd, out.buf, out.len);
+		strbuf_release(&out);
+		strbuf_release(&sb);
+	}
+	else if (starts_with(msg, "inotify ") && getenv("GIT_TEST_WATCHER")) {
+		inject_inotify(msg + 8);
+	}
 	else {
 		packet_write(fd, "error unrecognized command %s", msg);
 		return shutdown_connection(conn_id);
@@ -848,11 +1015,13 @@ int main(int argc, const char **argv)
 {
 	struct strbuf sb = STRBUF_INIT;
 	int i, new_nr, fd, quit = 0, nr_common;
-	int daemon = 0;
+	int daemon = 0, check_support = 0;
 	time_t last_checked;
 	struct option options[] = {
 		OPT_BOOL(0, "detach", &daemon,
 			 N_("run in background")),
+		OPT_BOOL(0, "check-support", &check_support,
+			 N_("return zero file watcher is available")),
 		OPT_END()
 	};
 
@@ -865,6 +1034,10 @@ int main(int argc, const char **argv)
 
 	argc = parse_options(argc, argv, NULL, options,
 			     file_watcher_usage, 0);
+
+	if (check_support)
+		return 0;
+
 	if (argc < 1)
 		die(_("socket path missing"));
 	else if (argc > 1)
diff --git a/t/t7513-file-watcher.sh b/t/t7513-file-watcher.sh
new file mode 100755
index 0000000..bf64fc4
--- /dev/null
+++ b/t/t7513-file-watcher.sh
@@ -0,0 +1,382 @@
+#!/bin/sh
+
+test_description='File watcher daemon tests'
+
+. ./test-lib.sh
+
+if git file-watcher --check-support && test_have_prereq POSIXPERM; then
+	:				# good
+else
+	skip_all="file-watcher not supported on this system"
+	test_done
+fi
+
+kill_it() {
+	test-file-watcher "$1" <<EOF >/dev/null
+<die
+>see you
+EOF
+}
+
+GIT_TEST_WATCHER=1
+export GIT_TEST_WATCHER
+
+test_expect_success 'test-file-watcher can kill the daemon' '
+	chmod 700 . &&
+	git file-watcher --detach . &&
+	cat >expect <<EOF &&
+<die
+>see you
+EOF
+	test-file-watcher . >actual <expect &&
+	test_cmp expect actual &&
+	! test -S socket
+'
+
+test_expect_success 'exchange hello' '
+	git file-watcher --detach . &&
+	cat >expect <<EOF &&
+<hello
+>hello
+<die
+>see you
+EOF
+	test-file-watcher . >actual <expect &&
+	test_cmp expect actual
+'
+
+test_expect_success 'normal index sequence' '
+	git file-watcher --detach . &&
+	SIG=0123456789012345678901234567890123456789 &&
+	cat >expect <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+>inconsistent
+EOF
+	test-file-watcher . >actual <expect &&
+	test_cmp expect actual &&
+	cat >expect2 <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+# inconsistent again because new-index has not been issued yet
+>inconsistent
+<new-index $SIG
+<<unchange
+<<
+EOF
+	test-file-watcher . >actual2 <expect2 &&
+	test_cmp expect2 actual2 &&
+	cat >expect3 <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+>ok
+<die
+>see you
+EOF
+	test-file-watcher . >actual3 <expect3 &&
+	test_cmp expect3 actual3
+'
+
+test_expect_success 'unaccepted index: hello not sent' '
+	git file-watcher --detach . &&
+	SIG=0123456789012345678901234567890123456789 &&
+	cat >expect <<EOF &&
+<index $SIG $TRASH_DIRECTORY
+>error why did you not greet me? go away
+EOF
+	test-file-watcher . >actual <expect &&
+	test_cmp expect actual &&
+	kill_it .
+'
+
+test_expect_success 'unaccepted index: signature too short' '
+	git file-watcher --detach . &&
+	cat >expect <<EOF &&
+<hello
+>hello
+<index 1234 $TRASH_DIRECTORY
+>error invalid index line index 1234 $TRASH_DIRECTORY
+EOF
+	test-file-watcher . >actual <expect &&
+	test_cmp expect actual &&
+	kill_it .
+'
+
+test_expect_success 'unaccepted index: worktree unavailable' '
+	git file-watcher --detach . &&
+	SIG=0123456789012345678901234567890123456789 &&
+	cat >expect <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY/non-existent
+>error work tree does not exist: No such file or directory
+EOF
+	test-file-watcher . >actual <expect &&
+	test_cmp expect actual &&
+	kill_it .
+'
+
+test_expect_success 'watch foo and abc/bar' '
+	git file-watcher --detach . &&
+	SIG=0123456789012345678901234567890123456789 &&
+	cat >expect <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+>inconsistent
+<test-mode
+>test mode on
+<<watch
+<<foo
+<<abc/bar
+<<
+>watched 2
+<dump watches
+>>watching
+>>. 1
+>>abc 2
+>>abc/bar
+>>foo
+<new-index $SIG
+<<unchange
+<<
+EOF
+	test-file-watcher . >actual <expect &&
+	test_cmp expect actual
+'
+
+test_expect_success 'modify abc/bar' '
+	SIG=0123456789012345678901234567890123456789 &&
+	cat >expect <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+>ok
+<inotify 2 IN_MODIFY bar
+<dump watches
+>>watching
+>>. 1
+>>foo
+<dump changes
+>>changed
+>>abc/bar
+<die
+>see you
+EOF
+	test-file-watcher . >actual <expect &&
+	test_cmp expect actual
+'
+
+test_expect_success 'delete abc makes abc/bar changed' '
+	git file-watcher --detach . &&
+	SIG=0123456789012345678901234567890123456789 &&
+	cat >expect <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+>inconsistent
+<test-mode
+>test mode on
+<<watch
+<<foo/abc/bar
+<<
+>watched 1
+<dump watches
+>>watching
+>>. 1
+>>foo 2
+>>foo/abc 3
+>>foo/abc/bar
+<inotify 2 IN_DELETE_SELF
+<dump watches
+>>watching
+<dump changes
+>>changed
+>>foo/abc/bar
+<new-index $SIG
+<<unchange
+<<
+EOF
+	test-file-watcher . >actual <expect &&
+	test_cmp expect actual
+'
+
+test_expect_success 'get changed list' '
+	SIG=0123456789012345678901234567890123456789 &&
+	cat >expect <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+>ok
+<get-changed
+>>changed
+>>foo/abc/bar
+EOF
+	test-file-watcher . >actual <expect &&
+	test_cmp expect actual
+'
+
+test_expect_success 'incomplete new-index request' '
+	SIG=0123456789012345678901234567890123456789 &&
+	SIG2=9123456789012345678901234567890123456780 &&
+	cat >expect <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+>ok
+<new-index $SIG2
+<dump changes
+>>changed
+>>foo/abc/bar
+EOF
+	test-file-watcher . >actual <expect &&
+	test_cmp expect actual
+'
+
+test_expect_success 'delete abc/bar from changed list' '
+	SIG=0123456789012345678901234567890123456789 &&
+	SIG2=9123456789012345678901234567890123456780 &&
+	cat >expect <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+>ok
+<new-index $SIG2
+<<unchange
+<<foo/abc/bar
+<<
+<dump changes
+>>changed
+EOF
+	test-file-watcher . >actual <expect &&
+	test_cmp expect actual
+'
+
+test_expect_success 'file-watcher index updated after new-index' '
+	SIG2=9123456789012345678901234567890123456780 &&
+	cat >expect <<EOF &&
+<hello
+>hello
+<index $SIG2 $TRASH_DIRECTORY
+>ok
+<die
+>see you
+EOF
+	test-file-watcher . >actual <expect &&
+	test_cmp expect actual
+'
+
+# When test-mode is on, file-watch only accepts 8 directories
+test_expect_success 'watch too many directories' '
+	git file-watcher --detach . &&
+	SIG=0123456789012345678901234567890123456789 &&
+	cat >expect <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+>inconsistent
+# Do not call inotify_add_watch()
+<test-mode
+>test mode on
+# First batch should be all ok
+<<watch
+<<dir1/foo
+<<dir2/foo
+<<dir3/foo
+<<dir4/foo
+<<
+>watched 4
+# Second batch hits the limit
+<<watch
+<<dir5/foo
+<<dir6/foo
+<<dir7/foo
+<<dir8/foo
+<<dir9/foo
+<<
+>watched 3
+# The third batch is already registered, should accept too
+<<watch
+<<dir5/foo
+<<dir6/foo
+<<dir7/foo
+<<
+>watched 3
+# Try again, see if it still rejects
+<<watch
+<<dir8/foo
+<<dir9/foo
+<<
+>watched 0
+<dump watches
+>>watching
+>>. 1
+>>dir1 2
+>>dir1/foo
+>>dir2 3
+>>dir2/foo
+>>dir3 4
+>>dir3/foo
+>>dir4 5
+>>dir4/foo
+>>dir5 6
+>>dir5/foo
+>>dir6 7
+>>dir6/foo
+>>dir7 8
+>>dir7/foo
+<die
+>see you
+EOF
+	test-file-watcher . >actual <expect &&
+	test_cmp expect actual
+'
+
+test_expect_success 'event overflow' '
+	git file-watcher --detach . &&
+	SIG=0123456789012345678901234567890123456789 &&
+	cat >expect <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+>inconsistent
+<test-mode
+>test mode on
+<<watch
+<<foo
+<<abc/bar
+<<
+>watched 2
+<inotify 2 IN_MODIFY bar
+<dump watches
+>>watching
+>>. 1
+>>foo
+<dump changes
+>>changed
+>>abc/bar
+<inotify -1 IN_Q_OVERFLOW
+<dump watches
+>>watching
+<dump changes
+>>changed
+EOF
+	test-file-watcher . >actual <expect &&
+	test_cmp expect actual &&
+	cat >expect2 <<EOF &&
+<hello
+>hello
+<index $SIG $TRASH_DIRECTORY
+# Must be inconsistent because of IN_Q_OVERFLOW
+>inconsistent
+<die
+>see you
+EOF
+	test-file-watcher . >actual2 <expect2 &&
+	test_cmp expect2 actual2
+'
+
+test_done
diff --git a/test-file-watcher.c b/test-file-watcher.c
new file mode 100644
index 0000000..ffff198
--- /dev/null
+++ b/test-file-watcher.c
@@ -0,0 +1,96 @@
+#include "cache.h"
+#include "unix-socket.h"
+#include "pkt-line.h"
+#include "strbuf.h"
+
+int main(int ac, char **av)
+{
+	struct strbuf sb = STRBUF_INIT;
+	struct strbuf packed = STRBUF_INIT;
+	char *packing = NULL;
+	int last_command_is_reply = 0;
+	int fd;
+
+	strbuf_addf(&sb, "%s/socket", av[1]);
+	fd = unix_stream_connect(sb.buf);
+	if (fd < 0)
+		die_errno("connect");
+	strbuf_reset(&sb);
+
+	/*
+	 * test-file-watcher crashes sometimes, make sure to flush
+	 */
+	setbuf(stdout, NULL);
+
+	while (!strbuf_getline(&sb, stdin, '\n')) {
+		if (sb.buf[0] == '#') {
+			puts(sb.buf);
+			continue;
+		}
+		if (sb.buf[0] == '>') {
+			if (last_command_is_reply)
+				continue;
+			last_command_is_reply = 1;
+		} else
+			last_command_is_reply = 0;
+
+		if (sb.buf[0] == '<' && sb.buf[1] == '<') {
+			puts(sb.buf);
+			if (!packing) {
+				packing = xstrdup(sb.buf + 2);
+				strbuf_reset(&packed);
+				continue;
+			}
+			if (!sb.buf[2]) {
+				packet_write(fd, "%s %d", packing, (int)packed.len);
+				if (packed.len)
+					write_in_full(fd, packed.buf, packed.len);
+				free(packing);
+				packing = NULL;
+			} else
+				strbuf_add(&packed, sb.buf + 2, sb.len - 2 + 1);
+			continue;
+		}
+		if (sb.buf[0] == '<') {
+			packet_write(fd, "%s", sb.buf + 1);
+			puts(sb.buf);
+			continue;
+		}
+		if (sb.buf[0] == '>' && sb.buf[1] == '>') {
+			int len;
+			char *p, *reply = packet_read_line(fd, &len);
+			if (!starts_with(reply, sb.buf + 2) ||
+			    reply[sb.len - 2] != ' ') {
+				printf(">%s\n", reply);
+				continue;
+			} else {
+				p = reply + sb.len - 2;
+				printf(">>%.*s\n", (int)(p - reply), reply);
+				len = atoi(p + 1);
+				if (!len)
+					continue;
+			}
+			strbuf_reset(&packed);
+			strbuf_grow(&packed, len);
+			if (read_in_full(fd, packed.buf, len) <= 0)
+				return 1;
+			strbuf_setlen(&packed, len);
+			for (p = packed.buf; p - packed.buf < packed.len; p += len + 1) {
+				len = strlen(p);
+				printf(">>%s\n", p);
+			}
+			continue;
+		}
+		if (sb.buf[0] == '>') {
+			int len;
+			char *reply = packet_read_line(fd, &len);
+			if (!reply)
+				puts(">");
+			else
+				printf(">%s\n", reply);
+			continue;
+		}
+		die("unrecognize command %s", sb.buf);
+	}
+	return 0;
+}
-- 
1.8.5.2.240.g8478abd

^ permalink raw reply related	[relevance 4%]

* What's cooking in git.git (Sep 2013, #04; Fri, 13)
@ 2013-09-13 22:18  4% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2013-09-13 22:18 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

The third batch of topics are now in 'master'.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* jc/commit-is-spelled-with-two-ems (2013-09-05) 2 commits
  (merged to 'next' on 2013-09-05 at 982aef2)
 + typofix: cherry is spelled with two ars
 + typofix: commit is spelled with two ems


* jc/pager-configuration-doc (2013-08-29) 1 commit
  (merged to 'next' on 2013-09-05 at 3169083)
 + config: rewrite core.pager documentation

 It was unclear in the documentation how various configurations and
 environment variables determine which pager is eventually used.


* jk/config-int-range-check (2013-09-09) 5 commits
  (merged to 'next' on 2013-09-09 at 9ab779d)
 + git-config: always treat --int as 64-bit internally
 + config: make numeric parsing errors more clear
 + config: set errno in numeric git_parse_* functions
 + config: properly range-check integer values
 + config: factor out integer parsing from range checks

 "git config" did not provide a way to set or access numbers larger
 than a native "int" on the platform; it now provides 64-bit signed
 integers on all platforms.


* mm/fast-import-feature-doc (2013-08-25) 1 commit
  (merged to 'next' on 2013-09-05 at 83802e2)
 + Documentation/fast-import: clarify summary for `feature` command


* mm/mediawiki-dumb-push-fix (2013-09-03) 4 commits
  (merged to 'next' on 2013-09-05 at f8313f4)
 + git-remote-mediawiki: no need to update private ref in non-dumb push
 + git-remote-mediawiki: use no-private-update capability on dumb push
 + transport-helper: add no-private-update capability
 + git-remote-mediawiki: add test and check Makefile targets


* mm/remote-helpers-doc (2013-08-26) 1 commit
  (merged to 'next' on 2013-09-05 at c181b35)
 + Documentation/remote-helpers: document common use-case for private ref


* mn/doc-pack-heu-remove-dead-pastebin (2013-08-23) 1 commit
  (merged to 'next' on 2013-09-05 at 5caecec)
 + remove dead pastebin link from pack-heuristics document

--------------------------------------------------
[New Topics]

* jc/url-match (2013-09-12) 1 commit
  (merged to 'next' on 2013-09-13 at 7b94f8e)
 + urlmatch.c: recompute pointer after append_normalized_escapes

 While normalizing a URL, we forgot that the buffer that holds it
 could be relocated when it grows, which was a brown-paper-bag bug
 that can lead to a crash introduced on 'master' post 1.8.4 release.

 Will merge to 'master' in the fourth batch.


* jx/relative-path-regression-fix (2013-09-13) 3 commits
 - Use simpler relative_path when set_git_dir
 - relative_path should honor dos_drive_prefix
 - test: use unambigous leading path (/foo) for mingw
 (this branch uses jx/clean-interactive.)


* nd/unpack-entry-optim-in-pack-objects (2013-09-13) 1 commit
 - pack-objects: no crc check when the cached version is used

 The codepath to use data from packfiles that is only exercised in
 pack-objects unnecessarily checked crc checksum of the pack data,
 even when it ends up using in-core copy that it got by reading from
 the pack (at which point the checksum was validated).

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* jc/ref-excludes (2013-09-03) 2 commits
 - document --exclude option
 - revision: introduce --exclude=<glob> to tame wildcards

 People often wished a way to tell "git log --branches" (and "git
 log --remotes --not --branches") to exclude some local branches
 from the expansion of "--branches" (similarly for "--tags", "--all"
 and "--glob=<pattern>").  Now they have one.

 Needs a matching change to rev-parse.


* rv/send-email-cache-generated-mid (2013-08-21) 2 commits
 - git-send-email: Cache generated message-ids, use them when prompting
 - git-send-email: add optional 'choices' parameter to the ask sub


* rj/read-default-config-in-show-ref-pack-refs (2013-06-17) 3 commits
 - ### DONTMERGE: needs better explanation on what config they need
 - pack-refs.c: Add missing call to git_config()
 - show-ref.c: Add missing call to git_config()

 The changes themselves are probably good, but it is unclear what
 basic setting needs to be read for which exact operation.

 Waiting for clarification.
 $gmane/228294


* jh/shorten-refname (2013-05-07) 4 commits
 - t1514: refname shortening is done after dereferencing symbolic refs
 - shorten_unambiguous_ref(): Fix shortening refs/remotes/origin/HEAD to origin
 - t1514: Demonstrate failure to correctly shorten "refs/remotes/origin/HEAD"
 - t1514: Add tests of shortening refnames in strict/loose mode

 When remotes/origin/HEAD is not a symbolic ref, "rev-parse
 --abbrev-ref remotes/origin/HEAD" ought to show "origin", not
 "origin/HEAD", which is fixed with this series (if it is a symbolic
 ref that points at remotes/origin/something, then it should show
 "origin/something" and it already does).

 Expecting a reroll, as an early part of a larger series.
 $gmane/225137


* mg/more-textconv (2013-05-10) 7 commits
 - grep: honor --textconv for the case rev:path
 - grep: allow to use textconv filters
 - t7008: demonstrate behavior of grep with textconv
 - cat-file: do not die on --textconv without textconv filters
 - show: honor --textconv for blobs
 - diff_opt: track whether flags have been set explicitly
 - t4030: demonstrate behavior of show with textconv

 Make "git grep" and "git show" pay attention to --textconv when
 dealing with blob objects.

 I thought this was pretty well designed and executed, but it seems
 there are some doubts on the list; kicked back to 'pu'.


* jc/format-patch (2013-04-22) 2 commits
 - format-patch: --inline-single
 - format-patch: rename "no_inline" field

 A new option to send a single patch to the standard output to be
 appended at the bottom of a message.  I personally have no need for
 this, but it was easy enough to cobble together.  Tests, docs and
 stripping out more MIMEy stuff are left as exercises to interested
 parties.

 Not ready for inclusion.

 Will discard unless we hear from anybody who is interested in
 tying its loose ends.


* jk/gitweb-utf8 (2013-04-08) 4 commits
 - gitweb: Fix broken blob action parameters on blob/commitdiff pages
 - gitweb: Don't append ';js=(0|1)' to external links
 - gitweb: Make feed title valid utf8
 - gitweb: Fix utf8 encoding for blob_plain, blobdiff_plain, commitdiff_plain, and patch

 Various fixes to gitweb.

 Drew Northup volunteered to take a look into this.
 $gmane/226216


* jc/show-branch (2013-06-07) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit before sending it out.

--------------------------------------------------
[Cooking]

* bc/send-email-ssl-die-message-fix (2013-09-10) 1 commit
  (merged to 'next' on 2013-09-13 at c6fcdf4)
 + send-email: don't call methods on undefined values

 When send-email comes up with an error message to die with upon
 failure to start an SSL session, it tried to read the error string
 from a wrong place.

 Will merge to 'master' in the fourth batch.


* jc/checkout-detach-doc (2013-09-11) 1 commit
 - checkout: update synopsys and documentation on detaching HEAD

 "git checkout [--detach] <commit>" was listed poorly in the
 synopsis section of its documentation.


* jc/cvsserver-perm-bit-fix (2013-09-11) 1 commit
  (merged to 'next' on 2013-09-13 at 56db105)
 + cvsserver: pick up the right mode bits

 "git cvsserver" computed the permission mode bits incorrectly for
 executable files.

 Will merge to 'master' in the fourth batch.


* jk/trailing-slash-in-pathspec (2013-09-13) 2 commits
 - reset: handle submodule with trailing slash
 - rm: re-use parse_pathspec's trailing-slash removal

 Code refactoring.

 Will merge to 'next'.


* kb/msvc-compile (2013-09-11) 5 commits
 - Windows: do not redefine _WIN32_WINNT
 - MinGW: Fix stat definitions to work with MinGW runtime version 4.0
 - MSVC: fix stat definition hell
 - MSVC: fix compile errors due to macro redefinitions
 - MSVC: fix compile errors due to missing libintl.h

 Build updates for Windows port.

 Will merge to 'next'.


* lc/filter-branch-too-many-refs (2013-09-12) 1 commit
 - Allow git-filter-branch to process large repositories with lots of branches.

 "git filter-branch" in a repository with many refs blew limit of
 command line length.

 Will merge to 'next'.


* mm/commit-template-squelch-advice-messages (2013-09-12) 3 commits
  (merged to 'next' on 2013-09-13 at 410d207)
 + commit: disable status hints when writing to COMMIT_EDITMSG
 + wt-status: turn advice_status_hints into a field of wt_status
 + commit: factor status configuration is a helper function

 From the commit log template, remove irrelevant "advice" messages
 that are shared with "git status" output.

 Will merge to 'master' in the fifth batch.


* np/lookup-object-hashing (2013-09-11) 1 commit
  (merged to 'next' on 2013-09-12 at d835ef6)
 + lookup_object: remove hashtable_index() and optimize hash_obj()

 Micro optimize hash function used in the object hash table.

 Will merge to 'master' in the fifth batch.


* js/add-i-mingw (2013-09-04) 1 commit
  (merged to 'next' on 2013-09-10 at 50ab841)
 + add--interactive: fix external command invocation on Windows

 The implementation of "add -i" has a crippling code to work around
 ActiveState Perl limitation but it by mistake also triggered on Git
 for Windows where MSYS perl is used.

 Will merge to 'master' in the fourth batch.


* rh/ishes-doc (2013-09-04) 7 commits
  (merged to 'next' on 2013-09-10 at 3611e8a)
 + glossary: fix and clarify the definition of 'ref'
 + revisions.txt: fix and clarify <rev>^{<type>}
 + glossary: more precise definition of tree-ish (a.k.a. treeish)
 + use 'commit-ish' instead of 'committish'
 + use 'tree-ish' instead of 'treeish'
 + glossary: define commit-ish (a.k.a. committish)
 + glossary: mention 'treeish' as an alternative to 'tree-ish'

 We liberally use "committish" and "commit-ish" (and "treeish" and
 "tree-ish"); as these are non-words, let's unify these terms to
 their dashed form.  More importantly, clarify the documentation on
 object peeling using these terms.

 Will merge to 'master' in the fourth batch.


* bc/http-backend-allow-405 (2013-09-12) 1 commit
  (merged to 'next' on 2013-09-12 at bc1719f)
 + http-backend: provide Allow header for 405

 When the webserver responds with "405 Method Not Allowed", it
 should tell the client what methods are allowed with the "Allow"
 header.

 Will merge to 'master' in the fifth batch.


* dw/check-ignore-sans-index (2013-09-12) 1 commit
  (merged to 'next' on 2013-09-13 at 8daec3c)
 + check-ignore: Add option to ignore index contents

 "git check-ignore" follows the same rule as "git add" and "git
 status" in that the ignore/exclude mechanism does not take effect
 on paths that are already tracked.  With "--no-index" option, it
 can be used to diagnose which paths that should have been ignored
 have been mistakenly added to the index.

 Will merge to 'master' in the fifth batch.


* hu/cherry-pick-previous-branch (2013-09-09) 1 commit
  (merged to 'next' on 2013-09-12 at 36e4d9b)
 + cherry-pick: allow "-" as abbreviation of '@{-1}'

 Just like "git checkout -" knows to check out and "git merge -"
 knows to merge the branch you were previously on, teach "git
 cherry-pick" to understand "-" as the previous branch.

 Will merge to 'master' in the fifth batch.


* jh/checkout-auto-tracking (2013-09-09) 5 commits
  (merged to 'next' on 2013-09-13 at 2aa1553)
 + branch.c: Relax unnecessary requirement on upstream's remote ref name
 + t3200: Add test demonstrating minor regression in 41c21f2
 + Refer to branch.<name>.remote/merge when documenting --track
 + t3200: Minor fix when preparing for tracking failure
 + t2024: Fix &&-chaining and a couple of typos

 Fix a minor regression in v1.8.3.2 and later that made it
 impossible to base your local work on anything but a local branch
 of the upstream repository you are tracking from.

 Will merge to 'master' in the fifth batch.


* jk/remove-remote-helpers-in-python (2013-09-09) 1 commit
  (merged to 'next' on 2013-09-10 at 49c7a74)
 + git_remote_helpers: remove little used Python library

 Remove now disused remote-helpers framework for helpers written in
 Python.

 Will merge to 'master' in the fourth batch.


* jk/upload-pack-keepalive (2013-09-09) 2 commits
 - upload-pack: bump keepalive default to 5 seconds
 - upload-pack: send keepalive packets during pack computation

 When running "fetch -q", a long silence while the sender side
 computes the set of objects to send can be mistaken by proxies as
 dropped connection.

 Will merge to 'next'.


* mm/rebase-continue-freebsd-WB (2013-09-09) 1 commit
  (merged to 'next' on 2013-09-13 at 82e8b91)
 + rebase: fix run_specific_rebase's use of "return" on FreeBSD

 Work around a bug in FreeBSD shell that caused a regression to "git
 rebase" in v1.8.4.  It would be lovely to hear from FreeBSD folks a
 success report to make sure we didn't miss any other use of a bare
 "return" from dot-sourced script.

 Will merge to 'master' in the fifth batch.


* ss/doclinks (2013-09-06) 1 commit
  (merged to 'next' on 2013-09-10 at 2d029a9)
 + Documentation: make AsciiDoc links always point to HTML files

 When we converted many documents that were traditionally text-only
 to be formatted to AsciiDoc, we did not update links that point at
 them to refer to the formatted HTML files.

 Will merge to 'master' in the fourth batch.


* uh/git-svn-serf-fix (2013-09-06) 1 commit
  (merged to 'next' on 2013-09-13 at d65a9a1)
 + git-svn: fix termination issues for remote svn connections

 "git-svn" used with SVN 1.8.0 when talking over https:// connection
 dumped core due to a bug in the serf library that SVN uses.  Work
 it around on our side, even though the SVN side is being fixed.

 Will merge to 'master' in the fourth batch.


* fc/contrib-bzr-hg-fixes (2013-09-03) 10 commits
  (merged to 'next' on 2013-09-12 at f5e8684)
 + contrib/remote-helpers: quote variable references in redirection targets
 + contrib/remote-helpers: style updates for test scripts
 + remote-hg: use notes to keep track of Hg revisions
 + remote-helpers: cleanup more global variables
 + remote-helpers: trivial style fixes
 + remote-hg: improve basic test
 + remote-hg: add missing &&s in the test
 + remote-hg: fix test
 + remote-bzr: make bzr branches configurable per-repo
 + remote-bzr: fix export of utf-8 authors

 Will merge to 'master' in the fourth batch.


* np/pack-v4 (2013-09-11) 88 commits
 - t1050: replace one instance of show-index with verify-pack
 - index-pack, pack-objects: allow creating .idx v2 with .pack v4
 - unpack-objects: decode v4 trees
 - unpack-objects: allow to save processed bytes to a buffer
 - unpack-objects: decode v4 commits
 - ...

 Nico and Duy advancing the eternal vaporware pack-v4.  This is here
 primarily for wider distribution of the preview edition.


* jk/free-tree-buffer (2013-06-06) 1 commit
  (merged to 'next' on 2013-09-09 at 3576189)
 + clear parsed flag when we free tree buffers

 Will merge to 'master' in the fourth batch.


* jk/has-sha1-file-retry-packed (2013-08-30) 1 commit
  (merged to 'next' on 2013-09-09 at fc42e9b)
 + has_sha1_file: re-check pack directory before giving up

 When an object is not found after checking the packfiles and then
 loose object directory, read_sha1_file() re-checks the packfiles to
 prevent racing with a concurrent repacker; teach the same logic to
 has_sha1_file().

 Will merge to 'master' in the fourth batch.


* ab/gitweb-author-initials (2013-08-30) 1 commit
  (merged to 'next' on 2013-09-09 at ecb924d)
 + gitweb: Fix the author initials in blame for non-ASCII names

 Will merge to 'master' in the fourth batch.


* bk/refs-multi-update (2013-09-11) 8 commits
  (merged to 'next' on 2013-09-13 at e6d21af)
 + update-ref: add test cases covering --stdin signature
 + update-ref: support multiple simultaneous updates
 + refs: add update_refs for multiple simultaneous updates
 + refs: add function to repack without multiple refs
 + refs: factor delete_ref loose ref step into a helper
 + refs: factor update_ref steps into helpers
 + refs: report ref type from lock_any_ref_for_update
 + reset: rename update_refs to reset_refs

 Give "update-refs" a "--stdin" option to read multiple update
 requests and perform them in an all-or-none fashion.

 Will merge to 'master' in the fifth batch.


* fc/at-head (2013-09-12) 2 commits
  (merged to 'next' on 2013-09-13 at d3800c2)
 + Add new @ shortcut for HEAD
 + sha1-name: pass len argument to interpret_branch_name()

 Attempt to resurrect "Type @ for HEAD"; the bottom one seems to be
 a genuine code improvement, but identifying cases where "@" means
 HEAD were harder than it should have been.  I think the result of
 squashing the tip one in covers all the necessary cases.

 Will merge to 'master' in the fifth batch.


* fc/fast-export (2013-09-03) 2 commits
  (merged to 'next' on 2013-09-09 at 8d5d396)
 + fast-export: refactor get_tags_and_duplicates()
 + fast-export: make extra_refs global

 Code simpification.

 Will merge to 'master' in the fourth batch.


* fc/rev-parse-test-updates (2013-09-03) 4 commits
  (merged to 'next' on 2013-09-09 at 92c51ef)
 + rev-parse test: use standard test functions for setup
 + rev-parse test: use test_cmp instead of "test" builtin
 + rev-parse test: use test_must_fail, not "if <command>; then false; fi"
 + rev-parse test: modernize quoting and whitespace

 Modernize tests.

 Will merge to 'master' in the fourth batch.


* fc/t3200-fixes (2013-09-03) 3 commits
  (merged to 'next' on 2013-09-09 at 3626363)
 + t: branch: fix broken && chains
 + t: branch: fix typo
 + t: branch: trivial style fix

 Will merge to 'master' in the fourth batch.


* fc/trivial (2013-09-08) 5 commits
  (merged to 'next' on 2013-09-09 at a8ad2e1)
 + pull: use $curr_branch_short more
 + add: trivial style cleanup
 + reset: trivial style cleanup
 + branch: trivial style fix
 + reset: trivial refactoring

 Will merge to 'master' in the fourth batch.


* jk/pager-bypass-cat-for-default-pager (2013-09-03) 1 commit
  (merged to 'next' on 2013-09-09 at c9cfbaa)
 + pager: turn on "cat" optimization for DEFAULT_PAGER

 If a build-time fallback is set to "cat" instead of "less", we
 should apply the same "no subprocess or pipe" optimization as we
 apply to user-supplied GIT_PAGER=cat.

 Will merge to 'master' in the fourth batch.


* nd/git-dir-pointing-at-gitfile (2013-09-03) 1 commit
  (merged to 'next' on 2013-09-09 at 5b0a4bf)
 + Make setup_git_env() resolve .git file when $GIT_DIR is not specified

 We made sure that we notice the user-supplied GIT_DIR is actually a
 gitfile, but failed to do so when the default ".git" is a gitfile.

 Will merge to 'master' in the fourth batch.


* nr/git-cd-to-a-directory (2013-09-09) 1 commit
  (merged to 'next' on 2013-09-13 at 2b07af9)
 + git: run in a directory given with -C option

 Just like "make -C <directory>", make "git -C <directory> ..." to
 go there before doing anything else.

 Will merge to 'master' in the fifth batch.


* rh/peeling-tag-to-tag (2013-09-03) 2 commits
  (merged to 'next' on 2013-09-12 at 3a1d906)
 + peel_onion: do not assume length of x_type globals
 + peel_onion(): add support for <rev>^{tag}

 Make "foo^{tag}" to peel a tag to itself, i.e. no-op., and fail if
 "foo" is not a tag.

 Will merge to 'master' in the fifth batch.


* cc/replace-with-the-same-type (2013-09-09) 8 commits
 - Doc: 'replace' merge and non-merge commits
 - t6050-replace: use some long option names
 - replace: allow long option names
 - Documentation/replace: add Creating Replacement Objects section
 - t6050-replace: add test to clean up all the replace refs
 - t6050-replace: test that objects are of the same type
 - Documentation/replace: state that objects must be of the same type
 - replace: forbid replacing an object with one of a different type

 Using the replace mechanism to swap an object with another object
 of a different type can introduce inconsistency (e.g. a tree
 expects an object name to refer to a blob, but the blob object can
 be mistakenly or maliciously replaced with an object with a
 different type). Attempt to forbid such.

 Will merge to 'next'.


* jx/clean-interactive (2013-08-28) 1 commit
  (merged to 'next' on 2013-09-09 at 477fec6)
 + documentation: clarify notes for clean.requireForce
 (this branch is used by jx/relative-path-regression-fix.)

 Finishing touches to update the document to adjust to a new option
 "git clean" learned recently.

 Will merge to 'master' in the fourth batch.


* mm/status-without-comment-char (2013-09-06) 6 commits
  (merged to 'next' on 2013-09-12 at 89161b8)
 + status: add missing blank line after list of "other" files
 + tests: don't set status.displayCommentPrefix file-wide
 + status: disable display of '#' comment prefix by default
 + submodule summary: ignore --for-status option
 + wt-status: use argv_array API
 + builtin/stripspace.c: fix broken indentation

 Allow "git status" to omit the prefix to make its output a comment
 in a commit log editor, which is not necessary for human
 consumption.

 We may want to tighten the output to omit unnecessary trailing
 blank lines, but that does not have to be in the scope of this
 series.

 Will merge to 'master' in the fifth batch.


* bc/submodule-status-ignored (2013-09-11) 3 commits
  (merged to 'next' on 2013-09-11 at 9f66712)
 + Improve documentation concerning the status.submodulesummary setting
  (merged to 'next' on 2013-09-10 at a417960)
 + submodule: don't print status output with ignore=all
 + submodule: fix confusing variable name

 Will cook in 'next' a bit.


* jk/duplicate-objects-in-packs (2013-09-04) 5 commits
  (merged to 'next' on 2013-09-09 at 72f2c3d)
 + t5308: check that index-pack --strict detects duplicate objects
 + test index-pack on packs with recoverable delta cycles
 + add tests for indexing packs with delta cycles
 + sha1-lookup: handle duplicate keys with GIT_USE_LOOKUP
 + test-sha1: add a binary output mode

 A packfile that stores the same object more than once is broken and
 will be rejected.

 Will merge to 'master' in the fourth batch.


* dw/diff-no-index-doc (2013-08-28) 2 commits
  (merged to 'next' on 2013-09-10 at 423c8f6)
 + diff --no-index: describe in a separate paragraph
 + diff --no-index: clarify operation when not inside a repository

 When the user types "git diff" outside a working tree, thinking he
 is inside one, the current error message that is a single-liner
 "usage: git diff --no-index <path> <path>" may not be sufficient to
 make him realize the mistake. Add "Not a git repository" to the
 error message when we fell into the "--no-index" mode without an
 explicit command line option to instruct us to do so.

 Will merge to 'master' in the fourth batch.


* sb/repack-in-c (2013-08-30) 2 commits
 - repack: retain the return value of pack-objects
 - repack: rewrite the shell script in C

 Any further reviews?


* ap/commit-author-mailmap (2013-08-24) 1 commit
  (merged to 'next' on 2013-09-09 at 79d5a20)
 + commit: search author pattern against mailmap

 "git commit --author=$name", when $name is not in the canonical
 "A. U. Thor <au.thor@example.xz>" format, looks for a matching name
 from existing history, but did not consult mailmap to grab the
 preferred author name.

 Will merge to 'master' in the fourth batch.


* jk/write-broken-index-with-nul-sha1 (2013-08-28) 1 commit
  (merged to 'next' on 2013-09-09 at 6953f27)
 + write_index: optionally allow broken null sha1s

 Earlier we started rejecting an attempt to add 0{40} object name to
 the index and to tree objects, but it sometimes is necessary to
 allow so to be able to use tools like filter-branch to correct such
 broken tree objects.

 Will merge to 'master' in the fourth batch.


* kk/tests-with-no-perl (2013-08-24) 4 commits
  (merged to 'next' on 2013-09-09 at 67510b1)
 + reset test: modernize style
 + t/t7106-reset-unborn-branch.sh: Add PERL prerequisite
 + add -i test: use skip_all instead of repeated PERL prerequisite
 + Make test "using invalid commit with -C" more strict

 Some tests were not skipped under NO_PERL build.

 Will merge to 'master' in the fourth batch.


* ta/user-manual (2013-08-27) 11 commits
  (merged to 'next' on 2013-09-10 at 1361be1)
 + "git prune" is safe
 + Remove irrelevant reference from "Tying it all together"
 + Remove unnecessary historical note from "Object storage format"
 + Improve section "Merging multiple trees"
 + Improve section "Manipulating branches"
 + Simplify "How to make a commit"
 + Fix some typos and improve wording
 + Use "git merge" instead of "git pull ."
 + Use current output for "git repack"
 + Use current "detached HEAD" message
 + Call it "Git User Manual" and remove reference to very old Git version

 Update the user's manual to more recent versions of Git.

 Will merge to 'master' in the fourth batch.


* tb/precompose-autodetect-fix (2013-08-27) 1 commit
  (merged to 'next' on 2013-09-09 at 9bfdac1)
 + Set core.precomposeunicode to true on e.g. HFS+

 On MacOS X, we detected if the filesystem needs the "pre-composed
 unicode strings" workaround, but did not automatically enable it.
 Now we do.

 Will merge to 'master' in the fourth batch.


* jx/branch-vv-always-compare-with-upstream (2013-08-26) 2 commits
  (merged to 'next' on 2013-09-12 at b5c37f4)
 + status: always show tracking branch even no change
 + branch: report invalid tracking branch as gone

 "git branch -v -v" (and "git status") did not distinguish among a
 branch that does not build on any other branch, a branch that is in
 sync with the branch it builds on, and a branch that is configured
 to build on some other branch that no longer exists.

 Will merge to 'master' in the fifth batch.


* nd/fetch-into-shallow (2013-08-28) 7 commits
  (merged to 'next' on 2013-09-09 at 87a3b99)
 + Add testcase for needless objects during a shallow fetch
 + list-objects: mark more commits as edges in mark_edges_uninteresting
 + list-objects: reduce one argument in mark_edges_uninteresting
 + upload-pack: delegate rev walking in shallow fetch to pack-objects
 + shallow: add setup_temporary_shallow()
 + shallow: only add shallow graft points to new shallow file
 + move setup_alternate_shallow and write_shallow_commits to shallow.c

 When there is no sufficient overlap between old and new history
 during a fetch into a shallow repository, we unnecessarily sent
 objects the sending side knows the receiving end has.

 Will merge to 'master' in the fifth batch.


* ks/p4-view-spec (2013-09-03) 2 commits
  (merged to 'next' on 2013-09-10 at 8ceb2ec)
 + git p4: implement view spec wildcards with "p4 where"
 + git p4 test: sanitize P4CHARSET

 Replaced with a reroll that was whitespace damaged.

 Will merge to 'master' in the fourth batch.


* tr/merge-recursive-index-only (2013-07-07) 3 commits
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: untangle double meaning of o->call_depth
 - merge-recursive: remove dead conditional in update_stages()

 Will hold, until we get any user.


* jc/reflog-doc (2013-06-19) 1 commit
 - setup_reflog_action: document the rules for using GIT_REFLOG_ACTION

 Document rules to use GIT_REFLOG_ACTION variable in the scripted
 Porcelain.  git-rebase--interactive locally violates this, but it
 is a leaf user that does not call out to or dot-sources other
 scripts, so fixing it is not all that urgent.


* jn/add-2.0-u-A-sans-pathspec (2013-04-26) 1 commit
 - git add: -u/-A now affects the entire working tree

 Will cook in 'next' until Git 2.0.


* jc/core-checkstat-2.0 (2013-05-06) 1 commit
 - core.statinfo: remove as promised in Git 2.0

 Will cook in 'next' until Git 2.0.


* jc/push-2.0-default-to-simple (2013-06-18) 1 commit
 - push: switch default from "matching" to "simple"

 Will cook in 'next' until Git 2.0.


* jc/add-2.0-ignore-removal (2013-04-22) 1 commit
 - git add <pathspec>... defaults to "-A"

 Updated endgame for "git add <pathspec>" that defaults to "--all"
 aka "--no-ignore-removal".

 Will cook in 'next' until Git 2.0.


* jc/hold-diff-remove-q-synonym-for-no-deletion (2013-07-19) 1 commit
 - diff: remove "diff-files -q" in a version of Git in a distant future

 Will cook in 'next' until a distant future.

--------------------------------------------------
[Discarded]

* jc/pull-training-wheel (2013-07-19) 1 commit
  (merged to 'next' on 2013-08-28 at c39bd15)
 + pull: require choice between rebase/merge on non-fast-forward pull

 Make "git pull" (without arguments that say what branch to
 integrate from where) refuse with "it does not fast forward; choose
 between 'pull --merge' and 'pull --rebase'".

 This topic has been reverted from 'next'.  Will wait for the
 conclusion of the discussion to seek a more user-friendly
 alternative; it is likely that it will be based on the simpler
 approach Felipe posted earlier.

^ permalink raw reply	[relevance 4%]

* What's cooking in git.git (Sep 2013, #03; Wed, 11)
@ 2013-09-11 23:32  6% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2013-09-11 23:32 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

The second batch of topics are now in 'master'.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* es/rebase-i-no-abbrev (2013-08-25) 3 commits
  (merged to 'next' on 2013-09-04 at 6027805)
 + rebase -i: fix short SHA-1 collision
 + t3404: rebase -i: demonstrate short SHA-1 collision
 + t3404: make tests more self-contained

 Originally merged to 'next' on 2013-08-26

 The commit object names in the insn sheet that was prepared at the
 beginning of "rebase -i" session can become ambiguous as the
 rebasing progresses and the repository gains more commits. Make
 sure the internal record is kept with full 40-hex object names.


* es/rebase-i-respect-core-commentchar (2013-08-18) 1 commit
  (merged to 'next' on 2013-09-04 at 8c1ce68)
 + rebase -i: fix cases ignoring core.commentchar

 Originally merged to 'next' on 2013-08-20

 "rebase -i" forgot that the comment character can be configurable
 while reading its insn sheet.


* jc/ls-files-killed-optim (2013-08-23) 4 commits
  (merged to 'next' on 2013-09-04 at 20c2304)
 + dir.c::test_one_path(): work around directory_exists_in_index_icase() breakage
 + t3010: update to demonstrate "ls-files -k" optimization pitfalls
 + ls-files -k: a directory only can be killed if the index has a non-directory
 + dir.c: use the cache_* macro to access the current index

 Originally merged to 'next' on 2013-08-27

 "git ls-files -k" needs to crawl only the part of the working tree
 that may overlap the paths in the index to find killed files, but
 shared code with the logic to find all the untracked files, which
 made it unnecessarily inefficient.


* jn/post-receive-utf8 (2013-08-05) 3 commits
  (merged to 'next' on 2013-09-04 at 3a3f480)
 + hooks/post-receive-email: set declared encoding to utf-8
 + hooks/post-receive-email: force log messages in UTF-8
 + hooks/post-receive-email: use plumbing instead of git log/show

 Originally merged to 'next' on 2013-08-20

 Update post-receive-email script to make sure the message contents
 and pathnames are encoded consistently in UTF-8.


* js/xread-in-full (2013-08-20) 1 commit
  (merged to 'next' on 2013-09-04 at 5bfb049)
 + stream_to_pack: xread does not guarantee to read all requested bytes

 Originally merged to 'next' on 2013-08-20

 A call to xread() was used without a loop around to cope with short
 read in the codepath to stream new contents to a pack.


* nd/push-no-thin (2013-08-13) 1 commit
  (merged to 'next' on 2013-09-04 at faa8c02)
 + push: respect --no-thin

 Originally merged to 'next' on 2013-08-14

 "git push --no-thin" was a no-op by mistake.


* rt/rebase-p-no-merge-summary (2013-08-21) 1 commit
  (merged to 'next' on 2013-09-04 at d8d89ee)
 + rebase --preserve-merges: ignore "merge.log" config

 Originally merged to 'next' on 2013-08-22

 "git rebase -p" internally used the merge machinery, but when
 rebasing, there should not be a need for merge summary.


* sb/mailmap-freeing-NULL-is-ok (2013-08-20) 1 commit
  (merged to 'next' on 2013-09-04 at c831015)
 + mailmap: remove redundant check for freeing memory

 Originally merged to 'next' on 2013-08-20


* sh/pull-rebase-preserve (2013-09-04) 1 commit
  (merged to 'next' on 2013-09-04 at 32a93bb)
 + pull: allow pull to preserve merges when rebasing

 Originally merged to 'next' on 2013-08-14

 "git pull --rebase" always flattened the history; pull.rebase can
 now be set to "preserve" to invoke "rebase --preserve-merges".


* tf/gitweb-ss-tweak (2013-08-20) 4 commits
  (merged to 'next' on 2013-09-04 at 774bfbe)
 + gitweb: make search help link less ugly
 + gitweb: omit the repository owner when it is unset
 + gitweb: vertically centre contents of page footer
 + gitweb: ensure OPML text fits inside its box

 Originally merged to 'next' on 2013-08-22

 Tweak Gitweb CSS to layout some elements better.

--------------------------------------------------
[New Topics]

* bc/send-email-ssl-die-message-fix (2013-09-10) 1 commit
 - send-email: don't call methods on undefined values

 When send-email comes up with an error message to die with upon
 failure to start an SSL session, it tried to read the error string
 from a wrong place.

 Will merge to 'next'.


* jc/checkout-detach-doc (2013-09-11) 1 commit
 - checkout: update synopsys and documentation on detaching HEAD

 "git checkout [--detach] <commit>" was listed poorly in the
 synopsis section of its documentation.


* jc/cvsserver-perm-bit-fix (2013-09-11) 1 commit
 - cvsserver: pick up the right mode bits

 "git cvsserver" computed the permission mode bits incorrectly for
 executable files.

 Will merge to 'next'.


* jk/trailing-slash-in-pathspec (2013-09-10) 2 commits
 - rm: re-use parse_pathspec's trailing-slash removal
 - reset: handle submodule with trailing slash

 Needs a reroll?


* kb/msvc-compile (2013-09-11) 5 commits
 - Windows: do not redefine _WIN32_WINNT
 - MinGW: Fix stat definitions to work with MinGW runtime version 4.0
 - MSVC: fix stat definition hell
 - MSVC: fix compile errors due to macro redefinitions
 - MSVC: fix compile errors due to missing libintl.h

 Build updates for Windows port.


* lc/filter-branch-too-many-refs (2013-09-11) 2 commits
 - ### DONOTMERGE - missing sign-off
 - Allow git-filter-branch to process large repositories with lots of branches.

 "git filter-branch" in a repository with many refs blew limit of
 command line length.

 Needs a sign-off.


* mm/commit-template-squelch-advice-messages (2013-09-11) 2 commits
 - commit: disable status hints when writing to COMMIT_EDITMSG
 - wt-status: turn advice_status_hints into a field of wt_status

 From the commit log template, remove irrelevant "advice" messages
 that are shared with "git status" output.

 Will merge to 'next'.


* np/lookup-object-hashing (2013-09-11) 1 commit
 - lookup_object: remove hashtable_index() and optimize hash_obj()

 Micro optimize hash function used in the object hash table.

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* rv/send-email-cache-generated-mid (2013-08-21) 2 commits
 - git-send-email: Cache generated message-ids, use them when prompting
 - git-send-email: add optional 'choices' parameter to the ask sub


* rj/read-default-config-in-show-ref-pack-refs (2013-06-17) 3 commits
 - ### DONTMERGE: needs better explanation on what config they need
 - pack-refs.c: Add missing call to git_config()
 - show-ref.c: Add missing call to git_config()

 The changes themselves are probably good, but it is unclear what
 basic setting needs to be read for which exact operation.

 Waiting for clarification.
 $gmane/228294


* jh/shorten-refname (2013-05-07) 4 commits
 - t1514: refname shortening is done after dereferencing symbolic refs
 - shorten_unambiguous_ref(): Fix shortening refs/remotes/origin/HEAD to origin
 - t1514: Demonstrate failure to correctly shorten "refs/remotes/origin/HEAD"
 - t1514: Add tests of shortening refnames in strict/loose mode

 When remotes/origin/HEAD is not a symbolic ref, "rev-parse
 --abbrev-ref remotes/origin/HEAD" ought to show "origin", not
 "origin/HEAD", which is fixed with this series (if it is a symbolic
 ref that points at remotes/origin/something, then it should show
 "origin/something" and it already does).

 Expecting a reroll, as an early part of a larger series.
 $gmane/225137


* mg/more-textconv (2013-05-10) 7 commits
 - grep: honor --textconv for the case rev:path
 - grep: allow to use textconv filters
 - t7008: demonstrate behavior of grep with textconv
 - cat-file: do not die on --textconv without textconv filters
 - show: honor --textconv for blobs
 - diff_opt: track whether flags have been set explicitly
 - t4030: demonstrate behavior of show with textconv

 Make "git grep" and "git show" pay attention to --textconv when
 dealing with blob objects.

 I thought this was pretty well designed and executed, but it seems
 there are some doubts on the list; kicked back to 'pu'.


* jc/format-patch (2013-04-22) 2 commits
 - format-patch: --inline-single
 - format-patch: rename "no_inline" field

 A new option to send a single patch to the standard output to be
 appended at the bottom of a message.  I personally have no need for
 this, but it was easy enough to cobble together.  Tests, docs and
 stripping out more MIMEy stuff are left as exercises to interested
 parties.

 Not ready for inclusion.

 Will discard unless we hear from anybody who is interested in
 tying its loose ends.


* jk/gitweb-utf8 (2013-04-08) 4 commits
 - gitweb: Fix broken blob action parameters on blob/commitdiff pages
 - gitweb: Don't append ';js=(0|1)' to external links
 - gitweb: Make feed title valid utf8
 - gitweb: Fix utf8 encoding for blob_plain, blobdiff_plain, commitdiff_plain, and patch

 Various fixes to gitweb.

 Drew Northup volunteered to take a look into this.
 $gmane/226216


* jc/show-branch (2013-06-07) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit before sending it out.

--------------------------------------------------
[Cooking]

* js/add-i-mingw (2013-09-04) 1 commit
  (merged to 'next' on 2013-09-10 at 50ab841)
 + add--interactive: fix external command invocation on Windows

 The implementation of "add -i" has a crippling code to work around
 ActiveState Perl limitation but it by mistake also triggered on Git
 for Windows where MSYS perl is used.

 Will merge to 'master' in the third batch.


* rh/ishes-doc (2013-09-04) 7 commits
  (merged to 'next' on 2013-09-10 at 3611e8a)
 + glossary: fix and clarify the definition of 'ref'
 + revisions.txt: fix and clarify <rev>^{<type>}
 + glossary: more precise definition of tree-ish (a.k.a. treeish)
 + use 'commit-ish' instead of 'committish'
 + use 'tree-ish' instead of 'treeish'
 + glossary: define commit-ish (a.k.a. committish)
 + glossary: mention 'treeish' as an alternative to 'tree-ish'

 We liberally use "committish" and "commit-ish" (and "treeish" and
 "tree-ish"); as these are non-words, let's unify these terms to
 their dashed form.  More importantly, clarify the documentation on
 object peeling using these terms.

 Will merge to 'master' in the third batch.


* jc/commit-is-spelled-with-two-ems (2013-09-05) 2 commits
  (merged to 'next' on 2013-09-05 at 982aef2)
 + typofix: cherry is spelled with two ars
 + typofix: commit is spelled with two ems

 Will merge to 'master' in the third batch.


* bc/http-backend-allow-405 (2013-09-09) 1 commit
 - http-backend: provide Allow header for 405

 When the webserver responds with "405 Method Not Allowed", it
 should tell the client what methods are allowed with the "Allow"
 header.

 Will merge to 'next'.


* dw/check-ignore-sans-index (2013-09-05) 2 commits
 - SQUASH??? do not let --no-index squat on short-and-sweet -i for now
 - check-ignore: Add option to ignore index contents

 "git check-ignore" follows the same rule as "git add" and "git
 status" in that the ignore/exclude mechanism does not take effect
 on paths that are already tracked.  With "--no-index" option, it
 can be used to diagnose which paths that should have been ignored
 have been mistakenly added to the index.

 Will squash the tip in and merge to 'next'.


* hu/cherry-pick-previous-branch (2013-09-09) 1 commit
 - cherry-pick: allow "-" as abbreviation of '@{-1}'

 Just like "git checkout -" knows to check out and "git merge -"
 knows to merge the branch you were previously on, teach "git
 cherry-pick" to understand "-" as the previous branch.

 Will merge to 'next'.


* jh/checkout-auto-tracking (2013-09-09) 5 commits
 - branch.c: Relax unnecessary requirement on upstream's remote ref name
 - t3200: Add test demonstrating minor regression in 41c21f2
 - Refer to branch.<name>.remote/merge when documenting --track
 - t3200: Minor fix when preparing for tracking failure
 - t2024: Fix &&-chaining and a couple of typos

 Fix a minor regression in v1.8.3.2 and later that made it
 impossible to base your local work on anything but a local branch
 of the upstream repository you are tracking from.

 Will merge to 'next'.


* jk/remove-remote-helpers-in-python (2013-09-09) 1 commit
  (merged to 'next' on 2013-09-10 at 49c7a74)
 + git_remote_helpers: remove little used Python library

 Remove now disused remote-helpers framework for helpers written in
 Python.

 Will merge to 'master' in the third batch.


* jk/upload-pack-keepalive (2013-09-09) 2 commits
 - upload-pack: bump keepalive default to 5 seconds
 - upload-pack: send keepalive packets during pack computation

 When running "fetch -q", a long silence while the sender side
 computes the set of objects to send can be mistaken by proxies as
 dropped connection.

 Will merge to 'next'.


* mm/rebase-continue-freebsd-WB (2013-09-09) 1 commit
 - rebase: fix run_specific_rebase's use of "return" on FreeBSD

 Work around a bug in FreeBSD shell that caused a regression to "git
 rebase" in v1.8.4.  It would be lovely to hear from FreeBSD folks a
 success report to make sure we didn't miss any other use of a bare
 "return" from dot-sourced script.

 Will merge to 'next'.


* ss/doclinks (2013-09-06) 1 commit
  (merged to 'next' on 2013-09-10 at 2d029a9)
 + Documentation: make AsciiDoc links always point to HTML files

 When we converted many documents that were traditionally text-only
 to be formatted to AsciiDoc, we did not update links that point at
 them to refer to the formatted HTML files.

 Will merge to 'master' in the third batch.


* uh/git-svn-serf-fix (2013-09-06) 1 commit
 - git-svn: fix termination issues for remote svn connections

 "git-svn" used with SVN 1.8.0 when talking over https:// connection
 dumped core due to a bug in the serf library that SVN uses.  Work
 it around on our side, even though the SVN side is being fixed.


* fc/contrib-bzr-hg-fixes (2013-09-03) 10 commits
 - contrib/remote-helpers: quote variable references in redirection targets
 - contrib/remote-helpers: style updates for test scripts
 - remote-hg: use notes to keep track of Hg revisions
 - remote-helpers: cleanup more global variables
 - remote-helpers: trivial style fixes
 - remote-hg: improve basic test
 - remote-hg: add missing &&s in the test
 - remote-hg: fix test
 - remote-bzr: make bzr branches configurable per-repo
 - remote-bzr: fix export of utf-8 authors

 Will merge to 'next'.


* jc/pager-configuration-doc (2013-08-29) 1 commit
  (merged to 'next' on 2013-09-05 at 3169083)
 + config: rewrite core.pager documentation

 It was unclear in the documentation how various configurations and
 environment variables determine which pager is eventually used.

 Will merge to 'master' in the third batch.


* np/pack-v4 (2013-09-11) 88 commits
 - t1050: replace one instance of show-index with verify-pack
 - index-pack, pack-objects: allow creating .idx v2 with .pack v4
 - unpack-objects: decode v4 trees
 - unpack-objects: allow to save processed bytes to a buffer
 - unpack-objects: decode v4 commits
 - ...

 Nico and Duy advancing the eternal vaporware pack-v4.  This is here
 primarily for wider distribution of the preview edition.


* jk/free-tree-buffer (2013-06-06) 1 commit
  (merged to 'next' on 2013-09-09 at 3576189)
 + clear parsed flag when we free tree buffers

 Will merge to 'master' in the third batch.


* jk/has-sha1-file-retry-packed (2013-08-30) 1 commit
  (merged to 'next' on 2013-09-09 at fc42e9b)
 + has_sha1_file: re-check pack directory before giving up

 When an object is not found after checking the packfiles and then
 loose object directory, read_sha1_file() re-checks the packfiles to
 prevent racing with a concurrent repacker; teach the same logic to
 has_sha1_file().

 Will merge to 'master' in the third batch.


* ab/gitweb-author-initials (2013-08-30) 1 commit
  (merged to 'next' on 2013-09-09 at ecb924d)
 + gitweb: Fix the author initials in blame for non-ASCII names

 Will merge to 'master' in the fourth batch.


* bk/refs-multi-update (2013-09-11) 8 commits
 - update-ref: add test cases covering --stdin signature
 - update-ref: support multiple simultaneous updates
 - refs: add update_refs for multiple simultaneous updates
 - refs: add function to repack without multiple refs
 - refs: factor delete_ref loose ref step into a helper
 - refs: factor update_ref steps into helpers
 - refs: report ref type from lock_any_ref_for_update
 - reset: rename update_refs to reset_refs

 Give "update-refs" a "--stdin" option to read multiple update
 requests and perform them in an all-or-none fashion.

 Looking good.

 Will merge to 'next'.


* fc/at-head (2013-09-09) 3 commits
 - SQUASH??? fixup
 - Add new @ shortcut for HEAD
 - sha1-name: pass len argument to interpret_branch_name()

 Attempt to resurrect "Type @ for HEAD"; the bottom one seems to be
 a genuine code improvement, but identifying cases where "@" means
 HEAD were harder than it should have been.  I think the result of
 squashing the tip one in covers all the necessary cases.

 Will squash the tip in and merge to 'next'.


* fc/fast-export (2013-09-03) 2 commits
  (merged to 'next' on 2013-09-09 at 8d5d396)
 + fast-export: refactor get_tags_and_duplicates()
 + fast-export: make extra_refs global

 Code simpification.

 Will merge to 'master' in the third batch.


* fc/rev-parse-test-updates (2013-09-03) 4 commits
  (merged to 'next' on 2013-09-09 at 92c51ef)
 + rev-parse test: use standard test functions for setup
 + rev-parse test: use test_cmp instead of "test" builtin
 + rev-parse test: use test_must_fail, not "if <command>; then false; fi"
 + rev-parse test: modernize quoting and whitespace

 Modernize tests.

 Will merge to 'master' in the third batch.


* fc/t3200-fixes (2013-09-03) 3 commits
  (merged to 'next' on 2013-09-09 at 3626363)
 + t: branch: fix broken && chains
 + t: branch: fix typo
 + t: branch: trivial style fix

 Will merge to 'master' in the third batch.


* fc/trivial (2013-09-08) 5 commits
  (merged to 'next' on 2013-09-09 at a8ad2e1)
 + pull: use $curr_branch_short more
 + add: trivial style cleanup
 + reset: trivial style cleanup
 + branch: trivial style fix
 + reset: trivial refactoring

 Will merge to 'master' in the third batch.


* jc/ref-excludes (2013-09-03) 2 commits
 - document --exclude option
 - revision: introduce --exclude=<glob> to tame wildcards

 People often wished a way to tell "git log --branches" (and "git
 log --remotes --not --branches") to exclude some local branches
 from the expansion of "--branches" (similarly for "--tags", "--all"
 and "--glob=<pattern>").  Now they have one.

 Will merge to 'next'.


* jk/pager-bypass-cat-for-default-pager (2013-09-03) 1 commit
  (merged to 'next' on 2013-09-09 at c9cfbaa)
 + pager: turn on "cat" optimization for DEFAULT_PAGER

 If a build-time fallback is set to "cat" instead of "less", we
 should apply the same "no subprocess or pipe" optimization as we
 apply to user-supplied GIT_PAGER=cat.

 Will merge to 'master' in the fourth batch.


* nd/git-dir-pointing-at-gitfile (2013-09-03) 1 commit
  (merged to 'next' on 2013-09-09 at 5b0a4bf)
 + Make setup_git_env() resolve .git file when $GIT_DIR is not specified

 We made sure that we notice the user-supplied GIT_DIR is actually a
 gitfile, but failed to do so when the default ".git" is a gitfile.

 Will merge to 'master' in the fourth batch.


* nr/git-cd-to-a-directory (2013-09-09) 1 commit
 - git: run in a directory given with -C option

 Just like "make -C <directory>", make "git -C <directory> ..." to
 go there before doing anything else.

 Will merge to 'next'.


* rh/peeling-tag-to-tag (2013-09-03) 2 commits
 - peel_onion: do not assume length of x_type globals
 - peel_onion(): add support for <rev>^{tag}

 Make "foo^{tag}" to peel a tag to itself, i.e. no-op., and fail if
 "foo" is not a tag.

 Will merge to 'next'.


* cc/replace-with-the-same-type (2013-09-09) 8 commits
 - Doc: 'replace' merge and non-merge commits
 - t6050-replace: use some long option names
 - replace: allow long option names
 - Documentation/replace: add Creating Replacement Objects section
 - t6050-replace: add test to clean up all the replace refs
 - t6050-replace: test that objects are of the same type
 - Documentation/replace: state that objects must be of the same type
 - replace: forbid replacing an object with one of a different type

 Using the replace mechanism to swap an object with another object
 of a different type can introduce inconsistency (e.g. a tree
 expects an object name to refer to a blob, but the blob object can
 be mistakenly or maliciously replaced with an object with a
 different type). Attempt to forbid such.

 Will merge to 'next'.


* jx/clean-interactive (2013-08-28) 1 commit
  (merged to 'next' on 2013-09-09 at 477fec6)
 + documentation: clarify notes for clean.requireForce

 Finishing touches to update the document to adjust to a new option
 "git clean" learned recently.

 Will merge to 'master' in the fourth batch.


* mm/status-without-comment-char (2013-09-06) 6 commits
 - status: add missing blank line after list of "other" files
 - tests: don't set status.displayCommentPrefix file-wide
 - status: disable display of '#' comment prefix by default
 - submodule summary: ignore --for-status option
 - wt-status: use argv_array API
 - builtin/stripspace.c: fix broken indentation

 Allow "git status" to omit the prefix to make its output a comment
 in a commit log editor, which is not necessary for human
 consumption.

 We may want to tighten the output to omit unnecessary trailing
 blank lines, but that does not have to be in the scope of this
 series.

 Will merge to 'next'.


* bc/submodule-status-ignored (2013-09-11) 3 commits
  (merged to 'next' on 2013-09-11 at 9f66712)
 + Improve documentation concerning the status.submodulesummary setting
  (merged to 'next' on 2013-09-10 at a417960)
 + submodule: don't print status output with ignore=all
 + submodule: fix confusing variable name

 Originally merged to 'next' on 2013-08-22

 Will cook in 'next' a bit.


* jk/config-int-range-check (2013-09-09) 5 commits
  (merged to 'next' on 2013-09-09 at 9ab779d)
 + git-config: always treat --int as 64-bit internally
 + config: make numeric parsing errors more clear
 + config: set errno in numeric git_parse_* functions
 + config: properly range-check integer values
 + config: factor out integer parsing from range checks

 Originally merged to 'next' on 2013-08-22

 "git config --int section.var 3g" should somehow diagnose that the
 number does not fit in "int" (on 32-bit platforms anyway) but it
 did not.

 Will merge to 'master' in the third batch.


* jk/duplicate-objects-in-packs (2013-09-04) 5 commits
  (merged to 'next' on 2013-09-09 at 72f2c3d)
 + t5308: check that index-pack --strict detects duplicate objects
 + test index-pack on packs with recoverable delta cycles
 + add tests for indexing packs with delta cycles
 + sha1-lookup: handle duplicate keys with GIT_USE_LOOKUP
 + test-sha1: add a binary output mode

 A packfile that stores the same object more than once is broken and
 will be rejected.

 Will merge to 'master' in the fourth batch.


* mm/mediawiki-dumb-push-fix (2013-09-03) 4 commits
  (merged to 'next' on 2013-09-05 at f8313f4)
 + git-remote-mediawiki: no need to update private ref in non-dumb push
 + git-remote-mediawiki: use no-private-update capability on dumb push
 + transport-helper: add no-private-update capability
 + git-remote-mediawiki: add test and check Makefile targets

 Will merge to 'master' in the third batch.


* dw/diff-no-index-doc (2013-08-28) 2 commits
  (merged to 'next' on 2013-09-10 at 423c8f6)
 + diff --no-index: describe in a separate paragraph
 + diff --no-index: clarify operation when not inside a repository

 When the user types "git diff" outside a working tree, thinking he
 is inside one, the current error message that is a single-liner
 "usage: git diff --no-index <path> <path>" may not be sufficient to
 make him realize the mistake. Add "Not a git repository" to the
 error message when we fell into the "--no-index" mode without an
 explicit command line option to instruct us to do so.

 Will merge to 'master' in the third batch.


* sb/repack-in-c (2013-08-30) 2 commits
 - repack: retain the return value of pack-objects
 - repack: rewrite the shell script in C

 Any further reviews?


* ap/commit-author-mailmap (2013-08-24) 1 commit
  (merged to 'next' on 2013-09-09 at 79d5a20)
 + commit: search author pattern against mailmap

 "git commit --author=$name", when $name is not in the canonical
 "A. U. Thor <au.thor@example.xz>" format, looks for a matching name
 from existing history, but did not consult mailmap to grab the
 preferred author name.

 Will merge to 'master' in the fourth batch.


* jk/write-broken-index-with-nul-sha1 (2013-08-28) 1 commit
  (merged to 'next' on 2013-09-09 at 6953f27)
 + write_index: optionally allow broken null sha1s

 Earlier we started rejecting an attempt to add 0{40} object name to
 the index and to tree objects, but it sometimes is necessary to
 allow so to be able to use tools like filter-branch to correct such
 broken tree objects.

 Will merge to 'master' in the fourth batch.


* kk/tests-with-no-perl (2013-08-24) 4 commits
  (merged to 'next' on 2013-09-09 at 67510b1)
 + reset test: modernize style
 + t/t7106-reset-unborn-branch.sh: Add PERL prerequisite
 + add -i test: use skip_all instead of repeated PERL prerequisite
 + Make test "using invalid commit with -C" more strict

 Some tests were not skipped under NO_PERL build.

 Will merge to 'master' in the third batch.


* mm/fast-import-feature-doc (2013-08-25) 1 commit
  (merged to 'next' on 2013-09-05 at 83802e2)
 + Documentation/fast-import: clarify summary for `feature` command

 Will merge to 'master' in the third batch.


* mm/remote-helpers-doc (2013-08-26) 1 commit
  (merged to 'next' on 2013-09-05 at c181b35)
 + Documentation/remote-helpers: document common use-case for private ref

 Will merge to 'master' in the third batch.


* mn/doc-pack-heu-remove-dead-pastebin (2013-08-23) 1 commit
  (merged to 'next' on 2013-09-05 at 5caecec)
 + remove dead pastebin link from pack-heuristics document

 Will merge to 'master' in the third batch.


* ta/user-manual (2013-08-27) 11 commits
  (merged to 'next' on 2013-09-10 at 1361be1)
 + "git prune" is safe
 + Remove irrelevant reference from "Tying it all together"
 + Remove unnecessary historical note from "Object storage format"
 + Improve section "Merging multiple trees"
 + Improve section "Manipulating branches"
 + Simplify "How to make a commit"
 + Fix some typos and improve wording
 + Use "git merge" instead of "git pull ."
 + Use current output for "git repack"
 + Use current "detached HEAD" message
 + Call it "Git User Manual" and remove reference to very old Git version

 Update the user's manual to more recent versions of Git.

 Will merge to 'master' in the third batch.


* tb/precompose-autodetect-fix (2013-08-27) 1 commit
  (merged to 'next' on 2013-09-09 at 9bfdac1)
 + Set core.precomposeunicode to true on e.g. HFS+

 On MacOS X, we detected if the filesystem needs the "pre-composed
 unicode strings" workaround, but did not automatically enable it.
 Now we do.

 Will merge to 'master' in the third batch.


* jx/branch-vv-always-compare-with-upstream (2013-08-26) 2 commits
 - status: always show tracking branch even no change
 - branch: report invalid tracking branch as gone

 "git branch -v -v" (and "git status") did not distinguish among a
 branch that does not build on any other branch, a branch that is in
 sync with the branch it builds on, and a branch that is configured
 to build on some other branch that no longer exists.

 Will merge to 'next'.


* nd/fetch-into-shallow (2013-08-28) 7 commits
  (merged to 'next' on 2013-09-09 at 87a3b99)
 + Add testcase for needless objects during a shallow fetch
 + list-objects: mark more commits as edges in mark_edges_uninteresting
 + list-objects: reduce one argument in mark_edges_uninteresting
 + upload-pack: delegate rev walking in shallow fetch to pack-objects
 + shallow: add setup_temporary_shallow()
 + shallow: only add shallow graft points to new shallow file
 + move setup_alternate_shallow and write_shallow_commits to shallow.c

 When there is no sufficient overlap between old and new history
 during a fetch into a shallow repository, we unnecessarily sent
 objects the sending side knows the receiving end has.

 Will merge to 'master' in the fourth batch.


* ks/p4-view-spec (2013-09-03) 2 commits
  (merged to 'next' on 2013-09-10 at 8ceb2ec)
 + git p4: implement view spec wildcards with "p4 where"
 + git p4 test: sanitize P4CHARSET

 Replaced with a reroll that was whitespace damaged.

 Will merge to 'master' in the third batch.


* tr/merge-recursive-index-only (2013-07-07) 3 commits
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: untangle double meaning of o->call_depth
 - merge-recursive: remove dead conditional in update_stages()

 Will hold, until we get any user.


* jc/reflog-doc (2013-06-19) 1 commit
 - setup_reflog_action: document the rules for using GIT_REFLOG_ACTION

 Document rules to use GIT_REFLOG_ACTION variable in the scripted
 Porcelain.  git-rebase--interactive locally violates this, but it
 is a leaf user that does not call out to or dot-sources other
 scripts, so fixing it is not all that urgent.


* jn/add-2.0-u-A-sans-pathspec (2013-04-26) 1 commit
 - git add: -u/-A now affects the entire working tree

 Will cook in 'next' until Git 2.0.


* jc/core-checkstat-2.0 (2013-05-06) 1 commit
 - core.statinfo: remove as promised in Git 2.0

 Will cook in 'next' until Git 2.0.


* jc/push-2.0-default-to-simple (2013-06-18) 1 commit
 - push: switch default from "matching" to "simple"

 Will cook in 'next' until Git 2.0.


* jc/add-2.0-ignore-removal (2013-04-22) 1 commit
 - git add <pathspec>... defaults to "-A"

 Updated endgame for "git add <pathspec>" that defaults to "--all"
 aka "--no-ignore-removal".

 Will cook in 'next' until Git 2.0.


* jc/hold-diff-remove-q-synonym-for-no-deletion (2013-07-19) 1 commit
 - diff: remove "diff-files -q" in a version of Git in a distant future

 Will cook in 'next' until a distant future.

--------------------------------------------------
[Discarded]

* jc/pull-training-wheel (2013-07-19) 1 commit
  (merged to 'next' on 2013-08-28 at c39bd15)
 + pull: require choice between rebase/merge on non-fast-forward pull

 Originally merged to 'next' on 2013-07-22

 Make "git pull" (without arguments that say what branch to
 integrate from where) refuse with "it does not fast forward; choose
 between 'pull --merge' and 'pull --rebase'".

 This topic has been reverted from 'next'.  Will wait for the
 conclusion of the discussion to seek a more user-friendly
 alternative; it is likely that it will be based on the simpler
 approach Felipe posted earlier.

^ permalink raw reply	[relevance 6%]

* What's cooking in git.git (Sep 2013, #02; Mon, 9)
@ 2013-09-09 22:53  4% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2013-09-09 22:53 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

The second batch of topics are now in 'master'.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* aj/p4-symlink-lose-nl (2013-08-12) 1 commit
  (merged to 'next' on 2013-08-28 at 5ce9ceb)
 + git-p4: Fix occasional truncation of symlink contents.

 Originally merged to 'next' on 2013-08-14


* ap/remote-hg-tilde-is-home-directory (2013-08-09) 1 commit
  (merged to 'next' on 2013-08-28 at 9bfc430)
 + remote-hg: fix path when cloning with tilde expansion

 Originally merged to 'next' on 2013-08-14


* bc/unuse-packfile (2013-08-02) 2 commits
  (merged to 'next' on 2013-08-28 at 9029801)
 + Don't close pack fd when free'ing pack windows
 + sha1_file: introduce close_one_pack() to close packs on fd pressure

 Originally merged to 'next' on 2013-08-06

 Handle memory pressure and file descriptor pressure separately when
 deciding to release pack windows to honor resource limits.


* da/darwin (2013-08-05) 3 commits
  (merged to 'next' on 2013-08-28 at 6e4c5ae)
 + OS X: Fix redeclaration of die warning
 + Makefile: Fix APPLE_COMMON_CRYPTO with BLK_SHA1
 + imap-send: use Apple's Security framework for base64 encoding

 Originally merged to 'next' on 2013-08-05


* db/http-savecookies (2013-08-05) 2 commits
  (merged to 'next' on 2013-08-28 at 22a8464)
 + t5551: Remove header from curl cookie file
 + http: add http.savecookies option to write out HTTP cookies

 Originally merged to 'next' on 2013-08-05


* es/blame-L-more (2013-08-05) 11 commits
  (merged to 'next' on 2013-08-28 at b73cdc9)
 + blame: reject empty ranges -L,+0 and -L,-0
 + t8001/t8002: blame: demonstrate acceptance of bogus -L,+0 and -L,-0
 + blame: reject empty ranges -LX,+0 and -LX,-0
 + t8001/t8002: blame: demonstrate acceptance of bogus -LX,+0 and -LX,-0
 + log: fix -L bounds checking bug
 + t4211: retire soon-to-be unimplementable tests
 + t4211: log: demonstrate -L bounds checking bug
 + blame: fix -L bounds checking bug
 + t8001/t8002: blame: add empty file & partial-line tests
 + t8001/t8002: blame: demonstrate -L bounds checking bug
 + t8001/t8002: blame: decompose overly-large test
 (this branch is used by es/blame-L-twice and es/contacts-blame-L-multi.)

 Originally merged to 'next' on 2013-08-06

 More fixes to the code to parse the "-L" option in "log" and "blame".


* es/blame-L-twice (2013-08-06) 16 commits
  (merged to 'next' on 2013-08-28 at e83ae2e)
 + line-range: reject -L line numbers less than 1
 + t8001/t8002: blame: add tests of -L line numbers less than 1
 + line-range: teach -L^:RE to search from start of file
 + line-range: teach -L:RE to search from end of previous -L range
 + line-range: teach -L^/RE/ to search from start of file
 + line-range-format.txt: document -L/RE/ relative search
 + log: teach -L/RE/ to search from end of previous -L range
 + blame: teach -L/RE/ to search from end of previous -L range
 + line-range: teach -L/RE/ to search relative to anchor point
 + blame: document multiple -L support
 + t8001/t8002: blame: add tests of multiple -L options
 + blame: accept multiple -L ranges
 + blame: inline one-line function into its lone caller
 + range-set: publish API for re-use by git-blame -L
 + line-range-format.txt: clarify -L:regex usage form
 + git-log.txt: place each -L option variation on its own line
 (this branch is used by es/contacts-blame-L-multi; uses es/blame-L-more.)

 Originally merged to 'next' on 2013-08-08

 Teaches "git blame" to take more than one -L ranges.


* es/contacts-blame-L-multi (2013-08-13) 3 commits
  (merged to 'next' on 2013-08-28 at 24ff8b4)
 + contacts: reduce git-blame invocations
 + contacts: gather all blame sources prior to invoking git-blame
 + contacts: validate hunk length earlier
 (this branch uses es/blame-L-more and es/blame-L-twice.)

 Originally merged to 'next' on 2013-08-14


* fc/remote-hg-shared-setup (2013-08-11) 2 commits
  (merged to 'next' on 2013-08-28 at 41ee3fe)
 + remote-hg: add shared repo upgrade
 + remote-hg: ensure shared repo is initialized

 Originally merged to 'next' on 2013-08-14


* fc/unpack-trees-leakfix (2013-08-13) 1 commit
  (merged to 'next' on 2013-08-28 at 3ad1f21)
 + unpack-trees: plug a memory leak

 Originally merged to 'next' on 2013-08-14


* jc/check-x-z (2013-07-11) 4 commits
  (merged to 'next' on 2013-08-28 at a7670ce)
 + check-attr -z: a single -z should apply to both input and output
 + check-ignore -z: a single -z should apply to both input and output
 + check-attr: the name of the character is NUL, not NULL
 + check-ignore: the name of the character is NUL, not NULL

 Originally merged to 'next' on 2013-07-15

 "git check-ignore -z" applied the NUL termination to both its input
 (with --stdin) and its output, but "git check-attr -z" ignored the
 option on the output side.

 This is potentially a backward incompatible fix.  Let's see if
 anybody screams before deciding if we want to do anything to help
 existing users (there may be none).


* jc/diff-filter-negation (2013-07-19) 6 commits
  (merged to 'next' on 2013-08-28 at 5cc7720)
 + diff: deprecate -q option to diff-files
 + diff: allow lowercase letter to specify what change class to exclude
 + diff: reject unknown change class given to --diff-filter
 + diff: preparse --diff-filter string argument
 + diff: factor out match_filter()
 + diff: pass the whole diff_options to diffcore_apply_filter()
 (this branch is used by jc/hold-diff-remove-q-synonym-for-no-deletion.)

 Originally merged to 'next' on 2013-07-22

 Teach "git diff --diff-filter" to express "I do not want to see
 these classes of changes" more directly by listing only the
 unwanted ones in lowercase (e.g. "--diff-filter=d" will show
 everything but deletion) and deprecate "diff-files -q" which did
 the same thing as "--diff-filter=d".


* jc/parseopt-command-modes (2013-07-30) 2 commits
  (merged to 'next' on 2013-08-28 at 738b399)
 + tag: use OPT_CMDMODE
 + parse-options: add OPT_CMDMODE()
 (this branch is used by sb/parseopt-boolean-removal.)

 Many commands use --dashed-option as a operation mode selector
 (e.g. "git tag --delete") that the user can use at most one
 (e.g. "git tag --delete --verify" is a nonsense) and you cannot
 negate (e.g. "git tag --no-delete" is a nonsense).  Make it easier
 for users of parse_options() to enforce these restrictions.


* jc/push-cas (2013-08-02) 9 commits
  (merged to 'next' on 2013-08-28 at 784281f)
 + push: teach --force-with-lease to smart-http transport
 + send-pack: fix parsing of --force-with-lease option
 + t5540/5541: smart-http does not support "--force-with-lease"
 + t5533: test "push --force-with-lease"
 + push --force-with-lease: tie it all together
 + push --force-with-lease: implement logic to populate old_sha1_expect[]
 + remote.c: add command line option parser for "--force-with-lease"
 + builtin/push.c: use OPT_BOOL, not OPT_BOOLEAN
 + cache.h: move remote/connect API out of it

 Originally merged to 'next' on 2013-08-05

 Allow a safer "rewind of the remote tip" push than blind "--force",
 by requiring that the overwritten remote ref to be unchanged since
 the new history to replace it was prepared.

 The machinery is more or less ready.  The "--force" option is again
 the big red button to override any safety, thanks to J6t's sanity
 (the original round allowed --lockref to defeat --force).

 The logic to choose the default implemented here is fragile
 (e.g. "git fetch" after seeing a failure will update the
 remote-tracking branch and will make the next "push" pass,
 defeating the safety pretty easily).  It is suitable only for the
 simplest workflows, and it may hurt users more than it helps them.


* jc/transport-do-not-use-connect-twice-in-fetch (2013-08-28) 6 commits
  (merged to 'next' on 2013-08-29 at f88a6da)
 + builtin/fetch.c: Fix a sparse warning
  (merged to 'next' on 2013-08-28 at 2ed86df)
 + fetch: work around "transport-take-over" hack
 + fetch: refactor code that fetches leftover tags
 + fetch: refactor code that prepares a transport
 + fetch: rename file-scope global "transport" to "gtransport"
 + t5802: add test for connect helper

 Originally merged to 'next' on 2013-08-20

 The auto-tag-following code in "git fetch" tries to reuse the same
 transport twice when the serving end does not cooperate and does
 not give tags that point to commits that are asked for as part of
 the primary transfer.  Unfortunately, Git-aware transport helper
 interface is not designed to be used more than once, hence this
 does not work over smart-http transfer.


* jc/url-match (2013-08-09) 7 commits
  (merged to 'next' on 2013-08-28 at 2a9fd23)
 + builtin/config.c: compilation fix
 + config: "git config --get-urlmatch" parses section.<url>.key
 + builtin/config: refactor collect_config()
 + config: parse http.<url>.<variable> using urlmatch
 + config: add generic callback wrapper to parse section.<url>.key
 + config: add helper to normalize and match URLs
 + http.c: fix parsing of http.sslCertPasswordProtected variable

 Originally merged to 'next' on 2013-08-12

 Allow section.<urlpattern>.var configuration variables to be
 treated as a "virtual" section.var given a URL, and use the
 mechanism to enhance http.* configuration variables.

 This is a reroll of Kyle J. McKay's work.


* jk/cat-file-batch-optim (2013-08-05) 1 commit
  (merged to 'next' on 2013-08-28 at 624e60d)
 + cat-file: only split on whitespace when %(rest) is used

 Originally merged to 'next' on 2013-08-06

 Rework the reverted change to `cat-file --batch-check`.


* jk/fast-import-empty-ls (2013-06-23) 4 commits
  (merged to 'next' on 2013-08-28 at 876a39d)
 + fast-import: allow moving the root tree
 + fast-import: allow ls or filecopy of the root tree
 + fast-import: set valid mode on root tree in "ls"
 + t9300: document fast-import empty path issues

 Originally merged to 'next' on 2013-07-22


* jk/mailmap-incomplete-line (2013-08-28) 1 commit
  (merged to 'next' on 2013-09-04 at e77e887)
 + mailmap: handle mailmap blobs without trailing newlines

 Will merge later to 'maint'.


* jl/some-submodule-config-are-not-boolean (2013-08-19) 1 commit
  (merged to 'next' on 2013-08-28 at 7fabc3e)
 + avoid segfault on submodule.*.path set to an empty "true"

 Originally merged to 'next' on 2013-08-20


* jl/submodule-mv (2013-08-06) 5 commits
  (merged to 'next' on 2013-08-28 at 4ec6b41)
 + rm: delete .gitmodules entry of submodules removed from the work tree
 + mv: update the path entry in .gitmodules for moved submodules
 + submodule.c: add .gitmodules staging helper functions
 + mv: move submodules using a gitfile
 + mv: move submodules together with their work trees
 (this branch is tangled with nd/magic-pathspec.)

 Originally merged to 'next' on 2013-08-08

 "git mv A B" when moving a submodule A does "the right thing",
 inclusing relocating its working tree and adjusting the paths in
 the .gitmodules file.


* km/svn-1.8-serf-only (2013-07-18) 3 commits
  (merged to 'next' on 2013-08-28 at 1119134)
 + Git.pm: revert _temp_cache use of temp_is_locked
 + git-svn: allow git-svn fetching to work using serf
 + Git.pm: add new temp_is_locked function

 Originally merged to 'next' on 2013-07-19

 Subversion 1.8.0 that was recently released breaks older subversion
 clients coming over http/https in various ways.


* mm/no-shell-escape-in-die-message (2013-08-07) 1 commit
  (merged to 'next' on 2013-08-28 at 86b300f)
 + die_with_status: use "printf '%s\n'", not "echo"

 Originally merged to 'next' on 2013-08-08

 Fixes a minor bug in "git rebase -i" (there could be others, as the
 root cause is pretty generic) where the code feeds a random, data
 dependeant string to 'echo' and expects it to come out literally.


* ms/fetch-prune-configuration (2013-07-18) 1 commit
  (merged to 'next' on 2013-08-28 at fa6ffc7)
 + fetch: make --prune configurable

 Originally merged to 'next' on 2013-07-21

 Allow fetch.prune and remote.*.prune configuration variables to be set,
 and "git fetch" to behave as if "--prune" is given.

 "git fetch" that honors remote.*.prune is fine, but I wonder if we
 should somehow make "git push" aware of it as well.  Perhaps
 remote.*.prune should not be just a boolean, but a 4-way "none",
 "push", "fetch", "both"?


* nd/clone-connectivity-shortcut (2013-07-23) 1 commit
  (merged to 'next' on 2013-08-28 at d227f9f)
 + smart http: use the same connectivity check on cloning

 Originally merged to 'next' on 2013-07-30


* nd/gc-lock-against-each-other (2013-08-09) 1 commit
  (merged to 'next' on 2013-08-28 at 46e072b)
 + gc: reject if another gc is running, unless --force is given

 Originally merged to 'next' on 2013-08-14


* nd/magic-pathspec (2013-09-05) 50 commits
  (merged to 'next' on 2013-09-05 at b832b8d)
 + add: lift the pathspec magic restriction on "add -p"
 + pathspec: catch prepending :(prefix) on pathspec with short magic
  (merged to 'next' on 2013-08-28 at 305c6e9)
 + rm: do not set a variable twice without intermediate reading.
 + t6131 - skip tests if on case-insensitive file system
 + parse_pathspec: accept :(icase)path syntax
 + pathspec: support :(glob) syntax
 + pathspec: make --literal-pathspecs disable pathspec magic
 + pathspec: support :(literal) syntax for noglob pathspec
 + kill limit_pathspec_to_literal() as it's only used by parse_pathspec()
 + parse_pathspec: preserve prefix length via PATHSPEC_PREFIX_ORIGIN
 + parse_pathspec: make sure the prefix part is wildcard-free
 + rename field "raw" to "_raw" in struct pathspec
 + tree-diff: remove the use of pathspec's raw[] in follow-rename codepath
 + remove match_pathspec() in favor of match_pathspec_depth()
 + remove init_pathspec() in favor of parse_pathspec()
 + remove diff_tree_{setup,release}_paths
 + convert common_prefix() to use struct pathspec
 + convert add_files_to_cache to take struct pathspec
 + convert {read,fill}_directory to take struct pathspec
 + convert refresh_index to take struct pathspec
 + convert report_path_error to take struct pathspec
 + checkout: convert read_tree_some to take struct pathspec
 + convert unmerge_cache to take struct pathspec
 + convert run_add_interactive to use struct pathspec
 + convert read_cache_preload() to take struct pathspec
 + line-log: convert to use parse_pathspec
 + reset: convert to use parse_pathspec
 + add: convert to use parse_pathspec
 + check-ignore: convert to use parse_pathspec
 + archive: convert to use parse_pathspec
 + ls-files: convert to use parse_pathspec
 + rm: convert to use parse_pathspec
 + checkout: convert to use parse_pathspec
 + rerere: convert to use parse_pathspec
 + status: convert to use parse_pathspec
 + commit: convert to use parse_pathspec
 + clean: convert to use parse_pathspec
 + guard against new pathspec magic in pathspec matching code
 + parse_pathspec: support prefixing original patterns
 + parse_pathspec: support stripping/checking submodule paths
 + parse_pathspec: support stripping submodule trailing slashes
 + parse_pathspec: add special flag for max_depth feature
 + convert some get_pathspec() calls to parse_pathspec()
 + parse_pathspec: add PATHSPEC_PREFER_{CWD,FULL} flags
 + parse_pathspec: save original pathspec for reporting
 + add parse_pathspec() that converts cmdline args to struct pathspec
 + pathspec: add copy_pathspec
 + pathspec: i18n-ize error strings in pathspec parsing code
 + move struct pathspec and related functions to pathspec.[ch]
 + clean: remove unused variable "seen"
 (this branch is tangled with jl/submodule-mv.)

 Originally merged to 'next' on 2013-07-23

 Use "struct pathspec" interface in more places, instead of array of
 characters, the latter of which cannot express magic pathspecs
 (e.g. ":(icase)makefile" that matches both Makefile and makefile).


* nd/sq-quote-buf (2013-07-30) 3 commits
  (merged to 'next' on 2013-08-28 at d0ffd55)
 + quote: remove sq_quote_print()
 + tar-tree: remove dependency on sq_quote_print()
 + for-each-ref, quote: convert *_quote_print -> *_quote_buf

 Originally merged to 'next' on 2013-08-01

 Code simplification as a preparatory step to something larger.


* rr/feed-real-path-to-editor (2013-07-29) 1 commit
  (merged to 'next' on 2013-08-28 at 7458fa4)
 + editor: use canonicalized absolute path

 Originally merged to 'next' on 2013-07-30


* sb/diff-delta-remove-needless-comparison (2013-08-18) 1 commit
  (merged to 'next' on 2013-08-28 at ba09c3f)
 + create_delta_index: simplify condition always evaluating to true

 Originally merged to 'next' on 2013-08-20


* sb/misc-cleanup (2013-08-09) 3 commits
  (merged to 'next' on 2013-08-28 at bc2045b)
 + rm: remove unneeded null pointer check
 + diff: fix a possible null pointer dereference
 + diff: remove ternary operator evaluating always to true

 Originally merged to 'next' on 2013-08-14


* sb/parseopt-boolean-removal (2013-08-07) 9 commits
  (merged to 'next' on 2013-08-28 at 2f3f21f)
 + revert: use the OPT_CMDMODE for parsing, reducing code
 + checkout-index: fix negations of even numbers of -n
 + config parsing options: allow one flag multiple times
 + hash-object: replace stdin parsing OPT_BOOLEAN by OPT_COUNTUP
 + branch, commit, name-rev: ease up boolean conditions
 + checkout: remove superfluous local variable
 + log, format-patch: parsing uses OPT__QUIET
 + Replace deprecated OPT_BOOLEAN by OPT_BOOL
 + Remove deprecated OPTION_BOOLEAN for parsing arguments
 (this branch uses jc/parseopt-command-modes.)

 Convert most uses of OPT_BOOLEAN/OPTION_BOOLEAN that can use
 OPT_BOOL/OPTION_BOOLEAN which have much saner semantics, and turn
 remaining ones into OPT_SET_INT, OPT_COUNTUP, etc. as necessary.


* sg/bash-prompt-lf-in-cwd-test (2013-08-18) 1 commit
  (merged to 'next' on 2013-08-28 at eb449b5)
 + bash prompt: test the prompt with newline in repository path

 Originally merged to 'next' on 2013-08-20


* sp/clip-read-write-to-8mb (2013-08-20) 2 commits
  (merged to 'next' on 2013-08-28 at c9840d7)
 + Revert "compat/clipped-write.c: large write(2) fails on Mac OS X/XNU"
 + xread, xwrite: limit size of IO to 8MB

 Originally merged to 'next' on 2013-08-22

 Send a large request to read(2)/write(2) as a smaller but still
 reasonably large chunks, which would improve the latency when the
 operation needs to be killed and incidentally works around broken
 64-bit systems that cannot take a 2GB write or read in one go.


* tg/index-struct-sizes (2013-08-20) 1 commit
  (merged to 'next' on 2013-08-28 at c815042)
 + read-cache: use fixed width integer types

 Originally merged to 'next' on 2013-08-22

 The code that reads from a region that mmaps an on-disk index
 assumed that "int"/"short" are always 32/16 bits.


* tr/fd-gotcha-fixes (2013-08-06) 1 commit
  (merged to 'next' on 2013-08-28 at 5305271)
 + t0070: test that git_mkstemps correctly checks return value of open()

 Originally merged to 'next' on 2013-08-08

 Finishing touches to an earlier fix already in 'master'.


* tr/log-full-diff-keep-true-parents (2013-08-05) 2 commits
  (merged to 'next' on 2013-08-28 at e86ec11)
 + log: use true parents for diff when walking reflogs
 + log: use true parents for diff even when rewriting

 Originally merged to 'next' on 2013-08-08

 Output from "git log --full-diff -- <pathspec>" looked strange,
 because comparison was done with the previous ancestor that touched
 the specified <pathspec>, causing the patches for paths outside the
 pathspec to show more than the single commit has changed.

 Tweak "git reflog -p" for the same reason using the same mechanism.

--------------------------------------------------
[New Topics]

* js/add-i-mingw (2013-09-04) 1 commit
 - add--interactive: fix external command invocation on Windows

 The implementation of "add -i" has a crippling code to work around
 ActiveState Perl limitation but it by mistake also triggered on Git
 for Windows where MSYS perl is used.

 Will merge to 'next'.


* rh/ishes-doc (2013-09-04) 7 commits
 - glossary: fix and clarify the definition of 'ref'
 - revisions.txt: fix and clarify <rev>^{<type>}
 - glossary: more precise definition of tree-ish (a.k.a. treeish)
 - use 'commit-ish' instead of 'committish'
 - use 'tree-ish' instead of 'treeish'
 - glossary: define commit-ish (a.k.a. committish)
 - glossary: mention 'treeish' as an alternative to 'tree-ish'

 We liberally use "committish" and "commit-ish" (and "treeish" and
 "tree-ish"); as these are non-words, let's unify these terms to
 their dashed form.  More importantly, clarify the documentation on
 object peeling using these terms.

 Will merge to 'next'.


* jc/commit-is-spelled-with-two-ems (2013-09-05) 2 commits
  (merged to 'next' on 2013-09-05 at 982aef2)
 + typofix: cherry is spelled with two ars
 + typofix: commit is spelled with two ems

 Will merge to 'master'.


* bc/http-backend-allow-405 (2013-09-09) 1 commit
 - http-backend: provide Allow header for 405

 When the webserver responds with "405 Method Not Allowed", it
 should tell the client what methods are allowed with the "Allow"
 header.

 Will merge to 'next'.


* dw/check-ignore-sans-index (2013-09-05) 2 commits
 - SQUASH??? do not let --no-index squat on short-and-sweet -i for now
 - check-ignore: Add option to ignore index contents

 "git check-ignore" follows the same rule as "git add" and "git
 status" in that the ignore/exclude mechanism does not take effect
 on paths that are already tracked.  With "--no-index" option, it
 can be used to diagnose which paths that should have been ignored
 have been mistakenly added to the index.

 Will squash the tip in and merge to 'next'.


* hu/cherry-pick-previous-branch (2013-09-09) 1 commit
 - cherry-pick: allow "-" as abbreviation of '@{-1}'

 Just like "git checkout -" knows to check out and "git merge -"
 knows to merge the branch you were previously on, teach "git
 cherry-pick" to understand "-" as the previous branch.

 Will merge to 'next'.


* jh/checkout-auto-tracking (2013-09-09) 5 commits
 - branch.c: Relax unnecessary requirement on upstream's remote ref name
 - t3200: Add test demonstrating minor regression in 41c21f2
 - Refer to branch.<name>.remote/merge when documenting --track
 - t3200: Minor fix when preparing for tracking failure
 - t2024: Fix &&-chaining and a couple of typos

 Fix a minor regression in v1.8.3.2 and later that made it
 impossible to base your local work on anything but a local branch
 of the upstream repository you are tracking from.

 Will merge to 'next'.


* jk/remove-remote-helpers-in-python (2013-09-09) 1 commit
 - git_remote_helpers: remove little used Python library

 Remove now disused remote-helpers framework for helpers written in
 Python.

 Will merge to 'next'.


* jk/upload-pack-keepalive (2013-09-09) 2 commits
 - upload-pack: bump keepalive default to 5 seconds
 - upload-pack: send keepalive packets during pack computation

 When running "fetch -q", a long silence while the sender side
 computes the set of objects to send can be mistaken by proxies as
 dropped connection.

 Will merge to 'next'.


* mm/rebase-continue-freebsd-WB (2013-09-09) 1 commit
 - rebase: fix run_specific_rebase's use of "return" on FreeBSD

 Work around a bug in FreeBSD shell that caused a regression to "git
 rebase" in v1.8.4.  It would be lovely to hear from FreeBSD folks a
 success report to make sure we didn't miss any other use of a bare
 "return" from dot-sourced script.

 Will merge to 'next'.


* ss/doclinks (2013-09-06) 1 commit
 - Documentation: make AsciiDoc links always point to HTML files

 When we converted many documents that were traditionally text-only
 to be formatted to AsciiDoc, we did not update links that point at
 them to refer to the formatted HTML files.

 Will merge to 'next'.


* uh/git-svn-serf-fix (2013-09-06) 1 commit
 - git-svn: fix termination issues for remote svn connections

 "git-svn" used with SVN 1.8.0 when talking over https:// connection
 dumped core due to a bug in the serf library that SVN uses.  Work
 it around on our side, even though the SVN side is being fixed.

--------------------------------------------------
[Stalled]

* rv/send-email-cache-generated-mid (2013-08-21) 2 commits
 - git-send-email: Cache generated message-ids, use them when prompting
 - git-send-email: add optional 'choices' parameter to the ask sub


* rj/read-default-config-in-show-ref-pack-refs (2013-06-17) 3 commits
 - ### DONTMERGE: needs better explanation on what config they need
 - pack-refs.c: Add missing call to git_config()
 - show-ref.c: Add missing call to git_config()

 The changes themselves are probably good, but it is unclear what
 basic setting needs to be read for which exact operation.

 Waiting for clarification.
 $gmane/228294


* jh/shorten-refname (2013-05-07) 4 commits
 - t1514: refname shortening is done after dereferencing symbolic refs
 - shorten_unambiguous_ref(): Fix shortening refs/remotes/origin/HEAD to origin
 - t1514: Demonstrate failure to correctly shorten "refs/remotes/origin/HEAD"
 - t1514: Add tests of shortening refnames in strict/loose mode

 When remotes/origin/HEAD is not a symbolic ref, "rev-parse
 --abbrev-ref remotes/origin/HEAD" ought to show "origin", not
 "origin/HEAD", which is fixed with this series (if it is a symbolic
 ref that points at remotes/origin/something, then it should show
 "origin/something" and it already does).

 Expecting a reroll, as an early part of a larger series.
 $gmane/225137


* mg/more-textconv (2013-05-10) 7 commits
 - grep: honor --textconv for the case rev:path
 - grep: allow to use textconv filters
 - t7008: demonstrate behavior of grep with textconv
 - cat-file: do not die on --textconv without textconv filters
 - show: honor --textconv for blobs
 - diff_opt: track whether flags have been set explicitly
 - t4030: demonstrate behavior of show with textconv

 Make "git grep" and "git show" pay attention to --textconv when
 dealing with blob objects.

 I thought this was pretty well designed and executed, but it seems
 there are some doubts on the list; kicked back to 'pu'.


* jc/format-patch (2013-04-22) 2 commits
 - format-patch: --inline-single
 - format-patch: rename "no_inline" field

 A new option to send a single patch to the standard output to be
 appended at the bottom of a message.  I personally have no need for
 this, but it was easy enough to cobble together.  Tests, docs and
 stripping out more MIMEy stuff are left as exercises to interested
 parties.

 Not ready for inclusion.

 Will discard unless we hear from anybody who is interested in
 tying its loose ends.


* jk/gitweb-utf8 (2013-04-08) 4 commits
 - gitweb: Fix broken blob action parameters on blob/commitdiff pages
 - gitweb: Don't append ';js=(0|1)' to external links
 - gitweb: Make feed title valid utf8
 - gitweb: Fix utf8 encoding for blob_plain, blobdiff_plain, commitdiff_plain, and patch

 Various fixes to gitweb.

 Drew Northup volunteered to take a look into this.
 $gmane/226216


* jc/show-branch (2013-06-07) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit before sending it out.

--------------------------------------------------
[Cooking]

* fc/contrib-bzr-hg-fixes (2013-09-03) 10 commits
 - contrib/remote-helpers: quote variable references in redirection targets
 - contrib/remote-helpers: style updates for test scripts
 - remote-hg: use notes to keep track of Hg revisions
 - remote-helpers: cleanup more global variables
 - remote-helpers: trivial style fixes
 - remote-hg: improve basic test
 - remote-hg: add missing &&s in the test
 - remote-hg: fix test
 - remote-bzr: make bzr branches configurable per-repo
 - remote-bzr: fix export of utf-8 authors

 Will merge to 'next'.


* jc/pager-configuration-doc (2013-08-29) 1 commit
  (merged to 'next' on 2013-09-05 at 3169083)
 + config: rewrite core.pager documentation

 It was unclear in the documentation how various configurations and
 environment variables determine which pager is eventually used.

 Will merge to 'master'.


* np/pack-v4 (2013-09-03) 24 commits
 - Document pack v4 format
 - initial pack index v3 support on the read side
 - pack v4: add progress display
 - pack v4: normalize pack name to properly generate the pack index file name
 - pack index v3
 - pack v4: relax commit parsing a bit
 - pack v4: honor pack.compression config option
 - pack v4: load delta candidate for encoding tree objects
 - pack v4: tree object delta encoding
 - pack v4: object writing
 - pack v4: object data copy
 - pack v4: object headers
 - pack v4: creation code
 - pack v4: dictionary table output
 - pack v4: tree object encoding
 - pack v4: commit object encoding
 - pack v4: basic references encoding
 - pack v4: move to struct pack_idx_entry and get rid of our own struct idx_entry
 - pack v4: split the object list and dictionary creation
 - pack v4: add commit object parsing
 - pack v4: add tree entry mode support to dictionary entries
 - pack v4: scan tree objects
 - export packed_object_info()
 - pack v4: initial pack dictionary structure and code

 Will replace with a newer version of the series.


* jk/free-tree-buffer (2013-06-06) 1 commit
  (merged to 'next' on 2013-09-09 at 3576189)
 + clear parsed flag when we free tree buffers

 Will merge to 'master'.


* jk/has-sha1-file-retry-packed (2013-08-30) 1 commit
  (merged to 'next' on 2013-09-09 at fc42e9b)
 + has_sha1_file: re-check pack directory before giving up

 When an object is not found after checking the packfiles and then
 loose object directory, read_sha1_file() re-checks the packfiles to
 prevent racing with a concurrent repacker; teach the same logic to
 has_sha1_file().

 Will merge to 'master'.


* ab/gitweb-author-initials (2013-08-30) 1 commit
  (merged to 'next' on 2013-09-09 at ecb924d)
 + gitweb: Fix the author initials in blame for non-ASCII names

 Will merge to 'master'.


* bk/refs-multi-update (2013-09-09) 8 commits
 - update-ref: add test cases covering --stdin signature
 - update-ref: support multiple simultaneous updates
 - refs: add update_refs for multiple simultaneous updates
 - refs: add function to repack without multiple refs
 - refs: factor delete_ref loose ref step into a helper
 - refs: factor update_ref steps into helpers
 - refs: report ref type from lock_any_ref_for_update
 - reset: rename update_refs to reset_refs

 Give "update-refs" a "--stdin" option to read multiple update
 requests and perform them in an all-or-none fashion.

 Comments?


* fc/at-head (2013-09-09) 3 commits
 - SQUASH??? fixup
 - Add new @ shortcut for HEAD
 - sha1-name: pass len argument to interpret_branch_name()

 Attempt to resurrect "Type @ for HEAD"; the bottom one seems to be
 a genuine code improvement, but identifying cases where "@" means
 HEAD were harder than it should have been.  I think the result of
 squashing the tip one in covers all the necessary cases.

 Will squash the tip in and merge to 'next'.


* fc/fast-export (2013-09-03) 2 commits
  (merged to 'next' on 2013-09-09 at 8d5d396)
 + fast-export: refactor get_tags_and_duplicates()
 + fast-export: make extra_refs global

 Code simpification.

 Will merge to 'master'.


* fc/rev-parse-test-updates (2013-09-03) 4 commits
  (merged to 'next' on 2013-09-09 at 92c51ef)
 + rev-parse test: use standard test functions for setup
 + rev-parse test: use test_cmp instead of "test" builtin
 + rev-parse test: use test_must_fail, not "if <command>; then false; fi"
 + rev-parse test: modernize quoting and whitespace

 Modernize tests.

 Will merge to 'master'.


* fc/t3200-fixes (2013-09-03) 3 commits
  (merged to 'next' on 2013-09-09 at 3626363)
 + t: branch: fix broken && chains
 + t: branch: fix typo
 + t: branch: trivial style fix

 Will merge to 'master'.


* fc/trivial (2013-09-08) 5 commits
  (merged to 'next' on 2013-09-09 at a8ad2e1)
 + pull: use $curr_branch_short more
 + add: trivial style cleanup
 + reset: trivial style cleanup
 + branch: trivial style fix
 + reset: trivial refactoring

 Will merge to 'master'.


* jc/ref-excludes (2013-09-03) 2 commits
 - document --exclude option
 - revision: introduce --exclude=<glob> to tame wildcards

 People often wished a way to tell "git log --branches" (and "git
 log --remotes --not --branches") to exclude some local branches
 from the expansion of "--branches" (similarly for "--tags", "--all"
 and "--glob=<pattern>").  Now they have one.

 Will merge to 'next'.


* jk/pager-bypass-cat-for-default-pager (2013-09-03) 1 commit
  (merged to 'next' on 2013-09-09 at c9cfbaa)
 + pager: turn on "cat" optimization for DEFAULT_PAGER

 If a build-time fallback is set to "cat" instead of "less", we
 should apply the same "no subprocess or pipe" optimization as we
 apply to user-supplied GIT_PAGER=cat.

 Will merge to 'master'.


* nd/git-dir-pointing-at-gitfile (2013-09-03) 1 commit
  (merged to 'next' on 2013-09-09 at 5b0a4bf)
 + Make setup_git_env() resolve .git file when $GIT_DIR is not specified

 We made sure that we notice the user-supplied GIT_DIR is actually a
 gitfile, but failed to do so when the default ".git" is a gitfile.

 Will merge to 'master'.


* nr/git-cd-to-a-directory (2013-09-09) 1 commit
 - git: run in a directory given with -C option

 Just like "make -C <directory>", make "git -C <directory> ..." to
 go there before doing anything else.

 Will merge to 'next'.


* rh/peeling-tag-to-tag (2013-09-03) 2 commits
 - peel_onion: do not assume length of x_type globals
 - peel_onion(): add support for <rev>^{tag}

 Make "foo^{tag}" to peel a tag to itself, i.e. no-op., and fail if
 "foo" is not a tag.

 Will merge to 'next'.


* cc/replace-with-the-same-type (2013-09-09) 8 commits
 - Doc: 'replace' merge and non-merge commits
 - t6050-replace: use some long option names
 - replace: allow long option names
 - Documentation/replace: add Creating Replacement Objects section
 - t6050-replace: add test to clean up all the replace refs
 - t6050-replace: test that objects are of the same type
 - Documentation/replace: state that objects must be of the same type
 - replace: forbid replacing an object with one of a different type

 Using the replace mechanism to swap an object with another object
 of a different type can introduce inconsistency (e.g. a tree
 expects an object name to refer to a blob, but the blob object can
 be mistakenly or maliciously replaced with an object with a
 different type). Attempt to forbid such.

 Will merge to 'next'.


* jx/clean-interactive (2013-08-28) 1 commit
  (merged to 'next' on 2013-09-09 at 477fec6)
 + documentation: clarify notes for clean.requireForce

 Finishing touches to update the document to adjust to a new option
 "git clean" learned recently.

 Will merge to 'master'.


* mm/status-without-comment-char (2013-09-06) 6 commits
 - status: add missing blank line after list of "other" files
 - tests: don't set status.displayCommentPrefix file-wide
 - status: disable display of '#' comment prefix by default
 - submodule summary: ignore --for-status option
 - wt-status: use argv_array API
 - builtin/stripspace.c: fix broken indentation

 Allow "git status" to omit the prefix to make its output a comment
 in a commit log editor, which is not necessary for human
 consumption.

 We may want to tighten the output to omit unnecessary trailing
 blank lines, but that does not have to be in the scope of this
 series.

 Will merge to 'next'.


* js/xread-in-full (2013-08-20) 1 commit
  (merged to 'next' on 2013-09-04 at 5bfb049)
 + stream_to_pack: xread does not guarantee to read all requested bytes

 Originally merged to 'next' on 2013-08-20

 A call to xread() was used without a loop around to cope with short
 read in the codepath to stream new contents to a pack.

 Will merge to 'master' in the third batch.


* sb/mailmap-freeing-NULL-is-ok (2013-08-20) 1 commit
  (merged to 'next' on 2013-09-04 at c831015)
 + mailmap: remove redundant check for freeing memory

 Originally merged to 'next' on 2013-08-20

 Will merge to 'master' in the third batch.


* bc/submodule-status-ignored (2013-09-04) 2 commits
 - submodule: don't print status output with ignore=all
 - submodule: fix confusing variable name

 Originally merged to 'next' on 2013-08-22

 Will merge to 'next'.


* jk/config-int-range-check (2013-09-09) 5 commits
  (merged to 'next' on 2013-09-09 at 9ab779d)
 + git-config: always treat --int as 64-bit internally
 + config: make numeric parsing errors more clear
 + config: set errno in numeric git_parse_* functions
 + config: properly range-check integer values
 + config: factor out integer parsing from range checks

 Originally merged to 'next' on 2013-08-22

 "git config --int section.var 3g" should somehow diagnose that the
 number does not fit in "int" (on 32-bit platforms anyway) but it
 did not.

 Will merge to 'master'.


* jk/duplicate-objects-in-packs (2013-09-04) 5 commits
  (merged to 'next' on 2013-09-09 at 72f2c3d)
 + t5308: check that index-pack --strict detects duplicate objects
 + test index-pack on packs with recoverable delta cycles
 + add tests for indexing packs with delta cycles
 + sha1-lookup: handle duplicate keys with GIT_USE_LOOKUP
 + test-sha1: add a binary output mode

 A packfile that stores the same object more than once is broken and
 will be rejected.

 Will merge to 'master'.


* mm/mediawiki-dumb-push-fix (2013-09-03) 4 commits
  (merged to 'next' on 2013-09-05 at f8313f4)
 + git-remote-mediawiki: no need to update private ref in non-dumb push
 + git-remote-mediawiki: use no-private-update capability on dumb push
 + transport-helper: add no-private-update capability
 + git-remote-mediawiki: add test and check Makefile targets

 Will merge to 'master'.


* rt/rebase-p-no-merge-summary (2013-08-21) 1 commit
  (merged to 'next' on 2013-09-04 at d8d89ee)
 + rebase --preserve-merges: ignore "merge.log" config

 Originally merged to 'next' on 2013-08-22

 "git rebase -p" internally used the merge machinery, but when
 rebasing, there should not be a need for merge summary.

 Will merge to 'master' in the third batch.


* dw/diff-no-index-doc (2013-08-28) 2 commits
 - diff --no-index: describe in a separate paragraph
 - diff --no-index: clarify operation when not inside a repository

 When the user types "git diff" outside a working tree, thinking he
 is inside one, the current error message that is a single-liner
 "usage: git diff --no-index <path> <path>" may not be sufficient to
 make him realize the mistake. Add "Not a git repository" to the
 error message when we fell into the "--no-index" mode without an
 explicit command line option to instruct us to do so.

 Will merge to 'next'.


* sb/repack-in-c (2013-08-30) 2 commits
 - repack: retain the return value of pack-objects
 - repack: rewrite the shell script in C

 Any further reviews?


* ap/commit-author-mailmap (2013-08-24) 1 commit
  (merged to 'next' on 2013-09-09 at 79d5a20)
 + commit: search author pattern against mailmap

 "git commit --author=$name", when $name is not in the canonical
 "A. U. Thor <au.thor@example.xz>" format, looks for a matching name
 from existing history, but did not consult mailmap to grab the
 preferred author name.

 Will merge to 'master'.


* jk/write-broken-index-with-nul-sha1 (2013-08-28) 1 commit
  (merged to 'next' on 2013-09-09 at 6953f27)
 + write_index: optionally allow broken null sha1s

 Earlier we started rejecting an attempt to add 0{40} object name to
 the index and to tree objects, but it sometimes is necessary to
 allow so to be able to use tools like filter-branch to correct such
 broken tree objects.

 Will merge to 'master'.


* kk/tests-with-no-perl (2013-08-24) 4 commits
  (merged to 'next' on 2013-09-09 at 67510b1)
 + reset test: modernize style
 + t/t7106-reset-unborn-branch.sh: Add PERL prerequisite
 + add -i test: use skip_all instead of repeated PERL prerequisite
 + Make test "using invalid commit with -C" more strict

 Some tests were not skipped under NO_PERL build.

 Will merge to 'master'.


* mm/fast-import-feature-doc (2013-08-25) 1 commit
  (merged to 'next' on 2013-09-05 at 83802e2)
 + Documentation/fast-import: clarify summary for `feature` command

 Will merge to 'master'.


* mm/remote-helpers-doc (2013-08-26) 1 commit
  (merged to 'next' on 2013-09-05 at c181b35)
 + Documentation/remote-helpers: document common use-case for private ref

 Will merge to 'master'.


* mn/doc-pack-heu-remove-dead-pastebin (2013-08-23) 1 commit
  (merged to 'next' on 2013-09-05 at 5caecec)
 + remove dead pastebin link from pack-heuristics document

 Will merge to 'master'.


* ta/user-manual (2013-08-27) 11 commits
 - "git prune" is safe
 - Remove irrelevant reference from "Tying it all together"
 - Remove unnecessary historical note from "Object storage format"
 - Improve section "Merging multiple trees"
 - Improve section "Manipulating branches"
 - Simplify "How to make a commit"
 - Fix some typos and improve wording
 - Use "git merge" instead of "git pull ."
 - Use current output for "git repack"
 - Use current "detached HEAD" message
 - Call it "Git User Manual" and remove reference to very old Git version

 Update the user's manual to more recent versions of Git.

 Will merge to 'next'.


* tb/precompose-autodetect-fix (2013-08-27) 1 commit
  (merged to 'next' on 2013-09-09 at 9bfdac1)
 + Set core.precomposeunicode to true on e.g. HFS+

 On MacOS X, we detected if the filesystem needs the "pre-composed
 unicode strings" workaround, but did not automatically enable it.
 Now we do.

 Will merge to 'master'.


* tf/gitweb-ss-tweak (2013-08-20) 4 commits
  (merged to 'next' on 2013-09-04 at 774bfbe)
 + gitweb: make search help link less ugly
 + gitweb: omit the repository owner when it is unset
 + gitweb: vertically centre contents of page footer
 + gitweb: ensure OPML text fits inside its box

 Originally merged to 'next' on 2013-08-22

 Tweak Gitweb CSS to layout some elements better.

 Will merge to 'master' in the third batch.


* es/rebase-i-respect-core-commentchar (2013-08-18) 1 commit
  (merged to 'next' on 2013-09-04 at 8c1ce68)
 + rebase -i: fix cases ignoring core.commentchar

 Originally merged to 'next' on 2013-08-20

 "rebase -i" forgot that the comment character can be configurable
 while reading its insn sheet.

 Will merge to 'master' in the third batch.


* jx/branch-vv-always-compare-with-upstream (2013-08-26) 2 commits
 - status: always show tracking branch even no change
 - branch: report invalid tracking branch as gone

 "git branch -v -v" (and "git status") did not distinguish among a
 branch that does not build on any other branch, a branch that is in
 sync with the branch it builds on, and a branch that is configured
 to build on some other branch that no longer exists.

 Will merge to 'next'.


* nd/fetch-into-shallow (2013-08-28) 7 commits
  (merged to 'next' on 2013-09-09 at 87a3b99)
 + Add testcase for needless objects during a shallow fetch
 + list-objects: mark more commits as edges in mark_edges_uninteresting
 + list-objects: reduce one argument in mark_edges_uninteresting
 + upload-pack: delegate rev walking in shallow fetch to pack-objects
 + shallow: add setup_temporary_shallow()
 + shallow: only add shallow graft points to new shallow file
 + move setup_alternate_shallow and write_shallow_commits to shallow.c

 When there is no sufficient overlap between old and new history
 during a fetch into a shallow repository, we unnecessarily sent
 objects the sending side knows the receiving end has.

 Will merge to 'master'.


* jc/ls-files-killed-optim (2013-08-23) 4 commits
  (merged to 'next' on 2013-09-04 at 20c2304)
 + dir.c::test_one_path(): work around directory_exists_in_index_icase() breakage
 + t3010: update to demonstrate "ls-files -k" optimization pitfalls
 + ls-files -k: a directory only can be killed if the index has a non-directory
 + dir.c: use the cache_* macro to access the current index

 Originally merged to 'next' on 2013-08-27

 "git ls-files -k" needs to crawl only the part of the working tree
 that may overlap the paths in the index to find killed files, but
 shared code with the logic to find all the untracked files, which
 made it unnecessarily inefficient.

 Will merge to 'master' in the third batch.


* es/rebase-i-no-abbrev (2013-08-25) 3 commits
  (merged to 'next' on 2013-09-04 at 6027805)
 + rebase -i: fix short SHA-1 collision
 + t3404: rebase -i: demonstrate short SHA-1 collision
 + t3404: make tests more self-contained

 Originally merged to 'next' on 2013-08-26

 The commit object names in the insn sheet that was prepared at the
 beginning of "rebase -i" session can become ambiguous as the
 rebasing progresses and the repository gains more commits. Make
 sure the internal record is kept with full 40-hex object names.

 Will merge to 'master' in the third batch.


* ks/p4-view-spec (2013-09-03) 2 commits
 - git p4: implement view spec wildcards with "p4 where"
 - git p4 test: sanitize P4CHARSET

 Replaced with a reroll that was whitespace damaged.

 Waiting for the final Ack.


* nd/push-no-thin (2013-08-13) 1 commit
  (merged to 'next' on 2013-09-04 at faa8c02)
 + push: respect --no-thin

 Originally merged to 'next' on 2013-08-14

 "git push --no-thin" was a no-op by mistake.

 Will merge to 'master' in the third batch.


* sh/pull-rebase-preserve (2013-09-04) 1 commit
  (merged to 'next' on 2013-09-04 at 32a93bb)
 + pull: allow pull to preserve merges when rebasing

 Originally merged to 'next' on 2013-08-14

 "git pull --rebase" always flattened the history; pull.rebase can
 now be set to "preserve" to invoke "rebase --preserve-merges".

 Will merge to 'master' in the third batch.


* jn/post-receive-utf8 (2013-08-05) 3 commits
  (merged to 'next' on 2013-09-04 at 3a3f480)
 + hooks/post-receive-email: set declared encoding to utf-8
 + hooks/post-receive-email: force log messages in UTF-8
 + hooks/post-receive-email: use plumbing instead of git log/show

 Originally merged to 'next' on 2013-08-20

 Update post-receive-email script to make sure the message contents
 and pathnames are encoded consistently in UTF-8.

 Will merge to 'master' in the third batch.


* tr/merge-recursive-index-only (2013-07-07) 3 commits
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: untangle double meaning of o->call_depth
 - merge-recursive: remove dead conditional in update_stages()

 Will hold, until we get any user.


* jc/pull-training-wheel (2013-07-19) 1 commit
  (merged to 'next' on 2013-08-28 at c39bd15)
 + pull: require choice between rebase/merge on non-fast-forward pull

 Originally merged to 'next' on 2013-07-22

 Make "git pull" (without arguments that say what branch to
 integrate from where) refuse with "it does not fast forward; choose
 between 'pull --merge' and 'pull --rebase'".

 Will revert the merge, wait for the discussion to settle and
 produce a replacement to queue again. 

 http://thread.gmane.org/gmane.comp.version-control.git/233554/focus=234375


* jc/reflog-doc (2013-06-19) 1 commit
 - setup_reflog_action: document the rules for using GIT_REFLOG_ACTION

 Document rules to use GIT_REFLOG_ACTION variable in the scripted
 Porcelain.  git-rebase--interactive locally violates this, but it
 is a leaf user that does not call out to or dot-sources other
 scripts, so fixing it is not all that urgent.


* jn/add-2.0-u-A-sans-pathspec (2013-04-26) 1 commit
 - git add: -u/-A now affects the entire working tree

 Will cook in 'next' until Git 2.0.


* jc/core-checkstat-2.0 (2013-05-06) 1 commit
 - core.statinfo: remove as promised in Git 2.0

 Will cook in 'next' until Git 2.0.


* jc/push-2.0-default-to-simple (2013-06-18) 1 commit
 - push: switch default from "matching" to "simple"

 Will cook in 'next' until Git 2.0.


* jc/add-2.0-ignore-removal (2013-04-22) 1 commit
 - git add <pathspec>... defaults to "-A"

 Updated endgame for "git add <pathspec>" that defaults to "--all"
 aka "--no-ignore-removal".

 Will cook in 'next' until Git 2.0.


* jc/hold-diff-remove-q-synonym-for-no-deletion (2013-07-19) 1 commit
 - diff: remove "diff-files -q" in a version of Git in a distant future

 Will cook in 'next' until a distant future.

^ permalink raw reply	[relevance 4%]

* What's cooking in git.git (Nov 2012, #01; Sun, 4)
@ 2012-11-04 14:56  6% Jeff King
  0 siblings, 0 replies; 162+ results
From: Jeff King @ 2012-11-04 14:56 UTC (permalink / raw)
  To: git

What's cooking in git.git (Nov 2012, #01; Sun, 4)
--------------------------------------------------

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

The third batch of topics has graduated to master.

You can find the changes described here in the integration branches of
my repository at:

  git://github.com/peff/git.git

Until Junio returns, kernel.org and the other "usual" places will not be
updated.

--------------------------------------------------
[New Topics]

* as/maint-doc-fix-no-post-rewrite (2012-11-02) 1 commit
 - commit: fixup misplacement of --no-post-rewrite description

 Will merge to 'next'.


* fc/remote-bzr (2012-11-04) 3 commits
 - remote-bzr: add simple tests
 - remote-bzr: add support for pushing
 - Add new remote-bzr transport helper

 New remote helper for bzr.


* fc/remote-hg (2012-11-04) 16 commits
 - remote-hg: the author email can be null
 - remote-hg: add option to not track branches
 - remote-hg: add extra author test
 - remote-hg: add tests to compare with hg-git
 - remote-hg: add bidirectional tests
 - test-lib: avoid full path to store test results
 - remote-hg: add basic tests
 - remote-hg: fake bookmark when there's none
 - remote-hg: add compat for hg-git author fixes
 - remote-hg: add support for hg-git compat mode
 - remote-hg: match hg merge behavior
 - remote-hg: make sure the encoding is correct
 - remote-hg: add support to push URLs
 - remote-hg: add support for remote pushing
 - remote-hg: add support for pushing
 - Add new remote-hg transport helper

 New remote helper for hg.

 May want to do one more round of review on the list.

 Most of the discussion so far has been on whether to pursue this versus
 what's in msysgit, and not on the specifics of the code. I'd like to
 put this in next soon, but it probably makes sense for everybody to
 give it a final look-over.


* jk/maint-http-half-auth-fetch (2012-10-31) 2 commits
 - remote-curl: retry failed requests for auth even with gzip
 - remote-curl: hoist gzip buffer size to top of post_rpc

 Fixes fetch from servers that ask for auth only during the actual
 packing phase. This is not really a recommended configuration, but it
 cleans up the code at the same time.

 Will merge to 'next'.


* js/hp-nonstop (2012-10-30) 1 commit
 - fix 'make test' for HP NonStop

 Will merge to 'next'.


* kb/preload-index-more (2012-11-02) 1 commit
 - update-index/diff-index: use core.preloadindex to improve performance

 Use preloadindex in more places, which has a nice speedup on systems
 with slow stat calls (and even on Linux).

 Will merge to 'next'.


* mh/notes-string-list (2012-11-04) 5 commits
 - string_list_add_refs_from_colon_sep(): use string_list_split()
 - notes: fix handling of colon-separated values
 - combine_notes_cat_sort_uniq(): sort and dedup lines all at once
 - Initialize sort_uniq_list using named constant
 - string_list: add a function string_list_remove_empty_items()

 Improve the asymptotic performance of the cat_sort_uniq notes merge
 strategy.

 Will merge to 'next'.


* mh/strbuf-split (2012-11-04) 4 commits
 - strbuf_split*(): document functions
 - strbuf_split*(): rename "delim" parameter to "terminator"
 - strbuf_split_buf(): simplify iteration
 - strbuf_split_buf(): use ALLOC_GROW()

 Cleanups and documentation for strbuf_split.

 Will merge to 'next'.


* mm/maint-doc-commit-edit (2012-11-02) 1 commit
 - Document 'git commit --no-edit' explicitly

 Will merge to 'next'.


--------------------------------------------------
[Graduated to "master"]

* gb/maint-doc-svn-log-window-size (2012-10-26) 1 commit
  (merged to 'next' on 2012-10-29 at ee50b22)
 + Document git-svn fetch --log-window-size parameter

 Will merge to 'master' in the third batch.


* km/maint-doc-git-reset (2012-10-29) 1 commit
  (merged to 'next' on 2012-10-29 at cdb4e8f)
 + doc: git-reset: make "<mode>" optional

 Will merge to 'master' in the third batch.


* mm/maint-doc-remote-tracking (2012-10-25) 1 commit
  (merged to 'next' on 2012-10-25 at 80f1592)
 + Documentation: remote tracking branch -> remote-tracking branch

 We long ago hyphenated "remote-tracking branch"; this
 catches some new instances added since then.

 Will merge to 'master' in the third batch.


* ph/pull-rebase-detached (2012-10-25) 1 commit
  (merged to 'next' on 2012-10-25 at 73d9d14)
 + git-pull: Avoid merge-base on detached head

 Avoids spewing error messages when using "pull --rebase" on a
 detached HEAD.

 Will merge to 'master' in the third batch.


* po/maint-refs-replace-docs (2012-10-25) 1 commit
  (merged to 'next' on 2012-10-25 at 3874c9d)
 + Doc repository-layout: Show refs/replace

 The refs/replace hierarchy was not mentioned in the
 repository-layout docs.

 Will merge to 'master' in the third batch.


* pp/maint-doc-pager-config (2012-10-29) 1 commit
  (merged to 'next' on 2012-10-29 at 434fbd0)
 + Documentation: improve the example of overriding LESS via core.pager

 Will merge to 'master' in the third batch.


* rf/maint-mailmap-off-by-one (2012-10-28) 1 commit
  (merged to 'next' on 2012-10-29 at 8c2214b)
 + mailmap: avoid out-of-bounds memory access

 Will merge to 'master' in the third batch.


* sl/maint-configure-messages (2012-10-25) 1 commit
  (merged to 'next' on 2012-10-25 at e1d7ecd)
 + configure: fix some output message

 Minor message fixes for the configure script.

 Will merge to 'master' in the third batch.


* sz/maint-submodule-reference-arg (2012-10-26) 1 commit
  (merged to 'next' on 2012-10-29 at 1aab03c)
 + submodule add: fix handling of --reference=<repo> option

 Will merge to 'master' in the third batch.


* tb/maint-t9200-case-insensitive (2012-10-28) 1 commit
  (merged to 'next' on 2012-10-29 at 62af90c)
 + Fix t9200 on case insensitive file systems

 Will merge to 'master' in the third batch.


* tj/maint-doc-commit-sign (2012-10-29) 1 commit
  (merged to 'next' on 2012-10-29 at 44c61a0)
 + Add -S, --gpg-sign option to manpage of "git commit"

 Will merge to 'master' in the third batch.

--------------------------------------------------
[Stalled]

* rc/maint-complete-git-p4 (2012-09-24) 1 commit
  (merged to 'next' on 2012-10-29 at af52cef)
 + Teach git-completion about git p4

 Comment from Pete will need to be addressed in a follow-up patch.


* as/test-tweaks (2012-09-20) 7 commits
 - tests: paint unexpectedly fixed known breakages in bold red
 - tests: test the test framework more thoroughly
 - [SQUASH] t/t0000-basic.sh: quoting of TEST_DIRECTORY is screwed up
 - tests: refactor mechanics of testing in a sub test-lib
 - tests: paint skipped tests in bold blue
 - tests: test number comes first in 'not ok $count - $message'
 - tests: paint known breakages in bold yellow

 Various minor tweaks to the test framework to paint its output
 lines in colors that match what they mean better.

 Has the "is this really blue?" issue Peff raised resolved???


* jc/maint-name-rev (2012-09-17) 7 commits
 - describe --contains: use "name-rev --algorithm=weight"
 - name-rev --algorithm=weight: tests and documentation
 - name-rev --algorithm=weight: cache the computed weight in notes
 - name-rev --algorithm=weight: trivial optimization
 - name-rev: --algorithm option
 - name_rev: clarify the logic to assign a new tip-name to a commit
 - name-rev: lose unnecessary typedef

 "git name-rev" names the given revision based on a ref that can be
 reached in the smallest number of steps from the rev, but that is
 not useful when the caller wants to know which tag is the oldest one
 that contains the rev.  This teaches a new mode to the command that
 uses the oldest ref among those which contain the rev.

 I am not sure if this is worth it; for one thing, even with the help
 from notes-cache, it seems to make the "describe --contains" even
 slower. Also the command will be unusably slow for a user who does
 not have a write access (hence unable to create or update the
 notes-cache).

 Stalled mostly due to lack of responses.


* jc/xprm-generation (2012-09-14) 1 commit
 - test-generation: compute generation numbers and clock skews

 A toy to analyze how bad the clock skews are in histories of real
 world projects.

 Stalled mostly due to lack of responses.


* jc/blame-no-follow (2012-09-21) 2 commits
 - blame: pay attention to --no-follow
 - diff: accept --no-follow option

 Teaches "--no-follow" option to "git blame" to disable its
 whole-file rename detection.

 Stalled mostly due to lack of responses.


* jc/doc-default-format (2012-10-07) 2 commits
 - [SQAUSH] allow "cd Doc* && make DEFAULT_DOC_TARGET=..."
 - Allow generating a non-default set of documentation

 Need to address the installation half if this is to be any useful.


* mk/maint-graph-infinity-loop (2012-09-25) 1 commit
 - graph.c: infinite loop in git whatchanged --graph -m

 The --graph code fell into infinite loop when asked to do what the
 code did not expect ;-)

 Anybody who worked on "--graph" wants to comment?
 Stalled mostly due to lack of responses.


* jc/add-delete-default (2012-08-13) 1 commit
 - git add: notice removal of tracked paths by default

 "git add dir/" updated modified files and added new files, but does
 not notice removed files, which may be "Huh?" to some users.  They
 can of course use "git add -A dir/", but why should they?

 Resurrected from graveyard, as I thought it was a worthwhile thing
 to do in the longer term.

 Waiting for comments.


* mb/remote-default-nn-origin (2012-07-11) 6 commits
 - Teach get_default_remote to respect remote.default.
 - Test that plain "git fetch" uses remote.default when on a detached HEAD.
 - Teach clone to set remote.default.
 - Teach "git remote" about remote.default.
 - Teach remote.c about the remote.default configuration setting.
 - Rename remote.c's default_remote_name static variables.

 When the user does not specify what remote to interact with, we
 often attempt to use 'origin'.  This can now be customized via a
 configuration variable.

 Expecting a reroll.

 "The first remote becomes the default" bit is better done as a
 separate step.

--------------------------------------------------
[Cooking]

* mh/ceiling (2012-10-29) 8 commits
 - string_list_longest_prefix(): remove function
 - setup_git_directory_gently_1(): resolve symlinks in ceiling paths
 - longest_ancestor_length(): require prefix list entries to be normalized
 - longest_ancestor_length(): take a string_list argument for prefixes
 - longest_ancestor_length(): use string_list_split()
 - Introduce new function real_path_if_valid()
 - real_path_internal(): add comment explaining use of cwd
 - Introduce new static function real_path_internal()

 Elements of GIT_CEILING_DIRECTORIES list may not match the real
 pathname we obtain from getcwd(), leading the GIT_DIR discovery
 logic to escape the ceilings the user thought to have specified.

 Need to look at v4 which made it to the list.


* mo/cvs-server-cleanup (2012-10-26) 11 commits
  (merged to 'next' on 2012-10-29 at 4e70622)
 + Use character class for sed expression instead of \s
  (merged to 'next' on 2012-10-25 at c70881d)
 + cvsserver status: provide real sticky info
 + cvsserver: cvs add: do not expand directory arguments
 + cvsserver: use whole CVS rev number in-process; don't strip "1." prefix
 + cvsserver: split up long lines in req_{status,diff,log}
 + cvsserver: clean up client request handler map comments
 + cvsserver: remove unused functions _headrev and gethistory
 + cvsserver update: comment about how we shouldn't remove a user-modified file
 + cvsserver: add comments about database schema/usage
 + cvsserver: removed unused sha1Or-k mode from kopts_from_path
 + cvsserver t9400: add basic 'cvs log' test
 (this branch is tangled with mo/cvs-server-updates.)

 Cleanups to prepare for mo/cvs-server-updates.

 Will merge to 'master' in the fourth batch.


* mo/cvs-server-updates (2012-10-16) 20 commits
 - cvsserver Documentation: new cvs ... -r support
 - cvsserver: add t9402 to test branch and tag refs
 - cvsserver: support -r and sticky tags for most operations
 - cvsserver: Add version awareness to argsfromdir
 - cvsserver: generalize getmeta() to recognize commit refs
 - cvsserver: implement req_Sticky and related utilities
 - cvsserver: add misc commit lookup, file meta data, and file listing functions
 - cvsserver: define a tag name character escape mechanism
 - cvsserver: cleanup extra slashes in filename arguments
 - cvsserver: factor out git-log parsing logic
  (merged to 'next' on 2012-10-25 at c70881d)
 + cvsserver status: provide real sticky info
 + cvsserver: cvs add: do not expand directory arguments
 + cvsserver: use whole CVS rev number in-process; don't strip "1." prefix
 + cvsserver: split up long lines in req_{status,diff,log}
 + cvsserver: clean up client request handler map comments
 + cvsserver: remove unused functions _headrev and gethistory
 + cvsserver update: comment about how we shouldn't remove a user-modified file
 + cvsserver: add comments about database schema/usage
 + cvsserver: removed unused sha1Or-k mode from kopts_from_path
 + cvsserver t9400: add basic 'cvs log' test
 (this branch is tangled with mo/cvs-server-cleanup.)

 Needs review by folks interested in cvsserver.


* ta/doc-cleanup (2012-10-25) 6 commits
 - Documentation: build html for all files in technical and howto
 - Documentation/howto: convert plain text files to asciidoc
 - Documentation/technical: convert plain text files to asciidoc
 - Change headline of technical/send-pack-pipeline.txt to not confuse its content with content from git-send-pack.txt
 - Shorten two over-long lines in git-bisect-lk2009.txt by abbreviating some sha1
 - Split over-long synopsis in git-fetch-pack.txt into several lines

 Misapplication of a patch fixed; the ones near the tip needs to
 update the links to point at the html files, though.

 Needs follow-up on Junio's comment above.


* lt/diff-stat-show-0-lines (2012-10-17) 1 commit
 - Fix "git diff --stat" for interesting - but empty - file changes

 We failed to mention a file without any content change but whose
 permission bit was modified, or (worse yet) a new file without any
 content in the "git diff --stat" output.

 Needs some test updates.


* jc/prettier-pretty-note (2012-10-26) 11 commits
  (merged to 'next' on 2012-11-04 at 40e3e48)
 + Doc User-Manual: Patch cover letter, three dashes, and --notes
 + Doc format-patch: clarify --notes use case
 + Doc notes: Include the format-patch --notes option
 + Doc SubmittingPatches: Mention --notes option after "cover letter"
 + Documentation: decribe format-patch --notes
 + format-patch --notes: show notes after three-dashes
 + format-patch: append --signature after notes
 + pretty_print_commit(): do not append notes message
 + pretty: prepare notes message at a centralized place
 + format_note(): simplify API
 + pretty: remove reencode_commit_message()

 Now that Philip has submitted some documentation updates, this is
 looking more ready.

 Will merge to master in the fifth batch.


* sz/maint-curl-multi-timeout (2012-10-19) 1 commit
  (merged to 'next' on 2012-11-04 at f696dd8)
 + Fix potential hang in https handshake

 Sometimes curl_multi_timeout() function suggested a wrong timeout
 value when there is no file descriptors to wait on and the http
 transport ended up sleeping for minutes in select(2) system call.
 Detect this and reduce the wait timeout in such a case.

 Will merge to master in the fourth batch.


* jc/same-encoding (2012-11-04) 1 commit
  (merged to 'next' on 2012-11-04 at 54991f2)
 + reencode_string(): introduce and use same_encoding()

 Various codepaths checked if two encoding names are the same using
 ad-hoc code and some of them ended up asking iconv() to convert
 between "utf8" and "UTF-8".  The former is not a valid way to spell
 the encoding name, but often people use it by mistake, and we
 equated them in some but not all codepaths. Introduce a new helper
 function to make these codepaths consistent.

 will merge to master in the fourth batch.


* nd/tree-walk-enum-cleanup (2012-10-19) 1 commit
  (merged to 'next' on 2012-11-04 at 8ccdf98)
 + tree-walk: use enum interesting instead of integer

 Will merge to master in the fourth batch.


* cr/cvsimport-local-zone (2012-11-04) 2 commits
  (merged to 'next' on 2012-11-04 at 292f0b4)
 + cvsimport: work around perl tzset issue
 + git-cvsimport: allow author-specific timezones

 Allows "cvsimport" to read per-author timezone from the author info
 file.

 Will merge to master in the fifth batch.


* fc/completion-send-email-with-format-patch (2012-10-16) 1 commit
  (merged to 'next' on 2012-11-04 at 0a6366e)
 + completion: add format-patch options to send-email

 Will merge to master in the fourth batch.


* fc/zsh-completion (2012-10-29) 3 commits
 - completion: add new zsh completion
 - completion: add new __gitcompadd helper
 - completion: get rid of empty COMPREPLY assignments

 Needs comments from completion folks.


* jc/apply-trailing-blank-removal (2012-10-12) 1 commit
 - apply.c:update_pre_post_images(): the preimage can be truncated

 Fix to update_pre_post_images() that did not take into account the
 possibility that whitespace fix could shrink the preimage and
 change the number of lines in it.

 Extra set of eyeballs appreciated.


* jn/warn-on-inaccessible-loosen (2012-10-14) 4 commits
 - config: exit on error accessing any config file
 - doc: advertise GIT_CONFIG_NOSYSTEM
 - config: treat user and xdg config permission problems as errors
 - config, gitignore: failure to access with ENOTDIR is ok

 An RFC to deal with a situation where .config/git is a file and we
 notice .config/git/config is not readable due to ENOTDIR, not
 ENOENT; I think a bit more refactored approach to consistently
 address permission errors across config, exclude and attrs is
 desirable.  Don't we also need a check for an opposite situation
 where we open .config/git/config or .gitattributes for reading but
 they turn out to be directories?


* rs/lock-correct-ref-during-delete (2012-10-16) 1 commit
  (merged to 'next' on 2012-10-25 at 9341eea)
 + refs: lock symref that is to be deleted, not its target

 When "update-ref -d --no-deref SYM" tried to delete a symbolic ref
 SYM, it incorrectly locked the underlying reference pointed by SYM,
 not the symbolic ref itself.

 Will merge to 'master' in the fourth batch.


* as/check-ignore (2012-10-29) 13 commits
 - Documentation/check-ignore: we show the deciding match, not the first
 - Add git-check-ignore sub-command
 - dir.c: provide free_directory() for reclaiming dir_struct memory
 - pathspec.c: move reusable code from builtin/add.c
 - dir.c: refactor treat_gitlinks()
 - dir.c: keep track of where patterns came from
 - dir.c: refactor is_path_excluded()
 - dir.c: refactor is_excluded()
 - dir.c: refactor is_excluded_from_list()
 - dir.c: rename excluded() to is_excluded()
 - dir.c: rename excluded_from_list() to is_excluded_from_list()
 - dir.c: rename path_excluded() to is_path_excluded()
 - dir.c: rename cryptic 'which' variable to more consistent name
 (this branch uses nd/attr-match-optim-more; is tangled with nd/wildmatch.)

 Duy helped to reroll this.

 Expecting another re-roll.


* js/format-2047 (2012-10-18) 7 commits
  (merged to 'next' on 2012-10-25 at 76d91fe)
 + format-patch tests: check quoting/encoding in To: and Cc: headers
 + format-patch: fix rfc2047 address encoding with respect to rfc822 specials
 + format-patch: make rfc2047 encoding more strict
 + format-patch: introduce helper function last_line_length()
 + format-patch: do not wrap rfc2047 encoded headers too late
 + format-patch: do not wrap non-rfc2047 headers too early
 + utf8: fix off-by-one wrapping of text

 Fixes many rfc2047 quoting issues in the output from format-patch.

 Will merge to 'master' in the fourth batch.


* km/send-email-compose-encoding (2012-10-25) 5 commits
  (merged to 'next' on 2012-10-29 at d7d2bb4)
 + git-send-email: add rfc2047 quoting for "=?"
 + git-send-email: introduce quote_subject()
 + git-send-email: skip RFC2047 quoting for ASCII subjects
 + git-send-email: use compose-encoding for Subject
  (merged to 'next' on 2012-10-25 at 5447367)
 + git-send-email: introduce compose-encoding

 "git send-email --compose" can let the user create a non-ascii
 cover letter message, but there was not a way to mark it with
 appropriate content type before sending it out.

 Further updates fix subject quoting.

 Will merge to 'master' in the fourth batch.


* so/prompt-command (2012-10-17) 4 commits
  (merged to 'next' on 2012-10-25 at 79565a1)
 + coloured git-prompt: paint detached HEAD marker in red
 + Fix up colored git-prompt
 + show color hints based on state of the git tree
 + Allow __git_ps1 to be used in PROMPT_COMMAND

 Updates __git_ps1 so that it can be used as $PROMPT_COMMAND,
 instead of being used for command substitution in $PS1, to embed
 color escape sequences in its output.

 Will 'cook' in next.


* aw/rebase-am-failure-detection (2012-10-11) 1 commit
 - rebase: Handle cases where format-patch fails

 I am unhappy a bit about the possible performance implications of
 having to store the output in a temporary file only for a rare case
 of format-patch aborting.


* nd/wildmatch (2012-10-15) 13 commits
  (merged to 'next' on 2012-10-25 at 510e8df)
 + Support "**" wildcard in .gitignore and .gitattributes
 + wildmatch: make /**/ match zero or more directories
 + wildmatch: adjust "**" behavior
 + wildmatch: fix case-insensitive matching
 + wildmatch: remove static variable force_lower_case
 + wildmatch: make wildmatch's return value compatible with fnmatch
 + t3070: disable unreliable fnmatch tests
 + Integrate wildmatch to git
 + wildmatch: follow Git's coding convention
 + wildmatch: remove unnecessary functions
 + Import wildmatch from rsync
 + ctype: support iscntrl, ispunct, isxdigit and isprint
 + ctype: make sane_ctype[] const array
 (this branch uses nd/attr-match-optim-more; is tangled with as/check-ignore.)

 Allows pathname patterns in .gitignore and .gitattributes files
 with double-asterisks "foo/**/bar" to match any number of directory
 hierarchies.

 I suspect that this needs to be plugged to pathspec matching code;
 otherwise "git log -- 'Docum*/**/*.txt'" would not show the log for
 commits that touch Documentation/git.txt, which would be confusing
 to the users.

 Will cook in 'next'.


* jk/lua-hackery (2012-10-07) 6 commits
 - pretty: fix up one-off format_commit_message calls
 - Minimum compilation fixup
 - Makefile: make "lua" a bit more configurable
 - add a "lua" pretty format
 - add basic lua infrastructure
 - pretty: make some commit-parsing helpers more public

 Interesting exercise. When we do this for real, we probably would want
 to wrap a commit to make it more like an "object" with methods like
 "parents", etc.


* nd/attr-match-optim-more (2012-10-15) 7 commits
  (merged to 'next' on 2012-10-25 at 09f70ce)
 + attr: more matching optimizations from .gitignore
 + gitignore: make pattern parsing code a separate function
 + exclude: split pathname matching code into a separate function
 + exclude: fix a bug in prefix compare optimization
 + exclude: split basename matching code into a separate function
 + exclude: stricten a length check in EXC_FLAG_ENDSWITH case
 + Merge commit 'f9f6e2c' into nd/attr-match-optim-more
 (this branch is used by as/check-ignore and nd/wildmatch.)

 Start laying the foundation to build the "wildmatch" after we can
 agree on its desired semantics.

 Will merge to 'master' in the fourth batch.


* nd/pretty-placeholder-with-color-option (2012-09-30) 9 commits
 . pretty: support %>> that steal trailing spaces
 . pretty: support truncating in %>, %< and %><
 . pretty: support padding placeholders, %< %> and %><
 . pretty: two phase conversion for non utf-8 commits
 . utf8.c: add utf8_strnwidth() with the ability to skip ansi sequences
 . utf8.c: move display_mode_esc_sequence_len() for use by other functions
 . pretty: support %C(auto[,N]) to turn on coloring on next placeholder(s)
 . pretty: split parsing %C into a separate function
 . pretty: share code between format_decoration and show_decorations

 This causes warnings with -Wuninitialized, so I've ejected it from pu
 for the time being.


* jc/maint-fetch-tighten-refname-check (2012-10-19) 1 commit
  (merged to 'next' on 2012-11-04 at eda85ef)
 + get_fetch_map(): tighten checks on dest refs

 This was split out from discarded jc/maint-push-refs-all topic.

 Will merge to master in the fifth batch.


* jh/symbolic-ref-d (2012-10-21) 1 commit
  (merged to 'next' on 2012-11-04 at b0762f5)
 + git symbolic-ref --delete $symref

 Add "symbolic-ref -d SYM" to delete a symbolic ref SYM.

 It is already possible to remove a symbolic ref with "update-ref -d
 --no-deref", but it may be a good addition for completeness.

 Will merge to master in the fifth batch.


* jh/update-ref-d-through-symref (2012-10-21) 2 commits
 - Fix failure to delete a packed ref through a symref
 - t1400-update-ref: Add test verifying bug with symrefs in delete_ref()

 "update-ref -d --deref SYM" to delete a ref through a symbolic ref
 that points to it did not remove it correctly.


* jk/config-ignore-duplicates (2012-10-29) 9 commits
  (merged to 'next' on 2012-10-29 at 67fa0a2)
 + builtin/config.c: Fix a sparse warning
  (merged to 'next' on 2012-10-25 at 233df08)
 + git-config: use git_config_with_options
 + git-config: do not complain about duplicate entries
 + git-config: collect values instead of immediately printing
 + git-config: fix regexp memory leaks on error conditions
 + git-config: remove memory leak of key regexp
 + t1300: test "git config --get-all" more thoroughly
 + t1300: remove redundant test
 + t1300: style updates

 Drop duplicate detection from git-config; this lets it
 better match the internal config callbacks, which clears up
 some corner cases with includes.

 Will cook in 'next'.


* ph/submodule-sync-recursive (2012-10-29) 2 commits
  (merged to 'next' on 2012-11-04 at a000f78)
 + Add tests for submodule sync --recursive
 + Teach --recursive to submodule sync

 Adds "--recursive" option to submodule sync.

 Will merge to master in the fifth batch.


* fc/completion-test-simplification (2012-10-29) 2 commits
 - completion: simplify __gitcomp test helper
 - completion: refactor __gitcomp related tests

 Clean up completion tests.

 There were some comments on the list.

 Expecting a re-roll.


* fc/remote-testgit-feature-done (2012-10-29) 1 commit
 - remote-testgit: properly check for errors

 Needs review.


* jk/maint-diff-grep-textconv (2012-10-28) 1 commit
  (merged to 'next' on 2012-11-04 at 790337b)
 + diff_grep: use textconv buffers for add/deleted files
 (this branch is used by jk/pickaxe-textconv.)

 Fixes inconsistent use of textconv with "git log -G".

 Will merge to 'master' in the fifth batch.


* jk/pickaxe-textconv (2012-10-28) 2 commits
 - pickaxe: use textconv for -S counting
 - pickaxe: hoist empty needle check
 (this branch uses jk/maint-diff-grep-textconv.)

 Use textconv filters when searching with "log -S".

 Waiting for a sanity check and review from Junio.


* mh/maint-parse-dirstat-fix (2012-10-29) 1 commit
  (merged to 'next' on 2012-11-04 at 852d609)
 + parse_dirstat_params(): use string_list to split comma-separated string

 Cleans up some code and avoids a potential bug.

 Will merge master in the fourth batch.


* nd/builtin-to-libgit (2012-10-29) 7 commits
  (merged to 'next' on 2012-11-04 at 06cbf9b)
 + fetch-pack: move core code to libgit.a
 + fetch-pack: remove global (static) configuration variable "args"
 + send-pack: move core code to libgit.a
 + Move setup_diff_pager to libgit.a
 + Move print_commit_list to libgit.a
 + Move estimate_bisect_steps to libgit.a
 + Move try_merge_command and checkout_fast_forward to libgit.a

 Code cleanups so that libgit.a does not depend on anything in the
 builtin/ directory.

 Some of the code movement is pretty big, but there doesn't seem to be
 any conflicts with topics in flight.

 Will merge to master in the fourth batch.


* ph/maint-submodule-status-fix (2012-10-29) 2 commits
  (merged to 'next' on 2012-11-04 at d700e02)
 + submodule status: remove unused orig_* variables
 + t7407: Fix recursive submodule test

 Cleans up some leftover bits from an earlier submodule change.

 Will merge to master in the fourth batch.

^ permalink raw reply	[relevance 6%]

* What's cooking in git.git (Oct 2012, #09; Mon, 29)
@ 2012-10-29 10:21  6% Jeff King
  0 siblings, 0 replies; 162+ results
From: Jeff King @ 2012-10-29 10:21 UTC (permalink / raw)
  To: git

What's cooking in git.git (Oct 2012, #09; Mon, 29)
--------------------------------------------------

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

The second batch of topics has graduated to master. Most of the new
topics have been minor bugfixes or documentation updates, so I've merged
a lot of those to master.

You can find the changes described here in the integration branches of
my repository at:

  git://github.com/peff/git.git

Until Junio returns, kernel.org and the other "usual" places will not be
updated.

--------------------------------------------------
[New Topics]

* fc/completion-test-simplification (2012-10-29) 2 commits
 - completion: simplify __gitcomp test helper
 - completion: refactor __gitcomp related tests

 Clean up completion tests.

 Will merge to 'next'.


* fc/remote-testgit-feature-done (2012-10-29) 1 commit
 - remote-testgit: properly check for errors


* jk/maint-diff-grep-textconv (2012-10-28) 1 commit
 - diff_grep: use textconv buffers for add/deleted files
 (this branch is used by jk/pickaxe-textconv.)

 Fixes inconsistent use of textconv with "git log -G".

 Will merge to 'next'.


* jk/pickaxe-textconv (2012-10-28) 2 commits
 - pickaxe: use textconv for -S counting
 - pickaxe: hoist empty needle check
 (this branch uses jk/maint-diff-grep-textconv.)

 Use textconv filters when searching with "log -S".

 Waiting for a sanity check and review from Junio.


* km/maint-doc-git-reset (2012-10-29) 1 commit
  (merged to 'next' on 2012-10-29 at cdb4e8f)
 + doc: git-reset: make "<mode>" optional

 Will merge to 'master' in the third batch.


* mh/maint-parse-dirstat-fix (2012-10-29) 1 commit
 - parse_dirstat_params(): use string_list to split comma-separated string

 Cleans up some code and avoids a potential bug.

 Will merge to 'next'.


* nd/builtin-to-libgit (2012-10-29) 7 commits
 - fetch-pack: move core code to libgit.a
 - fetch-pack: remove global (static) configuration variable "args"
 - send-pack: move core code to libgit.a
 - Move setup_diff_pager to libgit.a
 - Move print_commit_list to libgit.a
 - Move estimate_bisect_steps to libgit.a
 - Move try_merge_command and checkout_fast_forward to libgit.a

 Code cleanups so that libgit.a does not depend on anything in the
 builtin/ directory.

 Some of the code movement is pretty big, but there doesn't seem to be
 any conflicts with topics in flight.

 Will merge to 'next'.


* ph/maint-submodule-status-fix (2012-10-29) 2 commits
 - submodule status: remove unused orig_* variables
 - t7407: Fix recursive submodule test

 Cleans up some leftover bits from an earlier submodule change.

 Will merge to 'next'.


* pp/maint-doc-pager-config (2012-10-29) 1 commit
  (merged to 'next' on 2012-10-29 at 434fbd0)
 + Documentation: improve the example of overriding LESS via core.pager

 Will merge to 'master' in the third batch.


* rf/maint-mailmap-off-by-one (2012-10-28) 1 commit
  (merged to 'next' on 2012-10-29 at 8c2214b)
 + mailmap: avoid out-of-bounds memory access

 Will merge to 'master' in the third batch.


* sz/maint-submodule-reference-arg (2012-10-26) 1 commit
  (merged to 'next' on 2012-10-29 at 1aab03c)
 + submodule add: fix handling of --reference=<repo> option

 Will merge to 'master' in the third batch.


* tb/maint-t9200-case-insensitive (2012-10-28) 1 commit
  (merged to 'next' on 2012-10-29 at 62af90c)
 + Fix t9200 on case insensitive file systems

 Will merge to 'master' in the third batch.


* tj/maint-doc-commit-sign (2012-10-29) 1 commit
  (merged to 'next' on 2012-10-29 at 44c61a0)
 + Add -S, --gpg-sign option to manpage of "git commit"

 Will merge to 'master' in the third batch.


--------------------------------------------------
[Graduated to "master"]

* jc/grep-pcre-loose-ends (2012-10-09) 7 commits
  (merged to 'next' on 2012-10-25 at 2ea9b27)
 + log: honor grep.* configuration
 + log --grep: accept --basic-regexp and --perl-regexp
 + log --grep: use the same helper to set -E/-F options as "git grep"
 + revisions: initialize revs->grep_filter using grep_init()
 + grep: move pattern-type bits support to top-level grep.[ch]
 + grep: move the configuration parsing logic to grep.[ch]
 + builtin/grep.c: make configuration callback more reusable

 "git log -F -E --grep='<ere>'" failed to use the given <ere>
 pattern as extended regular expression, and instead looked for the
 string literally.  The early part of this series is a fix for it.

 Will merge to 'master' in the second batch after 1.8.0 ships.


* jk/maint-http-init-not-in-result-handler (2012-10-12) 2 commits
  (merged to 'next' on 2012-10-25 at 59d3687)
 + http: do not set up curl auth after a 401
 + remote-curl: do not call run_slot repeatedly

 Further clean-up to the http codepath that picks up results after
 cURL library is done with one request slot.

 Will merge to 'master' in the second batch after 1.8.0 ships.


* jk/sh-setup-in-filter-branch (2012-10-18) 2 commits
  (merged to 'next' on 2012-10-25 at 3879f0e)
 + filter-branch: use git-sh-setup's ident parsing functions
 + git-sh-setup: refactor ident-parsing functions

 Will merge to 'master' in the second batch after 1.8.0 ships.


* jl/submodule-add-by-name (2012-09-30) 2 commits
  (merged to 'next' on 2012-10-25 at a322082)
 + submodule add: Fail when .git/modules/<name> already exists unless forced
 + Teach "git submodule add" the --name option

 If you remove a submodule, in order to keep the repository so that
 "git checkout" to an older commit in the superproject history can
 resurrect the submodule, the real repository will stay in $GIT_DIR
 of the superproject.  A later "git submodule add $path" to add a
 different submodule at the same path will fail.  Diagnose this case
 a bit better, and if the user really wants to add an unrelated
 submodule at the same path, give the "--name" option to give it a
 place in $GIT_DIR of the superproject that does not conflict with
 the original submodule.

 Will merge to 'master' in the second batch after 1.8.0 ships.


* jl/submodule-rm (2012-09-29) 1 commit
  (merged to 'next' on 2012-10-25 at 0fb5876)
 + submodule: teach rm to remove submodules unless they contain a git directory

 "git rm submodule" cannot blindly remove a submodule directory as
 its working tree may have local changes, and worse yet, it may even
 have its repository embedded in it.  Teach it some special cases
 where it is safe to remove a submodule, specifically, when there is
 no local changes in the submodule working tree, and its repository
 is not embedded in its working tree but is elsewhere and uses the
 gitfile mechanism to point at it.

 Will merge to 'master' in the second batch after 1.8.0 ships.


* nd/grep-true-path (2012-10-12) 1 commit
  (merged to 'next' on 2012-10-25 at 1c7d320)
 + grep: stop looking at random places for .gitattributes

 "git grep -e pattern <tree>" asked the attribute system to read
 "<tree>:.gitattributes" file in the working tree, which was
 nonsense.

 Will merge to 'master' in the second batch after 1.8.0 ships.


* nd/status-long (2012-10-18) 1 commit
  (merged to 'next' on 2012-10-25 at ff1b3a0)
 + status: add --long output format option

 Allow an earlier "--short" option on the command line to be
 countermanded with the "--long" option for "git status" and "git
 commit".

 Will merge to 'master' in the second batch after 1.8.0 ships.


* rs/branch-del-symref (2012-10-18) 5 commits
  (merged to 'next' on 2012-10-25 at c2cd358)
 + branch: show targets of deleted symrefs, not sha1s
 + branch: skip commit checks when deleting symref branches
 + branch: delete symref branch, not its target
 + branch: factor out delete_branch_config()
 + branch: factor out check_branch_commit()
 (this branch is used by jh/update-ref-d-through-symref.)

 A symbolic ref refs/heads/SYM was not correctly removed with
 "git branch -d SYM"; the command removed the ref pointed by
 SYM instead.

 Will merge to 'master' in the second batch after 1.8.0 ships.

--------------------------------------------------
[Stalled]

* rc/maint-complete-git-p4 (2012-09-24) 1 commit
  (merged to 'next' on 2012-10-29 at af52cef)
 + Teach git-completion about git p4

 Comment from Pete will need to be addressed in a follow-up patch.


* as/test-tweaks (2012-09-20) 7 commits
 - tests: paint unexpectedly fixed known breakages in bold red
 - tests: test the test framework more thoroughly
 - [SQUASH] t/t0000-basic.sh: quoting of TEST_DIRECTORY is screwed up
 - tests: refactor mechanics of testing in a sub test-lib
 - tests: paint skipped tests in bold blue
 - tests: test number comes first in 'not ok $count - $message'
 - tests: paint known breakages in bold yellow

 Various minor tweaks to the test framework to paint its output
 lines in colors that match what they mean better.

 Has the "is this really blue?" issue Peff raised resolved???


* jc/maint-name-rev (2012-09-17) 7 commits
 - describe --contains: use "name-rev --algorithm=weight"
 - name-rev --algorithm=weight: tests and documentation
 - name-rev --algorithm=weight: cache the computed weight in notes
 - name-rev --algorithm=weight: trivial optimization
 - name-rev: --algorithm option
 - name_rev: clarify the logic to assign a new tip-name to a commit
 - name-rev: lose unnecessary typedef

 "git name-rev" names the given revision based on a ref that can be
 reached in the smallest number of steps from the rev, but that is
 not useful when the caller wants to know which tag is the oldest one
 that contains the rev.  This teaches a new mode to the command that
 uses the oldest ref among those which contain the rev.

 I am not sure if this is worth it; for one thing, even with the help
 from notes-cache, it seems to make the "describe --contains" even
 slower. Also the command will be unusably slow for a user who does
 not have a write access (hence unable to create or update the
 notes-cache).

 Stalled mostly due to lack of responses.


* jc/xprm-generation (2012-09-14) 1 commit
 - test-generation: compute generation numbers and clock skews

 A toy to analyze how bad the clock skews are in histories of real
 world projects.

 Stalled mostly due to lack of responses.


* jc/blame-no-follow (2012-09-21) 2 commits
 - blame: pay attention to --no-follow
 - diff: accept --no-follow option

 Teaches "--no-follow" option to "git blame" to disable its
 whole-file rename detection.

 Stalled mostly due to lack of responses.


* jc/doc-default-format (2012-10-07) 2 commits
 - [SQAUSH] allow "cd Doc* && make DEFAULT_DOC_TARGET=..."
 - Allow generating a non-default set of documentation

 Need to address the installation half if this is to be any useful.


* mk/maint-graph-infinity-loop (2012-09-25) 1 commit
 - graph.c: infinite loop in git whatchanged --graph -m

 The --graph code fell into infinite loop when asked to do what the
 code did not expect ;-)

 Anybody who worked on "--graph" wants to comment?
 Stalled mostly due to lack of responses.


* jc/add-delete-default (2012-08-13) 1 commit
 - git add: notice removal of tracked paths by default

 "git add dir/" updated modified files and added new files, but does
 not notice removed files, which may be "Huh?" to some users.  They
 can of course use "git add -A dir/", but why should they?

 Resurrected from graveyard, as I thought it was a worthwhile thing
 to do in the longer term.

 Waiting for comments.


* mb/remote-default-nn-origin (2012-07-11) 6 commits
 - Teach get_default_remote to respect remote.default.
 - Test that plain "git fetch" uses remote.default when on a detached HEAD.
 - Teach clone to set remote.default.
 - Teach "git remote" about remote.default.
 - Teach remote.c about the remote.default configuration setting.
 - Rename remote.c's default_remote_name static variables.

 When the user does not specify what remote to interact with, we
 often attempt to use 'origin'.  This can now be customized via a
 configuration variable.

 Expecting a reroll.

 "The first remote becomes the default" bit is better done as a
 separate step.

--------------------------------------------------
[Cooking]

* mh/ceiling (2012-10-29) 8 commits
 - string_list_longest_prefix(): remove function
 - setup_git_directory_gently_1(): resolve symlinks in ceiling paths
 - longest_ancestor_length(): require prefix list entries to be normalized
 - longest_ancestor_length(): take a string_list argument for prefixes
 - longest_ancestor_length(): use string_list_split()
 - Introduce new function real_path_if_valid()
 - real_path_internal(): add comment explaining use of cwd
 - Introduce new static function real_path_internal()

 Elements of GIT_CEILING_DIRECTORIES list may not match the real
 pathname we obtain from getcwd(), leading the GIT_DIR discovery
 logic to escape the ceilings the user thought to have specified.


* mo/cvs-server-cleanup (2012-10-26) 11 commits
  (merged to 'next' on 2012-10-29 at 4e70622)
 + Use character class for sed expression instead of \s
  (merged to 'next' on 2012-10-25 at c70881d)
 + cvsserver status: provide real sticky info
 + cvsserver: cvs add: do not expand directory arguments
 + cvsserver: use whole CVS rev number in-process; don't strip "1." prefix
 + cvsserver: split up long lines in req_{status,diff,log}
 + cvsserver: clean up client request handler map comments
 + cvsserver: remove unused functions _headrev and gethistory
 + cvsserver update: comment about how we shouldn't remove a user-modified file
 + cvsserver: add comments about database schema/usage
 + cvsserver: removed unused sha1Or-k mode from kopts_from_path
 + cvsserver t9400: add basic 'cvs log' test
 (this branch is tangled with mo/cvs-server-updates.)

 Cleanups to prepare for mo/cvs-server-updates.

 Will merge to 'master' in the fourth batch.


* mo/cvs-server-updates (2012-10-16) 20 commits
 - cvsserver Documentation: new cvs ... -r support
 - cvsserver: add t9402 to test branch and tag refs
 - cvsserver: support -r and sticky tags for most operations
 - cvsserver: Add version awareness to argsfromdir
 - cvsserver: generalize getmeta() to recognize commit refs
 - cvsserver: implement req_Sticky and related utilities
 - cvsserver: add misc commit lookup, file meta data, and file listing functions
 - cvsserver: define a tag name character escape mechanism
 - cvsserver: cleanup extra slashes in filename arguments
 - cvsserver: factor out git-log parsing logic
  (merged to 'next' on 2012-10-25 at c70881d)
 + cvsserver status: provide real sticky info
 + cvsserver: cvs add: do not expand directory arguments
 + cvsserver: use whole CVS rev number in-process; don't strip "1." prefix
 + cvsserver: split up long lines in req_{status,diff,log}
 + cvsserver: clean up client request handler map comments
 + cvsserver: remove unused functions _headrev and gethistory
 + cvsserver update: comment about how we shouldn't remove a user-modified file
 + cvsserver: add comments about database schema/usage
 + cvsserver: removed unused sha1Or-k mode from kopts_from_path
 + cvsserver t9400: add basic 'cvs log' test
 (this branch is tangled with mo/cvs-server-cleanup.)

 Needs review by folks interested in cvsserver.


* ta/doc-cleanup (2012-10-25) 6 commits
 - Documentation: build html for all files in technical and howto
 - Documentation/howto: convert plain text files to asciidoc
 - Documentation/technical: convert plain text files to asciidoc
 - Change headline of technical/send-pack-pipeline.txt to not confuse its content with content from git-send-pack.txt
 - Shorten two over-long lines in git-bisect-lk2009.txt by abbreviating some sha1
 - Split over-long synopsis in git-fetch-pack.txt into several lines

 Misapplication of a patch fixed; the ones near the tip needs to
 update the links to point at the html files, though.

 Needs follow-up on Junio's comment above.


* lt/diff-stat-show-0-lines (2012-10-17) 1 commit
 - Fix "git diff --stat" for interesting - but empty - file changes

 We failed to mention a file without any content change but whose
 permission bit was modified, or (worse yet) a new file without any
 content in the "git diff --stat" output.

 Needs some test updates.


* jc/prettier-pretty-note (2012-10-26) 11 commits
 - Doc User-Manual: Patch cover letter, three dashes, and --notes
 - Doc format-patch: clarify --notes use case
 - Doc notes: Include the format-patch --notes option
 - Doc SubmittingPatches: Mention --notes option after "cover letter"
 - Documentation: decribe format-patch --notes
 - format-patch --notes: show notes after three-dashes
 - format-patch: append --signature after notes
 - pretty_print_commit(): do not append notes message
 - pretty: prepare notes message at a centralized place
 - format_note(): simplify API
 - pretty: remove reencode_commit_message()

 Now that Philip has submitted some documentation updates, this is
 looking more ready.

 Will merge to 'next'.


* sz/maint-curl-multi-timeout (2012-10-19) 1 commit
 - Fix potential hang in https handshake

 Sometimes curl_multi_timeout() function suggested a wrong timeout
 value when there is no file descriptors to wait on and the http
 transport ended up sleeping for minutes in select(2) system call.
 Detect this and reduce the wait timeout in such a case.

 Will merge to 'next'.


* jc/same-encoding (2012-10-18) 1 commit
 - reencode_string(): introduce and use same_encoding()

 Various codepaths checked if two encoding names are the same using
 ad-hoc code and some of them ended up asking iconv() to convert
 between "utf8" and "UTF-8".  The former is not a valid way to spell
 the encoding name, but often people use it by mistake, and we
 equated them in some but not all codepaths. Introduce a new helper
 function to make these codepaths consistent.

 Will merge to 'next' after fixing up commit message.


* nd/tree-walk-enum-cleanup (2012-10-19) 1 commit
 - tree-walk: use enum interesting instead of integer

 Will merge to 'next'.


* cr/cvsimport-local-zone (2012-10-16) 1 commit
 - git-cvsimport: allow author-specific timezones

 Allows "cvsimport" to read per-author timezone from the author info
 file.

 Will merge to 'next'.


* fc/completion-send-email-with-format-patch (2012-10-16) 1 commit
 - completion: add format-patch options to send-email

 Will merge to 'next'.


* fc/zsh-completion (2012-10-29) 3 commits
 - completion: add new zsh completion
 - completion: add new __gitcompadd helper
 - completion: get rid of empty COMPREPLY assignments

 Needs comments from completion folks.


* jc/apply-trailing-blank-removal (2012-10-12) 1 commit
 - apply.c:update_pre_post_images(): the preimage can be truncated

 Fix to update_pre_post_images() that did not take into account the
 possibility that whitespace fix could shrink the preimage and
 change the number of lines in it.

 Extra set of eyeballs appreciated.


* jn/warn-on-inaccessible-loosen (2012-10-14) 4 commits
 - config: exit on error accessing any config file
 - doc: advertise GIT_CONFIG_NOSYSTEM
 - config: treat user and xdg config permission problems as errors
 - config, gitignore: failure to access with ENOTDIR is ok

 An RFC to deal with a situation where .config/git is a file and we
 notice .config/git/config is not readable due to ENOTDIR, not
 ENOENT; I think a bit more refactored approach to consistently
 address permission errors across config, exclude and attrs is
 desirable.  Don't we also need a check for an opposite situation
 where we open .config/git/config or .gitattributes for reading but
 they turn out to be directories?


* rs/lock-correct-ref-during-delete (2012-10-16) 1 commit
  (merged to 'next' on 2012-10-25 at 9341eea)
 + refs: lock symref that is to be deleted, not its target

 When "update-ref -d --no-deref SYM" tried to delete a symbolic ref
 SYM, it incorrectly locked the underlying reference pointed by SYM,
 not the symbolic ref itself.

 Will merge to 'master' in the fourth batch.


* as/check-ignore (2012-10-29) 13 commits
 - Documentation/check-ignore: we show the deciding match, not the first
 - Add git-check-ignore sub-command
 - dir.c: provide free_directory() for reclaiming dir_struct memory
 - pathspec.c: move reusable code from builtin/add.c
 - dir.c: refactor treat_gitlinks()
 - dir.c: keep track of where patterns came from
 - dir.c: refactor is_path_excluded()
 - dir.c: refactor is_excluded()
 - dir.c: refactor is_excluded_from_list()
 - dir.c: rename excluded() to is_excluded()
 - dir.c: rename excluded_from_list() to is_excluded_from_list()
 - dir.c: rename path_excluded() to is_path_excluded()
 - dir.c: rename cryptic 'which' variable to more consistent name
 (this branch uses nd/attr-match-optim-more; is tangled with nd/wildmatch.)

 Duy helped to reroll this.

 Expecting another re-roll.


* js/format-2047 (2012-10-18) 7 commits
  (merged to 'next' on 2012-10-25 at 76d91fe)
 + format-patch tests: check quoting/encoding in To: and Cc: headers
 + format-patch: fix rfc2047 address encoding with respect to rfc822 specials
 + format-patch: make rfc2047 encoding more strict
 + format-patch: introduce helper function last_line_length()
 + format-patch: do not wrap rfc2047 encoded headers too late
 + format-patch: do not wrap non-rfc2047 headers too early
 + utf8: fix off-by-one wrapping of text

 Fixes many rfc2047 quoting issues in the output from format-patch.

 Will merge to 'master' in the fourth batch.


* km/send-email-compose-encoding (2012-10-25) 5 commits
  (merged to 'next' on 2012-10-29 at d7d2bb4)
 + git-send-email: add rfc2047 quoting for "=?"
 + git-send-email: introduce quote_subject()
 + git-send-email: skip RFC2047 quoting for ASCII subjects
 + git-send-email: use compose-encoding for Subject
  (merged to 'next' on 2012-10-25 at 5447367)
 + git-send-email: introduce compose-encoding

 "git send-email --compose" can let the user create a non-ascii
 cover letter message, but there was not a way to mark it with
 appropriate content type before sending it out.

 Further updates fix subject quoting.

 Will merge to 'master' in the fourth batch.


* so/prompt-command (2012-10-17) 4 commits
  (merged to 'next' on 2012-10-25 at 79565a1)
 + coloured git-prompt: paint detached HEAD marker in red
 + Fix up colored git-prompt
 + show color hints based on state of the git tree
 + Allow __git_ps1 to be used in PROMPT_COMMAND

 Updates __git_ps1 so that it can be used as $PROMPT_COMMAND,
 instead of being used for command substitution in $PS1, to embed
 color escape sequences in its output.

 Will 'cook' in next.


* aw/rebase-am-failure-detection (2012-10-11) 1 commit
 - rebase: Handle cases where format-patch fails

 I am unhappy a bit about the possible performance implications of
 having to store the output in a temporary file only for a rare case
 of format-patch aborting.


* nd/wildmatch (2012-10-15) 13 commits
  (merged to 'next' on 2012-10-25 at 510e8df)
 + Support "**" wildcard in .gitignore and .gitattributes
 + wildmatch: make /**/ match zero or more directories
 + wildmatch: adjust "**" behavior
 + wildmatch: fix case-insensitive matching
 + wildmatch: remove static variable force_lower_case
 + wildmatch: make wildmatch's return value compatible with fnmatch
 + t3070: disable unreliable fnmatch tests
 + Integrate wildmatch to git
 + wildmatch: follow Git's coding convention
 + wildmatch: remove unnecessary functions
 + Import wildmatch from rsync
 + ctype: support iscntrl, ispunct, isxdigit and isprint
 + ctype: make sane_ctype[] const array
 (this branch uses nd/attr-match-optim-more; is tangled with as/check-ignore.)

 Allows pathname patterns in .gitignore and .gitattributes files
 with double-asterisks "foo/**/bar" to match any number of directory
 hierarchies.

 I suspect that this needs to be plugged to pathspec matching code;
 otherwise "git log -- 'Docum*/**/*.txt'" would not show the log for
 commits that touch Documentation/git.txt, which would be confusing
 to the users.

 Will cook in 'next'.


* jk/lua-hackery (2012-10-07) 6 commits
 - pretty: fix up one-off format_commit_message calls
 - Minimum compilation fixup
 - Makefile: make "lua" a bit more configurable
 - add a "lua" pretty format
 - add basic lua infrastructure
 - pretty: make some commit-parsing helpers more public

 Interesting exercise. When we do this for real, we probably would want
 to wrap a commit to make it more like an "object" with methods like
 "parents", etc.


* nd/attr-match-optim-more (2012-10-15) 7 commits
  (merged to 'next' on 2012-10-25 at 09f70ce)
 + attr: more matching optimizations from .gitignore
 + gitignore: make pattern parsing code a separate function
 + exclude: split pathname matching code into a separate function
 + exclude: fix a bug in prefix compare optimization
 + exclude: split basename matching code into a separate function
 + exclude: stricten a length check in EXC_FLAG_ENDSWITH case
 + Merge commit 'f9f6e2c' into nd/attr-match-optim-more
 (this branch is used by as/check-ignore and nd/wildmatch.)

 Start laying the foundation to build the "wildmatch" after we can
 agree on its desired semantics.

 Will merge to 'master' in the fourth batch.


* nd/pretty-placeholder-with-color-option (2012-09-30) 9 commits
 . pretty: support %>> that steal trailing spaces
 . pretty: support truncating in %>, %< and %><
 . pretty: support padding placeholders, %< %> and %><
 . pretty: two phase conversion for non utf-8 commits
 . utf8.c: add utf8_strnwidth() with the ability to skip ansi sequences
 . utf8.c: move display_mode_esc_sequence_len() for use by other functions
 . pretty: support %C(auto[,N]) to turn on coloring on next placeholder(s)
 . pretty: split parsing %C into a separate function
 . pretty: share code between format_decoration and show_decorations

 This causes warnings with -Wuninitialized, so I've ejected it from pu
 for the time being.


* jc/maint-fetch-tighten-refname-check (2012-10-19) 1 commit
 - get_fetch_map(): tighten checks on dest refs

 This was split out from discarded jc/maint-push-refs-all topic.

 Will merge to 'next'.


* jh/symbolic-ref-d (2012-10-21) 1 commit
 - git symbolic-ref --delete $symref

 Add "symbolic-ref -d SYM" to delete a symbolic ref SYM.

 It is already possible to remove a symbolic ref with "update-ref -d
 --no-deref", but it may be a good addition for completeness.

 Will merge to 'next'.


* jh/update-ref-d-through-symref (2012-10-21) 2 commits
 - Fix failure to delete a packed ref through a symref
 - t1400-update-ref: Add test verifying bug with symrefs in delete_ref()

 "update-ref -d --deref SYM" to delete a ref through a symbolic ref
 that points to it did not remove it correctly.


* gb/maint-doc-svn-log-window-size (2012-10-26) 1 commit
  (merged to 'next' on 2012-10-29 at ee50b22)
 + Document git-svn fetch --log-window-size parameter

 Will merge to 'master' in the third batch.


* jk/config-ignore-duplicates (2012-10-29) 9 commits
  (merged to 'next' on 2012-10-29 at 67fa0a2)
 + builtin/config.c: Fix a sparse warning
  (merged to 'next' on 2012-10-25 at 233df08)
 + git-config: use git_config_with_options
 + git-config: do not complain about duplicate entries
 + git-config: collect values instead of immediately printing
 + git-config: fix regexp memory leaks on error conditions
 + git-config: remove memory leak of key regexp
 + t1300: test "git config --get-all" more thoroughly
 + t1300: remove redundant test
 + t1300: style updates

 Drop duplicate detection from git-config; this lets it
 better match the internal config callbacks, which clears up
 some corner cases with includes.

 Will cook in 'next'.


* mm/maint-doc-remote-tracking (2012-10-25) 1 commit
  (merged to 'next' on 2012-10-25 at 80f1592)
 + Documentation: remote tracking branch -> remote-tracking branch

 We long ago hyphenated "remote-tracking branch"; this
 catches some new instances added since then.

 Will merge to 'master' in the third batch.


* ph/pull-rebase-detached (2012-10-25) 1 commit
  (merged to 'next' on 2012-10-25 at 73d9d14)
 + git-pull: Avoid merge-base on detached head

 Avoids spewing error messages when using "pull --rebase" on a
 detached HEAD.

 Will merge to 'master' in the third batch.


* ph/submodule-sync-recursive (2012-10-29) 2 commits
 - Add tests for submodule sync --recursive
 - Teach --recursive to submodule sync

 Adds "--recursive" option to submodule sync.

 Will merge to 'next'.


* po/maint-refs-replace-docs (2012-10-25) 1 commit
  (merged to 'next' on 2012-10-25 at 3874c9d)
 + Doc repository-layout: Show refs/replace

 The refs/replace hierarchy was not mentioned in the
 repository-layout docs.

 Will merge to 'master' in the third batch.


* sl/maint-configure-messages (2012-10-25) 1 commit
  (merged to 'next' on 2012-10-25 at e1d7ecd)
 + configure: fix some output message

 Minor message fixes for the configure script.

 Will merge to 'master' in the third batch.

^ permalink raw reply	[relevance 6%]

* What's cooking in git.git (Sep 2012, #01; Tue, 4)
@ 2012-09-04 23:21  4% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2012-09-04 23:21 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'pu' (proposed updates) while commits prefixed with '+' are in 'next'.

The third batch of topics have graduated to 'master'.

I'm planning to keep this cycle reasonably short and aim for tagging
the result as 1.8.0 at the end of 9th week, on October 21st, after
which I'd disappear for a few weeks.  http://tinyurl.com/gitCal is
where you can always find my rough tagging schedule at.

You can find the changes described here in the integration branches of the
repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* cw/cherry-pick-allow-empty-message (2012-08-06) 1 commit
  (merged to 'next' on 2012-08-20 at 0dc0590)
 + cherry-pick: add --allow-empty-message option

(Originally merged to 'next' on 2012-08-09)

"git cherry-pick" by default stops when it sees a commit without any
log message.  The "--allow-empty-message" option can be used to
silently proceed.

* jc/daemon-access-hook (2012-08-15) 1 commit
  (merged to 'next' on 2012-08-20 at c8f5b2e)
 + daemon: --access-hook option

Allow an external command to tell git-daemon to decline service
based on the client address, repository path, etc.

* jc/maint-config-exit-status (2012-07-30) 1 commit
  (merged to 'next' on 2012-08-20 at e18ddd8)
 + config: "git config baa" should exit with status 1

(Originally merged to 'next' on 2012-07-30)

The exit status code from "git config" was way overspecified while
being incorrect.  Update the implementation to give the documented
status for a case that was documented, and introduce a new code for
"all other errors".

* jc/maint-mergetool-style-fix (2012-08-23) 1 commit
  (merged to 'next' on 2012-08-28 at ced5868)
 + mergetool: style fixes

* jc/maint-sane-execvp-notdir (2012-07-31) 1 commit
  (merged to 'next' on 2012-08-20 at 0d76cf2)
 + sane_execvp(): ignore non-directory on $PATH

(Originally merged to 'next' on 2012-08-09)

"git foo" errored out with "Not a directory" when the user had a non
directory on $PATH, and worse yet it masked an alias "foo" to run.

* jc/send-email-reconfirm (2012-08-14) 1 commit
  (merged to 'next' on 2012-08-20 at dffdef6)
 + send-email: validate & reconfirm interactive responses

Validate interactive input to "git send-email" to avoid common
mistakes such as saying "y<RETURN>" to sender mail address whose
prompt is given with a correctly guessed default.

* js/compat-mkdir (2012-08-24) 1 commit
  (merged to 'next' on 2012-08-28 at e92bf74)
 + compat: some mkdir() do not like a slash at the end

Some mkdir(2) implementations do not want to see trailing slash in
its parameter.

* js/no-curl-easy-strerror-on-old-curl (2012-08-23) 1 commit
  (merged to 'next' on 2012-08-28 at 25e2e7a)
 + http.c: don't use curl_easy_strerror prior to curl-7.12.0

Done to support compilation on __TANDEM, but is independently useful
for people with older version of libcURL.

* js/use-sc-open-max (2012-08-24) 1 commit
  (merged to 'next' on 2012-08-28 at 8b9ac7c)
 + sha1_file.c: introduce get_max_fd_limit() helper

Introduce get_max_fd_limit() to absorb platforms that do not have
getrlimit(RLIMIT_NOFILE) and/or sysconf(_SC_OPEN_MAX).

* ph/stash-rerere (2012-08-17) 2 commits
  (merged to 'next' on 2012-08-20 at ae37111)
 + stash: invoke rerere in case of conflict
 + test: git-stash conflict sets up rerere

"git stash" internally used "git merge-recursive" backend, which did
not trigger "rerere" upon conflicts unlike other mergy operations.

* sz/submodule-force-update (2012-08-24) 1 commit
  (merged to 'next' on 2012-08-24 at f82b466)
 + Make 'git submodule update --force' always check out submodules.

"git submodule update --force" used to leave the working tree of the
submodule intact when there were local changes.  It is more intiutive
to make "--force" a sign to run "checkout -f" to overwrite them.

--------------------------------------------------
[New Topics]

* as/check-ignore (2012-09-02) 10 commits
 . fixup: decl-after-stmt etc.
 . Add git-check-ignore
 . Provide free_directory() for reclaiming dir_struct memory
 . Extract some useful pathspec handling code from builtin/add.c into a library
 . For each exclude pattern, store information about where it came from
 . dir.c: refactor excluded() and path_excluded()
 . dir.c: refactor excluded_from_list()
 . dir.c: rename cryptic 'which' variable to more consistent name
 . Improve documentation and comments regarding directory traversal API
 . Update directory listing API doc to match code

Queued, but I think the design of the end-user experience needs to
be discussed further to polish this topic.

* jc/maint-ident-missing-human-name (2012-08-31) 1 commit
 - split_ident_line(): make best effort when parsing author/committer line

"git show --format='%ci'" did not give timestamp correctly for
commits created without human readable name on "committer" line.

Will merge to 'next' after eyeballing one more time.

* jk/argv-array (2012-09-02) 4 commits
 - submodule: use argv_array instead of hand-building arrays
 - fetch: use argv_array instead of hand-building arrays
 - argv-array: fix bogus cast when freeing array
 - argv-array: add pop function

Use argv-array API in "git fetch" implementation.
Will merge to 'next' after eyeballing one more time.

* rj/tap-fix (2012-09-02) 6 commits
 - test-lib.sh: Suppress the "passed all ..." message if no tests run
 - test-lib.sh: Add check for invalid use of 'skip_all' facility
 - test-lib.sh: Fix some shell coding style violations
 - t4016-*.sh: Skip all tests rather than each test
 - t3902-*.sh: Skip all tests rather than each test
 - t3300-*.sh: Fix a TAP parse error

Will merge to 'next' after eyeballing one more time.

* rj/test-regex (2012-09-02) 1 commit
 - test-regex: Add a test to check for a bug in the regex routines

Git ships with a fall-back regexp implementation for platforms with
buggy regexp library; give people a tool to see if they should be
using it on their platform.

Will merge to 'next' after eyeballing one more time.

* jc/maint-checkout-fileglob-doc (2012-09-04) 1 commit
 - Document file-glob for "git checkout -- '*.c'"

Will merge to 'next' after eyeballing one more time.

* jc/xprm-generation (2012-09-04) 1 commit
 - test-generation: compute generation numbers and clock skews

* rj/path-cleanup (2012-09-04) 5 commits
 - Call mkpathdup() rather than xstrdup(mkpath(...))
 - Call git_pathdup() rather than xstrdup(git_path("..."))
 - path.c: Use vsnpath() in the implementation of git_path()
 - path.c: Don't discard the return value of vsnpath()
 - path.c: Remove the 'git_' prefix from a file scope function

* rs/archive-zip-utf8 (2012-09-04) 1 commit
 - archive-zip: support UTF-8 paths

--------------------------------------------------
[Stalled]

* jx/test-real-path (2012-08-27) 1 commit
 - test: set the realpath of CWD as TRASH_DIRECTORY

Running tests with the "trash" directory elsewhere with the "--root"
option did not work well if the directory was specified by a symbolic
link pointing at it.

Seems broken as it makes $(pwd) and TRASH_DIRECTORY inconsistent.
Needs rerolling.

* jc/maint-push-refs-all (2012-08-27) 2 commits
 - get_fetch_map(): tighten checks on dest refs
 - [BROKEN] fetch/push: allow refs/*:refs/*

Allows pushing and fetching everything including refs/stash.
This is broken (see the log message there).

* er/doc-fast-import-done (2012-08-22) 1 commit
 - fast-import: document the --done option

Parked in 'pu' in case ESR responds with "Sorry, forgot to sign-off".

* jc/add-delete-default (2012-08-13) 1 commit
 - git add: notice removal of tracked paths by default

"git add dir/" updated modified files and added new files, but does
not notice removed files, which may be "Huh?" to some users.  They
can of course use "git add -A dir/", but why should they?

Resurrected from graveyard, as I thought it was a worthwhile thing
to do in the longer term; waiting for comments.

* tx/relative-in-the-future (2012-08-16) 2 commits
 - date: show relative dates in the future
 - date: refactor the relative date logic from presentation

Not my itch; rewritten an earlier submission by Tom Xue into
somewhat more maintainable form, though it breaks existing i18n.

Anybody interested in fixing it up?  Otherwise may discard.

* tg/index-v5 (2012-08-17) 13 commits
 . p0002-index.sh: add perf test for the index formats
 . update-index.c: rewrite index when index-version is given
 . Write resolve-undo data for index-v5
 . Write index-v5 cache-tree data
 . Write index-v5
 . Read cache-tree in index-v5
 . Read resolve-undo data
 . Read index-v5
 . Make in-memory format aware of stat_crc
 . Add documentation of the index-v5 file format
 . t2104: Don't fail for index versions other than [23]
 . read-cache.c: Re-read index if index file changed
 . Move index v2 specific functions to their own file

A GSoC project.  Was waiting for comments from mentors and
stakeholders, but nothing seems to be happening, other than breakage
fixes on Cygwin.  May discard.

* pw/p4-submit-conflicts (2012-08-16) 12 commits
 - git p4: add submit --prepare-p4-only option
 - git p4: add submit --dry-run option
 - git p4: accept -v for --verbose
 - git p4: revert deleted files after submit cancel
 - git p4: rearrange submit template construction
 - git p4: test clean-up after failed submit, fix added files
 - git p4: standardize submit cancel due to unchanged template
 - git p4: move conflict prompt into run, use [c]ontinue and [q]uit
 - git p4: remove submit failure options [a]pply and [w]rite
 - git p4: gracefully fail if some commits could not be applied
 - git p4 test: use p4d -L option to suppress log messages
 - git p4 test: remove bash-ism of combined export/assignment

Waiting for the dust to settle.

* mz/rebase-range (2012-07-18) 7 commits
 . rebase (without -p): correctly calculate patches to rebase
 . rebase -p: don't request --left-right only to ignore left side
 . rebase -p: use --cherry-mark for todo file
 . git-rebase--interactive.sh: look up subject in add_pick_line
 . git-rebase--interactive: group all $preserve_merges code
 . git-rebase--interactive.sh: extract function for adding "pick" line
 . git-rebase--am.sh: avoid special-casing --keep-empty

Expecting a reroll.

Performance concerns from Windows folks.  Also the series lacks
proper sign-offs.

* mb/remote-default-nn-origin (2012-07-11) 6 commits
 - Teach get_default_remote to respect remote.default.
 - Test that plain "git fetch" uses remote.default when on a detached HEAD.
 - Teach clone to set remote.default.
 - Teach "git remote" about remote.default.
 - Teach remote.c about the remote.default configuration setting.
 - Rename remote.c's default_remote_name static variables.

When the user does not specify what remote to interact with, we
often attempt to use 'origin'.  This can now be customized via a
configuration variable.

Expecting a reroll.

"The first remote becomes the default" bit is better done as a
separate step.

* jc/split-blob (2012-04-03) 6 commits
 - chunked-object: streaming checkout
 - chunked-object: fallback checkout codepaths
 - bulk-checkin: support chunked-object encoding
 - bulk-checkin: allow the same data to be multiply hashed
 - new representation types in the packstream
 - packfile: use varint functions

Not ready.

I finished the streaming checkout codepath, but as explained in
127b177 (bulk-checkin: support chunked-object encoding, 2011-11-30),
these are still early steps of a long and painful journey. At least
pack-objects and fsck need to learn the new encoding for the series
to be usable locally, and then index-pack/unpack-objects needs to
learn it to be used remotely.

Given that I heard a lot of noise that people want large files, and
that I was asked by somebody at GitTogether'11 privately for an
advice on how to pay developers (not me) to help adding necessary
support, I am somewhat dissapointed that the original patch series
that was sent long time ago still remains here without much comments
and updates from the developer community. I even made the interface
to the logic that decides where to split chunks easily replaceable,
and I deliberately made the logic in the original patch extremely
stupid to entice others, especially the "bup" fanbois, to come up
with a better logic, thinking that giving people an easy target to
shoot for, they may be encouraged to help out. The plan is not
working :-<.

--------------------------------------------------
[Cooking]

* mz/cherry-pick-cmdline-order (2012-08-30) 3 commits
  (merged to 'next' on 2012-08-31 at fc8eec4)
 + cherry-pick/revert: respect order of revisions to pick
 + demonstrate broken 'git cherry-pick three one two'
 + teach log --no-walk=unsorted, which avoids sorting

"git cherry-pick A C B" used to replay changes in A and then B and
then C if these three commits had committer timestamps in that
order, which is not what the user who said "A C B" naturally expects.

Will merge to 'master' as part of the fifth batch.

* ph/credential-gnome-keyring (2012-08-24) 1 commit
  (merged to 'next' on 2012-08-31 at 6f3b1de)
 + contrib: add credential helper for GnomeKeyring
 (this branch is used by ph/credential-refactor.)

The later refactoring of the shared code in the original series may
not be worth the trouble, so it is split into a separate topic that
builds on top of this one, which independently should be useful.

Will merge to 'master' as part of the fifth batch.

* ms/contrib-thunderbird-updates (2012-08-31) 2 commits
 - [SQUASH] minimum fixup
 - Thunderbird: fix appp.sh format problems

Update helper to send out format-patch output using Thunderbird.
Seems to have design regression for silent users.

* nd/i18n-index-pack (2012-08-31) 1 commit
 - i18n: mark more index-pack strings for translation

Will merge to 'next'.

* jk/maint-quiet-is-synonym-to-s-in-log (2012-08-28) 1 commit
  (merged to 'next' on 2012-08-31 at 06f6953)
 + log: fix --quiet synonym for -s

We tried to bend backwards to allow "--quiet" to be a synonym as
"-s" when given as e.g. "git show --quiet", but did not quite
succeed.

Will merge to 'master' as part of the fifth batch.

* nd/checkout-option-parsing-fix (2012-08-30) 3 commits
 - checkout: reorder option handling
 - checkout: move more parameters to struct checkout_opts
 - checkout: pass "struct checkout_opts *" as const pointer

The option parsing of "git checkout" had error checking, dwim and
defaulting missing options, all mixed in the code, and issuing an
appropriate error message with useful context was getting harder.
Reorganize the code and allow giving a proper diagnosis when the
user says "git checkout -b -t foo bar" (e.g. "-t" is not a good name
for a branch).

Will merge to 'next' after eyeballing one more time.

* jc/maint-name-rev (2012-09-04) 7 commits
 - describe --contains: use "name-rev --weight"
 - name-rev --weight: tests and documentation
 - name-rev --weight: cache the computed weight in notes
 - name-rev --weight: trivial optimization
 - name-rev: --weight option
 - name_rev: clarify the logic to assign a new tip-name to a commit
 - name-rev: lose unnecessary typedef

"git name-rev" names the given revision based on a ref that can be
reached in the smallest number of steps from the rev, but that is
not useful when the caller wants to know which tag is the oldest one
that contains the rev.  This teaches a new mode to the command that
uses the oldest ref among those which contain the rev.

I am not sure if this is worth it; for one thing, even with the help
from notes-cache, it seems to make the "describe --contains" even
slower. Also the command will be unusably slow for a user who does
not have a write access (hence unable to create or update the
notes-cache).

Needs another round to at least find a better name for the option,
and possibly a cheaper but still better than the current "close to
the tip" heuristics.

* cn/branch-set-upstream-to (2012-08-30) 3 commits
  (merged to 'next' on 2012-08-31 at d550ecd)
 + branch: deprecate --set-upstream and show help if we detect possible mistaken use
 + branch: add --unset-upstream option
 + branch: introduce --set-upstream-to

"git branch --set-upstream origin/master" is a common mistake to
create a local branch 'origin/master' and set it to integrate with
the current branch.  With a plan to deprecate this option, introduce
"git branch (-u|--set-upstream-to) origin/master" that sets the
current branch to integrate with 'origin/master' remote tracking
branch.

Will merge to 'master' as part of the fifth batch.

* jc/dotdot-is-parent-directory (2012-08-23) 1 commit
  (merged to 'next' on 2012-08-28 at 2f2ae87)
 + specifying ranges: we did not mean to make ".." an empty set

"git log .." errored out saying it is both rev range and a path when
there is no disambiguating "--" is on the command line.  Update the
command line parser to interpret ".." as a path in such a case.

Will merge to 'master' as part of the fourth batch.

* js/compat-itimer (2012-08-24) 1 commit
 - Support for setitimer() on platforms lacking it

Pieces to support compilation on __TANDEM.

* ph/credential-refactor (2012-09-02) 5 commits
 - wincred: port to generic credential helper
 - Merge branch 'ef/win32-cred-helper' into ph/credential-refactor
 - osxkeychain: port to generic credential helper implementation
 - gnome-keyring: port to generic helper implementation
 - contrib: add generic credential helper
 (this branch uses ph/credential-gnome-keyring.)

Attempts to refactor to share code among OSX keychain, Gnome keyring
and Win32 credential helpers.

* jc/apply-binary-p0 (2012-08-24) 1 commit
  (merged to 'next' on 2012-08-28 at 6fa690c)
 + apply: compute patch->def_name correctly under -p0

"git apply -p0" did not parse pathnames on "diff --git" line
correctly.  This caused patches that had pathnames in no other
places to be mistakenly rejected (most notably, binary patch that
does not rename nor change mode).  Textual patches, renames or
mode changes have preimage and postimage pathnames in different
places in a form that can be parsed unambiguously and did not suffer
from this problem.

Will merge to 'master' as part of the fourth batch.

* jc/maint-doc-checkout-b-always-takes-branch-name (2012-08-26) 1 commit
  (merged to 'next' on 2012-08-29 at e0d0f5c)
 + doc: "git checkout -b/-B/--orphan" always takes a branch name

The synopsis said "checkout [-B branch]" to make it clear the branch
name is a parameter to the option, but the heading for the option
description was "-B::", not "-B branch::", making the documentation
misleading.  There may be room in documentation pages of other
commands for similar improvements (hint, hint).

Will merge to 'master' as part of the fourth batch.

* jk/maint-http-half-auth-push (2012-08-27) 8 commits
  (merged to 'next' on 2012-08-29 at 0ed32f5)
 + http: prompt for credentials on failed POST
 + http: factor out http error code handling
 + t: test http access to "half-auth" repositories
 + t: test basic smart-http authentication
 + t/lib-httpd: recognize */smart/* repos as smart-http
 + t/lib-httpd: only route auth/dumb to dumb repos
 + t5550: factor out http auth setup
 + t5550: put auth-required repo in auth/dumb

Pushing to smart HTTP server with recent Git fails without having
the username in the URL to force authentication, if the server is
configured to allow GET anonymously, while requiring authentication
for POST.

Will merge to 'master' as part of the fourth batch.

* mh/fetch-filter-refs (2012-08-26) 17 commits
 - filter_refs(): simplify logic
 - fetch_pack(): free matching heads
 - cmd_fetch_pack(): simplify computation of return value
 - fetch-pack: report missing refs even if no existing refs were received
 - cmd_fetch_pack: return early if finish_connect() returns an error
 - filter_refs(): compress unmatched refs in heads array
 - filter_refs(): do not leave gaps in return_refs
 - filter_refs(): simplify by removing optimization
 - Pass nr_heads to filter_refs() by reference
 - Pass nr_heads to everything_local() by reference
 - Pass nr_heads to do_pack_ref() by reference
 - Let fetch_pack() inform caller about number of unique heads
 - filter_refs(): do not check the same head_pos twice
 - fetch-pack.c: name local variables more consistently
 - fetch_pack(): reindent function decl and defn
 - Rename static function fetch_pack() to http_fetch_pack()
 - t5500: add tests of error output for missing refs

Code simplification and clarification.
Waiting for a follow-up patch based on Peff's idea.

* nd/branch-v-alignment (2012-08-27) 1 commit
  (merged to 'next' on 2012-08-29 at 5c0d226)
 + branch -v: align even when branch names are in UTF-8

Output from "git branch -v" contains "(no branch)" that could be
localized, but the code to align it along with the names of branches
were counting in bytes, not in display columns.

Will merge to 'master' as part of the fourth batch.

* jc/merge-bases (2012-08-31) 9 commits
 - reduce_heads(): reimplement on top of remove_redundant()
 - merge-base: "--is-ancestor A B"
 - get_merge_bases_many(): walk from many tips in parallel
 - in_merge_bases(): use paint_down_to_common()
 - merge_bases_many(): split out the logic to paint history
 - in_merge_bases(): omit unnecessary redundant common ancestor reduction
 - http-push: use in_merge_bases() for fast-forward check
 - receive-pack: use in_merge_bases() for fast-forward check
 - in_merge_bases(): support only one "other" commit

Optimise the "merge-base" computation a bit, and also update its
users that do not need the full merge-base information to call a
cheaper subset.

Will merge to 'next'.

* jl/submodule-rm (2012-08-27) 1 commit
 - Teach rm to remove submodules unless they contain a git directory

"git rm submodule" cannot blindly remove a submodule directory as
its working tree may have local changes, and worse yet, it may even
have its repository embedded in it.  Teach it some special cases
where it is safe to remove a submodule, specifically, when there is
no local changes in the submodule working tree, and its repository
is not embedded in its working tree but is elsewhere and uses the
gitfile mechanism to point at it.

* nd/am-i18n-fix (2012-08-22) 1 commit
  (merged to 'next' on 2012-08-24 at f8e9a63)
 + am: quote string for translation before passing to eval_gettextln

"git am" wasn't marked up for i18n properly.

Will merge to 'master' as part of the fourth batch.

* lt/commit-tree-guess-utf-8 (2012-08-21) 1 commit
  (merged to 'next' on 2012-08-24 at d16ac69)
 + commit/commit-tree: correct latin1 to utf-8

Teaches "git commit" and "git commit-tree" the "we are told to use
utf-8 in log message, but this does not look like utf-8---attempt to
pass it through convert-from-latin1-to-utf8 and see if it makes
sense" heuristics "git mailinfo" already uses.

Will merge to 'master' as part of the fourth batch.

* kk/maint-for-each-ref-multi-sort (2012-08-21) 2 commits
  (merged to 'next' on 2012-08-24 at 28a5db4)
 + for-each-ref: Fix sort with multiple keys
 + t6300: test sort with multiple keys

"git for-each-ref" did not currectly support more than one --sort
option.

Will merge to 'master' as part of the fourth batch.

* fa/remote-svn (2012-08-28) 16 commits
 - Add a test script for remote-svn
 - remote-svn: add marks-file regeneration
 - Add a svnrdump-simulator replaying a dump file for testing
 - remote-svn: add incremental import
 - remote-svn: Activate import/export-marks for fast-import
 - Create a note for every imported commit containing svn metadata
 - vcs-svn: add fast_export_note to create notes
 - Allow reading svn dumps from files via file:// urls
 - remote-svn, vcs-svn: Enable fetching to private refs
 - When debug==1, start fast-import with "--stats" instead of "--quiet"
 - Add documentation for the 'bidi-import' capability of remote-helpers
 - Connect fast-import to the remote-helper via pipe, adding 'bidi-import' capability
 - Add argv_array_detach and argv_array_free_detached
 - Add svndump_init_fd to allow reading dumps from arbitrary FDs
 - Add git-remote-testsvn to Makefile and .gitignore
 - Implement a remote helper for svn in C
 (this branch is used by fa/vcs-svn.)

A GSoC project.  Looked promising.
Waiting for comments from mentors and stakeholders.

* fa/vcs-svn (2012-08-28) 4 commits
 - vcs-svn: remove repo_tree
 - vcs-svn/svndump: rewrite handle_node(), begin|end_revision()
 - vcs-svn/svndump: restructure node_ctx, rev_ctx handling
 - svndump: move struct definitions to .h
 (this branch uses fa/remote-svn.)

A GSoC project.  Looked promising.
Waiting for comments from mentors and stakeholders.

* nd/i18n-parseopt-help (2012-08-22) 66 commits
  (merged to 'next' on 2012-08-24 at 2a04ce0)
 + Use imperative form in help usage to describe an action
 + Reduce translations by using same terminologies
 + i18n: write-tree: mark parseopt strings for translation
 + i18n: verify-tag: mark parseopt strings for translation
 + i18n: verify-pack: mark parseopt strings for translation
 + i18n: update-server-info: mark parseopt strings for translation
 + i18n: update-ref: mark parseopt strings for translation
 + i18n: update-index: mark parseopt strings for translation
 + i18n: tag: mark parseopt strings for translation
 + i18n: symbolic-ref: mark parseopt strings for translation
 + i18n: show-ref: mark parseopt strings for translation
 + i18n: show-branch: mark parseopt strings for translation
 + i18n: shortlog: mark parseopt strings for translation
 + i18n: rm: mark parseopt strings for translation
 + i18n: revert, cherry-pick: mark parseopt strings for translation
 + i18n: rev-parse: mark parseopt strings for translation
 + i18n: reset: mark parseopt strings for translation
 + i18n: rerere: mark parseopt strings for translation
 + i18n: status: mark parseopt strings for translation
 + i18n: replace: mark parseopt strings for translation
 + i18n: remote: mark parseopt strings for translation
 + i18n: read-tree: mark parseopt strings for translation
 + i18n: push: mark parseopt strings for translation
 + i18n: prune: mark parseopt strings for translation
 + i18n: prune-packed: mark parseopt strings for translation
 + i18n: pack-refs: mark parseopt strings for translation
 + i18n: pack-objects: mark parseopt strings for translation
 + i18n: notes: mark parseopt strings for translation
 + i18n: name-rev: mark parseopt strings for translation
 + i18n: mv: mark parseopt strings for translation
 + i18n: mktree: mark parseopt strings for translation
 + i18n: merge: mark parseopt strings for translation
 + i18n: merge-file: mark parseopt strings for translation
 + i18n: merge-base: mark parseopt strings for translation
 + i18n: ls-tree: mark parseopt strings for translation
 + i18n: ls-files: mark parseopt strings for translation
 + i18n: log: mark parseopt strings for translation
 + i18n: init-db: mark parseopt strings for translation
 + i18n: help: mark parseopt strings for translation
 + i18n: hash-object: mark parseopt strings for translation
 + i18n: grep: mark parseopt strings for translation
 + i18n: gc: mark parseopt strings for translation
 + i18n: fsck: mark parseopt strings for translation
 + i18n: format-patch: mark parseopt strings for translation
 + i18n: for-each-ref: mark parseopt strings for translation
 + i18n: fmt-merge-msg: mark parseopt strings for translation
 + i18n: fetch: mark parseopt strings for translation
 + i18n: fast-export: mark parseopt strings for translation
 + i18n: describe: mark parseopt strings for translation
 + i18n: config: mark parseopt strings for translation
 + i18n: count-objects: mark parseopt strings for translation
 + i18n: commit: mark parseopt strings for translation
 + i18n: column: mark parseopt strings for translation
 + i18n: clone: mark parseopt strings for translation
 + i18n: clean: mark parseopt strings for translation
 + i18n: cherry: mark parseopt strings for translation
 + i18n: checkout: mark parseopt strings for translation
 + i18n: checkout-index: mark parseopt strings for translation
 + i18n: check-attr: mark parseopt strings for translation
 + i18n: cat-file: mark parseopt strings for translation
 + i18n: branch: mark parseopt strings for translation
 + i18n: blame: mark parseopt strings for translation
 + i18n: add: mark parseopt strings for translation
 + i18n: bisect--helper: mark parseopt strings for translation
 + i18n: archive: mark parseopt strings for translation
 + i18n: mark "style" in OPT_COLUMN() for translation

A lot of i18n mark-up for the help text from "git <cmd> -h".

Will merge to 'master' as part of the fourth batch.

* tr/maint-parseopt-avoid-empty (2012-08-20) 1 commit
  (merged to 'next' on 2012-08-24 at cffa9a0)
 + gettext: do not translate empty string

A workaround to avoid doing _(""), which translates to unwanted
magic string in the .po files.

Will merge to 'master' as part of the fourth batch.

* jk/config-warn-on-inaccessible-paths (2012-08-21) 4 commits
  (merged to 'next' on 2012-08-24 at 7470bd6)
 + warn_on_inaccessible(): a helper to warn on inaccessible paths
 + attr: warn on inaccessible attribute files
 + gitignore: report access errors of exclude files
 + config: warn on inaccessible files

When looking for $HOME/.gitconfig etc., it is OK if we cannot read
them because they do not exist, but unable to read existing ones
need to be diagnosed.

Will merge to 'master' as part of the fourth batch.

* nd/i18n-poison-test-updates (2012-08-27) 7 commits
  (merged to 'next' on 2012-08-29 at 9b7ff7f)
 + Fix tests under GETTEXT_POISON on parseopt
 + Fix tests under GETTEXT_POISON on git-remote
 + Fix tests under GETTEXT_POISON on pack-object
 + Fix tests under GETTEXT_POISON on git-apply
 + Fix tests under GETTEXT_POISON on diffstat
 + Fix tests under GETTEXT_POISON on git-stash
 + Fix tests under GETTEXT_POISON on relative dates

Updates to tests that can be broken with gettext-poison builds.
Queued with trivial fix-ups.

Will merge to 'master' as part of the third batch.

* pw/p4-use-client-spec-branch-detection (2012-08-20) 5 commits
  (merged to 'next' on 2012-08-24 at 08abc61)
 + git p4: make branch detection work with --use-client-spec
 + git p4: do wildcard decoding in stripRepoPath
 + git p4: set self.branchPrefixes in initialization
 + git p4 test: add broken --use-client-spec --detect-branches tests
 + git p4 test: move client_view() function to library

Fixes "git p4" when "--use-client-spec" and "--detect-branches" are
used together (the command used to misdetect branches).

Will merge to 'master' as part of the fourth batch.

* jk/no-more-pre-exec-callback (2012-06-05) 1 commit
 - pager: drop "wait for output to run less" hack

(Originally merged to 'next' on 2012-07-23)

Will defer until the end of the 2012.
while waiting for older "less" to go extinct.

--------------------------------------------------
[Discarded]

* jc/sanitize-nkd-lazy-iconv-open (2012-07-31) 1 commit
 . macos: lazily initialize iconv

Teach the code that works around NKD/NKC gotcha on MacOS to call
iconv_open() only when it is necessary, in the hope of avoiding
set-up overhead.  It turns out that there was no noticeable
improvements.

* nd/checkout-branch-name-check (2012-08-27) 1 commit
 . checkout: verify new branch name's validity early

"git checkout -b --opt y" errors out saying that creating a new
branch to check it out and grabbing contents for paths out of a
commit are incompatible operations.  While it is technically correct
(the command line wants to create a new branch whose name is "--opt"
and check it out, and there shouldn't be anything else left on the
command line, but there is "y"), "--opt" is not a valid name of the
branch to begin with, so even without "y", the command will not
succeed.  Treat this case specially to complain that "--opt" is not
a valid branch name.

^ permalink raw reply	[relevance 4%]

* What's cooking in git.git (Aug 2012, #10; Fri, 31)
@ 2012-08-31 21:32  6% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2012-08-31 21:32 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'pu' (proposed updates) while commits prefixed with '+' are in 'next'.

The latter half of the second batch of topics are now in 'master'.

I'm planning to keep this cycle reasonably short and aim for tagging
the result as 1.8.0 at the end of 9th week, on October 21st, after
which I'd disappear for a few weeks.  http://tinyurl.com/gitCal is
where you can always find my rough tagging schedule at.

You can find the changes described here in the integration branches of the
repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* mz/cherry-pick-cmdline-order (2012-08-30) 3 commits
  (merged to 'next' on 2012-08-31 at fc8eec4)
 + cherry-pick/revert: respect order of revisions to pick
 + demonstrate broken 'git cherry-pick three one two'
 + teach log --no-walk=unsorted, which avoids sorting

"git cherry-pick A C B" used to replay changes in A and then B and
then C if these three commits had committer timestamps in that
order, which is not what the user who said "A C B" naturally expects.

Will merge to 'master' as part of the fifth batch.

* ph/credential-gnome-keyring (2012-08-24) 1 commit
  (merged to 'next' on 2012-08-31 at 6f3b1de)
 + contrib: add credential helper for GnomeKeyring
 (this branch is used by ph/credential-refactor.)

The later refactoring of the shared code in the original series may
not be worth the trouble, so it is split into a separate topic that
builds on top of this one, which independently should be useful.

Will merge to 'master' as part of the fifth batch.

* ms/contrib-thunderbird-updates (2012-08-31) 2 commits
 - [SQUASH] minimum fixup
 - Thunderbird: fix appp.sh format problems

Update helper to send out format-patch output using Thunderbird.

* nd/i18n-index-pack (2012-08-31) 1 commit
 - i18n: mark more index-pack strings for translation

Will merge to 'next'.

--------------------------------------------------
[Stalled]

* jc/maint-push-refs-all (2012-08-27) 2 commits
 - get_fetch_map(): tighten checks on dest refs
 - [BROKEN] fetch/push: allow refs/*:refs/*

Allows pushing and fetching everything including refs/stash.
This is broken (see the log message there).

* er/doc-fast-import-done (2012-08-22) 1 commit
 - fast-import: document the --done option

Parked in 'pu' in case ESR responds with "Sorry, forgot to sign-off".

* jc/add-delete-default (2012-08-13) 1 commit
 - git add: notice removal of tracked paths by default

"git add dir/" updated modified files and added new files, but does
not notice removed files, which may be "Huh?" to some users.  They
can of course use "git add -A dir/", but why should they?

Resurrected from graveyard, as I thought it was a worthwhile thing
to do in the longer term; waiting for comments.

* tx/relative-in-the-future (2012-08-16) 2 commits
 - date: show relative dates in the future
 - date: refactor the relative date logic from presentation

Not my itch; rewritten an earlier submission by Tom Xue into
somewhat more maintainable form, though it breaks existing i18n.

Anybody interested in fixing it up?  Otherwise may discard.

* pw/p4-submit-conflicts (2012-08-16) 12 commits
 - git p4: add submit --prepare-p4-only option
 - git p4: add submit --dry-run option
 - git p4: accept -v for --verbose
 - git p4: revert deleted files after submit cancel
 - git p4: rearrange submit template construction
 - git p4: test clean-up after failed submit, fix added files
 - git p4: standardize submit cancel due to unchanged template
 - git p4: move conflict prompt into run, use [c]ontinue and [q]uit
 - git p4: remove submit failure options [a]pply and [w]rite
 - git p4: gracefully fail if some commits could not be applied
 - git p4 test: use p4d -L option to suppress log messages
 - git p4 test: remove bash-ism of combined export/assignment

Waiting for the dust to settle.

* mz/rebase-range (2012-07-18) 7 commits
 . rebase (without -p): correctly calculate patches to rebase
 . rebase -p: don't request --left-right only to ignore left side
 . rebase -p: use --cherry-mark for todo file
 . git-rebase--interactive.sh: look up subject in add_pick_line
 . git-rebase--interactive: group all $preserve_merges code
 . git-rebase--interactive.sh: extract function for adding "pick" line
 . git-rebase--am.sh: avoid special-casing --keep-empty

Expecting a reroll.

Performance concerns from Windows folks.  Also the series lacks
proper sign-offs.

* mb/remote-default-nn-origin (2012-07-11) 6 commits
 - Teach get_default_remote to respect remote.default.
 - Test that plain "git fetch" uses remote.default when on a detached HEAD.
 - Teach clone to set remote.default.
 - Teach "git remote" about remote.default.
 - Teach remote.c about the remote.default configuration setting.
 - Rename remote.c's default_remote_name static variables.

When the user does not specify what remote to interact with, we
often attempt to use 'origin'.  This can now be customized via a
configuration variable.

Expecting a reroll.

"The first remote becomes the default" bit is better done as a
separate step.

* jc/split-blob (2012-04-03) 6 commits
 - chunked-object: streaming checkout
 - chunked-object: fallback checkout codepaths
 - bulk-checkin: support chunked-object encoding
 - bulk-checkin: allow the same data to be multiply hashed
 - new representation types in the packstream
 - packfile: use varint functions

Not ready.

I finished the streaming checkout codepath, but as explained in
127b177 (bulk-checkin: support chunked-object encoding, 2011-11-30),
these are still early steps of a long and painful journey. At least
pack-objects and fsck need to learn the new encoding for the series
to be usable locally, and then index-pack/unpack-objects needs to
learn it to be used remotely.

Given that I heard a lot of noise that people want large files, and
that I was asked by somebody at GitTogether'11 privately for an
advice on how to pay developers (not me) to help adding necessary
support, I am somewhat dissapointed that the original patch series
that was sent long time ago still remains here without much comments
and updates from the developer community. I even made the interface
to the logic that decides where to split chunks easily replaceable,
and I deliberately made the logic in the original patch extremely
stupid to entice others, especially the "bup" fanbois, to come up
with a better logic, thinking that giving people an easy target to
shoot for, they may be encouraged to help out. The plan is not
working :-<.

--------------------------------------------------
[Cooking]

* jk/maint-quiet-is-synonym-to-s-in-log (2012-08-28) 1 commit
  (merged to 'next' on 2012-08-31 at 06f6953)
 + log: fix --quiet synonym for -s

We tried to bend backwards to allow "--quiet" to be a synonym as
"-s" when given as e.g. "git show --quiet", but did not quite
succeed.

Will merge to 'master' as part of the fifth batch.

* nd/checkout-option-parsing-fix (2012-08-30) 3 commits
 - checkout: reorder option handling
 - checkout: move more parameters to struct checkout_opts
 - checkout: pass "struct checkout_opts *" as const pointer

The option parsing of "git checkout" had error checking, dwim and
defaulting missing options, all mixed in the code, and issuing an
appropriate error message with useful context was getting harder.
Reorganize the code and allow giving a proper diagnosis when the
user says "git checkout -b -t foo bar" (e.g. "-t" is not a good name
for a branch).

* jc/maint-name-rev (2012-08-29) 6 commits
 - describe --contains: use "name-rev --weight"
 - name-rev --weight: tests and documentation
 - name-rev --weight: cache the computed weight in notes
 - name-rev: --weight option
 - name_rev: clarify the logic to assign a new tip-name to a commit
 - name-rev: lose unnecessary typedef

"git name-rev" names the given revision based on a ref that can be
reached in the smallest number of steps from the rev, but that is
not useful when the caller wants to know which tag is the oldest one
that contains the rev.  This teaches a new mode to the command that
uses the oldest ref among those which contain the rev.

I am not sure if this is worth it; for one thing, even with the help
from notes-cache, it seems to make the "describe --contains" even
slower. Also the command will be unusably slow for a user who does
not have a write access (hence unable to create or update the
notes-cache).

* cn/branch-set-upstream-to (2012-08-30) 3 commits
  (merged to 'next' on 2012-08-31 at d550ecd)
 + branch: deprecate --set-upstream and show help if we detect possible mistaken use
 + branch: add --unset-upstream option
 + branch: introduce --set-upstream-to

"git branch --set-upstream origin/master" is a common mistake to
create a local branch 'origin/master' and set it to integrate with
the current branch.  With a plan to deprecate this option, introduce
"git branch (-u|--set-upstream-to) origin/master" that sets the
current branch to integrate with 'origin/master' remote tracking
branch.

Will merge to 'master' as part of the fifth batch.

* jc/dotdot-is-parent-directory (2012-08-23) 1 commit
  (merged to 'next' on 2012-08-28 at 2f2ae87)
 + specifying ranges: we did not mean to make ".." an empty set

"git log .." errored out saying it is both rev range and a path when
there is no disambiguating "--" is on the command line.  Update the
command line parser to interpret ".." as a path in such a case.

Will merge to 'master' as part of the fourth batch.

* jc/maint-mergetool-style-fix (2012-08-23) 1 commit
  (merged to 'next' on 2012-08-28 at ced5868)
 + mergetool: style fixes

Will merge to 'master' as part of the third batch.

* js/compat-itimer (2012-08-24) 1 commit
 - Support for setitimer() on platforms lacking it

Pieces to support compilation on __TANDEM.

* js/compat-mkdir (2012-08-24) 1 commit
  (merged to 'next' on 2012-08-28 at e92bf74)
 + compat: some mkdir() do not like a slash at the end

Some mkdir(2) implementations do not want to see trailing slash in
its parameter.

Will merge to 'master' as part of the third batch.

* js/no-curl-easy-strerror-on-old-curl (2012-08-23) 1 commit
  (merged to 'next' on 2012-08-28 at 25e2e7a)
 + http.c: don't use curl_easy_strerror prior to curl-7.12.0

Done to support compilation on __TANDEM, but is independently useful
for people with older version of libcURL.

Will merge to 'master' as part of the third batch.

* js/use-sc-open-max (2012-08-24) 1 commit
  (merged to 'next' on 2012-08-28 at 8b9ac7c)
 + sha1_file.c: introduce get_max_fd_limit() helper

Introduce get_max_fd_limit() to absorb platforms that do not have
getrlimit(RLIMIT_NOFILE) and/or sysconf(_SC_OPEN_MAX).

Will merge to 'master' as part of the third batch.

* ph/credential-refactor (2012-08-27) 5 commits
 - wincred: port to generic credential helper (UNTESTED)
 - Merge branch 'ef/win32-cred-helper' into ph/credential-refactor
 - osxkeychain: port to generic credential helper implementation
 - gnome-keyring: port to generic helper implementation
 - contrib: add generic credential helper
 (this branch uses ph/credential-gnome-keyring.)

Attempts to refactor to share code among OSX keychain, Gnome keyring
and Win32 credential helpers.

* jc/apply-binary-p0 (2012-08-24) 1 commit
  (merged to 'next' on 2012-08-28 at 6fa690c)
 + apply: compute patch->def_name correctly under -p0

"git apply -p0" did not parse pathnames on "diff --git" line
correctly.  This caused patches that had pathnames in no other
places to be mistakenly rejected (most notably, binary patch that
does not rename nor change mode).  Textual patches, renames or
mode changes have preimage and postimage pathnames in different
places in a form that can be parsed unambiguously and did not suffer
from this problem.

Will merge to 'master' as part of the fourth batch.

* jc/maint-doc-checkout-b-always-takes-branch-name (2012-08-26) 1 commit
  (merged to 'next' on 2012-08-29 at e0d0f5c)
 + doc: "git checkout -b/-B/--orphan" always takes a branch name

The synopsis said "checkout [-B branch]" to make it clear the branch
name is a parameter to the option, but the heading for the option
description was "-B::", not "-B branch::", making the documentation
misleading.  There may be room in documentation pages of other
commands for similar improvements (hint, hint).

Will merge to 'master' as part of the fourth batch.

* jk/maint-http-half-auth-push (2012-08-27) 8 commits
  (merged to 'next' on 2012-08-29 at 0ed32f5)
 + http: prompt for credentials on failed POST
 + http: factor out http error code handling
 + t: test http access to "half-auth" repositories
 + t: test basic smart-http authentication
 + t/lib-httpd: recognize */smart/* repos as smart-http
 + t/lib-httpd: only route auth/dumb to dumb repos
 + t5550: factor out http auth setup
 + t5550: put auth-required repo in auth/dumb

Pushing to smart HTTP server with recent Git fails without having
the username in the URL to force authentication, if the server is
configured to allow GET anonymously, while requiring authentication
for POST.

Will merge to 'master' as part of the fourth batch.

* jx/test-real-path (2012-08-27) 1 commit
 - test: set the realpath of CWD as TRASH_DIRECTORY

Running tests with the "trash" directory elsewhere with the "--root"
option did not work well if the directory was specified by a symbolic
link pointing at it.

Seems broken as it makes $(pwd) and TRASH_DIRECTORY inconsistent.
Needs rerolling.

* mh/fetch-filter-refs (2012-08-26) 17 commits
 - filter_refs(): simplify logic
 - fetch_pack(): free matching heads
 - cmd_fetch_pack(): simplify computation of return value
 - fetch-pack: report missing refs even if no existing refs were received
 - cmd_fetch_pack: return early if finish_connect() returns an error
 - filter_refs(): compress unmatched refs in heads array
 - filter_refs(): do not leave gaps in return_refs
 - filter_refs(): simplify by removing optimization
 - Pass nr_heads to filter_refs() by reference
 - Pass nr_heads to everything_local() by reference
 - Pass nr_heads to do_pack_ref() by reference
 - Let fetch_pack() inform caller about number of unique heads
 - filter_refs(): do not check the same head_pos twice
 - fetch-pack.c: name local variables more consistently
 - fetch_pack(): reindent function decl and defn
 - Rename static function fetch_pack() to http_fetch_pack()
 - t5500: add tests of error output for missing refs

Code simplification and clarification.
Waiting for a follow-up patch based on Peff's idea.

* nd/branch-v-alignment (2012-08-27) 1 commit
  (merged to 'next' on 2012-08-29 at 5c0d226)
 + branch -v: align even when branch names are in UTF-8

Output from "git branch -v" contains "(no branch)" that could be
localized, but the code to align it along with the names of branches
were counting in bytes, not in display columns.

Will merge to 'master' as part of the fourth batch.

* jc/merge-bases (2012-08-31) 9 commits
 - reduce_heads(): reimplement on top of remove_redundant()
 - merge-base: "--is-ancestor A B"
 - get_merge_bases_many(): walk from many tips in parallel
 - in_merge_bases(): use paint_down_to_common()
 - merge_bases_many(): split out the logic to paint history
 - in_merge_bases(): omit unnecessary redundant common ancestor reduction
 - http-push: use in_merge_bases() for fast-forward check
 - receive-pack: use in_merge_bases() for fast-forward check
 - in_merge_bases(): support only one "other" commit

Optimise the "merge-base" computation a bit, and also update its
users that do not need the full merge-base information to call a
cheaper subset.

Will merge to 'next'.

* jl/submodule-rm (2012-08-27) 1 commit
 - Teach rm to remove submodules unless they contain a git directory

"git rm submodule" cannot blindly remove a submodule directory as
its working tree may have local changes, and worse yet, it may even
have its repository embedded in it.  Teach it some special cases
where it is safe to remove a submodule, specifically, when there is
no local changes in the submodule working tree, and its repository
is not embedded in its working tree but is elsewhere and uses the
gitfile mechanism to point at it.

* nd/am-i18n-fix (2012-08-22) 1 commit
  (merged to 'next' on 2012-08-24 at f8e9a63)
 + am: quote string for translation before passing to eval_gettextln

"git am" wasn't marked up for i18n properly.

Will merge to 'master' as part of the fourth batch.

* lt/commit-tree-guess-utf-8 (2012-08-21) 1 commit
  (merged to 'next' on 2012-08-24 at d16ac69)
 + commit/commit-tree: correct latin1 to utf-8

Teaches "git commit" and "git commit-tree" the "we are told to use
utf-8 in log message, but this does not look like utf-8---attempt to
pass it through convert-from-latin1-to-utf8 and see if it makes
sense" heuristics "git mailinfo" already uses.

Will merge to 'master' as part of the fourth batch.

* kk/maint-for-each-ref-multi-sort (2012-08-21) 2 commits
  (merged to 'next' on 2012-08-24 at 28a5db4)
 + for-each-ref: Fix sort with multiple keys
 + t6300: test sort with multiple keys

"git for-each-ref" did not currectly support more than one --sort
option.

Will merge to 'master' as part of the fourth batch.

* fa/remote-svn (2012-08-28) 16 commits
 - Add a test script for remote-svn
 - remote-svn: add marks-file regeneration
 - Add a svnrdump-simulator replaying a dump file for testing
 - remote-svn: add incremental import
 - remote-svn: Activate import/export-marks for fast-import
 - Create a note for every imported commit containing svn metadata
 - vcs-svn: add fast_export_note to create notes
 - Allow reading svn dumps from files via file:// urls
 - remote-svn, vcs-svn: Enable fetching to private refs
 - When debug==1, start fast-import with "--stats" instead of "--quiet"
 - Add documentation for the 'bidi-import' capability of remote-helpers
 - Connect fast-import to the remote-helper via pipe, adding 'bidi-import' capability
 - Add argv_array_detach and argv_array_free_detached
 - Add svndump_init_fd to allow reading dumps from arbitrary FDs
 - Add git-remote-testsvn to Makefile and .gitignore
 - Implement a remote helper for svn in C
 (this branch is used by fa/vcs-svn.)

A GSoC project.
Waiting for comments from mentors and stakeholders.

* fa/vcs-svn (2012-08-28) 4 commits
 - vcs-svn: remove repo_tree
 - vcs-svn/svndump: rewrite handle_node(), begin|end_revision()
 - vcs-svn/svndump: restructure node_ctx, rev_ctx handling
 - svndump: move struct definitions to .h
 (this branch uses fa/remote-svn.)

A GSoC project.
Waiting for comments from mentors and stakeholders.

* nd/i18n-parseopt-help (2012-08-22) 66 commits
  (merged to 'next' on 2012-08-24 at 2a04ce0)
 + Use imperative form in help usage to describe an action
 + Reduce translations by using same terminologies
 + i18n: write-tree: mark parseopt strings for translation
 + i18n: verify-tag: mark parseopt strings for translation
 + i18n: verify-pack: mark parseopt strings for translation
 + i18n: update-server-info: mark parseopt strings for translation
 + i18n: update-ref: mark parseopt strings for translation
 + i18n: update-index: mark parseopt strings for translation
 + i18n: tag: mark parseopt strings for translation
 + i18n: symbolic-ref: mark parseopt strings for translation
 + i18n: show-ref: mark parseopt strings for translation
 + i18n: show-branch: mark parseopt strings for translation
 + i18n: shortlog: mark parseopt strings for translation
 + i18n: rm: mark parseopt strings for translation
 + i18n: revert, cherry-pick: mark parseopt strings for translation
 + i18n: rev-parse: mark parseopt strings for translation
 + i18n: reset: mark parseopt strings for translation
 + i18n: rerere: mark parseopt strings for translation
 + i18n: status: mark parseopt strings for translation
 + i18n: replace: mark parseopt strings for translation
 + i18n: remote: mark parseopt strings for translation
 + i18n: read-tree: mark parseopt strings for translation
 + i18n: push: mark parseopt strings for translation
 + i18n: prune: mark parseopt strings for translation
 + i18n: prune-packed: mark parseopt strings for translation
 + i18n: pack-refs: mark parseopt strings for translation
 + i18n: pack-objects: mark parseopt strings for translation
 + i18n: notes: mark parseopt strings for translation
 + i18n: name-rev: mark parseopt strings for translation
 + i18n: mv: mark parseopt strings for translation
 + i18n: mktree: mark parseopt strings for translation
 + i18n: merge: mark parseopt strings for translation
 + i18n: merge-file: mark parseopt strings for translation
 + i18n: merge-base: mark parseopt strings for translation
 + i18n: ls-tree: mark parseopt strings for translation
 + i18n: ls-files: mark parseopt strings for translation
 + i18n: log: mark parseopt strings for translation
 + i18n: init-db: mark parseopt strings for translation
 + i18n: help: mark parseopt strings for translation
 + i18n: hash-object: mark parseopt strings for translation
 + i18n: grep: mark parseopt strings for translation
 + i18n: gc: mark parseopt strings for translation
 + i18n: fsck: mark parseopt strings for translation
 + i18n: format-patch: mark parseopt strings for translation
 + i18n: for-each-ref: mark parseopt strings for translation
 + i18n: fmt-merge-msg: mark parseopt strings for translation
 + i18n: fetch: mark parseopt strings for translation
 + i18n: fast-export: mark parseopt strings for translation
 + i18n: describe: mark parseopt strings for translation
 + i18n: config: mark parseopt strings for translation
 + i18n: count-objects: mark parseopt strings for translation
 + i18n: commit: mark parseopt strings for translation
 + i18n: column: mark parseopt strings for translation
 + i18n: clone: mark parseopt strings for translation
 + i18n: clean: mark parseopt strings for translation
 + i18n: cherry: mark parseopt strings for translation
 + i18n: checkout: mark parseopt strings for translation
 + i18n: checkout-index: mark parseopt strings for translation
 + i18n: check-attr: mark parseopt strings for translation
 + i18n: cat-file: mark parseopt strings for translation
 + i18n: branch: mark parseopt strings for translation
 + i18n: blame: mark parseopt strings for translation
 + i18n: add: mark parseopt strings for translation
 + i18n: bisect--helper: mark parseopt strings for translation
 + i18n: archive: mark parseopt strings for translation
 + i18n: mark "style" in OPT_COLUMN() for translation

A lot of i18n mark-up for the help text from "git <cmd> -h".

Will merge to 'master' as part of the fourth batch.

* tr/maint-parseopt-avoid-empty (2012-08-20) 1 commit
  (merged to 'next' on 2012-08-24 at cffa9a0)
 + gettext: do not translate empty string

A workaround to avoid doing _(""), which translates to unwanted
magic string in the .po files.

Will merge to 'master' as part of the fourth batch.

* jk/config-warn-on-inaccessible-paths (2012-08-21) 4 commits
  (merged to 'next' on 2012-08-24 at 7470bd6)
 + warn_on_inaccessible(): a helper to warn on inaccessible paths
 + attr: warn on inaccessible attribute files
 + gitignore: report access errors of exclude files
 + config: warn on inaccessible files

When looking for $HOME/.gitconfig etc., it is OK if we cannot read
them because they do not exist, but unable to read existing ones
need to be diagnosed.

Will merge to 'master' as part of the fourth batch.

* nd/i18n-poison-test-updates (2012-08-27) 7 commits
  (merged to 'next' on 2012-08-29 at 9b7ff7f)
 + Fix tests under GETTEXT_POISON on parseopt
 + Fix tests under GETTEXT_POISON on git-remote
 + Fix tests under GETTEXT_POISON on pack-object
 + Fix tests under GETTEXT_POISON on git-apply
 + Fix tests under GETTEXT_POISON on diffstat
 + Fix tests under GETTEXT_POISON on git-stash
 + Fix tests under GETTEXT_POISON on relative dates

Updates to tests that can be broken with gettext-poison builds.
Queued with trivial fix-ups.

Will merge to 'master' as part of the third batch.

* jc/daemon-access-hook (2012-08-15) 1 commit
  (merged to 'next' on 2012-08-20 at c8f5b2e)
 + daemon: --access-hook option

Allow an external command to tell git-daemon to decline service
based on the client address, repository path, etc.

Will merge to 'master' as part of the third batch.

* jc/send-email-reconfirm (2012-08-14) 1 commit
  (merged to 'next' on 2012-08-20 at dffdef6)
 + send-email: validate & reconfirm interactive responses

Validate interactive input to "git send-email" to avoid common
mistakes such as saying "y<RETURN>" to sender mail address whose
prompt is given with a correctly guessed default.

Will merge to 'master' as part of the third batch.

* ph/stash-rerere (2012-08-17) 2 commits
  (merged to 'next' on 2012-08-20 at ae37111)
 + stash: invoke rerere in case of conflict
 + test: git-stash conflict sets up rerere

"git stash" internally used "git merge-recursive" backend, which did
not trigger "rerere" upon conflicts unlike other mergy operations.

Will merge to 'master' as part of the third batch.

* pw/p4-use-client-spec-branch-detection (2012-08-20) 5 commits
  (merged to 'next' on 2012-08-24 at 08abc61)
 + git p4: make branch detection work with --use-client-spec
 + git p4: do wildcard decoding in stripRepoPath
 + git p4: set self.branchPrefixes in initialization
 + git p4 test: add broken --use-client-spec --detect-branches tests
 + git p4 test: move client_view() function to library

Fixes "git p4" when "--use-client-spec" and "--detect-branches" are
used together (the command used to misdetect branches).

Will merge to 'master' as part of the fourth batch.

* tg/index-v5 (2012-08-17) 13 commits
 - p0002-index.sh: add perf test for the index formats
 - update-index.c: rewrite index when index-version is given
 - Write resolve-undo data for index-v5
 - Write index-v5 cache-tree data
 - Write index-v5
 - Read cache-tree in index-v5
 - Read resolve-undo data
 - Read index-v5
 - Make in-memory format aware of stat_crc
 - Add documentation of the index-v5 file format
 - t2104: Don't fail for index versions other than [23]
 - read-cache.c: Re-read index if index file changed
 - Move index v2 specific functions to their own file

A GSoC project.
Waiting for comments from mentors and stakeholders.

* jc/maint-sane-execvp-notdir (2012-07-31) 1 commit
  (merged to 'next' on 2012-08-20 at 0d76cf2)
 + sane_execvp(): ignore non-directory on $PATH

(Originally merged to 'next' on 2012-08-09)

"git foo" errored out with "Not a directory" when the user had a non
directory on $PATH, and worse yet it masked an alias "foo" to run.

Will merge to 'master' as part of the third batch.

* cw/cherry-pick-allow-empty-message (2012-08-06) 1 commit
  (merged to 'next' on 2012-08-20 at 0dc0590)
 + cherry-pick: add --allow-empty-message option

(Originally merged to 'next' on 2012-08-09)

"git cherry-pick" by default stops when it sees a commit without any
log message.  The "--allow-empty-message" option can be used to
silently proceed.

Will merge to 'master' as part of the third batch.

* jc/maint-config-exit-status (2012-07-30) 1 commit
  (merged to 'next' on 2012-08-20 at e18ddd8)
 + config: "git config baa" should exit with status 1

(Originally merged to 'next' on 2012-07-30)

The exit status code from "git config" was way overspecified while
being incorrect.  Update the implementation to give the documented
status for a case that was documented, and introduce a new code for
"all other errors".

Will merge to 'master' as part of the third batch.

* sz/submodule-force-update (2012-08-24) 1 commit
  (merged to 'next' on 2012-08-24 at f82b466)
 + Make 'git submodule update --force' always check out submodules.

"git submodule update --force" used to leave the working tree of the
submodule intact when there were local changes.  It is more intiutive
to make "--force" a sign to run "checkout -f" to overwrite them.

Will merge to 'master' as part of the third batch.

* jk/no-more-pre-exec-callback (2012-06-05) 1 commit
 - pager: drop "wait for output to run less" hack

(Originally merged to 'next' on 2012-07-23)

Will defer until the end of the 2012.
while waiting for older "less" to go extinct.

--------------------------------------------------
[Discarded]

* jc/sanitize-nkd-lazy-iconv-open (2012-07-31) 1 commit
 . macos: lazily initialize iconv

Teach the code that works around NKD/NKC gotcha on MacOS to call
iconv_open() only when it is necessary, in the hope of avoiding
set-up overhead.  It turns out that there was no noticeable
improvements.

* nd/checkout-branch-name-check (2012-08-27) 1 commit
 . checkout: verify new branch name's validity early

"git checkout -b --opt y" errors out saying that creating a new
branch to check it out and grabbing contents for paths out of a
commit are incompatible operations.  While it is technically correct
(the command line wants to create a new branch whose name is "--opt"
and check it out, and there shouldn't be anything else left on the
command line, but there is "y"), "--opt" is not a valid name of the
branch to begin with, so even without "y", the command will not
succeed.  Treat this case specially to complain that "--opt" is not
a valid branch name.

^ permalink raw reply	[relevance 6%]

* What's cooking in git.git (Aug 2012, #09; Wed, 29)
@ 2012-08-29 23:09  6% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2012-08-29 23:09 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'pu' (proposed updates) while commits prefixed with '+' are in 'next'.

The latter half of the second batch of topics are now in 'master'.

I'm planning to keep this cycle reasonably short and aim for tagging
the result as 1.8.0 at the end of 9th week, on October 21st, after
which I'd disappear for a few weeks.  http://tinyurl.com/gitCal is
where you can always find my rough tagging schedule at.

You can find the changes described here in the integration branches of the
repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* bc/prune-info (2012-08-07) 1 commit
  (merged to 'next' on 2012-08-20 at 1bc9e66)
 + prune.c: only print informational message in show_only or verbose mode

Teach "git prune" without "-v" to be silent about leftover temporary files.

* ef/win32-cred-helper (2012-08-16) 1 commit
  (merged to 'next' on 2012-08-20 at bd5c651)
 + contrib: add win32 credential-helper
 (this branch is used by ph/credential-refactor.)

Credential helper for Win32 to allow access to the keychain of
the logged-in user.

* hv/submodule-path-unmatch (2012-08-14) 1 commit
  (merged to 'next' on 2012-08-20 at cbe6483)
 + Let submodule command exit with error status if path does not exist

As the title says.

* jc/capabilities (2012-08-13) 3 commits
  (merged to 'next' on 2012-08-20 at 1976e47)
 + fetch-pack: mention server version with verbose output
 + parse_feature_request: make it easier to see feature values
 + fetch-pack: do not ask for unadvertised capabilities
 (this branch uses jk/version-string.)

Some capabilities were asked by fetch-pack even when upload-pack did
not advertise that they are available.  Fix fetch-pack not to do so.

* jc/maint-protect-sh-from-ifs (2012-08-08) 1 commit
  (merged to 'next' on 2012-08-20 at 8b00562)
 + sh-setup: protect from exported IFS

When the user exports a non-default IFS without HT, scripts that
rely on being able to parse "ls-files -s | while read a b c..."
start to fail.  Protect them from such a misconfiguration.

* jk/version-string (2012-08-10) 3 commits
  (merged to 'next' on 2012-08-20 at 6d207bb)
 + do not send client agent unless server does first
 + send-pack: fix capability-sending logic
 + include agent identifier in capability string
 (this branch is used by jc/capabilities.)

(Originally merged to 'next' on 2012-08-10)

Leftover bits from the "git version" code restructuring, that give
us an ability to expose the Git version over the wire in the
protocol exchange. But we do so carefully only to the other end that
understands it.

* mg/rebase-i-onto-reflog-in-full (2012-08-10) 1 commit
  (merged to 'next' on 2012-08-20 at f671bd2)
 + rebase -i: use full onto sha1 in reflog

The reflog entries left by "git rebase" and "git rebase -i" were
inconsistent.

* mh/maint-config-doc-proxy-command (2012-08-18) 2 commits
  (merged to 'next' on 2012-08-20 at a484625)
 + git-config doc: unconfuse an example
 + git-config.txt: fix example

A minor documentation update.

* mz/cherry-code-cleanup (2012-07-29) 3 commits
  (merged to 'next' on 2012-08-20 at bfb0457)
 + cherry: remove redundant check for merge commit
 + cherry: don't set ignored rev_info options
 + remove unnecessary parameter from get_patch_ids()

Minor code clean-up on the cherry-pick codepath.

* mz/empty-rebase-test (2012-08-09) 1 commit
  (merged to 'next' on 2012-08-20 at 53e2419)
 + add tests for 'git rebase --keep-empty'

* rr/precompose-utf8-cleanup (2012-08-20) 2 commits
  (merged to 'next' on 2012-08-20 at a883c2a)
 + precompose-utf8: do not call checks for non-ascii "utf8"
 + cleanup precompose_utf8

A style and code cleanup.

--------------------------------------------------
[New Topics]

* jk/maint-quiet-is-synonym-to-s-in-log (2012-08-28) 1 commit
 - log: fix --quiet synonym for -s

We tried to bend backwards to allow "--quiet" to be a synonym as
"-s" when given as e.g. "git show --quiet", but did not quite
succeed.

Will merge to 'next'.

* nd/checkout-option-parsing-fix (2012-08-29) 3 commits
 - checkout: reorder option handling
 - checkout: move more parameters to struct checkout_opts
 - checkout: pass "struct checkout_opts *" as const pointer

The option parsing of "git checkout" had error checking, dwim and
defaulting missing options, all mixed in the code, and issuing an
appropriate error message with useful context was getting harder.
Reorganize the code and allow giving a proper diagnosis when the
user says "git checkout -b -t foo bar" (e.g. "-t" is not a good name
for a branch).

* jc/maint-name-rev (2012-08-29) 3 commits
 - name-rev: --weight option (WIP)
 - name_rev: clarify when a new tip-name is assigned to a commit
 - name-rev: lose unnecessary typedef

"git name-rev" names the given revision based on a ref that can be
reached in the smallest number of steps from the rev, but that is
not useful when the caller wants to know which tag is the oldest one
that contains the rev.  This teaches a new mode to the command that
uses the oldest ref among those which contain the rev.

--------------------------------------------------
[Stalled]

* er/doc-fast-import-done (2012-08-22) 1 commit
 - fast-import: document the --done option

Parked in 'pu' in case ESR responds with "Sorry, forgot to sign-off".

* jc/add-delete-default (2012-08-13) 1 commit
 - git add: notice removal of tracked paths by default

"git add dir/" updated modified files and added new files, but does
not notice removed files, which may be "Huh?" to some users.  They
can of course use "git add -A dir/", but why should they?

Resurrected from graveyard, as I thought it was a worthwhile thing
to do in the longer term; waiting for comments.

* tx/relative-in-the-future (2012-08-16) 2 commits
 - date: show relative dates in the future
 - date: refactor the relative date logic from presentation

Not my itch; rewritten an earlier submission by Tom Xue into
somewhat more maintainable form, though it breaks existing i18n.

Anybody interested in fixing it up?  Otherwise may discard.

* pw/p4-submit-conflicts (2012-08-16) 12 commits
 - git p4: add submit --prepare-p4-only option
 - git p4: add submit --dry-run option
 - git p4: accept -v for --verbose
 - git p4: revert deleted files after submit cancel
 - git p4: rearrange submit template construction
 - git p4: test clean-up after failed submit, fix added files
 - git p4: standardize submit cancel due to unchanged template
 - git p4: move conflict prompt into run, use [c]ontinue and [q]uit
 - git p4: remove submit failure options [a]pply and [w]rite
 - git p4: gracefully fail if some commits could not be applied
 - git p4 test: use p4d -L option to suppress log messages
 - git p4 test: remove bash-ism of combined export/assignment

Waiting for the dust to settle.

* mz/rebase-range (2012-07-18) 7 commits
 . rebase (without -p): correctly calculate patches to rebase
 . rebase -p: don't request --left-right only to ignore left side
 . rebase -p: use --cherry-mark for todo file
 . git-rebase--interactive.sh: look up subject in add_pick_line
 . git-rebase--interactive: group all $preserve_merges code
 . git-rebase--interactive.sh: extract function for adding "pick" line
 . git-rebase--am.sh: avoid special-casing --keep-empty

Expecting a reroll.

Performance concerns from Windows folks.  Also the series lacks
proper sign-offs.

* mb/remote-default-nn-origin (2012-07-11) 6 commits
 - Teach get_default_remote to respect remote.default.
 - Test that plain "git fetch" uses remote.default when on a detached HEAD.
 - Teach clone to set remote.default.
 - Teach "git remote" about remote.default.
 - Teach remote.c about the remote.default configuration setting.
 - Rename remote.c's default_remote_name static variables.

When the user does not specify what remote to interact with, we
often attempt to use 'origin'.  This can now be customized via a
configuration variable.

Expecting a reroll.

"The first remote becomes the default" bit is better done as a
separate step.

* jc/split-blob (2012-04-03) 6 commits
 - chunked-object: streaming checkout
 - chunked-object: fallback checkout codepaths
 - bulk-checkin: support chunked-object encoding
 - bulk-checkin: allow the same data to be multiply hashed
 - new representation types in the packstream
 - packfile: use varint functions

Not ready.

I finished the streaming checkout codepath, but as explained in
127b177 (bulk-checkin: support chunked-object encoding, 2011-11-30),
these are still early steps of a long and painful journey. At least
pack-objects and fsck need to learn the new encoding for the series
to be usable locally, and then index-pack/unpack-objects needs to
learn it to be used remotely.

Given that I heard a lot of noise that people want large files, and
that I was asked by somebody at GitTogether'11 privately for an
advice on how to pay developers (not me) to help adding necessary
support, I am somewhat dissapointed that the original patch series
that was sent long time ago still remains here without much comments
and updates from the developer community. I even made the interface
to the logic that decides where to split chunks easily replaceable,
and I deliberately made the logic in the original patch extremely
stupid to entice others, especially the "bup" fanbois, to come up
with a better logic, thinking that giving people an easy target to
shoot for, they may be encouraged to help out. The plan is not
working :-<.

--------------------------------------------------
[Cooking]

* cn/branch-set-upstream-to (2012-08-23) 3 commits
 - branch: deprecate --set-upstream and show help if we detect possible mistaken use
 - branch: add --unset-upstream option
 - branch: introduce --set-upstream-to

"git branch --set-upstream origin/master" is a common mistake to
create a local branch 'origin/master' and set it to integrate with
the current branch.  With a plan to deprecate this option, introduce
"git branch (-u|--set-upstream-to) origin/master" that sets the
current branch to integrate with 'origin/master' remote tracking
branch.

Waiting for a reroll
that tightens its error checking.

* jc/dotdot-is-parent-directory (2012-08-23) 1 commit
  (merged to 'next' on 2012-08-28 at 2f2ae87)
 + specifying ranges: we did not mean to make ".." an empty set

"git log .." errored out saying it is both rev range and a path when
there is no disambiguating "--" is on the command line.  Update the
command line parser to interpret ".." as a path in such a case.

Will merge to 'master' as part of the fourth batch.

* jc/maint-mergetool-style-fix (2012-08-23) 1 commit
  (merged to 'next' on 2012-08-28 at ced5868)
 + mergetool: style fixes

Will merge to 'master' as part of the third batch.

* js/compat-itimer (2012-08-24) 1 commit
 - Support for setitimer() on platforms lacking it

Pieces to support compilation on __TANDEM.

* js/compat-mkdir (2012-08-24) 1 commit
  (merged to 'next' on 2012-08-28 at e92bf74)
 + compat: some mkdir() do not like a slash at the end

Some mkdir(2) implementations do not want to see trailing slash in
its parameter.

Will merge to 'master' as part of the third batch.

* js/no-curl-easy-strerror-on-old-curl (2012-08-23) 1 commit
  (merged to 'next' on 2012-08-28 at 25e2e7a)
 + http.c: don't use curl_easy_strerror prior to curl-7.12.0

Done to support compilation on __TANDEM, but is independently useful
for people with older version of libcURL.

Will merge to 'master' as part of the third batch.

* js/use-sc-open-max (2012-08-24) 1 commit
  (merged to 'next' on 2012-08-28 at 8b9ac7c)
 + sha1_file.c: introduce get_max_fd_limit() helper

Introduce get_max_fd_limit() to absorb platforms that do not have
getrlimit(RLIMIT_NOFILE) and/or sysconf(_SC_OPEN_MAX).

Will merge to 'master' as part of the third batch.

* ph/credential-refactor (2012-08-27) 6 commits
 - wincred: port to generic credential helper (UNTESTED)
 - Merge branch 'ef/win32-cred-helper' into ph/credential-refactor
 - osxkeychain: port to generic credential helper implementation
 - gnome-keyring: port to generic helper implementation
 - contrib: add generic credential helper
 - contrib: add credential helper for GnomeKeyring

Adds a new credential helper to support Gnome keyring and attempts
to refactor to share code among OSX keychain, Gnome keyring and
Win32 credential helpers.

Waiting for test results with the tip one
to decide whether the series should be rerolled or reduced to only
the first one.

* jc/apply-binary-p0 (2012-08-24) 1 commit
  (merged to 'next' on 2012-08-28 at 6fa690c)
 + apply: compute patch->def_name correctly under -p0

"git apply -p0" did not parse pathnames on "diff --git" line
correctly.  This caused patches that had pathnames in no other
places to be mistakenly rejected (most notably, binary patch that
does not rename nor change mode).  Textual patches, renames or
mode changes have preimage and postimage pathnames in different
places in a form that can be parsed unambiguously and did not suffer
from this problem.

Will merge to 'master' as part of the fourth batch.

* jc/maint-doc-checkout-b-always-takes-branch-name (2012-08-26) 1 commit
  (merged to 'next' on 2012-08-29 at e0d0f5c)
 + doc: "git checkout -b/-B/--orphan" always takes a branch name

The synopsis said "checkout [-B branch]" to make it clear the branch
name is a parameter to the option, but the heading for the option
description was "-B::", not "-B branch::", making the documentation
misleading.  There may be room in documentation pages of other
commands for similar improvements (hint, hint).

Will merge to 'master' as part of the fourth batch.

* jk/maint-http-half-auth-push (2012-08-27) 8 commits
  (merged to 'next' on 2012-08-29 at 0ed32f5)
 + http: prompt for credentials on failed POST
 + http: factor out http error code handling
 + t: test http access to "half-auth" repositories
 + t: test basic smart-http authentication
 + t/lib-httpd: recognize */smart/* repos as smart-http
 + t/lib-httpd: only route auth/dumb to dumb repos
 + t5550: factor out http auth setup
 + t5550: put auth-required repo in auth/dumb

Pushing to smart HTTP server with recent Git fails without having
the username in the URL to force authentication, if the server is
configured to allow GET anonymously, while requiring authentication
for POST.

* jx/test-real-path (2012-08-27) 1 commit
 - test: set the realpath of CWD as TRASH_DIRECTORY

Running tests with the "trash" directory elsewhere with the "--root"
option did not work well if the directory was specified by a symbolic
link pointing at it.

Seems broken as it makes $(pwd) and TRASH_DIRECTORY inconsistent.
Needs rerolling.

* mh/fetch-filter-refs (2012-08-26) 17 commits
 - filter_refs(): simplify logic
 - fetch_pack(): free matching heads
 - cmd_fetch_pack(): simplify computation of return value
 - fetch-pack: report missing refs even if no existing refs were received
 - cmd_fetch_pack: return early if finish_connect() returns an error
 - filter_refs(): compress unmatched refs in heads array
 - filter_refs(): do not leave gaps in return_refs
 - filter_refs(): simplify by removing optimization
 - Pass nr_heads to filter_refs() by reference
 - Pass nr_heads to everything_local() by reference
 - Pass nr_heads to do_pack_ref() by reference
 - Let fetch_pack() inform caller about number of unique heads
 - filter_refs(): do not check the same head_pos twice
 - fetch-pack.c: name local variables more consistently
 - fetch_pack(): reindent function decl and defn
 - Rename static function fetch_pack() to http_fetch_pack()
 - t5500: add tests of error output for missing refs

Code simplification and clarification.
Waiting for a follow-up patch based on Peff's idea.

* nd/branch-v-alignment (2012-08-27) 1 commit
  (merged to 'next' on 2012-08-29 at 5c0d226)
 + branch -v: align even when branch names are in UTF-8

Output from "git branch -v" contains "(no branch)" that could be
localized, but the code to align it along with the names of branches
were counting in bytes, not in display columns.

Will merge to 'master' as part of the fourth batch.

* jc/merge-bases (2012-08-28) 5 commits
 - get_merge_bases_many(): walk from many tips in parallel
 - in_merge_bases(): omit unnecessary redundant common ancestor reduction
 - http-push: use in_merge_bases() for fast-forward check
 - receive-pack: use in_merge_bases() for fast-forward check
 - in_merge_bases(): support only one "other" commit
 (this branch is used by jc/xprm-merge-bases-many.)

Optimises the "merge-base" computation a bit, and also updates its
users that do not need the full merge-base information to call a
cheaper subset.  The most important one is the second from the tip
done by Thomas.

Will merge to 'next'.

* jl/submodule-rm (2012-08-27) 1 commit
 - Teach rm to remove submodules unless they contain a git directory

"git rm submodule" cannot blindly remove a submodule directory as
its working tree may have local changes, and worse yet, it may even
have its repository embedded in it.  Teach it some special cases
where it is safe to remove a submodule, specifically, when there is
no local changes in the submodule working tree, and its repository
is not embedded in its working tree but is elsewhere and uses the
gitfile mechanism to point at it.

* nd/am-i18n-fix (2012-08-22) 1 commit
  (merged to 'next' on 2012-08-24 at f8e9a63)
 + am: quote string for translation before passing to eval_gettextln

"git am" wasn't marked up for i18n properly.

Will merge to 'master' as part of the fourth batch.

* lt/commit-tree-guess-utf-8 (2012-08-21) 1 commit
  (merged to 'next' on 2012-08-24 at d16ac69)
 + commit/commit-tree: correct latin1 to utf-8

Teaches "git commit" and "git commit-tree" the "we are told to use
utf-8 in log message, but this does not look like utf-8---attempt to
pass it through convert-from-latin1-to-utf8 and see if it makes
sense" heuristics "git mailinfo" already uses.

Will merge to 'master' as part of the fourth batch.

* kk/maint-for-each-ref-multi-sort (2012-08-21) 2 commits
  (merged to 'next' on 2012-08-24 at 28a5db4)
 + for-each-ref: Fix sort with multiple keys
 + t6300: test sort with multiple keys

"git for-each-ref" did not currectly support more than one --sort
option.

Will merge to 'master' as part of the fourth batch.

* fa/remote-svn (2012-08-28) 16 commits
 - Add a test script for remote-svn
 - remote-svn: add marks-file regeneration
 - Add a svnrdump-simulator replaying a dump file for testing
 - remote-svn: add incremental import
 - remote-svn: Activate import/export-marks for fast-import
 - Create a note for every imported commit containing svn metadata
 - vcs-svn: add fast_export_note to create notes
 - Allow reading svn dumps from files via file:// urls
 - remote-svn, vcs-svn: Enable fetching to private refs
 - When debug==1, start fast-import with "--stats" instead of "--quiet"
 - Add documentation for the 'bidi-import' capability of remote-helpers
 - Connect fast-import to the remote-helper via pipe, adding 'bidi-import' capability
 - Add argv_array_detach and argv_array_free_detached
 - Add svndump_init_fd to allow reading dumps from arbitrary FDs
 - Add git-remote-testsvn to Makefile and .gitignore
 - Implement a remote helper for svn in C
 (this branch is used by fa/vcs-svn.)

Waiting for comments from mentors and stakeholders.

* fa/vcs-svn (2012-08-28) 4 commits
 - vcs-svn: remove repo_tree
 - vcs-svn/svndump: rewrite handle_node(), begin|end_revision()
 - vcs-svn/svndump: restructure node_ctx, rev_ctx handling
 - svndump: move struct definitions to .h
 (this branch uses fa/remote-svn.)

Waiting for comments from mentors and stakeholders.

* nd/i18n-parseopt-help (2012-08-22) 66 commits
  (merged to 'next' on 2012-08-24 at 2a04ce0)
 + Use imperative form in help usage to describe an action
 + Reduce translations by using same terminologies
 + i18n: write-tree: mark parseopt strings for translation
 + i18n: verify-tag: mark parseopt strings for translation
 + i18n: verify-pack: mark parseopt strings for translation
 + i18n: update-server-info: mark parseopt strings for translation
 + i18n: update-ref: mark parseopt strings for translation
 + i18n: update-index: mark parseopt strings for translation
 + i18n: tag: mark parseopt strings for translation
 + i18n: symbolic-ref: mark parseopt strings for translation
 + i18n: show-ref: mark parseopt strings for translation
 + i18n: show-branch: mark parseopt strings for translation
 + i18n: shortlog: mark parseopt strings for translation
 + i18n: rm: mark parseopt strings for translation
 + i18n: revert, cherry-pick: mark parseopt strings for translation
 + i18n: rev-parse: mark parseopt strings for translation
 + i18n: reset: mark parseopt strings for translation
 + i18n: rerere: mark parseopt strings for translation
 + i18n: status: mark parseopt strings for translation
 + i18n: replace: mark parseopt strings for translation
 + i18n: remote: mark parseopt strings for translation
 + i18n: read-tree: mark parseopt strings for translation
 + i18n: push: mark parseopt strings for translation
 + i18n: prune: mark parseopt strings for translation
 + i18n: prune-packed: mark parseopt strings for translation
 + i18n: pack-refs: mark parseopt strings for translation
 + i18n: pack-objects: mark parseopt strings for translation
 + i18n: notes: mark parseopt strings for translation
 + i18n: name-rev: mark parseopt strings for translation
 + i18n: mv: mark parseopt strings for translation
 + i18n: mktree: mark parseopt strings for translation
 + i18n: merge: mark parseopt strings for translation
 + i18n: merge-file: mark parseopt strings for translation
 + i18n: merge-base: mark parseopt strings for translation
 + i18n: ls-tree: mark parseopt strings for translation
 + i18n: ls-files: mark parseopt strings for translation
 + i18n: log: mark parseopt strings for translation
 + i18n: init-db: mark parseopt strings for translation
 + i18n: help: mark parseopt strings for translation
 + i18n: hash-object: mark parseopt strings for translation
 + i18n: grep: mark parseopt strings for translation
 + i18n: gc: mark parseopt strings for translation
 + i18n: fsck: mark parseopt strings for translation
 + i18n: format-patch: mark parseopt strings for translation
 + i18n: for-each-ref: mark parseopt strings for translation
 + i18n: fmt-merge-msg: mark parseopt strings for translation
 + i18n: fetch: mark parseopt strings for translation
 + i18n: fast-export: mark parseopt strings for translation
 + i18n: describe: mark parseopt strings for translation
 + i18n: config: mark parseopt strings for translation
 + i18n: count-objects: mark parseopt strings for translation
 + i18n: commit: mark parseopt strings for translation
 + i18n: column: mark parseopt strings for translation
 + i18n: clone: mark parseopt strings for translation
 + i18n: clean: mark parseopt strings for translation
 + i18n: cherry: mark parseopt strings for translation
 + i18n: checkout: mark parseopt strings for translation
 + i18n: checkout-index: mark parseopt strings for translation
 + i18n: check-attr: mark parseopt strings for translation
 + i18n: cat-file: mark parseopt strings for translation
 + i18n: branch: mark parseopt strings for translation
 + i18n: blame: mark parseopt strings for translation
 + i18n: add: mark parseopt strings for translation
 + i18n: bisect--helper: mark parseopt strings for translation
 + i18n: archive: mark parseopt strings for translation
 + i18n: mark "style" in OPT_COLUMN() for translation

A lot of i18n mark-up for the help text from "git <cmd> -h".

Will merge to 'master' as part of the fourth batch.

* tr/maint-parseopt-avoid-empty (2012-08-20) 1 commit
  (merged to 'next' on 2012-08-24 at cffa9a0)
 + gettext: do not translate empty string

A workaround to avoid doing _(""), which translates to unwanted
magic string in the .po files.

Will merge to 'master' as part of the fourth batch.

* jk/config-warn-on-inaccessible-paths (2012-08-21) 4 commits
  (merged to 'next' on 2012-08-24 at 7470bd6)
 + warn_on_inaccessible(): a helper to warn on inaccessible paths
 + attr: warn on inaccessible attribute files
 + gitignore: report access errors of exclude files
 + config: warn on inaccessible files

When looking for $HOME/.gitconfig etc., it is OK if we cannot read
them because they do not exist, but unable to read existing ones
need to be diagnosed.

Will merge to 'master' as part of the fourth batch.

* nd/i18n-poison-test-updates (2012-08-27) 7 commits
  (merged to 'next' on 2012-08-29 at 9b7ff7f)
 + Fix tests under GETTEXT_POISON on parseopt
 + Fix tests under GETTEXT_POISON on git-remote
 + Fix tests under GETTEXT_POISON on pack-object
 + Fix tests under GETTEXT_POISON on git-apply
 + Fix tests under GETTEXT_POISON on diffstat
 + Fix tests under GETTEXT_POISON on git-stash
 + Fix tests under GETTEXT_POISON on relative dates

Updates to tests that can be broken with gettext-poison builds.
Queued with trivial fix-ups.

Will merge to 'master' as part of the third batch.

* jc/daemon-access-hook (2012-08-15) 1 commit
  (merged to 'next' on 2012-08-20 at c8f5b2e)
 + daemon: --access-hook option

Allow an external command to tell git-daemon to decline service
based on the client address, repository path, etc.

Will merge to 'master' as part of the third batch.

* jc/send-email-reconfirm (2012-08-14) 1 commit
  (merged to 'next' on 2012-08-20 at dffdef6)
 + send-email: validate & reconfirm interactive responses

Validate interactive input to "git send-email" to avoid common
mistakes such as saying "y<RETURN>" to sender mail address whose
prompt is given with a correctly guessed default.

Will merge to 'master' as part of the third batch.

* ph/stash-rerere (2012-08-17) 2 commits
  (merged to 'next' on 2012-08-20 at ae37111)
 + stash: invoke rerere in case of conflict
 + test: git-stash conflict sets up rerere

"git stash" internally used "git merge-recursive" backend, which did
not trigger "rerere" upon conflicts unlike other mergy operations.

Will merge to 'master' as part of the third batch.

* pw/p4-use-client-spec-branch-detection (2012-08-20) 5 commits
  (merged to 'next' on 2012-08-24 at 08abc61)
 + git p4: make branch detection work with --use-client-spec
 + git p4: do wildcard decoding in stripRepoPath
 + git p4: set self.branchPrefixes in initialization
 + git p4 test: add broken --use-client-spec --detect-branches tests
 + git p4 test: move client_view() function to library

Fixes "git p4" when "--use-client-spec" and "--detect-branches" are
used together (the command used to misdetect branches).

Will merge to 'master' as part of the fourth batch.

* jc/maint-push-refs-all (2012-08-27) 2 commits
 - get_fetch_map(): tighten checks on dest refs
 - [BROKEN] fetch/push: allow refs/*:refs/*

Allows pushing and fetching refs/stash.

* tg/index-v5 (2012-08-17) 13 commits
 - p0002-index.sh: add perf test for the index formats
 - update-index.c: rewrite index when index-version is given
 - Write resolve-undo data for index-v5
 - Write index-v5 cache-tree data
 - Write index-v5
 - Read cache-tree in index-v5
 - Read resolve-undo data
 - Read index-v5
 - Make in-memory format aware of stat_crc
 - Add documentation of the index-v5 file format
 - t2104: Don't fail for index versions other than [23]
 - read-cache.c: Re-read index if index file changed
 - Move index v2 specific functions to their own file

A GSoC project, queued here primarily to give people an easier
access to the state of the last posted version.

* jc/maint-sane-execvp-notdir (2012-07-31) 1 commit
  (merged to 'next' on 2012-08-20 at 0d76cf2)
 + sane_execvp(): ignore non-directory on $PATH

(Originally merged to 'next' on 2012-08-09)

"git foo" errored out with "Not a directory" when the user had a non
directory on $PATH, and worse yet it masked an alias "foo" to run.

Will merge to 'master' as part of the third batch.

* cw/cherry-pick-allow-empty-message (2012-08-06) 1 commit
  (merged to 'next' on 2012-08-20 at 0dc0590)
 + cherry-pick: add --allow-empty-message option

(Originally merged to 'next' on 2012-08-09)

"git cherry-pick" by default stops when it sees a commit without any
log message.  The "--allow-empty-message" option can be used to
silently proceed.

Will merge to 'master' as part of the third batch.

* jc/maint-config-exit-status (2012-07-30) 1 commit
  (merged to 'next' on 2012-08-20 at e18ddd8)
 + config: "git config baa" should exit with status 1

(Originally merged to 'next' on 2012-07-30)

The exit status code from "git config" was way overspecified while
being incorrect.  Update the implementation to give the documented
status for a case that was documented, and introduce a new code for
"all other errors".

Will merge to 'master' as part of the third batch.

* sz/submodule-force-update (2012-08-24) 1 commit
  (merged to 'next' on 2012-08-24 at f82b466)
 + Make 'git submodule update --force' always check out submodules.

"git submodule update --force" used to leave the working tree of the
submodule intact when there were local changes.  It is more intiutive
to make "--force" a sign to run "checkout -f" to overwrite them.

Will merge to 'master' as part of the third batch.

* jk/no-more-pre-exec-callback (2012-06-05) 1 commit
 - pager: drop "wait for output to run less" hack

(Originally merged to 'next' on 2012-07-23)

Will defer until the end of the 2012.
while waiting for older "less" to go extinct.

--------------------------------------------------
[Discarded]

* jc/sanitize-nkd-lazy-iconv-open (2012-07-31) 1 commit
 . macos: lazily initialize iconv

Teach the code that works around NKD/NKC gotcha on MacOS to call
iconv_open() only when it is necessary, in the hope of avoiding
set-up overhead.  It turns out that there was no noticeable
improvements.

* nd/checkout-branch-name-check (2012-08-27) 1 commit
 . checkout: verify new branch name's validity early

"git checkout -b --opt y" errors out saying that creating a new
branch to check it out and grabbing contents for paths out of a
commit are incompatible operations.  While it is technically correct
(the command line wants to create a new branch whose name is "--opt"
and check it out, and there shouldn't be anything else left on the
command line, but there is "y"), "--opt" is not a valid name of the
branch to begin with, so even without "y", the command will not
succeed.  Treat this case specially to complain that "--opt" is not
a valid branch name.

^ permalink raw reply	[relevance 6%]

* What's cooking in git.git (Aug 2012, #08; Mon, 27)
@ 2012-08-28  2:43  5% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2012-08-28  2:43 UTC (permalink / raw)
  To: git
  Cc: Eric S. Raymond, Michael Haggerty, Erik Faye-Lund, Pete Wyckoff,
	Luke Diamand, Jeff King, Thomas Rast

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'pu' (proposed updates) while commits prefixed with '+' are in 'next'.

New topics started to flow in at the pace a bit faster than
reviewers give comments on them.  I've merged half of the second
batch of topics to 'master', and will do the remainder later this
week. They are a bit more substantial changes than the first batch
we merged earlier.

I'm planning to keep this cycle reasonably short and aim for tagging
the result as 1.8.0 at the end of 9th week, on October 21st, after
which I'd disappear for a few weeks.  http://tinyurl.com/gitCal is
where you can always find my rough tagging schedule at.

You can find the changes described here in the integration branches of the
repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ab/diff-write-incomplete-line (2012-08-05) 1 commit
  (merged to 'next' on 2012-08-20 at e28b804)
 + Fix '\ No newline...' annotation in rewrite diffs

(Originally merged to 'next' on 2012-08-07)

The output from "git diff -B" for a file that ends with an
incomplete line did not put "\ No newline..." on a line of its own.

* bc/receive-pack-stdout-protection (2012-08-06) 2 commits
  (merged to 'next' on 2012-08-20 at b1b0d18)
 + receive-pack: do not leak output from auto-gc to standard output
 + t/t5400: demonstrate breakage caused by informational message from prune

(Originally merged to 'next' on 2012-08-07)

When "git push" triggered the automatic gc on the receiving end, a
message from "git prune" that said it was removing cruft leaked to
the standard output, breaking the communication protocol.

* da/difftool-updates (2012-08-21) 13 commits
  (merged to 'next' on 2012-08-21 at 332afe4)
 + difftool: silence warning
  (merged to 'next' on 2012-08-20 at 2fecd90)
 + Add Code Compare v2.80.4 as a merge / diff tool for Windows
 + mergetool,difftool: Document --tool-help consistently
 + difftool: Disable --symlinks on cygwin
 + difftool: Handle compare() returning -1
 + difftool: Wrap long lines for readability
 + difftool: Check all return codes from compare()
 + difftool: Handle finding mergetools/ in a path with spaces
 + difftool: Use symlinks when diffing against the worktree
 + difftool: Call the temp directory "git-difftool"
 + difftool: Move option values into a hash
 + difftool: Eliminate global variables
 + difftool: Simplify print_tool_help()

(Originally merged to 'next' on 2012-08-10)

"git difftool --dir-diff" learned to use symbolic links to prepare
temporary copy of the working tree when available.

* jc/maint-t7406-rev-parse-max-count-huh (2012-07-30) 1 commit
  (merged to 'next' on 2012-08-20 at 3e2598a)
 + t7406: fix misleading "rev-parse --max-count=1 HEAD"

(Originally merged to 'next' on 2012-07-30)

Test clean-up, with no behaviour change.

* jk/docs-docbook-monospace-display (2012-08-07) 1 commit
  (merged to 'next' on 2012-08-20 at 0ed30dc)
 + docs: monospace listings in docbook output

(Originally merged to 'next' on 2012-08-18)

The documentation in the TeXinfo format was using indented output
for materials meant to be examples that are better typeset in
monospace.

* jk/maint-diff-nul40-as-sentinel (2012-07-29) 1 commit
 + diff: do not use null sha1 as a sentinel value
 (this branch is used by jk/maint-null-in-trees.)

"git diff" had a confusion between taking data from a path in the
working tree and taking data from an object that happens to have
name 0{40} recorded in a tree.

* jk/maint-null-in-trees (2012-07-29) 2 commits
  (merged to 'next' on 2012-08-20 at 5bc2c49)
 + fsck: detect null sha1 in tree entries
 + do not write null sha1s to on-disk index
 (this branch uses jk/maint-diff-nul40-as-sentinel.)

(Originally merged to 'next' on 2012-07-30)

We do not want a link to 0{40} object stored anywhere in our objects.

* js/grep-patterntype-config (2012-08-03) 1 commit
  (merged to 'next' on 2012-08-20 at 39a0431)
 + grep: add a grep.patternType configuration setting

(Originally merged to 'next' on 2012-08-09)

"grep" learned to use a non-standard pattern type by default if a
configuration variable tells it to.

* mm/push-default-switch-warning (2012-06-24) 1 commit
  (merged to 'next' on 2012-08-20 at 553e6c0)
 + push: start warning upcoming default change for push.default

(Originally merged to 'next' on 2012-06-26)

In the next major release, we will switch "git push [$there]" that
does not say what to push from the traditional "matching" to the
updated "simple" semantics, that pushes the current branch to the
branch with the same name only when the current branch is set to
integrate with that remote branch (all other cases will error out).

--------------------------------------------------
[New Topics]

* cn/branch-set-upstream-to (2012-08-23) 3 commits
 - branch: deprecate --set-upstream and show help if we detect possible mistaken use
 - branch: add --unset-upstream option
 - branch: introduce --set-upstream-to

"git branch --set-upstream origin/master" is a common mistake to
create a local branch 'origin/master' and set it to integrate with
the current branch.  With a plan to deprecate this option, introduce
"git branch (-u|--set-upstream-to) origin/master" that sets the
current branch to integrate with 'origin/master' remote tracking
branch.

Wainting for a reroll
that tightens its error checking.

* jc/dotdot-is-parent-directory (2012-08-23) 1 commit
 - specifying ranges: we did not mean to make ".." an empty set

"git log .." errored out saying it is both rev range and a path when
there is no disambiguating "--" is on the command line.  Update the
command line parser to interpret ".." as a path in such a case.

Will merge to 'next'.

* jc/maint-mergetool-style-fix (2012-08-23) 1 commit
 - mergetool: style fixes

As the title says.

Will merge to 'next'.

* js/compat-itimer (2012-08-24) 1 commit
 - Support for setitimer() on platforms lacking it

Pieces to support compilation on __TANDEM.

* js/compat-mkdir (2012-08-24) 1 commit
 - compat: some mkdir() do not like a slash at the end

Pieces to support compilation on __TANDEM.

Will merge to 'next'.

* js/no-curl-easy-strerror-on-old-curl (2012-08-23) 1 commit
 - http.c: don't use curl_easy_strerror prior to curl-7.12.0

Pieces to support compilation on __TANDEM.

Will merge to 'next'.

* js/use-sc-open-max (2012-08-24) 1 commit
 - sha1_file.c: introduce get_max_fd_limit() helper

Pieces to support compilation on __TANDEM.

Will merge to 'next'.

* ph/credential-refactor (2012-08-27) 6 commits
 - wincred: port to generic credential helper (UNTESTED)
 - Merge branch 'ef/win32-cred-helper' into ph/credential-refactor
 - osxkeychain: port to generic credential helper implementation
 - gnome-keyring: port to generic helper implementation
 - contrib: add generic credential helper
 - contrib: add credential helper for GnomeKeyring
 (this branch uses ef/win32-cred-helper.)

Adds a new credential helper to support Gnome keyring and attempts
to refactor to share code among OSX keychain, Gnome keyring and
Win32 credential helpers.

Waiting for test results with the tip one
to decide whether the series should be rerolled or reduced to only
the first one.

* jc/apply-binary-p0 (2012-08-24) 1 commit
 - apply: compute patch->def_name correctly under -p0

"git apply -p0" did not parse pathnames on "diff --git" line
correctly.  This caused patches that had pathnames in no other
places to be mistakenly rejected (most notably, binary patch that
does not rename nor change mode).  Textual patches, renames or
mode changes have preimage and postimage pathnames in different
places in a form that can be parsed unambiguously and did not suffer
from this problem.

Will merge to 'next'.

* jc/maint-doc-checkout-b-always-takes-branch-name (2012-08-26) 1 commit
 - doc: "git checkout -b/-B/--orphan" always takes a branch name

The synopsis said "checkout [-B branch]" to make it clear the branch
name is a parameter to the option, but the heading for the option
description was "-B::", not "-B branch::", making the documentation
misleading.  There may be room in documentation pages of other
commands for similar improvements (hint, hint).

Will merge to 'next'.

* jk/maint-http-half-auth-push (2012-08-27) 8 commits
 - http: prompt for credentials on failed POST
 - http: factor out http error code handling
 - t: test http access to "half-auth" repositories
 - t: test basic smart-http authentication
 - t/lib-httpd: recognize */smart/* repos as smart-http
 - t/lib-httpd: only route auth/dumb to dumb repos
 - t5550: factor out http auth setup
 - t5550: put auth-required repo in auth/dumb

Pushing to smart HTTP server with recent Git fails without having
the username in the URL to force authentication, if the server is
configured to allow GET anonymously, while requiring authentication
for POST.

Will merge to 'next'.

* jx/test-real-path (2012-08-27) 1 commit
 - test: set the realpath of CWD as TRASH_DIRECTORY

Running tests with the "trash" directory elsewhere with the "--root"
option did not work well if the directory was specified by a symbolic
link pointing at it.

Waiting for a Tested-by.

* mh/fetch-filter-refs (2012-08-26) 17 commits
 - filter_refs(): simplify logic
 - fetch_pack(): free matching heads
 - cmd_fetch_pack(): simplify computation of return value
 - fetch-pack: report missing refs even if no existing refs were received
 - cmd_fetch_pack: return early if finish_connect() returns an error
 - filter_refs(): compress unmatched refs in heads array
 - filter_refs(): do not leave gaps in return_refs
 - filter_refs(): simplify by removing optimization
 - Pass nr_heads to filter_refs() by reference
 - Pass nr_heads to everything_local() by reference
 - Pass nr_heads to do_pack_ref() by reference
 - Let fetch_pack() inform caller about number of unique heads
 - filter_refs(): do not check the same head_pos twice
 - fetch-pack.c: name local variables more consistently
 - fetch_pack(): reindent function decl and defn
 - Rename static function fetch_pack() to http_fetch_pack()
 - t5500: add tests of error output for missing refs

Code simplification and clarification.
Waiting for a follow-up patch based on Peff's idea.

* nd/branch-v-alignment (2012-08-27) 1 commit
 - branch -v: align even when branch names are in UTF-8

Output from "git branch -v" contains "(no branch)" that could be
localized, but the code to align it along with the names of branches
were counting in bytes, not in display columns.

Will merge to 'next'.

* jc/merge-bases (2012-08-27) 5 commits
 - get_merge_bases_many(): walk from many tips in parallel
 - in_merge_bases(): omit unnecessary redundant common ancestor reduction
 - http-push: use in_merge_bases() for fast-forward check
 - receive-pack: use in_merge_bases() for fast-forward check
 - in_merge_bases(): support only one "other" commit

Optimises the "merge-base" computation a bit, and also updates its
users that do not need the full merge-base information to call a
cheaper subset.  The most important one is the second from the tip
done by Thomas.

Needs sign-off.

--------------------------------------------------
[Stalled]

* er/doc-fast-import-done (2012-08-22) 1 commit
 - fast-import: document the --done option

Parked in 'pu' in case ESR responds with "Sorry, forgot to sign-off".

* jc/add-delete-default (2012-08-13) 1 commit
 - git add: notice removal of tracked paths by default

"git add dir/" updated modified files and added new files, but does
not notice removed files, which may be "Huh?" to some users.  They
can of course use "git add -A dir/", but why should they?

Resurrected from graveyard, as I thought it was a worthwhile thing
to do in the longer term; waiting for comments.

* tx/relative-in-the-future (2012-08-16) 2 commits
 - date: show relative dates in the future
 - date: refactor the relative date logic from presentation

Not my itch; rewritten an earlier submission by Tom Xue into
somewhat more maintainable form, though it breaks existing i18n.

Anybody interested in fixing it up?  Otherwise may discard.

* pw/p4-submit-conflicts (2012-08-16) 12 commits
 - git p4: add submit --prepare-p4-only option
 - git p4: add submit --dry-run option
 - git p4: accept -v for --verbose
 - git p4: revert deleted files after submit cancel
 - git p4: rearrange submit template construction
 - git p4: test clean-up after failed submit, fix added files
 - git p4: standardize submit cancel due to unchanged template
 - git p4: move conflict prompt into run, use [c]ontinue and [q]uit
 - git p4: remove submit failure options [a]pply and [w]rite
 - git p4: gracefully fail if some commits could not be applied
 - git p4 test: use p4d -L option to suppress log messages
 - git p4 test: remove bash-ism of combined export/assignment

Waiting for the dust to settle.

* mz/rebase-range (2012-07-18) 7 commits
 . rebase (without -p): correctly calculate patches to rebase
 . rebase -p: don't request --left-right only to ignore left side
 . rebase -p: use --cherry-mark for todo file
 . git-rebase--interactive.sh: look up subject in add_pick_line
 . git-rebase--interactive: group all $preserve_merges code
 . git-rebase--interactive.sh: extract function for adding "pick" line
 . git-rebase--am.sh: avoid special-casing --keep-empty

Expecting a reroll.

Performance concerns from Windows folks.  Also the series lacks
proper sign-offs.

* mb/remote-default-nn-origin (2012-07-11) 6 commits
 - Teach get_default_remote to respect remote.default.
 - Test that plain "git fetch" uses remote.default when on a detached HEAD.
 - Teach clone to set remote.default.
 - Teach "git remote" about remote.default.
 - Teach remote.c about the remote.default configuration setting.
 - Rename remote.c's default_remote_name static variables.

When the user does not specify what remote to interact with, we
often attempt to use 'origin'.  This can now be customized via a
configuration variable.

Expecting a reroll.

"The first remote becomes the default" bit is better done as a
separate step.

* jc/split-blob (2012-04-03) 6 commits
 - chunked-object: streaming checkout
 - chunked-object: fallback checkout codepaths
 - bulk-checkin: support chunked-object encoding
 - bulk-checkin: allow the same data to be multiply hashed
 - new representation types in the packstream
 - packfile: use varint functions

Not ready.

I finished the streaming checkout codepath, but as explained in
127b177 (bulk-checkin: support chunked-object encoding, 2011-11-30),
these are still early steps of a long and painful journey. At least
pack-objects and fsck need to learn the new encoding for the series
to be usable locally, and then index-pack/unpack-objects needs to
learn it to be used remotely.

Given that I heard a lot of noise that people want large files, and
that I was asked by somebody at GitTogether'11 privately for an
advice on how to pay developers (not me) to help adding necessary
support, I am somewhat dissapointed that the original patch series
that was sent long time ago still remains here without much comments
and updates from the developer community. I even made the interface
to the logic that decides where to split chunks easily replaceable,
and I deliberately made the logic in the original patch extremely
stupid to entice others, especially the "bup" fanbois, to come up
with a better logic, thinking that giving people an easy target to
shoot for, they may be encouraged to help out. The plan is not
working :-<.

--------------------------------------------------
[Cooking]

* jl/submodule-rm (2012-08-27) 1 commit
 - Teach rm to remove submodules unless they contain a git directory

"git rm submodule" cannot blindly remove a submodule directory as
its working tree may have local changes, and worse yet, it may even
have its repository embedded in it.  Teach it some special cases
where it is safe to remove a submodule, specifically, when there is
no local changes in the submodule working tree, and its repository
is not embedded in its working tree but is elsewhere and uses the
gitfile mechanism to point at it.

* nd/am-i18n-fix (2012-08-22) 1 commit
  (merged to 'next' on 2012-08-24 at f8e9a63)
 + am: quote string for translation before passing to eval_gettextln

"git am" wasn't marked up for i18n properly.

Will merge to 'master' as part of the fourth batch.

* lt/commit-tree-guess-utf-8 (2012-08-21) 1 commit
  (merged to 'next' on 2012-08-24 at d16ac69)
 + commit/commit-tree: correct latin1 to utf-8

Teaches "git commit" and "git commit-tree" the "we are told to use
utf-8 in log message, but this does not look like utf-8---attempt to
pass it through convert-from-latin1-to-utf8 and see if it makes
sense" heuristics "git mailinfo" already uses.

Will merge to 'master' as part of the fourth batch.

* kk/maint-for-each-ref-multi-sort (2012-08-21) 2 commits
  (merged to 'next' on 2012-08-24 at 28a5db4)
 + for-each-ref: Fix sort with multiple keys
 + t6300: test sort with multiple keys

"git for-each-ref" did not currectly support more than one --sort
option.

Will merge to 'master' as part of the fourth batch.

* fa/remote-svn (2012-08-22) 16 commits
 - Add a test script for remote-svn
 - remote-svn: add marks-file regeneration
 - Add a svnrdump-simulator replaying a dump file for testing
 - remote-svn: add incremental import
 - remote-svn: Activate import/export-marks for fast-import
 - Create a note for every imported commit containing svn metadata
 - vcs-svn: add fast_export_note to create notes
 - Allow reading svn dumps from files via file:// urls
 - remote-svn, vcs-svn: Enable fetching to private refs
 - When debug==1, start fast-import with "--stats" instead of "--quiet"
 - Add documentation for the 'bidi-import' capability of remote-helpers
 - Connect fast-import to the remote-helper via pipe, adding 'bidi-import' capability
 - Add argv_array_detach and argv_array_free_detached
 - Add svndump_init_fd to allow reading dumps from arbitrary FDs
 - Add git-remote-testsvn to Makefile
 - Implement a remote helper for svn in C
 (this branch is used by fa/vcs-svn.)

* fa/vcs-svn (2012-08-26) 8 commits
 - t9020-*.sh: Skip all tests when python not available
 - t9020-*.sh: Fix urls passed to git-remote in test setup
 - remote-testsvn.c: avoid use of the getline() function
 - vcs-svn: Fix 'fa/remote-svn' and 'fa/vcs-svn' in pu
 - vcs-svn: remove repo_tree
 - vcs-svn/svndump: rewrite handle_node(), begin|end_revision()
 - vcs-svn/svndump: restructure node_ctx, rev_ctx handling
 - svndump: move struct definitions to .h
 (this branch uses fa/remote-svn.)

The tip ones should be squashed in.
Waiting for a reroll.

* nd/i18n-parseopt-help (2012-08-22) 66 commits
  (merged to 'next' on 2012-08-24 at 2a04ce0)
 + Use imperative form in help usage to describe an action
 + Reduce translations by using same terminologies
 + i18n: write-tree: mark parseopt strings for translation
 + i18n: verify-tag: mark parseopt strings for translation
 + i18n: verify-pack: mark parseopt strings for translation
 + i18n: update-server-info: mark parseopt strings for translation
 + i18n: update-ref: mark parseopt strings for translation
 + i18n: update-index: mark parseopt strings for translation
 + i18n: tag: mark parseopt strings for translation
 + i18n: symbolic-ref: mark parseopt strings for translation
 + i18n: show-ref: mark parseopt strings for translation
 + i18n: show-branch: mark parseopt strings for translation
 + i18n: shortlog: mark parseopt strings for translation
 + i18n: rm: mark parseopt strings for translation
 + i18n: revert, cherry-pick: mark parseopt strings for translation
 + i18n: rev-parse: mark parseopt strings for translation
 + i18n: reset: mark parseopt strings for translation
 + i18n: rerere: mark parseopt strings for translation
 + i18n: status: mark parseopt strings for translation
 + i18n: replace: mark parseopt strings for translation
 + i18n: remote: mark parseopt strings for translation
 + i18n: read-tree: mark parseopt strings for translation
 + i18n: push: mark parseopt strings for translation
 + i18n: prune: mark parseopt strings for translation
 + i18n: prune-packed: mark parseopt strings for translation
 + i18n: pack-refs: mark parseopt strings for translation
 + i18n: pack-objects: mark parseopt strings for translation
 + i18n: notes: mark parseopt strings for translation
 + i18n: name-rev: mark parseopt strings for translation
 + i18n: mv: mark parseopt strings for translation
 + i18n: mktree: mark parseopt strings for translation
 + i18n: merge: mark parseopt strings for translation
 + i18n: merge-file: mark parseopt strings for translation
 + i18n: merge-base: mark parseopt strings for translation
 + i18n: ls-tree: mark parseopt strings for translation
 + i18n: ls-files: mark parseopt strings for translation
 + i18n: log: mark parseopt strings for translation
 + i18n: init-db: mark parseopt strings for translation
 + i18n: help: mark parseopt strings for translation
 + i18n: hash-object: mark parseopt strings for translation
 + i18n: grep: mark parseopt strings for translation
 + i18n: gc: mark parseopt strings for translation
 + i18n: fsck: mark parseopt strings for translation
 + i18n: format-patch: mark parseopt strings for translation
 + i18n: for-each-ref: mark parseopt strings for translation
 + i18n: fmt-merge-msg: mark parseopt strings for translation
 + i18n: fetch: mark parseopt strings for translation
 + i18n: fast-export: mark parseopt strings for translation
 + i18n: describe: mark parseopt strings for translation
 + i18n: config: mark parseopt strings for translation
 + i18n: count-objects: mark parseopt strings for translation
 + i18n: commit: mark parseopt strings for translation
 + i18n: column: mark parseopt strings for translation
 + i18n: clone: mark parseopt strings for translation
 + i18n: clean: mark parseopt strings for translation
 + i18n: cherry: mark parseopt strings for translation
 + i18n: checkout: mark parseopt strings for translation
 + i18n: checkout-index: mark parseopt strings for translation
 + i18n: check-attr: mark parseopt strings for translation
 + i18n: cat-file: mark parseopt strings for translation
 + i18n: branch: mark parseopt strings for translation
 + i18n: blame: mark parseopt strings for translation
 + i18n: add: mark parseopt strings for translation
 + i18n: bisect--helper: mark parseopt strings for translation
 + i18n: archive: mark parseopt strings for translation
 + i18n: mark "style" in OPT_COLUMN() for translation

A lot of i18n mark-up for the help text from "git <cmd> -h".

Will merge to 'master' as part of the fourth batch.

* tr/maint-parseopt-avoid-empty (2012-08-20) 1 commit
  (merged to 'next' on 2012-08-24 at cffa9a0)
 + gettext: do not translate empty string

A workaround to avoid doing _(""), which translates to unwanted
magic string in the .po files.

Will merge to 'master' as part of the fourth batch.

* jk/config-warn-on-inaccessible-paths (2012-08-21) 4 commits
  (merged to 'next' on 2012-08-24 at 7470bd6)
 + warn_on_inaccessible(): a helper to warn on inaccessible paths
 + attr: warn on inaccessible attribute files
 + gitignore: report access errors of exclude files
 + config: warn on inaccessible files

When looking for $HOME/.gitconfig etc., it is OK if we cannot read
them because they do not exist, but unable to read existing ones
need to be diagnosed.

Will merge to 'master' as part of the fourth batch.

* nd/i18n-poison-test-updates (2012-08-27) 7 commits
 - Fix tests under GETTEXT_POISON on parseopt
 - Fix tests under GETTEXT_POISON on git-remote
 - Fix tests under GETTEXT_POISON on pack-object
 - Fix tests under GETTEXT_POISON on git-apply
 - Fix tests under GETTEXT_POISON on diffstat
 - Fix tests under GETTEXT_POISON on git-stash
 - Fix tests under GETTEXT_POISON on relative dates

Updates to tests that can be broken with gettext-poison builds.
Queued with trivial fix-ups.

Will merge to 'next'.

* jc/daemon-access-hook (2012-08-15) 1 commit
  (merged to 'next' on 2012-08-20 at c8f5b2e)
 + daemon: --access-hook option

Allow an external command to tell git-daemon to decline service
based on the client address, repository path, etc.

Will merge to 'master' as part of the third batch.

* jc/send-email-reconfirm (2012-08-14) 1 commit
  (merged to 'next' on 2012-08-20 at dffdef6)
 + send-email: validate & reconfirm interactive responses

Validate interactive input to "git send-email" to avoid common
mistakes such as saying "y<RETURN>" to sender mail address whose
prompt is given with a correctly guessed default.

Will merge to 'master' as part of the third batch.

* ef/win32-cred-helper (2012-08-16) 1 commit
  (merged to 'next' on 2012-08-20 at bd5c651)
 + contrib: add win32 credential-helper
 (this branch is used by ph/credential-refactor.)

Credential helper for Win32 to allow access to the keychain of
the logged-in user.

Will merge to 'master' as part of the second batch.

* rr/precompose-utf8-cleanup (2012-08-20) 2 commits
  (merged to 'next' on 2012-08-20 at a883c2a)
 + precompose-utf8: do not call checks for non-ascii "utf8"
 + cleanup precompose_utf8

A style and code cleanup.

Will merge to 'master' as part of the second batch.

* mh/maint-config-doc-proxy-command (2012-08-18) 2 commits
  (merged to 'next' on 2012-08-20 at a484625)
 + git-config doc: unconfuse an example
 + git-config.txt: fix example

A minor documentation update.

Will merge to 'master' as part of the second batch.

* ph/stash-rerere (2012-08-17) 2 commits
  (merged to 'next' on 2012-08-20 at ae37111)
 + stash: invoke rerere in case of conflict
 + test: git-stash conflict sets up rerere

"git stash" internally used "git merge-recursive" backend, which did
not trigger "rerere" upon conflicts unlike other mergy operations.

Will merge to 'master' as part of the third batch.

* hv/submodule-path-unmatch (2012-08-14) 1 commit
  (merged to 'next' on 2012-08-20 at cbe6483)
 + Let submodule command exit with error status if path does not exist

As the title says.

Will merge to 'master' as part of the second batch.

* bc/prune-info (2012-08-07) 1 commit
  (merged to 'next' on 2012-08-20 at 1bc9e66)
 + prune.c: only print informational message in show_only or verbose mode

Teach "git prune" without "-v" to be silent about leftover temporary files.

Will merge to 'master' as part of the second batch.

* jc/maint-protect-sh-from-ifs (2012-08-08) 1 commit
  (merged to 'next' on 2012-08-20 at 8b00562)
 + sh-setup: protect from exported IFS

When the user exports a non-default IFS without HT, scripts that
rely on being able to parse "ls-files -s | while read a b c..."
start to fail.  Protect them from such a misconfiguration.

Will merge to 'master' as part of the second batch.

* mg/rebase-i-onto-reflog-in-full (2012-08-10) 1 commit
  (merged to 'next' on 2012-08-20 at f671bd2)
 + rebase -i: use full onto sha1 in reflog

The reflog entries left by "git rebase" and "git rebase -i" were
inconsistent.

Will merge to 'master' as part of the second batch.

* mz/empty-rebase-test (2012-08-09) 1 commit
  (merged to 'next' on 2012-08-20 at 53e2419)
 + add tests for 'git rebase --keep-empty'

Will merge to 'master' as part of the second batch.

* jc/capabilities (2012-08-13) 3 commits
  (merged to 'next' on 2012-08-20 at 1976e47)
 + fetch-pack: mention server version with verbose output
 + parse_feature_request: make it easier to see feature values
 + fetch-pack: do not ask for unadvertised capabilities
 (this branch uses jk/version-string.)

Some capabilities were asked by fetch-pack even when upload-pack did
not advertise that they are available.  Fix fetch-pack not to do so.

Will merge to 'master' as part of the second batch.

* pw/p4-use-client-spec-branch-detection (2012-08-20) 5 commits
  (merged to 'next' on 2012-08-24 at 08abc61)
 + git p4: make branch detection work with --use-client-spec
 + git p4: do wildcard decoding in stripRepoPath
 + git p4: set self.branchPrefixes in initialization
 + git p4 test: add broken --use-client-spec --detect-branches tests
 + git p4 test: move client_view() function to library

Fixes "git p4" when "--use-client-spec" and "--detect-branches" are
used together (the command used to misdetect branches).

Will merge to 'master' as part of the fourth batch.

* jc/maint-push-refs-all (2012-08-07) 2 commits
 - get_fetch_map(): tighten checks on dest refs
 - fetch/push: allow refs/*:refs/*

Allows pushing and fetching refs/stash.

Will merge to 'next'.

* jk/version-string (2012-08-10) 3 commits
  (merged to 'next' on 2012-08-20 at 6d207bb)
 + do not send client agent unless server does first
 + send-pack: fix capability-sending logic
 + include agent identifier in capability string
 (this branch is used by jc/capabilities.)

(Originally merged to 'next' on 2012-08-10)

Leftover bits from the "git version" code restructuring, that give
us an ability to expose the Git version over the wire in the
protocol exchange. But we do so carefully only to the other end that
understands it.

Will merge to 'master' as part of the third batch.

* tg/index-v5 (2012-08-17) 13 commits
 - p0002-index.sh: add perf test for the index formats
 - update-index.c: rewrite index when index-version is given
 - Write resolve-undo data for index-v5
 - Write index-v5 cache-tree data
 - Write index-v5
 - Read cache-tree in index-v5
 - Read resolve-undo data
 - Read index-v5
 - Make in-memory format aware of stat_crc
 - Add documentation of the index-v5 file format
 - t2104: Don't fail for index versions other than [23]
 - read-cache.c: Re-read index if index file changed
 - Move index v2 specific functions to their own file

A GSoC project, queued here primarily to give people an easier
access to the state of the last posted version.

* jc/maint-sane-execvp-notdir (2012-07-31) 1 commit
  (merged to 'next' on 2012-08-20 at 0d76cf2)
 + sane_execvp(): ignore non-directory on $PATH

(Originally merged to 'next' on 2012-08-09)

"git foo" errored out with "Not a directory" when the user had a non
directory on $PATH, and worse yet it masked an alias "foo" to run.

Will merge to 'master' as part of the third batch.

* cw/cherry-pick-allow-empty-message (2012-08-06) 1 commit
  (merged to 'next' on 2012-08-20 at 0dc0590)
 + cherry-pick: add --allow-empty-message option

(Originally merged to 'next' on 2012-08-09)

"git cherry-pick" by default stops when it sees a commit without any
log message.  The "--allow-empty-message" option can be used to
silently proceed.

Will merge to 'master' as part of the third batch.

* mz/cherry-code-cleanup (2012-07-29) 3 commits
  (merged to 'next' on 2012-08-20 at bfb0457)
 + cherry: remove redundant check for merge commit
 + cherry: don't set ignored rev_info options
 + remove unnecessary parameter from get_patch_ids()

Minor code clean-up on the cherry-pick codepath.

Will merge to 'master' as part of the second batch.

* jc/maint-config-exit-status (2012-07-30) 1 commit
  (merged to 'next' on 2012-08-20 at e18ddd8)
 + config: "git config baa" should exit with status 1

(Originally merged to 'next' on 2012-07-30)

The exit status code from "git config" was way overspecified while
being incorrect.  Update the implementation to give the documented
status for a case that was documented, and introduce a new code for
"all other errors".

Will merge to 'master' as part of the third batch.

* sz/submodule-force-update (2012-08-24) 1 commit
  (merged to 'next' on 2012-08-24 at f82b466)
 + Make 'git submodule update --force' always check out submodules.

"git submodule update --force" used to leave the working tree of the
submodule intact when there were local changes.  It is more intiutive
to make "--force" a sign to run "checkout -f" to overwrite them.

Will merge to 'master' as part of the third batch.

* jk/no-more-pre-exec-callback (2012-06-05) 1 commit
 - pager: drop "wait for output to run less" hack

(Originally merged to 'next' on 2012-07-23)

Will defer until the end of the 2012.
while waiting for older "less" to go extinct.

--------------------------------------------------
[Discarded]

* jc/sanitize-nkd-lazy-iconv-open (2012-07-31) 1 commit
 . macos: lazily initialize iconv

Teach the code that works around NKD/NKC gotcha on MacOS to call
iconv_open() only when it is necessary, in the hope of avoiding
set-up overhead.  It turns out that there was no noticeable
improvements.

^ permalink raw reply	[relevance 5%]

* What's cooking in git.git (Aug 2012, #07; Wed, 22)
@ 2012-08-22 21:03  5% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2012-08-22 21:03 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'pu' (proposed updates) while commits prefixed with '+' are in 'next'.

As promised (threatened ;-), the first batch of topics for the next
release are now part of 'master'.  They are mostly innocuous
documentation updates, test clean-ups, and all should eventually go
to the maintenance track.  In addition, the update to git-svn to
make it work better with subversion 1.7 is also included.

I'm planning to keep this cycle reasonably short and aim for tagging
the result as 1.8.0 at the end of 9th week, on October 21st, after
which I'd disappear for a few weeks.  http://tinyurl.com/gitCal is
where you can always find my rough tagging schedule at.

You can find the changes described here in the integration branches of the
repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* er/doc-fast-import-done (2012-08-22) 1 commit
 - fast-import: document the --done option

Parked in 'pu' in case ESR responds with "Sorry, forgot to sign-off".

* nd/am-i18n-fix (2012-08-22) 1 commit
 - am: quote string for translation before passing to eval_gettextln

"git am" wasn't marked up for i18n properly.
Will merge to 'next', and eventually to maint-1.7.11 track.

--------------------------------------------------
[Graduated to "master"]

* hv/coding-guidelines (2012-08-15) 1 commit
  (merged to 'next' on 2012-08-20 at 4984865)
 + Documentation/CodingGuidelines: spell out more shell guidelines

(Originally merged to 'next' on 2012-08-18)

In earlier days, "imitate the style in the neibouring code" was
sufficient to keep the coherent style, but over time some parts of
the codebase have drifted enough to make it ineffective.

* jc/doc-git-updates (2012-08-17) 1 commit
  (merged to 'next' on 2012-08-20 at ab1db71)
 + Documentation: update the introductory section

(Originally merged to 'next' on 2012-08-18)

* jc/maint-abbrev-option-cli (2012-08-16) 1 commit
  (merged to 'next' on 2012-08-20 at 54d1a5a)
 + gitcli: describe abbreviation of long options

(Originally merged to 'next' on 2012-08-18)

We did not document that many commands take unique prefix
abbreviations of long options (e.g. "--option" may be the only flag
that the command accepts that begin with "--opt", in which case you
can give "--opt") anywhere easy to find for new people.

* jc/maint-rev-list-topo-doc (2012-08-15) 1 commit
  (merged to 'next' on 2012-08-20 at 0f669d2)
 + rev-list docs: clarify --topo-order description

(Originally merged to 'next' on 2012-08-18)

It was unclear what "--topo-order" was really about in the
documentation. It is not just about "children before parent", but
also about "don't mix lineages".

* jc/tag-doc (2012-08-06) 1 commit
  (merged to 'next' on 2012-08-20 at 9eb658e)
 + Documentation: do not mention .git/refs/* directories

(Originally merged to 'next' on 2012-08-18)

Our documentation used to assume having files in .git/refs/*
directories was the only to have branches and tags, but that is not
true for quite some time.

* jc/test-prereq (2012-08-04) 8 commits
  (merged to 'next' on 2012-08-20 at dd44c4a)
 + t3910: use the UTF8_NFD_TO_NFC test prereq
 + test-lib: provide UTF8 behaviour as a prerequisite
 + t0050: use the SYMLINKS test prereq
 + t0050: use the CASE_INSENSITIVE_FS test prereq
 + test-lib: provide case insensitivity as a prerequisite
 + test: allow prerequisite to be evaluated lazily
 + test: rename $satisfied to $satisfied_prereq

(Originally merged to 'next' on 2012-08-04)

Teaches the test framework to probe rarely used prerequistes lazily,
and make use of it for detecting SYMLINKS, CASE_INSENSITIVE_FS and
NKD/NKC MacOS x gotcha.

* jk/check-docs-update (2012-08-08) 8 commits
  (merged to 'next' on 2012-08-20 at d51021d)
 + check-docs: get documented command list from Makefile
 + check-docs: drop git-help special-case
 + check-docs: list git-gui as a command
 + check-docs: factor out command-list
 + command-list: mention git-credential-* helpers
 + command-list: add git-sh-i18n
 + check-docs: update non-command documentation list
 + check-docs: mention gitweb specially

(Originally merged to 'next' on 2012-08-18)

Simplify "make check-docs" implementation and update its coverage.

* js/gitweb-path-info-unquote (2012-08-15) 1 commit
  (merged to 'next' on 2012-08-20 at a4aa740)
 + gitweb: URL-decode $my_url/$my_uri when stripping PATH_INFO

(Originally merged to 'next' on 2012-08-15)

Stripping of PATH_INFO in gitweb did not take url style quoting into
account, failing to notice directories with funny characters e.g. SP
in their paths.

* mk/test-seq (2012-08-04) 1 commit
  (merged to 'next' on 2012-08-20 at c373e0e)
 + tests: Introduce test_seq
 (this branch is used by ab/diff-write-incomplete-line.)

(Originally merged to 'next' on 2012-08-06)

Add a compatibility/utility function to the test framework. 

* mm/die-with-dashdash-help (2012-08-03) 1 commit
  (merged to 'next' on 2012-08-20 at ebe0e1a)
 + setup: clarify error messages for file/revisions ambiguity

(Originally merged to 'next' on 2012-08-09)

Reword error messages.

* ms/git-svn-1.7 (2012-08-02) 20 commits
  (merged to 'next' on 2012-08-21 at ae8aff9)
 + git-svn: remove ad-hoc canonicalizations
 + git-svn: canonicalize newly-minted URLs
 + git-svn: introduce add_path_to_url function
 + git-svn: canonicalize earlier
 + git-svn: replace URL escapes with canonicalization
 + git-svn: attempt to mimic SVN 1.7 URL canonicalization
 + t9107: fix typo
 + t9118: workaround inconsistency between SVN versions
 + Git::SVN{,::Ra}: canonicalize earlier
 + git-svn: path canonicalization uses SVN API
 + Git::SVN::Utils: remove irrelevant comment
 + git-svn: add join_paths() to safely concatenate paths
 + git-svn: factor out _collapse_dotdot function
 + git-svn: use SVN 1.7 to canonicalize when possible
 + git-svn: move canonicalization to Git::SVN::Utils
 + use Git::SVN{,::RA}->url accessor globally
 + use Git::SVN->path accessor globally
 + Git::SVN::Ra: use accessor for URLs
 + Git::SVN: use accessor for URLs internally
 + Git::SVN: use accessors internally for path

A series by Michael Schwern via Eric to update git-svn to revamp the
way URLs are internally passed around, to make it work with SVN 1.7.

* mv/pull-r-for-rebase (2012-08-17) 1 commit
  (merged to 'next' on 2012-08-20 at 9743071)
 + man: git pull -r is a short for --rebase

(Originally merged to 'next' on 2012-08-18)

A minor documentation update.

* nd/index-errno (2012-08-06) 1 commit
  (merged to 'next' on 2012-08-20 at 34076c6)
 + read_index_from: remove bogus errno assignments

(Originally merged to 'next' on 2012-08-06)

Assignments to errno before calling system functions that used to
matter in the old code were left behind after the code structure
changed sufficiently to make them useless.

* pg/maint-apply-remove-unused-variable (2012-08-05) 1 commit
  (merged to 'next' on 2012-08-20 at 260975b)
 + apply: delete unused deflate_origlen from patch struct

(Originally merged to 'next' on 2012-08-05)

Remove an unused field.

* tr/maint-send-email-2047 (2012-07-31) 1 commit
  (merged to 'next' on 2012-08-20 at cf5ee1c)
 + send-email: improve RFC2047 quote parsing

(Originally merged to 'next' on 2012-08-09)

"git send-email" did not unquote encoded words that appear on the
header correctly, and lost "_" from strings.

* tr/merge-recursive-flush (2012-08-03) 1 commit
  (merged to 'next' on 2012-08-20 at 00aeb19)
 + merge-recursive: eliminate flush_buffer() in favor of write_in_full()

(Originally merged to 'next' on 2012-08-09)

Remove unnecessary code.

* tr/void-diff-setup-done (2012-08-03) 1 commit
  (merged to 'next' on 2012-08-20 at 2f21f63)
 + diff_setup_done(): return void

(Originally merged to 'next' on 2012-08-09)

Remove unnecessary code.

--------------------------------------------------
[Stalled]

* jc/add-delete-default (2012-08-13) 1 commit
 - git add: notice removal of tracked paths by default

"git add dir/" updated modified files and added new files, but does
not notice removed files, which may be "Huh?" to some users.  They
can of course use "git add -A dir/", but why should they?

Resurrected from graveyard, as I thought it was a worthwhile thing
to do in the longer term; waiting for comments.

* tx/relative-in-the-future (2012-08-16) 2 commits
 - date: show relative dates in the future
 - date: refactor the relative date logic from presentation

Not my itch; rewritten an earlier submission by Tom Xue into
somewhat more maintainable form, though it breaks existing i18n.

Anybody interested in fixing it up?  Otherwise may discard.

* pw/p4-submit-conflicts (2012-08-16) 12 commits
 - git p4: add submit --prepare-p4-only option
 - git p4: add submit --dry-run option
 - git p4: accept -v for --verbose
 - git p4: revert deleted files after submit cancel
 - git p4: rearrange submit template construction
 - git p4: test clean-up after failed submit, fix added files
 - git p4: standardize submit cancel due to unchanged template
 - git p4: move conflict prompt into run, use [c]ontinue and [q]uit
 - git p4: remove submit failure options [a]pply and [w]rite
 - git p4: gracefully fail if some commits could not be applied
 - git p4 test: use p4d -L option to suppress log messages
 - git p4 test: remove bash-ism of combined export/assignment

Waiting for the dust to settle.

* mz/rebase-range (2012-07-18) 7 commits
 . rebase (without -p): correctly calculate patches to rebase
 . rebase -p: don't request --left-right only to ignore left side
 . rebase -p: use --cherry-mark for todo file
 . git-rebase--interactive.sh: look up subject in add_pick_line
 . git-rebase--interactive: group all $preserve_merges code
 . git-rebase--interactive.sh: extract function for adding "pick" line
 . git-rebase--am.sh: avoid special-casing --keep-empty

Expecting a reroll.

Performance concerns from Windows folks.  Also the series lacks
proper sign-offs.

* jl/submodule-rm (2012-07-05) 2 commits
 - rm: remove submodules from the index and the .gitmodules file
 - rm: don't fail when removing populated submodules

Expecting a reroll.

* mb/remote-default-nn-origin (2012-07-11) 6 commits
 - Teach get_default_remote to respect remote.default.
 - Test that plain "git fetch" uses remote.default when on a detached HEAD.
 - Teach clone to set remote.default.
 - Teach "git remote" about remote.default.
 - Teach remote.c about the remote.default configuration setting.
 - Rename remote.c's default_remote_name static variables.

When the user does not specify what remote to interact with, we
often attempt to use 'origin'.  This can now be customized via a
configuration variable.

Expecting a reroll.

"The first remote becomes the default" bit is better done as a
separate step.

* jc/split-blob (2012-04-03) 6 commits
 - chunked-object: streaming checkout
 - chunked-object: fallback checkout codepaths
 - bulk-checkin: support chunked-object encoding
 - bulk-checkin: allow the same data to be multiply hashed
 - new representation types in the packstream
 - packfile: use varint functions

Not ready.

I finished the streaming checkout codepath, but as explained in
127b177 (bulk-checkin: support chunked-object encoding, 2011-11-30),
these are still early steps of a long and painful journey. At least
pack-objects and fsck need to learn the new encoding for the series
to be usable locally, and then index-pack/unpack-objects needs to
learn it to be used remotely.

Given that I heard a lot of noise that people want large files, and
that I was asked by somebody at GitTogether'11 privately for an
advice on how to pay developers (not me) to help adding necessary
support, I am somewhat dissapointed that the original patch series
that was sent long time ago still remains here without much comments
and updates from the developer community. I even made the interface
to the logic that decides where to split chunks easily replaceable,
and I deliberately made the logic in the original patch extremely
stupid to entice others, especially the "bup" fanbois, to come up
with a better logic, thinking that giving people an easy target to
shoot for, they may be encouraged to help out. The plan is not
working :-<.

--------------------------------------------------
[Cooking]

* lt/commit-tree-guess-utf-8 (2012-08-21) 1 commit
 - commit/commit-tree: correct latin1 to utf-8

Teaches "git commit" and "git commit-tree" the "we are told to use
utf-8 in log message, but this does not look like utf-8---attempt to
pass it through convert-from-latin1-to-utf8 and see if it makes
sense" heuristics "git mailinfo" already uses.

Will merge to 'next'.

* kk/maint-for-each-ref-multi-sort (2012-08-21) 2 commits
 - for-each-ref: Fix sort with multiple keys
 - t6300: test sort with multiple keys

"git for-each-ref" did not currectly support more than one --sort
option.

Will merge to 'next'.

* fa/remote-svn (2012-08-22) 16 commits
 - Add a test script for remote-svn
 - remote-svn: add marks-file regeneration
 - Add a svnrdump-simulator replaying a dump file for testing
 - remote-svn: add incremental import
 - remote-svn: Activate import/export-marks for fast-import
 - Create a note for every imported commit containing svn metadata
 - vcs-svn: add fast_export_note to create notes
 - Allow reading svn dumps from files via file:// urls
 - remote-svn, vcs-svn: Enable fetching to private refs
 - When debug==1, start fast-import with "--stats" instead of "--quiet"
 - Add documentation for the 'bidi-import' capability of remote-helpers
 - Connect fast-import to the remote-helper via pipe, adding 'bidi-import' capability
 - Add argv_array_detach and argv_array_free_detached
 - Add svndump_init_fd to allow reading dumps from arbitrary FDs
 - Add git-remote-testsvn to Makefile
 - Implement a remote helper for svn in C
 (this branch is used by fa/vcs-svn.)

* fa/vcs-svn (2012-08-22) 4 commits
 - vcs-svn: remove repo_tree
 - vcs-svn/svndump: rewrite handle_node(), begin|end_revision()
 - vcs-svn/svndump: restructure node_ctx, rev_ctx handling
 - svndump: move struct definitions to .h
 (this branch uses fa/remote-svn.)

* nd/i18n-parseopt-help (2012-08-22) 66 commits
 - Use imperative form in help usage to describe an action
 - Reduce translations by using same terminologies
 - i18n: write-tree: mark parseopt strings for translation
 - i18n: verify-tag: mark parseopt strings for translation
 - i18n: verify-pack: mark parseopt strings for translation
 - i18n: update-server-info: mark parseopt strings for translation
 - i18n: update-ref: mark parseopt strings for translation
 - i18n: update-index: mark parseopt strings for translation
 - i18n: tag: mark parseopt strings for translation
 - i18n: symbolic-ref: mark parseopt strings for translation
 - i18n: show-ref: mark parseopt strings for translation
 - i18n: show-branch: mark parseopt strings for translation
 - i18n: shortlog: mark parseopt strings for translation
 - i18n: rm: mark parseopt strings for translation
 - i18n: revert, cherry-pick: mark parseopt strings for translation
 - i18n: rev-parse: mark parseopt strings for translation
 - i18n: reset: mark parseopt strings for translation
 - i18n: rerere: mark parseopt strings for translation
 - i18n: status: mark parseopt strings for translation
 - i18n: replace: mark parseopt strings for translation
 - i18n: remote: mark parseopt strings for translation
 - i18n: read-tree: mark parseopt strings for translation
 - i18n: push: mark parseopt strings for translation
 - i18n: prune: mark parseopt strings for translation
 - i18n: prune-packed: mark parseopt strings for translation
 - i18n: pack-refs: mark parseopt strings for translation
 - i18n: pack-objects: mark parseopt strings for translation
 - i18n: notes: mark parseopt strings for translation
 - i18n: name-rev: mark parseopt strings for translation
 - i18n: mv: mark parseopt strings for translation
 - i18n: mktree: mark parseopt strings for translation
 - i18n: merge: mark parseopt strings for translation
 - i18n: merge-file: mark parseopt strings for translation
 - i18n: merge-base: mark parseopt strings for translation
 - i18n: ls-tree: mark parseopt strings for translation
 - i18n: ls-files: mark parseopt strings for translation
 - i18n: log: mark parseopt strings for translation
 - i18n: init-db: mark parseopt strings for translation
 - i18n: help: mark parseopt strings for translation
 - i18n: hash-object: mark parseopt strings for translation
 - i18n: grep: mark parseopt strings for translation
 - i18n: gc: mark parseopt strings for translation
 - i18n: fsck: mark parseopt strings for translation
 - i18n: format-patch: mark parseopt strings for translation
 - i18n: for-each-ref: mark parseopt strings for translation
 - i18n: fmt-merge-msg: mark parseopt strings for translation
 - i18n: fetch: mark parseopt strings for translation
 - i18n: fast-export: mark parseopt strings for translation
 - i18n: describe: mark parseopt strings for translation
 - i18n: config: mark parseopt strings for translation
 - i18n: count-objects: mark parseopt strings for translation
 - i18n: commit: mark parseopt strings for translation
 - i18n: column: mark parseopt strings for translation
 - i18n: clone: mark parseopt strings for translation
 - i18n: clean: mark parseopt strings for translation
 - i18n: cherry: mark parseopt strings for translation
 - i18n: checkout: mark parseopt strings for translation
 - i18n: checkout-index: mark parseopt strings for translation
 - i18n: check-attr: mark parseopt strings for translation
 - i18n: cat-file: mark parseopt strings for translation
 - i18n: branch: mark parseopt strings for translation
 - i18n: blame: mark parseopt strings for translation
 - i18n: add: mark parseopt strings for translation
 - i18n: bisect--helper: mark parseopt strings for translation
 - i18n: archive: mark parseopt strings for translation
 - i18n: mark "style" in OPT_COLUMN() for translation

A lot of i18n mark-up for the help text from "git <cmd> -h".

Will merge to 'next'.

* tr/maint-parseopt-avoid-empty (2012-08-20) 1 commit
 - gettext: do not translate empty string

A workaround to avoid doing _(""), which translates to magic string
in the .po files.

Will merge to 'next'.

* jk/config-warn-on-inaccessible-paths (2012-08-21) 4 commits
 - warn_on_inaccessible(): a helper to warn on inaccessible paths
 - attr: warn on inaccessible attribute files
 - gitignore: report access errors of exclude files
 - config: warn on inaccessible files

When looking for $HOME/.gitconfig etc., it is OK if we cannot read
them because they do not exist, but unable to read existing ones
need to be diagnosed.

Will merge to 'next'.

* nd/i18n-poison-test-updates (2012-08-21) 6 commits
 - Fix tests under GETTEXT_POISON on parseopt
 - Fix tests under GETTEXT_POISON on pack-object
 - Fix tests under GETTEXT_POISON on git-apply
 - Fix tests under GETTEXT_POISON on diffstat
 - Fix tests under GETTEXT_POISON on git-stash
 - Fix tests under GETTEXT_POISON on relative dates

Updates to tests that can be broken with gettext-poison builds.

* jc/daemon-access-hook (2012-08-15) 1 commit
  (merged to 'next' on 2012-08-20 at c8f5b2e)
 + daemon: --access-hook option

Allow an external command to tell git-daemon to decline service
based on the client address, repository path, etc.

Will merge to 'master' as part of the third batch.

* jc/send-email-reconfirm (2012-08-14) 1 commit
  (merged to 'next' on 2012-08-20 at dffdef6)
 + send-email: validate & reconfirm interactive responses

Validate interactive input to "git send-email" to avoid common
mistakes such as saying "y<RETURN>" to sender mail address whose
prompt is given with a correctly guessed default.

Will merge to 'master' as part of the third batch.

* ef/win32-cred-helper (2012-08-16) 1 commit
  (merged to 'next' on 2012-08-20 at bd5c651)
 + contrib: add win32 credential-helper

Credential helper for Win32 to allow access to the keychain of
the logged-in user.

Will merge to 'master' as part of the second batch.

* rr/precompose-utf8-cleanup (2012-08-20) 2 commits
  (merged to 'next' on 2012-08-20 at a883c2a)
 + precompose-utf8: do not call checks for non-ascii "utf8"
 + cleanup precompose_utf8

A style and code cleanup.

Will merge to 'master' as part of the second batch.

* mh/maint-config-doc-proxy-command (2012-08-18) 2 commits
  (merged to 'next' on 2012-08-20 at a484625)
 + git-config doc: unconfuse an example
 + git-config.txt: fix example

A minor documentation update.

Will merge to 'master' as part of the second batch.

* ph/stash-rerere (2012-08-17) 2 commits
  (merged to 'next' on 2012-08-20 at ae37111)
 + stash: invoke rerere in case of conflict
 + test: git-stash conflict sets up rerere

"git stash" internally used "git merge-recursive" backend, which did
not trigger "rerere" upon conflicts unlike other mergy operations.

Will merge to 'master' as part of the third batch.

* hv/submodule-path-unmatch (2012-08-14) 1 commit
  (merged to 'next' on 2012-08-20 at cbe6483)
 + Let submodule command exit with error status if path does not exist

As the title says.

Will merge to 'master' as part of the second batch.

* bc/receive-pack-stdout-protection (2012-08-06) 2 commits
  (merged to 'next' on 2012-08-20 at b1b0d18)
 + receive-pack: do not leak output from auto-gc to standard output
 + t/t5400: demonstrate breakage caused by informational message from prune

(Originally merged to 'next' on 2012-08-07)

When "git push" triggered the automatic gc on the receiving end, a
message from "git prune" that said it was removing cruft leaked to
the standard output, breaking the communication protocol.

Will merge to 'master' as part of the second batch.

* bc/prune-info (2012-08-07) 1 commit
  (merged to 'next' on 2012-08-20 at 1bc9e66)
 + prune.c: only print informational message in show_only or verbose mode

Teach "git prune" without "-v" to be silent about leftover temporary files.

Will merge to 'master' as part of the second batch.

* jk/docs-docbook-monospace-display (2012-08-07) 1 commit
  (merged to 'next' on 2012-08-20 at 0ed30dc)
 + docs: monospace listings in docbook output

(Originally merged to 'next' on 2012-08-18)

The documentation in the TeXinfo format was using indented output
for materials meant to be examples that are better typeset in
monospace.

Will merge to 'master' as part of the second batch.

* jc/maint-protect-sh-from-ifs (2012-08-08) 1 commit
  (merged to 'next' on 2012-08-20 at 8b00562)
 + sh-setup: protect from exported IFS

When the user exports a non-default IFS without HT, scripts that
rely on being able to parse "ls-files -s | while read a b c..."
start to fail.  Protect them from such a misconfiguration.

Will merge to 'master' as part of the second batch.

* mg/rebase-i-onto-reflog-in-full (2012-08-10) 1 commit
  (merged to 'next' on 2012-08-20 at f671bd2)
 + rebase -i: use full onto sha1 in reflog

The reflog entries left by "git rebase" and "git rebase -i" were
inconsistent.

Will merge to 'master' as part of the second batch.

* mz/empty-rebase-test (2012-08-09) 1 commit
  (merged to 'next' on 2012-08-20 at 53e2419)
 + add tests for 'git rebase --keep-empty'

Will merge to 'master' as part of the second batch.

* jc/capabilities (2012-08-13) 3 commits
  (merged to 'next' on 2012-08-20 at 1976e47)
 + fetch-pack: mention server version with verbose output
 + parse_feature_request: make it easier to see feature values
 + fetch-pack: do not ask for unadvertised capabilities
 (this branch uses jk/version-string.)

Some capabilities were asked by fetch-pack even when upload-pack did
not advertise that they are available.  Fix fetch-pack not to do so.

Will merge to 'master' as part of the second batch.

* pw/p4-use-client-spec-branch-detection (2012-08-20) 5 commits
 - git p4: make branch detection work with --use-client-spec
 - git p4: do wildcard decoding in stripRepoPath
 - git p4: set self.branchPrefixes in initialization
 - git p4 test: add broken --use-client-spec --detect-branches tests
 - git p4 test: move client_view() function to library

Will merge to 'next' and soon to 'master'.

* jc/maint-push-refs-all (2012-08-07) 2 commits
 - get_fetch_map(): tighten checks on dest refs
 - fetch/push: allow refs/*:refs/*

Allows pushing and fetching refs/stash.
Need to send it out to the list for review.

* jk/version-string (2012-08-10) 3 commits
  (merged to 'next' on 2012-08-20 at 6d207bb)
 + do not send client agent unless server does first
 + send-pack: fix capability-sending logic
 + include agent identifier in capability string
 (this branch is used by jc/capabilities.)

(Originally merged to 'next' on 2012-08-10)

Leftover bits from the "git version" code restructuring, that give
us an ability to expose the Git version over the wire in the
protocol exchange. But we do so carefully only to the other end that
understands it.

Will merge to 'master' as part of the third batch.

* js/grep-patterntype-config (2012-08-03) 1 commit
  (merged to 'next' on 2012-08-20 at 39a0431)
 + grep: add a grep.patternType configuration setting

(Originally merged to 'next' on 2012-08-09)

"grep" learned to use a non-standard pattern type by default if a
configuration variable tells it to.

Will merge to 'master' as part of the second batch.

* ab/diff-write-incomplete-line (2012-08-05) 1 commit
  (merged to 'next' on 2012-08-20 at e28b804)
 + Fix '\ No newline...' annotation in rewrite diffs

(Originally merged to 'next' on 2012-08-07)

The output from "git diff -B" for a file that ends with an
incomplete line did not put "\ No newline..." on a line of its own.

Will merge to 'master' as part of the second batch.

* tg/index-v5 (2012-08-17) 13 commits
 - p0002-index.sh: add perf test for the index formats
 - update-index.c: rewrite index when index-version is given
 - Write resolve-undo data for index-v5
 - Write index-v5 cache-tree data
 - Write index-v5
 - Read cache-tree in index-v5
 - Read resolve-undo data
 - Read index-v5
 - Make in-memory format aware of stat_crc
 - Add documentation of the index-v5 file format
 - t2104: Don't fail for index versions other than [23]
 - read-cache.c: Re-read index if index file changed
 - Move index v2 specific functions to their own file

A GSoC project, queued here primarily to give people an easier
access to the state of the last posted version.

* jc/maint-sane-execvp-notdir (2012-07-31) 1 commit
  (merged to 'next' on 2012-08-20 at 0d76cf2)
 + sane_execvp(): ignore non-directory on $PATH

(Originally merged to 'next' on 2012-08-09)

"git foo" errored out with "Not a directory" when the user had a non
directory on $PATH, and worse yet it masked an alias "foo" to run.

Will merge to 'master' as part of the third batch.

* cw/cherry-pick-allow-empty-message (2012-08-06) 1 commit
  (merged to 'next' on 2012-08-20 at 0dc0590)
 + cherry-pick: add --allow-empty-message option

(Originally merged to 'next' on 2012-08-09)

"git cherry-pick" by default stops when it sees a commit without any
log message.  The "--allow-empty-message" option can be used to
silently proceed.

Will merge to 'master' as part of the third batch.

* jc/maint-t7406-rev-parse-max-count-huh (2012-07-30) 1 commit
  (merged to 'next' on 2012-08-20 at 3e2598a)
 + t7406: fix misleading "rev-parse --max-count=1 HEAD"

(Originally merged to 'next' on 2012-07-30)

Test clean-up, with no behaviour change.
Will merge to 'master' as part of the second batch.

* jk/maint-diff-nul40-as-sentinel (2012-07-29) 1 commit
 + diff: do not use null sha1 as a sentinel value
 (this branch is used by jk/maint-null-in-trees.)

"git diff" had a confusion between taking data from a path in the
working tree and taking data from an object that happens to have
name 0{40} recorded in a tree.

* mz/cherry-code-cleanup (2012-07-29) 3 commits
  (merged to 'next' on 2012-08-20 at bfb0457)
 + cherry: remove redundant check for merge commit
 + cherry: don't set ignored rev_info options
 + remove unnecessary parameter from get_patch_ids()

Minor code clean-up on the cherry-pick codepath.

Will merge to 'master' as part of the second batch.

* jc/maint-config-exit-status (2012-07-30) 1 commit
  (merged to 'next' on 2012-08-20 at e18ddd8)
 + config: "git config baa" should exit with status 1

(Originally merged to 'next' on 2012-07-30)

The exit status code from "git config" was way overspecified while
being incorrect.  Update the implementation to give the documented
status for a case that was documented, and introduce a new code for
"all other errors".

Will merge to 'master' as part of the third batch.

* jk/maint-null-in-trees (2012-07-29) 2 commits
  (merged to 'next' on 2012-08-20 at 5bc2c49)
 + fsck: detect null sha1 in tree entries
 + do not write null sha1s to on-disk index
 (this branch uses jk/maint-diff-nul40-as-sentinel.)

(Originally merged to 'next' on 2012-07-30)

We do not want a link to 0{40} object stored anywhere in our objects.

Will merge to 'master' as part of the second batch.

* sz/submodule-force-update (2012-07-25) 1 commit
 - Make 'git submodule update --force' always check out submodules.

We may want a documentation update and a few tests.

Kicked back to 'pu'.

* da/difftool-updates (2012-08-21) 13 commits
  (merged to 'next' on 2012-08-21 at 332afe4)
 + difftool: silence warning
  (merged to 'next' on 2012-08-20 at 2fecd90)
 + Add Code Compare v2.80.4 as a merge / diff tool for Windows
 + mergetool,difftool: Document --tool-help consistently
 + difftool: Disable --symlinks on cygwin
 + difftool: Handle compare() returning -1
 + difftool: Wrap long lines for readability
 + difftool: Check all return codes from compare()
 + difftool: Handle finding mergetools/ in a path with spaces
 + difftool: Use symlinks when diffing against the worktree
 + difftool: Call the temp directory "git-difftool"
 + difftool: Move option values into a hash
 + difftool: Eliminate global variables
 + difftool: Simplify print_tool_help()

(Originally merged to 'next' on 2012-08-10)

"git difftool --dir-diff" learned to use symbolic links to prepare
temporary copy of the working tree when available.

Will merge to 'master' as part of the second batch.

* jk/no-more-pre-exec-callback (2012-06-05) 1 commit
 - pager: drop "wait for output to run less" hack

(Originally merged to 'next' on 2012-07-23)

Will defer until the end of the 2012,
waiting for older "less" to go extinct.

* mm/push-default-switch-warning (2012-06-24) 1 commit
  (merged to 'next' on 2012-08-20 at 553e6c0)
 + push: start warning upcoming default change for push.default

(Originally merged to 'next' on 2012-06-26)

In the next major release, we will switch "git push [$there]" that
does not say what to push from the traditional "matching" to the
updated "simple" semantics, that pushes the current branch to the
branch with the same name only when the current branch is set to
integrate with that remote branch (all other cases will error out).

Will merge to 'master' as part of the second batch.

--------------------------------------------------
[Discarded]

* jc/sanitize-nkd-lazy-iconv-open (2012-07-31) 1 commit
 . macos: lazily initialize iconv

Teach the code that works around NKD/NKC gotcha on MacOS to call
iconv_open() only when it is necessary, in the hope of avoiding
set-up overhead.  It turns out that there was no noticeable
improvements.

^ permalink raw reply	[relevance 5%]

* What's cooking in git.git (Aug 2012, #06; Tue, 21)
@ 2012-08-21 23:10  5% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2012-08-21 23:10 UTC (permalink / raw)
  To: git

Not much has changed since the last edition, except that we will be
merging ms/git-svn-1.7 topic as part of the first batch that
otherwise consists of mostly updates to documentation and tests and
low impact cleanups.

-- >8 --

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'pu' (proposed updates) while commits prefixed with '+' are in 'next'.

I'm planning to keep this cycle reasonably short and aim for tagging
the result as 1.8.0 at the end of 9th week, on October 21st, after
which I'd disappear for a few weeks.  http://tinyurl.com/gitCal is
where you can always find my rough tagging schedule at.

You can find the changes described here in the integration branches of the
repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* kk/maint-for-each-ref-multi-sort (2012-08-21) 2 commits
 - for-each-ref: Fix sort with multiple keys
 - t6300: test sort with multiple keys

A small and sensible fix, even though the accompanying test seems to
touch too many unrelated existing ones needlessly, which may want to
be fixed by a reroll.

* nd/i18n-parseopt-help (2012-08-20) 54 commits
 - i18n: shortlog: mark parseopt strings for translation
 - i18n: rm: mark parseopt strings for translation
 - i18n: revert, cherry-pick: mark parseopt strings for translation
 - i18n: rev-parse: mark parseopt strings for translation
 - i18n: reset: mark parseopt strings for translation
 - i18n: rerere: mark parseopt strings for translation
 - i18n: status: mark parseopt strings for translation
 - i18n: replace: mark parseopt strings for translation
 - i18n: remote: mark parseopt strings for translation
 - i18n: read-tree: mark parseopt strings for translation
 - i18n: push: mark parseopt strings for translation
 - i18n: prune: mark parseopt strings for translation
 - i18n: prune-packed: mark parseopt strings for translation
 - i18n: pack-refs: mark parseopt strings for translation
 - i18n: pack-objects: mark parseopt strings for translation
 - i18n: notes: mark parseopt strings for translation
 - i18n: name-rev: mark parseopt strings for translation
 - i18n: mv: mark parseopt strings for translation
 - i18n: mktree: mark parseopt strings for translation
 - i18n: merge: mark parseopt strings for translation
 - i18n: merge-file: mark parseopt strings for translation
 - i18n: merge-base: mark parseopt strings for translation
 - i18n: ls-tree: mark parseopt strings for translation
 - i18n: ls-files: mark parseopt strings for translation
 - i18n: log: mark parseopt strings for translation
 - i18n: init-db: mark parseopt strings for translation
 - i18n: help: mark parseopt strings for translation
 - i18n: hash-object: mark parseopt strings for translation
 - i18n: grep: mark parseopt strings for translation
 - i18n: gc: mark parseopt strings for translation
 - i18n: fsck: mark parseopt strings for translation
 - i18n: format-patch: mark parseopt strings for translation
 - i18n: for-each-ref: mark parseopt strings for translation
 - i18n: fmt-merge-msg: mark parseopt strings for translation
 - i18n: fetch: mark parseopt strings for translation
 - i18n: fast-export: mark parseopt strings for translation
 - i18n: describe: mark parseopt strings for translation
 - i18n: config: mark parseopt strings for translation
 - i18n: count-objects: mark parseopt strings for translation
 - i18n: commit: mark parseopt strings for translation
 - i18n: column: mark parseopt strings for translation
 - i18n: clone: mark parseopt strings for translation
 - i18n: clean: mark parseopt strings for translation
 - i18n: cherry: mark parseopt strings for translation
 - i18n: checkout: mark parseopt strings for translation
 - i18n: checkout-index: mark parseopt strings for translation
 - i18n: check-attr: mark parseopt strings for translation
 - i18n: cat-file: mark parseopt strings for translation
 - i18n: branch: mark parseopt strings for translation
 - i18n: blame: mark parseopt strings for translation
 - i18n: add: mark parseopt strings for translation
 - i18n: bisect--helper: mark parseopt strings for translation
 - i18n: archive: mark parseopt strings for translation
 - i18n: mark "style" in OPT_COLUMN() for translation

A lot of i18n mark-up for the help text from "git <cmd> -h".

* tr/maint-parseopt-avoid-empty (2012-08-20) 1 commit
 - gettext: do not translate empty string

A workaround to avoid doing _(""), which translates to magic string
in the .po files.

* jk/config-warn-on-inaccessible-paths (2012-08-21) 4 commits
 - warn_on_inaccessible(): a helper to warn on inaccessible paths
 - attr: warn on inaccessible attribute files
 - gitignore: report access errors of exclude files
 - config: warn on inaccessible files

When looking for $HOME/.gitconfig etc., it is OK if we cannot read
them because they do not exist, but unable to read existing ones
need to be diagnosed.

* nd/i18n-poison-test-updates (2012-08-21) 6 commits
 - Fix tests under GETTEXT_POISON on parseopt
 - Fix tests under GETTEXT_POISON on pack-object
 - Fix tests under GETTEXT_POISON on git-apply
 - Fix tests under GETTEXT_POISON on diffstat
 - Fix tests under GETTEXT_POISON on git-stash
 - Fix tests under GETTEXT_POISON on relative dates

Updates to tests that can be broken with gettext-poison builds.

--------------------------------------------------
[Stalled]

* pw/p4-submit-conflicts (2012-08-16) 12 commits
 - git p4: add submit --prepare-p4-only option
 - git p4: add submit --dry-run option
 - git p4: accept -v for --verbose
 - git p4: revert deleted files after submit cancel
 - git p4: rearrange submit template construction
 - git p4: test clean-up after failed submit, fix added files
 - git p4: standardize submit cancel due to unchanged template
 - git p4: move conflict prompt into run, use [c]ontinue and [q]uit
 - git p4: remove submit failure options [a]pply and [w]rite
 - git p4: gracefully fail if some commits could not be applied
 - git p4 test: use p4d -L option to suppress log messages
 - git p4 test: remove bash-ism of combined export/assignment

Waiting for the dust to settle.

* mz/rebase-range (2012-07-18) 7 commits
 . rebase (without -p): correctly calculate patches to rebase
 . rebase -p: don't request --left-right only to ignore left side
 . rebase -p: use --cherry-mark for todo file
 . git-rebase--interactive.sh: look up subject in add_pick_line
 . git-rebase--interactive: group all $preserve_merges code
 . git-rebase--interactive.sh: extract function for adding "pick" line
 . git-rebase--am.sh: avoid special-casing --keep-empty

Expecting a reroll.

Performance concerns from Windows folks.  Also the series lacks
proper sign-offs.

* jl/submodule-rm (2012-07-05) 2 commits
 - rm: remove submodules from the index and the .gitmodules file
 - rm: don't fail when removing populated submodules

Expecting a reroll.

* lt/commit-tree-guess-utf-8 (2012-06-28) 1 commit
 - commit/commit-tree: correct latin1 to utf-8

Teaches "git commit" and "git commit-tree" the "we are told to use
utf-8 in log message, but this does not look like utf-8---attempt to
pass it through convert-from-latin1-to-utf8 and see if it makes
sense" heuristics "git mailinfo" already uses.

A draft from Linus received privately without a log message.
Expecting a reroll.

* mb/remote-default-nn-origin (2012-07-11) 6 commits
 - Teach get_default_remote to respect remote.default.
 - Test that plain "git fetch" uses remote.default when on a detached HEAD.
 - Teach clone to set remote.default.
 - Teach "git remote" about remote.default.
 - Teach remote.c about the remote.default configuration setting.
 - Rename remote.c's default_remote_name static variables.

When the user does not specify what remote to interact with, we
often attempt to use 'origin'.  This can now be customized via a
configuration variable.

Expecting a reroll.
"The first remote becomes the default" bit is better done as a
separate step.

* jc/split-blob (2012-04-03) 6 commits
 - chunked-object: streaming checkout
 - chunked-object: fallback checkout codepaths
 - bulk-checkin: support chunked-object encoding
 - bulk-checkin: allow the same data to be multiply hashed
 - new representation types in the packstream
 - packfile: use varint functions

Not ready.

I finished the streaming checkout codepath, but as explained in
127b177 (bulk-checkin: support chunked-object encoding, 2011-11-30),
these are still early steps of a long and painful journey. At least
pack-objects and fsck need to learn the new encoding for the series
to be usable locally, and then index-pack/unpack-objects needs to
learn it to be used remotely.

Given that I heard a lot of noise that people want large files, and
that I was asked by somebody at GitTogether'11 privately for an
advice on how to pay developers (not me) to help adding necessary
support, I am somewhat dissapointed that the original patch series
that was sent long time ago still remains here without much comments
and updates from the developer community. I even made the interface
to the logic that decides where to split chunks easily replaceable,
and I deliberately made the logic in the original patch extremely
stupid to entice others, especially the "bup" fanbois, to come up
with a better logic, thinking that giving people an easy target to
shoot for, they may be encouraged to help out. The plan is not
working :-<.

--------------------------------------------------
[Cooking]

* hv/coding-guidelines (2012-08-15) 1 commit
  (merged to 'next' on 2012-08-20 at 4984865)
 + Documentation/CodingGuidelines: spell out more shell guidelines

(Originally merged to 'next' on 2012-08-18)

In earlier days, "imitate the style in the neibouring code" was
sufficient to keep the coherent style, but over time some parts of
the codebase have drifted enough to make it ineffective.

Will merge to 'master' as part of the first batch.

* jc/daemon-access-hook (2012-08-15) 1 commit
  (merged to 'next' on 2012-08-20 at c8f5b2e)
 + daemon: --access-hook option

Allow an external command to tell git-daemon to decline service
based on the client address, repository path, etc.

* jc/send-email-reconfirm (2012-08-14) 1 commit
  (merged to 'next' on 2012-08-20 at dffdef6)
 + send-email: validate & reconfirm interactive responses

Validate interactive input to "git send-email" to avoid common
mistakes such as saying "y<RETURN>" to sender mail address whose
prompt is given with a correctly guessed default.

* tx/relative-in-the-future (2012-08-16) 2 commits
 - date: show relative dates in the future
 - date: refactor the relative date logic from presentation

Not my itch; rewritten an earlier submission by Tom Xue into
somewhat more maintainable form, though it breaks existing i18n.

* ef/win32-cred-helper (2012-08-16) 1 commit
  (merged to 'next' on 2012-08-20 at bd5c651)
 + contrib: add win32 credential-helper

Credential helper for Win32 to allow access to the keychain of
the logged-in user.

* jc/maint-abbrev-option-cli (2012-08-16) 1 commit
  (merged to 'next' on 2012-08-20 at 54d1a5a)
 + gitcli: describe abbreviation of long options

(Originally merged to 'next' on 2012-08-18)

We did not document that many commands take unique prefix
abbreviations of long options (e.g. "--option" may be the only flag
that the command accepts that begin with "--opt", in which case you
can give "--opt") anywhere easy to find for new people.

Will merge to 'master' as part of the first batch.

* mv/pull-r-for-rebase (2012-08-17) 1 commit
  (merged to 'next' on 2012-08-20 at 9743071)
 + man: git pull -r is a short for --rebase

(Originally merged to 'next' on 2012-08-18)

A minor documentation update.

Will merge to 'master' as part of the first batch.

* rr/precompose-utf8-cleanup (2012-08-20) 2 commits
  (merged to 'next' on 2012-08-20 at a883c2a)
 + precompose-utf8: do not call checks for non-ascii "utf8"
 + cleanup precompose_utf8

A style and code cleanup.

* jc/doc-git-updates (2012-08-17) 1 commit
  (merged to 'next' on 2012-08-20 at ab1db71)
 + Documentation: update the introductory section

(Originally merged to 'next' on 2012-08-18)

Will merge to 'master' as part of the first batch.

* fa/remote-svn (2012-08-20) 16 commits
 - Add a test script for remote-svn
 - remote-svn: add marks-file regeneration
 - Add a svnrdump-simulator replaying a dump file for testing
 - remote-svn: add incremental import
 - remote-svn: Activate import/export-marks for fast-import
 - Create a note for every imported commit containing svn metadata
 - vcs-svn: add fast_export_note to create notes
 - Allow reading svn dumps from files via file:// urls
 - remote-svn, vcs-svn: Enable fetching to private refs
 - When debug==1, start fast-import with "--stats" instead of "--quiet"
 - Add documentation for the 'bidi-import' capability of remote-helpers
 - Connect fast-import to the remote-helper via pipe, adding 'bidi-import' capability
 - Add argv_array_detach and argv_array_free_detached
 - Add svndump_init_fd to allow reading dumps from arbitrary FDs
 - Add git-remote-testsvn to Makefile
 - Implement a remote helper for svn in C
 (this branch is used by fa/vcs-svn.)

* fa/vcs-svn (2012-08-20) 4 commits
 - vcs-svn: remove repo_tree
 - vcs-svn/svndump: rewrite handle_node(), begin|end_revision()
 - vcs-svn/svndump: restructure node_ctx, rev_ctx handling
 - svndump: move struct definitions to .h
 (this branch uses fa/remote-svn.)

Rerolled with another round of fix-up squashed in.

* mh/maint-config-doc-proxy-command (2012-08-18) 2 commits
  (merged to 'next' on 2012-08-20 at a484625)
 + git-config doc: unconfuse an example
 + git-config.txt: fix example

A minor documentation update.

* ph/stash-rerere (2012-08-17) 2 commits
  (merged to 'next' on 2012-08-20 at ae37111)
 + stash: invoke rerere in case of conflict
 + test: git-stash conflict sets up rerere

"git stash" internally used "git merge-recursive" backend, which did
not trigger "rerere" upon conflicts unlike other mergy operations.

* hv/submodule-path-unmatch (2012-08-14) 1 commit
  (merged to 'next' on 2012-08-20 at cbe6483)
 + Let submodule command exit with error status if path does not exist

As the title says.

* jc/add-delete-default (2012-08-13) 1 commit
 - git add: notice removal of tracked paths by default

"git add dir/" updated modified files and added new files, but does
not notice removed files, which may be "Huh?" to some users.  They
can of course use "git add -A dir/", but why should they?

Resurrected from graveyard, as I thought it was a worthwhile thing
to do in the longer term; waiting for comments.

* jc/maint-rev-list-topo-doc (2012-08-15) 1 commit
  (merged to 'next' on 2012-08-20 at 0f669d2)
 + rev-list docs: clarify --topo-order description

(Originally merged to 'next' on 2012-08-18)

It was unclear what "--topo-order" was really about in the
documentation. It is not just about "children before parent", but
also about "don't mix lineages".

Will merge to 'master' as part of the first batch.

* bc/receive-pack-stdout-protection (2012-08-06) 2 commits
  (merged to 'next' on 2012-08-20 at b1b0d18)
 + receive-pack: do not leak output from auto-gc to standard output
 + t/t5400: demonstrate breakage caused by informational message from prune

(Originally merged to 'next' on 2012-08-07)

When "git push" triggered the automatic gc on the receiving end, a
message from "git prune" that said it was removing cruft leaked to
the standard output, breaking the communication protocol.

Will merge to 'master' as part of the second batch.

* bc/prune-info (2012-08-07) 1 commit
  (merged to 'next' on 2012-08-20 at 1bc9e66)
 + prune.c: only print informational message in show_only or verbose mode

Teach "git prune" without "-v" to be silent about leftover temporary files.

* jc/tag-doc (2012-08-06) 1 commit
  (merged to 'next' on 2012-08-20 at 9eb658e)
 + Documentation: do not mention .git/refs/* directories

(Originally merged to 'next' on 2012-08-18)

Our documentation used to assume having files in .git/refs/*
directories was the only to have branches and tags, but that is not
true for quite some time.

Will merge to 'master' as part of the first batch.

* jk/docs-docbook-monospace-display (2012-08-07) 1 commit
  (merged to 'next' on 2012-08-20 at 0ed30dc)
 + docs: monospace listings in docbook output

(Originally merged to 'next' on 2012-08-18)

The documentation in the TeXinfo format was using indented output
for materials meant to be examples that are better typeset in
monospace.

Will merge to 'master' as part of the second batch.

* jc/maint-protect-sh-from-ifs (2012-08-08) 1 commit
  (merged to 'next' on 2012-08-20 at 8b00562)
 + sh-setup: protect from exported IFS

When the user exports a non-default IFS without HT, scripts that
rely on being able to parse "ls-files -s | while read a b c..."
start to fail.  Protect them from such a misconfiguration.

* jk/check-docs-update (2012-08-08) 8 commits
  (merged to 'next' on 2012-08-20 at d51021d)
 + check-docs: get documented command list from Makefile
 + check-docs: drop git-help special-case
 + check-docs: list git-gui as a command
 + check-docs: factor out command-list
 + command-list: mention git-credential-* helpers
 + command-list: add git-sh-i18n
 + check-docs: update non-command documentation list
 + check-docs: mention gitweb specially

(Originally merged to 'next' on 2012-08-18)

Simplify "make check-docs" implementation and update its coverage.

Will merge to 'master' as part of the first batch.

* js/gitweb-path-info-unquote (2012-08-15) 1 commit
  (merged to 'next' on 2012-08-20 at a4aa740)
 + gitweb: URL-decode $my_url/$my_uri when stripping PATH_INFO

(Originally merged to 'next' on 2012-08-15)

Stripping of PATH_INFO in gitweb did not take url style quoting into
account, failing to notice directories with funny characters e.g. SP
in their paths.

Will merge to 'master' as part of the first batch.

* mg/rebase-i-onto-reflog-in-full (2012-08-10) 1 commit
  (merged to 'next' on 2012-08-20 at f671bd2)
 + rebase -i: use full onto sha1 in reflog

The reflog entries left by "git rebase" and "git rebase -i" were
inconsistent.

* mz/empty-rebase-test (2012-08-09) 1 commit
  (merged to 'next' on 2012-08-20 at 53e2419)
 + add tests for 'git rebase --keep-empty'

* jc/capabilities (2012-08-13) 3 commits
  (merged to 'next' on 2012-08-20 at 1976e47)
 + fetch-pack: mention server version with verbose output
 + parse_feature_request: make it easier to see feature values
 + fetch-pack: do not ask for unadvertised capabilities
 (this branch uses jk/version-string.)

Some capabilities were asked by fetch-pack even when upload-pack did
not advertise that they are available.  Fix fetch-pack not to do so.

* pw/p4-use-client-spec-branch-detection (2012-08-20) 5 commits
 - git p4: make branch detection work with --use-client-spec
 - git p4: do wildcard decoding in stripRepoPath
 - git p4: set self.branchPrefixes in initialization
 - git p4 test: add broken --use-client-spec --detect-branches tests
 - git p4 test: move client_view() function to library

Will merge to 'next' and soon to 'master'.

* jc/maint-push-refs-all (2012-08-07) 2 commits
 - get_fetch_map(): tighten checks on dest refs
 - fetch/push: allow refs/*:refs/*

Allows pushing and fetching refs/stash.
Need to send it out to the list for review.

* jk/version-string (2012-08-10) 3 commits
  (merged to 'next' on 2012-08-20 at 6d207bb)
 + do not send client agent unless server does first
 + send-pack: fix capability-sending logic
 + include agent identifier in capability string
 (this branch is used by jc/capabilities.)

(Originally merged to 'next' on 2012-08-10)

Leftover bits from the "git version" code restructuring, that give
us an ability to expose the Git version over the wire in the
protocol exchange. But we do so carefully only to the other end that
understands it.

Will merge to 'master' as part of the third batch.

* js/grep-patterntype-config (2012-08-03) 1 commit
  (merged to 'next' on 2012-08-20 at 39a0431)
 + grep: add a grep.patternType configuration setting

(Originally merged to 'next' on 2012-08-09)

"grep" learned to use a non-standard pattern type by default if a
configuration variable tells it to.

Will merge to 'master' as part of the second batch.

* mm/die-with-dashdash-help (2012-08-03) 1 commit
  (merged to 'next' on 2012-08-20 at ebe0e1a)
 + setup: clarify error messages for file/revisions ambiguity

(Originally merged to 'next' on 2012-08-09)

Reword error messages.

Will merge to 'master' as part of the first batch.

* tr/merge-recursive-flush (2012-08-03) 1 commit
  (merged to 'next' on 2012-08-20 at 00aeb19)
 + merge-recursive: eliminate flush_buffer() in favor of write_in_full()

(Originally merged to 'next' on 2012-08-09)

Remove unnecessary code.

Will merge to 'master' as part of the first batch.

* tr/void-diff-setup-done (2012-08-03) 1 commit
  (merged to 'next' on 2012-08-20 at 2f21f63)
 + diff_setup_done(): return void

(Originally merged to 'next' on 2012-08-09)

Remove unnecessary code.

Will merge to 'master' as part of the first batch.

* mk/test-seq (2012-08-04) 1 commit
  (merged to 'next' on 2012-08-20 at c373e0e)
 + tests: Introduce test_seq
 (this branch is used by ab/diff-write-incomplete-line.)

(Originally merged to 'next' on 2012-08-06)

Add a compatibility/utility function to the test framework. 

Will merge to 'master' as part of the first batch.

* ab/diff-write-incomplete-line (2012-08-05) 1 commit
  (merged to 'next' on 2012-08-20 at e28b804)
 + Fix '\ No newline...' annotation in rewrite diffs
 (this branch uses mk/test-seq.)

(Originally merged to 'next' on 2012-08-07)

The output from "git diff -B" for a file that ends with an
incomplete line did not put "\ No newline..." on a line of its own.

Will merge to 'master' as part of the second batch.

* pg/maint-apply-remove-unused-variable (2012-08-05) 1 commit
  (merged to 'next' on 2012-08-20 at 260975b)
 + apply: delete unused deflate_origlen from patch struct

(Originally merged to 'next' on 2012-08-05)

Remove an unused field.
Will merge to 'master' as part of the first batch.

* tg/index-v5 (2012-08-17) 13 commits
 - p0002-index.sh: add perf test for the index formats
 - update-index.c: rewrite index when index-version is given
 - Write resolve-undo data for index-v5
 - Write index-v5 cache-tree data
 - Write index-v5
 - Read cache-tree in index-v5
 - Read resolve-undo data
 - Read index-v5
 - Make in-memory format aware of stat_crc
 - Add documentation of the index-v5 file format
 - t2104: Don't fail for index versions other than [23]
 - read-cache.c: Re-read index if index file changed
 - Move index v2 specific functions to their own file

A GSoC project, queued here primarily to give people an easier
access to the state of the last posted version.

* nd/index-errno (2012-08-06) 1 commit
  (merged to 'next' on 2012-08-20 at 34076c6)
 + read_index_from: remove bogus errno assignments

(Originally merged to 'next' on 2012-08-06)

Assignments to errno before calling system functions that used to
matter in the old code were left behind after the code structure
changed sufficiently to make them useless.

Will merge to 'master' as part of the first batch.

* jc/maint-sane-execvp-notdir (2012-07-31) 1 commit
  (merged to 'next' on 2012-08-20 at 0d76cf2)
 + sane_execvp(): ignore non-directory on $PATH

(Originally merged to 'next' on 2012-08-09)

"git foo" errored out with "Not a directory" when the user had a non
directory on $PATH, and worse yet it masked an alias "foo" to run.

Will merge to 'master' as part of the third batch.

* tr/maint-send-email-2047 (2012-07-31) 1 commit
  (merged to 'next' on 2012-08-20 at cf5ee1c)
 + send-email: improve RFC2047 quote parsing

(Originally merged to 'next' on 2012-08-09)

"git send-email" did not unquote encoded words that appear on the
header correctly, and lost "_" from strings.

Will merge to 'master' as part of the first batch.

* cw/cherry-pick-allow-empty-message (2012-08-06) 1 commit
  (merged to 'next' on 2012-08-20 at 0dc0590)
 + cherry-pick: add --allow-empty-message option

(Originally merged to 'next' on 2012-08-09)

"git cherry-pick" by default stops when it sees a commit without any
log message.  The "--allow-empty-message" option can be used to
silently proceed.

Will merge to 'master' as part of the third batch.

* ms/git-svn-1.7 (2012-08-02) 20 commits
  (merged to 'next' on 2012-08-21 at ae8aff9)
 + git-svn: remove ad-hoc canonicalizations
 + git-svn: canonicalize newly-minted URLs
 + git-svn: introduce add_path_to_url function
 + git-svn: canonicalize earlier
 + git-svn: replace URL escapes with canonicalization
 + git-svn: attempt to mimic SVN 1.7 URL canonicalization
 + t9107: fix typo
 + t9118: workaround inconsistency between SVN versions
 + Git::SVN{,::Ra}: canonicalize earlier
 + git-svn: path canonicalization uses SVN API
 + Git::SVN::Utils: remove irrelevant comment
 + git-svn: add join_paths() to safely concatenate paths
 + git-svn: factor out _collapse_dotdot function
 + git-svn: use SVN 1.7 to canonicalize when possible
 + git-svn: move canonicalization to Git::SVN::Utils
 + use Git::SVN{,::RA}->url accessor globally
 + use Git::SVN->path accessor globally
 + Git::SVN::Ra: use accessor for URLs
 + Git::SVN: use accessor for URLs internally
 + Git::SVN: use accessors internally for path

A series by Michael Schwern via Eric to update git-svn to revamp the
way URLs are internally passed around, to make it work with SVN 1.7.

Will merge to 'master' as part of the first batch.

* jc/maint-t7406-rev-parse-max-count-huh (2012-07-30) 1 commit
  (merged to 'next' on 2012-08-20 at 3e2598a)
 + t7406: fix misleading "rev-parse --max-count=1 HEAD"

(Originally merged to 'next' on 2012-07-30)

Test clean-up, with no behaviour change.
Will merge to 'master' as part of the second batch.

* jk/maint-diff-nul40-as-sentinel (2012-07-29) 1 commit
 + diff: do not use null sha1 as a sentinel value
 (this branch is used by jk/maint-null-in-trees.)

"git diff" had a confusion between taking data from a path in the
working tree and taking data from an object that happens to have
name 0{40} recorded in a tree.

* mz/cherry-code-cleanup (2012-07-29) 3 commits
  (merged to 'next' on 2012-08-20 at bfb0457)
 + cherry: remove redundant check for merge commit
 + cherry: don't set ignored rev_info options
 + remove unnecessary parameter from get_patch_ids()

Minor code clean-up on the cherry-pick codepath.

* jc/maint-config-exit-status (2012-07-30) 1 commit
  (merged to 'next' on 2012-08-20 at e18ddd8)
 + config: "git config baa" should exit with status 1

(Originally merged to 'next' on 2012-07-30)

The exit status code from "git config" was way overspecified while
being incorrect.  Update the implementation to give the documented
status for a case that was documented, and introduce a new code for
"all other errors".

Will merge to 'master' as part of the third batch.

* jk/maint-null-in-trees (2012-07-29) 2 commits
  (merged to 'next' on 2012-08-20 at 5bc2c49)
 + fsck: detect null sha1 in tree entries
 + do not write null sha1s to on-disk index
 (this branch uses jk/maint-diff-nul40-as-sentinel.)

(Originally merged to 'next' on 2012-07-30)

We do not want a link to 0{40} object stored anywhere in our objects.

Will merge to 'master' as part of the second batch.

* sz/submodule-force-update (2012-07-25) 1 commit
 - Make 'git submodule update --force' always check out submodules.

We may want a documentation update and a few tests.

Kicked back to 'pu'.

* jc/test-prereq (2012-08-04) 8 commits
  (merged to 'next' on 2012-08-20 at dd44c4a)
 + fixup! t3910: use the UTF8_NFD_TO_NFC test prereq
 + t3910: use the UTF8_NFD_TO_NFC test prereq
 + test-lib: provide UTF8 behaviour as a prerequisite
 + t0050: use the SYMLINKS test prereq
 + t0050: use the CASE_INSENSITIVE_FS test prereq
 + test-lib: provide case insensitivity as a prerequisite
 + test: allow prerequisite to be evaluated lazily
 + test: rename $satisfied to $satisfied_prereq

(Originally merged to 'next' on 2012-08-04)

Teaches the test framework to probe rarely used prerequistes lazily,
and make use of it for detecting SYMLINKS, CASE_INSENSITIVE_FS and
NKD/NKC MacOS x gotcha.

Will merge to 'master' as part of the first batch.

* da/difftool-updates (2012-08-21) 13 commits
  (merged to 'next' on 2012-08-21 at 332afe4)
 + difftool: silence warning
  (merged to 'next' on 2012-08-20 at 2fecd90)
 + Add Code Compare v2.80.4 as a merge / diff tool for Windows
 + mergetool,difftool: Document --tool-help consistently
 + difftool: Disable --symlinks on cygwin
 + difftool: Handle compare() returning -1
 + difftool: Wrap long lines for readability
 + difftool: Check all return codes from compare()
 + difftool: Handle finding mergetools/ in a path with spaces
 + difftool: Use symlinks when diffing against the worktree
 + difftool: Call the temp directory "git-difftool"
 + difftool: Move option values into a hash
 + difftool: Eliminate global variables
 + difftool: Simplify print_tool_help()

(Originally merged to 'next' on 2012-08-10)

"git difftool --dir-diff" learned to use symbolic links to prepare
temporary copy of the working tree when available.

Will merge to 'master' as part of the second batch.

* jk/no-more-pre-exec-callback (2012-06-05) 1 commit
 - pager: drop "wait for output to run less" hack

(Originally merged to 'next' on 2012-07-23)

Will defer until the end of the 2012,
waiting for older "less" to go extinct.

* mm/push-default-switch-warning (2012-06-24) 1 commit
  (merged to 'next' on 2012-08-20 at 553e6c0)
 + push: start warning upcoming default change for push.default

(Originally merged to 'next' on 2012-06-26)

In the next major release, we will switch "git push [$there]" that
does not say what to push from the traditional "matching" to the
updated "simple" semantics, that pushes the current branch to the
branch with the same name only when the current branch is set to
integrate with that remote branch (all other cases will error out).

Will merge to 'master' as part of the second batch.

--------------------------------------------------
[Discarded]

* jc/sanitize-nkd-lazy-iconv-open (2012-07-31) 1 commit
 . macos: lazily initialize iconv

Teach the code that works around NKD/NKC gotcha on MacOS to call
iconv_open() only when it is necessary, in the hope of avoiding
set-up overhead.  It turns out that there was no noticeable
improvements.

^ permalink raw reply	[relevance 5%]

* What's cooking in git.git (Aug 2012, #06; Sun, 19)
@ 2012-08-20  7:00  5% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2012-08-20  7:00 UTC (permalink / raw)
  To: git; +Cc: Eric Wong, Pete Wyckoff, Luke Diamand, Erik Faye-Lund,
	Stefan Zager

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'pu' (proposed updates) while commits prefixed with '+' are in 'next'.

Now 1.7.12 is out, we will have a few days of calming down period on
the 'master' front, just in case we have to deal with brown paper
bag post-release fixes, and then start getting the topics that have
been cooking on the 'next' branch graduate to the 'master', perhaps
starting on coming Wednesday.

For this cycle, we already have fairly well cooked topics, many of
which are on 'next', and the git-svn updates for svn 1.7 by Michael
G Schwern is also a candidate for early graduation, provided if Eric
is OK with the series (I'd need to double check with him).  There
also were some topics that were almost there already during their
review discussions but somehow lost momentum when we got distracted,
and I think most of them would be ready fairly quickly if the
respective owners of the topics (you know who you are) can find time
to put some work into them.

So I'm planning to keep this cycle reasonably short and aim for
tagging the result as 1.8.0 at the end of the 9th week, on October
21st, after which I'd disappear for a few weeks.

http://tinyurl.com/gitCal is where you can always find my rough
tagging schedule at.

You can find the changes described here in the integration branches of the
repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* kk/maint-for-each-ref-multi-sort (2012-08-19) 2 commits
 - for-each-ref: Fix sort with multiple keys
 - t6300: test sort with multiple keys

A small and sensible fix, even though the accompanying test seems to
touch too many unrelated existing ones needlessly, which may want to
be fixed by a reroll.

--------------------------------------------------
[Stalled]

* mz/rebase-range (2012-07-18) 7 commits
 . rebase (without -p): correctly calculate patches to rebase
 . rebase -p: don't request --left-right only to ignore left side
 . rebase -p: use --cherry-mark for todo file
 . git-rebase--interactive.sh: look up subject in add_pick_line
 . git-rebase--interactive: group all $preserve_merges code
 . git-rebase--interactive.sh: extract function for adding "pick" line
 . git-rebase--am.sh: avoid special-casing --keep-empty

Expecting a reroll.

Performance concerns from Windows folks.  Also the series lacks
proper sign-offs.

* jl/submodule-rm (2012-07-05) 2 commits
 - rm: remove submodules from the index and the .gitmodules file
 - rm: don't fail when removing populated submodules

Expecting a reroll.

* lt/commit-tree-guess-utf-8 (2012-06-28) 1 commit
 - commit/commit-tree: correct latin1 to utf-8

Teaches "git commit" and "git commit-tree" the "we are told to use
utf-8 in log message, but this does not look like utf-8---attempt to
pass it through convert-from-latin1-to-utf8 and see if it makes
sense" heuristics "git mailinfo" already uses.

A draft from Linus received privately without a log message.
Expecting a reroll.

* mb/remote-default-nn-origin (2012-07-11) 6 commits
 - Teach get_default_remote to respect remote.default.
 - Test that plain "git fetch" uses remote.default when on a detached HEAD.
 - Teach clone to set remote.default.
 - Teach "git remote" about remote.default.
 - Teach remote.c about the remote.default configuration setting.
 - Rename remote.c's default_remote_name static variables.

When the user does not specify what remote to interact with, we
often attempt to use 'origin'.  This can now be customized via a
configuration variable.

Expecting a reroll.
"The first remote becomes the default" bit is better done as a
separate step.

* jc/split-blob (2012-04-03) 6 commits
 - chunked-object: streaming checkout
 - chunked-object: fallback checkout codepaths
 - bulk-checkin: support chunked-object encoding
 - bulk-checkin: allow the same data to be multiply hashed
 - new representation types in the packstream
 - packfile: use varint functions

Not ready.

I finished the streaming checkout codepath, but as explained in
127b177 (bulk-checkin: support chunked-object encoding, 2011-11-30),
these are still early steps of a long and painful journey. At least
pack-objects and fsck need to learn the new encoding for the series
to be usable locally, and then index-pack/unpack-objects needs to
learn it to be used remotely.

Given that I heard a lot of noise that people want large files, and
that I was asked by somebody at GitTogether'11 privately for an
advice on how to pay developers (not me) to help adding necessary
support, I am somewhat dissapointed that the original patch series
that was sent long time ago still remains here without much comments
and updates from the developer community. I even made the interface
to the logic that decides where to split chunks easily replaceable,
and I deliberately made the logic in the original patch extremely
stupid to entice others, especially the "bup" fanbois, to come up
with a better logic, thinking that giving people an easy target to
shoot for, they may be encouraged to help out. The plan is not
working :-<.

--------------------------------------------------
[Cooking]

* hv/coding-guidelines (2012-08-15) 1 commit
  (merged to 'next' on 2012-08-18 at 5a78f2c)
 + Documentation/CodingGuidelines: spell out more shell guidelines

In earlier days, "imitate the style in the neibouring code" was
sufficient to keep the coherent style, but over time some parts of
the codebase have drifted enough to make it ineffective.

Will merge to 'master' as part of the first batch.

* jc/daemon-access-hook (2012-08-15) 1 commit
 - daemon: --access-hook option

Allow an external command to tell git-daemon to decline service
based on the client address, repository path, etc.

Will merge to 'next'.

* jc/send-email-reconfirm (2012-08-14) 1 commit
 - send-email: validate & reconfirm interactive responses

Validate interactive input to "git send-email" to avoid common
mistakes such as saying "y<RETURN>" to sender mail address whose
prompt is given with a correctly guessed default.

Will merge to 'next'.

* pw/p4-submit-conflicts (2012-08-16) 12 commits
 - git p4: add submit --prepare-p4-only option
 - git p4: add submit --dry-run option
 - git p4: accept -v for --verbose
 - git p4: revert deleted files after submit cancel
 - git p4: rearrange submit template construction
 - git p4: test clean-up after failed submit, fix added files
 - git p4: standardize submit cancel due to unchanged template
 - git p4: move conflict prompt into run, use [c]ontinue and [q]uit
 - git p4: remove submit failure options [a]pply and [w]rite
 - git p4: gracefully fail if some commits could not be applied
 - git p4 test: use p4d -L option to suppress log messages
 - git p4 test: remove bash-ism of combined export/assignment

I saw Pete and Luke going back and forth collaborating, so I take
that this may still be rerolled---if not, please holler.

* tx/relative-in-the-future (2012-08-16) 2 commits
 - date: show relative dates in the future
 - date: refactor the relative date logic from presentation

Not my itch; rewritten an earlier submission by Tom Xue into
somewhat more maintainable form, though it breaks existing i18n.

* ef/win32-cred-helper (2012-08-16) 1 commit
 - contrib: add win32 credential-helper

Credential helper for Win32 (is this GUI???).

Will merge to 'next'.

* jc/maint-abbrev-option-cli (2012-08-16) 1 commit
  (merged to 'next' on 2012-08-18 at e002006)
 + gitcli: describe abbreviation of long options

We did not document that many commands take unique prefix
abbreviations of long options (e.g. "--option" may be the only flag
that the command accepts that begin with "--opt", in which case you
can give "--opt") anywhere easy to find for new people.

Will merge to 'master' as part of the first batch.

* mv/pull-r-for-rebase (2012-08-17) 1 commit
  (merged to 'next' on 2012-08-18 at e7d885b)
 + man: git pull -r is a short for --rebase

Minor documentation update.

Will merge to 'master' as part of the first batch.

* rr/precompose-utf8-cleanup (2012-08-17) 1 commit
 - cleanup precompose_utf8

A style and code cleanup.
Will merge to 'next'.

* jc/doc-git-updates (2012-08-17) 1 commit
  (merged to 'next' on 2012-08-18 at f24913b)
 + Documentation: update the introductory section

Will merge to 'master' as part of the first batch.

* fa/remote-svn (2012-08-17) 16 commits
 - Add a test script for remote-svn
 - remote-svn: add marks-file regeneration
 - Add a svnrdump-simulator replaying a dump file for testing
 - remote-svn: add incremental import
 - remote-svn: Activate import/export-marks for fast-import
 - Create a note for every imported commit containing svn metadata
 - vcs-svn: add fast_export_note to create notes
 - Allow reading svn dumps from files via file:// urls
 - remote-svn, vcs-svn: Enable fetching to private refs
 - When debug==1, start fast-import with "--stats" instead of "--quiet"
 - Add documentation for the 'bidi-import' capability of remote-helpers
 - Connect fast-import to the remote-helper via pipe, adding 'bidi-import' capability
 - Add argv_array_detach and argv_array_free_detached
 - Add svndump_init_fd to allow reading dumps from arbitrary FDs
 - Integrate remote-svn into svn-fe/Makefile
 - Implement a remote helper for svn in C
 (this branch is used by fa/vcs-svn.)

* fa/vcs-svn (2012-08-18) 7 commits
 - fixup: add missing cast to vcs-svn/fast_export.c
 - fixup - no old style defn
 - vcs-svn: remove repo_tree
 - vcs-svn/svndump: rewrite handle_node(), begin|end_revision()
 - vcs-svn/svndump: restructure node_ctx, rev_ctx handling
 - svndump: move struct definitions to .h
 - vcs-svn: Add sha1 calculation to fast_export and line_buffer
 (this branch uses fa/remote-svn.)

I haven't seen many comments and reviews from people involved in the
area, other than DBarr's worries on teaching exporter (which is
supposed to be Git agnostic, as its output "fast-import" format is
meant to be usable by others) to compute object names in Git way.

It is somewhat hard for me to judge these two series.

* mh/maint-config-doc-proxy-command (2012-08-18) 2 commits
 - git-config doc: unconfuse an example
 - git-config.txt: fix example

Will merge to 'next'.

* ph/stash-rerere (2012-08-17) 2 commits
 - stash: invoke rerere in case of conflict
 - test: git-stash conflict sets up rerere

"git stash" internally used "git merge-recursive" backend, which did
not trigger "rerere" upon conflicts unlike other mergy operations.

Will merge to 'next'.

* hv/submodule-path-unmatch (2012-08-14) 1 commit
 - Let submodule command exit with error status if path does not exist

As the title says.
Will merge to 'next'.

* jc/add-delete-default (2012-08-13) 1 commit
 - git add: notice removal of tracked paths by default

"git add dir/" updated modified files and added new files, but does
not notice removed files, which may be "Huh?" to some users.  They
can of course use "git add -A dir/", but why should they?

Resurrected from graveyard, as I thought it was a worthwhile thing
to do in the longer term; waiting for comments.

* jc/maint-rev-list-topo-doc (2012-08-15) 1 commit
  (merged to 'next' on 2012-08-18 at d1f54d9)
 + rev-list docs: clarify --topo-order description

It was unclear what "--topo-order" was really about in the
documentation. It is not just about "children before parent", but
also about "don't mix lineages".

Will merge to 'master' as part of the first batch.

* bc/receive-pack-stdout-protection (2012-08-06) 2 commits
  (merged to 'next' on 2012-08-07 at d7aa316)
 + receive-pack: do not leak output from auto-gc to standard output
 + t/t5400: demonstrate breakage caused by informational message from prune

When "git push" triggered the automatic gc on the receiving end, a
message from "git prune" that said it was removing cruft leaked to
the standard output, breaking the communication protocol.

Will merge to 'master' as part of the second batch.

* bc/prune-info (2012-08-07) 1 commit
 - prune.c: only print informational message in show_only or verbose mode

Teach "git prune" without "-v" to be silent about leftover temporary files.

Will merge to 'next'.

* jc/tag-doc (2012-08-06) 1 commit
  (merged to 'next' on 2012-08-18 at 9fe64b2)
 + Documentation: do not mention .git/refs/* directories

Our documentation used to assume having files in .git/refs/*
directories was the only to have branches and tags, but that is not
true for quite some time.

Will merge to 'master' as part of the first batch.

* jk/docs-docbook-monospace-display (2012-08-07) 1 commit
  (merged to 'next' on 2012-08-18 at 7e02bf8)
 + docs: monospace listings in docbook output

The documentation in the TeXinfo format was using indented output
for materials meant to be examples that are better typeset in
monospace.

Will merge to 'master' as part of the second batch.

* jc/maint-protect-sh-from-ifs (2012-08-08) 1 commit
 - sh-setup: protect from exported IFS

When the user exports a non-default IFS without HT, scripts that
rely on being able to parse "ls-files -s | while read a b c..."
start to fail.  Protect them from such a misconfiguration.

Will merge to 'next'.

* jk/check-docs-update (2012-08-08) 8 commits
  (merged to 'next' on 2012-08-18 at 4409d2e)
 + check-docs: get documented command list from Makefile
 + check-docs: drop git-help special-case
 + check-docs: list git-gui as a command
 + check-docs: factor out command-list
 + command-list: mention git-credential-* helpers
 + command-list: add git-sh-i18n
 + check-docs: update non-command documentation list
 + check-docs: mention gitweb specially

Simplify "make check-docs" implementation and update its coverage.

Will merge to 'master' as part of the first batch.

* js/gitweb-path-info-unquote (2012-08-15) 1 commit
  (merged to 'next' on 2012-08-15 at 844da17)
 + gitweb: URL-decode $my_url/$my_uri when stripping PATH_INFO

Stripping of PATH_INFO in gitweb did not take url style quoting into
account, failing to notice directories with funny characters e.g. SP
in their paths.

Will merge to 'master' as part of the first batch.

* mg/rebase-i-onto-reflog-in-full (2012-08-10) 1 commit
 - rebase -i: use full onto sha1 in reflog

The reflog entries left by "git rebase" and "git rebase -i" were
inconsistent.

Will merge to 'next'.

* mz/empty-rebase-test (2012-08-09) 1 commit
 - add tests for 'git rebase --keep-empty'

Will merge to 'next'.

* jc/capabilities (2012-08-13) 3 commits
 - fetch-pack: mention server version with verbose output
 - parse_feature_request: make it easier to see feature values
 - fetch-pack: do not ask for unadvertised capabilities
 (this branch uses jk/version-string.)

Some capabilities were asked by fetch-pack even when upload-pack did
not advertise that they are available.  Fix fetch-pack not to do so.

Will merge to 'next'.

* pw/p4-use-client-spec-branch-detection (2012-08-11) 5 commits
 - git p4: make branch detection work with --use-client-spec
 - git p4: do wildcard decoding in stripRepoPath
 - git p4: set self.branchPrefixes in initialization
 - git p4 test: add broken --use-client-spec --detect-branches tests
 - git p4 test: move client_view() function to library

Will merge to 'next' and soon to 'master'.

* jc/maint-push-refs-all (2012-08-07) 2 commits
 - get_fetch_map(): tighten checks on dest refs
 - fetch/push: allow refs/*:refs/*

Allows pushing and fetching refs/stash.
Need to send it out to the list for review.

* jk/version-string (2012-08-10) 3 commits
  (merged to 'next' on 2012-08-10 at d8dcb00)
 + do not send client agent unless server does first
 + send-pack: fix capability-sending logic
  (merged to 'next' on 2012-08-09 at 64dc91b)
 + include agent identifier in capability string
 (this branch is used by jc/capabilities.)

Leftover bits from the "git version" code restructuring, that give
us an ability to expose the Git version over the wire in the
protocol exchange. But we do so carefully only to the other end that
understands it.

Will merge to 'master' as part of the third batch.

* js/grep-patterntype-config (2012-08-03) 1 commit
  (merged to 'next' on 2012-08-09 at 1a08d6c)
 + grep: add a grep.patternType configuration setting

"grep" learned to use a non-standard pattern type by default if a
configuration variable tells it to.

Will merge to 'master' as part of the second batch.

* mm/die-with-dashdash-help (2012-08-03) 1 commit
  (merged to 'next' on 2012-08-09 at 1aae096)
 + setup: clarify error messages for file/revisions ambiguity

Reword error messages.

Will merge to 'master' as part of the first batch.

* tr/merge-recursive-flush (2012-08-03) 1 commit
  (merged to 'next' on 2012-08-09 at da826ec)
 + merge-recursive: eliminate flush_buffer() in favor of write_in_full()

Remove unnecessary code.

Will merge to 'master' as part of the first batch.

* tr/void-diff-setup-done (2012-08-03) 1 commit
  (merged to 'next' on 2012-08-09 at 668a46f)
 + diff_setup_done(): return void

Remove unnecessary code.

Will merge to 'master' as part of the first batch.

* mk/test-seq (2012-08-04) 1 commit
  (merged to 'next' on 2012-08-06 at 3f6917c)
 + tests: Introduce test_seq
 (this branch is used by ab/diff-write-incomplete-line.)

Add a compatibility/utility function to the test framework. 

Will merge to 'master' as part of the first batch.

* ab/diff-write-incomplete-line (2012-08-05) 1 commit
  (merged to 'next' on 2012-08-07 at dcf02ae)
 + Fix '\ No newline...' annotation in rewrite diffs
 (this branch uses mk/test-seq.)

The output from "git diff -B" for a file that ends with an
incomplete line did not put "\ No newline..." on a line of its own.

Will merge to 'master' as part of the second batch.

* pg/maint-apply-remove-unused-variable (2012-08-05) 1 commit
  (merged to 'next' on 2012-08-05 at aa9f5e9)
 + apply: delete unused deflate_origlen from patch struct

Remove unused field.
Will merge to 'master' as part of the first batch.

* tg/index-v5 (2012-08-17) 13 commits
 - p0002-index.sh: add perf test for the index formats
 - update-index.c: rewrite index when index-version is given
 - Write resolve-undo data for index-v5
 - Write index-v5 cache-tree data
 - Write index-v5
 - Read cache-tree in index-v5
 - Read resolve-undo data
 - Read index-v5
 - Make in-memory format aware of stat_crc
 - Add documentation of the index-v5 file format
 - t2104: Don't fail for index versions other than [23]
 - read-cache.c: Re-read index if index file changed
 - Move index v2 specific functions to their own file

A GSoC project, queued here primarily to give people an easier
access to the state of the last posted version.

* nd/index-errno (2012-08-06) 1 commit
  (merged to 'next' on 2012-08-06 at a9f2101)
 + read_index_from: remove bogus errno assignments

Assignments to errno before calling system functions that used to
matter in the old code were left behind after the code structure
changed sufficiently to make them useless.

Will merge to 'master' as part of the first batch.

* jc/maint-sane-execvp-notdir (2012-07-31) 1 commit
  (merged to 'next' on 2012-08-09 at 5dd4240)
 + sane_execvp(): ignore non-directory on $PATH

"git foo" errored out with "Not a directory" when the user had a non
directory on $PATH, and worse yet it masked an alias "foo" to run.

Will merge to 'master' as part of the third batch.

* jc/sanitize-nkd-lazy-iconv-open (2012-07-31) 1 commit
  (merged to 'next' on 2012-08-09 at 832c238)
 + macos: lazily initialize iconv

Teach the code that works around NKD/NKC gotcha on MacOS to call
iconv_open() only when it is necessary, in the hope of avoiding
set-up overhead.

Needs some work to rename functions
as mentioned by Linus in the discussion.

* tr/maint-send-email-2047 (2012-07-31) 1 commit
  (merged to 'next' on 2012-08-09 at 17dfe57)
 + send-email: improve RFC2047 quote parsing

"git send-email" did not unquote encoded words that appear on the
header correctly, and lost "_" from strings.

Will merge to 'master' as part of the first batch.

* cw/cherry-pick-allow-empty-message (2012-08-06) 1 commit
  (merged to 'next' on 2012-08-09 at eab95f6)
 + cherry-pick: add --allow-empty-message option

"git cherry-pick" by default stops when it sees a commit without any
log message.  The "--allow-empty-message" option can be used to
silently proceed.

Will merge to 'master' as part of the third batch.

* ms/git-svn-1.7 (2012-08-02) 20 commits
 - git-svn: remove ad-hoc canonicalizations
 - git-svn: canonicalize newly-minted URLs
 - git-svn: introduce add_path_to_url function
 - git-svn: canonicalize earlier
 - git-svn: replace URL escapes with canonicalization
 - git-svn: attempt to mimic SVN 1.7 URL canonicalization
 - t9107: fix typo
 - t9118: workaround inconsistency between SVN versions
 - Git::SVN{,::Ra}: canonicalize earlier
 - git-svn: path canonicalization uses SVN API
 - Git::SVN::Utils: remove irrelevant comment
 - git-svn: add join_paths() to safely concatenate paths
 - git-svn: factor out _collapse_dotdot function
 - git-svn: use SVN 1.7 to canonicalize when possible
 - git-svn: move canonicalization to Git::SVN::Utils
 - use Git::SVN{,::RA}->url accessor globally
 - use Git::SVN->path accessor globally
 - Git::SVN::Ra: use accessor for URLs
 - Git::SVN: use accessor for URLs internally
 - Git::SVN: use accessors internally for path

A series by Michael Schwern via Eric to update git-svn to revamp the
way URLs are internally passed around, to make it work with SVN 1.7.

Will merge to 'next' after pinging Eric to double check and then to 'master'.

* jc/maint-t7406-rev-parse-max-count-huh (2012-07-30) 1 commit
  (merged to 'next' on 2012-07-30 at 9b27acc)
 + t7406: fix misleading "rev-parse --max-count=1 HEAD"

Test clean-up, with no behaviour change.
Will merge to 'master' as part of the second batch.

* jk/maint-diff-nul40-as-sentinel (2012-07-29) 1 commit
 + diff: do not use null sha1 as a sentinel value
 (this branch is used by jk/maint-null-in-trees.)

"git diff" had a confusion between taking data from a path in the
working tree and taking data from an object that happens to have
name 0{40} recorded in a tree.

* mz/cherry-code-cleanup (2012-07-29) 3 commits
 - cherry: remove redundant check for merge commit
 - cherry: don't set ignored rev_info options
 - remove unnecessary parameter from get_patch_ids()

Minor code clean-up on the cherry-pick codepath.

Will merge to 'next'.

* jc/maint-config-exit-status (2012-07-30) 1 commit
  (merged to 'next' on 2012-07-30 at 8392da9)
 + config: "git config baa" should exit with status 1

The exit status code from "git config" was way overspecified while
being incorrect.  Update the implementation to give the documented
status for a case that was documented, and introduce a new code for
"all other errors".

Will merge to 'master' as part of the third batch.

* jk/maint-null-in-trees (2012-07-29) 2 commits
  (merged to 'next' on 2012-07-30 at 771c497)
 + fsck: detect null sha1 in tree entries
 + do not write null sha1s to on-disk index
 (this branch uses jk/maint-diff-nul40-as-sentinel.)

We do not want a link to 0{40} object stored anywhere in our objects.

Will merge to 'master' as part of the second batch.

* sz/submodule-force-update (2012-07-25) 1 commit
  (merged to 'next' on 2012-07-26 at 3bda2be)
 + Make 'git submodule update --force' always check out submodules.

We may want a documentation update and a few tests on top.

* jc/test-prereq (2012-08-04) 8 commits
  (merged to 'next' on 2012-08-04 at 6dd9156)
 + fixup! t3910: use the UTF8_NFD_TO_NFC test prereq
  (merged to 'next' on 2012-07-30 at b7c6949)
 + t3910: use the UTF8_NFD_TO_NFC test prereq
  (merged to 'next' on 2012-07-27 at 448cbbc)
 + test-lib: provide UTF8 behaviour as a prerequisite
 + t0050: use the SYMLINKS test prereq
 + t0050: use the CASE_INSENSITIVE_FS test prereq
 + test-lib: provide case insensitivity as a prerequisite
 + test: allow prerequisite to be evaluated lazily
 + test: rename $satisfied to $satisfied_prereq

Teaches the test framework to probe rarely used prerequistes lazily,
and make use of it for detecting SYMLINKS, CASE_INSENSITIVE_FS and
NKD/NKC MacOS x gotcha.

Will merge to 'master' as part of the first batch.

* da/difftool-updates (2012-08-10) 12 commits
  (merged to 'next' on 2012-08-10 at 4accbf6)
 + Add Code Compare v2.80.4 as a merge / diff tool for Windows
 + mergetool,difftool: Document --tool-help consistently
  (merged to 'next' on 2012-07-26 at 3263461)
 + difftool: Disable --symlinks on cygwin
 + difftool: Handle compare() returning -1
 + difftool: Wrap long lines for readability
 + difftool: Check all return codes from compare()
 + difftool: Handle finding mergetools/ in a path with spaces
  (merged to 'next' on 2012-07-23 at 96528a7)
 + difftool: Use symlinks when diffing against the worktree
 + difftool: Call the temp directory "git-difftool"
 + difftool: Move option values into a hash
 + difftool: Eliminate global variables
 + difftool: Simplify print_tool_help()

"git difftool --dir-diff" learned to use symbolic links to prepare
temporary copy of the working tree when available.

Will merge to 'master' as part of the second batch.

* jk/no-more-pre-exec-callback (2012-06-05) 1 commit
  (merged to 'next' on 2012-07-23 at fe59cb6)
 + pager: drop "wait for output to run less" hack

Will defer until the end of the 2012,
waiting for older "less" to go extinct.

* mm/push-default-switch-warning (2012-06-24) 1 commit
  (merged to 'next' on 2012-06-26 at fea512a)
 + push: start warning upcoming default change for push.default

Will merge to 'master' as part of the second batch.

^ permalink raw reply	[relevance 5%]

* What's cooking in git.git (Jun 2012, #08; Thu, 28)
@ 2012-06-28 23:35  1% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2012-06-28 23:35 UTC (permalink / raw)
  To: git; +Cc: Thomas Rast, Linus Torvalds, Jonathan Nieder, Jeff King

What's cooking in git.git (Jun 2012, #08; Thu, 28)
--------------------------------------------------

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'pu' (proposed updates) while commits prefixed with '+' are in 'next'.

The third batch of topics have graduated to 'master', and a handful
of topics have entered 'next' for developer testing.

You can find the changes described here in the integration branches of the
repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* fc/git-prompt-script (2012-06-19) 7 commits
  (merged to 'next' on 2012-06-25 at e690a02)
 + completion: respect $GIT_DIR
 + completion: warn people about duplicated function
 + completion: split __git_ps1 into a separate script
 + completion: remove executable mode
 + Merge branch 'fc/git-complete-helper' into fc/git-prompt-script
 + tests: add tests for the bash prompt functions in the completion script
 + tests: move code to run tests under bash into a helper library

Split a rather heavy-ish "git completion" script out to create a
separate "git prompting" script, to help lazy-autoloading of the
completion part while making prompting part always available.

* hv/submodule-update-nuke-submodules (2012-06-11) 1 commit
  (merged to 'next' on 2012-06-25 at bbfcd02)
 + update-index: allow overwriting existing submodule index entries

"git add" allows adding a regular file to the path where a submodule
used to exist, but "git update-index" does not allow an equivalent
operation to Porcelain writers.

* jc/rev-list-simplify-merges-first-parent (2012-06-13) 3 commits
  (merged to 'next' on 2012-06-25 at 4c5ffbe)
 + revision: ignore side parents while running simplify-merges
 + revision: note the lack of free() in simplify_merges()
 + revision: "simplify" options imply topo-order sort

When "git log" is given "--simplify-merges/by-decoration" together
with "--first-parent", the combination of these options makes the
simplification logic to use in-core commit objects that haven't been
examined for relevance, either producing incorrect result or taking
too long to produce any output.  Teach the simplification logic to
ignore commits that the first-parent traversal logic ignored when
both are in effect to work around the issue.

* jk/diff-no-index-pager (2012-06-15) 2 commits
  (merged to 'next' on 2012-06-21 at e2a2562)
 + do not run pager with diff --no-index --quiet
 + fix pager.diff with diff --no-index

"git diff --no-index" did not work with pagers correctly.

* js/submodule-relative (2012-06-14) 5 commits
  (merged to 'next' on 2012-06-25 at 310ed77)
 + t7400: avoid path mangling issues
 + submodule: fix handling of superproject origin URLs like foo, ./foo and ./foo/bar
 + submodule: fix sync handling of some relative superproject origin URLs
 + submodule: document failure to handle relative superproject origin URLs
 + submodule: additional regression tests for relative URLs

Teach "git submodule" deal with nested submodule structure where a
module is contained within a module whose origin is specified as a
relative URL to its superproject's origin.

* lk/more-helpful-status-hints (2012-06-14) 4 commits
  (merged to 'next' on 2012-06-25 at 6502d4b)
 + status: better advices when splitting a commit (during rebase -i)
 + status: don't suggest "git rm" or "git add" if not appropriate
 + t7512-status-help.sh: better advices for git status
 + wt-status.*: better advices for git status added

Give finer classification to various states of paths in conflicted
state and offer advice messages in the "git status" output.

* lk/rebase-i-x (2012-06-13) 1 commit
  (merged to 'next' on 2012-06-25 at 8252da2)
 + rebase -i: teach "--exec <cmd>"

Teach "-x <cmd>" to "rebase -i" to insert "exec <cmd>" after each
commit in the resulting history.

* mm/verify-filename-fix (2012-06-18) 2 commits
  (merged to 'next' on 2012-06-21 at d03dace)
 + verify_filename(): ask the caller to chose the kind of diagnosis
 + sha1_name: do not trigger detailed diagnosis for file arguments

"git diff COPYING HEAD:COPYING" gave a nonsense error message that
claimed that the treeish HEAD did not have COPYING in it.

* nd/exclude-workaround-top-heavy (2012-06-07) 3 commits
  (merged to 'next' on 2012-06-25 at 08429bb)
 + exclude: do strcmp as much as possible before fnmatch
 + dir.c: get rid of the wildcard symbol set in no_wildcard()
 + Unindent excluded_from_list()

Attempt to optimize matching with an exclude pattern with a deep
directory hierarchy by taking the part that specifies leading path
without wildcard literally.

* nd/stream-index-pack (2012-05-24) 4 commits
  (merged to 'next' on 2012-06-25 at 3084674)
 + index-pack: use streaming interface for collision test on large blobs
 + index-pack: factor out unpack core from get_data_from_pack
 + index-pack: use streaming interface on large blobs (most of the time)
 + index-pack: hash non-delta objects while reading from stream

Use streaming API to read from the object store to avoid having to hold
a large blob object in-core while running index-pack.

* nd/stream-pack-objects (2012-05-29) 1 commit
  (merged to 'next' on 2012-06-25 at fa91345)
 + pack-objects: use streaming interface for reading large loose blobs

"pack-objects" learned to read large loose blobs using the streaming API,
without the need to hold everything in core at once.

--------------------------------------------------
[New Topics]

* tb/sanitize-decomposed-utf-8-pathname (2012-06-25) 1 commit
 - git on Mac OS and precomposed unicode

Teaches git to normalize pathnames read from readdir(3) and all
arguments from the command line into precomposed UTF-8 (assuming
that they come as decomposed UTF-8) to work around issues on Mac OS.

I think there still are other places that need conversion
(e.g. paths that are read from stdin for some commands), but this
should be a step in the right direction.

Will merge to 'next'.

* cw/no-detaching-an-unborn (2012-06-26) 1 commit
 - git-checkout: disallow --detach on unborn branch

"git checkout --detach" when you are still on an unborn branch
should be forbidden, but it wasn't.

Will merge to 'next'.

* cw/rebase-i-root (2012-06-26) 2 commits
 - Add tests for rebase -i --root without --onto
 - rebase -i: support --root without --onto

"git rebase [-i] --root $tip" can now be used to rewrite all the
history down to the root.

Will merge to 'next'.

* js/fast-export-paths-with-spaces (2012-06-27) 1 commit
 - fast-export: quote paths with spaces

"git fast-export" produced an input stream for fast-import without
properly quoting pathnames when they contain SPs in them.

Will merge to 'next'.

* mm/mediawiki-file-attachments (2012-06-27) 5 commits
 - git-remote-mediawiki: import "File:" attachments
 - git-remote-mediawiki: split get_mw_pages into smaller functions
 - git-remote-mediawiki: send "File:" attachments to a remote wiki
 - git-remote-mediawiki: don't "use encoding 'utf8';"
 - git-remote-mediawiki: don't compute the diff when getting commit message
 (this branch uses mm/credential-plumbing.)

"mediawiki" remote helper (in contrib/) learned to handle file
attachments.

Will merge to 'next'.

* mz/rebase-no-mbox (2012-06-26) 4 commits
 - am: don't call mailinfo if $rebasing
 - am --rebasing: get patch body from commit, not from mailbox
 - rebase --root: print usage on too many args
 - rebase: don't source git-sh-setup twice

Teach "am --rebasing" codepath to grab authorship, log message and
the patch text directly out of existing commits.

Will merge to 'next'.

* pw/git-p4-tests (2012-06-27) 10 commits
 - git p4 test: fix badp4dir test
 - git p4 test: split up big t9800 test
 - git p4 test: cleanup_git should make a new $git
 - git p4 test: copy source indeterminate
 - git p4 test: check for error message in failed test
 - git p4 test: rename some "git-p4 command" strings
 - git p4 test: never create default test repo
 - git p4 test: simplify quoting involving TRASH_DIRECTORY
 - git p4 test: use real_path to resolve p4 client symlinks
 - git p4 test: wait longer for p4d to start and test its pid

More "git p4" tests.

Will merge to 'next'.

* rj/platform-pread-may-be-thread-unsafe (2012-06-26) 1 commit
  (merged to 'next' on 2012-06-28 at ce5f79f)
 + index-pack: Disable threading on cygwin

On Cygwin, the platform pread(3) is not thread safe, just like our
own compat/ emulation, and cannot be used in the index-pack program.

* jc/refactor-diff-stdin (2012-06-28) 3 commits
 - diff-index.c: "git diff" has no need to read blob from the standard input
 - diff-index.c: unify handling of command line paths
 - diff-index.c: do not pretend paths are pathspecs

Due to the way "git diff --no-index" is bolted onto by touching the
low level code that is shared with the rest of the "git diff" code,
even though it has to work in a very different way, any comparison
that involves a file "-" at the root level incorrectly tried to read
from the standard input.  This cleans up the no-index codepath
further to remove code that reads from the standard input from the
core side, which is never necessary when git is running its usual
diff operation.

Will merge to 'next', and later down to older maintenance releases.

* mz/empty-rebase-test (2012-06-27) 1 commit
 - add test case for rebase of empty commit

We did not have test to make sure "git rebase" without extra options
filters out an empty commit in the original history.

* cw/help-over-network (2012-06-28) 2 commits
 - Allow help.htmlpath to be a URL prefix
 - Add config variable to set HTML path for git-help --web

"git help -w $cmd" can show HTML version of documentation for
"git-$cmd" by setting help.htmlpath to somewhere other than the
default location where the build procedure installs them locally;
the variable can even point at a http:// URL.

* lt/commit-tree-guess-utf-8 (2012-06-28) 1 commit
 - commit/commit-tree: correct latin1 to utf-8

Teaches "git commit" and "git commit-tree" the "we are told to use
utf-8 in log message, but this does not look like utf-8---attempt to
pass it through convert-from-latin1-to-utf8 and see if it makes
sense" heuristics "git mailinfo" already uses.

A draft from Linus received privately without a log message.
Hopefully it will be rerolled.

* jc/test-lib-source-build-options-early (2012-06-24) 1 commit
 - test-lib: reorder and include GIT-BUILD-OPTIONS a lot earlier
 (this branch uses vr/use-our-perl-in-tests.)

Reorders t/test-lib.sh so that we dot-source GIT-BUILD-OPTIONS that
records the shell and Perl the user told us to use with Git a lot
early, so that test-lib.sh script itself can use "$PERL_PATH" in
one of its early operations.

Needs to be eyeballed by people who run tests with exotic options
like valgrind, --root=/dev/shm/somewhere, etc.

--------------------------------------------------
[Stalled]

* db/vcs-svn (2012-06-01) 6 commits
 - vcs-svn: drop no-op reset methods
 - vcs-svn: fix signedness warnings
 - vcs-svn: prefer strstr over memmem
 - vcs-svn: prefer constcmp to prefixcmp
 - vcs-svn: simplify cleanup in apply_one_window()
 - vcs-svn: fix clang-analyzer error

Waiting for Jonathan's clean-up offered earlier.

* jc/apply-3way (2012-06-13) 19 commits
 - apply --3way: tests
 - apply: document --3way option
 - apply: allow rerere() upon --3way results
 - apply: register conflicted stages to the index
 - apply: --3way with add/add conflict
 - apply: move verify_index_match() higher
 - apply: plug the three-way merge logic in
 - apply: fall back on three-way merge
 - apply: accept -3/--3way command line option
 - apply: move "already exists" logic to check_to_create()
 - apply: move check_to_create_blob() closer to its sole caller
 - apply: further split load_preimage()
 - apply: refactor "previous patch" logic
 - apply: split load_preimage() helper function out
 - apply: factor out checkout_target() helper function
 - apply: refactor read_file_or_gitlink()
 - apply: clear_image() clears things a bit more
 - apply: a bit more comments on PATH_TO_BE_DELETED
 - apply: fix an incomplete comment in check_patch()

"git apply" learns to wiggle the base version and perform three-way merge
when a patch does not exactly apply to the version you have.

Will merge to 'next' after reading it over once again.

* jc/maint-push-refs-all (2012-05-04) 2 commits
 - get_fetch_map(): tighten checks on dest refs
 - fetch/push: allow refs/*:refs/*

Allows pushing and fetching refs/stash.
There still seem to be other bugs hiding (e.g. try pushing twice).

Not ready.

* jc/split-blob (2012-04-03) 6 commits
 - chunked-object: streaming checkout
 - chunked-object: fallback checkout codepaths
 - bulk-checkin: support chunked-object encoding
 - bulk-checkin: allow the same data to be multiply hashed
 - new representation types in the packstream
 - packfile: use varint functions

Not ready.

I finished the streaming checkout codepath, but as explained in
127b177 (bulk-checkin: support chunked-object encoding, 2011-11-30),
these are still early steps of a long and painful journey. At least
pack-objects and fsck need to learn the new encoding for the series
to be usable locally, and then index-pack/unpack-objects needs to
learn it to be used remotely.

Given that I heard a lot of noise that people want large files, and
that I was asked by somebody at GitTogether'11 privately for an
advice on how to pay developers (not me) to help adding necessary
support, I am somewhat dissapointed that the original patch series
that was sent almost two months ago still remains here without much
comments and updates from the developer community. I even made the
interface to the logic that decides where to split chunks easily
replaceable, and I deliberately made the logic in the original patch
extremely stupid to entice others, especially the "bup" fanboys, to
come up with a better logic, thinking that giving people an easy
target to shoot for, they may be encouraged to help out. The plan is
not working :-(.

--------------------------------------------------
[Cooking]

* mm/config-xdg (2012-06-25) 4 commits
  (merged to 'next' on 2012-06-28 at 57049d1)
 + config: write to $XDG_CONFIG_HOME/git/config file when appropriate
 + Let core.attributesfile default to $XDG_CONFIG_HOME/git/attributes
 + Let core.excludesfile default to $XDG_CONFIG_HOME/git/ignore
 + config: read (but not write) from $XDG_CONFIG_HOME/git/config file

Teach git to read various information from $XDG_CONFIG_HOME/git/ to allow
the user to avoid cluttering $HOME.

Will merge to 'next'.

* mm/credential-plumbing (2012-06-25) 3 commits
  (merged to 'next' on 2012-06-28 at 6e6fe9f)
 + git-remote-mediawiki: add credential support
 + git credential fill: output the whole 'struct credential'
 + add 'git credential' plumbing command
 (this branch is used by mm/mediawiki-file-attachments.)

Expose the credential API to scripted Porcelain writers.

Will merge to 'next'.

* th/diff-no-index-fixes (2012-06-22) 2 commits
  (merged to 'next' on 2012-06-26 at 450e781)
 + diff-no-index: exit(1) if 'diff --quiet <repo file> <external file>' finds changes
 + diff: handle relative paths in no-index

"git diff --no-index" did not correctly handle relative paths and
did not correctly give exit codes when run under "--quiet" option.

Will merge to 'master'.

* nd/clone-single-fix (2012-06-22) 1 commit
  (merged to 'next' on 2012-06-26 at c9fff5e)
 + clone: fix ref selection in --single-branch --branch=xxx

"git clone --single-branch" to clone a single branch did not limit
the cloning to the specified branch.

Will merge to 'master'.

* vr/use-our-perl-in-tests (2012-06-24) 4 commits
 - t/README: add a bit more Don'ts
 - tests: enclose $PERL_PATH in double quotes
 - t/test-lib.sh: export PERL_PATH for use in scripts
 - t: Replace 'perl' by $PERL_PATH
 (this branch is used by jc/test-lib-source-build-options-early.)

Some implementations of Perl terminates "lines" with CRLF even when
the script is operating on just a sequence of bytes.  Make sure to
use "$PERL_PATH", the version of Perl the user told Git to use, in
our tests to avoid unnecessary breakages in tests.

* jc/sha1-name-more (2012-06-23) 9 commits
 - sha1_name.c: get_describe_name() by definition groks only commits
 - sha1_name.c: teach get_short_sha1() a commit-only option
 - sha1_name.c: allow get_short_sha1() to take other flags
 - sha1_name.c: restructure disambiguation of short names
 - sha1_name.c: correct misnamed "canonical" and "res"
 - sha1_name.c: refactor find_short_packed_object()
 - sha1_name.c: rename "now" to "current"
 - sha1_name.c: clarify what "fake" is for in find_short_object_filename()
 - sha1_name.c: indentation fix

Teaches the object name parser that a "git describe" output is
always a commit object, to prolong the lifetime of abbreviated
object name in it.

It has a handful of tests that expect failure and show directions
for a couple of enhancement ideas.

Will merge to 'next'.

* jk/version-string-dependency (2012-06-20) 11 commits
 - Makefile: move GIT-VERSION-FILE dependencies closer to use
 - Makefile: build instaweb similar to other scripts
 - Makefile: update scripts when build-time parameters change
 - Makefile: do not replace @@GIT_VERSION@@ in shell scripts
 - Makefile: split prefix flags from GIT-CFLAGS
 - Makefile: split GIT_USER_AGENT from GIT-CFLAGS
 - Makefile: do not replace @@GIT_USER_AGENT@@ in scripts
 - Makefile: apply dependencies consistently to sparse/asm targets
 - Makefile: do not have git.o depend on common-cmds.h
 - Makefile: fold MISC_H into LIB_H
 - Makefile: sort LIB_H list

Will keep in 'pu' to give Peff and Jonathan to work out improvements
for a week or so.

* jn/perl-makemaker-leading-paths (2012-06-15) 1 commit
  (merged to 'next' on 2012-06-28 at 286d854)
 + perl/Makefile: move "mkdir -p" to module installation loop for maintainability

Minor build tweak.  People who do not use ExtUtils::MakeMaker may
want to test this before it hits the 'master' branch.

* tr/maint-show-walk (2012-06-19) 2 commits
 - show: fix "range implies walking"
 - Demonstrate git-show is broken with ranges

Fixes "git show"'s auto-walking behaviour, and make it behave just
like "git log" does when it walks.

Note that this is different from Thomas's patch.

Waiting for response from original author.

* hv/remote-end-hung-up (2012-06-19) 1 commit
  (merged to 'next' on 2012-06-25 at d3f29e2)
 + remove the impression of unexpectedness when access is denied

When we get disconnected while expecting a response from the remote
side because authentication failed, we issued an error message "The
remote side hung up unexpectedly."  Give hint that it may be a
permission problem in the message when we can reasonably suspect it.

Will merge to 'master'.

* jk/no-more-pre-exec-callback (2012-06-05) 1 commit
 - pager: drop "wait for output to run less" hack

Will defer for 6 months until ancient "less" goes extinct.

* mm/push-default-switch-warning (2012-06-24) 1 commit
  (merged to 'next' on 2012-06-26 at fea512a)
 + push: start warning upcoming default change for push.default

Hopefully we can have a solidly tested series early in 1.7.12 or
1.7.13 at the latest.

--------------------------------------------------
[Discarded]

* nl/http-proxy-more (2012-05-11) 2 commits
 . http: rename HTTP_REAUTH to HTTP_AUTH_RETRY
 . http: Avoid limit of retrying request only twice

I queued only the later two patches from this series, even though they do
not make much sense without the first one that seems to need a bit more
work, so that we won't forget.

* jk/no-op-push-message (2012-05-30) 1 commit
 . improve no-op push output

Rewords the status message of "git push" that pushed only one ref
differently from "Everything up-to-date", to give a bit more help to
people who get the message when their current branch is not pushed.

I had an impression after the discussion thread that a redesign is
coming, but it hasn't happened yet.

^ permalink raw reply	[relevance 1%]

* What's cooking in git.git (Apr 2012, #08; Fri, 20)
@ 2012-04-21  0:06  1% Junio C Hamano
  0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2012-04-21  0:06 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'pu' (proposed updates) while commits prefixed with '+' are in 'next'.

The third batch of topics in this cycle is now in 'master'.

You can find the changes described here in the integration branches of the
repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* bw/submodule-sed-solaris (2012-04-09) 1 commit
  (merged to 'next' on 2012-04-12 at 3bf1d83)
 + Avoid bug in Solaris xpg4/sed as used in submodule

* ct/advise-push-default (2012-04-12) 3 commits
  (merged to 'next' on 2012-04-12 at b0613cd)
 + Fix httpd tests that broke when non-ff push advice changed
 + clean up struct ref's nonfastforward field
 + push: Provide situational hints for non-fast-forward errors
 (this branch is used by mm/push-default-switch-warning.)

Breaks down the cases in which "git push" fails due to non-ff into three
categories, and gives separate advise messages.  This should be a good
change regardless of mm/push-default-switch-warning topic.

* jb/am-include (2012-03-28) 1 commit
  (merged to 'next' on 2012-04-12 at ddbf96d)
 + am: support --include option

"git am" learned the "--include" option, which is an opposite of existing
the "--exclude" option.

* jc/am-report-3way (2012-03-28) 1 commit
  (merged to 'next' on 2012-04-12 at cf5d599)
 + am -3: list the paths that needed 3-way fallback

When "git am -3" needs to fall back to an application to a synthesized
preimage followed by a 3-way merge, the paths that needed such treatment
are now reported to the end user, so that the result in them can be
eyeballed with extra care.

* jc/fmt-merge-msg-people (2012-03-13) 1 commit
  (merged to 'next' on 2012-04-12 at 4c2031c)
 + fmt-merge-msg: show those involved in a merged series

The "fmt-merge-msg" command learns to list the primary contributors
involved in the side topic you are merging.

* jc/push-upstream-sanity (2012-04-05) 1 commit
  (merged to 'next' on 2012-04-12 at 288e1ad)
 + push: error out when the "upstream" semantics does not make sense
 (this branch is used by mm/push-default-switch-warning.)

Fix broken 'push to upstream' implementation.  "git push $there" without
refspec, when the current branch is set to push to a remote different from
$there, used to push to $there using the upstream information to a remote
unreleated to $there.

* jk/run-command-eacces (2012-04-05) 2 commits
  (merged to 'next' on 2012-04-12 at ef3782e)
 + run-command: treat inaccessible directories as ENOENT
 + compat/mingw.[ch]: Change return type of exec functions to int

When PATH contains an unreadable directory, alias expansion code did not
kick in, and failed with an error that said "git-subcmd" was not found.

* js/spawn-via-shell-path-fix (2012-04-17) 1 commit
  (merged to 'next' on 2012-04-19 at 3e04ef6)
 + Do not use SHELL_PATH from build system in prepare_shell_cmd on Windows

Mops up an unfortunate fallout from bw/spawn-via-shell-path topic.

--------------------------------------------------
[New Topics]

* bw/test-fix-grep-gnuism (2012-04-19) 1 commit
  (merged to 'next' on 2012-04-20 at ee7eec4)
 + t9400: fix gnuism in grep

Fix two places that were the only place in the test suite that gave "a\+"
to platform grep and expected it to mean one or more "a", which is a
blatant GNUism.

* rt/cherry-revert-conflict-summary (2012-04-19) 1 commit
 - sequencer: remove additional blank line

In the older days, the header "Conflicts:" in "cherry-pick" and
"merge" was separated by a blank line from the list of paths that
follow for readability, but when "merge" was rewritten in C, we lost
it by mistake. Remove the newline from "cherry-pick" to make them
match again.

* js/fast-import-test-9300 (2012-04-20) 1 commit
 - t9300-fast-import: avoid 'exit' in test_expect_success snippets

--------------------------------------------------
[Stalled]

* jc/split-blob (2012-04-03) 7 commits
 - chunked-object: streaming checkout
 - chunked-object: fallback checkout codepaths
 - bulk-checkin: support chunked-object encoding
 - bulk-checkin: allow the same data to be multiply hashed
 - new representation types in the packstream
 - packfile: use varint functions
 + varint: make it available outside the context of pack
 (this branch is tangled with jc/index-v4.)

Not ready.

I finished the streaming checkout codepath, but as explained in
127b177 (bulk-checkin: support chunked-object encoding, 2011-11-30),
these are still early steps of a long and painful journey. At least
pack-objects and fsck need to learn the new encoding for the series
to be usable locally, and then index-pack/unpack-objects needs to
learn it to be used remotely.

Given that I heard a lot of noise that people want large files, and
that I was asked by somebody at GitTogether'11 privately for an
advice on how to pay developers (not me) to help adding necessary
support, I am somewhat dissapointed that the original patch series
that was sent almost two months ago still remains here without much
comments and updates from the developer community. I even made the
interface to the logic that decides where to split chunks easily
replaceable, and I deliberately made the logic in the original patch
extremely stupid to entice others, especially the "bup" fanboys, to
come up with a better logic, thinking that giving people an easy
target to shoot for, they may be encouraged to help out. The plan is
not working :-(.

--------------------------------------------------
[Cooking]

* jm/maint-strncpy-diff-no-index (2012-04-16) 1 commit
  (merged to 'next' on 2012-04-20 at 638ed9f)
 + diff: avoid stack-buffer-read-overrun for very long name

* lp/diffstat-with-graph (2012-04-18) 6 commits
 - Prevent graph_width of stat width from falling below min
 - t4052: Test diff-stat output with minimum columns
 - t4052: Adjust --graph --stat output for prefixes
 - Adjust stat width calculations to take --graph output into account
 - Add output_prefix_length to diff_options
 - t4052: test --stat output with --graph

Looked reasonable.
Will merge to 'next'.

* jc/merge-reduce-parents-early (2012-04-18) 5 commits
 - fmt-merge-msg: discard needless merge parents
 - builtin/merge.c: reduce parents early
 - builtin/merge.c: collect other parents early
 - builtin/merge.c: remove "remoteheads" global variable
 - merge tests: octopus with redundant parents
 (this branch is tangled with lt/octopus-simplify.)

I based this and Linus's on top of the same test script, but it
turns out that this is more correct way to deal with the issue, so
I'll drop the other one.

* rj/mingw-isguid (2012-04-18) 1 commit
  (merged to 'next' on 2012-04-20 at 9dbebca)
 + compat/mingw.h: Set S_ISUID to prevent a fast-import test failure

* rj/sh-setup-mswin-pwd (2012-04-18) 1 commit
  (merged to 'next' on 2012-04-20 at 6125f8d)
 + git-sh-setup.sh: Add an pwd() function for MinGW

* rj/submodule-mswin-path (2012-04-18) 1 commit
  (merged to 'next' on 2012-04-20 at fd9f8b3)
 + git-submodule.sh: Don't use $path variable in eval_gettext string

* lp/maint-diff-three-dash-with-graph (2012-03-20) 3 commits
  (merged to 'next' on 2012-04-20 at b6cf0ff)
 + t4202: add test for "log --graph --stat -p" separator lines
 + log --graph: fix break in graph lines
 + log --graph --stat: three-dash separator should come after graph lines

* cb/cherry-pick-rev-path-confusion (2012-04-15) 1 commit
 - cherry-pick: do not expect file arguments

The command line parser choked "git cherry-pick $name" when $name can be
both revision name and a pathname, even though $name can never be a path
in the context of the command.

The issue the patch addresses is real, but the way it is implemented felt
unnecessarily invasive a bit.  It may be cleaner for this caller to add
the "--" to the end of the argv_array it passes to setup_revisions().

* cb/daemon-test-race-fix (2012-04-19) 1 commit
 - git-daemon wrapper to wait until daemon is ready

Fix race condition between starting and waiting for git-daemon in the
test.

Re-queued with a fix.

* cb/maint-report-mount-point-correctly-in-setup (2012-04-15) 1 commit
 - properly keep track of current working directory

The filesystem boundary was not correctly reported when .git directory
discovery stopped at a mount point.

Will merge to 'next'.

* jl/maint-submodule-recurse-fetch (2012-04-14) 1 commit
  (merged to 'next' on 2012-04-20 at 2769d39)
 + submodules: recursive fetch also checks new tags for submodule commits

* jn/fast-import-doc (2012-04-15) 1 commit
  (merged to 'next' on 2012-04-20 at b9a7250)
 + fast-import doc: cat-blob and ls responses need to be consumed quickly

* jn/more-i18ncmp (2012-04-14) 3 commits
  (merged to 'next' on 2012-04-20 at b5548a3)
 + test: am of empty patch should not succeed
 + test: use test_i18ncmp for "Patch format detection failed" message
 + test: do not rely on US English tracking-info messages

* rl/maint-stash-i18n-save-error (2012-04-14) 1 commit
 - stash: use eval_gettextln correctly

Will merge to 'next'.

* nd/columns (2012-04-15) 9 commits
 - tag: add --column
 - column: support piping stdout to external git-column process
 - status: add --column
 - branch: add --column
 - help: reuse print_columns() for help -a
 - column: add dense layout support
 - column: add columnar layout
 - Stop starting pager recursively
 - Add column layout skeleton and git-column

Will merge to 'next'.

* nl/http-proxy-more (2012-04-19) 7 commits
 - http: fix proxy password passing
 - http: fix proxy authentication
 - http: rename HTTP_REAUTH to HTTP_AUTH_RETRY
 - http: Avoid limit of retrying request only twice
 - http: handle proxy authentication failure (error 407)
 - http: handle proxy proactive authentication
 - http: try http_proxy env var when http.proxy config option is not set

The code to talk to http proxies learn to use the same credential
API used to talk to the final http destinations.  This still needs
to peek into $ENV{HTTPS_PROXY}.

* mb/fetch-call-a-non-branch-a-ref (2012-04-17) 2 commits
  (merged to 'next' on 2012-04-20 at df2c57e)
 + fetch: describe new refs based on where it came from
 + fetch: Give remote_ref to update_local_ref() as well

* mh/ref-api (2012-04-10) 13 commits
  (merged to 'next' on 2012-04-20 at 94e9384)
 + do_for_each_ref(): only iterate over the subtree that was requested
 + refs: store references hierarchically
 + sort_ref_dir(): simplify logic
 + refs.c: rename ref_array -> ref_dir
 + struct ref_entry: nest the value part in a union
 + check_refname_component(): return 0 for zero-length components
 + free_ref_entry(): new function
 + names_conflict(): simplify implementation
 + repack_without_ref(): reimplement using do_for_each_ref_in_array()
 + do_for_each_ref_in_arrays(): new function
 + do_for_each_ref_in_array(): new function
 + refs: manage current_ref within do_one_ref()
 + refs.c: reorder definitions more logically

Allows walking only a sub-hierarchy in refs/*.

* jc/maint-blame-minimal (2012-04-11) 1 commit
  (merged to 'next' on 2012-04-20 at 2213284)
 + blame: accept --need-minimal

"git blame" started missing quite a few changes from the origin since we
stopped using the diff minimalization by default in v1.7.2 era.

* jk/repack-no-explode-objects-from-old-pack (2012-04-18) 4 commits
  (merged to 'next' on 2012-04-20 at 4eb2534)
 + gc: use argv-array for sub-commands
 + argv-array: add a new "pushl" method
 + argv-array: refactor empty_argv initialization
  (merged to 'next' on 2012-04-15 at 7586e50)
 + gc: do not explode objects which will be immediately pruned

* ld/git-p4-tags-and-labels (2012-04-11) 2 commits
  (merged to 'next' on 2012-04-15 at 1b1e9a1)
 + git p4: import/export of labels to/from p4
 + git p4: Fixing script editor checks
 (this branch uses pw/git-p4.)

A review from Pete Wyckoff needs to be addressed.
Message-ID: <20120418113422.GB19994@padd.com>

* nh/empty-rebase (2012-04-20) 7 commits
 - fixup! git-rebase: add keep_empty flag
 - git-rebase: add keep_empty flag
 - fixup! git-cherry-pick: Add test to validate new options
 - git-cherry-pick: Add test to validate new options
 - fixup! git-cherry-pick: Add keep-redundant-commits option
 - git-cherry-pick: Add keep-redundant-commits option
 - git-cherry-pick: add allow-empty option

* sl/test-wc-l-line-count (2012-04-11) 1 commit
  (merged to 'next' on 2012-04-15 at 40797d9)
 + tests: modernise style: more uses of test_line_count

Will merge to 'master'.

* zj/upstream-error-message (2012-04-15) 5 commits
  (merged to 'next' on 2012-04-20 at 1ed9682)
 + i18n: mark @{upstream} error messages for translation
 + Be more specific if upstream branch is not tracked
 + Provide better message for barnhc_wiht_tpyo@{u}
 + Provide branch name in error message when using @{u}
 + t1507: add tests to document @{upstream} behaviour

* fc/completion-tests (2012-04-18) 7 commits
 - tests: add tests for the __gitcomp() completion helper function
 - completion: fix completion after 'git --option <TAB>'
 - completion: avoid trailing space for --exec-path
 - completion: add missing general options
 - completion: simplify by using $prev
 - completion: simplify __gitcomp_1
 - tests: add initial bash completion tests

Will merge to 'next'.

* jh/apply-free-patch (2012-04-11) 9 commits
  (merged to 'next' on 2012-04-15 at 8cccf57)
 + apply: document buffer ownership rules across functions
 + apply: tighten constness of line buffer
 + apply: drop unused macro
 + apply: free unused fragments for submodule patch
 + apply: free patch->result
 + apply: release memory for fn_table
 + apply: free patch->{def,old,new}_name fields
 + apply: rename free_patch() to free_patch_list()
 + apply: do not leak patches and fragments

Valgrind reports quite a lot of discarded memory inside apply.

* nd/threaded-index-pack (2012-04-19) 4 commits
 - index-pack: disable threading if NO_PREAD is defined
 - index-pack: support multithreaded delta resolving
 - index-pack: split second pass obj handling into own function
 - compat/win32/pthread.h: Add an pthread_key_delete() implementation

* cb/http-multi-curl-auth (2012-04-14) 4 commits
 - http: use newer curl options for setting credentials
 - http: clean up leak in init_curl_http_auth
 - fix http auth with multiple curl handles
 - http auth fails with multiple curl handles

Fixes http authentication breakage when we keep multiple HTTP requests in
flight using curl-multi.

Will merge to 'next'.

* jk/rebase-i-submodule-conflict-only (2012-04-09) 1 commit
  (merged to 'next' on 2012-04-15 at 94367a8)
 + rebase -i continue: don't skip commits that only change submodules

Giving "--continue" to a conflicted "rebase -i" session skipped a commit
that only results in changes to submodules.

Will merge to 'master'.

* ms/remote-usage-string (2012-04-09) 1 commit
  (merged to 'next' on 2012-04-15 at 704be8f)
 + remote: update builtin usage

As an independent follow-up, we may want to rethink how the overall usage
string and subcommand usage strings are maintained.

Will merge to 'master'.

* pw/fast-import-dataref-parsing (2012-04-10) 1 commit
  (merged to 'next' on 2012-04-20 at c299a63)
 + fast-import: tighten parsing of datarefs

* pw/git-p4 (2012-04-09) 3 commits
  (merged to 'next' on 2012-04-15 at 81ea41a)
 + git p4: use "git p4" directly in tests
 + git p4: update name in script
 + git-p4: move to toplevel
 (this branch is used by ld/git-p4-tags-and-labels.)

Will merge to 'master'.

* rl/show-empty-prefix (2012-04-10) 1 commit
  (merged to 'next' on 2012-04-15 at b2e5938)
 + rev-parse --show-prefix: add in trailing newline

Will merge to 'master'.

* tr/xdiff-fast-hash (2012-04-09) 1 commit
 - xdiff: load full words in the inner loop of xdl_hash_record

Will merge to 'next'.

* jc/index-v4 (2012-04-04) 10 commits
  (merged to 'next' on 2012-04-19 at 5e4b029)
 + update-index: upgrade/downgrade on-disk index version
 + read-cache.c: write prefix-compressed names in the index
 + read-cache.c: read prefix-compressed names in index on-disk version v4
 + read-cache.c: move code to copy incore to ondisk cache to a helper function
 + read-cache.c: move code to copy ondisk to incore cache to a helper function
 + read-cache.c: report the header version we do not understand
 + read-cache.c: make create_from_disk() report number of bytes it consumed
 + read-cache.c: allow unaligned mapping of the index file
 + cache.h: hide on-disk index details
 + varint: make it available outside the context of pack
 (this branch is tangled with jc/split-blob.)

Trivially shrinks the on-disk size of the index file to save both I/O and
checksum overhead.  The "v4" format represented here may not be what we
eventually want to have, but the preparatory refactoring steps and the way
how backward compatibility is retained should give plenty to learn to GSoC
student-hopefuls.

The bottom one makes use of "varint" encoding from the stalled
jc/split-blob topic.

* mk/gitweb-diff-hl (2012-04-11) 8 commits
  (merged to 'next' on 2012-04-20 at 54179a2)
 + gitweb: Refinement highlightning in combined diffs
 + gitweb: Highlight interesting parts of diff
 + gitweb: Push formatting diff lines to print_diff_chunk()
 + gitweb: Use print_diff_chunk() for both side-by-side and inline diffs
 + gitweb: Extract print_sidebyside_diff_lines()
 + gitweb: Pass esc_html_hl_regions() options to esc_html()
 + gitweb: esc_html_hl_regions(): Don't create empty <span> elements
 + gitweb: Use descriptive names in esc_html_hl_regions()

* it/fetch-pack-many-refs (2012-04-10) 4 commits
  (merged to 'next' on 2012-04-20 at e2126d7)
 + remote-curl: main test case for the OS command line overflow
 + fetch-pack: test cases for the new --stdin option
 + remote-curl: send the refs to fetch-pack on stdin
 + fetch-pack: new --stdin option to read refs from stdin

* jn/debian-customizes-default-editor (2012-04-10) 2 commits
  (merged to 'next' on 2012-04-15 at 0fc85c3)
 + var doc: advertise current DEFAULT_PAGER and DEFAULT_EDITOR settings
 + var doc: default editor and pager are configurable at build time

Will merge to 'master'.

* rs/commit-list-sort-in-batch (2012-04-17) 4 commits
  (merged to 'next' on 2012-04-17 at 21208e9)
 + mergesort: rename it to llist_mergesort()
  (merged to 'next' on 2012-04-15 at 39fe527)
 + revision: insert unsorted, then sort in prepare_revision_walk()
 + commit: use mergesort() in commit_list_sort_by_date()
 + add mergesort() for linked lists

* hv/submodule-recurse-push (2012-03-30) 3 commits
  (merged to 'next' on 2012-04-20 at fe99e3d)
 + push: teach --recurse-submodules the on-demand option
 + Refactor submodule push check to use string list instead of integer
 + Teach revision walking machinery to walk multiple times sequencially

* th/difftool-diffall (2012-04-14) 8 commits
 - difftool: print list of valid tools with '--tool-help'
 - difftool: teach difftool to handle directory diffs
 - difftool: eliminate setup_environment function
 - difftool: stop appending '.exe' to git
 - difftool: remove explicit change of PATH
 - difftool: exit(0) when usage is printed
 - difftool: add '--no-gui' option
 - difftool: parse options using Getopt::Long

Rolls the two-directory-diff logic from diffall script (in contrib/) into
"git difftool" framework. 

Still being reworked.

* jc/run-hook-env-1 (2012-03-11) 1 commit
 - run_hook(): enhance the interface to pass arbitrary environment

Not urgent.

Updates run_hook() API to be much less specific to "commit".  It would
only be useful if people start doing more interesting things with hooks.

* mm/push-default-switch-warning (2012-04-20) 4 commits
 - push: start warning upcoming default change for push.default
 - t5570: use explicit push refspec
 - push: introduce new push.default mode "simple"
 - Documentation: explain push.default option a bit more

This resurrects an ancient patch I wrote during a discussion we had in the
1.6.3-1.6.4 era.  This should probably come after ct/advise-push-default
topic and at that point the advise messages need to be rephrased, taking
the future default change into account.

--------------------------------------------------
[Discarded]

* cn/apply-fix-ws-can-lengthen-lines (2012-03-11) 1 commit
 . apply: reallocate the postimage buffer when needed

Attempts to address an ancient bug that dates back to the addition
of an oddball "tab-in-indent" whitespace breakage class that wants
to have longer lines than the original when fixing things up; broken
and results in double-frees.

* ss/git-svn-prompt-sans-terminal (2012-01-04) 3 commits
 . fixup! 15eaaf4
 . git-svn, perl/Git.pm: extend Git::prompt helper for querying users
 . perl/Git.pm: "prompt" helper to honor GIT_ASKPASS and SSH_ASKPASS

Has been stalled for too long.

* lt/octopus-simplify (2012-04-17) 3 commits
 . git-merge: Reduce heads before trying to merge them
 . Make 'git merge' simplify parents earlier
 - merge tests: octopus with redundant parents
 (this branch is tangled with jc/merge-reduce-parents-early.)

Octopus merge strategy did not reduce heads that are recorded in the final
commit, but follow-up broke badly.

^ permalink raw reply	[relevance 1%]

Results 1-162 of 162 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2012-04-21  0:06  1% What's cooking in git.git (Apr 2012, #08; Fri, 20) Junio C Hamano
2012-06-28 23:35  1% What's cooking in git.git (Jun 2012, #08; Thu, 28) Junio C Hamano
2012-08-20  7:00  5% What's cooking in git.git (Aug 2012, #06; Sun, 19) Junio C Hamano
2012-08-21 23:10  5% What's cooking in git.git (Aug 2012, #06; Tue, 21) Junio C Hamano
2012-08-22 21:03  5% What's cooking in git.git (Aug 2012, #07; Wed, 22) Junio C Hamano
2012-08-28  2:43  5% What's cooking in git.git (Aug 2012, #08; Mon, 27) Junio C Hamano
2012-08-29 23:09  6% What's cooking in git.git (Aug 2012, #09; Wed, 29) Junio C Hamano
2012-08-31 21:32  6% What's cooking in git.git (Aug 2012, #10; Fri, 31) Junio C Hamano
2012-09-04 23:21  4% What's cooking in git.git (Sep 2012, #01; Tue, 4) Junio C Hamano
2012-10-29 10:21  6% What's cooking in git.git (Oct 2012, #09; Mon, 29) Jeff King
2012-11-04 14:56  6% What's cooking in git.git (Nov 2012, #01; Sun, 4) Jeff King
2013-09-09 22:53  4% What's cooking in git.git (Sep 2013, #02; Mon, 9) Junio C Hamano
2013-09-11 23:32  6% What's cooking in git.git (Sep 2013, #03; Wed, 11) Junio C Hamano
2013-09-13 22:18  4% What's cooking in git.git (Sep 2013, #04; Fri, 13) Junio C Hamano
2014-01-17  9:47     [PATCH/WIP v2 00/14] inotify support Nguyễn Thái Ngọc Duy
2014-02-03  4:28     ` [PATCH v3 00/26] " Nguyễn Thái Ngọc Duy
2014-02-03  4:29  4%   ` [PATCH v3 23/26] file-watcher: tests for the daemon Nguyễn Thái Ngọc Duy
2014-09-11 22:52  1% What's cooking in git.git (Sep 2014, #03; Thu, 11) Junio C Hamano
2014-12-22 23:17  1% What's cooking in git.git (Dec 2014, #04; Mon, 22) Junio C Hamano
2015-04-30 19:51  4% What's cooking in git.git (Apr 2015, #05; Thu, 30) Junio C Hamano
2015-05-04 22:25  4% What's cooking in git.git (May 2015, #01; Mon, 4) Junio C Hamano
2015-05-06 19:59  5% What's cooking in git.git (May 2015, #02; Wed, 6) Junio C Hamano
2015-05-08 22:26  6% What's cooking in git.git (May 2015, #03; Fri, 8) Junio C Hamano
2015-05-11 22:46  4% What's cooking in git.git (May 2015, #04; Mon, 11) Junio C Hamano
2015-07-27 11:48     [PATCH] clone: fix repo name when cloning a server's root Patrick Steinhardt
2015-08-05 10:06     ` [PATCH v4 0/3] " Patrick Steinhardt
2015-08-05 10:06       ` [PATCH v4 1/3] clone: do not include authentication data in guessed dir Patrick Steinhardt
2015-08-05 17:43         ` Junio C Hamano
2015-08-05 19:36  5%       ` Junio C Hamano
2015-08-17 22:34  1% What's cooking in git.git (Aug 2015, #03; Mon, 17) Junio C Hamano
2016-04-12 23:08  1% What's cooking in git.git (Apr 2016, #04; Tue, 12) Junio C Hamano
2016-06-19 22:52  5% Short-term plans for the post 2.9 cycle Junio C Hamano
2017-10-05  5:55  2% [ANNOUNCE] Git v2.15.0-rc0 Junio C Hamano
2017-10-11  6:35  2% [ANNOUNCE] Git v2.15.0-rc1 Junio C Hamano
2017-10-20  6:49  2% [ANNOUNCE] Git v2.15.0-rc2 Junio C Hamano
2017-12-29  4:30  2% [ANNOUNCE] Git v2.16.0-rc0 Junio C Hamano
2018-01-05 23:30  2% [ANNOUNCE] Git v2.16.0-rc1 Junio C Hamano
2018-01-18  5:54  2% [ANNOUNCE] Git v2.16.0 Junio C Hamano
2018-05-30 22:47  1% [ANNOUNCE] Git v2.18.0-rc0 Junio C Hamano
2018-06-04 13:53  1% [ANNOUNCE] Git v2.18.0-rc1 Junio C Hamano
2018-06-21 19:27  1% [ANNOUNCE] Git v2.18.0 Junio C Hamano
2019-01-18 23:20  1% What's cooking in git.git (Jan 2019, #03; Fri, 18) Junio C Hamano
2019-03-21  6:53     [PATCH v9 00/11] Fix scissors bug during conflict Denton Liu
2019-04-17 10:23     ` [PATCH v10 00/10] " Phillip Wood
2019-04-18  5:19       ` Junio C Hamano
2019-04-18  9:14  5%     ` Phillip Wood
     [not found]     <7e4a2f1d-2b3a-eb83-d3f1-9ac63d68991b@gmx.de>
     [not found]     ` <20190322005107.GL9937@linaro.org>
2019-03-22  6:02       ` [BUG] Cloning with git HEAD fails for some repositories Heinrich Schuchardt
2019-03-22  7:12         ` Jeff King
2019-03-22  8:21           ` Wolfgang Denk
2019-03-22  9:31             ` Jeff King
2019-03-22 16:50  5%           ` Eric Wong
2019-03-22 17:42  0%             ` Heinrich Schuchardt
2019-03-22 18:09  0%               ` Eric Wong
2019-03-22 18:41  0%                 ` Heinrich Schuchardt
2019-03-23  8:53  0%             ` Jeff King
2019-03-24 12:07  0%               ` [PATCH 0/3] fix dumb-http fetch with alternates Jeff King
2019-03-28 22:17     [PATCH v2] rebase: teach rebase --keep-base Denton Liu
2019-04-01 20:51     ` [PATCH v3 0/4] " Denton Liu
2019-04-06 19:44       ` Ævar Arnfjörð Bjarmason
2019-04-06 20:38         ` Denton Liu
2019-04-13 21:10  7%       ` Ævar Arnfjörð Bjarmason
2019-05-19  9:04  2% [ANNOUNCE] Git v2.22.0-rc1 Junio C Hamano
2019-05-19 20:30  0% ` Johannes Schindelin
2019-06-03 20:23  2% [ANNOUNCE] Git v2.22.0-rc3 Junio C Hamano
2019-06-04  1:32  0% ` Ben Humphreys
2019-06-04  1:47  0% ` Bhaskar Chowdhury
2019-06-04 14:45  0% ` Git for Windows v2.22.0-rc3, was " Johannes Schindelin
2019-06-07 21:31  2% [ANNOUNCE] Git v2.22.0 Junio C Hamano
2019-06-07 22:48  0% ` Bhaskar Chowdhury
2019-06-25 13:40  3% [PATCH v6 00/15] Many promisor remotes Christian Couder
2019-06-26 22:29  1% What's cooking in git.git (Jun 2019, #06; Wed, 26) Junio C Hamano
2019-06-28 22:17  1% What's cooking in git.git (Jun 2019, #07; Fri, 28) Junio C Hamano
2019-07-03 22:28  1% What's cooking in git.git (Jul 2019, #01; Wed, 3) Junio C Hamano
2019-07-04  9:56  0% ` Phillip Wood
2019-07-26  0:19  1% What's cooking in git.git (Jul 2019, #06; Thu, 25) Junio C Hamano
2019-07-26 14:33  0% ` Johannes Schindelin
2019-07-26 20:23  0%   ` Junio C Hamano
2019-08-09  0:13  0% ` Taylor Blau
2019-08-09  1:34  0%   ` Ariadne Conill
2019-08-09  2:07  0%     ` Taylor Blau
2019-08-09  3:04  0%       ` Ariadne Conill
2019-07-29 21:49  2% [ANNOUNCE] Git v2.23.0-rc0 Junio C Hamano
2019-08-02 22:06  2% [ANNOUNCE] Git v2.23.0-rc1 Junio C Hamano
2019-08-09 19:29  2% [ANNOUNCE] Git v2.23.0-rc2 Junio C Hamano
2019-08-09 21:20  0% ` Bhaskar Chowdhury
2019-08-09 21:31  0% ` Git for Windows v2.23.0-rc2, was " Johannes Schindelin
2019-08-12 19:40  1% [ANNOUNCE] Git v2.22.1 Junio C Hamano
2019-08-12 22:49  0% ` Bhaskar Chowdhury
2019-08-16 21:00  2% [ANNOUNCE] Git v2.23.0 Junio C Hamano
2019-08-16 21:30  0% ` Bhaskar Chowdhury
2019-09-17 20:13     [GIT PULL] git-gui pull request Pratyush Yadav
2019-09-17 20:50     ` Denton Liu
2019-09-18 19:23  4%   ` Junio C Hamano
2019-12-05 22:36  1% What's cooking in git.git (Dec 2019, #02; Thu, 5) Junio C Hamano
2019-12-25 21:44  2% [ANNOUNCE] Git v2.25.0-rc0 Junio C Hamano
2019-12-26  0:33  0% ` Denton Liu
2020-01-02 23:33  2% [ANNOUNCE] Git v2.25.0-rc1 Junio C Hamano
2020-01-08 22:27  2% [ANNOUNCE] Git v2.25.0-rc2 Junio C Hamano
2020-01-13 19:28  2% [ANNOUNCE] Git v2.25.0 Junio C Hamano
2020-02-08  9:06  4% [Outreachy] [PATCH v3 00/13] Finish converting git bisect to C part 1 Miriam Rubio
2020-03-05 22:02  2% [ANNOUNCE] Git v2.26.0-rc0 Junio C Hamano
2020-03-10 14:57  2% [ANNOUNCE] Git v2.26.0-rc1 Junio C Hamano
2020-03-16 23:25  2% [ANNOUNCE] Git v2.26.0-rc2 Junio C Hamano
2020-03-23  1:10  2% [ANNOUNCE] Git v2.26.0 Junio C Hamano
2020-04-27  5:07  0% [PATCH] Teach git-rev-list --simplify-forks Antonio Russo
2020-05-14 23:27  2% [ANNOUNCE] Git v2.27.0-rc0 Junio C Hamano
2020-05-14 23:28  2% Junio C Hamano
2020-05-20 19:17  2% [ANNOUNCE] Git v2.27.0-rc1 Junio C Hamano
2020-05-26 18:47  2% [ANNOUNCE] Git v2.27.0-rc2 Junio C Hamano
2020-06-01 16:34  2% [ANNOUNCE] Git v2.27.0 Junio C Hamano
2020-06-18  6:35  1% What's cooking in git.git (Jun 2020, #03; Wed, 17) Junio C Hamano
2020-06-19 15:21  3% [PATCH 0/3] update delete_ref(), update_ref() and ref_exists() to take a struct repository Phillip Wood via GitGitGadget
2020-07-09 21:40  2% [ANNOUNCE] Git v2.28.0-rc0 Junio C Hamano
2020-07-17 20:24  2% [ANNOUNCE] Git v2.28.0-rc1 Junio C Hamano
2020-07-22 17:30  2% [ANNOUNCE] Git v2.28.0-rc2 Junio C Hamano
2020-07-27 16:49  2% [ANNOUNCE] Git v2.28.0 Junio C Hamano
2020-11-02 22:27  1% What's cooking in git.git (Nov 2020, #01; Mon, 2) Junio C Hamano
2021-01-04 16:21     [PATCH 0/7] teach `worktree list` verbose mode and prunable annotations Rafael Silva
2021-01-17 23:42  2% ` [PATCH v2 0/6] " Rafael Silva
2021-01-19 21:27  2%   ` [PATCH v3 0/7] " Rafael Silva
2021-01-27  8:03  2%     ` Rafael Silva
2021-01-16 21:59  1% What's cooking in git.git (Jan 2021, #04; Sat, 16) Junio C Hamano
2021-01-18  3:23  5% [PATCH 0/2] Two cleanups around 'prefetch' refs Derrick Stolee via GitGitGadget
2021-01-19 12:52  4% ` [PATCH v2 " Derrick Stolee via GitGitGadget
2021-02-26  2:03  2% [ANNOUNCE] Git v2.31.0-rc0 Junio C Hamano
2021-03-03 10:14  2% [ANNOUNCE] Git v2.31.0-rc1 Junio C Hamano
2021-03-09 18:05  2% [ANNOUNCE] Git v2.31.0-rc2 Junio C Hamano
2021-03-15 19:30  2% [ANNOUNCE] Git v2.31.0 Junio C Hamano
2021-04-22 15:17     [PATCH 0/7] Parallel Checkout (part 3) Matheus Tavares
2021-04-30 21:40     ` [PATCH v2 0/8] " Matheus Tavares
2021-05-02 10:12  5%   ` Torsten Bögershausen
2021-05-03 15:01  0%     ` Matheus Tavares Bernardino
2021-07-12 11:46     [PATCH 00/19] [GSOC] cat-file: reuse ref-filter logic ZheNing Hu via GitGitGadget
2021-07-12 11:46     ` [PATCH 14/19] " ZheNing Hu via GitGitGadget
2021-07-12 13:17       ` Christian Couder
2021-07-12 20:38         ` Junio C Hamano
2021-07-14 16:24  6%       ` ZheNing Hu
2021-07-15  1:53  0%         ` ZheNing Hu
2021-07-15  9:45  0%           ` Christian Couder
2021-07-15 13:53  0%             ` ZheNing Hu
2021-08-02 23:45  3% [ANNOUNCE] Git v2.33.0-rc0 Junio C Hamano
2021-08-07  0:07  3% [ANNOUNCE] Git v2.33.0-rc1 Junio C Hamano
2021-08-11 23:22  3% [ANNOUNCE] Git v2.33.0-rc2 Junio C Hamano
2021-08-16 23:06  3% [ANNOUNCE] Git v2.33.0 Junio C Hamano
2021-09-05 11:04  3% [PATCH RESEND v3] make: add INSTALL_STRIP option variable Bagas Sanjaya
2021-10-30  0:17  3% [ANNOUNCE] Git v2.34.0-rc0 Junio C Hamano
2021-11-03 23:17  3% [ANNOUNCE] Git v2.34.0-rc1 Junio C Hamano
2022-01-11  0:51  2% [ANNOUNCE] Git v2.35.0-rc0 Junio C Hamano
2022-01-15  2:18  2% [ANNOUNCE] Git v2.35.0-rc1 Junio C Hamano
2022-01-20 18:44  2% [ANNOUNCE] Git v2.35.0-rc2 Junio C Hamano
2022-01-24 19:25  2% [ANNOUNCE] Git v2.35.0 Junio C Hamano
2022-02-13  9:24  2% What's cooking in git.git (Feb 2022, #03; Sat, 12) Junio C Hamano
2022-04-04 20:43  3% [ANNOUNCE] Git v2.36.0-rc0 Junio C Hamano
2022-04-08 23:30  3% [ANNOUNCE] Git v2.36.0-rc1 Junio C Hamano
2022-04-12 17:03  3% [ANNOUNCE] Git v2.36.0-rc2 Junio C Hamano
2022-04-18 16:27  3% [ANNOUNCE] Git v2.36.0 Junio C Hamano
2022-09-16  2:37  3% [ANNOUNCE] Git v2.38.0-rc0 Junio C Hamano
2022-09-22  0:11  3% [ANNOUNCE] Git v2.38.0-rc1 Junio C Hamano
2022-09-27 21:10  3% [ANNOUNCE] Git v2.38.0-rc2 Junio C Hamano
2022-10-03 17:26  3% [ANNOUNCE] Git v2.38.0 Junio C Hamano
2022-11-23  7:25  3% [ANNOUNCE] Git v2.39.0-rc0 Junio C Hamano
2022-11-30  6:12  3% [ANNOUNCE] Git v2.39.0-rc1 Junio C Hamano
2022-12-06  4:00  3% [ANNOUNCE] Git v2.39.0-rc2 Junio C Hamano
2022-12-12 13:43  3% [ANNOUNCE] Git v2.39.0 Junio C Hamano
2023-02-24 20:24  3% [ANNOUNCE] Git v2.40.0-rc0 Junio C Hamano
2023-03-01 17:40  3% [ANNOUNCE] Git v2.40.0-rc1 Junio C Hamano
2023-03-07 19:47  3% [ANNOUNCE] Git v2.40.0-rc2 Junio C Hamano
2023-03-13 17:48  3% [ANNOUNCE] Git v2.40.0 Junio C Hamano
2023-05-16  3:42  3% [ANNOUNCE] Git v2.41.0-rc0 Junio C Hamano
2023-05-19 17:39  3% [ANNOUNCE] Git v2.41.0-rc1 Junio C Hamano
2023-05-24 21:41  3% [ANNOUNCE] Git v2.41.0-rc2 Junio C Hamano
2023-06-01 10:11  3% [ANNOUNCE] Git v2.41.0 Junio C Hamano
2023-08-04 19:30  3% [ANNOUNCE] Git v2.42.0-rc0 Junio C Hamano
2023-08-10 16:45  3% [ANNOUNCE] Git v2.42.0-rc1 Junio C Hamano
2023-08-15 21:22  3% [ANNOUNCE] Git v2.42.0-rc2 Junio C Hamano
2023-08-21 18:12  3% [ANNOUNCE] Git v2.42.0 Junio C Hamano
2023-11-02 17:36  3% [ANNOUNCE] Git v2.43.0-rc0 Junio C Hamano
2023-11-08 17:33  3% [ANNOUNCE] Git v2.43.0-rc1 Junio C Hamano
2023-11-14 17:25  3% [ANNOUNCE] Git v2.43.0-rc2 Junio C Hamano
2023-11-20 17:01  3% [ANNOUNCE] Git v2.43.0 Junio C Hamano
2024-02-09 17:24  3% [ANNOUNCE] Git v2.44.0-rc0 Junio C Hamano
2024-02-14 17:04  3% [ANNOUNCE] Git v2.44.0-rc1 Junio C Hamano
2024-02-20 17:09  3% [ANNOUNCE] Git v2.44.0-rc2 Junio C Hamano
2024-02-23 17:17  3% [ANNOUNCE] Git v2.44.0 Junio C Hamano
2024-03-05 12:10  4% [PATCH 0/7] reftable: memory optimizations for reflog iteration Patrick Steinhardt
2024-03-11 19:41  0% ` Josh Steadmon
2024-03-11 23:25  0%   ` Patrick Steinhardt
2024-04-19 17:14  3% [ANNOUNCE] Git v2.45.0-rc0 Junio C Hamano

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).