Junio C Hamano [Sat, 19 Jun 2021 07:30:25 +0000 (16:30 +0900)]
Merge branch 'en/ort-perf-batch-13' into seen
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
Junio C Hamano [Sat, 19 Jun 2021 07:30:25 +0000 (16:30 +0900)]
Merge branch 'es/superproject-aware-submodules' into seen
A configuration variable in a submodule points at the location of
the superproject it is bound to (RFC).
* es/superproject-aware-submodules:
SQUASH???
submodule: cache superproject gitdir during 'update'
submodule: cache superproject gitdir during absorbgitdirs
introduce submodule.superprojectGitDir cache
t7400-submodule-basic: modernize inspect() helper
Junio C Hamano [Sat, 19 Jun 2021 07:30:24 +0000 (16:30 +0900)]
Merge branch 'ab/doc-retire-alice-bob' into seen
* ab/doc-retire-alice-bob:
pack-protocol doc: use "www-data" in place of "alice"
doc: replace "alice" and "bob" with "jdoe" and "msmith"
fast-import doc: change "bob" in an example to "file.txt"
daemon doc + code comments: reword "alice" example
gitcvs-migration doc: replace "alice" and "bob" with "you" and "www-data"
gittutorial doc: replace "alice" and "bob" with "you" and "www-data"
Junio C Hamano [Sat, 19 Jun 2021 07:30:24 +0000 (16:30 +0900)]
Merge branch 'pw/diff-color-moved-fix' into seen
Long-overdue correctness and performance update to "diff
--color-moved" feature.
* pw/diff-color-moved-fix:
diff --color-moved: intern strings
diff --color-moved-ws=allow-indentation-change: improve hash lookups
diff --color-moved: stop clearing potential moved blocks
diff --color-moved: shrink potential moved blocks as we go
diff --color-moved: unify moved block growth functions
diff --color-moved: call comparison function directly
diff --color-moved-ws=allow-indentation-change: simplify and optimize
diff: simplify allow-indentation-change delta calculation
diff --color-moved: avoid false short line matches and bad zebra coloring
diff --color-moved=zebra: fix alternate coloring
Junio C Hamano [Sat, 19 Jun 2021 07:30:24 +0000 (16:30 +0900)]
Merge branch 'en/zdiff3' into seen
"Zealous diff3" style of merge conflict presentation has been added.
* en/zdiff3:
update documentation for new zdiff3 conflictStyle
xdiff: implement a zealous diff3, or "zdiff3"
Junio C Hamano [Sat, 19 Jun 2021 07:30:24 +0000 (16:30 +0900)]
Merge branch 'ab/pack-objects-stdin' into seen
Code clean-up.
* ab/pack-objects-stdin:
pack-objects.c: make use of REV_INFO_STDIN_LINE_PROCESS
pack-objects.c: do stdin parsing via revision.c's API
revision.h: unify "disable_stdin" and "read_from_stdin"
upload-pack: run is_repository_shallow() before setup_revisions()
Junio C Hamano [Sat, 19 Jun 2021 07:30:23 +0000 (16:30 +0900)]
Merge branch 'dd/document-log-decorate-default' into seen
Doc clean-up.
* dd/document-log-decorate-default:
doc/log: correct default for --decorate
Junio C Hamano [Sat, 19 Jun 2021 07:30:23 +0000 (16:30 +0900)]
Merge branch 'ab/update-submitting-patches' into seen
Reorganize and update the SubmitingPatches document.
* ab/update-submitting-patches:
SubmittingPatches: remove pine-specific hints from MUA hints
SubmittingPatches: replace discussion of Travis with GitHub Actions
SubmittingPatches: move discussion of Signed-off-by above "send"
Junio C Hamano [Sat, 19 Jun 2021 07:30:23 +0000 (16:30 +0900)]
Merge branch 'ab/test-tool-cache-cleanup' into seen
Test code shuffling.
* ab/test-tool-cache-cleanup:
read-cache perf: add a perf test for refresh_index()
test-tool: migrate read-cache-again to parse_options()
test-tool: migrate read-cache-perf to parse_options()
test-tool: split up test-tool read-cache
Junio C Hamano [Sat, 19 Jun 2021 07:30:22 +0000 (16:30 +0900)]
Merge branch 'ar/test-code-cleanup' into seen
Test code clean-up.
* ar/test-code-cleanup:
t: fix whitespace around &&
Junio C Hamano [Sat, 19 Jun 2021 07:30:22 +0000 (16:30 +0900)]
Merge branch 'ba/object-info' into seen
Code clean-up.
* ba/object-info:
protocol-caps.h: add newline at end of file
Junio C Hamano [Sat, 19 Jun 2021 07:30:22 +0000 (16:30 +0900)]
Merge branch 'ab/progress-cleanup' into seen
Code clean-up.
* ab/progress-cleanup:
read-cache.c: don't guard calls to progress.c API
Junio C Hamano [Sat, 19 Jun 2021 07:30:21 +0000 (16:30 +0900)]
Merge branch 'ab/xdiff-bug-cleanup' into seen
Code clean-up.
* ab/xdiff-bug-cleanup:
xdiff: use BUG(...), not xdl_bug(...)
Junio C Hamano [Sat, 19 Jun 2021 07:30:21 +0000 (16:30 +0900)]
Merge branch 'ms/mergetools-kdiff3-on-windows' into seen
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
Junio C Hamano [Sat, 19 Jun 2021 07:30:21 +0000 (16:30 +0900)]
Merge branch 'ab/send-email-optim' into seen
"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
Junio C Hamano [Sat, 19 Jun 2021 07:30:20 +0000 (16:30 +0900)]
Merge branch 'ds/status-with-sparse-index' into seen
"git status" codepath learned to work with sparsely populated index
without hydrating it fully.
* ds/status-with-sparse-index:
fsmonitor: integrate with sparse index
wt-status: expand added sparse directory entries
status: use sparse-index throughout
status: skip sparse-checkout percentage with sparse-index
dir.c: accept a directory as part of cone-mode patterns
unpack-trees: be careful around sparse directory entries
unpack-trees: compare sparse directories correctly
unpack-trees: preserve cache_bottom
t1092: add tests for status/add and sparse files
t1092: expand repository data shape
sparse-index: include EXTENDED flag when expanding
sparse-index: skip indexes with unmerged entries
Junio C Hamano [Sat, 19 Jun 2021 07:30:19 +0000 (16:30 +0900)]
Merge branch 'ao/p4-avoid-decoding' into seen
"git p4" in Python-2 days used to accept a lot more kinds of data
from Perforce server as uninterrupted byte sequence, but after
switching to Python-3, too many things are expected to be in UTF-8,
which broke traditional use cases.
* ao/p4-avoid-decoding:
git-p4: do not decode data from perforce by default
git-p4: avoid decoding more data from perforce
Junio C Hamano [Sat, 19 Jun 2021 07:30:18 +0000 (16:30 +0900)]
Merge branch 'jh/builtin-fsmonitor' into seen
An attempt to write and ship with a watchman equivalent tailored
for our use.
What's the status of this one?
* jh/builtin-fsmonitor: (28 commits)
t/perf: avoid copying builtin fsmonitor files into test repo
t7527: test status with untracked-cache and fsmonitor--daemon
p7519: add fsmonitor--daemon
t7527: create test for fsmonitor--daemon
fsmonitor: force update index after large responses
fsmonitor: enhance existing comments
fsmonitor--daemon: use a cookie file to sync with file system
fsmonitor--daemon: periodically truncate list of modified files
fsmonitor--daemon: implement handle_client callback
fsmonitor-fs-listen-macos: implement FSEvent listener on MacOS
fsmonitor-fs-listen-macos: add macos header files for FSEvent
fsmonitor-fs-listen-win32: implement FSMonitor backend on Windows
fsmonitor--daemon: create token-based changed path cache
fsmonitor--daemon: define token-ids
fsmonitor--daemon: add pathname classification
fsmonitor--daemon: implement daemon command options
fsmonitor-fs-listen-macos: stub in backend for MacOS
fsmonitor-fs-listen-win32: stub in backend for Windows
t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
fsmonitor--daemon: implement client command options
...
Junio C Hamano [Sat, 19 Jun 2021 07:30:18 +0000 (16:30 +0900)]
Merge branch 'gh/gitweb-branch-sort' into seen
Tie-break branches that point at the same object in the list of
branches on GitWeb to show the one pointed at by HEAD early.
* gh/gitweb-branch-sort:
gitweb: use HEAD as secondary sort key in git_get_heads_list()
Junio C Hamano [Sat, 19 Jun 2021 07:30:17 +0000 (16:30 +0900)]
Merge branch 'ab/cmd-foo-should-return' into seen
Code clean-up.
* ab/cmd-foo-should-return:
builtins + test helpers: use return instead of exit() in cmd_*
Junio C Hamano [Sat, 19 Jun 2021 07:30:17 +0000 (16:30 +0900)]
Merge branch 'lh/systemd-timers' into seen
"git maintenance" scheduler learned to use systemd timers as a
possible backend.
* lh/systemd-timers:
maintenance: add support for systemd timers on Linux
maintenance: `git maintenance run` learned `--scheduler=<scheduler>`
cache.h: Introduce a generic "xdg_config_home_for(…)" function
Junio C Hamano [Sat, 19 Jun 2021 07:30:17 +0000 (16:30 +0900)]
Merge branch 'ar/doc-libera-chat-in-my-first-contrib' into seen
Update MyFirst document.
* ar/doc-libera-chat-in-my-first-contrib:
MyFirstContribution: link #git-devel to Libera Chat
Junio C Hamano [Sat, 19 Jun 2021 07:30:17 +0000 (16:30 +0900)]
Merge branch 'ar/mailinfo-memcmp-to-skip-prefix' into seen
Code clean-up.
* ar/mailinfo-memcmp-to-skip-prefix:
mailinfo: use starts_with() when checking scissors
Junio C Hamano [Sat, 19 Jun 2021 07:30:16 +0000 (16:30 +0900)]
Merge branch 'en/ort-perf-batch-12' into seen
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
Junio C Hamano [Sat, 19 Jun 2021 07:30:16 +0000 (16:30 +0900)]
Merge branch 'es/trace2-log-parent-process-name' into seen
trace2 logs learned to show parent process name to see in what
context Git was invoked.
* es/trace2-log-parent-process-name:
tr2: log parent process name
Junio C Hamano [Sat, 19 Jun 2021 07:30:16 +0000 (16:30 +0900)]
Merge branch 'jk/doc-max-pack-size' into seen
Doc update.
* jk/doc-max-pack-size:
doc: warn people against --max-pack-size
Junio C Hamano [Sat, 19 Jun 2021 07:30:15 +0000 (16:30 +0900)]
Merge branch 'hn/refs-errno-cleanup' into seen
Futz with the way 'errno' is relied on in the refs API to carry the
failure modes up the callchain.
* hn/refs-errno-cleanup:
refs: explicitly propagate errno from refs_read_raw_ref
refs: clear errno return in refs_resolve_ref_unsafe()
refs: add failure_errno to refs_read_raw_ref() signature
refs: use refs_resolve_ref_unsafe_with_errno() where needed
refs: make errno output explicit for refs_resolve_ref_unsafe
refs: make errno output explicit for read_raw_ref_fn
refs/files-backend: stop setting errno from lock_ref_oid_basic
refs: remove EINVAL errno output from specification of read_raw_ref_fn
Junio C Hamano [Sat, 19 Jun 2021 07:30:15 +0000 (16:30 +0900)]
Merge branch 'jt/partial-clone-submodule-1' into seen
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
Junio C Hamano [Sat, 19 Jun 2021 07:30:15 +0000 (16:30 +0900)]
Merge branch 'ar/submodule-add' into seen
Rewrite of "git submodule" in C continues.
* ar/submodule-add:
submodule--helper: introduce add-config subcommand
submodule--helper: introduce add-clone subcommand
submodule--helper: refactor module_clone()
Junio C Hamano [Sat, 19 Jun 2021 07:30:05 +0000 (16:30 +0900)]
Merge branch 'fw/complete-cmd-idx-fix' into jch
* fw/complete-cmd-idx-fix:
completion: bash: fix late declaration of __git_cmd_idx
Junio C Hamano [Sat, 19 Jun 2021 07:30:00 +0000 (16:30 +0900)]
Merge branch 'jk/test-without-readlink-1' into jch
* jk/test-without-readlink-1:
t: use portable wrapper for readlink(1)
Fabian Wermelinger [Fri, 18 Jun 2021 14:02:57 +0000 (16:02 +0200)]
completion: bash: fix late declaration of __git_cmd_idx
A recent update to contrib/completion/git-completion.bash causes bash to fail
auto complete custom commands that are wrapped with __git_func_wrap. Declaring
__git_cmd_idx=0 inside __git_func_wrap resolves the issue.
Signed-off-by: Fabian Wermelinger <fabianw@mavt.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Fri, 18 Jun 2021 16:32:22 +0000 (12:32 -0400)]
t: use portable wrapper for readlink(1)
Not all systems have a readlink program available for use by the shell.
This causes t3210 to fail on at least AIX. Let's provide a perl
one-liner to do the same thing, and use it there.
I also updated calls in t9802. Nobody reported failure there, but it's
the same issue. Presumably nobody actually tests with p4 on AIX in the
first place (if it is even available there).
I left the use of readlink in the "--valgrind" setup in test-lib.sh, as
valgrind isn't available on exotic platforms anyway (and I didn't want
to increase dependencies between test-lib.sh and test-lib-functions.sh).
There's one other curious case. Commit
d2addc3b96 (t7800: readlink may
not be available, 2016-05-31) fixed a similar case. We can't use our
wrapper function there, though, as it's inside a sub-script triggered by
Git. It uses a slightly different technique ("ls" piped to "sed"). I
chose not to use that here as it gives confusing "ls -l" output if the
file is unexpectedly not a symlink (which is OK for its limited use, but
potentially confusing for general use within the test suite). The perl
version emits the empty string.
Reported-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 17 Jun 2021 05:57:41 +0000 (14:57 +0900)]
Merge branch 'jx/sideband-cleanup' into jch
* 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
Junio C Hamano [Thu, 17 Jun 2021 05:52:09 +0000 (14:52 +0900)]
Merge branch 'jk/test-avoid-globmatch-with-skip-patterns' into jch
* jk/test-avoid-globmatch-with-skip-patterns:
test-lib: avoid accidental globbing in match_pattern_list()
Junio C Hamano [Thu, 17 Jun 2021 05:51:53 +0000 (14:51 +0900)]
Merge branch 'jv/userdiff-csharp-update' into jch
The userdiff pattern for C# learned the token "record".
* jv/userdiff-csharp-update:
userdiff: add support for C# record types
Junio C Hamano [Thu, 17 Jun 2021 05:51:52 +0000 (14:51 +0900)]
Merge branch 'ab/pre-auto-gc-hook-test' into jch
Test fix.
* ab/pre-auto-gc-hook-test:
gc tests: add a test for the "pre-auto-gc" hook
Junio C Hamano [Thu, 17 Jun 2021 05:51:52 +0000 (14:51 +0900)]
Merge branch 'ab/config-hooks-path-testfix' into jch
Test fix.
* ab/config-hooks-path-testfix:
pre-commit hook tests: don't leave "actual" nonexisting on failure
Junio C Hamano [Thu, 17 Jun 2021 05:51:52 +0000 (14:51 +0900)]
Merge branch 'fc/pull-cleanups' into jch
Code cleanup.
* fc/pull-cleanups:
pull: trivial whitespace style fix
pull: trivial cleanup
pull: cleanup autostash check
Junio C Hamano [Thu, 17 Jun 2021 05:51:52 +0000 (14:51 +0900)]
Merge branch 'jk/bitmap-tree-optim' into jch
Avoid duplicated work while building reachability bitmaps.
* jk/bitmap-tree-optim:
bitmaps: don't recurse into trees already in the bitmap
Junio C Hamano [Thu, 17 Jun 2021 05:51:51 +0000 (14:51 +0900)]
Merge branch 'ab/mktag-tests' into jch
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
Junio C Hamano [Thu, 17 Jun 2021 05:51:51 +0000 (14:51 +0900)]
Merge branch 'ab/show-branch-tests' into jch
Fill test gaps.
* ab/show-branch-tests:
show-branch tests: add missing tests
show-branch: fix and test --color output
show-branch tests: modernize test code
show-branch tests: rename the one "show-branch" test file
Junio C Hamano [Thu, 17 Jun 2021 05:51:51 +0000 (14:51 +0900)]
Merge branch 'ah/graph-typofix' into jch
Typofix in an error message.
* ah/graph-typofix:
graph: improve grammar of "invalid color" error message
Junio C Hamano [Thu, 17 Jun 2021 05:51:50 +0000 (14:51 +0900)]
Merge branch 'ds/gender-neutral-doc' into jch
Attempt to update the documentation not to assume users are of
certain gender and adds to guidelines to do so.
* ds/gender-neutral-doc:
SQUASH??? replace neutering tips with that of Æver
CodingGuidelines: recommend singular they
*: fix typos
comments: avoid using the gender of our users
doc: avoid using the gender of other people
Junio C Hamano [Thu, 17 Jun 2021 05:51:50 +0000 (14:51 +0900)]
Merge branch 'jx/t6020-with-older-bash' into jch
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
Jiang Xin [Thu, 17 Jun 2021 03:17:27 +0000 (11:17 +0800)]
test: refactor to use "get_abbrev_oid" to get abbrev oid
Add new function "get_abbrev_oid" to get abbrev object ID. This
function has a default value which helps to prepare a nonempty replace
pattern for sed command. An empty replace pattern may cause sed fail
to allocate memory.
Refactor function "make_user_friendly_and_stable_output" to use
"get_abbrev_oid" to get abbrev object ID.
Signed-off-by: Jiang Xin <zhiyou.jx@alibaba-inc.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jiang Xin [Thu, 17 Jun 2021 03:17:26 +0000 (11:17 +0800)]
test: refactor to use "test_commit" to create commits
Refactor function "create_commits_in" to use "test_commit" to create
commit.
Signed-off-by: Jiang Xin <zhiyou.jx@alibaba-inc.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jiang Xin [Thu, 17 Jun 2021 03:17:25 +0000 (11:17 +0800)]
test: compare raw output, not mangle tabs and spaces
Before comparing with the expect file, we used to call function
"make_user_friendly_and_stable_output" to filter out trailing spaces in
output. Ævar recommends using pattern "s/Z$//" to prepare expect file,
and then compare it with raw output.
Since we have fixed the issue of occasionally missing the clear-to-eol
suffix when displaying sideband #2 messages, it is safe and stable to
test against raw output.
Suggested-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Jiang Xin <zhiyou.jx@alibaba-inc.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jiang Xin [Thu, 17 Jun 2021 03:17:24 +0000 (11:17 +0800)]
sideband: don't lose clear-to-eol at packet boundary
When "demultiplex_sideband()" sees a nonempty message ending with CR or
LF on the sideband #2, it adds "suffix" string to clear to the end of
the current line, which helps when relaying a progress display whose
records are terminated with CRs. But if it sees a single LF, no
clear-to-end suffix should be appended, because this single LF is used
to end the progress display by moving to the next line, and the final
progress display above should be preserved.
However, the code forgot that depending on the length of the payload
line, such a CR may fall exactly at the packet boundary and the
number of bytes before the CR from the beginning of the packet could
be zero. In such a case, the message that was terminated by the CR
were leftover in the "scratch" buffer in the previous call to the
function and we still need to clear to the end of the current line.
Helped-by: Junio C Hamano <gitster@pobox.com>
Helped-by: Nicolas Pitre <nico@fluxnic.net>
Signed-off-by: Jiang Xin <zhiyou.jx@alibaba-inc.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jiang Xin [Thu, 17 Jun 2021 03:14:11 +0000 (11:14 +0800)]
t6020: fix incompatible parameter expansion
Ævar reported that the function `make_user_friendly_and_stable_output()`
failed on a i386 box (gcc45) in the gcc farm boxes with error:
sed: couldn't re-allocate memory
It turns out that older versions of bash (4.3) or dash (0.5.7) cannot
evaluate expression like `${A%${A#???????}}` used to get the leading 7
characters of variable A.
Replace the incompatible parameter expansion so that t6020 works on
older version of bash or dash.
Reported-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Jiang Xin <zhiyou.jx@alibaba-inc.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Wed, 16 Jun 2021 10:23:07 +0000 (06:23 -0400)]
test-lib: avoid accidental globbing in match_pattern_list()
We have a custom match_pattern_list() function which we use for matching
test names (like "t1234") against glob-like patterns (like "t1???") for
$GIT_SKIP_TESTS, --verbose-only, etc.
Those patterns may have multiple whitespace-separated elements (e.g.,
"t0* t1234 t5?78"). The callers of match_pattern_list thus pass the
strings unquoted, so that the shell does the usual field-splitting into
separate arguments.
But this also means the shell will do the usual globbing for each
argument, which can result in us seeing an expansion based on what's in
the filesystem, rather than the real pattern. For example, if I have the
path "t5000" in the filesystem, and you feed the pattern "t?0000", that
_should_ match the string "t0000", but it won't after the shell has
expanded it to "t5000".
This has been a bug ever since that function was introduced. But it
didn't usually trigger since we typically use the function inside the
trash directory, which has a very limited set of files that are unlikely
to match. It became a lot easier to trigger after
edc23840b0 (test-lib:
bring $remove_trash out of retirement, 2021-05-10), because now we match
$GIT_SKIP_TESTS before even entering the trash directory. So the t5000
example above can be seen with:
GIT_SKIP_TESTS=t?000 ./t0000-basic.sh
which should skip all tests but doesn't.
We can fix this by using "set -f" to ask the shell not to glob (which is
in POSIX, so should hopefully be portable enough). We only want to do
this in a subshell (to avoid polluting the rest of the script), which
means we need to get the whole string intact into the match_pattern_list
function by quoting it. Arguably this is a good idea anyway, since it
makes it much more obvious that we intend to split, and it's not simply
sloppy scripting.
Diagnosed-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 17 Jun 2021 02:26:21 +0000 (11:26 +0900)]
Merge branch 'ar/typofix' into jch
Typofixes.
* ar/typofix:
*: fix typos which duplicate a word
Junio C Hamano [Thu, 17 Jun 2021 02:26:20 +0000 (11:26 +0900)]
Merge branch 'jk/union-merge-binary' into jch
The "union" conflict resultion 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
Junio C Hamano [Thu, 17 Jun 2021 02:26:20 +0000 (11:26 +0900)]
Merge branch 'jk/revision-squelch-gcc-warning' into jch
Warning fix.
* jk/revision-squelch-gcc-warning:
add_pending_object_with_path(): work around "gcc -O3" complaint
Junio C Hamano [Thu, 17 Jun 2021 02:26:20 +0000 (11:26 +0900)]
Merge branch 'ah/uninitialized-reads-fix' into jch
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
Junio C Hamano [Thu, 17 Jun 2021 02:26:19 +0000 (11:26 +0900)]
Merge branch 'js/no-more-multimail' into jch
Remove multimail from contrib/
* js/no-more-multimail:
multimail: stop shipping a copy
Junio C Hamano [Thu, 17 Jun 2021 02:26:19 +0000 (11:26 +0900)]
Merge branch 'js/subtree-on-windows-fix' into jch
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
Junio C Hamano [Thu, 17 Jun 2021 02:26:19 +0000 (11:26 +0900)]
Merge branch 'fc/completion-updates' into jch
Command line completion updates.
* fc/completion-updates:
completion: bash: add correct suffix in variables
completion: bash: fix for multiple dash commands
completion: bash: fix for suboptions with value
completion: bash: fix prefix detection in branch.*
Junio C Hamano [Thu, 17 Jun 2021 02:26:19 +0000 (11:26 +0900)]
Merge branch 'dd/svn-test-wo-locale-a' into jch
"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
Junio C Hamano [Thu, 17 Jun 2021 02:26:18 +0000 (11:26 +0900)]
Merge branch 'fc/doc-default-to-upstream-config' into jch
Doc clean-up.
* fc/doc-default-to-upstream-config:
doc: merge: mention default of defaulttoupstream
Junio C Hamano [Thu, 17 Jun 2021 02:26:18 +0000 (11:26 +0900)]
Merge branch 'mr/cmake' into jch
CMake update.
* mr/cmake:
cmake: add warning for ignored MSGFMT_EXE
cmake: create compile_commands.json by default
cmake: add knob to disable vcpkg
Junio C Hamano [Thu, 17 Jun 2021 02:26:17 +0000 (11:26 +0900)]
Merge branch 'zh/cat-file-batch-fix' into jch
"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
Junio C Hamano [Thu, 17 Jun 2021 02:26:17 +0000 (11:26 +0900)]
Merge branch 'ab/describe-tests-fix' into jch
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
Junio C Hamano [Thu, 17 Jun 2021 02:26:17 +0000 (11:26 +0900)]
Merge branch 'ab/pickaxe-pcre2' into jch
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
...
Junio C Hamano [Thu, 17 Jun 2021 02:26:16 +0000 (11:26 +0900)]
Merge branch 'tv/p4-fallback-encoding' into jch
"git p4" learns the fallbackEncoding configuration variable to
safely accept changeset descriptions that aren't written in UTF-8.
* tv/p4-fallback-encoding:
git-p4: git-p4.fallbackEncoding to specify non UTF-8 charset
Junio C Hamano [Thu, 17 Jun 2021 02:26:16 +0000 (11:26 +0900)]
Merge branch 'hn/prep-tests-for-reftable' into jch
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
...
Junio C Hamano [Thu, 17 Jun 2021 02:26:16 +0000 (11:26 +0900)]
Merge branch 'fc/push-simple-updates-cleanup' into jch
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
Junio C Hamano [Thu, 17 Jun 2021 02:26:15 +0000 (11:26 +0900)]
Merge branch 'fc/push-simple-updates' into jch
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
Junio C Hamano [Thu, 17 Jun 2021 02:26:13 +0000 (11:26 +0900)]
Merge branch 'js/trace2-discard-event-docfix' into jch
Docfix.
* js/trace2-discard-event-docfix:
docs: fix api-trace2 doc for "too_many_files" event
Junio C Hamano [Thu, 17 Jun 2021 02:26:12 +0000 (11:26 +0900)]
Merge branch 'tb/complete-diff-anchored' into jch
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
Junio C Hamano [Thu, 17 Jun 2021 02:26:12 +0000 (11:26 +0900)]
Merge branch 'tk/partial-clone-repack-doc' into jch
Docfix.
* tk/partial-clone-repack-doc:
Remove warning that repack only works on non-promisor packfiles
Julian Verdurmen [Tue, 2 Mar 2021 00:58:09 +0000 (00:58 +0000)]
userdiff: add support for C# record types
Records are added in C# 9
Code example :
public record Person(string FirstName, string LastName);
For more information, see:
* https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-9
Signed-off-by: Julian Verdurmen <julian.verdurmen@outlook.com>
Reviewed-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Elijah Newren [Tue, 15 Jun 2021 22:41:46 +0000 (22:41 +0000)]
merge-ort: add prefetching for content merges
Commit
7fbbcb21b1 ("diff: batch fetching of missing blobs", 2019-04-05)
introduced batching of fetching missing blobs, so that the diff
machinery would have one fetch subprocess grab N blobs instead of N
processes each grabbing 1.
However, the diff machinery is not the only thing in a merge that needs
to work on blobs. The 3-way content merges need them as well. Rather
than download all the blobs 1 at a time, prefetch all the blobs needed
for regular content merges.
This does not cover all possible paths in merge-ort that might need to
download blobs. Others include:
- The blob_unchanged() calls to avoid modify/delete conflicts (when
blob renormalization results in an "unchanged" file)
- Preliminary content merges needed for rename/add and
rename/rename(2to1) style conflicts. (Both of these types of
conflicts can result in nested conflict markers from the need to do
two levels of content merging; the first happens before our new
prefetch_for_content_merges() function.)
The first of these wouldn't be an extreme amount of work to support, and
even the second could be theoretically supported in batching, but all of
these cases seem unusual to me, and this is a minor performance
optimization anyway; in the worst case we only get some of the fetches
batched and have a few additional one-off fetches. So for now, just
handle the regular 3-way content merges in our prefetching.
For the testcase from the previous commit, the number of downloaded
objects remains at 63, but this drops the number of fetches needed from
32 down to 20, a sizeable reduction.
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Elijah Newren [Tue, 15 Jun 2021 22:41:45 +0000 (22:41 +0000)]
diffcore-rename: use a different prefetch for basename comparisons
merge-ort was designed to minimize the amount of data needed and used,
and several changes were made to diffcore-rename to take advantage of
extra metadata to enable this data minimization (particularly the
relevant_sources variable for skipping "irrelevant" renames). This
effort obviously succeeded in drastically reducing computation times,
but should also theoretically allow partial clones to download much less
information. Previously, though, the "prefetch" command used in
diffcore-rename had never been modified and downloaded many blobs that
were unnecessary for merge-ort. This commit corrects that.
When doing basename comparisons, we want to fetch only the objects that
will be used for basename comparisons. If after basename fetching this
leaves us with no more relevant sources (or no more destinations), then
we won't need to do the full inexact rename detection and can skip
downloading additional source and destination files. Even if we have to
do that later full inexact rename detection, irrelevant sources are
culled after basename matching and before the full inexact rename
detection, so we can still avoid downloading the blobs for irrelevant
sources. Rename prefetch() to inexact_prefetch(), and introduce a
new basename_prefetch() to take advantage of this.
If we modify the testcase from commit
557ac0350d ("merge-ort: begin
performance work; instrument with trace2_region_* calls", 2021-01-23)
to pass
--sparse --filter=blob:none
to the clone command, and use the new trace2 "fetch_count" output from
a few commits ago to track both the number of fetch subcommands invoked
and the number of objects fetched across all those fetches, then for
the mega-renames testcase we observe the following:
BEFORE this commit, rebasing 35 patches:
strategy # of fetches total # of objects fetched
--------- ------------ --------------------------
recursive 62 11423
ort 30 11391
AFTER this commit, rebasing the same 35 patches:
ort 32 63
This means that the new code only needs to download less than 2 blobs
per patch being rebased. That is especially interesting given that the
repository at the start only had approximately half a dozen TOTAL blobs
downloaded to start with (because the default sparse-checkout of just
the toplevel directory was in use).
So, for this particular linux kernel testcase that involved ~26,000
renames on the upstream side (drivers/ -> pilots/) across which 35
patches were being rebased, this change reduces the number of blobs that
need to be downloaded by a factor of ~180.
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Elijah Newren [Tue, 15 Jun 2021 22:41:44 +0000 (22:41 +0000)]
diffcore-rename: allow different missing_object_cb functions
estimate_similarity() was setting up a diff_populate_filespec_options
every time it was called, requiring the caller of estimate_similarity()
to pass in some data needed to set up this option. Currently the needed
data consisted of a single variable (skip_unmodified), but we want to
also have the different estimate_similarity() callsites start using
different missing_object_cb functions as well. Rather than also passing
that data in, just have the caller pass in the whole
diff_populate_filespec_options, and reduce the number of times we need to
set it up.
As a side note, this also drops the number of calls to
has_promisor_remote() dramatically. If L is the number of basename
paths to compare, M is the number of inexact sources, and N is the
number of inexact destinations, then the number of calls to
has_promisor_remote() drops from L+M*N down to at most 2 -- one for each
of the sites that calls estimate_similarity(). has_promisor_remote() is
a very fast function so this almost certainly has no measurable
performance impact, but it seems cleaner to avoid calling that function
so many times.
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Elijah Newren [Tue, 15 Jun 2021 22:41:43 +0000 (22:41 +0000)]
t6421: add tests checking for excessive object downloads during merge
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Elijah Newren [Tue, 15 Jun 2021 22:41:42 +0000 (22:41 +0000)]
promisor-remote: output trace2 statistics for number of objects fetched
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 16 Jun 2021 05:04:49 +0000 (14:04 +0900)]
SQUASH??? replace neutering tips with that of Æver
Derrick Stolee [Tue, 15 Jun 2021 14:11:12 +0000 (14:11 +0000)]
CodingGuidelines: recommend singular they
Technical writing seeks to convey information with minimal friction. One
way that a reader can experience friction is if they encounter a
description of "a user" that is later simplified using a gendered
pronoun. If the reader does not consider that pronoun to apply to them,
then they can experience cognitive dissonance that removes focus from
the information.
When choosing a gendered pronoun, that pronoun no longer applies to
nearly half of possible readers. Even if we alternated between "he/him"
and "she/her" perfectly evenly, we would still expect male and female
readers to experience an incorrect pronoun half the time. However, some
readers will not prescribe to either of these binary genders. Those
readers hence suffer an incorrect pronoun the entire time.
To make our documentation more inclusive, add recommendations to the
CodingGuidelines document. We can refer to this section when a
contributor submits a patch with a gendered pronoun and these
recommendations apply. The examples can assist in producing a new patch
with adjusted language.
As noted in the guidelines, removing an example person can make the
writing clearer and more concise. Other techniques such as singular
"you" and plural "they" are widely accepted ways to adjust the noun and
avoid gendered pronouns. Finally, an author can resort to singluar
"they" if absolutely necessary, but this can be difficult for readers
who learned English in a way that dictated "they" as always plural.
If we refer to a specific person, then using a gendered pronoun is
appropriate. There can also be other cases where it is inappropriate for
us to update the existing examples within the Git codebase, such as:
* References to real people (e.g. Linus Torvalds, "the Git maintainer").
Do not misgender real people. If there is any doubt to the gender of a
person, then avoid using pronouns.
* References to fictional people with clear genders (e.g. Alice and
Bob).
* Sample text used in test cases (e.g t3702, t6432).
* The official text of the GPL license contains uses of "he or she", but
modifying the license this way is not within the scope of the Git
project.
* Literal email messages in Documentation/howto/ should not be edited
for grammatical concerns such as this, unless we update the entire
document to fit the standard documentation format. If such an effort is
taken on, then the authorship would change and no longer refer to the
exact mail message.
* External projects consumed in contrib/ should not deviate solely for
style reasons. Recommended edits should be contributed to those
projects directly.
Other cases within the Git project were cleaned up by the previous
changes.
Co-authored-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 16 Jun 2021 04:43:34 +0000 (13:43 +0900)]
SQUASH???
Emily Shaffer [Wed, 16 Jun 2021 00:45:08 +0000 (17:45 -0700)]
submodule: cache superproject gitdir during 'update'
A cached path to the superproject's gitdir might be added during 'git
submodule add', but in some cases - like submodules which were created
before 'git submodule add' learned to cache that info - it might be
useful to update the cache. Let's do it during 'git submodule update',
when we already have a handle to the superproject while calling
operations on the submodules.
Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Emily Shaffer [Wed, 16 Jun 2021 00:45:07 +0000 (17:45 -0700)]
submodule: cache superproject gitdir during absorbgitdirs
Already during 'git submodule add' we cache a pointer to the
superproject's gitdir. However, this doesn't help brand-new
submodules created with 'git init' and later absorbed with 'git
submodule absorbgitdir'. Let's start adding that pointer during 'git
submodule absorbgitdir' too.
Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Emily Shaffer [Wed, 16 Jun 2021 00:45:06 +0000 (17:45 -0700)]
introduce submodule.superprojectGitDir cache
Teach submodules a reference to their superproject's gitdir. This allows
us to A) know that we're running from a submodule, and B) have a
shortcut to the superproject's vitals, for example, configs.
By using a relative path instead of an absolute path, we can move the
superproject directory around on the filesystem without breaking the
submodule's cache.
Since this cached value is only introduced during new submodule creation
via `git submodule add`, though, there is more work to do to allow the
cache to be created at other times.
Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Derrick Stolee [Tue, 15 Jun 2021 14:11:11 +0000 (14:11 +0000)]
*: fix typos
These typos were found while searching the codebase for gendered
pronouns. In the case of t9300-fast-import.sh, remove a confusing
comment that is unnecessary to the understanding of the test.
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Felipe Contreras [Tue, 15 Jun 2021 14:11:10 +0000 (14:11 +0000)]
comments: avoid using the gender of our users
We generally avoid specifying the gender of our users in order to be
more inclusive, but sometimes a few slip by due to habit.
Since by doing a little bit of rewording we can avoid this irrelevant
detail, let's do so.
Inspired-by: Derrick Stolee <dstolee@microsoft.com>
Helped-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Felipe Contreras [Tue, 15 Jun 2021 14:11:09 +0000 (14:11 +0000)]
doc: avoid using the gender of other people
Using gendered pronouns for an anonymous person applies a gender where
none is known and further excludes readers who do not use gendered
pronouns. Avoid such examples in the documentation by using "they" or
passive voice to avoid the need for a pronoun.
Inspired-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ævar Arnfjörð Bjarmason [Tue, 15 Jun 2021 16:18:03 +0000 (18:18 +0200)]
pack-protocol doc: use "www-data" in place of "alice"
Replace the example of "alice" in the pack-protocol.txt documentation
added in
b31222cfb7f (Update packfile transfer protocol documentation,
2009-11-03) with "www-data". This is now consistent with the recently
changed examples in the tutorial and git-daemon documentation.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ævar Arnfjörð Bjarmason [Tue, 15 Jun 2021 16:18:02 +0000 (18:18 +0200)]
doc: replace "alice" and "bob" with "jdoe" and "msmith"
Change the "Alice" and "Bob" generic example users to jdoe@example.com
and msmith@example.com.
The former is widely used in RFC 5322 as an example E-Mail address,
the latter is not, but "Mary Smith <mary@example.com>". It has been
claimed that any reference to people's gender in our documentation is
distracting to some readers[1]. In this case it's easy enough to tweak
the example in such a way that the reader can insert their own
stand-in for "M.".
1. https://lore.kernel.org/git/pull.975.v3.git.
1623766273.gitgitgadget@gmail.com/
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ævar Arnfjörð Bjarmason [Tue, 15 Jun 2021 16:18:01 +0000 (18:18 +0200)]
fast-import doc: change "bob" in an example to "file.txt"
The example added in
e7e5170f804 (Update fast-import documentation to
discuss crash reports, 2008-02-14) is a bit confusing in that we're
referring to a "bob" when we really just need a placeholder name for a
file that has bad mode bits, let's use "file.txt" instead.
Let's also use "<<-" in the here-doc so this'll work if the reader
copies this from e.g. a tab-indented manual page, none of the content
needs leading whitespace, so that won't break anything if the content
isn't indented.
The fast-import error message and other output has also changed
slightly since 2008, let's update the relevant parts of it, while
retaining the original PID, time etc. of the 2007-era example.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ævar Arnfjörð Bjarmason [Tue, 15 Jun 2021 16:18:00 +0000 (18:18 +0200)]
daemon doc + code comments: reword "alice" example
Improve on the "alice" example added in
603968d22b1 (daemon: extend
user-relative path notation., 2006-02-04). I found the previous
version of this documentation a bit confusing, and had to read the
code to see what it was doing.
I think explicitly spelling out that the --user-path option can be
user to provide an infix to stash in-between what we'll resolve
"~user" and the path after that is clearer, especially when coupled
with explicit examples of path resolution.
Finally, the previous documentation didn't mention that `path/foo`
could actually resolve to `path/foo.git`. That's implicitly covered
earlier in the documentation, let's make an explicit reference to that
here.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ævar Arnfjörð Bjarmason [Tue, 15 Jun 2021 16:17:59 +0000 (18:17 +0200)]
gitcvs-migration doc: replace "alice" and "bob" with "you" and "www-data"
Continue the work started in the last commit and change the cast of
characters introduced in
cd976f5c526 (Documentation: reorganize
cvs-migration.txt, 2006-12-06) to refer to the "you" and "www-data"
examples the gittutorial documentation now uses.
In addition to the reasons for this in the last commit, this also
brings the gitcvs-migration documentation in line with the example in
the tutorial, which was added by the same author at a around the same
time in
927a503cd07 (New tutorial, 2006-01-22).
Aside from talking about a bare repository here and a non-bare
checkout in the tutorial we use the same paths, and make explicit
reference to the more extended documentation in the tutorial here and
its relevance to this example.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ævar Arnfjörð Bjarmason [Tue, 15 Jun 2021 16:17:58 +0000 (18:17 +0200)]
gittutorial doc: replace "alice" and "bob" with "you" and "www-data"
Rephrase the tutorial text added in
927a503cd07 (New tutorial,
2006-01-22) to talk about a repository "you" have, and which you'd
like to deploy a local copy of to a "www-data" user, and what it'll
take to pull and push changes between the two.
There's been some parallel work to get rid of gendered language in the
Git documentation[1] which has suggested that examples of "Alice and
Bob" should be excluded, as they're commonly used examples in
technical documentation, especially documentation that deals with
cryptography.
I don't think such an example is problematic per-se, and it certainly
has its place. But if all we're trying to achieve is a generic example
of pushing and pulling between two UIDs on the same (or different)
machine(s) it's needlessly verbose, especially to a reader who's not
in the know about the meaning of the names in crypto documentation (I
daresay that's the vast majority of our users, especially those
reading the tutorial).
To those in the know it's needlessly distracting. I for one tend do
read such documentation half-distracted as I try to remember what the
particular implicit meaning of that cast of characters is (if any). Is
there going to be an "Eve" at some point who'll serve as a stand-in
for the eavesdropper[2]?
In this case the answer is "no"; so let's replace the whole thing with
a less verbose and I think more common example of wanting to deploy a
repository in /home to some other user (the most common of which is
probably this www-data example), and pulling and pushing between the
two.
This commit also fixes the related issue of referring to an
"alice.org" domain, we really should use the RFC 2606 domain names
instead of potentially being a cause of spam to innocent bystander's
E-Mail addresses.
1. http://lore.kernel.org/git/
f06092a9053e40d93c4ec94b7fbbb1b8d563957b.
1623766273.git.gitgitgadget@gmail.com
2. https://en.wikipedia.org/wiki/Alice_and_Bob#Cast_of_characters
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ævar Arnfjörð Bjarmason [Mon, 14 Jun 2021 10:39:25 +0000 (12:39 +0200)]
gc tests: add a test for the "pre-auto-gc" hook
Add a missing test for the behavior of the pre-auto-gc hook added in
0b85d92661e (Documentation/hooks: add pre-auto-gc hook, 2008-04-02).
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ævar Arnfjörð Bjarmason [Mon, 14 Jun 2021 10:37:35 +0000 (12:37 +0200)]
pre-commit hook tests: don't leave "actual" nonexisting on failure
Start by creating an "actual" file in a core.hooksPath test that has
the hook echoing to the "actual" file.
We later test_cmp that file to see what hooks were run. If we fail to
run our hook(s) we'll have an empty list of hooks for the test_cmp
instead of a nonexisting file. For the logic of this test that makes more sense.
See
867ad08a261 (hooks: allow customizing where the hook directory is,
2016-05-04) for the commit that added these tests.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Atharva Raykar [Tue, 15 Jun 2021 14:57:45 +0000 (20:27 +0530)]
submodule--helper: introduce add-config subcommand
Add a new "add-config" subcommand to `git submodule--helper` with the
goal of converting part of the shell code in git-submodule.sh related to
`git submodule add` into C code. This new subcommand sets the
configuration variables of a newly added submodule, by registering the
url in local git config, as well as the submodule name and path in the
.gitmodules file. It also sets 'submodule.<name>.active' to "true" if
the submodule path has not already been covered by any pathspec
specified in 'submodule.active'.
This is meant to be a faithful conversion from shell to C, with only one
minor change: A warning is emitted if no value is specified in
'submodule.active', ie, the config looks like: "[submodule] active\n",
because it is an invalid configuration. It would be helpful to let the
user know that the pathspec is unset, and the value of
'submodule.<name>.active' might be set to 'true' so that they can
rectify their configuration and prevent future surprises (especially
given that the latter variable has a higher priority than the former).
The structure of the conditional to check if we need to set the 'active'
toggle looks different from the shell version -- but behaves the same.
The change was made to decrease code duplication. A comment has been
added to explain that only one value of 'submodule.active' is obtained
to check if we need to call is_submodule_active() at all.
This is part of a series of changes that will result in all of
'submodule add' being converted to C.
Signed-off-by: Atharva Raykar <raykar.ath@gmail.com>
Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Shourya Shukla <shouryashukla.oo@gmail.com>
Based-on-patch-by: Shourya Shukla <shouryashukla.oo@gmail.com>
Based-on-patch-by: Prathamesh Chavan <pc44800@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Atharva Raykar [Tue, 15 Jun 2021 14:57:44 +0000 (20:27 +0530)]
submodule--helper: introduce add-clone subcommand
Let's add a new "add-clone" subcommand to `git submodule--helper` with
the goal of converting part of the shell code in git-submodule.sh
related to `git submodule add` into C code. This new subcommand clones
the repository that is to be added, and checks out to the appropriate
branch.
This is meant to be a faithful conversion that leaves the behaviour of
'submodule add' unchanged. The only minor change is that if a submodule name has
been supplied with a name that clashes with a local submodule, the message shown
to the user ("A git directory for 'foo' is found locally...") is prepended with
"error" for clarity.
This is part of a series of changes that will result in all of 'submodule add'
being converted to C.
Signed-off-by: Atharva Raykar <raykar.ath@gmail.com>
Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Shourya Shukla <shouryashukla.oo@gmail.com>
Based-on-patch-by: Shourya Shukla <shouryashukla.oo@gmail.com>
Based-on-patch-by: Prathamesh Chavan <pc44800@gmail.com>
Helped-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Atharva Raykar [Tue, 15 Jun 2021 14:57:43 +0000 (20:27 +0530)]
submodule--helper: refactor module_clone()
Separate out the core logic of module_clone() from the flag
parsing---this way we can call the equivalent of the `submodule--helper
clone` subcommand directly within C, without needing to push arguments
in a strvec.
Signed-off-by: Atharva Raykar <raykar.ath@gmail.com>
Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Shourya Shukla <shouryashukla.oo@gmail.com>
Suggested-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Elijah Newren [Tue, 15 Jun 2021 05:16:10 +0000 (05:16 +0000)]
update documentation for new zdiff3 conflictStyle
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Elijah Newren [Tue, 15 Jun 2021 05:16:09 +0000 (05:16 +0000)]
xdiff: implement a zealous diff3, or "zdiff3"
"zdiff3" is identical to ordinary diff3 except that it allows compaction
of common lines on the two sides of history at the beginning or end of
the conflict hunk. For example, the following diff3 conflict:
1
2
3
4
<<<<<<
A
B
C
D
E
||||||
5
6
======
A
X
C
Y
E
>>>>>>
7
8
9
has common lines 'A', 'C', and 'E' on the two sides. With zdiff3, one
would instead get the following conflict:
1
2
3
4
A
<<<<<<
B
C
D
||||||
5
6
======
X
C
Y
>>>>>>
E
7
8
9
Note that the common lines, 'A', and 'E' were moved outside the
conflict. Unlike with the two-way conflicts from the 'merge'
conflictStyle, the zdiff3 conflict is NOT split into multiple conflict
regions to allow the common 'C' lines to be shown outside a conflict,
because zdiff3 shows the base version too and the base version cannot be
reasonably split.
Initial-patch-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Alex Henrie [Sat, 12 Jun 2021 18:41:44 +0000 (12:41 -0600)]
graph: improve grammar of "invalid color" error message
Without the "d", it sounds like a command, not an error, and is liable
to be translated incorrectly.
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>