Commit Graph
82886 Commits
Author SHA1 Message Date
Junio C Hamano f6f0f26564 Merge branch 'tj/drop-no-parseopt' into jch
The 'NO_PARSEOPT' macro has been removed from a few commands that have
migrated to use the parse_options() API, so that they will be included
in the output of 'git --list-cmds=parseopt' for shell completion, and
'git fast-import' has been updated to handle shell completion requests
without blocking on standard input.

* tj/drop-no-parseopt:
  t0012: catch builtins that keep NO_PARSEOPT after conversion
  git.c: drop NO_PARSEOPT from builtins that use parse-options
  parse-options: answer --git-completion-helper before command runs
2026-11-05 20:44:55 -08:00
Junio C Hamano 7605e0f6cf Merge branch 'js/doc-test-fix-anti-pattern' into jch
The 'SubmittingPatches' document has been updated to discourage the
anti-pattern of adding a failing test in one commit and fixing it in
a subsequent one, advising contributors to combine the test and fix
into a single commit for easier review

* js/doc-test-fix-anti-pattern:
  SubmittingPatches: avoid add-failing-test-then-fix anti-pattern
2026-11-05 20:44:55 -08:00
Junio C Hamano b7858f2479 Merge branch 'ik/fsmonitor-untracked-cache-trivial-response' into jch
The index writer has been taught to check the untracked cache
against the filesystem when an FSMonitor trivial response is
received, preventing commands like 'git add' from saving a new token
while leaving stale untracked cache entries intact.

* ik/fsmonitor-untracked-cache-trivial-response:
  fsmonitor: check the untracked cache after a trivial response
2026-11-05 20:44:54 -08:00
Junio C Hamano c3621e220f Merge branch 'tj/annotate-blame-args' into jch
The git annotate command has been simplified to pass its arguments
down to git blame unchanged, as the redundant string array
manipulation was causing an issue with --git-completion-helper.

* tj/annotate-blame-args:
  annotate: pass the arguments to blame unchanged
2026-11-05 20:44:54 -08:00
Junio C Hamano 5e44753b5b Merge branch 'ta/ci-retire-cirrus-ci' into jch
The Cirrus CI configuration file has been deleted, as the service
was shut down and the configuration is no longer functional.

* ta/ci-retire-cirrus-ci:
  ci: delete defunct Cirrus CI configuration
2026-11-05 20:44:53 -08:00
Junio C Hamano 28bcc119cb Merge branch 'cu/doc-api-parse-options' into jch
The documentation for the parse-options API has been corrected to
restore a missing word.

* cu/doc-api-parse-options:
  api-parse-options.adoc: restore a dropped word
2026-11-05 20:44:53 -08:00
Junio C Hamano f584761467 Merge branch 'jt/object-file-error-handling' into jch
Error handling in the object file writing paths has been polished to
properly surface failures when 'index-pack' exits abnormally, and to
issue a warning rather than failing silently when the cleanup of
temporary lockfiles fails.

* jt/object-file-error-handling:
  object-file: return error on index-pack abnormal exit
  object-file: warn on failed unlink
2026-11-05 20:44:52 -08:00
Junio C Hamano 7ca145f643 Merge branch 'ds/path-walk-tagged-tree-revisit' into jch
The 'path-walk' traversal has been corrected to allow revisiting paths
from tagged trees by removing processed paths from the queue
suppression set, ensuring objects introduced by tagged trees at
previously visited paths are no longer skipped.

* ds/path-walk-tagged-tree-revisit:
  path-walk: allow revisiting paths from tagged trees
2026-11-05 20:44:51 -08:00
Junio C Hamano 7e421f5e9a Merge branch 'tb/repack-cruft-less-midx-corner-cases' into jch
Various corner cases in the cruft-less MIDX feature have been fixed
to ensure reachability closure when writing reachability bitmaps,
such as properly retaining cruft packs after incremental repacks or
when containing kept packs.

