Merge branch 'nd/magic-pathspecs' into pu

Migrate the rest of codebase to use "struct pathspec" more.

* nd/magic-pathspecs: (45 commits)
  Rename field "raw" to "_raw" in struct pathspec
  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
  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
  ...
Merge branch 'ap/strbuf-humanize' into pu

Teach "--human-readable" aka "-H" option to "git count-objects" to
show various large numbers in Ki/Mi/GiB scaled as necessary.

It may not be a bad idea to discard mc/count-objects-kibibytes,
which can introduce regression to scripted users that expect the
output to say "N kilobytes".  Opinions?

* ap/strbuf-humanize:
  count-objects: add -H option to humanize sizes
  strbuf: create strbuf_humanise_bytes() to show byte sizes

# Conflicts:
# 	builtin/count-objects.c
Merge branch 'jk/submodule-subdirectory-ok' into pu

Allow various subcommands of "git submodule" to be run not from the
top of the working tree of the superproject.

* jk/submodule-subdirectory-ok:
  submodule: drop the top-level requirement
  rev-parse: add --prefix option
Merge branch 'mv/sequencer-pick-error-diag' into pu

"git cherry-pick $blob $tree" is diagnosed as a nonsense.

* mv/sequencer-pick-error-diag:
  cherry-pick: make sure all input objects are commits
Merge branch 'fc/transport-helper-error-reporting' into pu

Rerolled enough times.  In-code comments may want to be further
extended to explain tricky parts, but seems to be ready otherwise.

* fc/transport-helper-error-reporting:
  transport-helper: improve push messages
  transport-helper: mention helper name when it dies
  transport-helper: report errors properly
Merge branch 'jk/http-dumb-namespaces' into pu

Allow smart-capable HTTP servers to be restricted via the
GIT_NAMESPACE mechanism when talking with commit-walker clients
(they already do so when talking with smart HTTP clients).

* jk/http-dumb-namespaces:
  http-backend: respect GIT_NAMESPACE with dumb clients
Merge branch 'jk/merge-tree-added-identically' into pu

We would most likely want to change things the other way around.

* jk/merge-tree-added-identically:
  merge-tree: don't print entries that match "local"
Merge branch 'as/clone-reference-with-gitfile' into pu

"git clone" did not work if a repository pointed at by the
"--reference" option is a gitfile that points at another place.

* as/clone-reference-with-gitfile:
  clone: Allow repo using gitfile as a reference
  clone: Fix error message for reference repository
Merge branch 'jk/doc-http-backend' into pu

Improve documentation to illustrate "push authenticated, fetch
anonymous" configuration for smart HTTP servers.

* jk/doc-http-backend:
  doc/http-backend: give some lighttpd config examples
  doc/http-backend: clarify "half-auth" repo configuration
Merge branch 'rs/empty-archive' into pu

Implementations of "tar" of BSD descend have found to have trouble
with reading an otherwise empty tar archive with pax headers and
causes an unnecessary test failure.

* rs/empty-archive:
  t5004: fix issue with empty archive test and bsdtar
Merge branch 'jk/gitweb-utf8' into pu

Various fixes to gitweb.

* jk/gitweb-utf8:
  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
Merge branch 'th/t9903-symlinked-workdir' into pu

* th/t9903-symlinked-workdir:
  t9903: Don't fail when run from path accessed through symlink
Merge branch 'fc/send-email-annotate' into pu

Looked basically OK to me. Comments?

* fc/send-email-annotate:
  format-patch: trivial cleanups
  format-patch: add format.coverLetter configuration variable
  log: update to OPT_BOOL
  format-patch: refactor branch name calculation
  format-patch: improve head calculation for cover-letter
  send-email: make annotate configurable
Merge branch 'jc/format-patch' into pu

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.

* jc/format-patch:
  format-patch: --inline-single
  format-patch: rename "no_inline" field
Merge branch 'nd/pretty-formats' into pu

A mixed bag of a bugfix and two fun enhancements on pretty formats
placeholder.

* nd/pretty-formats:
  pretty: support %>> that steal trailing spaces
  pretty: support truncating in %>, %< and %><
  pretty: support padding placeholders, %< %> and %><
  pretty: add %C(auto) for auto-coloring on the next placeholder
  pretty: two phase conversion for non utf-8 commits
  utf8: keep NULs in reencode_string()
  pretty: get the correct encoding for --pretty:format=%e
  pretty: save commit encoding from logmsg_reencode if the caller needs it
  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: share code between format_decoration and show_decorations
  pretty-formats.txt: wrap long lines

# Conflicts:
# 	pretty.c
Merge branch 'jl/submodule-mv' into pu

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

Seems to break tests in 'pu' but it may be a mismerge with
nd/magic-pathspecs topic.

* jl/submodule-mv:
  rm: delete .gitmodules entry of submodules removed from the work tree
  Teach mv to update the path entry in .gitmodules for moved submodules
  Teach mv to move submodules using a gitfile
  Teach mv to move submodules together with their work trees
Merge branch 'jc/gg' into pu

* jc/gg:
  commit: add get_commit_encoding()
  commit: rename parse_commit_date()
  commit: shrink "indegree" field

# Conflicts:
# 	pretty.c