]> git.ipfire.org Git - thirdparty/git.git/log
thirdparty/git.git
6 years agofetch-pack: drop custom loose object cache
Jeff King [Mon, 12 Nov 2018 14:55:58 +0000 (09:55 -0500)] 
fetch-pack: drop custom loose object cache

Commit 024aa4696c (fetch-pack.c: use oidset to check existence of loose
object, 2018-03-14) added a cache to avoid calling stat() for a bunch of
loose objects we don't have.

Now that OBJECT_INFO_QUICK handles this caching itself, we can drop the
custom solution.

Note that this might perform slightly differently, as the original code
stopped calling readdir() when we saw more loose objects than there were
refs. So:

  1. The old code might have spent work on readdir() to fill the cache,
     but then decided there were too many loose objects, wasting that
     effort.

  2. The new code might spend a lot of time on readdir() if you have a
     lot of loose objects, even though there are very few objects to
     ask about.

In practice it probably won't matter either way; see the previous commit
for some discussion of the tradeoff.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agosha1-file: use loose object cache for quick existence check
Jeff King [Mon, 12 Nov 2018 14:54:42 +0000 (09:54 -0500)] 
sha1-file: use loose object cache for quick existence check

In cases where we expect to ask has_sha1_file() about a lot of objects
that we are not likely to have (e.g., during fetch negotiation), we
already use OBJECT_INFO_QUICK to sacrifice accuracy (due to racing with
a simultaneous write or repack) for speed (we avoid re-scanning the pack
directory).

However, even checking for loose objects can be expensive, as we will
stat() each one. On many systems this cost isn't too noticeable, but
stat() can be particularly slow on some operating systems, or due to
network filesystems.

Since the QUICK flag already tells us that we're OK with a slightly
stale answer, we can use that as a cue to look in our in-memory cache of
each object directory. That basically trades an in-memory binary search
for a stat() call.

Note that it is possible for this to actually be _slower_. We'll do a
full readdir() to fill the cache, so if you have a very large number of
loose objects and a very small number of lookups, that readdir() may end
up more expensive.

This shouldn't be a big deal in practice. If you have a large number of
reachable loose objects, you'll already run into performance problems
(which you should remedy by repacking). You may have unreachable objects
which wouldn't otherwise impact performance. Usually these would go away
with the prune step of "git gc", but they may be held for up to 2 weeks
in the default configuration.

So it comes down to how many such objects you might reasonably expect to
have, how much slower is readdir() on N entries versus M stat() calls
(and here we really care about the syscall backing readdir(), like
getdents() on Linux, but I'll just call this readdir() below).

If N is much smaller than M (a typical packed repo), we know this is a
big win (few readdirs() followed by many uses of the resulting cache).
When N and M are similar in size, it's also a win. We care about the
latency of making a syscall, and readdir() should be giving us many
values in a single call. How many?

On Linux, running "strace -e getdents ls" shows a 32k buffer getting 512
entries per call (which is 64 bytes per entry; the name itself is 38
bytes, plus there are some other fields). So we can imagine that this is
always a win as long as the number of loose objects in the repository is
a factor of 500 less than the number of lookups you make. It's hard to
auto-tune this because we don't generally know up front how many lookups
we're going to do. But it's unlikely for this to perform significantly
worse.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoobject-store: provide helpers for loose_objects_cache
Jeff King [Mon, 12 Nov 2018 14:50:56 +0000 (09:50 -0500)] 
object-store: provide helpers for loose_objects_cache

Our object_directory struct has a loose objects cache that all users of
the struct can see. But the only one that knows how to load the cache is
find_short_object_filename(). Let's extract that logic in to a reusable
function.

While we're at it, let's also reset the cache when we re-read the object
directories. This shouldn't have an impact on performance, as re-reads
are meant to be rare (and are already expensive, so we avoid them with
things like OBJECT_INFO_QUICK).

Since the cache is already meant to be an approximation, it's tempting
to skip even this bit of safety. But it's necessary to allow more code
to use it. For instance, fetch-pack explicitly re-reads the object
directory after performing its fetch, and would be confused if we didn't
clear the cache.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agosha1-file: use an object_directory for the main object dir
Jeff King [Mon, 12 Nov 2018 14:50:39 +0000 (09:50 -0500)] 
sha1-file: use an object_directory for the main object dir

Our handling of alternate object directories is needlessly different
from the main object directory. As a result, many places in the code
basically look like this:

  do_something(r->objects->objdir);

  for (odb = r->objects->alt_odb_list; odb; odb = odb->next)
        do_something(odb->path);

That gets annoying when do_something() is non-trivial, and we've
resorted to gross hacks like creating fake alternates (see
find_short_object_filename()).

Instead, let's give each raw_object_store a unified list of
object_directory structs. The first will be the main store, and
everything after is an alternate. Very few callers even care about the
distinction, and can just loop over the whole list (and those who care
can just treat the first element differently).

A few observations:

  - we don't need r->objects->objectdir anymore, and can just
    mechanically convert that to r->objects->odb->path

  - object_directory's path field needs to become a real pointer rather
    than a FLEX_ARRAY, in order to fill it with expand_base_dir()

  - we'll call prepare_alt_odb() earlier in many functions (i.e.,
    outside of the loop). This may result in us calling it even when our
    function would be satisfied looking only at the main odb.

    But this doesn't matter in practice. It's not a very expensive
    operation in the first place, and in the majority of cases it will
    be a noop. We call it already (and cache its results) in
    prepare_packed_git(), and we'll generally check packs before loose
    objects. So essentially every program is going to call it
    immediately once per program.

    Arguably we should just prepare_alt_odb() immediately upon setting
    up the repository's object directory, which would save us sprinkling
    calls throughout the code base (and forgetting to do so has been a
    source of subtle bugs in the past). But I've stopped short of that
    here, since there are already a lot of other moving parts in this
    patch.

  - Most call sites just get shorter. The check_and_freshen() functions
    are an exception, because they have entry points to handle local and
    nonlocal directories separately.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agohandle alternates paths the same as the main object dir
Jeff King [Mon, 12 Nov 2018 14:49:35 +0000 (09:49 -0500)] 
handle alternates paths the same as the main object dir

When we generate loose file paths for the main object directory, the
caller provides a buffer to loose_object_path (formerly sha1_file_name).
The callers generally keep their own static buffer to avoid excessive
reallocations.

But for alternate directories, each struct carries its own scratch
buffer. This is needlessly different; let's unify them.

We could go either direction here, but this patch moves the alternates
struct over to the main directory style (rather than vice-versa).
Technically the alternates style is more efficient, as it avoids
rewriting the object directory name on each call. But this is unlikely
to matter in practice, as we avoid reallocations either way (and nobody
has ever noticed or complained that the main object directory is copying
a few extra bytes before making a much more expensive system call).

