]> granicus.if.org Git - git/log
git
5 years agoMerge branch 'en/fast-imexport-nested-tags' into next
Junio C Hamano [Mon, 7 Oct 2019 02:42:13 +0000 (11:42 +0900)]
Merge branch 'en/fast-imexport-nested-tags' into next

Updates to fast-import/export.

* en/fast-imexport-nested-tags:
  fast-export: handle nested tags
  t9350: add tests for tags of things other than a commit
  fast-export: allow user to request tags be marked with --mark-tags
  fast-export: add support for --import-marks-if-exists
  fast-import: add support for new 'alias' command
  fast-import: allow tags to be identified by mark labels
  fast-import: fix handling of deleted tags
  fast-export: fix exporting a tag and nothing else

5 years agoMerge branch 'js/azure-pipelines-msvc' into next
Junio C Hamano [Mon, 7 Oct 2019 02:42:13 +0000 (11:42 +0900)]
Merge branch 'js/azure-pipelines-msvc' into next

CI updates.

* js/azure-pipelines-msvc:
  ci: also build and test with MS Visual Studio on Azure Pipelines
  ci: really use shallow clones on Azure Pipelines
  tests: let --immediate and --write-junit-xml play well together
  test-tool run-command: learn to run (parts of) the testsuite
  vcxproj: include more generated files
  vcxproj: only copy `git-remote-http.exe` once it was built
  msvc: work around a bug in GetEnvironmentVariable()
  msvc: handle DEVELOPER=1
  msvc: ignore some libraries when linking
  compat/win32/path-utils.h: add #include guards
  winansi: use FLEX_ARRAY to avoid compiler warning
  msvc: avoid using minus operator on unsigned types
  push: do not pretend to return `int` from `die_push_simple()`

5 years agoMerge branch 'rs/dedup-includes' into next
Junio C Hamano [Mon, 7 Oct 2019 02:42:13 +0000 (11:42 +0900)]
Merge branch 'rs/dedup-includes' into next

Code cleanup.

* rs/dedup-includes:
  treewide: remove duplicate #include directives

5 years agoMerge branch 'gs/commit-graph-trace-with-cmd' into next
Junio C Hamano [Mon, 7 Oct 2019 02:42:12 +0000 (11:42 +0900)]
Merge branch 'gs/commit-graph-trace-with-cmd' into next

Dev support.

* gs/commit-graph-trace-with-cmd:
  commit-graph: emit trace2 cmd_mode for each sub-command

5 years agoMerge branch 'js/fetch-jobs' into next
Junio C Hamano [Mon, 7 Oct 2019 02:42:12 +0000 (11:42 +0900)]
Merge branch 'js/fetch-jobs' into next

"git fetch --jobs=<n>" allowed <n> parallel jobs when fetching
submodules, but this did not apply to "git fetch --multiple" that
fetches from multiple remote repositories.  It now does.

* js/fetch-jobs:
  fetch: let --jobs=<n> parallelize --multiple, too

5 years agoSync with master
Junio C Hamano [Sun, 6 Oct 2019 03:28:17 +0000 (12:28 +0900)]
Sync with master

* master:
  Fifth batch

5 years agoFifth batch
Junio C Hamano [Sun, 6 Oct 2019 03:25:51 +0000 (12:25 +0900)]
Fifth batch

Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoMerge branch 'cb/skip-utf8-check-with-pcre1'
Junio C Hamano [Sun, 6 Oct 2019 03:25:17 +0000 (12:25 +0900)]
Merge branch 'cb/skip-utf8-check-with-pcre1'

Make sure the grep machinery does not abort when seeing a payload
that is not UTF-8 even when JIT is not in use with PCRE1.

* cb/skip-utf8-check-with-pcre1:
  grep: skip UTF8 checks explicitly

5 years agoMerge branch 'ma/user-manual-markup-update'
Junio C Hamano [Sun, 6 Oct 2019 03:25:16 +0000 (12:25 +0900)]
Merge branch 'ma/user-manual-markup-update'

The markup used in user-manual has been updated to work better with
asciidoctor.

* ma/user-manual-markup-update:
  user-manual.txt: render ASCII art correctly under Asciidoctor
  asciidoctor-extensions.rb: handle "book" doctype in linkgit
  user-manual.txt: change header notation
  user-manual.txt: add missing section label

5 years agoMerge branch 'bc/doc-use-docbook-5'
Junio C Hamano [Sun, 6 Oct 2019 03:25:16 +0000 (12:25 +0900)]
Merge branch 'bc/doc-use-docbook-5'

Start using DocBook 5 (instead of DocBook 4.5) as Asciidoctor 2.0
no longer works with the older one.

* bc/doc-use-docbook-5:
  Documentation: fix build with Asciidoctor 2

5 years agoMerge branch 'ma/asciidoctor-more-fixes'
Junio C Hamano [Sun, 6 Oct 2019 03:25:16 +0000 (12:25 +0900)]
Merge branch 'ma/asciidoctor-more-fixes'

Doc formatting updates.

* ma/asciidoctor-more-fixes:
  gitweb.conf.txt: switch pluses to backticks to help Asciidoctor
  git-merge-index.txt: wrap shell listing in "----"
  git-receive-pack.txt: wrap shell [script] listing in "----"
  git-ls-remote.txt: wrap shell listing in "----"
  Documentation: wrap config listings in "----"
  git-merge-base.txt: render indentations correctly under Asciidoctor
  Documentation: wrap blocks with "--"

5 years agoMerge branch 'ma/asciidoctor-refmiscinfo'
Junio C Hamano [Sun, 6 Oct 2019 03:25:15 +0000 (12:25 +0900)]
Merge branch 'ma/asciidoctor-refmiscinfo'

Update support for Asciidoctor documentation toolchain.

* ma/asciidoctor-refmiscinfo:
  doc-diff: replace --cut-header-footer with --cut-footer
  asciidoctor-extensions: provide `<refmiscinfo/>`
  Doc/Makefile: give mansource/-version/-manual attributes

5 years agoMerge branch 'am/mailmap-andrey-mazo'
Junio C Hamano [Sun, 6 Oct 2019 03:25:15 +0000 (12:25 +0900)]
Merge branch 'am/mailmap-andrey-mazo'

* am/mailmap-andrey-mazo:
  .mailmap: update email address of Andrey Mazo

5 years agoMerge branch 'jc/git-gui-has-maintainer'
Junio C Hamano [Sun, 6 Oct 2019 03:25:15 +0000 (12:25 +0900)]
Merge branch 'jc/git-gui-has-maintainer'

* jc/git-gui-has-maintainer:
  SubmittingPatches: git-gui has a new maintainer

5 years agoci: also build and test with MS Visual Studio on Azure Pipelines
Johannes Schindelin [Fri, 4 Oct 2019 15:09:36 +0000 (08:09 -0700)]
ci: also build and test with MS Visual Studio on Azure Pipelines

