Merge branch 'np/pack-v4' into pu

Nico and Duy advancing the eternal vaporware pack-v4.  This is here
primarily for wider distribution of the preview edition.

* np/pack-v4: (90 commits)
  packv4-parse.c: add tree offset caching
  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
  unpack-objects: decode v4 ref-delta
  unpack-objects: decode v4 object header
  unpack-objects: read v4 dictionaries
  unpack-objects: recognize end-of-pack in v4 thin pack
  unpack-objects: report missing object name
  pack v4: add a note that streaming does not support OBJ_PV4_*
  pack-objects: recognize v4 as pack source
  pack-objects: respect compression level in v4
  pack v4: move pv4 objhdr parsing code to packv4-parse.c
  pack v4: lift dict size check in load_dict()
  index-pack: support completing thin packs v4
  index-pack: use nr_objects_final as sha1_table size
  pack v4: support "end-of-pack" indicator in index-pack and pack-objects
  pack-objects: support writing pack v4
  ...

# Conflicts:
# 	builtin/pack-objects.c
# 	upload-pack.c
Merge branch 'jc/ref-excludes' into pu

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:
  document --exclude option
  revision: introduce --exclude=<glob> to tame wildcards
Merge branch 'rv/send-email-cache-generated-mid' into pu

* rv/send-email-cache-generated-mid:
  git-send-email: Cache generated message-ids, use them when prompting
  git-send-email: add optional 'choices' parameter to the ask sub
Merge branch 'jh/shorten-refname' into pu

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

$gmane/225137

* jh/shorten-refname:
  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
Merge branch 'jk/gitweb-utf8' into pu

Various fixes to gitweb.

Drew Northup volunteered to take a look into this.
$gmane/226216

* 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 '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

# Conflicts:
# 	builtin/log.c
# 	log-tree.c
# 	pretty.c
Merge branch 'jc/show-branch' into pu

* jc/show-branch:
  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

# Conflicts:
# 	builtin/show-branch.c
Merge branch 'rj/read-default-config-in-show-ref-pack-refs' into pu

The changes themselves are probably good, but it is unclear what
basic setting needs to be read for which exact operation.

$gmane/228294

* rj/read-default-config-in-show-ref-pack-refs:
  ### 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()
Merge branch 'tr/merge-recursive-index-only' into pu

Holding until there is a caller to learn from.

* tr/merge-recursive-index-only:
  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()
Merge branch 'kb/fast-hashmap' into pu

Improvements to our hash table to get it to meet the needs of the
msysgit fscache project, with some nice performance improvements.

Looks promising.  Needs style review and a sanity-check on the
design before including in 'next'.  Expecting a reroll once review
settles down.

* kb/fast-hashmap:
  fixup! diffcore-rename.c: simplify finding exact renames
  diffcore-rename.c: use new hash map implementation
  diffcore-rename.c: simplify finding exact renames
  diffcore-rename.c: move code around to prepare for the next patch
  buitin/describe.c: use new hash map implementation
  add a hashtable implementation that supports O(1) removal
Merge branch 'jl/submodule-mv' into pu

Moving a regular file in a repository with a .gitmodules file was
producing a warning 'Could not find section in .gitmodules where
path=<filename>'.

jrneider: "The test can use a little cleanup.  Otherwise looks good".

* jl/submodule-mv:
  mv: Fix spurious warning when moving a file in presence of submodules
Merge branch 'yt/shortened-rename' into pu

* yt/shortened-rename:
  diff.c: keep arrow(=>) on show_stats()'s shortened filename part to make rename visible.
Merge branch 'sg/t3600-nul-sha1-fix' into pu

* sg/t3600-nul-sha1-fix:
  t3600: fix broken "choking git rm" test
Merge branch 'mm/checkout-auto-track-fix' into pu

* mm/checkout-auto-track-fix:
  checkout: proper error message on 'git checkout foo bar --'
  checkout: allow dwim for branch creation for "git checkout $branch --"