And this has the advantage that the reusable buffers are tied to
particular calls, which makes the invalidation rules simpler (for
example, the return value from stat_sha1_file() used to be invalidated
by basically any other object call, but now it is affected only by other
calls to stat_sha1_file()).

We do steal the trick from alt_sha1_path() of returning a pointer to the
filled buffer, which makes a few conversions more convenient.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agosha1_file_name(): overwrite buffer instead of appending
Jeff King [Mon, 12 Nov 2018 14:48:56 +0000 (09:48 -0500)] 
sha1_file_name(): overwrite buffer instead of appending

The sha1_file_name() function is used to generate the path to a loose
object in the object directory. It doesn't make much sense for it to
append, since the the path we write may be absolute (i.e., you cannot
reliably build up a path with it). Because many callers use it with a
static buffer, they have to strbuf_reset() manually before each call
(and the other callers always use an empty buffer, so they don't care
either way). Let's handle this automatically.

Since we're changing the semantics, let's take the opportunity to give
it a more hash-neutral name (which will also catch any callers from
topics in flight).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agorename "alternate_object_database" to "object_directory"
Jeff King [Mon, 12 Nov 2018 14:48:47 +0000 (09:48 -0500)] 
rename "alternate_object_database" to "object_directory"

In preparation for unifying the handling of alt odb's and the normal
repo object directory, let's use a more neutral name. This patch is
purely mechanical, swapping the type name, and converting any variables
named "alt" to "odb". There should be no functional change, but it will
reduce the noise in subsequent diffs.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agosubmodule--helper: prefer strip_suffix() to ends_with()
Jeff King [Mon, 12 Nov 2018 14:47:04 +0000 (09:47 -0500)] 
submodule--helper: prefer strip_suffix() to ends_with()

Using strip_suffix() lets us avoid repeating ourselves. It also makes
the handling of "/" a bit less subtle (we strip one less character than
we matched in order to leave it in place, but we can just as easily
include the "/" when we add more path components).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agofsck: do not reuse child_process structs
Jeff King [Mon, 12 Nov 2018 14:46:54 +0000 (09:46 -0500)] 
fsck: do not reuse child_process structs

The run-command API makes no promises about what is left in a struct
child_process after a command finishes, and it's not safe to simply
reuse it again for a similar command. In particular:

 - if you use child->args or child->env_array, they are cleared after
   finish_command()

 - likewise, start_command() may point child->argv at child->args->argv;
   reusing that would lead to accessing freed memory

 - the in/out/err may hold pipe descriptors from the previous run

These two calls are _probably_ OK because they do not use any of those
features. But it's only by chance, and may break in the future; let's
reinitialize our struct for each program we run.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoNinth batch for 2.20
Junio C Hamano [Tue, 6 Nov 2018 06:51:23 +0000 (15:51 +0900)] 
Ninth batch for 2.20

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoMerge branch 'sg/test-verbose-log'
Junio C Hamano [Tue, 6 Nov 2018 06:50:23 +0000 (15:50 +0900)] 
Merge branch 'sg/test-verbose-log'

Our test scripts can now take the '-V' option as a synonym for the
'--verbose-log' option.

* sg/test-verbose-log:
  test-lib: introduce the '-V' short option for '--verbose-log'

6 years agoMerge branch 'rj/header-cleanup'
Junio C Hamano [Tue, 6 Nov 2018 06:50:23 +0000 (15:50 +0900)] 
Merge branch 'rj/header-cleanup'

Code cleanup.

* rj/header-cleanup:
  commit-reach.h: add missing declarations (hdr-check)
  ewok_rlw.h: add missing 'inline' to function definition
  fetch-object.h: add missing declaration (hdr-check)

6 years agoMerge branch 'ss/travis-ci-force-vm-mode'
Junio C Hamano [Tue, 6 Nov 2018 06:50:23 +0000 (15:50 +0900)] 
Merge branch 'ss/travis-ci-force-vm-mode'

The "container" mode of TravisCI is going away.  Our .travis.yml
file is getting prepared for the transition.

* ss/travis-ci-force-vm-mode:
  travis-ci: no longer use containers

6 years agoMerge branch 'sg/test-rebase-editor-fix'
Junio C Hamano [Tue, 6 Nov 2018 06:50:22 +0000 (15:50 +0900)] 
Merge branch 'sg/test-rebase-editor-fix'

* sg/test-rebase-editor-fix:
  t3404-rebase-interactive: test abbreviated commands

6 years agoMerge branch 'tb/char-may-be-unsigned'
Junio C Hamano [Tue, 6 Nov 2018 06:50:22 +0000 (15:50 +0900)] 
Merge branch 'tb/char-may-be-unsigned'

Build portability fix.

* tb/char-may-be-unsigned:
  path.c: char is not (always) signed

6 years agoMerge branch 'js/mingw-ns-filetime'
Junio C Hamano [Tue, 6 Nov 2018 06:50:21 +0000 (15:50 +0900)] 
Merge branch 'js/mingw-ns-filetime'

Windows port learned to use nano-second resolution file timestamps.

* js/mingw-ns-filetime:
  mingw: implement nanosecond-precision file times
  mingw: replace MSVCRT's fstat() with a Win32-based implementation
  mingw: factor out code to set stat() data

6 years agoMerge branch 'md/exclude-promisor-objects-fix'
Junio C Hamano [Tue, 6 Nov 2018 06:50:21 +0000 (15:50 +0900)] 
Merge branch 'md/exclude-promisor-objects-fix'

Operations on promisor objects make sense in the context of only a
small subset of the commands that internally use the revisions
machinery, but the "--exclude-promisor-objects" option were taken
and led to nonsense results by commands like "log", to which it
didn't make much sense.  This has been corrected.

* md/exclude-promisor-objects-fix:
  exclude-promisor-objects: declare when option is allowed
  Documentation/git-log.txt: do not show --exclude-promisor-objects

6 years agoMerge branch 'jw/send-email-no-auth'
Junio C Hamano [Tue, 6 Nov 2018 06:50:20 +0000 (15:50 +0900)] 
Merge branch 'jw/send-email-no-auth'

"git send-email" learned to disable SMTP authentication via the
"--smtp-auth=none" option, even when the smtp username is given
(which turns the authentication on by default).

* jw/send-email-no-auth:
  send-email: explicitly disable authentication

6 years agoMerge branch 'nd/submodule-unused-vars'
Junio C Hamano [Tue, 6 Nov 2018 06:50:20 +0000 (15:50 +0900)] 
Merge branch 'nd/submodule-unused-vars'

Code clean-up.

* nd/submodule-unused-vars:
  submodule.c: remove some of the_repository references

6 years agoMerge branch 'nd/unpack-trees-with-cache-tree'
Junio C Hamano [Tue, 6 Nov 2018 06:50:20 +0000 (15:50 +0900)] 
Merge branch 'nd/unpack-trees-with-cache-tree'

