Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
e417277
xdiff: re-diff shifted change groups when using histogram algorithm
ychin Mar 2, 2026
6e4d923
add-patch: split out header from "add-interactive.h"
pks-t Mar 2, 2026
e3d4d77
add-patch: split out `struct interactive_options`
pks-t Mar 2, 2026
d51b61f
add-patch: remove dependency on "add-interactive" subsystem
pks-t Mar 2, 2026
0c5583a
add-patch: add support for in-memory index patching
pks-t Mar 2, 2026
48f6d92
add-patch: allow disabling editing of hunks
pks-t Mar 2, 2026
a021e4f
cache-tree: allow writing in-memory index as tree
pks-t Mar 2, 2026
98f8394
builtin/history: split out extended function to create commits
pks-t Mar 2, 2026
d563ece
builtin/history: implement "split" subcommand
pks-t Mar 2, 2026
4f6a803
diff: document -U without <n> as using default context
Mar 10, 2026
233545c
commit: remove unused forward declaration
jltobler Mar 13, 2026
86ebf87
gpg-interface: allow sign_buffer() to use default signing key
jltobler Mar 13, 2026
ee66c79
fast-import: add mode to sign commits with invalid signatures
jltobler Mar 13, 2026
d39cef3
t0410: modernize delete_object helper
SiddharthShrimali Mar 13, 2026
9f4cdf5
upload-pack: fix debug statement when flushing packfile data
pks-t Mar 13, 2026
5d4b7dd
upload-pack: adapt keepalives based on buffering
pks-t Mar 13, 2026
c422ec8
upload-pack: prefer flushing data over sending keepalive
pks-t Mar 13, 2026
a5816e4
upload-pack: reduce lock contention when writing packfile data
pks-t Mar 13, 2026
3b9b2c2
compat/posix: introduce writev(3p) wrapper
pks-t Mar 13, 2026
1970fce
wrapper: introduce writev(3p) wrappers
pks-t Mar 13, 2026
26986f4
sideband: use writev(3p) to send pktlines
pks-t Mar 13, 2026
a1118c0
csum-file: introduce `hashfd_ext()`
pks-t Mar 13, 2026
2bf8f36
csum-file: drop `hashfd_throughput()`
pks-t Mar 13, 2026
835e0aa
builtin/pack-objects: reduce lock contention when writing packfile data
pks-t Mar 13, 2026
2f05039
t/pack-refs-tests: use test_path_is_missing
ritesh-jd Mar 15, 2026
6e84af9
Merge branch 'dd/list-objects-filter-options-wo-strbuf-split' into dd…
gitster Mar 15, 2026
65fec23
coccinelle: detect struct strbuf passed by value
deveshidwivedi Mar 15, 2026
8f8e1b0
stash: do not pass strbuf by value
deveshidwivedi Mar 15, 2026
3cf4024
clar: update to fix compilation on platforms without PATH_MAX
pks-t Mar 16, 2026
5514f14
doc: fix git grep args order in Quick Reference
guillaume-jcb Mar 16, 2026
48430e4
t0008: improve test cleanup to fix failing test
Mroik Mar 16, 2026
d893f3e
t4200: convert test -[df] checks to test_path_* helpers
prashant2007-wq Mar 16, 2026
2594747
transport: plug leaks in transport_color_config()
peff Mar 14, 2026
410ab9a
Merge branch 'jt/fast-import-sign-again'
gitster Mar 24, 2026
dd33e73
Merge branch 'ss/t0410-delete-object-cleanup'
gitster Mar 24, 2026
49e6a7c
Merge branch 'ps/history-split'
gitster Mar 24, 2026
04a7124
Merge branch 'gj/user-manual-fix-grep-example'
gitster Mar 24, 2026
9d9cd38
Merge branch 'ps/clar-wo-path-max'
gitster Mar 24, 2026
b9c55cf
Merge branch 'rj/pack-refs-tests-path-is-helpers'
gitster Mar 24, 2026
067ee91
Merge branch 'jk/transport-color-leakfix'
gitster Mar 24, 2026
448cea8
Merge branch 'pb/t4200-test-path-is-helpers'
gitster Mar 24, 2026
7f13e5c
Merge branch 'mf/t0008-cleanup'
gitster Mar 24, 2026
231f810
Merge branch 'yc/histogram-hunk-shift-fix'
gitster Mar 24, 2026
8023abc
Merge branch 'ps/upload-pack-buffer-more-writes'
gitster Mar 24, 2026
c006399
Merge branch 'ty/doc-diff-u-wo-number'
gitster Mar 24, 2026
253ddb6
Merge branch 'dd/cocci-do-not-pass-strbuf-by-value'
gitster Mar 24, 2026
ce74208
The 20th batch
gitster Mar 24, 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
30 changes: 30 additions & 0 deletions Documentation/RelNotes/2.54.0.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,12 @@ UI, Workflows & Features
* "git rebase" learns "--trailer" command to drive the
interpret-trailers machinery.