... because we can, now. Technically, we actually build using `MSBuild`,
which is however pretty close to building interactively in Visual
Studio.

As there is no convenient way to run Git's test suite in Visual Studio,
we unpack a Portable Git to run it, using the just-added test helper to
allow running test scripts in parallel.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoci: really use shallow clones on Azure Pipelines
Johannes Schindelin [Fri, 4 Oct 2019 15:09:35 +0000 (08:09 -0700)]
ci: really use shallow clones on Azure Pipelines

This was a left-over from the previous YAML schema, and it no longer
works. The problem was noticed while editing `azure-pipelines.yml` in VS
Code with the very helpful "Azure Pipelines" extension (syntax
highlighting and intellisense for `azure-pipelines.yml`...).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agotests: let --immediate and --write-junit-xml play well together
Johannes Schindelin [Fri, 4 Oct 2019 15:09:34 +0000 (08:09 -0700)]
tests: let --immediate and --write-junit-xml play well together

When the `--immediate` option is in effect, any test failure will
immediately exit the test script. Together with `--write-junit-xml`, we
will want the JUnit-style `.xml` file to be finalized (and not leave the
XML incomplete). Let's make it so.

This comes in particularly handy when trying to debug via Azure
Pipelines, where the JUnit-style XML is consumed to present the test
results in an informative and helpful way.

While at it, also handle the `error()` code path.

The only remaining code path that sets `GIT_EXIT_OK` happens whenever
the trash directory could not be set up, i.e. long before the JUnit XML
was written, therefore we should _not_ try to finalize that XML in that
case.

It is tempting to change the `immediate` code path to just hand off to
`error`, simplifying the code in the process. That would, however,
result in a change of behavior (an additional error message) in the test
suite, which is outside of the purview of the current patch series: its
goal is to allow building Git with Visual Studio and testing it with a
portable version of Git for Windows.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agotest-tool run-command: learn to run (parts of) the testsuite
Johannes Schindelin [Fri, 4 Oct 2019 15:09:33 +0000 (08:09 -0700)]
test-tool run-command: learn to run (parts of) the testsuite

Git for Windows jumps through hoops to provide a development environment
that allows to build Git and to run its test suite. To that end, an
entire MSYS2 system, including GNU make and GCC is offered as "the Git
for Windows SDK". It does come at a price: an initial download of said
SDK weighs in with several hundreds of megabytes, and the unpacked SDK
occupies ~2GB of disk space.

A much more native development environment on Windows is Visual Studio.
To help contributors use that environment, we already have a Makefile
target `vcxproj` that generates a commit with project files (and other
generated files), and Git for Windows' `vs/master` branch is
continuously re-generated using that target.

The idea is to allow building Git in Visual Studio, and to run
individual tests using a Portable Git.

The one missing thing is a way to run the entire test suite: neither
`make` nor `prove` are required to run Git, therefore Git for Windows
does not support those commands in the Portable Git.

To help with that, add a simple test helper that exercises the
`run_processes_parallel()` function to allow for running test scripts in
parallel (which is really necessary, especially on Windows, as Git's
test suite takes such a long time to run).

This will also come in handy for the upcoming change to our Azure
Pipeline: we will use this helper in a Portable Git to test the Visual
Studio build of Git.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agovcxproj: include more generated files
Johannes Schindelin [Fri, 4 Oct 2019 15:09:32 +0000 (08:09 -0700)]
vcxproj: include more generated files

In the CI builds, we bundle all generated files into a so-called
artifacts `.tar` file, so that the test phase can fan out into multiple
parallel builds.

This patch makes sure that all files are included in the `vcxproj`
target which are needed for that artifacts `.tar` file.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agovcxproj: only copy `git-remote-http.exe` once it was built
Johannes Schindelin [Fri, 4 Oct 2019 15:09:31 +0000 (08:09 -0700)]
vcxproj: only copy `git-remote-http.exe` once it was built

In b18ae14a8f6 (vcxproj: also link-or-copy builtins, 2019-07-29), we
started to copy or hard-link the built-ins as a post-build step of the
`git` project.

At the same time, we tried to copy or hard-link `git-remote-http.exe`,
but it is quite possible that it was not built at that time.

Let's move that latter task into a post-install step of the
`git-remote-http` project instead.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agomsvc: work around a bug in GetEnvironmentVariable()
Johannes Schindelin [Fri, 4 Oct 2019 15:09:30 +0000 (08:09 -0700)]
msvc: work around a bug in GetEnvironmentVariable()

The return value of that function is 0 both for variables that are
unset, as well as for variables whose values are empty. To discern those
two cases, one has to call `GetLastError()`, whose return value is
`ERROR_ENVVAR_NOT_FOUND` and `ERROR_SUCCESS`, respectively.

Except that it is not actually set to `ERROR_SUCCESS` in the latter
case, apparently, but the last error value seems to be simply unchanged.

To work around this, let's just re-set the last error value just before
inspecting the environment variable.

This fixes a problem that triggers failures in t3301-notes.sh (where we
try to override config settings by passing empty values for certain
environment variables).

This problem is hidden in the MINGW build by the fact that older
MSVC runtimes (such as the one used by MINGW builds) have a `calloc()`
that re-sets the last error value in case of success, while newer
runtimes set the error value only if `NULL` is returned by that
function.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agomsvc: handle DEVELOPER=1
Johannes Schindelin [Fri, 4 Oct 2019 15:09:30 +0000 (08:09 -0700)]
msvc: handle DEVELOPER=1

We frequently build Git using the `DEVELOPER=1` make setting as a
shortcut to enable all kinds of more stringent compiler warnings.

Those compiler warnings are relatively specific to GCC, though, so let's
try our best to translate them to the equivalent options to pass to MS
Visual C++'s `cl.exe`.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agomsvc: ignore some libraries when linking
Johannes Schindelin [Fri, 4 Oct 2019 15:09:29 +0000 (08:09 -0700)]
msvc: ignore some libraries when linking

To build with MSVC, we "translate" GCC options to MSVC options, and part
of those options refer to the libraries to link into the final
executable. Currently, this part looks somewhat like this on Windows:

-lcurl -lnghttp2 -lidn2 -lssl -lcrypto -lssl -lcrypto -lgdi32
-lcrypt32 -lwldap32 -lz -lws2_32 -lexpat

Some of those are direct dependencies (such as curl and ssl) and others
are indirect (nghttp2 and idn2, for example, are dependencies of curl,
but need to be linked in for reasons).

We already handle the direct dependencies, e.g. `-liconv` is already
handled as adding `libiconv.lib` to the list of libraries to link
against.

