Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
232 commits
Select commit Hold shift + click to select a range
c035be5
doc: git: list gitdatamodel(7) as a concept guide
LemmingAvalanche Aug 23, 2026
3e13dd4
doc: git: link to the gitdatamodel(7) tutorial
LemmingAvalanche Aug 23, 2026
b27722d
doc: glossary: link four of the terms to gitdatamodel(7)
LemmingAvalanche Aug 23, 2026
7b2ce85
doc: datamodel: link to the glossary
LemmingAvalanche Aug 23, 2026
ef8fb7f
builtin/clone: defer setup of the object database
pks-t Aug 31, 2026
1cd2aaa
builtin/clone: move around `setup_reference()`
pks-t Aug 31, 2026
2ab05bc
builtin/clone: refactor handling of "--reference{,-if-able}"
pks-t Aug 31, 2026
ec2df78
builtin/clone: move setup of alternates for shared local clones
pks-t Aug 31, 2026
2e26876
builtin/clone: move setup of alternates for non-shared local clones
pks-t Aug 31, 2026
d540449
odb/source: support writing alternates when creating the database
pks-t Aug 31, 2026
1b65c85
builtin/clone: write alternates via `odb_create_on_disk()`
pks-t Aug 31, 2026
9e665c1
odb/source: remove the ability to write alternates
pks-t Aug 31, 2026
1891495
t5300: use test_config
peff Dec 19, 2019
cfa321b
t5300: refactor check_deltas
peff Dec 2, 2024
23b470c
t5300: pass --no-reuse-delta for check_deltas
peff Dec 2, 2024
b5856ff
pack-objects: make try_delta() result an enum
peff Dec 2, 2019
ce4967f
upload-archive: restrict remote objects with reachability check
peff Jun 5, 2013
3cf7c2f
pack-objects: annotate fast/slow returns from try_delta()
peff Dec 2, 2019
58464fb
pack-bitmap: drop type parameter from find_tip_objects()
peff May 14, 2021
d1109ec
pull out dispatch function
peff May 14, 2021
2ec2b27
complain about argv[1] because we have KEEP_ARGV0
peff Dec 6, 2025
5ce7e4a
actual fix
peff May 14, 2021
8a1c40e
ci: fix missing Ruby dependency in "documentation" job
pks-t Sep 1, 2026
0a58416
test-lib: drop test_external_has_tap assignment
peff Jun 4, 2026
9b38ba6
ALLOC_GROW: always grow on NULL
peff Mar 25, 2025
8caad7c
list-objects: optimize "revs->blob_objects = 0" case
peff Jun 5, 2013
807e12e
drop redundant
peff May 14, 2021
2ad844f
ci: drop ALREADY_HAVE_ASCIIDOCTOR variable
peff Sep 2, 2026
9e6cb23
hacky unit-tests in test suite
peff Dec 6, 2025
70814a3
strbuf: add extra explicit NUL termination
peff Mar 30, 2025
95b9a79
t5000: drop tag to supposedly unreachable object
peff Oct 15, 2013
36ab36d
diff: ignore mode in binary size optimization
peff Jun 21, 2016
ec42fed
wip -- better protection against corruption
peff Jan 31, 2014
2527373
more tests
peff May 14, 2021
f8b1b36
checkout: pass resolved default HEAD to create_branch
peff Mar 22, 2016
ea529fc
ci: use system asciidoctor
peff Sep 2, 2026
3becdeb
json checks
peff Sep 11, 2023
b7b8481
drop extra unit-test invocations
peff Dec 6, 2025
24816f7
parse: prefer bool to int for boolean returns
peff Nov 29, 2025
fac14d9
parse: add functions for parsing from non-string buffers
peff Nov 29, 2025
546279b
pretty: allow formatting names as initials
peff Sep 29, 2016
1cdfe38
strbuf: more explicit NUL termination
peff Aug 2, 2025
7d74b5c
t9350-fast-export: Add failing test for symlink-to-directory
andersk Aug 19, 2015
a7f05f6
cache-tree: use parse_int_from_buf()
peff Nov 29, 2025
ae3b204
graph: helper functions for printing commit header
peff Sep 29, 2016
31df923
pull: drop sketchy mkpath()
peff Apr 3, 2024
b6dff52
khash null keys hackery
peff Aug 27, 2025
da69d2f
show: skip diff when possible
peff Jun 9, 2022
6f2811e
fix?
peff Aug 21, 2015
ad2fa63
fetch: support fetch.defaultRemote
peff Apr 2, 2026
57c61b8
rev-parse: clean up funky git-dir cwd handling
peff Sep 18, 2023
fe1aad5
index_mem(): check return value of fsck_finish()
peff Jun 30, 2023
4248bd8
commit: give a hint when a commit message has been abandoned
peff Jul 23, 2012
30f8f98
fsck: use parse_unsigned_from_buf() for parsing timestamp
peff Nov 29, 2025
064aa76
log: add --commit-header option
peff Sep 29, 2016
7e8ff3a
enable --long for private-branch pushes
peff Jul 2, 2026
01b6f13
handle %(trailers:mailmap)
peff Oct 19, 2021
8e7ef92
use nodup + mkpathdup
peff Apr 3, 2024
35ec683
test-lib: support generic environment overrides
peff Jun 2, 2026
c026acc
rename sha1_object to process_object
peff Dec 18, 2017
5775b08
t0600: fix misplaced top-level ref
peff Apr 29, 2024
b016eb3
perf-lib: preserve GIT_PERF_* across test re-exec
peff Jun 2, 2026
50af012
index-pack: add --unpack option
peff Dec 19, 2017
30d36f9
t5619: use fully qualified refname for branch
peff Apr 29, 2024
d722ff4
perf-lib: export TEST_OUTPUT_DIRECTORY
peff Aug 13, 2026
35663e2
implement unpack-limit
peff Dec 19, 2017
361dafa
t0610: pass fully qualified branch name to update-ref
peff Apr 29, 2024
87a467b
save/restore all of GIT_TEST_ too
peff Aug 13, 2026
6810d7c
receive-pack: never call unpack-objects
peff Dec 19, 2017
a425b9a
refs: disallow dash in root ref syntax
peff Apr 29, 2024
34cf251
t1401: avoid pointless use of root ref
peff Jun 16, 2025
6f5566a
test-lib: just use set for overrides
peff Aug 13, 2026
a84c741
fetch-pack: never call unpack-objects
peff Dec 19, 2017
8824b4e
index-pack: set up quarantine bits
Jun 17, 2014
0f15faf
refs: use is_root_ref_syntax() in refname_is_safe()
peff Apr 29, 2024
11ac064
t9300: follow root ref syntax for TEMP_TAG
peff Jun 16, 2025
7a3508d
limit ourselves to just test vars
peff Aug 14, 2026
e455ff8
sha1_file: drop read_pack_header()
peff Dec 19, 2017
2afa84d
index-pack: Implement `--warn-object-size`
Jun 18, 2014
bba8378
check_refname_format(): add FULLY_QUALIFIED flag
peff Apr 29, 2024
564572f
t1400: swap out PSEUDOREF for ROOT_HEAD
peff Jun 16, 2025
17021e6
just use set for perf-lib
peff Aug 13, 2026
9521903
index-pack: allow verifying over --stdin
peff Dec 19, 2017
8a52df1
move sizep computation
peff Oct 10, 2020
3a701a4
receive-pack: pass receive.warnobjectsize to index-pack
peff Jun 26, 2014
d0d0d60
refs: check refnames as fully qualified when writing
peff Apr 29, 2024
fe5b0b4
t: adjust root refs that violate syntax rules
peff Jun 16, 2025
8ca9e0c
we should not need our magic export anymore
peff Aug 13, 2026
c3f2e8e
unpack-objects: drop -r option
peff Dec 19, 2017
501d83f
allow content-limit
peff Oct 13, 2020
a3a4201
index-pack: summarily reject non-blobs over warn-object-size
peff Sep 29, 2016
5f93a93
pager_in_use: make sure output is still going to pager
peff Aug 10, 2015
0789d59
receive-pack: disable hook advice in "quiet" mode
peff Jan 3, 2018
349b499
refs: check refnames as fully qualified when resolving
peff Apr 29, 2024
2102476
refs: take transaction flags for symref updates
peff Jun 16, 2025
0e523f7
refs: check syntax of symbolic ref names
peff May 2, 2024
46ab7c9
t3200: fully qualify symref destination
peff Jun 16, 2025
58bc858
t0614: use test-tool to create garbage symref
peff Jan 10, 2026
2054c73
symbolic-ref: tighten syntax check of target refname
peff Jun 16, 2025
b223d1c
pager: save the original stderr when redirecting to pager
peff Aug 9, 2024
022a039
t1400: fix broken target of symref update
peff Jul 9, 2025
e171979
progress: use pager's original_stderr if available
peff Mar 23, 2011
7e9a04a
refs: check syntax of symref target
peff May 2, 2024
93fc87e
show: turn on rename detection progress reporting
peff Mar 23, 2011
f177ac6
refs: enforce name conventions for root refs
peff Jun 1, 2024
23a1924
update-ref: verify stdin refnames as fully qualified
peff Jul 9, 2025
c905af1
diff: turn on rename detection progress reporting
peff Mar 24, 2011
5b68a2f
revision: hang on to "freed" argv elements
peff Sep 1, 2026
9c4a2a0
shortlog: drop redundant shortlog struct initialization
peff Jan 29, 2026
2fb89ee
shortlog: drop redundant assignment of strdup_strings
peff Jan 29, 2026
aea9d9d
shortlog: avoid tricky strdup-before-clear string_list construct
peff Jan 29, 2026
f8a1425
shortlog: use initializer function for string_lists
peff Jan 29, 2026
d750867
convert shortlog to hash
peff Jan 29, 2026
31e9cb9
convert to union
peff Jan 29, 2026
723c120
drop a funky strdup_strings-then-clear case
peff May 21, 2026
8f690a7
notes: put string_list directly in struct
peff Mar 11, 2026
c994644
a few more initializer uses
peff Mar 11, 2026
c646ced
another initializer use
peff May 21, 2026
252c367
fill_textconv: always check DIFF_FILE_VALID()
peff Feb 27, 2018
30d2715
mailmap: drop manual setting of strdup_strings
peff May 21, 2026
814cbed
userdiff: give textconv its own struct
peff Feb 27, 2018
ad1ebd9
mailmap: prefer initializer to manual strdup_string set
peff May 21, 2026
1e1632b
diff: respect diff_options inside get_textconv()
peff Feb 27, 2018
abba287
mailmap: another case of pointless strdup_strings setting
peff May 21, 2026
07e3150
diff: convert filespec is_binary flag to enum
peff Feb 27, 2018
dcce1b8
trace: implement %p placeholder for filenames
peff Jun 16, 2015
747a876
mailmap: another case of raw initialization
peff May 21, 2026
37542c0
diff: add utf-{16,32} binary detection
peff Feb 28, 2018
6772705
trace: add pid to each output line
peff Jun 16, 2015
148f845
stuff mailmap into struct
peff May 21, 2026
c84bb7a
repository: make repo_clear() idempotent
peff Sep 2, 2026
79a09a2
diff: add autoencode feature
peff Feb 28, 2018
996f39d
trace: add GIT_TRACE_STDIN
peff Jun 16, 2015
4006f57
revision: simplify mark_argv_for_free() callers
peff Sep 1, 2026
cbda348
shortlog: initialize mailmap
peff May 24, 2026
f9f5031
submodule--helper: free URL when repository setup fails
peff Sep 2, 2026
8666057
optionally block out-of-repo symlinks
peff Nov 10, 2016
88b34d9
diff: enable autoencode by default
peff Feb 28, 2018
20c8dd4
curl: handle non-http protocols in trace
peff Nov 30, 2017
ae11b90
run-command config experiment
peff Aug 11, 2020
b5c9d6e
prepare_revision_walk: complain of unused objects
peff May 26, 2017
8ec5957
teach update-ref a "--rename" option
peff May 23, 2014
5192d30
fast-export: leave warnings to revision code
peff Jul 10, 2017
a02c0fb
t/perf: add pack checksum performance tests
peff Sep 3, 2026
de74a97
pack-write: use unsafe hash for header fixup
peff Sep 2, 2026
b9d1b18
pack-objects: consistently use hashfile algorithm
peff Aug 20, 2026
529669c
pack-write: drop old checksum from header fixup
peff Sep 3, 2026
a316c5b
index-pack, fast-import: skip redundant pack hashing
peff Sep 3, 2026
11d559a
Merge branch 'kn/reftable-optimize-reloading' into jch
gitster Sep 4, 2026
83e83e2
Merge branch 'yn/worktree-ambiguous-remote-advice' into jch
gitster Sep 4, 2026
d632978
Merge branch 'jc/you-still-use-that' into jch
gitster Sep 4, 2026
0e88a96
Merge branch 'gr/add-e-use-apply-api' into jch
gitster Sep 4, 2026
01fd960
Merge branch 'll/zsh-complete-git-potty-options' into jch
gitster Sep 4, 2026
770c47b
Merge branch 'yn/worktree-repair-relative' into jch
gitster Sep 4, 2026
a8abfe3
Merge branch 'ns/ref-symref-additional-tests' into jch
gitster Sep 4, 2026
0df1f05
Merge branch 'hn/ci-cancel-stale-pr-runs' into jch
gitster Sep 4, 2026
fa9ece5
Merge branch 'rs/worktree-add-basename-fixes' into jch
gitster Sep 4, 2026
1018a18
Merge branch 'hk/typofix' into jch
gitster Sep 4, 2026
f5668cf
Merge branch 'tc/replay-linearize' into jch
gitster Sep 4, 2026
46d85c3
Merge branch 'jk/rev-info-argv-to-free' into jch
gitster Sep 4, 2026
6a18265
Merge branch 'en/midx-missing-pack-fallback' into jch
gitster Sep 4, 2026
d433fff
### match next
gitster Sep 4, 2026
ba05fbd
Merge branch 'ps/ci-depends-on-ruby' into jch
gitster Sep 4, 2026
7fbebbf
Merge branch 'mm/lib-httpd-cgi-safe' into jch
gitster Sep 4, 2026
90eba57
Merge branch 'kh/doc-datamodel' into jch
gitster Sep 4, 2026
7e4f835
Merge branch 'hn/checkout-m-autostash-refine' into jch
gitster Sep 4, 2026
b8e3b28
Merge branch 'en/no-amend-during-conflicts' into jch
gitster Sep 4, 2026
58554f1
Merge branch 'wf/imap-send-draft' into jch
gitster Sep 4, 2026
067849a
Merge branch 'jk/ci-use-system-asciidoctor' into jch
gitster Sep 4, 2026
6977677
Merge branch 'jk/submodule-error-leak' into jch
gitster Sep 4, 2026
8f988f4
Merge branch 'jc/pathspec-match-const' into jch
gitster Sep 4, 2026
7e7fcd2
Merge branch 'yt/pathspec-negative-prefix' into jch
gitster Sep 4, 2026
e4755e8
Merge branch 'ps/tune-rerere-gc' into jch
gitster Sep 4, 2026
ddcb773
Merge branch 'jc/history-missing-tree-errorfix' into jch
gitster Sep 4, 2026
ebf5d85
Merge branch 'dk/use-nsec-runtime' into jch
gitster Sep 4, 2026
03c4441
Merge branch 'ij/subtree-reject-v2-config' into jch
gitster Sep 4, 2026
d095358
Merge branch 'cl/regexec-macos-leak' into jch
gitster Sep 4, 2026
bd96d34
Merge branch 'js/mingw-build-updates' into jch
gitster Sep 4, 2026
ff9cb85
Merge branch 'ap/http-preserve-wwwauth-redirect' into jch
gitster Sep 4, 2026
335a7e1
Merge branch 'as/utimensat-utimes' into jch
gitster Sep 4, 2026
f33f43d
Merge branch 'vv/branch-recurse-no-start-ref' into jch
gitster Sep 4, 2026
16ffd90
Merge branch 'dw/config-read-both-global' into jch
gitster Sep 4, 2026
65433ea
Merge branch 'ps/odb-alternates-at-creation' into jch
gitster Sep 4, 2026
752a530
Merge branch 'ps/odb-pluggable-fsck' into jch
gitster Sep 4, 2026
ee0f2f6
Merge branch 'ps/odb-stop-registering-in-memory-sources' into jch
gitster Sep 4, 2026
8ff7c60
pack-objects: add window slot limit
peff Dec 2, 2019
59e445a
pack-objects: add window byte limit
peff Dec 2, 2019
f61820e
pack-objects: trace adjustable window stats for each object
peff Dec 2, 2019
7a5d074
Merge branch 'jk/adjustable-windows' into HEAD
peff Sep 5, 2026
e197e0b
Merge branch 'jk/archive-reachability' into HEAD
peff Sep 5, 2026
0ef74b5
Merge branch 'jk/binary-diff-size-mode' into HEAD
peff Sep 5, 2026
27fbf45
Merge branch 'jk/bitmap-corruption' into HEAD
peff Sep 5, 2026
7c89a0d
Merge branch 'jk/bitmap-filters' into HEAD
peff Sep 5, 2026
d66a74e
Merge branch 'jk/checkout-reflog-name' into HEAD
peff Sep 5, 2026
6b3e8f9
Merge branch 'jk/ci-asciidoc-bump' into HEAD
peff Sep 5, 2026
d647eca
Merge branch 'jk/ci-config' into HEAD
peff Sep 5, 2026
ef54f22
Merge branch 'jk/clar-fixes' into HEAD
peff Sep 5, 2026
e46c9e7
Merge branch 'jk/coverity-hacks' into HEAD
peff Sep 5, 2026
1b2310e
Merge branch 'jk/csum-hash-cleanup' into HEAD
peff Sep 5, 2026
8d6e150
Merge branch 'jk/diff-skip-no-output-diff' into HEAD
peff Sep 5, 2026
3358c96
Merge branch 'jk/export-symlink' into HEAD
peff Sep 5, 2026
9b88b37
Merge branch 'jk/fetchdefault' into HEAD
peff Sep 5, 2026
c20669d
Merge branch 'jk/git-path-unsafe' into HEAD
peff Sep 5, 2026
da798f7
Merge branch 'jk/hash-object-check-fsck' into HEAD
peff Sep 5, 2026
ff6a786
Merge branch 'jk/ident' into HEAD
peff Sep 5, 2026
d8cf3d3
Merge branch 'jk/index-pack-unpack' into HEAD
peff Sep 5, 2026
1556297
Merge branch 'jk/int-parsing' into HEAD
peff Sep 5, 2026
5b2e182
Merge branch 'jk/log-time' into HEAD
peff Sep 5, 2026
bea143a
Merge branch 'jk/long-hack' into HEAD
peff Sep 5, 2026
5518d60
Merge branch 'jk/mailmap-trailers' into HEAD
peff Sep 5, 2026
04219c6
Merge branch 'jk/mksnpath' into HEAD
peff Sep 5, 2026
3e8840d
Merge branch 'jk/object-info-round-trip' into HEAD
peff Sep 5, 2026
d7f1e18
Merge branch 'jk/object-size-hooks' into HEAD
peff Sep 5, 2026
15a8032
merge-fixup jk/object-size-hooks
peff Aug 25, 2026
3c3d71c
Merge branch 'jk/pager-in-use-careful' into HEAD
peff Sep 5, 2026
0634e17
Merge branch 'jk/quiet-advice' into HEAD
peff Sep 5, 2026
8cd4335
Merge branch 'jk/ref-syntax-tighten' into HEAD
peff Sep 5, 2026
1032439
Merge branch 'jk/ref-syntax-tighten-more' into HEAD
peff Sep 5, 2026
9acdb4d
Merge branch 'jk/ref-syntax-tighten-symref' into HEAD
peff Sep 5, 2026
4e0427c
Merge branch 'jk/rename-progress' into HEAD
peff Sep 5, 2026
7f67046
Merge branch 'jk/stash-show-prefix' into HEAD
peff Sep 5, 2026
5ab5b01
Merge branch 'jk/string-list-cleanups' into HEAD
peff Sep 5, 2026
22ac833
merge-fixup jk/string-list-cleanups
peff May 24, 2026
301ff4d
Merge branch 'jk/submodule-remote-leak' into HEAD
peff Sep 5, 2026
32dcad3
Merge branch 'jk/symlink-out-of-tree' into HEAD
peff Sep 5, 2026
4a1846f
Merge branch 'jk/textconv-utf16' into HEAD
peff Sep 5, 2026
88fc586
Merge branch 'jk/trace-curl-redact' into HEAD
peff Sep 5, 2026
fe86f0d
Merge branch 'jk/trace-stdin' into HEAD
peff Sep 5, 2026
4e0b633
Merge branch 'jk/update-ref-rename' into HEAD
peff Sep 5, 2026
28bffd2
Merge branch 'jk/warn-ignored-object' into HEAD
peff Sep 5, 2026
d0aac12
Initial plan
Copilot Sep 5, 2026
719882e
Remove expired Debian 11 CI job
Copilot Sep 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 20 additions & 13 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,33 @@ on: [push, pull_request]
env:
DEVELOPER: 1

