gitweb.git
pager: don't use unsafe functions in signal handlersTakashi Iwai Fri, 4 Sep 2015 09:35:57 +0000 (11:35 +0200)

pager: don't use unsafe functions in signal handlers

Since the commit a3da8821208d (pager: do wait_for_pager on signal
death), we call wait_for_pager() in the pager's signal handler. The
recent bug report revealed that this causes a deadlock in glibc at
aborting "git log" [*1*]. When this happens, git process is left
unterminated, and it can't be killed by SIGTERM but only by SIGKILL.

The problem is that wait_for_pager() function does more than waiting
for pager process's termination, but it does cleanups and printing
errors. Unfortunately, the functions that may be used in a signal
handler are very limited [*2*]. Particularly, malloc(), free() and the
variants can't be used in a signal handler because they take a mutex
internally in glibc. This was the cause of the deadlock above. Other
than the direct calls of malloc/free, many functions calling
malloc/free can't be used. strerror() is such one, either.

Also the usage of fflush() and printf() in a signal handler is bad,
although it seems working so far. In a safer side, we should avoid
them, too.

This patch tries to reduce the calls of such functions in signal
handlers. wait_for_signal() takes a flag and avoids the unsafe
calls. Also, finish_command_in_signal() is introduced for the
same reason. There the free() calls are removed, and only waits for
the children without whining at errors.

[*1*] https://bugzilla.opensuse.org/show_bug.cgi?id=942297
[*2*] http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_04_03

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 2.5 v2.5.0Junio C Hamano Mon, 27 Jul 2015 19:29:47 +0000 (12:29 -0700)

Git 2.5

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

Sync with 2.4.7Junio C Hamano Mon, 27 Jul 2015 19:26:36 +0000 (12:26 -0700)

Sync with 2.4.7

Git 2.4.7 v2.4.7Junio C Hamano Mon, 27 Jul 2015 19:25:42 +0000 (12:25 -0700)

Git 2.4.7

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

Merge branch 'jk/pretty-encoding-doc' into maintJunio C Hamano Mon, 27 Jul 2015 19:21:48 +0000 (12:21 -0700)

Merge branch 'jk/pretty-encoding-doc' into maint

Doc update.

* jk/pretty-encoding-doc:
docs: clarify that --encoding can produce invalid sequences

Merge branch 'tb/checkout-doc' into maintJunio C Hamano Mon, 27 Jul 2015 19:21:47 +0000 (12:21 -0700)

Merge branch 'tb/checkout-doc' into maint

Doc update.

* tb/checkout-doc:
git-checkout.txt: document "git checkout <pathspec>" better

Merge branch 'ls/hint-rev-list-count' into maintJunio C Hamano Mon, 27 Jul 2015 19:21:47 +0000 (12:21 -0700)

Merge branch 'ls/hint-rev-list-count' into maint

* ls/hint-rev-list-count:
rev-list: add --count to usage guide

Merge branch 'mm/branch-doc-updates' into maintJunio C Hamano Mon, 27 Jul 2015 19:21:46 +0000 (12:21 -0700)

Merge branch 'mm/branch-doc-updates' into maint

* mm/branch-doc-updates:
Documentation/branch: document -M and -D in terms of --force
Documentation/branch: document -d --force and -m --force

Merge branch 'jc/fsck-retire-require-eoh' into maintJunio C Hamano Mon, 27 Jul 2015 19:21:45 +0000 (12:21 -0700)

Merge branch 'jc/fsck-retire-require-eoh' into maint

A fix to a minor regression to "git fsck" in v2.2 era that started
complaining about a body-less tag object when it lacks a separator
empty line after its header to separate it with a non-existent body.

* jc/fsck-retire-require-eoh:
fsck: it is OK for a tag and a commit to lack the body

Merge branch 'et/http-proxyauth' into maintJunio C Hamano Mon, 27 Jul 2015 19:21:44 +0000 (12:21 -0700)

Merge branch 'et/http-proxyauth' into maint

We used to ask libCURL to use the most secure authentication method
available when talking to an HTTP proxy only when we were told to
talk to one via configuration variables. We now ask libCURL to
always use the most secure authentication method, because the user
can tell libCURL to use an HTTP proxy via an environment variable
without using configuration variables.

* et/http-proxyauth:
http: always use any proxy auth method available

Merge branch 'jc/unexport-git-pager-in-use-in-pager... Junio C Hamano Mon, 27 Jul 2015 19:21:43 +0000 (12:21 -0700)

Merge branch 'jc/unexport-git-pager-in-use-in-pager' into maint

When you say "!<ENTER>" while running say "git log", you'd confuse
yourself in the resulting shell, that may look as if you took
control back to the original shell you spawned "git log" from but
that isn't what is happening. To that new shell, we leaked
GIT_PAGER_IN_USE environment variable that was meant as a local
communication between the original "Git" and subprocesses that was
spawned by it after we launched the pager, which caused many
"interesting" things to happen, e.g. "git diff | cat" still paints
its output in color by default.

Stop leaking that environment variable to the pager's half of the
fork; we only need it on "Git" side when we spawn the pager.

* jc/unexport-git-pager-in-use-in-pager:
pager: do not leak "GIT_PAGER_IN_USE" to the pager

Merge branch 'mh/strbuf-read-file-returns-ssize-t'... Junio C Hamano Mon, 27 Jul 2015 19:21:43 +0000 (12:21 -0700)

