git
8 years agoFourth batch of topics for 2.10
Junio C Hamano [Mon, 11 Jul 2016 17:36:29 +0000 (10:36 -0700)] 
Fourth batch of topics for 2.10

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'master' of git://bogomips.org/git-svn
Junio C Hamano [Mon, 11 Jul 2016 17:31:52 +0000 (10:31 -0700)] 
Merge branch 'master' of git://bogomips.org/git-svn

* 'master' of git://bogomips.org/git-svn:
  git-svn: warn instead of dying when commit data is missing
  git-svn: clone: Fail on missing url argument

8 years agoMerge branch 'js/color-on-windows-comment'
Junio C Hamano [Mon, 11 Jul 2016 17:31:09 +0000 (10:31 -0700)] 
Merge branch 'js/color-on-windows-comment'

For a long time, we carried an in-code comment that said our
colored output would work only when we use fprintf/fputs on
Windows, which no longer is the case for the past few years.

* js/color-on-windows-comment:
  color.h: remove obsolete comment about limitations on Windows

8 years agoMerge branch 'mj/log-show-signature-conf'
Junio C Hamano [Mon, 11 Jul 2016 17:31:08 +0000 (10:31 -0700)] 
Merge branch 'mj/log-show-signature-conf'

"git log" learns log.showSignature configuration variable, and a
command line option "--no-show-signature" to countermand it.

* mj/log-show-signature-conf:
  log: add log.showSignature configuration variable
  log: add "--no-show-signature" command line option
  t4202: refactor test

8 years agoMerge branch 'js/find-commit-subject-ignore-leading-blanks'
Junio C Hamano [Mon, 11 Jul 2016 17:31:07 +0000 (10:31 -0700)] 
Merge branch 'js/find-commit-subject-ignore-leading-blanks'

A helper function that takes the contents of a commit object and
finds its subject line did not ignore leading blank lines, as is
commonly done by other codepaths.  Make it ignore leading blank
lines to match.

* js/find-commit-subject-ignore-leading-blanks:
  reset --hard: skip blank lines when reporting the commit subject
  sequencer: use skip_blank_lines() to find the commit subject
  commit -C: skip blank lines at the beginning of the message
  commit.c: make find_commit_subject() more robust
  pretty: make the skip_blank_lines() function public

8 years agoMerge branch 'jn/preformatted-doc-url'
Junio C Hamano [Mon, 11 Jul 2016 17:31:06 +0000 (10:31 -0700)] 
Merge branch 'jn/preformatted-doc-url'

The top level documentation "git help git" still pointed at the
documentation set hosted at now-defunct google-code repository.
Update it to point to https://git.github.io/htmldocs/git.html
instead.

* jn/preformatted-doc-url:
  doc: git-htmldocs.googlecode.com is no more

8 years agoMerge branch 'jk/perf-any-version'
Junio C Hamano [Mon, 11 Jul 2016 17:31:06 +0000 (10:31 -0700)] 
Merge branch 'jk/perf-any-version'

Allow t/perf framework to use the features from the most recent
version of Git even when testing an older installed version.

* jk/perf-any-version:
  p4211: explicitly disable renames in no-rename test
  t/perf: fix regression in testing older versions of git

8 years agoMerge branch 'jk/ansi-color'
Junio C Hamano [Mon, 11 Jul 2016 17:31:05 +0000 (10:31 -0700)] 
Merge branch 'jk/ansi-color'

The output coloring scheme learned two new attributes, italic and
strike, in addition to existing bold, reverse, etc.

* jk/ansi-color:
  color: support strike-through attribute
  color: support "italic" attribute
  color: allow "no-" for negating attributes
  color: refactor parse_attr
  add skip_prefix_mem helper
  doc: refactor description of color format
  color: fix max-size comment

8 years agoMerge branch 'sb/submodule-clone-retry'
Junio C Hamano [Mon, 11 Jul 2016 17:31:04 +0000 (10:31 -0700)] 
Merge branch 'sb/submodule-clone-retry'

"git submodule update" that drives many "git clone" could
eventually hit flaky servers/network conditions on one of the
submodules; the command learned to retry the attempt.

* sb/submodule-clone-retry:
  submodule update: continue when a clone fails
  submodule--helper: initial clone learns retry logic

8 years agoMerge branch 'jc/send-email-skip-backup'
Junio C Hamano [Mon, 11 Jul 2016 17:31:04 +0000 (10:31 -0700)] 
Merge branch 'jc/send-email-skip-backup'

A careless invocation of "git send-email directory/" after editing
0001-change.patch with an editor often ends up sending both
0001-change.patch and its backup file, 0001-change.patch~, causing
embarrassment and a minor confusion.  Detect such an input and
offer to skip the backup files when sending the patches out.

* jc/send-email-skip-backup:
  send-email: detect and offer to skip backup files

8 years agogit-svn: warn instead of dying when commit data is missing
Eric Wong [Sat, 2 Jul 2016 10:33:18 +0000 (10:33 +0000)] 
git-svn: warn instead of dying when commit data is missing

It is possible to have refs globbed by git-svn which stores data
purely in git; gently skip those instead of dying and assuming
user error.

ref: http://mid.gmane.org/CALi1mtdtNF_GtzyPTbfb7N51wwxsFY7zm8hsgwxr3tHcZZboyg@mail.gmail.com

Suggested-by: Jacob Godserv <jacobgodserv@gmail.com>
Cc: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Eric Wong <e@80x24.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoThird batch of topics for 2.10
Junio C Hamano [Wed, 6 Jul 2016 20:42:58 +0000 (13:42 -0700)] 
Third batch of topics for 2.10

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoSync with maint
Junio C Hamano [Wed, 6 Jul 2016 20:42:37 +0000 (13:42 -0700)] 
Sync with maint

* maint:
  More fixes for 2.9.1
  mailmap: use main email address for dturner

8 years agoMerge branch 'jc/t2300-setup'
Junio C Hamano [Wed, 6 Jul 2016 20:38:19 +0000 (13:38 -0700)] 
Merge branch 'jc/t2300-setup'

Portability fix for Windows.

* jc/t2300-setup:
  t2300: "git --exec-path" is not usable in $PATH on Windows as-is

