Merge branch 'nd/i18n-poison-test-updates' into jch

Updates to tests that can be broken with gettext-poison builds.
Queued with trivial fix-ups.

Will merge to 'master' as part of the third batch.

* nd/i18n-poison-test-updates:
  Fix tests under GETTEXT_POISON on parseopt
  Fix tests under GETTEXT_POISON on git-remote
  Fix tests under GETTEXT_POISON on pack-object
  Fix tests under GETTEXT_POISON on git-apply
  Fix tests under GETTEXT_POISON on diffstat
  Fix tests under GETTEXT_POISON on git-stash
  Fix tests under GETTEXT_POISON on relative dates
Merge branch 'tr/maint-parseopt-avoid-empty' into jch

A workaround to avoid doing _(""), which translates to unwanted
magic string in the .po files.

Will merge to 'master' as part of the fourth batch.

* tr/maint-parseopt-avoid-empty:
  gettext: do not translate empty string
Merge branch 'pw/p4-use-client-spec-branch-detection' into jch

Fixes "git p4" when "--use-client-spec" and "--detect-branches" are
used together (the command used to misdetect branches).

Will merge to 'master' as part of the fourth batch.

* pw/p4-use-client-spec-branch-detection:
  git p4: make branch detection work with --use-client-spec
  git p4: do wildcard decoding in stripRepoPath
  git p4: set self.branchPrefixes in initialization
  git p4 test: add broken --use-client-spec --detect-branches tests
  git p4 test: move client_view() function to library
Merge branch 'lt/commit-tree-guess-utf-8' into jch

Teaches "git commit" and "git commit-tree" the "we are told to use
utf-8 in log message, but this does not look like utf-8---attempt to
pass it through convert-from-latin1-to-utf8 and see if it makes
sense" heuristics "git mailinfo" already uses.

Will merge to 'master' as part of the fourth batch.

* lt/commit-tree-guess-utf-8:
  commit/commit-tree: correct latin1 to utf-8
Merge branch 'kk/maint-for-each-ref-multi-sort' into jch

"git for-each-ref" did not currectly support more than one --sort
option.

Will merge to 'master' as part of the fourth batch.

* kk/maint-for-each-ref-multi-sort:
  for-each-ref: Fix sort with multiple keys
  t6300: test sort with multiple keys
Merge branch 'jk/config-warn-on-inaccessible-paths' into jch

When looking for $HOME/.gitconfig etc., it is OK if we cannot read
them because they do not exist, but unable to read existing ones
need to be diagnosed.

Will merge to 'master' as part of the fourth batch.

* jk/config-warn-on-inaccessible-paths:
  warn_on_inaccessible(): a helper to warn on inaccessible paths
  attr: warn on inaccessible attribute files
  gitignore: report access errors of exclude files
  config: warn on inaccessible files
Merge branch 'nd/am-i18n-fix' into jch

"git am" wasn't marked up for i18n properly.

Will merge to 'master' as part of the fourth batch.

* nd/am-i18n-fix:
  am: quote string for translation before passing to eval_gettextln
Merge branch 'nd/i18n-parseopt-help' into jch

A lot of i18n mark-up for the help text from "git <cmd> -h".

Will merge to 'master' as part of the fourth batch.

* nd/i18n-parseopt-help: (66 commits)
  Use imperative form in help usage to describe an action
  Reduce translations by using same terminologies
  i18n: write-tree: mark parseopt strings for translation
  i18n: verify-tag: mark parseopt strings for translation
  i18n: verify-pack: mark parseopt strings for translation
  i18n: update-server-info: mark parseopt strings for translation
  i18n: update-ref: mark parseopt strings for translation
  i18n: update-index: mark parseopt strings for translation
  i18n: tag: mark parseopt strings for translation
  i18n: symbolic-ref: mark parseopt strings for translation
  i18n: show-ref: mark parseopt strings for translation
  i18n: show-branch: mark parseopt strings for translation
  i18n: shortlog: mark parseopt strings for translation
  i18n: rm: mark parseopt strings for translation
  i18n: revert, cherry-pick: mark parseopt strings for translation
  i18n: rev-parse: mark parseopt strings for translation
  i18n: reset: mark parseopt strings for translation
  i18n: rerere: mark parseopt strings for translation
  i18n: status: mark parseopt strings for translation
  i18n: replace: mark parseopt strings for translation
  ...

Conflicts:
	builtin/grep.c
	builtin/revert.c
Merge branch 'jc/dotdot-is-parent-directory' into jch

"git log .." errored out saying it is both rev range and a path when
there is no disambiguating "--" is on the command line.  Update the
command line parser to interpret ".." as a path in such a case.

Will merge to 'master' as part of the fourth batch.

* jc/dotdot-is-parent-directory:
  specifying ranges: we did not mean to make ".." an empty set

Conflicts:
	builtin/rev-parse.c
	revision.c
Merge branch 'jc/apply-binary-p0' into jch