* tb/repack-cruft-less-midx-corner-cases:
  repack: include required packs in incremental MIDX writes
  repack: defer allocating the append plan's write step
  repack: track the preferred pack explicitly in MIDX write steps
  repack: follow kept packs when omitting cruft from the MIDX
  repack: use a sorted list for explicitly kept packs
  repack: retain cruft packs in MIDXs after incremental repacks
  pack-objects: ensure tree/tag closure with '--stdin-packs=follow'
  pack-objects: introduce `stdin_packs_context` struct
2026-11-05 20:44:51 -08:00
Junio C Hamano 5f5b4693ea Merge branch 'ta/cg-require-perl-5.26.0' into jch
CodingGuidelines has been updated to state that Perl 5.26.0 is
required these days, which is the case since late 2024.

* ta/cg-require-perl-5.26.0:
  CodingGuidelines: update the required Perl version
2026-11-05 20:44:50 -08:00
Junio C Hamano dce6c124d7 Merge branch 'jc/branch-doc-consistently-promote-switch' into jch
The documentation for 'git branch' has been updated to consistently
use 'git switch -c' instead of 'git checkout -b' in its examples,
aligning with the earlier promotion of 'git switch'.

* jc/branch-doc-consistently-promote-switch:
  branch doc: consistently promote 'switch'
2026-11-05 20:44:49 -08:00
Junio C Hamano d3201d6a86 Merge branch 'ps/commit-graph-write-refactor' into jch
Various refactoring patches around the commit-graph writing code have
been applied to modernize interfaces and consolidate parameters into a
single options structure, in preparation for pluggable commit-graph
backends.

* ps/commit-graph-write-refactor:
  commit-graph: modernize function names
  odb/source-files: verify commit-graphs as part of fsck
  builtin/commit-graph: set flags directly
  commit-graph: fix mixup of write/verify flags
  commit-graph: move remaining write parameters into options
  commit-graph: merge the two commit graph writers
  commit-graph: drop redundant flags in write context
  commit-graph: drop `NULL` checks for write options
  commit-graph: pass writer flags via options
  commit-graph: rename `struct commit_graph_opts`
2026-11-05 20:44:49 -08:00
Junio C Hamano 86acccb117 Merge branch 'll/doc-pushcert-if-asked' into jch
The remote helper documentation for the 'pushcert' option has been
updated to mention that it can also take 'if-asked', reflecting the
existing implementation in the code.

* ll/doc-pushcert-if-asked:
  doc: remote-helpers: option pushcert if-asked
2026-11-05 20:44:48 -08:00
Junio C Hamano 37e7af3b0c Merge branch 'cd/shift-root-in-graph-fix' into jch
The graph drawing logic has been updated to avoid indenting visual
roots when there are columns to their right, which prevents rendering
artifacts.

* cd/shift-root-in-graph-fix:
  graph: do not indent visual roots with columns to their right
2026-11-05 20:44:47 -08:00
Junio C Hamano 331681a1d3 Merge branch 'ep/pack-objects-streamed-large-blobs-fix' into jch
The code in 'git pack-objects' used to truncate object sizes on
platforms where 'long' is 32-bit but 'size_t' is larger (like 64-bit
Windows) when handling large objects exceeding 4GiB, which has been
corrected by using 'size_t' and 'off_t' appropriately.

* ep/pack-objects-streamed-large-blobs-fix:
  pack-objects: use size_t for streamed large blobs
2026-11-05 20:44:47 -08:00
Junio C Hamano b7b69e0782 Merge branch 'hn/ci-ubuntu-26.04-fixes' into jch
The GitHub Actions CI jobs have been updated to fix breakages caused
by the move to Ubuntu 26.04 runner images, including using 'apt-get'
instead of 'apt' for stable CLI output, elevating permissions when
replacing system binaries, and temporarily pinning the 'linux32' job
to Ubuntu 24.04 to avoid seccomp-related networking failures.

* hn/ci-ubuntu-26.04-fixes:
  ci: pin linux32 to ubuntu-24.04 to restore networking
  install-dependencies: work around a permission problem
  ci: use apt-get in the linux32 job