Trivial bugfix.

* nd/unpack-trees-with-cache-tree:
  read-cache: use of memory after it is freed

6 years agoMerge branch 'nd/completion-negation'
Junio C Hamano [Tue, 6 Nov 2018 06:50:19 +0000 (15:50 +0900)] 
Merge branch 'nd/completion-negation'

The command line completion machinery (in contrib/) has been
updated to allow the completion script to tweak the list of options
that are reported by the parse-options machinery correctly.

* nd/completion-negation:
  completion: fix __gitcomp_builtin no longer consider extra options

6 years agoMerge branch 'jt/upload-pack-v2-fix-shallow'
Junio C Hamano [Tue, 6 Nov 2018 06:50:19 +0000 (15:50 +0900)] 
Merge branch 'jt/upload-pack-v2-fix-shallow'

"git fetch" over protocol v2 into a shallow repository failed to
fetch full history behind a new tip of history that was diverged
before the cut-off point of the history that was previously fetched
shallowly.

* jt/upload-pack-v2-fix-shallow:
  upload-pack: clear flags before each v2 request
  upload-pack: make want_obj not global
  upload-pack: make have_obj not global

6 years agoMerge branch 'sb/submodule-url-to-absolute'
Junio C Hamano [Tue, 6 Nov 2018 06:50:19 +0000 (15:50 +0900)] 
Merge branch 'sb/submodule-url-to-absolute'

Some codepaths failed to form a proper URL when .gitmodules record
the URL to a submodule repository as relative to the repository of
superproject, which has been corrected.

* sb/submodule-url-to-absolute:
  submodule helper: convert relative URL to absolute URL if needed

6 years agoMerge branch 'js/shallow-and-fetch-prune'
Junio C Hamano [Tue, 6 Nov 2018 06:50:18 +0000 (15:50 +0900)] 
Merge branch 'js/shallow-and-fetch-prune'

"git repack" in a shallow clone did not correctly update the
shallow points in the repository, leading to a repository that
does not pass fsck.

* js/shallow-and-fetch-prune:
  repack -ad: prune the list of shallow commits
  shallow: offer to prune only non-existing entries
  repack: point out a bug handling stale shallow info

6 years agoMerge branch 'js/remote-archive-dwimfix'
Junio C Hamano [Tue, 6 Nov 2018 06:50:18 +0000 (15:50 +0900)] 
Merge branch 'js/remote-archive-dwimfix'

The logic to determine the archive type "git archive" uses did not
correctly kick in for "git archive --remote", which has been
corrected.

* js/remote-archive-dwimfix:
  archive: initialize archivers earlier

6 years agoMerge branch 'jc/http-curlver-warnings'
Junio C Hamano [Fri, 2 Nov 2018 15:53:59 +0000 (00:53 +0900)] 
Merge branch 'jc/http-curlver-warnings'

Warning message fix.

* jc/http-curlver-warnings:
  http: give curl version warnings consistently

6 years agoMerge branch 'js/mingw-http-ssl'
Junio C Hamano [Fri, 2 Nov 2018 15:53:58 +0000 (00:53 +0900)] 
Merge branch 'js/mingw-http-ssl'

On platforms with recent cURL library, http.sslBackend configuration
variable can be used to choose a different SSL backend at runtime.
The Windows port uses this mechanism to switch between OpenSSL and
Secure Channel while talking over the HTTPS protocol.

* js/mingw-http-ssl:
  http: when using Secure Channel, ignore sslCAInfo by default
  http: add support for disabling SSL revocation checks in cURL
  http: add support for selecting SSL backends at runtime

6 years agoMerge branch 'mg/gpg-fingerprint'
Junio C Hamano [Fri, 2 Nov 2018 15:53:58 +0000 (00:53 +0900)] 
Merge branch 'mg/gpg-fingerprint'

New "--pretty=format:" placeholders %GF and %GP that show the GPG
key fingerprints have been invented.

* mg/gpg-fingerprint:
  gpg-interface.c: obtain primary key fingerprint as well
  gpg-interface.c: support getting key fingerprint via %GF format
  gpg-interface.c: use flags to determine key/signer info presence

6 years agoMerge branch 'mg/gpg-parse-tighten'
Junio C Hamano [Fri, 2 Nov 2018 15:53:57 +0000 (00:53 +0900)] 
Merge branch 'mg/gpg-parse-tighten'

Detect and reject a signature block that has more than one GPG
signature.

* mg/gpg-parse-tighten:
  gpg-interface.c: detect and reject multiple signatures on commits

6 years agoMerge branch 'en/merge-cleanup-more'
Junio C Hamano [Fri, 2 Nov 2018 15:53:57 +0000 (00:53 +0900)] 
Merge branch 'en/merge-cleanup-more'

Further clean-up of merge-recursive machinery.

* en/merge-cleanup-more:
  merge-recursive: avoid showing conflicts with merge branch before HEAD
  merge-recursive: improve auto-merging messages with path collisions

6 years agoEighth batch for 2.20
Junio C Hamano [Thu, 1 Nov 2018 12:26:34 +0000 (21:26 +0900)] 
Eighth batch for 2.20

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agorebase: apply cocci patch
Junio C Hamano [Thu, 1 Nov 2018 12:44:41 +0000 (21:44 +0900)] 
rebase: apply cocci patch

Favor oideq() over !oidcmp() when checking for equality.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoMerge branch 'js/rebase-i-shortopt'
Junio C Hamano [Fri, 2 Nov 2018 02:04:59 +0000 (11:04 +0900)] 
Merge branch 'js/rebase-i-shortopt'

"git rebase -i" learned to take 'b' as the short form of 'break'
option in the todo list.

* js/rebase-i-shortopt:
  rebase -i: recognize short commands without arguments

6 years agoMerge branch 'js/rebase-i-break'
Junio C Hamano [Fri, 2 Nov 2018 02:04:58 +0000 (11:04 +0900)] 
Merge branch 'js/rebase-i-break'

"git rebase -i" learned a new insn, 'break', that the user can
insert in the to-do list.  Upon hitting it, the command returns
control back to the user.

* js/rebase-i-break:
  rebase -i: introduce the 'break' command
  rebase -i: clarify what happens on a failed `exec`

6 years agoMerge branch 'js/rebase-autostash-fix'
Junio C Hamano [Fri, 2 Nov 2018 02:04:58 +0000 (11:04 +0900)] 
Merge branch 'js/rebase-autostash-fix'

"git rebase" that has recently been rewritten in C had a few issues
in its "--autstash" feature, which have been corrected.

* js/rebase-autostash-fix:
  rebase --autostash: fix issue with dirty submodules
  rebase --autostash: demonstrate a problem with dirty submodules
  rebase (autostash): use an explicit OID to apply the stash
  rebase (autostash): store the full OID in <state-dir>/autostash
  rebase (autostash): avoid duplicate call to state_dir_path()

