Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
585 commits
Select commit Hold shift + click to select a range
600588d
hash: add platform-specific discard functions
peff Jul 2, 2026
11c689b
packfile: thread odb_source_packed through packed_object_info()
pks-t Jul 2, 2026
126076b
odb: make backend-specific fields optional
pks-t Jul 2, 2026
32a95be
odb: add `source` field to struct object_info_source
pks-t Jul 2, 2026
2242f7e
treewide: convert users of `whence` to the new source field
pks-t Jul 2, 2026
aea037e
odb: drop `whence` field from object info
pks-t Jul 2, 2026
8a7ad23
odb: document object info fields
pks-t Jul 2, 2026
10ab1af
meson: restore hook-list.h to builtin_sources
floppym Jul 1, 2026
b2ebb78
reset: introduce ability to skip updating HEAD
pks-t Jul 1, 2026
1280e92
reset: allow the caller to specify the current HEAD object
pks-t Jul 1, 2026
e420d7b
reset: stop assuming that the caller passes in a clean index
pks-t Jul 1, 2026
27717e2
replay: expose `replay_result_queue_update()`
pks-t Jul 1, 2026
46affdb
builtin/history: split handling of ref updates into two phases
pks-t Jul 1, 2026
d11b348
builtin/history: implement "drop" subcommand
pks-t Jul 1, 2026
8fed3ac
meson: support building fuzzers with libFuzzer
pks-t Jul 3, 2026
adf4516
oss-fuzz: add fuzzer for parsing reftables
pks-t Jul 3, 2026
657654b
reftable/basics: fix OOB read on binary search of empty range
pks-t Jul 3, 2026
ed103ab
reftable/record: don't abort when decoding invalid ref value type
pks-t Jul 3, 2026
a0eb4ca
t/unit-tests: introduce test helper to write reftable blocks
pks-t Jul 3, 2026
6914a9a
reftable/block: fix OOB write with bogus inflated log size
pks-t Jul 3, 2026
43a0669
reftable/block: fix OOB read with bogus block size
pks-t Jul 3, 2026
0d77a81
reftable/block: fix OOB read with bogus restart count
pks-t Jul 3, 2026
986590f
reftable/block: fix use of uninitialized memory when binsearch fails
pks-t Jul 3, 2026
ec42676
reftable/block: fix OOB read with bogus restart offset
pks-t Jul 3, 2026
a1c085d
reftable/table: fix NULL pointer access when seeking to bogus offsets
pks-t Jul 3, 2026
ca93c27
reftable/table: fix OOB read on truncated table
pks-t Jul 3, 2026
bad766f
ci(dockerized): raise the PID limit for private repositories
dscho Jul 4, 2026
1eb2811
precompose_utf8: use a flex array for d_name
booxter Jul 4, 2026
8b90835
load_one_loose_object_map(): fix resource leak
dscho Jul 5, 2026
bd58327
loose: avoid closing invalid fd on error path
dscho Jul 5, 2026
a62c2a2
download_https_uri_to_file(): do not leak fd upon failure
dscho Jul 5, 2026
c3f89be
run-command: avoid `close(-1)` in `start_command()` error paths
dscho Jul 5, 2026
da82221
line-log: avoid redundant copy that leaks in process_ranges
dscho Jul 5, 2026
6eb6005
dir: free allocations on parse-error paths in `read_one_dir()`
dscho Jul 5, 2026
add15d1
submodule: fix cwd leak in `get_superproject_working_tree()`
dscho Jul 5, 2026
da2211b
worktree: fix resource leaks when branch creation fails
dscho Jul 5, 2026
22f92aa
imap-send: avoid leaking the IMAP upload buffer
dscho Jul 5, 2026
b3b1d83
reftable/table: release filter on error path
dscho Jul 5, 2026
e36cda7
fsmonitor: plug token-data leak on early daemon-startup failures
dscho Jul 5, 2026
9184231
mingw: make `exit_process()` own the process handle on all paths
dscho Jul 5, 2026
fc1bac6
README: add GitLab CI badge to make it more discoverable
pks-t Jul 6, 2026
9769449
t0021: skip EXPENSIVE test that is broken without SIZE_T_IS_64BIT
pks-t Jul 6, 2026
f0598d0
t4141: fix inefficient use of dd(1)
pks-t Jul 6, 2026
bc1854f
t5608: reduce maximum disk usage
pks-t Jul 6, 2026
8f276d1
t7508: skip EXPENSIVE test that is broken without SIZE_T_IS_64BIT
pks-t Jul 6, 2026
aa4ee1f
t7900: clean up large EXPENSIVE repository
pks-t Jul 6, 2026
886c7b4
t: use `test_bool_env` to parse GIT_TEST_LONG
pks-t Jul 6, 2026
3e35bf7
gitlab-ci: disable RAM disk on macOS jobs
pks-t Jul 6, 2026
8424844
gitlab-ci: enable "GIT_TEST_LONG"
pks-t Jul 6, 2026
c3df27f
blame: reserve mark column only if necessary
rscharfe Jul 6, 2026
5a183de
builtin/refs: drop `the_repository`
pks-t Jul 6, 2026
b335599
builtin/refs: add "delete" subcommand
pks-t Jul 6, 2026
2540e35
builtin/refs: add "update" subcommand
pks-t Jul 6, 2026
fa4eefe
builtin/refs: add "create" subcommand
pks-t Jul 6, 2026
002fe67
builtin/refs: add "rename" subcommand
pks-t Jul 6, 2026
afd278b
t/README: document test_grep helper
mmontalbo Jul 6, 2026
04e875a
t: fix grep assertions missing file arguments
mmontalbo Jul 6, 2026
c451e96
t: extract chainlint's parser into shared module
mmontalbo Jul 6, 2026
4f8f121
t: fix Lexer line count for $() inside double-quoted strings
mmontalbo Jul 6, 2026
47f79f6
t: convert grep assertions to test_grep
mmontalbo Jul 6, 2026
be7112d
t: add greplint to detect bare grep assertions
mmontalbo Jul 6, 2026
2f63677
Merge branch 'hn/status-pull-advice-qualified'
gitster Jul 6, 2026
57c386f
Merge branch 'cc/promisor-auto-config-url-more'
gitster Jul 6, 2026
e49c0e8
Merge branch 'ps/setup-drop-global-state'
gitster Jul 6, 2026
da89839
Merge branch 'ps/doc-recommend-b4'
gitster Jul 6, 2026
57305b8
Merge branch 'rs/cat-file-default-format-optim'
gitster Jul 6, 2026
ed5d4f6
Merge branch 'jk/setup-gitfile-diag-fix'
gitster Jul 6, 2026
aed0faa
Merge branch 'en/ort-harden-against-corrupt-trees'
gitster Jul 6, 2026
37997b0
Merge branch 'td/ref-filter-restore-prefix-iteration'
gitster Jul 6, 2026
a7f8e84
Merge branch 'ps/odb-source-packed'
gitster Jul 6, 2026
13f5190
Merge branch 'ty/move-protect-hfs-ntfs'
gitster Jul 6, 2026
6786e9c
Merge branch 'po/hash-object-size-t'
gitster Jul 6, 2026
b7daa7e
Merge branch 'mh/fetch-follow-remote-head-config'
gitster Jul 6, 2026
3b89f12
Merge branch 'kh/submittingpatches-trailers'
gitster Jul 6, 2026
32d5049
Merge branch 'jc/submittingpatches-design-critiques'
gitster Jul 6, 2026
982308d
Merge branch 'tb/pack-path-walk-bitmap-delta-islands'
gitster Jul 6, 2026
8af4256
Merge branch 'pw/status-rebase-todo'
gitster Jul 6, 2026
2e5d1cc
Merge branch 'mv/log-follow-mergy'
gitster Jul 6, 2026
2b0d1af
Merge branch 'jk/repo-info-path-keys'
gitster Jul 6, 2026
7fe674d
Merge branch 'wy/doc-clarify-review-replies'
gitster Jul 6, 2026
3442a0f
Merge branch 'ps/refs-onbranch-fixes'
gitster Jul 6, 2026
a4d2e8a
Merge branch 'ps/connected-generic-promisor-checks'
gitster Jul 6, 2026
83fd231
Merge branch 'sg/t3420-do-not-grep-in-missing-file'
gitster Jul 6, 2026
f85a7e6
Start Git 2.56 cycle
gitster Jul 6, 2026
9ca3ea9
setup: rename `check_repository_format_gently()`
pks-t Jul 7, 2026
c679995
setup: mark bogus worktree in `apply_repository_format()`
pks-t Jul 7, 2026
d43b9ac
setup: unify setup of shallow file
pks-t Jul 7, 2026
cf1687a
setup: split up concerns of `setup_git_env_internal()`
pks-t Jul 7, 2026
d66975f
setup: introduce explicit repository discovery
pks-t Jul 7, 2026
abe8941
setup: embed repository format in discovery
pks-t Jul 7, 2026
b964ad1
setup: move prefix into repository
pks-t Jul 7, 2026
28f38f3
setup: drop static `cwd` variable
pks-t Jul 7, 2026
0bf8e14
setup: propagate prefix via repository discovery
pks-t Jul 7, 2026
2513a4d
setup: make repository discovery self-contained
pks-t Jul 7, 2026
eba53f5
setup: drop redundant configuration of `startup_info->have_repository`
pks-t Jul 7, 2026
293b785
setup: pass worktree to `init_db()`
pks-t Jul 7, 2026
4df38c6
setup: mark `set_git_work_tree()` as file-local
pks-t Jul 7, 2026
f08ece0
Merge branch 'jk/hash-algo-leak-fixes' into jk/git-hash-cleanups
gitster Jul 7, 2026
3792b2a
sideband: allow ANSI SGR with colon-separated subfields
grawity May 13, 2026
18b2009
Rust: fix description in Release Notes to 2.55
gitster Jul 7, 2026
5df632c
t1517: skip svn tests if svn is not installed
bk2204 Jul 8, 2026
154aee0
parse-options: add a separate case for help output on error
bk2204 Jul 8, 2026
06f9b95
rev-parse: have --parseopt callers exit 0 on --help
bk2204 Jul 8, 2026
cdaf12f
parse-options: exit 0 on -h
bk2204 Jul 8, 2026
9b204b8
hash: use git_hash_init() consistently
peff Jul 8, 2026
b87af5a
hash: convert remaining direct function calls
peff Jul 8, 2026
90a55e3
hash: document function pointers and wrappers
peff Jul 8, 2026
2c51615
hash: make git_hash_discard() idempotent
peff Jul 8, 2026
6728cfb
csum-file: use idempotent git_hash_discard()
peff Jul 8, 2026
f1bf977
http: use idempotent git_hash_discard()
peff Jul 8, 2026
9e396aa
hash: check ctx->active flag in all wrapper functions
peff Jul 8, 2026
87bd9bd
Makefile: add $(RUST_LIB) prerequisite to osxkeychain
Jul 8, 2026
924dfce
Makefile: support universal macOS builds via RUST_TARGETS
Jul 8, 2026
1a62c1f
contrib: wire up osxkeychain in contrib/Makefile on macOS
Jul 8, 2026
ff1da37
submodule--helper: accept '-i' shorthand for update --init
martinetd Jul 8, 2026
e74c698
SubmittingPatches: document how to retract a topic
gitster Jul 8, 2026
8585c50
bundle-uri: drain remaining response on invalid bundle-uri lines
To1ne Jul 8, 2026
50de116
bundle-uri: stop sending invalid bundle configuration
jltobler Jul 8, 2026
7167667
unpack-trees: avoid quadratic index scan in next_cache_entry()
hferreiro Jul 8, 2026
c4fcd50
t1410-reflog.sh: avoid suppressing git's exit code in pipelines
Jul 9, 2026
f60db8d
mailmap: map Taylor Blau's work address
ttaylorr-oai Jul 9, 2026
37e3640
Merge branch 'ps/odb-drop-whence' into ps/odb-for-each-object-filter
gitster Jul 9, 2026
02d62c3
commit-graph: add trace2 instrumentation for generation DFS
spkrka Jul 9, 2026
8ea36f6
commit-graph: propagate topo_levels slab to all chain layers
spkrka Jul 9, 2026
a6b8f01
diffcore-break: guard against NULLed queue entries in merge loop
dscho Jul 10, 2026
d07d09e
diff: handle NULL return from repo_get_commit_tree()
dscho Jul 10, 2026
2fdcce1
remote: guard `remote_tracking()` against NULL remote
dscho Jul 10, 2026
d321f42
reftable/stack: guard against NULL list_file in stack_destroy
dscho Jul 10, 2026
775f1f2
mailsplit: move NULL check before first use of file handle
dscho Jul 10, 2026
74fb188
bisect: handle NULL commit in `bisect_successful()`
dscho Jul 10, 2026
e87d701
replay: die when --onto does not peel to a commit
dscho Jul 10, 2026
f5887e1
revision: avoid dereferencing NULL in `add_parents_only()`
dscho Jul 10, 2026
436ef7c
pack-bitmap: handle missing bitmap for base MIDX
dscho Jul 10, 2026
7384654
bisect: ensure non-NULL `head` before using it
dscho Jul 10, 2026
83e717e
shallow: fix NULL dereference
dscho Jul 10, 2026
7642553
shallow: give write_one_shallow() its own hex buffer
dscho Jul 10, 2026
13d8160
t/perf: add perf test for ref tombstone scenarios
spkrka Jul 10, 2026
146a946
reftable: fix quadratic behavior in the presence of tombstones
spkrka Jul 10, 2026
52bd2ff
config: refactor include_by_gitdir() into include_by_path()
black-desk Jul 10, 2026
5004829
config: add "worktree" and "worktree/i" includeIf conditions
black-desk Jul 10, 2026
9144451
b4: include change-id in cover template
black-desk Jul 10, 2026
f065d59
object-file: rename files transaction prepare function
jltobler Jul 10, 2026
9c182bb
object-file: rename files transaction fsync function
jltobler Jul 10, 2026
ee1785a
object-file: embed transaction flush logic in commit function
jltobler Jul 10, 2026
926618e
object-file: drop check for inflight transactions
jltobler Jul 10, 2026
6d01718
object-file: propagate files transaction errors
jltobler Jul 10, 2026
4576d6c
odb/transaction: propagate begin errors
jltobler Jul 10, 2026
dbb3c87
odb/transaction: propagate commit errors
jltobler Jul 10, 2026
28fbc06
odb/transaction: add transaction env interface
jltobler Jul 10, 2026
48d730a
odb/transaction: introduce ODB transaction flags
jltobler Jul 10, 2026
6c24256
builtin/receive-pack: drop redundant tmpdir env
jltobler Jul 10, 2026
bdee7b3
builtin/receive-pack: stage incoming objects via ODB transactions
jltobler Jul 10, 2026
cfd52a7
object-file: fix closing object stream twice
pks-t Jul 10, 2026
dbe8efd
t9811: break long && chains into multiple lines
Jul 11, 2026
1569919
t9811: replace 'test -f' and '! test -f' with 'test_path_*'
Jul 11, 2026
6635b9d
Merge branch 'ad/gpg-strip-cr-before-lf'
gitster Jul 13, 2026
c58d518
Merge branch 'jk/reftable-leakfix'
gitster Jul 13, 2026
431cacf
Merge branch 'jk/format-patch-leakfix'
gitster Jul 13, 2026
6d6939a
Merge branch 'hn/branch-push-slip-advice'
gitster Jul 13, 2026
3c775ab
Merge branch 'kk/prio-queue-get-put-fusion'
gitster Jul 13, 2026
6eb10ff
Merge branch 'ps/odb-generalize-prepare'
gitster Jul 13, 2026
55526a1
The 2nd batch for Git 2.56
gitster Jul 13, 2026
b9a7080
fast-export: standardize usage string and SYNOPSIS
chriscool Jul 13, 2026
678f3bb
t1100: modernize test style
shkuls Jul 14, 2026
9719c29
t1100: move creation of expected output into setup test
shkuls Jul 14, 2026
7b0203b
strbuf: avoid redundant reset in strbuf_getwholeline()
rscharfe Jul 14, 2026
27bed41
odb/source-packed: improve lookup when enumerating objects
pks-t Jul 15, 2026
03aaa4f
pack-bitmap: mark object filter as `const`
pks-t Jul 15, 2026
6f48b8c
pack-objects: drop unused return value from add_object_entry()
peff Jul 15, 2026
1ca65ca
pack-bitmap: allow aborting iteration of bitmapped objects
pks-t Jul 15, 2026
eaa9807
pack-bitmap: iterate object sources when opening bitmaps
pks-t Jul 15, 2026
db95bfc
pack-bitmap: drop `_1` suffix from functions that open bitmaps
pks-t Jul 15, 2026
8cd7ee7
pack-bitmap: introduce function to open bitmap for a single source
pks-t Jul 15, 2026
204daf5
odb: introduce object filters to `odb_for_each_object()`
pks-t Jul 15, 2026
bfa86e6
builtin/cat-file: filter objects via object database
pks-t Jul 15, 2026
b6b2769
t7614: avoid hiding git's exit code in a pipe
shkuls Jul 15, 2026
7a244d8
Merge branch 'jc/history-message-prep-fix'
gitster Jul 15, 2026
85ba074
Merge branch 'ps/refs-writing-subcommands'
gitster Jul 15, 2026
a9d2d2a
Merge branch 'ps/odb-drop-whence'
gitster Jul 15, 2026
955b276
Merge branch 'ps/history-drop'
gitster Jul 15, 2026
0a4fb31
Merge branch 'jk/bloom-leak-fixes'
gitster Jul 15, 2026
e38e971
Merge branch 'mg/meson-hook-list-buildfix'
gitster Jul 15, 2026
7381be0
Merge branch 'rs/blame-abbrev-marks'
gitster Jul 15, 2026
d35c539
The 3rd batch for Git 2.56
gitster Jul 15, 2026
f1de863
Merge branch 'spanish_pr_bis' of github.com:basuradeluis/gitkbis
j6t Jul 16, 2026
90dd53f
Merge branch 'hn/silence-make-s'
j6t Jul 16, 2026
5dcb978
Merge branch 'master' of github.com:alshopov/git-gui
j6t Jul 16, 2026
946e693
Merge branch 'master' of https://github.com/j6t/gitk
gitster Jul 16, 2026
44de152
Merge branch 'master' of https://github.com/j6t/git-gui
gitster Jul 16, 2026
bd29432
Merge branch 'kk/streaming-walk-pqueue' into kk/no-walk-pathspec-fix
gitster Jul 16, 2026
32c4ed7
revision: fix --no-walk path filtering regression
spkrka Jul 16, 2026
936eb75
wincred: avoid memory corruption when erasing a credential
dscho Jul 16, 2026
f635ab9
wincred: prevent silent credential loss when storing OAuth tokens
dscho Jul 16, 2026
62c9cec
Merge branch 'js/wincred-fixes'
gitster Jul 17, 2026
e47f7de
Merge branch 'jk/hash-algo-leak-fixes'
gitster Jul 17, 2026
347fe8a
Merge branch 'js/coverity-fixes'
gitster Jul 17, 2026
70ef593
Merge branch 'js/ci-dockerized-pid-limit'
gitster Jul 17, 2026
88775e3
Merge branch 'ps/t-fixes-for-git-test-long'
gitster Jul 17, 2026
09af39f
Merge branch 'ih/precompose-flex-array'
gitster Jul 17, 2026
e7e0872
Merge branch 'jk/git-hash-cleanups'
gitster Jul 17, 2026
443fe1e
Merge branch 'mm/sideband-ansi-sgr-colon-fix'
gitster Jul 17, 2026
41365c2
The 4th batch for Git 2.56
gitster Jul 17, 2026
65f37b6
Merge branch 'ps/reftable-hardening'
gitster Jul 19, 2026
2688b28
Merge branch 'ps/setup-split-discovery-and-setup'
gitster Jul 19, 2026
a6d1c35
Merge branch 'jc/relnotes-2.55-rust-fix'
gitster Jul 19, 2026
1950f46
Merge branch 'kk/commit-reach-find-all-fix'
gitster Jul 19, 2026
de46554
Merge branch 'jc/submitting-patches-abandoning'
gitster Jul 19, 2026
620657c
Merge branch 'bc/parse-options-exit-0-on-help'
gitster Jul 19, 2026
f8ec2c6
Merge branch 'sn/osxkeychain-rust-universal'
gitster Jul 19, 2026
c9a92e2
Merge branch 'mm/test-grep-lint'
gitster Jul 19, 2026
009713e
Merge branch 'gr/t1410-reflog-exit-code'
gitster Jul 19, 2026
1c103a8
Merge branch 'wy/doc-myfirstcontribution-trim-quotes'
gitster Jul 19, 2026
cae7c86
Merge branch 'hf/unpack-trees-quadratic-scan'
gitster Jul 19, 2026
f590fcd
Merge branch 'tc/bundle-uri-empty-fix'
gitster Jul 19, 2026
a336bfa
Merge branch 'ty/migrate-ignorecase'
gitster Jul 19, 2026
82c60a8
Merge branch 'kk/commit-graph-topo-levels-fix'
gitster Jul 19, 2026
cc82eaf
Merge branch 'kk/reftable-tombstone-quadratic-fix'
gitster Jul 19, 2026
0b75ef5
Merge branch 'js/coverity-fixes-null-safety'
gitster Jul 19, 2026
48bbf81
The 5th batch
gitster Jul 19, 2026
9655cb7
Merge branch 'ps/odb-stream-double-close-fix'
gitster Jul 21, 2026
f1c8bde
Merge branch 'cl/b4-cover-change-id'
gitster Jul 21, 2026
5d2e770
The 6th batch
gitster Jul 21, 2026
aebf83d
Merge branch 'dm/submodule-update-i-shorthand'
gitster Jul 22, 2026
ccf9746
Merge branch 'cl/conditional-config-on-worktree-path'
gitster Jul 22, 2026
55f961a
Merge branch 'jt/receive-pack-use-odb-transactions'
gitster Jul 22, 2026
0a4f81e
Merge branch 'ml/t9811-replace-test-f'
gitster Jul 22, 2026
9822fc3
Merge branch 'cc/doc-fast-export-synopsis-fix'
gitster Jul 22, 2026
88620f0
Merge branch 'rs/strbuf-avoid-redundant-reset'
gitster Jul 22, 2026
5183689
Merge branch 'ps/odb-for-each-object-filter'
gitster Jul 22, 2026
2b8f09f
Merge branch 'sk/t1100-modernize'
gitster Jul 22, 2026
af4899f
Merge branch 'sk/t7614-do-not-hide-git-exit-status'
gitster Jul 22, 2026
60aa81f
Merge branch 'kk/no-walk-pathspec-fix'
gitster Jul 22, 2026
9a0c470
The 7th batch
gitster Jul 22, 2026
af39a10
diff: rename and group the line-range filter for clarity
mmontalbo Jun 16, 2026
f77937f
diff: simplify the line-range filter by classifying removals immediately
mmontalbo Jun 16, 2026
f4ef697
diff: emit -L hunk headers via xdiff's formatter
mmontalbo Jun 16, 2026
954d2b1
diff: extract a line-range diff helper for reuse
mmontalbo Jun 16, 2026
9554206
line-log: support diff stat formats with -L
mmontalbo Jun 16, 2026
94cac07
diff: support --check with -L line ranges
mmontalbo May 13, 2026
43bc512
diffcore-pickaxe: scope -G to the -L tracked range
mmontalbo Jun 16, 2026
38ccb44
gitattributes: document how external diff drivers relate to diff feat…
mmontalbo Jun 25, 2026
0e3f412
diff: introduce a hunk provider interface
mmontalbo Jul 31, 2026
a840e27
diff-hunks: add the store format, library, and command
mmontalbo Jul 31, 2026
0f4afa1
diff: record precomputed hunks during stat output
mmontalbo Jul 31, 2026
ed8d209
diff: read precomputed hunks for stat output
mmontalbo Jul 31, 2026
b961b07
blame: read precomputed hunks
mmontalbo Jul 31, 2026
7ba26a6
sub-process: separate process lifecycle from hashmap management
mmontalbo May 28, 2026
b017edf
sub-process: add a gentle status read
mmontalbo Jul 31, 2026
f851dad
userdiff: add diff.<driver>.process config
mmontalbo May 21, 2026
4195250
diff: consult oid-only hunk providers via diff.<driver>.process
mmontalbo Jul 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .b4-config
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Note that these are default values that you can tweak via the typical
# git-config(1) machinery. You thus shouldn't ever have to change this file.
# See also https://b4.docs.kernel.org/en/latest/config.html.
[b4]
send-same-thread = shallow
prep-cover-template = ./.b4-cover-template
12 changes: 12 additions & 0 deletions .b4-cover-template
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
${cover}

