gitweb.git
Merge branch 'nd/diff-parseopt-2'Junio C Hamano Thu, 7 Mar 2019 00:59:58 +0000 (09:59 +0900)

Merge branch 'nd/diff-parseopt-2'

Second batch to teach the diff machinery to use the parse-options
API.

* nd/diff-parseopt-2: (21 commits)
diff-parseopt: convert --ignore-some-changes
diff-parseopt: convert --[no-]minimal
diff-parseopt: convert --relative
diff-parseopt: convert --no-renames|--[no--rename-empty
diff-parseopt: convert --find-copies-harder
diff-parseopt: convert -C|--find-copies
diff-parseopt: convert -D|--irreversible-delete
diff-parseopt: convert -M|--find-renames
diff-parseopt: convert -B|--break-rewrites
diff-parseopt: convert --output-*
diff-parseopt: convert --[no-]compact-summary
diff-parseopt: convert --stat*
diff-parseopt: convert -s|--no-patch
diff-parseopt: convert --name-status
diff-parseopt: convert --name-only
diff-parseopt: convert --patch-with-stat
diff-parseopt: convert --summary
diff-parseopt: convert --check
diff-parseopt: convert --dirstat and friends
diff-parseopt: convert --numstat and --shortstat
...

Merge branch 'en/merge-options-doc'Junio C Hamano Thu, 7 Mar 2019 00:59:58 +0000 (09:59 +0900)

Merge branch 'en/merge-options-doc'

Doc update.

* en/merge-options-doc:
merge-options.txt: correct wording of --no-commit option

Merge branch 'nd/completion-more-parameters'Junio C Hamano Thu, 7 Mar 2019 00:59:57 +0000 (09:59 +0900)

Merge branch 'nd/completion-more-parameters'

The command line completion (in contrib/) has been taught to
complete more subcommand parameters.

* nd/completion-more-parameters:
completion: add more parameter value completion

Merge branch 'ab/receive-pack-use-after-free-fix'Junio C Hamano Thu, 7 Mar 2019 00:59:57 +0000 (09:59 +0900)

Merge branch 'ab/receive-pack-use-after-free-fix'

Memfix.

* ab/receive-pack-use-after-free-fix:
receive-pack: fix use-after-free bug

Merge branch 'dl/doc-submodule-wo-subcommand'Junio C Hamano Thu, 7 Mar 2019 00:59:57 +0000 (09:59 +0900)

Merge branch 'dl/doc-submodule-wo-subcommand'

Doc update.

* dl/doc-submodule-wo-subcommand:
submodule: document default behavior

Merge branch 'jk/unused-params'Junio C Hamano Thu, 7 Mar 2019 00:59:56 +0000 (09:59 +0900)

Merge branch 'jk/unused-params'

Code clean-up.

* jk/unused-params:
ref-filter: drop unused "sz" parameters
ref-filter: drop unused "obj" parameters
ref-filter: drop unused buf/sz pairs
files-backend: drop refs parameter from split_symref_update()
pack-objects: drop unused parameter from oe_map_new_pack()
merge-recursive: drop several unused parameters
diff: drop complete_rewrite parameter from run_external_diff()
diff: drop unused emit data parameter from sane_truncate_line()
diff: drop unused color reset parameters
diff: drop options parameter from diffcore_fix_diff_index()

Merge branch 'jk/prune-optim'Junio C Hamano Thu, 7 Mar 2019 00:59:56 +0000 (09:59 +0900)

Merge branch 'jk/prune-optim'

"git prune" has been taught to take advantage of reachability
bitmap when able.

* jk/prune-optim:
t5304: rename "sha1" variables to "oid"
prune: check SEEN flag for reachability
prune: use bitmaps for reachability traversal
prune: lazily perform reachability traversal

Merge branch 'jh/trace2'Junio C Hamano Thu, 7 Mar 2019 00:59:56 +0000 (09:59 +0900)

Merge branch 'jh/trace2'

A more structured way to obtain execution trace has been added.

* jh/trace2:
trace2: add for_each macros to clang-format
trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh
trace2:data: add subverb for rebase
trace2:data: add subverb to reset command
trace2:data: add subverb to checkout command
trace2:data: pack-objects: add trace2 regions
trace2:data: add trace2 instrumentation to index read/write
trace2:data: add trace2 hook classification
trace2:data: add trace2 transport child classification
trace2:data: add trace2 sub-process classification
trace2:data: add editor/pager child classification
trace2:data: add trace2 regions to wt-status
trace2: collect Windows-specific process information
trace2: create new combined trace facility
trace2: Documentation/technical/api-trace2.txt

Merge branch 'js/doc-symref-in-proto-v1'Junio C Hamano Thu, 7 Mar 2019 00:59:56 +0000 (09:59 +0900)

Merge branch 'js/doc-symref-in-proto-v1'

Doc update.

* js/doc-symref-in-proto-v1:
protocol-capabilities.txt: document symref

Merge branch 'nd/split-index-null-base-fix'Junio C Hamano Thu, 7 Mar 2019 00:59:56 +0000 (09:59 +0900)

Merge branch 'nd/split-index-null-base-fix'

Split-index fix.

* nd/split-index-null-base-fix:
read-cache.c: fix writing "link" index ext with null base oid

Merge branch 'rj/prune-packed-excess-args'Junio C Hamano Thu, 7 Mar 2019 00:59:55 +0000 (09:59 +0900)

Merge branch 'rj/prune-packed-excess-args'

"git prune-packed" did not notice and complain against excess
arguments given from the command line, which now it does.

* rj/prune-packed-excess-args:
prune-packed: check for too many arguments

Merge branch 'jc/test-yes-doc'Junio C Hamano Thu, 7 Mar 2019 00:59:54 +0000 (09:59 +0900)

Merge branch 'jc/test-yes-doc'

Test doc update.

* jc/test-yes-doc:
test: caution on our version of 'yes'

Merge branch 'en/combined-all-paths'Junio C Hamano Thu, 7 Mar 2019 00:59:54 +0000 (09:59 +0900)

Merge branch 'en/combined-all-paths'

Output from "diff --cc" did not show the original paths when the
merge involved renames. A new option adds the paths in the
original trees to the output.

* en/combined-all-paths:
log,diff-tree: add --combined-all-paths option

Merge branch 'sc/pack-redundant'Junio C Hamano Thu, 7 Mar 2019 00:59:54 +0000 (09:59 +0900)

Merge branch 'sc/pack-redundant'

Update the implementation of pack-redundant for performance in a
repository with many packfiles.

* sc/pack-redundant:
pack-redundant: consistent sort method
pack-redundant: rename pack_list.all_objects
pack-redundant: new algorithm to find min packs
pack-redundant: delete redundant code
pack-redundant: delay creation of unique_objects
t5323: test cases for git-pack-redundant

Merge branch 'du/branch-show-current'Junio C Hamano Thu, 7 Mar 2019 00:59:53 +0000 (09:59 +0900)

Merge branch 'du/branch-show-current'

"git branch" learned a new subcommand "--show-current".

* du/branch-show-current:
branch: introduce --show-current display option

Merge branch 'dl/complete-submodule-absorbgitdirs'Junio C Hamano Thu, 7 Mar 2019 00:59:53 +0000 (09:59 +0900)

Merge branch 'dl/complete-submodule-absorbgitdirs'

Command-line completion (in contrib/) learned to tab-complete the
"git submodule absorbgitdirs" subcommand.

* dl/complete-submodule-absorbgitdirs:
completion: complete git submodule absorbgitdirs

Merge branch 'wh/author-committer-ident-config'Junio C Hamano Thu, 7 Mar 2019 00:59:53 +0000 (09:59 +0900)

Merge branch 'wh/author-committer-ident-config'

Four new configuration variables {author,committer}.{name,email}
have been introduced to override user.{name,email} in more specific
cases.

* wh/author-committer-ident-config:
config: allow giving separate author and committer idents

Merge branch 'aw/pretty-trailers'Junio C Hamano Thu, 7 Mar 2019 00:59:52 +0000 (09:59 +0900)

Merge branch 'aw/pretty-trailers'

The %(trailers) formatter in "git log --format=..." now allows to
optionally pick trailers selectively by keyword, show only values,
etc.

* aw/pretty-trailers:
pretty: add support for separator option in %(trailers)
strbuf: separate callback for strbuf_expand:ing literals
pretty: add support for "valueonly" option in %(trailers)
pretty: allow showing specific trailers
pretty: single return path in %(trailers) handling
pretty: allow %(trailers) options with explicit value
doc: group pretty-format.txt placeholders descriptions

Merge branch 'nd/diff-parseopt'Junio C Hamano Thu, 7 Mar 2019 00:59:52 +0000 (09:59 +0900)

Merge branch 'nd/diff-parseopt'

The diff machinery, one of the oldest parts of the system, which
long predates the parse-options API, uses fairly long and complex
handcrafted option parser. This is being rewritten to use the
parse-options API.

* nd/diff-parseopt:
diff.c: convert --raw
diff.c: convert -W|--[no-]function-context
diff.c: convert -U|--unified
diff.c: convert -u|-p|--patch
diff.c: prepare to use parse_options() for parsing
diff.h: avoid bit fields in struct diff_flags
diff.h: keep forward struct declarations sorted
parse-options: allow ll_callback with OPTION_CALLBACK
parse-options: avoid magic return codes
parse-options: stop abusing 'callback' for lowlevel callbacks
parse-options: add OPT_BITOP()
parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
parse-options: add one-shot mode
parse-options.h: remove extern on function prototypes

Merge branch 'tg/checkout-no-overlay'Junio C Hamano Thu, 7 Mar 2019 00:59:51 +0000 (09:59 +0900)

Merge branch 'tg/checkout-no-overlay'

"git checkout --no-overlay" can be used to trigger a new mode of
checking out paths out of the tree-ish, that allows paths that
match the pathspec that are in the current index and working tree
and are not in the tree-ish.

* tg/checkout-no-overlay:
revert "checkout: introduce checkout.overlayMode config"
checkout: introduce checkout.overlayMode config
checkout: introduce --{,no-}overlay option
checkout: factor out mark_cache_entry_for_checkout function
checkout: clarify comment
read-cache: add invalidate parameter to remove_marked_cache_entries
entry: support CE_WT_REMOVE flag in checkout_entry
entry: factor out unlink_entry function
move worktree tests to t24*

Merge tag 'l10n-2.21.0-rnd2.1' of git://github.com... Junio C Hamano Tue, 5 Mar 2019 12:53:10 +0000 (21:53 +0900)

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

L10n for Git 2.21.0 round 2.1

* tag 'l10n-2.21.0-rnd2.1' of git://github.com/git-l10n/git-po:
l10n: Fixes to Catalan translation
l10n: Updated Vietnamese translation for v2.21 rd2
l10n: fr.po remove obsolete entries

l10n: Fixes to Catalan translationJordi Mas Sat, 2 Mar 2019 18:12:58 +0000 (19:12 +0100)

l10n: Fixes to Catalan translation

Signed-off-by: Jordi Mas <jmas@softcatala.org>

l10n: Updated Vietnamese translation for v2.21 rd2Tran Ngoc Quan Tue, 26 Feb 2019 07:50:59 +0000 (14:50 +0700)

l10n: Updated Vietnamese translation for v2.21 rd2

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

l10n: fr.po remove obsolete entriesJean-Noël Avila Mon, 25 Feb 2019 21:11:15 +0000 (22:11 +0100)

l10n: fr.po remove obsolete entries

On NetBSD, the version of msgfmt is still 0.14.4. There's no hope for
an upgrade due to some GPLv3 allergy of NetBSD's. This version chokes
on heavily decorated commented entries in po files. It's safer to get
rid of all these obsolete entries.

Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>

Git 2.21 v2.21.0Junio C Hamano Sun, 24 Feb 2019 15:55:19 +0000 (07:55 -0800)

Git 2.21

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

Merge branch 'yn/checkout-doc-fix'Junio C Hamano Sun, 24 Feb 2019 15:18:00 +0000 (07:18 -0800)

Merge branch 'yn/checkout-doc-fix'

Doc fix.

* yn/checkout-doc-fix:
checkout doc: fix an unmatched double-quote pair

Merge tag 'l10n-2.21.0-rnd2' of git://github.com/git... Junio C Hamano Sun, 24 Feb 2019 15:03:39 +0000 (07:03 -0800)

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

l10n-2.21.0-rnd2

* tag 'l10n-2.21.0-rnd2' of git://github.com/git-l10n/git-po:
l10n: bg.po: Updated Bulgarian translation (4363t)
l10n: update German translation
l10n: zh_CN: Revision for git v2.21.0 l10n
l10n: zh_CN: for git v2.21.0 l10n round 1~2
l10n: bg.po: correct typo
l10n: Update Swedish translation (4363t0f0u)
l10n: de.po: fix grammar in message for tag.c
l10n: de.po: fix a message for index-pack.c
l10n: de.po: consistent translation of 'root commit'
l10n: it: update the Italian translation
l10n: es: 2.21.0 round 2
l10n: el: add Greek l10n team and essential translations
l10n: fr.po v2.21.0 rnd 2
l10n: fr.po Fix some typos from round3
l10n: fr.po Fix some typos
l10n: Fixes to Catalan translation
l10n: git.pot: v2.21.0 round 2 (3 new, 3 removed)
l10n: git.pot: v2.21.0 round 1 (214 new, 38 removed)
l10n: zh_CN: fix typo of submodule init message
l10n: Update Catalan translation

README: adjust for final Azure Pipeline IDJohannes Schindelin Sat, 23 Feb 2019 14:49:23 +0000 (06:49 -0800)

README: adjust for final Azure Pipeline ID

During the six months of development of the Azure Pipelines support, the
patches went through quite a few iterations of changes, and to test
those iterations, a temporary build definition was used.

In the meantime, Azure Pipelines support made it to `master`, and we now
have a regular Azure Pipeline, installed via the common GitHub App
workflow. This new pipeline has a different name (git.git instead of
test-git.git), and a new ID (11 instead of 2).

Let's adjust the badge in our README to reflect that final shape of the
Azure Pipeline.

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

checkout doc: fix an unmatched double-quote pairYoichi Nakayama Sat, 23 Feb 2019 06:33:40 +0000 (15:33 +0900)

checkout doc: fix an unmatched double-quote pair

Signed-off-by: Yoichi Nakayama <yoichi.nakayama@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: bg.po: Updated Bulgarian translation (4363t)Alexander Shopov Sat, 23 Feb 2019 16:39:07 +0000 (18:39 +0200)

l10n: bg.po: Updated Bulgarian translation (4363t)

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

Merge branch 'ab/bsd-fixes'Junio C Hamano Sat, 23 Feb 2019 05:20:19 +0000 (21:20 -0800)

Merge branch 'ab/bsd-fixes'

Test portability fix.

* ab/bsd-fixes:
commit-graph tests: fix unportable "dd" invocation
tests: fix unportable "\?" and "\+" regex syntax

Merge branch 'ab/workaround-dash-bug-in-test'Junio C Hamano Sat, 23 Feb 2019 05:20:19 +0000 (21:20 -0800)

Merge branch 'ab/workaround-dash-bug-in-test'

* ab/workaround-dash-bug-in-test:
tests: avoid syntax triggering old dash bug

trace2: add for_each macros to clang-formatJeff Hostetler Fri, 22 Feb 2019 22:25:11 +0000 (14:25 -0800)

trace2: add for_each macros to clang-format

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.shJeff Hostetler Fri, 22 Feb 2019 22:25:10 +0000 (14:25 -0800)

trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh

Create unit tests for Trace2.

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

trace2:data: add subverb for rebaseJeff Hostetler Fri, 22 Feb 2019 22:25:10 +0000 (14:25 -0800)

trace2:data: add subverb for rebase

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

trace2:data: add subverb to reset commandJeff Hostetler Fri, 22 Feb 2019 22:25:09 +0000 (14:25 -0800)

trace2:data: add subverb to reset command

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

trace2:data: add subverb to checkout commandJeff Hostetler Fri, 22 Feb 2019 22:25:08 +0000 (14:25 -0800)

trace2:data: add subverb to checkout command

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

trace2:data: pack-objects: add trace2 regionsDerrick Stolee Fri, 22 Feb 2019 22:25:07 +0000 (14:25 -0800)

trace2:data: pack-objects: add trace2 regions

When studying the performance of 'git push' we would like to know
how much time is spent at various parts of the command. One area
that could cause performance trouble is 'git pack-objects'.

Add trace2 regions around the three main actions taken in this
command:

1. Enumerate objects.
2. Prepare pack.
3. Write pack-file.

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

trace2:data: add trace2 instrumentation to index read... Jeff Hostetler Fri, 22 Feb 2019 22:25:07 +0000 (14:25 -0800)

trace2:data: add trace2 instrumentation to index read/write

Add trace2 events to measure reading and writing the index.

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

trace2:data: add trace2 hook classificationJeff Hostetler Fri, 22 Feb 2019 22:25:06 +0000 (14:25 -0800)

trace2:data: add trace2 hook classification

Classify certain child processes as hooks.

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

trace2:data: add trace2 transport child classificationJeff Hostetler Fri, 22 Feb 2019 22:25:05 +0000 (14:25 -0800)

trace2:data: add trace2 transport child classification

Add trace2 child classification for transport processes.

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

trace2:data: add trace2 sub-process classificationJeff Hostetler Fri, 22 Feb 2019 22:25:05 +0000 (14:25 -0800)

trace2:data: add trace2 sub-process classification

Add trace2 classification for long-running processes
started in sub-process.c

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

trace2:data: add editor/pager child classificationJeff Hostetler Fri, 22 Feb 2019 22:25:04 +0000 (14:25 -0800)

trace2:data: add editor/pager child classification

Add trace2 process classification for editor and pager
child processes.

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

trace2:data: add trace2 regions to wt-statusJeff Hostetler Fri, 22 Feb 2019 22:25:03 +0000 (14:25 -0800)

trace2:data: add trace2 regions to wt-status

Add trace2_region_enter() and trace2_region_leave() calls around the
various phases of a status scan. This gives elapsed time for each
phase in the GIT_TR2_PERF and GIT_TR2_EVENT trace target.

Also, these Trace2 calls now use s->repo rather than the_repository.

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

trace2: collect Windows-specific process informationJeff Hostetler Fri, 22 Feb 2019 22:25:02 +0000 (14:25 -0800)

trace2: collect Windows-specific process information

Add platform-specific interface to log information about the current
process.

On Windows, this interface is used to indicate whether the git process
is running under a debugger and list names of the process ancestors.

Information for other platforms is left for a future effort.

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

trace2: create new combined trace facilityJeff Hostetler Fri, 22 Feb 2019 22:25:01 +0000 (14:25 -0800)

trace2: create new combined trace facility

Create a new unified tracing facility for git. The eventual intent is to
replace the current trace_printf* and trace_performance* routines with a
unified set of git_trace2* routines.

In addition to the usual printf-style API, trace2 provides higer-level
event verbs with fixed-fields allowing structured data to be written.
This makes post-processing and analysis easier for external tools.

Trace2 defines 3 output targets. These are set using the environment
variables "GIT_TR2", "GIT_TR2_PERF", and "GIT_TR2_EVENT". These may be
set to "1" or to an absolute pathname (just like the current GIT_TRACE).

* GIT_TR2 is intended to be a replacement for GIT_TRACE and logs command
summary data.

* GIT_TR2_PERF is intended as a replacement for GIT_TRACE_PERFORMANCE.
It extends the output with columns for the command process, thread,
repo, absolute and relative elapsed times. It reports events for
child process start/stop, thread start/stop, and per-thread function
nesting.

* GIT_TR2_EVENT is a new structured format. It writes event data as a
series of JSON records.

Calls to trace2 functions log to any of the 3 output targets enabled
without the need to call different trace_printf* or trace_performance*
routines.

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

trace2: Documentation/technical/api-trace2.txtJeff Hostetler Fri, 22 Feb 2019 22:25:00 +0000 (14:25 -0800)

trace2: Documentation/technical/api-trace2.txt

Created design document for Trace2 feature.

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

commit-graph tests: fix unportable "dd" invocationÆvar Arnfjörð Bjarmason Thu, 21 Feb 2019 19:28:49 +0000 (20:28 +0100)

commit-graph tests: fix unportable "dd" invocation

Change an unportable invocation of "dd" with count=0, that wanted to
truncate the commit-graph file. In POSIX it is unspecified what
happens when count=0 is provided[1]. The NetBSD "dd" behavior
differs from GNU (and seemingly other BSDs), which has left this test
broken since d2b86fbaa1 ("commit-graph: fix buffer read-overflow",
2019-01-15).

Copying from /dev/null would seek/truncate to seek=$zero_pos and
stop immediately after that (without being able to copy anything),
which is the right way to truncate the file.

1. http://pubs.opengroup.org/onlinepubs/9699919799/utilities/dd.html

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Helped-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'master' of https://github.com/ralfth... Jiang Xin Fri, 22 Feb 2019 14:18:12 +0000 (22:18 +0800)

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

l10n: update German translationRalf Thielow Fri, 22 Feb 2019 07:45:40 +0000 (08:45 +0100)

l10n: update German translation

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Reviewed-by: Matthias Rüster <matthias.ruester@gmail.com>

tests: fix unportable "\?" and "\+" regex syntaxÆvar Arnfjörð Bjarmason Thu, 21 Feb 2019 19:28:48 +0000 (20:28 +0100)

tests: fix unportable "\?" and "\+" regex syntax

Fix widely supported but non-POSIX basic regex syntax introduced in
[1] and [2]. On GNU, NetBSD and FreeBSD the following works:

$ echo xy >f
$ grep 'xy\?' f; echo $?
xy
0

The same goes for "\+". The "?" and "+" syntax is not in the BRE
syntax, just in ERE, but on some implementations it can be invoked by
prefixing the meta-operator with "\", but not on OpenBSD:

$ uname -a
OpenBSD obsd.my.domain 6.2 GENERIC#132 amd64
$ grep --version
grep version 0.9
$ grep 'xy\?' f; echo $?
1

Let's fix this by moving to ERE syntax instead, where "?" and "+" are
universally supported:

$ grep -E 'xy?' f; echo $?
xy
0

1. 2ed5c8e174 ("describe: setup working tree for --dirty", 2019-02-03)
2. c801170b0c ("t6120: test for describe with a bare repository",
2019-02-03)

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

diff-parseopt: convert --ignore-some-changesNguyễn Thái Ngọc Duy Thu, 21 Feb 2019 11:16:21 +0000 (18:16 +0700)

diff-parseopt: convert --ignore-some-changes

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

diff-parseopt: convert --[no-]minimalNguyễn Thái Ngọc Duy Thu, 21 Feb 2019 11:16:20 +0000 (18:16 +0700)

diff-parseopt: convert --[no-]minimal

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

diff-parseopt: convert --relativeNguyễn Thái Ngọc Duy Thu, 21 Feb 2019 11:16:19 +0000 (18:16 +0700)

diff-parseopt: convert --relative

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

diff-parseopt: convert --no-renames|--[no--rename-emptyNguyễn Thái Ngọc Duy Thu, 21 Feb 2019 11:16:18 +0000 (18:16 +0700)

diff-parseopt: convert --no-renames|--[no--rename-empty

For --rename-empty, see 90d43b0768 (teach diffcore-rename to
optionally ignore empty content - 2012-03-22) for more information.

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

diff-parseopt: convert --find-copies-harderNguyễn Thái Ngọc Duy Thu, 21 Feb 2019 11:16:17 +0000 (18:16 +0700)

diff-parseopt: convert --find-copies-harder

--no-find-copies-harder is also added on purpose (because I don't see
why we should not have the --no- version for this)

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

diff-parseopt: convert -C|--find-copiesNguyễn Thái Ngọc Duy Thu, 21 Feb 2019 11:16:16 +0000 (18:16 +0700)

diff-parseopt: convert -C|--find-copies

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

diff-parseopt: convert -D|--irreversible-deleteNguyễn Thái Ngọc Duy Thu, 21 Feb 2019 11:16:15 +0000 (18:16 +0700)

diff-parseopt: convert -D|--irreversible-delete

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

diff-parseopt: convert -M|--find-renamesNguyễn Thái Ngọc Duy Thu, 21 Feb 2019 11:16:14 +0000 (18:16 +0700)

diff-parseopt: convert -M|--find-renames

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

diff-parseopt: convert -B|--break-rewritesNguyễn Thái Ngọc Duy Thu, 21 Feb 2019 11:16:13 +0000 (18:16 +0700)

diff-parseopt: convert -B|--break-rewrites

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

diff-parseopt: convert --output-*Nguyễn Thái Ngọc Duy Thu, 21 Feb 2019 11:16:12 +0000 (18:16 +0700)

diff-parseopt: convert --output-*

This also validates that the user specifies a single character in
--output-indicator-*, not a string.

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

diff-parseopt: convert --[no-]compact-summaryNguyễn Thái Ngọc Duy Thu, 21 Feb 2019 11:16:11 +0000 (18:16 +0700)

diff-parseopt: convert --[no-]compact-summary

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

diff-parseopt: convert --stat*Nguyễn Thái Ngọc Duy Thu, 21 Feb 2019 11:16:10 +0000 (18:16 +0700)

diff-parseopt: convert --stat*

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

diff-parseopt: convert -s|--no-patchNguyễn Thái Ngọc Duy Thu, 21 Feb 2019 11:16:09 +0000 (18:16 +0700)

diff-parseopt: convert -s|--no-patch

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

diff-parseopt: convert --name-statusNguyễn Thái Ngọc Duy Thu, 21 Feb 2019 11:16:08 +0000 (18:16 +0700)

diff-parseopt: convert --name-status

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

diff-parseopt: convert --name-onlyNguyễn Thái Ngọc Duy Thu, 21 Feb 2019 11:16:07 +0000 (18:16 +0700)

diff-parseopt: convert --name-only

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

diff-parseopt: convert --patch-with-statNguyễn Thái Ngọc Duy Thu, 21 Feb 2019 11:16:06 +0000 (18:16 +0700)

diff-parseopt: convert --patch-with-stat

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

diff-parseopt: convert --summaryNguyễn Thái Ngọc Duy Thu, 21 Feb 2019 11:16:05 +0000 (18:16 +0700)

diff-parseopt: convert --summary

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

diff-parseopt: convert --checkNguyễn Thái Ngọc Duy Thu, 21 Feb 2019 11:16:04 +0000 (18:16 +0700)

diff-parseopt: convert --check

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

diff-parseopt: convert --dirstat and friendsNguyễn Thái Ngọc Duy Thu, 21 Feb 2019 11:16:03 +0000 (18:16 +0700)

diff-parseopt: convert --dirstat and friends

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

protocol-capabilities.txt: document symrefJosh Steadmon Wed, 20 Feb 2019 00:32:26 +0000 (16:32 -0800)

protocol-capabilities.txt: document symref

In 7171d8c15f ("upload-pack: send symbolic ref information as
capability"), we added a symref capability to the pack protocol, but it
was never documented. Adapt the patch notes from that commit and add
them to the capabilities documentation.

While we're at it, add a disclaimer to the top of
protocol-capabilities.txt noting that the doc only applies to v0/v1 of
the wire protocol.

Signed-off-by: Josh Steadmon <steadmon@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

merge-options.txt: correct wording of --no-commit optionElijah Newren Thu, 21 Feb 2019 17:50:29 +0000 (09:50 -0800)

merge-options.txt: correct wording of --no-commit option

The former wording implied that --no-commit would always cause the
merge operation to "pause" and allow the user to make further changes
and/or provide a special commit message for the merge commit. This
is not the case for fast-forward merges, as there is no merge commit
to create. Without a merge commit, there is no place where it makes
sense to "stop the merge and allow the user to tweak changes"; doing
that would require a full rebase of some sort.

Since users may be unaware of whether their branches have diverged or
not, modify the wording to correctly address fast-forward cases as well
and suggest using --no-ff with --no-commit if the point is to ensure
that the merge stops before completing.

Reported-by: Ulrich Windl <Ulrich.Windl@rz.uni-regensburg.de>
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

receive-pack: fix use-after-free bugÆvar Arnfjörð Bjarmason Wed, 20 Feb 2019 00:00:33 +0000 (01:00 +0100)

receive-pack: fix use-after-free bug

The resolve_ref_unsafe() function can, and sometimes will in the case
of this codepath, return the char * passed to it to the caller. In
this case we construct a strbuf, free it, and then continue using the
dst_name after that free().

The code being fixed dates back to da3efdb17b ("receive-pack: detect
aliased updates which can occur with symrefs", 2010-04-19). When it
was originally added it didn't have this bug, it was introduced when
it was subsequently modified to use strbuf in 6b01ecfe22 ("ref
namespaces: Support remote repositories via upload-pack and
receive-pack", 2011-07-08).

This is theoretically a security issue, the C standard makes no
guarantees that a value you use after free() hasn't been poked at or
changed by something else on the system, but in practice modern OSs
will have mapped the relevant page to this process, so nothing else
would have used it. We do no further allocations between the free()
and use-after-free, so we ourselves didn't corrupt or change the
value.

Jeff investigated that and found: "It probably would be an issue if
the allocation were larger. glibc at least will use mmap()/munmap()
after some cutoff[1], in which case we'd get a segfault from hitting
the unmapped page. But for small allocations, it just bumps brk() and
the memory is still available for further allocations after
free(). [...] If you had a sufficiently large refname you might be
able to trigger the bug [...]. I tried to push such a ref. I had to
manually make a packed-refs file with the long name to avoid
filesystem limits (though probably you could have a long a/b/c/ name
on ext4). But the result can't actually be pushed, because it all has
to fit into a 64k pkt-line as part of the push protocol.".

An a alternative and more succinct way of implementing this would have
been to do the strbuf_release() at the end of check_aliased_update()
and use "goto out" instead of the early "return" statements. Hopefully
this approach of using a helper instead makes it easier to follow.

1. Jeff: "Weirdly, the mmap() cutoff on my glibc system is 135168
bytes. Which is...2^17 + 2^12? 33 pages? I'm sure there's a good
reason for that, but I didn't dig into it."

Reported-by: 王健强 <jianqiang.wang@securitygossip.com>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff-parseopt: convert --numstat and --shortstatNguyễn Thái Ngọc Duy Sat, 16 Feb 2019 11:36:36 +0000 (18:36 +0700)

diff-parseopt: convert --numstat and --shortstat

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

diff-parseopt: convert --patch-with-rawNguyễn Thái Ngọc Duy Sat, 16 Feb 2019 11:36:35 +0000 (18:36 +0700)

diff-parseopt: convert --patch-with-raw

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

completion: add more parameter value completionNguyễn Thái Ngọc Duy Sat, 16 Feb 2019 11:24:41 +0000 (18:24 +0700)

completion: add more parameter value completion

This adds value completion for a couple more paramters. To make it
easier to maintain these hard coded lists, add a comment at the original
list/code to remind people to update git-completion.bash too.

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

Merge branch 'bg-submodule-helper-typo' of github.com... Jiang Xin Wed, 20 Feb 2019 13:40:54 +0000 (21:40 +0800)

Merge branch 'bg-submodule-helper-typo' of github.com:pclouds/git-po

l10n: zh_CN: Revision for git v2.21.0 l10nFangyi Zhou Mon, 11 Feb 2019 11:28:55 +0000 (11:28 +0000)

l10n: zh_CN: Revision for git v2.21.0 l10n

Signed-off-by: Fangyi Zhou <fangyi.zhou@yuriko.moe>

l10n: zh_CN: for git v2.21.0 l10n round 1~2Jiang Xin Tue, 20 Nov 2018 02:18:06 +0000 (10:18 +0800)

l10n: zh_CN: for git v2.21.0 l10n round 1~2

Translate 214 new messages (4363t0f0u) for git 2.21.0.

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

l10n: bg.po: correct typoNguyễn Thái Ngọc Duy Wed, 20 Feb 2019 09:59:24 +0000 (16:59 +0700)

l10n: bg.po: correct typo

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

l10n: Update Swedish translation (4363t0f0u)Peter Krefting Mon, 11 Feb 2019 21:34:05 +0000 (22:34 +0100)

l10n: Update Swedish translation (4363t0f0u)

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

Git 2.21-rc2 v2.21.0-rc2Junio C Hamano Tue, 19 Feb 2019 21:20:23 +0000 (13:20 -0800)

Git 2.21-rc2

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

Merge branch 'js/test-tool-gen-nuls'Junio C Hamano Tue, 19 Feb 2019 21:18:08 +0000 (13:18 -0800)

Merge branch 'js/test-tool-gen-nuls'

* js/test-tool-gen-nuls:
tests: teach the test-tool to generate NUL bytes and use it

Merge branch 'mk/t5562-no-input-to-too-large-an-input... Junio C Hamano Tue, 19 Feb 2019 21:18:08 +0000 (13:18 -0800)

Merge branch 'mk/t5562-no-input-to-too-large-an-input-test'

* mk/t5562-no-input-to-too-large-an-input-test:
t5562: do not depend on /dev/zero
Revert "t5562: replace /dev/zero with a pipe from generate_zero_bytes"

Merge branch 'mk/t5562-do-not-reuse-output-files'Junio C Hamano Tue, 19 Feb 2019 21:18:08 +0000 (13:18 -0800)

Merge branch 'mk/t5562-do-not-reuse-output-files'

* mk/t5562-do-not-reuse-output-files:
t5562: do not reuse output files

t5562: do not reuse output filesMax Kirillov Sat, 24 Nov 2018 09:37:19 +0000 (11:37 +0200)

t5562: do not reuse output files

Some expected failures of git-http-backend leaves running its children
(receive-pack or upload-pack) which still hold opened descriptors
to act.err and with some probability they live long enough to write
there their failure messages after next test has already truncated
the files. This causes occasional failures of the test script.

Avoid the issue by using separated output and error file for each test,
apprending the test number to their name.

Reported-by: Carlo Arenas <carenas@gmail.com>
Helped-by: Carlo Arenas <carenas@gmail.com>
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Max Kirillov <max@max630.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

tests: teach the test-tool to generate NUL bytes and... Johannes Schindelin Thu, 14 Feb 2019 21:33:12 +0000 (13:33 -0800)

tests: teach the test-tool to generate NUL bytes and use it

In cc95bc2025 (t5562: replace /dev/zero with a pipe from
generate_zero_bytes, 2019-02-09), we replaced usage of /dev/zero (which
is not available on NonStop, apparently) by a Perl script snippet to
generate NUL bytes.

Sadly, it does not seem to work on NonStop, as t5562 reportedly hangs.

Worse, this also hangs in the Ubuntu 16.04 agents of the CI builds on
Azure Pipelines: for some reason, the Perl script snippet that is run
via `generate_zero_bytes` in t5562's 'CONTENT_LENGTH overflow ssite_t'
test case tries to write out an infinite amount of NUL bytes unless a
broken pipe is encountered, that snippet never encounters the broken
pipe, and keeps going until the build times out.

Oddly enough, this does not reproduce on the Windows and macOS agents,
nor in a local Ubuntu 18.04.

This developer tried for a day to figure out the exact circumstances
under which this hang happens, to no avail, the details remain a
mystery.

In the end, though, what counts is that this here change incidentally
fixes that hang (maybe also on NonStop?). Even more positively, it gets
rid of yet another unnecessary Perl invocation.

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

t5562: do not depend on /dev/zeroMax Kirillov Fri, 15 Feb 2019 16:42:37 +0000 (18:42 +0200)

t5562: do not depend on /dev/zero

It was reported [1] that NonStop platform does not have /dev/zero.

The test uses /dev/zero as a dummy input. Passing case (http-backed
failed because of too big input size) should not be reading anything
from it. If http-backend would erroneously try to read any data
returning EOF probably would be even safer than providing some
meaningless data.

Replace /dev/zero with /dev/null to avoid issues with platforms which do
not have /dev/zero.

[1] https://public-inbox.org/git/20190209185930.5256-4-randall.s.becker@rogers.com/

Reported-by: Randall S. Becker <rsbecker@nexbridge.com>
Signed-off-by: Max Kirillov <max@max630.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Revert "t5562: replace /dev/zero with a pipe from gener... Junio C Hamano Tue, 19 Feb 2019 18:18:15 +0000 (10:18 -0800)

Revert "t5562: replace /dev/zero with a pipe from generate_zero_bytes"

Revert cc95bc20 ("t5562: replace /dev/zero with a pipe from
generate_zero_bytes", 2019-02-09), as not feeding anything to the
command is a better way to test it.

l10n: de.po: fix grammar in message for tag.cSebastian Staudt Sun, 3 Feb 2019 10:33:39 +0000 (11:33 +0100)

l10n: de.po: fix grammar in message for tag.c

Signed-off-by: Sebastian Staudt <koraktor@gmail.com>

l10n: de.po: fix a message for index-pack.cSebastian Staudt Sun, 3 Feb 2019 10:32:20 +0000 (11:32 +0100)

l10n: de.po: fix a message for index-pack.c

Signed-off-by: Sebastian Staudt <koraktor@gmail.com>

l10n: de.po: consistent translation of 'root commit'Sebastian Staudt Sun, 3 Feb 2019 10:21:14 +0000 (11:21 +0100)

l10n: de.po: consistent translation of 'root commit'

'root commit' is usually translated as 'Root-Commit'. But in one
occasion it‘s translated as 'Basis-Commit' which is the translation
for 'base commit'.

Signed-off-by: Sebastian Staudt <koraktor@gmail.com>

l10n: it: update the Italian translationAlessandro Menti Sun, 17 Feb 2019 17:04:51 +0000 (18:04 +0100)

l10n: it: update the Italian translation

Signed-off-by: Alessandro Menti <alessandro.menti@alessandromenti.it>

Merge branch 'master' of https://github.com/Softcatala... Jiang Xin Sun, 17 Feb 2019 07:28:15 +0000 (15:28 +0800)

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

l10n: es: 2.21.0 round 2Christopher Diaz Riveros Wed, 6 Feb 2019 13:36:53 +0000 (08:36 -0500)

l10n: es: 2.21.0 round 2

Signed-off-by: Christopher Diaz Riveros <chrisadr@gentoo.org>

Merge branch 'fr_2.21.0_rnd2' of git://github.com/jnavi... Jiang Xin Sat, 16 Feb 2019 01:54:53 +0000 (09:54 +0800)

Merge branch 'fr_2.21.0_rnd2' of git://github.com/jnavila/git

l10n: el: add Greek l10n team and essential translationsJimmy Angelakos Fri, 15 Feb 2019 02:28:19 +0000 (02:28 +0000)

l10n: el: add Greek l10n team and essential translations

Signed-off-by: Jimmy Angelakos <vyruss@hellug.gr>

l10n: fr.po v2.21.0 rnd 2Jean-Noël Avila Wed, 13 Feb 2019 19:35:13 +0000 (20:35 +0100)

l10n: fr.po v2.21.0 rnd 2

Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>

l10n: fr.po Fix some typos from round3Fabien Villepinte Thu, 20 Dec 2018 08:59:45 +0000 (09:59 +0100)

l10n: fr.po Fix some typos from round3

Signed-off-by: Fabien Villepinte <fabien.villepinte@gmail.com>

l10n: fr.po Fix some typosFabien Villepinte Mon, 17 Dec 2018 11:51:58 +0000 (12:51 +0100)

l10n: fr.po Fix some typos

Signed-off-by: Fabien Villepinte <fabien.villepinte@gmail.com>