2026-11-05 20:44:46 -08:00
Junio C Hamano 8ebe5e6fd5 Merge branch 'jc/freeze-repo-config-values' into jch
The 'struct repo_config_values' structure has been documented to
explicitly discourage adding new members to it, pending a wider
cleanup of repository configuration and settings.

* jc/freeze-repo-config-values:
  repo_config_values: freeze the structure for now
2026-11-05 20:44:46 -08:00
Junio C Hamano 87c8acf5bf Merge branch 'kk/connectivity-check-ignore-replace' into jch
The connectivity check algorithm has been updated to ignore
replacement objects, aligning its behavior with operations like 'fsck'
and 'pack-objects' that also require the original underlying objects
to be present.

* kk/connectivity-check-ignore-replace:
  rev-list: ignore replacements in the connectivity check
2026-11-05 20:44:45 -08:00
Junio C Hamano 4bba615905 Merge branch 'jt/tmp-objdir-loose-idx-merge' into jch
The temporary object directory migration logic, used for batch
fsyncing, has been updated to correctly merge the loose object index
file ('loose-object-idx') when migrating to the primary object
directory, fixing a migration failure when a compatibility hash is
enabled.

* jt/tmp-objdir-loose-idx-merge:
  tmp-objdir: merge loose object index when migrating tmpdir
  loose: lift loose object index writing logic into helper
  loose: lift loose object index parsing logic into helper
  loose: use finite timeout when locking "loose-object-idx" file
2026-11-05 20:44:45 -08:00
Junio C Hamano 119adcb4d2 Merge branch 'cc/early-scan-options' into jch
The process of parsing command-line options in commands that perform
an early scan over their arguments has been unified using a new
early-scan sub-API. The 'git fast-import' command has been converted
to use this API, safely parsing and skipping known options taking
separate values to prevent logic bugs.

* cc/early-scan-options:
  fast-import: use early_scan_options() for --allow-unsafe-features
  parse-options: add early_scan_options()
  parse-options: extract lookup_long_opt() from parse_long_opt()
  parse-options: add parse_options_takes_argument()
2026-11-05 20:44:44 -08:00
Junio C Hamano e6ac664306 Merge branch 'jc/config-honor-file-permission' into jch
The configuration file writing machinery has been updated to inspect
the permission bits of the original configuration file and refrain
from overwriting a read-only file using its lockfile renaming
mechanism.

* jc/config-honor-file-permission:
  config: honor file permission bits
2026-11-05 20:44:44 -08:00
Junio C Hamano b7d3a45bbf ### match next 2026-11-05 20:44:43 -08:00
Junio C Hamano d8cb9befcd Merge branch 'tc/security-boundary-doc' into jch
A new document, gitsecurityboundary(7), has been added to clarify
the security boundaries Git guarantees and the responsibilities of
the user, aiming to provide a clear reference for what constitutes a
security vulnerability in Git.

* tc/security-boundary-doc:
  Documentation: clarify Git's security boundary
2026-11-05 20:44:43 -08:00
Junio C Hamano 9a87a435e4 Merge branch 'ps/ci-consolidate-test-variables' into jch
The test environment setup in the CI scripts has been consolidated and
deduplicated to remove redundancies and simplify test flag management.

* ps/ci-consolidate-test-variables:
  ci: don't override initial branch name in testbed job
  ci/lib: add another NO_RUST build using glibc
  t: honor default ref storage format
  ci/lib: merge switches for specific job names
  ci/lib: deduplicate test variables by pattern matching
  ci/lib: always set GIT_TEST_USE_SET_E on Linux jobs
  ci: consolidate setup of test environment
2026-11-05 20:44:42 -08:00
Junio C Hamano c4468f7ae8 Merge branch 'ep/pack-objects-streamed-large-blobs' into jch
The code in 'git pack-objects' used to truncate object sizes on
platforms where 'long' is 32-bit but 'size_t' is larger (like 64-bit
Windows) when handling large objects exceeding 4GiB, which has been
corrected by using 'size_t' and 'off_t' appropriately.

