gitweb.git
sign_buffer: use pipe_commandJeff King Fri, 17 Jun 2016 23:38:55 +0000 (19:38 -0400)

sign_buffer: use pipe_command

Similar to the prior commit for verify_signed_buffer, the
motivation here is both to make the code simpler, and to
avoid any possible deadlocks with gpg.

In this case we have the same "write to stdin, then read
from stdout" that the verify case had. This is unlikely to
be a problem in practice, since stdout has the detached
signature, which it cannot compute until it has read all of
stdin (if it were a non-detached signature, that would be a
problem, though).

We don't read from stderr at all currently. However, we will
want to in a future patch, so this also prepares us there
(and in that case gpg _does_ write before reading all of the
input, though again, it is unlikely that a key uid will fill
up a pipe buffer).

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

verify_signed_buffer: use pipe_commandJeff King Fri, 17 Jun 2016 23:38:52 +0000 (19:38 -0400)

verify_signed_buffer: use pipe_command

This is shorter and should make the function easier to
follow. But more importantly, it removes the possibility of
any deadlocks based on reading or writing to gpg.

It's not clear if such a deadlock is possible in practice.

We do write the whole payload before reading anything, so we
could deadlock there. However, in practice gpg will need to
read our whole input to verify the signature, so it will
drain our payload first. It could write an error to stderr
before reading, but it's unlikely that such an error
wouldn't be followed by it immediately exiting, or that the
error would actually be larger than a pipe buffer.

On the writing side, we drain stderr (with the
human-readable output) in its entirety before reading stdout
(with the status-fd data). Running strace on "gpg --verify"
does show interleaved output on the two descriptors:

write(2, "gpg: ", 5) = 5
write(2, "Signature made Thu 16 Jun 2016 0"..., 73) = 73
write(1, "[GNUPG:] SIG_ID tQw8KGcs9rBfLvAj"..., 66) = 66
write(1, "[GNUPG:] GOODSIG 69808639F9430ED"..., 60) = 60
write(2, "gpg: ", 5) = 5
write(2, "Good signature from \"Jeff King <"..., 47) = 47
write(2, "\n", 1) = 1
write(2, "gpg: ", 5) = 5
write(2, " aka \"Jeff King <"..., 49) = 49
write(2, "\n", 1) = 1
write(1, "[GNUPG:] VALIDSIG C49CE24156AF08"..., 135) = 135
write(1, "[GNUPG:] TRUST_ULTIMATE\n", 24) = 24

The second line written to stdout there contains the
signer's UID, which can be arbitrarily long. If it fills the
pipe buffer, then gpg would block writing to its stdout,
while we are blocked trying to read its stderr.

In practice, GPG seems to limit UIDs to 2048 bytes, so
unless your pipe buffer size is quite small, or unless gpg
does not enforce the limit under some conditions, this seems
unlikely in practice.

Still, it is not hard for us to be cautious and just use
pipe_command.

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

run-command: add pipe_command helperJeff King Fri, 17 Jun 2016 23:38:47 +0000 (19:38 -0400)

run-command: add pipe_command helper

We already have capture_command(), which captures the stdout
of a command in a way that avoids deadlocks. But sometimes
we need to do more I/O, like capturing stderr as well, or
sending data to stdin. It's easy to write code that
deadlocks racily in these situations depending on how fast
the command reads its input, or in which order it writes its
output.

Let's give callers an easy interface for doing this the
right way, similar to what capture_command() did for the
simple case.

The whole thing is backed by a generic poll() loop that can
feed an arbitrary number of buffers to descriptors, and fill
an arbitrary number of strbufs from other descriptors. This
seems like overkill, but the resulting code is actually a
bit cleaner than just handling the three descriptors
(because the output code for stdout/stderr is effectively
duplicated, so being able to loop is a benefit).

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

verify_signed_buffer: use tempfile objectJeff King Fri, 17 Jun 2016 23:38:43 +0000 (19:38 -0400)

verify_signed_buffer: use tempfile object

We use git_mkstemp to create a temporary file, and try to
clean it up in all exit paths from the function. But that
misses any cases where we die by signal, or by calling die()
in a sub-function. In addition, we missed one of the exit
paths.

Let's convert to using a tempfile object, which handles the
hard cases for us, and add the missing cleanup call. Note
that we would not simply want to rely on program exit to
catch our missed cleanup, as this function may be called
many times in a single program (for the same reason, we use
a static tempfile instead of heap-allocating a new one; that
gives an upper bound on our memory usage).

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

verify_signed_buffer: drop pbuf variableJeff King Fri, 17 Jun 2016 23:38:39 +0000 (19:38 -0400)

verify_signed_buffer: drop pbuf variable

If our caller gave us a non-NULL gpg_status parameter, we
write the gpg status into their strbuf. If they didn't, then
we write it to a temporary local strbuf (since we still need
to look at it). The variable "pbuf" adds an extra layer of
indirection so that the rest of the function can just access
whichever is appropriate.

However, the name "pbuf" isn't very descriptive, and it's
easy to get confused about what is supposed to be in it
(especially because we are reading both "status" and
"output" from gpg).

Rather than give it a more descriptive name, we can just use
gpg_status as our indirection pointer. Either it points to
the caller's input, or we can point it directly to our
temporary buffer.

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

gpg-interface: use child_process.argsJeff King Fri, 17 Jun 2016 23:38:35 +0000 (19:38 -0400)

gpg-interface: use child_process.args

Our argv allocations are relatively straightforward, but
this avoids us having to manually keep the count up to date
(or create new to-be-replaced slots in the declaration) when
we add new arguments.

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

