<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/compat, branch v2.52.0</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.52.0</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.52.0'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2025-10-09T20:21:28Z</updated>
<entry>
<title>mingw: order `#include`s alphabetically</title>
<updated>2025-10-09T20:21:28Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2025-10-09T07:46:01Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=15b8abde07de2cbce2dac3630324ead349e168ee'/>
<id>urn:sha1:15b8abde07de2cbce2dac3630324ead349e168ee</id>
<content type='text'>
It allows for more consistent patches that way.

Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>mingw: avoid relative `#include`s</title>
<updated>2025-10-09T20:21:27Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2025-10-09T07:46:00Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=b9c6962ad5b2f735d8281eb03646cefcf01886de'/>
<id>urn:sha1:b9c6962ad5b2f735d8281eb03646cefcf01886de</id>
<content type='text'>
We want to make them relative to the top-level directory.

Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'js/mingw-fixes'</title>
<updated>2025-08-04T15:10:34Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2025-08-04T15:10:33Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=817d661ce9c3f26d151fab132b88ce20650e6649'/>
<id>urn:sha1:817d661ce9c3f26d151fab132b88ce20650e6649</id>
<content type='text'>
Windows fixes.

* js/mingw-fixes:
  mingw: support Windows Server 2016 again
  mingw_rename: support ReFS on Windows 2022
  mingw: drop Windows 7-specific work-around
  mingw_open_existing: handle directories better
</content>
</entry>
<entry>
<title>Merge branch 'ps/config-wo-the-repository'</title>
<updated>2025-08-04T15:10:33Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2025-08-04T15:10:32Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=540aaa607c5efcd94bb852a76a8ec3e07ea9a7bc'/>
<id>urn:sha1:540aaa607c5efcd94bb852a76a8ec3e07ea9a7bc</id>
<content type='text'>
The config API had a set of convenience wrapper functions that
implicitly use the_repository instance; they have been removed and
inlined at the calling sites.

* ps/config-wo-the-repository: (21 commits)
  config: fix sign comparison warnings
  config: move Git config parsing into "environment.c"
  config: remove unused `the_repository` wrappers
  config: drop `git_config_set_multivar()` wrapper
  config: drop `git_config_get_multivar_gently()` wrapper
  config: drop `git_config_set_multivar_in_file_gently()` wrapper
  config: drop `git_config_set_in_file_gently()` wrapper
  config: drop `git_config_set()` wrapper
  config: drop `git_config_set_gently()` wrapper
  config: drop `git_config_set_in_file()` wrapper
  config: drop `git_config_get_bool()` wrapper
  config: drop `git_config_get_ulong()` wrapper
  config: drop `git_config_get_int()` wrapper
  config: drop `git_config_get_string()` wrapper
  config: drop `git_config_get_string()` wrapper
  config: drop `git_config_get_string_multi()` wrapper
  config: drop `git_config_get_value()` wrapper
  config: drop `git_config_get_value()` wrapper
  config: drop `git_config_get()` wrapper
  config: drop `git_config_clear()` wrapper
  ...
</content>
</entry>
<entry>
<title>mingw: support Windows Server 2016 again</title>
<updated>2025-08-04T01:30:39Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2025-08-03T21:25:18Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=f559d422734ff00dcf42779813edde9fa6069526'/>
<id>urn:sha1:f559d422734ff00dcf42779813edde9fa6069526</id>
<content type='text'>
It was reported to the Git for Windows project that a simple `git init`
fails on Windows Server 2016:

  D:\Dev\test&gt; git init
  error: could not write config file D:/Dev/test/.git/config: Function not implemented
  fatal: could not set 'core.repositoryformatversion' to '0'

According to https://endoflife.date/windows-server, Windows Server 2016
is officially supported for another one-and-a-half years as of time of
writing, so this is not good.

The culprit is the `mingw_rename()` changes that try to use POSIX
semantics when available, but fail to fall back properly on Windows
Server 2016.

This fixes https://github.com/git-for-windows/git/issues/5695.

Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>mingw_rename: support ReFS on Windows 2022</title>
<updated>2025-08-04T01:30:39Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2025-08-03T21:25:17Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=51f9b623f276806be92b4f62e061df79cdd397a3'/>
<id>urn:sha1:51f9b623f276806be92b4f62e061df79cdd397a3</id>
<content type='text'>
ReFS is an alternative filesystem to NTFS. On Windows 2022, it seems not
to support the rename operation using POSIX semantics that Git uses on
Windows as of 391bceae4350 (compat/mingw: support POSIX semantics for
atomic renames, 2024-10-27).