* ep/pack-objects-streamed-large-blobs:
  pack-objects: use size_t for streamed large blobs
2026-11-05 20:44:42 -08:00
Junio C Hamano 7dbdfa727a Merge branch 'hn/remote-simple-push-triangular' into jch
The 'simple' push resolution in 'git rev-parse @{push}' has been
updated to mirror the behavior of 'git push'. When the configured push
remote differs from the fetch remote, it now resolves to the branch of
the same name on the push remote instead of failing.

* hn/remote-simple-push-triangular:
  remote: resolve "simple" @{push} when pushing to another remote
  remote: move "simple" @{push} resolution into a helper
2026-11-05 20:44:42 -08:00
Junio C Hamano 8906a0e95c Merge branch 'jk/test-env-quoting-fix' into jch
Tests in 't5702' that grep the output of 'env' to check for the
'GIT_PROTOCOL' environment variable have been updated to explicitly
echo the variable instead, making them resilient to quoting changes
introduced in newer GNU coreutils.

* jk/test-env-quoting-fix:
  t5702: be more resilient to env quoting
2026-11-05 20:44:41 -08:00
Junio C Hamano 6172e0d1a3 Merge branch 'oa/range-diff-repo' into jch
The 'range-diff' command has been updated to use the repository
context pointer from 'diff_options' instead of relying on the global
'the_repository' and 'the_hash_algo' variables, as part of the
libification effort.

* oa/range-diff-repo:
  range-diff: use diffopt->repo instead of the_repository
2026-11-05 20:44:41 -08:00
Junio C Hamano 01f40b6eaa Merge branch 'tb/merge-ort-valueless-rename-config' into jch
The configuration parsing in the 'merge-ort' backend has been updated
to accept valueless settings for 'diff.renames', 'merge.renames', and
'merge.directoryRenames', which are now properly treated as true.

* tb/merge-ort-valueless-rename-config:
  merge-ort: accept rename settings given without a value
2026-11-05 20:44:41 -08:00
Junio C Hamano a09555cf68 Merge branch 'jc/mark-static' into jch
Various functions and data structures that no longer need to be
globally visible, such as those exposed for the now-removed
'recursive' merge strategy, have been made file-scope static or
removed entirely to shrink the public API surface.

* jc/mark-static:
  unpack-trees: hide verify_uptodate()
  read-cache: hide refresh_cache_entry()
  add -i: hide init/clear_add_i_state() functions
  ident: remove unused author_ident_sufficiently_given()
2026-11-05 20:44:40 -08:00
Junio C Hamano 1b7fc37e18 Merge branch 'ps/commit-graph-cleanups' into jch
Various cleanups in the 'commit-graph' builtin command, removing
global state and updating to not rely on the implicit
'the_repository' variable, in preparation for making the
commit-graph subsystem pluggable.

* ps/commit-graph-cleanups:
  builtin/commit-graph: de-globalize options handling
  builtin/commit-graph: de-globalize write options handling
  builtin/commit-graph: simplify how we wire up common options
  builtin/commit-graph: drop global "--object-dir=" switch
  builtin/commit-graph: get rid of `the_repository`
  builtin/commit-graph: drop declaration for `read_replace_refs`
  builtin/commit-graph: rename subcommand functions
2026-11-05 20:44:40 -08:00
Junio C Hamano b0f6e8dcc3 Merge branch 'hk/test-t1467-refs-rename' into jch
The 't1467-refs-rename.sh' test script has been updated to use the
'test_must_fail' helper instead of the '!' operator when checking for
expected command failures, ensuring that crashes are not silently
ignored.

* hk/test-t1467-refs-rename:
  t/t1467: use test_must_fail in place of NOT operator
2026-11-05 20:44:39 -08:00
Junio C Hamano ab4908f632 Merge branch 'je/doc-new-git-tutorial' into jch
The beginner's tutorial in 'gittutorial.adoc' has been rewritten to
focus on a minimal set of commands needed to create a repository,
make commits, and push to a remote host, optimizing for a quick
one-hour learning experience.