Let's just ignore the remaining `-l*` options so that MSVC does not have
to warn us that it ignored e.g. the `/lnghttp2` option. We do that by
extending the clause that already "eats" the `-R*` options to also eat
the `-l*` options.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agocompat/win32/path-utils.h: add #include guards
Johannes Schindelin [Fri, 4 Oct 2019 15:09:28 +0000 (08:09 -0700)]
compat/win32/path-utils.h: add #include guards

This adds the common guards that allow headers to be #include'd multiple
times.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agowinansi: use FLEX_ARRAY to avoid compiler warning
Johannes Schindelin [Fri, 4 Oct 2019 15:09:27 +0000 (08:09 -0700)]
winansi: use FLEX_ARRAY to avoid compiler warning

MSVC would complain thusly:

    C4200: nonstandard extension used: zero-sized array in struct/union

Let's just use the `FLEX_ARRAY` constant that we introduced for exactly
this type of scenario.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agomsvc: avoid using minus operator on unsigned types
Johannes Schindelin [Fri, 4 Oct 2019 15:09:26 +0000 (08:09 -0700)]
msvc: avoid using minus operator on unsigned types

MSVC complains about this with `-Wall`, which can be taken as a sign
that this is indeed a real bug. The symptom is:

C4146: unary minus operator applied to unsigned type, result
still unsigned

