What's cooking (2020/03 #01)

todo
Junio C Hamano 2020-03-03 13:39:51 -08:00
parent 4d1c4e03ce
commit a615ef467b
1 changed files with 327 additions and 288 deletions

View File

@ -1,10 +1,10 @@
To: git@vger.kernel.org
Bcc: lwn@lwn.net
Subject: What's cooking in git.git (Feb 2020, #06; Fri, 28)
X-master-at: 2d2118b814c11f509e1aa76cb07110f7231668dc
X-next-at: f298c6ed49a42836ab0b0f9c379d447974961a64
Subject: What's cooking in git.git (Mar 2020, #01; Tue, 3)
X-master-at: 2f268890c2cd2f115424936bbee27f8269080e5e
X-next-at: 5e7596f4ac6ed24f8c8b715a297eeb8623e7c204

What's cooking in git.git (Feb 2020, #06; Fri, 28)
What's cooking in git.git (Mar 2020, #01; Tue, 3)
--------------------------------------------------

Here are the topics that have been cooking. Commits prefixed with
@ -12,106 +12,214 @@ Here are the topics that have been cooking. 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.

2.26-rc0 is planned to happen tomorrow (see tinyurl.com/gitCal).
The set of remaining topics in 'next' has been shrinking and today
may be a good cut-off point to declare that anything that is not in
'next' isn't expected to ship with the 2.26 release, unless it is an
obvious regression fix. That does not mean everything in 'next'
today will be in the release, either.

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"]

* ak/test-log-graph (2020-02-24) 2 commits
(merged to 'next' on 2020-02-25 at 2b68666ffa)
+ lib-log-graph: consolidate colored graph cmp logic
+ lib-log-graph: consolidate test_cmp_graph logic

Test update.


* ds/partial-clone-fixes (2020-02-22) 2 commits
(merged to 'next' on 2020-02-25 at a26434bb7a)
+ partial-clone: avoid fetching when looking for objects
+ partial-clone: demonstrate bugs in partial fetch

Fix for a bug revealed by a recent change to make the protocol v2
the default.


* en/check-ignore (2020-02-18) 1 commit
(merged to 'next' on 2020-02-22 at f05a752211)
+ check-ignore: fix documentation and implementation to match

"git check-ignore" did not work when the given path is explicitly
marked as not ignored with a negative entry in the .gitignore file.


* en/rebase-backend (2020-02-16) 20 commits
(merged to 'next' on 2020-02-22 at cae5eb0f18)
+ rebase: rename the two primary rebase backends
+ rebase: change the default backend from "am" to "merge"
+ rebase: make the backend configurable via config setting
+ rebase tests: repeat some tests using the merge backend instead of am
+ rebase tests: mark tests specific to the am-backend with --am
+ rebase: drop '-i' from the reflog for interactive-based rebases
+ git-prompt: change the prompt for interactive-based rebases
+ rebase: add an --am option
+ rebase: move incompatibility checks between backend options a bit earlier
+ git-rebase.txt: add more details about behavioral differences of backends
+ rebase: allow more types of rebases to fast-forward
+ t3432: make these tests work with either am or merge backends
+ rebase: fix handling of restrict_revision
+ rebase: make sure to pass along the quiet flag to the sequencer
+ rebase, sequencer: remove the broken GIT_QUIET handling
+ t3406: simplify an already simple test
+ rebase (interactive-backend): fix handling of commits that become empty
+ rebase (interactive-backend): make --keep-empty the default
+ t3404: directly test the behavior of interest
+ git-rebase.txt: update description of --allow-empty-message

"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.


* en/t3433-rebase-stat-dirty-failure (2020-02-19) 2 commits
(merged to 'next' on 2020-02-25 at 000d596d4c)
+ merge-recursive: fix the refresh logic in update_file_flags
+ t3433: new rebase testcase documenting a stat-dirty-like failure

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.


* es/worktree-cleanup (2020-02-24) 1 commit
(merged to 'next' on 2020-02-25 at 59bc458bcd)
+ worktree: drop unused code from get_main_worktree()

Code cleanup.


* jk/doc-diff-parallel (2020-02-18) 1 commit
(merged to 'next' on 2020-02-19 at 62b2264fca)
+ doc-diff: use single-colon rule in rendering Makefile

