git/git.git
19 months agotree-walk: drop oid from traverse_info
Jeff King [Wed, 31 Jul 2019 04:38:15 +0000 (00:38 -0400)]
tree-walk: drop oid from traverse_info

As the previous commit shows, the presence of an oid in each level of
the traverse_info is confusing and ultimately not necessary. Let's drop
it to make it clear that it will not always be set (as well as convince
us that it's unused, and let the compiler catch any merges with other
branches that do add new uses).

Since the oid is part of name_entry, we'll actually stop embedding a
name_entry entirely, and instead just separately hold the pathname, its
length, and the mode.

This makes the resulting code slightly more verbose as we have to pass
those elements around individually. But it also makes it more clear what
each code path is going to use (and in most of the paths, we really only
care about the pathname itself).

A few of these conversions are noisier than they need to be, as they
also take the opportunity to rename "len" to "namelen" for clarity
(especially where we also have "pathlen" or "ce_len" alongside).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agosetup_traverse_info(): stop copying oid
Jeff King [Wed, 31 Jul 2019 04:38:11 +0000 (00:38 -0400)]
setup_traverse_info(): stop copying oid

We assume that if setup_traverse_info() is passed a non-empty "base"
string, that string is pointing into a tree object and we can read the
object oid by skipping past the trailing NUL.