# If more than one workflow run is triggered for the very same commit hash
# (which happens when multiple branches pointing to the same commit), only
# the first one is allowed to run, the second will be kept in the "queued"
# state. This allows a successful completion of the first run to be reused
# in the second run via the `skip-if-redundant` logic in the `config` job.
# For pull requests, only the latest workflow run is allowed to proceed.
# Older runs are canceled when a new revision is pushed.
#
# The only caveat is that if a workflow run is triggered for the same commit
# hash that another run is already being held, that latter run will be
# canceled. For more details about the `concurrency` attribute, see:
# For pushes, if more than one workflow run is triggered for the very same
# commit hash (which happens when multiple branches point to the same commit),
# only the first one is allowed to run. This allows a successful completion of
# the first run to be reused in the second run via the `skip-if-redundant`
# logic in the `config` job.
#
# For more details about the `concurrency` attribute, see:
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#concurrency
concurrency:
group: ${{ github.sha }}
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
ci-config:
name: config
if: vars.CI_BRANCHES == '' || contains(vars.CI_BRANCHES, github.ref_name)
if: |
(fromJSON(vars.CI_CONFIG).allow == '' ||
contains(fromJSON(vars.CI_CONFIG).allow, github.ref_name)) &&
(fromJSON(vars.CI_CONFIG).reject == '' ||
!contains(fromJSON(vars.CI_CONFIG).reject, github.ref_name)) &&
(fromJSON(vars.CI_CONFIG).allow-prefix == '' ||
startsWith(github.ref_name, fromJSON(vars.CI_CONFIG).allow-prefix)) &&
(fromJSON(vars.CI_CONFIG).reject-prefix == '' ||
!startsWith(github.ref_name, fromJSON(vars.CI_CONFIG).reject-prefix))
runs-on: ubuntu-latest
outputs:
enabled: ${{ steps.check-ref.outputs.enabled }}${{ steps.skip-if-redundant.outputs.enabled }}
Expand Down Expand Up @@ -411,9 +421,6 @@ jobs:
# A RHEL 8 compatible distro. Supported until 2029-05-31.
- jobname: almalinux-8
image: almalinux:8
# Supported until 2026-08-31.
- jobname: debian-11
image: debian:11
env:
jobname: ${{matrix.vector.jobname}}
CC: ${{matrix.vector.cc}}
Expand Down
5 changes: 5 additions & 0 deletions Documentation/RelNotes/2.56.0.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -480,6 +480,10 @@ Performance, Internal Implementation, Development Support etc.
analysis of different compression settings by comparing the
resulting pack sizes.

