Merge branch 'jk/robustify-parse-commit' into jch

* jk/robustify-parse-commit:
  checkout: do not die when leaving broken detached HEAD
  use parse_commit_or_die instead of custom message
  use parse_commit_or_die instead of segfaulting
  assume parse_commit checks for NULL commit
  assume parse_commit checks commit->object.parsed
  log_tree_diff: die when we fail to parse a commit
Merge branch 'jh/loose-object-dirs-creation-race' into jch

* jh/loose-object-dirs-creation-race:
  sha1_file.c:create_tmpfile(): Fix race when creating loose object dirs
Merge branch 'jk/replace-perl-in-built-scripts' into jch

* jk/replace-perl-in-built-scripts:
  use @@PERL@@ in built scripts
Merge branch 'jc/merge-base-reflog' into jch

Code the logic in "pull --rebase" that figures out a fork point
from reflog entries in C.

* jc/merge-base-reflog:
  merge-base: teach "--fork-point" mode
  merge-base: use OPT_CMDMODE and clarify the command line parsing
Merge branch 'bc/http-100-continue' into jch

Issue "100 Continue" responses to help use of GSS-Negotiate
authentication scheme over HTTP transport when needed.

* bc/http-100-continue:
  remote-curl: fix large pushes with GSSAPI
  remote-curl: pass curl slot_results back through run_slot
  http: return curl's AUTHAVAIL via slot_results

# Conflicts:
# 	remote-curl.c
Merge branch 'nv/parseopt-opt-arg' into jch

Enhance "rev-parse --parseopt" mode to help parsing options with
an optional parameter.

* nv/parseopt-opt-arg:
  rev-parse --parseopt: add the --stuck-long mode
  Use the word 'stuck' instead of 'sticked'
Merge branch 'jc/ref-excludes' into jch

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.

* jc/ref-excludes:
  rev-parse: introduce --exclude=<glob> to tame wildcards
  rev-list --exclude: export add/clear-ref-exclusion and ref-excluded API
  rev-list --exclude: tests
  document --exclude option
  revision: introduce --exclude=<glob> to tame wildcards

# Conflicts:
# 	Documentation/git-rev-parse.txt
# 	builtin/rev-parse.c
Merge branch 'jk/two-way-merge-corner-case-fix' into jch

Fix a rather longstanding corner-case bug in twoway "reset to
there" merge, which is most often seen in "git am --abort".

* jk/two-way-merge-corner-case-fix:
  t1005: add test for "read-tree --reset -u A B"
  t1005: reindent
  unpack-trees: fix "read-tree -u --reset A B" with conflicted index
Merge branch 'cc/remote-remove-redundant-postfixcmp' into jch

Minor code clean-up.

* cc/remote-remove-redundant-postfixcmp:
  Rename suffixcmp() to has_suffix() and invert its result
  builtin/remote: remove postfixcmp() and use suffixcmp() instead
Merge branch 'th/reflog-annotated-tag' into jch

"git log -g $annotated_tag", when there is no reflog history, should
have produced a single output entry (i.e. the ref creation event),
but instead showed the history leading to the tag.

Broken at the design level.  Any reflog entry that points at a non
commit needs to be handled with new code that does not exist yet,
and lifting the "this code handles only commits" without adding
such code does not solve anything.

* th/reflog-annotated-tag:
  reflog: handle lightweight and annotated tags equally
Merge branch 'mh/fetch-tags-in-addition-to-normal-refs' into jch

The "-tags" option to "git fetch" used to be literally a synonym to
a "refs/tags/*:refs/tags/*" refspec, which meant that (1) as an
explicit refspec given from the command line, it silenced the lazy
"git fetch" default that is configured, and (2) also as an explicit
refspec given from the command line, it interacted with "--prune"
to remove any tag that the remote we are fetching from does not
have.

This demotes it to an option; with it, we fetch all tags in
addition to what would be fetched without the option, and it does
not interact with the decision "--prune" makes to see what
remote-tracking refs the local has are missing the remote
counterpart.

* mh/fetch-tags-in-addition-to-normal-refs: (23 commits)
  fetch: improve the error messages emitted for conflicting refspecs
  handle_duplicate(): mark error message for translation
  ref_remote_duplicates(): extract a function handle_duplicate()
  ref_remove_duplicates(): simplify loop logic
  t5536: new test of refspec conflicts when fetching
  ref_remove_duplicates(): avoid redundant bisection
  git-fetch.txt: improve description of tag auto-following
  fetch-options.txt: simplify ifdef/ifndef/endif usage
  fetch, remote: properly convey --no-prune options to subprocesses
  builtin/remote.c:update(): use struct argv_array
  builtin/remote.c: reorder function definitions
  query_refspecs(): move some constants out of the loop
  fetch --prune: prune only based on explicit refspecs
  fetch --tags: fetch tags *in addition to* other stuff
  fetch: only opportunistically update references based on command line
  get_expanded_map(): avoid memory leak
  get_expanded_map(): add docstring
  builtin/fetch.c: reorder function definitions
  get_ref_map(): rename local variables
  api-remote.txt: correct section "struct refspec"
  ...

# Conflicts:
# 	builtin/fetch.c
# 	builtin/remote.c
Merge branch 'sb/sha1-loose-object-info-check-existence' into jch

"git cat-file --batch-check=ok" did not check the existence of the
named object.

* sb/sha1-loose-object-info-check-existence:
  sha1_loose_object_info(): do not return success on missing object
Merge branch 'tb/doc-fetch-pack-url' into jch

* tb/doc-fetch-pack-url:
  git-fetch-pack uses URLs like git-fetch
Merge branch 'jn/mediawiki-makefile-updates' into jch

Build and Installation procedure clean-up.

* jn/mediawiki-makefile-updates:
  git-remote-mediawiki build: handle DESTDIR/INSTLIBDIR with whitespace
  git-remote-mediawiki build: make 'install' command configurable
  git-remote-mediawiki: honor DESTDIR in "make install"
  git-remote-mediawiki: do not remove installed files in "clean" target
Merge branch 'kb/doc-exclude-directory-semantics' into jch

* kb/doc-exclude-directory-semantics:
  gitignore.txt: clarify recursive nature of excluded directories
Merge branch 'nd/wt-status-align-i18n' into jch

An attempt to automatically align the names in the "git status"
output, taking the display width of (translated) section labels
into account.

* nd/wt-status-align-i18n:
  wt-status: take the alignment burden off translators
Merge branch 'jl/submodule-update-retire-orig-flags' into jch

Code clean-up.

* jl/submodule-update-retire-orig-flags:
  submodule update: remove unnecessary orig_flags variable
Merge branch 'mi/typofixes' into jch

* mi/typofixes:
  contrib: typofixes
  Documentation/technical/http-protocol.txt: typofixes
  typofixes: fix misspelt comments
Merge branch 'tr/config-multivalue-lift-max' into jch

* tr/config-multivalue-lift-max:
  config: arbitrary number of matches for --unset and --replace-all
Merge branch 'rh/remote-hg-bzr-updates' into jch

* rh/remote-hg-bzr-updates:
  remote-bzr, remote-hg: fix email address regular expression
  test-hg.sh: help user correlate verbose output with email test
  test-hg.sh: fix duplicate content strings in author tests
  test-hg.sh: avoid obsolete 'test' syntax
  test-hg.sh: eliminate 'local' bashism
  test-bzr.sh, test-hg.sh: prepare for change to push.default=simple
  test-bzr.sh, test-hg.sh: allow running from any dir
  test-lib.sh: convert $TEST_DIRECTORY to an absolute path
  remote-hg: don't decode UTF-8 paths into Unicode objects