gitweb.git
Merge branch 'nd/parseopt-completion-more' into nextJunio C Hamano Fri, 30 Mar 2018 01:27:23 +0000 (18:27 -0700)

Merge branch 'nd/parseopt-completion-more' into next

The mechanism to use parse-options API to automate the command line
completion continues to get extended and polished.

* nd/parseopt-completion-more:
completion: use __gitcomp_builtin in _git_cherry
completion: use __gitcomp_builtin in _git_ls_tree
completion: delete option-only completion commands
completion: add --option completion for most builtin commands
completion: factor out _git_xxx calling code
completion: mention the oldest version we need to support
git.c: add hidden option --list-parseopt-builtins
git.c: move cmd_struct declaration up

Merge branch 'ds/bsearch-hash' into nextJunio C Hamano Fri, 30 Mar 2018 01:27:22 +0000 (18:27 -0700)

Merge branch 'ds/bsearch-hash' into next

Code to find the length to uniquely abbreviate object names based
on packfile content, which is a relatively recent addtion, has been
optimized to use the same fan-out table.

* ds/bsearch-hash:
sha1_name: use bsearch_pack() in unique_in_pack()
sha1_name: use bsearch_pack() for abbreviations
packfile: define and use bsearch_pack()
sha1_name: convert struct min_abbrev_data to object_id

Merge branch 'ws/rebase-p' into nextJunio C Hamano Fri, 30 Mar 2018 01:27:22 +0000 (18:27 -0700)

Merge branch 'ws/rebase-p' into next

Code clean-up.

* ws/rebase-p:
rebase: remove merges_option and a blank line
rebase: remove unused code paths from git_rebase__interactive__preserve_merges
rebase: remove unused code paths from git_rebase__interactive
rebase: add and use git_rebase__interactive__preserve_merges
rebase: extract functions out of git_rebase__interactive
rebase: reindent function git_rebase__interactive
rebase: update invocation of rebase dot-sourced scripts
rebase-interactive: simplify pick_on_preserving_merges

Merge branch 'jk/diff-highlight-graph-fix' into nextJunio C Hamano Fri, 30 Mar 2018 01:27:22 +0000 (18:27 -0700)

Merge branch 'jk/diff-highlight-graph-fix' into next

"diff-highlight" filter (in contrib/) learned to undertand "git log
--graph" output better.

* jk/diff-highlight-graph-fix:
diff-highlight: detect --graph by indent
diff-highlight: use flush() helper consistently
diff-highlight: test graphs with --color
diff-highlight: test interleaved parallel lines of history
diff-highlight: prefer "echo" to "cat" in tests
diff-highlight: use test_tick in graph test
diff-highlight: correct test graph diagram

Merge branch 'bw/protocol-v2' into nextJunio C Hamano Fri, 30 Mar 2018 01:27:21 +0000 (18:27 -0700)

Merge branch 'bw/protocol-v2' into next

The beginning of the next-gen transfer protocol.

* bw/protocol-v2: (35 commits)
remote-curl: don't request v2 when pushing
remote-curl: implement stateless-connect command
http: eliminate "# service" line when using protocol v2
http: don't always add Git-Protocol header
http: allow providing extra headers for http requests
remote-curl: store the protocol version the server responded with
remote-curl: create copy of the service name
pkt-line: add packet_buf_write_len function
transport-helper: introduce stateless-connect
transport-helper: refactor process_connect_service
transport-helper: remove name parameter
connect: don't request v2 when pushing
connect: refactor git_connect to only get the protocol version once
fetch-pack: support shallow requests
fetch-pack: perform a fetch using v2
upload-pack: introduce fetch server command
push: pass ref prefixes when pushing
fetch: pass ref prefixes when fetching
ls-remote: pass ref prefixes when requesting a remote's refs
transport: convert transport_get_remote_refs to take a list of ref prefixes
...

Merge branch 'jh/partial-clone' into nextJunio C Hamano Fri, 30 Mar 2018 01:27:19 +0000 (18:27 -0700)

Merge branch 'jh/partial-clone' into next

Hotfix.

* jh/partial-clone:
upload-pack: disable object filtering when disabled by config

upload-pack: disable object filtering when disabled... Jonathan Nieder Wed, 28 Mar 2018 20:33:03 +0000 (13:33 -0700)

upload-pack: disable object filtering when disabled by config

When upload-pack gained partial clone support (v2.17.0-rc0~132^2~12,
2017-12-08), it was guarded by the uploadpack.allowFilter config item
to allow server operators to control when they start supporting it.

That config item didn't go far enough, though: it controls whether the
'filter' capability is advertised, but if a (custom) client ignores
the capability advertisement and passes a filter specification anyway,
the server would handle that despite allowFilter being false.

This is particularly significant if a security bug is discovered in
this new experimental partial clone code. Installations without
uploadpack.allowFilter ought not to be affected since they don't
intend to support partial clone, but they would be swept up into being
vulnerable.