Update to doc-diff.


* jk/object-filter-with-bitmap (2020-02-18) 16 commits
(merged to 'next' on 2020-02-19 at d38487e23d)
+ rev-list --count: comment on the use of count_right++
(merged to 'next' on 2020-02-16 at 42425c3658)
+ pack-objects: support filters with bitmaps
+ pack-bitmap: implement BLOB_LIMIT filtering
+ pack-bitmap: implement BLOB_NONE filtering
+ bitmap: add bitmap_unset() function
+ rev-list: use bitmap filters for traversal
+ pack-bitmap: basic noop bitmap filter infrastructure
+ rev-list: allow commit-only bitmap traversals
+ t5310: factor out bitmap traversal comparison
+ rev-list: allow bitmaps when counting objects
+ rev-list: make --count work with --objects
+ rev-list: factor out bitmap-optimized routines
+ pack-bitmap: refuse to do a bitmap traversal with pathspecs
+ rev-list: fallback to non-bitmap traversal when filtering
+ pack-bitmap: fix leak of haves/wants object lists
+ pack-bitmap: factor out type iterator initialization

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.


* jk/push-option-doc-markup-fix (2020-02-18) 1 commit
(merged to 'next' on 2020-02-19 at 975e00fa99)
+ doc/config/push: use longer "--" line for preformatted example

Doc markup fix.


* jk/run-command-formatfix (2020-02-22) 1 commit
(merged to 'next' on 2020-02-25 at 39ad6eeb86)
+ run-command.h: fix mis-indented struct member

Code style cleanup.


* ma/test-cleanup (2020-02-24) 3 commits
(merged to 'next' on 2020-02-25 at ce00c705a9)
+ t: drop debug `cat` calls
+ t9810: drop debug `cat` call
+ t4117: check for files using `test_path_is_file`

Code cleanup.


* rs/blame-typefix-for-fingerprint (2020-02-24) 1 commit
(merged to 'next' on 2020-02-25 at 496309f50a)
+ blame: provide type of fingerprints pointer

Code cleanup.


* rs/micro-cleanups (2020-02-24) 2 commits
(merged to 'next' on 2020-02-25 at eaa8fd097b)
+ use strpbrk(3) to search for characters from a given set
+ quote: use isalnum() to check for alphanumeric characters

Code cleanup.

--------------------------------------------------
[New Topics]