As it turns out, this is not true for either of the two calls, and we
may end up reading garbage bytes:

  1. In git-merge-tree, our base string is either empty (in which case
     we'd never run this code), or it comes from our traverse_path()
     helper. The latter overallocates a buffer by the_hash_algo->rawsz
     bytes, but then fills it with only make_traverse_path(), leaving
     those extra bytes uninitialized (but part of a legitimate heap
     buffer).

  2. In unpack_trees(), we pass o->prefix, which is some arbitrary
     string from the caller. In "git read-tree --prefix=foo", for
     instance, it will point to the command-line parameter, and we'll
     read 20 bytes past the end of the string.

Interestingly, tools like ASan do not detect (2) because the process
argv is part of a big pre-allocated buffer. So we're reading trash, but
it's trash that's probably part of the next argument, or the
environment.

You can convince it to fail by putting something like this at the
beginning of common-main.c's main() function:

  {
int i;
for (i = 0; i < argc; i++)
argv[i] = xstrdup_or_null(argv[i]);
  }

That puts the arguments into their own heap buffers, so running:

  make SANITIZE=address test

will find problems when "read-tree --prefix" is used (e.g., in t3030).

Doubly interesting, even with the hackery above, this does not fail
prior to ea82b2a085 (tree-walk: store object_id in a separate member,
2019-01-15). That commit switched setup_traverse_info() to actually
copying the hash, rather than simply pointing to it. That pointer was
always pointing to garbage memory, but that commit started actually
dereferencing the bytes, which is what triggers ASan.

That also implies that nobody actually cares about reading these oid
bytes anyway (or at least no path covered by our tests). And manual
inspection of the code backs that up (I'll follow this patch with some
cleanups that show definitively this is the case, but they're quite
invasive, so it's worth doing this fix on its own).

So let's drop the bogus hashcpy(), along with the confusing oversizing
in merge-tree.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agorepack: simplify handling of auto-bitmaps and .keep files
Jeff King [Wed, 31 Jul 2019 05:40:56 +0000 (01:40 -0400)]
repack: simplify handling of auto-bitmaps and .keep files

Commit 7328482253 (repack: disable bitmaps-by-default if .keep files
exist, 2019-06-29) taught repack to prefer disabling bitmaps to
duplicating objects (unless bitmaps were asked for explicitly).

But there's an easier way to do this: if we keep passing the
--honor-pack-keep flag to pack-objects when auto-enabling bitmaps, then
pack-objects already makes the same decision (it will disable bitmaps
rather than duplicate). Better still, pack-objects can actually decide
to do so based not just on the presence of a .keep file, but on whether
that .keep file actually impacts the new pack we're making (so if we're
racing with a push or fetch, for example, their temporary .keep file
will not block us from generating bitmaps if they haven't yet updated
their refs).

And because repack uses the --write-bitmap-index-quiet flag, we don't
have to worry about pack-objects generating confusing warnings when it
does see a .keep file. We can confirm this by tweaking the .keep test to
check repack's stderr.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agorepack: silence warnings when auto-enabled bitmaps cannot be built
Jeff King [Wed, 31 Jul 2019 05:39:27 +0000 (01:39 -0400)]
repack: silence warnings when auto-enabled bitmaps cannot be built

Depending on various config options, a full repack may not be able to
build a reachability bitmap index (e.g., if pack.packSizeLimit forces us
to write multiple packs). In these cases pack-objects may write a
warning to stderr.

Since 36eba0323d (repack: enable bitmaps by default on bare repos,
2019-03-14), we may generate these warnings even when the user did not
explicitly ask for bitmaps. This has two downsides:

  - it can be confusing, if they don't know what bitmaps are

  - a daemonized auto-gc will write this to its log file, and the
    presence of the warning may suppress further auto-gc (until
    gc.logExpiry has elapsed)

Let's have repack communicate to pack-objects that the choice to turn on
bitmaps was not made explicitly by the user, which in turn allows
pack-objects to suppress these warnings.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agot7700: clean up .keep file in bitmap-writing test
Jeff King [Wed, 31 Jul 2019 05:37:36 +0000 (01:37 -0400)]
t7700: clean up .keep file in bitmap-writing test

After our test snippet finishes, the .keep file is left in place, making
it hard to do further tests of the auto-bitmap-writing code (since it
suppresses the feature completely). Let's clean it up.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agot5510-fetch: fix negated 'test_i18ngrep' invocation
SZEDER Gábor [Tue, 30 Jul 2019 21:29:15 +0000 (23:29 +0200)]
t5510-fetch: fix negated 'test_i18ngrep' invocation

The test '--no-show-forced-updates' in 't5510-fetch.sh' added in
cdbd70c437 (fetch: add --[no-]show-forced-updates argument,
2019-06-18) runs '! test_i18ngrep ...'.  This is wrong, because when
running the test with GIT_TEST_GETTEXT_POISON=true, then
'test_i18ngrep' is basically a noop and always returns with success,
the leading ! turns that into a failure, which then fails the test.

Use 'test_i18ngrep ! ...' instead.

This went unnoticed by our GETTEXT_POISON CI builds, because those
builds don't run this test case: in those builds we don't install
Apache, and this test comes after 't5510' sources 'lib-httpd.sh',
which, consequently, skips all the remaining tests, including this
one.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agot: sort output of hashmap iteration
Jeff King [Wed, 31 Jul 2019 01:23:37 +0000 (21:23 -0400)]
t: sort output of hashmap iteration

The iteration order of a hashmap is undefined, and may depend on things
like the exact set of items added, or the table has been grown or
shrunk. In the case of an oidmap, it even depends on endianness, because
we take the oid hash by casting sha1 bytes directly into an unsigned
int.

Let's sort the test-tool output from any hash iterators. In the case of
t0011, this is just future-proofing. But for t0016, it actually fixes a
reported failure on the big-endian s390 and nonstop ports.

I didn't bother to teach the helper functions to optionally sort output.
They are short enough that it's simpler to just repeat them inline for
the iteration tests than it is to add a --sort option.

Reported-by: Randall S. Becker <rsbecker@nexbridge.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agol10n: sv.po: Update Swedish translation (4676t0f0u)
Peter Krefting [Wed, 31 Jul 2019 10:44:47 +0000 (12:44 +0200)]
l10n: sv.po: Update Swedish translation (4676t0f0u)

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
19 months agogrep: fix worktree case in submodules
Matheus Tavares [Tue, 30 Jul 2019 16:53:27 +0000 (13:53 -0300)]
grep: fix worktree case in submodules

Running git-grep with --recurse-submodules results in a cached grep for
the submodules even when --cached is not used. This makes all
modifications in submodules' tracked files be always ignored when
grepping. Solve that making git-grep respect the cached option when
invoking grep_cache() inside grep_submodule(). Also, add tests to
ensure that the desired behavior is performed.

Reported-by: Daniel Zaoui <jackdanielz@eyomi.org>
Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agotest-dir-iterator: do not assume errno values
Junio C Hamano [Tue, 30 Jul 2019 17:45:48 +0000 (10:45 -0700)]
test-dir-iterator: do not assume errno values

A few tests printed 'errno' as an integer and compared with
hardcoded integers; this is obviously not portable.

A two things to note are:

 - the string obtained by strerror() is not portable, and cannot be
   used for the purpose of these tests.

 - there unfortunately isn't a portable way to map error numbers to
   error names.

As we only care about a few selected errors, just map the error
number to the name before emitting for comparison.

Reported-by: Randall S. Becker <rsbecker@nexbridge.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agol10n: git.pot: v2.23.0 round 1 (130 new, 35 removed)
Jiang Xin [Tue, 30 Jul 2019 01:59:56 +0000 (09:59 +0800)]
l10n: git.pot: v2.23.0 round 1 (130 new, 35 removed)

Generate po/git.pot from v2.23.0-rc0 for git v2.23.0 l10n round 1.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
19 months agoMerge tag 'v2.23.0-rc0' of git://git.kernel.org/pub/scm/git/git
Jiang Xin [Tue, 30 Jul 2019 01:56:16 +0000 (09:56 +0800)]
Merge tag 'v2.23.0-rc0' of git://git./git/git

Git 2.23-rc0

* tag 'v2.23.0-rc0' of git://git.kernel.org/pub/scm/git/git: (420 commits)
  Git 2.23-rc0
  Merge fixes made on the 'master' front
  Flush fixes up to the third batch post 2.22.0
  The seventh batch
  git: mark cmd_rebase as requiring a worktree
  rebase: fix white-space
  xdiff: clamp function context indices in post-image
  grep: print the pcre2_jit_on value
  t6200: use test_commit_bulk
  travis-ci: build with GCC 4.8 as well
  The sixth batch
  clean: show an error message when the path is too long
  CodingGuidelines: spell out post-C89 rules
  README: fix rendering of text in angle brackets
  rm: resolving by removal is not a warning-worthy event
  transport-helper: avoid var decl in for () loop control
  stash: fix handling removed files with --keep-index
  mingw: support spawning programs containing spaces in their names
  gpg-interface: do not scan past the end of buffer
  tests: defang pager tests by explicitly disabling the log.mailmap warning
  ...

19 months agogit: avoid calling aliased builtins via their dashed form
Johannes Schindelin [Mon, 29 Jul 2019 20:08:16 +0000 (13:08 -0700)]
git: avoid calling aliased builtins via their dashed form

This is one of the few places where Git violates its own deprecation of
the dashed form. It is not necessary, either.

As of 595d59e2b53 (git.c: ignore pager.* when launching builtin as
dashed external, 2017-08-02), Git wants to ignore the pager.* config
setting when expanding aliases. So let's strip out the
check_pager_config(<command-name>) call from the copy-edited code.

This code actually made it into upstream git.git already, but it was
disabled in `#if 0 ... #endif` guards so far.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agobin-wrappers: append `.exe` to target paths if necessary
Johannes Schindelin [Mon, 29 Jul 2019 20:08:16 +0000 (13:08 -0700)]
bin-wrappers: append `.exe` to target paths if necessary

When compiling with Visual Studio, the projects' names are identical to
the executables modulo the extensions. Read: there will exist both a
directory called `git` as well as an executable called `git.exe` in the
end. Which means that the bin-wrappers *need* to target the `.exe` files
lest they try to execute directories.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months ago.gitignore: ignore Visual Studio's temporary/generated files
Johannes Schindelin [Mon, 29 Jul 2019 20:08:15 +0000 (13:08 -0700)]
.gitignore: ignore Visual Studio's temporary/generated files

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months ago.gitignore: touch up the entries regarding Visual Studio
Philip Oakley [Mon, 29 Jul 2019 20:08:14 +0000 (13:08 -0700)]
.gitignore: touch up the entries regarding Visual Studio

Add the Microsoft .manifest pattern, and do not anchor the 'Debug'
and 'Release' entries at the top-level directory, to allow for
multiple projects (one per target).

Signed-off-by: Philip Oakley <philipoakley@iee.org>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agovcxproj: also link-or-copy builtins
Johannes Schindelin [Mon, 29 Jul 2019 20:08:13 +0000 (13:08 -0700)]
vcxproj: also link-or-copy builtins

The default location for `.exe` files linked by Visual Studio depends on
the mode (debug vs release) and the architecture. Meaning: after a full
build, there is a `git.exe` in the top-level directory, but none of the
built-ins are linked..

When running a test script in Git Bash, it therefore would pick up the
wrong, say, `git-receive-pack.exe`: the one installed at the same time
as the Git Bash.

Absolutely not what we want. We want to have confidence that our test
covers the MSVC-built Git executables, and not some random stuff.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agomsvc: add a Makefile target to pre-generate the Visual Studio solution
Johannes Schindelin [Mon, 29 Jul 2019 20:08:12 +0000 (13:08 -0700)]
msvc: add a Makefile target to pre-generate the Visual Studio solution

The entire idea of generating the VS solution makes only sense if we
generate it via Continuous Integration; otherwise potential users would
still have to download the entire Git for Windows SDK.

If we pre-generate the Visual Studio solution, Git can be built entirely
within Visual Studio, and the test scripts can be run in a regular Git
for Windows (e.g. the Portable Git flavor, which does not include a full
GCC toolchain and therefore weighs only about a tenth of Git for
Windows' SDK).

So let's just add a target in the Makefile that can be used to generate
said solution; The generated files will then be committed so that they
can be pushed to a branch ready to check out by Visual Studio users.

To make things even more useful, we also generate and commit other files
that are required to run the test suite, such as templates and
bin-wrappers: with this, developers can run the test suite in a regular
Git Bash after building the solution in Visual Studio.

Note: for this build target, we do not actually need to initialize the
`vcpkg` system, so we don't.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agocontrib/buildsystems: add a backend for modern Visual Studio versions
Johannes Schindelin [Mon, 29 Jul 2019 20:08:12 +0000 (13:08 -0700)]
contrib/buildsystems: add a backend for modern Visual Studio versions

Based on the previous patches in this patch series that fixed the
generator for `.vcproj` files (which were used by Visual Studio prior to
2015 to define projects), this patch offers to generate project
definitions for neweer versions of Visual Studio (which use `.vcxproj`
files).

To that end, this patch copy-edits the generator of the `.vcproj`.

In addition, we now use the `vcpkg` system which allows us to build
Git's dependencies (e.g. curl, libexpat) conveniently. The support
scripts were introduced in the `jh/msvc` patch series, and with this
patch we initialize the `vcpkg` conditionally, in the `libgit` project's
`PreBuildEvent`. To allow for parallel building of the projects, we
therefore put `libgit` at the bottom of the project hierarchy.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agocontrib/buildsystems: handle options starting with a slash
Johannes Schindelin [Mon, 29 Jul 2019 20:08:11 +0000 (13:08 -0700)]
contrib/buildsystems: handle options starting with a slash

With the recent changes to allow building with MSVC=1, we now pass the
/OPT:REF option to the compiler. This confuses the parser that wants to
turn the output of a dry run into project definitions for QMake and Visual
Studio:

Unhandled link option @ line 213: /OPT:REF at [...]

Let's just extend the code that passes through options that start with a
dash, so that it passes through options that start with a slash, too.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agocontrib/buildsystems: also handle -lexpat
Johannes Schindelin [Mon, 29 Jul 2019 20:08:10 +0000 (13:08 -0700)]
contrib/buildsystems: also handle -lexpat

This is a dependency required for the non-smart HTTP backend.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agocontrib/buildsystems: handle libiconv, too
Johannes Schindelin [Mon, 29 Jul 2019 20:08:10 +0000 (13:08 -0700)]
contrib/buildsystems: handle libiconv, too

Git's test suite shows tons of breakages unless Git is compiled
*without* NO_ICONV. That means, in turn, that we need to generate
build definitions *with* libiconv, which in turn implies that we
have to handle the -liconv option properly.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agocontrib/buildsystems: handle the curl library option
Philip Oakley [Mon, 29 Jul 2019 20:08:09 +0000 (13:08 -0700)]
contrib/buildsystems: handle the curl library option

Upon seeing the '-lcurl' option, point to the libcurl.lib.

While there, fix the elsif indentation.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agocontrib/buildsystems: error out on unknown option
Johannes Schindelin [Mon, 29 Jul 2019 20:08:08 +0000 (13:08 -0700)]
contrib/buildsystems: error out on unknown option

One time too many did this developer call the `generate` script passing
a `--make-out=<PATH>` option that was happily ignored (because there
should be a space, not an equal sign, between `--make-out` and the
path).

And one time too many, this script not only ignored it but did not even
complain. Let's fix that.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agocontrib/buildsystems: optionally capture the dry-run in a file
Philip Oakley [Mon, 29 Jul 2019 20:08:07 +0000 (13:08 -0700)]
contrib/buildsystems: optionally capture the dry-run in a file

Add an option for capturing the output of the make dry-run used in
determining the msvc-build structure for easy debugging.

You can use the output of `--make-out <path>` in subsequent runs via the
`--in <path>` option.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agocontrib/buildsystems: redirect errors of the dry run into a log file
Philip Oakley [Mon, 29 Jul 2019 20:08:07 +0000 (13:08 -0700)]
contrib/buildsystems: redirect errors of the dry run into a log file

Rather than swallowing the errors, it is better to have them in a file.

To make it obvious what this is about, use the file name
'msvc-build-makedryerrors.txt'.

Further, if the output is empty, simply delete that file. As we target
Git for Windows' SDK (which, unlike its predecessor msysGit, offers Perl
versions newer than 5.8), we can use the quite readable syntax `if -f -z
$ErrsFile` (available in Perl >=5.10).

Note that the file will contain the new values of the GIT_VERSION and
GITGUI_VERSION if they were generated by the make file. They are omitted
if the release is tagged and indentically defined in their respective
GIT_VERSION_GEN file DEF_VER variables.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agocontrib/buildsystems: ignore gettext stuff
Philip Oakley [Mon, 29 Jul 2019 20:08:06 +0000 (13:08 -0700)]
contrib/buildsystems: ignore gettext stuff

Git's build contains steps to handle internationalization. This caused
hiccups in the parser used to generate QMake/Visual Studio project files.

As those steps are irrelevant in this context, let's just ignore them.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agocontrib/buildsystems: handle quoted spaces in filenames
Philip Oakley [Mon, 29 Jul 2019 20:08:05 +0000 (13:08 -0700)]
contrib/buildsystems: handle quoted spaces in filenames

The engine.pl script expects file names not to contain spaces. However,
paths with spaces are quite prevalent on Windows. Use shellwords() rather
than split() to parse them correctly.

Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Philip Oakley <philipoakley@iee.org>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agocontrib/buildsystems: fix misleading error message
Philip Oakley [Mon, 29 Jul 2019 20:08:05 +0000 (13:08 -0700)]
contrib/buildsystems: fix misleading error message

The error message talked about a "lib option", but it clearly referred
to a link option.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agocontrib/buildsystems: ignore irrelevant files in Generators/
Johannes Schindelin [Mon, 29 Jul 2019 20:08:04 +0000 (13:08 -0700)]
contrib/buildsystems: ignore irrelevant files in Generators/

The Generators/ directory can contain spurious files such as editors'
backup files. Even worse, there could be .swp files which are not even
valid Perl scripts.

Let's just ignore anything but .pm files in said directory.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agocontrib/buildsystems: ignore invalidcontinue.obj
Philip Oakley [Mon, 29 Jul 2019 20:08:03 +0000 (13:08 -0700)]
contrib/buildsystems: ignore invalidcontinue.obj

Since 4b623d8 (MSVC: link in invalidcontinue.obj for better POSIX
compatibility, 2014-03-29), invalidcontinue.obj is linked in the MSVC
build, but it was not parsed correctly by the buildsystem. Ignore it, as
it is known to Visual Studio and will be handled elsewhere.

Also only substitute filenames ending with .o when generating the
source .c filename, otherwise we would start to expect .cbj files to
generate .obj files (which are not generated by our build)...

In the future there may be source files that produce .obj files
so keep the two issues (.obj files with & without source files)
separate.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
Signed-off-by: Duncan Smart <duncan.smart@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agoVcproj.pm: urlencode '<' and '>' when generating VC projects
Johannes Schindelin [Mon, 29 Jul 2019 20:08:03 +0000 (13:08 -0700)]
Vcproj.pm: urlencode '<' and '>' when generating VC projects

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agoVcproj.pm: do not configure VCWebServiceProxyGeneratorTool
Johannes Schindelin [Mon, 29 Jul 2019 20:08:02 +0000 (13:08 -0700)]
Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool

It is not necessary, and Visual Studio 2015 no longer supports it, anyway.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agoVcproj.pm: list git.exe first to be startup project
Philip Oakley [Mon, 29 Jul 2019 20:08:01 +0000 (13:08 -0700)]
Vcproj.pm: list git.exe first to be startup project

Visual Studio takes the first listed application/library as the default
startup project [1].

Detect the 'git' project and place it at the head of the project list,
rather than at the tail.

Export the apps list before libs list for both the projects and global
structures of the .sln file.

[1] http://stackoverflow.com/questions/1238553/
vs2008-where-is-the-startup-project-setting-stored-for-a-solution
    "In the solution file, there are a list of pseudo-XML "Project"
    entries. It turns out that whatever is the first one ends up as
    the Startup Project, unless it’s overridden in the suo file. Argh.
    I just rearranged the order in the file and it’s good."

    "just moving the pseudo-xml isn't enough. You also have to move the
    group of entries in the "GlobalSection(ProjectConfigurationPlatforms)
    = postSolution" group that has the GUID of the project you moved to
    the top. So there are two places to move lines."

Signed-off-by: Philip Oakley <philipoakley@iee.org>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agoVcproj.pm: auto-generate GUIDs
Johannes Schindelin [Mon, 29 Jul 2019 20:08:01 +0000 (13:08 -0700)]
Vcproj.pm: auto-generate GUIDs

We ran out GUIDs. Again. But there is no need to: we can generate them
semi-randomly from the target file name of the project.

Note: the Vcproj generator is probably only interesting for historical
reasons; nevertheless, the upcoming Vcxproj generator (to support modern
Visual Studio versions) is based on the Vcproj generator and it is
better to fix this here first.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agoGit 2.23-rc0 v2.23.0-rc0
Junio C Hamano [Mon, 29 Jul 2019 19:51:24 +0000 (12:51 -0700)]
Git 2.23-rc0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agoSync with maint
Junio C Hamano [Mon, 29 Jul 2019 19:40:42 +0000 (12:40 -0700)]
Sync with maint

* maint:
  Merge fixes made on the 'master' front

19 months agoMerge branch 'js/rebase-cleanup'
Junio C Hamano [Mon, 29 Jul 2019 19:39:13 +0000 (12:39 -0700)]
Merge branch 'js/rebase-cleanup'

A few leftover cleanup to "git rebase" in C.

* js/rebase-cleanup:
  git: mark cmd_rebase as requiring a worktree
  rebase: fix white-space

19 months agoMerge branch 'jk/xdiff-clamp-funcname-context-index'
Junio C Hamano [Mon, 29 Jul 2019 19:39:13 +0000 (12:39 -0700)]
Merge branch 'jk/xdiff-clamp-funcname-context-index'

The internal diff machinery can be made to read out of bounds while
looking for --funcion-context line in a corner case, which has been
corrected.

* jk/xdiff-clamp-funcname-context-index:
  xdiff: clamp function context indices in post-image

19 months agoMerge branch 'sg/travis-gcc-4.8'
Junio C Hamano [Mon, 29 Jul 2019 19:39:13 +0000 (12:39 -0700)]
Merge branch 'sg/travis-gcc-4.8'

Add a job to build with a tad older GCC to make sure we are still
buildable.

* sg/travis-gcc-4.8:
  travis-ci: build with GCC 4.8 as well

19 months agoMerge branch 'bb/grep-pcre2-bug-message-fix'
Junio C Hamano [Mon, 29 Jul 2019 19:39:13 +0000 (12:39 -0700)]
Merge branch 'bb/grep-pcre2-bug-message-fix'

BUG() message fix.

The codepath may want to just simply be removed, though.

* bb/grep-pcre2-bug-message-fix:
  grep: print the pcre2_jit_on value

19 months agoMerge fixes made on the 'master' front
Junio C Hamano [Mon, 29 Jul 2019 18:14:47 +0000 (11:14 -0700)]
Merge fixes made on the 'master' front

Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agoMerge branch 'jc/post-c89-rules-doc' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:23 +0000 (12:38 -0700)]
Merge branch 'jc/post-c89-rules-doc' into maint

