gitweb.git
Merge branch 'sb/checkout-explit-detach-no-advice'Junio C Hamano Fri, 19 Aug 2016 22:34:15 +0000 (15:34 -0700)

Merge branch 'sb/checkout-explit-detach-no-advice'

"git checkout --detach <branch>" used to give the same advice
message as that is issued when "git checkout <tag>" (or anything
that is not a branch name) is given, but asking with "--detach" is
an explicit enough sign that the user knows what is going on. The
advice message has been squelched in this case.

* sb/checkout-explit-detach-no-advice:
checkout: do not mention detach advice for explicit --detach option

Merge branch 'tb/t0027-raciness-fix'Junio C Hamano Fri, 19 Aug 2016 22:34:14 +0000 (15:34 -0700)

Merge branch 'tb/t0027-raciness-fix'

The t0027 test for CRLF conversion was timing dependent and flaky.

* tb/t0027-raciness-fix:
convert: Correct NNO tests and missing `LF will be replaced by CRLF`

Merge branch 'rs/pull-signed-tag'Junio C Hamano Fri, 19 Aug 2016 22:34:13 +0000 (15:34 -0700)

Merge branch 'rs/pull-signed-tag'

When "git merge-recursive" works on history with many criss-cross
merges in "verbose" mode, the names the command assigns to the
virtual merge bases could have overwritten each other by unintended
reuse of the same piece of memory.

* rs/pull-signed-tag:
commit: use FLEX_ARRAY in struct merge_remote_desc
merge-recursive: fix verbose output for multiple base trees
commit: factor out set_merge_remote_desc()
commit: use xstrdup() in get_merge_parent()

RelNotes: final batch of topics before -rc1Junio C Hamano Wed, 17 Aug 2016 21:09:17 +0000 (14:09 -0700)

RelNotes: final batch of topics before -rc1

Merge branch 'js/test-lint-pathname'Junio C Hamano Wed, 17 Aug 2016 21:07:48 +0000 (14:07 -0700)

Merge branch 'js/test-lint-pathname'

The "t/" hierarchy is prone to get an unusual pathname; "make test"
has been taught to make sure they do not contain paths that cannot
be checked out on Windows (and the mechanism can be reusable to
catch pathnames that are not portable to other platforms as need
arises).

* js/test-lint-pathname:
t/Makefile: ensure that paths are valid on platforms we care

Merge branch 'sg/reflog-past-root'Junio C Hamano Wed, 17 Aug 2016 21:07:48 +0000 (14:07 -0700)

Merge branch 'sg/reflog-past-root'

A small test clean-up for a topic introduced in v2.9.1 and later.

* sg/reflog-past-root:
t1410: remove superfluous 'git reflog' from the 'walk past root' test

Merge branch 'rs/mailinfo-lib'Junio C Hamano Wed, 17 Aug 2016 21:07:47 +0000 (14:07 -0700)

Merge branch 'rs/mailinfo-lib'

Small code clean-up.

* rs/mailinfo-lib:
mailinfo: recycle strbuf in check_header()

Merge branch 'jk/tighten-alloc'Junio C Hamano Wed, 17 Aug 2016 21:07:46 +0000 (14:07 -0700)

Merge branch 'jk/tighten-alloc'

Small code and comment clean-up.

* jk/tighten-alloc:
receive-pack: use FLEX_ALLOC_MEM in queue_command()
correct FLEXPTR_* example in comment

Merge branch 'va/i18n'Junio C Hamano Wed, 17 Aug 2016 21:07:45 +0000 (14:07 -0700)

Merge branch 'va/i18n'

A handful of tests that were broken under gettext-poison build have
been fixed.

* va/i18n:
t7411: become resilient to GETTEXT_POISON
t5520: become resilient to GETTEXT_POISON
t3404: become resilient to GETTEXT_POISON

git-multimail: update to release 1.4.0Matthieu Moy Wed, 17 Aug 2016 06:41:16 +0000 (08:41 +0200)

git-multimail: update to release 1.4.0

Changes are described in CHANGES.

Contributions-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Contributions-by: Irfan Adilovic <irfanadilovic@gmail.com>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

relnotes: redo the description of text=auto fixJunio C Hamano Wed, 17 Aug 2016 17:18:59 +0000 (10:18 -0700)

relnotes: redo the description of text=auto fix

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

t/Makefile: ensure that paths are valid on platforms... Johannes Schindelin Tue, 16 Aug 2016 15:13:25 +0000 (17:13 +0200)

t/Makefile: ensure that paths are valid on platforms we care

Some pathnames that are okay on ext4 and on HFS+ cannot be checked
out on Windows. Tests that want to see operations on such paths on
filesystems that support them must do so behind appropriate test
prerequisites, and must not include them in the source tree (instead
they should create them when they run). Otherwise, the source tree
cannot even be checked out.

Make sure that double-quotes, asterisk, colon, greater/less-than,
question-mark, backslash, tab, vertical-bar, as well as any non-ASCII
characters never appear in the pathnames with a new test-lint-* target
as part of a `make test`. To that end, we call `git ls-files` (ensuring
that the paths are quoted properly), relying on the fact that paths
containing non-ASCII characters are quoted within double-quotes.

In case that the source code does not actually live in a Git
repository (e.g. when extracted from a .zip file), or that the `git`
executable cannot be executed, we simply ignore the error for now; In
that case, our trusty Continuous Integration will be the last line of
defense and catch any problematic file name.

Noticed when a topic wanted to add a pathname with '>' in it. A
check like this will prevent a similar problems from happening in the
future.

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

checkout: do not mention detach advice for explicit... Stefan Beller Mon, 15 Aug 2016 18:40:21 +0000 (11:40 -0700)