Git 2.9 v2.9.0Junio C Hamano Mon, 13 Jun 2016 17:42:13 +0000 (10:42 -0700)

Git 2.9

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

Merge tag 'l10n-2.9.0-rc0' of git://github.com/git... Junio C Hamano Mon, 13 Jun 2016 01:00:57 +0000 (18:00 -0700)

Merge tag 'l10n-2.9.0-rc0' of git://github.com/git-l10n/git-po

l10n-2.9.0-rc0

* tag 'l10n-2.9.0-rc0' of git://github.com/git-l10n/git-po:
l10n: ko.po: Update Korean translation
l10n: ru.po: update Russian translation
l10n: de.po: translate 104 new messages
l10n: zh_CN: review for git v2.9.0 l10n round 1
l10n: zh_CN: for git v2.9.0 l10n round 1
l10n: pt_PT: update Portuguese translation
l10n: pt_PT: update according to git-gui glossary
l10n: pt_PT: merge git.pot file
l10n: Updated Bulgarian translation of git (2597t,0f,0u)
l10n: sv.po: Update Swedish translation (2597t0f0u)
l10n: fr.po v2.9.0rnd1
l10n: Updated Vietnamese translation (2597t)
l10n: git.pot: v2.9.0 round 1 (104 new, 37 removed)
l10n: fr.po Fixed grammar mistake

l10n: ko.po: Update Korean translationChangwoo Ryu Sat, 11 Jun 2016 16:25:58 +0000 (01:25 +0900)

l10n: ko.po: Update Korean translation

Merge branch 'russian-l10n' of https://github.com/DJm00... Jiang Xin Sat, 11 Jun 2016 12:21:52 +0000 (20:21 +0800)

Merge branch 'russian-l10n' of https://github.com/DJm00n/git-po-ru

* 'russian-l10n' of https://github.com/DJm00n/git-po-ru:
l10n: ru.po: update Russian translation

l10n: ru.po: update Russian translationDimitriy Ryazantcev Sat, 11 Jun 2016 09:53:43 +0000 (12:53 +0300)

l10n: ru.po: update Russian translation

Signed-off-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com>

Hopefully the final last-minute update before 2.9 finalJunio C Hamano Fri, 10 Jun 2016 22:30:19 +0000 (15:30 -0700)

Hopefully the final last-minute update before 2.9 final

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

Merge branch 'jk/diff-compact-heuristic'Junio C Hamano Fri, 10 Jun 2016 22:26:06 +0000 (15:26 -0700)

Merge branch 'jk/diff-compact-heuristic'

It turns out that the earlier effort to update the heuristics may
want to use a bit more time to mature. Turn it off by default.

* jk/diff-compact-heuristic:
diff: disable compaction heuristic for now

Merge branch 'jk/shell-portability'Junio C Hamano Fri, 10 Jun 2016 22:26:04 +0000 (15:26 -0700)

Merge branch 'jk/shell-portability'

test fixes.

* jk/shell-portability:
t5500 & t7403: lose bash-ism "local"
test-lib: add in-shell "env" replacement

Merge branch 'jc/t2300-setup'Junio C Hamano Fri, 10 Jun 2016 22:26:04 +0000 (15:26 -0700)

Merge branch 'jc/t2300-setup'

A test fix.

* jc/t2300-setup:
t2300: run git-sh-setup in an environment that better mimics the real life

diff: disable compaction heuristic for nowJunio C Hamano Fri, 10 Jun 2016 17:58:55 +0000 (10:58 -0700)

diff: disable compaction heuristic for now

http://lkml.kernel.org/g/20160610075043.GA13411@sigill.intra.peff.net
reports that a change to add a new "function" with common ending
with the existing one at the end of the file is shown like this:

def foo
do_foo_stuff()

+ common_ending()
+end
+
+def bar
+ do_bar_stuff()
+
common_ending()
end

when the new heuristic is in use. In reality, the change is to add
the blank line before "def bar" and everything below, which is what
the code without the new heuristic shows.

Disable the heuristics by default, and resurrect the documentation
for the option and the configuration variables, while clearly
marking the feature as still experimental.

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

l10n: de.po: translate 104 new messagesRalf Thielow Fri, 10 Jun 2016 16:00:46 +0000 (18:00 +0200)

l10n: de.po: translate 104 new messages

Translate 104 new messages came from git.pot update in f517e50
(l10n: git.pot: v2.9.0 round 1 (104 new, 37 removed)).

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>

l10n: zh_CN: review for git v2.9.0 l10n round 1Ray Chen Sun, 5 Jun 2016 16:06:17 +0000 (00:06 +0800)

l10n: zh_CN: review for git v2.9.0 l10n round 1

Signed-off-by: Ray Chen <oldsharp@gmail.com>
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>

Git 2.9-rc2 v2.9.0-rc2Junio C Hamano Mon, 6 Jun 2016 21:19:45 +0000 (14:19 -0700)

Git 2.9-rc2

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

Sync with 2.8.4Junio C Hamano Mon, 6 Jun 2016 21:30:49 +0000 (14:30 -0700)

Sync with 2.8.4

* maint:
Git 2.8.4

Git 2.8.4 v2.8.4Junio C Hamano Mon, 6 Jun 2016 21:29:32 +0000 (14:29 -0700)

Git 2.8.4

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

Merge branch 'kb/msys2-tty' into maintJunio C Hamano Mon, 6 Jun 2016 21:27:38 +0000 (14:27 -0700)

