Rebase shears/next: 6 conflict(s) (0 skipped, 6 resolved) (#25864275809)#166
Open
gitforwindowshelper[bot] wants to merge 303 commits into
Open
Rebase shears/next: 6 conflict(s) (0 skipped, 6 resolved) (#25864275809)#166gitforwindowshelper[bot] wants to merge 303 commits into
gitforwindowshelper[bot] wants to merge 303 commits into
Conversation
In bf2d5d8 (Don't let ld strip relocations, 2016-01-16) (picked from git-for-windows@6a237925bf10), Git for Windows introduced the `-Wl,-pic-executable` flag, specifying the exact entry point via `-e`. This required discerning between i686 and x86_64 code because the former required the symbol to be prefixed with an underscore, the latter did not. As per https://sourceware.org/bugzilla/show_bug.cgi?id=10865, the specified symbols are already the default, though. So let's drop the overly-specific definition. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
The CMakeSettings.json file is tool generated. Developers may track it should they provide additional settings. Signed-off-by: Philip Oakley <philipoakley@iee.email>
Just like the `hash-object --literally` code path, the `--stdin` code path also needs to use `size_t` instead of `unsigned long` to represent memory sizes, otherwise it would cause problems on platforms using the LLP64 data model (such as Windows). To limit the scope of the test case, the object is explicitly not written to the object store, nor are any filters applied. The `big` file from the previous test case is reused to save setup time; To avoid relying on that side effect, it is generated if it does not exist (e.g. when running via `sh t1007-*.sh --long --run=1,41`). Signed-off-by: Philip Oakley <philipoakley@iee.email> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
MSYS2 already defines a couple of helpful environment variables, and we can use those to infer the installation location as well as the CPU. No need for hard-coding ;-) Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
The intention of this change is to align with how the top-level git `Makefile` defines its own test target (which also internally calls `$(MAKE) -C t/ all`). This change also ensures the consistency of `make -C contrib/subtree test` with other testing in CI executions (which rely on `$DEFAULT_TEST_TARGET` being defined as `prove`). Signed-off-by: Victoria Dye <vdye@github.com>
In Git-for-Windows, work on using ARM64 has progressed. The commit 2d94b77 (cmake: allow building for Windows/ARM64, 2020-12-04) failed to notice that /compat/vcbuild/vcpkg_install.bat will default to using the "x64-windows" architecture for the vcpkg installation if not set, but CMake is not told of this default. Commit 635b6d9 (vcbuild: install ARM64 dependencies when building ARM64 binaries, 2020-01-31) later updated vcpkg_install.bat to accept an arch (%1) parameter, but retained the default. This default is neccessary for the use case where the project directory is opened directly in Visual Studio, which will find and build a CMakeLists.txt file without any parameters, thus expecting use of the default setting. Also Visual studio will generate internal .sln solution and .vcxproj project files needed for some extension tools. Inform users of the additional .sln/.vcxproj generation. ** How to test: rm -rf '.vs' # remove old visual studio settings rm -rf 'compat/vcbuild/vcpkg' # remove any vcpkg downloads rm -rf 'contrib/buildsystems/out' # remove builds & CMake artifacts with a fresh Visual Studio Community Edition, File>>Open>>(git *folder*) to load the project (which will take some time!). check for successful compilation. The implicit .sln (etc.) are in the hidden .vs directory created by Visual Studio. Signed-off-by: Philip Oakley <philipoakley@iee.email>
To complement the `--stdin` and `--literally` test cases that verify that we can hash files larger than 4GB on 64-bit platforms using the LLP64 data model, here is a test case that exercises `hash-object` _without_ any options. Just as before, we use the `big` file from the previous test case if it exists to save on setup time, otherwise generate it. Signed-off-by: Philip Oakley <philipoakley@iee.email> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Derrick Stolee <derrickstolee@github.com>
The tell-tale is the presence of the `MSYSTEM` value while compiling, of course. In that case, we want to ensure that `MSYSTEM` is set when running `git.exe`, and also enable the magic MSYS2 tty detection. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Because `git subtree` (unlike most other `contrib` modules) is included as part of the standard release of Git for Windows, its stability should be verified as consistently as it is for the rest of git. By including the `git subtree` tests in the CI workflow, these tests are as much of a gate to merging and indicator of stability as the standard test suite. Signed-off-by: Victoria Dye <vdye@github.com>
Ensure key CMake option values are part of the CMake output to facilitate user support when tool updates impact the wider CMake actions, particularly ongoing 'improvements' in Visual Studio. These CMake displays perform the same function as the build-options.txt provided in the main Git for Windows. CMake is already chatty. The setting of CMAKE_EXPORT_COMPILE_COMMANDS is also reported. Include the environment's CMAKE_EXPORT_COMPILE_COMMANDS value which may have been propogated to CMake's internal value. Testing the CMAKE_EXPORT_COMPILE_COMMANDS processing can be difficult in the Visual Studio environment, as it may be cached in many places. The 'environment' may include the OS, the user shell, CMake's own environment, along with the Visual Studio presets and caches. See previous commit for arefacts that need removing for a clean test. Signed-off-by: Philip Oakley <philipoakley@iee.email>
To verify that the `clean` side of the `clean`/`smudge` filter code is correct with regards to LLP64 (read: to ensure that `size_t` is used instead of `unsigned long`), here is a test case using a trivial filter, specifically _not_ writing anything to the object store to limit the scope of the test case. As in previous commits, the `big` file from previous test cases is reused if available, to save setup time, otherwise re-generated. Signed-off-by: Philip Oakley <philipoakley@iee.email> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
In the case of Git for Windows (say, in a Git Bash window) running in a Windows Subsystem for Linux (WSL) directory, the GetNamedSecurityInfoW() call in is_path_owned_By_current_side() returns an error code other than ERROR_SUCCESS. This is consistent behavior across this boundary. In these cases, the owner would always be different because the WSL owner is a different entity than the Windows user. The change here is to suppress the error message that looks like this: error: failed to get owner for '//wsl.localhost/...' (1) Before this change, this warning happens for every Git command, regardless of whether the directory is marked with safe.directory. Signed-off-by: Derrick Stolee <derrickstolee@github.com>
For Windows builds >= 15063 set $env:TERM to "xterm-256color" instead of "cygwin" because they have a more capable console system that supports this. Also set $env:COLORTERM="truecolor" if unset. $env:TERM is initialized so that ANSI colors in color.c work, see 29a3963 (Win32: patch Windows environment on startup, 2012-01-15). See git-for-windows#3629 regarding problems caused by always setting $env:TERM="cygwin". This is the same heuristic used by the Cygwin runtime. Signed-off-by: Rafael Kitover <rkitover@gmail.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
NtQueryObject under Wine can return a success but fill out no name. In those situations, Wine will set Buffer to NULL, and set result to the sizeof(OBJECT_NAME_INFORMATION). Running a command such as echo "$(git.exe --version 2>/dev/null)" will crash due to a NULL pointer dereference when the code attempts to null terminate the buffer, although, weirdly, removing the subshell or redirecting stdout to a file will not trigger the crash. Code has been added to also check Buffer and Length to ensure the check is as robust as possible due to the current behavior being fragile at best, and could potentially change in the future This code is based on the behavior of NtQueryObject under wine and reactos. Signed-off-by: Christopher Degawa <ccom@randomderp.com>
Atomic append on windows is only supported on local disk files, and it may cause errors in other situations, e.g. network file system. If that is the case, this config option should be used to turn atomic append off. Co-Authored-By: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: 孙卓识 <sunzhuoshi@gmail.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
From the documentation of said setting: This boolean will enable fsync() when writing object files. This is a total waste of time and effort on a filesystem that orders data writes properly, but can be useful for filesystems that do not use journalling (traditional UNIX filesystems) or that only journal metadata and not file contents (OS X’s HFS+, or Linux ext3 with "data=writeback"). The most common file system on Windows (NTFS) does not guarantee that order, therefore a sudden loss of power (or any other event causing an unclean shutdown) would cause corrupt files (i.e. files filled with NULs). Therefore we need to change the default. Note that the documentation makes it sound as if this causes really bad performance. In reality, writing loose objects is something that is done only rarely, and only a handful of files at a time. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Whith Windows 2000, Microsoft introduced a flag to the PE header to mark executables as "terminal server aware". Windows terminal servers provide a redirected Windows directory and redirected registry hives when launching legacy applications without this flag set. Since we do not use any INI files in the Windows directory and don't write to the registry, we don't need this additional preparation. Telling the OS that we don't need this should provide slightly improved startup times in terminal server environments. When building for supported Windows Versions with MSVC the /TSAWARE linker flag is automatically set, but MinGW requires us to set the --tsaware flag manually. This partially addresses git-for-windows#3935. Signed-off-by: Matthias Aßhauer <mha1993@live.de>
Add FileVersion, which is a required field As not all required fields were present, none were being included Fixes git-for-windows#4090 Signed-off-by: Kiel Hurley <kielhurley@gmail.com>
In f9b7573 (repository: free fields before overwriting them, 2017-09-05), Git was taught to release memory before overwriting it, but 357a03e (repository.c: move env-related setup code back to environment.c, 2018-03-03) changed the code so that it would not _always_ be overwritten. As a consequence, the `commondir` attribute would point to already-free()d memory. This seems not to cause problems in core Git, but there are add-on patches in Git for Windows where the `commondir` attribute is subsequently used and causing invalid memory accesses e.g. in setups containing old-style submodules (i.e. the ones with a `.git` directory within theirs worktrees) that have `commondir` configured. This fixes git-for-windows#4083. Signed-off-by: Andrey Zabavnikov <zabavnikov@gmail.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
It is merely a historical wart that, say, `git-commit` exists in the `libexec/git-core/` directory, a tribute to the original idea to let Git be essentially a bunch of Unix shell scripts revolving around very few "plumbing" (AKA low-level) commands. Git has evolved a lot from there. These days, most of Git's functionality is contained within the `git` executable, in the form of "built-in" commands. To accommodate for scripts that use the "dashed" form of Git commands, even today, Git provides hard-links that make the `git` executable available as, say, `git-commit`, just in case that an old script has not been updated to invoke `git commit`. Those hard-links do not come cheap: they take about half a minute for every build of Git on Windows, they are mistaken for taking up huge amounts of space by some Windows Explorer versions that do not understand hard-links, and therefore many a "bug" report had to be addressed. The "dashed form" has been officially deprecated in Git version 1.5.4, which was released on February 2nd, 2008, i.e. a very long time ago. This deprecation was never finalized by skipping these hard-links, but we can start the process now, in Git for Windows. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Merge this early to resolve merge conflicts early. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
When building with `make MSVC=1 DEBUG=1`, link to `libexpatd.lib` rather than `libexpat.lib`. It appears that the `vcpkg` package for "libexpat" has changed and now creates `libexpatd.lib` for debug mode builds. Previously, both debug and release builds created a ".lib" with the same basename. Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Create a wrapper for the Windows Resource Compiler (RC.EXE) for use by the MSVC=1 builds. This is similar to the CL.EXE and LIB.EXE wrappers used for the MSVC=1 builds. Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Teach MSVC=1 builds to depend on the `git.rc` file so that the resulting executables have Windows-style resources and version number information within them. Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
This compile-time option allows to ask Git to load libcurl dynamically at runtime. Together with a follow-up patch that optionally overrides the file name depending on the `http.sslBackend` setting, this kicks open the door for installing multiple libcurl flavors side by side, and load the one corresponding to the (runtime-)configured SSL/TLS backend. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
MSYS2 defines some helpful environment variables, e.g. `MSYSTEM`. There is code in Git for Windows to ensure that that `MSYSTEM` variable is set, hard-coding a default. However, the existing solution jumps through hoops to reconstruct the proper default, and is even incomplete doing so, as we found out when we extended it to support CLANGARM64. This is absolutely unnecessary because there is already a perfectly valid `MSYSTEM` value we can use at build time. This is even true when building the MINGW32 variant on a MINGW64 system because `makepkg-mingw` will override the `MSYSTEM` value as per the `MINGW_ARCH` array. The same is equally true for the `/mingw64`, `/mingw32` and `/clangarm64` prefix: those values are already available via the `MINGW_PREFIX` environment variable, and we just need to pass that setting through. Only when `MINGW_PREFIX` is not set (as is the case in Git for Windows' minimal SDK, where only `MSYSTEM` is guaranteed to be set correctly), we use as fall-back the top-level directory whose name is the down-cased value of the `MSYSTEM` variable. Incidentally, this also broadens the support to all the configurations supported by the MSYS2 project, i.e. clang64 & ucrt64, too. Note: This keeps the same, hard-coded MSYSTEM platform support for CMake as before, but drops it for Meson (because it is unclear how Meson could do this in a more flexible manner). Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
A change between versions 2.4.1 and 2.6.0 of the MSYS2 runtime modified how Cygwin's runtime (and hence Git for Windows' MSYS2 runtime derivative) handles locales: d16a56306d (Consolidate wctomb/mbtowc calls for POSIX-1.2008, 2016-07-20). An unintended side-effect is that "cold-calling" into the POSIX emulation will start with a locale based on the current code page, something that Git for Windows is very ill-prepared for, as it expects to be able to pass a command-line containing non-ASCII characters to the shell without having those characters munged. One symptom of this behavior: when `git clone` or `git fetch` shell out to call `git-upload-pack` with a path that contains non-ASCII characters, the shell tried to interpret the entire command-line (including command-line parameters) as executable path, which obviously must fail. This fixes git-for-windows#1036 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Ignore the `-fno-stack-protector` compiler argument when building with MSVC. This will be used in a later commit that needs to build a Win32 GUI app. Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
In this time and age, AI is everywhere. However, it's sometimes not very easy to use. For green-field projects it works quite a bit better than for existing legacy projects. And Git's source code is _quite_ as legacy code as they come... 😁 Now, the only way how AI can be used efficiently with legacy code is by providing enough information by way of prompt context for the AI to have a chance to make any sense of the code. The structure and the architecture is, after all, not designed for AI, but rather the opposite: By virtue of having grown organically over two decades, there is no design that AI coding models would readily grasp. So here is a document that describes all kinds of aspects about this project. The idea is to help AI by providing information that it does not have ingrained in its weights. The idea is to provide information that a human prompter might take for granted, but no coding model will have been trained on specifically. Assisted-by: Claude Opus 4.5 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Getting started contributing to Git can be difficult on a Windows machine. CONTRIBUTING.md contains a guide to getting started, including detailed steps for setting up build tools, running tests, and submitting patches to upstream. [includes an example by Pratik Karki how to submit v2, v3, v4, etc.] Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Handle Ctrl+C in Git Bash nicely Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
…opment This adds an extensive section about resolving merge conflicts during rebases, which happens quite often in Git for Windows' day-to-day. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Includes touch-ups by 마누엘, Philip Oakley and 孙卓识. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
The `--stdin` option was a well-established paradigm in other commands, therefore we implemented it in `git reset` for use by Visual Studio. Unfortunately, upstream Git decided that it is time to introduce `--pathspec-from-file` instead. To keep backwards-compatibility for some grace period, we therefore reinstate the `--stdin` option on top of the `--pathspec-from-file` option, but mark it firmly as deprecated. Helped-by: Victoria Dye <vdye@github.com> Helped-by: Matthew John Cheetham <mjcheetham@outlook.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
A fix for calling `vim` in Windows Terminal caused a regression and was reverted. We partially un-revert this, to get the fix again. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
…opment AGENTS.md: add upstream contribution and worktree guidance Add sections covering the GitGitGadget workflow for contributing to upstream Git, commit message conventions specific to the upstream project, how to manage patch series with dependencies (branch thickets), effective worktree usage including --update-refs for history rewrites, and techniques for analyzing merge-structured topic branches with git replay. These learnings come from a session contributing the safe.bareRepository test preparation patches via GitGitGadget. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Assisted-by: Claude Opus 4.6
With improvements by Clive Chan, Adric Norris, Ben Bodenmiller and Philip Oakley. Helped-by: Clive Chan <cc@clive.io> Helped-by: Adric Norris <landstander668@gmail.com> Helped-by: Ben Bodenmiller <bbodenmiller@hotmail.com> Helped-by: Philip Oakley <philipoakley@iee.org> Signed-off-by: Brendan Forster <brendan@github.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Rather than using private IFTTT Applets that send mails to this maintainer whenever a new version of a Git for Windows component was released, let's use the power of GitHub workflows to make this process publicly visible. This workflow monitors the Atom/RSS feeds, and opens a ticket whenever a new version was released. Note: Bash sometimes releases multiple patched versions within a few minutes of each other (i.e. 5.1p1 through 5.1p4, 5.0p15 and 5.0p16). The MSYS2 runtime also has a similar system. We can address those patches as a group, so we shouldn't get multiple issues about them. Note further: We're not acting on newlib releases, OpenSSL alphas, Perl release candidates or non-stable Perl releases. There's no need to open issues about them. Co-authored-by: Matthias Aßhauer <mha1993@live.de> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Reintroduce the 'core.useBuiltinFSMonitor' config setting (originally added in 0a756b2 (fsmonitor: config settings are repository-specific, 2021-03-05)) after its removal from the upstream version of FSMonitor. Upstream, the 'core.useBuiltinFSMonitor' setting was rendered obsolete by "overloading" the 'core.fsmonitor' setting to take a boolean value. However, several applications (e.g., 'scalar') utilize the original config setting, so it should be preserved for a deprecation period before complete removal: * if 'core.fsmonitor' is a boolean, the user is correctly using the new config syntax; do not use 'core.useBuiltinFSMonitor'. * if 'core.fsmonitor' is unspecified, use 'core.useBuiltinFSMonitor'. * if 'core.fsmonitor' is a path, override and use the builtin FSMonitor if 'core.useBuiltinFSMonitor' is 'true'; otherwise, use the FSMonitor hook indicated by the path. Additionally, for this deprecation period, advise users to switch to using 'core.fsmonitor' to specify their use of the builtin FSMonitor. Signed-off-by: Victoria Dye <vdye@github.com>
This topic branch re-adds the deprecated --stdin/-z options to `git reset`. Those patches were overridden by a different set of options in the upstream Git project before we could propose `--stdin`. We offered this in MinGit to applications that wanted a safer way to pass lots of pathspecs to Git, and these applications will need to be adjusted. Instead of `--stdin`, `--pathspec-from-file=-` should be used, and instead of `-z`, `--pathspec-file-nul`. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
…opment AGENTS.md: document rebase, staging, and log -L tricks for AI agents Add practical recipes for three workflows that are particularly useful when AI agents work with Git: Non-interactive "interactive" rebases using `sed -i 1ib` as a sequence editor to insert a `break` command, then editing the todo file directly via the path from `git rev-parse --git-path rebase-merge/git-rebase-todo`. This avoids the impossible task of driving an interactive editor from an AI agent. Scripted hunk staging via `printf '%s\n' s y q | git add -p`, which feeds predictable keystrokes to the add-patch protocol to stage individual hunks without human interaction. The `git log -L <start>,+<count>:<file>` trick for finding which commit last touched specific lines, enabling an `hg absorb`-like workflow where the agent can identify the right fixup! target surgically rather than grepping through full diffs. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Assisted-by: Claude Opus 4.6
Git for Windows accepts pull requests; Core Git does not. Therefore we need to adjust the template (because it only matches core Git's project management style, not ours). Also: direct Git for Windows enhancements to their contributions page, space out the text for easy reading, and clarify that the mailing list is plain text, not HTML. Signed-off-by: Philip Oakley <philipoakley@iee.org> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
See https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot#enabling-dependabot-version-updates-for-actions for details. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Originally introduced as `core.useBuiltinFSMonitor` in Git for Windows and developed, improved and stabilized there, the built-in FSMonitor only made it into upstream Git (after unnecessarily long hemming and hawing and throwing overly perfectionist style review sticks into the spokes) as `core.fsmonitor = true`. In Git for Windows, with this topic branch, we re-introduce the now-obsolete config setting, with warnings suggesting to existing users how to switch to the new config setting, with the intention to ultimately drop the patch at some stage. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
…opment AGENTS.md: add pre-commit checklist for lint checks Bundle the existing ASCII-only, 80-column, and whitespace validation recipes into a "pre-commit checklist" block that agents should run before every commit. The individual recipes already existed in the Coding Conventions section but were presented as reference material rather than as an actionable workflow step. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Assisted-by: Claude Opus 4.6
This is the recommended way on GitHub to describe policies revolving around security issues and about supported versions. Helped-by: Sven Strickroth <email@cs-ware.de> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
…updates Start monitoring updates of Git for Windows' component in the open
This was marked as a temporary work-around in 4538ee6 (ci: work around a problem with HTTP/2 vs libcurl v8.10.0 (git-for-windows#5165), 2024-09-24), to help CI builds pass even on macOS. The faulty libcurl version has hence been replaced with plenty of fixed ones, therefore this work-around is no longer necessary. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
…opment AGENTS: document learnings from split-index + fsmonitor investigation While investigating a CI failure in the `linux-TEST-vars` job caused by the interaction between the `pt/fsmonitor-linux` and `hn/git-checkout-m-with-stash` topics in `seen`, several debugging techniques proved essential and were not previously documented. The investigation required bisecting the first-parent history of `seen` while temporarily merging the fsmonitor topic at each step. This revealed that `GIT_TEST_SPLIT_INDEX=yes` corrupts the bisect machinery's own index operations unless it is unset before cleanup checkouts. It also revealed that `fprintf(stderr, ...)` instrumentation in Git's C code is swallowed by the test framework, making Trace2 the correct instrumentation approach. A key insight was that the bug appeared Linux-specific only because `linux-TEST-vars` is the sole CI job setting `GIT_TEST_SPLIT_INDEX=yes`; there is no macOS or Windows equivalent. The actual root cause (the `index.skipHash=true` + split-index interaction producing a null `base_oid` in the shared index) is platform-independent. Add four documentation sections capturing these learnings: bisecting `seen` interactions, reproducing with exact CI variables, verifying CI platform coverage before concluding platform-specificity, and using Trace2 for instrumentation inside the test framework. Assisted-by: Claude Opus 4.6 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Add a README.md for GitHub goodness. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This corresponds to gitgitgadget#2097.
This was a preparatory commit for the path-walk API, which has since been upstreamed into v2.54.0. During the merging-rebase, the code changes this commit introduced were already present in the new base, leaving it empty. Drop it. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
…it-for-windows#6198) AI-assisted contributions are a reality of open source in 2025 and beyond. Contributors will use AI tools, and that includes the maintainers themselves. Over recent months, I have found AI increasingly useful for the kind of menial, tedious work that does not require much creativity but is highly boring when done by hand: resolving merge conflicts during merging-rebases, chasing down CI failures across platforms, adapting downstream patches to upstream API changes. To that end, I would like to have an `AGENTS.md` file in the code base that helps any LLM to understand the context of the project. A secondary goal of this is to preemptively help outside contributors. The risk is not AI usage per se, but low-quality AI slop: contributions where the human hits "accept" without sufficient context being available to the model (and without proper review by the human, we've all been there), resulting in changes that miss conventions, break patterns, or misunderstand the project's architecture. Git's source code is about as legacy as they come, having grown organically over two decades with no design that AI coding models would readily grasp from a narrow code sample alone. This `AGENTS.md` is designed to raise the floor on AI-assisted contributions by providing enough context that even when a human contributor fails to steer carefully, the model has the information it needs to produce something reasonable. It documents the repository structure, build process, test conventions, the object model and ODB internals, debugging techniques (Trace2, instrumenting tests, bisecting failures), the merging-rebase workflow, conflict resolution patterns, coding conventions (ASCII only, 80 columns, tabs), commit message expectations, and the GitGitGadget contribution workflow. This is information that a human might take for granted, but no coding model will have been trained on specifically. Similar `AGENTS.md` files have recently been added to other repositories in the Git for Windows project: [MINGW-packages](git-for-windows/MINGW-packages#194), [git-for-windows.github.io](git-for-windows/git-for-windows.github.io#88) and [msys2-runtime](git-for-windows/msys2-runtime@1e0ff37).
…erver Bump actions/checkout from v5 to v6 and git-for-windows/setup-git-for-windows-sdk from v1 to v2. Both bumps are Node.js 20 to Node.js 24 runtime migrations with no functional changes to the actions themselves. checkout v6 moves persisted credentials to `` instead of `.git/config`, which does not affect this workflow since no subsequent steps rely on the credential location. The setup-sdk v2 provisions the same minimal SDK as v1. Risk: very low. The only precondition is a recent Actions Runner, which github.com-hosted runners already satisfy. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Over time, as upstream Git absorbs fixes and features that originated in or were carried by Git for Windows, downstream patches accumulate that are no longer needed. The steady stream of merged PRs makes this virtually inevitable. This PR collects fixup! commits to drop three such patches during the next autosquash rebase. The HTTP/2 workaround in `t5551` was a temporary fix for a libcurl v8.10.0 regression on macOS CI runners. The faulty libcurl has long been superseded by fixed versions, making it unnecessary. The `unix-socket: avoid leak when initialization fails` patch changed `return -1` to `goto fail` in `unix_stream_connect()` so cleanup would run when `unix_sockaddr_init()` failed. Upstream fixed the same leak more surgically in c5fe29f (unix-socket: fix memory leak when chdir(3p) fails, 2025-01-30) by having `unix_sockaddr_init()` call `FREE_AND_NULL(ctx->orig_dir)` before returning, making the downstream caller-side fix redundant. The `revision: create mark_trees_uninteresting_dense()` commit was a preparatory patch for the path-walk API. That API has since been upstreamed, and this commit became empty during the merging-rebase because its changes were already in the new base.
When building with `make DEVELOPER=1` we explicitly pass "-std=gnu99" to
the compiler so that we don't start leaning on features exposed by more
recent versions of the C standard. Unfortunately though, glibc 2.43
started to use type-generic expressions. This works alright with GCC,
but when compiling with Clang this leads to errors:
$ make DEVELOPER=1 CC=clang
CC daemon.o
In file included from daemon.c:3:
./git-compat-util.h:344:11: error: '_Generic' is a C11 extension [-Werror,-Wc11-extensions]
344 | return !!strchr(path, '/');
| ^
/usr/include/string.h:265:3: note: expanded from macro 'strchr'
265 | __glibc_const_generic (S, const char *, strchr (S, C))
| ^
/usr/include/x86_64-linux-gnu/sys/cdefs.h:838:3: note: expanded from macro '__glibc_const_generic'
838 | _Generic (0 ? (PTR) : (void *) 1, \
| ^
In theory, the `__glibc_const_generic` macro does have feature gating:
#if !defined __cplusplus \
&& (__GNUC_PREREQ (4, 9) \
|| __glibc_has_extension (c_generic_selections) \
|| (!defined __GNUC__ && defined __STDC_VERSION__ \
&& __STDC_VERSION__ >= 201112L))
# define __HAVE_GENERIC_SELECTION 1
#else
# define __HAVE_GENERIC_SELECTION 0
#endif
But this feature gating isn't effective because `_has_extension()` will
always evaluate to true as C generics _are_ available as a language
extension to GNU C99 when using Clang. This would have been different if
`_has_feature()` was used instead, in which case it would have properly
evaluated to `false`.
Unfortunately, there is no easy way for us to work around the warning.
We cannot define `__HAVE_GENERIC_SELECTION` ourselves as that would lead
to a redefinition, and given that the conditions are or'd together we
cannot disable any of those, either.
Instead, work around the issue by not using -std=gnu99 with Clang when
using the Makefile and by disabling warnings about C11 extensions when
using Meson. This isn't ideal, but we at least retain the ability to
detect the (mis-)use of features from newer standards with GCC.
An alternative to this might be to simply bump the required C standard
to C11, which is 15 years old by now and should have support on most
platforms out there. But some more esoteric platforms may not have it.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
…windows#6220) This includes gitgitgadget#2097 and a `fixup!` for a workflow that is not upstream (Nano Server).
…indows#6233) The `linux-{asan-ubsan,sha256,reftable}` jobs run inside `ubuntu:rolling`, which now resolves to Ubuntu 26.04 with glibc 2.43; that pulls `_Generic` into `<sys/cdefs.h>` and breaks our `-std=gnu99 -Werror` Clang builds. Concrete failure: https://github.com/git-for-windows/git/actions/runs/25390480083/job/74463338845. Picking up Patrick Steinhardt's fix from https://lore.kernel.org/git/20260505-b4-pks-ci-tolerate-glibc-generic-v1-1-5786386fe512@pks.im/ ahead of its upstream merge so the GfW CI goes green again. The diff conflicts with `fe5704a3695c "mimalloc: offer a build-time option to enable it"`, which wraps the affected `config.mak.dev` block in `ifndef USE_MIMALLOC`; the resolution preserves that wrap on the `gcc6`-only branch surviving Patrick's patch. `meson.build` auto-merged.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Workflow run
Rebase Summary: next
From: 45ef3336e3 (build: tolerate use of _Generic from glibc 2.43 with Clang (git-for-windows#6233), 2026-05-08) (6d8316c4e0..45ef3336e3)
Resolved: 4b0ff0a (mingw: include the Python parts in the build, 2015-02-16)
kept NO_PYTHON= line from patch; dropped USE_NED_ALLOCATOR block removed upstream
Range-diff
1: 4b0ff0a ! 1: dcdb1da mingw: include the Python parts in the build
Resolved: b39a004 (mimalloc: offer a build-time option to enable it, 2019-06-24)
removed nedmalloc references (dropped upstream), kept mimalloc additions only
Range-diff
1: b39a004 ! 1: 169423b mimalloc: offer a build-time option to enable it
Resolved: 84782b3 (mingw: use mimalloc, 2019-06-24)
kept USE_MIMALLOC=YesPlease; upstream already removed nedmalloc and added mimalloc build option, this commit enables it in the MINGW section
Range-diff
1: 84782b3 ! 1: 20635d7 mingw: use mimalloc
Resolved: b2ec35d (mingw: rely on MSYS2's metadata instead of hard-coding it, 2025-11-21)
resolved by combining upstream's removal of USE_NED_ALLOCATOR with our patch's platform-specific ENSURE_MSYSTEM_IS_SET definitions
Range-diff
1: b2ec35d ! 1: 24841fc mingw: rely on MSYS2's metadata instead of hard-coding it
Resolved: 6754ca1 (mingw: add a cache below mingw's lstat and dirent implementations, 2013-10-01)
resolved by keeping upstream's nedmalloc removal while adding compat/win32/fscache.c from the patch
Range-diff
1: 6754ca1 ! 1: ec08963 mingw: add a cache below mingw's lstat and dirent implementations
Resolved: 3746703 (mingw: optionally enable wsl compability file mode bits, 2023-06-07)
kept compat/win32/wsl.c addition, dropped compat/nedmalloc/nedmalloc.c since nedmalloc was removed upstream
Range-diff
1: 3746703 ! 1: cf5bd8a mingw: optionally enable wsl compability file mode bits
To: b56a1c83e7 (build: tolerate use of _Generic from glibc 2.43 with Clang (git-for-windows#6233), 2026-05-08) (6b8f54921e..b56a1c83e7)
Statistics
Range-diff (click to expand)
1: d6973cf = 1: c424801 ci(dockerized): reduce the PID limit for private repositories
2: 562b741 = 2: afb4d31 mingw: skip symlink type auto-detection for network share targets
3: 38280d0 = 3: 312dfb2 Merge branch 'fix-ci'
4: 85e3aca = 4: 61f7794 unix-socket: avoid leak when initialization fails
5: 9068be2 = 5: 3d5e024 Merge branch 'prevent-accidental-ntlm-exfiltration-via-symlinks'
6: 8c76829 = 6: 10d4958 grep: prevent
^$false match at end of file7: 6f582d0 = 7: 34e30bf Merge branch 'v2.53.0.windows.3'
8: 9c38256 = 8: a532c56 Merge branch 'fixes-from-the-git-mailing-list'
9: d6950dd = 9: 661ebb3 t9350: point out that refs are not updated correctly
10: e0b5a73 = 10: 708e693 transport-helper: add trailing --
11: 01f1191 = 11: f62dca8 remote-helper: check helper status after import/export
12: 0c2c3ef = 12: 6e4757d clean: do not traverse mount points
13: 4b0ff0a < -: ---------- mingw: include the Python parts in the build
14: b1b3ef6 = 13: 315d9b1 Always auto-gc after calling a fast-import transport
15: 46601b8 = 14: 95f57cc mingw: prevent regressions with "drive-less" absolute paths
16: e4d87c8 = 15: 4c680a1 clean: remove mount points when possible
-: ---------- > 16: dcdb1da mingw: include the Python parts in the build
23: 3293adb = 17: 946bcdd win32/pthread: avoid name clashes with winpthread
26: 68ffef4 = 18: b0ce941 git-compat-util: avoid redeclaring _DEFAULT_SOURCE
29: 8f2a7b5 = 19: beef1a1 Import the source code of mimalloc v2.2.7
32: 3808a93 = 20: cd34801 mimalloc: adjust for building inside Git
36: b39a004 ! 21: 169423b mimalloc: offer a build-time option to enable it
17: 66a9e8a = 22: 350cfbb vcpkg_install: detect lack of Git
18: df09488 = 23: 6ce210d vcpkg_install: add comment regarding slow network connections
19: 726c0bb = 24: 16bc077 vcbuild: install ARM64 dependencies when building ARM64 binaries
20: 2fff5ca = 25: a7dcc2f vcbuild: add an option to install individual 'features'
21: 2833516 = 26: 0eccbcb cmake: allow building for Windows/ARM64
22: 4c4b7a9 = 27: 63d6316 ci(vs-build) also build Windows/ARM64 artifacts
33: f52196c = 28: 9ccb251 mingw: demonstrate a
git addissue with NTFS junctions24: 64c84f8 = 29: 99571e7 Add schannel to curl installation
37: 83c7f62 = 30: f9fc513 t5505/t5516: allow running without
.git/branches/in the templates38: a8970e7 = 31: d94377b strbuf_realpath(): use platform-dependent API if available
39: 89c72ec = 32: f5d5609 http: use new "best effort" strategy for Secure Channel revoke checking
45: 84782b3 ! 33: 20635d7 mingw: use mimalloc
27: 4cf0581 = 34: c7f7560 cmake(): allow setting HOST_CPU for cross-compilation
46: 387c3f6 = 35: 5d8d759 t5505/t5516: fix white-space around redirectors
48: 8c20f03 = 36: 22bf032 transport: optionally disable side-band-64k
49: 5de0fcb = 37: ffee40f mingw: fix fatal error working on mapped network drives on Windows
50: bc0e5ce = 38: bb66e45 clink.pl: fix MSVC compile script to handle libcurl-d.lib
51: 29ef7c1 = 39: 57b3a25 mingw: implement a platform-specific
strbuf_realpath()52: b7bbfb2 = 40: ae3f9bb t3701: verify that we can add lots of files interactively
53: 0ce3e0c = 41: 154eeb9 commit: accept "scissors" with CR/LF line endings
54: c5f9cf4 = 42: cce4c85 t0014: fix indentation
55: 4f5d50a = 43: 3801fc6 git-gui: accommodate for intent-to-add files
56: ee90c77 = 44: e3595f3 mingw: allow for longer paths in
parse_interpreter()57: bc1ad13 = 45: 3523f1e compat/vcbuild: document preferred way to build in Visual Studio
58: 4b43afe = 46: 3c271a6 http: optionally send SSL client certificate
68: c4b3327 = 47: 41ada1e windows: skip linking
git-<command>for built-ins69: 5e10b3d = 48: ef9ff66 mingw: stop hard-coding
CC = gcc25: 8bb78e8 = 49: adb761c hash-object: demonstrate a >4GB/LLP64 problem
70: f19b4f2 = 50: dec188c mingw: drop the -D_USE_32BIT_TIME_T option
28: be18eeb = 51: ca21a35 object-file.c: use size_t for header lengths
71: 4eeb9bd = 52: d9a3d4f mingw: only use -Wl,--large-address-aware for 32-bit builds
30: 4138ea5 = 53: 9af37e9 CMake: default Visual Studio generator has changed
31: 896c3c0 = 54: e6df1b9 hash algorithms: use size_t for section lengths
72: e057b3c = 55: 87fb026 mingw: avoid over-specifying
--pic-executable34: cacb810 = 56: 0447446 .gitignore: add Visual Studio CMakeSetting.json file
35: f5ab35b = 57: 01b8581 hash-object --stdin: verify that it works with >4GB/LLP64
73: 299c314 = 58: 7f6751f mingw: set the prefix and HOST_CPU as per MSYS2's settings
40: 543ed07 = 59: da9d5a4 subtree: update
contrib/subtreetesttarget41: 1df9c22 = 60: 55a2b12 CMakeLists: add default "x64-windows" arch for Visual Studio
42: ad7ef84 = 61: a6c857e hash-object: add another >4GB/LLP64 test case
43: aa86d3a = 62: 9119b2b setup: properly use "%(prefix)/" when in WSL
44: 8a0953b = 63: dbc96f9 Add config option
windows.appendAtomically74: bdbf4a3 = 64: af9e0a3 mingw: only enable the MSYS2-specific stuff when compiling in MSYS2
47: e061ede = 65: 0c39d29 MinGW: link as terminal server aware
59: ec1c9a8 = 66: 7f2d84b ci: run
contrib/subtreetests in CI builds60: 170237c = 67: 4288755 CMake: show Win32 and Generator_platform build-option values
61: 5b2a3c3 = 68: aaf4459 hash-object: add a >4GB/LLP64 test case using filtered input
62: c059617 = 69: d0698e6 compat/mingw.c: do not warn when failing to get owner
63: 48388c3 = 70: faf1e13 mingw: $env:TERM="xterm-256color" for newer OSes
64: 94befea = 71: 146e582 winansi: check result and Buffer before using Name
65: 4aadc29 = 72: a2010d7 mingw: change core.fsyncObjectFiles = 1 by default
66: 755a577 = 73: 50c906f Fix Windows version resources
67: 7ecba95 = 74: 58ff533 status: fix for old-style submodules with commondir
75: b2ec35d ! 75: 24841fc mingw: rely on MSYS2's metadata instead of hard-coding it
76: 6d304bc = 76: 97c19d3 mingw: always define
ETC_*for MSYS2 environments77: 8ed5802 = 77: df027b7 max_tree_depth: lower it for clang builds in general on Windows
78: 117e90a = 78: 07c89a6 mingw: ensure valid CTYPE
80: 2ef9a3a = 79: df89c44 mingw: allow
git.exeto be used instead of the "Git wrapper"82: 2cb20b6 = 80: b94eb1f mingw: ignore HOMEDRIVE/HOMEPATH if it points to Windows' system directory
84: 3d671db = 81: c8f19ea Merge branch 'dscho-avoid-d-f-conflict-in-vs-master'
86: fc4d756 = 82: 4b06e83 clink.pl: fix libexpatd.lib link error when using MSVC
88: 6f9187f = 83: 260a880 Makefile: clean up .ilk files when MSVC=1
90: 871d4ff = 84: a5fde6c vcbuild: add support for compiling Windows resource files
92: 329d2db = 85: 57a40cb config.mak.uname: add git.rc to MSVC builds
95: 42bc85c = 86: 395e96f clink.pl: ignore no-stack-protector arg on MSVC=1 builds
96: 18cce87 = 87: ceb0dd6 http: optionally load libcurl lazily
100: fae6111 = 88: 8a45f38 clink.pl: move default linker options for MSVC=1 builds
101: 70d11b9 = 89: bf62401 http: support lazy-loading libcurl also on Windows
105: d80beb6 = 90: ce40cc9 cmake: install headless-git.
106: ab83f7b = 91: 0588706 http: when loading libcurl lazily, allow for multiple SSL backends
110: 536e6cc = 92: 11d7493 git.rc: include winuser.h
111: cbf05eb = 93: 858537f mingw: do load libcurl dynamically by default
79: 84033b2 = 94: 2e7766d ci: work around a problem with HTTP/2 vs libcurl v8.10.0
81: b2c5bf2 = 95: ec86269 revision: create mark_trees_uninteresting_dense()
125: cc2b7db = 96: 0c6d766 Merge 'remote-hg-prerequisites' into HEAD
83: 65d053b = 97: b2ae284 survey: stub in new experimental 'git-survey' command
126: 33f89ac = 98: 9936650 Merge branch 'drive-prefix'
85: 402d8b1 = 99: 0aad9a7 survey: add command line opts to select references
127: ea05059 = 100: 4fca9e0 Merge branch 'dont-clean-junctions'
87: f9e25cb = 101: de09720 survey: start pretty printing data in table form
128: 5bea6ca = 102: 3c73ca1 Merge branch 'msys2-python'
89: 4677539 = 103: 32cb032 survey: add object count summary
129: 93ec7be = 104: cccb862 Update mimalloc to v2.2.7 (Update mimalloc to v2.2.7 git#6048)
91: b0cf281 = 105: 6f6ce4a survey: summarize total sizes by object type
130: 5a08a3d = 106: 282d26d Merge pull request Config option to disable side-band-64k for transport git#2375 from assarbad/reintroduce-sideband-config
93: b250d9a = 107: bec839c survey: show progress during object walk
94: 73db730 = 108: 1839517 mingw: make sure
errnois set correctly when socket operations fail99: 0f84320 = 109: 7b34fb1 t5563: verify that NTLM authentication works
131: 9d6de26 = 110: 3397518 Merge pull request mingw: fix fatal error working on mapped network drives on Windows git#2488 from bmueller84/master
97: 7e7ea66 = 111: 2538280 survey: add ability to track prioritized lists
98: a174027 = 112: 1ea0020 compat/mingw: handle WSA errors in strerror
104: fdbeacf = 113: 041a2bc http: disallow NTLM authentication by default
132: 1916df4 = 114: 814f40d Merge pull request clink.pl: fix MSVC compile script to handle libcurl-d.lib git#2501 from jeffhostetler/clink-debug-curl
102: 9b96078 = 115: 8db4178 survey: add report of "largest" paths
103: c40b754 = 116: 03113f8 compat/mingw: drop outdated comment
109: 280e573 = 117: 658e8ac http: warn if might have failed because of NTLM
133: 258277a = 118: 55aff6d Merge pull request Handle
git add <file>where <file> traverses an NTFS junction git#2504 from dscho/access-repo-via-junction107: 33ada6e = 119: 9288971 survey: add --top= option and config
108: 2b25e1a = 120: cb067d7 t0301: actually test credential-cache on Windows
151: 080e8bd = 121: d42cfe7 credential: advertise NTLM suppression and allow helpers to re-enable
134: 04a2fde = 122: bf4ff5e Merge pull request Introduce and use the new "best effort" strategy for Secure Channel revoke checking git#2535 from dscho/schannel-revoke-best-effort
112: f3defeb = 123: 3a89b3b Add a GitHub workflow to verify that Git/Scalar work in Nano Server
113: f174e00 = 124: 62d754b mingw: suggest
windows.appendAtomicallyin more cases114: f66f40a = 125: 7589321 win32: use native ANSI sequence processing, if possible
115: 23d7f01 = 126: bf33228 common-main.c: fflush stdout buffer upon exit
116: 4442976 = 127: bf8e73e t5601/t7406(mingw): do run tests with symlink support
117: 6755bcd = 128: ca2dbd8 win32: ensure that
localtime_r()is declared even in i686 builds118: c483b14 = 129: e51253b Fallback to AppData if XDG_CONFIG_HOME is unset
119: fb6a4e6 = 130: 8b5d685 run-command: be helpful with Git LFS fails on Windows 7
120: b5c70f6 = 131: bbb18ea survey: clearly note the experimental nature in the output
121: 7a06898 = 132: 86f9f49 credential-cache: handle ECONNREFUSED gracefully
122: 0122215 = 133: 3ceab76 reftable: do make sure to use custom allocators
123: 98196a3 = 134: 116cabb check-whitespace: avoid alerts about upstream commits
124: 5315110 = 135: 78d4c75 t/t5571-prep-push-hook.sh: Add test with writing to stderr
153: 7ccfefc = 136: 728f928 dir: do not traverse mount points
154: 060069a = 137: 21e1869 win32: thread-utils: handle multi-socket systems
155: 5747f26 = 138: e9a67f6 t5563: add tests for http.emptyAuth with Negotiate
135: d31bc14 = 139: 0ba8815 Merge pull request ci: avoid d/f conflict in vs/master git#2618 from dscho/avoid-d/f-conflict-in-vs/master
136: 3664f6b = 140: cd4ee53 Merge 'add-p-many-files'
137: 4faccd9 = 141: 7136533 Merge pull request Rationalize line endings for scissors-cleanup git#2714 from lbonanomi/crlf-scissors
138: 10bdd0a = 142: 7947ddd Merge pull request t/t0014: fix: eliminate additional lines from trace git#2655 from jglathe/jg/t0014_trace_extra_info
139: 356d24a = 143: 385fdb6 Merge 'git-gui/js/intent-to-add'
140: 9da7ff0 = 144: f1bea85 Merge pull request Vcpkg Install: detect lack of working Git, and note possible vcpkg time outs git#2351 from PhilipOakley/vcpkg-tip
141: 9bc71c7 = 145: 58cabef Merge pull request Windows arm64 support git#2915 from dennisameling/windows-arm64-support
142: e6bc8ed = 146: b911acf Merge pull request cmake(): allow setting HOST_CPU for cross-compilation git#3327 from dennisameling/fix-host-cpu
143: 1c82712 = 147: c61c36c Merge pull request mingw: allow for longer paths in
parse_interpreter()git#3165 from dscho/increase-allowed-length-of-interpreter-path144: 72e3a1b = 148: 83b5666 Merge pull request Let the documentation reflect that there is no vs/master anymore git#3220 from dscho/there-is-no-vs/master-anymore
145: 246ebe8 = 149: b78624b Merge pull request http: Add support for enabling automatic sending of SSL client certificate git#3293 from pascalmuller/http-support-automatically-sending-client-certificate
146: 5df218d = 150: f1ba6f4 Merge pull request Add
contrib/subtreetest execution to CI builds git#3349 from vdye/feature/ci-subtree-tests147: 0a61317 = 151: 1be444d Merge pull request Make Git for Windows start builds in modern Visual Studio git#3306 from PhilipOakley/vs-sln
148: e1acefe = 152: e353a42 Merge pull request Begin
unsigned long->size_tconversion to support large files on Windows git#3533 from PhilipOakley/hashliteral_t149: d2796b9 = 153: ee47485 Merge pull request Various fixes around
safe.directorygit#3791: Various fixes aroundsafe.directory150: 4988f29 = 154: 2af9a3f Merge pull request mingw: set $env:TERM=xterm-256color for newer OSes git#3751 from rkitover/native-term
152: 83dbbdb = 155: e696f87 Merge pull request winansi: check result before using Name for pty git#3875 from 1480c1/wine/detect_msys_tty
156: 9755d8a = 156: 0f2fa90 Merge branch 'optionally-dont-append-atomically-on-windows'
157: 1021291 = 157: 947e5bd Merge branch 'fsync-object-files-always'
158: b5d970e = 158: f541e86 Merge pull request MinGW: link as terminal server aware git#3942 from rimrul/mingw-tsaware
159: a26823e = 159: 4564041 Fix Windows version resources (Fix Windows version resources git#4092)
160: e9f9cfd = 160: 09ea215 Fix global repository field not being cleared (Fix global repository field not being cleared git#4083)
161: 88e49d7 = 161: 2c21739 Skip linking the "dashed"
git-<command>s for built-ins (Skip linking the "dashed"git-<command>s for built-ins git#4252)162: f7373b5 = 162: 74a1336 Add full
mingw-w64-git(i.e. regular MSYS2 ecosystem) support (Add fullmingw-w64-git(i.e. regular MSYS2 ecosystem) support git#5971)163: a398152 = 163: 4b05a61 Merge pull request Allow running Git directly from
C:\Program Files\Git\mingw64\bin\git.exegit#2506 from dscho/issue-2283164: 2c7820b = 164: 4330559 Merge pull request Include Windows-specific maintenance and headless-git git#2974 from derrickstolee/maintenance-and-headless
165: bbc4425 = 165: e04bd56 ARM64: Embed manifest properly (ARM64: Embed manifest properly git#4718)
166: 1d01b65 = 166: b66afe0 Lazy load libcurl, allowing for an SSL/TLS backend-specific libcurl (Lazy load libcurl, allowing for an SSL/TLS backend-specific libcurl git#4410)
167: 29177ce = 167: 16b74b0 Merge branch 'nano-server'
168: c0a3c75 = 168: 33a5460 Additional error checks for issuing the windows.appendAtomically warning (Additional error checks for issuing the windows.appendAtomically warning git#4528)
169: aad6211 = 169: 6495227 win32: use native ANSI sequence processing, if possible (win32: use native ANSI sequence processing, if possible git#4700)
170: 0e18236 = 170: f72b7ea common-main.c: fflush stdout buffer when exit (common-main.c: fflush stdout buffer when exit git#4901)
171: f0d541c = 171: 9d850eb Merge branch 'run-t5601-and-t7406-with-symlinks-on-windows-10'
172: 7fd9820 = 172: ce3c09c Merge branch 'Fix-i686-build-with-GCC-v14'
173: 918ddfc = 173: e2e87f1 Merge branch 'Fallback-to-AppData-if-XDG-CONFIG-HOME-is-unset'
174: 9731138 = 174: 5d1eb3d Merge branch 'run-command-be-helpful-when-Git-LFS-fails-on-Windows-7'
175: e8bf134 = 175: 7f27120 pack-objects: create new name-hash algorithm (pack-objects: create new name-hash algorithm git#5157)
176: f5ca995 = 176: 460ff3f Add path walk API and its use in 'git pack-objects' (Add path walk API and its use in 'git pack-objects' git#5171)
177: eb0b226 = 177: 59ee30f Add experimental 'git survey' builtin (Add experimental 'git survey' builtin git#5174)
178: 9acb803 = 178: cb9474e credential-cache: handle ECONNREFUSED gracefully (credential-cache: handle ECONNREFUSED gracefully git#5329)
179: f5a3858 = 179: d1e01db Merge branch 'reftable-vs-custom-allocators'
180: 6d957be = 180: ed6b1a4 Merge branch 'check-whitespace-only-downstream'
181: 958ebdf = 181: c7fadda t/t5571-prep-push-hook.sh: Add test with writing to stderr (t/t5571-prep-push-hook.sh: Add test with writing to stderr git#6063)
182: c7d2d12 = 182: 9f6ca1e Merge branch 'disallow-ntlm-auth-by-default'
183: 8fcec6e = 183: c8686a4 Don't traverse mount points in
remove_dir_recurse()(Don't traverse mount points inremove_dir_recurse()git#6151)184: cdc9da1 = 184: f6070a7 Detect number of cores better on multi-socket systems (Detect number of cores better on multi-socket systems git#6108)
185: 3dd1096 = 185: a206b7e http: fix emptyAuth=auto for Negotiate/SPNEGO (http: fix emptyAuth=auto for Negotiate/SPNEGO git#6170)
186: a3f27da = 186: fd2054b Merge branch 'ready-for-upstream'
187: b1fe7d6 = 187: ab72191 ci(macos): skip the
git p4tests188: 0b9f0f4 = 188: e03f3b1 ci(macos): skip the
git p4tests (ci(macos): skip thegit p4tests git#5954)189: a62fa8a = 189: c22d8d6 Win32: make FILETIME conversion functions public
190: d5723c5 = 190: 4671ad2 Win32: dirent.c: Move opendir down
191: 5142425 = 191: 91536f5 mingw: make the dirent implementation pluggable
237: b2103d6 = 192: 8a1cc78 git-gui--askyesno: fix funny text wrapping
192: 7870666 = 193: 212a346 Win32: make the lstat implementation pluggable
240: 86633b7 = 194: f1b9192 git-gui--askyesno (mingw): use Git for Windows' icon, if available
193: f0bd911 = 195: df9a98b mingw: add infrastructure for read-only file system level caches
243: e464016 = 196: 36fd1e2 Merge branch 'git-gui-askyesno'
194: 6754ca1 ! 197: ec08963 mingw: add a cache below mingw's lstat and dirent implementations
195: 628e79a = 198: 8b54300 fscache: load directories only once
196: f22880a = 199: a740642 fscache: add key for GIT_TRACE_FSCACHE
197: c234281 = 200: 70db1e8 fscache: remember not-found directories
198: 7d17ec2 = 201: 22cc2c1 fscache: add a test for the dir-not-found optimization
199: 3370ef8 = 202: 6566965 add: use preload-index and fscache for performance
200: 9c0cc4d = 203: 600ceac dir.c: make add_excludes aware of fscache during status
201: 0bb06d3 = 204: f35488f fscache: make fscache_enabled() public
202: 8e97207 = 205: 2e7b168 dir.c: regression fix for add_excludes with fscache
203: e2bf826 = 206: d622026 fetch-pack.c: enable fscache for stats under .git/objects
204: 3aa6804 = 207: 31d63fe checkout.c: enable fscache for checkout again
205: d15e8c1 = 208: 2cbbab4 Enable the filesystem cache (fscache) in refresh_index().
206: 6bee0a8 = 209: 6729ff9 fscache: use FindFirstFileExW to avoid retrieving the short name
207: 6149d40 = 210: 83c4e13 fscache: add GIT_TEST_FSCACHE support
208: 8957a23 = 211: bb68439 fscache: add fscache hit statistics
209: 8ab4f83 = 212: 7eae16f unpack-trees: enable fscache for sparse-checkout
210: 6983319 = 213: 0e4f3dc status: disable and free fscache at the end of the status command
211: 9b61b31 = 214: 8450b5d mem_pool: add GIT_TRACE_MEMPOOL support
212: 0005f13 = 215: 1671840 fscache: fscache takes an initial size
213: c3ffa03 = 216: 63ed40b fscache: update fscache to be thread specific instead of global
214: f77bbce = 217: 45413eb fscache: teach fscache to use mempool
215: 6e758af = 218: 122ac58 fscache: make fscache_enable() thread safe
216: bf3a9a0 = 219: 01fb732 fscache: teach fscache to use NtQueryDirectoryFile
217: c429271 = 220: 1290aae fscache: remember the reparse tag for each entry
218: 5a40e74 = 221: 951bbcb Merge branch 'fscache'
219: 66e6f7f = 222: 8fedb03 fscache: implement an FSCache-aware is_mount_point()
220: ec70df0 = 223: c849c93 Merge pull request status: disable and free fscache at the end of the status command git#1909 from benpeart/free-fscache-after-status-gfw
221: 2ddf799 = 224: db3141f clean: make use of FSCache
222: 90cac90 = 225: cd87574 Merge remote-tracking branch 'benpeart/fscache-per-thread-gfw'
223: 0c16c0a = 226: 0e80396 Merge branch 'dont-clean-junctions-fscache'
224: 0785e76 = 227: 6e62683 pack-objects (mingw): demonstrate a segmentation fault with large deltas
225: a915b39 = 228: 5c4cca7 mingw: support long paths
226: 4d567c1 = 229: 6406332 win32(long path support): leave drive-less absolute paths intact
227: 1213851 = 230: 4c9f3e1 compat/fsmonitor/fsm-*-win32: support long paths
228: 057344e = 231: d2232a6 clean: suggest using
core.longPathsif paths are too long to remove229: 1da8279 = 232: e5eea25 mingw: Support
git_terminal_promptwith more terminals230: c0969d8 = 233: f1254da compat/terminal.c: only use the Windows console if bash 'read -r' fails
231: 44e9195 = 234: ab6ecaa mingw (git_terminal_prompt): do fall back to CONIN$/CONOUT$ method
232: 4b07b64 = 235: aff87c7 Win32: symlink: move phantom symlink creation to a separate function
234: 2af244c = 236: 219b078 Introduce helper to create symlinks that knows about index_state
236: a741427 = 237: 4a787f8 mingw: allow to specify the symlink type in .gitattributes
239: 54a2b03 = 238: f3ccaf5 Win32: symlink: add test for
symlinkattribute242: 400f6ad = 239: a302b70 mingw: explicitly specify with which cmd to prefix the cmdline
245: 77e0130 = 240: 4bf1cfd mingw: when path_lookup() failed, try BusyBox
246: bc1cc52 = 241: 7bc4d42 test-tool: learn to act as a drop-in replacement for
iconv247: e05a47e = 242: 1346597 tests(mingw): if
iconvis unavailable, usetest-helper --iconv248: d1bf48d = 243: f7be490 gitattributes: mark .png files as binary
249: 1e5de66 = 244: a8ec111 tests: move test PNGs into t/lib-diff/
250: dc1012a = 245: 59d35da tests: only override sort & find if there are usable ones in /usr/bin/
251: 558a58b = 246: c7c7d8c tests: use the correct path separator with BusyBox
252: c8c0ca8 = 247: b9de059 mingw: only use Bash-ism
builtin pwd -Wwhen available253: f29c474 = 248: f1bff07 tests (mingw): remove Bash-specific pwd option
254: 19f1710 = 249: bc013ba test-lib: add BUSYBOX prerequisite
257: 6a16e21 = 250: b592fdb t5003: use binary file from t/lib-diff/
233: d1e2152 = 251: 25ae913 mingw: introduce code to detect whether we're inside a Windows container
260: f9f1975 = 252: de2d2ad t5532: workaround for BusyBox on Windows
235: 26560f4 = 253: cde2e74 mingw: when running in a Windows container, try to rename() harder
263: 193c3a1 = 254: 97262cf t5605: special-case hardlink test for BusyBox-w32
238: ee0f71b = 255: 14e58a3 mingw: move the file_attr_to_st_mode() function definition
266: cc1a007 = 256: 342a91c t5813: allow for $PWD to be a Windows path
241: 3b40b43 = 257: 9163406 mingw: Windows Docker volumes are not symbolic links
269: edf58b2 = 258: 3211f3a t9200: skip tests when $PWD contains a colon
244: c2c0ea6 = 259: 6224f4f mingw: work around rename() failing on a read-only file
271: 1f79193 = 260: 23dd7bb mingw: kill child processes in a gentler way
274: 3746703 ! 261: cf5bd8a mingw: optionally enable wsl compability file mode bits
276: a329fa0 = 262: e2e986c mingw: really handle SIGINT
277: 7a32253 = 263: cbafce6 Partially un-revert "editor: save and reset terminal after calling EDITOR"
255: 13344df = 264: ad348b3 Merge branch 'gitk-and-git-gui-patches'
258: 922836e = 265: d454b6f Merge branch 'long-paths'
261: af41357 = 266: 8aac9cd Merge branch 'msys2'
264: 7bdf5ff = 267: 56fe2c0 Merge 'docker-volumes-are-no-symlinks'
267: 467a9d3 = 268: 8a2dd77 mingw: try resetting the read-only bit if rename fails (Reset READONLY if rename fails git#4527)
270: 0d45dbf = 269: 1b8845d Merge pull request Specify symlink type in .gitattributes git#1897 from piscisaureus/symlink-attr
256: c07df19 = 270: ffade1c Describe Git for Windows' architecture
275: 957ef5e = 271: c0b2879 Merge branch 'busybox-w32'
259: d45d259 = 272: b7406d8 Modify the Code of Conduct for Git for Windows
282: 8f56b4b = 273: 8b3b167 Merge branch 'wsl-file-mode-bits'
262: 5f93d70 = 274: 059d164 CONTRIBUTING.md: add guide for first-time contributors
283: 2a99926 = 275: 60f5bb8 Merge pull request Handle Ctrl+C in Git Bash nicely git#1170 from dscho/mingw-kill-process
265: b45dc6e = 276: 624074a README.md: Add a Windows-specific preamble
278: c952e95 = 277: ae26b12 reset: reinstate support for the deprecated --stdin option
284: 06966fb = 278: c3c47ad Merge branch 'un-revert-editor-save-and-reset'
268: 8174097 = 279: d59e0e6 Add an issue template
272: e02d880 = 280: c5afa42 Add a GitHub workflow to monitor component updates
279: c8a9334 = 281: 05a91be fsmonitor: reintroduce core.useBuiltinFSMonitor
285: 6bcb1f8 = 282: 4dcb46c Merge branch 'phase-out-reset-stdin'
273: 41b718b = 283: 93a9f48 Modify the GitHub Pull Request template (to reflect Git for Windows)
280: 75734dd = 284: 54b7b40 dependabot: help keeping GitHub Actions versions up to date
286: 1eb16ab = 285: 0700075 Merge branch 'deprecate-core.useBuiltinFSMonitor'
281: e827b0f = 286: 6367efb SECURITY.md: document Git for Windows' policies
287: 7fd6ba8 = 287: 00caf25 Merge pull request Start monitoring updates of Git for Windows' components in the open git#2837 from dscho/monitor-component-updates
288: 3bcc626 = 288: 39ad41f Merge 'readme' into HEAD
289: a8e3250 = 289: 5c9a869 Add an AGENTS.md file to help with AI-assisted debugging/development
290: 4c886d8 = 290: 1400ba4 fixup! Add an AGENTS.md file to help with AI-assisted debugging/development
291: 23aab78 = 291: 09baf17 fixup! Add an AGENTS.md file to help with AI-assisted debugging/development
292: 83cc343 = 292: b8f2fdf fixup! Add an AGENTS.md file to help with AI-assisted debugging/development
293: 0358f9a = 293: f79be81 fixup! Add an AGENTS.md file to help with AI-assisted debugging/development
294: 94e8b8e = 294: 20c4049 fixup! Add an AGENTS.md file to help with AI-assisted debugging/development
295: b848ad9 = 295: 32606be Add an AGENTS.md file to help with AI-assisted debugging/development (Add an AGENTS.md file to help with AI-assisted debugging/development git#6198)
296: 6ee252e = 296: 37016e1 fixup! ci: work around a problem with HTTP/2 vs libcurl v8.10.0
297: e79ba45 = 297: 3d0cf3f fixup! revision: create mark_trees_uninteresting_dense()
298: 8024c18 = 298: 3845d7f Drop obsolete downstream patches (Drop obsolete downstream patches git#6208)
299: a6e577a = 299: 65619b9 Merge branch 'pr-2097'
300: 3bf285b = 300: 9962070 fixup! Add a GitHub workflow to verify that Git/Scalar work in Nano Server
301: d334944 = 301: 12a8c3e Update GitHub Actions versions used in the GitHub workflows (Update GitHub Actions versions used in the GitHub workflows git#6220)
302: 209d544 = 302: 91d195b build: tolerate use of _Generic from glibc 2.43 with Clang
303: 45ef333 = 303: b56a1c8 build: tolerate use of _Generic from glibc 2.43 with Clang (build: tolerate use of _Generic from glibc 2.43 with Clang git#6233)