]> Kevux Git Server - rit/log
rit
4 years agoMerge branch 'ab/attribute-format'
Junio C Hamano [Wed, 28 Jul 2021 20:17:59 +0000 (13:17 -0700)]
Merge branch 'ab/attribute-format'

Many "printf"-like helper functions we have have been annotated
with __attribute__() to catch placeholder/parameter mismatches.

* ab/attribute-format:
  advice.h: add missing __attribute__((format)) & fix usage
  *.h: add a few missing __attribute__((format))
  *.c static functions: add missing __attribute__((format))
  sequencer.c: move static function to avoid forward decl
  *.c static functions: don't forward-declare __attribute__

4 years agoMerge branch 'jk/log-decorate-optim'
Junio C Hamano [Wed, 28 Jul 2021 20:17:58 +0000 (13:17 -0700)]
Merge branch 'jk/log-decorate-optim'

Optimize "git log" for cases where we wasted cycles to load ref
decoration data that may not be needed.

* jk/log-decorate-optim:
  load_ref_decorations(): fix decoration with tags
  add_ref_decoration(): rename s/type/deco_type/
  load_ref_decorations(): avoid parsing non-tag objects
  object.h: add lookup_object_by_type() function
  object.h: expand docstring for lookup_unknown_object()
  log: avoid loading decorations for userformats that don't need it
  pretty.h: update and expand docstring for userformat_find_requirements()

4 years agoMerge branch 'sm/worktree-add-lock'
Junio C Hamano [Wed, 28 Jul 2021 20:17:58 +0000 (13:17 -0700)]
Merge branch 'sm/worktree-add-lock'

"git worktree add --lock" learned to record why the worktree is
locked with a custom message.

* sm/worktree-add-lock:
  worktree: teach `add` to accept --reason <string> with --lock
  worktree: mark lock strings with `_()` for translation
  t2400: clean up '"add" worktree with lock' test

4 years agoMerge branch 'ew/many-alternate-optim'
Junio C Hamano [Wed, 28 Jul 2021 20:17:57 +0000 (13:17 -0700)]
Merge branch 'ew/many-alternate-optim'

Optimization for repositories with many alternate object store.