Merge branch 'kb/msys2-tty' into maint

The "are we talking with TTY, doing an interactive session?"
detection has been updated to work better for "Git for Windows".

* kb/msys2-tty:
mingw: make isatty() recognize MSYS2's pseudo terminals (/dev/pty*)

Merge branch 'da/difftool' into maintJunio C Hamano Mon, 6 Jun 2016 21:27:37 +0000 (14:27 -0700)

Merge branch 'da/difftool' into maint

"git difftool" learned to handle unmerged paths correctly in
dir-diff mode.

* da/difftool:
difftool: handle unmerged files in dir-diff mode
difftool: initialize variables for readability

Merge branch 'tb/core-eol-fix' into maintJunio C Hamano Mon, 6 Jun 2016 21:27:36 +0000 (14:27 -0700)

Merge branch 'tb/core-eol-fix' into maint

A couple of bugs around core.autocrlf have been fixed.

* tb/core-eol-fix:
convert.c: ident + core.autocrlf didn't work
t0027: test cases for combined attributes
convert: allow core.autocrlf=input and core.eol=crlf
t0027: make commit_chk_wrnNNO() reliable

Merge branch 'ar/diff-args-osx-precompose' into maintJunio C Hamano Mon, 6 Jun 2016 21:27:35 +0000 (14:27 -0700)

Merge branch 'ar/diff-args-osx-precompose' into maint

Many commands normalize command line arguments from NFD to NFC
variant of UTF-8 on OSX, but commands in the "diff" family did
not, causing "git diff $path" to complain that no such path is
known to Git. They have been taught to do the normalization.

* ar/diff-args-osx-precompose:
diff: run arguments through precompose_argv

Merge branch 'sb/submodule-helper-relative-path'Junio C Hamano Mon, 6 Jun 2016 21:18:55 +0000 (14:18 -0700)

Merge branch 'sb/submodule-helper-relative-path'

A bash-ism "local" has been removed from "git submodule" scripted
Porcelain.

* sb/submodule-helper-relative-path:
submodule: remove bashism from shell script

Merge branch 'sb/submodule-helper-list-signal-unmatch... Junio C Hamano Mon, 6 Jun 2016 21:18:55 +0000 (14:18 -0700)

Merge branch 'sb/submodule-helper-list-signal-unmatch-via-exit-status'

The way how "submodule--helper list" signals unmatch error to its
callers has been updated.

* sb/submodule-helper-list-signal-unmatch-via-exit-status:
submodule--helper: offer a consistent API

l10n: zh_CN: for git v2.9.0 l10n round 1Jiang Xin Sun, 29 May 2016 12:40:35 +0000 (20:40 +0800)

l10n: zh_CN: for git v2.9.0 l10n round 1

Update 104 new translations (2596t1f0u) for git v2.9.0-rc0.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>

Almost ready for 2.9-rc2Junio C Hamano Fri, 3 Jun 2016 21:38:35 +0000 (14:38 -0700)

Almost ready for 2.9-rc2

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

Merge branch 'rs/apply-name-terminate'Junio C Hamano Fri, 3 Jun 2016 21:38:04 +0000 (14:38 -0700)

Merge branch 'rs/apply-name-terminate'

Code clean-up.

* rs/apply-name-terminate:
apply: remove unused parameters from name_terminate()

Merge branch 'rs/patch-id-use-skip-prefix'Junio C Hamano Fri, 3 Jun 2016 21:38:03 +0000 (14:38 -0700)

Merge branch 'rs/patch-id-use-skip-prefix'

Code clean-up.

* rs/patch-id-use-skip-prefix:
patch-id: use starts_with() and skip_prefix()

Merge branch 'bd/readme.markdown-more'Junio C Hamano Fri, 3 Jun 2016 21:38:02 +0000 (14:38 -0700)

Merge branch 'bd/readme.markdown-more'

The mark-up in the top-level README.md file has been updated to
typeset CLI command names differently from the body text.

* bd/readme.markdown-more:
README.md: format CLI commands with code syntax

Merge branch 'mm/makefile-developer-can-be-in-config... Junio C Hamano Fri, 3 Jun 2016 21:38:02 +0000 (14:38 -0700)

Merge branch 'mm/makefile-developer-can-be-in-config-mak'

"make DEVELOPER=1" worked as expected; setting DEVELOPER=1 in
config.mak didn't.

* mm/makefile-developer-can-be-in-config-mak:
Makefile: add $(DEVELOPER_CFLAGS) variable
Makefile: move 'ifdef DEVELOPER' after config.mak* inclusion

Merge branch 'em/man-bold-literal'Junio C Hamano Fri, 3 Jun 2016 21:38:02 +0000 (14:38 -0700)

Merge branch 'em/man-bold-literal'

The manpage output of our documentation did not render well in
terminal; typeset literals in bold by default to make them stand
out more.

* em/man-bold-literal:
Documentation: bold literals in man

Merge branch 'pa/cherry-pick-doc-typo'Junio C Hamano Fri, 3 Jun 2016 21:38:02 +0000 (14:38 -0700)

Merge branch 'pa/cherry-pick-doc-typo'

"git cherry-pick --help" had three instances of word "behavior",
one of which was spelled "behaviour", which is updated to match the
other two.

* pa/cherry-pick-doc-typo:
git-cherry-pick.txt: correct a small typo

Merge branch 'mr/send-email-doc-gmail-2fa'Junio C Hamano Fri, 3 Jun 2016 21:38:01 +0000 (14:38 -0700)

Merge branch 'mr/send-email-doc-gmail-2fa'