Simplify and limit the attack surface by making uploadpack.allowFilter
disable the feature, not just the advertisement of it.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with Git 2.17-rc2Junio C Hamano Wed, 28 Mar 2018 19:18:46 +0000 (12:18 -0700)

Sync with Git 2.17-rc2

* master:
Git 2.17-rc2

Merge branch 'jh/partial-clone' into nextJunio C Hamano Wed, 28 Mar 2018 19:14:48 +0000 (12:14 -0700)

Merge branch 'jh/partial-clone' into next

* jh/partial-clone:
unpack-trees: release oid_array after use in check_updates()

Git 2.17-rc2 v2.17.0-rc2Junio C Hamano Wed, 28 Mar 2018 18:05:14 +0000 (11:05 -0700)

Git 2.17-rc2

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

Merge branch 'tg/stash-doc-typofix'Junio C Hamano Wed, 28 Mar 2018 18:04:25 +0000 (11:04 -0700)

Merge branch 'tg/stash-doc-typofix'

Hotfix.

* tg/stash-doc-typofix:
git-stash.txt: remove extra square bracket

Merge branch 'pc/submodule-helper'Junio C Hamano Wed, 28 Mar 2018 18:04:25 +0000 (11:04 -0700)

Merge branch 'pc/submodule-helper'

Hotfix.

* pc/submodule-helper:
submodule deinit: handle non existing pathspecs gracefully

Merge branch 'nd/parseopt-completion'Junio C Hamano Wed, 28 Mar 2018 18:04:24 +0000 (11:04 -0700)

Merge branch 'nd/parseopt-completion'

Hotfix for recently graduated topic that give help to completion
scripts from the Git subcommands that are being completed

* nd/parseopt-completion:
t9902: disable test on the list of merge-strategies under GETTEXT_POISON
completion: clear cached --options when sourcing the completion script

Merge branch 'tg/stash-doc-typofix' into nextJunio C Hamano Wed, 28 Mar 2018 06:08:51 +0000 (23:08 -0700)

Merge branch 'tg/stash-doc-typofix' into next

* tg/stash-doc-typofix:
git-stash.txt: remove extra square bracket

Merge branch 'pc/submodule-helper' into nextJunio C Hamano Wed, 28 Mar 2018 06:08:51 +0000 (23:08 -0700)

Merge branch 'pc/submodule-helper' into next

Rewrite two more "git submodule" subcommands in C.

* pc/submodule-helper:
submodule deinit: handle non existing pathspecs gracefully

submodule deinit: handle non existing pathspecs gracefullyStefan Beller Tue, 27 Mar 2018 23:28:24 +0000 (16:28 -0700)

submodule deinit: handle non existing pathspecs gracefully

This fixes a regression introduced in 2e612731b5 (submodule: port
submodule subcommand 'deinit' from shell to C, 2018-01-15), when
handling pathspecs that do not exist gracefully. This restores the
historic behavior of reporting the pathspec as unknown and returning
instead of reporting a bug.

Reported-by: Peter Oberndorfer <kumbayo84@arcor.de>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-stash.txt: remove extra square bracketThomas Gummerer Mon, 26 Mar 2018 21:11:47 +0000 (22:11 +0100)

git-stash.txt: remove extra square bracket

In 1ada5020b3 ("stash: use stash_push for no verb form", 2017-02-28),
when the pathspec argument was introduced in 'git stash', that was also
documented. However I forgot to remove an extra square bracket after
the '--message' argument, even though the square bracket should have
been after the pathspec argument (where it was also added).

Remove the extra square bracket after the '--message' argument, to show
that the pathspec argument should be used with the 'push' verb.

While the pathspec argument can be used without the push verb, that's a
special case described later in the man page, and removing the first extra
square bracket instead of the second one makes the synopis easier to
understand.

Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

unpack-trees: release oid_array after use in check_upda... René Scharfe Sun, 25 Mar 2018 16:31:48 +0000 (18:31 +0200)

unpack-trees: release oid_array after use in check_updates()

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

completion: use __gitcomp_builtin in _git_cherryNguyễn Thái Ngọc Duy Sat, 24 Mar 2018 20:35:25 +0000 (21:35 +0100)

completion: use __gitcomp_builtin in _git_cherry

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: use __gitcomp_builtin in _git_ls_treeNguyễn Thái Ngọc Duy Sat, 24 Mar 2018 20:35:24 +0000 (21:35 +0100)

completion: use __gitcomp_builtin in _git_ls_tree

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: delete option-only completion commandsNguyễn Thái Ngọc Duy Sat, 24 Mar 2018 20:35:23 +0000 (21:35 +0100)

completion: delete option-only completion commands

The new function __git_complete_common can take over this job with
less code to maintain.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: add --option completion for most builtin... Nguyễn Thái Ngọc Duy Sat, 24 Mar 2018 20:35:22 +0000 (21:35 +0100)

completion: add --option completion for most builtin commands

Many builtin commands use parseopt which can expose the option list
via --git-completion-helper but do not have explicit support in
git-completion.bash. This patch detects those commands and uses
__gitcomp_builtin for option completion.