Let's avoid this warning in the minimal way, e.g. writing `-1 -
<unsigned value>` instead of `-<unsigned value> - 1`.

Note that the change in the `estimate_cache_size()` function is
needed because MSVC considers the "return type" of the `sizeof()`
operator to be `size_t`, i.e. unsigned, and therefore it cannot be
negated using the unary minus operator.

Even worse, that arithmetic is doing extra work, in vain. We want to
calculate the entry extra cache size as the difference between the
size of the `cache_entry` structure minus the size of the
`ondisk_cache_entry` structure, padded to the appropriate alignment
boundary.

To that end, we start by assigning that difference to the `per_entry`
variable, and then abuse the `len` parameter of the
`align_padding_size()` macro to take the negative size of the ondisk
entry size. Essentially, we try to avoid passing the already calculated
difference to that macro by passing the operands of that difference
instead, when the macro expects operands of an addition:

#define align_padding_size(size, len) \
((size + (len) + 8) & ~7) - (size + len)

Currently, we pass A and -B to that macro instead of passing A - B and
0, where A - B is already stored in the `per_entry` variable, ready to
be used.

This is neither necessary, nor intuitive. Let's fix this, and have code
that is both easier to read and that also does not trigger MSVC's
warning.

While at it, we take care of reporting overflows (which are unlikely,
but hey, defensive programming is good!).

We _also_ take pains of casting the unsigned value to signed: otherwise,
the signed operand (i.e. the `-1`) would be cast to unsigned before
doing the arithmetic.

Helped-by: Denton Liu <liu.denton@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agofetch: let --jobs=<n> parallelize --multiple, too
Johannes Schindelin [Sat, 5 Oct 2019 18:46:40 +0000 (11:46 -0700)]
fetch: let --jobs=<n> parallelize --multiple, too

So far, `--jobs=<n>` only parallelizes submodule fetches/clones, not
`--multiple` fetches, which is unintuitive, given that the option's name
does not say anything about submodules in particular.

Let's change that. With this patch, also fetches from multiple remotes
are parallelized.

For backwards-compatibility (and to prepare for a use case where
submodule and multiple-remote fetches may need different parallelization
limits), the config setting `submodule.fetchJobs` still only controls
the submodule part of `git fetch`, while the newly-introduced setting
`fetch.parallel` controls both (but can be overridden for submodules
with `submodule.fetchJobs`).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoMerge branch 'js/range-diff-noprefix' into next
Junio C Hamano [Fri, 4 Oct 2019 04:13:09 +0000 (13:13 +0900)]
Merge branch 'js/range-diff-noprefix' into next

"git range-diff" segfaulted when diff.noprefix configuration was
used, as it blindly expected the patch it internally generates to
have the standard a/ and b/ prefixes.  The command now forces the
internal patch to be built without any prefix, not to be affected
by any end-user configuration.

* js/range-diff-noprefix:
  range-diff: internally force `diff.noprefix=true`

5 years agoMerge branch 'js/trace2-fetch-push' into next
Junio C Hamano [Fri, 4 Oct 2019 04:13:08 +0000 (13:13 +0900)]
Merge branch 'js/trace2-fetch-push' into next

Dev support.

* js/trace2-fetch-push:
  push: add trace2 instrumentation
  fetch: add trace2 instrumentation

5 years agoMerge branch 'ah/cleanups' into next
Junio C Hamano [Fri, 4 Oct 2019 04:13:08 +0000 (13:13 +0900)]
Merge branch 'ah/cleanups' into next

Miscellaneous code clean-ups.

* ah/cleanups:
  git_mkstemps_mode(): replace magic numbers with computed value
  wrapper: use a loop instead of repetitive statements
  diffcore-break: use a goto instead of a redundant if statement
  commit-graph: remove a duplicate assignment

5 years agoMerge branch 'js/diff-rename-force-stable-sort' into next
Junio C Hamano [Fri, 4 Oct 2019 04:13:08 +0000 (13:13 +0900)]
Merge branch 'js/diff-rename-force-stable-sort' into next

The rename detection logic sorts a list of rename source candidates
by similarity to pick the best candidate, which means that a tie
between sources with the same similarity is broken by the original
location in the original canidate list (which is sorted by path).
Force the sorting by similarity done with a stable sort, which is
not promised by system supplied qsort(3), to ensure consistent
results across platforms.

* js/diff-rename-force-stable-sort:
  diffcore_rename(): use a stable sort
  Move git_sort(), a stable sort, into into libgit.a

5 years agoMerge branch 'as/shallow-slab-use-fix' into next
Junio C Hamano [Fri, 4 Oct 2019 04:13:07 +0000 (13:13 +0900)]
Merge branch 'as/shallow-slab-use-fix' into next

Correct code that tried to reference all entries in a sparse array
of pointers by mistake.

* as/shallow-slab-use-fix:
  shallow.c: don't free unallocated slabs

5 years agoMerge branch 'js/mingw-spawn-with-spaces-in-path' into next
Junio C Hamano [Fri, 4 Oct 2019 04:13:07 +0000 (13:13 +0900)]
Merge branch 'js/mingw-spawn-with-spaces-in-path' into next

Test fix.

* js/mingw-spawn-with-spaces-in-path:
  t0061: fix test for argv[0] with spaces (MINGW only)

5 years agoMerge branch 'cb/pcre1-cleanup' into next
Junio C Hamano [Fri, 4 Oct 2019 04:13:07 +0000 (13:13 +0900)]
Merge branch 'cb/pcre1-cleanup' into next

PCRE fixes.

* cb/pcre1-cleanup:
  grep: refactor and simplify PCRE1 support
  grep: make sure NO_LIBPCRE1_JIT disable JIT in PCRE1

5 years agoMerge branch 'ab/pcre-jit-fixes' into next
Junio C Hamano [Fri, 4 Oct 2019 04:13:06 +0000 (13:13 +0900)]
Merge branch 'ab/pcre-jit-fixes' into next

A few simplification and bugfixes to PCRE interface.

* ab/pcre-jit-fixes:
  grep: under --debug, show whether PCRE JIT is enabled
  grep: do not enter PCRE2_UTF mode on fixed matching
  grep: stess test PCRE v2 on invalid UTF-8 data
  grep: create a "is_fixed" member in "grep_pat"
  grep: consistently use "p->fixed" in compile_regexp()
  grep: stop using a custom JIT stack with PCRE v1
  grep: stop "using" a custom JIT stack with PCRE v2
  grep: remove overly paranoid BUG(...) code
  grep: use PCRE v2 for optimized fixed-string search
  grep: remove the kwset optimization
  grep: drop support for \0 in --fixed-strings <pattern>
  grep: make the behavior for NUL-byte in patterns sane
  grep tests: move binary pattern tests into their own file
  grep tests: move "grep binary" alongside the rest
  grep: inline the return value of a function call used only once
  t4210: skip more command-line encoding tests on MinGW
  grep: don't use PCRE2?_UTF8 with "log --encoding=<non-utf8>"
  log tests: test regex backends in "--encode=<enc>" tests

5 years agoMerge branch 'pw/rebase-i-show-HEAD-to-reword' into next
Junio C Hamano [Fri, 4 Oct 2019 04:13:06 +0000 (13:13 +0900)]
Merge branch 'pw/rebase-i-show-HEAD-to-reword' into next

"git rebase -i" showed a wrong HEAD while "reword" open the editor.

* pw/rebase-i-show-HEAD-to-reword:
  sequencer: simplify root commit creation
  rebase -i: check for updated todo after squash and reword
  rebase -i: always update HEAD before rewording

5 years agoMerge branch 'sg/name-rev-cutoff-underflow-fix' into next
Junio C Hamano [Fri, 4 Oct 2019 04:13:06 +0000 (13:13 +0900)]
Merge branch 'sg/name-rev-cutoff-underflow-fix' into next

Integer arith fix.

* sg/name-rev-cutoff-underflow-fix:
  name-rev: avoid cutoff timestamp underflow

5 years agoMerge branch 'am/visual-studio-config-fix' into next
Junio C Hamano [Fri, 4 Oct 2019 04:13:05 +0000 (13:13 +0900)]
Merge branch 'am/visual-studio-config-fix' into next

Dev support.

* am/visual-studio-config-fix:
  contrib/buildsystems: fix Visual Studio Debug configuration

5 years agoMerge branch 'tk/git-svn-trim-author-name' into next
Junio C Hamano [Fri, 4 Oct 2019 04:13:05 +0000 (13:13 +0900)]
Merge branch 'tk/git-svn-trim-author-name' into next

The author names taken from SVN repositories may have extra leading
or trailing whitespaces, which are now munged away.

* tk/git-svn-trim-author-name:
  git-svn: trim leading and trailing whitespaces in author name

5 years agoMerge branch 'bc/object-id-part17' into next
Junio C Hamano [Fri, 4 Oct 2019 04:13:05 +0000 (13:13 +0900)]
Merge branch 'bc/object-id-part17' into next

Preparation for SHA-256 upgrade continues.

* bc/object-id-part17: (26 commits)
  midx: switch to using the_hash_algo
  builtin/show-index: replace sha1_to_hex
  rerere: replace sha1_to_hex
  builtin/receive-pack: replace sha1_to_hex
  builtin/index-pack: replace sha1_to_hex
  packfile: replace sha1_to_hex
  wt-status: convert struct wt_status to object_id
  cache: remove null_sha1
  builtin/worktree: switch null_sha1 to null_oid
  builtin/repack: write object IDs of the proper length
  pack-write: use hash_to_hex when writing checksums
  sequencer: convert to use the_hash_algo
  bisect: switch to using the_hash_algo
  sha1-lookup: switch hard-coded constants to the_hash_algo
  config: use the_hash_algo in abbrev comparison
  combine-diff: replace GIT_SHA1_HEXSZ with the_hash_algo
  bundle: switch to use the_hash_algo
  connected: switch GIT_SHA1_HEXSZ to the_hash_algo
  show-index: switch hard-coded constants to the_hash_algo
  blame: remove needless comparison with GIT_SHA1_HEXSZ
  ...

5 years agotreewide: remove duplicate #include directives
René Scharfe [Thu, 3 Oct 2019 12:18:34 +0000 (14:18 +0200)]
treewide: remove duplicate #include directives

Found with "git grep '^#include ' '*.c' | sort | uniq -d".

Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agopush: do not pretend to return `int` from `die_push_simple()`
Johannes Schindelin [Mon, 30 Sep 2019 09:55:31 +0000 (02:55 -0700)]
push: do not pretend to return `int` from `die_push_simple()`

This function is marked as `NORETURN`, and it indeed does not want to
return anything. So let's not declare it with the return type `int`.
This fixes the following warning when building with MSVC:

C4646: function declared with 'noreturn' has non-void return type

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agofast-export: handle nested tags
Elijah Newren [Thu, 3 Oct 2019 20:27:09 +0000 (13:27 -0700)]
fast-export: handle nested tags

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agot9350: add tests for tags of things other than a commit
Elijah Newren [Thu, 3 Oct 2019 20:27:08 +0000 (13:27 -0700)]
t9350: add tests for tags of things other than a commit

Multiple changes here:
  * add a test for a tag of a blob
  * add a test for a tag of a tag of a commit
  * add a comment to the tests for (possibly nested) tags of trees,
    making it clear that these tests are doing much less than you might
    expect

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agofast-export: allow user to request tags be marked with --mark-tags
Elijah Newren [Thu, 3 Oct 2019 20:27:07 +0000 (13:27 -0700)]
fast-export: allow user to request tags be marked with --mark-tags

Add a new option, --mark-tags, which will output mark identifiers with
each tag object.  This improves the incremental export story with
--export-marks since it will allow us to record that annotated tags have
been exported, and it is also needed as a step towards supporting nested
tags.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agofast-export: add support for --import-marks-if-exists
Elijah Newren [Thu, 3 Oct 2019 20:27:06 +0000 (13:27 -0700)]
fast-export: add support for --import-marks-if-exists

fast-import has support for both an --import-marks flag and an
--import-marks-if-exists flag; the latter of which will not die() if the
file does not exist.  fast-export only had support for an --import-marks
flag; add an --import-marks-if-exists flag for consistency.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agofast-import: add support for new 'alias' command
Elijah Newren [Thu, 3 Oct 2019 20:27:05 +0000 (13:27 -0700)]
fast-import: add support for new 'alias' command

fast-export and fast-import have nice --import-marks flags which allow
for incremental migrations.  However, if there is a mark in
fast-export's file of marks without a corresponding mark in the one for
fast-import, then we run the risk that fast-export tries to send new
objects relative to the mark it knows which fast-import does not,
causing fast-import to fail.

This arises in practice when there is a filter of some sort running
between the fast-export and fast-import processes which prunes some
commits programmatically.  Provide such a filter with the ability to
alias pruned commits to their most recent non-pruned ancestor.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agofast-import: allow tags to be identified by mark labels
Elijah Newren [Thu, 3 Oct 2019 20:27:04 +0000 (13:27 -0700)]
fast-import: allow tags to be identified by mark labels

Mark identifiers are used in fast-export and fast-import to provide a
label to refer to earlier content.  Blobs are given labels because they
need to be referenced in the commits where they first appear with a
given filename, and commits are given labels because they can be the
parents of other commits.  Tags were never given labels, probably
because they were viewed as unnecessary, but that presents two problems:

   1. It leaves us without a way of referring to previous tags if we
      want to create a tag of a tag (or higher nestings).
   2. It leaves us with no way of recording that a tag has already been
      imported when using --export-marks and --import-marks.

Fix these problems by allowing an optional mark label for tags.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agofast-import: fix handling of deleted tags
Elijah Newren [Thu, 3 Oct 2019 20:27:03 +0000 (13:27 -0700)]
fast-import: fix handling of deleted tags

If our input stream includes a tag which is later deleted, we were not
properly deleting it.  We did have a step which would delete it, but we
left a tag in the tag list noting that it needed to be updated, and the
updating of annotated tags occurred AFTER ref deletion.  So, when we
record that a tag needs to be deleted, also remove it from the list of
annotated tags to update.

While this has likely been something that has not happened in practice,
it will come up more in order to support nested tags.  For nested tags,
we either need to give temporary names to the intermediate tags and then
delete them, or else we need to use the final name for the intermediate
tags.  If we use the final name for the intermediate tags, then in order
to keep the sanity check that someone doesn't try to update the same tag
twice, we need to delete the ref after creating the intermediate tag.
So, either way nested tags imply the need to delete temporary inner tag
references.

Helped-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agorange-diff: internally force `diff.noprefix=true`
Johannes Schindelin [Wed, 2 Oct 2019 21:10:47 +0000 (14:10 -0700)]
range-diff: internally force `diff.noprefix=true`

When parsing the diffs, `range-diff` expects to see the prefixes `a/`
and `b/` in the diff headers.

These prefixes can be forced off via the config setting
`diff.noprefix=true`. As `range-diff` is not prepared for that
situation, this will cause a segmentation fault.

Let's avoid that by passing the `--no-prefix` option to the `git log`
process that generates the diffs that `range-diff` wants to parse.
And of course expect the output to have no prefixes, then.

Reported-by: Michal Suchánek <msuchanek@suse.de>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoMerge branch 'dl/honor-cflags-in-hdr-check' into next
Junio C Hamano [Thu, 3 Oct 2019 01:45:23 +0000 (10:45 +0900)]
Merge branch 'dl/honor-cflags-in-hdr-check' into next

Dev support.

Getting there.

* dl/honor-cflags-in-hdr-check:
  ci: run `hdr-check` as part of the `Static Analysis` job

5 years agoMerge branch 'cc/multi-promisor' into next
Junio C Hamano [Thu, 3 Oct 2019 01:45:23 +0000 (10:45 +0900)]
Merge branch 'cc/multi-promisor' into next

Cleanup.

* cc/multi-promisor:
  promisor-remote: skip move_to_tail when no-op

5 years agoMerge branch 'en/clean-nested-with-ignored' into next
Junio C Hamano [Thu, 3 Oct 2019 01:45:21 +0000 (10:45 +0900)]
Merge branch 'en/clean-nested-with-ignored' into next

"git clean" fixes.

* en/clean-nested-with-ignored:
  dir: special case check for the possibility that pathspec is NULL

5 years agoMerge branch 'en/merge-recursive-cleanup' into next
Junio C Hamano [Thu, 3 Oct 2019 01:45:19 +0000 (10:45 +0900)]
Merge branch 'en/merge-recursive-cleanup' into next

The merge-recursive machiery is one of the most complex parts of
the system that accumulated cruft over time.  This large series
cleans up the implementation quite a bit.

* en/merge-recursive-cleanup:
  merge-recursive: fix the diff3 common ancestor label for virtual commits

5 years agoci: run `hdr-check` as part of the `Static Analysis` job
Johannes Schindelin [Tue, 1 Oct 2019 11:16:26 +0000 (04:16 -0700)]
ci: run `hdr-check` as part of the `Static Analysis` job

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoSync with master
Junio C Hamano [Thu, 3 Oct 2019 01:25:27 +0000 (10:25 +0900)]
Sync with master

5 years agopush: add trace2 instrumentation
Josh Steadmon [Wed, 2 Oct 2019 23:49:29 +0000 (16:49 -0700)]
push: add trace2 instrumentation

Add trace2 regions in transport.c and builtin/push.c to better track
time spent in various phases of pushing:

* Listing refs
* Checking submodules
* Pushing submodules
* Pushing refs

Signed-off-by: Josh Steadmon <steadmon@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agofetch: add trace2 instrumentation
Josh Steadmon [Wed, 2 Oct 2019 23:49:28 +0000 (16:49 -0700)]
fetch: add trace2 instrumentation

Add trace2 regions to fetch-pack.c and builtins/fetch.c to better track
time spent in the various phases of a fetch:

* listing refs
* negotiation for protocol versions v0-v2
* fetching refs
* consuming refs

Signed-off-by: Josh Steadmon <steadmon@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agogit_mkstemps_mode(): replace magic numbers with computed value
Jeff King [Wed, 2 Oct 2019 15:32:07 +0000 (11:32 -0400)]
git_mkstemps_mode(): replace magic numbers with computed value

The magic number "6" appears several times in the function, and is
related to the size of the "XXXXXX" string we expect to find in the
template. Let's pull that "XXXXXX" into a constant array, whose size we
can get at compile time with ARRAY_SIZE().

Note that we probably can't just change this value, since callers will
be feeding us a certain number of X's, but it hopefully makes the
function itself easier to follow.

While we're here, let's do the same with the "letters" array (which we
_could_ modify if we wanted to include more characters).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agocommit-graph: emit trace2 cmd_mode for each sub-command
Garima Singh [Tue, 27 Aug 2019 16:56:34 +0000 (09:56 -0700)]
commit-graph: emit trace2 cmd_mode for each sub-command

Emit trace2_cmd_mode() messages for each commit-graph
sub-command.

The commit graph commands were in flux when trace2 was
making it's way to git. Now that we have enough sub-commands
in commit-graph, we can label the various modes within them.
Distinguishing between read, write and verify is a great
start.

Signed-off-by: Garima Singh <garima.singh@microsoft.com>
Acked-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agot0061: fix test for argv[0] with spaces (MINGW only)
Alexandr Miloslavskiy [Tue, 1 Oct 2019 11:41:05 +0000 (04:41 -0700)]
t0061: fix test for argv[0] with spaces (MINGW only)

The test was originally designed for the case where user reported
that setting GIT_SSH to a .bat file with spaces in path fails on
Windows: https://github.com/git-for-windows/git/issues/692

The test has two different problems:

1. It succeeds with AND without fix eb7c7863 that addressed user's
   problem. This happens because the core problem was misunderstood,
   leading to conclusion that git is unable to start any programs with
   spaces in path on Win7. But in fact
     a) Bug only affected cmd.exe scripts, such as .bat scripts
     b) Bug only happened when cmd.exe received at least two quoted args
     c) Bug happened on any Windows (verified on Win10).
   Therefore, correct test must involve .bat script and two quoted args.
2. In Visual Studio build, it fails to run, because 'test-fake-ssh.exe'
   is copied away from its dependencies 'libiconv.dll' and 'zlib1.dll'.

Fix both problems by using .bat script instead of 'test-fake-ssh.exe'.
NOTE: With this change, the test now correctly fails without eb7c7863.

Signed-off-by: Alexandr Miloslavskiy <alexandr.miloslavskiy@syntevo.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agowrapper: use a loop instead of repetitive statements
Alex Henrie [Tue, 1 Oct 2019 02:29:36 +0000 (20:29 -0600)]
wrapper: use a loop instead of repetitive statements

A check into the history of this code revealed no particular reason for
the code to be written in this way. All popular compilers are capable of
unrolling loops if it benefits performance, and once this code is
replaced with a loop, the magic number 6 used in multiple places in this
function can be replaced with a named constant.

Reviewed-by: Derrick Stolee <stolee@gmail.com>
Reviewed-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agodiffcore-break: use a goto instead of a redundant if statement
Alex Henrie [Tue, 1 Oct 2019 02:29:35 +0000 (20:29 -0600)]
diffcore-break: use a goto instead of a redundant if statement

The condition "if (q->nr <= j)" checks whether the loop exited normally
or via a break statement. Avoid this check by replacing the jump out of
the inner loop with a jump to the end of the outer loop, which makes it
obvious that diff_q is not executed when the peer survives.

Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agocommit-graph: remove a duplicate assignment
Alex Henrie [Tue, 1 Oct 2019 02:29:34 +0000 (20:29 -0600)]
commit-graph: remove a duplicate assignment

Leave the variable 'g' uninitialized before it is set just before its
first use in front of a loop, which is a much more appropriate place to
indicate what it is used for.

Also initialize the variable 'num_commits' just before the loop instead
of at the beginning of the function for the same reason.

Reviewed-by: Derrick Stolee <stolee@gmail.com>
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoshallow.c: don't free unallocated slabs
Ali Utku Selen [Mon, 30 Sep 2019 23:33:10 +0000 (01:33 +0200)]
shallow.c: don't free unallocated slabs

Fix possible segfault when cloning a submodule shallow.

Signed-off-by: Ali Utku Selen <auselen@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agomerge-recursive: fix the diff3 common ancestor label for virtual commits
Elijah Newren [Tue, 1 Oct 2019 18:17:27 +0000 (11:17 -0700)]
merge-recursive: fix the diff3 common ancestor label for virtual commits

In commit 743474cbfa8b ("merge-recursive: provide a better label for
diff3 common ancestor", 2019-08-17), the label for the common ancestor
was changed from always being

         "merged common ancestors"

to instead be based on the number of merge bases:

    >=2: "merged common ancestors"
      1: <abbreviated commit hash>
      0: "<empty tree>"

Unfortunately, this did not take into account that when we have a single
merge base, that merge base could be fake or constructed.  In such
cases, this resulted in a label of "00000000".  Of course, the previous
label of "merged common ancestors" was also misleading for this case.
Since we have an API that is explicitly about creating fake merge base
commits in merge_recursive_generic(), we should provide a better label
when using that API with one merge base.  So, when
merge_recursive_generic() is called with one merge base, set the label
to:

         "constructed merge base"

Note that callers of merge_recursive_generic() include the builtin
commands git-am (in combination with git apply --build-fake-ancestor),
git-merge-recursive, and git-stash.

Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agopromisor-remote: skip move_to_tail when no-op
Emily Shaffer [Mon, 30 Sep 2019 22:03:55 +0000 (15:03 -0700)]
promisor-remote: skip move_to_tail when no-op

Previously, when promisor_remote_move_to_tail() is called for a
promisor_remote which is currently the final element in promisors, a
cycle is created in the promisors linked list. This cycle leads to a
double free later on in promisor_remote_clear() when the final element
of the promisors list is removed: promisors is set to promisors->next (a
no-op, as promisors->next == promisors); the previous value of promisors
is free()'d; then the new value of promisors (which is equal to the
previous value of promisors) is also free()'d. This double-free error
was unrecoverable for the user without removing the filter or re-cloning
the repo and hoping to miss this edge case.

Now, when promisor_remote_move_to_tail() would be a no-op, just do a
no-op. In cases of promisor_remote_move_to_tail() where r is not already
at the tail of the list, it works as before.

Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
Acked-by: Christian Couder <christian.couder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agodiffcore_rename(): use a stable sort
Johannes Schindelin [Mon, 30 Sep 2019 17:21:55 +0000 (10:21 -0700)]
diffcore_rename(): use a stable sort

During Git's rename detection, the file names are sorted. At the moment,
this job is performed by `qsort()`. As that function is not guaranteed
to implement a stable sort algorithm, this can lead to inconsistent
and/or surprising behavior: a rename might be detected differently
depending on the platform where Git was run.

The `qsort()` in MS Visual C's runtime does _not_ implement a stable
sort algorithm, and it even leads to an inconsistency leading to a test
failure in t3030.35 "merge-recursive remembers the names of all base
trees": a different code path than on Linux is taken in the rename
detection of an ambiguous rename between either `e` to `a` or
`a~Temporary merge branch 2_0` to `a` during a recursive merge,
unexpectedly resulting in a clean merge.

Let's use the stable sort provided by `git_stable_qsort()` to avoid this
inconsistency.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoMove git_sort(), a stable sort, into into libgit.a
Johannes Schindelin [Mon, 30 Sep 2019 17:21:54 +0000 (10:21 -0700)]
Move git_sort(), a stable sort, into into libgit.a

The `qsort()` function is not guaranteed to be stable, i.e. it does not
promise to maintain the order of items it is told to consider equal. In
contrast, the `git_sort()` function we carry in `compat/qsort.c` _is_
stable, by virtue of implementing a merge sort algorithm.

In preparation for using a stable sort in Git's rename detection, move
the stable sort into `libgit.a` so that it is compiled in
unconditionally, and rename it to `git_stable_qsort()`.

Note: this also makes the hack obsolete that was introduced in
fe21c6b285d (mingw: reencode environment variables on the fly (UTF-16
<-> UTF-8), 2018-10-30), where we included `compat/qsort.c` directly in
`compat/mingw.c` to use the stable sort.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agodir: special case check for the possibility that pathspec is NULL
Elijah Newren [Tue, 1 Oct 2019 18:55:24 +0000 (11:55 -0700)]
dir: special case check for the possibility that pathspec is NULL

Commits 404ebceda01c ("dir: also check directories for matching
pathspecs", 2019-09-17) and 89a1f4aaf765 ("dir: if our pathspec might
match files under a dir, recurse into it", 2019-09-17) added calls to
match_pathspec() and do_match_pathspec() passing along their pathspec
parameter.  Both match_pathspec() and do_match_pathspec() assume the
pathspec argument they are given is non-NULL.  It turns out that
unpack-tree.c's verify_clean_subdirectory() calls read_directory() with
pathspec == NULL, and it is possible on case insensitive filesystems for
that NULL to make it to these new calls to match_pathspec() and
do_match_pathspec().  Add appropriate checks on the NULLness of pathspec
to avoid a segfault.

In case the negation throws anyone off (one of the calls was to
do_match_pathspec() while the other was to !match_pathspec(), yet no
negation of the NULLness of pathspec is used), there are two ways to
understand the differences:
  * The code already handled the pathspec == NULL cases before this
    series, and this series only tried to change behavior when there was
    a pathspec, thus we only want to go into the if-block if pathspec is
    non-NULL.
  * One of the calls is for whether to recurse into a subdirectory, the
    other is for after we've recursed into it for whether we want to
    remove the subdirectory itself (i.e. the subdirectory didn't match
    but something under it could have).  That difference in situation
    leads to the slight differences in logic used (well, that and the
    slightly unusual fact that we don't want empty pathspecs to remove
    untracked directories by default).

Denton found and analyzed one issue and provided the patch for the
match_pathspec() call, SZEDER figured out why the issue only reproduced
for some folks and not others and provided the testcase, and I looked
through the remainder of the series and noted the do_match_pathspec()
call that should have the same check.

Co-authored-by: Denton Liu <liu.denton@gmail.com>
Co-authored-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoMerge branch 'bw/submodule-helper-usage-fix' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:16 +0000 (13:42 +0900)]
Merge branch 'bw/submodule-helper-usage-fix' into next

Typofix.

* bw/submodule-helper-usage-fix:
  builtin/submodule--helper: fix usage string for 'update-clone'

5 years agoMerge branch 'ma/user-manual-markup-update' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:16 +0000 (13:42 +0900)]
Merge branch 'ma/user-manual-markup-update' into next

The markup used in user-manual has been updated to work better with
asciidoctor.

* ma/user-manual-markup-update:
  user-manual.txt: render ASCII art correctly under Asciidoctor
  asciidoctor-extensions.rb: handle "book" doctype in linkgit
  user-manual.txt: change header notation
  user-manual.txt: add missing section label

5 years agoMerge branch 'dl/honor-cflags-in-hdr-check' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:16 +0000 (13:42 +0900)]
Merge branch 'dl/honor-cflags-in-hdr-check' into next

Dev support.

* dl/honor-cflags-in-hdr-check:
  Makefile: emulate compile in $(HCO) target better
  pack-bitmap.h: remove magic number
  promisor-remote.h: include missing header
  apply.h: include missing header

5 years agoMerge branch 'cb/do-not-use-test-cmp-with-a' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:15 +0000 (13:42 +0900)]
Merge branch 'cb/do-not-use-test-cmp-with-a' into next

Test portability fix.

* cb/do-not-use-test-cmp-with-a:
  t4038: Remove non-portable '-a' option passed to test_cmp

5 years agoMerge branch 'cc/multi-promisor' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:15 +0000 (13:42 +0900)]
Merge branch 'cc/multi-promisor' into next

Cleanup.

* cc/multi-promisor:
  promisor-remote.h: drop extern from function declaration

5 years agoMerge branch 'am/mailmap-andrey-mazo' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:14 +0000 (13:42 +0900)]
Merge branch 'am/mailmap-andrey-mazo' into next

* am/mailmap-andrey-mazo:
  .mailmap: update email address of Andrey Mazo

5 years agoMerge branch 'jt/merge-recursive-symlink-is-not-a-dir-in-way' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:14 +0000 (13:42 +0900)]
Merge branch 'jt/merge-recursive-symlink-is-not-a-dir-in-way' into next

A bug in merge-recursive code that triggers when a branch with a
symbolic link is merged with a branch that replaces it with a
directory has been fixed.

* jt/merge-recursive-symlink-is-not-a-dir-in-way:
  merge-recursive: symlink's descendants not in way

5 years agoMerge branch 'ps/my-first-contribution-alphasort' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:14 +0000 (13:42 +0900)]
Merge branch 'ps/my-first-contribution-alphasort' into next

Docfix.

* ps/my-first-contribution-alphasort:
  doc: MyFirstContribution: fix cmd placement instructions

5 years agoMerge branch 'sg/travis-help-debug' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:13 +0000 (13:42 +0900)]
Merge branch 'sg/travis-help-debug' into next

Dev support update.

* sg/travis-help-debug:
  travis-ci: do not skip successfully tested trees in debug mode

5 years agoMerge branch 'rs/alias-use-copy-array' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:13 +0000 (13:42 +0900)]
Merge branch 'rs/alias-use-copy-array' into next

Code cleanup.

* rs/alias-use-copy-array:
  git: use COPY_ARRAY and MOVE_ARRAY in handle_alias()

5 years agoMerge branch 'sg/t-helper-gitignore' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:12 +0000 (13:42 +0900)]
Merge branch 'sg/t-helper-gitignore' into next

Update the way build artifacts in t/helper/ directory are ignored.

* sg/t-helper-gitignore:
  t/helper: ignore only executable files

5 years agoMerge branch 'jc/git-gui-has-maintainer' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:12 +0000 (13:42 +0900)]
Merge branch 'jc/git-gui-has-maintainer' into next

* jc/git-gui-has-maintainer:
  SubmittingPatches: git-gui has a new maintainer

5 years agoMerge branch 'cc/svn-fe-py-shebang' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:12 +0000 (13:42 +0900)]
Merge branch 'cc/svn-fe-py-shebang' into next

* cc/svn-fe-py-shebang:
  contrib/svn-fe: fix shebang for svnrdump_sim.py

5 years agoMerge branch 'ah/doc-submodule-ignore-submodules' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:11 +0000 (13:42 +0900)]
Merge branch 'ah/doc-submodule-ignore-submodules' into next

Docfix.

* ah/doc-submodule-ignore-submodules:
  doc: fix reference to --ignore-submodules

5 years agoMerge branch 'rs/nth-switch-code-simplification' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:11 +0000 (13:42 +0900)]
Merge branch 'rs/nth-switch-code-simplification' into next

Code simplification.

* rs/nth-switch-code-simplification:
  sha1_name: simplify strbuf handling in interpret_nth_prior_checkout()

5 years agoMerge branch 'hb/hg-to-git-py3' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:10 +0000 (13:42 +0900)]
Merge branch 'hb/hg-to-git-py3' into next

The hg-to-git script (in contrib/) has been updated to work with
Python 3.

* hb/hg-to-git-py3:
  hg-to-git: make it compatible with both python3 and python2

5 years agoMerge branch 'sg/progress-fix' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:10 +0000 (13:42 +0900)]
Merge branch 'sg/progress-fix' into next

Regression fix for progress output.

* sg/progress-fix:
  Test the progress display
  Revert "progress: use term_clear_line()"

5 years agoMerge branch 'js/doc-patch-text' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:09 +0000 (13:42 +0900)]
Merge branch 'js/doc-patch-text' into next

Docfix.

* js/doc-patch-text:
  diff, log doc: small grammer, format, and language fixes
  diff, log doc: say "patch text" instead of "patches"

5 years agoMerge branch 'tb/commit-graph-harden' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:09 +0000 (13:42 +0900)]
Merge branch 'tb/commit-graph-harden' into next

The code to parse and use the commit-graph file has been made more
robust against corrupted input.

* tb/commit-graph-harden:
  commit-graph.c: handle corrupt/missing trees
  commit-graph.c: handle commit parsing errors
  t/t5318: introduce failing 'git commit-graph write' tests

5 years agoMerge branch 'jt/cache-tree-avoid-lazy-fetch-during-merge' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:09 +0000 (13:42 +0900)]
Merge branch 'jt/cache-tree-avoid-lazy-fetch-during-merge' into next

The cache-tree code has been taught to be less aggressive in
attempting to see if a tree object it computed already exists in
the repository.

* jt/cache-tree-avoid-lazy-fetch-during-merge:
  cache-tree: do not lazy-fetch tentative tree

5 years agoMerge branch 'en/clean-nested-with-ignored' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:08 +0000 (13:42 +0900)]
Merge branch 'en/clean-nested-with-ignored' into next

"git clean" fixes.

* en/clean-nested-with-ignored:
  clean: fix theoretical path corruption
  clean: rewrap overly long line
  clean: avoid removing untracked files in a nested git repository
  clean: disambiguate the definition of -d
  git-clean.txt: do not claim we will delete files with -n/--dry-run
  dir: add commentary explaining match_pathspec_item's return value
  dir: if our pathspec might match files under a dir, recurse into it
  dir: make the DO_MATCH_SUBMODULE code reusable for a non-submodule case
  dir: also check directories for matching pathspecs
  dir: fix off-by-one error in match_pathspec_item
  dir: fix typo in comment
  t7300: add testcases showing failure to clean specified pathspecs

5 years agoMerge branch 'jk/packfile-reuse-cleanup' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:07 +0000 (13:42 +0900)]
Merge branch 'jk/packfile-reuse-cleanup' into next

The way "git pack-objects" reuses objects stored in existing pack
to generate its result has been improved.

* jk/packfile-reuse-cleanup:
  pack-objects: improve partial packfile reuse
  builtin/pack-objects: introduce obj_is_packed()
  pack-objects: introduce pack.allowPackReuse
  csum-file: introduce hashfile_total()
  pack-bitmap: introduce bitmap_walk_contains()
  pack-bitmap: don't rely on bitmap_git->reuse_objects
  ewah/bitmap: always allocate 2 more words
  ewah/bitmap: introduce bitmap_word_alloc()
  packfile: expose get_delta_base()
  builtin/pack-objects: report reused packfile objects

5 years agoMerge branch 'dl/cocci-everywhere' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:06 +0000 (13:42 +0900)]
Merge branch 'dl/cocci-everywhere' into next

Coccinelle checks are done on more source files than before now.

* dl/cocci-everywhere:
  Makefile: run coccicheck on more source files
  Makefile: strip leading ./ in $(FIND_SOURCE_FILES)
  Makefile: define THIRD_PARTY_SOURCES
  Makefile: strip leading ./ in $(LIB_H)

5 years agoMerge branch 'gs/commit-graph-progress' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:06 +0000 (13:42 +0900)]
Merge branch 'gs/commit-graph-progress' into next

* gs/commit-graph-progress:
  commit-graph: add --[no-]progress to write and verify

5 years agoMerge branch 'ms/fetch-follow-tag-optim' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:05 +0000 (13:42 +0900)]
Merge branch 'ms/fetch-follow-tag-optim' into next

The code used in following tags in "git fetch" has been optimized.

* ms/fetch-follow-tag-optim:
  fetch: use oidset to keep the want OIDs for faster lookup

5 years agoMerge branch 'rs/commit-graph-use-list-count' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:05 +0000 (13:42 +0900)]
Merge branch 'rs/commit-graph-use-list-count' into next

Code cleanup.

* rs/commit-graph-use-list-count:
  commit-graph: use commit_list_count()

5 years agoMerge branch 'rs/nth-parent-parse' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:04 +0000 (13:42 +0900)]
Merge branch 'rs/nth-parent-parse' into next

The object name parser for "Nth parent" syntax has been made more
robust against integer overflows.

* rs/nth-parent-parse:
  sha1-name: check for overflow of N in "foo^N" and "foo~N"
  rev-parse: demonstrate overflow of N for "foo^N" and "foo~N"

5 years agoMerge branch 'bc/doc-use-docbook-5' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:04 +0000 (13:42 +0900)]
Merge branch 'bc/doc-use-docbook-5' into next

Start using DocBook 5 (instead of DocBook 4.5) as Asciidoctor 2.0
no longer works with the older one.

* bc/doc-use-docbook-5:
  Documentation: fix build with Asciidoctor 2

5 years agoMerge branch 'dl/submodule-set-branch' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:04 +0000 (13:42 +0900)]
Merge branch 'dl/submodule-set-branch' into next

Docfix.

* dl/submodule-set-branch:
  git-submodule.txt: fix AsciiDoc formatting error

5 years agoMerge branch 'cs/pretty-formats-doc-typofix' into next
Junio C Hamano [Mon, 30 Sep 2019 04:42:03 +0000 (13:42 +0900)]
Merge branch 'cs/pretty-formats-doc-typofix' into next

Doc fix.

* cs/pretty-formats-doc-typofix:
  doc: minor formatting fix