Merge branch 'jc/directory-attrs-regression-fix' into pu

Fix 1.8.1.x regression that stopped matching "dir" (without
trailing slash) to a directory "dir".

* jc/directory-attrs-regression-fix:
  t: check that a pattern without trailing slash matches a directory
  dir.c::match_pathname(): pay attention to the length of string parameters
  dir.c::match_pathname(): adjust patternlen when shifting pattern
  dir.c::match_basename(): pay attention to the length of string parameters
  attr.c::path_matches(): special case paths that end with a slash
  attr.c::path_matches(): the basename is part of the pathname

# Conflicts:
# 	dir.c
Merge branch 'js/log-gpg' into pu

Teach "show/log" honor gpg.program configuration just like other
parts of the code that use GnuPG.

* js/log-gpg:
  log: read gpg settings for signed commit verification
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
Merge branch 'kb/status-ignored-optim' into pu

"git status --ignored" had many corner case bugs.  Also the command
has been optimized by taking advantage of the fact that paths that
are already known to the index do not have to be checked against
the .gitignore mechanism most of the time.

status but also in add and clean, so a bug in it can result in lost
data.

* kb/status-ignored-optim:
  dir.c: git-status: avoid is_excluded checks for tracked files
  dir.c: replace is_path_excluded with now equivalent is_excluded API
  dir.c: unify is_excluded and is_path_excluded APIs
  dir.c: move prep_exclude and factor out parts of last_exclude_matching
  dir.c: git-status --ignored: don't list empty directories as ignored
  dir.c: git-status --ignored: don't list empty ignored directories
  dir.c: git-status --ignored: don't list files in ignored directories
  dir.c: git-status --ignored: don't drop ignored directories
Merge branch 'nd/magic-pathspecs' into pu

Migrate the rest of codebase to use "struct pathspec" more.

* nd/magic-pathspecs: (45 commits)
  Rename field "raw" to "_raw" in struct pathspec
  pathspec: support :(glob) syntax
  pathspec: make --literal-pathspecs disable pathspec magic
  pathspec: support :(literal) syntax for noglob pathspec
  Kill limit_pathspec_to_literal() as it's only used by parse_pathspec()
  parse_pathspec: preserve prefix length via PATHSPEC_PREFIX_ORIGIN
  parse_pathspec: make sure the prefix part is wildcard-free
  tree-diff: remove the use of pathspec's raw[] in follow-rename codepath
  Remove match_pathspec() in favor of match_pathspec_depth()
  Remove init_pathspec() in favor of parse_pathspec()
  Remove diff_tree_{setup,release}_paths
  Convert common_prefix() to use struct pathspec
  Convert add_files_to_cache to take struct pathspec
  Convert {read,fill}_directory to take struct pathspec
  Convert refresh_index to take struct pathspec
  Convert report_path_error to take struct pathspec
  checkout: convert read_tree_some to take struct pathspec
  Convert unmerge_cache to take struct pathspec
  Convert run_add_interactive to use struct pathspec
  Convert read_cache_preload() to take struct pathspec
  ...
Merge branch 'tr/line-log' into pu

Rerolled.

* tr/line-log:
  Speed up log -L... -M
  log -L: :pattern:file syntax to find by funcname
  Implement line-history search (git log -L)
  Export rewrite_parents() for 'log -L'
  Refactor parse_loc
Merge branch 'tb/cygwin-shared-repository' into pu

Cygwin port has a faster-but-lying lstat(2) emulation whose
incorrectness does not matter in practice except for a few
codepaths, and setting permission bits to directories is a codepath
that needs to use a more correct one.

Comments?

* tb/cygwin-shared-repository:
  optimize set_shared_perm()
  Make core.sharedRepository work under cygwin 1.7
Merge branch 'jk/merge-tree-added-identically' into pu

We would most likely want to change things the other way around.

* jk/merge-tree-added-identically:
  merge-tree: fix "same file added in subdir"
Merge branch 'sg/gpg-sig' into pu

Teach "merge/pull" to optionally verify and reject commits that are
not signed properly.

* sg/gpg-sig:
  pretty printing: extend %G? to include 'N' and 'U'
  merge/pull Check for untrusted good GPG signatures
  [SQUASH???]
  merge/pull: verify GPG signatures of commits being merged
  [SQUASH???]
  commit.c: also look at the first GPG status line
  Move commit GPG signature verification to commit.c
Merge branch 'rr/triangle' into pu

Support "pull from one place, push to another place" workflow
better by introducing remote.pushdefault (overrides the "origin"
thing) and branch.*.pushremote (overrides the branch.*.remote).

* rr/triangle:
  remote.c: introduce branch.<name>.pushremote
  remote.c: introduce remote.pushdefault
  remote.c: introduce a way to have different remotes for fetch/push
  t5516 (fetch-push): drop implicit arguments from helper functions
  t5516 (fetch-push): update test description
  remote.c: simplify a bit of code using git_config_string()

# Conflicts:
# 	t/t5516-fetch-push.sh