This does not pollute the command name completion though. "git <tab>"
will show you the same set as before. This only kicks in when you type
the correct command name.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: factor out _git_xxx calling codeNguyễn Thái Ngọc Duy Sat, 24 Mar 2018 20:35:21 +0000 (21:35 +0100)

completion: factor out _git_xxx calling code

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: mention the oldest version we need to supportNguyễn Thái Ngọc Duy Sat, 24 Mar 2018 20:35:20 +0000 (21:35 +0100)

completion: mention the oldest version we need to support

This is more of a note for git-completion.bash contributors, not
users. The bash version is from MacOS [1]. Most Linux distros should
be 4.x at this point.

[1] https://public-inbox.org/git/%3CCAPig+cQXT1ov4MjzSzqiLBzr4wN1XcP7aSxMP+_dhtWtYwhDAA@mail.gmail.com%3E/

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git.c: add hidden option --list-parseopt-builtinsNguyễn Thái Ngọc Duy Sat, 24 Mar 2018 20:35:19 +0000 (21:35 +0100)

git.c: add hidden option --list-parseopt-builtins

This is another step to help automate git-completion.bash. This option
gives a list of all builtin commands that do use parse_options(),
which supports another hidden option --git-completion-helper. The
output is prepared for easy consumption by git-completion.bash and
separates items by spaces instead of \n

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git.c: move cmd_struct declaration upNguyễn Thái Ngọc Duy Sat, 24 Mar 2018 20:35:18 +0000 (21:35 +0100)

git.c: move cmd_struct declaration up

In a later patch we need access to one of these command option
constants near the top of this file. Move this block up so we will be
able to access the command options.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_name: use bsearch_pack() in unique_in_pack()René Scharfe Sat, 24 Mar 2018 16:41:08 +0000 (17:41 +0100)

sha1_name: use bsearch_pack() in unique_in_pack()

Replace the custom binary search in unique_in_pack() with a call to
bsearch_pack(). This reduces code duplication and makes use of the
fan-out table of packs.

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

rebase: remove merges_option and a blank lineWink Saville Fri, 23 Mar 2018 21:25:29 +0000 (14:25 -0700)

rebase: remove merges_option and a blank line

merges_option is unused in git_rebase__interactive and always empty in
git_rebase__interactive__preserve_merges so it can be removed.

Signed-off-by: Wink Saville <wink@saville.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rebase: remove unused code paths from git_rebase__inter... Wink Saville Fri, 23 Mar 2018 21:25:28 +0000 (14:25 -0700)

rebase: remove unused code paths from git_rebase__interactive__preserve_merges

Since git_rebase__interactive__preserve_merges is now always called with
$preserve_merges = t we can remove the unused code paths.

Signed-off-by: Wink Saville <wink@saville.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rebase: remove unused code paths from git_rebase__inter... Wink Saville Fri, 23 Mar 2018 21:25:27 +0000 (14:25 -0700)

rebase: remove unused code paths from git_rebase__interactive

Since git_rebase__interactive is now never called with
$preserve_merges = t we can remove those code paths.

Signed-off-by: Wink Saville <wink@saville.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rebase: add and use git_rebase__interactive__preserve_m... Wink Saville Fri, 23 Mar 2018 21:25:26 +0000 (14:25 -0700)

rebase: add and use git_rebase__interactive__preserve_merges

At the moment it's an exact copy of git_rebase__interactive except
the name has changed.

Signed-off-by: Wink Saville <wink@saville.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rebase: extract functions out of git_rebase__interactiveWink Saville Fri, 23 Mar 2018 21:25:25 +0000 (14:25 -0700)

rebase: extract functions out of git_rebase__interactive

The extracted functions are:
- initiate_action
- setup_reflog_action
- init_basic_state
- init_revisions_and_shortrevisions
- complete_action

Used by git_rebase__interactive

Signed-off-by: Wink Saville <wink@saville.com>
Helped-by: Junio C Hamano <gitster@pobox.com>
Helped-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rebase: reindent function git_rebase__interactiveWink Saville Fri, 23 Mar 2018 21:25:24 +0000 (14:25 -0700)

rebase: reindent function git_rebase__interactive

Signed-off-by: Wink Saville <wink@saville.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rebase: update invocation of rebase dot-sourced scriptsWink Saville Fri, 23 Mar 2018 21:25:23 +0000 (14:25 -0700)

rebase: update invocation of rebase dot-sourced scripts

Due to historical reasons, the backend scriptlets for "git rebase"
are structured a bit unusually. As originally designed,
dot-sourcing them from "git rebase" was sufficient to invoke the
specific backend.

However, it was later discovered that some shell implementations
(e.g. FreeBSD 9.x) misbehaved by continuing to execute statements
following a top-level "return" rather than returning control to
the next statement in "git rebase" after dot-sourcing the
scriptlet. To work around this shortcoming, the whole body of
git-rebase--$backend.sh was made into a shell function
git_rebase__$backend, and then the very last line of the scriptlet
called that function.

