Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
798ddd9
pack-objects: use standard option incompatibility functions
ttaylorr Jun 23, 2025
9809d4a
pack-objects: limit scope in 'add_object_entry_from_pack()'
ttaylorr Jun 23, 2025
67e1a78
pack-objects: factor out handling '--stdin-packs'
ttaylorr Jun 23, 2025
97ec432
pack-objects: declare 'rev_info' for '--stdin-packs' earlier
ttaylorr Jun 23, 2025
d6220cc
pack-objects: perform name-hash traversal for unpacked objects
ttaylorr Jun 23, 2025
8ed5d87
pack-objects: fix typo in 'show_object_pack_hint()'
ttaylorr Jun 23, 2025
63195f0
pack-objects: swap 'show_{object,commit}_pack_hint'
ttaylorr Jun 23, 2025
cd846ba
pack-objects: introduce '--stdin-packs=follow'
ttaylorr Jun 23, 2025
5ee86c2
repack: exclude cruft pack(s) from the MIDX where possible
ttaylorr Jun 23, 2025
ca6daa1
hash: add a constant for the default hash algorithm
bk2204 Jul 1, 2025
1f68f3d
hash: add a constant for the legacy hash algorithm
bk2204 Jul 1, 2025
dc9c16c
builtin: use default hash when outside a repository
bk2204 Jul 1, 2025
667d251
Use legacy hash for legacy formats
bk2204 Jul 1, 2025
d6e616c
setup: use the default algorithm to initialize repo format
bk2204 Jul 1, 2025
c470ac4
t: default to compile-time default hash if not set
bk2204 Jul 1, 2025
6866b42
t1007: choose the built-in hash outside of a repo
bk2204 Jul 1, 2025
f957ce0
t4042: choose the built-in hash outside of a repo
bk2204 Jul 1, 2025
9d619f2
t5300: choose the built-in hash outside of a repo
bk2204 Jul 1, 2025
39153c8
help: add a build option for default hash
bk2204 Jul 1, 2025
c79bb70
Enable SHA-256 by default in breaking changes mode
bk2204 Jul 1, 2025
026f2e3
doc: convert git-log to new documentation format
jnavila Jul 7, 2025
ffe24e0
doc: git-log convert rev-list-description to new doc format
jnavila Jul 7, 2025
0c25856
doc: git-log: convert line range options to new doc format
jnavila Jul 7, 2025
204f730
doc: git-log: convert line range format to new doc format
jnavila Jul 7, 2025
d9d297a
doc: git-log: convert rev list options to new doc format
jnavila Jul 7, 2025
06db6a3
doc: git-log: convert pretty options to new doc format
jnavila Jul 7, 2025
ca484a9
doc: git-log: convert pretty formats to new doc format
jnavila Jul 7, 2025
0b4ccb2
doc: git-log: convert diff options to new doc format
jnavila Jul 7, 2025
b27be10
doc: git-log: convert log config to new doc format
jnavila Jul 7, 2025
a5a727c
remote: detect collisions in remote names
peff Jul 8, 2025
10f048f
meson: stop discovering native version of Python
pks-t Jul 9, 2025
f61f538
meson: stop printing 'https' option twice in our summaries
pks-t Jul 9, 2025
dfc4617
meson: improve summary of auto-detected features
pks-t Jul 9, 2025
e69b3b3
meson: clean up unnecessary variables
pks-t Jul 9, 2025
fcf1014
meson: fix lookup of shell on MINGW64
pks-t Jul 9, 2025
ef03aa4
compat/mingw: allow sigaction(SIGCHLD)
carenas Jul 10, 2025
d83e1ee
daemon: use sigaction() to install child_handler()
carenas Jul 10, 2025
f4fa8a3
doc: correct doc for glob pathspec
rhanneken Jul 8, 2025
164cbd6
meson: update subproject wrappers
pks-t Jul 9, 2025
d3d6493
ci: use Meson's new `--slice` option
pks-t Jul 9, 2025
7d275cd
gpg-interface: expand gpg.program as a path
424ever Jul 11, 2025
a636d39
Merge branch 'bc/use-sha256-by-default-in-3.0'
gitster Jul 21, 2025
205493d
Merge branch 'tb/midx-avoid-cruft-packs'
gitster Jul 21, 2025
5f2b826
Merge branch 'jk/remote-avoid-overlapping-names'
gitster Jul 21, 2025
867d9b1
Merge branch 'ps/meson-cleanups'
gitster Jul 21, 2025
b5e966d
Merge branch 'rh/doc-glob-pathspec-fix'
gitster Jul 21, 2025
fe02fe7
Merge branch 'ja/doc-git-log-markup'
gitster Jul 21, 2025
d80b764
Merge branch 'cb/daemon-reap-children'
gitster Jul 21, 2025
3a112b5
Merge branch 'jb/gpg-program-variable-is-a-pathname'
gitster Jul 21, 2025
3f2a948
The twelfth batch
gitster Jul 21, 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
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ jobs:
path: build
- name: Test
shell: pwsh
run: meson test -C build --list | Select-Object -Skip 1 | Select-String .* | Group-Object -Property { $_.LineNumber % 10 } | Where-Object Name -EQ ${{ matrix.nr }} | ForEach-Object { meson test -C build --no-rebuild --print-errorlogs $_.Group }
run: meson test -C build --no-rebuild --print-errorlogs --slice "$(1+${{ matrix.nr }})/10"

