Rebase shears/main: 1 conflict(s) (0 skipped, 1 resolved) (#24153509453)#105
Open
gitforwindowshelper[bot] wants to merge 284 commits intobase/shears/main-24153509453from
Open
Rebase shears/main: 1 conflict(s) (0 skipped, 1 resolved) (#24153509453)#105gitforwindowshelper[bot] wants to merge 284 commits intobase/shears/main-24153509453from
gitforwindowshelper[bot] wants to merge 284 commits intobase/shears/main-24153509453from
Conversation
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>
NTFS junctions are somewhat similar in spirit to Unix bind mounts: they point to a different directory and are resolved by the filesystem driver. As such, they appear to `lstat()` as if they are directories, not as if they are symbolic links. _Any_ user can create junctions, while symbolic links can only be created by non-administrators in Developer Mode on Windows 10. Hence NTFS junctions are much more common "in the wild" than NTFS symbolic links. It was reported in git-for-windows#2481 that adding files via an absolute path that traverses an NTFS junction: since 1e64d18 (mingw: do resolve symlinks in `getcwd()`), we resolve not only symbolic links but also NTFS junctions when determining the absolute path of the current directory. The same is not true for `git add <file>`, where symbolic links are resolved in `<file>`, but not NTFS junctions. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Dennis Ameling <dennis@dennisameling.com> 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 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>
Some platforms (e.g. Windows) provide API functions to resolve paths much quicker. Let's offer a way to short-cut `strbuf_realpath()` on those platforms. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
When we commit the template directory as part of `make vcxproj`, the `branches/` directory is not actually commited, as it is empty. Two tests were not prepared for that situation. This developer tried to get rid of the support for `.git/branches/` a long time ago, but that effort did not bear fruit, so the best we can do is work around in these here tests. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
The vcpkg_install batch file depends on the availability of a working Git on the CMD path. This may not be present if the user has selected the 'bash only' option during Git-for-Windows install. Detect and tell the user about their lack of a working Git in the CMD window. Fixes git-for-windows#2348. A separate PR git-for-windows/build-extra#258 now highlights the recommended path setting during install. Signed-off-by: Philip Oakley <philipoakley@iee.email>
There are no Windows/ARM64 agents in GitHub Actions yet, therefore we just skip adjusting the `vs-test` job for now. Signed-off-by: Dennis Ameling <dennis@dennisameling.com> 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>
Special-casing even more configurations simply does not make sense. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Update clink.pl to link with either libcurl.lib or libcurl-d.lib depending on whether DEBUG=1 is set. Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
There is a Win32 API function to resolve symbolic links, and we can use that instead of resolving them manually. Even better, this function also resolves NTFS junction points (which are somewhat similar to bind mounts). This fixes git-for-windows#2481. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
The native Windows HTTPS backend is based on Secure Channel which lets the caller decide how to handle revocation checking problems caused by missing information in the certificate or offline CRL distribution points. Unfortunately, cURL chose to handle these problems differently than OpenSSL by default: while OpenSSL happily ignores those problems (essentially saying "¯\_(ツ)_/¯"), the Secure Channel backend will error out instead. As a remedy, the "no revoke" mode was introduced, which turns off revocation checking altogether. This is a bit heavy-handed. We support this via the `http.schannelCheckRevoke` setting. In curl/curl#4981, we contributed an opt-in "best effort" strategy that emulates what OpenSSL seems to do. In Git for Windows, we actually want this to be the default. This patch makes it so, introducing it as a new value for the `http.schannelCheckRevoke" setting, which now becmes a tristate: it accepts the values "false", "true" or "best-effort" (defaulting to the last one). Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
The convention in Git project's shell scripts is to have white-space _before_, but not _after_ the `>` (or `<`). Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This change enhances `git commit --cleanup=scissors` by detecting scissors lines ending in either LF (UNIX-style) or CR/LF (DOS-style). Regression tests are included to specifically test for trailing comments after a CR/LF-terminated scissors line. Signed-off-by: Luke Bonanomi <lbonanomi@gmail.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
For some reason, this test case was indented with 4 spaces instead of 1 horizontal tab. The other test cases in the same test script are fine. Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
As of Git v2.28.0, the diff for files staged via `git add -N` marks them as new files. Git GUI was ill-prepared for that, and this patch teaches Git GUI about them. Please note that this will not even fix things with v2.28.0, as the `rp/apply-cached-with-i-t-a` patches are required on Git's side, too. This fixes git-for-windows#2779 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Pratyush Yadav <me@yadavpratyush.com>
The vcpkg downloads may not succeed. Warn careful readers of the time out. A simple retry will usually resolve the issue. Signed-off-by: Philip Oakley <philipoakley@iee.email> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Dennis Ameling <dennis@dennisameling.com>
Git's regular Makefile mentions that HOST_CPU should be defined when cross-compiling Git: https://github.com/git-for-windows/git/blob/37796bca76ef4180c39ee508ca3e42c0777ba444/Makefile#L438-L439 This is then used to set the GIT_HOST_CPU variable when compiling Git: https://github.com/git-for-windows/git/blob/37796bca76ef4180c39ee508ca3e42c0777ba444/Makefile#L1337-L1341 Then, when the user runs `git version --build-options`, it returns that value: https://github.com/git-for-windows/git/blob/37796bca76ef4180c39ee508ca3e42c0777ba444/help.c#L658 This commit adds the same functionality to the CMake configuration. Users can now set -DHOST_CPU= to set the target architecture. Signed-off-by: Dennis Ameling <dennis@dennisameling.com>
As reported in newren/git-filter-repo#225, it looks like 99 bytes is not really sufficient to represent e.g. the full path to Python when installed via Windows Store (and this path is used in the hasb bang line when installing scripts via `pip`). Let's increase it to what is probably the maximum sensible path size: MAX_PATH. This makes `parse_interpreter()` in line with what `lookup_prog()` handles. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Vilius Šumskas <vilius@sumskas.eu>
We used to have that `make vcxproj` hack, but a hack it is. In the meantime, we have a much cleaner solution: using CMake, either explicitly, or even more conveniently via Visual Studio's built-in CMake support (simply open Git's top-level directory via File>Open>Folder...). Let's let the `README` reflect this. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This adds support for a new http.sslAutoClientCert config value. In cURL 7.77 or later the schannel backend does not automatically send client certificates from the Windows Certificate Store anymore. This config value is only used if http.sslBackend is set to "schannel", and can be used to opt in to the old behavior and force cURL to send client certificates. This fixes git-for-windows#3292 Signed-off-by: Pascal Muller <pascalmuller@gmail.com>
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>
When t5605 tries to verify that files are hardlinked (or that they are not), it uses the `-links` option of the `find` utility. BusyBox' implementation does not support that option, and BusyBox-w32's lstat() does not even report the number of hard links correctly (for performance reasons). So let's just switch to a different method that actually works on Windows. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This was pull request git-for-windows#1645 from ZCube/master Support windows container. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Git for Windows uses MSYS2's Bash to run the test suite, which comes with benefits but also at a heavy price: on the plus side, MSYS2's POSIX emulation layer allows us to continue pretending that we are on a Unix system, e.g. use Unix paths instead of Windows ones, yet this is bought at a rather noticeable performance penalty. There *are* some more native ports of Unix shells out there, though, most notably BusyBox-w32's ash. These native ports do not use any POSIX emulation layer (or at most a *very* thin one, choosing to avoid features such as fork() that are expensive to emulate on Windows), and they use native Windows paths (usually with forward slashes instead of backslashes, which is perfectly legal in almost all use cases). And here comes the problem: with a $PWD looking like, say, C:/git-sdk-64/usr/src/git/t/trash directory.t5813-proto-disable-ssh Git's test scripts get quite a bit confused, as their assumptions have been shattered. Not only does this path contain a colon (oh no!), it also does not start with a slash. This is a problem e.g. when constructing a URL as t5813 does it: ssh://remote$PWD. Not only is it impossible to separate the "host" from the path with a $PWD as above, even prefixing $PWD by a slash won't work, as /C:/git-sdk-64/... is not a valid path. As a workaround, detect when $PWD does not start with a slash on Windows, and simply strip the drive prefix, using an obscure feature of Windows paths: if an absolute Windows path starts with a slash, it is implicitly prefixed by the drive prefix of the current directory. As we are talking about the current directory here, anyway, that strategy works. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
…ws#4527) With this patch, Git for Windows works as intended on mounted APFS volumes (where renaming read-only files would fail). Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
On Windows, the current working directory is pretty much guaranteed to contain a colon. If we feed that path to CVS, it mistakes it for a separator between host and port, though. This has not been a problem so far because Git for Windows uses MSYS2's Bash using a POSIX emulation layer that also pretends that the current directory is a Unix path (at least as long as we're in a shell script). However, that is rather limiting, as Git for Windows also explores other ports of other Unix shells. One of those is BusyBox-w32's ash, which is a native port (i.e. *not* using any POSIX emulation layer, and certainly not emulating Unix paths). So let's just detect if there is a colon in $PWD and punt in that case. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Specify symlink type in .gitattributes
The Git for Windows project has grown quite complex over the years, certainly much more complex than during the first years where the `msysgit.git` repository was abusing Git for package management purposes and the `git/git` fork was called `4msysgit.git`. Let's describe the status quo in a thorough way. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
The TerminateProcess() function does not actually leave the child processes any chance to perform any cleanup operations. This is bad insofar as Git itself expects its signal handlers to run. A symptom is e.g. a left-behind .lock file that would not be left behind if the same operation was run, say, on Linux. To remedy this situation, we use an obscure trick: we inject a thread into the process that needs to be killed and to let that thread run the ExitProcess() function with the desired exit status. Thanks J Wyman for describing this trick. The advantage is that the ExitProcess() function lets the atexit handlers run. While this is still different from what Git expects (i.e. running a signal handler), in practice Git sets up signal handlers and atexit handlers that call the same code to clean up after itself. In case that the gentle method to terminate the process failed, we still fall back to calling TerminateProcess(), but in that case we now also make sure that processes spawned by the spawned process are terminated; TerminateProcess() does not give the spawned process a chance to do so itself. Please note that this change only affects how Git for Windows tries to terminate processes spawned by Git's own executables. Third-party software that *calls* Git and wants to terminate it *still* need to make sure to imitate this gentle method, otherwise this patch will not have any effect. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
The Windows Subsystem for Linux (WSL) version 2 allows to use `chmod` on NTFS volumes provided that they are mounted with metadata enabled (see https://devblogs.microsoft.com/commandline/chmod-chown-wsl-improvements/ for details), for example: $ chmod 0755 /mnt/d/test/a.sh In order to facilitate better collaboration between the Windows version of Git and the WSL version of Git, we can make the Windows version of Git also support reading and writing NTFS file modes in a manner compatible with WSL. Since this slightly slows down operations where lots of files are created (such as an initial checkout), this feature is only enabled when `core.WSLCompat` is set to true. Note that you also have to set `core.fileMode=true` in repositories that have been initialized without enabling WSL compatibility. There are several ways to enable metadata loading for NTFS volumes in WSL, one of which is to modify `/etc/wsl.conf` by adding: ``` [automount] enabled = true options = "metadata,umask=027,fmask=117" ``` And reboot WSL. It can also be enabled temporarily by this incantation: $ sudo umount /mnt/c && sudo mount -t drvfs C: /mnt/c -o metadata,uid=1000,gid=1000,umask=22,fmask=111 It's important to note that this modification is compatible with, but does not depend on WSL. The helper functions in this commit can operate independently and functions normally on devices where WSL is not installed or properly configured. Signed-off-by: xungeng li <xungeng@gmail.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
The Git project followed Git for Windows' lead and added their Code of Conduct, based on the Contributor Covenant v1.4, later updated to v2.0. We adapt it slightly to Git for Windows. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Previously, we did not install any handler for Ctrl+C, but now we really want to because the MSYS2 runtime learned the trick to call the ConsoleCtrlHandler when Ctrl+C was pressed. With this, hitting Ctrl+C while `git log` is running will only terminate the Git process, but not the pager. This finally matches the behavior on Linux and on macOS. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This patch introduces support to set special NTFS attributes that are interpreted by the Windows Subsystem for Linux as file mode bits, UID and GID. 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>
…ITOR" In e3f7e01 (Revert "editor: save and reset terminal after calling EDITOR", 2021-11-22), we reverted the commit wholesale where the terminal state would be saved and restored before/after calling an editor. The reverted commit was intended to fix a problem with Windows Terminal where simply calling `vi` would cause problems afterwards. To fix the problem addressed by the revert, but _still_ keep the problem with Windows Terminal fixed, let's revert the revert, with a twist: we restrict the save/restore _specifically_ to the case where `vi` (or `vim`) is called, and do not do the same for any other editor. This should still catch the majority of the cases, and will bridge the time until the original patch is re-done in a way that addresses all concerns. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Handle Ctrl+C in Git Bash nicely 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>
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>
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>
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
Add a README.md for GitHub goodness. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
…s#6108) While the currently used way to detect the number of CPU cores ond Windows is nice and straight-forward, GetSystemInfo() only [gives us access to the number of processors within the current group.](https://learn.microsoft.com/en-us/windows/win32/api/sysinfoapi/ns-sysinfoapi-system_info#members) While that is usually fine for systems with a single physical CPU, separate physical sockets are typically separate groups. Switch to using GetLogicalProcessorInformationEx() to handle multi-socket systems better. I've tested this on a physical single-socket x86-64 and a physical dual-socket x86-64 system, and on a virtual single-socket ARM64 system. Physical [multi-socket ARM64 systems seem to exist](https://cloudbase.it/ampere-altra-industry-leading-arm64-server/), but I don't have access to such hardware and the hypervisor I use apparently can't emulate that either.
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: main
From: 54f6cd69da (Detect number of cores better on multi-socket systems (git-for-windows#6108), 2026-04-06) (879b511cc7..54f6cd69da)
Resolved: 54f6cd6 (Detect number of cores better on multi-socket systems (git-for-windows#6108), 2026-04-06)
resolved all 5 conflicts by keeping HEAD side (upstream renames and downstream additions already present in rebased main)
Range-diff
1: 54f6cd6 ! 1: 8aeb81f Detect number of cores better on multi-socket systems (Detect number of cores better on multi-socket systems git#6108)
@@ Commit message but I don't have access to such hardware and the hypervisor I use apparently can't emulate that either. - ## Documentation/git-svn.adoc ## -@@ Documentation/git-svn.adoc: SYNOPSIS - -------- - [verse] - 'git svn' <command> [<options>] [<arguments>] -+(UNSUPPORTED!) - - DESCRIPTION - ----------- + ## builtin/reset.c ## + remerge CONFLICT (content): Merge conflict in builtin/reset.c + index 7f897e0065..1cd7e61fe4 100644 + --- builtin/reset.c + +++ builtin/reset.c +@@ builtin/reset.c: int cmd_reset(int argc, + struct object_id oid; + struct pathspec pathspec; + int intent_to_add = 0; +-<<<<<<< dc1a52ccdd (Merge 'readme' into HEAD) + struct interactive_options interactive_opts = INTERACTIVE_OPTIONS_INIT; +-======= +- struct add_p_opt add_p_opt = ADD_P_OPT_INIT; +->>>>>>> 5ce2b45bb3 (win32: thread-utils: handle multi-socket systems) + int nul_term_line = 0, read_from_stdin = 0; + const struct option options[] = { + OPT__QUIET(&quiet, N_("be quiet, only report errors")), - ## git-svn.perl ## -@@ git-svn.perl: sub term_init { - : new Term::ReadLine 'git-svn'; - } + ## git-curl-compat.h ## + remerge CONFLICT (content): Merge conflict in git-curl-compat.h + index 1987a8878e..5c8ceb076a 100644 + --- git-curl-compat.h + +++ git-curl-compat.h +@@ + #endif + + /** +-<<<<<<< dc1a52ccdd (Merge 'readme' into HEAD) + * CURLINFO_RETRY_AFTER was added in 7.66.0, released in September 2019. + * It allows curl to automatically parse Retry-After headers. + */ +@@ + #endif -+sub deprecated_warning { -+ my @lines = @_; -+ if (-t STDERR) { -+ @lines = map { "\e[33m$_\e[0m" } @lines; -+ } -+ warn join("\n", @lines), "\n"; -+} -+ -+deprecated_warning( -+ "WARNING: \`git svn\` is no longer supported by the Git for Windows project.", -+ "See https://github.com/git-for-windows/git/issues/5405 for details." -+); -+ - my $cmd; - for (my $i = 0; $i < @ARGV; $i++) { - if (defined $cmd{$ARGV[$i]}) { + /** +-======= +->>>>>>> 5ce2b45bb3 (win32: thread-utils: handle multi-socket systems) + * CURLSSLOPT_AUTO_CLIENT_CERT was added in 7.77.0, released in May + * 2021. + */ ## http.c ## -@@ http.c: static long http_retry_after = 0; + remerge CONFLICT (content): Merge conflict in http.c + index 1bd97c0ce7..5bc2ad8b87 100644 + --- http.c + +++ http.c +@@ http.c: static long http_schannel_check_revoke_mode = + CURLSSLOPT_NO_REVOKE; + #endif + +-<<<<<<< dc1a52ccdd (Merge 'readme' into HEAD) + static long http_retry_after = 0; static long http_max_retries = 0; static long http_max_retry_time = 300; -+ +-======= +->>>>>>> 5ce2b45bb3 (win32: thread-utils: handle multi-socket systems) /* * With the backend being set to `schannel`, setting sslCAinfo would override * the Certificate Store in cURL v7.60.0 and later, which is not what we want - ## t/t9108-git-svn-glob.sh ## -@@ t/t9108-git-svn-glob.sh: test_expect_success 'test disallow multi-globs' ' - svn_cmd commit -m "try to try" - ) && - test_must_fail git svn fetch three 2> stderr.three && -- test_cmp expect.three stderr.three -+ sed "/^WARNING.*no.* supported/{N;d}" <stderr.three >stderr.three.clean && -+ test_cmp expect.three stderr.three.clean - ' + ## refs/reftable-backend.c ## + remerge CONFLICT (content): Merge conflict in refs/reftable-backend.c + index bd2ec4221d..732c8fe103 100644 + --- refs/reftable-backend.c + +++ refs/reftable-backend.c +@@ refs/reftable-backend.c: static struct ref_store *reftable_be_init(struct repository *repo, + umask(mask); - test_done - - ## t/t9109-git-svn-multi-glob.sh ## -@@ t/t9109-git-svn-multi-glob.sh: test_expect_success 'test disallow multiple globs' ' - svn_cmd commit -m "try to try" - ) && - test_must_fail git svn fetch three 2> stderr.three && -- test_cmp expect.three stderr.three -+ sed "/^WARNING.*no.* supported/{N;d}" <stderr.three >stderr.three.clean && -+ test_cmp expect.three stderr.three.clean - ' + reftable_set_alloc(malloc, realloc, free); +-<<<<<<< dc1a52ccdd (Merge 'readme' into HEAD) - test_done - - ## t/t9168-git-svn-partially-globbed-names.sh ## -@@ t/t9168-git-svn-partially-globbed-names.sh: test_expect_success 'test disallow prefixed multi-globs' ' - svn_cmd commit -m "try to try" - ) && - test_must_fail git svn fetch four 2>stderr.four && -- test_cmp expect.four stderr.four && -+ sed "/^WARNING.*no.* supported/{N;d}" <stderr.four >stderr.four.clean && -+ test_cmp expect.four stderr.four.clean && - git config --unset svn-remote.four.branches && - git config --unset svn-remote.four.tags - ' -@@ t/t9168-git-svn-partially-globbed-names.sh: test_expect_success 'test disallow multiple asterisks in one word' ' - svn_cmd commit -m "try to try" - ) && - test_must_fail git svn fetch six 2>stderr.six && -- test_cmp expect.six stderr.six -+ sed "/^WARNING.*no.* supported/{N;d}" <stderr.six >stderr.six.clean && -+ test_cmp expect.six stderr.six.clean - ' + refs_compute_filesystem_location(gitdir, payload, &is_worktree, &refdir, + &ref_common_dir); - test_done + base_ref_store_init(&refs->base, repo, refdir.buf, &refs_be_reftable); +-======= +- base_ref_store_init(&refs->base, repo, gitdir, &refs_be_reftable); +->>>>>>> 5ce2b45bb3 (win32: thread-utils: handle multi-socket systems) + strmap_init(&refs->worktree_backends); + refs->store_flags = store_flags; + refs->log_all_ref_updates = repo_settings_get_log_all_ref_updates(repo); - ## thread-utils.c ## -@@ thread-utils.c: int online_cpus(void) - #endif - - #ifdef GIT_WINDOWS_NATIVE -- SYSTEM_INFO info; -- GetSystemInfo(&info); -- -- if ((int)info.dwNumberOfProcessors > 0) -- return (int)info.dwNumberOfProcessors; -+ DWORD len = 0; -+ if (!GetLogicalProcessorInformationEx(RelationProcessorCore, NULL, &len) && GetLastError() == ERROR_INSUFFICIENT_BUFFER) { -+ uint8_t *buf = malloc(len); -+ if (buf) { -+ if (GetLogicalProcessorInformationEx(RelationProcessorCore, (PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX) buf, &len)) { -+ DWORD offset = 0; -+ int n_cores = 0; -+ while (offset < len) { -+ PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX info = (PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX) (buf + offset); -+ offset += info->Size; -+ /* The threads within a core always share a single group. We need to count the bits in the mask to get a thread count. */ -+ for (KAFFINITY mask = info->Processor.GroupMask[0].Mask; mask; mask >>= 1) -+ n_cores += mask &1; -+ } -+ if (n_cores) { -+ free(buf); -+ return n_cores; -+ } -+ } -+ free(buf); -+ } -+ } - #elif defined(hpux) || defined(__hpux) || defined(_hpux) - struct pst_dynamic psd; - + ## t/meson.build ## + remerge CONFLICT (content): Merge conflict in t/meson.build + index 24672527dc..81591f64bf 100644 + --- t/meson.build + +++ t/meson.build +@@ t/meson.build: integration_tests = [ + 't7422-submodule-output.sh', + 't7423-submodule-symlinks.sh', + 't7424-submodule-mixed-ref-formats.sh', +-<<<<<<< dc1a52ccdd (Merge 'readme' into HEAD) + 't7425-submodule-gitdir-path-extension.sh', + 't7426-submodule-get-default-remote.sh', +-======= +->>>>>>> 5ce2b45bb3 (win32: thread-utils: handle multi-socket systems) + 't7429-submodule-long-path.sh', + 't7450-bad-git-dotfiles.sh', + 't7500-commit-template-squash-signoff.sh',To: 8aeb81fa23 (Detect number of cores better on multi-socket systems (git-for-windows#6108), 2026-04-06) (fffb57cf82..8aeb81fa23)
Statistics
Range-diff (click to expand)
1: 26a1f3e = 1: 2ad410d sideband: mask control characters
2: 7875145 = 2: 795be3d sideband: introduce an "escape hatch" to allow control characters
3: 4e882c3 = 3: 736e2b8 sideband: do allow ANSI color sequences by default
4: 66ff9df = 4: f0764a1 unix-socket: avoid leak when initialization fails
5: 93f196f = 5: 0ec68a0 Merge branch 'disallow-control-characters-in-sideband-channel'
6: cb53ab5 = 6: c0e5805 grep: prevent
^$false match at end of file7: 68fb4e4 = 7: a2365e5 Merge branch 'fixes-from-the-git-mailing-list'
13: c83f1c4 = 8: 031e61c mingw: include the Python parts in the build
15: bcdb011 = 9: 8fcbbe1 win32/pthread: avoid name clashes with winpthread
17: d3f57cb = 10: ea01b02 git-compat-util: avoid redeclaring _DEFAULT_SOURCE
19: 6947776 = 11: a712529 Import the source code of mimalloc v2.2.7
20: b1e339b = 12: 326cd68 t9350: point out that refs are not updated correctly
22: 1502f64 = 13: d297957 mimalloc: adjust for building inside Git
23: 22ffe9d = 14: 75b69a9 transport-helper: add trailing --
26: 1760433 = 15: b113f1f mimalloc: offer a build-time option to enable it
29: 56ee1bd = 16: c4c2ba5 remote-helper: check helper status after import/export
30: 42cb605 = 17: b086357 clean: do not traverse mount points
35: 7ec94aa = 18: c0a2bde mingw: use mimalloc
38: 69fe2dc = 19: 9c9b629 Always auto-gc after calling a fast-import transport
39: 6810a0b = 20: 6280fe2 mingw: prevent regressions with "drive-less" absolute paths
40: a479149 = 21: aa47724 clean: remove mount points when possible
41: d08fe1e = 22: 2e4f689 transport: optionally disable side-band-64k
42: 9612cbe = 23: c37e5a8 mingw: fix fatal error working on mapped network drives on Windows
8: 7d51277 = 24: 4a58345 vcpkg_install: detect lack of Git
9: 416ed8e = 25: 7dac108 vcpkg_install: add comment regarding slow network connections
54: ae2644c = 26: c8ea3ae windows: skip linking
git-<command>for built-ins10: 04772a5 = 27: 6f5b70f vcbuild: install ARM64 dependencies when building ARM64 binaries
55: 6acf343 = 28: 356f8ff mingw: stop hard-coding
CC = gcc11: 0d3e75d = 29: 92ce660 vcbuild: add an option to install individual 'features'
56: 8131e62 = 30: 2a59894 mingw: drop the -D_USE_32BIT_TIME_T option
12: 69f37a3 = 31: 77e2077 cmake: allow building for Windows/ARM64
57: 1263ec0 = 32: 03dc03b mingw: only use -Wl,--large-address-aware for 32-bit builds
14: dd16df5 = 33: a77638f ci(vs-build) also build Windows/ARM64 artifacts
58: c69cad2 = 34: 4c9a91f mingw: avoid over-specifying
--pic-executable16: b44ce8b = 35: bfc39b2 Add schannel to curl installation
28: 4e2d3bb = 36: f9929cd hash-object: demonstrate a >4GB/LLP64 problem
59: ee5eb44 = 37: 57add01 mingw: set the prefix and HOST_CPU as per MSYS2's settings
18: 91eb972 = 38: e2d5326 cmake(): allow setting HOST_CPU for cross-compilation
37: ef458dc = 39: 52c5987 object-file.c: use size_t for header lengths
60: 23236a9 = 40: 5b3e283 mingw: only enable the MSYS2-specific stuff when compiling in MSYS2
21: 55ec5cd = 41: e4e70be CMake: default Visual Studio generator has changed
75: 76e0b33 = 42: fc847b1 hash algorithms: use size_t for section lengths
61: a0302f7 = 43: d947f84 mingw: rely on MSYS2's metadata instead of hard-coding it
24: 49ab15f = 44: bc17fbf mingw: demonstrate a
git addissue with NTFS junctions25: 6fda483 = 45: 62736c8 .gitignore: add Visual Studio CMakeSetting.json file
79: 0d1a25c = 46: 181ac39 hash-object --stdin: verify that it works with >4GB/LLP64
62: 28555a2 = 47: 6482eba mingw: always define
ETC_*for MSYS2 environments27: bb06423 = 48: 5b7673a t5505/t5516: allow running without
.git/branches/in the templates31: d18f7d0 = 49: 387fddb strbuf_realpath(): use platform-dependent API if available
32: 0d52c85 = 50: a9a7f69 http: use new "best effort" strategy for Secure Channel revoke checking
33: bebe61b = 51: 45ae486 subtree: update
contrib/subtreetesttarget34: 9a83311 = 52: 159956b CMakeLists: add default "x64-windows" arch for Visual Studio
83: 167e7b9 = 53: 338b393 hash-object: add another >4GB/LLP64 test case
84: 17150c9 = 54: dfc86ee setup: properly use "%(prefix)/" when in WSL
85: 2aaf097 = 55: 5eb1496 Add config option
windows.appendAtomically63: bff4abb = 56: d04f5df max_tree_depth: lower it for clang builds in general on Windows
36: 42a98b7 = 57: 7a4dc61 t5505/t5516: fix white-space around redirectors
73: cd3273c = 58: cfff211 MinGW: link as terminal server aware
43: 417e34b = 59: 118638a clink.pl: fix MSVC compile script to handle libcurl-d.lib
44: b23e1d9 = 60: d4c6542 mingw: implement a platform-specific
strbuf_realpath()45: 761d66b = 61: 7f1e949 t3701: verify that we can add lots of files interactively
46: 869fb9c = 62: b502904 commit: accept "scissors" with CR/LF line endings
47: 26e3211 = 63: a5357aa t0014: fix indentation
48: c392b63 = 64: f86230f git-gui: accommodate for intent-to-add files
49: b07e894 = 65: 1b7ff99 mingw: allow for longer paths in
parse_interpreter()50: 3aea023 = 66: 4757200 compat/vcbuild: document preferred way to build in Visual Studio
51: a6e4bc9 = 67: 71a0ce5 http: optionally send SSL client certificate
52: 95d4b2c = 68: 3f5413c ci: run
contrib/subtreetests in CI builds53: 07cf268 = 69: 8d068cd CMake: show Win32 and Generator_platform build-option values
89: 1a3b051 = 70: 1ae606c hash-object: add a >4GB/LLP64 test case using filtered input
90: 6765c14 = 71: 392cf7e compat/mingw.c: do not warn when failing to get owner
91: 8f83f44 = 72: 43ddcc4 mingw: $env:TERM="xterm-256color" for newer OSes
92: 6daad90 = 73: 1fa380f winansi: check result and Buffer before using Name
93: 62b44a6 = 74: fbe885d mingw: change core.fsyncObjectFiles = 1 by default
94: 3ceef8a = 75: ad11b36 Fix Windows version resources
95: 98b0b0b = 76: 7a5721b status: fix for old-style submodules with commondir
64: 9c96182 = 77: f78cbe6 mingw: ensure valid CTYPE
71: ba5f2b5 = 78: 783f8e8 ci: work around a problem with HTTP/2 vs libcurl v8.10.0
65: 80efc30 = 79: d0622c2 mingw: allow
git.exeto be used instead of the "Git wrapper"74: 434b149 = 80: 9b68b95 revision: create mark_trees_uninteresting_dense()
66: 65409d8 = 81: 8abb960 mingw: ignore HOMEDRIVE/HOMEPATH if it points to Windows' system directory
78: 014e07a = 82: 80537e2 survey: stub in new experimental 'git-survey' command
67: a4124c7 = 83: 3ad7369 Merge branch 'dscho-avoid-d-f-conflict-in-vs-master'
82: f388fe2 = 84: 4fda7f3 survey: add command line opts to select references
68: 340ceaf = 85: 366b63a clink.pl: fix libexpatd.lib link error when using MSVC
88: 176c314 = 86: edbc08a survey: start pretty printing data in table form
69: c700f4c = 87: 96123ba Makefile: clean up .ilk files when MSVC=1
119: 3d022eb = 88: d9fc44c survey: add object count summary
70: edab1a6 = 89: 15e9431 vcbuild: add support for compiling Windows resource files
121: 4d23994 = 90: 6f34496 survey: summarize total sizes by object type
72: c9459ab = 91: 7dd18ac config.mak.uname: add git.rc to MSVC builds
123: 53f70d2 = 92: 0feb5ea survey: show progress during object walk
124: f85f1ea = 93: d235550 mingw: make sure
errnois set correctly when socket operations fail106: df8c2c4 = 94: b248eb1 Merge 'remote-hg-prerequisites' into HEAD
76: 5d87585 = 95: 932a460 clink.pl: ignore no-stack-protector arg on MSVC=1 builds
77: 21db0bf = 96: 0d56142 http: optionally load libcurl lazily
126: 5213485 = 97: f2a7fe9 survey: add ability to track prioritized lists
127: 4cd3532 = 98: a214a79 compat/mingw: handle WSA errors in strerror
128: 9204684 = 99: 17bfd41 t5563: verify that NTLM authentication works
107: 3a4676e = 100: fd61a41 Merge branch 'drive-prefix'
80: 4121326 = 101: e169f62 clink.pl: move default linker options for MSVC=1 builds
81: d807c3e = 102: 26e9c7f http: support lazy-loading libcurl also on Windows
130: aef541b = 103: 7ef9216 survey: add report of "largest" paths
131: 7afe7e2 = 104: bc6d6ae compat/mingw: drop outdated comment
132: a11a87a = 105: a61bada http: disallow NTLM authentication by default
108: 2cabe78 = 106: 5545e90 Merge branch 'dont-clean-junctions'
86: 9f0ebec = 107: f14f2b4 cmake: install headless-git.
87: cb509b7 = 108: 8d13652 http: when loading libcurl lazily, allow for multiple SSL backends
134: c80c9ed = 109: e1f09b0 survey: add --top= option and config
135: c78497f = 110: 5773617 t0301: actually test credential-cache on Windows
136: f58f67f = 111: 675cf4d http: warn if might have failed because of NTLM
109: c5a4f25 = 112: b5bcf6b Merge branch 'msys2-python'
96: 4af664d = 113: 8b52447 git.rc: include winuser.h
97: e027a81 = 114: bbbd51a mingw: do load libcurl dynamically by default
98: 6af7e8d = 115: 3e5cfc9 Add a GitHub workflow to verify that Git/Scalar work in Nano Server
99: 1d17b61 = 116: 86183e8 mingw: suggest
windows.appendAtomicallyin more cases100: 8b2e9b2 = 117: 92e411a win32: use native ANSI sequence processing, if possible
101: d4fd12f = 118: 866ad6a common-main.c: fflush stdout buffer upon exit
102: 6a3a9d7 = 119: e7a96c9 t5601/t7406(mingw): do run tests with symlink support
103: 9ee800d = 120: 832a3fd win32: ensure that
localtime_r()is declared even in i686 builds104: 052ea16 = 121: 44e0526 Fallback to AppData if XDG_CONFIG_HOME is unset
105: b475b20 = 122: 8cbf444 run-command: be helpful with Git LFS fails on Windows 7
138: e8d6e4b = 123: edfcea3 survey: clearly note the experimental nature in the output
139: 9d03abc = 124: 9bbd644 credential-cache: handle ECONNREFUSED gracefully
140: 80434d9 = 125: 5891457 reftable: do make sure to use custom allocators
141: 818c89f = 126: b69d277 check-whitespace: avoid alerts about upstream commits
142: 60100f3 = 127: 459b548 t/t5571-prep-push-hook.sh: Add test with writing to stderr
143: 4146b48 = 128: f31787d credential: advertise NTLM suppression and allow helpers to re-enable
144: 6346236 = 129: fe4a23f dir: do not traverse mount points
110: 856705b = 130: 8a3696d Update mimalloc to v2.2.7 (Update mimalloc to v2.2.7 git#6048)
111: 817ebb6 = 131: 63e00fa Merge pull request Config option to disable side-band-64k for transport git#2375 from assarbad/reintroduce-sideband-config
112: fca564b = 132: beadfa0 Merge pull request mingw: fix fatal error working on mapped network drives on Windows git#2488 from bmueller84/master
113: b2f9a68 = 133: 25757bd Merge pull request clink.pl: fix MSVC compile script to handle libcurl-d.lib git#2501 from jeffhostetler/clink-debug-curl
114: 89cbcc3 = 134: 65894b9 Merge pull request Handle
git add <file>where <file> traverses an NTFS junction git#2504 from dscho/access-repo-via-junction115: 5590b87 = 135: 54e44ab Merge pull request Introduce and use the new "best effort" strategy for Secure Channel revoke checking git#2535 from dscho/schannel-revoke-best-effort
116: 6d5b043 = 136: 43d7e8d Merge pull request ci: avoid d/f conflict in vs/master git#2618 from dscho/avoid-d/f-conflict-in-vs/master
117: bb916bd = 137: b7b5156 Merge 'add-p-many-files'
118: d727929 = 138: 1540330 Merge pull request Rationalize line endings for scissors-cleanup git#2714 from lbonanomi/crlf-scissors
120: 2bc0012 = 139: 50e7abf Merge pull request t/t0014: fix: eliminate additional lines from trace git#2655 from jglathe/jg/t0014_trace_extra_info
122: d11043b = 140: 1470a83 Merge 'git-gui/js/intent-to-add'
125: ea93b23 = 141: 286736b Merge pull request Vcpkg Install: detect lack of working Git, and note possible vcpkg time outs git#2351 from PhilipOakley/vcpkg-tip
129: 3ffdd2a = 142: 37c9f86 Merge pull request Windows arm64 support git#2915 from dennisameling/windows-arm64-support
133: 9fc75d6 = 143: 1f543d9 Merge pull request cmake(): allow setting HOST_CPU for cross-compilation git#3327 from dennisameling/fix-host-cpu
137: 7c3f7d1 = 144: 8f5983f Merge pull request mingw: allow for longer paths in
parse_interpreter()git#3165 from dscho/increase-allowed-length-of-interpreter-path145: 8e59b15 = 145: 2a2d63c Merge pull request Let the documentation reflect that there is no vs/master anymore git#3220 from dscho/there-is-no-vs/master-anymore
146: 61960fa = 146: 3ce18dc Merge pull request http: Add support for enabling automatic sending of SSL client certificate git#3293 from pascalmuller/http-support-automatically-sending-client-certificate
147: c8c3a9e = 147: 4f95145 Merge pull request Add
contrib/subtreetest execution to CI builds git#3349 from vdye/feature/ci-subtree-tests148: 69c412e = 148: 62e45ba Merge pull request Make Git for Windows start builds in modern Visual Studio git#3306 from PhilipOakley/vs-sln
149: dbaf44f = 149: dbaa72c Merge pull request Begin
unsigned long->size_tconversion to support large files on Windows git#3533 from PhilipOakley/hashliteral_t150: 1ec735e = 150: cf7bdb6 Merge pull request Various fixes around
safe.directorygit#3791: Various fixes aroundsafe.directory151: 47c18cc = 151: 0edd3aa Merge pull request mingw: set $env:TERM=xterm-256color for newer OSes git#3751 from rkitover/native-term
152: 89eeaea = 152: 549e177 Merge pull request winansi: check result before using Name for pty git#3875 from 1480c1/wine/detect_msys_tty
153: 7d4fe37 = 153: 42efe29 Merge branch 'optionally-dont-append-atomically-on-windows'
154: 894f227 = 154: 6393109 Merge branch 'fsync-object-files-always'
155: accb6b0 = 155: 601edeb Merge pull request MinGW: link as terminal server aware git#3942 from rimrul/mingw-tsaware
156: 6796a69 = 156: c586854 Fix Windows version resources (Fix Windows version resources git#4092)
157: 85f898a = 157: 6c7d82f Fix global repository field not being cleared (Fix global repository field not being cleared git#4083)
158: 1ba0a6a = 158: c99622b Skip linking the "dashed"
git-<command>s for built-ins (Skip linking the "dashed"git-<command>s for built-ins git#4252)159: 2d3427d = 159: 8da786e Add full
mingw-w64-git(i.e. regular MSYS2 ecosystem) support (Add fullmingw-w64-git(i.e. regular MSYS2 ecosystem) support git#5971)160: 01285d8 = 160: 377fd7a Merge pull request Allow running Git directly from
C:\Program Files\Git\mingw64\bin\git.exegit#2506 from dscho/issue-2283161: 88f0937 = 161: 0288bab Merge pull request Include Windows-specific maintenance and headless-git git#2974 from derrickstolee/maintenance-and-headless
162: 2cd9ec7 = 162: 586ff5a ARM64: Embed manifest properly (ARM64: Embed manifest properly git#4718)
163: fc54232 = 163: 03c1abf Lazy load libcurl, allowing for an SSL/TLS backend-specific libcurl (Lazy load libcurl, allowing for an SSL/TLS backend-specific libcurl git#4410)
164: 22be790 = 164: 00a60ea Merge branch 'nano-server'
165: b5f17a4 = 165: 71280e5 Additional error checks for issuing the windows.appendAtomically warning (Additional error checks for issuing the windows.appendAtomically warning git#4528)
166: a42137b = 166: f722ded win32: use native ANSI sequence processing, if possible (win32: use native ANSI sequence processing, if possible git#4700)
167: 2b3dab0 = 167: 6ec49e0 common-main.c: fflush stdout buffer when exit (common-main.c: fflush stdout buffer when exit git#4901)
168: 2541f65 = 168: d6455e6 Merge branch 'run-t5601-and-t7406-with-symlinks-on-windows-10'
169: 8e6090f = 169: 295a8b1 Merge branch 'Fix-i686-build-with-GCC-v14'
170: 5be0dfa = 170: b69a3b0 Merge branch 'Fallback-to-AppData-if-XDG-CONFIG-HOME-is-unset'
171: 0fb5837 = 171: 3d80a7d Merge branch 'run-command-be-helpful-when-Git-LFS-fails-on-Windows-7'
172: 5942357 = 172: 305fb2a pack-objects: create new name-hash algorithm (pack-objects: create new name-hash algorithm git#5157)
173: 688ac57 = 173: a6752ed Add path walk API and its use in 'git pack-objects' (Add path walk API and its use in 'git pack-objects' git#5171)
174: e9f01f0 = 174: c97990c Add experimental 'git survey' builtin (Add experimental 'git survey' builtin git#5174)
175: e2bcd42 = 175: 80a9d01 credential-cache: handle ECONNREFUSED gracefully (credential-cache: handle ECONNREFUSED gracefully git#5329)
176: 12da17b = 176: 548b9b0 Merge branch 'reftable-vs-custom-allocators'
177: e2342b7 = 177: f017a1c Merge branch 'check-whitespace-only-downstream'
178: 5debbc0 = 178: ba77340 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)
179: 28e2af1 = 179: 7d58016 Merge branch 'disallow-ntlm-auth-by-default'
180: 2fdaf8e = 180: 678b878 Don't traverse mount points in
remove_dir_recurse()(Don't traverse mount points inremove_dir_recurse()git#6151)181: fe12b43 = 181: 507beb8 Merge branch 'ready-for-upstream'
182: 9c8df8b = 182: 751bc4d ci(macos): skip the
git p4tests183: 2bc3953 = 183: 967cc87 ci(macos): skip the
git p4tests (ci(macos): skip thegit p4tests git#5954)184: ac8e32a = 184: 86a2d18 Win32: make FILETIME conversion functions public
185: 8990f20 = 185: e3f8faa Win32: dirent.c: Move opendir down
186: e37538d = 186: 8c32879 mingw: make the dirent implementation pluggable
187: cf28b01 = 187: 686bcaa Win32: make the lstat implementation pluggable
203: 394d32a = 188: cebf0c3 git-gui--askyesno: fix funny text wrapping
188: d8f0d51 = 189: bb186c1 mingw: add infrastructure for read-only file system level caches
205: efbbc48 = 190: 5ffdd30 git-gui--askyesno (mingw): use Git for Windows' icon, if available
189: 3d6c028 = 191: a261db8 mingw: add a cache below mingw's lstat and dirent implementations
207: bf12ccb = 192: 0743257 Merge branch 'git-gui-askyesno'
190: a77e0e3 = 193: eafc9cf fscache: load directories only once
191: 211b703 = 194: 4cfa3b2 fscache: add key for GIT_TRACE_FSCACHE
192: f724b47 = 195: 51a8a02 fscache: remember not-found directories
193: 34a141a = 196: 7b5c882 fscache: add a test for the dir-not-found optimization
194: b64cab3 = 197: b9f9474 add: use preload-index and fscache for performance
195: d1b02c2 = 198: 5177537 dir.c: make add_excludes aware of fscache during status
196: f030319 = 199: 4df4a92 fscache: make fscache_enabled() public
197: 0e90d0d = 200: de4242e dir.c: regression fix for add_excludes with fscache
198: b84179d = 201: 5eaf59f fetch-pack.c: enable fscache for stats under .git/objects
199: 70c7c14 = 202: 9db7285 checkout.c: enable fscache for checkout again
200: 8c49dda = 203: 82eae66 Enable the filesystem cache (fscache) in refresh_index().
201: 3fefd58 = 204: f14a172 fscache: use FindFirstFileExW to avoid retrieving the short name
202: 4d60b6f = 205: 14c1656 fscache: add GIT_TEST_FSCACHE support
204: c963858 = 206: 86ca989 fscache: add fscache hit statistics
206: da75b53 = 207: 04a66c8 unpack-trees: enable fscache for sparse-checkout
208: 148b7f1 = 208: 351f490 status: disable and free fscache at the end of the status command
209: 49ff515 = 209: 95491ce mem_pool: add GIT_TRACE_MEMPOOL support
210: 7a27214 = 210: e518111 fscache: fscache takes an initial size
211: f2679ee = 211: bf695d2 fscache: update fscache to be thread specific instead of global
212: 6330655 = 212: 5e3277f fscache: teach fscache to use mempool
213: c22b05e = 213: 16ebe8d fscache: make fscache_enable() thread safe
214: d537f28 = 214: ec60b5e fscache: teach fscache to use NtQueryDirectoryFile
215: 890d2ac = 215: 5a695b5 fscache: remember the reparse tag for each entry
216: 94efc44 = 216: 0a9fd31 Merge branch 'fscache'
217: 6d84407 = 217: db284ee fscache: implement an FSCache-aware is_mount_point()
218: fcab51c = 218: b1abd9c Merge pull request status: disable and free fscache at the end of the status command git#1909 from benpeart/free-fscache-after-status-gfw
219: 0d298b9 = 219: e311a0a clean: make use of FSCache
220: 9f0f68a = 220: 9fc719f Merge remote-tracking branch 'benpeart/fscache-per-thread-gfw'
221: fba700b = 221: f059bb3 Merge branch 'dont-clean-junctions-fscache'
222: d804970 = 222: 314e225 pack-objects (mingw): demonstrate a segmentation fault with large deltas
223: ae6a7f9 = 223: 76f2241 mingw: support long paths
224: 4f2bd3f = 224: c506b36 win32(long path support): leave drive-less absolute paths intact
225: cc135f3 = 225: 068e1b5 compat/fsmonitor/fsm-*-win32: support long paths
226: a361c8d = 226: 4c072d4 clean: suggest using
core.longPathsif paths are too long to remove227: 597e10f = 227: bfc6065 mingw: Support
git_terminal_promptwith more terminals228: 890d5cf = 228: e76513e compat/terminal.c: only use the Windows console if bash 'read -r' fails
229: 00b1c8f = 229: a12e92a mingw (git_terminal_prompt): do fall back to CONIN$/CONOUT$ method
230: 732ff45 = 230: 51ea834 Win32: symlink: move phantom symlink creation to a separate function
231: b50c511 = 231: ceeda72 Introduce helper to create symlinks that knows about index_state
232: 2184fef = 232: 178cee2 mingw: allow to specify the symlink type in .gitattributes
233: 6582314 = 233: eb964da Win32: symlink: add test for
symlinkattribute234: b7f8a03 = 234: 3ed4001 mingw: explicitly specify with which cmd to prefix the cmdline
235: 35ce019 = 235: 557ee12 mingw: when path_lookup() failed, try BusyBox
236: 21d693a = 236: 83dd2d3 test-tool: learn to act as a drop-in replacement for
iconv237: 273c9f7 = 237: e211ed3 tests(mingw): if
iconvis unavailable, usetest-helper --iconv238: a737984 = 238: 18f5dbd gitattributes: mark .png files as binary
239: 138cd2c = 239: f51203a tests: move test PNGs into t/lib-diff/
240: d3c4335 = 240: c0e64e3 tests: only override sort & find if there are usable ones in /usr/bin/
241: b40d762 = 241: 89a7bb3 tests: use the correct path separator with BusyBox
245: 9256dab = 242: 0e3421a mingw: introduce code to detect whether we're inside a Windows container
242: e35afea = 243: 5c1123e mingw: only use Bash-ism
builtin pwd -Wwhen available247: 9a80321 = 244: 213b079 mingw: when running in a Windows container, try to rename() harder
243: 33c6cc0 = 245: eadd2a5 tests (mingw): remove Bash-specific pwd option
249: 22fc519 = 246: 3a52051 mingw: move the file_attr_to_st_mode() function definition
244: e58265c = 247: 60d1e00 test-lib: add BUSYBOX prerequisite
251: bec3b03 = 248: 51b1b22 mingw: Windows Docker volumes are not symbolic links
246: 23bfa86 = 249: 46938ce t5003: use binary file from t/lib-diff/
253: 3af044d = 250: f2d238d mingw: work around rename() failing on a read-only file
255: 9ad8955 = 251: e60186b Merge branch 'gitk-and-git-gui-patches'
256: 8da27a9 = 252: 96a2cfd Merge branch 'long-paths'
248: 16ddb53 = 253: 2576a89 t5532: workaround for BusyBox on Windows
257: d927367 = 254: 4da2771 Merge branch 'msys2'
250: 1cd0731 = 255: 769b098 t5605: special-case hardlink test for BusyBox-w32
258: 4989083 = 256: 487bf86 Merge 'docker-volumes-are-no-symlinks'
252: 94cf438 = 257: 8e7e368 t5813: allow for $PWD to be a Windows path
259: d3eed55 = 258: f2a2d85 mingw: try resetting the read-only bit if rename fails (Reset READONLY if rename fails git#4527)
254: a20368b = 259: afdb8c4 t9200: skip tests when $PWD contains a colon
260: a13ed77 = 260: fa61be6 Merge pull request Specify symlink type in .gitattributes git#1897 from piscisaureus/symlink-attr
261: 88a2d3d = 261: bff51a2 Describe Git for Windows' architecture [no ci]
262: 8fd7465 = 262: b3f2c1b mingw: kill child processes in a gentler way
263: a03fbb5 = 263: ce8c8e6 mingw: optionally enable wsl compability file mode bits
264: b56ed52 = 264: 716b8bf Merge branch 'busybox-w32'
265: 40e8e14 = 265: 2f1e3c4 Modify the Code of Conduct for Git for Windows
266: 17256db = 266: 4c8d628 mingw: really handle SIGINT
267: e219a9f = 267: 233b242 Merge branch 'wsl-file-mode-bits'
268: b949495 = 268: c97b2d4 CONTRIBUTING.md: add guide for first-time contributors
269: 166febd = 269: 5562cfd Partially un-revert "editor: save and reset terminal after calling EDITOR"
270: 234d7ec = 270: 07b690b Merge pull request Handle Ctrl+C in Git Bash nicely git#1170 from dscho/mingw-kill-process
271: 72fcff4 = 271: 74114b7 README.md: Add a Windows-specific preamble
272: d3af017 = 272: 8d191c5 reset: reinstate support for the deprecated --stdin option
273: 19684be = 273: 554896c Merge branch 'un-revert-editor-save-and-reset'
274: 3c4ec8d = 274: 6066dd4 Add an issue template
275: 01fbbf3 = 275: 85b9fa8 Add a GitHub workflow to monitor component updates
276: 90509d9 = 276: a898107 fsmonitor: reintroduce core.useBuiltinFSMonitor
277: 8d4545a = 277: 2d3eb8a Merge branch 'phase-out-reset-stdin'
278: e83fe40 = 278: 13c1678 Modify the GitHub Pull Request template (to reflect Git for Windows)
279: 2240530 = 279: e1e208c dependabot: help keeping GitHub Actions versions up to date
280: b4edc12 = 280: d095c10 Merge branch 'deprecate-core.useBuiltinFSMonitor'
281: 79b6a03 = 281: 1363c96 SECURITY.md: document Git for Windows' policies
282: 1f68ae5 = 282: 68b1244 Merge pull request Start monitoring updates of Git for Windows' components in the open git#2837 from dscho/monitor-component-updates
283: 44e2831 = 283: dc1a52c Merge 'readme' into HEAD
284: 54f6cd6 ! 284: 8aeb81f Detect number of cores better on multi-socket systems (Detect number of cores better on multi-socket systems git#6108)
@@ git-svn.perl: sub term_init { for (my $i = 0; $i < @ARGV; $i++) { if (defined $cmd{$ARGV[$i]}) { - ## http.c ## -@@ http.c: static long http_retry_after = 0; - static long http_max_retries = 0; - static long http_max_retry_time = 300; - -+ - /* - * With the backend being set to `schannel`, setting sslCAinfo would override - * the Certificate Store in cURL v7.60.0 and later, which is not what we want - ## t/t9108-git-svn-glob.sh ## @@ t/t9108-git-svn-glob.sh: test_expect_success 'test disallow multi-globs' ' svn_cmd commit -m "try to try"