Merge branch 'jk/warn-on-object-refname-ambiguity' into pu

* jk/warn-on-object-refname-ambiguity:
  get_sha1: drop object/refname ambiguity flag
  get_sha1: speed up ambiguous 40-hex test
  FIXUP: teach DO_FOR_EACH_NO_RECURSE to prime_ref_dir()
  refs: teach for_each_ref a flag to avoid recursion
  cat-file: fix a minor memory leak in batch_objects
  cat-file: refactor error handling of batch_objects

Conflicts:
	builtin/cat-file.c
Merge branch 'jk/pull-rebase-using-fork-point' into pu

* jk/pull-rebase-using-fork-point:
  rebase: fix fork-point with zero arguments
Merge branch 'mh/shorten-unambigous-ref' into pu

* mh/shorten-unambigous-ref:
  shorten_unambiguous_ref(): tighten up pointer arithmetic
  gen_scanf_fmt(): delete function and use snprintf() instead
  shorten_unambiguous_ref(): introduce a new local variable
Merge branch 'mm/mv-file-to-no-such-dir-with-slash' into pu

* mm/mv-file-to-no-such-dir-with-slash:
  mv: let 'git mv file no-such-dir/' error out on Windows, too
Merge branch 'jk/branch-at-publish' into pu

* jk/branch-at-publish:
  implement @{publish} shorthand
  branch_get: provide per-branch pushremote pointers
  branch_get: return early on error
  interpret_branch_name: factor out upstream handling
  sha1_name: refactor upstream_mark
### in flux or stalled
Merge branch 'jl/submodule-recursive-checkout' into pu

What is the doneness of this one???

* 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

* wk/submodule-on-branch:
  DONTMERGE: RFC will be rerolled with tests ($gmane/239967)
  submodule: respect requested branch on all clones
Merge branch 'mh/safe-create-leading-directories' into pu

Code clean-up and protection against concurrent write access to the
ref namespace.

Is ready for 'next', with or without minor nitfix.

* mh/safe-create-leading-directories:
  rename_tmp_log(): on SCLD_VANISHED, retry
  rename_tmp_log(): limit the number of remote_empty_directories() attempts
  rename_tmp_log(): handle a possible mkdir/rmdir race
  rename_ref(): extract function rename_tmp_log()
  remove_dir_recurse(): handle disappearing files and directories
  remove_dir_recurse(): tighten condition for removing unreadable dir
  lock_ref_sha1_basic(): if locking fails with ENOENT, retry
  lock_ref_sha1_basic(): on SCLD_VANISHED, retry
  safe_create_leading_directories(): add new error value SCLD_VANISHED
  cmd_init_db(): when creating directories, handle errors conservatively
  safe_create_leading_directories(): introduce enum for return values
  safe_create_leading_directories(): always restore slash at end of loop
  safe_create_leading_directories(): split on first of multiple slashes
  safe_create_leading_directories(): rename local variable
  safe_create_leading_directories(): add explicit "slash" pointer
  safe_create_leading_directories(): reduce scope of local variable
  safe_create_leading_directories(): fix format of "if" chaining
Merge branch 'ss/safe-create-leading-dir-with-slash' into pu

* ss/safe-create-leading-dir-with-slash:
  safe_create_leading_directories(): on Windows, \ can separate path components

# Conflicts:
# 	sha1_file.c
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