Merge branch 'mh/strbuf-read-file-returns-ssize-t' into maint

Avoid possible ssize_t to int truncation.

* mh/strbuf-read-file-returns-ssize-t:
strbuf: strbuf_read_file() should return ssize_t

Merge branch 'kb/config-unmap-before-renaming' into... Junio C Hamano Mon, 27 Jul 2015 19:21:42 +0000 (12:21 -0700)

Merge branch 'kb/config-unmap-before-renaming' into maint

"git config" failed to update the configuration file when the
underlying filesystem is incapable of renaming a file that is still
open.

* kb/config-unmap-before-renaming:
config.c: fix writing config files on Windows network shares

Merge branch 'jk/rev-list-no-bitmap-while-pruning'... Junio C Hamano Mon, 27 Jul 2015 19:21:42 +0000 (12:21 -0700)

Merge branch 'jk/rev-list-no-bitmap-while-pruning' into maint

A minor bugfix when pack bitmap is used with "rev-list --count".

* jk/rev-list-no-bitmap-while-pruning:
rev-list: disable --use-bitmap-index when pruning commits

Merge branch 'rh/test-color-avoid-terminfo-in-original... Junio C Hamano Mon, 27 Jul 2015 19:21:41 +0000 (12:21 -0700)

Merge branch 'rh/test-color-avoid-terminfo-in-original-home' into maint

An ancient test framework enhancement to allow color was not
entirely correct; this makes it work even when tput needs to read
from the ~/.terminfo under the user's real HOME directory.

* rh/test-color-avoid-terminfo-in-original-home:
test-lib.sh: fix color support when tput needs ~/.terminfo
Revert "test-lib.sh: do tests for color support after changing HOME"

Merge branch 'jk/fix-refresh-utime' into maintJunio C Hamano Mon, 27 Jul 2015 19:21:40 +0000 (12:21 -0700)

Merge branch 'jk/fix-refresh-utime' into maint

Fix a small bug in our use of umask() return value.

* jk/fix-refresh-utime:
check_and_freshen_file: fix reversed success-check

Merge branch 'cb/rebase-am-exit-code' into maintJunio C Hamano Mon, 27 Jul 2015 19:21:39 +0000 (12:21 -0700)

Merge branch 'cb/rebase-am-exit-code' into maint

"git rebase" did not exit with failure when format-patch it invoked
failed for whatever reason.

* cb/rebase-am-exit-code:
rebase: return non-zero error code if format-patch fails

Merge branch 'jk/index-pack-reduce-recheck' into maintJunio C Hamano Mon, 27 Jul 2015 19:21:38 +0000 (12:21 -0700)

Merge branch 'jk/index-pack-reduce-recheck' into maint

Disable "have we lost a race with competing repack?" check while
receiving a huge object transfer that runs index-pack.

* jk/index-pack-reduce-recheck:
index-pack: avoid excessive re-reading of pack directory

RelNotes: am.threeWay does not exist (yet)Junio C Hamano Fri, 24 Jul 2015 21:31:23 +0000 (14:31 -0700)

RelNotes: am.threeWay does not exist (yet)

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

Revert "git-am: add am.threeWay config variable"Junio C Hamano Fri, 24 Jul 2015 17:55:24 +0000 (10:55 -0700)

Revert "git-am: add am.threeWay config variable"

This reverts commit d96a275b91bae1800cd43be0651e886e7e042a17.

It used to be possible to apply a patch series with "git am mbox"
and then only after seeing a failure, switch to three-way mode via
"git am -3" (no other options or arguments). The commit being
reverted broke this workflow.

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

Git 2.5.0-rc3 v2.5.0-rc3Junio C Hamano Tue, 21 Jul 2015 21:11:54 +0000 (14:11 -0700)

Git 2.5.0-rc3

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

Merge branch 'tf/gitweb-typofix'Junio C Hamano Tue, 21 Jul 2015 19:45:27 +0000 (12:45 -0700)

Merge branch 'tf/gitweb-typofix'

* tf/gitweb-typofix:
gitweb: fix typo in man page

Merge tag 'l10n-2.5.0-rnd2' of git://github.com/git... Junio C Hamano Tue, 21 Jul 2015 17:27:33 +0000 (10:27 -0700)

Merge tag 'l10n-2.5.0-rnd2' of git://github.com/git-l10n/git-po

l10n-2.5.0-rnd2

* tag 'l10n-2.5.0-rnd2' of git://github.com/git-l10n/git-po:
l10n: ca.po: update translation
l10n: de.po: translate 9 new messages
l10n: Updated Bulgarian translation of git (2359t,0f,0u)
l10n: zh_CN: for git v2.5.0 l10n round 2
l10n: sv.po: Update Swedish translation (2359t0f0u)
l10n: fr v2.5.0 round 2 (2359t)
l10n: ru.po: update Russian translation
l10n: Updated Vietnamese translation (2359t)
l10n: git.pot: v2.5.0 round 2 (9 new, 5 removed)

l10n: ca.po: update translationAlex Henrie Mon, 20 Jul 2015 17:54:40 +0000 (11:54 -0600)

l10n: ca.po: update translation

Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>

Merge branch 'jk/still-interesting'Junio C Hamano Fri, 17 Jul 2015 17:44:56 +0000 (10:44 -0700)

