Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
5ae594f
doc: fix `update-ref` `symref-create` formatting
sambostock Dec 9, 2025
ec13dca
Merge branch 'js/prep-symlink-windows' into js/symlink-windows
gitster Jan 10, 2026
3b96b99
mingw: don't call `GetFileAttributes()` twice in `mingw_lstat()`
kblees Jan 9, 2026
48bc509
mingw: implement `stat()` with symlink support
kblees Jan 9, 2026
882e5e0
mingw: drop the separate `do_lstat()` function
kblees Jan 9, 2026
2c37842
mingw: let `mingw_lstat()` error early upon problems with reparse points
kblees Jan 9, 2026
8a4f413
mingw: teach dirent about symlinks
kblees Jan 9, 2026
543a91c
mingw: compute the correct size for symlinks in `mingw_lstat()`
billziss-gh Jan 9, 2026
b0b32ff
mingw: factor out the retry logic
kblees Jan 9, 2026
1bf1ffa
mingw: change default of `core.symlinks` to false
kblees Jan 9, 2026
9ac15c2
mingw: add symlink-specific error codes
kblees Jan 9, 2026
ac41bfa
mingw: handle symlinks to directories in `mingw_unlink()`
kblees Jan 9, 2026
5e88e98
mingw: support renaming symlinks
kblees Jan 9, 2026
43745a7
mingw: allow `mingw_chdir()` to change to symlink-resolved directories
kblees Jan 9, 2026
980852d
mingw: implement `readlink()`
kblees Jan 9, 2026
593008b
mingw: implement basic `symlink()` functionality (file symlinks only)
kblees Jan 9, 2026
97be7aa
mingw: add support for symlinks to directories
kblees Jan 9, 2026
6206f7a
mingw: try to create symlinks without elevated permissions
dscho Jan 9, 2026
2cba574
mingw: emulate `stat()` a little more faithfully
dscho Jan 9, 2026
44af34b
mingw: special-case index entries for symlinks with buggy size
dscho Jan 9, 2026
c381a21
t9700/test.pl: fix path type expectation on cygwin
ramsay-jones Jan 16, 2026
59da9f2
t0610-reftable-basics: mitigate a flaky test on cygwin
ramsay-jones Jan 16, 2026
de985d6
help: report on whether or not gettext is enabled
jiangxin Jan 17, 2026
bc8556d
t1005: modernize "! test -f" to "test_path_is_missing"
malon7782 Jan 17, 2026
d797154
ci(*-leaks): skip the git-svn tests to save time
dscho Jan 16, 2026
047bd7d
ci: skip CVS and P4 tests in leaks job, too
gitster Jan 17, 2026
28cfac3
mailmap: add an entry for Phillip Wood
phillipwood Jan 20, 2026
ad228c2
replay: drop rev-list formatting options from manual
benknoble Jan 20, 2026
46933bf
lint-gitlink: preemptively ignore all /ifn?def|endif/ macros
jnavila Jan 21, 2026
7dfd1b4
.mailmap: fix and expand mappings for Jean-Noël Avila
LemmingAvalanche Jan 21, 2026
b3722b3
Merge branch 'kh/mailmap-avila'
gitster Jan 23, 2026
cfa173a
Merge branch 'sb/doc-update-ref-markup-fix'
gitster Jan 23, 2026
cd8b8cb
Merge branch 'rj/cygwin-test-fixes-for-2.53'
gitster Jan 23, 2026
62627a3
Merge branch 'ty/t1005-test-path-is-helpers'
gitster Jan 23, 2026
3d95282
Merge branch 'jx/build-options-gettext'
gitster Jan 23, 2026
1f047a6
Merge branch 'js/ci-leak-skip-svn'
gitster Jan 23, 2026
f2e92f7
Merge branch 'pw/mailmap-self'
gitster Jan 23, 2026
26f50ef
Merge branch 'js/symlink-windows'
gitster Jan 23, 2026
a85b522
Merge branch 'dk/replay-doc-omit-irrelevant-rev-list-options'
gitster Jan 23, 2026
ea24e2c
A bit more before -rc2
gitster Jan 23, 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
5 changes: 5 additions & 0 deletions .mailmap
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,9 @@ Jason Riedy <ejr@eecs.berkeley.edu> <ejr@cs.berkeley.edu>
Jay Soffian <jaysoffian@gmail.com> <jaysoffian+git@gmail.com>
Jean-Noël Avila <jn.avila@free.fr> Jean-Noel Avila
Jean-Noël Avila <jn.avila@free.fr> Jean-Noël AVILA
Jean-Noël Avila <jn.avila@free.fr> Jean-Noel Avila <jean-noel.avila@scantech.fr>
Jean-Noël Avila <jn.avila@free.fr> Jean-Noël AVILA <avila.jn@gmail.com>
Jean-Noël Avila <jn.avila@free.fr> Jean-Noël Avila via GitGitGadget <gitgitgadget@gmail.com>
Jeff King <peff@peff.net> <peff@github.com>
Jeff Muizelaar <jmuizelaar@mozilla.com> <jeff@infidigm.net>
Jens Axboe <axboe@kernel.dk> <axboe@suse.de>
Expand Down Expand Up @@ -226,6 +229,8 @@ Philip Jägenstedt <philip@foolip.org> <philip.jagenstedt@gmail.com>
Philip Oakley <philipoakley@iee.email> <philipoakley@iee.org> # secondary <philipoakley@dunelm.org.uk>
Philipp A. Hartmann <pah@qo.cx> <ph@sorgh.de>
Philippe Bruhat <book@cpan.org>
Phillip Wood <phillip.wood@dunelm.org.uk> <phillip.wood123@gmail.com>
Phillip Wood <phillip.wood@dunelm.org.uk> <phillip.wood@talktalk.net>
Ralf Thielow <ralf.thielow@gmail.com> <ralf.thielow@googlemail.com>
Ramsay Jones <ramsay@ramsayjones.plus.com> <ramsay@ramsay1.demon.co.uk>
Ramkumar Ramachandra <r@artagnon.com> <artagnon@gmail.com>
Expand Down
19 changes: 17 additions & 2 deletions Documentation/RelNotes/2.53.0.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,10 @@ UI, Workflows & Features
deal better with rebased history.