Typofix.

* mr/send-email-doc-gmail-2fa:
Documentation/git-send-email: fix typo in gmail 2FA section

Merge branch 'js/rebase-i-dedup-call-to-rerere'Junio C Hamano Fri, 3 Jun 2016 21:38:01 +0000 (14:38 -0700)

Merge branch 'js/rebase-i-dedup-call-to-rerere'

"git rebase -i", after it fails to auto-resolve the conflict, had
an unnecessary call to "git rerere" from its very early days, which
was spotted recently; the call has been removed.

* js/rebase-i-dedup-call-to-rerere:
rebase -i: remove an unnecessary 'rerere' invocation

Merge branch 'js/perf-rebase-i'Junio C Hamano Fri, 3 Jun 2016 21:38:00 +0000 (14:38 -0700)

Merge branch 'js/perf-rebase-i'

The one in 'master' has a brown-paper-bag bug that breaks the perf
test when used inside a usual Git repository with a working tree.

* js/perf-rebase-i:
perf: make the tests work without a worktree

Documentation/git-send-email: fix typo in gmail 2FA... SZEDER Gábor Wed, 1 Jun 2016 23:37:41 +0000 (01:37 +0200)

Documentation/git-send-email: fix typo in gmail 2FA section

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t2300: run git-sh-setup in an environment that better... Junio C Hamano Wed, 1 Jun 2016 20:30:47 +0000 (13:30 -0700)

t2300: run git-sh-setup in an environment that better mimics the real life

When we run scripted Porcelains, "git" potty has set up the $PATH by
prepending $GIT_EXEC_PATH, the path given by "git --exec-path=$there
$cmd", etc. already. Because of this, scripted Porcelains can
dot-source shell script library like git-sh-setup with simple dot
without specifying any path.

t2300 however dot-sources git-sh-setup without adjusting $PATH like
the real "git" potty does. This has not been a problem so far, but
once git-sh-setup wants to rely on the $PATH adjustment, just like
any scripted Porcelains already do, it would become one. It cannot
for example dot-source another shell library without specifying the
full path to it by prefixing $(git --exec-path).

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

t5500 & t7403: lose bash-ism "local"Junio C Hamano Wed, 1 Jun 2016 20:56:08 +0000 (13:56 -0700)

t5500 & t7403: lose bash-ism "local"

In t5500::check_prot_host_port_path(), diagport is not a variable
used elsewhere and the function is not recursively called so this
can simply lose the "local", which may not be supported by shell
(besides, the function liberally clobbers other variables without
making them "local").

t7403::reset_submodule_urls() overrides the "root" variable used
in the test framework for no good reason; its use is not about
temporarily relocating where the test repositories are created.
This assignment can be made not to clobber the variable by moving
them into the subshells it already uses. Its value is always
$TRASH_DIRECTORY, so we could use it instead there, and this
function that is called only once and its two subshells may not be
necessary (instead, the caller can use "git -C $there config" and
set a value that is derived from $TRASH_DIRECTORY), but this is a
minimum fix that is needed to lose "local".

Helped-by: John Keeping <john@keeping.me.uk>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule: remove bashism from shell scriptStefan Beller Wed, 1 Jun 2016 00:27:59 +0000 (17:27 -0700)

submodule: remove bashism from shell script

Junio pointed out `relative_path` was using bashisms via the
local variables. As the longer term goal is to rewrite most of the
submodule code in C, do it now.

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

submodule--helper: offer a consistent APIStefan Beller Tue, 31 May 2016 23:59:33 +0000 (16:59 -0700)

submodule--helper: offer a consistent API

In 48308681 (2016-02-29, git submodule update: have a dedicated helper
for cloning), the helper communicated errors back only via exit code,
and dance with printing '#unmatched' in case of error was left to
git-submodule.sh as it uses the output of the helper and pipes it into
shell commands. This change makes the helper consistent by never
printing '#unmatched' in the helper but always handling these piping
issues in the actual shell script.

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

Makefile: add $(DEVELOPER_CFLAGS) variableMatthieu Moy Wed, 1 Jun 2016 08:00:08 +0000 (10:00 +0200)

Makefile: add $(DEVELOPER_CFLAGS) variable

This does not change the behavior, but allows the user to tweak
DEVELOPER_CFLAGS on the command-line or in a config.mak* file if
needed.

This also makes the code somewhat cleaner as it follows the pattern

<initialisation of variables>
<include statements>
<actual build logic>

by specifying which flags to activate in the first part, and actually
activating them in the last one.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

test-lib: add in-shell "env" replacementJeff King Wed, 1 Jun 2016 07:04:26 +0000 (03:04 -0400)

test-lib: add in-shell "env" replacement

The one-shot environment variable syntax:

FOO=BAR some-program

is unportable when some-program is actually a shell
function, like test_must_fail (on some shells FOO remains
set after the function returns, and on others it does not).

We sometimes get around this by using env, like:

test_must_fail env FOO=BAR some-program

But that only works because test_must_fail's arguments are
themselves a command which can be run. You can't run:

env FOO=BAR test_must_fail some-program

because env does not know about our shell functions. So
there is no equivalent for test_commit, for example, and one
must resort to:

(
FOO=BAR
export FOO
test_commit
)

which is a bit verbose. Let's add a version of "env" that
works _inside_ the shell, by creating a subshell, exporting
variables from its argument list, and running the command.

Its use is demonstrated on a currently-unportable case in
t4014.

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

Git 2.9-rc1 v2.9.0-rc1Junio C Hamano Tue, 31 May 2016 21:07:08 +0000 (14:07 -0700)