* "git fast-import" learned to optionally replace signature on
commits whose signatures get invalidated due to replaying by
signing afresh.

* "git history" learned the "split" subcommand.


Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------
Expand Down Expand Up @@ -212,6 +218,15 @@ Performance, Internal Implementation, Development Support etc.

* Adjust test-lint to allow "sed -E" to use ERE in the patterns.

* Clar (unit testing framework) update from the upstream.

* Reduce system overhead "git upload-pack" spends on relaying "git
pack-objects" output to the "git fetch" running on the other end of
the connection.

* Add a coccinelle rule to break the build when "struct strbuf" gets
passed by value.


Fixes since v2.53
-----------------
Expand Down Expand Up @@ -358,6 +373,17 @@ Fixes since v2.53
available since OpenSSL 1.1 since 2016 or so.
(merge 6392a0b75d bb/imap-send-openssl-4.0-prep later to maint).

* Fix an example in the user-manual.
(merge 5514f14617 gj/user-manual-fix-grep-example later to maint).

* The final clean-up phase of the diff output could turn the result of
histogram diff algorithm suboptimal, which has been corrected.
(merge e417277ae9 yc/histogram-hunk-shift-fix later to maint).

* "git diff -U<num>" was too lenient in its command line parsing and
took an empty string as a valid <num>.
(merge 4f6a803aba ty/doc-diff-u-wo-number later to maint).

* Other code cleanup, docfix, build fix, etc.
(merge d79fff4a11 jk/remote-tracking-ref-leakfix later to maint).
(merge 7a747f972d dd/t5403-modernise later to maint).
Expand Down Expand Up @@ -401,3 +427,7 @@ Fixes since v2.53
(merge 35f220b639 ss/submodule--helper-use-xmalloc later to maint).
(merge 02cbae61df cf/constness-fixes later to maint).
(merge 69efd53c81 ms/t7605-test-path-is-helpers later to maint).
(merge d39cef3a1a ss/t0410-delete-object-cleanup later to maint).
(merge 2f05039717 rj/pack-refs-tests-path-is-helpers later to maint).
(merge 2594747ad1 jk/transport-color-leakfix later to maint).
(merge 48430e44ac mf/t0008-cleanup later to maint).
6 changes: 4 additions & 2 deletions Documentation/diff-context-options.adoc
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
`-U<n>`::
`--unified=<n>`::
Generate diffs with _<n>_ lines of context. Defaults to `diff.context`
or 3 if the config option is unset.
Generate diffs with _<n>_ lines of context. The number of context
lines defaults to `diff.context` or 3 if the configuration variable
is unset. (`-U` without `<n>` is silently accepted as a synonym for
`-p` due to a historical accident).

`--inter-hunk-context=<n>`::
Show the context between diff hunks, up to the specified _<number>_
Expand Down
6 changes: 4 additions & 2 deletions Documentation/diff-options.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,10 @@ endif::git-log[]