* The iconv library on macOS fails to correctly handle stateful
ISO/IEC 2022 encoded strings. Work it around instead of replacing
it wholesale from homebrew.
ISO/IEC 2022:1994 encoded strings. Work it around instead of
replacing it wholesale from homebrew.

* Upstream symbolic link support on Windows from Git-for-Windows.


Performance, Internal Implementation, Development Support etc.
Expand Down Expand Up @@ -114,6 +116,17 @@ Performance, Internal Implementation, Development Support etc.
around tree objects and make it explicit which repository to work
in.
* "git bugreport" and "git version --build-options" learned to
include use of 'gettext' feature, to make it easier to diagnose
problems around l10n.
* Dscho observed that SVN tests are taking too much time in CI leak
checking tasks, but most time is spent not in our code but in libsvn
code (which happen to be written in Perl), whose leaks have little
value to discover for us. Skip SVN, P4, and CVS tests in the leak
checking tasks.
(merge 047bd7dfe3 js/ci-leak-skip-svn later to maint).
Fixes since v2.52
-----------------
Expand Down Expand Up @@ -322,3 +335,5 @@ Fixes since v2.52
(merge 555c8464e5 je/doc-reset later to maint).
(merge 220f888d7e ps/t1410-cleanup later to maint).
(merge 5814b04c02 ps/config-doc-get-urlmatch-fix later to maint).
(merge 5ae594f30b sb/doc-update-ref-markup-fix later to maint).
(merge bc8556d066 ty/t1005-test-path-is-helpers later to maint).
1 change: 1 addition & 0 deletions Documentation/git-replay.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ The default mode can be configured via the `replay.refAction` configuration vari
range should have a single tip, so that it's clear to which tip the
advanced <branch> should point.

:git-replay: 1
include::rev-list-options.adoc[]

[[output]]
Expand Down
2 changes: 1 addition & 1 deletion Documentation/git-update-ref.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ verify::
Verify <ref> against <old-oid> but do not change it. If
<old-oid> is zero or missing, the ref must not exist.

symref-create:
symref-create::
Create symbolic ref <ref> with <new-target> after verifying that
it does not exist.

Expand Down
3 changes: 2 additions & 1 deletion Documentation/lint-gitlink.perl
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,11 @@ sub report {
@ARGV = $to_check;
while (<>) {
my $line = $_;
next if $line =~ /^\s*(ifn?def|endif)::/;
while ($line =~ m/(.{,8})((git[-a-z]+|scalar)\[(\d)*\])/g) {
my $pos = pos $line;
my ($macro, $target, $page, $section) = ($1, $2, $3, $4);
if ( $macro ne "linkgit:" && $macro !~ "ifn?def::" && $macro ne "endif::" ) {
if ( $macro ne "linkgit:" ) {
report($pos, $line, $target, "linkgit: macro expected");
}
}
Expand Down
4 changes: 2 additions & 2 deletions Documentation/rev-list-options.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -1096,7 +1096,7 @@ endif::git-rev-list[]
Overrides a previous `--no-walk`.
endif::git-shortlog[]

ifndef::git-shortlog[]
ifndef::git-shortlog,git-replay[]
Commit Formatting
~~~~~~~~~~~~~~~~~

Expand Down Expand Up @@ -1265,4 +1265,4 @@ ifdef::git-rev-list[]
counts and print the count for equivalent commits separated
by a tab.
endif::git-rev-list[]
endif::git-shortlog[]
endif::git-shortlog,git-replay[]
3 changes: 3 additions & 0 deletions ci/lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -356,6 +356,9 @@ linux-musl-meson)
;;
linux-leaks|linux-reftable-leaks)
export SANITIZE=leak
export NO_CVS_TESTS=LetsSaveSomeTime
export NO_SVN_TESTS=LetsSaveSomeTime
export NO_P4_TESTS=LetsSaveSomeTime
;;
linux-asan-ubsan)
export SANITIZE=address,undefined
Expand Down
6 changes: 2 additions & 4 deletions compat/mingw-posix.h
Original file line number Diff line number Diff line change
Expand Up @@ -121,10 +121,6 @@ struct utsname {
* trivial stubs
*/

static inline int readlink(const char *path UNUSED, char *buf UNUSED, size_t bufsiz UNUSED)
{ errno = ENOSYS; return -1; }
static inline int symlink(const char *oldpath UNUSED, const char *newpath UNUSED)
{ errno = ENOSYS; return -1; }
static inline int fchmod(int fildes UNUSED, mode_t mode UNUSED)
{ errno = ENOSYS; return -1; }
#ifndef __MINGW64_VERSION_MAJOR
Expand Down Expand Up @@ -197,6 +193,8 @@ int setitimer(int type, struct itimerval *in, struct itimerval *out);
int sigaction(int sig, struct sigaction *in, struct sigaction *out);
int link(const char *oldpath, const char *newpath);
int uname(struct utsname *buf);
int symlink(const char *target, const char *link);
int readlink(const char *path, char *buf, size_t bufsiz);

/*
* replacements of existing functions
Expand Down
Loading