gitweb.git
Merge branch 'jm/relnotes-2.15-typofix' into maintJunio C Hamano Wed, 15 Nov 2017 03:05:04 +0000 (12:05 +0900)

Merge branch 'jm/relnotes-2.15-typofix' into maint

Typofix.

* jm/relnotes-2.15-typofix:
fix typos in 2.15.0 release notes

Merge branch 'cn/diff-indent-no-longer-is-experimental... Junio C Hamano Wed, 15 Nov 2017 03:05:04 +0000 (12:05 +0900)

Merge branch 'cn/diff-indent-no-longer-is-experimental' into maint

Doc update.

* cn/diff-indent-no-longer-is-experimental:
diff: --indent-heuristic is no longer experimental

Merge branch 'js/mingw-redirect-std-handles' into maintJunio C Hamano Wed, 15 Nov 2017 03:05:03 +0000 (12:05 +0900)

Merge branch 'js/mingw-redirect-std-handles' into maint

MinGW updates.

* js/mingw-redirect-std-handles:
mingw: document the standard handle redirection
mingw: optionally redirect stderr/stdout via the same handle
mingw: add experimental feature to redirect standard handles

Merge branch 'js/wincred-empty-cred' into maintJunio C Hamano Wed, 15 Nov 2017 03:05:03 +0000 (12:05 +0900)

Merge branch 'js/wincred-empty-cred' into maint

MinGW updates.

* js/wincred-empty-cred:
wincred: handle empty username/password correctly
t0302: check helper can handle empty credentials

Merge branch 'js/mingw-full-version-in-resources' into... Junio C Hamano Wed, 15 Nov 2017 03:05:03 +0000 (12:05 +0900)

Merge branch 'js/mingw-full-version-in-resources' into maint

MinGW updates.

* js/mingw-full-version-in-resources:
mingw: include the full version information in the resources

Merge branch 'dk/libsecret-unlock-to-load-fix' into... Junio C Hamano Wed, 15 Nov 2017 03:05:02 +0000 (12:05 +0900)

Merge branch 'dk/libsecret-unlock-to-load-fix' into maint

The credential helper for libsecret (in contrib/) has been improved
to allow possibly prompting the end user to unlock secrets that are
currently locked (otherwise the secrets may not be loaded).

* dk/libsecret-unlock-to-load-fix:
credential-libsecret: unlock locked secrets

Merge branch 'js/early-config' into maintJunio C Hamano Wed, 15 Nov 2017 03:05:01 +0000 (12:05 +0900)

Merge branch 'js/early-config' into maint

Correct start-up sequence so that a repository could be placed
immediately under the root directory again (which was broken at
around Git 2.13).

* js/early-config:
setup: avoid double slashes when looking for HEAD

Merge branch 'ad/5580-unc-tests-on-cygwin' into maintJunio C Hamano Wed, 15 Nov 2017 03:05:00 +0000 (12:05 +0900)

Merge branch 'ad/5580-unc-tests-on-cygwin' into maint

UNC paths are also relevant in Cygwin builds and they are now
tested just like Mingw builds.

* ad/5580-unc-tests-on-cygwin:
t5580: add Cygwin support

Merge branch 'ao/diff-populate-filespec-lstat-errorpath... Junio C Hamano Wed, 15 Nov 2017 03:04:59 +0000 (12:04 +0900)

Merge branch 'ao/diff-populate-filespec-lstat-errorpath-fix' into maint

After an error from lstat(), diff_populate_filespec() function
sometimes still went ahead and used invalid data in struct stat,
which has been fixed.

* ao/diff-populate-filespec-lstat-errorpath-fix:
diff: fix lstat() error handling in diff_populate_filespec()

Merge branch 'sb/blame-config-doc' into maintJunio C Hamano Wed, 15 Nov 2017 03:04:59 +0000 (12:04 +0900)

Merge branch 'sb/blame-config-doc' into maint

Description of blame.{showroot,blankboundary,showemail,date}
configuration variables have been added to "git config --help".

* sb/blame-config-doc:
config: document blame configuration

Merge branch 'tb/complete-checkout' into maintJunio C Hamano Wed, 15 Nov 2017 03:04:58 +0000 (12:04 +0900)

Merge branch 'tb/complete-checkout' into maint

Command line completion (in contrib/) update.

* tb/complete-checkout:
completion: add remaining flags to checkout

Merge branch 'jc/check-ref-format-oor' into maintJunio C Hamano Wed, 15 Nov 2017 03:04:57 +0000 (12:04 +0900)

Merge branch 'jc/check-ref-format-oor' into maint

"git check-ref-format --branch @{-1}" bit a "BUG()" when run
outside a repository for obvious reasons; clarify the documentation
and make sure we do not even try to expand the at-mark magic in
such a case, but still call the validation logic for branch names.

* jc/check-ref-format-oor:
check-ref-format doc: --branch validates and expands <branch>
check-ref-format --branch: strip refs/heads/ using skip_prefix
check-ref-format --branch: do not expand @{...} outside repository

Merge branch 'jc/t5601-copy-workaround' into maintJunio C Hamano Wed, 15 Nov 2017 03:04:56 +0000 (12:04 +0900)

Merge branch 'jc/t5601-copy-workaround' into maint

A (possibly flakey) test fix.

* jc/t5601-copy-workaround:
t5601: rm the target file of cp that could still be executing

Merge branch 'jk/rebase-i-exec-gitdir-fix' into maintJunio C Hamano Wed, 15 Nov 2017 03:04:56 +0000 (12:04 +0900)

Merge branch 'jk/rebase-i-exec-gitdir-fix' into maint

A recent regression in "git rebase -i" that broke execution of git
commands from subdirectories via "exec" insn has been fixed.

* jk/rebase-i-exec-gitdir-fix:
sequencer: pass absolute GIT_DIR to exec commands

Merge branch 'bw/grep-recurse-submodules' into maintJunio C Hamano Wed, 15 Nov 2017 03:04:55 +0000 (12:04 +0900)

Merge branch 'bw/grep-recurse-submodules' into maint

A broken access to object databases in recent update to "git grep
--recurse-submodules" has been fixed.

* bw/grep-recurse-submodules:
grep: take the read-lock when adding a submodule

Merge branch 'js/submodule-in-excluded' into maintJunio C Hamano Wed, 15 Nov 2017 03:04:54 +0000 (12:04 +0900)

Merge branch 'js/submodule-in-excluded' into maint

"git status --ignored -u" did not stop at a working tree of a
separate project that is embedded in an ignored directory and
listed files in that other project, instead of just showing the
directory itself as ignored.