6 years agoMerge branch 'cb/printf-empty-format'
Junio C Hamano [Fri, 2 Nov 2018 02:04:57 +0000 (11:04 +0900)] 
Merge branch 'cb/printf-empty-format'

Build fix for a topic in flight.

* cb/printf-empty-format:
  sequencer: cleanup for gcc warning in non developer mode

6 years agoMerge branch 'jc/rebase-in-c-5-test-typofix'
Junio C Hamano [Fri, 2 Nov 2018 02:04:57 +0000 (11:04 +0900)] 
Merge branch 'jc/rebase-in-c-5-test-typofix'

Typofix.

* jc/rebase-in-c-5-test-typofix:
  rebase: fix typoes in error messages

6 years agoMerge branch 'pk/rebase-in-c-6-final'
Junio C Hamano [Fri, 2 Nov 2018 02:04:56 +0000 (11:04 +0900)] 
Merge branch 'pk/rebase-in-c-6-final'

The final step of rewriting "rebase -i" in C.

* pk/rebase-in-c-6-final:
  rebase: default to using the builtin rebase

6 years agoMerge branch 'js/rebase-in-c-5.5-work-with-rebase-i-in-c'
Junio C Hamano [Fri, 2 Nov 2018 02:04:56 +0000 (11:04 +0900)] 
Merge branch 'js/rebase-in-c-5.5-work-with-rebase-i-in-c'

"rebase" that has been rewritten learns the new calling convention
used by "rebase -i" that was rewritten in C, tying the loose end
between two GSoC topics that stomped on each other's toes.

* js/rebase-in-c-5.5-work-with-rebase-i-in-c:
  builtin rebase: prepare for builtin rebase -i

6 years agoMerge branch 'pk/rebase-in-c-5-test'
Junio C Hamano [Fri, 2 Nov 2018 02:04:55 +0000 (11:04 +0900)] 
Merge branch 'pk/rebase-in-c-5-test'

Rewrite "git rebase" in C.

* pk/rebase-in-c-5-test:
  builtin rebase: error out on incompatible option/mode combinations
  builtin rebase: use no-op editor when interactive is "implied"
  builtin rebase: show progress when connected to a terminal
  builtin rebase: fast-forward to onto if it is a proper descendant
  builtin rebase: optionally pass custom reflogs to reset_head()
  builtin rebase: optionally auto-detect the upstream

6 years agoMerge branch 'pk/rebase-in-c-4-opts'
Junio C Hamano [Fri, 2 Nov 2018 02:04:55 +0000 (11:04 +0900)] 
Merge branch 'pk/rebase-in-c-4-opts'

Rewrite "git rebase" in C.

* pk/rebase-in-c-4-opts:
  builtin rebase: support --root
  builtin rebase: add support for custom merge strategies
  builtin rebase: support `fork-point` option
  merge-base --fork-point: extract libified function
  builtin rebase: support --rebase-merges[=[no-]rebase-cousins]
  builtin rebase: support `--allow-empty-message` option
  builtin rebase: support `--exec`
  builtin rebase: support `--autostash` option
  builtin rebase: support `-C` and `--whitespace=<type>`
  builtin rebase: support `--gpg-sign` option
  builtin rebase: support `--autosquash`
  builtin rebase: support `keep-empty` option
  builtin rebase: support `ignore-date` option
  builtin rebase: support `ignore-whitespace` option
  builtin rebase: support --committer-date-is-author-date
  builtin rebase: support --rerere-autoupdate
  builtin rebase: support --signoff
  builtin rebase: allow selecting the rebase "backend"

6 years agoMerge branch 'pk/rebase-in-c-3-acts'
Junio C Hamano [Fri, 2 Nov 2018 02:04:54 +0000 (11:04 +0900)] 
Merge branch 'pk/rebase-in-c-3-acts'

Rewrite "git rebase" in C.

* pk/rebase-in-c-3-acts:
  builtin rebase: stop if `git am` is in progress
  builtin rebase: actions require a rebase in progress
  builtin rebase: support --edit-todo and --show-current-patch
  builtin rebase: support --quit
  builtin rebase: support --abort
  builtin rebase: support --skip
  builtin rebase: support --continue

6 years agoMerge branch 'pk/rebase-in-c-2-basic'
Junio C Hamano [Fri, 2 Nov 2018 02:04:53 +0000 (11:04 +0900)] 
Merge branch 'pk/rebase-in-c-2-basic'

Rewrite "git rebase" in C.

* pk/rebase-in-c-2-basic:
  builtin rebase: support `git rebase <upstream> <switch-to>`
  builtin rebase: only store fully-qualified refs in `options.head_name`
  builtin rebase: start a new rebase only if none is in progress
  builtin rebase: support --force-rebase
  builtin rebase: try to fast forward when possible
  builtin rebase: require a clean worktree
  builtin rebase: support the `verbose` and `diffstat` options
  builtin rebase: support --quiet
  builtin rebase: handle the pre-rebase hook and --no-verify
  builtin rebase: support `git rebase --onto A...B`
  builtin rebase: support --onto

6 years agoMerge branch 'ag/rebase-i-in-c'
Junio C Hamano [Fri, 2 Nov 2018 02:04:53 +0000 (11:04 +0900)] 
Merge branch 'ag/rebase-i-in-c'

Rewrite of the remaining "rebase -i" machinery in C.

* ag/rebase-i-in-c:
  rebase -i: move rebase--helper modes to rebase--interactive
  rebase -i: remove git-rebase--interactive.sh
  rebase--interactive2: rewrite the submodes of interactive rebase in C
  rebase -i: implement the main part of interactive rebase as a builtin
  rebase -i: rewrite init_basic_state() in C
  rebase -i: rewrite write_basic_state() in C
  rebase -i: rewrite the rest of init_revisions_and_shortrevisions() in C
  rebase -i: implement the logic to initialize $revisions in C
  rebase -i: remove unused modes and functions
  rebase -i: rewrite complete_action() in C
  t3404: todo list with commented-out commands only aborts
  sequencer: change the way skip_unnecessary_picks() returns its result
  sequencer: refactor append_todo_help() to write its message to a buffer
  rebase -i: rewrite checkout_onto() in C
  rebase -i: rewrite setup_reflog_action() in C
  sequencer: add a new function to silence a command, except if it fails
  rebase -i: rewrite the edit-todo functionality in C
  editor: add a function to launch the sequence editor
  rebase -i: rewrite append_todo_help() in C
  sequencer: make three functions and an enum from sequencer.c public

6 years agoMerge branch 'pk/rebase-in-c'
Junio C Hamano [Fri, 2 Nov 2018 02:04:52 +0000 (11:04 +0900)] 
Merge branch 'pk/rebase-in-c'