regular:
name: ${{matrix.vector.jobname}} (${{matrix.vector.pool}})
Expand Down
2 changes: 1 addition & 1 deletion .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ test:msvc-meson:
- job: "build:msvc-meson"
artifacts: true
script:
- meson test -C build --list | Select-Object -Skip 1 | Select-String .* | Group-Object -Property { $_.LineNumber % $Env:CI_NODE_TOTAL + 1 } | Where-Object Name -EQ $Env:CI_NODE_INDEX | ForEach-Object { meson test -C build --no-rebuild --print-errorlogs $_.Group; if (!$?) { exit $LASTEXITCODE } }
- meson test -C build --no-rebuild --print-errorlogs --slice $Env:CI_NODE_INDEX/$Env:CI_NODE_TOTAL
parallel: 10

test:fuzz-smoke-tests:
Expand Down
19 changes: 19 additions & 0 deletions Documentation/RelNotes/2.51.0.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,9 @@ Performance, Internal Implementation, Development Support etc.
coming from using a variable with a wrong type to capture the
parsed values.

* Flipping the default hash function to SHA-256 at Git 3.0 boundary
is planned.


Fixes since v2.50
-----------------
Expand Down Expand Up @@ -178,6 +181,20 @@ including security updates, are included in this release.
now removes refs/heads/foo/ if the directory is otherwise not used.
(merge a3a7f20516 ps/refs-files-remove-empty-parent later to maint).

* "pack-objects" has been taught to avoid pointing into objects in
cruft packs from midx.

* "git remote" now detects remote names that overlap with each other
(e.g., remote nickname "outer" and "outer/inner" are used at the
same time), as it will lead to overlapping remote-tracking
branches.
(merge a5a727c448 jk/remote-avoid-overlapping-names later to maint).

* The gpg.program configuration variable, which names a pathname to
the (custom) GPG compatible program, can now be spelled with ~tilde
expansion.
(merge 7d275cd5c0 jb/gpg-program-variable-is-a-pathname later to maint).

* Other code cleanup, docfix, build fix, etc.
(merge b257adb571 lo/my-first-ow-doc-update later to maint).
(merge 8b34b6a220 ly/sequencer-update-squash-is-fixup-only later to maint).
Expand All @@ -201,3 +218,5 @@ including security updates, are included in this release.
(merge 953049eed8 ts/merge-orig-head-doc-fix later to maint).
(merge 0c83bbc704 rj/freebsd-sysinfo-build-fix later to maint).
(merge ad7780b38f ps/doc-pack-refs-auto-with-files-backend-fix later to maint).
(merge f4fa8a3687 rh/doc-glob-pathspec-fix later to maint).
(merge b27be108c8 ja/doc-git-log-markup later to maint).
2 changes: 1 addition & 1 deletion Documentation/asciidoc.conf.in
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ ifdef::doctype-book[]
endif::doctype-book[]

[literal-inlinemacro]
{eval:re.sub(r'(&lt;[-a-zA-Z0-9.]+&gt;)', r'<emphasis>\1</emphasis>', re.sub(r'([\[\s|()>]|^|\]|&gt;)(\.?([-a-zA-Z0-9:+=~@\\\*\/_^\$]+\.?)+|,)',r'\1<literal>\2</literal>', re.sub(r'(\.\.\.?)([^\]$.])', r'<literal>\1</literal>\2', macros.passthroughs[int(attrs['passtext'][1:-1])] if attrs['passtext'][1:-1].isnumeric() else attrs['passtext'][1:-1])))}
{eval:re.sub(r'(&lt;[-a-zA-Z0-9.]+&gt;)', r'<emphasis>\1</emphasis>', re.sub(r'([\[\s|()>]|^|\]|&gt;)(\.?([-a-zA-Z0-9:+=~@\\\*\/_^\$%]+\.?)+|,)',r'\1<literal>\2</literal>', re.sub(r'(\.\.\.?)([^\]$.])', r'<literal>\1</literal>\2', macros.passthroughs[int(attrs['passtext'][1:-1])] if attrs['passtext'][1:-1].isnumeric() else attrs['passtext'][1:-1])))}