* js/submodule-in-excluded:
status: do not get confused by submodules in excluded directories

Merge branch 'ao/check-resolve-ref-unsafe-result' into... Junio C Hamano Wed, 15 Nov 2017 03:04:53 +0000 (12:04 +0900)

Merge branch 'ao/check-resolve-ref-unsafe-result' into maint

"git commit", after making a commit, did not check for errors when
asking on what branch it made the commit, which has been correted.

* ao/check-resolve-ref-unsafe-result:
commit: check result of resolve_ref_unsafe

Merge branch 'jk/misc-resolve-ref-unsafe-fixes' into... Junio C Hamano Wed, 15 Nov 2017 03:04:52 +0000 (12:04 +0900)

Merge branch 'jk/misc-resolve-ref-unsafe-fixes' into maint

Some codepaths did not check for errors when asking what branch the
HEAD points at, which have been fixed.

* jk/misc-resolve-ref-unsafe-fixes:
worktree: handle broken symrefs in find_shared_symref()
log: handle broken HEAD in decoration check
remote: handle broken symrefs
test-ref-store: avoid passing NULL to printf

Merge branch 'sb/diff-color-moved-use-xdl-recmatch... Junio C Hamano Wed, 15 Nov 2017 03:04:52 +0000 (12:04 +0900)

Merge branch 'sb/diff-color-moved-use-xdl-recmatch' into maint

Instead of using custom line comparison and hashing functions to
implement "moved lines" coloring in the diff output, use the pair
of these functions from lower-layer xdiff/ code.

* sb/diff-color-moved-use-xdl-recmatch:
diff.c: get rid of duplicate implementation
xdiff-interface: export comparing and hashing strings

Merge branch 'jk/diff-color-moved-fix' into maintJunio C Hamano Wed, 15 Nov 2017 03:04:51 +0000 (12:04 +0900)

Merge branch 'jk/diff-color-moved-fix' into maint

The experimental "color moved lines differently in diff output"
feature was buggy around "ignore whitespace changes" edges, whihch
has been corrected.

* jk/diff-color-moved-fix:
diff: handle NULs in get_string_hash()
diff: fix whitespace-skipping with --color-moved
t4015: test the output of "diff --color-moved -b"
t4015: check "negative" case for "-w --color-moved"
t4015: refactor --color-moved whitespace test

Merge branch 'kd/auto-col-with-pager-fix' into maintJunio C Hamano Wed, 15 Nov 2017 03:04:50 +0000 (12:04 +0900)

Merge branch 'kd/auto-col-with-pager-fix' into maint

"auto" as a value for the columnar output configuration ought to
judge "is the output consumed by humans?" with the same criteria as
"auto" for coloured output configuration, i.e. either the standard
output stream is going to tty, or a pager is in use. We forgot the
latter, which has been fixed.

* kd/auto-col-with-pager-fix:
column: do not include pager.c
column: show auto columns when pager is active

Merge branch 'sg/travis-fixes' into maintJunio C Hamano Wed, 15 Nov 2017 03:04:49 +0000 (12:04 +0900)

Merge branch 'sg/travis-fixes' into maint

TravisCI build updates.

* sg/travis-fixes:
travis-ci: don't build Git for the static analysis job
travis-ci: fix running P4 and Git LFS tests in Linux build jobs

builtin/branch: remove redundant check for HEADKaartic Sivaraam Tue, 14 Nov 2017 11:42:59 +0000 (17:12 +0530)

builtin/branch: remove redundant check for HEAD

The lower level code has been made to handle this case for the
sake of consistency. This has made this check redundant.

So, remove the redundant check.

Signed-off-by: Kaartic Sivaraam <kaartic.sivaraam@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

branch: correctly reject refs/heads/{-dash,HEAD}Junio C Hamano Tue, 14 Nov 2017 11:42:58 +0000 (17:12 +0530)

branch: correctly reject refs/heads/{-dash,HEAD}

strbuf_check_branch_ref() is the central place where many codepaths
see if a proposed name is suitable for the name of a branch. It was
designed to allow us to get stricter than the check_refname_format()
check used for refnames in general, and we already use it to reject
a branch whose name begins with a '-'. The function gets a strbuf
and a string "name", and returns non-zero if the name is not
appropriate as the name for a branch. When the name is good, it
places the full refname for the branch with the proposed name in the
strbuf before it returns.

However, it turns out that one caller looks at what is in the strbuf
even when the function returns an error. Make the function populate
the strbuf even when it returns an error. That way, when "-dash" is
given as name, "refs/heads/-dash" is placed in the strbuf when
returning an error to copy_or_rename_branch(), which notices that
the user is trying to recover with "git branch -m -- -dash dash" to
rename "-dash" to "dash".

While at it, use the same mechanism to also reject "HEAD" as a
branch name.

Helped-by: Jeff King <peff@peff.net>
Helped-by: Kaartic Sivaraam <kaartic.sivaraam@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

notes: send "Automatic notes merge failed" messages... Todd Zullinger Tue, 14 Nov 2017 16:17:52 +0000 (11:17 -0500)

notes: send "Automatic notes merge failed" messages to stderr

All other error messages from notes use stderr. Do the same when
alerting users of an unresolved notes merge.

Fix the output redirection in t3310 and t3320 as well. Previously, the
tests directed output to a file, but stderr was either not captured or
not sent to the file due to the order of the redirection operators.

Signed-off-by: Todd Zullinger <tmz@pobox.com>
Acked-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: add git config sendemail.tocmdRasmus Villemoes Mon, 13 Nov 2017 14:14:43 +0000 (15:14 +0100)

completion: add git config sendemail.tocmd

Signed-off-by: Rasmus Villemoes <rv@rasmusvillemoes.dk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/config: add sendemail.tocmd to list prece... Rasmus Villemoes Mon, 13 Nov 2017 14:14:42 +0000 (15:14 +0100)

Documentation/config: add sendemail.tocmd to list preceding "See git-send-email(1)"

Signed-off-by: Rasmus Villemoes <rv@rasmusvillemoes.dk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rebase: fix stderr redirect in apply_autostash()Todd Zullinger Mon, 13 Nov 2017 21:20:09 +0000 (16:20 -0500)

rebase: fix stderr redirect in apply_autostash()

The intention is to ignore all output from the 'git stash apply' call.
Adjust the order of the redirection to ensure that both stdout and
stderr are redirected to /dev/null.

Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t/lib-gpg: fix gpgconf stderr redirect to /dev/nullTodd Zullinger Mon, 13 Nov 2017 21:07:45 +0000 (16:07 -0500)

t/lib-gpg: fix gpgconf stderr redirect to /dev/null