`-U<n>`::
`--unified=<n>`::
Generate diffs with _<n>_ lines of context instead of
the usual three.
Generate diffs with _<n>_ lines of context. The number of context
lines defaults to `diff.context` or 3 if the configuration variable
is unset. (`-U` without `<n>` is silently accepted as a synonym for
`-p` due to a historical accident).
ifndef::git-format-patch[]
Implies `--patch`.
endif::git-format-patch[]
Expand Down
4 changes: 4 additions & 0 deletions Documentation/git-fast-import.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,10 @@ already trusted to run their own code.
* `strip-if-invalid` will check signatures and, if they are invalid,
will strip them and display a warning. The validation is performed
in the same way as linkgit:git-verify-commit[1] does it.
* `sign-if-invalid[=<keyid>]`, similar to `strip-if-invalid`, verifies
commit signatures and replaces invalid signatures with newly created ones.
Valid signatures are left unchanged. If `<keyid>` is provided, that key is
used for signing; otherwise the configured default signing key is used.

Options for Frontends
~~~~~~~~~~~~~~~~~~~~~
Expand Down
62 changes: 62 additions & 0 deletions Documentation/git-history.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ SYNOPSIS
--------
[synopsis]
git history reword <commit> [--dry-run] [--update-refs=(branches|head)]
git history split <commit> [--dry-run] [--update-refs=(branches|head)] [--] [<pathspec>...]

DESCRIPTION
-----------
Expand Down Expand Up @@ -57,6 +58,26 @@ The following commands are available to rewrite history in different ways:
details of this commit remain unchanged. This command will spawn an
editor with the current message of that commit.

`split <commit> [--] [<pathspec>...]`::
Interactively split up <commit> into two commits by choosing
hunks introduced by it that will be moved into the new split-out
commit. These hunks will then be written into a new commit that
becomes the parent of the previous commit. The original commit
stays intact, except that its parent will be the newly split-out
commit.
+
The commit messages of the split-up commits will be asked for by launching
the configured editor. Authorship of the commit will be the same as for the
original commit.
+
If passed, _<pathspec>_ can be used to limit which changes shall be split out
of the original commit. Files not matching any of the pathspecs will remain
part of the original commit. For more details, see the 'pathspec' entry in
linkgit:gitglossary[7].
+
It is invalid to select either all or no hunks, as that would lead to
one of the commits becoming empty.

OPTIONS
-------

Expand All @@ -72,6 +93,47 @@ OPTIONS
descendants of the original commit will be rewritten. With `head`, only
the current `HEAD` reference will be rewritten. Defaults to `branches`.

EXAMPLES
--------

Split a commit
~~~~~~~~~~~~~~

----------
$ git log --stat --oneline
3f81232 (HEAD -> main) original
bar | 1 +
foo | 1 +
2 files changed, 2 insertions(+)

$ git history split HEAD
diff --git a/bar b/bar
new file mode 100644
index 0000000..5716ca5
--- /dev/null
+++ b/bar
@@ -0,0 +1 @@
+bar
(1/1) Stage addition [y,n,q,a,d,p,?]? y

diff --git a/foo b/foo
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/foo
@@ -0,0 +1 @@
+foo
(1/1) Stage addition [y,n,q,a,d,p,?]? n

$ git log --stat --oneline
7cebe64 (HEAD -> main) original
foo | 1 +
1 file changed, 1 insertion(+)
d1582f3 split-out commit
bar | 1 +
1 file changed, 1 insertion(+)
----------

GIT
---
Part of the linkgit:git[1] suite
2 changes: 1 addition & 1 deletion Documentation/user-manual.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -4466,7 +4466,7 @@ $ git show # most recent commit
$ git diff v2.6.15..v2.6.16 # diff between two tagged versions
$ git diff v2.6.15..HEAD # diff with current head
$ git grep "foo()" # search working directory for "foo()"
$ git grep v2.6.15 "foo()" # search old tree for "foo()"
$ git grep "foo()" v2.6.15 # search old tree for "foo()"
$ git show v2.6.15:a.txt # look at old version of a.txt
-----------------------------------------------

Expand Down
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2027,6 +2027,10 @@ ifdef NO_PREAD
COMPAT_CFLAGS += -DNO_PREAD
COMPAT_OBJS += compat/pread.o
endif
ifdef NO_WRITEV
COMPAT_CFLAGS += -DNO_WRITEV
COMPAT_OBJS += compat/writev.o
endif
ifdef NO_FAST_WORKING_DIRECTORY
BASIC_CFLAGS += -DNO_FAST_WORKING_DIRECTORY
endif
Expand Down
Loading