Rewrite of the "rebase" machinery in C.

* pk/rebase-in-c:
  builtin/rebase: support running "git rebase <upstream>"
  rebase: refactor common shell functions into their own file
  rebase: start implementing it as a builtin

6 years agoSeventh batch for 2.20
Junio C Hamano [Tue, 30 Oct 2018 06:44:45 +0000 (15:44 +0900)] 
Seventh batch for 2.20

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoMerge branch 'jk/uploadpack-packobjectshook-fix'
Junio C Hamano [Tue, 30 Oct 2018 06:43:50 +0000 (15:43 +0900)] 
Merge branch 'jk/uploadpack-packobjectshook-fix'

Code clean-up that results in a small bugfix.

* jk/uploadpack-packobjectshook-fix:
  upload-pack: fix broken if/else chain in config callback

6 years agoMerge branch 'uk/merge-subtree-doc-update'
Junio C Hamano [Tue, 30 Oct 2018 06:43:49 +0000 (15:43 +0900)] 
Merge branch 'uk/merge-subtree-doc-update'

Belated documentation update to adjust to a new world order that
happened a yew years ago.

* uk/merge-subtree-doc-update:
  howto/using-merge-subtree: mention --allow-unrelated-histories

6 years agoMerge branch 'cb/compat-mmap-is-private-read-only'
Junio C Hamano [Tue, 30 Oct 2018 06:43:49 +0000 (15:43 +0900)] 
Merge branch 'cb/compat-mmap-is-private-read-only'

Code tightening.

* cb/compat-mmap-is-private-read-only:
  compat: make sure git_mmap is not expected to write

6 years agoMerge branch 'dl/mergetool-gui-option'
Junio C Hamano [Tue, 30 Oct 2018 06:43:48 +0000 (15:43 +0900)] 
Merge branch 'dl/mergetool-gui-option'

"git mergetool" learned to take the "--[no-]gui" option, just like
"git difftool" does.

* dl/mergetool-gui-option:
  doc: document diff/merge.guitool config keys
  completion: support `git mergetool --[no-]gui`
  mergetool: accept -g/--[no-]gui as arguments

6 years agoMerge branch 'js/mingw-load-sys-dll'
Junio C Hamano [Tue, 30 Oct 2018 06:43:48 +0000 (15:43 +0900)] 
Merge branch 'js/mingw-load-sys-dll'

The way DLLs are loaded on the Windows port has been improved.

* js/mingw-load-sys-dll:
  mingw: load system libraries the recommended way

6 years agoMerge branch 'js/mingw-getcwd'
Junio C Hamano [Tue, 30 Oct 2018 06:43:48 +0000 (15:43 +0900)] 
Merge branch 'js/mingw-getcwd'

The way the Windows port figures out the current directory has been
improved.

* js/mingw-getcwd:
  mingw: fix getcwd when the parent directory cannot be queried
  mingw: ensure `getcwd()` reports the correct case

6 years agoMerge branch 'cb/khash-maybe-unused-function'
Junio C Hamano [Tue, 30 Oct 2018 06:43:48 +0000 (15:43 +0900)] 
Merge branch 'cb/khash-maybe-unused-function'

Build fix.

* cb/khash-maybe-unused-function:
  khash: silence -Wunused-function for delta-islands
  commit-slabs: move MAYBE_UNUSED out

6 years agoMerge branch 'jc/cocci-preincr'
Junio C Hamano [Tue, 30 Oct 2018 06:43:48 +0000 (15:43 +0900)] 
Merge branch 'jc/cocci-preincr'

Code cleanup.

* jc/cocci-preincr:
  fsck: s/++i > 1/i++/
  cocci: simplify "if (++u > 1)" to "if (u++)"

6 years agoMerge branch 'ss/rename-tests'
Junio C Hamano [Tue, 30 Oct 2018 06:43:47 +0000 (15:43 +0900)] 
Merge branch 'ss/rename-tests'

Reorganize some tests and rename them; "ls t/" now gives a better
overview of what is tested for these scripts than before.

* ss/rename-tests:
  t7501: rename commit test to comply with naming convention
  t7500: rename commit tests script to comply with naming convention
  t7502: rename commit test script to comply with naming convention
  t7509: cleanup description and filename
  t2000: rename and combine checkout clash tests

6 years agoMerge branch 'ah/doc-updates'
Junio C Hamano [Tue, 30 Oct 2018 06:43:47 +0000 (15:43 +0900)] 
Merge branch 'ah/doc-updates'

Doc updates.

* ah/doc-updates:
  doc: fix formatting in git-update-ref
  doc: fix indentation of listing blocks in gitweb.conf.txt
  doc: fix descripion for 'git tag --format'
  doc: fix inappropriate monospace formatting
  doc: fix ASCII art tab spacing
  doc: clarify boundaries of 'git worktree list --porcelain'

6 years agoMerge branch 'ds/reachable'
Junio C Hamano [Tue, 30 Oct 2018 06:43:47 +0000 (15:43 +0900)] 
Merge branch 'ds/reachable'

Trivial bugfix.

* ds/reachable:
  commit-reach: fix cast in compare_commits_by_gen()

6 years agoMerge branch 'jc/receive-deny-current-branch-fix'
Junio C Hamano [Tue, 30 Oct 2018 06:43:46 +0000 (15:43 +0900)] 
Merge branch 'jc/receive-deny-current-branch-fix'

The receive.denyCurrentBranch=updateInstead codepath kicked in even
when the push should have been rejected due to other reasons, such
as it does not fast-forward or the update-hook rejects it, which
has been corrected.

* jc/receive-deny-current-branch-fix:
  receive: denyCurrentBranch=updateinstead should not blindly update

6 years agoMerge branch 'ds/ci-commit-graph-and-midx'
Junio C Hamano [Tue, 30 Oct 2018 06:43:46 +0000 (15:43 +0900)] 
Merge branch 'ds/ci-commit-graph-and-midx'

One of our CI tests to run with "unusual/experimental/random"
settings now also uses commit-graph and midx.

* ds/ci-commit-graph-and-midx:
  ci: add optional test variables

6 years agoMerge branch 'jk/unused-function'
Junio C Hamano [Tue, 30 Oct 2018 06:43:46 +0000 (15:43 +0900)] 
Merge branch 'jk/unused-function'

Developer support.

* jk/unused-function:
  config.mak.dev: enable -Wunused-function

6 years agoMerge branch 'cb/remove-dead-init'
Junio C Hamano [Tue, 30 Oct 2018 06:43:45 +0000 (15:43 +0900)] 
Merge branch 'cb/remove-dead-init'

Code clean-up.

* cb/remove-dead-init:
  multi-pack-index: avoid dead store for struct progress
  unpack-trees: avoid dead store for struct progress

