Merge branch 'jk/color-for-more-pagers' into pu

* jk/color-for-more-pagers:
  pager: disable colors for some known-bad configurations
  DONOTMERGE: needs matching change to git-sh-setup
  setup_pager: set MORE=R
  setup_pager: refactor LESS/LV environment setting
Merge branch 'dk/blame-janitorial' into pu

* dk/blame-janitorial:
  DONOTMERGE: needs sign-off
  Eliminate same_suspect function in builtin/blame.c
  builtin/blame.c: struct blame_entry does not need a prev link
Merge branch 'cc/interpret-trailers' into pu

* cc/interpret-trailers:
  DONOTMERGE: style issues, unused funcs, etc.
  trailer: add tests for commands using env variables
  trailer: set author and committer env variables
  trailer: add tests for trailer command
  trailer: execute command from 'trailer.<name>.command'
  strbuf: add strbuf_replace()
  trailer: add new_trailer_item() function
  trailer: if no input file is passed, read from stdin
  trailer: add tests for "git interpret-trailers"
  trailer: add interpret-trailers command
  trailer: put all the processing together and print
  trailer: parse trailers from input file
  strbuf: add strbuf_isspace()
  trailer: process command line trailer arguments
  trailer: read and process config information
  trailer: process trailers from file and arguments
  Add data structures and basic functions for commit trailers
Merge branch 'jl/submodule-recursive-checkout' into pu

* jl/submodule-recursive-checkout:
  Teach checkout to recursively checkout submodules
  submodule: teach unpack_trees() to update submodules
  submodule: teach unpack_trees() to repopulate submodules
  submodule: teach unpack_trees() to remove submodule contents
  submodule: prepare for recursive checkout of submodules
Merge branch 'hv/submodule-ignore-fix' into pu

Teach "git add" to be consistent with "git status" when changes to
submodules are set to be ignored, to avoid surprises after checking
with "git status" to see there isn't any change to be further added
and then see that "git add ." adds changes to them.

I think a reroll is coming, so this may need to be replaced, but I
needed some practice with heavy conflict resolution.  It conflicts
with two changes to "git add" that have been scheduled for Git 2.0
quite badly, and I think I got the resolution right this time.

* hv/submodule-ignore-fix:
  disable complete ignorance of submodules for index <-> HEAD diff
  always show committed submodules in summary after commit
  teach add -f option for ignored submodules
  fix 'git add' to skip submodules configured as ignored
Merge branch 'wk/submodule-on-branch' into pu

Makes sure 'submodule update' modes that do not detach HEADs can
be used more pleasantly by checking out a concrete branch when
cloning them to prime the well.

This round seems to be almost ready; further discussions are of
course very much welcomed.

Will wait for another reroll to fix minor nits, at least.

* wk/submodule-on-branch:
  Documentation: Describe 'submodule update' modes in detail
  t7406: Add explicit tests for head attachement after cloning updates
  [DONOTMERGE] t7406: Just-cloned checkouts update to the gitlinked hash with 'reset'
  submodule: Explicit local branch creation in module_clone
  submodule: Document module_clone arguments in comments
  submodule: Make 'checkout' update_module explicit

# Conflicts:
# 	t/t7406-submodule-update.sh
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.

The tip one does not seem to have reached concensus (yet).

* kb/fast-hashmap:
  hashmap.h: make sure map entries are tightly packed
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 '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

Will hold until using script appears.

* tr/merge-recursive-index-only:
  merge-recursive: -Xindex-only to leave worktree unchanged
  merge-recursive: internal flag to avoid touching the worktree
  merge-recursive: remove dead conditional in update_stages()
Merge branch 'tg/perf-lib-test-perf-cleanup' into pu

Add test_perf_cleanup shell function to the perf suite, that allows
the script writers to define a test with a clean-up action.

Holding until needed.

* tg/perf-lib-test-perf-cleanup:
  perf-lib: add test_perf_cleanup target
  perf-lib: split starting the test from the execution
Merge branch 'yt/shortened-rename' into pu

Attempts to give more weight on the fact that a filepair represents
a rename than showing substring of the actual path when diffstat
lines are not wide enough.

I am not sure if that is solving a right problem, though.

* yt/shortened-rename:
  SQUASH??? style fixes and s/omit/shorten/ where appropriate
  diff.c: keep arrow(=>) on show_stats()'s shortened filename part to make rename visible
Merge branch 'jt/commit-fixes-footer' into pu

There is an ongoing discussion around this topic; in general I am
fairly negative on a new feature that is too narrow and prefer a
more generic solution that can be tailored for specific needs, as
many people stated in the thread.

It appears that the discussion stalled.

* jt/commit-fixes-footer:
  commit: Add -f, --fixes <commit> option to add Fixes: line
Merge branch 'jc/create-directories-microopt' into pu

Of unknown value until tested on non-Linux platforms (especially
Windows).

Will hold.

* jc/create-directories-microopt:
  checkout: most of the time we have good leading directories
Merge branch 'bl/blame-full-history' into pu

* bl/blame-full-history:
  blame: new option --prefer-first to better handle merged cherry-picks
### Reported/known to be broken
Merge branch 'mo/subtree-split-updates' into pu

Comments?

* mo/subtree-split-updates:
  subtree: add --edit option
  subtree: allow --squash and --message with push
  subtree: support split --rejoin --squash

# Conflicts:
# 	contrib/subtree/git-subtree.sh