endif::backend-docbook[]

Expand Down
4 changes: 2 additions & 2 deletions Documentation/asciidoctor-extensions.rb.in
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ module Git
elsif type == :monospaced
node.text.gsub(/(\.\.\.?)([^\]$\.])/, '<literal>\1</literal>\2')
.gsub(/^\.\.\.?$/, '<literal>\0</literal>')
.gsub(%r{([\[\s|()>.]|^|\]|&gt;)(\.?([-a-zA-Z0-9:+=~@/_^\$\\\*]+\.{0,2})+|,)}, '\1<literal>\2</literal>')
.gsub(%r{([\[\s|()>.]|^|\]|&gt;)(\.?([-a-zA-Z0-9:+=~@/_^\$\\\*%]+\.{0,2})+|,)}, '\1<literal>\2</literal>')
.gsub(/(&lt;[-a-zA-Z0-9.]+&gt;)/, '<emphasis>\1</emphasis>')
else
open, close, supports_phrase = QUOTE_TAGS[type]
Expand Down Expand Up @@ -102,7 +102,7 @@ module Git
if node.type == :monospaced
node.text.gsub(/(\.\.\.?)([^\]$.])/, '<code>\1</code>\2')
.gsub(/^\.\.\.?$/, '<code>\0</code>')
.gsub(%r{([\[\s|()>.]|^|\]|&gt;)(\.?([-a-zA-Z0-9:+=~@,/_^\$\\\*]+\.{0,2})+)}, '\1<code>\2</code>')
.gsub(%r{([\[\s|()>.]|^|\]|&gt;)(\.?([-a-zA-Z0-9:+=~@,/_^\$\\\*%]+\.{0,2})+)}, '\1<code>\2</code>')
.gsub(/(&lt;[-a-zA-Z0-9.]+&gt;)/, '<em>\1</em>')

else
Expand Down
2 changes: 1 addition & 1 deletion Documentation/config/gpg.adoc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
gpg.program::
Use this custom program instead of "`gpg`" found on `$PATH` when
Pathname of the program to use instead of "`gpg`" when
making or verifying a PGP signature. The program must support the
same command-line interface as GPG, namely, to verify a detached
signature, "`gpg --verify $signature - <$file`" is run, and the
Expand Down
47 changes: 26 additions & 21 deletions Documentation/config/log.adoc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
log.abbrevCommit::
If true, makes
`log.abbrevCommit`::
If `true`, make
ifndef::with-breaking-changes[]
linkgit:git-log[1], linkgit:git-show[1], and
linkgit:git-whatchanged[1]
Expand All @@ -10,62 +10,67 @@ endif::with-breaking-changes[]
assume `--abbrev-commit`. You may
override this option with `--no-abbrev-commit`.

log.date::
Set the default date-time mode for the 'log' command.
Setting a value for log.date is similar to using 'git log''s
`log.date`::
Set the default date-time mode for the `log` command.
Setting a value for log.date is similar to using `git log`'s
`--date` option. See linkgit:git-log[1] for details.
+
If the format is set to "auto:foo" and the pager is in use, format
"foo" will be used for the date format. Otherwise, "default" will
be used.

log.decorate::
`log.decorate`::
Print out the ref names of any commits that are shown by the log
command. If 'short' is specified, the ref name prefixes 'refs/heads/',
'refs/tags/' and 'refs/remotes/' will not be printed. If 'full' is
specified, the full ref name (including prefix) will be printed.
If 'auto' is specified, then if the output is going to a terminal,
the ref names are shown as if 'short' were given, otherwise no ref
names are shown. This is the same as the `--decorate` option
of the `git log`.
command. Possible values are:
+
----
`short`;; the ref name prefixes `refs/heads/`, `refs/tags/` and
`refs/remotes/` are not printed.
`full`;; the full ref name (including prefix) are printed.
`auto`;; if the output is going to a terminal,
the ref names are shown as if `short` were given, otherwise no ref
names are shown.
----
+
This is the same as the `--decorate` option of the `git log`.

log.initialDecorationSet::
`log.initialDecorationSet`::
By default, `git log` only shows decorations for certain known ref
namespaces. If 'all' is specified, then show all refs as
decorations.

log.excludeDecoration::
`log.excludeDecoration`::
Exclude the specified patterns from the log decorations. This is
similar to the `--decorate-refs-exclude` command-line option, but
the config option can be overridden by the `--decorate-refs`
option.