Git 2.9-rc1

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

Merge branch 'maint'Junio C Hamano Tue, 31 May 2016 21:12:08 +0000 (14:12 -0700)

Merge branch 'maint'

* maint:
More topics for 2.8.4

More topics for 2.8.4Junio C Hamano Tue, 31 May 2016 21:11:38 +0000 (14:11 -0700)

More topics for 2.8.4

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

Merge branch 'sb/submodule-deinit-all' into maintJunio C Hamano Tue, 31 May 2016 21:09:46 +0000 (14:09 -0700)

Merge branch 'sb/submodule-deinit-all' into maint

Correct faulty recommendation to use "git submodule deinit ." when
de-initialising all submodules, which would result in a strange
error message in a pathological corner case.

* sb/submodule-deinit-all:
submodule deinit: require '--all' instead of '.' for all submodules

Merge branch 'bn/http-cookiefile-config' into maintJunio C Hamano Tue, 31 May 2016 21:08:28 +0000 (14:08 -0700)

Merge branch 'bn/http-cookiefile-config' into maint

"http.cookieFile" configuration variable clearly wants a pathname,
but we forgot to treat it as such by e.g. applying tilde expansion.

* bn/http-cookiefile-config:
http: expand http.cookieFile as a path
Documentation: config: improve word ordering for http.cookieFile

Merge branch 'jk/test-send-sh-x-trace-elsewhere' into... Junio C Hamano Tue, 31 May 2016 21:08:27 +0000 (14:08 -0700)

Merge branch 'jk/test-send-sh-x-trace-elsewhere' into maint

Running tests with '-x' option to trace the individual command
executions is a useful way to debug test scripts, but some tests
that capture the standard error stream and check what the command
said can be broken with the trace output mixed in. When running
our tests under "bash", however, we can redirect the trace output
to another file descriptor to keep the standard error of programs
being tested intact.

* jk/test-send-sh-x-trace-elsewhere:
test-lib: set BASH_XTRACEFD automatically

Merge branch 'js/name-rev-use-oldest-ref' into maintJunio C Hamano Tue, 31 May 2016 21:08:26 +0000 (14:08 -0700)

Merge branch 'js/name-rev-use-oldest-ref' into maint

"git describe --contains" often made a hard-to-justify choice of
tag to give name to a given commit, because it tried to come up
with a name with smallest number of hops from a tag, causing an old
commit whose close descendant that is recently tagged were not
described with respect to an old tag but with a newer tag. It did
not help that its computation of "hop" count was further tweaked to
penalize being on a side branch of a merge. The logic has been
updated to favor using the tag with the oldest tagger date, which
is a lot easier to explain to the end users: "We describe a commit
in terms of the (chronologically) oldest tag that contains the
commit."

* js/name-rev-use-oldest-ref:
name-rev: include taggerdate in considering the best name

rebase -i: remove an unnecessary 'rerere' invocationJohannes Sixt Fri, 27 May 2016 16:28:21 +0000 (18:28 +0200)

rebase -i: remove an unnecessary 'rerere' invocation

Interactive rebase uses 'git cherry-pick' and 'git merge' to replay
commits. Both invoke the 'rerere' machinery when they fail due to merge
conflicts. Note that all code paths with these two commands also invoke
the shell function die_with_patch when the commands fail.

Since commit 629716d2 ("rerere: do use multiple variants") the second
operation of the rerere machinery can be observed by a duplicated
message "Recorded preimage for 'file'". This second operation records
the same preimage as the first one and, hence, only wastes cycles.
Remove the 'git rerere' invocation from die_with_patch.

Shell function die_with_patch can be called after the failure of
"git commit", too, which also calls into the rerere machinery, but it
does so only after a successful commit to record the resolution.
Therefore, it is wrong to call 'git rerere' from die_with_patch after
"git commit" fails.

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

perf: make the tests work without a worktreeRené Scharfe Sun, 29 May 2016 16:43:41 +0000 (18:43 +0200)

perf: make the tests work without a worktree

In regular repositories $source_git and $objects_dir contain relative
paths based on $source. Go there to allow cp to resolve them.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'es/t1500-modernize'Junio C Hamano Tue, 31 May 2016 19:40:55 +0000 (12:40 -0700)

Merge branch 'es/t1500-modernize'

test updates to make it more readable and maintainable.

* es/t1500-modernize:
t1500: avoid setting environment variables outside of tests
t1500: avoid setting configuration options outside of tests
t1500: avoid changing working directory outside of tests
t1500: test_rev_parse: facilitate future test enhancements
t1500: be considerate to future potential tests

Merge branch 'jk/cat-file-buffered-batch-all'Junio C Hamano Tue, 31 May 2016 19:40:54 +0000 (12:40 -0700)

Merge branch 'jk/cat-file-buffered-batch-all'

"git cat-file --batch-all" has been sped up, by taking advantage
of the fact that it does not have to read a list of objects, in two
ways.

* jk/cat-file-buffered-batch-all:
cat-file: default to --buffer when --batch-all-objects is used
cat-file: avoid noop calls to sha1_object_info_extended

Merge branch 'fc/fast-import-broken-marks-file'Junio C Hamano Tue, 31 May 2016 19:40:53 +0000 (12:40 -0700)

Merge branch 'fc/fast-import-broken-marks-file'

"git fast-import --export-marks" would overwrite the existing marks
file even when it makes a dump from its custom die routine.
Prevent it from doing so when we have an import-marks file but
haven't finished reading it.