A more normal architecture is for a dot-sourced scriptlet merely
to define functions (thus acting as a function library), and for
those functions to be called by the script doing the dot-sourcing.
Migrate to this arrangement by moving the git_rebase__$backend
call from the end of a scriptlet into "git rebase" itself.

While at it, remove the large comment block from each scriptlet
explaining this historic anomaly since it serves no purpose under
the new normalized architecture in which a scriptlet is merely a
function library.

Signed-off-by: Wink Saville <wink@saville.com>
Helped-by: Junio C Hamano <gitster@pobox.com>
Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'nd/remove-ignore-env-field' into nextJunio C Hamano Fri, 23 Mar 2018 18:34:41 +0000 (11:34 -0700)

Merge branch 'nd/remove-ignore-env-field' into next

Code clean-up for the "repository" abstraction.

* nd/remove-ignore-env-field:
repository.h: add comment and clarify repo_set_gitdir

Merge branch 'nd/parseopt-completion' into nextJunio C Hamano Fri, 23 Mar 2018 18:34:40 +0000 (11:34 -0700)

Merge branch 'nd/parseopt-completion' into next

Hotfix for recently graduated topic that give help to completion
scripts from the Git subcommands that are being completed

* nd/parseopt-completion:
t9902: disable test on the list of merge-strategies under GETTEXT_POISON

t9902: disable test on the list of merge-strategies... Junio C Hamano Fri, 23 Mar 2018 17:40:06 +0000 (10:40 -0700)

t9902: disable test on the list of merge-strategies under GETTEXT_POISON

The code to learn the list of merge strategies from the output of
"git merge -s help" forces C locale, so that it can notice the
message shown to indicate where the list starts in the output.

However, GETTEXT_POISON build corrupts its output even when run in
the C locale, and we cannot expect this test to succeed.

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

repository.h: add comment and clarify repo_set_gitdirNguyễn Thái Ngọc Duy Fri, 23 Mar 2018 15:55:23 +0000 (16:55 +0100)

repository.h: add comment and clarify repo_set_gitdir

The argument name "optional" may mislead the reader to think this
option could be NULL. But it can't be. While at there, document a bit
more about struct set_gitdir_args.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rebase-interactive: simplify pick_on_preserving_mergesWink Saville Fri, 23 Mar 2018 04:39:52 +0000 (21:39 -0700)

rebase-interactive: simplify pick_on_preserving_merges

Use compound if statement instead of nested if statements to
simplify pick_on_preserving_merges.

Signed-off-by: Wink Saville <wink@saville.com>
Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with masterJunio C Hamano Thu, 22 Mar 2018 21:38:28 +0000 (14:38 -0700)

Sync with master

* master:
Git 2.16.3

Sync with Git 2.16.3Junio C Hamano Thu, 22 Mar 2018 21:36:51 +0000 (14:36 -0700)

Sync with Git 2.16.3

Merge branch 'ps/contains-id-error-message' into nextJunio C Hamano Thu, 22 Mar 2018 21:34:21 +0000 (14:34 -0700)

Merge branch 'ps/contains-id-error-message' into next

"git tag --contains no-such-commit" gave a full list of options
after giving an error message.

* ps/contains-id-error-message:
parse-options: do not show usage upon invalid option value

Merge branch 'tg/stash-untracked-with-pathspec-fix... Junio C Hamano Thu, 22 Mar 2018 21:34:20 +0000 (14:34 -0700)

Merge branch 'tg/stash-untracked-with-pathspec-fix' into next

"git stash push -u -- <pathspec>" gave an unnecessary and confusing
error message when there was no tracked files that match the
<pathspec>, which has been fixed.

* tg/stash-untracked-with-pathspec-fix:
stash: drop superfluos pathspec parameter

Merge branch 'nd/parseopt-completion' into nextJunio C Hamano Thu, 22 Mar 2018 21:34:19 +0000 (14:34 -0700)

Merge branch 'nd/parseopt-completion' into next

Hotfix for recently graduated topic that give help to completion
scripts from the Git subcommands that are being completed

* nd/parseopt-completion:
completion: clear cached --options when sourcing the completion script

Git 2.16.3 v2.16.3Junio C Hamano Thu, 22 Mar 2018 21:24:45 +0000 (14:24 -0700)

Git 2.16.3

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

Merge branch 'ms/non-ascii-ticks' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:25 +0000 (14:24 -0700)

Merge branch 'ms/non-ascii-ticks' into maint

Doc markup fix.

* ms/non-ascii-ticks:
Documentation/gitsubmodules.txt: avoid non-ASCII apostrophes

Merge branch 'jk/cached-commit-buffer' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:25 +0000 (14:24 -0700)

Merge branch 'jk/cached-commit-buffer' into maint

Code clean-up.

* jk/cached-commit-buffer:
revision: drop --show-all option
commit: drop uses of get_cached_commit_buffer()

Merge branch 'sm/mv-dry-run-update' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:25 +0000 (14:24 -0700)

Merge branch 'sm/mv-dry-run-update' into maint

Code clean-up.