We have been trying out a few language features outside c89; the
coding guidelines document did not talk about them and instead had
a blanket ban against them.

* jc/post-c89-rules-doc:
  CodingGuidelines: spell out post-C89 rules

19 months agoMerge branch 'fc/fetch-with-import-fix' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:23 +0000 (12:38 -0700)]
Merge branch 'fc/fetch-with-import-fix' into maint

Code restructuring during 2.20 period broke fetching tags via
"import" based transports.

* fc/fetch-with-import-fix:
  fetch: fix regression with transport helpers
  fetch: make the code more understandable
  fetch: trivial cleanup
  t5801 (remote-helpers): add test to fetch tags
  t5801 (remote-helpers): cleanup refspec stuff

19 months agoMerge branch 'ds/close-object-store' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:22 +0000 (12:38 -0700)]
Merge branch 'ds/close-object-store' into maint

The commit-graph file is now part of the "files that the runtime
may keep open file descriptors on, all of which would need to be
closed when done with the object store", and the file descriptor to
an existing commit-graph file now is closed before "gc" finalizes a
new instance to replace it.

* ds/close-object-store:
  packfile: rename close_all_packs to close_object_store
  packfile: close commit-graph in close_all_packs
  commit-graph: use raw_object_store when closing
  commit-graph: extract write_commit_graph_file()
  commit-graph: extract copy_oids_to_commits()
  commit-graph: extract count_distinct_commits()
  commit-graph: extract fill_oids_from_all_packs()
  commit-graph: extract fill_oids_from_commit_hex()
  commit-graph: extract fill_oids_from_packs()
  commit-graph: create write_commit_graph_context
  commit-graph: remove Future Work section
  commit-graph: collapse parameters into flags
  commit-graph: return with errors during write
  commit-graph: fix the_repository reference