* The global variable 'fetch_if_missing' has been moved to a member in
'struct repository', continuing the libification process and
allowing per-repository control (such as for submodules).


Fixes since v2.55
-----------------
Expand Down Expand Up @@ -746,3 +750,4 @@ Fixes since v2.55

* Other code cleanup, docfix, build fix, etc.
(merge 026636128f ss/submittingpatches-typofix later to maint).
(merge d2af22cc21 jc/rerere-doc-typofix later to maint).
7 changes: 7 additions & 0 deletions Documentation/config/core.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,13 @@ core.trustctime::
crawlers and some backup systems).
See linkgit:git-update-index[1]. True by default.

core.useNanosec::
If true, use nanosecond precision for ctime and mtime
comparisons between the index and the working tree (if Git
was compiled to respect this option).
This is unsafe on some platforms;
see link:technical/racy-git.html[Racy Git]. False by default.

core.splitIndex::
If true, the split-index feature of the index will be used.
See linkgit:git-update-index[1]. False by default.
Expand Down
8 changes: 4 additions & 4 deletions Documentation/config/maintenance.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -121,10 +121,10 @@ maintenance.rerere-gc.auto::
This integer config option controls how often the `rerere-gc` task
should be run as part of `git maintenance run --auto`. If zero, then
the `rerere-gc` task will not run with the `--auto` option. A negative
value will force the task to run every time. Otherwise, any positive
value implies the command will run when the "rr-cache" directory exists
and has at least one entry, regardless of whether it is stale or not.
This heuristic may be refined in the future. The default value is 1.
value will force the task to run every time. Otherwise, a positive
value implies the command should run when the estimated number of stale
entries that would be pruned is greater than or equal to the configured
value. The default value is 512.