* fc/fast-import-broken-marks-file:
fast-import: do not truncate exported marks file

Documentation: bold literals in manErwan Mathoniere Tue, 31 May 2016 16:20:33 +0000 (18:20 +0200)

Documentation: bold literals in man

Backticks are emphasized through monospaced styling in the HTML
version of Git documentation. But they were left unstyled in the
manual pages.

To make the man pages more comfortably read, `MAN_BOLD_LITERAL` was
added by 5121a6d (Documentation: option to render literal text as
bold for manpages, 2009-03-27). It allowed the user to build the
manpages with literals in bold style.

For precaution it was not set by default back then.

Since 79c461d (docs: default to more modern toolset, 2010-11-19), it
is assumed ASCIIDOC 8 and at least docbook-xsl 1.73 are used, so the
need for compatibility concern is much lessor now.

Remove `MAN_BOLD_LITERAL`, and typeset literals as bold by default .
Add `NO_MAN_BOLD_LITERAL`, a new Makefile option, disabling this
feature when defined.

Signed-off-by: Erwan MATHONIERE <erwan.mathoniere@grenoble-inp.org>
Signed-off-by: Samuel GROOT <samuel.groot@grenoble-inp.org>
Signed-off-by: Tom RUSSELLO <tom.russello@grenoble-inp.org>
Signed-off-by: Matthieu MOY <matthieu.moy@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: pt_PT: update Portuguese translationVasco Almeida Fri, 27 May 2016 19:17:32 +0000 (19:17 +0000)

l10n: pt_PT: update Portuguese translation

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>

l10n: pt_PT: update according to git-gui glossaryVasco Almeida Fri, 27 May 2016 15:09:29 +0000 (15:09 +0000)

l10n: pt_PT: update according to git-gui glossary

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>

l10n: pt_PT: merge git.pot fileVasco Almeida Sat, 28 May 2016 17:14:12 +0000 (17:14 +0000)

l10n: pt_PT: merge git.pot file

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>

Makefile: move 'ifdef DEVELOPER' after config.mak*... Matthieu Moy Tue, 31 May 2016 13:24:43 +0000 (15:24 +0200)

Makefile: move 'ifdef DEVELOPER' after config.mak* inclusion

The DEVELOPER knob was introduced in 658df95 (add DEVELOPER makefile
knob to check for acknowledged warnings, 2016-02-25), and works well
when used as "make DEVELOPER=1", and when the configure script was not
used.

However, the advice given in CodingGuidelines to add DEVELOPER=1 to
config.mak does not: config.mak is included after testing for
DEVELOPER in the Makefile, and at least GNU Make's manual specifies
"Conditional directives are parsed immediately", hence the config.mak
declaration is not visible at the time the conditional is evaluated.

Also, when using the configure script to generate a
config.mak.autogen, the later file contained a "CFLAGS = <flags>"
initialization, which overrode the "CFLAGS += -W..." triggered by
DEVELOPER.

This patch fixes both issues.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

README.md: format CLI commands with code syntaxBenjamin Dopplinger Mon, 30 May 2016 03:08:16 +0000 (03:08 +0000)

README.md: format CLI commands with code syntax

CLI commands which are mentioned in the readme are now formatted with
the Markdown code syntax to make the documentation more readable.

Signed-off-by: Benjamin Dopplinger <b.dopplinger@gmail.com>
Reviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Final batch before 2.9-rc1Junio C Hamano Mon, 30 May 2016 01:08:26 +0000 (18:08 -0700)

Final batch before 2.9-rc1

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

Merge branch 'ak/t0008-ksh88-workaround'Junio C Hamano Mon, 30 May 2016 01:06:44 +0000 (18:06 -0700)

Merge branch 'ak/t0008-ksh88-workaround'

Test portability workaround.

* ak/t0008-ksh88-workaround:
t0008: 4 tests fail with ksh88

Merge branch 'js/t6044-use-test-seq'Junio C Hamano Mon, 30 May 2016 01:06:43 +0000 (18:06 -0700)

Merge branch 'js/t6044-use-test-seq'

Test portability fix.

* js/t6044-use-test-seq:
t6044: replace seq by test_seq

Merge branch 'ak/t4204-shell-portability'Junio C Hamano Mon, 30 May 2016 01:06:43 +0000 (18:06 -0700)

Merge branch 'ak/t4204-shell-portability'

Update a test to run also under ksh88.

* ak/t4204-shell-portability:
t4204: do not let $name variable clobbered

Merge branch 'rj/log-decorate-auto'Junio C Hamano Mon, 30 May 2016 01:06:42 +0000 (18:06 -0700)

Merge branch 'rj/log-decorate-auto'

We forgot to add "git log --decorate=auto" to documentation when we
added the feature back in v2.1.0 timeframe.

* rj/log-decorate-auto:
log: document the --decorate=auto option

Merge branch 'mr/send-email-doc-gmail-2fa'Junio C Hamano Mon, 30 May 2016 01:06:42 +0000 (18:06 -0700)

Merge branch 'mr/send-email-doc-gmail-2fa'

Give hints to GMail users with two-factor auth enabled that
they need app-specific-password when using send-email.

* mr/send-email-doc-gmail-2fa:
Documentation: add instructions to help setup gmail 2FA

Merge branch 'kb/msys2-tty'Junio C Hamano Mon, 30 May 2016 01:06:41 +0000 (18:06 -0700)

Merge branch 'kb/msys2-tty'

The "are we talking with TTY, doing an interactive session?"
detection has been updated to work better for "Git for Windows".