19 months agoMerge branch 'pw/add-p-recount' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:22 +0000 (12:38 -0700)]
Merge branch 'pw/add-p-recount' into maint

"git checkout -p" needs to selectively apply a patch in reverse,
which did not work well.

* pw/add-p-recount:
  add -p: fix checkout -p with pathological context

19 months agoMerge branch 'rs/avoid-overflow-in-midpoint-computation' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:21 +0000 (12:38 -0700)]
Merge branch 'rs/avoid-overflow-in-midpoint-computation' into maint

Code clean-up to avoid signed integer overlaps during binary search.

* rs/avoid-overflow-in-midpoint-computation:
  cleanup: fix possible overflow errors in binary search, part 2

19 months agoMerge branch 'jk/trailers-use-config' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:21 +0000 (12:38 -0700)]
Merge branch 'jk/trailers-use-config' into maint

"git interpret-trailers" always treated '#' as the comment
character, regardless of core.commentChar setting, which has been
corrected.

* jk/trailers-use-config:
  interpret-trailers: load default config

19 months agoMerge branch 'tg/stash-ref-by-index-fix' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:20 +0000 (12:38 -0700)]
Merge branch 'tg/stash-ref-by-index-fix' into maint

"git stash show 23" used to work, but no more after getting
rewritten in C; this regression has been corrected.