"git apply -p0" did not parse pathnames on "diff --git" line
correctly.  This caused patches that had pathnames in no other
places to be mistakenly rejected (most notably, binary patch that
does not rename nor change mode).  Textual patches, renames or
mode changes have preimage and postimage pathnames in different
places in a form that can be parsed unambiguously and did not suffer
from this problem.

Will merge to 'master' as part of the fourth batch.

* jc/apply-binary-p0:
  apply: compute patch->def_name correctly under -p0

Conflicts:
	t/t4103-apply-binary.sh
Merge branch 'jc/maint-doc-checkout-b-always-takes-branch-name' into jch

The synopsis said "checkout [-B branch]" to make it clear the branch
name is a parameter to the option, but the heading for the option
description was "-B::", not "-B branch::", making the documentation
misleading.  There may be room in documentation pages of other
commands for similar improvements (hint, hint).

Will merge to 'master' as part of the fourth batch.

* jc/maint-doc-checkout-b-always-takes-branch-name:
  doc: "git checkout -b/-B/--orphan" always takes a branch name
Merge branch 'nd/branch-v-alignment' into jch

Output from "git branch -v" contains "(no branch)" that could be
localized, but the code to align it along with the names of branches
were counting in bytes, not in display columns.

Will merge to 'master' as part of the fourth batch.

* nd/branch-v-alignment:
  branch -v: align even when branch names are in UTF-8
Merge branch 'jk/maint-http-half-auth-push' into jch

Pushing to smart HTTP server with recent Git fails without having
the username in the URL to force authentication, if the server is
configured to allow GET anonymously, while requiring authentication
for POST.

Will merge to 'master' as part of the fourth batch.

* jk/maint-http-half-auth-push:
  http: prompt for credentials on failed POST
  http: factor out http error code handling
  t: test http access to "half-auth" repositories
  t: test basic smart-http authentication
  t/lib-httpd: recognize */smart/* repos as smart-http
  t/lib-httpd: only route auth/dumb to dumb repos
  t5550: factor out http auth setup
  t5550: put auth-required repo in auth/dumb

Conflicts:
	http.c
Merge branch 'jk/maint-quiet-is-synonym-to-s-in-log' into jch

We tried to bend backwards to allow "--quiet" to be a synonym as
"-s" when given as e.g. "git show --quiet", but did not quite
succeed.

Will merge to 'master' as part of the fifth batch.

* jk/maint-quiet-is-synonym-to-s-in-log:
  log: fix --quiet synonym for -s
Merge branch 'ph/credential-gnome-keyring' into jch

The later refactoring of the shared code in the original series may
not be worth the trouble, so it is split into a separate topic that
builds on top of this one, which independently should be useful.

Will merge to 'master' as part of the fifth batch.

* ph/credential-gnome-keyring:
  contrib: add credential helper for GnomeKeyring
Merge branch 'mz/cherry-pick-cmdline-order' into jch

"git cherry-pick A C B" used to replay changes in A and then B and
then C if these three commits had committer timestamps in that
order, which is not what the user who said "A C B" naturally expects.

Will merge to 'master' as part of the fifth batch.

* mz/cherry-pick-cmdline-order:
  cherry-pick/revert: respect order of revisions to pick
  demonstrate broken 'git cherry-pick three one two'
  teach log --no-walk=unsorted, which avoids sorting

Conflicts:
	Documentation/rev-list-options.txt
Merge branch 'cn/branch-set-upstream-to' into jch

"git branch --set-upstream origin/master" is a common mistake to
create a local branch 'origin/master' and set it to integrate with
the current branch.  With a plan to deprecate this option, introduce
"git branch (-u|--set-upstream-to) origin/master" that sets the
current branch to integrate with 'origin/master' remote tracking
branch.

Will merge to 'master' as part of the fifth batch.

* cn/branch-set-upstream-to:
  branch: deprecate --set-upstream and show help if we detect possible mistaken use
  branch: add --unset-upstream option
  branch: introduce --set-upstream-to

Conflicts:
	builtin/branch.c
Merge branch 'nd/i18n-index-pack' into jch

Will merge to 'next'.

* nd/i18n-index-pack:
  i18n: mark more index-pack strings for translation
Merge branch 'jc/merge-bases' into jch

Optimise the "merge-base" computation a bit, and also update its
users that do not need the full merge-base information to call a
cheaper subset.

Will merge to 'next'.

* jc/merge-bases:
  reduce_heads(): reimplement on top of remove_redundant()
  merge-base: "--is-ancestor A B"
  get_merge_bases_many(): walk from many tips in parallel
  in_merge_bases(): use paint_down_to_common()
  merge_bases_many(): split out the logic to paint history
  in_merge_bases(): omit unnecessary redundant common ancestor reduction
  http-push: use in_merge_bases() for fast-forward check
  receive-pack: use in_merge_bases() for fast-forward check
  in_merge_bases(): support only one "other" commit
Merge branch 'jc/maint-ident-missing-human-name' into jch

"git show --format='%ci'" did not give timestamp correctly for
commits created without human readable name on "committer" line.

* jc/maint-ident-missing-human-name:
  split_ident_line(): make best effort when parsing author/committer line