* je/doc-new-git-tutorial:
  doc: add new Git tutorial for beginners
  doc: remove gittutorial
2026-11-05 20:44:39 -08:00
Junio C Hamano a5da619d4a Merge branch 'ps/odb-reload-alternates' into jch
The object database files backend has been updated to reload
alternates when an object lookup fails on retry. This restores a lost
capability to find objects moved to a newly added alternate during a
concurrent repository rewrite, with caching and deduplication
optimizations to avoid performance regressions.

* ps/odb-reload-alternates:
  odb/source-files: only reload alternates when the file has changed
  odb/source-files: avoid stat'ing already-known alternates
  odb/source-files: simplify directory duplication detection
  odb/source-files: reload alternates on retry
  odb/source-files: always load alternates via primary object directory
  odb/source-files: rename alternates-related functions
2026-11-05 20:44:39 -08:00
Junio C Hamano 5f6020db99 Merge branch 'sm/prune-packed-libification' into jch
The prune_packed_objects() API and its callbacks have been updated to
take a 'struct repository' pointer instead of relying on the global
'the_repository' variable, moving the subsystem closer to being fully
libified.

* sm/prune-packed-libification:
  prune-packed: remove USE_THE_REPOSITORY_VARIABLE
2026-11-05 20:44:38 -08:00
Junio C Hamano 60c5f38a93 Merge branch 'mh/init-show-abspath' into jch
The output from 'git init' has been corrected to display the
absolute path of the created repository, addressing a recent
regression.

* mh/init-show-abspath:
  init: show absolute path of (re)initialized repository
2026-11-05 20:44:38 -08:00
Junio C Hamano f0a480ea07 Merge branch 'tk/t5402-test-path-helper' into jch
Use of "test -e" and "! test -e" in t5402 have been updated
to use test_path_exists and test_path_missing.

* tk/t5402-test-path-helper:
  t5402: use test_path_* helpers instead of test -e and test -f
2026-11-05 20:44:38 -08:00
Junio C Hamano aea8167696 Merge branch 'cr/doc-gpg-ssh-key-lifetime' into jch
The documentation for SSH signature verification has been updated to
clarify that key lifetime checks depend on spoofable dates.

* cr/doc-gpg-ssh-key-lifetime:
  doc: gpg: say which date SSH key lifetimes are checked against
2026-11-05 20:44:37 -08:00
Junio C Hamano f7e66226ac Merge branch 'pp/midx-write-skip-empty' into jch
The 'git multi-pack-index write' command has been updated to silently
return success when there are no object entries to index. This avoids
writing empty 'multi-pack-index' layers, which previously caused
subsequent incremental midx writes using the '--bitmap' option to fail
when attempting to load the missing reverse index.

* pp/midx-write-skip-empty:
  midx-write: skip writes with no object entries
2026-11-05 20:44:37 -08:00
Junio C Hamano b0f65754d8 Merge branch 'fd/check-ref-format-onelevel-tests' into jch
Tests for the option precedence of '--allow-onelevel' and its
negated form have been added to 'git check-ref-format',
establishing the current behavior before a planned migration to the
'parse_options()' API.

* fd/check-ref-format-onelevel-tests:
  t1402: test --no-allow-onelevel option precedence
2026-11-05 20:44:36 -08:00
Junio C Hamano b5d7c08894 Merge branch 'tk/t0410-test-path-exists' into jch
A test script has been updated to use the test_path_exists helper
instead of a raw test -e command, improving diagnostic output on
failure.

* tk/t0410-test-path-exists:
  t0410: use test_path_exists instead of test -e
2026-11-05 20:44:36 -08:00
Junio C Hamano 5df235e17a Merge branch 'ot/t5300-test-path-is-file' into jch
Test updates (in 't5300') to use the 'test_path_is_file' helper for
checking file existence.

* ot/t5300-test-path-is-file:
  t5300: modernize test path checks in t5300