* tg/stash-ref-by-index-fix:
  stash: fix show referencing stash index

19 months agoMerge branch 'pw/rebase-abort-clean-rewritten' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:20 +0000 (12:38 -0700)]
Merge branch 'pw/rebase-abort-clean-rewritten' into maint

"git rebase --abort" used to leave refs/rewritten/ when concluding
"git rebase -r", which has been corrected.

* pw/rebase-abort-clean-rewritten:
  rebase --abort/--quit: cleanup refs/rewritten
  sequencer: return errors from sequencer_remove_state()
  rebase: warn if state directory cannot be removed
  rebase: fix a memory leak

19 months agoMerge branch 'nd/completion-no-cache-failure' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:20 +0000 (12:38 -0700)]
Merge branch 'nd/completion-no-cache-failure' into maint

An incorrect list of options was cached after command line
completion failed (e.g. trying to complete a command that requires
a repository outside one), which has been corrected.

* nd/completion-no-cache-failure:
  completion: do not cache if --git-completion-helper fails

19 months agoMerge branch 'rs/config-unit-parsing' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:19 +0000 (12:38 -0700)]
Merge branch 'rs/config-unit-parsing' into maint

The code to parse scaled numbers out of configuration files has
been made more robust and also easier to follow.

* rs/config-unit-parsing:
  config: simplify parsing of unit factors
  config: don't multiply in parse_unit_factor()
  config: use unsigned_mult_overflows to check for overflows

19 months agoMerge branch 'jk/delta-islands-progress-fix' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:19 +0000 (12:38 -0700)]
Merge branch 'jk/delta-islands-progress-fix' into maint

The codepath to compute delta islands used to spew progress output
without giving the callers any way to squelch it, which has been
fixed.

* jk/delta-islands-progress-fix:
  delta-islands: respect progress flag