* kb/msys2-tty:
mingw: make isatty() recognize MSYS2's pseudo terminals (/dev/pty*)

git-cherry-pick.txt: correct a small typoPablo Santiago Blum de Aguiar Sun, 29 May 2016 19:29:29 +0000 (16:29 -0300)

git-cherry-pick.txt: correct a small typo

Most of the document mentions `behavior` instead of the British
variation, `behaviour`. This change makes it consistent.

Signed-off-by: Pablo Santiago Blum de Aguiar <scorphus@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

patch-id: use starts_with() and skip_prefix()René Scharfe Sat, 28 May 2016 16:20:23 +0000 (18:20 +0200)

patch-id: use starts_with() and skip_prefix()

Get rid of magic numbers and avoid running over the end of a NUL
terminated string by using starts_with() and skip_prefix() instead
of memcmp().

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

apply: remove unused parameters from name_terminate()René Scharfe Sat, 28 May 2016 16:12:01 +0000 (18:12 +0200)

apply: remove unused parameters from name_terminate()

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: Updated Bulgarian translation of git (2597t,0f,0u)Alexander Shopov Sun, 6 Mar 2016 15:19:16 +0000 (07:19 -0800)

l10n: Updated Bulgarian translation of git (2597t,0f,0u)

Signed-off-by: Alexander Shopov <ash@kambanaria.org>

Merge branch 'v2.9.0_rnd1_fr' of git://github.com/jnavi... Jiang Xin Sun, 29 May 2016 11:55:26 +0000 (19:55 +0800)

Merge branch 'v2.9.0_rnd1_fr' of git://github.com/jnavila/git

* 'v2.9.0_rnd1_fr' of git://github.com/jnavila/git:
l10n: fr.po v2.9.0rnd1

Documentation: add instructions to help setup gmail 2FAMichael Rappazzo Fri, 27 May 2016 20:39:57 +0000 (16:39 -0400)

Documentation: add instructions to help setup gmail 2FA

For those who use two-factor authentication with gmail, git-send-email
will not work unless it is setup with an app-specific password. The
example for setting up git-send-email for use with gmail will now
include information on generating and storing the app-specific password.

Signed-off-by: Michael Rappazzo <rappazzo@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

log: document the --decorate=auto optionRamsay Jones Fri, 27 May 2016 15:56:02 +0000 (16:56 +0100)

log: document the --decorate=auto option

Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: sv.po: Update Swedish translation (2597t0f0u)Peter Krefting Fri, 27 May 2016 13:04:42 +0000 (14:04 +0100)

l10n: sv.po: Update Swedish translation (2597t0f0u)

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>

l10n: fr.po v2.9.0rnd1Jean-Noel Avila Thu, 26 May 2016 20:46:41 +0000 (22:46 +0200)

l10n: fr.po v2.9.0rnd1

Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>

Sync with maintJunio C Hamano Thu, 26 May 2016 20:28:24 +0000 (13:28 -0700)

Sync with maint

* maint:
Start preparing for 2.8.4
archive-tar: convert snprintf to xsnprintf

Start preparing for 2.8.4Junio C Hamano Thu, 26 May 2016 20:21:00 +0000 (13:21 -0700)

Start preparing for 2.8.4

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

Merge branch 'jc/linkgit-fix' into maintJunio C Hamano Thu, 26 May 2016 20:17:26 +0000 (13:17 -0700)

Merge branch 'jc/linkgit-fix' into maint

Many 'linkgit:<git documentation page>' references were broken,
which are all fixed with this.

* jc/linkgit-fix:
Documentation: fix linkgit references

Merge branch 'ls/travis-build-doc' into maintJunio C Hamano Thu, 26 May 2016 20:17:25 +0000 (13:17 -0700)

Merge branch 'ls/travis-build-doc' into maint

CI test was taught to build documentation pages.

* ls/travis-build-doc:
travis-ci: build documentation

Merge branch 'jc/fsck-nul-in-commit' into maintJunio C Hamano Thu, 26 May 2016 20:17:24 +0000 (13:17 -0700)

Merge branch 'jc/fsck-nul-in-commit' into maint

"git fsck" learned to catch NUL byte in a commit object as
potential error and warn.

* jc/fsck-nul-in-commit:
fsck: detect and warn a commit with embedded NUL
fsck_commit_buffer(): do not special case the last validation

Merge branch 'jk/rebase-interative-eval-fix' into maintJunio C Hamano Thu, 26 May 2016 20:17:24 +0000 (13:17 -0700)

Merge branch 'jk/rebase-interative-eval-fix' into maint

Portability enhancement for "rebase -i" to help platforms whose
shell does not like "for i in <empty>" (which is not POSIX-kosher).

* jk/rebase-interative-eval-fix:
rebase--interactive: avoid empty list in shell for-loop

Merge branch 'js/windows-dotgit' into maintJunio C Hamano Thu, 26 May 2016 20:17:23 +0000 (13:17 -0700)

Merge branch 'js/windows-dotgit' into maint

On Windows, .git and optionally any files whose name starts with a
dot are now marked as hidden, with a core.hideDotFiles knob to
customize this behaviour.

* js/windows-dotgit:
mingw: remove unnecessary definition
mingw: introduce the 'core.hideDotFiles' setting

Merge branch 'kf/gpg-sig-verification-doc' into maintJunio C Hamano Thu, 26 May 2016 20:17:22 +0000 (13:17 -0700)

Merge branch 'kf/gpg-sig-verification-doc' into maint