In 29ff1f8f74 (t: lib-gpg: flush gpg agent on startup, 2017-07-20), a
call to gpgconf was added to kill the gpg-agent. The intention was to
ignore all output from the call, but the order of the redirection needs
to be switched to ensure that both stdout and stderr are redirected to
/dev/null. Without this, gpgconf from gnupg-2.0 releases would output
'gpgconf: invalid option "--kill"' each time it was called.

Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'jm/status-ignored-files-list'Junio C Hamano Mon, 13 Nov 2017 05:44:59 +0000 (14:44 +0900)

Merge branch 'jm/status-ignored-files-list'

The set of paths output from "git status --ignored" was tied
closely with its "--untracked=<mode>" option, but now it can be
controlled more flexibly. Most notably, a directory that is
ignored because it is listed to be ignored in the ignore/exclude
mechanism can be handled differently from a directory that ends up
to be ignored only because all files in it are ignored.

* jm/status-ignored-files-list:
status: test ignored modes
status: document options to show matching ignored files
status: report matching ignored and normal untracked
status: add option to show ignored files differently

link_alt_odb_entries: make empty input a noopJeff King Sun, 12 Nov 2017 10:27:39 +0000 (10:27 +0000)

link_alt_odb_entries: make empty input a noop

If an empty string is passed to link_alt_odb_entries(), our
loop finds no entries and we link nothing. But we still do
some preparatory work to normalize the object directory
path, even though we'll never look at the result. This
triggers in basically every git process, since we feed the
usually-empty ALTERNATE_DB_ENVIRONMENT to the function.

Let's detect early that there's nothing to do and return.
While we're at it, let's treat NULL the same as an empty
string as a favor to our callers. That saves
prepare_alt_odb() from having to cover this case.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: convert SubmittingPatches to AsciiDocbrian m. carlson Sun, 12 Nov 2017 22:07:18 +0000 (22:07 +0000)

Documentation: convert SubmittingPatches to AsciiDoc

The SubmittingPatches document is often cited by outside parties as an
example of good practices to follow, including logical, independent
commits; patch sign-offs; and sending patches to a mailing list.
Currently, people who want to cite a particular section tend to either
refer to it by name and let the interested party search through the
document to find it, or link to a given line number on GitHub and hope
the file doesn't change.

Instead, convert the document to AsciiDoc. Build it as part of the
technical documentation, since it is likely of interest to the same
group of people. Provide stable links to the sections which outside
parties are likely to want to link to. Make some minor structural
changes to organize it so that it can be formatted sanely.

Since the makefile needs a .txt extension in order to build with the
rest of the documentation, simply copy the file. Ignore the temporary
file so it doesn't get checked in accidentally, and remove it as part of
the clean process. Do this instead of renaming the file so that people
who have already linked to the documentation (who we're trying to help)
don't find their links broken. Avoid symlinking since Windows will not
like that.

This allows us to render the document as part of the website for the
benefit of others who wish to link to it as well as providing a more
nicely formatted display for our community and potential contributors.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

bisect run: die if no command is givenStephan Beyer Sun, 12 Nov 2017 20:55:33 +0000 (21:55 +0100)

bisect run: die if no command is given

It was possible to invoke "git bisect run" without any command.
This considers all commits as good commits since "$@"'s return
value for empty $@ is 0.

This is most probably not what a user wants (otherwise she would
invoke "git bisect run true"), so not providing a command now
results in an error.

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

grep: fix NO_LIBPCRE1_JIT to fully disable JITCharles Bailey Sun, 12 Nov 2017 16:59:38 +0000 (16:59 +0000)

grep: fix NO_LIBPCRE1_JIT to fully disable JIT

If you have a pcre1 library which is compiled with JIT enabled then
PCRE_STUDY_JIT_COMPILE will be defined whether or not the
NO_LIBPCRE1_JIT configuration is set.

This means that we enable JIT functionality when calling pcre_study
even if NO_LIBPCRE1_JIT has been explicitly set and we just use plain
pcre_exec later.

Fix this by using own macro (GIT_PCRE_STUDY_JIT_COMPILE) which we set to
PCRE_STUDY_JIT_COMPILE only if NO_LIBPCRE1_JIT is not set and define to
0 otherwise, as before.

Reviewed-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4201: make use of abbreviation in the test more robustCharles Bailey Sun, 12 Nov 2017 15:25:23 +0000 (15:25 +0000)

t4201: make use of abbreviation in the test more robust

The test for '--abbrev' in t4201-shortlog.sh assumes that the commits
generated in the test can always be uniquely abbreviated to 5 hex digits
but this is not always the case. If you were unlucky and happened to run
the test at (say) Thu Jun 22 03:04:49 2017 +0000, you would find that
the first commit generated would collide with a tree object created
later in the same test.

This can be simulated in the version of t4201-shortlog.sh prior to this
commit by setting GIT_COMMITTER_DATE and GIT_AUTHOR_DATE to 1498100689
after sourcing test-lib.sh.

Change the test to test --abbrev=35 instead of --abbrev=5 to almost
completely avoid the possibility of a partial collision and add a call
to test_tick in the setup to make the test repeatable (the latter alone
is sufficient to make it robust enough).

Signed-off-by: Charles Bailey <cbailey32@bloomberg.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

bisect: mention "view" as an alternative to "visualize"Robert P. J. Day Sun, 12 Nov 2017 09:30:38 +0000 (04:30 -0500)

bisect: mention "view" as an alternative to "visualize"

Tweak a small number of files to mention "view" as an alternative to
"visualize".

Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fsmonitor: simplify determining the git worktree under... Ben Peart Fri, 10 Nov 2017 21:03:11 +0000 (16:03 -0500)

fsmonitor: simplify determining the git worktree under Windows

Simplify and speed up the process of finding the git worktree when
running on Windows by keeping it in perl and avoiding spawning helper
processes.

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

t/3512: demonstrate unrelated submodule/file conflict... Stefan Beller Sat, 11 Nov 2017 00:04:43 +0000 (16:04 -0800)

t/3512: demonstrate unrelated submodule/file conflict as cherry-pick failure

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

apply: avoid out-of-bounds access in fuzzy_matchlines()René Scharfe Sat, 11 Nov 2017 14:10:19 +0000 (15:10 +0100)

apply: avoid out-of-bounds access in fuzzy_matchlines()

fuzzy_matchlines() uses a pointers to the first and last characters of
two lines to keep track while matching them. This makes it impossible
to deal with empty strings. It accesses characters before the start of
empty lines. It can also access characters after the end when checking
for trailing whitespace in the main loop.

Avoid that by using pointers to the first character and the one *after*
the last one. This is well-defined as long as the latter is not
dereferenced. Basically rewrite the function based on that premise; it
becomes much simpler as a result. There is no need to check for
leading whitespace outside of the main loop anymore.

Reported-by: Mahmoud Al-Qudsi <mqudsi@neosmart.net>
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

doc/SubmittingPatches: correct subject guidanceAdam Dinwoodie Fri, 10 Nov 2017 15:02:50 +0000 (15:02 +0000)

doc/SubmittingPatches: correct subject guidance

The examples and common practice for adding markers such as "RFC" or
"v2" to the subject of patch emails is to have them within the same
brackets as the "PATCH" text, not after the closing bracket. Further,
the practice of `git format-patch` and the like, as well as what appears
to be the more common pratice on the mailing list, is to use "[RFC
PATCH]", not "[PATCH/RFC]".