* ag/rebase-remove-redundant-code (2020-02-26) 1 commit
(merged to 'next' on 2020-02-27 at b1f5289b67)
+ builtin/rebase: remove a call to get_oid() on `options.switch_to'
* ah/force-pull-rebase-configuration (2020-03-02) 1 commit
. pull: warn if the user didn't say whether to rebase or to merge

Code reduction.
"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).

Needs to adjust some tests.


* hd/show-one-mergetag-fix (2020-03-02) 1 commit
(merged to 'next' on 2020-03-02 at 12fe907f8d)
+ show_one_mergetag: print non-parent in hex form.

"git show" and others gave an object name in raw format in its
error output, which has been corrected to give it in hex.

Will merge to 'master'.


* js/ci-windows-update (2020-02-27) 3 commits
(merged to 'next' on 2020-02-27 at 691f1c929c)
+ Azure Pipeline: switch to the latest agent pools
+ ci: prevent `perforce` from being quarantined
+ t/lib-httpd: avoid using macOS' sed
* tg/retire-scripted-stash (2020-03-03) 2 commits
- stash: remove the stash.useBuiltin setting
- stash: get git_stash_config at the top level

Updates to the CI settings.

Will merge to 'master'.


* en/merge-path-collision (2020-02-27) 1 commit
- merge-recursive: apply collision handling unification to recursive case

Handling of conflicting renames in merge-recursive have further
been made consistent with how existing codepaths try to mimick what
is done to add/add conflicts.
"git stash" has kept an escape hatch to use the scripted version
for a few releases, which got stale. It has been removed.

Will merge to 'next'.


* en/test-cleanup (2020-02-27) 5 commits
- t6020: new test with interleaved lexicographic ordering of directories
- t6022, t6046: test expected behavior instead of testing a proxy for it
- t3035: prefer test_must_fail to bash negation for git commands
- t6020, t6022, t6035: update merge tests to use test helper functions
- t602[1236], t6034: modernize test formatting
* es/outside-repo-errmsg-hints (2020-03-03) 1 commit
- prefix_path: show gitdir if worktree unavailable

Test cleanup.
An earlier update to show the location of working tree in the error
message did not consider the possibility that a git command may be
run in a bare repository, which has been corrected.

Will merge to 'next'.
May want a test or two.


* js/https-proxy-config (2020-02-27) 2 commits
- config: documentation for HTTPS proxy client cert.
- http: add client cert for HTTPS proxies.
* rs/show-progress-in-dumb-http-fetch (2020-03-03) 1 commit
- remote-curl: show progress for fetches over dumb HTTP

A handful of options to configure SSL when talking to proxies have
been added.

Not enough review. Addition of on-disk key looks wrong.


* rs/commit-graph-code-simplification (2020-02-27) 1 commit
(merged to 'next' on 2020-02-27 at f298c6ed49)
+ commit-graph: use progress title directly

Code simplfication.

Will merge to 'master'.


* jc/doc-single-h-is-for-help (2020-02-27) 1 commit
- Documentation: clarify that `-h` alone stands for `help`

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.


* hi/gpg-use-check-signature (2020-02-28) 1 commit
- Revert "gpg-interface: prefer check_signature() for GPG verification"

"git merge signed-tag" while lacking the public key started to say
"No signature", which was utterly wrong. This regression has been
reverted.

Will merge to 'next'.


* rt/format-zero-length-fix (2020-02-28) 2 commits
- config.mak.dev: re-enable -Wformat-zero-length
- rebase-interactive.c: silence format-zero-length warnings

Recently we inadvertently added a few instances of using 0-width
format string to functions that we mark as printf-like without any
developers noticing. The root cause was that the compiler warning
that is triggered by this is almost always useless and we disabled
the warning in our developer builds, but not for general public.
The new instances have been corrected, and the warning has been
resurrected in the developer builds.
"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.

Will merge to 'next'.

@ -232,6 +340,106 @@ of the repositories listed at
--------------------------------------------------
[Cooking]

* ag/rebase-remove-redundant-code (2020-02-26) 1 commit
(merged to 'next' on 2020-02-27 at b1f5289b67)
+ builtin/rebase: remove a call to get_oid() on `options.switch_to'

Code reduction.

Will merge to 'master'.


* js/ci-windows-update (2020-02-27) 3 commits
(merged to 'next' on 2020-02-27 at 691f1c929c)
+ Azure Pipeline: switch to the latest agent pools
+ ci: prevent `perforce` from being quarantined
+ t/lib-httpd: avoid using macOS' sed

Updates to the CI settings.

Will merge to 'master'.


* en/merge-path-collision (2020-02-27) 1 commit
(merged to 'next' on 2020-03-02 at cb2655c779)
+ merge-recursive: apply collision handling unification to recursive case

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.

Will merge to 'master'.


* en/test-cleanup (2020-02-27) 5 commits
(merged to 'next' on 2020-03-02 at 93a81886b7)
+ t6020: new test with interleaved lexicographic ordering of directories
+ t6022, t6046: test expected behavior instead of testing a proxy for it
+ t3035: prefer test_must_fail to bash negation for git commands
+ t6020, t6022, t6035: update merge tests to use test helper functions
+ t602[1236], t6034: modernize test formatting

Test cleanup.

Will merge to 'master'.


* js/https-proxy-config (2020-02-27) 2 commits
- config: documentation for HTTPS proxy client cert.
- http: add client cert for HTTPS proxies.

A handful of options to configure SSL when talking to proxies have
been added.

Not enough review. Addition of on-disk key looks wrong.


* rs/commit-graph-code-simplification (2020-02-27) 1 commit
(merged to 'next' on 2020-02-27 at f298c6ed49)
+ commit-graph: use progress title directly

Code simplfication.

Will merge to 'master'.


* jc/doc-single-h-is-for-help (2020-02-27) 1 commit
- Documentation: clarify that `-h` alone stands for `help`

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.


* hi/gpg-use-check-signature (2020-02-28) 1 commit
(merged to 'next' on 2020-03-02 at 273fb30874)
+ Revert "gpg-interface: prefer check_signature() for GPG verification"

