Merge branch 'jk/diff-no-rename-empty' into pu

Forbids rename detection logic from matching two empty files as renames
during merge-recursive to prevent mismerges.

* jk/diff-no-rename-empty:
  merge-recursive: don't detect renames of empty files
  teach diffcore-rename to optionally ignore empty content
  make is_empty_blob_sha1 available everywhere
  drop casts from users EMPTY_TREE_SHA1_BIN
Merge branch 'rs/combine-diff-zero-context-at-the-beginning' into pu

Fixes an age old corner case bug in combine diff (only triggered with -U0
and the hunk at the beginning of the file needs to be shown).

* rs/combine-diff-zero-context-at-the-beginning:
  combine-diff: fix loop index underflow
Merge branch 'jc/commit-unedited-template' into pu

When "git commit --template F" errors out because the user did not touch
the message, it claimed that it aborts due to "empty message", which was
utterly wrong.

* jc/commit-unedited-template:
  Documentation/git-commit: rephrase the "initial-ness" of templates
  git-commit.txt: clarify -t requires editing message
  commit: rephrase the error when user did not touch templated log message
  commit: do not trigger bogus "has templated message edited" check
  t7501: test the right kind of breakage
Merge branch 'jk/http-backend-keep-committer-ident-env' into pu

The smart-http backend used to always override GIT_COMMITTER_* variables
with REMOTE_USER and REMOTE_ADDR.

* jk/http-backend-keep-committer-ident-env:
  http-backend: respect existing GIT_COMMITTER_* variables
Merge branch 'jc/push-upstream-sanity' into pu

"git push $there" without refspec, when the current branch is set to push
to a remote different from $there, used to push to $there using the
upstream information to a remote unreleated to $there.

This is necessary if we were to switch the push.default to 'current'.

* jc/push-upstream-sanity:
  [fixup] remove misguided "try to see if URLs are the same"
  push: detect nonsense "upstream" check more carefully
Merge branch 'jk/branch-quiet' into pu

Even with "-q"uiet option, "checkout" used to report setting up tracking.
Also "branch" learns "-q"uiet option to squelch informational message.

* jk/branch-quiet:
  teach "git branch" a --quiet option
  checkout: suppress tracking message with "-q"
Merge branch 'jc/run-hook-env-1' into pu

Not urgent.

Updates run_hook() API to be much less specific to "commit".  It would
only be useful if people start doing more interesting things with hooks.

* jc/run-hook-env-1:
  run_hook(): enhance the interface to pass arbitrary environment
Merge branch 'sl/autoconf' into pu

Updates our configure.ac to follow a better "autoconf" style.

* sl/autoconf:
  configure: be more idiomatic
  configure: avoid some code repetitions thanks to m4_{push,pop}def
  configure: move definitions of private m4 macros before AC_INIT invocation
Merge branch 'th/difftool-diffall' into pu

Rolls the two-directory-diff logic from diffall script (in contrib/) into
"git difftool" framework.

* th/difftool-diffall:
  difftool: print list of valid tools with '--tool-help'
  difftool: teach difftool to handle directory diffs
  difftool: eliminate setup_environment function
  difftool: stop appending '.exe' to git
  difftool: remove explicit change of PATH
  difftool: exit(0) when usage is printed
  difftool: add '--no-gui' option
  difftool: parse options using Getopt::Long
Merge branch 'jb/am-include' into pu

* jb/am-include:
  am: support --include option
Merge branch 'jc/am-report-3way' into pu

* jc/am-report-3way:
  am -3: list the paths that needed 3-way fallback
Merge branch 'jc/fmt-merge-msg-people' into pu

The "fmt-merge-msg" command learns to list the primary contributors
involved in the side topic you are merging.

Will defer til 1.7.10.

* jc/fmt-merge-msg-people:
  fmt-merge-msg: show those involved in a merged series
Merge branch 'jk/run-command-eacces' into pu

When PATH contains an unreadable directory, alias expansion code did not
kick in, and failed with an error that said "git-subcmd" was not found.

* jk/run-command-eacces:
  run-command: treat inaccessible directories as ENOENT
Merge branch 'hv/submodule-recurse-push' into pu

* hv/submodule-recurse-push:
  push: teach --recurse-submodules the on-demand option
  Refactor submodule push check to use string list instead of integer
  Teach revision walking machinery to walk multiple times sequencially

Conflicts:
	transport.h
Merge branch 'wk/gitweb-snapshot-use-if-modified-since' into pu

Makes 'snapshot' request to "gitweb" honor If-Modified-Since: header,
based on the commit date.

* wk/gitweb-snapshot-use-if-modified-since:
  gitweb: add If-Modified-Since handling to git_snapshot().
  gitweb: refactor If-Modified-Since handling
  gitweb: add `status` headers to git_feed() responses.
Merge branch 'bw/spawn-via-shell-path' into pu

"sh" on the user's PATH may be utterly broken on some systems;
consistently use SHELL_PATH even from inside run-command API.

Will squash the fixup and schedule it to merge soon after 1.7.10.

* bw/spawn-via-shell-path:
  Use SHELL_PATH from build system in run_command.c:prepare_shell_cmd
Merge branch 'it/fetch-pack-many-refs' into pu

Will squash the fix-up one and then requeue.

* it/fetch-pack-many-refs:
  remote-curl: main test case for the OS command line overflow
  fetch-pack: test cases for the new --stdin option
  fixup? no longer need flex argv[]
  remote-curl: send the refs to fetch-pack on stdin
  fetch-pack: new --stdin option to read refs from stdin

Conflicts:
	t/t5500-fetch-pack.sh
Merge branch 'rs/commit-list-sort-in-batch' into pu

* rs/commit-list-sort-in-batch:
  revision: insert unsorted, then sort in prepare_revision_walk()
  commit: use mergesort() in commit_list_sort_by_date()
  add mergesort() for linked lists
Merge branch 'jc/index-v4' into pu

* jc/index-v4:
  read-cache.c: write index v4 format
  read-cache.c: read prefix-compressed names in index on-disk version v4
  read-cache.c: move code to copy incore to ondisk cache to a helper function
  read-cache.c: move code to copy ondisk to incore cache to a helper function
  read-cache.c: report the header version we do not understand
  read-cache.c: make create_from_disk() report number of bytes it consumed
  read-cache.c: allow unaligned mapping of the index file
  cache.h: hide on-disk index details
  varint: make it available outside the context of pack
Merge branch 'jh/apply-free-patch' into pu

Valgrind reports quite a lot of discarded memory inside apply.  I started
auditing the memory ownership rules in the command, and am almost done.

Will defer til 1.7.10.

* jh/apply-free-patch:
  apply.c: WIP ownership audit
  apply: free unused fragments for submodule patch
  apply: free patch->result
  apply: release memory for fn_table
  apply: free patch->{def,old,new}_name fields
  apply: rename free_patch() to free_patch_list()
  apply: do not leak patches and fragments