summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2024-04-03Merge branch 'pb/test-scripts-are-build-targets'Junio C Hamano1-0/+7
The t/README file now gives a hint on running individual tests in the "t/" directory with "make t<num>-*.sh t<num>-*.sh". * pb/test-scripts-are-build-targets: t/README: mention test files are make targets
2024-04-03Merge branch 'ds/grep-doc-updates'Junio C Hamano2-15/+23
Documentation updates. * ds/grep-doc-updates: grep docs: describe --no-index further and improve formatting a bit grep docs: describe --recurse-submodules further and improve formatting a bit
2024-04-03Merge branch 'az/grep-group-error-message-update'Junio C Hamano1-2/+2
Error message clarification. * az/grep-group-error-message-update: grep: improve errors for unmatched ( and )
2024-04-03Merge branch 'jc/release-notes-entry-experiment'Junio C Hamano1-0/+12
Introduce an experimental protocol for contributors to propose the topic description to be used in the "What's cooking" report, the merge commit message for the topic, and in the release notes and document it in the SubmittingPatches document. * jc/release-notes-entry-experiment: SubmittingPatches: release-notes entry experiment
2024-04-03Merge branch 'jk/remote-helper-object-format-option-fix'Junio C Hamano4-20/+11
The implementation and documentation of "object-format" option exchange between the Git itself and its remote helpers did not quite match, which has been corrected. * jk/remote-helper-object-format-option-fix: transport-helper: send "true" value for object-format option transport-helper: drop "object-format <algo>" option transport-helper: use write helpers more consistently
2024-04-03t/t7700-repack.sh: fix test breakages with `GIT_TEST_MULTI_PACK_INDEX=1 `Taylor Blau1-0/+2
There are a handful of related test breakages which are found when running t/t7700-repack.sh with GIT_TEST_MULTI_PACK_INDEX set to "1" in your environment. Both test failures are the result of something like: git repack --write-midx --write-bitmap-index [...] && test_path_is_file $midx && test_path_is_file $midx-$(midx_checksum $objdir).bitmap , where we repack instructing Git to write a new MIDX and corresponding MIDX bitamp. The error occurs when GIT_TEST_MULTI_PACK_INDEX=1 is found in the enviornment. This causes Git to write out a second MIDX (after processing the builtin's `--write-midx` argument) which is identical to the first, but does not request a bitmap (since we did not set the GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP variable in the environment). Since c528e179662 (pack-bitmap: write multi-pack bitmaps, 2021-08-31), the MIDX machinery will drop an existing MIDX bitmap when rewriting an identical MIDX which does not itself request a corresponding bitmap, which is similar to the way repack itself behaves in the pack-bitmap case. Correct these issues (which date back to [1] and [2], respectively) by explicitly setting GIT_TEST_MULTI_PACK_INDEX to zero before running each command. In the future, we should consider removing GIT_TEST_MULTI_PACK_INDEX, and in general clean up unused GIT_TEST_-variables. But that is a larger effort, and this ensures that we can cleanly run: $ GIT_TEST_MULTI_PACK_INDEX=1 make test in the meantime. [1]: 324efc90d1b (builtin/repack.c: pass `--refs-snapshot` when writing bitmaps, 2021-10-01) [2]: 197443e80ab (repack: don't remove .keep packs with `--pack-kept-objects`, 2022-10-17). Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-03reftable/block: avoid decoding keys when searching restart pointsPatrick Steinhardt1-10/+19
When searching over restart points in a block we decode the key of each of the records, which results in a memory allocation. This is quite pointless though given that records it restart points will never use prefix compression and thus store their keys verbatim in the block. Refactor the code so that we can avoid decoding the keys, which saves us some allocations. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-03reftable/record: extract function to decode key lengthsPatrick Steinhardt2-9/+31
We're about to refactor the binary search over restart points so that it does not need to fully decode the record keys anymore. To do so we will need to decode the record key lengths, which is non-trivial logic. Extract the logic to decode these lengths from `refatble_decode_key()` so that we can reuse it. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-03reftable/block: fix error handling when searching restart pointsPatrick Steinhardt3-8/+11
When doing the binary search over restart points in a block we need to decode the record keys. This decoding step can result in an error when the block is corrupted, which we indicate to the caller of the binary search by setting `args.error = 1`. But the only caller that exists mishandles this because it in fact performs the error check before calling `binsearch()`. Fix this bug by checking for errors at the right point in time. Furthermore, refactor `binsearch()` so that it aborts the search in case the callback function returns a negative value so that we don't needlessly continue to search the block. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-03reftable/block: refactor binary search over restart pointsPatrick Steinhardt1-27/+73
When seeking a record in our block reader we perform a binary search over the block's restart points so that we don't have to do a linear scan over the whole block. The logic to do so is quite intricate though, which makes it hard to understand. Improve documentation and rename some of the functions and variables so that the code becomes easier to understand overall. This refactoring should not result in any change in behaviour. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-03reftable/refname: refactor binary search over refnamesPatrick Steinhardt1-22/+22
It is comparatively hard to understand how exactly the binary search over refnames works given that the function and variable names are not exactly easy to grasp. Rename them to make this more obvious. This should not result in any change in behaviour. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-03reftable/basics: improve `binsearch()` testPatrick Steinhardt1-24/+31
The `binsearch()` test is somewhat weird in that it doesn't explicitly spell out its expectations. Instead it does so in a rather ad-hoc way with some hard-to-understand computations. Refactor the test to spell out the needle as well as expected index for all testcases. This refactoring highlights that the `binsearch_func()` is written somewhat weirdly to find the first integer smaller than the needle, not smaller or equal to it. Adjust the function accordingly. While at it, rename the callback function to better convey its meaning. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-03reftable/basics: fix return type of `binsearch()` to be `size_t`Patrick Steinhardt5-16/+14
The `binsearch()` function can be used to find the first element for which a callback functions returns a truish value. But while the array size is of type `size_t`, the function in fact returns an `int` that is supposed to index into that array. Fix the function signature to return a `size_t`. This conversion does not change any semantics given that the function would only ever return a value in the range `[0, sz]` anyway. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-02t-prio-queue: simplify using compound literalsRené Scharfe1-34/+17
Test names like "basic" are mentioned seven times in the code (ignoring case): Twice when defining the input and result macros, thrice when defining the test function, and twice again when calling it. Reduce that to a single time by using compound literals to pass the input and result arrays via TEST_INPUT to test_prio_queue(). Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-02INSTALL: bump libcurl version to 7.21.3Jeff King1-1/+1
Our documentation claims we support curl versions back to 7.19.5. But we can no longer compile with that version since adding an unconditional use of CURLOPT_RESOLVE in 511cfd3bff (http: add custom hostname to IP address resolutions, 2022-05-16). That feature wasn't added to libcurl until 7.21.3. We could add #ifdefs to make this work back to 7.19.5. But given that nobody noticed the compilation failure in the intervening two years, it makes more sense to bump the version in the documentation to 7.21.3 (which is itself over 13 years old). We could perhaps go forward even more (which would let us drop some cruft from git-curl-compat.h), but this should be an obviously safe jump, and we can move forward later. Note that user-visible syntax for CURLOPT_RESOLVE has grown new features in subsequent curl versions. Our documentation mentions "+" and "-" entries, which require more recent versions than 7.21.3. We could perhaps clarify that in our docs, but it's probably not worth cluttering them with restrictions of ancient curl versions. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-02http: reset POSTFIELDSIZE when clearing curl handleJeff King1-0/+1
In get_active_slot(), we return a CURL handle that may have been used before (reusing them is good because it lets curl reuse the same connection across many requests). We set a few curl options back to defaults that may have been modified by previous requests. We reset POSTFIELDS to NULL, but do not reset POSTFIELDSIZE (which defaults to "-1"). This usually doesn't matter because most POSTs will set both fields together anyway. But there is one exception: when handling a large request in remote-curl's post_rpc(), we don't set _either_, and instead set a READFUNCTION to stream data into libcurl. This can interact weirdly with a stale POSTFIELDSIZE setting, because curl will assume it should read only some set number of bytes from our READFUNCTION. However, it has worked in practice because we also manually set a "Transfer-Encoding: chunked" header, which libcurl uses as a clue to set the POSTFIELDSIZE to -1 itself. So everything works, but we're better off resetting the size manually for a few reasons: - there was a regression in curl 8.7.0 where the chunked header detection didn't kick in, causing any large HTTP requests made by Git to fail. This has since been fixed (but not yet released). In the issue, curl folks recommended setting it explicitly to -1: https://github.com/curl/curl/issues/13229#issuecomment-2029826058 and it indeed works around the regression. So even though it won't be strictly necessary after the fix there, this will help folks who end up using the affected libcurl versions. - it's consistent with what a new curl handle would look like. Since get_active_slot() may or may not return a used handle, this reduces the possibility of heisenbugs that only appear with certain request patterns. Note that the recommendation in the curl issue is to actually drop the manual Transfer-Encoding header. Modern libcurl will add the header itself when streaming from a READFUNCTION. However, that code wasn't added until 802aa5ae2 (HTTP: use chunked Transfer-Encoding for HTTP_POST if size unknown, 2019-07-22), which is in curl 7.66.0. We claim to support back to 7.19.5, so those older versions still need the manual header. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-02t2104: style fixesJunio C Hamano1-15/+15
We use tabs to indent, not two or four spaces. These days, even the test fixture preparation should be done inside test_expect_success block. Address these two style violations in this test. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-02imap-send: use xsnprintf to format commandRené Scharfe1-20/+4
nfsnprintf() wraps vsnprintf(3) and reports attempts to use too small a buffer using BUG(), just like xsnprintf(). It has an extra check that makes sure the buffer size (converted to int) is positive. vsnprintf(3) is supposed to handle a buffer size of zero or bigger than INT_MAX just fine, so this extra comparison doesn't make us any safer. If a platform has a broken implementation, we'd need to work around it in our compat code. Call xsnprintf() instead to reduce code duplication and make the caller slightly more readable by using this more common helper. Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-02githooks: use {old,new}-oid instead of {old,new}-valueKarthik Nayak1-8/+8
Similar to the previous commit, rename {old,new}-value in the 'githooks' documentation to {old,new}-oid. This improves clarity and also ensures consistency within the document. Signed-off-by: Karthik Nayak <karthik.188@gmail.com> Acked-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-02update-ref: use {old,new}-oid instead of {old,new}valueKarthik Nayak3-59/+59
The `git-update-ref` command is used to modify references. The usage of {old,new}value in the documentation refers to the OIDs. This is fine since the command only works with regular references which hold OIDs. But if the command is updated to support symrefs, we'd also be dealing with {old,new}-refs. To improve clarity around what exactly {old,new}value mean, let's rename it to {old,new}-oid. Signed-off-by: Karthik Nayak <karthik.188@gmail.com> Acked-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-01osxkeychain: store new attributesBo Anderson1-6/+62
d208bfdfef (credential: new attribute password_expiry_utc, 2023-02-18) and a5c76569e7 (credential: new attribute oauth_refresh_token, 2023-04-21) introduced new credential attributes but support was missing from git-credential-osxkeychain. Support these attributes by appending the data to the password in the keychain, separated by line breaks. Line breaks cannot appear in a git credential password so it is an appropriate separator. Fixes the remaining test failures with osxkeychain: 18 - helper (osxkeychain) gets password_expiry_utc 19 - helper (osxkeychain) overwrites when password_expiry_utc changes 21 - helper (osxkeychain) gets oauth_refresh_token Signed-off-by: Bo Anderson <mail@boanderson.me> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-01osxkeychain: erase matching passwords onlyBo Anderson1-1/+55
Other credential helpers support deleting credentials that match a specified password. See 7144dee3ec (credential/libsecret: erase matching creds only, 2023-07-26) and cb626f8e5c (credential/wincred: erase matching creds only, 2023-07-26). Support this in osxkeychain too by extracting, decrypting and comparing the stored password before deleting. Fixes the following test failure with osxkeychain: 11 - helper (osxkeychain) does not erase a password distinct from input Signed-off-by: Bo Anderson <mail@boanderson.me> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-01osxkeychain: erase all matching credentialsBo Anderson1-1/+2
Other credential managers erased all matching credentials, as indicated by a test case that osxkeychain failed: 15 - helper (osxkeychain) erases all matching credentials Signed-off-by: Bo Anderson <mail@boanderson.me> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-01osxkeychain: replace deprecated SecKeychain APIBo Anderson2-67/+197
The SecKeychain API was deprecated in macOS 10.10, nearly 10 years ago. The replacement SecItem API however is available as far back as macOS 10.6. While supporting older macOS was perhaps prevously a concern, git-credential-osxkeychain already requires a minimum of macOS 10.7 since 5747c8072b (contrib/credential: avoid fixed-size buffer in osxkeychain, 2023-05-01) so using the newer API should not regress the range of macOS versions supported. Adapting to use the newer SecItem API also happens to fix two test failures in osxkeychain: 8 - helper (osxkeychain) overwrites on store 9 - helper (osxkeychain) can forget host The new API is compatible with credentials saved with the older API. Signed-off-by: Bo Anderson <mail@boanderson.me> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-01midx-write.c: use `--stdin-packs` when repackingTaylor Blau1-9/+9
When constructing a new pack `git multi-pack-index repack` provides a list of objects which is the union of objects in all MIDX'd packs which were "included" in the repack. Though correct, this typically yields a poorly structured pack, since providing the objects list over stdin does not give pack-objects a chance to discover the namehash values for each object, leading to sub-optimal delta selection. We can use `--stdin-packs` instead, which has a couple of benefits: - it does a supplemental walk over objects in the supplied list of packs to discover their namehash, leading to higher-quality delta selection - it requires us to list far less data over stdin; instead of listing each object in the resulting pack, we need only list the constituent packs from which those objects were selected in the MIDX Of course, this comes at a slight cost: though we save time on listing packs versus objects over stdin[^1] (around ~650 milliseconds), we add a non-trivial amount of time walking over the given objects in order to find better deltas. In general, this is likely to more closely match the user's expectations (i.e. that packs generated via `git multi-pack-index repack` are written with high-quality deltas). But if not, we can always introduce a new option in pack-objects to disable the supplemental object walk, which would yield a pure CPU-time savings, at the cost of the on-disk size of the resulting pack. [^1]: In a patched version of Git that doesn't perform the supplemental object walk in `pack-objects --stdin-packs`, we save around ~650ms (from 5.968 to 5.325 seconds) when running `git multi-pack-index repack --batch-size=0` on git.git with all objects packed, and all packs in a MIDX. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-01midx-write.c: check count of packs to repack after groupingTaylor Blau1-24/+20
In both fill_included_packs_all() and fill_included_packs_batch(), we accumulate a list of packs whose contents we want to repack together, and then use that information to feed a list of objects as input to pack-objects. In both cases, the `fill_included_packs_` functions keep track of how many packs they want to repack together, and only execute pack-objects if there are at least two packs that need repacking. Having both of these functions keep track of this information themselves is not strictly necessary, since they also log which packs to repack via the `include_pack` array, so we can simply count the non-zero entries in that array after either function is done executing, reducing the overall amount of code necessary. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-01midx-write.c: factor out common want_included_pack() routineTaylor Blau1-12/+20
When performing a 'git multi-pack-index repack', the MIDX machinery tries to aggregate MIDX'd packs together either to (a) fill the given `--batch-size` argument, or (b) combine all packs together. In either case (using the `midx-write.c::fill_included_packs_batch()` or `midx-write.c::fill_included_packs_all()` function, respectively), we evaluate whether or not we want to repack each MIDX'd pack, according to whether or it is loadable, kept, cruft, or non-empty. Between the two `fill_included_packs_` callers, they both care about the same conditions, except for `fill_included_packs_batch()` which also cares that the pack is non-empty. We could extract two functions (say, `want_included_pack()` and a `_nonempty()` variant), but this is not necessary. For the case in `fill_included_packs_all()` which does not check the pack size, we add all of the pack's objects assuming that the pack meets all other criteria. But if the pack is empty in the first place, we add all of its zero objects, so whether or not we "accept" or "reject" it in the first place is irrelevant. This change improves the readability in both `fill_included_packs_` functions. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-01midx-write: move writing-related functions from midx.cTaylor Blau4-1539/+1555
Introduce a new midx-write.c source file, which holds all of the functionality from the MIDX sub-system related to writing new MIDX files. Similar to the relationship between "pack-bitmap.c" and "pack-bitmap-write.c", this source file will hold code that is specific to writing MIDX files as opposed to reading them (the latter will remain in midx.c). Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-01Merge branch 'rs/midx-use-strvec-pushf' into tb/midx-writeJunio C Hamano1-6/+1
* rs/midx-use-strvec-pushf: midx: use strvec_pushf() for pack-objects base name
2024-04-01The thirteenth batchJunio C Hamano1-0/+26
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-01Merge branch 'ps/clone-with-includeif-onbranch'Junio C Hamano1-0/+12
An additional test to demonstrate that clone would not choke on a global configuration file that uses includeIf.onbranch:*.path. * ps/clone-with-includeif-onbranch: t5601: exercise clones with "includeIf.*.onbranch"
2024-04-01Merge branch 'jk/rebase-apply-leakfix'Junio C Hamano2-3/+12
Leakfix. * jk/rebase-apply-leakfix: rebase: use child_process_clear() to clean
2024-04-01Merge branch 'ps/t7800-variable-interpolation-fix'Junio C Hamano2-20/+40
Fix the way recently added tests interpolate variables defined outside them, and document the best practice to help future developers. * ps/t7800-variable-interpolation-fix: t/README: document how to loop around test cases t7800: use single quotes for test bodies t7800: improve test descriptions with empty arguments
2024-04-01Merge branch 'ps/reftable-unit-test-nfs-workaround'Junio C Hamano1-1/+11
A unit test for reftable code tried to enumerate all files in a directory after reftable operations and expected to see nothing but the files it wanted to leave there, but was fooled by .nfs* cruft files left, which has been corrected. * ps/reftable-unit-test-nfs-workaround: reftable: fix tests being broken by NFS' delete-after-close semantics
2024-04-01Merge branch 'jk/doc-remote-helpers-markup-fix'Junio C Hamano1-3/+3
Documentation mark-up fix. * jk/doc-remote-helpers-markup-fix: doc/gitremote-helpers: fix more missing single-quotes
2024-04-01Merge branch 'pb/advice-merge-conflict'Junio C Hamano9-25/+39
Hints that suggest what to do after resolving conflicts can now be squelched by disabling advice.mergeConflict. Acked-by: Phillip Wood <phillip.wood123@gmail.com> cf. <e040c631-42d9-4501-a7b8-046f8dac6309@gmail.com> * pb/advice-merge-conflict: builtin/am: allow disabling conflict advice sequencer: allow disabling conflict advice
2024-04-01Merge branch 'ds/config-internal-whitespace-fix'Junio C Hamano3-20/+135
"git config" corrupted literal HT characters written in the configuration file as part of a value, which has been corrected. * ds/config-internal-whitespace-fix: config.txt: describe handling of whitespace further t1300: add more tests for whitespace and inline comments config: really keep value-internal whitespace verbatim config: minor addition of whitespace
2024-04-01Merge branch 'jk/pretty-subject-cleanup'Junio C Hamano7-46/+38
Code clean-up in the "git log" machinery that implements custom log message formatting. * jk/pretty-subject-cleanup: format-patch: fix leak of empty header string format-patch: simplify after-subject MIME header handling format-patch: return an allocated string from log_write_email_headers() log: do not set up extra_headers for non-email formats pretty: drop print_email_subject flag pretty: split oneline and email subject printing shortlog: stop setting pp.print_email_subject
2024-04-01Merge branch 'pw/checkout-conflict-errorfix'Junio C Hamano9-37/+139
"git checkout --conflict=bad" reported a bad conflictStyle as if it were given to a configuration variable; it has been corrected to report that the command line option is bad. * pw/checkout-conflict-errorfix: checkout: fix interaction between --conflict and --merge checkout: cleanup --conflict=<style> parsing merge options: add a conflict style member merge-ll: introduce LL_MERGE_OPTIONS_INIT xdiff-interface: refactor parsing of merge.conflictstyle
2024-04-01completion: protect prompt against unset SHOWUPSTREAM in nounset modeVille Skyttä1-1/+1
As it stands, the only call site of `__git_ps1_show_upstream` checks that the `GIT_PS1_SHOWUPSTREAM` variable is set, so this is effectively a no-op. However, that might change, and chances of noticing the unprotected use might not be that high when it does. Signed-off-by: Ville Skyttä <ville.skytta@iki.fi> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-04-01completion: fix prompt with unset SHOWCONFLICTSTATE in nounset modeVille Skyttä1-1/+1
`GIT_PS1_SHOWCONFLICTSTATE` is a user variable that might not be set, causing errors when the shell is in `nounset` mode. Take into account on access by falling back to an empty string. Signed-off-by: Ville Skyttä <ville.skytta@iki.fi> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-03-31config: fix some small capitalization issues, as spottedDragan Simic1-1/+1
Fix some small capitalization issues, as spotted while going through the documentation. In general, a semicolon doesn't start a new sentence, and "this" has no meaning of a proper noun in this context. Signed-off-by: Dragan Simic <dsimic@manjaro.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-03-31mem-pool: use st_add() in mem_pool_strvfmt()René Scharfe1-2/+4
If len is INT_MAX in mem_pool_strvfmt(), then len + 1 overflows. Casting it to size_t would prevent that. Use st_add() to go a step further and make the addition *obviously* safe. The compiler can optimize the check away on platforms where SIZE_MAX > INT_MAX, i.e. basically everywhere. Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-03-31test-lib: fix non-functioning GIT_TEST_MAINT_SCHEDULER fallbackEric Sunshine1-0/+1
When environment variable GIT_TEST_MAINT_SCHEDULER is set, `git maintenance` invokes the command specified as the variable's value rather than invoking the actual underlying platform-specific scheduler management command. By setting GIT_TEST_MAINT_SCHEDULER to some suitable value, test authors can therefore validate behavior of "destructive" `git maintenance` commands without having to worry about clobbering the user's own local scheduler configuration. In order to protect an absent-minded test author from forgetting to set GIT_TEST_MAINT_SCHEDULER in the local test script (and thus clobbering his or her own scheduler configuration), t/test-lib.sh assigns an "immediately error-out" value to GIT_TEST_MAINT_SCHEDULER by default which should ensure that the problem will be caught and reported before any damage can be done to the configuration of the person running the tests. Unfortunately, however, t/test-lib.sh neglects to export GIT_TEST_MAINT_SCHEDULER, which renders the default "error-out" assignment worthless. Fix this by exporting the variable as originally intended. Reported-by: Junio C Hamano <gitster@pobox.com> Signed-of-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-03-30add: use advise_if_enabled for ADVICE_ADD_EMBEDDED_REPORubén Justo2-3/+37
By following a similar reasoning as in previous commits, there are no reason why we should not use the advise_if_enabled() API to display the ADVICE_ADD_EMBEDDED_REPO advice. This advice was introduced in 532139940c (add: warn when adding an embedded repository, 2017-06-14). Some tests were included in the commit, but none is testing this advice. Which, note, we only want to display once per run. So, use the advise_if_enabled() machinery to show the ADVICE_ADD_EMBEDDED_REPO advice and include a test to notice any possible breakage. Signed-off-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Rubén Justo <rjusto@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-03-30add: use advise_if_enabled for ADVICE_ADD_EMPTY_PATHSPECRubén Justo2-4/+12
Since 93b0d86aaf (git-add: error out when given no arguments., 2006-12-20) we display a message when no arguments are given to "git add". Part of that message was converted to advice in bf66db37f1 (add: use advise function to display hints, 2020-01-07). Following the same line of reasoning as in the previous commit, it is sensible to use advise_if_enabled() here. Therefore, use advise_if_enabled() in builtin/add.c to show the ADVICE_ADD_EMPTY_PATHSPEC advice, and don't bother checking there the visibility of the advice or displaying the instruction on how to disable it. Also add a test for these messages, in order to detect a possible change in them. Signed-off-by: Rubén Justo <rjusto@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-03-30add: use advise_if_enabled for ADVICE_ADD_IGNORED_FILERubén Justo3-8/+4
Since b3b18d1621 (advice: revamp advise API, 2020-03-02), we can use advise_if_enabled() to display an advice. This API encapsulates three actions: 1.- checking the visibility of the advice 2.- displaying the advice when appropriate 3.- displaying instructions on how to disable the advice, when appropriate The code we have in builtin/add.c to display the ADVICE_ADD_IGNORED_FILE advice, is doing these three things. However, the instructions displayed on how to disable the hint are not shown in the normalized way that advise_if_enabled() introduced. This may cause distraction. There is no reason not to use the new API here. On the contrary, by using it we gain simplicity in the code and avoid possible distractions. For these reasons, use the newer advise_if_enabled() machinery to show the ADVICE_ADD_IGNORED_FILE advice, and don't bother checking the visibility or displaying the instruction on how to disable the advice. Signed-off-by: Rubén Justo <rjusto@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-03-30checkout: omit "tracking" information on a detached HEADJunio C Hamano2-2/+6
By definition, a detached HEAD state is tentative and there is no configured "upstream" that it always wants to integrate with. But if you detach from a branch that is behind its upstream, e.g., $ git checkout -t -b main origin/main $ git checkout main $ git reset --hard HEAD^ $ git checkout --detach main you'd see "you are behind your upstream origin/main". This does not happen when you replace the last step in the above with any of these $ git checkout HEAD^0 $ git checkout --detach HEAD $ git checkout --detach origin/main Before 32669671 (checkout: introduce --detach synonym for "git checkout foo^{commit}", 2011-02-08) introduced the "--detach" option, the rule to decide if we show the tracking information used to be: If --quiet is not given, and if the given branch name is a real local branch (i.e. the one we can compute the file path under .git/, like 'refs/heads/master' or "HEAD" which stand for the name of the current branch", then give the tracking information. to exclude things like "git checkout master^0" (which was the official way to detach HEAD at the commit before that commit) and "git checkout origin/master^0" from showing tracking information, but still do show the tracking information for the current branch for "git checkout HEAD". The introduction of an explicit option "--detach" broke this subtley. The new rule should have been If --quiet is given, do not bother with tracking info. If --detach is given, do not bother with tracking info. Otherwise, if we know that the branch name given is a real local branch, or if we were given "HEAD" and "HEAD" is not detached, then attempt to show the tracking info. but it allowed "git checkout --detach master" to also show the tracking info by mistake. Let's tighten the rule to fix this. Reported-by: mirth hickford <mirth.hickford@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-03-29advice: omit trailing whitespaceJunio C Hamano3-5/+6
Git tools all consistently encourage users to avoid whitespaces at the end of line by giving them features like "git diff --check" and "git am --whitespace=fix". Make sure that the advice messages we give users avoid trailing whitespaces. We shouldn't be wasting vertical screen real estate by adding blank lines in advice messages that are supposed to be concise hints, but as long as we write such blank line in our "hints", we should do it right. A test that expects the current behaviour of leaving trailing whitespaces has been adjusted. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-03-29doc: git-clone: do not autoreference the manpage in itselfJean-Noël Avila1-2/+12
Auto-reference in man pages is a confusion factor. Signed-off-by: Jean-Noël Avila <jn.avila@free.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>