* sm/mv-dry-run-update:
mv: remove unneeded 'if (!show_only)'
t7001: add test case for --dry-run

Merge branch 'tg/worktree-create-tracking' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:24 +0000 (14:24 -0700)

Merge branch 'tg/worktree-create-tracking' into maint

Hotfix for a recent topic.

* tg/worktree-create-tracking:
git-worktree.txt: fix indentation of example and text of 'add' command
git-worktree.txt: fix missing ")" typo

Merge branch 'gs/test-unset-xdg-cache-home' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:24 +0000 (14:24 -0700)

Merge branch 'gs/test-unset-xdg-cache-home' into maint

Test update.

* gs/test-unset-xdg-cache-home:
test-lib.sh: unset XDG_CACHE_HOME

Merge branch 'sb/status-doc-fix' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:23 +0000 (14:24 -0700)

Merge branch 'sb/status-doc-fix' into maint

Docfix.

* sb/status-doc-fix:
Documentation/git-status: clarify status table for porcelain mode

Merge branch 'rd/typofix' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:22 +0000 (14:24 -0700)

Merge branch 'rd/typofix' into maint

Typofix.

* rd/typofix:
Correct mispellings of ".gitmodule" to ".gitmodules"
t/: correct obvious typo "detahced"

Merge branch 'bp/fsmonitor' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:21 +0000 (14:24 -0700)

Merge branch 'bp/fsmonitor' into maint

Doc update for a recently added feature.

* bp/fsmonitor:
fsmonitor: update documentation to remove reference to invalid config settings

Merge branch 'bc/doc-interpret-trailers-grammofix'... Junio C Hamano Thu, 22 Mar 2018 21:24:21 +0000 (14:24 -0700)

Merge branch 'bc/doc-interpret-trailers-grammofix' into maint

Docfix.

* bc/doc-interpret-trailers-grammofix:
docs/interpret-trailers: fix agreement error

Merge branch 'sg/doc-test-must-fail-args' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:19 +0000 (14:24 -0700)

Merge branch 'sg/doc-test-must-fail-args' into maint

Devdoc update.

* sg/doc-test-must-fail-args:
t: document 'test_must_fail ok=<signal-name>'

Merge branch 'rj/sparse-updates' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:19 +0000 (14:24 -0700)

Merge branch 'rj/sparse-updates' into maint

Devtool update.

* rj/sparse-updates:
Makefile: suppress a sparse warning for pack-revindex.c
config.mak.uname: remove SPARSE_FLAGS setting for cygwin

Merge branch 'jk/gettext-poison' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:18 +0000 (14:24 -0700)

Merge branch 'jk/gettext-poison' into maint

Test updates.

* jk/gettext-poison:
git-sh-i18n: check GETTEXT_POISON before USE_GETTEXT_SCHEME
t0205: drop redundant test

Merge branch 'nd/ignore-glob-doc-update' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:18 +0000 (14:24 -0700)

Merge branch 'nd/ignore-glob-doc-update' into maint

Doc update.

* nd/ignore-glob-doc-update:
gitignore.txt: elaborate shell glob syntax

Merge branch 'rs/cocci-strbuf-addf-to-addstr' into... Junio C Hamano Thu, 22 Mar 2018 21:24:17 +0000 (14:24 -0700)

Merge branch 'rs/cocci-strbuf-addf-to-addstr' into maint

* rs/cocci-strbuf-addf-to-addstr:
cocci: simplify check for trivial format strings

Merge branch 'jc/worktree-add-short-help' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:17 +0000 (14:24 -0700)

Merge branch 'jc/worktree-add-short-help' into maint

Error message fix.

* jc/worktree-add-short-help:
worktree: say that "add" takes an arbitrary commit in short-help

Merge branch 'tz/doc-show-defaults-to-head' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:17 +0000 (14:24 -0700)

Merge branch 'tz/doc-show-defaults-to-head' into maint

Doc update.

* tz/doc-show-defaults-to-head:
doc: mention 'git show' defaults to HEAD

Merge branch 'nd/shared-index-fix' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:16 +0000 (14:24 -0700)

Merge branch 'nd/shared-index-fix' into maint

Code clean-up.

* nd/shared-index-fix:
read-cache: don't write index twice if we can't write shared index
read-cache.c: move tempfile creation/cleanup out of write_shared_index
read-cache.c: change type of "temp" in write_shared_index()

Merge branch 'jc/mailinfo-cleanup-fix' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:16 +0000 (14:24 -0700)

Merge branch 'jc/mailinfo-cleanup-fix' into maint

Corner case bugfix.

* jc/mailinfo-cleanup-fix:
mailinfo: avoid segfault when can't open files

Merge branch 'rb/hashmap-h-compilation-fix' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:15 +0000 (14:24 -0700)

Merge branch 'rb/hashmap-h-compilation-fix' into maint

Code clean-up.

* rb/hashmap-h-compilation-fix:
hashmap.h: remove unused variable

Merge branch 'rs/describe-unique-abbrev' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:14 +0000 (14:24 -0700)