Merge branch 'jk/still-interesting'

Code clean-up.

* jk/still-interesting:
revision.c: remove unneeded check for NULL

Merge branch 'es/worktree-add'Junio C Hamano Fri, 17 Jul 2015 17:44:54 +0000 (10:44 -0700)

Merge branch 'es/worktree-add'

Update to the "linked checkout" in 2.5.0-rc1.

Instead of "checkout --to" that does not do what "checkout"
normally does, move the functionality to "git worktree add".

As this makes the end-user experience of the "worktree add" more or
less complete, I am tempted to say we should cook the other topic
that removes the internal "new-worktree-mode" hack from "checkout"
a bit longer in 'next', and release 2.5 final without that one.

* es/worktree-add:
Documentation/git: fix stale "MULTIPLE CHECKOUT MODE" reference
worktree: caution that this is still experimental
Documentation/git-worktree: fix stale "git checkout --to" references

Documentation/git: fix stale "MULTIPLE CHECKOUT MODE... Eric Sunshine Fri, 17 Jul 2015 00:17:02 +0000 (20:17 -0400)

Documentation/git: fix stale "MULTIPLE CHECKOUT MODE" reference

This should have been changed by 93a3649 (Documentation: move linked
worktree description from checkout to worktree, 2015-07-06).

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

worktree: caution that this is still experimentalJunio C Hamano Thu, 16 Jul 2015 22:59:48 +0000 (15:59 -0700)

worktree: caution that this is still experimental

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

Documentation/git-worktree: fix stale "git checkout... Eric Sunshine Thu, 16 Jul 2015 22:09:43 +0000 (18:09 -0400)

Documentation/git-worktree: fix stale "git checkout --to" references