"git merge signed-tag" while lacking the public key started to say
"No signature", which was utterly wrong. This regression has been
reverted.

Will merge to 'master'.


* rt/format-zero-length-fix (2020-02-28) 2 commits
(merged to 'next' on 2020-03-02 at a4070ef573)
+ config.mak.dev: re-enable -Wformat-zero-length
+ rebase-interactive.c: silence format-zero-length warnings

Recently we inadvertently added a few instances of using 0-width
format string to functions that we mark as printf-like without any
developers noticing. The root cause was that the compiler warning
that is triggered by this is almost always useless and we disabled
the warning in our developer builds, but not for general public.
The new instances have been corrected, and the warning has been
resurrected in the developer builds.

Will merge to 'master'.


* pw/advise-rebase-skip (2019-12-06) 9 commits
- rebase -i: leave CHERRY_PICK_HEAD when there are conflicts
- rebase: fix advice when a fixup creates an empty commit
@ -252,98 +460,40 @@ of the repositories listed at


* at/rebase-fork-point-regression-fix (2020-02-11) 1 commit
- rebase: --fork-point regression fix
(merged to 'next' on 2020-03-02 at a1a84d37a7)
+ rebase: --fork-point regression fix

The "--fork-point" mode of "git rebase" regressed when the command
was rewritten in C back in 2.20 era, which has been corrected.

Will merge to 'next'.
Will merge to 'master'.
Was waiting for a response to "shouldn't this be sufficient?" but
I think it should.


* am/mingw-poll-fix (2020-02-27) 1 commit
- mingw: workaround for hangs when sending STDIN
(merged to 'next' on 2020-03-02 at 7082619f34)
+ mingw: workaround for hangs when sending STDIN

MinGW's poll() emulation has been improved.

Will merge to 'next'.


* en/check-ignore (2020-02-18) 1 commit
(merged to 'next' on 2020-02-22 at f05a752211)
+ check-ignore: fix documentation and implementation to match

"git check-ignore" did not work when the given path is explicitly
marked as not ignored with a negative entry in the .gitignore file.

Will merge to 'master'.


* en/t3433-rebase-stat-dirty-failure (2020-02-19) 2 commits
(merged to 'next' on 2020-02-25 at 000d596d4c)
+ merge-recursive: fix the refresh logic in update_file_flags
+ t3433: new rebase testcase documenting a stat-dirty-like failure

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.

Will merge to 'master'.


* jk/doc-diff-parallel (2020-02-18) 1 commit
(merged to 'next' on 2020-02-19 at 62b2264fca)
+ doc-diff: use single-colon rule in rendering Makefile

Update to doc-diff.

Will merge to 'master'.


* jk/push-option-doc-markup-fix (2020-02-18) 1 commit
(merged to 'next' on 2020-02-19 at 975e00fa99)
+ doc/config/push: use longer "--" line for preformatted example

Doc markup fix.

Will merge to 'master'.


* ak/test-log-graph (2020-02-24) 2 commits
(merged to 'next' on 2020-02-25 at 2b68666ffa)
+ lib-log-graph: consolidate colored graph cmp logic
+ lib-log-graph: consolidate test_cmp_graph logic

Test update.

Will merge to 'master'.


* ds/partial-clone-fixes (2020-02-22) 2 commits
(merged to 'next' on 2020-02-25 at a26434bb7a)
+ partial-clone: avoid fetching when looking for objects
+ partial-clone: demonstrate bugs in partial fetch

Fix for a bug revealed by a recent change to make the protocol v2
the default.

Will merge to 'master'.


* pb/am-show-current-patch (2020-02-20) 5 commits
- am: support --show-current-patch=diff to retrieve .git/rebase-apply/patch
- am: support --show-current-patch=raw as a synonym for--show-current-patch
- am: convert "resume" variable to a struct
- parse-options: convert "command mode" to a flag
- parse-options: add testcases for OPT_CMDMODE()
(merged to 'next' on 2020-03-02 at 30b5300705)
+ am: support --show-current-patch=diff to retrieve .git/rebase-apply/patch
+ am: support --show-current-patch=raw as a synonym for--show-current-patch
+ am: convert "resume" variable to a struct
+ parse-options: convert "command mode" to a flag
+ parse-options: add testcases for OPT_CMDMODE()