Merge branch 'rs/describe-unique-abbrev' into maint

Code clean-up.

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

Merge branch 'ks/submodule-doc-updates' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:13 +0000 (14:24 -0700)

Merge branch 'ks/submodule-doc-updates' into maint

Doc updates.

* ks/submodule-doc-updates:
Doc/git-submodule: improve readability and grammar of a sentence
Doc/gitsubmodules: make some changes to improve readability and syntax

Merge branch 'cl/t9001-cleanup' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:13 +0000 (14:24 -0700)

Merge branch 'cl/t9001-cleanup' into maint

Test clean-up.

* cl/t9001-cleanup:
t9001: use existing helper in send-email test

Merge branch 'bw/oidmap-autoinit' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:12 +0000 (14:24 -0700)

Merge branch 'bw/oidmap-autoinit' into maint

Code clean-up.

* bw/oidmap-autoinit:
oidmap: ensure map is initialized

Merge branch 'sg/test-i18ngrep' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:12 +0000 (14:24 -0700)

Merge branch 'sg/test-i18ngrep' into maint

Test fixes.

* sg/test-i18ngrep:
t: make 'test_i18ngrep' more informative on failure
t: validate 'test_i18ngrep's parameters
t: move 'test_i18ncmp' and 'test_i18ngrep' to 'test-lib-functions.sh'
t5536: let 'test_i18ngrep' read the file without redirection
t5510: consolidate 'grep' and 'test_i18ngrep' patterns
t4001: don't run 'git status' upstream of a pipe
t6022: don't run 'git merge' upstream of a pipe
t5812: add 'test_i18ngrep's missing filename parameter
t5541: add 'test_i18ngrep's missing filename parameter

Merge branch 'jt/fsck-code-cleanup' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:12 +0000 (14:24 -0700)

Merge branch 'jt/fsck-code-cleanup' into maint

Plug recently introduced leaks in fsck.

* jt/fsck-code-cleanup:
fsck: fix leak when traversing trees

Merge branch 'ew/svn-branch-segfault-fix' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:11 +0000 (14:24 -0700)

Merge branch 'ew/svn-branch-segfault-fix' into maint

Workaround for segfault with more recent versions of SVN.

* ew/svn-branch-segfault-fix:
git-svn: control destruction order to avoid segfault

Merge branch 'nd/list-merge-strategy' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:11 +0000 (14:24 -0700)

Merge branch 'nd/list-merge-strategy' into maint

Completion of "git merge -s<strategy>" (in contrib/) did not work
well in non-C locale.

* nd/list-merge-strategy:
completion: fix completing merge strategies on non-C locales

Merge branch 'jk/daemon-fixes' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:10 +0000 (14:24 -0700)

Merge branch 'jk/daemon-fixes' into maint

Assorted fixes to "git daemon".

* jk/daemon-fixes:
daemon: fix length computation in newline stripping
t/lib-git-daemon: add network-protocol helpers
daemon: handle NULs in extended attribute string
daemon: fix off-by-one in logging extended attributes
t/lib-git-daemon: record daemon log
t5570: use ls-remote instead of clone for interp tests

Merge branch 'tg/split-index-fixes' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:10 +0000 (14:24 -0700)

Merge branch 'tg/split-index-fixes' into maint

The split-index mode had a few corner case bugs fixed.

* tg/split-index-fixes:
travis: run tests with GIT_TEST_SPLIT_INDEX
split-index: don't write cache tree with null oid entries
read-cache: fix reading the shared index for other repos

Merge branch 'mr/packed-ref-store-fix' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:10 +0000 (14:24 -0700)

Merge branch 'mr/packed-ref-store-fix' into maint

Crash fix for a corner case where an error codepath tried to unlock
what it did not acquire lock on.

* mr/packed-ref-store-fix:
files_initial_transaction_commit(): only unlock if locked

Merge branch 'jt/http-redact-cookies' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:09 +0000 (14:24 -0700)

Merge branch 'jt/http-redact-cookies' into maint

The http tracing code, often used to debug connection issues,
learned to redact potentially sensitive information from its output
so that it can be more safely sharable.

* jt/http-redact-cookies:
http: support omitting data from traces
http: support cookie redaction when tracing

Merge branch 'nd/diff-flush-before-warning' into maintJunio C Hamano Thu, 22 Mar 2018 21:24:09 +0000 (14:24 -0700)

Merge branch 'nd/diff-flush-before-warning' into maint

Avoid showing a warning message in the middle of a line of "git
diff" output.

* nd/diff-flush-before-warning:
diff.c: flush stdout before printing rename warnings

Merge branch 'sg/travis-build-during-script-phase'... Junio C Hamano Thu, 22 Mar 2018 21:24:08 +0000 (14:24 -0700)

Merge branch 'sg/travis-build-during-script-phase' into maint

Build the executable in 'script' phase in Travis CI integration, to
follow the established practice, rather than during 'before_script'
phase. This allows the CI categorize the failures better ('failed'
is project's fault, 'errored' is build environment's).