8 years agoMerge branch 'ao/p4-has-branch-prefix-fix'
Junio C Hamano [Wed, 6 Jul 2016 20:38:19 +0000 (13:38 -0700)] 
Merge branch 'ao/p4-has-branch-prefix-fix'

A bug, which caused "git p4" while running under verbose mode to
report paths that are omitted due to branch prefix incorrectly, has
been fixed; the command said "Ignoring file outside of prefix" for
paths that are _inside_.

* ao/p4-has-branch-prefix-fix:
  git-p4: correct hasBranchPrefix verbose output

8 years agoMerge branch 'cb/t7810-test-label-fix'
Junio C Hamano [Wed, 6 Jul 2016 20:38:18 +0000 (13:38 -0700)] 
Merge branch 'cb/t7810-test-label-fix'

Test clean-up.

* cb/t7810-test-label-fix:
  t7810: fix duplicated test title

8 years agoMerge branch 'sb/t5614-modernize'
Junio C Hamano [Wed, 6 Jul 2016 20:38:17 +0000 (13:38 -0700)] 
Merge branch 'sb/t5614-modernize'

Test clean-up.

* sb/t5614-modernize:
  t5614: don't use subshells

8 years agoMerge branch 'js/perf-on-apple'
Junio C Hamano [Wed, 6 Jul 2016 20:38:16 +0000 (13:38 -0700)] 
Merge branch 'js/perf-on-apple'

t/perf needs /usr/bin/time with GNU extension; the invocation of it
is updated to "gtime" on Darwin.

* js/perf-on-apple:
  perf: accommodate for MacOSX

8 years agoMerge branch 'ak/t7800-wo-readlink'
Junio C Hamano [Wed, 6 Jul 2016 20:38:16 +0000 (13:38 -0700)] 
Merge branch 'ak/t7800-wo-readlink'

One among four invocations of readlink(1) in our test suite has
been rewritten so that the test can run on systems without the
command (others are in valgrind test framework and t9802).

* ak/t7800-wo-readlink:
  t7800: readlink may not be available

8 years agoMerge branch 'jk/tzoffset-fix'
Junio C Hamano [Wed, 6 Jul 2016 20:38:15 +0000 (13:38 -0700)] 
Merge branch 'jk/tzoffset-fix'

The internal code used to show local timezone offset is not
prepared to handle timestamps beyond year 2100, and gave a
bogus offset value to the caller.  Use a more benign looking
+0000 instead and let "git log" going in such a case, instead
of aborting.

* jk/tzoffset-fix:
  local_tzoffset: detect errors from tm_to_time_t
  t0006: test various date formats
  t0006: rename test-date's "show" to "relative"

8 years agoMerge branch 'js/mingw-parameter-less-c-functions'
Junio C Hamano [Wed, 6 Jul 2016 20:38:14 +0000 (13:38 -0700)] 
Merge branch 'js/mingw-parameter-less-c-functions'

Some platform-specific code had non-ANSI strict declarations of C
functions that do not take any parameters, which has been
corrected.

* js/mingw-parameter-less-c-functions:
  mingw: let the build succeed with DEVELOPER=1

8 years agoMerge branch 'lc/shell-default-value-noexpand'
Junio C Hamano [Wed, 6 Jul 2016 20:38:14 +0000 (13:38 -0700)] 
Merge branch 'lc/shell-default-value-noexpand'

Fix unnecessarily waste in the idiomatic use of ': ${VAR=default}'
to set the default value, without enclosing it in double quotes.

* lc/shell-default-value-noexpand:
  sh-setup: enclose setting of ${VAR=default} in double-quotes

8 years agoMerge branch 'sb/clone-shallow-passthru'
Junio C Hamano [Wed, 6 Jul 2016 20:38:13 +0000 (13:38 -0700)] 
Merge branch 'sb/clone-shallow-passthru'

Fix an unintended regression in v2.9 that breaks "clone --depth"
that recurses down to submodules by forcing the submodules to also
be cloned shallowly, which many server instances that host upstream
of the submodules are not prepared for.

* sb/clone-shallow-passthru:
  clone: do not let --depth imply --shallow-submodules

8 years agoMerge branch 'jk/gpg-interface-cleanup'
Junio C Hamano [Wed, 6 Jul 2016 20:38:12 +0000 (13:38 -0700)] 
Merge branch 'jk/gpg-interface-cleanup'

A new run-command API function pipe_command() is introduced to
sanely feed data to the standard input while capturing data from
the standard output and the standard error of an external process,
which is cumbersome to hand-roll correctly without deadlocking.