---
${shortlog}

${diffstat}

${range_diff}
---
base-commit: ${base_commit}
change-id: ${change_id}
${prerequisites}
2 changes: 1 addition & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
*.[ch] whitespace=indent,trail,space,incomplete diff=cpp
*.sh whitespace=indent,trail,space,incomplete text eol=lf
*.perl text eol=lf diff=perl
*.pl text eof=lf diff=perl
*.pl text eol=lf diff=perl
*.pm text eol=lf diff=perl
*.py text eol=lf diff=python
*.bat text eol=crlf
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,7 @@ jobs:
image: alpine:latest
# Supported until 2025-04-02.
- jobname: linux32
image: i386/ubuntu:focal
image: i386/ubuntu:20.04
# A RHEL 8 compatible distro. Supported until 2029-05-31.
- jobname: almalinux-8
image: almalinux:8
Expand All @@ -420,7 +420,9 @@ jobs:
CI_JOB_IMAGE: ${{matrix.vector.image}}
CUSTOM_PATH: /custom
runs-on: ubuntu-latest
container: ${{matrix.vector.image}}
container:
image: ${{ matrix.vector.image }}
options: ${{ github.repository_visibility == 'private' && '--pids-limit 16384 --ulimit nproc=16384:16384 --ulimit nofile=32768:32768' || '' }}
steps:
- name: prepare libc6 for actions
if: matrix.vector.jobname == 'linux32'
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
/git-diagnose
/git-diff
/git-diff-files
/git-diff-hunks
/git-diff-index
/git-diff-pairs
/git-diff-tree
Expand Down
47 changes: 30 additions & 17 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,15 @@ test:linux:
- jobname: linux-reftable
image: ubuntu:rolling
CC: clang
- jobname: linux-breaking-changes
image: ubuntu:20.04
CC: gcc
- jobname: fedora-breaking-changes-meson
image: fedora:latest
- jobname: linux-TEST-vars
image: ubuntu:20.04
CC: gcc
CC_PACKAGE: gcc-8
- jobname: linux-breaking-changes
image: ubuntu:rolling
CC: gcc
- jobname: fedora-breaking-changes-meson
image: fedora:latest
- jobname: linux-leaks
image: ubuntu:rolling
CC: gcc
Expand All @@ -60,13 +60,20 @@ test:linux:
- jobname: linux-asan-ubsan
image: ubuntu:rolling
CC: clang
- jobname: linux-meson
image: ubuntu:rolling
CC: gcc
- jobname: linux-musl-meson
image: alpine:latest
# Supported until 2025-04-02.
- jobname: linux32
image: i386/ubuntu:20.04
- jobname: linux-meson
image: ubuntu:rolling
CC: gcc
# 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
artifacts:
paths:
- t/failed-test-artifacts
Expand All @@ -81,13 +88,8 @@ test:osx:
tags:
- saas-macos-large-m2pro
variables:
TEST_OUTPUT_DIRECTORY: "/Volumes/RAMDisk"
TEST_OUTPUT_DIRECTORY: "/tmp/test-output"
before_script:
# Create a 4GB RAM disk that we use to store test output on. This small hack
# significantly speeds up tests by more than a factor of 2 because the
# macOS runners use network-attached storage as disks, which is _really_
# slow with the many small writes that our tests do.
- sudo diskutil apfs create $(hdiutil attach -nomount ram://8192000) RAMDisk
- ./ci/install-dependencies.sh
script:
- ./ci/run-build-and-tests.sh
Expand Down Expand Up @@ -145,6 +147,9 @@ test:mingw64:
needs:
- job: "build:mingw64"
artifacts: true
variables:
# Windows runners don't have enough RAM to run EXPENSIVE tests.
GIT_TEST_LONG: false
before_script:
- *windows_before_script
- git-sdk/usr/bin/bash.exe -l -c 'tar xf artifacts/artifacts.tar.gz'
Expand All @@ -161,11 +166,16 @@ test:mingw64:
TEST_OUTPUT_DIRECTORY: "C:/Git-Test"
tags:
- saas-windows-medium-amd64
cache:
key:
files:
- ci/install-dependencies.ps1
paths:
- .dependencies
before_script:
- *windows_before_script
- choco install -y git meson ninja rust-ms
- Import-Module $env:ChocolateyInstall\helpers\chocolateyProfile.psm1
- refreshenv
- ./ci/install-dependencies.ps1
- $env:Path = "C:\Meson;C:\Rust\bin;$env:Path"
- New-Item -Path $env:TEST_OUTPUT_DIRECTORY -ItemType Directory

build:msvc-meson:
Expand All @@ -188,6 +198,9 @@ test:msvc-meson:
script:
- |
& "C:/Program Files/Git/usr/bin/bash.exe" -l -c 'ci/run-test-slice-meson.sh build $CI_NODE_INDEX $CI_NODE_TOTAL'
variables:
# Windows runners don't have enough RAM to run EXPENSIVE tests.
GIT_TEST_LONG: false
after_script:
- |
if ($env:CI_JOB_STATUS -ne "success") {
Expand Down
1 change: 1 addition & 0 deletions .mailmap
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,7 @@ Sven Verdoolaege <skimo@kotnet.org> <skimo@liacs.nl>
SZEDER Gábor <szeder.dev@gmail.com> <szeder@ira.uka.de>
Tao Qingyun <taoqy@ls-a.me> <845767657@qq.com>
Tay Ray Chuan <rctay89@gmail.com>
Taylor Blau <me@ttaylorr.com> <ttaylorr@openai.com>
Ted Percival <ted@midg3t.net> <ted.percival@quest.com>
Theodore Ts'o <tytso@mit.edu>
Thomas Ackermann <th.acker@arcor.de> <th.acker66@arcor.de>
Expand Down
1 change: 0 additions & 1 deletion .tsan-suppressions
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
# A static variable is written to racily, but we always write the same value, so
# in practice it (hopefully!) doesn't matter.
race:^want_color$
race:^transfer_debug$

# A boolean value, which tells whether the replace_map has been initialized or
# not, is read racily with an update. As this variable is written to only once,
Expand Down
1 change: 1 addition & 0 deletions Documentation/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ MAN5_TXT += gitattributes.adoc
MAN5_TXT += gitformat-bundle.adoc
MAN5_TXT += gitformat-chunk.adoc
MAN5_TXT += gitformat-commit-graph.adoc
MAN5_TXT += gitformat-diff-hunks.adoc
MAN5_TXT += gitformat-index.adoc
MAN5_TXT += gitformat-loose.adoc
MAN5_TXT += gitformat-pack.adoc
Expand Down
139 changes: 127 additions & 12 deletions Documentation/MyFirstContribution.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -790,7 +790,7 @@ We can note a few things:
v3", etc. in place of "PATCH". For example, "[PATCH v2 1/3]" would be the first of
three patches in the second iteration. Each iteration is sent with a new cover
letter (like "[PATCH v2 0/3]" above), itself a reply to the cover letter of the
previous iteration (more on that below).
first iteration (more on that below).

NOTE: A single-patch topic is sent with "[PATCH]", "[PATCH v2]", etc. without
_i_/_n_ numbering (in the above thread overview, no single-patch topic appears,
Expand Down Expand Up @@ -833,7 +833,7 @@ This patchset is part of the MyFirstContribution tutorial and should not
be merged.
----

At this point the tutorial diverges, in order to demonstrate two
At this point the tutorial diverges, in order to demonstrate three
different methods of formatting your patchset and getting it reviewed.

The first method to be covered is GitGitGadget, which is useful for those
Expand All @@ -845,9 +845,14 @@ more fine-grained control over the emails to be sent. This method requires some
setup which can change depending on your system and will not be covered in this
tutorial.

The third method to be covered is `b4`, which builds on top of `git
format-patch` and `git send-email`. This method is the recommended way to
submit patches via mail as it automates a lot of the bookkeeping required by
`git send-email`.

Regardless of which method you choose, your engagement with reviewers will be
the same; the review process will be covered after the sections on GitGitGadget
and `git send-email`.
the same; the review process will be covered after the sections on GitGitGadget,
`git send-email` and `b4`.

[[howto-ggg]]
== Sending Patches via GitGitGadget
Expand Down Expand Up @@ -1214,7 +1219,7 @@ between your last version and now, if it's something significant. You do not
need the exact same body in your second cover letter; focus on explaining to
reviewers the changes you've made that may not be as visible.

You will also need to go and find the Message-ID of your previous cover letter.
You will also need to go and find the Message-ID of your first cover letter.
You can either note it when you send the first series, from the output of `git
send-email`, or you can look it up on the
https://lore.kernel.org/git[mailing list]. Find your cover letter in the
Expand All @@ -1227,8 +1232,8 @@ Message-ID: <foo.12345.author@example.com>

Your Message-ID is `<foo.12345.author@example.com>`. This example will be used
below as well; make sure to replace it with the correct Message-ID for your
**previous cover letter** - that is, if you're sending v2, use the Message-ID
from v1; if you're sending v3, use the Message-ID from v2.
**first cover letter** - that is, for any subsequent version that you send,
always use the Message-ID from v1.

While you're looking at the email, you should also note who is CC'd, as it's
common practice in the mailing list to keep all CCs on a thread. You can add
Expand Down Expand Up @@ -1296,6 +1301,87 @@ index 88f126184c..38da593a60 100644
2.21.0.392.gf8f6787159e-goog
----

[[howto-b4]]
== Sending Patches with `b4`

`b4` is a tool that builds on top of `git format-patch` and `git send-email`.
It automates much of the bookkeeping involved in sending a patch series to a
mailing-list-based project.

Refer to the https://b4.docs.kernel.org/[b4 documentation] for a full reference.

[[prep-b4]]
=== Preparing a Patch Series

`b4` tracks your patch series as a branch. To start tracking the `psuh` branch
you have been working on, run:

----
$ b4 prep --enroll master
----

This enrolls the current branch, using `master` as the base of the topic. `b4`
manages the cover letter as part of the branch, so you can edit it at any time
with:

----
$ b4 prep --edit-cover
----

The cover letter not only tracks the content of the top-level mail, but also
the set of recipients. You can add recipients by adding `To:` and `Cc:`
trailer lines.

[[send-b4]]
=== Sending the Patches

Before sending the series out for real, you can inspect what `b4` would send by
passing `--dry-run`:

----
$ b4 send --dry-run
----

Once you are happy with the result, send the series with:

----
$ b4 send
----

[[v2-b4]]
=== Sending v2

When you are ready to send a new iteration of your series, refine your
patches as usual using linkgit:git-rebase[1]. Note that you typically want to
rebase on top of the cover letter. You can configure an alias to enable easy
rebases going forward:

---
$ git config set alias.b4-rebase 'rebase "HEAD^{/--- b4-submit-tracking ---}"'
$ git b4-rebase -i
---

Before sending out the new version you should also update the cover letter with
`b4 prep --edit-cover` to note the relevant changes compared to the previous
version. You can inspect the changes between the two versions with `b4 prep
--compare-to=v1`.

Same as with the first version, you can use `b4 send` to send out the second
version. `b4` automatically bumps the version to `v2`, generates the range-diff
against the previous iteration, and threads the new series as a reply to the
cover letter of the first version.

[[configure-b4]]
=== Configure b4

`b4` can be configured via linkgit:git-config[1]. In addition to that, projects
can have their own set of defaults in `.b4-config` in the root tree, which also
uses Git's config format. The user's configuration always takes precedence over
the per-project defaults.

Refer to the https://b4.docs.kernel.org/en/latest/config.html[b4 config documentation]
for more information on the available options.

[[now-what]]
== My Patch Got Emailed - Now What?

Expand Down Expand Up @@ -1330,18 +1416,42 @@ previous one" patches over 2 days), reviewers would strongly prefer if a
single polished version came 2 days later instead, and that version with
fewer mistakes were the only one they would need to review.

This consideration applies not only when going from the initial patch to v2,
but also to later iterations of the same series. There is no fixed rule for how
long to wait before sending a new version. A useful default is to send at most
one new version of the same patch series per day. This gives multiple reviewers
time to comment, gives reviewers across time zones a fair chance to
participate, lets you batch feedback together, and gives you time to think
through the comments you received. Knowing that you should not immediately send
another version also encourages you to review the patches more carefully before
sending them, catch small mistakes such as typos and off-by-one errors
yourself, and let reviewers spend more of their attention on design,
algorithms, and other substantial issues.

The right timing depends on the topic and the feedback. Larger series usually
need more review time. If the only comments so far are minor, such as typo
fixes, it often makes sense to wait a little longer in case deeper reviews are
still coming. If the comments call for substantial rework, do not rush out an
updated version before you have reviewed the larger changes carefully. Instead,
reply to the review that prompted the rewrite, say that you are preparing a
substantial rework, and mention which parts of the current series will become
obsolete so reviewers can avoid spending time on them until the updated series
is ready.


[[reviewing]]
=== Responding to Reviews

After a few days, you will hopefully receive a reply to your patchset with some
comments. Woohoo! Now you can get back to work.

It's good manners to reply to each comment, notifying the reviewer that you have
made the change suggested, feel the original is better, or that the comment
inspired you to do something a new way which is superior to both the original
and the suggested change. This way reviewers don't need to inspect your v2 to
figure out whether you implemented their comment or not.
It's good manners to reply to each comment in the mailing list discussion
instead of letting the next version of your patch be your only response. Tell
the reviewer whether you plan to make the suggested change, keep the original,
or pursue a different approach. This way reviewers can respond to your reasoning
before you spend time preparing a version they may not agree with, and later do
not need to inspect your v2 to figure out whether you implemented their comment
or not.

Reviewers may ask you about what you wrote in the patchset, either in
the proposed commit log message or in the changes themselves. You
Expand All @@ -1367,6 +1477,11 @@ effect which had not occurred to you. It is always okay to ask for clarification
if you aren't sure why a change was suggested, or what the reviewer is asking
you to do.

When replying to review comments, quote only the parts of the message that are
relevant to your response. It is usually helpful to trim away unrelated context,
such as large portions of the patch that are not being discussed, while keeping
enough quoted text for readers to understand what you are responding to.

Make sure your email client has a plaintext email mode and it is turned on; the
Git list rejects HTML email. Please also follow the mailing list etiquette
outlined in the
Expand Down
Loading