* sg/travis-build-during-script-phase:
travis-ci: build Git during the 'script' phase

parse-options: do not show usage upon invalid option... Paul-Sebastian Ungureanu Thu, 22 Mar 2018 18:43:51 +0000 (20:43 +0200)

parse-options: do not show usage upon invalid option value

Usually, the usage should be shown only if the user does not know what
options are available. If the user specifies an invalid value, the user
is already aware of the available options. In this case, there is no
point in displaying the usage anymore.

This patch applies to "git tag --contains", "git branch --contains",
"git branch --points-at", "git for-each-ref --contains" and many more.

Signed-off-by: Paul-Sebastian Ungureanu <ungureanupaulsebastian@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_name: use bsearch_pack() for abbreviationsDerrick Stolee Thu, 22 Mar 2018 17:40:10 +0000 (13:40 -0400)

sha1_name: use bsearch_pack() for abbreviations

When computing abbreviation lengths for an object ID against a single
packfile, the method find_abbrev_len_for_pack() currently implements
binary search. This is one of several implementations. One issue with
this implementation is that it ignores the fanout table in the pack-
index.

Translate this binary search to use the existing bsearch_pack() method
that correctly uses a fanout table.

Due to the use of the fanout table, the abbreviation computation is
slightly faster than before. For a fully-repacked copy of the Linux
repo, the following 'git log' commands improved:

* git log --oneline --parents --raw
Before: 59.2s
After: 56.9s
Rel %: -3.8%

* git log --oneline --parents
Before: 6.48s
After: 5.91s
Rel %: -8.9%

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

packfile: define and use bsearch_pack()Derrick Stolee Thu, 22 Mar 2018 17:40:09 +0000 (13:40 -0400)

packfile: define and use bsearch_pack()

The method bsearch_hash() generalizes binary searches using a
fanout table. The only consumer is currently find_pack_entry_one().
It requires a bit of pointer arithmetic to align the fanout table
and the lookup table depending on the pack-index version.

Extract the pack-index pointer arithmetic to a new method,
bsearch_pack(), so this can be re-used in other code paths.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_name: convert struct min_abbrev_data to object_idbrian m. carlson Thu, 22 Mar 2018 17:40:08 +0000 (13:40 -0400)

sha1_name: convert struct min_abbrev_data to object_id

This structure is only written to in one place, where we already have a
struct object_id. Convert the struct to use a struct object_id instead.

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

completion: clear cached --options when sourcing the... SZEDER Gábor Thu, 22 Mar 2018 14:16:04 +0000 (15:16 +0100)

completion: clear cached --options when sourcing the completion script

The established way to update the completion script in an already
running shell is to simply source it again: this brings in any new
--options and features, and clears caching variables. E.g. it clears
the variables caching the list of (all|porcelain) git commands, so
when they are later lazy-initialized again, then they will list and
cache any newly installed commmands as well.

Unfortunately, since d401f3debc (git-completion.bash: introduce
__gitcomp_builtin, 2018-02-09) and subsequent patches this doesn't
work for a lot of git commands' options. To eliminate a lot of
hard-to-maintain hard-coded lists of options, those commits changed
the completion script to use a bunch of programmatically created and
lazy-initialized variables to cache the options of those builtin
porcelain commands that use parse-options. These variables are not
cleared upon sourcing the completion script, therefore they continue
caching the old lists of options, even when some commands recently
learned new options or when deprecated options were removed.

Always 'unset' these variables caching the options of builtin commands
when sourcing the completion script.

Redirect 'unset's stderr to /dev/null, because ZSH's 'unset' complains
if it's invoked without any arguments, i.e. no variables caching
builtin's options are set. This can happen, if someone were to source
the completion script twice without completing any --options in
between. Bash stays silent in this case.

Add tests to ensure that these variables are indeed cleared when the
completion script is sourced; not just the variables caching options,
but all other caching variables, i.e. the variables caching commands,
porcelain commands and merge strategies as well.

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

stash: drop superfluos pathspec parameterThomas Gummerer Wed, 21 Mar 2018 21:53:10 +0000 (21:53 +0000)

stash: drop superfluos pathspec parameter

Since 833622a945 ("stash push: avoid printing errors", 2018-03-19) we
don't use the 'git clean' call for the pathspec case anymore. The
commit however forgot to remove the pathspec argument to the call.
Remove the superfluos argument to make the code a little more obvious.

Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with v2.17-rc1Junio C Hamano Wed, 21 Mar 2018 19:04:04 +0000 (12:04 -0700)

Sync with v2.17-rc1

Git 2.17-rc1 v2.17.0-rc1Junio C Hamano Wed, 21 Mar 2018 19:02:04 +0000 (12:02 -0700)

Git 2.17-rc1

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

Merge branch 'tg/stash-untracked-with-pathspec-fix... Junio C Hamano Wed, 21 Mar 2018 18:35:02 +0000 (11:35 -0700)

Merge branch 'tg/stash-untracked-with-pathspec-fix' into next

