Commit Graph

57105 Commits

Author SHA1 Message Date
Junio C Hamano
b0460b0db2 Merge branch 'bc/object-id-part17' into next
Preparation for SHA-256 upgrade continues.

* bc/object-id-part17: (26 commits)
  midx: switch to using the_hash_algo
  builtin/show-index: replace sha1_to_hex
  rerere: replace sha1_to_hex
  builtin/receive-pack: replace sha1_to_hex
  builtin/index-pack: replace sha1_to_hex
  packfile: replace sha1_to_hex
  wt-status: convert struct wt_status to object_id
  cache: remove null_sha1
  builtin/worktree: switch null_sha1 to null_oid
  builtin/repack: write object IDs of the proper length
  pack-write: use hash_to_hex when writing checksums
  sequencer: convert to use the_hash_algo
  bisect: switch to using the_hash_algo
  sha1-lookup: switch hard-coded constants to the_hash_algo
  config: use the_hash_algo in abbrev comparison
  combine-diff: replace GIT_SHA1_HEXSZ with the_hash_algo
  bundle: switch to use the_hash_algo
  connected: switch GIT_SHA1_HEXSZ to the_hash_algo
  show-index: switch hard-coded constants to the_hash_algo
  blame: remove needless comparison with GIT_SHA1_HEXSZ
  ...
2019-10-04 13:13:05 +09:00
Junio C Hamano
a346b79a78 Merge branch 'dl/honor-cflags-in-hdr-check' into next
Dev support.

Getting there.

* dl/honor-cflags-in-hdr-check:
  ci: run `hdr-check` as part of the `Static Analysis` job
2019-10-03 10:45:23 +09:00
Junio C Hamano
a0a8ea56a9 Merge branch 'cc/multi-promisor' into next
Cleanup.

* cc/multi-promisor:
  promisor-remote: skip move_to_tail when no-op
2019-10-03 10:45:23 +09:00
Junio C Hamano
969ec06cc7 Merge branch 'en/clean-nested-with-ignored' into next
"git clean" fixes.

* en/clean-nested-with-ignored:
  dir: special case check for the possibility that pathspec is NULL
2019-10-03 10:45:21 +09:00
Junio C Hamano
7b5a32726b Merge branch 'en/merge-recursive-cleanup' into next
The merge-recursive machiery is one of the most complex parts of
the system that accumulated cruft over time.  This large series
cleans up the implementation quite a bit.

* en/merge-recursive-cleanup:
  merge-recursive: fix the diff3 common ancestor label for virtual commits