Update the SubmittingPatches article to match and to reference the
`format-patch` helper arguments, and also make some minor text
clarifications in the area.

Signed-off-by: Adam Dinwoodie <adam@dinwoodie.org>
Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fsmonitor: store fsmonitor bitmap before splitting... Alex Vandiver Thu, 9 Nov 2017 19:58:10 +0000 (11:58 -0800)

fsmonitor: store fsmonitor bitmap before splitting index

ba1b9cac ("fsmonitor: delay updating state until after split index
is merged", 2017-10-27) resolved the problem of the fsmonitor data
being applied to the non-base index when reading; however, a similar
problem exists when writing the index. Specifically, writing of the
fsmonitor extension happens only after the work to split the index
has been applied -- as such, the information in the index is only
for the non-"base" index, and thus the extension information
contains only partial data.

When saving, compute the ewah bitmap before the index is split, and
store it in the fsmonitor_dirty field, mirroring the behavior that
occurred during reading. fsmonitor_dirty is kept from being leaked by
being freed when the extension data is written -- which always happens
precisely once, no matter the split index configuration.

Signed-off-by: Alex Vandiver <alexmv@dropbox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fsmonitor: read from getcwd(), not the PWD environment... Alex Vandiver Thu, 9 Nov 2017 19:58:09 +0000 (11:58 -0800)

fsmonitor: read from getcwd(), not the PWD environment variable

Though the process has chdir'd to the root of the working tree, the
PWD environment variable is only guaranteed to be updated accordingly
if a shell is involved -- which is not guaranteed to be the case.
That is, if `/usr/bin/perl` is a binary, $ENV{PWD} is unchanged from
whatever spawned `git` -- if `/usr/bin/perl` is a trivial shell
wrapper to the real `perl`, `$ENV{PWD}` will have been updated to the
root of the working copy.

Update to read from the Cwd module using the `getcwd` syscall, not the
PWD environment variable. The Cygwin case is left unchanged, as it
necessarily _does_ go through a shell.

Signed-off-by: Alex Vandiver <alexmv@dropbox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

RelNotes: the third batch for 2.16Junio C Hamano Thu, 9 Nov 2017 05:36:39 +0000 (14:36 +0900)

RelNotes: the third batch for 2.16

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'js/mingw-redirect-std-handles'Junio C Hamano Thu, 9 Nov 2017 05:31:31 +0000 (14:31 +0900)

Merge branch 'js/mingw-redirect-std-handles'

MinGW updates.

* js/mingw-redirect-std-handles:
mingw: document the standard handle redirection
mingw: optionally redirect stderr/stdout via the same handle
mingw: add experimental feature to redirect standard handles

Merge branch 'js/wincred-empty-cred'Junio C Hamano Thu, 9 Nov 2017 05:31:31 +0000 (14:31 +0900)

Merge branch 'js/wincred-empty-cred'

MinGW updates.

* js/wincred-empty-cred:
wincred: handle empty username/password correctly
t0302: check helper can handle empty credentials

Merge branch 'js/mingw-full-version-in-resources'Junio C Hamano Thu, 9 Nov 2017 05:31:31 +0000 (14:31 +0900)

Merge branch 'js/mingw-full-version-in-resources'

MinGW updates.

* js/mingw-full-version-in-resources:
mingw: include the full version information in the resources

Merge branch 'dk/libsecret-unlock-to-load-fix'Junio C Hamano Thu, 9 Nov 2017 05:31:30 +0000 (14:31 +0900)

Merge branch 'dk/libsecret-unlock-to-load-fix'

The credential helper for libsecret (in contrib/) has been improved
to allow possibly prompting the end user to unlock secrets that are
currently locked (otherwise the secrets may not be loaded).

* dk/libsecret-unlock-to-load-fix:
credential-libsecret: unlock locked secrets

Merge branch 'ks/mailmap'Junio C Hamano Thu, 9 Nov 2017 05:31:29 +0000 (14:31 +0900)

Merge branch 'ks/mailmap'

* ks/mailmap:
mailmap: use Kaartic Sivaraam's new address

Merge branch 'js/early-config'Junio C Hamano Thu, 9 Nov 2017 05:31:29 +0000 (14:31 +0900)

Merge branch 'js/early-config'

Correct start-up sequence so that a repository could be placed
immediately under the root directory again (which was broken at
around Git 2.13).

* js/early-config:
setup: avoid double slashes when looking for HEAD

Merge branch 'sg/travis-fixes'Junio C Hamano Thu, 9 Nov 2017 05:31:28 +0000 (14:31 +0900)

Merge branch 'sg/travis-fixes'

TravisCI build updates.

* sg/travis-fixes:
travis-ci: don't build Git for the static analysis job
travis-ci: fix running P4 and Git LFS tests in Linux build jobs

Merge branch 'bw/diff-opt-impl-to-bitfields'Junio C Hamano Thu, 9 Nov 2017 05:31:27 +0000 (14:31 +0900)

Merge branch 'bw/diff-opt-impl-to-bitfields'

A single-word "unsigned flags" in the diff options is being split
into a structure with many bitfields.

* bw/diff-opt-impl-to-bitfields:
diff: make struct diff_flags members lowercase
diff: remove DIFF_OPT_CLR macro
diff: remove DIFF_OPT_SET macro
diff: remove DIFF_OPT_TST macro
diff: remove touched flags
diff: add flag to indicate textconv was set via cmdline
diff: convert flags to be stored in bitfields
add, reset: use DIFF_OPT_SET macro to set a diff flag

Merge branch 'rs/hex-to-bytes-cleanup'Junio C Hamano Thu, 9 Nov 2017 05:31:27 +0000 (14:31 +0900)

Merge branch 'rs/hex-to-bytes-cleanup'

Code cleanup.

* rs/hex-to-bytes-cleanup:
sha1_file: use hex_to_bytes()
http-push: use hex_to_bytes()
notes: move hex_to_bytes() to hex.c and export it

Merge branch 'ad/5580-unc-tests-on-cygwin'Junio C Hamano Thu, 9 Nov 2017 05:31:27 +0000 (14:31 +0900)

Merge branch 'ad/5580-unc-tests-on-cygwin'

UNC paths are also relevant in Cygwin builds and they are now
tested just like Mingw builds.

* ad/5580-unc-tests-on-cygwin:
t5580: add Cygwin support

Merge branch 'ao/diff-populate-filespec-lstat-errorpath... Junio C Hamano Thu, 9 Nov 2017 05:31:26 +0000 (14:31 +0900)

Merge branch 'ao/diff-populate-filespec-lstat-errorpath-fix'

After an error from lstat(), diff_populate_filespec() function
sometimes still went ahead and used invalid data in struct stat,
which has been fixed.

* ao/diff-populate-filespec-lstat-errorpath-fix:
diff: fix lstat() error handling in diff_populate_filespec()

Merge branch 'sb/blame-config-doc'Junio C Hamano Thu, 9 Nov 2017 05:31:25 +0000 (14:31 +0900)

Merge branch 'sb/blame-config-doc'

Description of blame.{showroot,blankboundary,showemail,date}
configuration variables have been added to "git config --help".

* sb/blame-config-doc:
config: document blame configuration

Merge branch 'jm/relnotes-2.15-typofix'Junio C Hamano Thu, 9 Nov 2017 05:31:25 +0000 (14:31 +0900)

Merge branch 'jm/relnotes-2.15-typofix'

Typofix.

* jm/relnotes-2.15-typofix:
fix typos in 2.15.0 release notes

Merge branch 'tz/fsf-address-update' of ../git-gui... Junio C Hamano Thu, 9 Nov 2017 04:24:43 +0000 (13:24 +0900)

Merge branch 'tz/fsf-address-update' of ../git-gui into tz/fsf-address-update

* 'tz/fsf-address-update' of ../git-gui:
Replace Free Software Foundation address in license notices

Replace Free Software Foundation address in license... Todd Zullinger Tue, 7 Nov 2017 05:39:33 +0000 (00:39 -0500)

Replace Free Software Foundation address in license notices

The mailing address for the FSF has changed over the years. Rather than
updating the address across all files, refer readers to gnu.org, as the
GNU GPL documentation now suggests for license notices. The mailing
address is retained in the full license files (COPYING and LGPL-2.1).

Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Replace Free Software Foundation address in license... Todd Zullinger Tue, 7 Nov 2017 05:39:33 +0000 (00:39 -0500)

Replace Free Software Foundation address in license notices

The mailing address for the FSF has changed over the years. Rather than
updating the address across all files, refer readers to gnu.org, as the
GNU GPL documentation now suggests for license notices. The mailing
address is retained in the full license files (COPYING and LGPL-2.1).

The old address is still present in t/diff-lib/COPYING. This is
intentional, as the file is used in tests and the contents are not
expected to change.

Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rebase -i: fix comment typoAdam Dinwoodie Wed, 8 Nov 2017 13:20:20 +0000 (13:20 +0000)

rebase -i: fix comment typo

Signed-off-by: Adam Dinwoodie <adam@dinwoodie.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

merge-base --fork-point doc: clarify the example and... Junio C Hamano Thu, 9 Nov 2017 02:49:45 +0000 (11:49 +0900)

merge-base --fork-point doc: clarify the example and failure modes

The illustrated history used to explain the `--fork-point` mode
named three keypoint commits B3, B2 and B1 from the oldest to the
newest, which was hard to read. Relabel them to B0, B1, B2. Also
illustrate the history after the rebase using the `--fork-point`
facility was made.

The text already mentions use of reflog, but the description is not
clear what benefit we are trying to gain by using reflog. Clarify
that it is to find the commits that were known to be at the tip of
the remote-tracking branch. This in turn necessitates users to know
the ramifications of the underlying assumptions, namely, expiry of
reflog entries will make it impossible to determine which commits
were at the tip of the remote-tracking branches and we fail when in
doubt (instead of giving a random and incorrect result without even
warning). Another limitation is that it won't be useful if you did
not fork from the tip of a remote-tracking branch but from in the
middle.

Describe them.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

reduce_heads: fix memory leaksMartin Ågren Tue, 7 Nov 2017 20:39:45 +0000 (21:39 +0100)

reduce_heads: fix memory leaks

We currently have seven callers of `reduce_heads(foo)`. Six of them do
not use the original list `foo` again, and actually, all six of those
end up leaking it.

Introduce and use `reduce_heads_replace(&foo)` as a leak-free version of
`foo = reduce_heads(foo)` to fix several of these. Fix the remaining
leaks using `free_commit_list()`.

While we're here, document `reduce_heads()` and mark it as `extern`.

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin/merge-base: free commit listsMartin Ågren Tue, 7 Nov 2017 20:39:44 +0000 (21:39 +0100)

builtin/merge-base: free commit lists

In several functions, we iterate through a commit list by assigning
`result = result->next`. As a consequence, we lose the original pointer
and eventually leak the list.

Rewrite the loops so that we keep the original pointers, then call
`free_commit_list()`. Various alternatives were considered:

1) Use `UNLEAK(result)` before the loop. Simple change, but not very
pretty. These would definitely be new lows among our usages of UNLEAK.
2) Use `pop_commit()` when looping. Slightly less simple change, but it
feels slightly preferable to first display the list, then free it.
3) As in this patch, but with `UNLEAK()` instead of freeing. We'd still
go through all the trouble of refactoring the loop, and because it's not
super-obvious that we're about to exit, let's just free the lists -- it
probably doesn't affect the runtime much.

