Junio C Hamano [Mon, 17 Feb 2020 04:41:40 +0000 (20:41 -0800)]
Sync with 2.25.1
Junio C Hamano [Mon, 17 Feb 2020 04:37:38 +0000 (20:37 -0800)]
Git 2.25.1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 14 Feb 2020 20:54:31 +0000 (12:54 -0800)]
Sync with maint
Junio C Hamano [Fri, 14 Feb 2020 20:54:07 +0000 (12:54 -0800)]
The fifth batch for 2.26
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 14 Feb 2020 20:54:24 +0000 (12:54 -0800)]
Merge branch 'tb/commit-graph-object-dir'
The code to compute the commit-graph has been taught to use a more
robust way to tell if two object directories refer to the same
thing.
* tb/commit-graph-object-dir:
commit-graph.h: use odb in 'load_commit_graph_one_fd_st'
commit-graph.c: remove path normalization, comparison
commit-graph.h: store object directory in 'struct commit_graph'
commit-graph.h: store an odb in 'struct write_commit_graph_context'
t5318: don't pass non-object directory to '--object-dir'
Junio C Hamano [Fri, 14 Feb 2020 20:54:24 +0000 (12:54 -0800)]
Merge branch 'jk/index-pack-dupfix'
The index-pack code now diagnoses a bad input packstream that
records the same object twice when it is used as delta base; the
code used to declare a software bug when encountering such an
input, but it is an input error.
* jk/index-pack-dupfix:
index-pack: downgrade twice-resolved REF_DELTA to die()
Junio C Hamano [Fri, 14 Feb 2020 20:54:23 +0000 (12:54 -0800)]
Merge branch 'jk/alloc-cleanups'
Misc code clean-ups.
* jk/alloc-cleanups:
tree-walk.c: break circular dependency with unpack-trees
traverse_trees(): use stack array for name entries
walker_fetch(): avoid raw array length computation
normalize_path_copy(): document "dst" size expectations
Junio C Hamano [Fri, 14 Feb 2020 20:54:23 +0000 (12:54 -0800)]
Merge branch 'jh/notes-fanout-fix'
The code to automatically shrink the fan-out in the notes tree had
an off-by-one bug, which has been killed.
* jh/notes-fanout-fix:
notes.c: fix off-by-one error when decreasing notes fanout
t3305: check notes fanout more carefully and robustly
Junio C Hamano [Fri, 14 Feb 2020 20:54:23 +0000 (12:54 -0800)]
Merge branch 'pk/status-of-uncloned-submodule'
The way "git submodule status" reports an initialized but not yet
populated submodule has not been reimplemented correctly when a
part of the "git submodule" command was rewritten in C, which has
been corrected.
* pk/status-of-uncloned-submodule:
t7400: testcase for submodule status on unregistered inner git repos
submodule: fix status of initialized but not cloned submodules
t7400: add a testcase for submodule status on empty dirs
Junio C Hamano [Fri, 14 Feb 2020 20:54:22 +0000 (12:54 -0800)]
Merge branch 'mt/use-passed-repo-more-in-funcs'
Some codepaths were given a repository instance as a parameter to
work in the repository, but passed the_repository instance to its
callees, which has been cleaned up (somewhat).
* mt/use-passed-repo-more-in-funcs:
sha1-file: allow check_object_signature() to handle any repo
sha1-file: pass git_hash_algo to hash_object_file()
sha1-file: pass git_hash_algo to write_object_file_prepare()
streaming: allow open_istream() to handle any repo
pack-check: use given repo's hash_algo at verify_packfile()
cache-tree: use given repo's hash_algo at verify_one()
diff: make diff_populate_filespec() honor its repo argument
Junio C Hamano [Fri, 14 Feb 2020 20:54:22 +0000 (12:54 -0800)]
Merge branch 'jk/diff-honor-wserrhighlight-in-plumbing'
The diff-* plumbing family of subcommands now pay attention to the
diff.wsErrorHighlight configuration, which has been ignored before;
this allows "git add -p" to also show the whitespace problems to
the end user.
* jk/diff-honor-wserrhighlight-in-plumbing:
diff: move diff.wsErrorHighlight to "basic" config
Junio C Hamano [Fri, 14 Feb 2020 20:54:22 +0000 (12:54 -0800)]
Merge branch 'ds/sparse-checkout-harden'
Some rough edges in the sparse-checkout feature, especially around
the cone mode, have been cleaned up.
* ds/sparse-checkout-harden:
sparse-checkout: fix cone mode behavior mismatch
sparse-checkout: improve docs around 'set' in cone mode
sparse-checkout: escape all glob characters on write
sparse-checkout: use C-style quotes in 'list' subcommand
sparse-checkout: unquote C-style strings over --stdin
sparse-checkout: write escaped patterns in cone mode
sparse-checkout: properly match escaped characters
sparse-checkout: warn on globs in cone patterns
sparse-checkout: detect short patterns
sparse-checkout: cone mode does not recognize "**"
sparse-checkout: fix documentation typo for core.sparseCheckoutCone
clone: fix --sparse option with URLs
sparse-checkout: create leading directories
t1091: improve here-docs
t1091: use check_files to reduce boilerplate
Junio C Hamano [Fri, 14 Feb 2020 20:54:22 +0000 (12:54 -0800)]
Merge branch 'ld/p4-cleanup-processes'
p4 updates.
* ld/p4-cleanup-processes:
git-p4: avoid leak of file handle when cloning
git-p4: check for access to remote host earlier
git-p4: cleanup better on error exit
git-p4: create helper function importRevisions()
git-p4: disable some pylint warnings, to get pylint output to something manageable
git-p4: add P4CommandException to report errors talking to Perforce
git-p4: make closeStreams() idempotent
Junio C Hamano [Fri, 14 Feb 2020 20:54:21 +0000 (12:54 -0800)]
Merge branch 'jt/connectivity-check-optim-in-partial-clone'
Unneeded connectivity check is now disabled in a partial clone when
fetching into it.
* jt/connectivity-check-optim-in-partial-clone:
fetch: forgo full connectivity check if --filter
connected: verify promisor-ness of partial clone
Junio C Hamano [Fri, 14 Feb 2020 20:54:21 +0000 (12:54 -0800)]
Merge branch 'jk/get-oid-error-message-i18n'
A low-level API function get_oid(), that accepts various ways to
name an object, used to issue end-user facing error messages
without l10n, which has been updated to be translatable.
* jk/get-oid-error-message-i18n:
sha1-name: mark get_oid() error messages for translation
t1506: drop space after redirection operator
t1400: avoid "test" string comparisons
Junio C Hamano [Fri, 14 Feb 2020 20:54:21 +0000 (12:54 -0800)]
Merge branch 'ag/edit-todo-drop-check'
Allow the rebase.missingCommitsCheck configuration to kick in when
"rebase --edit-todo" and "rebase --continue" restarts the procedure.
* ag/edit-todo-drop-check:
rebase-interactive: warn if commit is dropped with `rebase --edit-todo'
sequencer: move check_todo_list_from_file() to rebase-interactive.c
Junio C Hamano [Fri, 14 Feb 2020 20:54:21 +0000 (12:54 -0800)]
Merge branch 'dl/test-must-fail-fixes-2'
Test updates.
* dl/test-must-fail-fixes-2:
t4124: only mark git command with test_must_fail
t3507: use test_path_is_missing()
t3507: fix indentation
t3504: do check for conflict marker after failed cherry-pick
t3419: stop losing return code of git command
t3415: increase granularity of test_auto_{fixup,squash}()
t3415: stop losing return codes of git commands
t3310: extract common notes_merge_files_gone()
t3030: use test_path_is_missing()
t2018: replace "sha" with "oid"
t2018: don't lose return code of git commands
t2018: teach do_checkout() to accept `!` arg
t2018: be more discerning when checking for expected exit codes
t2018: improve style of if-statement
t2018: add space between function name and ()
t2018: remove trailing space from test description
Junio C Hamano [Fri, 14 Feb 2020 20:54:20 +0000 (12:54 -0800)]
Merge branch 'ag/rebase-avoid-unneeded-checkout'
"git rebase -i" (and friends) used to unnecessarily check out the
tip of the branch to be rebased, which has been corrected.
* ag/rebase-avoid-unneeded-checkout:
rebase -i: stop checking out the tip of the branch to rebase
Junio C Hamano [Fri, 14 Feb 2020 20:54:20 +0000 (12:54 -0800)]
Merge branch 'js/rebase-i-with-colliding-hash'
"git rebase -i" identifies existing commits in its todo file with
their abbreviated object name, which could become ambigous as it
goes to create new commits, and has a mechanism to avoid ambiguity
in the main part of its execution. A few other cases however were
not covered by the protection against ambiguity, which has been
corrected.
* js/rebase-i-with-colliding-hash:
rebase -i: also avoid SHA-1 collisions with missingCommitsCheck
rebase -i: re-fix short SHA-1 collision
parse_insn_line(): improve error message when parsing failed
Junio C Hamano [Fri, 14 Feb 2020 20:54:20 +0000 (12:54 -0800)]
Merge branch 'kw/fsmonitor-watchman-racefix'
A new version of fsmonitor-watchman hook has been introduced, to
avoid races.
* kw/fsmonitor-watchman-racefix:
fsmonitor: update documentation for hook version and watchman hooks
fsmonitor: add fsmonitor hook scripts for version 2
fsmonitor: handle version 2 of the hooks that will use opaque token
fsmonitor: change last update timestamp on the index_state to opaque token
Junio C Hamano [Fri, 14 Feb 2020 20:54:20 +0000 (12:54 -0800)]
Merge branch 'mt/threaded-grep-in-object-store'
Traditionally, we avoided threaded grep while searching in objects
(as opposed to files in the working tree) as accesses to the object
layer is not thread-safe. This limitation is getting lifted.
* mt/threaded-grep-in-object-store:
grep: use no. of cores as the default no. of threads
grep: move driver pre-load out of critical section
grep: re-enable threads in non-worktree case
grep: protect packed_git [re-]initialization
grep: allow submodule functions to run in parallel
submodule-config: add skip_if_read option to repo_read_gitmodules()
grep: replace grep_read_mutex by internal obj read lock
object-store: allow threaded access to object reading
replace-object: make replace operations thread-safe
grep: fix racy calls in grep_objects()
grep: fix race conditions at grep_submodule()
grep: fix race conditions on userdiff calls
Junio C Hamano [Fri, 14 Feb 2020 20:54:19 +0000 (12:54 -0800)]
Merge branch 'jn/promote-proto2-to-default'
The transport protocol version 2 becomes the default one.
* jn/promote-proto2-to-default:
fetch: default to protocol version 2
protocol test: let protocol.version override GIT_TEST_PROTOCOL_VERSION
test: request GIT_TEST_PROTOCOL_VERSION=0 when appropriate
config doc: protocol.version is not experimental
fetch test: use more robust test for filtered objects
Junio C Hamano [Fri, 14 Feb 2020 20:54:19 +0000 (12:54 -0800)]
Merge branch 'jk/packfile-reuse-cleanup'
The way "git pack-objects" reuses objects stored in existing pack
to generate its result has been improved.
* jk/packfile-reuse-cleanup:
pack-bitmap: don't rely on bitmap_git->reuse_objects
pack-objects: add checks for duplicate objects
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: simplify bitmap_has_oid_in_uninteresting()
pack-bitmap: uninteresting oid can be outside bitmapped packfile
pack-bitmap: introduce bitmap_walk_contains()
ewah/bitmap: introduce bitmap_word_alloc()
packfile: expose get_delta_base()
builtin/pack-objects: report reused packfile objects
Junio C Hamano [Fri, 14 Feb 2020 20:54:19 +0000 (12:54 -0800)]
Merge branch 'hw/advice-add-nothing'
Two help messages given when "git add" notices the user gave it
nothing to add have been updated to use advise() API.
* hw/advice-add-nothing:
add: change advice config variables used by the add API
add: use advise function to display hints
Junio C Hamano [Fri, 14 Feb 2020 20:42:34 +0000 (12:42 -0800)]
Merge branch 'js/convert-typofix' into maint
Typofix.
* js/convert-typofix:
convert: fix typo
Junio C Hamano [Fri, 14 Feb 2020 20:42:33 +0000 (12:42 -0800)]
Merge branch 'js/ci-squelch-doc-warning' into maint
Squelch unhelpful warning message during documentation build.
* js/ci-squelch-doc-warning:
ci: ignore rubygems warning in the "Documentation" job
Junio C Hamano [Fri, 14 Feb 2020 20:42:33 +0000 (12:42 -0800)]
Merge branch 'jb/multi-pack-index-docfix' into maint
Doc fix.
* jb/multi-pack-index-docfix:
pack-format: correct multi-pack-index description
Junio C Hamano [Fri, 14 Feb 2020 20:42:33 +0000 (12:42 -0800)]
Merge branch 'ma/diff-doc-clarify-regexp-example' into maint
Doc clarification.
* ma/diff-doc-clarify-regexp-example:
diff-options.txt: avoid "regex" overload in example
Junio C Hamano [Fri, 14 Feb 2020 20:42:32 +0000 (12:42 -0800)]
Merge branch 'ms/doc-bundle-format' into maint
Technical details of the bundle format has been documented.
I think this is in a good enough shape.
* ms/doc-bundle-format:
doc: describe Git bundle format
Junio C Hamano [Fri, 14 Feb 2020 20:42:32 +0000 (12:42 -0800)]
Merge branch 'es/submodule-fetch-message-fix' into maint
Error message fix.
* es/submodule-fetch-message-fix:
submodule: add newline on invalid submodule error
Junio C Hamano [Fri, 14 Feb 2020 20:42:32 +0000 (12:42 -0800)]
Merge branch 'jb/parse-options-message-fix' into maint
Error message fix.
* jb/parse-options-message-fix:
parse-options: lose an unnecessary space in an error message
Junio C Hamano [Fri, 14 Feb 2020 20:42:32 +0000 (12:42 -0800)]
Merge branch 'ma/filter-branch-doc-caret' into maint
Doc mark-up updates.
* ma/filter-branch-doc-caret:
git-filter-branch.txt: wrap "maths" notation in backticks
Junio C Hamano [Fri, 14 Feb 2020 20:42:32 +0000 (12:42 -0800)]
Merge branch 'km/submodule-doc-use-sm-path' into maint
Docfix.
* km/submodule-doc-use-sm-path:
submodule foreach: replace $path with $sm_path in example
Junio C Hamano [Fri, 14 Feb 2020 20:42:31 +0000 (12:42 -0800)]
Merge branch 'pb/do-not-recurse-grep-no-index' into maint
"git grep --no-index" should not get affected by the contents of
the .gitmodules file but when "--recurse-submodules" is given or
the "submodule.recurse" variable is set, it did. Now these
settings are ignored in the "--no-index" mode.
* pb/do-not-recurse-grep-no-index:
grep: ignore --recurse-submodules if --no-index is given
Junio C Hamano [Fri, 14 Feb 2020 20:42:31 +0000 (12:42 -0800)]
Merge branch 'jt/t5616-robustify' into maint
Futureproofing a test not to depend on the current implementation
detail.
* jt/t5616-robustify:
t5616: make robust to delta base change
Junio C Hamano [Fri, 14 Feb 2020 20:42:31 +0000 (12:42 -0800)]
Merge branch 'en/fill-directory-fixes-more' into maint
Corner case bugs in "git clean" that stems from a (necessarily for
performance reasons) awkward calling convention in the directory
enumeration API has been corrected.
* en/fill-directory-fixes-more:
dir: point treat_leading_path() warning to the right place
dir: restructure in a way to avoid passing around a struct dirent
dir: treat_leading_path() and read_directory_recursive(), round 2
clean: demonstrate a bug with pathspecs
Junio C Hamano [Fri, 14 Feb 2020 20:42:31 +0000 (12:42 -0800)]
Merge branch 'bc/misconception-doc' into maint
Doc updates.
* bc/misconception-doc:
docs: mention when increasing http.postBuffer is valuable
doc: dissuade users from trying to ignore tracked files
Junio C Hamano [Fri, 14 Feb 2020 20:42:31 +0000 (12:42 -0800)]
Merge branch 'bc/author-committer-doc' into maint
Clarify documentation on committer/author identities.
* bc/author-committer-doc:
doc: provide guidance on user.name format
docs: expand on possible and recommended user config options
doc: move author and committer information to git-commit(1)
Junio C Hamano [Fri, 14 Feb 2020 20:42:30 +0000 (12:42 -0800)]
Merge branch 'ds/refmap-doc' into maint
"git fetch --refmap=" option has got a better documentation.
* ds/refmap-doc:
fetch: document and test --refmap=""
Junio C Hamano [Fri, 14 Feb 2020 20:42:30 +0000 (12:42 -0800)]
Merge branch 'bc/actualmente' into maint
Doc grammo fix.
* bc/actualmente:
docs: use "currently" for the present time
Junio C Hamano [Fri, 14 Feb 2020 20:42:30 +0000 (12:42 -0800)]
Merge branch 'rt/submodule-i18n' into maint
Comments update.
* rt/submodule-i18n:
submodule.c: mark more strings for translation
Junio C Hamano [Fri, 14 Feb 2020 20:42:29 +0000 (12:42 -0800)]
Merge branch 'jk/test-fixes' into maint
Test fixes.
* jk/test-fixes:
t7800: don't rely on reuse_worktree_file()
t4018: drop "debugging" cat from hunk-header tests
Junio C Hamano [Fri, 14 Feb 2020 20:42:29 +0000 (12:42 -0800)]
Merge branch 'jk/asan-build-fix' into maint
Work around test breakages caused by custom regex engine used in
libasan, when address sanitizer is used with more recent versions
of gcc and clang.
* jk/asan-build-fix:
Makefile: use compat regex with SANITIZE=address
Junio C Hamano [Fri, 14 Feb 2020 20:42:29 +0000 (12:42 -0800)]
Merge branch 'ds/sparse-cone' into maint
The code recently added in this release to move to the entry beyond
the ones in the same directory in the index in the sparse-cone mode
did not count the number of entries to skip over incorrectly, which
has been corrected.
* ds/sparse-cone:
.mailmap: fix GGG authoship screwup
unpack-trees: correctly compute result count
Junio C Hamano [Fri, 14 Feb 2020 20:42:29 +0000 (12:42 -0800)]
Merge branch 'nd/switch-and-restore' into maint
"git restore --staged" did not correctly update the cache-tree
structure, resulting in bogus trees to be written afterwards, which
has been corrected.
* nd/switch-and-restore:
restore: invalidate cache-tree when removing entries with --staged
Junio C Hamano [Fri, 14 Feb 2020 20:42:28 +0000 (12:42 -0800)]
Merge branch 'jk/no-flush-upon-disconnecting-slrpc-transport' into maint
Reduce unnecessary round-trip when running "ls-remote" over the
stateless RPC mechanism.
* jk/no-flush-upon-disconnecting-slrpc-transport:
transport: don't flush when disconnecting stateless-rpc helper
Junio C Hamano [Fri, 14 Feb 2020 20:42:28 +0000 (12:42 -0800)]
Merge branch 'hw/tutorial-favor-switch-over-checkout' into maint
Complete an update to tutorial that encourages "git switch" over
"git checkout" that was done only half-way.
* hw/tutorial-favor-switch-over-checkout:
doc/gitcore-tutorial: fix prose to match example command
Junio C Hamano [Fri, 14 Feb 2020 20:42:27 +0000 (12:42 -0800)]
Merge branch 'es/unpack-trees-oob-fix' into maint
The code that tries to skip over the entries for the paths in a
single directory using the cache-tree was not careful enough
against corrupt index file.
* es/unpack-trees-oob-fix:
unpack-trees: watch for out-of-range index position
Junio C Hamano [Fri, 14 Feb 2020 20:42:27 +0000 (12:42 -0800)]
Merge branch 'bc/run-command-nullness-after-free-fix' into maint
C pedantry ;-) fix.
* bc/run-command-nullness-after-free-fix:
run-command: avoid undefined behavior in exists_in_PATH
Junio C Hamano [Fri, 14 Feb 2020 20:42:27 +0000 (12:42 -0800)]
Merge branch 'en/string-list-can-be-custom-sorted' into maint
API-doc update.
* en/string-list-can-be-custom-sorted:
string-list: note in docs that callers can specify sorting function
Junio C Hamano [Fri, 14 Feb 2020 20:42:27 +0000 (12:42 -0800)]
Merge branch 'jt/sha1-file-remove-oi-skip-cached' into maint
has_object_file() said "no" given an object registered to the
system via pretend_object_file(), making it inconsistent with
read_object_file(), causing lazy fetch to attempt fetching an
empty tree from promisor remotes.
* jt/sha1-file-remove-oi-skip-cached:
sha1-file: remove OBJECT_INFO_SKIP_CACHED
Junio C Hamano [Fri, 14 Feb 2020 20:42:27 +0000 (12:42 -0800)]
Merge branch 'hw/commit-advise-while-rejecting' into maint
"git commit" gives output similar to "git status" when there is
nothing to commit, but without honoring the advise.statusHints
configuration variable, which has been corrected.
* hw/commit-advise-while-rejecting:
commit: honor advice.statusHints when rejecting an empty commit
Junio C Hamano [Wed, 12 Feb 2020 20:12:08 +0000 (12:12 -0800)]
The fourth batch for 2.26
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 12 Feb 2020 20:41:39 +0000 (12:41 -0800)]
Merge branch 'js/convert-typofix'
Typofix.
* js/convert-typofix:
convert: fix typo
Junio C Hamano [Wed, 12 Feb 2020 20:41:39 +0000 (12:41 -0800)]
Merge branch 'js/ci-squelch-doc-warning'
Squelch unhelpful warning message during documentation build.
* js/ci-squelch-doc-warning:
ci: ignore rubygems warning in the "Documentation" job
Junio C Hamano [Wed, 12 Feb 2020 20:41:39 +0000 (12:41 -0800)]
Merge branch 'jb/multi-pack-index-docfix'
Doc fix.
* jb/multi-pack-index-docfix:
pack-format: correct multi-pack-index description
Junio C Hamano [Wed, 12 Feb 2020 20:41:38 +0000 (12:41 -0800)]
Merge branch 'ma/diff-doc-clarify-regexp-example'
Doc clarification.
* ma/diff-doc-clarify-regexp-example:
diff-options.txt: avoid "regex" overload in example
Junio C Hamano [Wed, 12 Feb 2020 20:41:38 +0000 (12:41 -0800)]
Merge branch 'ms/doc-bundle-format'
Technical details of the bundle format has been documented.
* ms/doc-bundle-format:
doc: describe Git bundle format
Junio C Hamano [Wed, 12 Feb 2020 20:41:38 +0000 (12:41 -0800)]
Merge branch 'es/submodule-fetch-message-fix'
Error message fix.
* es/submodule-fetch-message-fix:
submodule: add newline on invalid submodule error
Junio C Hamano [Wed, 12 Feb 2020 20:41:37 +0000 (12:41 -0800)]
Merge branch 'jb/parse-options-message-fix'
Error message fix.
* jb/parse-options-message-fix:
parse-options: lose an unnecessary space in an error message
Junio C Hamano [Wed, 12 Feb 2020 20:41:37 +0000 (12:41 -0800)]
Merge branch 'ma/filter-branch-doc-caret'
Doc mark-up updates.
* ma/filter-branch-doc-caret:
git-filter-branch.txt: wrap "maths" notation in backticks
Junio C Hamano [Wed, 12 Feb 2020 20:41:37 +0000 (12:41 -0800)]
Merge branch 'km/submodule-doc-use-sm-path'
Docfix.
* km/submodule-doc-use-sm-path:
submodule foreach: replace $path with $sm_path in example
Junio C Hamano [Wed, 12 Feb 2020 20:41:37 +0000 (12:41 -0800)]
Merge branch 'jc/skip-prefix'
Code simplification.
* jc/skip-prefix:
C: use skip_prefix() to avoid hardcoded string length
Junio C Hamano [Wed, 12 Feb 2020 20:41:36 +0000 (12:41 -0800)]
Merge branch 'pb/do-not-recurse-grep-no-index'
"git grep --no-index" should not get affected by the contents of
the .gitmodules file but when "--recurse-submodules" is given or
the "submodule.recurse" variable is set, it did. Now these
settings are ignored in the "--no-index" mode.
* pb/do-not-recurse-grep-no-index:
grep: ignore --recurse-submodules if --no-index is given
Junio C Hamano [Wed, 12 Feb 2020 20:41:36 +0000 (12:41 -0800)]
Merge branch 'hw/doc-git-dir'
One effect of specifying where the GIT_DIR is (either with the
environment variable, or with the "git --git-dir=<where> cmd"
option) is to disable the repository discovery. This has been
placed a bit more stress in the documentation, as new users often
get confused.
* hw/doc-git-dir:
git: update documentation for --git-dir
Junio C Hamano [Wed, 12 Feb 2020 20:41:36 +0000 (12:41 -0800)]
Merge branch 'jk/push-default-doc'
Doc update.
* jk/push-default-doc:
doc: drop "explicitly given" from push.default description
Junio C Hamano [Wed, 12 Feb 2020 20:41:36 +0000 (12:41 -0800)]
Merge branch 'jk/clang-sanitizer-fixes'
C pedantry ;-) fix.
* jk/clang-sanitizer-fixes:
obstack: avoid computing offsets from NULL pointer
xdiff: avoid computing non-zero offset from NULL pointer
avoid computing zero offsets from NULL pointer
merge-recursive: use subtraction to flip stage
merge-recursive: silence -Wxor-used-as-pow warning
Junio C Hamano [Wed, 12 Feb 2020 20:41:35 +0000 (12:41 -0800)]
Merge branch 'dt/submodule-rm-with-stale-cache'
Running "git rm" on a submodule failed unnecessarily when
.gitmodules is only cache-dirty, which has been corrected.
* dt/submodule-rm-with-stale-cache:
git rm submodule: succeed if .gitmodules index stat info is zero
Junio C Hamano [Wed, 12 Feb 2020 20:41:35 +0000 (12:41 -0800)]
Merge branch 'jt/t5616-robustify'
Futureproofing a test not to depend on the current implementation
detail.
* jt/t5616-robustify:
t5616: make robust to delta base change
Junio C Hamano [Wed, 12 Feb 2020 20:41:35 +0000 (12:41 -0800)]
Merge branch 'jk/escaped-wildcard-dwim'
Disambiguation logic to tell revisions and pathspec apart has been
tweaked so that backslash-escaped glob special characters do not
count in the "wildcards are pathspec" rule.
* jk/escaped-wildcard-dwim:
verify_filename(): handle backslashes in "wildcards are pathspecs" rule
Junio C Hamano [Wed, 12 Feb 2020 20:41:35 +0000 (12:41 -0800)]
Merge branch 'jn/pretend-object-doc'
Warn programmers about pretend_object_file() that allows the code
to tentatively use in-core objects.
* jn/pretend-object-doc:
sha1-file: document how to use pretend_object_file
Johannes Schindelin [Tue, 11 Feb 2020 18:56:18 +0000 (18:56 +0000)]
convert: fix typo
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johannes Schindelin [Sun, 9 Feb 2020 22:36:16 +0000 (22:36 +0000)]
ci: ignore rubygems warning in the "Documentation" job
A recent update in the Linux VM images used by Azure Pipelines surfaced
a new problem in the "Documentation" job. Apparently, this warning
appears 396 times on `stderr` when running `make doc`:
/usr/lib/ruby/vendor_ruby/rubygems/defaults/operating_system.rb:10: warning: constant Gem::ConfigMap is deprecated
This problem was already reported to the `rubygems` project via
https://github.com/rubygems/rubygems/issues/3068.
As there is nothing Git can do about this warning, and as the
"Documentation" job reports this warning as a failure, let's just
silence it and move on.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Acked-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johannes Berg [Fri, 7 Feb 2020 22:16:40 +0000 (23:16 +0100)]
pack-format: correct multi-pack-index description
The description of the multi-pack-index contains a small bug,
if all offsets are < 2^32 then there will be no LOFF chunk,
not only if they're all < 2^31 (since the highest bit is only
needed as the "LOFF-escape" when that's actually needed.)
Correct this, and clarify that in that case only offsets up
to 2^31-1 can be stored in the OOFF chunk.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Martin Ågren [Thu, 6 Feb 2020 20:53:01 +0000 (21:53 +0100)]
diff-options.txt: avoid "regex" overload in example
When we exemplify the difference between `-G` and `-S` (using
`--pickaxe-regex`), we do so using an example diff and git-diff
invocation involving "regexec", "regexp", "regmatch", ...
The example is correct, but we can make it easier to untangle by
avoiding writing "regex.*" unless it's really needed to make our point.
Use some made-up, non-regexy words instead.
Reported-by: Adam Dinwoodie <adam@dinwoodie.org>
Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Reviewed-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Masaya Suzuki [Fri, 7 Feb 2020 20:42:25 +0000 (12:42 -0800)]
doc: describe Git bundle format
The bundle format was not documented. Describe the format with ABNF and
explain the meaning of each part.
Signed-off-by: Masaya Suzuki <masayasuzuki@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Emily Shaffer [Fri, 7 Feb 2020 00:48:33 +0000 (16:48 -0800)]
submodule: add newline on invalid submodule error
Since 'err' contains output for multiple submodules and is printed all
at once by fetch_populated_submodules(), errors for each submodule
should be newline separated for readability. The same strbuf is added to
with a newline in the other half of the conditional where this error is
detected, so make the two consistent.
Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Heba Waly [Thu, 6 Feb 2020 10:57:30 +0000 (23:57 +1300)]
add: change advice config variables used by the add API
advice.addNothing config variable is used to control the visibility of
two advice messages in the add library. This config variable is
replaced by two new variables, whose names are more clear and relevant
to the two cases.
Also add the two new variables to the documentation.
Signed-off-by: Heba Waly <heba.waly@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 5 Feb 2020 21:26:03 +0000 (13:26 -0800)]
The third batch for 2.26
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 5 Feb 2020 22:35:00 +0000 (14:35 -0800)]
Merge branch 'mt/sparse-checkout-doc-update'
Doc update.
* mt/sparse-checkout-doc-update:
completion: add support for sparse-checkout
doc: sparse-checkout: mention --cone option
Junio C Hamano [Wed, 5 Feb 2020 22:35:00 +0000 (14:35 -0800)]
Merge branch 'pb/recurse-submodule-in-worktree-fix'
The "--recurse-submodules" option of various subcommands did not
work well when run in an alternate worktree, which has been
corrected.
* pb/recurse-submodule-in-worktree-fix:
submodule.c: use get_git_dir() instead of get_git_common_dir()
t2405: clarify test descriptions and simplify test
t2405: use git -C and test_commit -C instead of subshells
t7410: rename to t2405-worktree-submodule.sh
Junio C Hamano [Wed, 5 Feb 2020 22:34:59 +0000 (14:34 -0800)]
Merge branch 'es/fetch-show-failed-submodules-atend'
A fetch that is told to recursively fetch updates in submodules
inevitably produces reams of output, and it becomes hard to spot
error messages. The command has been taught to enumerate
submodules that had errors at the end of the operation.
* es/fetch-show-failed-submodules-atend:
fetch: emphasize failure during submodule fetch
Junio C Hamano [Wed, 5 Feb 2020 22:34:59 +0000 (14:34 -0800)]
Merge branch 'en/fill-directory-fixes-more'
Corner case bugs in "git clean" that stems from a (necessarily for
performance reasons) awkward calling convention in the directory
enumeration API has been corrected.
* en/fill-directory-fixes-more:
dir: point treat_leading_path() warning to the right place
dir: restructure in a way to avoid passing around a struct dirent
dir: treat_leading_path() and read_directory_recursive(), round 2
clean: demonstrate a bug with pathspecs
Junio C Hamano [Wed, 5 Feb 2020 22:34:59 +0000 (14:34 -0800)]
Merge branch 'bc/hash-independent-tests-part-7'
Preparation of test scripts for the day when the object names will
use SHA-256 continues.
* bc/hash-independent-tests-part-7:
t5604: make hash independent
t5601: switch into repository to hash object
t5562: use $ZERO_OID
t5540: make hash size independent
t5537: make hash size independent
t5530: compute results based on object length
t5512: abstract away SHA-1-specific constants
t5510: make hash size independent
t5504: make hash algorithm independent
t5324: make hash size independent
t5319: make test work with SHA-256
t5319: change invalid offset for SHA-256 compatibility
t5318: update for SHA-256
t4300: abstract away SHA-1-specific constants
t4204: make hash size independent
t4202: abstract away SHA-1-specific constants
t4200: make hash size independent
t4134: compute appropriate length constant
t4066: compute index line in diffs
t4054: make hash-size independent
Junio C Hamano [Wed, 5 Feb 2020 22:34:58 +0000 (14:34 -0800)]
Merge branch 'km/submodule-add-errmsg'
Improve error message generation for "git submodule add".
* km/submodule-add-errmsg:
submodule add: show 'add --dry-run' stderr when aborting
Junio C Hamano [Wed, 5 Feb 2020 22:34:58 +0000 (14:34 -0800)]
Merge branch 'am/checkout-file-and-ref-ref-ambiguity'
"git checkout X" did not correctly fail when X is not a local
branch but could name more than one remote-tracking branches
(i.e. to be dwimmed as the starting point to create a corresponding
local branch), which has been corrected.
* am/checkout-file-and-ref-ref-ambiguity:
checkout: don't revert file on ambiguous tracking branches
parse_branchname_arg(): extract part as new function
Junio C Hamano [Wed, 5 Feb 2020 22:34:58 +0000 (14:34 -0800)]
Merge branch 'js/add-p-leftover-bits'
The final leg of rewriting "add -i/-p" in C.
* js/add-p-leftover-bits:
ci: include the built-in `git add -i` in the `linux-gcc` job
built-in add -p: handle Escape sequences more efficiently
built-in add -p: handle Escape sequences in interactive.singlekey mode
built-in add -p: respect the `interactive.singlekey` config setting
terminal: add a new function to read a single keystroke
terminal: accommodate Git for Windows' default terminal
terminal: make the code of disable_echo() reusable
built-in add -p: handle diff.algorithm
built-in add -p: support interactive.diffFilter
t3701: adjust difffilter test
Junio C Hamano [Wed, 5 Feb 2020 22:34:58 +0000 (14:34 -0800)]
Merge branch 'js/patch-mode-in-others-in-c'
The effort to move "git-add--interactive" to C continues.
* js/patch-mode-in-others-in-c:
commit --interactive: make it work with the built-in `add -i`
built-in add -p: implement the "worktree" patch modes
built-in add -p: implement the "checkout" patch modes
built-in stash: use the built-in `git add -p` if so configured
legacy stash -p: respect the add.interactive.usebuiltin setting
built-in add -p: implement the "stash" and "reset" patch modes
built-in add -p: prepare for patch modes other than "stage"
Junio C Hamano [Wed, 5 Feb 2020 22:34:57 +0000 (14:34 -0800)]
Merge branch 'dl/test-must-fail-fixes'
Test clean-up.
* dl/test-must-fail-fixes:
t1507: inline full_name()
t1507: run commands within test_expect_success
t1507: stop losing return codes of git commands
t1501: remove use of `test_might_fail cp`
t1409: use test_path_is_missing()
t1409: let sed open its own input file
t1307: reorder `nongit test_must_fail`
t1306: convert `test_might_fail rm` to `rm -f`
t0020: use ! check_packed_refs_marked
t0020: don't use `test_must_fail has_cr`
t0003: don't use `test_must_fail attr_check`
t0003: use test_must_be_empty()
t0003: use named parameters in attr_check()
t0000: replace test_must_fail with run_sub_test_lib_test_err()
t/lib-git-p4: use test_path_is_missing()
Jacques Bodin-Hullin [Wed, 5 Feb 2020 13:07:23 +0000 (13:07 +0000)]
parse-options: lose an unnecessary space in an error message
Signed-off-by: Jacques Bodin-Hullin <j.bodinhullin@monsieurbiz.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Mon, 3 Feb 2020 14:40:55 +0000 (09:40 -0500)]
index-pack: downgrade twice-resolved REF_DELTA to die()
When we're resolving a REF_DELTA, we compare-and-swap its type from
REF_DELTA to whatever real type the base object has, as discussed in
ab791dd138 (index-pack: fix race condition with duplicate bases,
2014-08-29). If the old type wasn't a REF_DELTA, we consider that a
BUG(). But as discussed in that commit, we might see this case whenever
we try to resolve an object twice, which may happen because we have
multiple copies of the base object.
So this isn't a bug at all, but rather a sign that the input pack is
broken. And indeed, this case is triggered already in t5309.5 and
t5309.6, which create packs with delta cycles and duplicate bases. But
we never noticed because those tests are marked expect_failure.
Those tests were added by
b2ef3d9ebb (test index-pack on packs with
recoverable delta cycles, 2013-08-23), which was leaving the door open
for cases that we theoretically _could_ handle. And when we see an
already-resolved object like this, in theory we could keep going after
confirming that the previously resolved child->real_type matches
base->obj->real_type. But:
- enforcing the "only resolve once" rule here saves us from an
infinite loop in other parts of the code. If we keep going, then the
delta cycle in t5309.5 causes us to loop infinitely, as
find_ref_delta_children() doesn't realize which objects have already
been resolved. So there would be more changes needed to make this
case work, and in the meantime we'd be worse off.
- any pack that triggers this is broken anyway. It either has a
duplicate base object, or it has a cycle which causes us to bring in
a duplicate via --fix-thin. In either case, we'd end up rejecting
the pack in write_idx_file(), which also detects duplicates.
So the tests have little value in documenting what we _could_ be doing
(and have been neglected for 6+ years). Let's switch them to confirming
that we handle this case cleanly (and switch out the BUG() for a more
informative die() so that we do so).
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johan Herland [Mon, 3 Feb 2020 21:04:45 +0000 (22:04 +0100)]
notes.c: fix off-by-one error when decreasing notes fanout
As noted in the previous commit, the nature of the fanout heuristic
in the notes code causes the exact point at which we increase or
decrease the notes fanout to vary with the objects being annotated.
Since the object ids generated by the test environment are
deterministic (by design), the notes generated and tested by t3305
are always the same, and we therefore happen to see the same fanout
behavior from one run to the next.
Coincidentally, if we were to change the test environment slightly
(say by making a test commit on an unrelated branch before we start
the t3305 test proper), we not only see the fanout switch happen at
different points, we also manage to trigger a _bug_ in the notes
code where the fanout 1 -> 0 switch is not applied uniformly across
the notes tree, but instead yields a notes tree like this:
...
bdeafb301e44b0e4db0f738a2d2a7beefdb70b70
bff2d39b4f7122bd4c5caee3de353a774d1e632a
d3/
8ec8f851adf470131178085bfbaab4b12ad2a7
e0b173960431a3e692ae929736df3c9b73a11d5b
eb3c3aede523d729990ac25c62a93eb47c21e2e3
...
The bug occurs when we are writing out a notes tree with a newly
decreased fanout, and the notes tree contains unexpanded subtrees
that should be consolidated into the parent tree as a consequence of
the decreased fanout):
Subtrees that happen to sit at an _even_ level in the internal notes
16-tree structure (in other words: subtrees whose path - "d3" in the
example above - is unique in the first nibble - i.e. there are no
other note paths that start with "d") are _not_ unpacked as part of
the tree writeout. This error will repeat itself in subsequent note
trees until the subtree is forced to be unpacked. In t3305 this only
happens when the
d38ec8f8 note is itself removed from the tree.
The error is not severe (no information is lost, and the notes code
is able to read/decode this tree and manipulate it correctly), but
this is nonetheless a bug in the current implementation that should
be fixed.
That said, fixing the off-by-one error is not without complications:
We must take into account that the load_subtree() call from
for_each_note_helper() (that is now done to correctly unpack the
subtree while we're writing out the notes tree) may end up inserting
unpacked non-notes into the linked list of non_note entries held by
the struct notes_tree. Since we are in the process of writing out the
notes tree, this linked list is currently in the process of being
traversed by write_each_non_note_until(). The unpacked non-notes are
necessarily inserted between the last non-note we wrote out, and the
next non-note to be written. Hence, we cannot simply hold the
next_non_note to write in struct write_each_note_data (as we would
then silently skip these newly inserted notes), but must instead
always follow the ->next pointer from the last non-note we wrote.
(This part was caught by an existing test in t3304.)
Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: Brian M. Carlson <sandals@crustytoothpaste.net>
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johan Herland [Mon, 3 Feb 2020 21:04:44 +0000 (22:04 +0100)]
t3305: check notes fanout more carefully and robustly
In short, before this patch, this test script:
- creates many notes
- verifies that all notes in the notes tree has a fanout of 1
- removes most notes
- verifies that the notes in the notes tree now has a fanout of 0
The fanout verification only happened twice: after creating all the
notes, and after removing most of them.
This patch strengthens the test by checking the fanout after _each_
added/removed note: We assert that the switch from fanout 0 -> 1
happens exactly once while adding notes (and that the switch pervades
the entire notes tree). Likewise, we assert that the switch from
fanout 1 -> 0 happens exactly once while removing notes.
Additionally, we decrease the number of notes left after removal,
from 50 to 15 notes, in order to ensure that fanout 1 -> 0 transition
keeps happening regardless of external factors[1].
[1]: Currently (with the SHA1 hash function and the deterministic
object ids of the test environment) the fanout heuristic in the notes
code happens to switch from 0 -> 1 at 109 notes, and from 1 -> 0 at
59 notes. However, changing the hash function or other external
factors will vary these numbers, and the latter may - in theory - go
as low as 15. For more details, please see the discussion at
https://public-inbox.org/git/
20200125230035.136348-4-sandals@crustytoothpaste.net/
Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: Brian M. Carlson <sandals@crustytoothpaste.net>
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Martin Ågren [Mon, 3 Feb 2020 20:36:50 +0000 (21:36 +0100)]
git-filter-branch.txt: wrap "maths" notation in backticks
In this paragraph, we have a few instances of the '^' character, which
we give as "\^". This renders well with AsciiDoc ("^"), but Asciidoctor
renders it literally as "\^". Dropping the backslashes renders fine
with Asciidoctor, but not AsciiDoc...
An earlier version of this patch used "{caret}" instead of "^", which
avoided these escaping problems. The rendering was still so-so, though
-- these expressions end up set as normal text, similarly to when one
provides, e.g., computer code in the middle of running text, without
properly marking it with `backticks` to be monospaced.
As noted by Jeff King, this suggests actually wrapping these
expressions in backticks, setting them in monospace.
The lone "5" could be left as is or wrapped as `5`. Spell it out as
"five" instead -- this generally looks better anyway for small numbers
in the middle of text like this.
Suggested-by: Jeff King <peff@peff.net>
Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Taylor Blau [Mon, 3 Feb 2020 21:18:04 +0000 (13:18 -0800)]
commit-graph.h: use odb in 'load_commit_graph_one_fd_st'
Apply a similar treatment as in the previous patch to pass a 'struct
object_directory *' through the 'load_commit_graph_one_fd_st'
initializer, too.
This prevents a potential bug where a pointer comparison is made to a
NULL 'g->odb', which would cause the commit-graph machinery to think
that a pair of commit-graphs belonged to different alternates when in
fact they do not (i.e., in the case of no '--object-dir').
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Taylor Blau [Mon, 3 Feb 2020 21:18:02 +0000 (13:18 -0800)]
commit-graph.c: remove path normalization, comparison
As of the previous patch, all calls to 'commit-graph.c' functions which
perform path normalization (for e.g., 'get_commit_graph_filename()') are
of the form 'ctx->odb->path', which is always in normalized form.
Now that there are no callers passing non-normalized paths to these
functions, ensure that future callers are bound by the same restrictions
by making these functions take a 'struct object_directory *' instead of
a 'const char *'. To match, replace all calls with arguments of the form
'ctx->odb->path' with 'ctx->odb' To recover the path, functions that
perform path manipulation simply use 'odb->path'.
Further, avoid string comparisons with arguments of the form
'odb->path', and instead prefer raw pointer comparisons, which
accomplish the same effect, but are far less brittle.
This has a pleasant side-effect of making these functions much more
robust to paths that cannot be normalized by 'normalize_path_copy()',
i.e., because they are outside of the current working directory.
For example, prior to this patch, Valgrind reports that the following
uninitialized memory read [1]:
$ ( cd t && GIT_DIR=../.git valgrind git rev-parse HEAD^ )
because 'normalize_path_copy()' can't normalize '../.git' (since it's
relative to but above of the current working directory) [2].
By using a 'struct object_directory *' directly,
'get_commit_graph_filename()' does not need to normalize, because all
paths are relative to the current working directory since they are
always read from the '->path' of an object directory.
[1]: https://lore.kernel.org/git/
20191027042116.GA5801@sigill.intra.peff.net.
[2]: The bug here is that 'get_commit_graph_filename()' returns the
result of 'normalize_path_copy()' without checking the return
value.
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Taylor Blau [Mon, 3 Feb 2020 21:18:00 +0000 (13:18 -0800)]
commit-graph.h: store object directory in 'struct commit_graph'
In a previous patch, the 'char *object_dir' in 'struct commit_graph' was
replaced with a 'struct object_directory'. This patch applies the same
treatment to 'struct commit_graph', which is another intermediate step
towards getting rid of all path normalization in 'commit-graph.c'.
Instead of taking a 'char *object_dir', functions that construct a
'struct commit_graph' now take a 'struct object_directory *'. Any code
that needs an object directory path use '->path' instead.
This ensures that all calls to functions that perform path normalization
are given arguments which do not themselves require normalization. This
prepares those functions to drop their normalization entirely, which
will occur in the subsequent patch.
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Taylor Blau [Tue, 4 Feb 2020 05:51:50 +0000 (21:51 -0800)]
commit-graph.h: store an odb in 'struct write_commit_graph_context'
There are lots of places in 'commit-graph.h' where a function either has
(or almost has) a full 'struct object_directory *', accesses '->path',
and then throws away the rest of the struct.
This can cause headaches when comparing the locations of object
directories across alternates (e.g., in the case of deciding if two
commit-graph layers can be merged). These paths are normalized with
'normalize_path_copy()' which mitigates some comparison issues, but not
all [1].
Replace usage of 'char *object_dir' with 'odb->path' by storing a
'struct object_directory *' in the 'write_commit_graph_context'
structure. This is an intermediate step towards getting rid of all path
normalization in 'commit-graph.c'.
Resolving a user-provided '--object-dir' argument now requires that we
compare it to the known alternates for equality. Prior to this patch,
an unknown '--object-dir' argument would silently exit with status zero.
This can clearly lead to unintended behavior, such as verifying
commit-graphs that aren't in a repository's own object store (or one of
its alternates), or causing a typo to mask a legitimate commit-graph
verification failure. Make this error non-silent by 'die()'-ing when the
given '--object-dir' does not match any known alternate object store.
[1]: In my testing, for example, I can get one side of the commit-graph
code to fill object_dir with "./objects" and the other with just
"objects".
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Peter Kaestle [Sun, 2 Feb 2020 23:32:44 +0000 (00:32 +0100)]
t7400: testcase for submodule status on unregistered inner git repos
We have test coverage for "git submodule status" output in
various cases, i.e.
1) not-init, not-cloned: status should initially be "missing"
2) init, not-cloned: status should be "missing"
3) not-init, cloned: status should ignore the inner git-repo
4) init, cloned: status should be "up-to-date" after update
4.1) + modified: status should be "modified" after submodule commit
4.2) + modified, committed: status should be "up-to-date" after update
the case 3) is not covered yet.
Test that submodule status reports an inner git repo as unknown, while
it is not added to the superproject. This covers case (3).
Signed-off-by: Peter Kaestle <peter@piie.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Sat, 1 Feb 2020 11:39:22 +0000 (06:39 -0500)]
tree-walk.c: break circular dependency with unpack-trees
The unpack-trees API depends on the tree-walk API. But we've recently
introduced a dependency in tree-walk.c on MAX_UNPACK_TREES, which
doesn't otherwise care about unpack-trees at all.
Let's break that dependency by reversing the constants: we'll introduce
a new MAX_TRAVERSE_TREES which belongs to the tree-walk API. And then we
can define MAX_UNPACK_TREES in terms of that (since unpack-trees cannot
possibly work with more trees than it can traverse at once via
tree-walk).
The value for both will remain at 8. This is somewhat arbitrary and
probably more than is necessary, per
ca885a4fe6 (read-tree() and
unpack_trees(): use consistent limit, 2008-03-13), but there's not
really any pressing need to reduce it.
Suggested-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Acked-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>