log.diffMerges::
`log.diffMerges`::
Set diff format to be used when `--diff-merges=on` is
specified, see `--diff-merges` in linkgit:git-log[1] for
details. Defaults to `separate`.

log.follow::
`log.follow`::
If `true`, `git log` will act as if the `--follow` option was used when
a single <path> is given. This has the same limitations as `--follow`,
i.e. it cannot be used to follow multiple files and does not work well
on non-linear history.

log.graphColors::
`log.graphColors`::
A list of colors, separated by commas, that can be used to draw
history lines in `git log --graph`.

log.showRoot::
`log.showRoot`::
If true, the initial commit will be shown as a big creation event.
This is equivalent to a diff against an empty tree.
Tools like linkgit:git-log[1] or linkgit:git-whatchanged[1], which
normally hide the root commit will now show it. True by default.

log.showSignature::
`log.showSignature`::
If true, makes linkgit:git-log[1], linkgit:git-show[1], and
linkgit:git-whatchanged[1] assume `--show-signature`.

log.mailmap::
`log.mailmap`::
If true, makes linkgit:git-log[1], linkgit:git-show[1], and
linkgit:git-whatchanged[1] assume `--use-mailmap`, otherwise
assume `--no-use-mailmap`. True by default.
7 changes: 7 additions & 0 deletions Documentation/config/repack.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,10 @@ repack.cruftThreads::
a cruft pack and the respective parameters are not given over
the command line. See similarly named `pack.*` configuration
variables for defaults and meaning.

repack.midxMustContainCruft::
When set to true, linkgit:git-repack[1] will unconditionally include
cruft pack(s), if any, in the multi-pack index when invoked with
`--write-midx`. When false, cruft packs are only included in the MIDX
when necessary (e.g., because they might be required to form a
reachability closure with MIDX bitmaps). Defaults to true.
40 changes: 23 additions & 17 deletions Documentation/diff-options.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -37,81 +37,87 @@ endif::git-diff[]
endif::git-format-patch[]

ifdef::git-log[]
-m::
`-m`::
Show diffs for merge commits in the default format. This is
similar to `--diff-merges=on`, except `-m` will
produce no output unless `-p` is given as well.

-c::
`-c`::
Produce combined diff output for merge commits.
Shortcut for `--diff-merges=combined -p`.

--cc::
`--cc`::
Produce dense combined diff output for merge commits.
Shortcut for `--diff-merges=dense-combined -p`.

--dd::
`--dd`::
Produce diff with respect to first parent for both merge and
regular commits.
Shortcut for `--diff-merges=first-parent -p`.

--remerge-diff::
`--remerge-diff`::
Produce remerge-diff output for merge commits.
Shortcut for `--diff-merges=remerge -p`.

--no-diff-merges::
`--no-diff-merges`::
Synonym for `--diff-merges=off`.

--diff-merges=<format>::
`--diff-merges=<format>`::
Specify diff format to be used for merge commits. Default is
{diff-merges-default} unless `--first-parent` is in use, in
which case `first-parent` is the default.
+
The following formats are supported:
+
--
off, none::
`off`::
`none`::
Disable output of diffs for merge commits. Useful to override
implied value.

on, m::
`on`::
`m`::
Make diff output for merge commits to be shown in the default
format. The default format can be changed using
`log.diffMerges` configuration variable, whose default value
is `separate`.

first-parent, 1::
`first-parent`::
`1`::
Show full diff with respect to first parent. This is the same
format as `--patch` produces for non-merge commits.

separate::
`separate`::
Show full diff with respect to each of parents.
Separate log entry and diff is generated for each parent.

combined, c::
`combined`::
`c`::
Show differences from each of the parents to the merge
result simultaneously instead of showing pairwise diff between
a parent and the result one at a time. Furthermore, it lists
only files which were modified from all parents.

dense-combined, cc::
`dense-combined`::
`cc`::
Further compress output produced by `--diff-merges=combined`
by omitting uninteresting hunks whose contents in the parents
have only two variants and the merge result picks one of them
without modification.

remerge, r::
Remerge two-parent merge commits to create a temporary tree
`remerge`::
`r`:: Remerge two-parent merge commits to create a temporary tree
object--potentially containing files with conflict markers
and such. A diff is then shown between that temporary tree
and the actual merge commit.
--
+
The output emitted when this option is used is subject to change, and
so is its interaction with other options (unless explicitly
documented).
--

--combined-all-paths::

`--combined-all-paths`::
Cause combined diffs (used for merge commits) to
list the name of the file from all parents. It thus only has
effect when `--diff-merges=[dense-]combined` is in use, and
Expand Down
Loading