The codepath to sign data in a prepared buffer with GPG has been
updated to use this API to read from the status-fd to check for
errors (instead of relying on GPG's exit status).

* jk/gpg-interface-cleanup:
  gpg-interface: check gpg signature creation status
  sign_buffer: use pipe_command
  verify_signed_buffer: use pipe_command
  run-command: add pipe_command helper
  verify_signed_buffer: use tempfile object
  verify_signed_buffer: drop pbuf variable
  gpg-interface: use child_process.args

8 years agoMerge branch 'mg/signature-doc'
Junio C Hamano [Wed, 6 Jul 2016 20:38:12 +0000 (13:38 -0700)] 
Merge branch 'mg/signature-doc'

Formats of the various data (and how to validate them) where we use
GPG signature have been documented.

* mg/signature-doc:
  Documentation/technical: signed merge tag format
  Documentation/technical: signed commit format
  Documentation/technical: signed tag format
  Documentation/technical: describe signature formats

8 years agoMerge branch 'nd/graph-width-padded'
Junio C Hamano [Wed, 6 Jul 2016 20:38:12 +0000 (13:38 -0700)] 
Merge branch 'nd/graph-width-padded'

"log --graph --format=" learned that "%>|(N)" specifies the width
relative to the terminal's left edge, not relative to the area to
draw text that is to the right of the ancestry-graph section.  It
also now accepts negative N that means the column limit is relative
to the right border.

* nd/graph-width-padded:
  pretty.c: support <direction>|(<negative number>) forms
  pretty: pass graph width to pretty formatting for use in '%>|(N)'

8 years agoMerge branch 'jk/repack-keep-unreachable'
Junio C Hamano [Wed, 6 Jul 2016 20:38:11 +0000 (13:38 -0700)] 
Merge branch 'jk/repack-keep-unreachable'

"git repack" learned the "--keep-unreachable" option, which sends
loose unreachable objects to a pack instead of leaving them loose.
This helps heuristics based on the number of loose objects
(e.g. "gc --auto").

* jk/repack-keep-unreachable:
  repack: extend --keep-unreachable to loose objects
  repack: add --keep-unreachable option
  repack: document --unpack-unreachable option

8 years agoMerge branch 'ew/mboxrd-format-am'
Junio C Hamano [Wed, 6 Jul 2016 20:38:11 +0000 (13:38 -0700)] 
Merge branch 'ew/mboxrd-format-am'

Teach format-patch and mailsplit (hence "am") how a line that
happens to begin with "From " in the e-mail message is quoted with
">", so that these lines can be restored to their original shape.

* ew/mboxrd-format-am:
  am: support --patch-format=mboxrd
  mailsplit: support unescaping mboxrd messages
  pretty: support "mboxrd" output format

8 years agoMerge branch 'jk/upload-pack-hook'
Junio C Hamano [Wed, 6 Jul 2016 20:38:11 +0000 (13:38 -0700)] 
Merge branch 'jk/upload-pack-hook'

"upload-pack" allows a custom "git pack-objects" replacement when
responding to "fetch/clone" via the uploadpack.packObjectsHook.

* jk/upload-pack-hook:
  upload-pack: provide a hook for running pack-objects
  t1308: do not get fooled by symbolic links to the source tree
  config: add a notion of "scope"
  config: return configset value for current_config_ functions
  config: set up config_source for command-line config
  git_config_parse_parameter: refactor cleanup code
  git_config_with_options: drop "found" counting

8 years agoMerge branch 'nd/worktree-cleanup-post-head-protection'
Junio C Hamano [Wed, 6 Jul 2016 20:38:11 +0000 (13:38 -0700)] 
Merge branch 'nd/worktree-cleanup-post-head-protection'

Further preparatory clean-up for "worktree" feature continues.

* nd/worktree-cleanup-post-head-protection:
  worktree: simplify prefixing paths
  worktree: avoid 0{40}, too many zeroes, hard to read
  worktree.c: use is_dot_or_dotdot()
  git-worktree.txt: keep subcommand listing in alphabetical order
  worktree.c: rewrite mark_current_worktree() to avoid strbuf
  completion: support git-worktree

8 years agoMerge branch 'jk/bisect-show-tree'
Junio C Hamano [Wed, 6 Jul 2016 20:38:10 +0000 (13:38 -0700)] 
Merge branch 'jk/bisect-show-tree'

"git bisect" makes an internal call to "git diff-tree" when
bisection finds the culprit, but this call did not initialize the
data structure to pass to the diff-tree API correctly.

* jk/bisect-show-tree:
  bisect: always call setup_revisions after init_revisions

8 years agoMerge branch 'lf/sideband-returns-void'
Junio C Hamano [Wed, 6 Jul 2016 20:38:09 +0000 (13:38 -0700)] 
Merge branch 'lf/sideband-returns-void'

A small internal API cleanup.

* lf/sideband-returns-void:
  upload-pack.c: make send_client_data() return void
  sideband.c: make send_sideband() return void

8 years agoMerge branch 'jk/add-i-diff-compact-heuristics'
Junio C Hamano [Wed, 6 Jul 2016 20:38:09 +0000 (13:38 -0700)] 
Merge branch 'jk/add-i-diff-compact-heuristics'

"git add -i/-p" learned to honor diff.compactionHeuristic
experimental knob, so that the user can work on the same hunk split
as "git diff" output.

* jk/add-i-diff-compact-heuristics:
  add--interactive: respect diff.compactionHeuristic

8 years agoMerge branch 'km/fetch-do-not-free-remote-name'
Junio C Hamano [Wed, 6 Jul 2016 20:38:08 +0000 (13:38 -0700)] 
Merge branch 'km/fetch-do-not-free-remote-name'

The ownership rule for the piece of memory that hold references to
be fetched in "git fetch" was screwy, which has been cleaned up.

* km/fetch-do-not-free-remote-name:
  builtin/fetch.c: don't free remote->name after fetch

8 years agoMerge branch 'nd/test-lib-httpd-show-error-log-in-verbose'
Junio C Hamano [Wed, 6 Jul 2016 20:38:08 +0000 (13:38 -0700)] 
Merge branch 'nd/test-lib-httpd-show-error-log-in-verbose'

HTTPd tests learned to show the server error log to help diagnosing
a failing tests.

* nd/test-lib-httpd-show-error-log-in-verbose:
  lib-httpd.sh: print error.log on error

8 years agoMerge branch 'jk/string-list-static-init'
Junio C Hamano [Wed, 6 Jul 2016 20:38:07 +0000 (13:38 -0700)] 
Merge branch 'jk/string-list-static-init'

Instead of taking advantage of a struct string_list that is
allocated with all NULs happens to be STRING_LIST_INIT_NODUP kind,
initialize them explicitly as such, to document their behaviour
better.

* jk/string-list-static-init:
  use string_list initializer consistently
  blame,shortlog: don't make local option variables static
  interpret-trailers: don't duplicate option strings
  parse_opt_string_list: stop allocating new strings

8 years agoMerge branch 'jk/send-pack-stdio'
Junio C Hamano [Wed, 6 Jul 2016 20:38:07 +0000 (13:38 -0700)] 
Merge branch 'jk/send-pack-stdio'

Code clean-up.

* jk/send-pack-stdio:
  write_or_die: remove the unused write_or_whine() function
  send-pack: use buffered I/O to talk to pack-objects

8 years agoMerge branch 'pb/commit-editmsg-path'
Junio C Hamano [Wed, 6 Jul 2016 20:38:06 +0000 (13:38 -0700)] 
Merge branch 'pb/commit-editmsg-path'

Code clean-up.

* pb/commit-editmsg-path:
  builtin/commit.c: memoize git-path for COMMIT_EDITMSG

8 years agoMerge branch 'ep/http-curl-trace'
Junio C Hamano [Wed, 6 Jul 2016 20:38:06 +0000 (13:38 -0700)] 
Merge branch 'ep/http-curl-trace'

HTTP transport gained an option to produce more detailed debugging
trace.

* ep/http-curl-trace:
  imap-send.c: introduce the GIT_TRACE_CURL enviroment variable
  http.c: implement the GIT_TRACE_CURL environment variable

8 years agoMore fixes for 2.9.1
Junio C Hamano [Wed, 6 Jul 2016 20:08:02 +0000 (13:08 -0700)] 
More fixes for 2.9.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'jc/deref-tag' into maint
Junio C Hamano [Wed, 6 Jul 2016 20:06:46 +0000 (13:06 -0700)] 
Merge branch 'jc/deref-tag' into maint

Code clean-up.

* jc/deref-tag:
  blame, line-log: do not loop around deref_tag()

8 years agoMerge branch 'pb/strbuf-read-file-doc' into maint
Junio C Hamano [Wed, 6 Jul 2016 20:06:45 +0000 (13:06 -0700)] 
Merge branch 'pb/strbuf-read-file-doc' into maint

Minor doc update.

* pb/strbuf-read-file-doc:
  strbuf: describe the return value of strbuf_read_file

8 years agoMerge branch 'jk/fetch-prune-doc' into maint
Junio C Hamano [Wed, 6 Jul 2016 20:06:44 +0000 (13:06 -0700)] 
Merge branch 'jk/fetch-prune-doc' into maint

Minor doc update.

* jk/fetch-prune-doc:
  fetch: document that pruning happens before fetching

8 years agoMerge branch 'pc/occurred' into maint
Junio C Hamano [Wed, 6 Jul 2016 20:06:43 +0000 (13:06 -0700)] 
Merge branch 'pc/occurred' into maint

Typofix.

* pc/occurred:
  config.c: fix misspelt "occurred" in an error message
  refs.h: fix misspelt "occurred" in a comment

8 years agoMerge branch 'mg/cherry-pick-multi-on-unborn' into maint
Junio C Hamano [Wed, 6 Jul 2016 20:06:42 +0000 (13:06 -0700)] 
Merge branch 'mg/cherry-pick-multi-on-unborn' into maint

"git cherry-pick A" worked on an unborn branch, but "git
cherry-pick A..B" didn't.

* mg/cherry-pick-multi-on-unborn:
  cherry-pick: allow to pick to unborn branches

8 years agoMerge branch 'em/newer-freebsd-shells-are-fine-with-returns' into maint
Junio C Hamano [Wed, 6 Jul 2016 20:06:41 +0000 (13:06 -0700)] 
Merge branch 'em/newer-freebsd-shells-are-fine-with-returns' into maint

Comments about misbehaving FreeBSD shells have been clarified with
the version number (9.x and before are broken, newer ones are OK).

* em/newer-freebsd-shells-are-fine-with-returns:
  rebase: update comment about FreeBSD /bin/sh

8 years agoMerge branch 'lv/status-say-working-tree-not-directory' into maint
Junio C Hamano [Wed, 6 Jul 2016 20:06:40 +0000 (13:06 -0700)] 
Merge branch 'lv/status-say-working-tree-not-directory' into maint

"git status" used to say "working directory" when it meant "working
tree".

* lv/status-say-working-tree-not-directory:
  Use "working tree" instead of "working directory" for git status

8 years agoMerge branch 'nb/gnome-keyring-build' into maint
Junio C Hamano [Wed, 6 Jul 2016 20:06:40 +0000 (13:06 -0700)] 
Merge branch 'nb/gnome-keyring-build' into maint

Build improvements for gnome-keyring (in contrib/)

* nb/gnome-keyring-build:
  gnome-keyring: Don't hard-code pkg-config executable

8 years agoMerge branch 'et/add-chmod-x' into maint
Junio C Hamano [Wed, 6 Jul 2016 20:06:39 +0000 (13:06 -0700)] 
Merge branch 'et/add-chmod-x' into maint

"git update-index --add --chmod=+x file" may be usable as an escape
hatch, but not a friendly thing to force for people who do need to
use it regularly.  "git add --chmod=+x file" can be used instead.

* et/add-chmod-x:
  add: add --chmod=+x / --chmod=-x options

8 years agoMerge branch 'jk/avoid-unbounded-alloca' into maint
Junio C Hamano [Wed, 6 Jul 2016 20:06:39 +0000 (13:06 -0700)] 
Merge branch 'jk/avoid-unbounded-alloca' into maint

A codepath that used alloca(3) to place an unbounded amount of data
on the stack has been updated to avoid doing so.

* jk/avoid-unbounded-alloca:
  tree-diff: avoid alloca for large allocations

8 years agoMerge branch 'rj/compat-regex-size-max-fix' into maint
Junio C Hamano [Wed, 6 Jul 2016 20:06:38 +0000 (13:06 -0700)] 
Merge branch 'rj/compat-regex-size-max-fix' into maint

A compilation fix.

* rj/compat-regex-size-max-fix:
  regex: fix a SIZE_MAX macro redefinition warning

8 years agoMerge branch 'vs/prompt-avoid-unset-variable' into maint
Junio C Hamano [Wed, 6 Jul 2016 20:06:38 +0000 (13:06 -0700)] 
Merge branch 'vs/prompt-avoid-unset-variable' into maint

The git-prompt scriptlet (in contrib/) was not friendly with those
who uses "set -u", which has been fixed.

* vs/prompt-avoid-unset-variable:
  git-prompt.sh: Don't error on null ${ZSH,BASH}_VERSION, $short_sha

8 years agoMerge branch 'sg/reflog-past-root' into maint
Junio C Hamano [Wed, 6 Jul 2016 20:06:37 +0000 (13:06 -0700)] 
Merge branch 'sg/reflog-past-root' into maint

"git reflog" stopped upon seeing an entry that denotes a branch
creation event (aka "unborn"), which made it appear as if the
reflog was truncated.

* sg/reflog-past-root:
  reflog: continue walking the reflog past root commits

8 years agoMerge branch 'dn/gpg-doc' into maint
Junio C Hamano [Wed, 6 Jul 2016 20:06:36 +0000 (13:06 -0700)] 
Merge branch 'dn/gpg-doc' into maint

The documentation tries to consistently spell "GPG"; when
referring to the specific program name, "gpg" is used.

* dn/gpg-doc:
  Documentation: GPG capitalization

8 years agoMerge branch 'ap/git-svn-propset-doc' into maint
Junio C Hamano [Wed, 6 Jul 2016 20:06:35 +0000 (13:06 -0700)] 
Merge branch 'ap/git-svn-propset-doc' into maint

"git svn propset" subcommand that was added in 2.3 days is
documented now.

* ap/git-svn-propset-doc:
  git-svn: document the 'git svn propset' command

8 years agoMerge branch 'tr/doc-tt' into maint
Junio C Hamano [Wed, 6 Jul 2016 20:06:34 +0000 (13:06 -0700)] 
Merge branch 'tr/doc-tt' into maint

The documentation set has been updated so that literal commands,
configuration variables and environment variables are consistently
typeset in fixed-width font and bold in manpages.

* tr/doc-tt:
  doc: change configuration variables format
  doc: more consistency in environment variables format
  doc: change environment variables format
  doc: clearer rule about formatting literals

8 years agomailmap: use main email address for dturner
David Turner [Mon, 4 Jul 2016 06:05:24 +0000 (02:05 -0400)] 
mailmap: use main email address for dturner

Signed-off-by: David Turner <novalis@novalis.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agogit-svn: clone: Fail on missing url argument
Christopher Layne [Sun, 3 Jul 2016 05:39:23 +0000 (05:39 +0000)] 
git-svn: clone: Fail on missing url argument

cmd_clone should detect a missing $url arg before using it otherwise
an uninitialized value error is emitted in even the simplest case of
'git svn clone' without arguments.

Signed-off-by: Christopher Layne <clayne@anodized.com>
Signed-off-by: Eric Wong <e@80x24.org>
8 years agoreset --hard: skip blank lines when reporting the commit subject
Johannes Schindelin [Wed, 29 Jun 2016 14:14:50 +0000 (16:14 +0200)] 
reset --hard: skip blank lines when reporting the commit subject

When there are blank lines at the beginning of a commit message, the
pretty printing machinery already skips them when showing a commit
subject (or the complete commit message). We shall henceforth do the
same when reporting the commit subject after the user called

git reset --hard <commit>

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agosequencer: use skip_blank_lines() to find the commit subject
Johannes Schindelin [Wed, 29 Jun 2016 14:14:46 +0000 (16:14 +0200)] 
sequencer: use skip_blank_lines() to find the commit subject

Just like we already taught the find_commit_subject() function (to make
it consistent with the code in pretty.c), we now simply skip leading
blank lines of the commit message.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agocommit -C: skip blank lines at the beginning of the message
Johannes Schindelin [Wed, 29 Jun 2016 14:14:42 +0000 (16:14 +0200)] 
commit -C: skip blank lines at the beginning of the message

Consistent with the pretty-printing machinery, we skip leading blank
lines (if any) of existing commit messages.

While Git itself only produces commit objects with a single empty line
between commit header and commit message, it is legal to have more than
one blank line (i.e. lines containing only white space, or no
characters) at the beginning of the commit message, and the
pretty-printing code already handles that.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agocolor.h: remove obsolete comment about limitations on Windows
Johannes Schindelin [Tue, 28 Jun 2016 10:02:49 +0000 (12:02 +0200)] 
color.h: remove obsolete comment about limitations on Windows

Originally, ANSI color sequences were supported on Windows only by
overriding the printf() and fprintf() functions, as mentioned in e7821d7
(Add a notice that only certain functions can print color escape codes,
2009-11-27).

As of eac14f8 (Win32: Thread-safe windows console output, 2012-01-14),
however, this is no longer the case, as the ANSI color sequence support
code needed to be replaced with a thread-safe version, one side effect
being that stdout and stderr handled no matter which function is used to
write to it.

So let's just remove the comment that is now obsolete.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoSecond batch of topics for 2.10
Junio C Hamano [Mon, 27 Jun 2016 17:07:08 +0000 (10:07 -0700)] 
Second batch of topics for 2.10

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoSync with maint
Junio C Hamano [Mon, 27 Jun 2016 17:00:15 +0000 (10:00 -0700)] 
Sync with maint

* maint:
  Start preparing for 2.9.1

8 years agoStart preparing for 2.9.1
Junio C Hamano [Mon, 27 Jun 2016 16:59:51 +0000 (09:59 -0700)] 
Start preparing for 2.9.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'tb/complete-status'
Junio C Hamano [Mon, 27 Jun 2016 16:56:54 +0000 (09:56 -0700)] 
Merge branch 'tb/complete-status'

The completion script (in contrib/) learned to complete "git
status" options.

* tb/complete-status:
  completion: add git status
  completion: add __git_get_option_value helper
  completion: factor out untracked file modes into a variable

8 years agoMerge branch 'mg/cherry-pick-multi-on-unborn'
Junio C Hamano [Mon, 27 Jun 2016 16:56:53 +0000 (09:56 -0700)] 
Merge branch 'mg/cherry-pick-multi-on-unborn'

"git cherry-pick A" worked on an unborn branch, but "git
cherry-pick A..B" didn't.

* mg/cherry-pick-multi-on-unborn:
  cherry-pick: allow to pick to unborn branches

8 years agoMerge branch 'lf/receive-pack-auto-gc-to-client'
Junio C Hamano [Mon, 27 Jun 2016 16:56:52 +0000 (09:56 -0700)] 
Merge branch 'lf/receive-pack-auto-gc-to-client'

Allow messages that are generated by auto gc during "git push" on
the receiving end to be explicitly passed back to the sending end
over sideband, so that they are shown with "remote: " prefix to
avoid confusing the users.

* lf/receive-pack-auto-gc-to-client:
  receive-pack: send auto-gc output over sideband 2

8 years agoMerge branch 'em/newer-freebsd-shells-are-fine-with-returns'
Junio C Hamano [Mon, 27 Jun 2016 16:56:52 +0000 (09:56 -0700)] 
Merge branch 'em/newer-freebsd-shells-are-fine-with-returns'

Comments about misbehaving FreeBSD shells have been clarified with
the version number (9.x and before are broken, newer ones are OK).

* em/newer-freebsd-shells-are-fine-with-returns:
  rebase: update comment about FreeBSD /bin/sh

8 years agoMerge branch 'lv/status-say-working-tree-not-directory'
Junio C Hamano [Mon, 27 Jun 2016 16:56:51 +0000 (09:56 -0700)] 
Merge branch 'lv/status-say-working-tree-not-directory'

"git status" used to say "working directory" when it meant "working
tree".

* lv/status-say-working-tree-not-directory:
  Use "working tree" instead of "working directory" for git status

8 years agoMerge branch 'nb/gnome-keyring-build'
Junio C Hamano [Mon, 27 Jun 2016 16:56:50 +0000 (09:56 -0700)] 
Merge branch 'nb/gnome-keyring-build'

Build improvements for gnome-keyring (in contrib/)

* nb/gnome-keyring-build:
  gnome-keyring: Don't hard-code pkg-config executable

8 years agoMerge branch 'jc/deref-tag'
Junio C Hamano [Mon, 27 Jun 2016 16:56:49 +0000 (09:56 -0700)] 
Merge branch 'jc/deref-tag'

Code clean-up.

* jc/deref-tag:
  blame, line-log: do not loop around deref_tag()

8 years agoMerge branch 'et/add-chmod-x'
Junio C Hamano [Mon, 27 Jun 2016 16:56:49 +0000 (09:56 -0700)] 
Merge branch 'et/add-chmod-x'

"git update-index --add --chmod=+x file" may be usable as an escape
hatch, but not a friendly thing to force for people who do need to
use it regularly.  "git add --chmod=+x file" can be used instead.

* et/add-chmod-x:
  add: add --chmod=+x / --chmod=-x options

8 years agoMerge branch 'jk/avoid-unbounded-alloca'
Junio C Hamano [Mon, 27 Jun 2016 16:56:48 +0000 (09:56 -0700)] 
Merge branch 'jk/avoid-unbounded-alloca'

* jk/avoid-unbounded-alloca:
  tree-diff: avoid alloca for large allocations

8 years agoMerge branch 'rj/compat-regex-size-max-fix'
Junio C Hamano [Mon, 27 Jun 2016 16:56:47 +0000 (09:56 -0700)] 
Merge branch 'rj/compat-regex-size-max-fix'

A compilation fix.

* rj/compat-regex-size-max-fix:
  regex: fix a SIZE_MAX macro redefinition warning

8 years agoMerge branch 'vs/prompt-avoid-unset-variable'
Junio C Hamano [Mon, 27 Jun 2016 16:56:47 +0000 (09:56 -0700)] 
Merge branch 'vs/prompt-avoid-unset-variable'

The git-prompt scriptlet (in contrib/) was not friendly with those
who uses "set -u", which has been fixed.

* vs/prompt-avoid-unset-variable:
  git-prompt.sh: Don't error on null ${ZSH,BASH}_VERSION, $short_sha

8 years agoMerge branch 'sg/reflog-past-root'
Junio C Hamano [Mon, 27 Jun 2016 16:56:46 +0000 (09:56 -0700)] 
Merge branch 'sg/reflog-past-root'

"git reflog" stopped upon seeing an entry that denotes a branch
creation event (aka "unborn"), which made it appear as if the
reflog was truncated.

* sg/reflog-past-root:
  reflog: continue walking the reflog past root commits

8 years agoMerge branch 'pb/strbuf-read-file-doc'
Junio C Hamano [Mon, 27 Jun 2016 16:56:46 +0000 (09:56 -0700)] 
Merge branch 'pb/strbuf-read-file-doc'

* pb/strbuf-read-file-doc:
  strbuf: describe the return value of strbuf_read_file

8 years agoMerge branch 'dn/gpg-doc'
Junio C Hamano [Mon, 27 Jun 2016 16:56:45 +0000 (09:56 -0700)] 
Merge branch 'dn/gpg-doc'

The documentation tries to consistently spell "GPG"; when
referring to the specific program name, "gpg" is used.

* dn/gpg-doc:
  Documentation: GPG capitalization

8 years agoMerge branch 'jk/fetch-prune-doc'
Junio C Hamano [Mon, 27 Jun 2016 16:56:44 +0000 (09:56 -0700)] 
Merge branch 'jk/fetch-prune-doc'

* jk/fetch-prune-doc:
  fetch: document that pruning happens before fetching

8 years agoMerge branch 'ap/git-svn-propset-doc'
Junio C Hamano [Mon, 27 Jun 2016 16:56:43 +0000 (09:56 -0700)] 
Merge branch 'ap/git-svn-propset-doc'

"git svn propset" subcommand that was added in 2.3 days is
documented now.

* ap/git-svn-propset-doc:
  git-svn: document the 'git svn propset' command

8 years agoMerge branch 'tr/doc-tt'
Junio C Hamano [Mon, 27 Jun 2016 16:56:42 +0000 (09:56 -0700)] 
Merge branch 'tr/doc-tt'

The documentation set has been updated so that literal commands,
configuration variables and environment variables are consistently
typeset in fixed-width font and bold in manpages.

* tr/doc-tt:
  doc: change configuration variables format
  doc: more consistency in environment variables format
  doc: change environment variables format
  doc: clearer rule about formatting literals

8 years agoMerge branch 'pc/occurred'
Junio C Hamano [Mon, 27 Jun 2016 16:56:42 +0000 (09:56 -0700)] 
Merge branch 'pc/occurred'

* pc/occurred:
  config.c: fix misspelt "occurred" in an error message
  refs.h: fix misspelt "occurred" in a comment

8 years agoMerge branch 'cc/apply-introduce-state'
Junio C Hamano [Mon, 27 Jun 2016 16:56:42 +0000 (09:56 -0700)] 
Merge branch 'cc/apply-introduce-state'

The "git apply" standalone program is being libified; this is the
first step to move many state variables into a structure that can
be explicitly (re)initialized to make the machinery callable more
than once.

The next step that moves some remaining state variables into the
structure and turns die()s into an error return that propagates up
to the caller is not queued yet but in flight.  It would be good to
review the above first and give the remainder of the series a solid
base to build on.

* cc/apply-introduce-state: (50 commits)
  builtin/apply: remove misleading comment on lock_file field
  builtin/apply: move 'newfd' global into 'struct apply_state'
  builtin/apply: add 'lock_file' pointer into 'struct apply_state'
  builtin/apply: move applying patches into apply_all_patches()
  builtin/apply: move 'state' check into check_apply_state()
  builtin/apply: move 'symlink_changes' global into 'struct apply_state'
  builtin/apply: move 'fn_table' global into 'struct apply_state'
  builtin/apply: move 'state_linenr' global into 'struct apply_state'
  builtin/apply: move 'max_change' and 'max_len' into 'struct apply_state'
  builtin/apply: move 'ws_ignore_action' into 'struct apply_state'
  builtin/apply: move 'ws_error_action' into 'struct apply_state'
  builtin/apply: move 'applied_after_fixing_ws' into 'struct apply_state'
  builtin/apply: move 'squelch_whitespace_errors' into 'struct apply_state'
  builtin/apply: remove whitespace_option arg from set_default_whitespace_mode()
  builtin/apply: move 'whitespace_option' into 'struct apply_state'
  builtin/apply: move 'whitespace_error' global into 'struct apply_state'
  builtin/apply: move 'root' global into 'struct apply_state'
  builtin/apply: move 'p_value_known' global into 'struct apply_state'
  builtin/apply: move 'p_value' global into 'struct apply_state'
  builtin/apply: move 'has_include' global into 'struct apply_state'
  ...

8 years agoMerge branch 'rs/xdiff-hunk-with-func-line' into maint
Junio C Hamano [Mon, 27 Jun 2016 16:56:24 +0000 (09:56 -0700)] 
Merge branch 'rs/xdiff-hunk-with-func-line' into maint

"git show -W" (extend hunks to cover the entire function, delimited
by lines that match the "funcname" pattern) used to show the entire
file when a change added an entire function at the end of the file,
which has been fixed.

* rs/xdiff-hunk-with-func-line:
  xdiff: fix merging of appended hunk with -W
  grep: -W: don't extend context to trailing empty lines
  t7810: add test for grep -W and trailing empty context lines
  xdiff: don't trim common tail with -W
  xdiff: -W: don't include common trailing empty lines in context
  xdiff: ignore empty lines before added functions with -W
  xdiff: handle appended chunks better with -W
  xdiff: factor out match_func_rec()
  t4051: rewrite, add more tests

8 years agoMerge branch 'jk/rev-list-count-with-bitmap' into maint
Junio C Hamano [Mon, 27 Jun 2016 16:56:24 +0000 (09:56 -0700)] 
Merge branch 'jk/rev-list-count-with-bitmap' into maint

"git rev-list --count" whose walk-length is limited with "-n"
option did not work well with the counting optimized to look at the
bitmap index.

* jk/rev-list-count-with-bitmap:
  rev-list: disable bitmaps when "-n" is used with listing objects
  rev-list: "adjust" results of "--count --use-bitmap-index -n"

8 years agoMerge branch 'et/pretty-format-c-auto' into maint
Junio C Hamano [Mon, 27 Jun 2016 16:56:23 +0000 (09:56 -0700)] 
Merge branch 'et/pretty-format-c-auto' into maint

The commands in `git log` family take %C(auto) in a custom format
string.  This unconditionally turned the color on, ignoring
--no-color or with --color=auto when the output is not connected to
a tty; this was corrected to make the format truly behave as
"auto".

* et/pretty-format-c-auto:
  format_commit_message: honor `color=auto` for `%C(auto)`

8 years agoMerge branch 'ew/daemon-socket-keepalive' into maint
Junio C Hamano [Mon, 27 Jun 2016 16:56:22 +0000 (09:56 -0700)] 
Merge branch 'ew/daemon-socket-keepalive' into maint

When "git daemon" is run without --[init-]timeout specified, a
connection from a client that silently goes offline can hang around
for a long time, wasting resources.  The socket-level KEEPALIVE has
been enabled to allow the OS to notice such failed connections.

* ew/daemon-socket-keepalive:
  daemon: enable SO_KEEPALIVE for all sockets

8 years agolog: add log.showSignature configuration variable
Mehul Jain [Wed, 22 Jun 2016 16:51:26 +0000 (22:21 +0530)] 
log: add log.showSignature configuration variable

Users may want to always use "--show-signature" while using git-log and
related commands.

When log.showSignature is set to true, git-log and related commands will
behave as if "--show-signature" was given to them.

Note that this config variable is meant to affect git-log, git-show,
git-whatchanged and git-reflog. Other commands like git-format-patch,
git-rev-list are not to be affected by this config variable.

Signed-off-by: Mehul Jain <mehul.jain2029@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agolog: add "--no-show-signature" command line option
Mehul Jain [Wed, 22 Jun 2016 16:51:25 +0000 (22:21 +0530)] 
log: add "--no-show-signature" command line option

If an user creates an alias with "--show-signature" early in command
line, e.g.
[alias] logss = log --show-signature

then there is no way to countermand it through command line.

Teach git-log and related commands about "--no-show-signature" command
line option. This will make "git logss --no-show-signature" run
without showing GPG signature.

Signed-off-by: Mehul Jain <mehul.jain2029@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agot4202: refactor test
Mehul Jain [Fri, 24 Jun 2016 14:12:34 +0000 (19:42 +0530)] 
t4202: refactor test

Subsequent patches will want to reuse the 'signed' branch that the
'log --graph --show-signature' test creates and uses.

Split the set-up part into a test of its own, and make the existing
test into a separate one that only inspects the history on the 'signed'
branch. This way, it becomes clearer that tests added by subsequent
patches reuse the 'signed' branch in the same way.

Signed-off-by: Mehul Jain <mehul.jain2029@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agocolor: support strike-through attribute
Jeff King [Thu, 23 Jun 2016 17:40:16 +0000 (13:40 -0400)] 
color: support strike-through attribute

This is the only remaining attribute that is commonly
supported (at least by xterm) that we don't support. Let's
add it for completeness.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agocolor: support "italic" attribute
Jeff King [Thu, 23 Jun 2016 17:39:07 +0000 (13:39 -0400)] 
color: support "italic" attribute

We already support bold, underline, and similar attributes.
Let's add italic to the mix.  According to the Wikipedia
page on ANSI colors, this attribute is "not widely
supported", but it does seem to work on my xterm.

We don't have to bump the maximum color size because we were
already over-allocating it (but we do adjust the comment
appropriately).

Requested-by: Simon Courtois <scourtois@cubyx.fr>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agocolor: allow "no-" for negating attributes
Jeff King [Thu, 23 Jun 2016 17:38:44 +0000 (13:38 -0400)] 
color: allow "no-" for negating attributes

Using "no-bold" rather than "nobold" is easier to read and
more natural to type (to me, anyway, even though I was the
person who introduced "nobold" in the first place). It's
easy to allow both.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agocolor: refactor parse_attr
Jeff King [Thu, 23 Jun 2016 17:38:13 +0000 (13:38 -0400)] 
color: refactor parse_attr

The list of attributes we recognize is a bit unwieldy, as we
actually have two arrays that must be kept in sync. Instead,
let's have a single array-of-struct to represent our
mapping. That means we can never have an accident that
causes us to read off the end of an array, and it makes
diffs for adding new attributes much easier to read.

This also makes it easy to handle the "no" cases without
having to repeat each attribute (this shortens the list,
making it easier to read, but also also cuts the size of our
linear search in half). Technically this makes it impossible
for us to add an attribute that starts with "no" (we could
confuse "nobody" for the negation of "body"), but since this
is a constrained set of attributes, that's OK.

Since we can also store the length of each name in the
struct, that makes it easy for us to avoid reading past the
"len" parameter given to us (though in practice it was not a
bug, since all of our current callers are interested in a
subset of a NUL-terminated buffer, not a true undelimited
range of memory).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoadd skip_prefix_mem helper
Jeff King [Thu, 23 Jun 2016 17:33:57 +0000 (13:33 -0400)] 
add skip_prefix_mem helper

The skip_prefix function has been very useful for
simplifying pointer arithmetic and avoiding repeated magic
numbers, but we have no equivalent for length-limited
buffers. So we're stuck with:

  if (3 <= len && skip_prefix(buf, "foo", &buf))
  len -= 3;

That's not that complicated, but it needs to use magic
numbers for the length of the prefix (or else write out
strlen("foo"), repeating the string). By using a helper, we
can get the string length behind the scenes (and often at
compile time for string literals).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agodoc: refactor description of color format
Jeff King [Thu, 23 Jun 2016 17:32:30 +0000 (13:32 -0400)] 
doc: refactor description of color format

This is a general cleanup of the description of colors in
git-config, mostly to address inaccuracies and confusion
that had grown over time:

  - you can have many attributes, not just one

  - the discussion flip-flopped between colors and
    attributes; now we discuss everything about colors, then
    everything about attributes

  - many concepts were lumped into the first paragraph,
    making it hard to read, and especially to find the
    actual lists of colors and attributes. I stopped short
    of breaking those out into their own lists, as it seemed
    like an excessive use of vertical screen real estate.

  - we introduced negated attributes, but then the next
    paragraph basically explains how each item starts off
    with no attributes. So why would one need negated
    attributes? We now explain.

  - minor typo, language, and typography fixes

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agocolor: fix max-size comment
Jeff King [Thu, 23 Jun 2016 17:31:44 +0000 (13:31 -0400)] 
color: fix max-size comment

We use fixed-size buffers for colors, because we know our
parsing cannot grow beyond a particular bound. However, our
comment description has two issues:

  1. It has the description in two forms: a short one, and
     one with more explanation. Over time the latter has
     been updated, but the former has not. Let's just drop
     the short one (after making sure everything it says
     is in the long one).

  2. As of ff40d18 (parse_color: recognize "no$foo" to clear
     the $foo attribute, 2014-11-20), the per-attribute size
     bumped to "3" (because "nobold" is actually "21;"). But
     that's not quite enough, as somebody may use both
     "bold" and "nobold", requiring 5 characters.

     This wasn't a problem for the final count, because we
     over-estimated in other ways, but let's clarify how we
     got to the final number.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agogit-svn: skip mergeinfo handling with --no-follow-parent
Eric Wong [Mon, 20 Jun 2016 21:52:53 +0000 (21:52 +0000)] 
git-svn: skip mergeinfo handling with --no-follow-parent

For repositories without parent following enabled, finding
git parents through svn:mergeinfo or svk::parents can be
expensive and pointless.

Reported-by: Александр Овчинников <proff@proff.email>
http://mid.gmane.org/4094761466408188@web24o.yandex.ru

Signed-off-by: Eric Wong <e@80x24.org>
8 years agot2300: "git --exec-path" is not usable in $PATH on Windows as-is
Johannes Schindelin [Sat, 18 Jun 2016 10:49:11 +0000 (12:49 +0200)] 
t2300: "git --exec-path" is not usable in $PATH on Windows as-is

The "git" command prepends the exec-path to the PATH environment
variable for processes it spawns.  That is how ". git-sh-setup" in
our scripted Porcelains can find the dot-sourced file in the
exec-path location that is not usually on user's PATH.

When t2300 runs, because it is not spawned by the "git" command, the
scriptlet being tested did not run with a realistic setting of PATH
environment.  It lacked the exec-path on the PATH, and failed to
find the dot-sourced file.  A recent update to t2300 attempted to
fix this, with "PATH=$(git --exec-path):$PATH", which has been the
recommended way around v1.6.0 days (a script whose original was
written before that release that survives to this day is likely to
have such a line).

However, the "git --exec-path" command outputs C:\path\to\exec\dir
(not /c/path/to/exec/dir) on Windows; the recent update failed to
consider the problem that comes from it.

Even though Git itself, when doing the equivalent internally, does
so in a platform native way (i.e. on Windows, C:\path\to\exec\dir is
prepended to the existing value of %PATH% using ';' as a component
separator), the result is further massaged by bash and gets turned
into $PATH that uses /c/path/to/exec/dir with ':' separating the
components, which is the form understood by bash, so scripted
Porcelains find commands from PATH correctly.

An end user script written in shell, however, cannot prepend
"C:\path\to\exec\dir:" to the existing value of $PATH and expect
bash to magically turn it into the form it understands.  In other
words, "PATH=$(git --exec-path):$PATH" does not work as an emulation
of what "Git" internally does to the PATH on Windows.

To correctly emulate how exec-path is prepended to the PATH
environment internally on Windows, we'd need to convert
C:\git-sdk-64\usr\src\git to at least /c\git-sdk-64\usr\src\git
ourselves before prepending it to PATH.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>