In `handle_independent()` we can drop `result` while we're here and
reuse the `revs`-variable instead. That matches several other users of
`reduce_heads()`. The memory-leak that this hides will be addressed in
the next commit.

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-mediawiki: show progress while fetching namespacesAntoine Beaupré Tue, 7 Nov 2017 16:07:01 +0000 (11:07 -0500)

remote-mediawiki: show progress while fetching namespaces

Without this, the fetch process seems hanged while we fetch page
listings across the namespaces. Obviously, it should be possible to
silence this with -q, but that's an issue already present everywhere
in the code and should be fixed separately:

https://github.com/Git-Mediawiki/Git-Mediawiki/issues/30

Signed-off-by: Antoine Beaupré <anarcat@debian.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-mediawiki: process namespaces in orderAntoine Beaupré Tue, 7 Nov 2017 16:07:00 +0000 (11:07 -0500)

remote-mediawiki: process namespaces in order

Ideally, we'd process them in numeric order since that is more
logical, but we can't do that yet since this is where we find the
numeric identifiers in the first place. Lexicographic order is a good
compromise.

Signed-off-by: Antoine Beaupré <anarcat@debian.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-mediawiki: support fetching from (Main) namespaceAntoine Beaupré Tue, 7 Nov 2017 16:06:59 +0000 (11:06 -0500)