checkout: do not mention detach advice for explicit --detach option

When a user asked for a detached HEAD specifically with `--detach`,
we do not need to give advice on what a detached HEAD state entails as
we can assume they know what they're getting into as they asked for it.

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

Relnotes: decribe the updates to the "text=auto" attributeJunio C Hamano Mon, 15 Aug 2016 17:20:38 +0000 (10:20 -0700)

Relnotes: decribe the updates to the "text=auto" attribute

Helped-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t1410: remove superfluous 'git reflog' from the 'walk... SZEDER Gábor Sun, 14 Aug 2016 23:28:53 +0000 (01:28 +0200)

t1410: remove superfluous 'git reflog' from the 'walk past root' test

The test added in 71abeb753fa8 (reflog: continue walking the reflog
past root commits, 2016-06-03) contains an unnecessary 'git reflog'
execution, which was part of my debug/tracing instrumentation that I
somehow didn't manage to remove before submitting.

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

Git 2.10-rc0 v2.10.0-rc0Junio C Hamano Sun, 14 Aug 2016 21:48:06 +0000 (14:48 -0700)

Git 2.10-rc0

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

convert: Correct NNO tests and missing `LF will be... Torsten Bögershausen Sat, 13 Aug 2016 21:29:27 +0000 (23:29 +0200)

convert: Correct NNO tests and missing `LF will be replaced by CRLF`

When a non-reversible CRLF conversion is done in "git add",
a warning is printed on stderr (or Git dies, depending on checksafe)

The function commit_chk_wrnNNO() in t0027 was written to test this,
but did the wrong thing: Instead of looking at the warning
from "git add", it looked at the warning from "git commit".

This is racy because "git commit" may not have to do CRLF conversion
at all if it can use the sha1 value from the index (which depends on
whether "add" and "commit" run in a single second).

Correct t0027 and replace the commit for each and every file with a commit
of all files in one go.
The function commit_chk_wrnNNO() should be renamed in a separate commit.

Now that t0027 does the right thing, it detects a bug in covert.c:
This sequence should generate the warning `LF will be replaced by CRLF`,
but does not:

$ git init
$ git config core.autocrlf false
$ printf "Line\r\n" >file
$ git add file
$ git commit -m "commit with CRLF"
$ git config core.autocrlf true
$ printf "Line\n" >file
$ git add file

"git add" calls crlf_to_git() in convert.c, which calls check_safe_crlf().
When has_cr_in_index(path) is true, crlf_to_git() returns too early and
check_safe_crlf() is not called at all.

Factor out the code which determines if "git checkout" converts LF->CRLF
into will_convert_lf_to_crlf().

Update the logic around check_safe_crlf() and "simulate" the possible
LF->CRLF conversion at "git checkout" with help of will_convert_lf_to_crlf().
Thanks to Jeff King <peff@peff.net> for analyzing t0027.

Reported-By: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

receive-pack: use FLEX_ALLOC_MEM in queue_command()René Scharfe Sat, 13 Aug 2016 15:38:56 +0000 (17:38 +0200)

receive-pack: use FLEX_ALLOC_MEM in queue_command()

Use the macro FLEX_ALLOC_MEM instead of open-coding it. This shortens
and simplifies the code a bit.

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

commit: use FLEX_ARRAY in struct merge_remote_descRené Scharfe Sat, 13 Aug 2016 12:21:27 +0000 (14:21 +0200)

commit: use FLEX_ARRAY in struct merge_remote_desc

Convert the name member of struct merge_remote_desc to a FLEX_ARRAY and
use FLEX_ALLOC_STR to build the struct. This halves the number of
memory allocations, saves the storage for a pointer and avoids an
indirection when reading the name.

Suggested-by: Jeff King <peff@peff.net>
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

merge-recursive: fix verbose output for multiple base... René Scharfe Sat, 13 Aug 2016 12:16:04 +0000 (14:16 +0200)

merge-recursive: fix verbose output for multiple base trees

One of the indirect callers of make_virtual_commit() passes the result of
oid_to_hex() as the name, i.e. a pointer to a static buffer. Since the
function uses that string pointer directly in building a struct
merge_remote_desc, multiple entries can end up sharing the same name
inadvertently.

Fix that by calling set_merge_remote_desc(), which creates a copy of the
string, instead of building the struct by hand.

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

commit: factor out set_merge_remote_desc()René Scharfe Sat, 13 Aug 2016 12:11:27 +0000 (14:11 +0200)

commit: factor out set_merge_remote_desc()

Export a helper function for allocating, populating and attaching a
merge_remote_desc to a commit.

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

commit: use xstrdup() in get_merge_parent()René Scharfe Sat, 13 Aug 2016 12:09:49 +0000 (14:09 +0200)

commit: use xstrdup() in get_merge_parent()

Handle allocation errors for the name member just like we already do
for the struct merge_remote_desc itself.

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

mailinfo: recycle strbuf in check_header()René Scharfe Sat, 13 Aug 2016 09:05:42 +0000 (11:05 +0200)

mailinfo: recycle strbuf in check_header()

handle_message_id() duplicates the contents of the strbuf that is passed
to it. Its only caller proceeds to release the strbuf immediately after
that. Reuse it instead and make that change of object ownership more
obvious by inlining this short function.

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

correct FLEXPTR_* example in commentRené Scharfe Sat, 13 Aug 2016 09:01:21 +0000 (11:01 +0200)

correct FLEXPTR_* example in comment

This section is about "The FLEXPTR_* variants", so use FLEXPTR_ALLOC_STR
in the example.

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

t7411: become resilient to GETTEXT_POISONVasco Almeida Fri, 12 Aug 2016 11:59:02 +0000 (11:59 +0000)

t7411: become resilient to GETTEXT_POISON

The concerned test greps the error message in git_parse_source() which
contains "bad config line %d in submodule-blob %s".

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t5520: become resilient to GETTEXT_POISONVasco Almeida Fri, 12 Aug 2016 11:59:01 +0000 (11:59 +0000)

t5520: become resilient to GETTEXT_POISON

Use test_i18ngrep function instead of grep for grepping strings.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t3404: become resilient to GETTEXT_POISONVasco Almeida Fri, 12 Aug 2016 11:59:00 +0000 (11:59 +0000)

t3404: become resilient to GETTEXT_POISON

The concerned test greps the output of exit_with_patch() in
git-rebase--interactive.sh script.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with 2.9.3Junio C Hamano Fri, 12 Aug 2016 17:02:18 +0000 (10:02 -0700)

Sync with 2.9.3

* tag 'v2.9.3':
Git 2.9.3

Final batch before 2.10-rc0Junio C Hamano Fri, 12 Aug 2016 17:01:42 +0000 (10:01 -0700)

Final batch before 2.10-rc0

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

Merge branch 'kw/patch-ids-optim'Junio C Hamano Fri, 12 Aug 2016 16:47:39 +0000 (09:47 -0700)

Merge branch 'kw/patch-ids-optim'

When "git rebase" tries to compare set of changes on the updated
upstream and our own branch, it computes patch-id for all of these
changes and attempts to find matches. This has been optimized by
lazily computing the full patch-id (which is expensive) to be
compared only for changes that touch the same set of paths.

* kw/patch-ids-optim:
rebase: avoid computing unnecessary patch IDs
patch-ids: add flag to create the diff patch id using header only data
patch-ids: replace the seen indicator with a commit pointer
patch-ids: stop using a hand-rolled hashmap implementation

Merge branch 'ew/http-backend-batch-headers'Junio C Hamano Fri, 12 Aug 2016 16:47:38 +0000 (09:47 -0700)

Merge branch 'ew/http-backend-batch-headers'

The http-backend (the server-side component of smart-http
transport) used to trickle the HTTP header one at a time. Now
these write(2)s are batched.

* ew/http-backend-batch-headers:
http-backend: buffer headers before sending

Merge branch 'va/i18n'Junio C Hamano Fri, 12 Aug 2016 16:47:38 +0000 (09:47 -0700)

Merge branch 'va/i18n'

* va/i18n:
i18n: git-stash: mark messages for translation
i18n: archive: mark errors for translation
i18n: setup: mark error messages for translation

Merge branch 'vs/typofix'Junio C Hamano Fri, 12 Aug 2016 16:47:37 +0000 (09:47 -0700)

Merge branch 'vs/typofix'

* vs/typofix:
Spelling fixes

Merge branch 'js/mv-dir-to-new-directory'Junio C Hamano Fri, 12 Aug 2016 16:47:37 +0000 (09:47 -0700)

Merge branch 'js/mv-dir-to-new-directory'

"git mv dir non-existing-dir/" did not work in some environments
the same way as existing mainstream platforms. The code now moves
"dir" to "non-existing-dir", without relying on rename("A", "B/")
that strips the trailing slash of '/'.

* js/mv-dir-to-new-directory:
git mv: do not keep slash in `git mv dir non-existing-dir/`

Merge branch 'rs/use-strbuf-add-unique-abbrev'Junio C Hamano Fri, 12 Aug 2016 16:47:37 +0000 (09:47 -0700)

Merge branch 'rs/use-strbuf-add-unique-abbrev'

A small code clean-up.

* rs/use-strbuf-add-unique-abbrev:
use strbuf_add_unique_abbrev() for adding short hashes

Merge branch 'jk/big-and-future-archive-tar'Junio C Hamano Fri, 12 Aug 2016 16:47:37 +0000 (09:47 -0700)

Merge branch 'jk/big-and-future-archive-tar'

A small code clean-up.

* jk/big-and-future-archive-tar:
archive-tar: make write_extended_header() void

Merge branch 'jk/trace-fixup'Junio C Hamano Fri, 12 Aug 2016 16:47:36 +0000 (09:47 -0700)

Merge branch 'jk/trace-fixup'

Various small fixups to the "GIT_TRACE" facility.

* jk/trace-fixup:
trace: do not fall back to stderr
write_or_die: drop write_or_whine_pipe()
trace: disable key after write error
trace: correct variable name in write() error message
trace: cosmetic fixes for error messages
trace: use warning() for printing trace errors
trace: stop using write_or_whine_pipe()
trace: handle NULL argument in trace_disable()

Merge branch 'rs/merge-recursive-string-list-init'Junio C Hamano Fri, 12 Aug 2016 16:47:36 +0000 (09:47 -0700)

Merge branch 'rs/merge-recursive-string-list-init'

A small code clean-up.

* rs/merge-recursive-string-list-init:
merge-recursive: use STRING_LIST_INIT_NODUP

Merge branch 'rs/merge-add-strategies-simplification'Junio C Hamano Fri, 12 Aug 2016 16:47:36 +0000 (09:47 -0700)

Merge branch 'rs/merge-add-strategies-simplification'

A small code clean-up.

* rs/merge-add-strategies-simplification:
merge: use string_list_split() in add_strategies()

Merge branch 'rs/child-process-init'Junio C Hamano Fri, 12 Aug 2016 16:47:36 +0000 (09:47 -0700)

Merge branch 'rs/child-process-init'

A small code clean-up.

* rs/child-process-init:
use CHILD_PROCESS_INIT to initialize automatic variables

Merge branch 'js/import-tars-hardlinks'Junio C Hamano Fri, 12 Aug 2016 16:47:36 +0000 (09:47 -0700)

Merge branch 'js/import-tars-hardlinks'

"import-tars" fast-import script (in contrib/) used to ignore a
hardlink target and replaced it with an empty file, which has been
corrected to record the same blob as the other file the hardlink is
shared with.

* js/import-tars-hardlinks:
import-tars: support hard links

Merge branch 'ms/document-pack-window-memory-is-per... Junio C Hamano Fri, 12 Aug 2016 16:47:35 +0000 (09:47 -0700)

Merge branch 'ms/document-pack-window-memory-is-per-thread'

* ms/document-pack-window-memory-is-per-thread:
document git-repack interaction of pack.threads and pack.windowMemory

Merge branch 'vs/completion-branch-fully-spelled-d... Junio C Hamano Fri, 12 Aug 2016 16:47:35 +0000 (09:47 -0700)

Merge branch 'vs/completion-branch-fully-spelled-d-m-r'

* vs/completion-branch-fully-spelled-d-m-r:
completion: complete --delete, --move, and --remotes for git branch

Merge branch 'sb/submodule-clone-retry'Junio C Hamano Fri, 12 Aug 2016 16:47:34 +0000 (09:47 -0700)

Merge branch 'sb/submodule-clone-retry'

Fix-up to an error codepath in a topic already in 'master'.

* sb/submodule-clone-retry:
submodule--helper: use parallel processor correctly

Git 2.9.3 v2.9.3Junio C Hamano Fri, 12 Aug 2016 16:17:51 +0000 (09:17 -0700)

Git 2.9.3

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

Merge branch 'jk/difftool-in-subdir' into maintJunio C Hamano Fri, 12 Aug 2016 16:16:57 +0000 (09:16 -0700)

Merge branch 'jk/difftool-in-subdir' into maint

"git difftool <paths>..." started in a subdirectory failed to
interpret the paths relative to that directory, which has been
fixed.

* jk/difftool-in-subdir:
difftool: use Git::* functions instead of passing around state
difftool: avoid $GIT_DIR and $GIT_WORK_TREE
difftool: fix argument handling in subdirs

Merge branch 'jk/reset-ident-time-per-commit' into... Junio C Hamano Fri, 12 Aug 2016 16:16:56 +0000 (09:16 -0700)

Merge branch 'jk/reset-ident-time-per-commit' into maint

Not-so-recent rewrite of "git am" that started making internal
calls into the commit machinery had an unintended regression, in
that no matter how many seconds it took to apply many patches, the
resulting committer timestamp for the resulting commits were all
the same.

* jk/reset-ident-time-per-commit:
am: reset cached ident date for each patch

rebase: avoid computing unnecessary patch IDsKevin Willford Fri, 29 Jul 2016 16:19:20 +0000 (12:19 -0400)

rebase: avoid computing unnecessary patch IDs

The `rebase` family of Git commands avoid applying patches that were
already integrated upstream. They do that by using the revision walking
option that computes the patch IDs of the two sides of the rebase
(local-only patches vs upstream-only ones) and skipping those local
patches whose patch ID matches one of the upstream ones.

In many cases, this causes unnecessary churn, as already the set of
paths touched by a given commit would suffice to determine that an
upstream patch has no local equivalent.

This hurts performance in particular when there are a lot of upstream
patches, and/or large ones.

Therefore, let's introduce the concept of a "diff-header-only" patch ID,
compare those first, and only evaluate the "full" patch ID lazily.

Please note that in contrast to the "full" patch IDs, those
"diff-header-only" patch IDs are prone to collide with one another, as
adjacent commits frequently touch the very same files. Hence we now
have to be careful to allow multiple hash entries with the same hash.
We accomplish that by using the hashmap_add() function that does not even
test for hash collisions. This also allows us to evaluate the full patch ID
lazily, i.e. only when we found commits with matching diff-header-only
patch IDs.

We add a performance test that demonstrates ~1-6% improvement. In
practice this will depend on various factors such as how many upstream
changes and how big those changes are along with whether file system
caches are cold or warm. As Git's test suite has no way of catching
performance regressions, we also add a regression test that verifies
that the full patch ID computation is skipped when the diff-header-only
computation suffices.

Signed-off-by: Kevin Willford <kcwillford@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Spelling fixesVille Skyttä Tue, 9 Aug 2016 08:53:38 +0000 (11:53 +0300)

Spelling fixes

<BAD> <CORRECTED>
accidently accidentally
commited committed
dependancy dependency
emtpy empty
existance existence
explicitely explicitly
git-upload-achive git-upload-archive
hierachy hierarchy
indegee indegree
intial initial
mulitple multiple
non-existant non-existent
precendence. precedence.
priviledged privileged
programatically programmatically
psuedo-binary pseudo-binary
soemwhere somewhere
successfull successful
transfering transferring
uncommited uncommitted
unkown unknown
usefull useful
writting writing

Signed-off-by: Ville Skyttä <ville.skytta@iki.fi>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with maintJunio C Hamano Wed, 10 Aug 2016 19:38:02 +0000 (12:38 -0700)

Sync with maint

* maint:
Yet another batch for 2.9.3

Twelfth batch for 2.10Junio C Hamano Wed, 10 Aug 2016 19:35:40 +0000 (12:35 -0700)

Twelfth batch for 2.10

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

Merge branch 'sb/submodule-update-dot-branch'Junio C Hamano Wed, 10 Aug 2016 19:33:20 +0000 (12:33 -0700)

Merge branch 'sb/submodule-update-dot-branch'

A few updates to "git submodule update".

Use of "| wc -l" break with BSD variant of 'wc'.

* sb/submodule-update-dot-branch:
t7406: fix breakage on OSX
submodule update: allow '.' for branch value
submodule--helper: add remote-branch helper
submodule-config: keep configured branch around
submodule--helper: fix usage string for relative-path
submodule update: narrow scope of local variable
submodule update: respect depth in subsequent fetches
t7406: future proof tests with hard coded depth

Merge branch 'js/am-3-merge-recursive-direct'Junio C Hamano Wed, 10 Aug 2016 19:33:20 +0000 (12:33 -0700)

Merge branch 'js/am-3-merge-recursive-direct'

"git am -3" calls "git merge-recursive" when it needs to fall back
to a three-way merge; this call has been turned into an internal
subroutine call instead of spawning a separate subprocess.

* js/am-3-merge-recursive-direct:
merge-recursive: flush output buffer even when erroring out
merge_trees(): ensure that the callers release output buffer
merge-recursive: offer an option to retain the output in 'obuf'
merge-recursive: write the commit title in one go
merge-recursive: flush output buffer before printing error messages
am -3: use merge_recursive() directly again
merge-recursive: switch to returning errors instead of dying
merge-recursive: handle return values indicating errors
merge-recursive: allow write_tree_from_memory() to error out
merge-recursive: avoid returning a wholesale struct
merge_recursive: abort properly upon errors
prepare the builtins for a libified merge_recursive()
merge-recursive: clarify code in was_tracked()
die(_("BUG")): avoid translating bug messages
die("bug"): report bugs consistently
t5520: verify that `pull --rebase` shows the helpful advice when failing

Merge branch 'js/commit-slab-decl-fix'Junio C Hamano Wed, 10 Aug 2016 19:33:20 +0000 (12:33 -0700)

Merge branch 'js/commit-slab-decl-fix'

* js/commit-slab-decl-fix:
commit-slab.h: avoid duplicated global static variables
config.c: avoid duplicated global static variables

Merge branch 'jk/completion-diff-submodule'Junio C Hamano Wed, 10 Aug 2016 19:33:19 +0000 (12:33 -0700)

Merge branch 'jk/completion-diff-submodule'

* jk/completion-diff-submodule:
completion: add completion for --submodule=* diff option

Merge branch 'cc/mailmap-tuxfamily'Junio C Hamano Wed, 10 Aug 2016 19:33:18 +0000 (12:33 -0700)

Merge branch 'cc/mailmap-tuxfamily'

* cc/mailmap-tuxfamily:
.mailmap: use Christian Couder's Tuxfamily address

Merge branch 'jt/format-patch-from-config'Junio C Hamano Wed, 10 Aug 2016 19:33:18 +0000 (12:33 -0700)

Merge branch 'jt/format-patch-from-config'

"git format-patch" learned format.from configuration variable to
specify the default settings for its "--from" option.

* jt/format-patch-from-config:
format-patch: format.from gives the default for --from

Merge branch 'jk/push-force-with-lease-creation'Junio C Hamano Wed, 10 Aug 2016 19:33:18 +0000 (12:33 -0700)

Merge branch 'jk/push-force-with-lease-creation'

"git push --force-with-lease" already had enough logic to allow
ensuring that such a push results in creation of a ref (i.e. the
receiving end did not have another push from sideways that would be
discarded by our force-pushing), but didn't expose this possibility
to the users. It does so now.

* jk/push-force-with-lease-creation:
t5533: make it pass on case-sensitive filesystems
push: allow pushing new branches with --force-with-lease
push: add shorthand for --force-with-lease branch creation
Documentation/git-push: fix placeholder formatting

Merge branch 'jk/reset-ident-time-per-commit'Junio C Hamano Wed, 10 Aug 2016 19:33:17 +0000 (12:33 -0700)

Merge branch 'jk/reset-ident-time-per-commit'

Not-so-recent rewrite of "git am" that started making internal
calls into the commit machinery had an unintended regression, in
that no matter how many seconds it took to apply many patches, the
resulting committer timestamp for the resulting commits were all
the same.

* jk/reset-ident-time-per-commit:
am: reset cached ident date for each patch

Yet another batch for 2.9.3Junio C Hamano Wed, 10 Aug 2016 18:56:56 +0000 (11:56 -0700)

Yet another batch for 2.9.3

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

Merge branch 'jh/clean-smudge-f-doc' into maintJunio C Hamano Wed, 10 Aug 2016 18:55:34 +0000 (11:55 -0700)

Merge branch 'jh/clean-smudge-f-doc' into maint

A minor documentation update.

This was split out from a stalled jh/clean-smudge-annex topic
before discarding it.

* jh/clean-smudge-f-doc:
clarify %f documentation

Merge branch 'rs/use-strbuf-addstr' into maintJunio C Hamano Wed, 10 Aug 2016 18:55:33 +0000 (11:55 -0700)

Merge branch 'rs/use-strbuf-addstr' into maint

* rs/use-strbuf-addstr:
use strbuf_addstr() instead of strbuf_addf() with "%s"
use strbuf_addstr() for adding constant strings to a strbuf

Merge branch 'cp/completion-clone-recurse-submodules... Junio C Hamano Wed, 10 Aug 2016 18:55:33 +0000 (11:55 -0700)

Merge branch 'cp/completion-clone-recurse-submodules' into maint

* cp/completion-clone-recurse-submodules:
completion: add option '--recurse-submodules' to 'git clone'

Merge branch 'jk/t4205-cleanup' into maintJunio C Hamano Wed, 10 Aug 2016 18:55:32 +0000 (11:55 -0700)

Merge branch 'jk/t4205-cleanup' into maint

Test modernization.

* jk/t4205-cleanup:
t4205: indent here documents
t4205: drop top-level &&-chaining

Merge branch 'jc/hashmap-doc-init' into maintJunio C Hamano Wed, 10 Aug 2016 18:55:31 +0000 (11:55 -0700)

Merge branch 'jc/hashmap-doc-init' into maint

The API documentation for hashmap was unclear if hashmap_entry
can be safely discarded without any other consideration. State
that it is safe to do so.

* jc/hashmap-doc-init:
hashmap: clarify that hashmap_entry can safely be discarded

Merge branch 'js/nedmalloc-gcc6-warnings' into maintJunio C Hamano Wed, 10 Aug 2016 18:55:31 +0000 (11:55 -0700)

Merge branch 'js/nedmalloc-gcc6-warnings' into maint

Squelch compiler warnings for netmalloc (in compat/) library.

* js/nedmalloc-gcc6-warnings:
nedmalloc: work around overzealous GCC 6 warning
nedmalloc: fix misleading indentation

Merge branch 'nd/fbsd-lazy-mtime' into maintJunio C Hamano Wed, 10 Aug 2016 18:55:30 +0000 (11:55 -0700)

Merge branch 'nd/fbsd-lazy-mtime' into maint

FreeBSD can lie when asked mtime of a directory, which made the
untracked cache code to fall back to a slow-path, which in turn
caused tests in t7063 to fail because it wanted to verify the
behaviour of the fast-path.

* nd/fbsd-lazy-mtime:
t7063: work around FreeBSD's lazy mtime update feature

Merge branch 'ab/gitweb-link-html-escape' into maintJunio C Hamano Wed, 10 Aug 2016 18:55:30 +0000 (11:55 -0700)

Merge branch 'ab/gitweb-link-html-escape' into maint

The characters in the label shown for tags/refs for commits in
"gitweb" output are now properly escaped for proper HTML output.

* ab/gitweb-link-html-escape:
gitweb: escape link body in format_ref_marker

Merge branch 'js/t4130-rename-without-ino' into maintJunio C Hamano Wed, 10 Aug 2016 18:55:29 +0000 (11:55 -0700)

Merge branch 'js/t4130-rename-without-ino' into maint

Windows port was failing some tests in t4130, due to the lack of
inum in the returned values by its lstat(2) emulation.

* js/t4130-rename-without-ino:
t4130: work around Windows limitation

Merge branch 'jc/grep-commandline-vs-configuration... Junio C Hamano Wed, 10 Aug 2016 18:55:29 +0000 (11:55 -0700)

Merge branch 'jc/grep-commandline-vs-configuration' into maint

"git -c grep.patternType=extended log --basic-regexp" misbehaved
because the internal API to access the grep machinery was not
designed well.

* jc/grep-commandline-vs-configuration:
grep: further simplify setting the pattern type

Merge branch 'jk/diff-do-not-reuse-wtf-needs-cleaning... Junio C Hamano Wed, 10 Aug 2016 18:55:28 +0000 (11:55 -0700)

Merge branch 'jk/diff-do-not-reuse-wtf-needs-cleaning' into maint

There is an optimization used in "git diff $treeA $treeB" to borrow
an already checked-out copy in the working tree when it is known to
be the same as the blob being compared, expecting that open/mmap of
such a file is faster than reading it from the object store, which
involves inflating and applying delta. This however kicked in even
when the checked-out copy needs to go through the convert-to-git
conversion (including the clean filter), which defeats the whole
point of the optimization. The optimization has been disabled when
the conversion is necessary.

* jk/diff-do-not-reuse-wtf-needs-cleaning:
diff: do not reuse worktree files that need "clean" conversion

Merge branch 'pm/build-persistent-https-with-recent... Junio C Hamano Wed, 10 Aug 2016 18:55:27 +0000 (11:55 -0700)

Merge branch 'pm/build-persistent-https-with-recent-go' into maint

The build procedure for "git persistent-https" helper (in contrib/)
has been updated so that it can be built with more recent versions
of Go.

* pm/build-persistent-https-with-recent-go:
contrib/persistent-https: use Git version for build label
contrib/persistent-https: update ldflags syntax for Go 1.7+

Merge branch 'da/subtree-2.9-regression' into maintJunio C Hamano Wed, 10 Aug 2016 18:55:26 +0000 (11:55 -0700)

Merge branch 'da/subtree-2.9-regression' into maint

"git merge" in Git v2.9 was taught to forbid merging an unrelated
lines of history by default, but that is exactly the kind of thing
the "--rejoin" mode of "git subtree" (in contrib/) wants to do.
"git subtree" has been taught to use the "--allow-unrelated-histories"
option to override the default.

* da/subtree-2.9-regression:
subtree: fix "git subtree split --rejoin"
t7900-subtree.sh: fix quoting and broken && chains

Merge branch 'os/no-verify-skips-commit-msg-too' into... Junio C Hamano Wed, 10 Aug 2016 18:55:25 +0000 (11:55 -0700)

Merge branch 'os/no-verify-skips-commit-msg-too' into maint

"git commit --help" said "--no-verify" is only about skipping the
pre-commit hook, and failed to say that it also skipped the
commit-msg hook.

* os/no-verify-skips-commit-msg-too:
commit: describe that --no-verify skips the commit-msg hook in the help text

Merge branch 'rs/rm-strbuf-optim' into maintJunio C Hamano Wed, 10 Aug 2016 18:55:24 +0000 (11:55 -0700)

Merge branch 'rs/rm-strbuf-optim' into maint

The use of strbuf in "git rm" to build filename to remove was a bit
suboptimal, which has been fixed.

* rs/rm-strbuf-optim:
rm: reuse strbuf for all remove_dir_recursively() calls

Merge branch 'jk/parse-options-concat' into maintJunio C Hamano Wed, 10 Aug 2016 18:55:23 +0000 (11:55 -0700)

Merge branch 'jk/parse-options-concat' into maint

Users of the parse_options_concat() API function need to allocate
extra slots in advance and fill them with OPT_END() when they want
to decide the set of supported options dynamically, which makes the
code error-prone and hard to read. This has been corrected by tweaking
the API to allocate and return a new copy of "struct option" array.

* jk/parse-options-concat:
parse_options: allocate a new array when concatenating

Merge branch 'ls/travis-enable-httpd-tests' into maintJunio C Hamano Wed, 10 Aug 2016 18:55:22 +0000 (11:55 -0700)

Merge branch 'ls/travis-enable-httpd-tests' into maint

Allow http daemon tests in Travis CI tests.

* ls/travis-enable-httpd-tests:
travis-ci: enable web server tests t55xx on Linux

Merge branch 'ew/autoconf-pthread' into maintJunio C Hamano Wed, 10 Aug 2016 18:55:20 +0000 (11:55 -0700)

Merge branch 'ew/autoconf-pthread' into maint

Existing autoconf generated test for the need to link with pthread
library did not check all the functions from pthread libraries;
recent FreeBSD has some functions in libc but not others, and we
mistakenly thought linking with libc is enough when it is not.

* ew/autoconf-pthread:
configure.ac: stronger test for pthread linkage

Merge branch 'rs/help-c-source-with-gitattributes'... Junio C Hamano Wed, 10 Aug 2016 18:55:19 +0000 (11:55 -0700)

Merge branch 'rs/help-c-source-with-gitattributes' into maint

The .c/.h sources are marked as such in our .gitattributes file so
that "git diff -W" and friends would work better.

* rs/help-c-source-with-gitattributes:
.gitattributes: set file type for C files

Merge branch 'mm/status-suggest-merge-abort' into maintJunio C Hamano Wed, 10 Aug 2016 18:55:19 +0000 (11:55 -0700)

Merge branch 'mm/status-suggest-merge-abort' into maint

"git status" learned to suggest "merge --abort" during a conflicted
merge, just like it already suggests "rebase --abort" during a
conflicted rebase.

* mm/status-suggest-merge-abort:
status: suggest 'git merge --abort' when appropriate

t7406: fix breakage on OSXStefan Beller Wed, 10 Aug 2016 17:56:07 +0000 (10:56 -0700)

t7406: fix breakage on OSX

On OSX `wc` prefixes the output of numbers with whitespace, such
that the `commit_count` would be "SP <NUMBER>". When using that in

git submodule update --init --depth=$commit_count

the depth would be empty and the number is interpreted as the
pathspec. Fix this by not using `wc` and rather instruct rev-list
to count.

Another way to fix this is to remove the `=` sign after the
`--depth` argument as then we are allowed to have more than just one
whitespace between `--depth` and the actual number. Prefer the
solution of rev-list counting as that is expected to be slightly
faster and more self-contained within Git.

Reported-by: Lars Schneider <larsxschneider@gmail.com>
Helped-by: Junio C Hamano <gitster@pobox.com>,
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

document git-repack interaction of pack.threads and... Michael Stahl Wed, 10 Aug 2016 10:39:35 +0000 (12:39 +0200)

document git-repack interaction of pack.threads and pack.windowMemory

Signed-off-by: Michael Stahl <mstahl@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

i18n: git-stash: mark messages for translationVasco Almeida Wed, 10 Aug 2016 10:50:30 +0000 (10:50 +0000)

i18n: git-stash: mark messages for translation

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

http-backend: buffer headers before sendingEric Wong Tue, 9 Aug 2016 23:47:31 +0000 (23:47 +0000)

http-backend: buffer headers before sending

Avoid waking up the readers for unnecessary context switches for
each line of header data being written, as all the headers are
written in short succession.

It is unlikely any HTTP/1.x server would want to read a CGI
response one-line-at-a-time and trickle each to the client.
Instead, I'd expect HTTP servers want to minimize syscall and
TCP/IP framing overhead by trying to send all of its response
headers in a single syscall or even combining the headers and
first chunk of the body with MSG_MORE or writev.

Verified by strace-ing response parsing on the CGI side.

Signed-off-by: Eric Wong <e@80x24.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule--helper: use parallel processor correctlyStefan Beller Tue, 9 Aug 2016 21:29:13 +0000 (14:29 -0700)

submodule--helper: use parallel processor correctly

When developing another patch series I had a temporary state in
which git-clone would segfault, when the call was prepared in
prepare_to_clone_next_submodule. This lead to the call failing,
i.e. in `update_clone_task_finished` the task was scheduled to be
tried again. The second call to prepare_to_clone_next_submodule
would return 0, as the segfaulted clone did create the .git file
already, such that was not considered to need to be cloned again. I
was seeing the "BUG: ce was a submodule before?\n" message, which
was the correct behavior at the time as my local code was
buggy. When trying to debug this failure, I tried to use printing
messages into the strbuf that is passed around, but these messages
were never printed as the die(..) doesn't flush the `err` strbuf.

When implementing the die() in 665b35ecc (2016-06-09, "submodule--helper:
initial clone learns retry logic"), I considered this condition to be
a severe condition, which should lead to an immediate abort as we do not
trust ourselves any more. However the queued messages in `err` are valuable
so let's not toss them out by immediately dying, but a graceful return.

Another thing to note: The error message itself was misleading. A return
value of 0 doesn't indicate the passed in `ce` is not a submodule any more,
but just that we do not consider cloning it any more.

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

completion: add completion for --submodule=* diff optionJacob Keller Tue, 9 Aug 2016 18:34:46 +0000 (11:34 -0700)

completion: add completion for --submodule=* diff option

Teach git-completion.bash to complete --submodule= for git commands
which take diff options. Also teach completion for git-log to support
--diff-algorithms as well.

Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

i18n: archive: mark errors for translationVasco Almeida Mon, 8 Aug 2016 11:16:00 +0000 (11:16 +0000)

i18n: archive: mark errors for translation

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

i18n: setup: mark error messages for translationVasco Almeida Mon, 8 Aug 2016 11:15:59 +0000 (11:15 +0000)

i18n: setup: mark error messages for translation

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: complete --delete, --move, and --remotes... Ville Skyttä Tue, 9 Aug 2016 09:34:44 +0000 (12:34 +0300)

completion: complete --delete, --move, and --remotes for git branch

Signed-off-by: Ville Skyttä <ville.skytta@iki.fi>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

commit-slab.h: avoid duplicated global static variablesJohannes Sixt Tue, 9 Aug 2016 14:17:56 +0000 (16:17 +0200)

commit-slab.h: avoid duplicated global static variables

The gigantic define_commit_slab() macro repeats the definition of a
static variable that occurs earlier in the macro text. The purpose of
the repeated definition at the end of the macro is that it takes the
semicolon that occurs where the macro is used.

We cannot just remove the first definition of the variable because it
is referenced elsewhere in the macro text, and defining the macro later
would produce undefined identifier errors. We cannot have a "forward"
declaration, either. (This works only with "extern" global variables.)

The solution is to use a declaration of a struct that is already defined
earlier. This language construct can serve the same purpose as the
duplicated static variable definition, but without the confusion.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

config.c: avoid duplicated global static variablesJohannes Sixt Tue, 9 Aug 2016 14:16:33 +0000 (16:16 +0200)

config.c: avoid duplicated global static variables

Repeating the definition of a static variable seems to be valid in C.
Nevertheless, it is bad style because it can cause confusion, definitely
when it becomes necessary to change the type.

d64ec16 (git config: reorganize to use parseopt, 2009-02-21) added two
static variables near the top of the file config.c without removing the
definitions of the two variables that occurs later in the file.

The two variables were needed earlier in the file in the newly
introduced parseopt structure. These references were removed later in
d0e08d6 (config: fix parsing of "git config --get-color some.key -1",
2014-11-20).

Remove the redundant, younger, definitions near the top of the file and
keep the original definitions that occur later.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

.mailmap: use Christian Couder's Tuxfamily addressChristian Couder Mon, 8 Aug 2016 21:17:22 +0000 (23:17 +0200)

.mailmap: use Christian Couder's Tuxfamily address

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

Sync with maintJunio C Hamano Mon, 8 Aug 2016 21:52:17 +0000 (14:52 -0700)

Sync with maint

* maint:
Hopefully final batch for 2.9.3

Eleventh batch for 2.10Junio C Hamano Mon, 8 Aug 2016 21:52:08 +0000 (14:52 -0700)

Eleventh batch for 2.10

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

Merge branch 'jc/hashmap-doc-init'Junio C Hamano Mon, 8 Aug 2016 21:48:45 +0000 (14:48 -0700)

Merge branch 'jc/hashmap-doc-init'

The API documentation for hashmap was unclear if hashmap_entry
can be safely discarded without any other consideration. State
that it is safe to do so.

* jc/hashmap-doc-init:
hashmap: clarify that hashmap_entry can safely be discarded

Merge branch 'ew/build-time-pager-tweaks'Junio C Hamano Mon, 8 Aug 2016 21:48:44 +0000 (14:48 -0700)

Merge branch 'ew/build-time-pager-tweaks'

The build procedure learned PAGER_ENV knob that lists what default
environment variable settings to export for popular pagers. This
mechanism is used to tweak the default settings to MORE on FreeBSD.

* ew/build-time-pager-tweaks:
pager: move pager-specific setup into the build

Merge branch 'sb/submodule-recommend-shallowness'Junio C Hamano Mon, 8 Aug 2016 21:48:44 +0000 (14:48 -0700)

Merge branch 'sb/submodule-recommend-shallowness'

Doc update.

* sb/submodule-recommend-shallowness:
gitmodules: document shallow recommendation

Merge branch 'jk/parseopt-string-list'Junio C Hamano Mon, 8 Aug 2016 21:48:43 +0000 (14:48 -0700)

Merge branch 'jk/parseopt-string-list'

A small memory leak in the command line parsing of "git blame"
has been plugged.

* jk/parseopt-string-list:
blame: drop strdup of string literal

Merge branch 'jh/clean-smudge-f-doc'Junio C Hamano Mon, 8 Aug 2016 21:48:43 +0000 (14:48 -0700)

Merge branch 'jh/clean-smudge-f-doc'

A minor documentation update.

* jh/clean-smudge-f-doc:
clarify %f documentation

Merge branch 'js/nedmalloc-gcc6-warnings'Junio C Hamano Mon, 8 Aug 2016 21:48:42 +0000 (14:48 -0700)

Merge branch 'js/nedmalloc-gcc6-warnings'

Squelch compiler warnings for netmalloc (in compat/) library.

* js/nedmalloc-gcc6-warnings:
nedmalloc: work around overzealous GCC 6 warning
nedmalloc: fix misleading indentation