diff.c: keep arrow(=>) on show_stats()'s shortened filename part to make rename visible.

"git diff -M --stat" can detect rename and show renamed file name like
"foofoofoo => barbarbar", but if destination filename is long the line
is shortened like "...barbarbar" so there is no way to know whether the
file is renamed or existed in the source commit.
This commit makes it visible like "...foo => ...bar".

Signed-off-by: Tsuneo Yoshioka <yoshiokatsuneo@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
mv: Fix spurious warning when moving a file in presence of submodules

In commit 0656781fa "git mv" learned to update the submodule path in the
.gitmodules file when moving a submodule in the work tree. But since that
commit update_path_in_gitmodules() gets called no matter if we moved a
submodule or a regular file, which is wrong and leads to a bogus warning
when moving a regular file in a repo containing a .gitmodules file:

    warning: Could not find section in .gitmodules where path=<filename>

Fix that by only calling update_path_in_gitmodules() when moving a
submodule. To achieve that, we introduce the special SUBMODULE_WITH_GITDIR
define to distinguish the cases where we also have to connect work tree
and git directory from those where we only need to update the .gitmodules
setting.

A test for submodules using a .git directory together with a .gitmodules
file has been added to t7001. Even though newer git versions will always
use a gitfile when cloning submodules, repositories cloned with older git
versions will still use this layout.

Reported-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
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

Will hold 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 'bc/gnome-keyring' into pu

Cleanups and tweaks for credential handling to work with ancient versions
of the gnome-keyring library that are still in use.

This is version 1 of the series, to give it more exposure.  Waiting for
the series to stabilize before including in 'next'.

* bc/gnome-keyring:
  contrib/git-credential-gnome-keyring.c: support really ancient gnome-keyring
  contrib/git-credential-gnome-keyring.c: support ancient gnome-keyring
  contrib/git-credential-gnome-keyring.c: report failure to store password
  contrib/git-credential-gnome-keyring.c: use glib messaging functions
  contrib/git-credential-gnome-keyring.c: use glib memory allocation functions
  contrib/git-credential-gnome-keyring.c: use secure memory for reading passwords
  contrib/git-credential-gnome-keyring.c: use secure memory functions for passwds
  contrib/git-credential-gnome-keyring.c: use gnome helpers in keyring_object()
  contrib/git-credential-gnome-keyring.c: ensure buffer is non-empty before accessing
  contrib/git-credential-gnome-keyring.c: strlen() returns size_t, not ssize_t
  contrib/git-credential-gnome-keyring.c: set Gnome application name
  contrib/git-credential-gnome-keyring.c: exit non-zero when called incorrectly
  contrib/git-credential-gnome-keyring.c: add static where applicable
  contrib/git-credential-gnome-keyring.c: remove unused die() function
  contrib/git-credential-gnome-keyring.c: remove unnecessary pre-declarations
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

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