19 months agoMerge branch 'sg/rebase-progress' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:19 +0000 (12:38 -0700)]
Merge branch 'sg/rebase-progress' into maint

Use "Erase in Line" CSI sequence that is already used in the editor
support to clear cruft in the progress output.

* sg/rebase-progress:
  progress: use term_clear_line()
  rebase: fix garbled progress display with '-x'
  pager: add a helper function to clear the last line in the terminal
  t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
  t3404: modernize here doc style

19 months agoMerge branch 'ms/submodule-foreach-fix' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:18 +0000 (12:38 -0700)]
Merge branch 'ms/submodule-foreach-fix' into maint

"git submodule foreach" did not protect command line options passed
to the command to be run in each submodule correctly, when the
"--recursive" option was in use.

* ms/submodule-foreach-fix:
  submodule foreach: fix recursion of options

19 months agoMerge branch 'js/rebase-reschedule-applies-only-to-interactive' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:18 +0000 (12:38 -0700)]
Merge branch 'js/rebase-reschedule-applies-only-to-interactive' into maint

The configuration variable rebase.rescheduleFailedExec should be
effective only while running an interactive rebase and should not
affect anything when running an non-interactive one, which was not
the case.  This has been corrected.

* js/rebase-reschedule-applies-only-to-interactive:
  rebase --am: ignore rebase.rescheduleFailedExec

19 months agoMerge branch 'qn/clone-doc-use-long-form' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:18 +0000 (12:38 -0700)]
Merge branch 'qn/clone-doc-use-long-form' into maint

The "git clone" documentation refers to command line options in its
description in the short form; they have been replaced with long
forms to make them more recognisable.

* qn/clone-doc-use-long-form:
  docs: git-clone: list short form of options first
  docs: git-clone: refer to long form of options

19 months agoMerge branch 'jc/denoise-rm-to-resolve' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:17 +0000 (12:38 -0700)]
Merge branch 'jc/denoise-rm-to-resolve' into maint

"git rm" to resolve a conflicted path leaked an internal message
"needs merge" before actually removing the path, which was
confusing.  This has been corrected.

* jc/denoise-rm-to-resolve:
  rm: resolving by removal is not a warning-worthy event

19 months agoMerge branch 'js/mingw-spawn-with-spaces-in-path' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:17 +0000 (12:38 -0700)]
Merge branch 'js/mingw-spawn-with-spaces-in-path' into maint

Window 7 update ;-)

* js/mingw-spawn-with-spaces-in-path:
  mingw: support spawning programs containing spaces in their names

19 months agoMerge branch 'sr/gpg-interface-stop-at-the-end' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:17 +0000 (12:38 -0700)]
Merge branch 'sr/gpg-interface-stop-at-the-end' into maint

A codepath that reads from GPG for signed object verification read
past the end of allocated buffer, which has been fixed.

* sr/gpg-interface-stop-at-the-end:
  gpg-interface: do not scan past the end of buffer

19 months agoMerge branch 'js/clean-report-too-long-a-path' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:16 +0000 (12:38 -0700)]
Merge branch 'js/clean-report-too-long-a-path' into maint

"git clean" silently skipped a path when it cannot lstat() it; now
it gives a warning.

* js/clean-report-too-long-a-path:
  clean: show an error message when the path is too long

19 months agoMerge branch 'es/local-atomic-push-failure-with-http' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:16 +0000 (12:38 -0700)]
Merge branch 'es/local-atomic-push-failure-with-http' into maint

"git push --atomic" that goes over the transport-helper (namely,
the smart http transport) failed to prevent refs to be pushed when
it can locally tell that one of the ref update will fail without
having to consult the other end, which has been corrected.

* es/local-atomic-push-failure-with-http:
  transport-helper: avoid var decl in for () loop control
  transport-helper: enforce atomic in push_refs_with_push

19 months agoMerge branch 'po/doc-branch' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:16 +0000 (12:38 -0700)]
Merge branch 'po/doc-branch' into maint

Doc update.

* po/doc-branch:
  doc branch: provide examples for listing remote tracking branches

19 months agoMerge branch 'dl/config-alias-doc' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:15 +0000 (12:38 -0700)]
Merge branch 'dl/config-alias-doc' into maint

Doc update.

* dl/config-alias-doc:
  config/alias.txt: document alias accepting non-command first word
  config/alias.txt: change " and ' to `

19 months agoMerge branch 'cb/fsmonitor-intfix' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:15 +0000 (12:38 -0700)]
Merge branch 'cb/fsmonitor-intfix' into maint

Variable type fix.

* cb/fsmonitor-intfix:
  fsmonitor: avoid signed integer overflow / infinite loop

19 months agoMerge branch 'rs/copy-array' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:15 +0000 (12:38 -0700)]
Merge branch 'rs/copy-array' into maint

Code clean-up.

* rs/copy-array:
  use COPY_ARRAY for copying arrays
  coccinelle: use COPY_ARRAY for copying arrays

19 months agoMerge branch 'js/t3404-typofix' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:14 +0000 (12:38 -0700)]
Merge branch 'js/t3404-typofix' into maint

Typofix.

* js/t3404-typofix:
  t3404: fix a typo

19 months agoMerge branch 'cb/mkstemps-uint-type-fix' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:14 +0000 (12:38 -0700)]
Merge branch 'cb/mkstemps-uint-type-fix' into maint

Variable type fix.

* cb/mkstemps-uint-type-fix:
  wrapper: avoid undefined behaviour in macOS

19 months agoMerge branch 'js/t0001-case-insensitive' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:14 +0000 (12:38 -0700)]
Merge branch 'js/t0001-case-insensitive' into maint

Test update.

* js/t0001-case-insensitive:
  t0001: fix on case-insensitive filesystems

19 months agoMerge branch 'jw/gitweb-sample-update' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:13 +0000 (12:38 -0700)]
Merge branch 'jw/gitweb-sample-update' into maint

Doc update.

* jw/gitweb-sample-update:
  doc: don't use git.kernel.org as example gitweb URL