Documentation for "git merge --verify-signatures" has been updated
to clarify that the signature of only the commit at the tip is
verified. Also the phrasing used for signature and key validity is
adjusted to align with that used by OpenPGP.

* kf/gpg-sig-verification-doc:
Documentation: clarify signature verification

Merge branch 'lp/typofixes' into maintJunio C Hamano Thu, 26 May 2016 20:17:21 +0000 (13:17 -0700)

Merge branch 'lp/typofixes' into maint

Typofixes.

* lp/typofixes:
typofix: assorted typofixes in comments, documentation and messages

Merge branch 'sb/z-is-gnutar-ism' into maintJunio C Hamano Thu, 26 May 2016 20:17:21 +0000 (13:17 -0700)

Merge branch 'sb/z-is-gnutar-ism' into maint

Test fix.

* sb/z-is-gnutar-ism:
t6041: do not compress backup tar file
t3513: do not compress backup tar file

Merge branch 'va/i18n-misc-updates' into maintJunio C Hamano Thu, 26 May 2016 20:17:20 +0000 (13:17 -0700)

Merge branch 'va/i18n-misc-updates' into maint

Mark several messages for translation.

* va/i18n-misc-updates:
i18n: unpack-trees: avoid substituting only a verb in sentences
i18n: builtin/pull.c: split strings marked for translation
i18n: builtin/pull.c: mark placeholders for translation
i18n: git-parse-remote.sh: mark strings for translation
i18n: branch: move comment for translators
i18n: branch: unmark string for translation
i18n: builtin/rm.c: remove a comma ',' from string
i18n: unpack-trees: mark strings for translation
i18n: builtin/branch.c: mark option for translation
i18n: index-pack: use plural string instead of normal one

Merge branch 'bn/config-doc-tt-varnames' into maintJunio C Hamano Thu, 26 May 2016 20:17:19 +0000 (13:17 -0700)

Merge branch 'bn/config-doc-tt-varnames' into maint

Doc formatting fixes.

* bn/config-doc-tt-varnames:
config: consistently format $variables in monospaced font
config: describe 'pathname' value type

Merge branch 'nd/remote-plural-ours-plus-theirs' into... Junio C Hamano Thu, 26 May 2016 20:17:18 +0000 (13:17 -0700)

Merge branch 'nd/remote-plural-ours-plus-theirs' into maint

Message fix.

* nd/remote-plural-ours-plus-theirs:
remote.c: specify correct plural form in "commit diverge" message

Merge branch 'ak/t4151-ls-files-could-be-empty' into... Junio C Hamano Thu, 26 May 2016 20:17:17 +0000 (13:17 -0700)

Merge branch 'ak/t4151-ls-files-could-be-empty' into maint

Test fix.

* ak/t4151-ls-files-could-be-empty:
t4151: make sure argument to 'test -z' is given

Merge branch 'jc/test-seq' into maintJunio C Hamano Thu, 26 May 2016 20:17:16 +0000 (13:17 -0700)

Merge branch 'jc/test-seq' into maint

Test fix.

* jc/test-seq:
test-lib-functions.sh: rewrite test_seq without Perl
test-lib-functions.sh: remove misleading comment on test_seq

Merge branch 'tb/t5601-sed-fix' into maintJunio C Hamano Thu, 26 May 2016 20:17:15 +0000 (13:17 -0700)

Merge branch 'tb/t5601-sed-fix' into maint

Test fix.

* tb/t5601-sed-fix:
t5601: Remove trailing space in sed expression

Merge branch 'va/i18n-remote-comment-to-align' into... Junio C Hamano Thu, 26 May 2016 20:17:14 +0000 (13:17 -0700)

Merge branch 'va/i18n-remote-comment-to-align' into maint

Message fix.

* va/i18n-remote-comment-to-align:
i18n: remote: add comment for translators

Merge branch 'va/mailinfo-doc-typofix' into maintJunio C Hamano Thu, 26 May 2016 20:17:13 +0000 (13:17 -0700)

Merge branch 'va/mailinfo-doc-typofix' into maint

Typofix.

* va/mailinfo-doc-typofix:
Documentation/git-mailinfo: fix typo

Merge branch 'maint-2.7' into maintJunio C Hamano Thu, 26 May 2016 20:16:51 +0000 (13:16 -0700)

Merge branch 'maint-2.7' into maint

* maint-2.7:
archive-tar: convert snprintf to xsnprintf

mingw: make isatty() recognize MSYS2's pseudo terminals... Karsten Blees Wed, 27 Apr 2016 15:16:37 +0000 (17:16 +0200)

mingw: make isatty() recognize MSYS2's pseudo terminals (/dev/pty*)

MSYS2 emulates pseudo terminals via named pipes, and isatty() returns 0
for such file descriptors. Therefore, some interactive functionality
(such as launching a pager, asking if a failed unlink should be repeated
etc.) doesn't work when run in a terminal emulator that uses MSYS2's
ptys (such as mintty).

However, MSYS2 uses special names for its pty pipes ('msys-*-pty*'),
which allows us to distinguish them from normal piped input / output.

On startup, check if stdin / stdout / stderr are connected to such pipes
using the NtQueryObject API from NTDll.dll. If the names match, adjust
the flags in MSVCRT's ioinfo structure accordingly.

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

Merge branch 'jk/war-on-sprintf' into maint-2.7Junio C Hamano Thu, 26 May 2016 17:45:37 +0000 (10:45 -0700)

Merge branch 'jk/war-on-sprintf' into maint-2.7

* jk/war-on-sprintf:
archive-tar: convert snprintf to xsnprintf