* ew/many-alternate-optim:
  oidtree: a crit-bit tree for odb_loose_cache
  oidcpy_with_padding: constify `src' arg
  make object_directory.loose_objects_subdir_seen a bitmap
  avoid strlen via strbuf_addstr in link_alt_odb_entry
  speed up alt_odb_usable() with many alternates

4 years agoMerge branch 'hj/commit-allow-empty-message'
Junio C Hamano [Wed, 28 Jul 2021 20:17:57 +0000 (13:17 -0700)]
Merge branch 'hj/commit-allow-empty-message'

"git commit --allow-empty-message" won't abort the operation upon
an empty message, but the hint shown in the editor said otherwise.

* hj/commit-allow-empty-message:
  commit: remove irrelavent prompt on `--allow-empty-message`
  commit: reorganise commit hint strings

4 years agoMerge branch 'dl/packet-read-response-end-fix'
Junio C Hamano [Wed, 28 Jul 2021 20:17:56 +0000 (13:17 -0700)]
Merge branch 'dl/packet-read-response-end-fix'

Error message update.

* dl/packet-read-response-end-fix:
  pkt-line: replace "stateless separator" with "response end"

4 years agoThe sixth batch
Junio C Hamano [Wed, 21 Jul 2021 20:32:38 +0000 (13:32 -0700)]
The sixth batch

Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoMerge branch 'bc/rev-list-without-commit-line'
Junio C Hamano [Thu, 22 Jul 2021 20:05:56 +0000 (13:05 -0700)]
Merge branch 'bc/rev-list-without-commit-line'

"git rev-list" learns to omit the "commit <object-name>" header
lines from the output with the `--no-commit-header` option.

* bc/rev-list-without-commit-line:
  rev-list: add option for --pretty=format without header

4 years agoMerge branch 'ab/imap-send-read-everything-simplify'
Junio C Hamano [Thu, 22 Jul 2021 20:05:56 +0000 (13:05 -0700)]
Merge branch 'ab/imap-send-read-everything-simplify'

Code simplification.

* ab/imap-send-read-everything-simplify:
  imap-send.c: use less verbose strbuf_fread() idiom

4 years agoMerge branch 'ab/gitignore-discovery-doc'
Junio C Hamano [Thu, 22 Jul 2021 20:05:55 +0000 (13:05 -0700)]
Merge branch 'ab/gitignore-discovery-doc'

Doc update.

* ab/gitignore-discovery-doc:
  docs: .gitignore parsing is to the top of the repo

4 years agoMerge branch 'js/ci-windows-update'
Junio C Hamano [Thu, 22 Jul 2021 20:05:55 +0000 (13:05 -0700)]
Merge branch 'js/ci-windows-update'

GitHub Actions / CI update.

* js/ci-windows-update:
  ci: accelerate the checkout
  ci (vs-build): build with NO_GETTEXT
  artifacts-tar: respect NO_GETTEXT
  ci (windows): transfer also the Git-tracked files to the test jobs
  ci: upgrade to using actions/{up,down}load-artifacts v2
  ci (vs-build): use `cmd` to copy the DLLs, not `powershell`
  ci: use the new GitHub Action to download git-sdk-64-minimal

4 years agoMerge branch 'ab/send-email-optim'
Junio C Hamano [Thu, 22 Jul 2021 20:05:54 +0000 (13:05 -0700)]
Merge branch 'ab/send-email-optim'

"git send-email" optimization.

* ab/send-email-optim:
  perl: nano-optimize by replacing Cwd::cwd() with Cwd::getcwd()
  send-email: move trivial config handling to Perl
  perl: lazily load some common Git.pm setup code
  send-email: lazily load modules for a big speedup
  send-email: get rid of indirect object syntax
  send-email: use function syntax instead of barewords
  send-email: lazily shell out to "git var"
  send-email: lazily load config for a big speedup
  send-email: copy "config_regxp" into git-send-email.perl
  send-email: refactor sendemail.smtpencryption config parsing
  send-email: remove non-working support for "sendemail.smtpssl"
  send-email tests: test for boolean variables without a value
  send-email tests: support GIT_TEST_PERL_FATAL_WARNINGS=true

4 years agoMerge branch 'jk/typofix'
Junio C Hamano [Thu, 22 Jul 2021 20:05:53 +0000 (13:05 -0700)]
Merge branch 'jk/typofix'

Typofix.

* jk/typofix:
  doc/rev-list-options: fix duplicate word typo

4 years agoThe fifth batch
Junio C Hamano [Fri, 16 Jul 2021 23:56:24 +0000 (16:56 -0700)]
The fifth batch

Signed-off-by: Junio C Hamano <gitster@pobox.com>
4 years agoMerge branch 'ds/gender-neutral-doc'
Junio C Hamano [Sat, 17 Jul 2021 00:42:53 +0000 (17:42 -0700)]
Merge branch 'ds/gender-neutral-doc'

Update the documentation not to assume users are of certain gender
and adds to guidelines to do so.

* ds/gender-neutral-doc:
  *: fix typos
  comments: avoid using the gender of our users
  doc: avoid using the gender of other people

4 years agoMerge branch 'jt/partial-clone-submodule-1'
Junio C Hamano [Sat, 17 Jul 2021 00:42:53 +0000 (17:42 -0700)]
Merge branch 'jt/partial-clone-submodule-1'

Prepare the internals for lazily fetching objects in submodules
from their promisor remotes.

* jt/partial-clone-submodule-1:
  promisor-remote: teach lazy-fetch in any repo
  run-command: refactor subprocess env preparation
  submodule: refrain from filtering GIT_CONFIG_COUNT
  promisor-remote: support per-repository config
  repository: move global r_f_p_c to repo struct

4 years agoMerge branch 'ab/struct-init'
Junio C Hamano [Sat, 17 Jul 2021 00:42:52 +0000 (17:42 -0700)]
Merge branch 'ab/struct-init'

Code cleanup around struct_type_init() functions.

* ab/struct-init:
  string-list.h users: change to use *_{nodup,dup}()
  string-list.[ch]: add a string_list_init_{nodup,dup}()
  dir.[ch]: replace dir_init() with DIR_INIT
  *.c *_init(): define in terms of corresponding *_INIT macro
  *.h: move some *_INIT to designated initializers

4 years agoMerge branch 'dd/test-stdout-count-lines'
Junio C Hamano [Sat, 17 Jul 2021 00:42:52 +0000 (17:42 -0700)]
Merge branch 'dd/test-stdout-count-lines'

Tiny test clean-up.

* dd/test-stdout-count-lines:
  t6402: preserve git exit status code
  t6400: preserve git ls-files exit status code
  test-lib-functions: introduce test_stdout_line_count

4 years agoMerge branch 'hn/refs-test-cleanup'
Junio C Hamano [Sat, 17 Jul 2021 00:42:52 +0000 (17:42 -0700)]
Merge branch 'hn/refs-test-cleanup'

Test clean-up.

* hn/refs-test-cleanup:
  t7509: avoid direct file access for writing CHERRY_PICK_HEAD
  t1415: avoid direct filesystem access for writing refs

4 years agoMerge branch 'rs/khash-alloc-cleanup'
Junio C Hamano [Sat, 17 Jul 2021 00:42:51 +0000 (17:42 -0700)]
Merge branch 'rs/khash-alloc-cleanup'

Code clean-up.

* rs/khash-alloc-cleanup:
  khash: clarify that allocations never fail

4 years agoMerge branch 'ar/help-micro-cleanup'
Junio C Hamano [Sat, 17 Jul 2021 00:42:51 +0000 (17:42 -0700)]
Merge branch 'ar/help-micro-cleanup'

Tiny code clean-up.

* ar/help-micro-cleanup:
  help: convert git_cmd to page in one place

4 years agoMerge branch 'ar/submodule-helper-include-cleanup'
Junio C Hamano [Sat, 17 Jul 2021 00:42:51 +0000 (17:42 -0700)]
Merge branch 'ar/submodule-helper-include-cleanup'

Code clean-up.

* ar/submodule-helper-include-cleanup:
  submodule--helper: remove redundant include

4 years agoMerge branch 'ab/bundle-updates'
Junio C Hamano [Sat, 17 Jul 2021 00:42:49 +0000 (17:42 -0700)]
Merge branch 'ab/bundle-updates'

Code clean-up and leak plugging in "git bundle".

* ab/bundle-updates:
  bundle: remove "ref_list" in favor of string-list.c API
  bundle.c: use a temporary variable for OIDs and names
  bundle cmd: stop leaking memory from parse_options_cmd_bundle()

4 years agoMerge branch 'hn/refs-iterator-peel-returns-boolean'
Junio C Hamano [Sat, 17 Jul 2021 00:42:49 +0000 (17:42 -0700)]
Merge branch 'hn/refs-iterator-peel-returns-boolean'

Tiny API tweak.

* hn/refs-iterator-peel-returns-boolean:
  refs: make explicit that ref_iterator_peel returns boolean

4 years agoMerge branch 'ab/mktag-tests'
Junio C Hamano [Sat, 17 Jul 2021 00:42:48 +0000 (17:42 -0700)]
Merge branch 'ab/mktag-tests'

Fill test gaps.

* ab/mktag-tests:
  mktag tests: test fast-export
  mktag tests: test for-each-ref
  mktag tests: test update-ref and reachable fsck
  mktag tests: test hash-object --literally and unreachable fsck
  mktag tests: invert --no-strict test
  mktag tests: parse out options in helper

4 years agoMerge branch 'ab/show-branch-tests'
Junio C Hamano [Sat, 17 Jul 2021 00:42:48 +0000 (17:42 -0700)]
Merge branch 'ab/show-branch-tests'

Fill test gaps.

* ab/show-branch-tests:
  show-branch tests: add missing tests
  show-branch: don't <COLOR></RESET> for space characters
  show-branch tests: modernize test code
  show-branch tests: rename the one "show-branch" test file

4 years agoMerge branch 'ab/fetch-negotiate-segv-fix'
Junio C Hamano [Sat, 17 Jul 2021 00:42:48 +0000 (17:42 -0700)]
Merge branch 'ab/fetch-negotiate-segv-fix'

Code recently added to support common ancestry negotiation during
"git push" did not sanity check its arguments carefully enough.

* ab/fetch-negotiate-segv-fix:
  fetch: fix segfault in --negotiate-only without --negotiation-tip=*
  fetch: document the --negotiate-only option
  send-pack.c: move "no refs in common" abort earlier

4 years agoMerge branch 'ab/make-delete-on-error'
Junio C Hamano [Sat, 17 Jul 2021 00:42:47 +0000 (17:42 -0700)]
Merge branch 'ab/make-delete-on-error'

Use ".DELETE_ON_ERROR" pseudo target to simplify our Makefile.

* ab/make-delete-on-error:
  Makefile: add and use the ".DELETE_ON_ERROR" flag

4 years agoMerge branch 'ew/mmap-failures'
Junio C Hamano [Sat, 17 Jul 2021 00:42:47 +0000 (17:42 -0700)]
Merge branch 'ew/mmap-failures'

Error message update.

* ew/mmap-failures:
  xmmap: inform Linux users of tuning knobs on ENOMEM

4 years agoMerge branch 'js/config-mak-windows-pcre-fix'
Junio C Hamano [Sat, 17 Jul 2021 00:42:47 +0000 (17:42 -0700)]
Merge branch 'js/config-mak-windows-pcre-fix'

Whitespace fix.

* js/config-mak-windows-pcre-fix:
  config.mak.uname: PCRE1 cleanup

4 years agoMerge branch 'js/gfw-system-config-loc-fix'
Junio C Hamano [Sat, 17 Jul 2021 00:42:46 +0000 (17:42 -0700)]
Merge branch 'js/gfw-system-config-loc-fix'

Update the location of system-side configuration file on Windows.

* js/gfw-system-config-loc-fix:
  config: normalize the path of the system gitconfig
  cmake(windows): set correct path to the system Git config
  mingw: move Git for Windows' system config where users expect it

4 years agoMerge branch 'ks/submodule-cleanup'
Junio C Hamano [Sat, 17 Jul 2021 00:42:46 +0000 (17:42 -0700)]
Merge branch 'ks/submodule-cleanup'

Code cleanup.

* ks/submodule-cleanup:
  submodule: remove unnecessary `prefix` based option logic

4 years agoMerge branch 'tb/midx-use-checksum'
Junio C Hamano [Sat, 17 Jul 2021 00:42:46 +0000 (17:42 -0700)]
Merge branch 'tb/midx-use-checksum'

When rebuilding the multi-pack index file reusing an existing one,
we used to blindly trust the existing file and ended up carrying
corrupted data into the updated file, which has been corrected.

* tb/midx-use-checksum:
  midx: report checksum mismatches during 'verify'
  midx: don't reuse corrupt MIDXs when writing
  commit-graph: rewrite to use checksum_valid()
  csum-file: introduce checksum_valid()

4 years agoMerge branch 'en/merge-dir-rename-corner-case-fix'
Junio C Hamano [Sat, 17 Jul 2021 00:42:45 +0000 (17:42 -0700)]
Merge branch 'en/merge-dir-rename-corner-case-fix'

The merge code had funny interactions between content based rename
detection and directory rename detection.

* en/merge-dir-rename-corner-case-fix:
  merge-recursive: handle rename-to-self case
  merge-ort: ensure we consult df_conflict and path_conflicts
  t6423: test directory renames causing rename-to-self

4 years agoMerge branch 'en/ort-perf-batch-13'
Junio C Hamano [Sat, 17 Jul 2021 00:42:45 +0000 (17:42 -0700)]
Merge branch 'en/ort-perf-batch-13'

Performance tweaks of "git merge -sort" around lazy fetching of objects.

* en/ort-perf-batch-13:
  merge-ort: add prefetching for content merges
  diffcore-rename: use a different prefetch for basename comparisons
  diffcore-rename: allow different missing_object_cb functions
  t6421: add tests checking for excessive object downloads during merge
  promisor-remote: output trace2 statistics for number of objects fetched

4 years agoMerge branch 'en/ort-perf-batch-12'
Junio C Hamano [Sat, 17 Jul 2021 00:42:45 +0000 (17:42 -0700)]
Merge branch 'en/ort-perf-batch-12'

More fix-ups and optimization to "merge -sort".

* en/ort-perf-batch-12:
  merge-ort: miscellaneous touch-ups
  Fix various issues found in comments
  diffcore-rename: avoid unnecessary strdup'ing in break_idx
  merge-ort: replace string_list_df_name_compare with faster alternative

5 years agoworktree: teach `add` to accept --reason <string> with --lock
Stephen Manz [Thu, 15 Jul 2021 02:32:30 +0000 (02:32 +0000)]
worktree: teach `add` to accept --reason <string> with --lock

The default reason stored in the lock file, "added with --lock",
is unlikely to be what the user would have given in a separate
`git worktree lock` command. Allowing `--reason` to be specified
along with `--lock` when adding a working tree gives the user control
over the reason for locking without needing a second command.

Signed-off-by: Stephen Manz <smanz@alum.mit.edu>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoload_ref_decorations(): fix decoration with tags
Jeff King [Wed, 14 Jul 2021 16:31:36 +0000 (12:31 -0400)]
load_ref_decorations(): fix decoration with tags

Commit 88473c8bae ("load_ref_decorations(): avoid parsing non-tag
objects", 2021-06-22) introduced a shortcut to `add_ref_decoration()`:
Rather than calling `parse_object()`, we go for `oid_object_info()` and
then `lookup_object_by_type()` using the type just discovered. As
detailed in the commit message, this provides a significant time saving.

Unfortunately, it also changes the behavior: We lose all annotated tags
from the decoration.

The reason this happens is in the loop where we try to peel the tags, we
won't necessarily have parsed that first object. If we haven't, its
`tagged` field will be NULL, so we won't actually add a decoration for
the pointed-to object.

Make sure to parse the tag object at the top of the peeling loop. This
effectively restores the pre-88473c8bae parsing -- but only of tags,
allowing us to keep most of the possible speedup from 88473c8bae.

On my big ~220k ref test case (where it's mostly non-tags), the
timings [using "git log -1 --decorate"] are:

  - before either patch: 2.945s
  - with my broken patch: 0.707s
  - with [this patch]: 0.788s

The simplest way to do this is to just conditionally parse before the
loop:

  if (obj->type == OBJ_TAG)
          parse_object(&obj->oid);

But we can observe that our tag-peeling loop needs to peel already, to
examine recursive tags-of-tags. So instead of introducing a new call to
parse_object(), we can simply move the parsing higher in the loop:
instead of parsing the new object before we loop, parse each tag object
before we look at its "tagged" field.

This has another beneficial side effect: if a tag points at a commit (or
other non-tag type), we do not bother to parse the commit at all now.
And we know it is a commit without calling oid_object_info(), because
parsing the surrounding tag object will have created the correct in-core
object based on the "type" field of the tag.

Our test coverage for --decorate was obviously not good, since we missed
this quite-basic regression. The new tests covers an annotated tag
(showing the fix), but also that we correctly show annotations for
lightweight tags and double-annotated tag-of-tags.

Reported-by: Martin Ågren <martin.agren@gmail.com>
Helped-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Reviewed-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoworktree: mark lock strings with `_()` for translation
Stephen Manz [Sun, 11 Jul 2021 00:27:19 +0000 (00:27 +0000)]
worktree: mark lock strings with `_()` for translation

- default lock string, "added with --lock"
- temporary lock string, "initializing"

Signed-off-by: Stephen Manz <smanz@alum.mit.edu>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agot2400: clean up '"add" worktree with lock' test
Stephen Manz [Sun, 11 Jul 2021 00:27:18 +0000 (00:27 +0000)]
t2400: clean up '"add" worktree with lock' test

- remove unneeded `git rev-parse` which must have come from a copy-paste
  of another test
- unlock the worktree with test_when_finished

Signed-off-by: Stephen Manz <smanz@alum.mit.edu>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoThe fourth batch
Junio C Hamano [Tue, 13 Jul 2021 23:52:11 +0000 (16:52 -0700)]
The fourth batch

Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoMerge branch 'rs/grep-parser-fix'
Junio C Hamano [Tue, 13 Jul 2021 23:52:53 +0000 (16:52 -0700)]
Merge branch 'rs/grep-parser-fix'

"git grep --and -e foo" ought to have been diagnosed as an error
but instead segfaulted, which has been corrected.

* rs/grep-parser-fix:
  grep: report missing left operand of --and

5 years agoMerge branch 'bk/doc-commit-typofix'
Junio C Hamano [Tue, 13 Jul 2021 23:52:52 +0000 (16:52 -0700)]
Merge branch 'bk/doc-commit-typofix'

Doc typo/grammo-fix.

* bk/doc-commit-typofix:
  Documentation: fix typo in the --patch option of the commit command

5 years agoMerge branch 'dc/p4-binary-submit-fix'
Junio C Hamano [Tue, 13 Jul 2021 23:52:52 +0000 (16:52 -0700)]
Merge branch 'dc/p4-binary-submit-fix'

Prevent "git p4" from failing to submit changes to binary file.

* dc/p4-binary-submit-fix:
  git-p4: fix failed submit by skip non-text data files

5 years agoMerge branch 'ab/pre-auto-gc-hook-test'
Junio C Hamano [Tue, 13 Jul 2021 23:52:52 +0000 (16:52 -0700)]
Merge branch 'ab/pre-auto-gc-hook-test'

Test fix.

* ab/pre-auto-gc-hook-test:
  gc tests: add a test for the "pre-auto-gc" hook

5 years agoMerge branch 'jk/union-merge-binary'
Junio C Hamano [Tue, 13 Jul 2021 23:52:51 +0000 (16:52 -0700)]
Merge branch 'jk/union-merge-binary'

The "union" conflict resolution variant misbehaved when used with
binary merge driver.

* jk/union-merge-binary:
  ll_union_merge(): rename path_unused parameter
  ll_union_merge(): pass name labels to ll_xdl_merge()
  ll_binary_merge(): handle XDL_MERGE_FAVOR_UNION

5 years agoMerge branch 'mr/cmake'
Junio C Hamano [Tue, 13 Jul 2021 23:52:51 +0000 (16:52 -0700)]
Merge branch 'mr/cmake'

CMake update.

* mr/cmake:
  cmake: add warning for ignored MSGFMT_EXE
  cmake: create compile_commands.json by default
  cmake: add knob to disable vcpkg

5 years agoMerge branch 'ab/describe-tests-fix'
Junio C Hamano [Tue, 13 Jul 2021 23:52:51 +0000 (16:52 -0700)]
Merge branch 'ab/describe-tests-fix'

Various updates to tests around "git describe"

* ab/describe-tests-fix:
  describe tests: support -C in "check_describe"
  describe tests: fix nested "test_expect_success" call
  describe tests: don't rely on err.actual from "check_describe"
  describe tests: refactor away from glob matching
  describe tests: improve test for --work-tree & --dirty

5 years agoMerge branch 'ab/pickaxe-pcre2'
Junio C Hamano [Tue, 13 Jul 2021 23:52:50 +0000 (16:52 -0700)]
Merge branch 'ab/pickaxe-pcre2'

Rewrite the backend for "diff -G/-S" to use pcre2 engine when
available.

* ab/pickaxe-pcre2: (22 commits)
  xdiff-interface: replace discard_hunk_line() with a flag
  xdiff users: use designated initializers for out_line
  pickaxe -G: don't special-case create/delete
  pickaxe -G: terminate early on matching lines
  xdiff-interface: allow early return from xdiff_emit_line_fn
  xdiff-interface: prepare for allowing early return
  pickaxe -S: slightly optimize contains()
  pickaxe: rename variables in has_changes() for brevity
  pickaxe -S: support content with NULs under --pickaxe-regex
  pickaxe: assert that we must have a needle under -G or -S
  pickaxe: refactor function selection in diffcore-pickaxe()
  perf: add performance test for pickaxe
  pickaxe/style: consolidate declarations and assignments
  diff.h: move pickaxe fields together again
  pickaxe: die when --find-object and --pickaxe-all are combined
  pickaxe: die when -G and --pickaxe-regex are combined
  pickaxe tests: add missing test for --no-pickaxe-regex being an error
  pickaxe tests: test for -G, -S and --find-object incompatibility
  pickaxe tests: add test for "log -S" not being a regex
  pickaxe tests: add test for diffgrep_consume() internals
  ...

5 years agoMerge branch 'hn/prep-tests-for-reftable'
Junio C Hamano [Tue, 13 Jul 2021 23:52:50 +0000 (16:52 -0700)]
Merge branch 'hn/prep-tests-for-reftable'

Preliminary clean-up of tests before the main reftable changes
hits the codebase.

* hn/prep-tests-for-reftable: (22 commits)
  t1415: set REFFILES for test specific to storage format
  t4202: mark bogus head hash test with REFFILES
  t7003: check reflog existence only for REFFILES
  t7900: stop checking for loose refs
  t1404: mark tests that muck with .git directly as REFFILES.
  t2017: mark --orphan/logAllRefUpdates=false test as REFFILES
  t1414: mark corruption test with REFFILES
  t1407: require REFFILES for for_each_reflog test
  test-lib: provide test prereq REFFILES
  t5304: use "reflog expire --all" to clear the reflog
  t5304: restyle: trim empty lines, drop ':' before >
  t7003: use rev-parse rather than FS inspection
  t5000: inspect HEAD using git-rev-parse
  t5000: reformat indentation to the latest fashion
  t1301: fix typo in error message
  t1413: use tar to save and restore entire .git directory
  t1401-symbolic-ref: avoid direct filesystem access
  t1401: use tar to snapshot and restore repo state
  t5601: read HEAD using rev-parse
  t9300: check ref existence using test-helper rather than a file system check
  ...

5 years agoMerge branch 'fc/push-simple-updates-cleanup'
Junio C Hamano [Tue, 13 Jul 2021 23:52:50 +0000 (16:52 -0700)]
Merge branch 'fc/push-simple-updates-cleanup'

Some more code and doc clarification around "git push".

* fc/push-simple-updates-cleanup:
  push: don't get a full remote object
  push: only check same_remote when needed
  push: remove trivial function
  push: remove redundant check
  push: factor out the typical case
  push: get rid of all the setup_push_* functions
  push: trivial simplifications
  push: make setup_push_* return the dst
  push: only get the branch when needed
  push: factor out null branch check
  push: split switch cases
  push: return immediately in trivial switch case
  push: create new get_upstream_ref() helper

5 years agoMerge branch 'fc/push-simple-updates'
Junio C Hamano [Tue, 13 Jul 2021 23:52:49 +0000 (16:52 -0700)]
Merge branch 'fc/push-simple-updates'

Some code and doc clarification around "git push".

* fc/push-simple-updates:
  doc: push: explain default=simple correctly
  push: remove unused code in setup_push_upstream()
  push: simplify setup_push_simple()
  push: reorganize setup_push_simple()
  push: copy code to setup_push_simple()
  push: hedge code of default=simple
  push: rename !triangular to same_remote

5 years agoMerge branch 'zh/cat-file-batch-fix'
Junio C Hamano [Tue, 13 Jul 2021 23:52:49 +0000 (16:52 -0700)]
Merge branch 'zh/cat-file-batch-fix'

"git cat-file --batch-all-objects"" misbehaved when "--batch" is in
use and did not ask for certain object traits.

* zh/cat-file-batch-fix:
  cat-file: merge two block into one
  cat-file: handle trivial --batch format with --batch-all-objects

5 years agodoc/rev-list-options: fix duplicate word typo
Jeff King [Tue, 13 Jul 2021 22:31:26 +0000 (18:31 -0400)]
doc/rev-list-options: fix duplicate word typo

Reported-by: Jason Hatton <jhatton@globalfinishing.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoadvice.h: add missing __attribute__((format)) & fix usage
Ævar Arnfjörð Bjarmason [Tue, 13 Jul 2021 08:05:20 +0000 (10:05 +0200)]
advice.h: add missing __attribute__((format)) & fix usage

Add the missing __attribute__((format)) checking to
advise_if_enabled(). This revealed a trivial issue introduced in
b3b18d16213 (advice: revamp advise API, 2020-03-02). We treated the
argv[1] as a format string, but did not intend to do so. Let's use
"%s" and pass argv[1] as an argument instead.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years ago*.h: add a few missing __attribute__((format))
Ævar Arnfjörð Bjarmason [Tue, 13 Jul 2021 08:05:19 +0000 (10:05 +0200)]
*.h: add a few missing __attribute__((format))

Add missing format attributes to API functions that take printf
arguments.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years ago*.c static functions: add missing __attribute__((format))
Ævar Arnfjörð Bjarmason [Tue, 13 Jul 2021 08:05:18 +0000 (10:05 +0200)]
*.c static functions: add missing __attribute__((format))

Add missing __attribute__((format)) function attributes to various
"static" functions that take printf arguments.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agosequencer.c: move static function to avoid forward decl
Ævar Arnfjörð Bjarmason [Sat, 10 Jul 2021 08:47:28 +0000 (10:47 +0200)]
sequencer.c: move static function to avoid forward decl

Move the reflog_message() function added in
96e832a5fd6 (sequencer (rebase -i): refactor setting the reflog
message, 2017-01-02), it gained another user in
9055e401dd6 (sequencer: introduce new commands to reset the revision,
2018-04-25). Let's move it around and remove the forward declaration
added in the latter commit.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years ago*.c static functions: don't forward-declare __attribute__
Ævar Arnfjörð Bjarmason [Sat, 10 Jul 2021 08:47:27 +0000 (10:47 +0200)]
*.c static functions: don't forward-declare __attribute__

9cf6d3357aa (Add git-index-pack utility, 2005-10-12) and
466dbc42f58 (receive-pack: Send internal errors over side-band #2,
2010-02-10) we added these static functions and forward-declared their
__attribute__((printf)).

I think this may have been to work around some compiler limitation at
the time, but in any case we have a lot of code that uses the briefer
way of declaring these that I'm using here, so if we had any such
issues with compilers we'd have seen them already.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agorev-list: add option for --pretty=format without header
brian m. carlson [Sun, 11 Jul 2021 21:55:10 +0000 (21:55 +0000)]
rev-list: add option for --pretty=format without header

In general, we encourage users to use plumbing commands, like git
rev-list, over porcelain commands, like git log, when scripting.
However, git rev-list has one glaring problem that prevents it from
being used in certain cases: when --pretty is used with a custom format,
it always prints out a line containing "commit" and the object ID.  This
makes it unsuitable for many scripting needs, and forces users to use
git log instead.

While we can't change this behavior for backwards compatibility, we can
add an option to suppress this behavior, so let's do so, and call it
"--no-commit-header".  Additionally, add the corresponding positive
option to switch it back on.

Note that this option doesn't affect the built-in formats, only custom
formats.  This is exactly the same behavior as users already have from
git log and is what most users will be used to.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agocommit: remove irrelavent prompt on `--allow-empty-message`
Hu Jialun [Fri, 9 Jul 2021 18:07:32 +0000 (02:07 +0800)]
commit: remove irrelavent prompt on `--allow-empty-message`

Even when the `--allow-empty-message` option is given, "git commit"
offers an interactive editor session with prefilled message that says
the commit will be aborted if the buffer is emptied, which is wrong.

Remove the "an empty message aborts" part from the message when the
option is given to fix it.

Helped-by: Junio C Hamano <gitster@pobox.com>
Helped-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
Helped-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Hu Jialun <hujialun@comp.nus.edu.sg>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agocommit: reorganise commit hint strings
Hu Jialun [Fri, 9 Jul 2021 18:07:31 +0000 (02:07 +0800)]
commit: reorganise commit hint strings

Strings of hint messages inserted into editor on interactive commit was
scattered in-line, rendering the code harder to understand at first
glance.

Extract those messages out into separate variables to make the code
outline easier to follow.

Helped-by: Junio C Hamano <gitster@pobox.com>
Helped-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
Signed-off-by: Hu Jialun <hujialun@comp.nus.edu.sg>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agopkt-line: replace "stateless separator" with "response end"
Denton Liu [Fri, 9 Jul 2021 02:27:22 +0000 (19:27 -0700)]
pkt-line: replace "stateless separator" with "response end"

In 0181b600a6 (pkt-line: define PACKET_READ_RESPONSE_END, 2020-05-19),
the Response End packet was defined for Git's network protocol. When the
patch was sent, it included an oversight where the error messages
referenced "stateless separator", the work-in-progress name, over
"response end", the final name chosen.

Correct these error messages by having them correctly reference
a "response end" packet.

Signed-off-by: Denton Liu <liu.denton@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoThe third batch
Junio C Hamano [Thu, 8 Jul 2021 20:14:36 +0000 (13:14 -0700)]
The third batch

Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agoMerge branch 'js/stop-exporting-bogus-columns'
Junio C Hamano [Thu, 8 Jul 2021 20:15:06 +0000 (13:15 -0700)]
Merge branch 'js/stop-exporting-bogus-columns'

When we cannot figure out how wide the terminal is, we use a
fallback value of 80 ourselves (which cannot be avoided), but when
we run the pager, we export it in COLUMNS, which forces the pager
to use the hardcoded value, even when the pager is perfectly
capable to figure it out itself.  Stop exporting COLUMNS when we
fall back on the hardcoded default value for our own use.

* js/stop-exporting-bogus-columns:
  pager: avoid setting COLUMNS when we're guessing its value

5 years agoMerge branch 'dd/document-log-decorate-default'
Junio C Hamano [Thu, 8 Jul 2021 20:15:05 +0000 (13:15 -0700)]
Merge branch 'dd/document-log-decorate-default'

Doc clean-up.

* dd/document-log-decorate-default:
  doc/log: correct default for --decorate

5 years agoMerge branch 'ar/test-code-cleanup'
Junio C Hamano [Thu, 8 Jul 2021 20:15:05 +0000 (13:15 -0700)]
Merge branch 'ar/test-code-cleanup'

Test code clean-up.

* ar/test-code-cleanup:
  t: fix whitespace around &&

5 years agoMerge branch 'ba/object-info'
Junio C Hamano [Thu, 8 Jul 2021 20:15:05 +0000 (13:15 -0700)]
Merge branch 'ba/object-info'

Code clean-up.

* ba/object-info:
  protocol-caps.h: add newline at end of file

5 years agoMerge branch 'ab/progress-cleanup'
Junio C Hamano [Thu, 8 Jul 2021 20:15:04 +0000 (13:15 -0700)]
Merge branch 'ab/progress-cleanup'

Code clean-up.

* ab/progress-cleanup:
  read-cache.c: don't guard calls to progress.c API

5 years agoMerge branch 'ab/xdiff-bug-cleanup'
Junio C Hamano [Thu, 8 Jul 2021 20:15:04 +0000 (13:15 -0700)]
Merge branch 'ab/xdiff-bug-cleanup'

Code clean-up.

* ab/xdiff-bug-cleanup:
  xdiff: use BUG(...), not xdl_bug(...)

5 years agoMerge branch 'ms/mergetools-kdiff3-on-windows'
Junio C Hamano [Thu, 8 Jul 2021 20:15:04 +0000 (13:15 -0700)]
Merge branch 'ms/mergetools-kdiff3-on-windows'

On Windows, mergetool has been taught to find kdiff3.exe just like
it finds winmerge.exe.

* ms/mergetools-kdiff3-on-windows:
  mergetools/kdiff3: make kdiff3 work on Windows too

5 years agoMerge branch 'ab/cmd-foo-should-return'
Junio C Hamano [Thu, 8 Jul 2021 20:15:04 +0000 (13:15 -0700)]
Merge branch 'ab/cmd-foo-should-return'

Code clean-up.

* ab/cmd-foo-should-return:
  builtins + test helpers: use return instead of exit() in cmd_*

5 years agoMerge branch 'ar/doc-libera-chat-in-my-first-contrib'
Junio C Hamano [Thu, 8 Jul 2021 20:15:03 +0000 (13:15 -0700)]
Merge branch 'ar/doc-libera-chat-in-my-first-contrib'

Update MyFirst document.

* ar/doc-libera-chat-in-my-first-contrib:
  MyFirstContribution: link #git-devel to Libera Chat

5 years agoMerge branch 'ar/mailinfo-memcmp-to-skip-prefix'
Junio C Hamano [Thu, 8 Jul 2021 20:15:03 +0000 (13:15 -0700)]
Merge branch 'ar/mailinfo-memcmp-to-skip-prefix'

Code clean-up.

* ar/mailinfo-memcmp-to-skip-prefix:
  mailinfo: use starts_with() when checking scissors

5 years agoMerge branch 'jk/doc-max-pack-size'
Junio C Hamano [Thu, 8 Jul 2021 20:15:03 +0000 (13:15 -0700)]
Merge branch 'jk/doc-max-pack-size'

Doc update.

* jk/doc-max-pack-size:
  doc: warn people against --max-pack-size

5 years agoMerge branch 'ab/fix-columns-to-80-during-tests'
Junio C Hamano [Thu, 8 Jul 2021 20:15:02 +0000 (13:15 -0700)]
Merge branch 'ab/fix-columns-to-80-during-tests'

Output from some of our tests were affected by the width of the
terminal that they were run in, which has been corrected by
exporting a fixed value in the COLUMNS environment.

* ab/fix-columns-to-80-during-tests:
  test-lib.sh: set COLUMNS=80 for --verbose repeatability

5 years agoMerge branch 'ar/more-typofix'
Junio C Hamano [Thu, 8 Jul 2021 20:15:02 +0000 (13:15 -0700)]
Merge branch 'ar/more-typofix'

Typofixes.

* ar/more-typofix:
  git-worktree.txt: fix typo in example path
  t: fix typos in test messages
  blame: correct name of config option in docs

5 years agoMerge branch 'fw/complete-cmd-idx-fix'
Junio C Hamano [Thu, 8 Jul 2021 20:15:02 +0000 (13:15 -0700)]
Merge branch 'fw/complete-cmd-idx-fix'

Recent update to completion script (in contrib/) broke those who
use the __git_complete helper to define completion to their custom
command.

* fw/complete-cmd-idx-fix:
  completion: bash: fix late declaration of __git_cmd_idx

5 years agoMerge branch 'jk/test-without-readlink-1'
Junio C Hamano [Thu, 8 Jul 2021 20:15:02 +0000 (13:15 -0700)]
Merge branch 'jk/test-without-readlink-1'

Some test scripts assumed that readlink(1) was universally
installed and available, which is not the case.

* jk/test-without-readlink-1:
  t: use portable wrapper for readlink(1)

5 years agoMerge branch 'jx/sideband-cleanup'
Junio C Hamano [Thu, 8 Jul 2021 20:15:01 +0000 (13:15 -0700)]
Merge branch 'jx/sideband-cleanup'

The side-band demultiplexer that is used to display progress output
from the remote end did not clear the line properly when the end of
line hits at a packet boundary, which has been corrected.  Also
comes with test clean-ups.

* jx/sideband-cleanup:
  test: refactor to use "get_abbrev_oid" to get abbrev oid
  test: refactor to use "test_commit" to create commits
  test: compare raw output, not mangle tabs and spaces
  sideband: don't lose clear-to-eol at packet boundary

5 years agoMerge branch 'jk/test-avoid-globmatch-with-skip-patterns'
Junio C Hamano [Thu, 8 Jul 2021 20:15:01 +0000 (13:15 -0700)]
Merge branch 'jk/test-avoid-globmatch-with-skip-patterns'

We broke "GIT_SKIP_TESTS=t?000" to skip certain tests in recent
update, which got fixed.

* jk/test-avoid-globmatch-with-skip-patterns:
  test-lib: avoid accidental globbing in match_pattern_list()

5 years agoMerge branch 'jv/userdiff-csharp-update'
Junio C Hamano [Thu, 8 Jul 2021 20:15:01 +0000 (13:15 -0700)]
Merge branch 'jv/userdiff-csharp-update'

The userdiff pattern for C# learned the token "record".

* jv/userdiff-csharp-update:
  userdiff: add support for C# record types

5 years agoMerge branch 'ab/config-hooks-path-testfix'
Junio C Hamano [Thu, 8 Jul 2021 20:15:00 +0000 (13:15 -0700)]
Merge branch 'ab/config-hooks-path-testfix'

Test fix.

* ab/config-hooks-path-testfix:
  pre-commit hook tests: don't leave "actual" nonexisting on failure

5 years agoMerge branch 'fc/pull-cleanups'
Junio C Hamano [Thu, 8 Jul 2021 20:15:00 +0000 (13:15 -0700)]
Merge branch 'fc/pull-cleanups'

Code cleanup.

* fc/pull-cleanups:
  pull: trivial whitespace style fix
  pull: trivial cleanup
  pull: cleanup autostash check

5 years agoMerge branch 'jk/bitmap-tree-optim'
Junio C Hamano [Thu, 8 Jul 2021 20:15:00 +0000 (13:15 -0700)]
Merge branch 'jk/bitmap-tree-optim'

Avoid duplicated work while building reachability bitmaps.

* jk/bitmap-tree-optim:
  bitmaps: don't recurse into trees already in the bitmap

5 years agoMerge branch 'ah/graph-typofix'
Junio C Hamano [Thu, 8 Jul 2021 20:15:00 +0000 (13:15 -0700)]
Merge branch 'ah/graph-typofix'

Typofix in an error message.

* ah/graph-typofix:
  graph: improve grammar of "invalid color" error message

5 years agoMerge branch 'jx/t6020-with-older-bash'
Junio C Hamano [Thu, 8 Jul 2021 20:14:59 +0000 (13:14 -0700)]
Merge branch 'jx/t6020-with-older-bash'

Work around inefficient glob substitution in older versions of bash
by rewriting parts of a test.

* jx/t6020-with-older-bash:
  t6020: fix incompatible parameter expansion

5 years agoMerge branch 'ar/typofix'
Junio C Hamano [Thu, 8 Jul 2021 20:14:59 +0000 (13:14 -0700)]
Merge branch 'ar/typofix'

Typofixes.

* ar/typofix:
  *: fix typos which duplicate a word

5 years agoMerge branch 'jk/revision-squelch-gcc-warning'
Junio C Hamano [Thu, 8 Jul 2021 20:14:59 +0000 (13:14 -0700)]
Merge branch 'jk/revision-squelch-gcc-warning'

Warning fix.

* jk/revision-squelch-gcc-warning:
  add_pending_object_with_path(): work around "gcc -O3" complaint

5 years agoMerge branch 'ah/uninitialized-reads-fix'
Junio C Hamano [Thu, 8 Jul 2021 20:14:58 +0000 (13:14 -0700)]
Merge branch 'ah/uninitialized-reads-fix'

Make the codebase MSAN clean.

* ah/uninitialized-reads-fix:
  builtin/checkout--worker: zero-initialise struct to avoid MSAN complaints
  split-index: use oideq instead of memcmp to compare object_id's
  bulk-checkin: make buffer reuse more obvious and safer

5 years agoMerge branch 'js/no-more-multimail'
Junio C Hamano [Thu, 8 Jul 2021 20:14:58 +0000 (13:14 -0700)]
Merge branch 'js/no-more-multimail'

Remove multimail from contrib/

* js/no-more-multimail:
  multimail: stop shipping a copy

5 years agoMerge branch 'js/subtree-on-windows-fix'
Junio C Hamano [Thu, 8 Jul 2021 20:14:58 +0000 (13:14 -0700)]
Merge branch 'js/subtree-on-windows-fix'

Update "git subtree" to work better on Windows.

* js/subtree-on-windows-fix:
  subtree: fix assumption about the directory separator
  subtree: fix the GIT_EXEC_PATH sanity check to work on Windows

5 years agoMerge branch 'dd/svn-test-wo-locale-a'
Junio C Hamano [Thu, 8 Jul 2021 20:14:58 +0000 (13:14 -0700)]
Merge branch 'dd/svn-test-wo-locale-a'

"git-svn" tests assumed that "locale -a", which is used to pick an
available UTF-8 locale, is available everywhere.  A knob has been
introduced to allow testers to specify a suitable locale to use.

* dd/svn-test-wo-locale-a:
  t: use user-specified utf-8 locale for testing svn

5 years agoMerge branch 'fc/doc-default-to-upstream-config'
Junio C Hamano [Thu, 8 Jul 2021 20:14:57 +0000 (13:14 -0700)]
Merge branch 'fc/doc-default-to-upstream-config'

Doc clean-up.

* fc/doc-default-to-upstream-config:
  doc: merge: mention default of defaulttoupstream

5 years agoMerge branch 'js/trace2-discard-event-docfix'
Junio C Hamano [Thu, 8 Jul 2021 20:14:57 +0000 (13:14 -0700)]
Merge branch 'js/trace2-discard-event-docfix'

Docfix.

* js/trace2-discard-event-docfix:
  docs: fix api-trace2 doc for "too_many_files" event

5 years agoMerge branch 'tb/complete-diff-anchored'
Junio C Hamano [Thu, 8 Jul 2021 20:14:56 +0000 (13:14 -0700)]
Merge branch 'tb/complete-diff-anchored'

The command line completion (in contrib/) learned that "git diff"
takes the "--anchored" option.

* tb/complete-diff-anchored:
  completion: add --anchored to diff's options

5 years agoMerge branch 'tk/partial-clone-repack-doc'
Junio C Hamano [Thu, 8 Jul 2021 20:14:56 +0000 (13:14 -0700)]
Merge branch 'tk/partial-clone-repack-doc'

Docfix.

* tk/partial-clone-repack-doc:
  Remove warning that repack only works on non-promisor packfiles

5 years agofetch: fix segfault in --negotiate-only without --negotiation-tip=*
Ævar Arnfjörð Bjarmason [Thu, 8 Jul 2021 10:53:15 +0000 (12:53 +0200)]
fetch: fix segfault in --negotiate-only without --negotiation-tip=*

The recent --negotiate-only option would segfault in the call to
oid_array_for_each() in negotiate_using_fetch() unless one or more
--negotiation-tip=* options were provided.

All of the other tests for the feature combine both, but nothing was
checking this assumption, let's do that and add a test for it. Fixes a
bug in 9c1e657a8fd (fetch: teach independent negotiation (no
packfile), 2021-05-04).

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agooidtree: a crit-bit tree for odb_loose_cache
Eric Wong [Wed, 7 Jul 2021 23:10:19 +0000 (23:10 +0000)]
oidtree: a crit-bit tree for odb_loose_cache

This saves 8K per `struct object_directory', meaning it saves
around 800MB in my case involving 100K alternates (half or more
of those alternates are unlikely to hold loose objects).