maintenance.worktree-prune.auto::
This integer config option controls how often the `worktree-prune` task
Expand Down
12 changes: 12 additions & 0 deletions Documentation/config/pack.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,18 @@ pack.windowMemory::
suffixed with "k", "m", or "g". When left unconfigured (or
set explicitly to 0), there will be no limit.

pack.windowSlotLimit::
The maximum number of "expensive" delta candidate comparisons
that will be performed for each object. See the description of
`--window-slot-limit` in linkgit:git-pack-objects[1]. If
unconfigured, no limit is applied.

pack.windowByteLimit::
Same as `pack.windowSlotLimit`, but scaled by the number of
bytes in each candidate object. See the description of
`--window-byte-limit` in linkgit:git-pack-objects[1]. If
unconfigured, no limit is applied.

pack.compression::
An integer -1..9, indicating the compression level for objects
in a pack file. -1 is the zlib default. 0 means no
Expand Down
5 changes: 3 additions & 2 deletions Documentation/config/worktree.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@
set to true, `worktree add` tries to find a remote-tracking
branch whose name uniquely matches the new branch name. If
such a branch exists, it is checked out and set as "upstream"
for the new branch. If no such match can be found, it falls
back to creating a new branch from the current `HEAD`.
for the new branch. If multiple matches are found, the command
fails. If no such match can be found, it falls back to
creating a new branch from the current `HEAD`.