"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.

Will merge to 'next'.
Will merge to 'master'.


* bc/wildcard-credential (2020-02-20) 5 commits
@ -373,7 +523,8 @@ of the repositories listed at


* jc/describe-misnamed-annotated-tag (2020-02-20) 1 commit
- describe: force long format for a name based on a mislocated tag
(merged to 'next' on 2020-03-02 at b4e2ca6a46)
+ describe: force long format for a name based on a mislocated tag

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
@ -384,15 +535,6 @@ of the repositories listed at
behavior of the command has been changed to use the "long" form
i.e. A-0-gOBJECTNAME, which is correctly interpreted by rev-parse.

Will merge to 'next'.


* jk/run-command-formatfix (2020-02-22) 1 commit
(merged to 'next' on 2020-02-25 at 39ad6eeb86)
+ run-command.h: fix mis-indented struct member

Code style cleanup.

Will merge to 'master'.


@ -406,11 +548,12 @@ of the repositories listed at


* rj/t1050-use-test-path-is-file (2020-02-24) 1 commit
- t1050: replace test -f with test_path_is_file
(merged to 'next' on 2020-03-02 at 68a681640e)
+ t1050: replace test -f with test_path_is_file

Code cleanup.

Will merge to 'next'.
Will merge to 'master'.


* bc/sha-256-part-1-of-4 (2020-02-28) 22 commits
@ -440,7 +583,7 @@ of the repositories listed at
SHA-256 transition continues.

Tentatively I dropped the bits about signed tag, as it depended on
a reverted change to the gpg interface API.
a reverted change to the gpg interface API.


* es/do-not-let-rebase-switch-to-protected-branch (2020-02-24) 2 commits
@ -461,18 +604,9 @@ of the repositories listed at
+ worktree: add utility to find worktree by pathname
+ worktree: improve find_worktree() documentation

"git worktree add" used to get confused that the director to be
used to add a new worktreey, when given as a relative path, is
different from an existing one. This has been corrected.

Will merge to 'master'.


* es/worktree-cleanup (2020-02-24) 1 commit
(merged to 'next' on 2020-02-25 at 59bc458bcd)
+ worktree: drop unused code from get_main_worktree()

Code cleanup.
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.

Will merge to 'master'.

@ -511,40 +645,11 @@ of the repositories listed at


* kk/complete-diff-color-moved (2020-02-24) 1 commit
- completion: add diff --color-moved[-ws]
(merged to 'next' on 2020-03-02 at 1bdb401f6a)
+ completion: add diff --color-moved[-ws]

Completion update.

Will merge to 'next'.


* ma/test-cleanup (2020-02-24) 3 commits
(merged to 'next' on 2020-02-25 at ce00c705a9)
+ t: drop debug `cat` calls
+ t9810: drop debug `cat` call
+ t4117: check for files using `test_path_is_file`

Code cleanup.

Will merge to 'master'.


* rs/blame-typefix-for-fingerprint (2020-02-24) 1 commit
(merged to 'next' on 2020-02-25 at 496309f50a)
+ blame: provide type of fingerprints pointer

Code cleanup.

Will merge to 'master'.


* rs/micro-cleanups (2020-02-24) 2 commits
(merged to 'next' on 2020-02-25 at eaa8fd097b)
+ use strpbrk(3) to search for characters from a given set
+ quote: use isalnum() to check for alphanumeric characters

Code cleanup.

Will merge to 'master'.


@ -559,38 +664,9 @@ of the repositories listed at
Will merge to 'master'.


* jk/object-filter-with-bitmap (2020-02-18) 16 commits
(merged to 'next' on 2020-02-19 at d38487e23d)
+ rev-list --count: comment on the use of count_right++
(merged to 'next' on 2020-02-16 at 42425c3658)
+ pack-objects: support filters with bitmaps
+ pack-bitmap: implement BLOB_LIMIT filtering
+ pack-bitmap: implement BLOB_NONE filtering
+ bitmap: add bitmap_unset() function
+ rev-list: use bitmap filters for traversal
+ pack-bitmap: basic noop bitmap filter infrastructure
+ rev-list: allow commit-only bitmap traversals
+ t5310: factor out bitmap traversal comparison
+ rev-list: allow bitmaps when counting objects
+ rev-list: make --count work with --objects
+ rev-list: factor out bitmap-optimized routines
+ pack-bitmap: refuse to do a bitmap traversal with pathspecs
+ rev-list: fallback to non-bitmap traversal when filtering
+ pack-bitmap: fix leak of haves/wants object lists
+ pack-bitmap: factor out type iterator initialization

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.

