Sync with 1.7.10

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Merge branch 'jk/add-unmerged' into HEAD

* jk/add-unmerged:
  add--interactive: ignore unmerged entries in patch mode
Merge branch 'jk/blame-tree' into HEAD

* jk/blame-tree:
  blame-tree wip
Merge branch 'jk/builtin-attr' into HEAD

* jk/builtin-attr:
  attr: drop C/C++ default extension mapping
  attr: map builtin userdiff drivers to well-known extensions
Merge branch 'jk/bundle-fetch' into HEAD

* jk/bundle-fetch:
  clone: give advice on how to resume a failed clone
  remote-curl: resume interrupted bundle transfers
  remote-curl: show progress for bundle downloads
  progress: allow pure-throughput progress meters
  remote-curl: try base $URL after $URL/info/refs
  remote-curl: auto-detect bundles when fetching refs
  remote-curl: free "discovery" object
  bundle: add is_bundle_buf helper
  transport: factor out bundle to ref list conversion
  remote-curl: use http callback for requesting refs
  http: add a public function for arbitrary-callback request
  http: refactor http_request function
  http: turn off curl signals
  t/lib-httpd: check for NO_CURL

Conflicts:
	http.c
Merge branch 'jk/byte-diff' into HEAD

* jk/byte-diff:
  diff: implement --bytediff mode for numstat
Merge branch 'jk/cache-patch-id' into HEAD

* jk/cache-patch-id:
  cache patch ids on disk
  cherry: read default config
  implement metadata cache subsystem
  map: implement persistent maps
  decorate: use "map" for the underlying implementation
  fast-export: use object to uint32 map instead of "decorate"
  implement generic key/value map
Merge branch 'jk/child-cleanup' into HEAD

* jk/child-cleanup:
  send-pack: kill pack-objects helper on signal or exit
Merge branch 'jk/config-sources' into HEAD

* jk/config-sources:
  show sources of config options (WIP)
Merge branch 'jk/describe' into HEAD

* jk/describe:
  describe WIP
Merge branch 'jk/dumpstat' into HEAD

* jk/dumpstat:
  dumpstat work in progress
Merge branch 'jk/exec-eaccess' into HEAD

* jk/exec-eaccess:
  run-command: treat inaccessible directories as ENOENT
Merge branch 'jk/fast-commit-list' into HEAD

* jk/fast-commit-list:
  fetch-pack: use priority queue for mark_complete
  commit: add infrastructure for priority queues of commits
  basic priority queue implementation
Merge branch 'jk/fetch-tracking' into HEAD

* jk/fetch-tracking:
  fetch tracking wip
Merge branch 'jk/format-patch-fix' into HEAD

* jk/format-patch-fix:
  format-patch: make "-p" suppress diffstat
Merge branch 'jk/generations' into HEAD

* jk/generations:
  limit "contains" traversals based on commit generation
  check commit generation cache validity against grafts
  pretty: support %G to show the generation number of a commit
  commit: add commit_generation function

Conflicts:
	metadata-cache.c
	metadata-cache.h
Merge branch 'jk/http-backend-ident' into HEAD

* jk/http-backend-ident:
  http-backend: respect existing GIT_COMMITTER_* variables
Merge branch 'jk/leading-symlinks' into HEAD

* jk/leading-symlinks:
  don't cross submodule boundaries in add
Merge branch 'jk/maint-ignore-have' into HEAD

* jk/maint-ignore-have:
  receive-pack: respect receive.advertiseAlternates config

Conflicts:
	builtin/receive-pack.c
Merge branch 'jk/merge-empty-rename' into HEAD

* jk/merge-empty-rename:
  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