summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2024-01-30Merge branch 'kl/allow-working-in-dot-git-in-non-bare-repository'Junio C Hamano2-1/+10
The "disable repository discovery of a bare repository" check, triggered by setting safe.bareRepository configuration variable to 'explicit', has been loosened to exclude the ".git/" directory inside a non-bare repository from the check. So you can do "cd .git && git cmd" to run a Git command that works on a bare repository without explicitly specifying $GIT_DIR now. * kl/allow-working-in-dot-git-in-non-bare-repository: setup: allow cwd=.git w/ bareRepository=explicit
2024-01-30Merge branch 'jx/remote-archive-over-smart-http'Junio C Hamano4-22/+68
"git archive --remote=<remote>" learned to talk over the smart http (aka stateless) transport. * jx/remote-archive-over-smart-http: transport-helper: call do_take_over() in process_connect transport-helper: call do_take_over() in connect_helper http-backend: new rpc-service for git-upload-archive transport-helper: protocol v2 supports upload-archive remote-curl: supports git-upload-archive service transport-helper: no connection restriction in connect_helper
2024-01-30Merge branch 'rj/advice-disable-how-to-disable'Junio C Hamano3-53/+62
All conditional "advice" messages show how to turn them off, which becomes repetitive. Setting advice.* configuration explicitly on now omits the instruction part. * rj/advice-disable-how-to-disable: advice: allow disabling the automatic hint in advise_if_enabled()
2024-01-30Merge branch 'rs/parse-options-with-keep-unknown-abbrev-fix'Junio C Hamano2-10/+17
"git diff --no-rename A B" did not disable rename detection but did not trigger an error from the command line parser. * rs/parse-options-with-keep-unknown-abbrev-fix: parse-options: simplify positivation handling parse-options: fully disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
2024-01-30Merge branch 'pb/ci-github-skip-logs-for-broken-tests'Junio C Hamano1-2/+2
GitHub CI update. * pb/ci-github-skip-logs-for-broken-tests: ci(github): also skip logs of broken test cases
2024-01-30t0091: allow test in a repository without tagsJunio C Hamano1-2/+2
The beginning of the [System Info] section, which should match the "git version --build-options" output, may not identify our version as "git version 2.whatever". When built in a repository cloned without tags, for example, "git version unknown.g00000000" can be a legit version string. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-30reftable/stack: fsync "tables.list" during compactionPatrick Steinhardt1-0/+8
In 1df18a1c9a (reftable: honor core.fsync, 2024-01-23), we have added code to fsync both newly written reftables as well as "tables.list" to disk. But there are two code paths where "tables.list" is being written: - When appending a new table due to a normal ref update. - When compacting a range of tables during compaction. We have only addressed the former code path, but do not yet sync the new "tables.list" file in the latter. Fix this omission. Note that we are not yet adding any tests. These tests will be added once the "reftable" backend has been upstreamed. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-29Makefile: remove UNIT_TEST_BIN directory with "make clean"Jeff King1-2/+2
We remove $(UNIT_TEST_PROGS), but that leaves the automatically generated "bin" dir they reside in. And once we start cleaning that, there is no point in removing the individual programs, as they'll by wiped out by the recurse "rm". Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-29Makefile: use mkdir_p_parent_template for UNIT_TEST_BINJeff King1-4/+2
We build the UNIT_TEST_BIN directory (t/unit-tests/bin) on the fly with "mkdir -p". And so the recipe for UNIT_TEST_PROGS, which put their output in that directory, depend on UNIT_TEST_BIN to make sure it's there. But using a normal dependency leads to weird outcomes, because the timestamp of the directory is important. For example, try this: $ make [...builds everything...] [now re-build one unit test] $ touch t/unit-tests/t-ctype.c $ make SUBDIR templates CC t/unit-tests/t-ctype.o LINK t/unit-tests/bin/t-ctype So far so good. Now running make again should build nothing. But it doesn't! $ make SUBDIR templates LINK t/unit-tests/bin/t-basic LINK t/unit-tests/bin/t-mem-pool LINK t/unit-tests/bin/t-strbuf Er, what? Let's rebuild again: $ make SUBDIR templates LINK t/unit-tests/bin/t-ctype Weird. And now we ping-pong back and forth forever: $ make SUBDIR templates LINK t/unit-tests/bin/t-basic LINK t/unit-tests/bin/t-mem-pool LINK t/unit-tests/bin/t-strbuf $ make SUBDIR templates LINK t/unit-tests/bin/t-ctype What happens is that writing t/unit-tests/bin/t-ctype updates the mtime of the directory t/unit-tests/bin. And then on the next invocation of make, all of those other tests are now older and so get rebuilt. And back and forth forever. We can fix this by making the directory as part of the build recipe for the programs, using the template from 0b6d0bc924 (Makefiles: add and use wildcard "mkdir -p" template, 2022-03-03). Helped-by: SZEDER Gábor <szeder.dev@gmail.com> Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-29The eleventh batchJunio C Hamano1-0/+16
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-29Merge branch 'al/t2400-depipe'Junio C Hamano1-2/+4
Coding style fix. * al/t2400-depipe: t2400: avoid losing exit status to pipes
2024-01-29Merge branch 'gt/t0024-style-fixes'Junio C Hamano1-4/+9
Coding style fix. * gt/t0024-style-fixes: t0024: style fix t0024: avoid losing exit status to pipes
2024-01-29Merge branch 'en/diffcore-delta-final-line-fix'Junio C Hamano2-0/+28
Rename detection logic ignored the final line of a file if it is an incomplete line. * en/diffcore-delta-final-line-fix: diffcore-delta: avoid ignoring final 'line' of file
2024-01-29Merge branch 'ps/not-so-many-refs-are-special'Junio C Hamano13-78/+132
Define "special ref" as a very narrow set that consists of FETCH_HEAD and MERGE_HEAD, and clarify everything else that used to be classified as such are actually just pseudorefs. * ps/not-so-many-refs-are-special: Documentation: add "special refs" to the glossary refs: redefine special refs refs: convert MERGE_AUTOSTASH to become a normal pseudo-ref sequencer: introduce functions to handle autostashes via refs refs: convert AUTO_MERGE to become a normal pseudo-ref sequencer: delete REBASE_HEAD in correct repo when picking commits sequencer: clean up pseudo refs with REF_NO_DEREF
2024-01-29Merge branch 'js/oss-fuzz-build-in-ci'Junio C Hamano4-6/+55
oss-fuzz tests are built and run in CI. * js/oss-fuzz-build-in-ci: ci: build and run minimal fuzzers in GitHub CI fuzz: fix fuzz test build rules
2024-01-29Merge branch 'jc/majordomo-to-subspace'Junio C Hamano2-4/+5
Doc update. * jc/majordomo-to-subspace: Docs: majordomo@vger.kernel.org has been decomissioned
2024-01-29Merge branch 'nb/rebase-x-shell-docfix'Junio C Hamano1-4/+3
Doc update. * nb/rebase-x-shell-docfix: rebase: fix documentation about used shell in -x
2024-01-29Merge branch 'tc/show-ref-exists-fix'Junio C Hamano2-3/+3
Update to a new feature recently added, "git show-ref --exists". * tc/show-ref-exists-fix: builtin/show-ref: treat directory as non-existing in --exists
2024-01-29Merge branch 'ps/reftable-optimize-io'Junio C Hamano3-69/+171
Low-level I/O optimization for reftable. * ps/reftable-optimize-io: reftable/stack: fix race in up-to-date check reftable/stack: unconditionally reload stack after commit reftable/blocksource: use mmap to read tables reftable/blocksource: refactor code to match our coding style reftable/stack: use stat info to avoid re-reading stack list reftable/stack: refactor reloading to use file descriptor reftable/stack: refactor stack reloading to have common exit path
2024-01-29t0080: mark as leak-freeRubén Justo1-0/+1
This test is leak-free since it was added in e137fe3b29 (unit tests: add TAP unit test framework, 2023-11-09) Let's mark it as leak-free to make sure it stays that way (and to reduce noise when looking for other leak-free scripts after we fix some leaks). Signed-off-by: Rubén Justo <rjusto@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-29test-lib: check for TEST_PASSES_SANITIZE_LEAKRubén Justo1-0/+5
TEST_PASSES_SANITIZE_LEAK must be set before sourcing test-lib.sh, as we say in t/README: GIT_TEST_PASSING_SANITIZE_LEAK=true skips those tests that haven't declared themselves as leak-free by setting "TEST_PASSES_SANITIZE_LEAK=true" before sourcing "test-lib.sh". This test mode is used by the "linux-leaks" CI target. GIT_TEST_PASSING_SANITIZE_LEAK=check checks that our "TEST_PASSES_SANITIZE_LEAK=true" markings are current. Rather than skipping those tests that haven't set "TEST_PASSES_SANITIZE_LEAK=true" before sourcing "test-lib.sh" this mode runs them with "--invert-exit-code". This is used to check that there's a one-to-one mapping between "TEST_PASSES_SANITIZE_LEAK=true" and those tests that pass under "SANITIZE=leak". This is especially useful when testing a series that fixes various memory leaks with "git rebase -x". In a recent commit we fixed a test where it was set after sourcing test-lib.sh, leading to confusing results. To prevent future oversights, let's add a simple check to ensure the value for TEST_PASSES_SANITIZE_LEAK remains unchanged at test_done(). Signed-off-by: Rubén Justo <rjusto@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-29t6113: mark as leak-freeRubén Justo1-1/+2
This test does not leak since a96015a517 (pack-bitmap: plug leak in find_objects(), 2023-12-14) when the annotation TEST_PASSES_SANITIZE_LEAK=true was also added. Unfortunately it was added after test-lib.sh is sourced, which makes GIT_TEST_PASSING_SANITIZE_LEAK=check error: $ make SANITIZE=leak GIT_TEST_PASSING_SANITIZE_LEAK=check test T=t6113-rev-list-bitmap-filters.sh ... make[2]: Entering directory '/tmp/git/git/t' *** t6113-rev-list-bitmap-filters.sh *** in GIT_TEST_PASSING_SANITIZE_LEAK=check mode, setting --invert-exit-code for TEST_PASSES_SANITIZE_LEAK != true ok 1 - set up bitmapped repo ok 2 - filters fallback to non-bitmap traversal ok 3 - blob:none filter ok 4 - blob:none filter with specified blob ok 5 - blob:limit filter ok 6 - blob:limit filter with specified blob ok 7 - tree:0 filter ok 8 - tree:0 filter with specified blob, tree ok 9 - tree:1 filter ok 10 - object:type filter ok 11 - object:type filter with --filter-provided-objects ok 12 - combine filter ok 13 - combine filter with --filter-provided-objects ok 14 - bitmap traversal with --unpacked # passed all 14 test(s) 1..14 # faking up non-zero exit with --invert-exit-code make[2]: *** [Makefile:68: t6113-rev-list-bitmap-filters.sh] Error 1 make[2]: Leaving directory '/tmp/git/git/t' make[1]: *** [Makefile:55: test] Error 2 make[1]: Leaving directory '/tmp/git/git/t' make: *** [Makefile:3212: test] Error 2 Let's move the annotation before sourcing test-lib.sh, to make GIT_TEST_PASSING_SANITIZE_LEAK=check happy. Signed-off-by: Rubén Justo <rjusto@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-29t5332: mark as leak-freeRubén Justo1-0/+1
This test is leak-free since it was added in af626ac0e0 (pack-bitmap: enable reuse from all bitmapped packs, 2023-12-14). Let's mark it as leak-free to make sure it stays that way (and to reduce noise when looking for other leak-free scripts after we fix some leaks). Signed-off-by: Rubén Justo <rjusto@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-29reftable/pq_test: comment style fixJunio C Hamano1-1/+1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-29merge-ort.c: comment style fixJunio C Hamano1-1/+1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-29builtin/worktree: comment style fixesJunio C Hamano1-5/+5
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-29t: mark tests regarding git-pack-refs(1) to be backend specificPatrick Steinhardt2-0/+12
Both t1409 and t3210 exercise parts of git-pack-refs(1). Given that we must check the on-disk files to verify whether the backend has indeed packed refs as expected those test suites are deeply tied to the actual backend that is in use. Mark the test suites to depend on the REFFILES backend. Signed-off-by: Patrick Steinhardt <ps@pks.im> Reviewed-by: Christian Couder <christian.couder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-29t5526: break test submodule differentlyPatrick Steinhardt1-1/+1
In 10f5c52656 (submodule: avoid auto-discovery in prepare_submodule_repo_env(), 2016-09-01) we fixed a bug when doing a recursive fetch with submodule in the case where the submodule is broken due to whatever reason. The test to exercise that the fix works breaks the submodule by deleting its `HEAD` reference, which will cause us to not detect the directory as a Git repository. While this is perfectly fine in theory, this way of breaking the repo becomes problematic with the current efforts to introduce another refdb backend into Git. The new reftable backend has a stub HEAD file that always contains "ref: refs/heads/.invalid" so that tools continue to be able to detect such a repository. But as the reftable backend will never delete this file even when asked to delete `HEAD` the current way to delete the `HEAD` reference will stop working. Adapt the code to instead delete the objects database. Going back with this new way to cause breakage confirms that it triggers the infinite recursion just the same, and there are no equivalent ongoing efforts to replace the object database with an alternate backend. Signed-off-by: Patrick Steinhardt <ps@pks.im> Reviewed-by: Christian Couder <christian.couder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-29t1419: mark test suite as files-backend specificPatrick Steinhardt1-0/+6
With 59c35fac54 (refs/packed-backend.c: implement jump lists to avoid excluded pattern(s), 2023-07-10) we have implemented logic to handle excluded refs more efficiently in the "packed" ref backend. This logic allows us to skip emitting refs completely which we know to not be of any interest to the caller, which can avoid quite some allocations and object lookups. This was wired up via a new `exclude_patterns` parameter passed to the backend's ref iterator. The backend only needs to handle them on a best effort basis though, and in fact we only handle it for the "packed-refs" file, but not for loose references. Consequently, all callers must still filter emitted refs with those exclude patterns. The result is that handling exclude patterns is completely optional in the ref backend, and any future backends may or may not implement it. Let's thus mark the test for t1419 to depend on the REFFILES prereq. An alternative would be to introduce a new prereq that tells us whether the backend under test supports exclude patterns or not. But this does feel a bit overblown: - It would either map to the REFFILES prereq, in which case it feels overengineered because the prereq is only ever relevant to t1419. - Otherwise, it could auto-detect whether the backend supports exclude patterns. But this could lead to silent failures in case the support for this feature breaks at any point in time. It should thus be good enough to just use the REFFILES prereq for now. If future backends ever grow support for exclude patterns we can easily add their respective prereq as another condition for this test suite to execute. Signed-off-by: Patrick Steinhardt <ps@pks.im> Reviewed-by: Christian Couder <christian.couder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-29t1302: make tests more robust with new extensionsPatrick Steinhardt1-8/+15
In t1302 we exercise logic around "core.repositoryFormatVersion" and extensions. These tests are not particularly robust against extensions like the newly introduced "refStorage" extension as we tend to clobber the repository's config file. We thus overwrite any extensions that were set, which may render the repository inaccessible in case it has to be accessed with a non-default ref storage. Refactor the tests to be more robust: - Check the DEFAULT_REPO_FORMAT prereq to determine the expected repository format version. This helps to ensure that we only need to update the prereq in a central place when new extensions are added. Furthermore, this allows us to stop seeding the now-unneeded object ID cache that was only used to figure out the repository version. - Use a separate repository to rewrite ".git/config" to test combinations of the repository format version and extensions. This ensures that we don't break the main test repository. While we could rewrite these tests to not overwrite preexisting extensions, it feels cleaner like this so that we can test extensions standalone without interference from the environment. - Do not rewrite ".git/config" when exercising the "preciousObjects" extension. Signed-off-by: Patrick Steinhardt <ps@pks.im> Reviewed-by: Christian Couder <christian.couder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-29t1301: mark test for `core.sharedRepository` as reffiles specificPatrick Steinhardt1-1/+1
In t1301 we verify whether reflog files written by the "files" ref backend correctly honor permissions when "core.sharedRepository" is set. The test logic is thus specific to the reffiles backend and will not work with any other backends. Mark the test accordingly with the REFFILES prereq. Signed-off-by: Patrick Steinhardt <ps@pks.im> Reviewed-by: Christian Couder <christian.couder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-29t1300: make tests more robust with non-default ref backendsPatrick Steinhardt1-28/+50
The t1300 test suite exercises the git-config(1) tool. To do so, the test overwrites ".git/config" to contain custom contents in several places with code like the following: ``` cat > .git/config <<\EOF ... EOF ``` While this is easy enough to do, it may create problems when using a non-default repository format because this causes us to overwrite the repository format version as well as any potential extensions. With the upcoming "reftable" ref backend the result is that Git would try to access refs via the "files" backend even though the repository has been initialized with the "reftable" backend, which will cause failures when trying to access any refs. Ideally, we would rewrite the whole test suite to not depend on state written by previous tests, but that would result in a lot of changes in this test suite. Instead, we only refactor tests which access the refdb to be more robust by using their own separate repositories, which allows us to be more careful and not discard required extensions. Note that we also have to touch up how the CUSTOM_CONFIG_FILE gets accessed. This environment variable contains the relative path to a custom config file which we're setting up. But because we are now using subrepositories, this relative path will not be found anymore because our working directory changes. This issue is addressed by storing the absolute path to the file in CUSTOM_CONFIG_FILE instead. Signed-off-by: Patrick Steinhardt <ps@pks.im> Reviewed-by: Christian Couder <christian.couder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-29credential/wincred: store oauth_refresh_tokenM Hickford1-6/+40
a5c7656 (credential: new attribute oauth_refresh_token) introduced a new confidential credential attribute and added support to credential-cache. Later 0ce02e2f (credential/libsecret: store new attributes, 2023-06-16) added support in credential-libsecret. To add support in credential-wincred, we encode the new attribute in the CredentialBlob, separated by newline: hunter2 oauth_refresh_token=xyzzy This is extensible and backwards compatible. The credential protocol already assumes that attribute values do not contain newlines. This fixes test "helper (wincred) gets oauth_refresh_token" when t0303-credential-external.sh is run with GIT_TEST_CREDENTIAL_HELPER=wincred. This test was added in a5c76569e7 (credential: new attribute oauth_refresh_token, 2023-04-21). Alternatives considered: store oauth_refresh_token in a wincred attribute. This would be insecure because wincred assumes attribute values to be non-confidential. Signed-off-by: M Hickford <mirth.hickford@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-29diff: handle NULL meta-info when spawning external diffJeff King2-1/+14
Running this: $ touch foo bar $ chmod +x foo $ git -c diff.external=echo diff --ext-diff --no-index foo bar results in a segfault. The issue is that run_diff_cmd() passes a NULL "xfrm_msg" variable to run_external_diff(), which feeds it to strvec_push(), causing the segfault. The bug dates back to 82fbf269b9 (run_external_diff: use an argv_array for the command line, 2014-04-19), though it mostly only ever worked accidentally. Before then, we just stuck the NULL pointer into a "const char **" array, so our NULL ended up acting as an extra end-of-argv sentinel (which was OK, because it was the last thing in the array). Curiously, though, this is only a problem with --no-index. We set up xfrm_msg by calling fill_metainfo(). This result may be empty, or may have text like "index 1234..5678\n", "rename from foo\nrename from bar\n", etc. In run_external_diff(), we only look at xfrm_msg if the "other" variable is not NULL. That variable is set when the paths of the two sides of the diff pair aren't the same (in which case the destination path becomes "other"). So normally it would kick in only for a rename, in which case xfrm_msg should not be NULL (it would have the rename information in it). But with a "--no-index" of two blobs, we of course have two different pathnames, and thus end up with a non-NULL "other" filename (which is always just a repeat of the file2-name), but possibly a NULL xfrm_msg. So how to fix it? I have a feeling that --no-index always passing "other" to the external diff command is probably a bug. There was no rename, and the name is always redundant with existing information we pass (and this may even cause us to pass a useless "xfrm_msg" that contains an "index 1234..5678" line). So one option would be to change that behavior. We don't seem to have ever documented the "other" or "xfrm_msg" parameters for external diffs. But I'm not sure what fallout we might have from changing that behavior now. So this patch takes the less-risky option, and simply teaches run_external_diff() to avoid passing xfrm_msg when it's NULL. That makes it agnostic to whether "other" and "xfrm_msg" always come as a pair. It fixes the segfault now, and if we want to change the --no-index "other" behavior on top, it will handle that, too. Reported-by: Wilfred Hughes <me@wilfred.me.uk> Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-29config: add back code commentKristoffer Haugsbakk1-0/+6
c15129b699 (config: factor out global config file retrieval, 2024-01-18) was a refactor that moved some of the code in this function to `config.c`. However, in the process I managed to drop this code comment which explains `$HOME not set`. Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name> Acked-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-29pack-bitmap: drop unused `reuse_objects`Taylor Blau1-7/+0
This variable is no longer used for doing verbatim pack-reuse (or anywhere within pack-bitmap.c) since d2ea031046 (pack-bitmap: don't rely on bitmap_git->reuse_objects, 2019-12-18). Remove it to avoid an unused struct member. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-29git-p4: use raw string literals for regular expressionsJames Touton1-13/+13
Fixes several Python diagnostics about invalid escape sequences. The diagnostics appear for me in Python 3.12, and may appear in earlier versions. The fix is to use raw string literals so that backslashes are not interpreted as introducing escape sequences. Raw string literals are already in use in this file, so adding more does not impact toolchain compatibility. Signed-off-by: James Touton <bekenn@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-29merge-tree: accept 3 trees as argumentsJohannes Schindelin3-18/+35
When specifying a merge base explicitly, there is actually no good reason why the inputs need to be commits: that's only needed if the merge base has to be deduced from the commit graph. This commit is best viewed with `--color-moved --color-moved-ws=allow-indentation-change`. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-26The tenth batchJunio C Hamano1-0/+33
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-01-26Merge branch 'vd/fsck-submodule-url-test'Junio C Hamano5-151/+203
Tighten URL checks fsck makes in a URL recorded for submodules. * vd/fsck-submodule-url-test: submodule-config.c: strengthen URL fsck check t7450: test submodule urls test-submodule: remove command line handling for check-name submodule-config.h: move check_submodule_url
2024-01-26Merge branch 'kh/maintenance-use-xdg-when-it-should'Junio C Hamano6-43/+86
When $HOME/.gitignore is missing but XDG config file available, we should write into the latter, not former. "git gc" and "git maintenance" wrote into a wrong "global config" file, which have been corrected. * kh/maintenance-use-xdg-when-it-should: maintenance: use XDG config if it exists config: factor out global config file retrieval config: rename global config function config: format newlines
2024-01-26Merge branch 'gt/test-commit-o-i-options'Junio C Hamano1-2/+96
A few tests to "git commit -o <pathspec>" and "git commit -i <pathspec>" has been added. * gt/test-commit-o-i-options: t7501: add tests for --amend --signoff t7501: add tests for --include and --only
2024-01-26Merge branch 'ps/gitlab-ci-macos'Junio C Hamano6-10/+63
CI for GitLab learned to drive macOS jobs. * ps/gitlab-ci-macos: ci: add macOS jobs to GitLab CI ci: make p4 setup on macOS more robust ci: handle TEST_OUTPUT_DIRECTORY when printing test failures Makefile: detect new Homebrew location for ARM-based Macs t7527: decrease likelihood of racing with fsmonitor daemon
2024-01-26Merge branch 'ps/completion-with-reftable-fix'Junio C Hamano2-8/+50
Completion update to prepare for reftable * ps/completion-with-reftable-fix: completion: treat dangling symrefs as existing pseudorefs completion: silence pseudoref existence check completion: improve existence check for pseudo-refs t9902: verify that completion does not print anything completion: discover repo path in `__git_pseudoref_exists ()`
2024-01-26Merge branch 'jt/tests-with-reftable'Junio C Hamano2-16/+7
Tweak a few tests not to manually modify the reference database (hence easier to work with other backends like reftable). * jt/tests-with-reftable: t5541: remove lockfile creation t1401: remove lockfile creation
2024-01-26Merge branch 'la/strvec-comment-fix'Junio C Hamano1-4/+4
Comment fix. * la/strvec-comment-fix: strvec: use correct member name in comments
2024-01-26Merge branch 'mj/gitweb-unreadable-config-error'Junio C Hamano1-1/+3
When given an existing but unreadable file as a configuration file, gitweb behaved as if the file did not exist at all, but now it errors out. This is a change that may break backward compatibility. * mj/gitweb-unreadable-config-error: gitweb: die when a configuration file cannot be read
2024-01-26Merge branch 'ps/worktree-refdb-initialization'Junio C Hamano10-69/+96
Instead of manually creating refs/ hierarchy on disk upon a creation of a secondary worktree, which is only usable via the files backend, use the refs API to populate it. * ps/worktree-refdb-initialization: builtin/worktree: create refdb via ref backend worktree: expose interface to look up worktree by name builtin/worktree: move setup of commondir file earlier refs/files: skip creation of "refs/{heads,tags}" for worktrees setup: move creation of "refs/" into the files backend refs: prepare `refs_init_db()` for initializing worktree refs
2024-01-26Merge branch 'ps/commit-graph-write-leakfix'Junio C Hamano1-11/+8
Leakfix. * ps/commit-graph-write-leakfix: commit-graph: fix memory leak when not writing graph
2024-01-26Merge branch 'al/unit-test-ctype'Junio C Hamano6-77/+81
Move test-ctype helper to the unit-test framework. * al/unit-test-ctype: unit-tests: rewrite t/helper/test-ctype.c as a unit test