Will merge to 'master'.


* hw/advise-ng (2020-02-27) 4 commits
* hw/advise-ng (2020-03-02) 5 commits
- tag: use new advice API to check visibility
- SQUASH???
- advice: revamp advise API
- advice: change "setupStreamFailure" to "setUpstreamFailure"
- advice: extract vadvise() from advise()
@ -630,25 +706,18 @@ of the repositories listed at
SHA-256 topic.


* es/bugreport (2020-02-20) 15 commits
- bugreport: summarize contents of alternates file
- bugreport: list contents of $OBJDIR/info
- bugreport: add packed object summary
- bugreport: count loose objects
- bugreport: collect list of populated hooks
- bugreport: add config values from safelist
- bugreport: generate config safelist based on docs
- bugreport: include user interactive shell
- bugreport: add git-remote-https version
* es/bugreport (2020-03-02) 5 commits
- bugreport: add compiler info
- bugreport: add uname info
- bugreport: gather git version and build info
- bugreport: add tool to generate debugging info
- help: add shell-path to --build-options
- help: move list_config_help to builtin/help

The "bugreport" tool.

This round has narrowed its scope significantly, and IMHO should be
easier to review.


* gs/commit-graph-path-filter (2020-02-12) 12 commits
- (bytesex breakage band-aid)
@ -694,50 +763,20 @@ of the repositories listed at


* am/pathspec-f-f-more (2020-02-19) 8 commits
- stash push: support the --pathspec-from-file option
- stash: eliminate crude option parsing
- doc: stash: synchronize <pathspec> description
- doc: stash: document more options
- doc: stash: split options from description (2)
- doc: stash: split options from description (1)
- rm: support the --pathspec-from-file option
- doc: rm: synchronize <pathspec> description
(merged to 'next' on 2020-03-02 at 33ff7e29f0)
+ stash push: support the --pathspec-from-file option
+ stash: eliminate crude option parsing
+ doc: stash: synchronize <pathspec> description
+ doc: stash: document more options
+ doc: stash: split options from description (2)
+ doc: stash: split options from description (1)
+ rm: support the --pathspec-from-file option
+ doc: rm: synchronize <pathspec> description

"git rm" and "git stash" learns the new "--pathspec-from-file"
option.

Will merge to 'next'.


* en/rebase-backend (2020-02-16) 20 commits
(merged to 'next' on 2020-02-22 at cae5eb0f18)
+ rebase: rename the two primary rebase backends
+ rebase: change the default backend from "am" to "merge"
+ rebase: make the backend configurable via config setting
+ rebase tests: repeat some tests using the merge backend instead of am
+ rebase tests: mark tests specific to the am-backend with --am
+ rebase: drop '-i' from the reflog for interactive-based rebases
+ git-prompt: change the prompt for interactive-based rebases
+ rebase: add an --am option
+ rebase: move incompatibility checks between backend options a bit earlier
+ git-rebase.txt: add more details about behavioral differences of backends
+ rebase: allow more types of rebases to fast-forward
+ t3432: make these tests work with either am or merge backends
+ rebase: fix handling of restrict_revision
+ rebase: make sure to pass along the quiet flag to the sequencer
+ rebase, sequencer: remove the broken GIT_QUIET handling
+ t3406: simplify an already simple test
+ rebase (interactive-backend): fix handling of commits that become empty
+ rebase (interactive-backend): make --keep-empty the default
+ t3404: directly test the behavior of interest
+ git-rebase.txt: update description of --allow-empty-message

"git rebase" has learned to use the sequencer backend by default,
while allowing "--am" option to go back to the traditional "am"
backend.

Will merge to 'master'.
cf. <CABPp-BEnt4C_7XyxQKxk4aga=JjM9fXCE-7SFp7azO_v5-pQYw@mail.gmail.com>

--------------------------------------------------
[Discarded]