"git stash push -u -- <pathspec>" gave an unnecessary and confusing
error message when there was no tracked files that match the
<pathspec>, which has been fixed.

* tg/stash-untracked-with-pathspec-fix:
stash push -u: don't create empty stash
stash push: avoid printing errors
stash: fix nonsense pipeline

Merge branch 'jk/attributes-path-doc'Junio C Hamano Wed, 21 Mar 2018 18:30:15 +0000 (11:30 -0700)

Merge branch 'jk/attributes-path-doc'

Doc update.

* jk/attributes-path-doc:
doc/gitattributes: mention non-recursive behavior

Merge branch 'rj/warning-uninitialized-fix'Junio C Hamano Wed, 21 Mar 2018 18:30:15 +0000 (11:30 -0700)

Merge branch 'rj/warning-uninitialized-fix'

Compilation fix.

* rj/warning-uninitialized-fix:
read-cache: fix an -Wmaybe-uninitialized warning
-Wuninitialized: remove some 'init-self' workarounds

Merge branch 'tz/complete-tag-delete-tagname'Junio C Hamano Wed, 21 Mar 2018 18:30:15 +0000 (11:30 -0700)

Merge branch 'tz/complete-tag-delete-tagname'

* tz/complete-tag-delete-tagname:
completion: complete tags with git tag --delete/--verify

Merge branch 'ml/filter-branch-portability-fix'Junio C Hamano Wed, 21 Mar 2018 18:30:14 +0000 (11:30 -0700)

Merge branch 'ml/filter-branch-portability-fix'

Shell script portability fix.

* ml/filter-branch-portability-fix:
filter-branch: use printf instead of echo -e

Merge branch 'js/ming-strftime'Junio C Hamano Wed, 21 Mar 2018 18:30:14 +0000 (11:30 -0700)

Merge branch 'js/ming-strftime'

* js/ming-strftime:
mingw: abort on invalid strftime formats

Merge branch 'dp/merge-strategy-doc-fix'Junio C Hamano Wed, 21 Mar 2018 18:30:13 +0000 (11:30 -0700)

Merge branch 'dp/merge-strategy-doc-fix'

Doc fix.

* dp/merge-strategy-doc-fix:
Documentation/merge-strategies: typofix

Merge branch 'tz/relnotes-1.7-on-perl'Junio C Hamano Wed, 21 Mar 2018 18:30:12 +0000 (11:30 -0700)

Merge branch 'tz/relnotes-1.7-on-perl'

* tz/relnotes-1.7-on-perl:
RelNotes: add details on Perl module changes

Merge branch 'rj/http-code-cleanup'Junio C Hamano Wed, 21 Mar 2018 18:30:12 +0000 (11:30 -0700)

Merge branch 'rj/http-code-cleanup'

There was an unused file-scope static variable left in http.c when
building for versions of libCURL that is older than 7.19.4, which
has been fixed.

* rj/http-code-cleanup:
http: fix an unused variable warning for 'curl_no_proxy'

Merge branch 'ks/t3200-typofix'Junio C Hamano Wed, 21 Mar 2018 18:30:12 +0000 (11:30 -0700)

Merge branch 'ks/t3200-typofix'

Test typofix.

* ks/t3200-typofix:
t/t3200: fix a typo in a test description

Merge branch 'jt/transfer-fsck-with-promissor'Junio C Hamano Wed, 21 Mar 2018 18:30:11 +0000 (11:30 -0700)

Merge branch 'jt/transfer-fsck-with-promissor'

The transfer.fsckobjects configuration tells "git fetch" to
validate the data and connected-ness of objects in the received
pack; the code to perform this check has been taught about the
narrow clone's convention that missing objects that are reachable
from objects in a pack that came from a promissor remote is OK.

* jt/transfer-fsck-with-promissor:
fetch-pack: do not check links for partial fetch
index-pack: support checking objects but not links

Merge branch 'bp/refresh-cache-ent-rehash-fix'Junio C Hamano Wed, 21 Mar 2018 18:30:11 +0000 (11:30 -0700)

Merge branch 'bp/refresh-cache-ent-rehash-fix'

The codepath to replace an existing entry in the index had a bug in
updating the name hash structure, which has been fixed.

* bp/refresh-cache-ent-rehash-fix:
Fix bugs preventing adding updated cache entries to the name hash

Merge branch 'jh/fsck-promisors'Junio C Hamano Wed, 21 Mar 2018 18:30:10 +0000 (11:30 -0700)

Merge branch 'jh/fsck-promisors'

A hotfix to a topic that graduated recently.

* jh/fsck-promisors:
sha1_file: restore OBJECT_INFO_QUICK functionality

Merge branch 'ma/skip-writing-unchanged-index'Junio C Hamano Wed, 21 Mar 2018 18:30:10 +0000 (11:30 -0700)

Merge branch 'ma/skip-writing-unchanged-index'

Internal API clean-up to allow write_locked_index() optionally skip
writing the in-core index when it is not modified.

* ma/skip-writing-unchanged-index:
write_locked_index(): add flag to avoid writing unchanged index