6 years agoMerge branch 'js/diff-notice-has-drive-prefix'
Junio C Hamano [Tue, 30 Oct 2018 06:43:45 +0000 (15:43 +0900)] 
Merge branch 'js/diff-notice-has-drive-prefix'

Under certain circumstances, "git diff D:/a/b/c D:/a/b/d" on
Windows would strip initial parts from the paths because they
were not recognized as absolute, which has been corrected.

* js/diff-notice-has-drive-prefix:
  diff: don't attempt to strip prefix from absolute Windows paths

6 years agoMerge branch 'ot/ref-filter-plug-leaks'
Junio C Hamano [Tue, 30 Oct 2018 06:43:44 +0000 (15:43 +0900)] 
Merge branch 'ot/ref-filter-plug-leaks'

Plugging a handful of memory leaks in the ref-filter codepath.

* ot/ref-filter-plug-leaks:
  ref-filter: free item->value and item->value->s
  ls-remote: release memory instead of UNLEAK
  ref-filter: free memory from used_atom

6 years agoMerge branch 'ds/reachable-first-parent-fix'
Junio C Hamano [Tue, 30 Oct 2018 06:43:44 +0000 (15:43 +0900)] 
Merge branch 'ds/reachable-first-parent-fix'

Correct performance regression in commit ancestry computation when
generation numbers are involved.

* ds/reachable-first-parent-fix:
  commit-reach: fix first-parent heuristic

6 years agoMerge branch 'rj/header-guards'
Junio C Hamano [Tue, 30 Oct 2018 06:43:44 +0000 (15:43 +0900)] 
Merge branch 'rj/header-guards'

Code clean-up.

* rj/header-guards:
  headers: normalize the spelling of some header guards

6 years agoMerge branch 'jk/test-tool-help'
Junio C Hamano [Tue, 30 Oct 2018 06:43:44 +0000 (15:43 +0900)] 
Merge branch 'jk/test-tool-help'

Developer support.

* jk/test-tool-help:
  test-tool: show tool list on error

6 years agoMerge branch 'sg/doc-show-branch-typofix'
Junio C Hamano [Tue, 30 Oct 2018 06:43:44 +0000 (15:43 +0900)] 
Merge branch 'sg/doc-show-branch-typofix'

Docfix.

* sg/doc-show-branch-typofix:
  doc: fix small typo in git show-branch

6 years agoMerge branch 'sb/submodule-helper-remove-cruft'
Junio C Hamano [Tue, 30 Oct 2018 06:43:43 +0000 (15:43 +0900)] 
Merge branch 'sb/submodule-helper-remove-cruft'

Code clean-up.

* sb/submodule-helper-remove-cruft:
  builtin/submodule--helper: remove debugging leftover tracing

6 years agoMerge branch 'js/pack-objects-mutex-init-fix'
Junio C Hamano [Tue, 30 Oct 2018 06:43:43 +0000 (15:43 +0900)] 
Merge branch 'js/pack-objects-mutex-init-fix'

A mutex used in "git pack-objects" were not correctly initialized
and this caused "git repack" to dump core on Windows.

* js/pack-objects-mutex-init-fix:
  pack-objects (mingw): initialize `packing_data` mutex in the correct spot
  pack-objects (mingw): demonstrate a segmentation fault with large deltas
  pack-objects: fix typo 'detla' -> 'delta'

6 years agoMerge branch 'tq/branch-style-fix'
Junio C Hamano [Tue, 30 Oct 2018 06:43:43 +0000 (15:43 +0900)] 
Merge branch 'tq/branch-style-fix'

Code clean-up.

* tq/branch-style-fix:
  branch: trivial style fix

6 years agoMerge branch 'tq/branch-create-wo-branch-get'
Junio C Hamano [Tue, 30 Oct 2018 06:43:42 +0000 (15:43 +0900)] 
Merge branch 'tq/branch-create-wo-branch-get'

Code clean-up.

* tq/branch-create-wo-branch-get:
  builtin/branch.c: remove useless branch_get

6 years agoMerge branch 'bc/hash-transition-part-15'
Junio C Hamano [Tue, 30 Oct 2018 06:43:42 +0000 (15:43 +0900)] 
Merge branch 'bc/hash-transition-part-15'

More codepaths are moving away from hardcoded hash sizes.

* bc/hash-transition-part-15:
  rerere: convert to use the_hash_algo
  submodule: make zero-oid comparison hash function agnostic
  apply: rename new_sha1_prefix and old_sha1_prefix
  apply: replace hard-coded constants
  tag: express constant in terms of the_hash_algo
  transport: use parse_oid_hex instead of a constant
  upload-pack: express constants in terms of the_hash_algo
  refs/packed-backend: express constants using the_hash_algo
  packfile: express constants in terms of the_hash_algo
  pack-revindex: express constants in terms of the_hash_algo
  builtin/fetch-pack: remove constants with parse_oid_hex
  builtin/mktree: remove hard-coded constant
  builtin/repack: replace hard-coded constants
  pack-bitmap-write: use GIT_MAX_RAWSZ for allocation
  object_id.cocci: match only expressions of type 'struct object_id'

6 years agoMerge branch 'sb/strbuf-h-update'
Junio C Hamano [Tue, 30 Oct 2018 06:43:41 +0000 (15:43 +0900)] 
Merge branch 'sb/strbuf-h-update'

Code clean-up to serve as a BCP example.

* sb/strbuf-h-update:
  strbuf.h: format according to coding guidelines

6 years agoMerge branch 'jk/run-command-notdot'
Junio C Hamano [Tue, 30 Oct 2018 06:43:41 +0000 (15:43 +0900)] 
Merge branch 'jk/run-command-notdot'

The implementation of run_command() API on the UNIX platforms had a
bug that caused a command not on $PATH to be found in the current
directory.

* jk/run-command-notdot:
  run-command: mark path lookup errors with ENOENT

6 years agoMerge branch 'tb/filter-alternate-refs'
Junio C Hamano [Tue, 30 Oct 2018 06:43:41 +0000 (15:43 +0900)] 
Merge branch 'tb/filter-alternate-refs'

Test fix.

* tb/filter-alternate-refs:
  t5410: use longer path for sample script
  Documentation/config.txt: fix typo in core.alternateRefsCommand

6 years agoMerge branch 'rv/send-email-cc-misc-by'
Junio C Hamano [Tue, 30 Oct 2018 06:43:40 +0000 (15:43 +0900)] 
Merge branch 'rv/send-email-cc-misc-by'

"git send-email" learned to grab address-looking string on any
trailer whose name ends with "-by"; --suppress-cc=misc-by on the
command line, or setting sendemail.suppresscc configuration
variable to "misc-by", can be used to disable this behaviour.

This is a backward-incompatible change that may surprise existing
users.