However, Windows 2022 reports `ERROR_NOT_SUPPORTED` in this instance.
This is in contrast to `ERROR_INVALID_PARAMETER` (as previous Windows
versions would report that do not support POSIX semantics in renames at
all).

Let's handle both errors the same: by falling back to the best-effort
option, namely to rename without POSIX semantics.

This fixes https://github.com/git-for-windows/git/issues/5427

Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>mingw: drop Windows 7-specific work-around</title>
<updated>2025-08-04T01:30:38Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2025-08-03T21:25:16Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=ce6ccbaf92ec41743d83c386cad4dba77f768f13'/>
<id>urn:sha1:ce6ccbaf92ec41743d83c386cad4dba77f768f13</id>
<content type='text'>
In ac33519ddfa8 (mingw: restrict file handle inheritance only on Windows
7 and later, 2019-11-22), I introduced code to safe-guard the
defense-in-depth handling that restricts handles' inheritance so that it
would work with Windows 7, too.

Let's revert this patch: Git for Windows dropped supporting Windows 7 (and
Windows 8) directly after Git for Windows v2.46.2. For full details, see
https://gitforwindows.org/requirements#windows-version.

Actually, on second thought: revert only the part that makes this handle
inheritance restriction logic optional and that suggests to open a bug
report if it fails, but keep the fall-back to try again without said
logic: There have been a few false positives over the past few years
(where the warning was triggered e.g. because Defender was still
accessing a file that Git wanted to overwrite), and the fall-back logic
seems to have helped occasionally in such situations.

Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>mingw_open_existing: handle directories better</title>
<updated>2025-08-04T01:30:38Z</updated>
<author>
<name>Matthias Aßhauer</name>
<email>mha1993@live.de</email>
</author>
<published>2025-08-03T21:25:15Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=5f277fc5f25dc0fb54aa42bad62c23325bab9200'/>
<id>urn:sha1:5f277fc5f25dc0fb54aa42bad62c23325bab9200</id>
<content type='text'>
CreateFileW() requires FILE_FLAG_BACKUP_SEMANTICS to create a directory
handle [1] and errors out with ERROR_ACCESS_DENIED without this flag.
Fall back to accessing Directory handles this way.

[1] https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilew#directories

This fixes https://github.com/git-for-windows/git/issues/5068

Signed-off-by: Matthias Aßhauer &lt;mha1993@live.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'ss/compat-bswap-revamp'</title>
<updated>2025-07-24T23:03:56Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2025-07-24T23:03:56Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=42eb2881587b3bc699f38b9b35861281b1ef316b'/>
<id>urn:sha1:42eb2881587b3bc699f38b9b35861281b1ef316b</id>
<content type='text'>
Clean-up compat/bswap.h mess.

* ss/compat-bswap-revamp:
  bswap.h: provide a built-in based version of bswap32/64 if possible
  bswap.h: remove optimized x86 version of bswap32/64
  bswap.h: always overwrite ntohl/ ntohll macros
  bswap.h: define GIT_LITTLE_ENDIAN on msvc as little endian
  bswap.h: add support for __BYTE_ORDER__
</content>
</entry>
<entry>
<title>config: drop `git_config_set()` wrapper</title>
<updated>2025-07-23T15:15:21Z</updated>
<author>
<name>Patrick Steinhardt</name>
<email>ps@pks.im</email>
</author>
<published>2025-07-23T14:08:35Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=e957ed2b275b3fd44475bacaf3955cf451a976c4'/>
<id>urn:sha1:e957ed2b275b3fd44475bacaf3955cf451a976c4</id>
<content type='text'>
In 036876a1067 (config: hide functions using `the_repository` by
default, 2024-08-13) we have moved around a bunch of functions in the
config subsystem that depend on `the_repository`. Those function have
been converted into mere wrappers around their equivalent function that
takes in a repository as parameter, and the intent was that we'll
eventually remove those wrappers to make the dependency on the global
repository variable explicit at the callsite.

Follow through with that intent and remove `git_config_set()`. All
callsites are adjusted so that they use `repo_config_set(the_repository,
...)` instead. While some callsites might already have a repository
available, this mechanical conversion is the exact same as the current
situation and thus cannot cause any regression. Those sites should
eventually be cleaned up in a later patch series.

Signed-off-by: Patrick Steinhardt &lt;ps@pks.im&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