19 months agoMerge branch 'sg/t5551-fetch-smart-error-is-translated' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:13 +0000 (12:38 -0700)]
Merge branch 'sg/t5551-fetch-smart-error-is-translated' into maint

Test update.

* sg/t5551-fetch-smart-error-is-translated:
  t5551: use 'test_i18ngrep' to check translated output

19 months agoMerge branch 'jt/t5551-test-chunked' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:13 +0000 (12:38 -0700)]
Merge branch 'jt/t5551-test-chunked' into maint

Update smart-http test.

* jt/t5551-test-chunked:
  t5551: test usage of chunked encoding explicitly

19 months agoMerge branch 'sg/git-C-empty-doc' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:13 +0000 (12:38 -0700)]
Merge branch 'sg/git-C-empty-doc' into maint

Doc update.

* sg/git-C-empty-doc:
  Document that 'git -C ""' works and doesn't change directory

19 months agoMerge branch 'sg/ci-brew-gcc-workaround' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:12 +0000 (12:38 -0700)]
Merge branch 'sg/ci-brew-gcc-workaround' into maint

Dev support update.

* sg/ci-brew-gcc-workaround:
  ci/lib.sh: update a comment about installed P4 and Git-LFS versions
  ci: disable Homebrew's auto cleanup
  ci: don't update Homebrew

19 months agoMerge branch 'js/trace2-signo-typofix' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:12 +0000 (12:38 -0700)]
Merge branch 'js/trace2-signo-typofix' into maint

Documentation fix.

* js/trace2-signo-typofix:
  trace2: correct trace2 field name documentation

19 months agoMerge branch 'di/readme-markup-fix' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:12 +0000 (12:38 -0700)]
Merge branch 'di/readme-markup-fix' into maint

Docfix.

* di/readme-markup-fix:
  README: fix rendering of text in angle brackets

19 months agoMerge branch 'vn/xmmap-gently' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:12 +0000 (12:38 -0700)]
Merge branch 'vn/xmmap-gently' into maint

Clean-up an error codepath.

* vn/xmmap-gently:
  read-cache.c: do not die if mmap fails

19 months agoMerge branch 'rm/gpg-program-doc-fix' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:12 +0000 (12:38 -0700)]
Merge branch 'rm/gpg-program-doc-fix' into maint

Docfix.

* rm/gpg-program-doc-fix:
  gpg(docs): use correct --verify syntax

19 months agoMerge branch 'js/unmap-before-ext-diff' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:11 +0000 (12:38 -0700)]
Merge branch 'js/unmap-before-ext-diff' into maint

Windows update.

* js/unmap-before-ext-diff:
  diff: munmap() file contents before running external diff

19 months agoMerge branch 'js/gcc-8-and-9' into maint
Junio C Hamano [Mon, 29 Jul 2019 19:38:11 +0000 (12:38 -0700)]
Merge branch 'js/gcc-8-and-9' into maint

Code clean-up for new compilers.
The 'kwset' one may get a wholesale replacement, either with new
version of kwset from upstream or removal of its users, but in the
meantime, it is probably OK to merge it down.

* js/gcc-8-and-9:
  config: avoid calling `labs()` on too-large data type
  winansi: simplify loading the GetCurrentConsoleFontEx() function
  kwset: allow building with GCC 8
  poll (mingw): allow compiling with GCC 8 and DEVELOPER=1

19 months agoDocumentation/git-fsck.txt: include fsck.* config variables
SZEDER Gábor [Mon, 29 Jul 2019 09:59:14 +0000 (11:59 +0200)]
Documentation/git-fsck.txt: include fsck.* config variables

The 'fsck.skipList' and 'fsck.<msg-id>' config variables might be
easier to discover when they are documented in 'git fsck's man page.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agoxdiff: remove duplicate headers from xpatience.c
Carlo Marcelo Arenas Belón [Sun, 28 Jul 2019 20:07:24 +0000 (13:07 -0700)]
xdiff: remove duplicate headers from xpatience.c

92b7de93fb (Implement the patience diff algorithm, 2009-01-07) added them
but were already part of xinclude.h

Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agoxdiff: remove duplicate headers from xhistogram.c
Carlo Marcelo Arenas Belón [Sun, 28 Jul 2019 20:07:23 +0000 (13:07 -0700)]
xdiff: remove duplicate headers from xhistogram.c

8c912eea94 ("teach --histogram to diff", 2011-07-12) included them, but
were already part of xinclude.h

Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agoxdiff: drop system includes in xutils.c
Carlo Marcelo Arenas Belón [Sun, 28 Jul 2019 20:07:22 +0000 (13:07 -0700)]
xdiff: drop system includes in xutils.c