remote-mediawiki: support fetching from (Main) namespace

When we specify a list of namespaces to fetch from, by default the MW
API will not fetch from the default namespace, refered to as "(Main)"
in the documentation:

https://www.mediawiki.org/wiki/Manual:Namespace#Built-in_namespaces

I haven't found a way to address that "(Main)" namespace when getting
the namespace ids: indeed, when listing namespaces, there is no
"canonical" field for the main namespace, although there is a "*"
field that is set to "" (empty). So in theory, we could specify the
empty namespace to get the main namespace, but that would make
specifying namespaces harder for the user: we would need to teach
users about the "empty" default namespace. It would also make the code
more complicated: we'd need to parse quotes in the configuration.

So we simply override the query here and allow the user to specify
"(Main)" since that is the publicly documented name.

Signed-off-by: Antoine Beaupré <anarcat@debian.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-mediawiki: skip virtual namespacesAntoine Beaupré Tue, 7 Nov 2017 16:06:58 +0000 (11:06 -0500)

remote-mediawiki: skip virtual namespaces

Virtual namespaces do not correspond to pages in the database and are
automatically generated by MediaWiki. It makes little sense,
therefore, to fetch pages from those namespaces and the MW API doesn't
support listing those pages.

According to the documentation, those virtual namespaces are currently
"Special" (-1) and "Media" (-2) but we treat all negative namespaces
as "virtual" as a future-proofing mechanism.

Signed-off-by: Antoine Beaupré <anarcat@debian.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-mediawiki: show known namespace choices on failureAntoine Beaupré Tue, 7 Nov 2017 16:06:57 +0000 (11:06 -0500)

remote-mediawiki: show known namespace choices on failure

If we fail to find a requested namespace, we should tell the user
which ones we know about, since those were already fetched. This
allows users to fetch all namespaces by specifying a dummy namespace,
failing, then copying the list of namespaces in the config.

Eventually, we should have a flag that allows fetching all namespaces
automatically.

Reviewed-by: Antoine Beaupré <anarcat@debian.org>
Signed-off-by: Antoine Beaupré <anarcat@debian.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

read_index_from(): speed index loading by skipping... Ben Peart Wed, 18 Oct 2017 14:27:25 +0000 (10:27 -0400)

read_index_from(): speed index loading by skipping verification of the entry order

There is code in post_read_index_from() to catch out of order
entries when reading an index file. This order verification is ~13%
of the cost of every call to read_index_from().

Update check_ce_order() so that it skips this verification unless
the "verify_ce_order" global variable is set.

Teach fsck to force this verification.

The effect can be seen using t/perf/p0002-read-cache.sh:

Test HEAD HEAD~1
--------------------------------------------------------------------------------------
0002.1: read_cache/discard_cache 1000 times 0.41(0.04+0.04) 0.50(0.00+0.10) +22.0%

Signed-off-by: Ben Peart <benpeart@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

for-each-ref: test :remotename and :remoterefJohannes Schindelin Tue, 7 Nov 2017 16:31:14 +0000 (17:31 +0100)

for-each-ref: test :remotename and :remoteref

This not only prevents regressions, but also serves as documentation
what this new feature is expected to do.

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

for-each-ref: let upstream/push report the remote ref... J Wyman Tue, 7 Nov 2017 16:31:08 +0000 (17:31 +0100)

for-each-ref: let upstream/push report the remote ref name

There are times when scripts want to know not only the name of the
push branch on the remote, but also the name of the branch as known
by the remote repository.

An example of this is when a tool wants to push to the very same branch
from which it would pull automatically, i.e. the `<remote>` and the `<to>`
in `git push <remote> <from>:<to>` would be provided by
`%(upstream:remotename)` and `%(upstream:remoteref)`, respectively.

This patch offers the new suffix :remoteref for the `upstream` and `push`
atoms, allowing to show exactly that. Example:

