summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorLines
7 daysdoc: fix grammar errors in submodule descriptionHEADmastermainElijah Newren-5/+5
6cc6d1b4c699 (Documentation: update add --force option + ignore=all config, 2026-02-06) added text describing both the ignore=none and ignore=all behaviors. The former had minor formatting and grammatical errors, while the latter was a bit garbled. I have tried to tweak the wording on the latter to make it read as I think was intended, and fixed the minor grammatical issues with both as well. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 daysdoc: fix singular/plural mismatch in git-rerereElijah Newren-1/+1
conflict -> conflicts Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 daysdoc: fix plural agreement in pack.preferBitmapTipsElijah Newren-1/+1
hierarchies -> hierarchy Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 daysdoc: fix self-referential config in sendemail.smtpSSLClientKeyElijah Newren-1/+1
a8215a205141 (send-email: add client certificate options, 2026-03-02) added documentation for sendemail.smtpSSLClientKey that says it works "in conjunction with `sendemail.smtpSSLClientKey`" -- referring to itself. It appears that `sendemail.smtpSSLClientCert` was the intended reference; fix it. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 daysCodingGuidelines: fix subject-verb agreementElijah Newren-1/+1
Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 daysRelNotes/2.54.0: fix typos and grammarElijah Newren-10/+10
Fix various issues in the release notes -- missing/wrong articles, typo, indentation, quote consistency, and wording improvement or corrections. Other than the indentation fix for "The way combined list-object filter options...", this patch is much easier to view with --color-words. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 daysMerge branch 'jk/midx-write-v1-by-default'Junio C Hamano-2/+7
As writing version 2 MIDX files by default breaks older versions of Git and its reimplementations, use V2 only when necessary. * jk/midx-write-v1-by-default: MIDX: revert the default version to v1
7 daysMIDX: revert the default version to v1Jeff King-2/+7
We introduced midx version 2 in b2ec8e90c2 (midx: do not require packs to be sorted in lexicographic order, 2026-02-24) and now write it by default. The rationale was that older versions should ignore the v2 midx and fall back to using the packs (just like we do for other midx errors). Unfortunately this is not the case, as we have a hard die() when we see an unknown midx version. As a result, writing a midx with Git 2.54-rc2 puts the repository into a state that is unusable with Git 2.53. And this midx write may happen behind the scenes as part of normal operations, like fetch. Let's switch back to writing v1 by default to avoid regressing the case where multiple versions of Git are used on the same repository. There is one gotcha, though: the v2 format is required for some new features, like midx compaction, and running "git multi-pack-index compact" will complain when asked to write a v1 index. The user must set midx.version to "2" to make the feature work. So instead of always using v1, we'll base the default on whether the requested feature requires v2. That does mean that running midx compaction will create a repository that can't be read by older versions of Git. But we never do that by default; only people experimenting with the new feature will be affected. We have to adjust the test expectation in t5319, since it will now generate v1 files. And our "auto-select v2" is covered by the tests in t5335, which continue to check that compaction works without having to set midx.version manually (and also explicitly check that asking for v1 with compaction reports the problem). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 dayscodeql: bump actions/cache from 4 to 5Johannes Schindelin-2/+2
Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v4...v5) updated-dependencies: - dependency-name: actions/cache dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major Originally-authored-by: dependabot[bot] <support@github.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 daysGit 2.54-rc2v2.54.0-rc2Junio C Hamano-1/+1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 daysHopefully the final tweak before -rc2Junio C Hamano-0/+6
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 daysMerge branch 'jc/ci-github-actions-use-checkout-v5'Junio C Hamano-1/+1
CI dependency updates. * jc/ci-github-actions-use-checkout-v5: CI: bump actions/checkout from 4 to 5 for rust-analysis job
10 daysMerge branch 'jk/doc-markup-sub-list-indentation'Junio C Hamano-0/+6
Doc mark-up update for entries in the glossary with bulleted lists. * jk/doc-markup-sub-list-indentation: gitglossary: fix indentation of sub-lists
10 daysMerge branch 'kh/doc-am-xref'Junio C Hamano-6/+5
Doc update. * kh/doc-am-xref: doc: am: correct to full --no-message-id doc: am: revert Message-ID trailer claim
10 daysgitglossary: fix indentation of sub-listsJeff King-0/+6
The glossary entry is a list of terms and their definitions, so multi-paragraph definitions need "+" continuation lines to indicate that they are part of a single entry. When an entry contains a sub-list (say, a bulleted list), the final "+" may become ambiguous: is it connecting the next paragraph to the final entry of the sub-list, or to the original list of definition paragraphs? Asciidoc generally connects it to the former, even when we mean the latter, and you end up with the next paragraph indented incorrectly, like this: glob ...defines glob... Two consecutive asterisks ("**") in patterns matched against full pathname may have special meaning: - ...some special meaning of **... - ...another special meaning of **... - Other consecutive asterisks are considered invalid. Glob magic is incompatible with literal magic. That final "Glob magic is incompatible" paragraph is in the wrong spot. It should be at the same level as "Two consecutive asterisks", as it is not part of the final "Other consecutive asterisks" bullet point. The same problem appears in several other spots in the glossary. Usually we'd fix this by using "--" markers, which put the sub-list into its own block. But there's a catch: in some of these spots we are already in an open block, and nesting open blocks is a problem. It seems to work for me using Asciidoc 10.2.1, but Asciidoctor 2.0.26 makes a mess of it (our intent to open a new block seems to close the old one). Fortunately there's a work-around: when using a "+" list-continuation, the number of empty lines above the continuation indicates which level of parent list to continue. So by adding an empty line after our unordered list (before the "+"), we should be able to continue the definition list item. But asciidoc being asciidoc, of course that is not the end of the story. That technique works fine for the "glob" and "attr" lists in this patch, but under the "refs" item it works for only 1 of the 2 lists! I can't figure out why, and this may be an asciidoctor bug. But we can work around it by using "--" open-block markers here, since we're not already in an open block. So using the extra blank line for the first two instances, and "--" markers for the second two, this patch produces identical output from "doc-diff HEAD^ HEAD" for both --asciidoctor and --asciidoc modes. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 daysCI: bump actions/checkout from 4 to 5 for rust-analysis jobJunio C Hamano-1/+1
GitHub Actions started complaining about use of Node.js 20 and I was wondering why only one job uses actions/checkout@v4, while everybody else already uses actions/checkout@v5. It turns out that it is caused by a semantic mismerge between e75cd059 (ci: check formatting of our Rust code, 2025-10-15) that added a new use of actions/checkout@v4 that happened very close to another change 63541ed9 (build(deps): bump actions/checkout from 4 to 5, 2025-10-16) that updated all uses of actions/checkout@v4 to use vactions/checkout@v5. Update the leftover and the last use of actions/checkout@v4 to use actions/checkout@v5 to help ourselves to move away from Node.js 20. Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 daysdoc: am: correct to full --no-message-idKristoffer Haugsbakk-1/+1
Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name> Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 daysdoc: am: revert Message-ID trailer claimKristoffer Haugsbakk-5/+4
I claimed in 3c18135b (doc: am: say that --message-id adds a trailer, 2026-02-09) that `git am --message-id` adds a Git trailer. But that isn’t the case; for the case of a commit message with a subject, body, and no trailer block: <subject> <paragrah> It just appends the line right after `paragraph`: <subject> <paragraph> Message-ID: <message-id_trailer.323@msgid.xyz> It does work for two other cases though, namely subject-only and with an existing trailer block. This is at best an inconsistency and arguably a bug, but we’re at the trailing end of the release cycle now. So reverting the doc is safer than making msg-id act as a trailer, for now. Revert this hunk from commit 3c18135b except the only useful change (“Also use inline-verbatim for `Message-ID`”). Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name> Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 daysMerge branch 'jc/no-writev-does-not-work'Junio C Hamano-140/+4
We used writev() in limited code paths and supplied emulation for platforms without working writev(), but the emulation was too faithful to the spec to make the result useless to send even 64kB; revert the topic and plan to restart the effort later. * jc/no-writev-does-not-work: Revert "compat/posix: introduce writev(3p) wrapper" Revert "wrapper: introduce writev(3p) wrappers" Revert "sideband: use writev(3p) to send pktlines" Revert "cmake: use writev(3p) wrapper as needed"
13 daysMerge branch 'ps/archive-prefix-doc'Junio C Hamano-0/+5
Doc update. * ps/archive-prefix-doc: archive: document --prefix handling of absolute and parent paths
13 daysMerge branch 'bc/ref-storage-default-doc-update'Junio C Hamano-3/+8
Doc update. * bc/ref-storage-default-doc-update: docs: correct information about reftable
13 daysrust: we are way beyond 2.53Junio C Hamano-1/+1
Earlier we timelined that we'd tune our build procedures to build with Rust by default in Git 2.53, but we are already in prerelease freeze for 2.54 now. Update the BreakingChanges document to delay it until Git 2.55 (slated for the end of June 2026). Noticed-by: brian m. carlson <sandals@crustytoothpaste.net> Helped-by: Derrick Stolee <stolee@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 dayswritev: retract the topic until we have a better emulationJunio C Hamano-140/+4
The emulation layer we added for writev(3p) tries to be too faithful to the spec that on systems with SSIZE_MAX set to lower than 64kB to fit a single sideband packet would fail just like the real system writev(), which makes our use of writev() for sideband messages unworkable. Let's revert them and reboot the effort after the release. The reverted commits are: $ git log -Swritev --oneline 8023abc632^..v2.52.0-rc1 89152af176 cmake: use writev(3p) wrapper as needed 26986f4cba sideband: use writev(3p) to send pktlines 1970fcef93 wrapper: introduce writev(3p) wrappers 3b9b2c2a29 compat/posix: introduce writev(3p) wrapper 8023abc632 is the merge of ps/upload-pack-buffer-more-writes topic to the mainline. Helped-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 daysRevert "compat/posix: introduce writev(3p) wrapper"Junio C Hamano-65/+0
This reverts commit 3b9b2c2a29a1d529ca9884fa0a6529f6e2496abe; let's not use writev() for now.
14 daysRevert "wrapper: introduce writev(3p) wrappers"Junio C Hamano-59/+0
This reverts commit 1970fcef93adcc5a35f6468d00a5a634d5af2b3c; let's not use writev() for now.
14 daysRevert "sideband: use writev(3p) to send pktlines"Junio C Hamano-11/+3
This reverts commit 26986f4cbaf38d84a82b0b35da211389ce49552c; let's not use writev() for now.
14 daysRevert "cmake: use writev(3p) wrapper as needed"Junio C Hamano-5/+1
This reverts commit 89152af176ea94ea8f3249115b6e00827fbbeb70; let's not use writev() for now.
14 daysA bit more for -rc2Junio C Hamano-0/+11
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 daysMerge branch 'ds/rev-list-maximal-only-optim'Junio C Hamano-0/+164
"git rev-list --maximal-only" has been optimized by borrowing the logic used by "git show-branch --independent", which computes the same kind of information much more efficiently. * ds/rev-list-maximal-only-optim: rev-list: use reduce_heads() for --maximal-only p6011: add perf test for rev-list --maximal-only t6600: test --maximal-only and --independent
14 daysMerge branch 'kh/doc-config-list'Junio C Hamano-7/+6
"git config list" is the official way to spell "git config -l" and "git config --list". Use it to update the documentation. * kh/doc-config-list: doc: gitcvs-migration: rephrase “man page” doc: replace git config --list/-l with `list`
14 daysMerge branch 'jk/c23-const-preserving-fixes-more'Junio C Hamano-45/+73
Further work to adjust the codebase for C23 that changes functions like strchr() that discarded constness when they return a pointer into a const string to preserve constness. * jk/c23-const-preserving-fixes-more: git-compat-util: fix CONST_OUTPARAM typo and indentation refs/files-backend: drop const to fix strchr() warning http: drop const to fix strstr() warning range-diff: drop const to fix strstr() warnings pkt-line: make packet_reader.line non-const skip_prefix(): check const match between in and out params pseudo-merge: fix disk reads from find_pseudo_merge() find_last_dir_sep(): convert inline function to macro run-command: explicitly cast away constness when assigning to void pager: explicitly cast away strchr() constness transport-helper: drop const to fix strchr() warnings http: add const to fix strchr() warnings convert: add const to fix strchr() warnings
2026-04-08archive: document --prefix handling of absolute and parent pathsPushkar Singh-0/+5
Clarify that --prefix is used as given and is not normalized, and may include leading slashes or parent directory components. Signed-off-by: Pushkar Singh <pushkarkumarsingh1970@gmail.com> Acked-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-04-08A bit more post -rc1Junio C Hamano-0/+6
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-04-08run_processes_parallel(): fix order of sigpipe handlingJeff King-3/+8
In commit ec0becacc9 (run-command: add stdin callback for parallelization, 2026-01-28), we taught run_processes_parallel() to ignore SIGPIPE, since we wouldn't want a write() to a broken pipe of one of the children to take down the whole process. But there's a subtle ordering issue. After we ignore SIGPIPE, we call pp_init(), which installs its own cleanup handler for multiple signals using sigchain_push_common(), which includes SIGPIPE. So if we receive SIGPIPE while writing to a child, we'll trigger that handler first, pop it off the stack, and then re-raise (which is then ignored because of the SIG_IGN we pushed first). But what does that handler do? It tries to clean up all of the child processes, under the assumption that when we re-raise the signal we'll be exiting the process! So a hook that exits without reading all of its input will cause us to get SIGPIPE, which will put us in a signal handler that then tries to kill() that same child. This seems to be mostly harmless on Linux. The process has already exited by this point, and though kill() does not complain (since the process has not been reaped with a wait() call), it does not affect the exit status of the process. However, this seems not to be true on all platforms. This case is triggered by t5401.13, "pre-receive hook that forgets to read its input". This test fails on NonStop since that hook was converted to the run_processes_parallel() API. We can fix it by reordering the code a bit. We should run pp_init() first, and then push our SIG_IGN onto the stack afterwards, so that it is truly ignored while feeding the sub-processes. Note that we also reorder the popping at the end of the function, too. This is not technically necessary, as we are doing two pops either way, but now the pops will correctly match their pushes. This also fixes a related case that we can't test yet. If we did have more than one process to run, then one child causing SIGPIPE would cause us to kill() all of the children (which might still actually be running). But the hook API is the only user of the new feed_pipe feature, and it does not yet support parallel hook execution. So for now we'll always execute the processes sequentially. Once parallel hook execution exists, we'll be able to add a test which covers this. Reported-by: Randall S. Becker <rsbecker@nexbridge.com> Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-04-08Merge branch 'jt/index-fd-wo-repo-regression-fix'Junio C Hamano-0/+0
During Git 2.52 timeframe, we broke streaming computation of object hash outside a repository, which has been corrected. * jt/index-fd-wo-repo-regression-fix:
2026-04-08Merge branch 'jt/index-fd-wo-repo-regression-fix-maint'Junio C Hamano-12/+53
During Git 2.52 timeframe, we broke streaming computation of object hash outside a repository, which has been corrected. * jt/index-fd-wo-repo-regression-fix-maint: object-file: avoid ODB transaction when not writing objects
2026-04-08Merge branch 'tc/replay-ref'Junio C Hamano-34/+157
The experimental `git replay` command learned the `--ref=<ref>` option to allow specifying which ref to update, overriding the default behavior. * tc/replay-ref: replay: allow to specify a ref with option --ref replay: use stuck form in documentation and help message builtin/replay: mark options as not negatable
2026-04-08Merge branch 'ng/add-files-to-cache-wo-rename'Junio C Hamano-0/+39
add_files_to_cache() used diff_files() to detect only the paths that are different between the index and the working tree and add them, which does not need rename detection, which interfered with unnecessary conflicts. * ng/add-files-to-cache-wo-rename: read-cache: disable renames in add_files_to_cache
2026-04-08Merge branch 'ps/reftable-portability'Junio C Hamano-70/+105
Update reftable library part with what is used in libgit2 to improve portability to different target codebases and platforms. * ps/reftable-portability: reftable/system: add abstraction to mmap files reftable/system: add abstraction to retrieve time in milliseconds reftable/fsck: use REFTABLE_UNUSED instead of UNUSED reftable/stack: provide fsync(3p) via system header reftable: introduce "reftable-system.h" header
2026-04-08Merge branch 'jd/cache-tree-trace-wo-the-repository'Junio C Hamano-2/+2
Code cleanup. * jd/cache-tree-trace-wo-the-repository: cache-tree: use index state repository in trace2 calls
2026-04-08Merge branch 'ps/odb-cleanup'Junio C Hamano-64/+72
Various code clean-up around odb subsystem. * ps/odb-cleanup: odb: drop unneeded headers and forward decls odb: rename `odb_has_object()` flags odb: use enum for `odb_write_object` flags odb: rename `odb_write_object()` flags treewide: use enum for `odb_for_each_object()` flags CodingGuidelines: document our style for flags
2026-04-08Merge branch 'ss/t7004-unhide-git-failures'Junio C Hamano-5/+10
Test clean-up. * ss/t7004-unhide-git-failures: t7004: replace wc -l with modern test helpers
2026-04-08t1800: add &&-chains to test helper functionsAdrian Ratiu-6/+6
Add the missing &&'s so we properly propagate failures between commands in the hook helper functions. Also add a missing mkdir -p arg (found by adding the &&). Reported-by: SZEDER Gábor <szeder.dev@gmail.com> Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-04-08Git 2.54-rc1v2.54.0-rc1Junio C Hamano-1/+1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-04-08docs: correct information about reftablebrian m. carlson-3/+8
Our description of the reftable format is that it is experimental and subject to change, but that is no longer true. Remove this statement so as not to mislead users. In addition, the documentation says that the files format is the default, but that is not true if breaking changes mode is on. Correct this information with a conditional. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-04-07Merge branch 'jt/index-fd-wo-repo-regression-fix-maint' into HEADJunio C Hamano-12/+53
* jt/index-fd-wo-repo-regression-fix-maint: object-file: avoid ODB transaction when not writing objects
2026-04-07object-file: avoid ODB transaction when not writing objectsJustin Tobler-8/+49
In ce1661f9da (odb: add transaction interface, 2025-09-16), existing ODB transaction logic is adapted to create a transaction interface at the ODB layer. The intent here is for the ODB transaction interface to eventually provide an object source agnostic means to manage transactions. An unintended consequence of this change though is that `object-file.c:index_fd()` may enter the ODB transaction path even when no object write is requested. In non-repository contexts, this can result in a NULL dereference and segfault. One such case occurs when running git-diff(1) outside of a repository with "core.bigFileThreshold" forcing the streaming path in `index_fd()`: $ echo foo >foo $ echo bar >bar $ git -c core.bigFileThreshold=1 diff -- foo bar In this scenario, the caller only needs to compute the object ID. Object hashing does not require an ODB, so starting a transaction is both unnecessary and invalid. Fix the bug by avoiding the use of ODB transactions in `index_fd()` when callers are only interested in computing the object hash. Reported-by: Luca Stefani <luca.stefani.ge1@gmail.com> Signed-off-by: Justin Tobler <jltobler@gmail.com> [jc: adjusted to fd13909e (Merge branch 'jt/odb-transaction', 2025-10-02)] Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-04-07A bit more before -rc1Junio C Hamano-0/+31
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-04-07Merge branch 'rs/history-short-help-fix'Junio C Hamano-4/+4
Glitches in "git history -h" have been corrected. * rs/history-short-help-fix: history: fix short help for argument of --update-refs
2026-04-07Merge branch 'th/backfill-auto-detect-sparseness-fix'Junio C Hamano-1/+16
"git backfill" is capable of auto-detecting a sparsely checked out working tree, which was broken. * th/backfill-auto-detect-sparseness-fix: backfill: auto-detect sparse-checkout from config