Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
d5a6f50
blame: drop explicit check for commit graph
pks-t Sep 4, 2025
307e307
revision: drop explicit check for commit graph
pks-t Sep 4, 2025
199d452
commit-graph: return the prepared commit graph from `prepare_commit_g…
pks-t Sep 4, 2025
88bc350
commit-graph: return commit graph from `repo_find_commit_pos_in_graph()`
pks-t Sep 4, 2025
62490b6
commit-graph: pass graphs that are to be merged as parameter
pks-t Sep 4, 2025
3b9532d
add -p: mark split hunks as undecided
phillipwood Sep 25, 2025
732650e
add-patch: update hunk splitability after editing
phillipwood Sep 25, 2025
71fd6c6
range-diff: rename other_arg to log_arg
LemmingAvalanche Sep 25, 2025
85bd88a
revision: add rdiff_log_arg to rev_info
LemmingAvalanche Sep 25, 2025
155986b
format-patch: handle range-diff on notes correctly for single patches
LemmingAvalanche Sep 25, 2025
43d5f52
xdiff: delete static forward declarations in xprepare
ezekielnewren Sep 26, 2025
d1c028b
xdiff: delete local variables and initialize/free xdfile_t directly
ezekielnewren Sep 26, 2025
efaf553
xdiff: delete unnecessary fields from xrecord_t and xdfile_t
ezekielnewren Sep 26, 2025
5a12fd2
doc: change the markup of paragraphs following a nested list item
jnavila Sep 27, 2025
666b29b
t7500: make each piece more independent
gitster Sep 28, 2025
3996943
doc: patch-id: fix accidental literal blocks
LemmingAvalanche Sep 29, 2025
7bdeb3a
xdiff: delete superfluous function xdl_get_rec() in xemit
ezekielnewren Sep 26, 2025
7c6ce2e
xdiff: delete local variables that alias fields in xrecord_t
ezekielnewren Sep 26, 2025
f4ea812
xdiff: delete struct diffdata_t
ezekielnewren Sep 26, 2025
5c294dc
xdiff: delete redundant array xdfile_t.ha
ezekielnewren Sep 26, 2025
6d507bd
xdiff: delete fields ha, line, size in xdlclass_t in favor of an xrec…
ezekielnewren Sep 26, 2025
d43d591
xdiff: delete chastore from xdfile_t
ezekielnewren Sep 26, 2025
b7de64a
xdiff: rename rchg -> changed in xdfile_t
ezekielnewren Sep 26, 2025
e385e1b
xdiff: add macros DISCARD(0), KEEP(1), INVESTIGATE(2) in xprepare.c
ezekielnewren Sep 26, 2025
8b9c5d2
xdiff: change type of xdfile_t.changed from char to bool
ezekielnewren Sep 26, 2025
a92d060
doc: convert git-stash.adoc to synopis style
jnavila Oct 5, 2025
0fc3a21
doc: convert git tag to synopsis style
jnavila Oct 5, 2025
0ae23ab
doc: convert git worktree to synopsis style
jnavila Oct 5, 2025
1d8c62a
doc: do not break sentences into "lego" pieces
jnavila Oct 5, 2025
03ef776
string-list: use bool instead of int for "exact_match"
shejialuo Oct 6, 2025
e8a32e7
string-list: replace negative index encoding with "exact_match" param…
shejialuo Oct 6, 2025
51c3385
string-list: change "string_list_find_insert_index" return type to "s…
shejialuo Oct 6, 2025
22e7bc8
refs: enable sign compare warnings check
shejialuo Oct 6, 2025
5b696cb
doc: git-push: clarify intro
jvns Oct 6, 2025
428d7a0
doc: add an UPSTREAM BRANCHES section to pull/push/fetch
jvns Oct 6, 2025
3856d89
doc: git-push: clarify "where to push"
jvns Oct 6, 2025
6e1688f
doc: git-push: clarify "what to push"
jvns Oct 6, 2025
a72504f
doc: git-push: add explanation of `git push origin main`
jvns Oct 6, 2025
84a6bf7
doc: fix indentation of refStorage item in git-config(1)
peff Oct 7, 2025
2d2920c
refs: remove unused headers
KarthikNayak Oct 7, 2025
1ef32f0
refs: move consistency check msg to generic layer
KarthikNayak Oct 7, 2025
f644206
reftable: check for trailing newline in 'tables.list'
KarthikNayak Oct 7, 2025
8112e5c
Documentation/fsck-msgids: remove duplicate msg id
KarthikNayak Oct 7, 2025
5a71321
fsck: order 'fsck_msg_type' alphabetically
KarthikNayak Oct 7, 2025
9051638
reftable: add code to facilitate consistency checks
KarthikNayak Oct 7, 2025
466a3a1
refs/reftable: add fsck check for checking the table name
KarthikNayak Oct 7, 2025
6b4f073
t7500: fix GIT_EDITOR shell snippet
gitster Oct 6, 2025
749d6d1
config: values of pathname type can be prefixed with :(optional)
gitster Sep 28, 2025
ccfcaf3
parseopt: values of pathname type can be prefixed with :(optional)
gitster Sep 28, 2025
fddb484
ci: fix broken jobs on Ubuntu 25.10 caused by switch to sudo-rs(1)
pks-t Oct 10, 2025
7ac1731
Merge branch 'ps/ci-avoid-broken-sudo-on-ubuntu'
gitster Oct 14, 2025
c96add7
Merge branch 'ja/doc-markup-attached-paragraph-fix'
gitster Oct 14, 2025
47c3e03
Merge branch 'ps/commit-graph-per-object-source'
gitster Oct 14, 2025
f50f046
Merge branch 'kn/reftable-consistency-checks'
gitster Oct 14, 2025
ac7d021
The eighteenth batch
gitster Oct 14, 2025
38553df
Merge branch 'jn/doc-synopsis'
gitster Oct 14, 2025
11f5a22
Merge branch 'jn/doc-help-translaing-pretty-options'
gitster Oct 14, 2025
ca5a44b
Merge branch 'kh/doc-patch-id-markup-fix'
gitster Oct 14, 2025
048625a
Merge branch 'sj/string-list'
gitster Oct 14, 2025
243a61d
Merge branch 'pw/add-p-hunk-splitting-fix'
gitster Oct 14, 2025
9ff172d
Merge branch 'en/xdiff-cleanup'
gitster Oct 14, 2025
deb58e4
Merge branch 'kh/format-patch-range-diff-notes'
gitster Oct 14, 2025
1003719
Merge branch 'je/doc-push-upstream'
gitster Oct 14, 2025
44dee53
Merge branch 'jc/optional-path'
gitster Oct 14, 2025
aea86cf
The nineteenth batch
gitster Oct 14, 2025
b4c2504
Merge branch 'kh/you-still-use-whatchanged-fix' into maint-2.51
gitster Oct 14, 2025
f9f50d6
Merge branch 'bc/doc-compat-object-format-not-working' into maint-2.51
gitster Oct 14, 2025
0b4a263
Merge branch 'js/doc-gitk-history' into maint-2.51
gitster Oct 14, 2025
3778b80
Merge branch 'ds/doc-ggg-pr-fork-clarify' into maint-2.51
gitster Oct 14, 2025
94f292f
Merge branch 'jt/clang-format-foreach-wo-space-before-parenthesis' in…
gitster Oct 14, 2025
55282f5
Merge branch 'js/curl-off-t-fixes' into maint-2.51
gitster Oct 14, 2025
5b57e1e
Merge branch 'js/progress-delay-fix' into maint-2.51
gitster Oct 14, 2025
21c2348
Merge branch 'da/cargo-serialize' into maint-2.51
gitster Oct 14, 2025
7d050a5
Merge branch 'ja/asciidoc-doctor-verbatim-fixes' into maint-2.51
gitster Oct 14, 2025
d227777
Merge branch 'ds/doc-count-objects-fix' into maint-2.51
gitster Oct 14, 2025
fb3f8af
Merge branch 'kh/doc-interpret-trailers-markup-fix' into maint-2.51
gitster Oct 14, 2025
12c542b
Merge branch 'kh/doc-config-typofix' into maint-2.51
gitster Oct 14, 2025
3bc7616
Merge branch 'kh/doc-fast-import-markup-fix' into maint-2.51
gitster Oct 14, 2025
2ba32be
Merge branch 'jk/curl-global-trace-components' into maint-2.51
gitster Oct 14, 2025
73f63c3
Merge branch 'ps/ci-avoid-broken-sudo-on-ubuntu' into maint-2.51
gitster Oct 14, 2025
dba6e57
Prepare for 2.51.1
gitster Oct 14, 2025
b660e2d
Sync with 'maint'
gitster Oct 14, 2025
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
46 changes: 46 additions & 0 deletions Documentation/RelNotes/2.51.1.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
Git 2.51.1 Release Notes
========================

There shouldn't be anything exciting to see here. This is primarily
to flush the "do you still use it?" improvements that has landed on
the master front, together with a handful of low-hanging low-impact
fixes that should be safe.


Fixes since Git 2.51.0
----------------------

* The "do you still use it?" message given by a command that is
deeply deprecated and allow us to suggest alternatives has been
updated.

* The compatObjectFormat extension is used to hide an incomplete
feature that is not yet usable for any purpose other than
developing the feature further. Document it as such to discourage
its use by mere mortals.

* Manual page for "gitk" is updated with the current maintainer's
name.

* Update the instruction to use of GGG in the MyFirstContribution
document to say that a GitHub PR could be made against `git/git`
instead of `gitgitgadget/git`.

* Clang-format update to let our control macros formatted the way we
had them traditionally, e.g., "for_each_string_list_item()" without
space before the parentheses.

* A few places where an size_t value was cast to curl_off_t without
checking has been updated to use the existing helper function.

* The start_delayed_progress() function in the progress eye-candy API
did not clear its internal state, making an initial delay value
larger than 1 second ineffective, which has been corrected.

* Makefile tried to run multiple "cargo build" which would not work
very well; serialize their execution to work it around.

* Adjust to the way newer versions of cURL selectivel enables tracing
options, so that our tests can continue to work.

Also contains various documentation updates, code clean-ups and minor fixups.
33 changes: 33 additions & 0 deletions Documentation/RelNotes/2.52.0.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,14 @@ UI, Workflows & Features
* "git fast-import" learned that "--signed-commits=<how>" option that
corresponds to that of "git fast-export".

* Marking a hunk 'selected' in "git add -p" and then splitting made
all the split pieces 'selected'; this has been changed to make them
all 'undecided', which gives better end-user experience.

* Configuration variables that take a pathname as a value
(e.g. blame.ignorerevsfile) can be marked as optional by prefixing
":(optoinal)" before its value.


Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------
Expand Down Expand Up @@ -116,6 +124,9 @@ Performance, Internal Implementation, Development Support etc.
* Dip our toes a bit to (optionally) use Rust implemented helper
called from our C code.

* Documentation for "git log --pretty" options has been updated
to make it easier to translate.


Fixes since v2.51
-----------------
Expand Down Expand Up @@ -298,6 +309,26 @@ including security updates, are included in this release.
* Handling of an empty subdirectory of .git/refs/ in the ref-files
backend has been corrected.

* Our CI script requires "sudo" that can be told to preserve
environment, but Ubuntu replaced with "sudo" with an implementation
that lacks the feature. Work this around by reinstalling the
original version.
(merge fddb484255 ps/ci-avoid-broken-sudo-on-ubuntu later to maint).

* The reftable backend learned to sanity check its on-disk data more
carefully.
(merge 466a3a1afd kn/reftable-consistency-checks later to maint).

* A lot of code clean-up of xdiff.
Split out of a larger topic.
(merge 8b9c5d2e3a en/xdiff-cleanup later to maint).

* "git format-patch --range-diff=... --notes=..." did not drive the
underlying range-diff with correct --notes parameter, ending up
comparing with different set of notes from its main patch output
you would get from "git format-patch --notes=..." for a singleton
patch.

* Other code cleanup, docfix, build fix, etc.
(merge 823d537fa7 kh/doc-git-log-markup-fix later to maint).
(merge cf7efa4f33 rj/t6137-cygwin-fix later to maint).
Expand Down Expand Up @@ -326,3 +357,5 @@ including security updates, are included in this release.
(merge e1d062e8ba ps/odb-clean-stale-wrappers later to maint).
(merge fdd21ba116 mh/doc-credential-url-prefix later to maint).
(merge 1c573a3451 en/doc-merge-tree-describe-merge-base later to maint).
(merge 84a6bf7965 ja/doc-markup-attached-paragraph-fix later to maint).
(merge 399694384b kh/doc-patch-id-markup-fix later to maint).
4 changes: 3 additions & 1 deletion Documentation/config.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -357,7 +357,9 @@ compiled without runtime prefix support, the compiled-in prefix will be
substituted instead. In the unlikely event that a literal path needs to
be specified that should _not_ be expanded, it needs to be prefixed by
`./`, like so: `./%(prefix)/bin`.

+
If prefixed with `:(optional)`, the configuration variable is treated
as if it does not exist, if the named path does not exist.

Variables
~~~~~~~~~
Expand Down
26 changes: 13 additions & 13 deletions Documentation/config/extensions.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ extensions.*::
`core.repositoryFormatVersion` is not `1`. See
linkgit:gitrepository-layout[5].
+
--
compatObjectFormat::
compatObjectFormat:::
Specify a compatibility hash algorithm to use. The acceptable values
are `sha1` and `sha256`. The value specified must be different from the
value of `extensions.objectFormat`. This allows client level
Expand All @@ -19,26 +18,26 @@ Note that the functionality enabled by this extension is incomplete and subject
to change. It currently exists only to allow development and testing of
the underlying feature and is not designed to be enabled by end users.

noop::
noop:::
This extension does not change git's behavior at all. It is useful only
for testing format-1 compatibility.
+
For historical reasons, this extension is respected regardless of the
`core.repositoryFormatVersion` setting.

noop-v1::
noop-v1:::
This extension does not change git's behavior at all. It is useful only
for testing format-1 compatibility.

objectFormat::
objectFormat:::
Specify the hash algorithm to use. The acceptable values are `sha1` and
`sha256`. If not specified, `sha1` is assumed.
+
Note that this setting should only be set by linkgit:git-init[1] or
linkgit:git-clone[1]. Trying to change it after initialization will not
work and will produce hard-to-diagnose issues.

partialClone::
partialClone:::
When enabled, indicates that the repo was created with a partial clone
(or later performed a partial fetch) and that the remote may have
omitted sending certain unwanted objects. Such a remote is called a
Expand All @@ -50,30 +49,31 @@ The value of this key is the name of the promisor remote.
For historical reasons, this extension is respected regardless of the
`core.repositoryFormatVersion` setting.

preciousObjects::
preciousObjects:::
If enabled, indicates that objects in the repository MUST NOT be deleted
(e.g., by `git-prune` or `git repack -d`).
+
For historical reasons, this extension is respected regardless of the
`core.repositoryFormatVersion` setting.

refStorage::
refStorage:::
Specify the ref storage format to use. The acceptable values are:
+
--
include::../ref-storage-format.adoc[]

--
+
Note that this setting should only be set by linkgit:git-init[1] or
linkgit:git-clone[1]. Trying to change it after initialization will not
work and will produce hard-to-diagnose issues.

relativeWorktrees::
relativeWorktrees:::
If enabled, indicates at least one worktree has been linked with
relative paths. Automatically set if a worktree has been created or
repaired with either the `--relative-paths` option or with the
`worktree.useRelativePaths` config set to `true`.

worktreeConfig::
worktreeConfig:::
If enabled, then worktrees will load config settings from the
`$GIT_DIR/config.worktree` file in addition to the
`$GIT_COMMON_DIR/config` file. Note that `$GIT_COMMON_DIR` and
Expand All @@ -87,11 +87,12 @@ When enabling this extension, you must be careful to move
certain values from the common config file to the main working tree's
`config.worktree` file, if present:
+
--
* `core.worktree` must be moved from `$GIT_COMMON_DIR/config` to
`$GIT_COMMON_DIR/config.worktree`.
* If `core.bare` is true, then it must be moved from `$GIT_COMMON_DIR/config`
to `$GIT_COMMON_DIR/config.worktree`.

--
+
It may also be beneficial to adjust the locations of `core.sparseCheckout`
and `core.sparseCheckoutCone` depending on your desire for customizable
Expand All @@ -104,4 +105,3 @@ details.
+
For historical reasons, this extension is respected regardless of the
`core.repositoryFormatVersion` setting.
--
29 changes: 19 additions & 10 deletions Documentation/config/stash.adoc
Original file line number Diff line number Diff line change
@@ -1,19 +1,28 @@
stash.index::
ifndef::git-stash[]
:see-show: See the description of the 'show' command in linkgit:git-stash[1].
endif::git-stash[]

ifdef::git-stash[]
:see-show:
endif::git-stash[]

`stash.index`::
If this is set to true, `git stash apply` and `git stash pop` will
behave as if `--index` was supplied. Defaults to false. See the
descriptions in linkgit:git-stash[1].
behave as if `--index` was supplied. Defaults to false.
ifndef::git-stash[]
See the descriptions in linkgit:git-stash[1].
endif::git-stash[]

stash.showIncludeUntracked::
`stash.showIncludeUntracked`::
If this is set to true, the `git stash show` command will show
the untracked files of a stash entry. Defaults to false. See
the description of the 'show' command in linkgit:git-stash[1].
the untracked files of a stash entry. Defaults to false. {see-show}

stash.showPatch::
`stash.showPatch`::
If this is set to true, the `git stash show` command without an
option will show the stash entry in patch form. Defaults to false.
See the description of the 'show' command in linkgit:git-stash[1].
{see-show}

stash.showStat::
`stash.showStat`::
If this is set to true, the `git stash show` command without an
option will show a diffstat of the stash entry. Defaults to true.
See the description of the 'show' command in linkgit:git-stash[1].
{see-show}
22 changes: 14 additions & 8 deletions Documentation/config/tag.adoc
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
tag.forceSignAnnotated::
`tag.forceSignAnnotated`::
A boolean to specify whether annotated tags created should be GPG signed.
If `--annotate` is specified on the command line, it takes
precedence over this option.

tag.sort::
This variable controls the sort ordering of tags when displayed by
linkgit:git-tag[1]. Without the "--sort=<value>" option provided, the
value of this variable will be used as the default.
`tag.sort`::
ifdef::git-tag[]
This variable controls the sort ordering of tags when displayed by `git-tag`.
endif::git-tag[]
ifndef::git-tag[]
This variable controls the sort ordering of tags when displayed by
linkgit:git-tag[1].
endif::git-tag[]
Without the `--sort=<value>` option provided, the value of this variable will
be used as the default.

tag.gpgSign::
`tag.gpgSign`::
A boolean to specify whether all tags should be GPG signed.
Use of this option when running in an automated script can
result in a large number of tags being signed. It is therefore
convenient to use an agent to avoid typing your gpg passphrase
convenient to use an agent to avoid typing your GPG passphrase
several times. Note that this option doesn't affect tag signing
behavior enabled by "-u <keyid>" or "--local-user=<keyid>" options.
behavior enabled by `-u <keyid>` or `--local-user=<keyid>` options.
14 changes: 7 additions & 7 deletions Documentation/config/worktree.adoc
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
worktree.guessRemote::
`worktree.guessRemote`::
If no branch is specified and neither `-b` nor `-B` nor
`--detach` is used, then `git worktree add` defaults to
creating a new branch from HEAD. If `worktree.guessRemote` is
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.
back to creating a new branch from the current `HEAD`.

worktree.useRelativePaths::
Link worktrees using relative paths (when "true") or absolute
paths (when "false"). This is particularly useful for setups
`worktree.useRelativePaths`::
Link worktrees using relative paths (when "`true`") or absolute
paths (when "`false`"). This is particularly useful for setups
where the repository and worktrees may be moved between
different locations or environments. Defaults to "false".
different locations or environments. Defaults to "`false`".
+
Note that setting `worktree.useRelativePaths` to "true" implies enabling the
Note that setting `worktree.useRelativePaths` to "`true`" implies enabling the
`extensions.relativeWorktrees` config (see linkgit:git-config[1]),
thus making it incompatible with older versions of Git.
6 changes: 3 additions & 3 deletions Documentation/fsck-msgids.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@
`badReferentName`::
(ERROR) The referent name of a symref is invalid.

`badReftableTableName`::
(WARN) A reftable table has an invalid name.

`badTagName`::
(INFO) A tag has an invalid format.

Expand Down Expand Up @@ -104,9 +107,6 @@
`gitmodulesParse`::
(INFO) Could not parse `.gitmodules` blob.

`gitmodulesLarge`;
(ERROR) `.gitmodules` blob is too large to parse.

`gitmodulesPath`::
(ERROR) `.gitmodules` path is invalid.

Expand Down
43 changes: 23 additions & 20 deletions Documentation/git-patch-id.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -33,36 +33,39 @@ OPTIONS
--verbatim::
Calculate the patch-id of the input as it is given, do not strip
any whitespace.

This is the default if patchid.verbatim is true.
+
This is the default if patchid.verbatim is true.

--stable::
Use a "stable" sum of hashes as the patch ID. With this option:
- Reordering file diffs that make up a patch does not affect the ID.
In particular, two patches produced by comparing the same two trees
with two different settings for "-O<orderfile>" result in the same
patch ID signature, thereby allowing the computed result to be used
as a key to index some meta-information about the change between
the two trees;

- Result is different from the value produced by git 1.9 and older
or produced when an "unstable" hash (see --unstable below) is
configured - even when used on a diff output taken without any use
of "-O<orderfile>", thereby making existing databases storing such
"unstable" or historical patch-ids unusable.

- All whitespace within the patch is ignored and does not affect the id.

This is the default if patchid.stable is set to true.
+
--
- Reordering file diffs that make up a patch does not affect the ID.
In particular, two patches produced by comparing the same two trees
with two different settings for "-O<orderfile>" result in the same
patch ID signature, thereby allowing the computed result to be used
as a key to index some meta-information about the change between
the two trees;

- Result is different from the value produced by git 1.9 and older
or produced when an "unstable" hash (see --unstable below) is
configured - even when used on a diff output taken without any use
of "-O<orderfile>", thereby making existing databases storing such
"unstable" or historical patch-ids unusable.

- All whitespace within the patch is ignored and does not affect the id.
--
+
This is the default if patchid.stable is set to true.

--unstable::
Use an "unstable" hash as the patch ID. With this option,
the result produced is compatible with the patch-id value produced
by git 1.9 and older and whitespace is ignored. Users with pre-existing
databases storing patch-ids produced by git 1.9 and older (who do not deal
with reordered patches) may want to use this option.

This is the default.
+
This is the default.

GIT
---
Expand Down
Loading