$ cat .git/config
...
[remote "origin"]
url = https://where.do.we.come/from
fetch = refs/heads/*:refs/remote/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "develop/with/topics"]
remote = origin
merge = refs/heads/develop/with/topics
...

$ git for-each-ref \
--format='%(push) %(push:remoteref)' \
refs/heads
refs/remotes/origin/master refs/heads/master
refs/remotes/origin/develop/with/topics refs/heads/develop/with/topics

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

Tests: clean up and document submodule helpersJonathan Tan Tue, 7 Nov 2017 18:45:08 +0000 (10:45 -0800)

Tests: clean up and document submodule helpers

Factor out the commonalities from test_submodule_switch() and
test_submodule_forced_switch() in lib-submodule-update.sh, and document
their usage.

This also makes explicit (through the KNOWN_FAILURE_FORCED_SWITCH_TESTS
variable) the fact that, currently, all functionality tested using
test_submodule_forced_switch() do not correctly handle the situation in
which a submodule is replaced with an ordinary directory.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff: --ignore-cr-at-eolJunio C Hamano Thu, 26 Oct 2017 06:32:27 +0000 (15:32 +0900)

diff: --ignore-cr-at-eol

A new option --ignore-cr-at-eol tells the diff machinery to treat a
carriage-return at the end of a (complete) line as if it does not
exist.

Just like other "--ignore-*" options to ignore various kinds of
whitespace differences, this will help reviewing the real changes
you made without getting distracted by spurious CRLF<->LF conversion
made by your editor program.

Helped-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
[jch: squashed in command line completion by Dscho]
Signed-off-by: Junio C Hamano <gitster@pobox.com>

wt-status: actually ignore submodules when requestedBrandon Williams Mon, 6 Nov 2017 22:08:19 +0000 (14:08 -0800)

wt-status: actually ignore submodules when requested

Since ff6f1f564 (submodule-config: lazy-load a repository's .gitmodules
file, 2017-08-03) rebase interactive fails if there are any submodules
with unstaged changes which have been configured with a value for
'submodule.<name>.ignore' in the repository's config.

This is due to how configured values of 'submodule.<name>.ignore' are
handled in addition to a change in how the submodule config is loaded.
When the diff machinery hits a submodule (gitlink as well as a
corresponding entry in the submodule subsystem) it will read the value
of 'submodule.<name>.ignore' stored in the repository's config and if
the config is present it will clear the 'IGNORE_SUBMODULES' (which is
the flag explicitly requested by rebase interactive),
'IGNORE_UNTRACKED_IN_SUBMODULES', and 'IGNORE_DIRTY_SUBMODULES' diff
flags and then set one of them based on the configured value.

Historically this wasn't a problem because the submodule subsystem
wasn't initialized because the .gitmodules file wasn't explicitly loaded
by the rebase interactive command. So when the diff machinery hit a
submodule it would skip over reading any configured values of
'submodule.<name>.ignore'.

In order to preserve the behavior of submodules being ignored by rebase
interactive, also set the 'OVERRIDE_SUBMODULE_CONFIG' diff flag when
submodules are requested to be ignored when checking for unstaged
changes.

Reported-by: Orgad Shaneh <orgads@gmail.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git/Packet.pm: extract parts of t0021/rot13-filter... Christian Couder Sun, 5 Nov 2017 21:38:36 +0000 (22:38 +0100)

Git/Packet.pm: extract parts of t0021/rot13-filter.pl for reuse

And while at it let's simplify t0021/rot13-filter.pl by
using Git/Packet.pm.

This will make it possible to reuse packet related
functions in other test scripts.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t0021/rot13-filter: add capability functionsChristian Couder Sun, 5 Nov 2017 21:38:35 +0000 (22:38 +0100)

t0021/rot13-filter: add capability functions

These function help read and write capabilities.

To make them more generic and make it easy to reuse them,
the following changes are made:

- we don't require capabilities to come in a fixed order,
- we allow duplicates,
- we check that the remote supports the capabilities we
advertise,
- we don't check if the remote declares any capability we
don't know about.

The reason behind the last change is that the protocol
should work using only the capabilities that both ends
support, and it should not stop working if one end starts
to advertise a new capability.

Despite those changes, we can still require a set of
capabilities, and die if one of them is not supported.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t0021/rot13-filter: refactor checking final lfChristian Couder Sun, 5 Nov 2017 21:38:34 +0000 (22:38 +0100)

t0021/rot13-filter: refactor checking final lf

As checking for a lf character at the end of a buffer
will be useful in another function, let's refactor this
functionality into a small remove_final_lf_or_die()
helper function.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t0021/rot13-filter: add packet_initialize()Christian Couder Sun, 5 Nov 2017 21:38:33 +0000 (22:38 +0100)

t0021/rot13-filter: add packet_initialize()

Let's refactor the code to initialize communication into its own
packet_initialize() function, so that we can reuse this
functionality in following patches.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t0021/rot13-filter: improve error messageChristian Couder Sun, 5 Nov 2017 21:38:32 +0000 (22:38 +0100)

t0021/rot13-filter: improve error message

If there is no new line at the end of something it receives,
the packet_txt_read() function die()s, but it's difficult to
debug without much context.

Let's give a bit more information when that happens.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t0021/rot13-filter: improve 'if .. elsif .. else' styleChristian Couder Sun, 5 Nov 2017 21:38:31 +0000 (22:38 +0100)

t0021/rot13-filter: improve 'if .. elsif .. else' style

Before further refactoring the "t0021/rot13-filter.pl" script,
let's modernize the style of its 'if .. elsif .. else' clauses
to improve its readability by making it more similar to our
other perl scripts.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t0021/rot13-filter: refactor packet reading functionsChristian Couder Sun, 5 Nov 2017 21:38:30 +0000 (22:38 +0100)

t0021/rot13-filter: refactor packet reading functions

To make it possible in a following commit to move packet
reading and writing functions into a Packet.pm module,
let's refactor these functions, so they don't handle
printing debug output and exiting.

While at it let's create packet_required_key_val_read()
to still handle erroring out in a common case.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t0021/rot13-filter: fix list comparisonChristian Couder Sun, 5 Nov 2017 21:38:29 +0000 (22:38 +0100)

t0021/rot13-filter: fix list comparison

Since edcc8581 ("convert: add filter.<driver>.process
option", 2016-10-16) when t0021/rot13-filter.pl was created, list
comparison in this perl script have been quite broken.

packet_txt_read() returns a 2-element list, and the right hand
side of "eq" also has a list with (two, elements), but "eq" takes
the last element of the list on each side, and compares them. The
first elements (0 or 1) on the right hand side lists do not matter,
which means we do not require to see a flush at the end of the
version -- a simple empty string or an EOF would do, which is
definitely not what we want.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-mediawiki: allow fetching namespaces with spacesIngo Ruhnke Mon, 6 Nov 2017 21:19:48 +0000 (16:19 -0500)

remote-mediawiki: allow fetching namespaces with spaces

we still want to use spaces as separators in the config, but we should
allow the user to specify namespaces with spaces, so we use underscore
for this.

Reviewed-by: Antoine Beaupré <anarcat@debian.org>
Signed-off-by: Antoine Beaupré <anarcat@debian.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-mediawiki: add namespace supportKevin Mon, 6 Nov 2017 21:19:47 +0000 (16:19 -0500)

remote-mediawiki: add namespace support

This introduces a new remote.origin.namespaces argument that is a
space-separated list of namespaces. The list of pages extract is then
taken from all the specified namespaces.

Reviewed-by: Antoine Beaupré <anarcat@debian.org>
Signed-off-by: Antoine Beaupré <anarcat@debian.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

RelNotes: the second batch post 2.15 comesJunio C Hamano Mon, 6 Nov 2017 05:31:16 +0000 (14:31 +0900)

RelNotes: the second batch post 2.15 comes

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'tg/deprecate-stash-save'Junio C Hamano Mon, 6 Nov 2017 05:24:32 +0000 (14:24 +0900)

Merge branch 'tg/deprecate-stash-save'

"git stash save" has been deprecated in favour of "git stash push".

* tg/deprecate-stash-save:
stash: remove now superfluos help for "stash push"
stash: mark "git stash save" deprecated in the man page
stash: replace "git stash save" with "git stash push" in the documentation

Merge branch 'tb/complete-checkout'Junio C Hamano Mon, 6 Nov 2017 05:24:31 +0000 (14:24 +0900)

Merge branch 'tb/complete-checkout'

Command line completion (in contrib/) update.

* tb/complete-checkout:
completion: add remaining flags to checkout

Merge branch 'gc/gitweb-filetest-acl'Junio C Hamano Mon, 6 Nov 2017 05:24:30 +0000 (14:24 +0900)

Merge branch 'gc/gitweb-filetest-acl'

"gitweb" checks if a directory is searchable with Perl's "-x"
operator, which can be enhanced by using "filetest 'access'"
pragma, which now we do.

* gc/gitweb-filetest-acl:
gitweb: use filetest to allow ACLs

Merge branch 'mp/push-pushoption-config'Junio C Hamano Mon, 6 Nov 2017 05:24:30 +0000 (14:24 +0900)

Merge branch 'mp/push-pushoption-config'

The "--push-option=<string>" option to "git push" now defaults to a
list of strings configured via push.pushOption variable.

* mp/push-pushoption-config:
builtin/push.c: add push.pushOption config

Merge branch 'hv/fetch-moved-submodules-on-demand'Junio C Hamano Mon, 6 Nov 2017 05:24:29 +0000 (14:24 +0900)

Merge branch 'hv/fetch-moved-submodules-on-demand'

"git fetch --recurse-submodules" now knows that submodules can be
moved around in the superproject in addition to getting updated,
and finds the ones that need to be fetched accordingly.

* hv/fetch-moved-submodules-on-demand:
submodule: simplify decision tree whether to or not to fetch
implement fetching of moved submodules
fetch: add test to make sure we stay backwards compatible

Merge branch 'jc/check-ref-format-oor'Junio C Hamano Mon, 6 Nov 2017 05:24:28 +0000 (14:24 +0900)

Merge branch 'jc/check-ref-format-oor'

"git check-ref-format --branch @{-1}" bit a "BUG()" when run
outside a repository for obvious reasons; clarify the documentation
and make sure we do not even try to expand the at-mark magic in
such a case, but still call the validation logic for branch names.

* jc/check-ref-format-oor:
check-ref-format doc: --branch validates and expands <branch>
check-ref-format --branch: strip refs/heads/ using skip_prefix
check-ref-format --branch: do not expand @{...} outside repository

Merge branch 'jc/t5601-copy-workaround'Junio C Hamano Mon, 6 Nov 2017 05:24:27 +0000 (14:24 +0900)

Merge branch 'jc/t5601-copy-workaround'

A (possibly flakey) test fix.

* jc/t5601-copy-workaround:
t5601: rm the target file of cp that could still be executing

Merge branch 'bc/object-id'Junio C Hamano Mon, 6 Nov 2017 05:24:27 +0000 (14:24 +0900)

Merge branch 'bc/object-id'

Conversion from uchar[20] to struct object_id continues.

* bc/object-id: (25 commits)
refs/files-backend: convert static functions to object_id
refs: convert read_raw_ref backends to struct object_id
refs: convert peel_object to struct object_id
refs: convert resolve_ref_unsafe to struct object_id
worktree: convert struct worktree to object_id
refs: convert resolve_gitlink_ref to struct object_id
Convert remaining callers of resolve_gitlink_ref to object_id
sha1_file: convert index_path and index_fd to struct object_id
refs: convert reflog_expire parameter to struct object_id
refs: convert read_ref_at to struct object_id
refs: convert peel_ref to struct object_id
builtin/pack-objects: convert to struct object_id
pack-bitmap: convert traverse_bitmap_commit_list to object_id
refs: convert dwim_log to struct object_id
builtin/reflog: convert remaining unsigned char uses to object_id
refs: convert dwim_ref and expand_ref to struct object_id
refs: convert read_ref and read_ref_full to object_id
refs: convert resolve_refdup and refs_resolve_refdup to struct object_id
Convert check_connected to use struct object_id
refs: update ref transactions to use struct object_id
...

Merge branch 'jk/revision-pruning-optim'Junio C Hamano Mon, 6 Nov 2017 05:24:26 +0000 (14:24 +0900)

Merge branch 'jk/revision-pruning-optim'

Pathspec-limited revision traversal was taught not to keep finding
unneeded differences once it knows two trees are different inside
given pathspec.

* jk/revision-pruning-optim:
revision: quit pruning diff more quickly when possible

Merge branch 'ds/find-unique-abbrev-optim'Junio C Hamano Mon, 6 Nov 2017 05:24:25 +0000 (14:24 +0900)

Merge branch 'ds/find-unique-abbrev-optim'

Optimize the code to find shortest unique prefix of object names.

* ds/find-unique-abbrev-optim:
sha1_name: minimize OID comparisons during disambiguation
sha1_name: parse less while finding common prefix
sha1_name: unroll len loop in find_unique_abbrev_r()
p4211-line-log.sh: add log --online --raw --parents perf test

Merge branch 'wk/pull-signoff'Junio C Hamano Mon, 6 Nov 2017 05:24:24 +0000 (14:24 +0900)

Merge branch 'wk/pull-signoff'

"git pull" has been taught to accept "--[no-]signoff" option and
pass it down to "git merge".

* wk/pull-signoff:
pull: pass --signoff/--no-signoff to "git merge"

Merge branch 'pc/submodule-helper'Junio C Hamano Mon, 6 Nov 2017 05:24:23 +0000 (14:24 +0900)

Merge branch 'pc/submodule-helper'

GSoC.

* pc/submodule-helper:
submodule: port submodule subcommand 'status' from shell to C
submodule--helper: introduce for_each_listed_submodule()
submodule--helper: introduce get_submodule_displaypath()

Merge branch 'pb/bisect-helper'Junio C Hamano Mon, 6 Nov 2017 05:24:23 +0000 (14:24 +0900)

Merge branch 'pb/bisect-helper'

An early part of piece-by-piece rewrite of "git bisect".

* pb/bisect-helper:
bisect--helper: `is_expected_rev` & `check_expected_revs` shell function in C
t6030: explicitly test for bisection cleanup
bisect--helper: `bisect_clean_state` shell function in C
bisect--helper: `write_terms` shell function in C
bisect--helper: rewrite `check_term_format` shell function in C
bisect--helper: use OPT_CMDMODE instead of OPT_BOOL

Merge branch 'dm/run-command-ignored-hook-advise'Junio C Hamano Mon, 6 Nov 2017 05:24:22 +0000 (14:24 +0900)

Merge branch 'dm/run-command-ignored-hook-advise'

A hook script that is set unexecutable is simply ignored. Git
notifies when such a file is ignored, unless the message is
squelched via advice.ignoredHook configuration.

* dm/run-command-ignored-hook-advise:
run-command: add hint when a hook is ignored

The first batch for 2.16Junio C Hamano Mon, 6 Nov 2017 04:18:22 +0000 (13:18 +0900)

The first batch for 2.16

The most notable change is that we no longer take "git add ''" and
add everything. An empty string is now an error when used as a
pathspec element.

Signed-off-by: Junio C Hamano <gitster@pobox.com>