2019-10-03 10:45:19 +09:00
Johannes Schindelin
411e4f4735 ci: run hdr-check as part of the Static Analysis job
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-10-03 10:34:57 +09:00
Junio C Hamano
242da9a310 Sync with master 2019-10-03 10:25:27 +09:00
Elijah Newren
8e4ec3376e merge-recursive: fix the diff3 common ancestor label for virtual commits
In commit 743474cbfa ("merge-recursive: provide a better label for
diff3 common ancestor", 2019-08-17), the label for the common ancestor
was changed from always being

         "merged common ancestors"

to instead be based on the number of merge bases:

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

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

         "constructed merge base"

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

Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-10-02 14:59:29 +09:00
Emily Shaffer
65904b8b2b promisor-remote: skip move_to_tail when no-op
Previously, when promisor_remote_move_to_tail() is called for a
promisor_remote which is currently the final element in promisors, a
cycle is created in the promisors linked list. This cycle leads to a
double free later on in promisor_remote_clear() when the final element
of the promisors list is removed: promisors is set to promisors->next (a
no-op, as promisors->next == promisors); the previous value of promisors
is free()'d; then the new value of promisors (which is equal to the
previous value of promisors) is also free()'d. This double-free error
was unrecoverable for the user without removing the filter or re-cloning
the repo and hoping to miss this edge case.

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

Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
Acked-by: Christian Couder <christian.couder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-10-02 14:56:54 +09:00
Elijah Newren
69f272b922 dir: special case check for the possibility that pathspec is NULL
Commits 404ebceda0 ("dir: also check directories for matching
pathspecs", 2019-09-17) and 89a1f4aaf7 ("dir: if our pathspec might
match files under a dir, recurse into it", 2019-09-17) added calls to
match_pathspec() and do_match_pathspec() passing along their pathspec
parameter.  Both match_pathspec() and do_match_pathspec() assume the
pathspec argument they are given is non-NULL.  It turns out that
unpack-tree.c's verify_clean_subdirectory() calls read_directory() with
pathspec == NULL, and it is possible on case insensitive filesystems for
that NULL to make it to these new calls to match_pathspec() and
do_match_pathspec().  Add appropriate checks on the NULLness of pathspec
to avoid a segfault.

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

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

Co-authored-by: Denton Liu <liu.denton@gmail.com>
Co-authored-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-10-02 12:06:58 +09:00
Junio C Hamano
78d2f28ef7 Merge branch 'bw/submodule-helper-usage-fix' into next
Typofix.

* bw/submodule-helper-usage-fix:
  builtin/submodule--helper: fix usage string for 'update-clone'
2019-09-30 13:42:17 +09:00
Junio C Hamano
822fa2ed99 Merge branch 'ma/user-manual-markup-update' into next
The markup used in user-manual has been updated to work better with
asciidoctor.

* ma/user-manual-markup-update:
  user-manual.txt: render ASCII art correctly under Asciidoctor
  asciidoctor-extensions.rb: handle "book" doctype in linkgit
  user-manual.txt: change header notation
  user-manual.txt: add missing section label
2019-09-30 13:42:16 +09:00
Junio C Hamano
708fb8988e Merge branch 'dl/honor-cflags-in-hdr-check' into next
Dev support.

* dl/honor-cflags-in-hdr-check:
  Makefile: emulate compile in $(HCO) target better
  pack-bitmap.h: remove magic number
  promisor-remote.h: include missing header
  apply.h: include missing header
2019-09-30 13:42:16 +09:00
Junio C Hamano
273ff0e62d Merge branch 'cb/do-not-use-test-cmp-with-a' into next
Test portability fix.

* cb/do-not-use-test-cmp-with-a:
  t4038: Remove non-portable '-a' option passed to test_cmp
2019-09-30 13:42:15 +09:00
Junio C Hamano
c4826f5a08 Merge branch 'cc/multi-promisor' into next
Cleanup.

* cc/multi-promisor:
  promisor-remote.h: drop extern from function declaration
2019-09-30 13:42:15 +09:00
Junio C Hamano
5e373b3cba Merge branch 'am/mailmap-andrey-mazo' into next
* am/mailmap-andrey-mazo:
  .mailmap: update email address of Andrey Mazo
2019-09-30 13:42:15 +09:00
Junio C Hamano
a5d6788e2e Merge branch 'jt/merge-recursive-symlink-is-not-a-dir-in-way' into next
A bug in merge-recursive code that triggers when a branch with a
symbolic link is merged with a branch that replaces it with a
directory has been fixed.

* jt/merge-recursive-symlink-is-not-a-dir-in-way:
  merge-recursive: symlink's descendants not in way
2019-09-30 13:42:14 +09:00
Junio C Hamano
729e6dc708 Merge branch 'ps/my-first-contribution-alphasort' into next
Docfix.

* ps/my-first-contribution-alphasort:
  doc: MyFirstContribution: fix cmd placement instructions
2019-09-30 13:42:14 +09:00
Junio C Hamano
054a66bb75 Merge branch 'sg/travis-help-debug' into next
Dev support update.

* sg/travis-help-debug:
  travis-ci: do not skip successfully tested trees in debug mode
2019-09-30 13:42:13 +09:00
Junio C Hamano
4d90f4ba93 Merge branch 'rs/alias-use-copy-array' into next
Code cleanup.

* rs/alias-use-copy-array:
  git: use COPY_ARRAY and MOVE_ARRAY in handle_alias()
2019-09-30 13:42:13 +09:00
Junio C Hamano
8e319a2eae Merge branch 'sg/t-helper-gitignore' into next
Update the way build artifacts in t/helper/ directory are ignored.

* sg/t-helper-gitignore:
  t/helper: ignore only executable files
2019-09-30 13:42:12 +09:00
Junio C Hamano
dfe61e947c Merge branch 'jc/git-gui-has-maintainer' into next
* jc/git-gui-has-maintainer:
  SubmittingPatches: git-gui has a new maintainer
2019-09-30 13:42:12 +09:00
Junio C Hamano
27c8457202 Merge branch 'cc/svn-fe-py-shebang' into next
* cc/svn-fe-py-shebang:
  contrib/svn-fe: fix shebang for svnrdump_sim.py
2019-09-30 13:42:12 +09:00
Junio C Hamano
9eb3de8d1b Merge branch 'ah/doc-submodule-ignore-submodules' into next
Docfix.

* ah/doc-submodule-ignore-submodules:
  doc: fix reference to --ignore-submodules
2019-09-30 13:42:11 +09:00
Junio C Hamano
4233f54a72 Merge branch 'rs/nth-switch-code-simplification' into next
Code simplification.

* rs/nth-switch-code-simplification:
  sha1_name: simplify strbuf handling in interpret_nth_prior_checkout()
2019-09-30 13:42:11 +09:00
Junio C Hamano
28f7e9bae3 Merge branch 'hb/hg-to-git-py3' into next
The hg-to-git script (in contrib/) has been updated to work with
Python 3.

* hb/hg-to-git-py3:
  hg-to-git: make it compatible with both python3 and python2
2019-09-30 13:42:10 +09:00
Junio C Hamano
d352332810 Merge branch 'sg/progress-fix' into next
Regression fix for progress output.

* sg/progress-fix:
  Test the progress display
  Revert "progress: use term_clear_line()"
2019-09-30 13:42:10 +09:00
Junio C Hamano
f9b391a66b Merge branch 'js/doc-patch-text' into next
Docfix.

* js/doc-patch-text:
  diff, log doc: small grammer, format, and language fixes
  diff, log doc: say "patch text" instead of "patches"
2019-09-30 13:42:10 +09:00
Junio C Hamano
b9350a562d Merge branch 'tb/commit-graph-harden' into next
The code to parse and use the commit-graph file has been made more
robust against corrupted input.

* tb/commit-graph-harden:
  commit-graph.c: handle corrupt/missing trees
  commit-graph.c: handle commit parsing errors
  t/t5318: introduce failing 'git commit-graph write' tests
2019-09-30 13:42:09 +09:00
Junio C Hamano
5d8ffc2e0f Merge branch 'jt/cache-tree-avoid-lazy-fetch-during-merge' into next
The cache-tree code has been taught to be less aggressive in
attempting to see if a tree object it computed already exists in
the repository.

* jt/cache-tree-avoid-lazy-fetch-during-merge:
  cache-tree: do not lazy-fetch tentative tree
2019-09-30 13:42:09 +09:00
Junio C Hamano
778cc31eac Merge branch 'en/clean-nested-with-ignored' into next
"git clean" fixes.

* en/clean-nested-with-ignored:
  clean: fix theoretical path corruption
  clean: rewrap overly long line
  clean: avoid removing untracked files in a nested git repository
  clean: disambiguate the definition of -d
  git-clean.txt: do not claim we will delete files with -n/--dry-run
  dir: add commentary explaining match_pathspec_item's return value
  dir: if our pathspec might match files under a dir, recurse into it
  dir: make the DO_MATCH_SUBMODULE code reusable for a non-submodule case
  dir: also check directories for matching pathspecs
  dir: fix off-by-one error in match_pathspec_item
  dir: fix typo in comment
  t7300: add testcases showing failure to clean specified pathspecs
2019-09-30 13:42:08 +09:00
Junio C Hamano
dc60b31833 Merge branch 'jk/packfile-reuse-cleanup' into next
The way "git pack-objects" reuses objects stored in existing pack
to generate its result has been improved.

* jk/packfile-reuse-cleanup:
  pack-objects: improve partial packfile reuse
  builtin/pack-objects: introduce obj_is_packed()
  pack-objects: introduce pack.allowPackReuse
  csum-file: introduce hashfile_total()
  pack-bitmap: introduce bitmap_walk_contains()
  pack-bitmap: don't rely on bitmap_git->reuse_objects
  ewah/bitmap: always allocate 2 more words
  ewah/bitmap: introduce bitmap_word_alloc()
  packfile: expose get_delta_base()
  builtin/pack-objects: report reused packfile objects
2019-09-30 13:42:07 +09:00
Junio C Hamano
1bb1c0846f Merge branch 'dl/cocci-everywhere' into next
Coccinelle checks are done on more source files than before now.

* dl/cocci-everywhere:
  Makefile: run coccicheck on more source files
  Makefile: strip leading ./ in $(FIND_SOURCE_FILES)
  Makefile: define THIRD_PARTY_SOURCES
  Makefile: strip leading ./ in $(LIB_H)
2019-09-30 13:42:06 +09:00
Junio C Hamano
7c03eac969 Merge branch 'gs/commit-graph-progress' into next
* gs/commit-graph-progress:
  commit-graph: add --[no-]progress to write and verify
2019-09-30 13:42:06 +09:00
Junio C Hamano
97ec83d2a2 Merge branch 'ms/fetch-follow-tag-optim' into next
The code used in following tags in "git fetch" has been optimized.

* ms/fetch-follow-tag-optim:
  fetch: use oidset to keep the want OIDs for faster lookup
2019-09-30 13:42:05 +09:00
Junio C Hamano
8986e5537f Merge branch 'rs/commit-graph-use-list-count' into next
Code cleanup.

* rs/commit-graph-use-list-count:
  commit-graph: use commit_list_count()
2019-09-30 13:42:05 +09:00
Junio C Hamano
5bdfeacdff Merge branch 'rs/nth-parent-parse' into next
The object name parser for "Nth parent" syntax has been made more
robust against integer overflows.

* rs/nth-parent-parse:
  sha1-name: check for overflow of N in "foo^N" and "foo~N"
  rev-parse: demonstrate overflow of N for "foo^N" and "foo~N"
2019-09-30 13:42:05 +09:00
Junio C Hamano
31c4cf70ae Merge branch 'bc/doc-use-docbook-5' into next
Start using DocBook 5 (instead of DocBook 4.5) as Asciidoctor 2.0
no longer works with the older one.

* bc/doc-use-docbook-5:
  Documentation: fix build with Asciidoctor 2
2019-09-30 13:42:04 +09:00
Junio C Hamano
c66b398cc1 Merge branch 'dl/submodule-set-branch' into next
Docfix.

* dl/submodule-set-branch:
  git-submodule.txt: fix AsciiDoc formatting error
2019-09-30 13:42:04 +09:00
Junio C Hamano
a29a425208 Merge branch 'cs/pretty-formats-doc-typofix' into next
Doc fix.

* cs/pretty-formats-doc-typofix:
  doc: minor formatting fix
2019-09-30 13:42:03 +09:00
Junio C Hamano
9ef098d07f Merge branch 'jk/list-objects-optim-wo-trees' into next
The object traversal machinery has been optimized not to load tree
objects when we are only interested in commit history.

* jk/list-objects-optim-wo-trees:
  list-objects: don't queue root trees unless revs->tree_objects is set
2019-09-30 13:42:03 +09:00
Junio C Hamano
87dae76fb7 Merge branch 'jk/disable-commit-graph-during-upload-pack' into next
The "upload-pack" (the counterpart of "git fetch") needs to disable
commit-graph when responding to a shallow clone/fetch request, but
the way this was done made Git panic, which has been corrected.

* jk/disable-commit-graph-during-upload-pack:
  upload-pack: disable commit graph more gently for shallow traversal
  commit-graph: bump DIE_ON_LOAD check to actual load-time
2019-09-30 13:42:02 +09:00
Junio C Hamano
b2507b21cb Merge branch 'mr/complete-more-for-log-etc' into next
Completion updates.

* mr/complete-more-for-log-etc:
  completion: add missing completions for log, diff, show
2019-09-30 13:42:02 +09:00
Junio C Hamano
ddeb81ff41 Merge branch 'dl/complete-rebase-and-archive' into next
The command line completion for "git archive" and "git rebase" are
now made less prone to go out of sync with the binary.

* dl/complete-rebase-and-archive:
  completion: teach archive to use __gitcomp_builtin
  completion: teach rebase to use __gitcomp_builtin
2019-09-30 13:42:01 +09:00
Junio C Hamano
4937cac46f Merge branch 'ma/asciidoctor-more-fixes' into next
Doc formatting updates.

* ma/asciidoctor-more-fixes:
  gitweb.conf.txt: switch pluses to backticks to help Asciidoctor
  git-merge-index.txt: wrap shell listing in "----"
  git-receive-pack.txt: wrap shell [script] listing in "----"
  git-ls-remote.txt: wrap shell listing in "----"
  Documentation: wrap config listings in "----"
  git-merge-base.txt: render indentations correctly under Asciidoctor
  Documentation: wrap blocks with "--"
2019-09-30 13:42:01 +09:00
Junio C Hamano
f78e24d14b Merge branch 'jk/commit-graph-cleanup' into next
A pair of small fixups to "git commit-graph" have been applied.

* jk/commit-graph-cleanup:
  commit-graph: turn off save_commit_buffer
  commit-graph: don't show progress percentages while expanding reachable commits
2019-09-30 13:42:01 +09:00
Junio C Hamano
21a0dced8f Merge branch 'ss/get-time-cleanup' into next
Code simplification.

* ss/get-time-cleanup:
  test_date.c: remove reference to GIT_TEST_DATE_NOW
  Quit passing 'now' to date code
2019-09-30 13:42:00 +09:00
Junio C Hamano
3c155bbd24 Merge branch 'rs/simplify-by-deco-with-deco-refs-exclude' into next
"git log --decorate-refs-exclude=<pattern>" was incorrectly
overruled when the "--simplify-by-decoration" option is used, which
has been corrected.

* rs/simplify-by-deco-with-deco-refs-exclude:
  log-tree: call load_ref_decorations() in get_name_decoration()
  log: test --decorate-refs-exclude with --simplify-by-decoration
2019-09-30 13:42:00 +09:00
Junio C Hamano
f6113b33cf Merge branch 'cb/skip-utf8-check-with-pcre1' into next
Make sure the grep machinery does not abort when seeing a payload
that is not UTF-8 even when JIT is not in use with PCRE1.

* cb/skip-utf8-check-with-pcre1:
  grep: skip UTF8 checks explicitly
2019-09-30 13:41:59 +09:00
Junio C Hamano
44b33488ea Merge branch 'jk/partial-clone-sparse-blob' into next
The name of the blob object that stores the filter specification
for sparse cloning/fetching was interpreted in a wrong place in the
code, causing Git to abort.

* jk/partial-clone-sparse-blob:
  list-objects-filter: use empty string instead of NULL for sparse "base"
  list-objects-filter: give a more specific error sparse parsing error
  list-objects-filter: delay parsing of sparse oid
  t5616: test cloning/fetching with sparse:oid=<oid> filter
2019-09-30 13:41:59 +09:00