`worktree.useRelativePaths`::
Link worktrees using relative paths (when "`true`") or absolute
Expand Down
7 changes: 7 additions & 0 deletions Documentation/git-diff.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,13 @@ section "3-Way Merge" for detailed information.
"Unmerged". Can be used only when comparing the working tree
with the index.

`--no-progress`::
`--progress`::
Disable or enable progress reporting during long computations;
the default is to enable progress reporting when stderr is a
terminal. Currently the only computation with progress support
is inexact rename detection.

`<path>...`::
The _<path>_ parameters, when given, are used to limit
the diff to the named paths (you can give directory
Expand Down
9 changes: 8 additions & 1 deletion Documentation/git-imap-send.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ git-imap-send - Send a collection of patches from stdin to an IMAP folder
SYNOPSIS
--------
[synopsis]
git imap-send [-v] [-q] [--[no-]curl] [(--folder|-f) <folder>]
git imap-send [-v] [-q] [--[no-]curl] [--[no-]draft] [(--folder|-f) <folder>]
git imap-send --list


Expand Down Expand Up @@ -55,6 +55,13 @@ OPTIONS
using libcurl. Ignored if Git was built with the NO_OPENSSL option
set.

`--draft`::
`--no-draft`::
Mark uploaded messages with the IMAP `\Draft` flag. The default is `--no-draft`.
+
With libcurl, `--draft` requires version 8.13.0 or later.
Older libcurl still uploads the message but cannot set the flag.

`--list`::
Run the IMAP LIST command to output a list of all the folders present.

Expand Down
7 changes: 7 additions & 0 deletions Documentation/git-log.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,13 @@ _<revision-range>_::
Paths may need to be prefixed with `--` to separate them from
options or the revision range, when confusion arises.

`--progress`::
`--no-progress`::
Enable or disable progress reporting during long computations;
the default is to enable progress reporting when stderr is a
terminal. Currently the only computation with progress support
is inexact rename detection.

include::rev-list-options.adoc[]

include::pretty-formats.adoc[]
Expand Down
23 changes: 23 additions & 0 deletions Documentation/git-pack-objects.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,29 @@ depth is 4095.
`--window-memory=0` makes memory usage unlimited. The default
is taken from the `pack.windowMemory` configuration variable.

--window-slot-limit=<n>::
This option provides an additional limit on top of `--window`.
Some delta candidates within the window can be rejected quickly
by heuristics, and some require comparing the bytes of the two
objects, which is expensive in CPU. This option limits us to
`<n>` "expensive" comparisons for each object. When using delta
islands, we may cheaply reject many delta candidates due to
island restrictions. In that case it is useful to increase the
`--window` parameter higher (to look further for delta
candidates) but use `--window-slot-limit` to avoid spending too
much CPU. The default is taken from the `pack.windowSlotLimit`
configuration variable.

--window-byte-limit=<n>::
Provides a similar limit to `--window-slot-limit`, but scaled by
the number of bytes in each candidate object. For example, a
window byte limit of one megabyte would be equivalent to a slot
limit of 10 for an object of 100 kilobytes, or 100 for an object
of 10 kilobytes. This can provide better results (less CPU
and/or smaller packs) than a slot limit. The size can be
suffixed with "k", "m", or "g" for kilobytes, etc. The default
is taken from the `pack.windowByteLimit` configuration variable.

--max-pack-size=<n>::
In unusual scenarios, you may not be able to create files
larger than a certain size on your filesystem, and this option
Expand Down
17 changes: 16 additions & 1 deletion Documentation/git-replay.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ SYNOPSIS
--------
[verse]
(EXPERIMENTAL!) 'git replay' ([--contained] --onto=<newbase> | --advance=<branch> | --revert=<branch>)
[--ref=<ref>] [--ref-action=<mode>] <revision-range>
[--ref=<ref>] [--ref-action=<mode>] [--linearize] <revision-range>

DESCRIPTION
-----------
Expand Down Expand Up @@ -91,6 +91,21 @@ Expanded description list compared to 'replay.refAction'.
+
The default mode can be configured via the `replay.refAction` configuration variable.

--linearize::
In this mode, each replayed commit is stacked on top of the
previously replayed one, so all replayed commits are flattened into
a single linear history.
+
When a merge commit is encountered, all commits in the range reachable
from the merge commit are replayed into the linear history, and the
merge commit itself is dropped. A ref that pointed to a merge commit is
updated to the merge's last replayed ancestor. (This matches the
behavior of git-rebase(1)'s `--no-rebase-merges` option.)
+
`--linearize` cannot be combined with multiple branches or with
`--contained`. To linearize several branches, replay them in separate
`git replay` invocations.

<revision-range>::
Range of commits to replay; see "Specifying Ranges" in
linkgit:git-rev-parse[1]. In `--advance=<branch>` or
Expand Down
9 changes: 9 additions & 0 deletions Documentation/git-stash.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -426,6 +426,15 @@ include::includes/cmd-config-section-all.adoc[]
:git-stash: 1
include::config/stash.adoc[]

EXIT STATUS
-----------

The `git stash` subcommands exit with status 0 on success. The
subcommands that apply a stash entry, i.e. `apply`, `pop` and `branch`,
exit with status 1 when applying the stash entry resulted in conflicts,
in which case the stash entry is left in place, and with a non-zero
status other than 1 when they fail for other reasons.


SEE ALSO
--------
Expand Down
4 changes: 3 additions & 1 deletion Documentation/git-worktree.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,9 @@ To remove a locked worktree, specify `--force` twice.
of creating a new branch from `HEAD`, if there exists a tracking
branch in exactly one remote matching the basename of _<path>_,
base the new branch on the remote-tracking branch, and mark
the remote-tracking branch as "upstream" from the new branch.
the remote-tracking branch as "upstream" from the new branch. If
there are multiple matches, the command fails. If there is no
match, the command falls back to creating a new branch from `HEAD`.
+
This can also be set up as the default behaviour by using the
`worktree.guessRemote` config option.
Expand Down
15 changes: 10 additions & 5 deletions Documentation/git.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ and full access to internals.
See linkgit:gittutorial[7] to get started, then see
linkgit:giteveryday[7] for a useful minimum set of
commands. The link:user-manual.html[Git User's Manual] has a more
in-depth introduction.
in-depth introduction. See linkgit:gitdatamodel[7] if you want to
learn about the data model and important terminology.

After you mastered the basic concepts, you can come back to this
page to learn what commands Git offers. You can learn more about
Expand Down Expand Up @@ -469,7 +470,9 @@ Higher level SCMs may provide and manage additional information in the

Terminology
-----------
Please see linkgit:gitglossary[7].
Please see linkgit:gitglossary[7]. See linkgit:gitdatamodel[7] for a
discussion of the core data model, which includes important terminology
used throughout the documentation.


Environment Variables
Expand Down Expand Up @@ -804,7 +807,8 @@ trace messages into this file descriptor.
Alternatively, if the variable is set to an absolute path
(starting with a '/' character), Git will interpret this
as a file path and will try to append the trace messages
to it.
to it. If the filename contains the string `%p`, that string
will be replaced with the PID of the traced process.
+
Unsetting the variable, or setting it to empty, "0" or
"false" (case insensitive) disables trace messages.
Expand Down Expand Up @@ -1199,8 +1203,9 @@ SEE ALSO
--------
linkgit:gittutorial[7], linkgit:gittutorial-2[7],
linkgit:giteveryday[7], linkgit:gitcvs-migration[7],
linkgit:gitglossary[7], linkgit:gitcore-tutorial[7],
linkgit:gitcli[7], link:user-manual.html[The Git User's Manual],
linkgit:gitglossary[7], linkgit:gitdatamodel[7],
linkgit:gitcore-tutorial[7], linkgit:gitcli[7],
link:user-manual.html[The Git User's Manual],
linkgit:gitworkflows[7]

GIT
Expand Down
6 changes: 6 additions & 0 deletions Documentation/gitdatamodel.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ Git's core operations use 4 kinds of data:
3. <<index,The index>>, also known as the staging area
4. <<reflogs,Reflogs>>: logs of changes to references ("ref log")

See linkgit:gitglossary[7] for a comprehensive terminology reference.

[[objects]]
OBJECTS
-------
Expand Down Expand Up @@ -300,6 +302,10 @@ $ git reflog main --date=iso --no-decorate
4ccb6d7 main@{2025-09-29 15:16:48 -0400}: commit (initial): Initial commit
----

SEE ALSO
--------
linkgit:gitglossary[7]

GIT
---
Part of the linkgit:git[1] suite
1 change: 1 addition & 0 deletions Documentation/gitglossary.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ include::glossary-content.adoc[]

SEE ALSO
--------
linkgit:gitdatamodel[7],
linkgit:gittutorial[7],
linkgit:gittutorial-2[7],
linkgit:gitcvs-migration[7],
Expand Down
13 changes: 10 additions & 3 deletions Documentation/glossary-content.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,8 @@ for a more flexible and robust system to do the same thing.
as objects. The index is a stored version of your
<<def_working_tree,working tree>>. Truth be told, it can also contain a second, and even
a third version of a working tree, which are used
when <<def_merge,merging>>.
when <<def_merge,merging>>. See "THE INDEX" in
linkgit:gitdatamodel[7] for details.

[[def_index_entry]]index entry::
The information regarding a particular file, stored in the
Expand Down Expand Up @@ -290,7 +291,8 @@ This commit is referred to as a "merge commit", or sometimes just a
[[def_object]]object::
The unit of storage in Git. It is uniquely identified by the
<<def_SHA1,SHA-1>> of its contents. Consequently, an
object cannot be changed.
object cannot be changed. See "OBJECTS" in
linkgit:gitdatamodel[7] for details.

[[def_object_database]]object database::
Stores a set of "objects", and an individual <<def_object,object>> is
Expand Down Expand Up @@ -587,12 +589,17 @@ extended in the future:
Different subhierarchies are used for different purposes. For example,
the `refs/heads/` hierarchy is used to represent local branches whereas
the `refs/tags/` hierarchy is used to represent local tags..
+
See also "REFERENCES" in linkgit:gitdatamodel[7].

[[def_reflog]]reflog::
A reflog shows the local "history" of a ref. In other words,
it can tell you what the 3rd last revision in _this_ repository
was, and what was the current state in _this_ repository,
yesterday 9:14pm. See linkgit:git-reflog[1] for details.
yesterday 9:14pm.
+
See "REFLOGS" in linkgit:gitdatamodel[7] for a short explanation of the
format. See linkgit:git-reflog[1] for details.

[[def_refspec]]refspec::
A "refspec" is used by <<def_fetch,fetch>> and
Expand Down
7 changes: 6 additions & 1 deletion Documentation/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -379,13 +379,18 @@ foreach manpage, category : manpages
output: fs.stem(manpage) + '.xml',
)

man_base_url = 'file://' + htmldir + '/'
if get_option('man_base_url') != ''
man_base_url = get_option('man_base_url')
endif

doc_targets += custom_target(
command: [
xmlto,
'-m', '@INPUT0@',
'-m', '@INPUT1@',
'--stringparam',
'man.base.url.for.relative.links=' + get_option('prefix') / get_option('mandir'),
'man.base.url.for.relative.links=' + man_base_url,
'man',
manpage_xml_target,
'-o',
Expand Down
Loading