After b46054b374 ("xdiff: use git-compat-util", 2019-04-11), two system
headers added with 6942efcfa9 ("xdiff: load full words in the inner loop
of xdl_hash_record", 2012-04-06) to xutils.c are no longer needed and
could conflict as shown below from an OpenIndiana build:

In file included from xdiff/xinclude.h:26:0,
                 from xdiff/xutils.c:25:
./git-compat-util.h:4:0: warning: "_FILE_OFFSET_BITS" redefined
 #define _FILE_OFFSET_BITS 64

In file included from /usr/include/limits.h:37:0,
                 from xdiff/xutils.c:23:
/usr/include/sys/feature_tests.h:231:0: note: this is the location of the previous definition
 #define _FILE_OFFSET_BITS 32

Make sure git-compat-util.h is the first header (through xinclude.h)

Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agoSync with maint
Junio C Hamano [Thu, 25 Jul 2019 21:34:17 +0000 (14:34 -0700)]
Sync with maint

Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agoFlush fixes up to the third batch post 2.22.0
Junio C Hamano [Thu, 25 Jul 2019 21:32:36 +0000 (14:32 -0700)]
Flush fixes up to the third batch post 2.22.0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 months agoMerge branch 'ab/hash-object-doc' into maint
Junio C Hamano [Thu, 25 Jul 2019 21:27:16 +0000 (14:27 -0700)]
Merge branch 'ab/hash-object-doc' into maint

Doc update.

* ab/hash-object-doc:
  hash-object doc: stop mentioning git-cvsimport

19 months agoMerge branch 'cm/send-email-document-req-modules' into maint
Junio C Hamano [Thu, 25 Jul 2019 21:27:15 +0000 (14:27 -0700)]
Merge branch 'cm/send-email-document-req-modules' into maint

A doc update.

* cm/send-email-document-req-modules:
  send-email: update documentation of required Perl modules

19 months agoMerge branch 'sw/git-p4-unshelve-branched-files' into maint
Junio C Hamano [Thu, 25 Jul 2019 21:27:15 +0000 (14:27 -0700)]
Merge branch 'sw/git-p4-unshelve-branched-files' into maint

"git p4" update.

* sw/git-p4-unshelve-branched-files:
  git-p4: allow unshelving of branched files

19 months agoMerge branch 'js/bisect-helper-check-get-oid-return-value' into maint
Junio C Hamano [Thu, 25 Jul 2019 21:27:14 +0000 (14:27 -0700)]
Merge branch 'js/bisect-helper-check-get-oid-return-value' into maint

Code cleanup.

* js/bisect-helper-check-get-oid-return-value:
  bisect--helper: verify HEAD could be parsed before continuing

19 months agoMerge branch 'es/git-debugger-doc' into maint
Junio C Hamano [Thu, 25 Jul 2019 21:27:14 +0000 (14:27 -0700)]
Merge branch 'es/git-debugger-doc' into maint

Doc update.

* es/git-debugger-doc:
  doc: hint about GIT_DEBUGGER in CodingGuidelines

19 months agoMerge branch 'mo/clang-format-for-each-update' into maint
Junio C Hamano [Thu, 25 Jul 2019 21:27:14 +0000 (14:27 -0700)]
Merge branch 'mo/clang-format-for-each-update' into maint

The list of for-each like macros used by clang-format has been
updated.

* mo/clang-format-for-each-update:
  clang-format: use git grep to generate the ForEachMacros list

19 months agoMerge branch 'md/url-parse-harden' into maint
Junio C Hamano [Thu, 25 Jul 2019 21:27:13 +0000 (14:27 -0700)]
Merge branch 'md/url-parse-harden' into maint

The URL decoding code has been updated to avoid going past the end
of the string while parsing %-<hex>-<hex> sequence.

* md/url-parse-harden:
  url: do not allow %00 to represent NUL in URLs
  url: do not read past end of buffer

19 months agoMerge branch 'an/ignore-doc-update' into maint
Junio C Hamano [Thu, 25 Jul 2019 21:27:13 +0000 (14:27 -0700)]
Merge branch 'an/ignore-doc-update' into maint

The description about slashes in gitignore patterns (used to
indicate things like "anchored to this level only" and "only
matches directories") has been revamped.

* an/ignore-doc-update:
  gitignore.txt: make slash-rules more readable

19 months agoMerge branch 'md/list-objects-filter-memfix' into maint
Junio C Hamano [Thu, 25 Jul 2019 21:27:12 +0000 (14:27 -0700)]
Merge branch 'md/list-objects-filter-memfix' into maint

The filter_data used in the list-objects-filter (which manages a
lazily sparse clone repository) did not use the dynamic array API
correctly---'nr' is supposed to point at one past the last element
of the array in use.  This has been corrected.

* md/list-objects-filter-memfix:
  list-objects-filter: correct usage of ALLOC_GROW

19 months agoMerge branch 'jt/partial-clone-missing-ref-delta-base' into maint
Junio C Hamano [Thu, 25 Jul 2019 21:27:12 +0000 (14:27 -0700)]
Merge branch 'jt/partial-clone-missing-ref-delta-base' into maint

"git fetch" into a lazy clone forgot to fetch base objects that are
necessary to complete delta in a thin packfile, which has been
corrected.

* jt/partial-clone-missing-ref-delta-base:
  t5616: cover case of client having delta base
  t5616: use correct flag to check object is missing
  index-pack: prefetch missing REF_DELTA bases
  t5616: refactor packfile replacement

19 months agoMerge branch 'xl/record-partial-clone-origin' into maint
Junio C Hamano [Thu, 25 Jul 2019 21:27:12 +0000 (14:27 -0700)]
Merge branch 'xl/record-partial-clone-origin' into maint

When creating a partial clone, the object filtering criteria is
recorded for the origin of the clone, but this incorrectly used a
hardcoded name "origin" to name that remote; it has been corrected
to honor the "--origin <name>" option.

* xl/record-partial-clone-origin:
  clone: respect user supplied origin name when setting up partial clone

19 months agoMerge branch 'pb/request-pull-verify-remote-ref' into maint
Junio C Hamano [Thu, 25 Jul 2019 21:27:11 +0000 (14:27 -0700)]
Merge branch 'pb/request-pull-verify-remote-ref' into maint

"git request-pull" learned to warn when the ref we ask them to pull
from in the local repository and in the published repository are
different.

* pb/request-pull-verify-remote-ref:
  request-pull: warn if the remote object is not the same as the local one
  request-pull: quote regex metacharacters in local ref

19 months agoMerge branch 'mm/p4-unshelve-windows-fix' into maint
Junio C Hamano [Thu, 25 Jul 2019 21:27:11 +0000 (14:27 -0700)]
Merge branch 'mm/p4-unshelve-windows-fix' into maint

The command line to invoke a "git cat-file" command from inside
"git p4" was not properly quoted to protect a caret and running a
broken command on Windows, which has been corrected.

* mm/p4-unshelve-windows-fix:
  p4 unshelve: fix "Not a valid object name HEAD0" on Windows

19 months agoMerge branch 'bb/unicode-12.1-reiwa' into maint
Junio C Hamano [Thu, 25 Jul 2019 21:27:10 +0000 (14:27 -0700)]
Merge branch 'bb/unicode-12.1-reiwa' into maint

Update to Unicode 12.1 width table.

* bb/unicode-12.1-reiwa:
  unicode: update the width tables to Unicode 12.1