Merge branch 'sz/submodule-force-update' into jch

We may want a documentation update and a few tests on top.

Not urgent.

* sz/submodule-force-update:
  Make 'git submodule update --force' always check out submodules.
Merge branch 'mm/push-default-switch-warning' into jch

Will defer for another cycle.

* mm/push-default-switch-warning:
  push: start warning upcoming default change for push.default
Merge branch 'jk/no-more-pre-exec-callback' into jch

Will defer for 6 months until ancient "less" goes extinct.

* jk/no-more-pre-exec-callback:
  pager: drop "wait for output to run less" hack
Merge branch 'da/difftool-updates' into jch

"git difftool --dir-diff" learned to use symbolic links to prepare
temporary copy of the working tree when available.

Not urgent.

* da/difftool-updates:
  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()
Merge branch 'jc/test-prereq' into jch

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.

Not urgent.

* jc/test-prereq:
  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
Merge branch 'jc/maint-config-exit-status' into jch

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

Not urgent.

* jc/maint-config-exit-status:
  config: "git config baa" should exit with status 1

Conflicts:
	builtin/config.c
Merge branch 'jk/maint-null-in-trees' into jch

We do not want a link to 0{40} object stored anywhere in our objects.

Not urgent.

* jk/maint-null-in-trees:
  fsck: detect null sha1 in tree entries
  do not write null sha1s to on-disk index
  diff: do not use null sha1 as a sentinel value

Conflicts:
	diff-no-index.c
	read-cache.c
Merge branch 'jc/maint-t7406-rev-parse-max-count-huh' into jch

Test clean-up, with no behaviour change.
Not urgent.

* jc/maint-t7406-rev-parse-max-count-huh:
  t7406: fix misleading "rev-parse --max-count=1 HEAD"
Merge branch 'pg/maint-apply-remove-unused-variable' into jch

Remove unused field.
Not urgent.

* pg/maint-apply-remove-unused-variable:
  apply: delete unused deflate_origlen from patch struct
Merge branch 'nd/index-errno' into jch

* nd/index-errno:
  read_index_from: remove bogus errno assignments
Merge branch 'mk/test-seq' into jch

Add a compatibility/utility function to the test framework.

* mk/test-seq:
  tests: Introduce test_seq
Merge branch 'jc/maint-sane-execvp-notdir' into jch

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

Not urgent.

* jc/maint-sane-execvp-notdir:
  sane_execvp(): ignore non-directory on $PATH
Merge branch 'jc/sanitize-nkd-lazy-iconv-open' into jch

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.

Not urgent.

* jc/sanitize-nkd-lazy-iconv-open:
  macos: lazily initialize iconv
Merge branch 'tr/maint-send-email-2047' into jch

"git send-email" did not unquote encoded words that appear on the
header correctly, and lost "_" from strings.

Not urgent.

* tr/maint-send-email-2047:
  send-email: improve RFC2047 quote parsing
Merge branch 'cw/cherry-pick-allow-empty-message' into jch

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

Not urgent.

* cw/cherry-pick-allow-empty-message:
  cherry-pick: add --allow-empty-message option
Merge branch 'jk/version-string' into jch

Leftover bits from the "git version" code restructuring, that
actually give us an ability to expose the Git version over the wire
in the protocol exchange.

* jk/version-string:
  include agent identifier in capability string
Merge branch 'mm/die-with-dashdash-help' into jch

Reword error messages.

* mm/die-with-dashdash-help:
  setup: clarify error messages for file/revisions ambiguity
Merge branch 'tr/merge-recursive-flush' into jch

Remove unnecessary code.

* tr/merge-recursive-flush:
  merge-recursive: eliminate flush_buffer() in favor of write_in_full()

Conflicts:
	merge-recursive.c
Merge branch 'tr/void-diff-setup-done' into jch

Remove unnecessary code.

* tr/void-diff-setup-done:
  diff_setup_done(): return void

Conflicts:
	merge-recursive.c
Merge branch 'ph/stash-rerere' into pu

Will be rerolled but is going in the right direction.

* ph/stash-rerere:
  stash: invoke rerere in case of conflict
  test: git-stash conflict sets up rerere