These should have been changed to "git worktree add" by fc56361
(worktree: introduce "add" command, 2015-07-06.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'master' of https://github.com/ralfth... Jiang Xin Wed, 15 Jul 2015 23:44:43 +0000 (07:44 +0800)

Merge branch 'master' of https://github.com/ralfth/git-po-de

* 'master' of https://github.com/ralfth/git-po-de:
l10n: de.po: translate 9 new messages

Sync with 2.4.6Junio C Hamano Wed, 15 Jul 2015 19:32:37 +0000 (12:32 -0700)

Sync with 2.4.6

Git 2.4.6 v2.4.6Junio C Hamano Wed, 15 Jul 2015 18:45:42 +0000 (11:45 -0700)

Git 2.4.6

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

Merge branch 'jc/diff-ws-error-highlight'Junio C Hamano Wed, 15 Jul 2015 19:30:14 +0000 (12:30 -0700)

Merge branch 'jc/diff-ws-error-highlight'

A hotfix to a new feature in 2.5.0-rc.

* jc/diff-ws-error-highlight:
diff: parse ws-error-highlight option more strictly

Merge branch 'mm/describe-doc' into maintJunio C Hamano Wed, 15 Jul 2015 18:41:26 +0000 (11:41 -0700)

Merge branch 'mm/describe-doc' into maint

Docfix.

* mm/describe-doc:
Documentation/describe: improve one-line summary

Merge branch 'jc/prompt-document-ps1-state-separator... Junio C Hamano Wed, 15 Jul 2015 18:41:26 +0000 (11:41 -0700)

Merge branch 'jc/prompt-document-ps1-state-separator' into maint

Docfix.

* jc/prompt-document-ps1-state-separator:
git-prompt.sh: document GIT_PS1_STATESEPARATOR

Merge branch 'es/osx-header-pollutes-mask-macro' into... Junio C Hamano Wed, 15 Jul 2015 18:41:24 +0000 (11:41 -0700)

Merge branch 'es/osx-header-pollutes-mask-macro' into maint

* es/osx-header-pollutes-mask-macro:
ewah: use less generic macro name
ewah/bitmap: silence warning about MASK macro redefinition

Merge branch 'es/utf8-stupid-compiler-workaround' into... Junio C Hamano Wed, 15 Jul 2015 18:41:23 +0000 (11:41 -0700)

Merge branch 'es/utf8-stupid-compiler-workaround' into maint

A compilation workaround.

* es/utf8-stupid-compiler-workaround:
utf8: NO_ICONV: silence uninitialized variable warning

Merge branch 'fk/doc-format-patch-vn' into maintJunio C Hamano Wed, 15 Jul 2015 18:41:22 +0000 (11:41 -0700)

Merge branch 'fk/doc-format-patch-vn' into maint

Docfix.

* fk/doc-format-patch-vn:
doc: format-patch: fix typo

Merge branch 'pt/t0302-needs-sanity' into maintJunio C Hamano Wed, 15 Jul 2015 18:41:21 +0000 (11:41 -0700)

Merge branch 'pt/t0302-needs-sanity' into maint

* pt/t0302-needs-sanity:
t0302: "unreadable" test needs SANITY prereq

Merge branch 'me/fetch-into-shallow-safety' into maintJunio C Hamano Wed, 15 Jul 2015 18:41:20 +0000 (11:41 -0700)

Merge branch 'me/fetch-into-shallow-safety' into maint

"git fetch --depth=<depth>" and "git clone --depth=<depth>" issued
a shallow transfer request even to an upload-pack that does not
support the capability.

* me/fetch-into-shallow-safety:
fetch-pack: check for shallow if depth given

Merge branch 'mh/fsck-reflog-entries' into maintJunio C Hamano Wed, 15 Jul 2015 18:41:19 +0000 (11:41 -0700)

Merge branch 'mh/fsck-reflog-entries' into maint

"git fsck" used to ignore missing or invalid objects recorded in reflog.

* mh/fsck-reflog-entries:
fsck: report errors if reflog entries point at invalid objects
fsck_handle_reflog_sha1(): new function

Merge branch 'af/tcsh-completion-noclobber' into maintJunio C Hamano Wed, 15 Jul 2015 18:41:18 +0000 (11:41 -0700)

Merge branch 'af/tcsh-completion-noclobber' into maint

The tcsh completion writes a bash scriptlet but that would have
failed for users with noclobber set.

* af/tcsh-completion-noclobber:
git-completion.tcsh: fix redirect with noclobber

Merge branch 'pa/auto-gc-mac-osx' into maintJunio C Hamano Wed, 15 Jul 2015 18:41:17 +0000 (11:41 -0700)

Merge branch 'pa/auto-gc-mac-osx' into maint

Recent Mac OS X updates breaks the logic to detect that the machine
is on the AC power in the sample pre-auto-gc script.

* pa/auto-gc-mac-osx:
hooks/pre-auto-gc: adjust power checking for newer OS X

Merge branch 'jc/do-not-feed-tags-to-clear-commit-marks... Junio C Hamano Wed, 15 Jul 2015 18:41:16 +0000 (11:41 -0700)

Merge branch 'jc/do-not-feed-tags-to-clear-commit-marks' into maint

"git format-patch --ignore-if-upstream A..B" did not like to be fed
tags as boundary commits.

* jc/do-not-feed-tags-to-clear-commit-marks:
format-patch: do not feed tags to clear_commit_marks()

l10n: de.po: translate 9 new messagesRalf Thielow Tue, 14 Jul 2015 17:41:07 +0000 (19:41 +0200)

l10n: de.po: translate 9 new messages

Translate 9 new messages came from git.pot update in a4156d2
(l10n: git.pot: v2.5.0 round 2 (9 new, 5 removed)).

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Acked-by: Phillip Sz <phillip.szelat@gmail.com>

l10n: Updated Bulgarian translation of git (2359t,0f,0u)Alexander Shopov Tue, 14 Jul 2015 16:09:55 +0000 (19:09 +0300)

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

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

l10n: zh_CN: for git v2.5.0 l10n round 2Jiang Xin Mon, 13 Jul 2015 23:33:09 +0000 (07:33 +0800)

l10n: zh_CN: for git v2.5.0 l10n round 2

Update 9 translations (2359t0f0u) for git v2.5.0-rc2.

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

l10n: sv.po: Update Swedish translation (2359t0f0u)Peter Krefting Wed, 15 Jul 2015 11:54:11 +0000 (12:54 +0100)

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

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

Merge branch 'fr_v2.5.0-round2' of git://github.com... Jiang Xin Tue, 14 Jul 2015 23:06:49 +0000 (07:06 +0800)

Merge branch 'fr_v2.5.0-round2' of git://github.com/jnavila/git

* 'fr_v2.5.0-round2' of git://github.com/jnavila/git:
l10n: fr v2.5.0 round 2 (2359t)

l10n: fr v2.5.0 round 2 (2359t)Jean-Noel Avila Tue, 14 Jul 2015 10:25:06 +0000 (12:25 +0200)

l10n: fr v2.5.0 round 2 (2359t)

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

Merge branch 'russian-l10n' of https://github.com/DJm00... Jiang Xin Tue, 14 Jul 2015 14:30:12 +0000 (22:30 +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 Tue, 14 Jul 2015 13:34:00 +0000 (16:34 +0300)

l10n: ru.po: update Russian translation

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

l10n: Updated Vietnamese translation (2359t)Tran Ngoc Quan Tue, 14 Jul 2015 00:30:51 +0000 (07:30 +0700)

l10n: Updated Vietnamese translation (2359t)

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>

l10n: git.pot: v2.5.0 round 2 (9 new, 5 removed)Jiang Xin Mon, 13 Jul 2015 23:20:08 +0000 (07:20 +0800)

l10n: git.pot: v2.5.0 round 2 (9 new, 5 removed)

Generate po/git.pot from v2.5.0-rc2 for git v2.5.0 l10n round 2.

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

Merge tag 'l10n-2.5.0-rnd1' of git://github.com/git... Junio C Hamano Mon, 13 Jul 2015 22:37:24 +0000 (15:37 -0700)

Merge tag 'l10n-2.5.0-rnd1' of git://github.com/git-l10n/git-po

l10n-2.5.0-rnd1

* tag 'l10n-2.5.0-rnd1' of git://github.com/git-l10n/git-po:
l10n: de.po: translate 65 new messages
l10n: de.po: translate "index" as "Index"
l10n: de.po: fix translation of "head nodes"
l10n: zh_CN: for git v2.5.0 l10n round 1
l10n: ca.po: update translation
l10n: fr.po v2.5.0-rc0 (2355t)
l10n: Updated Bulgarian translation of git (2355t,0f,0u)
l10n: sv.po: Update Swedish translation (2355t0f0u)
l10n: Updated Vietnamese translation (2355t)
l10n: git.pot: v2.5.0 round 1 (65 new, 15 removed)

Git 2.5.0-rc2 v2.5.0-rc2Junio C Hamano Mon, 13 Jul 2015 21:03:44 +0000 (14:03 -0700)

Git 2.5.0-rc2

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

Merge branch 'es/worktree-add'Junio C Hamano Mon, 13 Jul 2015 21:02:18 +0000 (14:02 -0700)

Merge branch 'es/worktree-add'

Update to the "linked checkout" in 2.5.0-rc1.

Instead of "checkout --to" that does not do what "checkout"
normally does, move the functionality to "git worktree add".

* es/worktree-add: (24 commits)
Revert "checkout: retire --ignore-other-worktrees in favor of --force"
checkout: retire --ignore-other-worktrees in favor of --force
worktree: add: auto-vivify new branch when <branch> is omitted
worktree: add: make -b/-B default to HEAD when <branch> is omitted
worktree: extract basename computation to new function
checkout: require worktree unconditionally
checkout: retire --to option
tests: worktree: retrofit "checkout --to" tests for "worktree add"
worktree: add -b/-B options
worktree: add --detach option
worktree: add --force option
worktree: introduce "add" command
checkout: drop 'checkout_opts' dependency from prepare_linked_checkout
checkout: make --to unconditionally verbose
checkout: prepare_linked_checkout: drop now-unused 'new' argument
checkout: relocate --to's "no branch specified" check
checkout: fix bug with --to and relative HEAD
Documentation/git-worktree: add EXAMPLES section
Documentation/git-worktree: add high-level 'lock' overview
Documentation/git-worktree: split technical info from general description
...

Merge branch 'nd/multiple-work-trees'Junio C Hamano Mon, 13 Jul 2015 21:02:02 +0000 (14:02 -0700)

Merge branch 'nd/multiple-work-trees'

"git checkout [<tree-ish>] <paths>" spent unnecessary cycles
checking if the current branch was checked out elsewhere, when we
know we are not switching the branches ourselves.

* nd/multiple-work-trees:
worktree: new place for "git prune --worktrees"
checkout: don't check worktrees when not necessary

Merge branch 'ss/clone-guess-dir-name-simplify'Junio C Hamano Mon, 13 Jul 2015 21:00:28 +0000 (14:00 -0700)

Merge branch 'ss/clone-guess-dir-name-simplify'

Code simplification.

* ss/clone-guess-dir-name-simplify:
clone: simplify string handling in guess_dir_name()

Merge branch 'kb/config-unmap-before-renaming'Junio C Hamano Mon, 13 Jul 2015 21:00:27 +0000 (14:00 -0700)

Merge branch 'kb/config-unmap-before-renaming'

"git config" failed to update the configuration file when the
underlying filesystem is incapable of renaming a file that is still
open.

* kb/config-unmap-before-renaming:
config.c: fix writing config files on Windows network shares

Merge branch 'mh/strbuf-read-file-returns-ssize-t'Junio C Hamano Mon, 13 Jul 2015 21:00:27 +0000 (14:00 -0700)

Merge branch 'mh/strbuf-read-file-returns-ssize-t'

Avoid possible ssize_t to int truncation.

* mh/strbuf-read-file-returns-ssize-t:
strbuf: strbuf_read_file() should return ssize_t

Merge branch 'jc/unexport-git-pager-in-use-in-pager'Junio C Hamano Mon, 13 Jul 2015 21:00:26 +0000 (14:00 -0700)

Merge branch 'jc/unexport-git-pager-in-use-in-pager'

When you say "!<ENTER>" while running say "git log", you'd confuse
yourself in the resulting shell, that may look as if you took
control back to the original shell you spawned "git log" from but
that isn't what is happening. To that new shell, we leaked
GIT_PAGER_IN_USE environment variable that was meant as a local
communication between the original "Git" and subprocesses that was
spawned by it after we launched the pager, which caused many
"interesting" things to happen, e.g. "git diff | cat" still paints
its output in color by default.

Stop leaking that environment variable to the pager's half of the
fork; we only need it on "Git" side when we spawn the pager.

* jc/unexport-git-pager-in-use-in-pager:
pager: do not leak "GIT_PAGER_IN_USE" to the pager

Merge branch 'kb/use-nsec-doc'Junio C Hamano Mon, 13 Jul 2015 21:00:26 +0000 (14:00 -0700)

Merge branch 'kb/use-nsec-doc'

Clarify in the Makefile a guideline to decide use of USE_NSEC.

* kb/use-nsec-doc:
Makefile / racy-git.txt: clarify USE_NSEC prerequisites

Merge branch 'js/rebase-i-clean-up-upon-continue-to... Junio C Hamano Mon, 13 Jul 2015 21:00:25 +0000 (14:00 -0700)

Merge branch 'js/rebase-i-clean-up-upon-continue-to-skip'

Abandoning an already applied change in "git rebase -i" with
"--continue" left CHERRY_PICK_HEAD and confused later steps.

* js/rebase-i-clean-up-upon-continue-to-skip:
rebase -i: do not leave a CHERRY_PICK_HEAD file behind
t3404: demonstrate CHERRY_PICK_HEAD bug

Merge branch 'et/http-proxyauth'Junio C Hamano Mon, 13 Jul 2015 21:00:24 +0000 (14:00 -0700)

Merge branch 'et/http-proxyauth'

We used to ask libCURL to use the most secure authentication method
available when talking to an HTTP proxy only when we were told to
talk to one via configuration variables. We now ask libCURL to
always use the most secure authentication method, because the user
can tell libCURL to use an HTTP proxy via an environment variable
without using configuration variables.

* et/http-proxyauth:
http: always use any proxy auth method available

Merge branch 'jc/fsck-retire-require-eoh'Junio C Hamano Mon, 13 Jul 2015 21:00:23 +0000 (14:00 -0700)

Merge branch 'jc/fsck-retire-require-eoh'

A fix to a minor regression to "git fsck" in v2.2 era that started
complaining about a body-less tag object when it lacks a separator
empty line after its header to separate it with a non-existent body.

* jc/fsck-retire-require-eoh:
fsck: it is OK for a tag and a commit to lack the body

diff: parse ws-error-highlight option more strictlyRené Scharfe Sat, 11 Jul 2015 12:58:21 +0000 (14:58 +0200)

diff: parse ws-error-highlight option more strictly

Check if a matched token is followed by a delimiter before advancing the
pointer arg. This avoids accepting composite words like "allnew" or
"defaultcontext" and misparsing them as "new" or "context".

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

Revert "checkout: retire --ignore-other-worktrees in... Junio C Hamano Sun, 12 Jul 2015 16:38:21 +0000 (09:38 -0700)

Revert "checkout: retire --ignore-other-worktrees in favor of --force"

This reverts commit 0d1a1517835a10818f2d40d8780a268dbb5e20ce.

When trying to switch to a different branch, that happens to be
checked out in another working tree, the user shouldn't have to
give up the other safety measures (like protecting the local changes
that overlap the difference between the branches) while defeating
the "no two checkouts of the same branch" safety.

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

The last minute bits of fixesJunio C Hamano Fri, 10 Jul 2015 21:29:00 +0000 (14:29 -0700)

The last minute bits of fixes

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

Merge branch 'cb/rebase-am-exit-code'Junio C Hamano Fri, 10 Jul 2015 21:26:16 +0000 (14:26 -0700)

Merge branch 'cb/rebase-am-exit-code'

"git rebase" did not exit with failure when format-patch it invoked
failed for whatever reason.

* cb/rebase-am-exit-code:
rebase: return non-zero error code if format-patch fails

Merge branch 'jk/fix-refresh-utime'Junio C Hamano Fri, 10 Jul 2015 21:26:14 +0000 (14:26 -0700)

Merge branch 'jk/fix-refresh-utime'

Fix a small bug in our use of umask() return value.

* jk/fix-refresh-utime:
check_and_freshen_file: fix reversed success-check

Merge branch 'mm/branch-doc-updates'Junio C Hamano Fri, 10 Jul 2015 21:26:13 +0000 (14:26 -0700)

Merge branch 'mm/branch-doc-updates'

* mm/branch-doc-updates:
Documentation/branch: document -M and -D in terms of --force
Documentation/branch: document -d --force and -m --force

Merge branch 'ls/hint-rev-list-count'Junio C Hamano Fri, 10 Jul 2015 21:26:12 +0000 (14:26 -0700)

Merge branch 'ls/hint-rev-list-count'

* ls/hint-rev-list-count:
rev-list: add --count to usage guide

Merge branch 'jk/rev-list-no-bitmap-while-pruning'Junio C Hamano Fri, 10 Jul 2015 21:26:12 +0000 (14:26 -0700)

Merge branch 'jk/rev-list-no-bitmap-while-pruning'

A minor bugfix when pack bitmap is used with "rev-list --count".

* jk/rev-list-no-bitmap-while-pruning:
rev-list: disable --use-bitmap-index when pruning commits

Merge branch 'cb/subtree-tests-update'Junio C Hamano Fri, 10 Jul 2015 21:17:56 +0000 (14:17 -0700)

Merge branch 'cb/subtree-tests-update'

Tests update in contrib/subtree.

* cb/subtree-tests-update:
contrib/subtree: small tidy-up to test
contrib/subtree: fix broken &&-chains and revealed test error
contrib/subtree: use tabs consitently for indentation in tests

Merge branch 'rh/test-color-avoid-terminfo-in-original... Junio C Hamano Fri, 10 Jul 2015 21:17:55 +0000 (14:17 -0700)

Merge branch 'rh/test-color-avoid-terminfo-in-original-home'

An ancient test framework enhancement to allow color was not
entirely correct; this makes it work even when tput needs to read
from the ~/.terminfo under the user's real HOME directory.

* rh/test-color-avoid-terminfo-in-original-home:
test-lib.sh: fix color support when tput needs ~/.terminfo
Revert "test-lib.sh: do tests for color support after changing HOME"

Merge branch 'sb/p5310-and-chain'Junio C Hamano Fri, 10 Jul 2015 21:17:54 +0000 (14:17 -0700)

Merge branch 'sb/p5310-and-chain'

Code clean-up.

* sb/p5310-and-chain:
p5310: Fix broken && chain in performance test

Merge branch 'tb/checkout-doc'Junio C Hamano Fri, 10 Jul 2015 21:17:54 +0000 (14:17 -0700)

Merge branch 'tb/checkout-doc'

Doc update.

* tb/checkout-doc:
git-checkout.txt: document "git checkout <pathspec>" better

Merge branch 'jk/pretty-encoding-doc'Junio C Hamano Fri, 10 Jul 2015 21:17:53 +0000 (14:17 -0700)

Merge branch 'jk/pretty-encoding-doc'

Doc update.

* jk/pretty-encoding-doc:
docs: clarify that --encoding can produce invalid sequences

Merge branch 'nd/dwim-wildcards-as-pathspecs'Junio C Hamano Fri, 10 Jul 2015 21:17:52 +0000 (14:17 -0700)

Merge branch 'nd/dwim-wildcards-as-pathspecs'

Test updates to a topic already in 2.5-rc.

* nd/dwim-wildcards-as-pathspecs:
Add tests for wildcard "path vs ref" disambiguation

Merge branch 'jk/maint-for-each-packed-object'Junio C Hamano Thu, 9 Jul 2015 21:31:43 +0000 (14:31 -0700)

Merge branch 'jk/maint-for-each-packed-object'

The for_each_packed_object() API function did not iterate over
objects in a packfile that hasn't been used yet.

* jk/maint-for-each-packed-object:
for_each_packed_object: automatically open pack index

Merge branch 'jc/fix-alloc-sortbuf-in-index-pack'Junio C Hamano Thu, 9 Jul 2015 21:31:42 +0000 (14:31 -0700)

Merge branch 'jc/fix-alloc-sortbuf-in-index-pack'

A hotfix for what is in 2.5-rc but not in 2.4.

* jc/fix-alloc-sortbuf-in-index-pack:
index-pack: fix allocation of sorted_by_pos array

clone: simplify string handling in guess_dir_name()Sebastian Schuberth Thu, 9 Jul 2015 18:24:08 +0000 (18:24 +0000)

clone: simplify string handling in guess_dir_name()

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

check_and_freshen_file: fix reversed success-checkJeff King Wed, 8 Jul 2015 20:33:52 +0000 (16:33 -0400)

check_and_freshen_file: fix reversed success-check

When we want to write out a loose object file, we have
always first made sure we don't already have the object
somewhere. Since 33d4221 (write_sha1_file: freshen existing
objects, 2014-10-15), we also update the timestamp on the
file, so that a simultaneous prune knows somebody is
likely to reference it soon.

If our utime() call fails, we treat this the same as not
having the object in the first place; the safe thing to do
is write out another copy. However, the loose-object check
accidentally inverts the utime() check; it returns failure
_only_ when the utime() call actually succeeded. Thus it was
failing to protect us there, and in the normal case where
utime() succeeds, it caused us to pointlessly write out and
link the object.

This passed our freshening tests, because writing out the
new object is certainly _one_ way of updating its utime. So
the normal case was inefficient, but not wrong.

While we're here, let's also drop a comment in front of the
check_and_freshen functions, making a note of their return
type (since it is not our usual "0 for success, -1 for
error").

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

rebase: return non-zero error code if format-patch... Clemens Buchacher Thu, 2 Jul 2015 09:11:33 +0000 (11:11 +0200)

rebase: return non-zero error code if format-patch fails

Since e481af06 (rebase: Handle cases where format-patch fails) we
notice if format-patch fails and return immediately from
git-rebase--am. We save the return value with ret=$?, but then we
return $?, which is usually zero in this case.

Fix this by returning $ret instead.

Cc: Andrew Wong <andrew.kw.w@gmail.com>
Signed-off-by: Clemens Buchacher <clemens.buchacher@intel.com>
Helped-by: Jorge Nunes <jorge.nunes@intel.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: de.po: translate 65 new messagesRalf Thielow Wed, 1 Jul 2015 18:07:08 +0000 (20:07 +0200)

l10n: de.po: translate 65 new messages

Translate 65 new messages came from git.pot update in
64f23b0 (l10n: git.pot: v2.5.0 round 1 (65 new, 15 removed)).

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

l10n: de.po: translate "index" as "Index"Ralf Thielow Fri, 19 Jun 2015 17:50:06 +0000 (19:50 +0200)

l10n: de.po: translate "index" as "Index"

The term "index" is translated as "Staging-Area" to
match a majority of German books and to not confuse
Git beginners who don't know about Git's index.

"Staging Area" is used in German books as a thing where
content can be staged for commit. While the translation
is good for those kind of messages, it's bad for messages
that mean the Git index as the tree state or the index
file, in which case we should translate as "Index".

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

l10n: de.po: fix translation of "head nodes"Ralf Thielow Fri, 5 Jun 2015 17:30:35 +0000 (19:30 +0200)

l10n: de.po: fix translation of "head nodes"

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Acked-by: Phillip Sz <phillip.szelat@gmail.com>

checkout: retire --ignore-other-worktrees in favor... Eric Sunshine Mon, 6 Jul 2015 17:31:00 +0000 (13:31 -0400)

checkout: retire --ignore-other-worktrees in favor of --force

As a safeguard, checking out a branch already checked out by a different
worktree is disallowed. This behavior can be overridden with
--ignore-other-worktrees, however, this option is neither obvious nor
particularly discoverable. As a common safeguard override, --force is
more likely to come to mind. Therefore, overload it to also suppress the
check for a branch already checked out elsewhere.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

worktree: add: auto-vivify new branch when <branch... Eric Sunshine Mon, 6 Jul 2015 17:30:59 +0000 (13:30 -0400)

worktree: add: auto-vivify new branch when <branch> is omitted

As a convenience, when <branch> is omitted from "git worktree <path>
<branch>" and neither -b nor -B is used, automatically create a new
branch named after <path>, as if "-b $(basename <path>)" was specified.
Thus, "git worktree add ../hotfix" creates a new branch named "hotfix"
and associates it with new worktree "../hotfix".

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

worktree: add: make -b/-B default to HEAD when <branch... Eric Sunshine Mon, 6 Jul 2015 17:30:58 +0000 (13:30 -0400)

worktree: add: make -b/-B default to HEAD when <branch> is omitted

As a convenience, like "git branch" and "git checkout -b", make
"git worktree add -b <newbranch> <path> <branch>" default to HEAD when
<branch> is omitted.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

worktree: extract basename computation to new functionEric Sunshine Mon, 6 Jul 2015 17:30:57 +0000 (13:30 -0400)

worktree: extract basename computation to new function

A subsequent patch will also need to compute the basename of the new
worktree, so factor out this logic into a new function.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

checkout: require worktree unconditionallyEric Sunshine Mon, 6 Jul 2015 17:30:56 +0000 (13:30 -0400)

checkout: require worktree unconditionally

In order to allow linked worktree creation via "git checkout --to" from
a bare repository, 3473ad0 (checkout: don't require a work tree when
checking out into a new one, 2014-11-30) dropped git-checkout's
unconditional NEED_WORK_TREE requirement and instead performed worktree
setup conditionally based upon presence or absence of the --to option.
Now that --to has been retired and git-checkout is no longer responsible
for linked worktree creation, the NEED_WORK_TREE requirement can be
re-instated.

This effectively reverts 3473ad0, except for the tests it added which
now check bare repository behavior of "git worktree add" instead.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

checkout: retire --to optionEric Sunshine Mon, 6 Jul 2015 17:30:55 +0000 (13:30 -0400)

checkout: retire --to option

Now that "git worktree add" has achieved user-facing feature-parity with
"git checkout --to", retire the latter.

Move the actual linked worktree creation functionality,
prepare_linked_checkout() and its helpers, verbatim from checkout.c to
worktree.c.

This effectively reverts changes to checkout.c by 529fef2 (checkout:
support checking out into a new working directory, 2014-11-30) with the
exception of merge_working_tree() and switch_branches() which still
require specialized knowledge that a the checkout is occurring in a
newly-created linked worktree (signaled to them by the private
GIT_CHECKOUT_NEW_WORKTREE environment variable).

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

tests: worktree: retrofit "checkout --to" tests for... Eric Sunshine Mon, 6 Jul 2015 17:30:54 +0000 (13:30 -0400)

tests: worktree: retrofit "checkout --to" tests for "worktree add"

With the introduction of "git worktree add", "git checkout --to" is
slated for removal. Therefore, retrofit linked worktree creation tests
to use "git worktree add" instead.

(The test to check exclusivity of "checkout --to" and "checkout <paths>"
is dropped altogether since it becomes meaningless with retirement of
"checkout --to".)

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

worktree: add -b/-B optionsEric Sunshine Mon, 6 Jul 2015 17:30:53 +0000 (13:30 -0400)

worktree: add -b/-B options

One of git-worktree's roles is to populate the new worktree, much like
git-checkout, and thus, for convenience, ought to support several of the
same shortcuts. Toward this goal, add -b/-B options to create a new
branch and check it out in the new worktree.

(For brevity, only -b is mentioned in the synopsis; -B is omitted.)

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

worktree: add --detach optionEric Sunshine Mon, 6 Jul 2015 17:30:52 +0000 (13:30 -0400)

worktree: add --detach option

One of git-worktree's roles is to populate the new worktree, much like
git-checkout, and thus, for convenience, ought to support several of the
same shortcuts. Toward this goal, add a --detach option to detach HEAD
in the new worktree.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

worktree: add --force optionEric Sunshine Mon, 6 Jul 2015 17:30:51 +0000 (13:30 -0400)

worktree: add --force option

By default, "git worktree add" refuses to create a new worktree when
the requested branch is already checked out elsewhere. Add a --force
option to override this safeguard.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

worktree: introduce "add" commandEric Sunshine Mon, 6 Jul 2015 17:30:50 +0000 (13:30 -0400)

worktree: introduce "add" command

The plan is to relocate "git checkout --to" functionality to "git
worktree add". As a first step, introduce a bare-bones git-worktree
"add" command along with documentation. At this stage, "git worktree
add" merely invokes "git checkout --to" behind the scenes, but an
upcoming patch will move the actual functionality
(checkout.c:prepare_linked_checkout() and its helpers) to worktree.c.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

checkout: drop 'checkout_opts' dependency from prepare_... Eric Sunshine Mon, 6 Jul 2015 17:30:49 +0000 (13:30 -0400)

checkout: drop 'checkout_opts' dependency from prepare_linked_checkout

The plan is to relocate "git checkout --to" functionality to "git
worktree add", however, worktree.c won't have access to the 'struct
checkout_opts' passed to prepare_linked_worktree(), which it consults
for the pathname of the new worktree and the argv[] of the command it
should run to populate the new worktree. Facilitate relocation of
prepare_linked_worktree() by instead having it accept the pathname and
argv[] directly, thus eliminating the final references to 'struct
checkout_opts'.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>