Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
31d1989
doc: log: fix --decorate description list
LemmingAvalanche Apr 27, 2026
b635fd0
doc: log: use the same delimiter in description list
LemmingAvalanche Apr 27, 2026
4a9e097
t2000: consolidate second scenario into a single test block
alibaba0010 Apr 29, 2026
bfd057b
Merge branch 'en/xdiff-cleanup-3' into pw/xdiff-shrink-memory-consump…
gitster May 5, 2026
a814112
xdiff: reduce size of action arrays
phillipwood May 4, 2026
53d1388
xdiff: cleanup xdl_clean_mmatch()
phillipwood May 4, 2026
c8eb18f
xprepare: simplify error handling
phillipwood May 4, 2026
dca97e7
xdiff: reduce the size of array
phillipwood May 4, 2026
8a349a1
refs: remove unused typedef 'ref_transaction_commit_fn'
KarthikNayak May 4, 2026
d194dff
refs: introduce `ref_store_init_options`
KarthikNayak May 4, 2026
cc42c88
refs: extract out reflog config to generic layer
KarthikNayak May 4, 2026
e99e98e
refs: return `ref_transaction_error` from `ref_transaction_update()`
KarthikNayak May 4, 2026
637989c
update-ref: move `print_rejected_refs()` up
KarthikNayak May 4, 2026
e31a104
update-ref: handle rejections while adding updates
KarthikNayak May 4, 2026
b32c23b
refs: move object parsing to the generic layer
KarthikNayak May 4, 2026
ad0f76d
refs: add peeled object ID to the `ref_update` struct
KarthikNayak May 4, 2026
3ab3d50
refs: use peeled tag values in reference backends
KarthikNayak May 4, 2026
663d7ab
http: reject unsupported proxy URL schemes
ALiwoto May 5, 2026
a8f9696
connect: rename enum protocol to url_scheme
matheusmoreira May 2, 2026
51fcf73
url: move url_is_local_not_ssh to url.h
matheusmoreira May 2, 2026
d48e36a
url: move scheme detection to URL header/source
matheusmoreira May 2, 2026
46d6fb7
url: return URL_SCHEME_UNKNOWN instead of dying
matheusmoreira May 2, 2026
18a8281
urlmatch: define url_parse function
matheusmoreira May 2, 2026
533eb14
builtin: create url-parse command
matheusmoreira May 2, 2026
d1671b1
doc: describe the url-parse builtin
matheusmoreira May 2, 2026
0e2149c
t9904: add tests for the new url-parse builtin
matheusmoreira May 2, 2026
bd6ec07
Merge branch 'js/objects-larger-than-4gb-on-windows' into jc/ci-enabl…
gitster May 11, 2026
5ba8291
ci: enable EXPENSIVE for contributor builds
gitster May 10, 2026
2431f5e
shallow: fix relative deepen on non-shallow repositories
spog May 11, 2026
b5d9490
Merge branch 'za/t2000-modernise-more'
gitster May 21, 2026
2a098fd
Merge branch 'kn/refs-generic-helpers'
gitster May 21, 2026
9805be5
Merge branch 'kh/doc-log-decorate-list'
gitster May 21, 2026
93f0e87
Merge branch 'pw/xdiff-shrink-memory-consumption'
gitster May 21, 2026
6862131
Merge branch 'mm/git-url-parse'
gitster May 21, 2026
490efd7
Merge branch 'aw/validate-proxy-url-scheme'
gitster May 21, 2026
ed24c71
Merge branch 'jc/ci-enable-expensive'
gitster May 21, 2026
186602e
Merge branch 'sp/shallow-deepen-on-non-shallow-repo-fix'
gitster May 21, 2026
fb99977
The 6th batch
gitster May 21, 2026
999f141
Merge branch 'ps/clang-w-glibc-2.43-and-_Generic' into maint-2.54
gitster May 21, 2026
c077621
Merge branch 'jk/revert-aa-reap-transport-child-processes' into maint…
gitster May 21, 2026
b09e576
Merge branch 'js/ci-github-actions-update' into maint-2.54
gitster May 21, 2026
f2b9cf7
Merge branch 'js/t5564-socks-use-short-path' into maint-2.54
gitster May 21, 2026
f81929c
Merge branch 'js/maintenance-fix-deadlock-on-win10' into maint-2.54
gitster May 21, 2026
b209000
Merge branch 'js/mingw-no-nedmalloc' into maint-2.54
gitster May 21, 2026
65ab028
Merge branch 'jh/alias-i18n-fixes' into maint-2.54
gitster May 21, 2026
53a5b34
Merge branch 'jc/t5551-fix-expensive' into maint-2.54
gitster May 21, 2026
a89346e
Start preparing for 2.54.1
gitster May 21, 2026
aec3f58
Sync with 'maint'
gitster May 21, 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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,7 @@
/git-update-server-info
/git-upload-archive
/git-upload-pack
/git-url-parse
/git-var
/git-verify-commit
/git-verify-pack
Expand Down
29 changes: 29 additions & 0 deletions Documentation/RelNotes/2.54.1.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
Git v2.54.1 Release Notes
=========================