2026-11-05 20:44:36 -08:00
Junio C Hamano 77c85556b9 Merge branch 'sj/oss-fuzz-commit-graph-gitdir' into jch
The commit-graph fuzzer has been updated to supply a placeholder
'.gitdir' to the repository. This prevents early failures when
prepare_repo_settings() is called, allowing the fuzzer to proceed and
test optional chunks such as generation data and Bloom filters.

* sj/oss-fuzz-commit-graph-gitdir:
  oss-fuzz: set a gitdir in the commit-graph fuzzer
2026-11-05 20:44:36 -08:00
Junio C Hamano f0d591d888 Merge branch 'sp/t0001-avoid-pipe' into jch
The test script 't0001-init' has been updated to avoid piping the
output of 'git version' directly into 'sed', ensuring command failures
are properly caught.

* sp/t0001-avoid-pipe:
  t0001: avoid pipes in test scripts
2026-11-05 20:44:35 -08:00
Junio C Hamano f2d8f4a906 Merge branch 'ps/odb-object-storage-extension' into jch
The object storage format has been made configurable via the
'extensions.objectStorage' configuration variable, allowing users
to specify the storage backend and an optional payload, mirroring
the design of 'extensions.refStorage'.

* ps/odb-object-storage-extension:
  builtin/submodule: propagate "--object-storage-format="
  builtin/clone: introduce "--object-storage-format="
  builtin/init: introduce handling of object storage format
  builtin: expose the object storage format
  setup: allow overriding object storage format via environment
  setup: introduce object storage extension
  loose: drop unused `repo_write_loose_object_map()`
2026-11-05 20:44:35 -08:00
Junio C Hamano 8b2e2fb162 Merge branch 'iw/connected-deepen-fetch-no-alternate-refs' into jch
The post-fetch connectivity check in 'git fetch' has been corrected
to avoid passing alternate refs as positive revisions during a
deepening fetch, plugging a severe performance bug.

* iw/connected-deepen-fetch-no-alternate-refs:
  odb: ignore refs of shallow and grafted alternates
  connected: negate alternate refs in deepening fetches too
2026-11-05 20:44:34 -08:00
Junio C Hamano 58aa0494cb Merge branch 'ps/gitlab-ci-whitespace-job-shallow-clone-fix' into jch
The GitLab CI configuration has been updated to disable shallow clones
for the 'check-whitespace' and 'check-style' jobs by setting
'GIT_DEPTH' to 0, preventing them from failing on large merge requests
that exceed the default shallow clone depth.

* ps/gitlab-ci-whitespace-job-shallow-clone-fix:
  gitlab-ci: fix "check" jobs with large merge requests
2026-11-05 20:44:34 -08:00
Junio C Hamano b34580a86b Merge branch 'kn/fetch-tag-backfill-batch-fix' into jch
The tag backfilling negotiation in 'git fetch' has been updated to
explicitly include the in-flight fetched tips as 'haves', preventing
the server from resending objects when batched reference updates are
used.

* kn/fetch-tag-backfill-batch-fix:
  fetch: advertise fetched refs when backfilling tags
  transport: add `transport_options_release()`
  t5510: cover upstream info update on fetch failure
2026-11-05 20:44:33 -08:00
Junio C Hamano 078ab7efbd Merge branch 'ps/repo-ref-storage-format-fix' into jch
The output of 'git repo info' has been updated to use
'references.storageFormat' instead of 'references.format' for
consistency with recent ref-storage-format terminology updates.

* ps/repo-ref-storage-format-fix:
  builtin/repo: rename "references.format" to "references.storageFormat"
2026-11-05 20:44:33 -08:00
Junio C Hamano f2d27a9b3b Merge branch 'oa/bundle-uri-drop-the-repository' into jch
The 'bundle-uri' subsystem has been updated to stop using the global
'the_repository' variable by passing down the repository context to
helper functions, allowing the removal of the
'USE_THE_REPOSITORY_VARIABLE' macro.

* oa/bundle-uri-drop-the-repository:
  bundle-uri: stop using the_repository
2026-11-05 20:44:32 -08:00