This is implemented in two parts: a generic, allocation-free
`cbtree' and the `oidtree' wrapper on top of it.  The latter
provides allocation using alloc_state as a memory pool to
improve locality and reduce free(3) overhead.

Unlike oid-array, the crit-bit tree does not require sorting.
Performance is bound by the key length, for oidtree that is
fixed at sizeof(struct object_id).  There's no need to have
256 oidtrees to mitigate the O(n log n) overhead like we did
with oid-array.

Being a prefix trie, it is natively suited for expanding short
object IDs via prefix-limited iteration in
`find_short_object_filename'.

On my busy workstation, p4205 performance seems to be roughly
unchanged (+/-8%).  Startup with 100K total alternates with no
loose objects seems around 10-20% faster on a hot cache.
(800MB in memory savings means more memory for the kernel FS
cache).

The generic cbtree implementation does impose some extra
overhead for oidtree in that it uses memcmp(3) on
"struct object_id" so it wastes cycles comparing 12 extra bytes
on SHA-1 repositories.  I've not yet explored reducing this
overhead, but I expect there are many places in our code base
where we'd want to investigate this.

More information on crit-bit trees: https://cr.yp.to/critbit.html

Signed-off-by: Eric Wong <e@80x24.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
5 years agooidcpy_with_padding: constify `src' arg
Eric Wong [Wed, 7 Jul 2021 23:10:18 +0000 (23:10 +0000)]
oidcpy_with_padding: constify `src' arg

As with `oidcpy', the source struct will not be modified and
this will allow an upcoming const-correct caller to use it.

Signed-off-by: Eric Wong <e@80x24.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>