This release is primarily to merge fixes accumulated on the 'master'
front to prepare for 2.55 release that are still relevant to 2.54.x
maintenance track.

Fixes since v2.54
-----------------

* Headers from glibc 2.43 when used with clang does not allow
disabling C11 language features, causing build failures..

* Revert a recent change that introduced a regression to help mksh users.

* Update various GitHub Actions versions.

* Avoid hitting the pathname limit for socks proxy socket during the
test.

* To help Windows 10 installations, avoid removing files whose
contents are still mmap()'ed.

* Stop using unmaintained custom allocator in Windows build which was
the last user of the code.

* Further update to the i18n alias support to avoid regressions.

Also contains minor documentation updates and code clean-ups.
29 changes: 21 additions & 8 deletions Documentation/RelNotes/2.55.0.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,12 @@ UI, Workflows & Features

* "git history" learned "fixup" command.

* The internal URL parsing logic has been made accessible via a new
subcommand "git url-parse".

* Misspelt proxy URL (e.g., httt://...) did not trigger any warning
or failure, which has been corrected.


Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------
Expand All @@ -41,6 +47,15 @@ Performance, Internal Implementation, Development Support etc.

* Use a larger buffer size in the code paths to ingest pack stream.

* Refactor service routines in the ref subsystem backends.

* Shrink wasted memory in Myers diff that does not account for common
prefix and suffix removal.

* Enable expensive tests to catch topics that may cause breakages on
integration branches closer to their origin in the contributor PR
builds.


Fixes since v2.54
-----------------
Expand All @@ -60,18 +75,14 @@ Fixes since v2.54
(merge ffe8005b9d ps/test-set-e-clean later to maint).

* Revert a recent change that introduced a regression to help mksh users.
(merge 8b44deebaf jk/revert-aa-reap-transport-child-processes later to maint).

* Update various GitHub Actions versions.
(merge 4a6ed9d09f js/ci-github-actions-update later to maint).

* Avoid hitting the pathname limit for socks proxy socket during the
test..
(merge b33bea27a2 js/t5564-socks-use-short-path later to maint).

* To help Windows 10 installations, avoid removing files whose
contents are still mmap()'ed.
(merge 4bb086cfa2 js/maintenance-fix-deadlock-on-win10 later to maint).

* The 'git backfill' command now rejects revision-limiting options that
are incompatible with its operation, uses standard documentation for
Expand All @@ -84,7 +95,6 @@ Fixes since v2.54

* Headers from glibc 2.43 when used with clang does not allow
disabling C11 language features, causing build failures..
(merge 0a6d29090c ps/clang-w-glibc-2.43-and-_Generic later to maint).

* The 'http.emptyAuth=auto' configuration now correctly attempts
Negotiate authentication before falling back to manual credentials.
Expand Down Expand Up @@ -116,7 +126,6 @@ Fixes since v2.54

* Stop using unmaintained custom allocator in Windows build which was
the last user of the code.
(merge 0b72550110 js/mingw-no-nedmalloc later to maint).

* The computation to shorten the filenames shown in diffstat measured
width of individual UTF-8 characters to add up, but forgot to take
Expand All @@ -134,14 +143,18 @@ Fixes since v2.54
(merge 7735d7eee3 bc/sign-commit-with-custom-encoding later to maint).

* Further update to the i18n alias support to avoid regressions.
(merge 21186cf9bb jh/alias-i18n-fixes later to maint).

* "git fetch --deepen=<n>" in a full clone truncated the history to <n>
commits deep, which has been corrected to be a no-op instead.
(merge 2431f5e0e5 sp/shallow-deepen-on-non-shallow-repo-fix later to maint).

* Other code cleanup, docfix, build fix, etc.
(merge 80f4b802e9 ja/doc-difftool-synopsis-style later to maint).
(merge b96490241e jc/doc-timestamps-in-stat later to maint).
(merge 66ae1a48ec jc/t5551-fix-expensive later to maint).
(merge ef85286e51 ss/t7004-unhide-git-failures later to maint).
(merge 7584d10bc2 mf/format-patch-cover-letter-format-docfix later to maint).
(merge 8547908eb3 pw/rename-to-get-current-worktree later to maint).
(merge 890229b3f3 sg/t6112-unwanted-tilde-expansion-fix later to maint).
(merge ab9753e7bc kh/doc-restore-double-underscores-fix later to maint).
(merge 4a9e097228 za/t2000-modernise-more later to maint).
(merge b635fd0725 kh/doc-log-decorate-list later to maint).
6 changes: 3 additions & 3 deletions Documentation/git-log.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,14 @@ OPTIONS
Print out the ref names of any commits that are shown. 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) is printed.
`auto`:: if the output is going to a terminal, the ref names
`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.
----
--
+
The option `--decorate` is short-hand for `--decorate=short`. Default to
configuration value of `log.decorate` if configured, otherwise, `auto`.
Expand Down
80 changes: 80 additions & 0 deletions Documentation/git-url-parse.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
git-url-parse(1)
================

NAME
----
git-url-parse - Parse and extract git URL components

SYNOPSIS
--------
[synopsis]
git url-parse [-c <component>] [--] <url>...

DESCRIPTION
-----------

Git supports many ways to specify URLs, some of them non-standard.
For example, git supports the scp style [user@]host:[path] format.
This command eases interoperability with git URLs by enabling the
parsing and extraction of the components of all git URLs.

Any syntactically valid URL is parsed, even if the scheme is not one
git supports for fetching or pushing.

OPTIONS
-------

`-c <component>`::
`--component <component>`::
Extract the _<component>_ component from the given Git URLs.
_<component>_ can be one of:
`scheme`, `user`, `password`, `host`, `port`, `path`.

OUTPUT
------

When `--component` is given, the requested component of each URL
is printed on its own line, in the order the URLs were given. If
the URL has no such component (for example, a port in a URL that
does not specify one), an empty line is printed in its place.

When `--component` is not given, no output is produced. The exit
status is zero if every URL parses successfully and non-zero
otherwise, allowing the command to be used purely as a validator.

EXAMPLES
--------

* Print the host name:
+
------------
$ git url-parse --component host https://example.com/user/repo
example.com
------------

* Print the path:
+
------------
$ git url-parse --component path https://example.com/user/repo
/user/repo
$ git url-parse --component path example.com:~user/repo
~user/repo
$ git url-parse --component path example.com:user/repo
/user/repo
------------

* Validate URLs without outputting anything:
+
------------
$ git url-parse https://example.com/user/repo example.com:~user/repo
------------

SEE ALSO
--------
linkgit:git-clone[1],
linkgit:git-fetch[1],
linkgit:git-config[1]

GIT
---
Part of the linkgit:git[1] suite
1 change: 1 addition & 0 deletions Documentation/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@ manpages = {
'git-update-server-info.adoc' : 1,
'git-upload-archive.adoc' : 1,
'git-upload-pack.adoc' : 1,
'git-url-parse.adoc' : 1,
'git-var.adoc' : 1,
'git-verify-commit.adoc' : 1,
'git-verify-pack.adoc' : 1,
Expand Down
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -1495,6 +1495,7 @@ BUILTIN_OBJS += builtin/update-ref.o
BUILTIN_OBJS += builtin/update-server-info.o
BUILTIN_OBJS += builtin/upload-archive.o
BUILTIN_OBJS += builtin/upload-pack.o
BUILTIN_OBJS += builtin/url-parse.o
BUILTIN_OBJS += builtin/var.o
BUILTIN_OBJS += builtin/verify-commit.o
BUILTIN_OBJS += builtin/verify-pack.o
Expand Down
1 change: 1 addition & 0 deletions builtin.h
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,7 @@ int cmd_update_server_info(int argc, const char **argv, const char *prefix, stru
int cmd_upload_archive(int argc, const char **argv, const char *prefix, struct repository *repo);
int cmd_upload_archive_writer(int argc, const char **argv, const char *prefix, struct repository *repo);
int cmd_upload_pack(int argc, const char **argv, const char *prefix, struct repository *repo);
int cmd_url_parse(int argc, const char **argv, const char *prefix, struct repository *repo);
int cmd_var(int argc, const char **argv, const char *prefix, struct repository *repo);
int cmd_verify_commit(int argc, const char **argv, const char *prefix, struct repository *repo);
int cmd_verify_tag(int argc, const char **argv, const char *prefix, struct repository *repo);
Expand Down
22 changes: 13 additions & 9 deletions builtin/receive-pack.c
Original file line number Diff line number Diff line change
Expand Up @@ -1642,23 +1642,27 @@ static const char *update(struct command *cmd, struct shallow_info *si)
ret = NULL; /* good */
}
strbuf_release(&err);
}
else {
} else {
enum ref_transaction_error tx_err;
struct strbuf err = STRBUF_INIT;
if (shallow_update && si->shallow_ref[cmd->index] &&
update_shallow_ref(cmd, si)) {
ret = "shallow error";
goto out;
}

if (ref_transaction_update(transaction,
namespaced_name,
new_oid, old_oid,
NULL, NULL,
0, "push",
&err)) {
tx_err = ref_transaction_update(transaction,
namespaced_name,
new_oid, old_oid,
NULL, NULL,
0, "push",
&err);
if (tx_err) {
rp_error("%s", err.buf);
ret = "failed to update ref";
if (tx_err == REF_TRANSACTION_ERROR_GENERIC)
ret = "failed to update ref";
else
ret = ref_transaction_error_msg(tx_err);
} else {
ret = NULL; /* good */
}
Expand Down
Loading