* rv/send-email-cc-misc-by:
  send-email: also pick up cc addresses from -by trailers
  send-email: only consider lines containing @ or <> for automatic Cc'ing
  Documentation/git-send-email.txt: style fixes

6 years agoMerge branch 'lm/range-diff-submodule-fix'
Junio C Hamano [Tue, 30 Oct 2018 06:43:40 +0000 (15:43 +0900)] 
Merge branch 'lm/range-diff-submodule-fix'

"git range-diff" did not work well when the compared ranges had
changes in submodules and the "--submodule=log" was used.

* lm/range-diff-submodule-fix:
  range-diff: allow to diff files regardless of submodule config

6 years agoMerge branch 'ch/subtree-build'
Junio C Hamano [Tue, 30 Oct 2018 06:43:39 +0000 (15:43 +0900)] 
Merge branch 'ch/subtree-build'

Build update for "git subtree" (in contrib/) documentation pages.

* ch/subtree-build:
  Revert "subtree: make install targets depend on build targets"
  subtree: make install targets depend on build targets
  subtree: add build targets 'man' and 'html'

6 years agoMerge branch 'md/filter-trees'
Junio C Hamano [Tue, 30 Oct 2018 06:43:39 +0000 (15:43 +0900)] 
Merge branch 'md/filter-trees'

The "rev-list --filter" feature learned to exclude all trees via
"tree:0" filter.

* md/filter-trees:
  list-objects: support for skipping tree traversal
  filter-trees: code clean-up of tests
  list-objects-filter: implement filter tree:0
  list-objects-filter-options: do not over-strbuf_init
  list-objects-filter: use BUG rather than die
  revision: mark non-user-given objects instead
  rev-list: handle missing tree objects properly
  list-objects: always parse trees gently
  list-objects: refactor to process_tree_contents
  list-objects: store common func args in struct

6 years agotest-lib: introduce the '-V' short option for '--verbose-log'
SZEDER Gábor [Mon, 29 Oct 2018 12:13:59 +0000 (13:13 +0100)] 
test-lib: introduce the '-V' short option for '--verbose-log'

'--verbose-log' is one of the most useful and thus most frequently
used test options, but due to its length it's a pain to type on the
command line.

Let's introduce the corresponding short option '-V' to save some
keystrokes.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agocommit-reach.h: add missing declarations (hdr-check)
Ramsay Jones [Sat, 27 Oct 2018 01:53:57 +0000 (02:53 +0100)] 
commit-reach.h: add missing declarations (hdr-check)

Add the necessary #includes and forward declarations to allow the header
file to pass the 'hdr-check' target.

Note that, since this header includes the commit-slab implementation
header file (indirectly via commit-slab.h), some of the commit-slab
inline functions (e.g contains_cache_at_peek()) will not compile without
the complete type of 'struct commit'. Hence, we replace the forward
declaration of 'struct commit' with the an #include of the 'commit.h'
header file.

It is possible, using the 'commit-slab-{decl,impl}.h' files, to avoid
this inclusion of the 'commit.h' header. Commit a9f1f1f9f8 ("commit-slab.h:
code split", 2018-05-19) separated the commit-slab interface from its
implementation, to allow for the definition of a public commit-slab data
structure. This enabled us to avoid including the commit-slab implementation
in a header file, which could result in the replication of the commit-slab
functions in each compilation unit in which it was included.

Indeed, if you compile with optimizations disabled, then run this script:

  $ cat -n dup-static.sh
       1 #!/bin/sh
       2
       3 nm $1 | grep ' t ' | cut -d' ' -f3 | sort | uniq -c |
       4  sort -rn | grep -v '      1'
  $

  $ ./dup-static.sh git | grep contains
       24 init_contains_cache_with_stride
       24 init_contains_cache
       24 contains_cache_peek
       24 contains_cache_at_peek
       24 contains_cache_at
       24 clear_contains_cache
  $

you will find 24 copies of the commit-slab routines for the contains_cache.
Of course, when you enable optimizations again, these duplicate static
functions (mostly) disappear. Compiling with gcc at -O2, leaves two static
functions, thus:

  $ nm commit-reach.o | grep contains_cache
  0000000000000870 t contains_cache_at_peek.isra.1.constprop.6
  $ nm ref-filter.o | grep contains_cache
  00000000000002b0 t clear_contains_cache.isra.14
  $

However, using a shared 'contains_cache' would result in all six of the
above functions as external public functions in the git binary. At present,
only three of these functions are actually called, so the trade-off
seems to favour letting the compiler inline the commit-slab functions.

Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoewok_rlw.h: add missing 'inline' to function definition
Ramsay Jones [Sat, 27 Oct 2018 01:52:05 +0000 (02:52 +0100)] 
ewok_rlw.h: add missing 'inline' to function definition

The 'ewok_rlw.h' header file contains the rlw_get_run_bit() function
definition, which is marked as 'static' but not 'inline'. At least when
compiled by gcc, with the default -O2 optimization level, the function
is actually inlined and leaves no static version in the ewah_bitmap.o
and ewah_rlw.o object files. Despite this, add the missing 'inline'
keyword to better describe the intended behaviour.

Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agofetch-object.h: add missing declaration (hdr-check)
Ramsay Jones [Sat, 27 Oct 2018 01:50:02 +0000 (02:50 +0100)] 
fetch-object.h: add missing declaration (hdr-check)

Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agot3404-rebase-interactive: test abbreviated commands
Johannes Sixt [Sat, 27 Oct 2018 08:08:01 +0000 (10:08 +0200)] 
t3404-rebase-interactive: test abbreviated commands

Make sure that each short command is tested at least once. To
not exacerbate the runtime of the test script, do not add new
tests, but modify existing ones according to these criteria:

- The test does not have a prerequisite.
- The 'git rebase' command is not guarded by test_must_fail.

The pick commands are optional in the FAKE_LINES variable, but
when used, they do end up in the insn sheet. Test them, too.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agosequencer: cleanup for gcc warning in non developer mode
Carlo Marcelo Arenas Belón [Thu, 25 Oct 2018 09:38:54 +0000 (02:38 -0700)] 
sequencer: cleanup for gcc warning in non developer mode

as shown by:

  sequencer.c: In function ‘write_basic_state’:
  sequencer.c:2392:37: warning: zero-length gnu_printf format string [-Wformat-zero-length]
     write_file(rebase_path_verbose(), "");

where write_file will create an empty file if told to write an empty string
as can be inferred by the previous call

the somehow more convoluted syntax works around the issue by providing a non
empty format string and is already being used for the abort safety file since
1e41229d96 ("sequencer: make sequencer abort safer", 2016-12-07)

Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoSixth batch for 2.20
Junio C Hamano [Fri, 26 Oct 2018 05:53:16 +0000 (14:53 +0900)] 
Sixth batch for 2.20

Signed-off-by: Junio C Hamano <gitster@pobox.com>
6 years agoMerge branch 'js/mingw-default-ident'
Junio C Hamano [Fri, 26 Oct 2018 05:22:15 +0000 (14:22 +0900)] 
Merge branch 'js/mingw-default-ident'

The logic to select the default user name and e-mail on Windows has
been improved.

* js/mingw-default-ident:
  mingw: use domain information for default email
  getpwuid(mingw): provide a better default for the user name
  getpwuid(mingw): initialize the structure only once

6 years agoMerge branch 'ld/p4-unshelve'
Junio C Hamano [Fri, 26 Oct 2018 05:22:15 +0000 (14:22 +0900)] 
Merge branch 'ld/p4-unshelve'

"git p4 unshelve" improvements.

* ld/p4-unshelve:
  git-p4: fully support unshelving changelists
  git-p4: unshelve into refs/remotes/p4-unshelved, not refs/remotes/p4/unshelved
  git-p4: do not fail in verbose mode for missing 'fileSize' key

6 years agoMerge branch 'du/cherry-is-plumbing'
Junio C Hamano [Fri, 26 Oct 2018 05:22:14 +0000 (14:22 +0900)] 
Merge branch 'du/cherry-is-plumbing'

Doc update to mark "git cherry" as a plumbing command.

* du/cherry-is-plumbing:
  doc: move git-cherry to plumbing

6 years agoMerge branch 'ab/gc-doc-update'
Junio C Hamano [Fri, 26 Oct 2018 05:22:14 +0000 (14:22 +0900)] 
Merge branch 'ab/gc-doc-update'

The documentation of "git gc" has been updated to mention that it
is no longer limited to "pruning away crufts" but also updates
ancillary files like commit-graph as a part of repository
optimization.

* ab/gc-doc-update:
  gc doc: mention the commit-graph in the intro

6 years agoMerge branch 'js/fuzzer'
Junio C Hamano [Fri, 26 Oct 2018 05:22:13 +0000 (14:22 +0900)] 
Merge branch 'js/fuzzer'

An experiment to fuzz test a few areas, hopefully we can gain more
coverage to various areas.

* js/fuzzer:
  fuzz: add fuzz testing for packfile indices.
  fuzz: add basic fuzz testing target.

6 years agoMerge branch 'rv/alias-help'
Junio C Hamano [Fri, 26 Oct 2018 05:22:13 +0000 (14:22 +0900)] 
Merge branch 'rv/alias-help'

"git cmd --help" when "cmd" is aliased used to only say "cmd is
aliased to ...".  Now it shows that to the standard error stream
and runs "git $cmd --help" where $cmd is the first word of the
alias expansion.

This could be misleading for those who alias a command with options
(e.g. with "[alias] cpn = cherry-pick -n", "git cpn --help" would
show the manual of "cherry-pick", and the reader would not be told
to pay close attention to the part that describes the "--no-commit"
option until closing the pager that showed the contents of the
manual, if the pager is configured to restore the original screen,
or would not be told at all, if the pager simply makes the message
on the standard error scroll away.

* rv/alias-help:
  git-help.txt: document "git help cmd" vs "git cmd --help" for aliases
  git.c: handle_alias: prepend alias info when first argument is -h
  help: redirect to aliased commands for "git cmd --help"

6 years agoMerge branch 'sb/diff-emit-line-ws-markup-cleanup'
Junio C Hamano [Fri, 26 Oct 2018 05:22:13 +0000 (14:22 +0900)] 
Merge branch 'sb/diff-emit-line-ws-markup-cleanup'

Code clean-up.

* sb/diff-emit-line-ws-markup-cleanup:
  diff.c: pass sign_index to emit_line_ws_markup

6 years agoMerge branch 'du/get-tar-commit-id-is-plumbing'
Junio C Hamano [Fri, 26 Oct 2018 05:22:12 +0000 (14:22 +0900)] 
Merge branch 'du/get-tar-commit-id-is-plumbing'

Doc update to mark "git get-tar-commit-id" as a plumbing command.

* du/get-tar-commit-id-is-plumbing:
  doc: move git-get-tar-commit-id to plumbing

6 years agoMerge branch 'mm/doc-no-dashed-git'
Junio C Hamano [Fri, 26 Oct 2018 05:22:12 +0000 (14:22 +0900)] 
Merge branch 'mm/doc-no-dashed-git'

Doc update.

* mm/doc-no-dashed-git:
  doc: fix a typo and clarify a sentence

6 years agoMerge branch 'du/rev-parse-is-plumbing'
Junio C Hamano [Fri, 26 Oct 2018 05:22:11 +0000 (14:22 +0900)] 
Merge branch 'du/rev-parse-is-plumbing'

Doc update.

* du/rev-parse-is-plumbing:
  doc: move git-rev-parse from porcelain to plumbing

6 years agoMerge branch 'np/log-graph-octopus-fix'
Junio C Hamano [Fri, 26 Oct 2018 05:22:11 +0000 (14:22 +0900)] 
Merge branch 'np/log-graph-octopus-fix'

"git log --graph" showing an octopus merge sometimes miscounted the
number of display columns it is consuming to show the merge and its
parent commits, which has been corrected.

* np/log-graph-octopus-fix:
  log: fix coloring of certain octopus merge shapes

6 years agoMerge branch 'sg/split-index-racefix'
Junio C Hamano [Fri, 26 Oct 2018 05:22:10 +0000 (14:22 +0900)] 
Merge branch 'sg/split-index-racefix'

The codepath to support the experimental split-index mode had
remaining "racily clean" issues fixed.

* sg/split-index-racefix:
  split-index: BUG() when cache entry refers to non-existing shared entry
  split-index: smudge and add racily clean cache entries to split index
  split-index: don't compare cached data of entries already marked for split index
  split-index: count the number of deleted entries
  t1700-split-index: date back files to avoid racy situations
  split-index: add tests to demonstrate the racy split index problem
  t1700-split-index: document why FSMONITOR is disabled in this test script

6 years agoMerge branch 'ds/coverage-diff'
Junio C Hamano [Fri, 26 Oct 2018 05:22:10 +0000 (14:22 +0900)] 
Merge branch 'ds/coverage-diff'

The result of coverage test can be combined with "git blame" to
check the test coverage of code introduced recently with a new
'coverage-diff' tool (in contrib/).

* ds/coverage-diff:
  contrib: add coverage-diff script

6 years agoMerge branch 'bc/editorconfig'
Junio C Hamano [Fri, 26 Oct 2018 05:22:09 +0000 (14:22 +0900)] 
Merge branch 'bc/editorconfig'

To help developers, an EditorConfig file that attempts to follow
the project convention has been added.

* bc/editorconfig:
  editorconfig: indicate settings should be kept in sync
  editorconfig: provide editor settings for Git developers