Rebase shears/next: 3 conflict(s) (3 skipped, 0 resolved) (#24222800034)#110
Open
gitforwindowshelper[bot] wants to merge 281 commits intobase/shears/next-24222800034from
Open
Rebase shears/next: 3 conflict(s) (3 skipped, 0 resolved) (#24222800034)#110gitforwindowshelper[bot] wants to merge 281 commits intobase/shears/next-24222800034from
gitforwindowshelper[bot] wants to merge 281 commits intobase/shears/next-24222800034from
Conversation
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>
On LLP64 systems, such as Windows, the size of `long`, `int`, etc. is only 32 bits (for backward compatibility). Git's use of `unsigned long` for file memory sizes in many places, rather than size_t, limits the handling of large files on LLP64 systems (commonly given as `>4GB`). Provide a minimum test for handling a >4GB file. The `hash-object` command, with the `--literally` and without `-w` option avoids writing the object, either loose or packed. This avoids the code paths hitting the `bigFileThreshold` config test code, the zlib code, and the pack code. Subsequent patches will walk the test's call chain, converting types to `size_t` (which is larger in LLP64 data models) where appropriate. Signed-off-by: Philip Oakley <philipoakley@iee.email> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
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>
Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Co-authored-by: Dennis Ameling <dennis@dennisameling.com> Signed-off-by: Ian Bearman <ianb@microsoft.com> Signed-off-by: Dennis Ameling <dennis@dennisameling.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Continue walking the code path for the >4GB `hash-object --literally` test. The `hash_object_file_literally()` function internally uses both `hash_object_file()` and `write_object_file_prepare()`. Both function signatures use `unsigned long` rather than `size_t` for the mem buffer sizes. Use `size_t` instead, for LLP64 compatibility. While at it, convert those function's object's header buffer length to `size_t` for consistency. The value is already upcast to `uintmax_t` for print format compatibility. Note: The hash-object test still does not pass. A subsequent commit continues to walk the call tree's lower level hash functions to identify further fixes. 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>
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>
In this context, a "feature" is a dependency combined with its own dependencies. Signed-off-by: Ian Bearman <ianb@microsoft.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Correct some wording and inform users regarding the Visual Studio changes (from V16.6) to the default generator. Subsequent commits ensure that Git for Windows can be directly opened in modern Visual Studio without needing special configuration of the CMakeLists settings. It appeares that internally Visual Studio creates it's own version of the .sln file (etc.) for extension tools that expect them. The large number of references below document the shifting of Visual Studio default and CMake setting options. refs: https://docs.microsoft.com/en-us/search/?scope=C%2B%2B&view=msvc-150&terms=Ninja 1. https://docs.microsoft.com/en-us/cpp/linux/cmake-linux-configure?view=msvc-160 (note the linux bit) "In Visual Studio 2019 version 16.6 or later ***, Ninja is the default generator for configurations targeting a remote system or WSL. For more information, see this post on the C++ Team Blog [https://devblogs.microsoft.com/cppblog/linux-development-with-visual-studio-first-class-support-for-gdbserver-improved-build-times-with-ninja-and-updates-to-the-connection-manager/]. For more information about these settings, see CMakeSettings.json reference [https://docs.microsoft.com/en-us/cpp/build/cmakesettings-reference?view=msvc-160]." 2. https://docs.microsoft.com/en-us/cpp/build/cmake-presets-vs?view=msvc-160 "CMake supports two files that allow users to specify common configure, build, and test options and share them with others: CMakePresets.json and CMakeUserPresets.json." " Both files are supported in Visual Studio 2019 version 16.10 or later. ***" 3. https://devblogs.microsoft.com/cppblog/linux-development-with-visual-studio-first-class-support-for-gdbserver-improved-build-times-with-ninja-and-updates-to-the-connection-manager/ " Ninja has been the default generator (underlying build system) for CMake configurations targeting Windows for some time***, but in Visual Studio 2019 version 16.6 Preview 3*** we added support for Ninja on Linux." 4. https://docs.microsoft.com/en-us/cpp/build/cmakesettings-reference?view=msvc-160 " `generator`: specifies CMake generator to use for this configuration. May be one of: Visual Studio 2019 only: Visual Studio 16 2019 Visual Studio 16 2019 Win64 Visual Studio 16 2019 ARM Visual Studio 2017 and later: Visual Studio 15 2017 Visual Studio 15 2017 Win64 Visual Studio 15 2017 ARM Visual Studio 14 2015 Visual Studio 14 2015 Win64 Visual Studio 14 2015 ARM Unix Makefiles Ninja Because Ninja is designed for fast build speeds instead of flexibility and function, it is set as the default. However, some CMake projects may be unable to correctly build using Ninja. If this occurs, you can instruct CMake to generate Visual Studio projects instead. To specify a Visual Studio generator in Visual Studio 2017, open the settings editor from the main menu by choosing CMake | Change CMake Settings. Delete "Ninja" and type "V". This activates IntelliSense, which enables you to choose the generator you want." "To specify a Visual Studio generator in Visual Studio 2019, right-click on the CMakeLists.txt file in Solution Explorer and choose CMake Settings for project > Show Advanced Settings > CMake Generator. When the active configuration specifies a Visual Studio generator, by default MSBuild.exe is invoked with` -m -v:minimal` arguments." 5. https://docs.microsoft.com/en-us/cpp/build/cmake-presets-vs?view=msvc-160#enable-cmakepresetsjson-integration-in-visual-studio-2019 "Enable CMakePresets.json integration in Visual Studio 2019 CMakePresets.json integration isn't enabled by default in Visual Studio 2019. You can enable it for all CMake projects in Tools > Options > CMake > General: (tick a box)" ... see more. 6. https://docs.microsoft.com/en-us/cpp/build/cmakesettings-reference?view=msvc-140 (whichever v140 is..) "CMake projects are supported in Visual Studio 2017 and later." 7. https://docs.microsoft.com/en-us/cpp/overview/what-s-new-for-cpp-2017?view=msvc-150 "Support added for the CMake Ninja generator." 8. https://docs.microsoft.com/en-us/cpp/overview/what-s-new-for-cpp-2017?view=msvc-150#cmake-support-via-open-folder "CMake support via Open Folder Visual Studio 2017 introduces support for using CMake projects without converting to MSBuild project files (.vcxproj). For more information, see CMake projects in Visual Studio[https://docs.microsoft.com/en-us/cpp/build/cmake-projects-in-visual-studio?view=msvc-150]. Opening CMake projects with Open Folder automatically configures the environment for C++ editing, building, and debugging." ... +more! 9. https://docs.microsoft.com/en-us/cpp/build/cmake-presets-vs?view=msvc-160#supported-cmake-and-cmakepresetsjson-versions "Visual Studio reads and evaluates CMakePresets.json and CMakeUserPresets.json itself and doesn't invoke CMake directly with the --preset option. So, CMake version 3.20 or later isn't strictly required when you're building with CMakePresets.json inside Visual Studio. We recommend using CMake version 3.14 or later." 10. https://docs.microsoft.com/en-us/cpp/build/cmake-presets-vs?view=msvc-160#enable-cmakepresetsjson-integration-in-visual-studio-2019 "If you don't want to enable CMakePresets.json integration for all CMake projects, you can enable CMakePresets.json integration for a single CMake project by adding a CMakePresets.json file to the root of the open folder. You must close and reopen the folder in Visual Studio to activate the integration. 11. https://docs.microsoft.com/en-us/cpp/build/cmake-presets-vs?view=msvc-160#default-configure-presets ***(doesn't actually say which version..) "Default Configure Presets If no CMakePresets.json or CMakeUserPresets.json file exists, or if CMakePresets.json or CMakeUserPresets.json is invalid, Visual Studio will fall back*** on the following default Configure Presets: Windows example JSON { "name": "windows-default", "displayName": "Windows x64 Debug", "description": "Sets Ninja generator, compilers, x64 architecture, build and install directory, debug build type", "generator": "Ninja", "binaryDir": "${sourceDir}/out/build/${presetName}", "architecture": { "value": "x64", "strategy": "external" }, "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}" }, "vendor": { "microsoft.com/VisualStudioSettings/CMake/1.0": { "hostOS": [ "Windows" ] } } }, " Signed-off-by: Philip Oakley <philipoakley@iee.email>
Continue walking the code path for the >4GB `hash-object --literally`
test to the hash algorithm step for LLP64 systems.
This patch lets the SHA1DC code use `size_t`, making it compatible with
LLP64 data models (as used e.g. by Windows).
The interested reader of this patch will note that we adjust the
signature of the `git_SHA1DCUpdate()` function without updating _any_
call site. This certainly puzzled at least one reviewer already, so here
is an explanation:
This function is never called directly, but always via the macro
`platform_SHA1_Update`, which is usually called via the macro
`git_SHA1_Update`. However, we never call `git_SHA1_Update()` directly
in `struct git_hash_algo`. Instead, we call `git_hash_sha1_update()`,
which is defined thusly:
static void git_hash_sha1_update(git_hash_ctx *ctx,
const void *data, size_t len)
{
git_SHA1_Update(&ctx->sha1, data, len);
}
i.e. it contains an implicit downcast from `size_t` to `unsigned long`
(before this here patch). With this patch, there is no downcast anymore.
With this patch, finally, the t1007-hash-object.sh "files over 4GB hash
literally" test case is fixed.
Signed-off-by: Philip Oakley <philipoakley@iee.email>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
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>
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>
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>
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>
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>
Git for Windows wants to add `git.exe` to the users' `PATH`, without cluttering the latter with unnecessary executables such as `wish.exe`. To that end, it invented the concept of its "Git wrapper", i.e. a tiny executable located in `C:\Program Files\Git\cmd\git.exe` (originally a CMD script) whose sole purpose is to set up a couple of environment variables and then spawn the _actual_ `git.exe` (which nowadays lives in `C:\Program Files\Git\mingw64\bin\git.exe` for 64-bit, and the obvious equivalent for 32-bit installations). Currently, the following environment variables are set unless already initialized: - `MSYSTEM`, to make sure that the MSYS2 Bash and the MSYS2 Perl interpreter behave as expected, and - `PLINK_PROTOCOL`, to force PuTTY's `plink.exe` to use the SSH protocol instead of Telnet, - `PATH`, to make sure that the `bin` folder in the user's home directory, as well as the `/mingw64/bin` and the `/usr/bin` directories are included. The trick here is that the `/mingw64/bin/` and `/usr/bin/` directories are relative to the top-level installation directory of Git for Windows (which the included Bash interprets as `/`, i.e. as the MSYS pseudo root directory). Using the absence of `MSYSTEM` as a tell-tale, we can detect in `git.exe` whether these environment variables have been initialized properly. Therefore we can call `C:\Program Files\Git\mingw64\bin\git` in-place after this change, without having to call Git through the Git wrapper. Obviously, above-mentioned directories must be _prepended_ to the `PATH` variable, otherwise we risk picking up executables from unrelated Git installations. We do that by constructing the new `PATH` value from scratch, appending `$HOME/bin` (if `HOME` is set), then the MSYS2 system directories, and then appending the original `PATH`. Side note: this modification of the `PATH` variable is independent of the modification necessary to reach the executables and scripts in `/mingw64/libexec/git-core/`, i.e. the `GIT_EXEC_PATH`. That modification is still performed by Git, elsewhere, long after making the changes described above. While we _still_ cannot simply hard-link `mingw64\bin\git.exe` to `cmd` (because the former depends on a couple of `.dll` files that are only in `mingw64\bin`, i.e. calling `...\cmd\git.exe` would fail to load due to missing dependencies), at least we can now avoid that extra process of running the Git wrapper (which then has to wait for the spawned `git.exe` to finish) by calling `...\mingw64\bin\git.exe` directly, via its absolute path. Testing this is in Git's test suite tricky: we set up a "new" MSYS pseudo-root and copy the `git.exe` file into the appropriate location, then verify that `MSYSTEM` is set properly, and also that the `PATH` is modified so that scripts can be found in `$HOME/bin`, `/mingw64/bin/` and `/usr/bin/`. This addresses git-for-windows#2283 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Move the default `-ENTRY` and `-SUBSYSTEM` arguments for MSVC=1 builds from `config.mak.uname` into `clink.pl`. These args are constant for console-mode executables. Add support to `clink.pl` for generating a Win32 GUI application using the `-mwindows` argument (to match how GCC does it). This changes the `-ENTRY` and `-SUBSYSTEM` arguments accordingly. Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
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>
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>
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>
To support Git Bash running in a MinTTY, we use a dirty trick to access the MSYS2 pseudo terminal: we execute a Bash snippet that accesses /dev/tty. The idea was to fall back to writing to/reading from CONOUT$/CONIN$ if that Bash call failed because Bash was not found. However, we should fall back even in other error conditions, because we have not successfully read the user input. Let's make it so. 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>
These are Git for Windows' Git GUI and gitk patches. We will have to decide at some point what to do about them, but that's a little lower priority (as Git GUI seems to be unmaintained for the time being, and the gitk maintainer keeps a very low profile on the Git mailing list, too). 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>
…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>
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>
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>
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>
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: 7e509c4476 (Merge 'readme' into HEAD, 2018-06-07) (116346c19a..7e509c4476)
Skipped: bec1102 (sideband: mask control characters, 2024-11-06)
Upstream equivalent: 0494953 (sideband: mask control characters, 2026-03-05)
Range-diff
1: bec1102 ! 1: 0494953 sideband: mask control characters
@@ Commit message There is likely a need for more fine-grained controls instead of using a "heavy hammer" like this, which will be introduced subsequently. + Helped-by: Phillip Wood <phillip.wood@dunelm.org.uk> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> + Signed-off-by: Junio C Hamano <gitster@pobox.com> ## sideband.c ## @@ sideband.c: void list_config_color_sideband_slots(struct string_list *list, const char *pref @@ sideband.c: void list_config_color_sideband_slots(struct string_list *list, cons +{ + strbuf_grow(dest, n); + for (; n && *src; src++, n--) { -+ if (!iscntrl(*src) || *src == '\t' || *src == '\n') ++ if (!iscntrl(*src) || *src == '\t' || *src == '\n') { + strbuf_addch(dest, *src); -+ else { ++ } else { + strbuf_addch(dest, '^'); -+ strbuf_addch(dest, 0x40 + *src); ++ strbuf_addch(dest, *src == 0x7f ? '?' : 0x40 + *src); + } + } +} @@ t/t5409-colorize-remote-messages.sh: test_expect_success 'fallback to color.ui' + printf "error: Have you \\033[31mread\\033[m this?\\n" >&2 + exec "$@" + EOF -+ test_config_global uploadPack.packObjectshook ./color-me-surprised && ++ test_config_global uploadPack.packObjectsHook ./color-me-surprised && + test_commit need-at-least-one-commit && + git clone --no-local . throw-away 2>stderr && + test_decode_color <stderr >decoded &&Skipped: 49625dc (sideband: introduce an "escape hatch" to allow control characters, 2024-11-06)
Upstream equivalent: 9ed1625 (sideband: introduce an "escape hatch" to allow control characters, 2026-03-05)
Range-diff
1: 49625dc ! 1: 9ed1625 sideband: introduce an "escape hatch" to allow control characters
@@ Commit message To help with those use cases, give users a way to opt-out of the protections: `sideband.allowControlCharacters`. + Suggested-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> + Signed-off-by: Junio C Hamano <gitster@pobox.com> ## Documentation/config.adoc ## @@ Documentation/config.adoc: include::config/sequencer.adoc[] @@ sideband.c: void list_config_color_sideband_slots(struct string_list *list, cons + strbuf_grow(dest, n); for (; n && *src; src++, n--) { - if (!iscntrl(*src) || *src == '\t' || *src == '\n') + if (!iscntrl(*src) || *src == '\t' || *src == '\n') { ## t/t5409-colorize-remote-messages.sh ## @@ t/t5409-colorize-remote-messages.sh: test_expect_success 'disallow (color) control sequences in sideband' ' EOF - test_config_global uploadPack.packObjectshook ./color-me-surprised && + test_config_global uploadPack.packObjectsHook ./color-me-surprised && test_commit need-at-least-one-commit && + git clone --no-local . throw-away 2>stderr &&Skipped: ef329a4 (sideband: do allow ANSI color sequences by default, 2024-11-18)
Upstream equivalent: 12f0fda (sideband: do allow ANSI color sequences by default, 2026-03-05)
Range-diff
1: ef329a4 ! 1: 12f0fda sideband: do allow ANSI color sequences by default
@@ Commit message to the terminal, and `sideband.allowControlCharacters` to override that behavior. - However, some `pre-receive` hooks that are actively used in practice - want to color their messages and therefore rely on the fact that Git - passes them through to the terminal. + However, as reported by brian m. carlson, some `pre-receive` hooks that + are actively used in practice want to color their messages and therefore + rely on the fact that Git passes them through to the terminal, even + though they have no way to determine whether the receiving side can + actually handle Escape sequences (think e.g. about the practice + recommended by Git that third-party applications wishing to use Git + functionality parse the output of Git commands). In contrast to other ANSI escape sequences, it is highly unlikely that coloring sequences can be essential tools in attack vectors that mislead Git users e.g. by hiding crucial information. Therefore we can have both: Continue to allow ANSI coloring sequences to - be passed to the terminal, and neutralize all other ANSI escape - sequences. + be passed to the terminal by default, and neutralize all other ANSI + Escape sequences. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> + Signed-off-by: Junio C Hamano <gitster@pobox.com> ## Documentation/config/sideband.adoc ## @@ @@ Documentation/config/sideband.adoc + this config setting to override this behavior: ++ +-- -+ color:: ++ `default`:: ++ `color`:: + Allow ANSI color sequences, line feeds and horizontal tabs, + but mask all other control characters. This is the default. -+ false:: ++ `false`:: + Mask all control characters other than line feeds and + horizontal tabs. -+ true:: ++ `true`:: + Allow all control characters to be sent to the terminal. +-- @@ sideband.c: static struct keyword_entry keywords[] = { -static int allow_control_characters; +static enum { -+ ALLOW_NO_CONTROL_CHARACTERS = 0, -+ ALLOW_ALL_CONTROL_CHARACTERS = 1, -+ ALLOW_ANSI_COLOR_SEQUENCES = 2 ++ ALLOW_NO_CONTROL_CHARACTERS = 0, ++ ALLOW_ANSI_COLOR_SEQUENCES = 1<<0, ++ ALLOW_DEFAULT_ANSI_SEQUENCES = ALLOW_ANSI_COLOR_SEQUENCES, ++ ALLOW_ALL_CONTROL_CHARACTERS = 1<<1, +} allow_control_characters = ALLOW_ANSI_COLOR_SEQUENCES; /* Returns a color setting (GIT_COLOR_NEVER, etc). */ @@ sideband.c: static enum git_colorbool use_sideband_colors(void) + if (repo_config_get_string_tmp(the_repository, "sideband.allowcontrolcharacters", + &value)) + ; /* huh? `get_maybe_bool()` returned -1 */ ++ else if (!strcmp(value, "default")) ++ allow_control_characters = ALLOW_DEFAULT_ANSI_SEQUENCES; + else if (!strcmp(value, "color")) + allow_control_characters = ALLOW_ANSI_COLOR_SEQUENCES; + else @@ sideband.c: void list_config_color_sideband_slots(struct string_list *list, cons + * Valid ANSI color sequences are of the form + * + * ESC [ [<n> [; <n>]*] m ++ * ++ * These are part of the Select Graphic Rendition sequences which ++ * contain more than just color sequences, for more details see ++ * https://en.wikipedia.org/wiki/ANSI_escape_code#SGR. + */ + + if (allow_control_characters != ALLOW_ANSI_COLOR_SEQUENCES || @@ sideband.c: void list_config_color_sideband_slots(struct string_list *list, cons } @@ sideband.c: static void strbuf_add_sanitized(struct strbuf *dest, const char *src, int n) for (; n && *src; src++, n--) { - if (!iscntrl(*src) || *src == '\t' || *src == '\n') + if (!iscntrl(*src) || *src == '\t' || *src == '\n') { strbuf_addch(dest, *src); -- else { -+ else if ((i = handle_ansi_color_sequence(dest, src, n))) { ++ } else if ((i = handle_ansi_color_sequence(dest, src, n))) { + src += i; + n -= i; -+ } else { + } else { strbuf_addch(dest, '^'); - strbuf_addch(dest, 0x40 + *src); - } + strbuf_addch(dest, *src == 0x7f ? '?' : 0x40 + *src); ## t/t5409-colorize-remote-messages.sh ## @@ t/t5409-colorize-remote-messages.sh: test_expect_success 'fallback to color.ui' ' @@ t/t5409-colorize-remote-messages.sh: test_expect_success 'fallback to color.ui' + printf "error: Have you \\033[31mread\\033[m this?\\a\\n" >&2 exec "$@" EOF - test_config_global uploadPack.packObjectshook ./color-me-surprised && + test_config_global uploadPack.packObjectsHook ./color-me-surprised && @@ t/t5409-colorize-remote-messages.sh: test_expect_success 'disallow (color) control sequences in sideband' ' git clone --no-local . throw-away 2>stderr &&To: 9ccdc34a8c (Merge 'readme' into HEAD, 2018-06-07) (b799490507..9ccdc34a8c)
Statistics
Range-diff (click to expand)
1: 406438c = 1: ec101a3 unix-socket: avoid leak when initialization fails
2: 9199cd5 = 2: 04bce5d grep: prevent
^$false match at end of file3: f0b10b8 = 3: 8a19065 Merge branch 'fixes-from-the-git-mailing-list'
4: 3fa5f1a = 4: 073b651 mingw: include the Python parts in the build
5: e66f684 = 5: 9b1b2bd win32/pthread: avoid name clashes with winpthread
6: 4d2860c = 6: ab84d15 git-compat-util: avoid redeclaring _DEFAULT_SOURCE
7: 0f0d7a1 = 7: 1d27947 Import the source code of mimalloc v2.2.7
8: b67b76d = 8: 02909a2 t9350: point out that refs are not updated correctly
9: 0780bb8 = 9: a490d0f mimalloc: adjust for building inside Git
10: 41eb777 = 10: cdee857 transport-helper: add trailing --
30: 2d3c5eb = 11: c025c4e mingw: demonstrate a
git addissue with NTFS junctions11: 7a4b591 = 12: 086dac0 mimalloc: offer a build-time option to enable it
34: 3fa3370 = 13: c8d2d05 t5505/t5516: allow running without
.git/branches/in the templates12: d4935f3 = 14: 29394aa remote-helper: check helper status after import/export
13: e967c26 = 15: 82ef6ca clean: do not traverse mount points
35: ef3396c = 16: 1c99908 strbuf_realpath(): use platform-dependent API if available
14: 08f0383 = 17: ceaa529 mingw: use mimalloc
43: 30f4aa8 = 18: 03f6616 t5505/t5516: fix white-space around redirectors
36: e561019 = 19: c59848c http: use new "best effort" strategy for Secure Channel revoke checking
15: 26e4e0c = 20: bed4438 Always auto-gc after calling a fast-import transport
16: 8ead22f = 21: b11d7b2 mingw: prevent regressions with "drive-less" absolute paths
17: 2287e92 = 22: 1e3cf34 clean: remove mount points when possible
45: be01182 = 23: f637efe transport: optionally disable side-band-64k
46: 55f7524 = 24: c6da4ce mingw: fix fatal error working on mapped network drives on Windows
47: 66e4cae = 25: 4843b21 clink.pl: fix MSVC compile script to handle libcurl-d.lib
48: d92c500 = 26: 0d27af1 mingw: implement a platform-specific
strbuf_realpath()49: 5f7b6e6 = 27: 385c44d t3701: verify that we can add lots of files interactively
33: 7f7b54c = 28: 642c785 windows: skip linking
git-<command>for built-ins42: 421a00a = 29: ff0b8c7 mingw: stop hard-coding
CC = gcc65: c9da740 = 30: a0549f7 mingw: drop the -D_USE_32BIT_TIME_T option
66: 5e3cb00 = 31: de34526 mingw: only use -Wl,--large-address-aware for 32-bit builds
67: 16e1c41 = 32: 4a9c051 mingw: avoid over-specifying
--pic-executable68: 6781c65 = 33: e9dc3b5 mingw: set the prefix and HOST_CPU as per MSYS2's settings
69: ec8cd3d = 34: e9d8db9 mingw: only enable the MSYS2-specific stuff when compiling in MSYS2
70: 578db2e = 35: 1240d42 mingw: rely on MSYS2's metadata instead of hard-coding it
71: a41f170 = 36: b6b7e5d mingw: always define
ETC_*for MSYS2 environments72: 29ec6ea = 37: 9839fb0 max_tree_depth: lower it for clang builds in general on Windows
18: 4d6289b = 38: 4e35319 vcpkg_install: detect lack of Git
73: d84053d = 39: 1b348ba mingw: ensure valid CTYPE
19: fdbdd1f = 40: 4499bb9 vcpkg_install: add comment regarding slow network connections
75: 1912f57 = 41: 213720f mingw: allow
git.exeto be used instead of the "Git wrapper"20: 4f33a0c = 42: e80ae5d vcbuild: install ARM64 dependencies when building ARM64 binaries
77: 1df3fa9 = 43: 2b90187 mingw: ignore HOMEDRIVE/HOMEPATH if it points to Windows' system directory
21: 9fad39d = 44: 23823b7 vcbuild: add an option to install individual 'features'
79: d53e5cb = 45: ea5235e Merge branch 'dscho-avoid-d-f-conflict-in-vs-master'
22: 7dc4cb6 = 46: 86885c7 cmake: allow building for Windows/ARM64
81: ad61c62 = 47: a6aea32 clink.pl: fix libexpatd.lib link error when using MSVC
23: d281ce3 = 48: b497782 ci(vs-build) also build Windows/ARM64 artifacts
83: 99bcd10 = 49: 45b5402 Makefile: clean up .ilk files when MSVC=1
24: df71bd1 = 50: 5d8abfb Add schannel to curl installation
25: c830dd1 = 51: 0d52b94 hash-object: demonstrate a >4GB/LLP64 problem
85: 6bf5d88 = 52: dec0846 vcbuild: add support for compiling Windows resource files
26: 1f84226 = 53: b062ec1 cmake(): allow setting HOST_CPU for cross-compilation
27: 8623d7c = 54: cfc4d05 object-file.c: use size_t for header lengths
87: 6e8247b = 55: 1d1e68a config.mak.uname: add git.rc to MSVC builds
28: 48f0b9c = 56: 00d051c CMake: default Visual Studio generator has changed
29: 1c2b8bc = 57: 641ea96 hash algorithms: use size_t for section lengths
90: 4ffa5ff = 58: f06d339 clink.pl: ignore no-stack-protector arg on MSVC=1 builds
31: 80eb315 = 59: a84c62b .gitignore: add Visual Studio CMakeSetting.json file
32: 0590040 = 60: be550bb hash-object --stdin: verify that it works with >4GB/LLP64
95: 2ecd598 = 61: 8f1ccad clink.pl: move default linker options for MSVC=1 builds
37: bfaa77d = 62: a24356f subtree: update
contrib/subtreetesttarget38: e781776 = 63: 8a2e420 CMakeLists: add default "x64-windows" arch for Visual Studio
39: 4ba6071 = 64: 18be188 hash-object: add another >4GB/LLP64 test case
40: ef9c70a = 65: 95ecab6 setup: properly use "%(prefix)/" when in WSL
41: a01142e = 66: c7408ed Add config option
windows.appendAtomically44: fd85652 = 67: 27a2aa8 MinGW: link as terminal server aware
100: d02a1fd = 68: be9656f cmake: install headless-git.
50: 757181d = 69: fd13a7b commit: accept "scissors" with CR/LF line endings
51: a19cf0a = 70: 1c9ff03 t0014: fix indentation
52: cd6f05c = 71: caf4b9c git-gui: accommodate for intent-to-add files
53: 3941574 = 72: 52f42d4 mingw: allow for longer paths in
parse_interpreter()54: dd8d152 = 73: d99009a compat/vcbuild: document preferred way to build in Visual Studio
55: 6562e1b = 74: 3c42ea3 http: optionally send SSL client certificate
56: 355107a = 75: ece966c ci: run
contrib/subtreetests in CI builds57: f6b875e = 76: df5b02f CMake: show Win32 and Generator_platform build-option values
58: 8c0a37f = 77: 4fde1bf hash-object: add a >4GB/LLP64 test case using filtered input
59: f11b111 = 78: ec464e7 compat/mingw.c: do not warn when failing to get owner
60: c8044cf = 79: 124b7a3 mingw: $env:TERM="xterm-256color" for newer OSes
61: 92b9a46 = 80: d4be768 winansi: check result and Buffer before using Name
62: 1af95a1 = 81: 9e13e3f mingw: change core.fsyncObjectFiles = 1 by default
63: 7a04497 = 82: 57c6d24 Fix Windows version resources
64: c9e04e4 = 83: 03b4477 status: fix for old-style submodules with commondir
74: 3ce805b = 84: d8658e9 ci: work around a problem with HTTP/2 vs libcurl v8.10.0
76: 3d0b23a = 85: 7823428 revision: create mark_trees_uninteresting_dense()
78: 0734a70 = 86: de7bd1f survey: stub in new experimental 'git-survey' command
122: 4d04bbd = 87: a3f5305 Merge 'remote-hg-prerequisites' into HEAD
80: 08ad354 = 88: 331d087 survey: add command line opts to select references
123: d71603b = 89: fc06949 Merge branch 'drive-prefix'
82: 2e26b22 = 90: 1e82adb survey: start pretty printing data in table form
124: 47a1050 = 91: fd0bf56 Merge branch 'dont-clean-junctions'
84: dc5b5c4 = 92: 4bc87cb survey: add object count summary
125: 21d9f3a = 93: 415b7d9 Merge branch 'msys2-python'
86: f5b35cf = 94: 8592edf survey: summarize total sizes by object type
126: db656ca = 95: 7c6ba53 Update mimalloc to v2.2.7 (Update mimalloc to v2.2.7 git#6048)
88: ec09cbb = 96: 209c819 survey: show progress during object walk
89: 6dcaa5a = 97: fc55158 mingw: make sure
errnois set correctly when socket operations fail127: acc31e8 = 98: dc8ab81 Merge pull request Config option to disable side-band-64k for transport git#2375 from assarbad/reintroduce-sideband-config
91: 7d6d10f = 99: f99c0d1 http: optionally load libcurl lazily
92: 5e032eb = 100: 53841b0 survey: add ability to track prioritized lists
93: 70508ee = 101: 3e37ecd compat/mingw: handle WSA errors in strerror
94: 1fb799c = 102: 89abfd0 t5563: verify that NTLM authentication works
128: fc632a2 = 103: 8f331cd Merge pull request mingw: fix fatal error working on mapped network drives on Windows git#2488 from bmueller84/master
96: d492c7e = 104: 544a782 http: support lazy-loading libcurl also on Windows
97: 72bd946 = 105: a699988 survey: add report of "largest" paths
98: 1d2051f = 106: 89b5c21 compat/mingw: drop outdated comment
99: f61e3eb = 107: 3516ec6 http: disallow NTLM authentication by default
129: e846ab4 = 108: 027ddbb Merge pull request clink.pl: fix MSVC compile script to handle libcurl-d.lib git#2501 from jeffhostetler/clink-debug-curl
101: 678a5b6 = 109: caefedd http: when loading libcurl lazily, allow for multiple SSL backends
102: bafb9bd = 110: 3666a46 survey: add --top= option and config
103: 3d76f48 = 111: 3363a37 t0301: actually test credential-cache on Windows
104: 80c3453 = 112: 6f1a00e http: warn if might have failed because of NTLM
130: c9b7005 = 113: 3528042 Merge pull request Handle
git add <file>where <file> traverses an NTFS junction git#2504 from dscho/access-repo-via-junction105: d77134c = 114: 251e01e git.rc: include winuser.h
106: b99dfd2 = 115: 4e3a73d mingw: do load libcurl dynamically by default
107: 9daea57 = 116: 5a6708f Add a GitHub workflow to verify that Git/Scalar work in Nano Server
108: 2b48957 = 117: 245eaf0 mingw: suggest
windows.appendAtomicallyin more cases109: 25ee59f = 118: 93801b2 win32: use native ANSI sequence processing, if possible
110: 35d6401 = 119: 93cbd49 common-main.c: fflush stdout buffer upon exit
111: 3029680 = 120: 2725dad t5601/t7406(mingw): do run tests with symlink support
112: 4f5e29d = 121: 926f0ca win32: ensure that
localtime_r()is declared even in i686 builds113: cc9e7ed = 122: 3a3b4bb Fallback to AppData if XDG_CONFIG_HOME is unset
114: 7c1ee03 = 123: e71cfba run-command: be helpful with Git LFS fails on Windows 7
115: bcba070 = 124: 5b5d096 survey: clearly note the experimental nature in the output
116: 00a2928 = 125: 9277866 credential-cache: handle ECONNREFUSED gracefully
117: 34f61c8 = 126: d010bd2 reftable: do make sure to use custom allocators
118: 8c37534 = 127: 9b6438e check-whitespace: avoid alerts about upstream commits
119: 5e2a18c = 128: b6ccec3 t/t5571-prep-push-hook.sh: Add test with writing to stderr
120: ae2f6c1 = 129: 500897c credential: advertise NTLM suppression and allow helpers to re-enable
121: 2c65c28 = 130: 6065276 dir: do not traverse mount points
281: d812a1f ! 131: c914e7f Detect number of cores better on multi-socket systems (Detect number of cores better on multi-socket systems git#6108)
131: 516fd7e = 132: 01d9d58 Merge pull request Introduce and use the new "best effort" strategy for Secure Channel revoke checking git#2535 from dscho/schannel-revoke-best-effort
132: 3d4e370 = 133: be3dead Merge pull request ci: avoid d/f conflict in vs/master git#2618 from dscho/avoid-d/f-conflict-in-vs/master
133: b25243a = 134: c51cb87 Merge 'add-p-many-files'
134: f7fd791 = 135: 4c29516 Merge pull request Rationalize line endings for scissors-cleanup git#2714 from lbonanomi/crlf-scissors
135: 1d1f29f = 136: 55f28ae Merge pull request t/t0014: fix: eliminate additional lines from trace git#2655 from jglathe/jg/t0014_trace_extra_info
136: c428167 = 137: d26600b Merge 'git-gui/js/intent-to-add'
137: 8c41b95 = 138: 5228dc7 Merge pull request Vcpkg Install: detect lack of working Git, and note possible vcpkg time outs git#2351 from PhilipOakley/vcpkg-tip
138: 6fd7d6c = 139: 1533e76 Merge pull request Windows arm64 support git#2915 from dennisameling/windows-arm64-support
139: bc48302 = 140: 3dbcf9f Merge pull request cmake(): allow setting HOST_CPU for cross-compilation git#3327 from dennisameling/fix-host-cpu
140: 90a13d2 = 141: 2cb1f4b Merge pull request mingw: allow for longer paths in
parse_interpreter()git#3165 from dscho/increase-allowed-length-of-interpreter-path141: 3c8107b = 142: 5abc347 Merge pull request Let the documentation reflect that there is no vs/master anymore git#3220 from dscho/there-is-no-vs/master-anymore
142: 85a890e = 143: 003c92d Merge pull request http: Add support for enabling automatic sending of SSL client certificate git#3293 from pascalmuller/http-support-automatically-sending-client-certificate
143: 2a27135 = 144: 5b73b66 Merge pull request Add
contrib/subtreetest execution to CI builds git#3349 from vdye/feature/ci-subtree-tests144: 78ad5cb = 145: 37c108f Merge pull request Make Git for Windows start builds in modern Visual Studio git#3306 from PhilipOakley/vs-sln
145: 411d273 = 146: c0feff5 Merge pull request Begin
unsigned long->size_tconversion to support large files on Windows git#3533 from PhilipOakley/hashliteral_t146: 3d00ed6 = 147: 7eafbaa Merge pull request Various fixes around
safe.directorygit#3791: Various fixes aroundsafe.directory147: a83a078 = 148: 478db94 Merge pull request mingw: set $env:TERM=xterm-256color for newer OSes git#3751 from rkitover/native-term
148: 2ae612b = 149: 9598e09 Merge pull request winansi: check result before using Name for pty git#3875 from 1480c1/wine/detect_msys_tty
149: 25a0571 = 150: f6e9008 Merge branch 'optionally-dont-append-atomically-on-windows'
150: eb158d0 = 151: 5409efd Merge branch 'fsync-object-files-always'
151: 7cdf49c = 152: ce57cf0 Merge pull request MinGW: link as terminal server aware git#3942 from rimrul/mingw-tsaware
152: 48a48e5 = 153: 26020a9 Fix Windows version resources (Fix Windows version resources git#4092)
153: 4c4a17f = 154: d560bcd Fix global repository field not being cleared (Fix global repository field not being cleared git#4083)
154: b569d15 = 155: b78ed4a Skip linking the "dashed"
git-<command>s for built-ins (Skip linking the "dashed"git-<command>s for built-ins git#4252)155: 2a16b27 = 156: bcebe6a Add full
mingw-w64-git(i.e. regular MSYS2 ecosystem) support (Add fullmingw-w64-git(i.e. regular MSYS2 ecosystem) support git#5971)156: 3808b4b = 157: e0ead7f Merge pull request Allow running Git directly from
C:\Program Files\Git\mingw64\bin\git.exegit#2506 from dscho/issue-2283157: 769f698 = 158: 5323705 Merge pull request Include Windows-specific maintenance and headless-git git#2974 from derrickstolee/maintenance-and-headless
158: 85c94a1 = 159: 37d1754 ARM64: Embed manifest properly (ARM64: Embed manifest properly git#4718)
159: 4424483 = 160: d29b7ca Lazy load libcurl, allowing for an SSL/TLS backend-specific libcurl (Lazy load libcurl, allowing for an SSL/TLS backend-specific libcurl git#4410)
160: 57d7c35 = 161: eaf51b9 Merge branch 'nano-server'
161: 6d99b46 = 162: 4074b2d Additional error checks for issuing the windows.appendAtomically warning (Additional error checks for issuing the windows.appendAtomically warning git#4528)
162: 9ebee4e = 163: 703554e win32: use native ANSI sequence processing, if possible (win32: use native ANSI sequence processing, if possible git#4700)
163: de437a1 = 164: 9fccac7 common-main.c: fflush stdout buffer when exit (common-main.c: fflush stdout buffer when exit git#4901)
164: e4372ab = 165: c0fafbd Merge branch 'run-t5601-and-t7406-with-symlinks-on-windows-10'
165: 07b7c71 = 166: b2246f7 Merge branch 'Fix-i686-build-with-GCC-v14'
166: 333e9c9 = 167: 4cb218a Merge branch 'Fallback-to-AppData-if-XDG-CONFIG-HOME-is-unset'
167: 73f7f59 = 168: 51bdce3 Merge branch 'run-command-be-helpful-when-Git-LFS-fails-on-Windows-7'
168: e6683e8 = 169: e1b0f9a pack-objects: create new name-hash algorithm (pack-objects: create new name-hash algorithm git#5157)
169: 372f617 = 170: 1d2791f Add path walk API and its use in 'git pack-objects' (Add path walk API and its use in 'git pack-objects' git#5171)
170: 5cfa8b3 = 171: 100601a Add experimental 'git survey' builtin (Add experimental 'git survey' builtin git#5174)
171: 57f85a0 = 172: 4f5c257 credential-cache: handle ECONNREFUSED gracefully (credential-cache: handle ECONNREFUSED gracefully git#5329)
172: ca945b5 = 173: 94ad219 Merge branch 'reftable-vs-custom-allocators'
173: e2e195a = 174: a86f36d Merge branch 'check-whitespace-only-downstream'
174: d526ec6 = 175: ba7dba3 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)
175: 3e18e4d = 176: 4f6bc5c Merge branch 'disallow-ntlm-auth-by-default'
176: e709097 = 177: 079b3a1 Don't traverse mount points in
remove_dir_recurse()(Don't traverse mount points inremove_dir_recurse()git#6151)-: ---------- > 178: 24d5477 Detect number of cores better on multi-socket systems (Detect number of cores better on multi-socket systems git#6108)
177: e61f8d3 = 179: 3bb8fe2 Merge branch 'ready-for-upstream'
178: b58f633 = 180: a4321bd ci(macos): skip the
git p4tests179: f9d1d1d = 181: 8bc1b07 ci(macos): skip the
git p4tests (ci(macos): skip thegit p4tests git#5954)182: 1b64cbe = 182: ce38b02 Win32: make FILETIME conversion functions public
184: 582869f = 183: 13c7e40 Win32: dirent.c: Move opendir down
185: b78b12c = 184: b4da4b3 mingw: make the dirent implementation pluggable
186: 8c86209 = 185: 8bee354 Win32: make the lstat implementation pluggable
187: a4f6589 = 186: 0c9e756 mingw: add infrastructure for read-only file system level caches
188: 42c3630 = 187: 334ebc5 mingw: add a cache below mingw's lstat and dirent implementations
189: 440723b = 188: 454f0ac fscache: load directories only once
190: 6501d72 = 189: d5c4c1c fscache: add key for GIT_TRACE_FSCACHE
191: ef1bef2 = 190: 49894e9 fscache: remember not-found directories
192: 20b9ffb = 191: f9070a9 fscache: add a test for the dir-not-found optimization
193: 6755914 = 192: 594768b add: use preload-index and fscache for performance
194: fbdcdc8 = 193: ecac59f dir.c: make add_excludes aware of fscache during status
195: 5841fd0 = 194: 5a21a3e fscache: make fscache_enabled() public
196: de694f8 = 195: d372225 dir.c: regression fix for add_excludes with fscache
197: 58bff10 = 196: e1d3ea4 fetch-pack.c: enable fscache for stats under .git/objects
198: da78c68 = 197: e8bb84c checkout.c: enable fscache for checkout again
199: 167701f = 198: 4aefc7f Enable the filesystem cache (fscache) in refresh_index().
200: 55df681 = 199: e8170b2 fscache: use FindFirstFileExW to avoid retrieving the short name
201: cba451a = 200: 6291bc5 fscache: add GIT_TEST_FSCACHE support
202: 390adfe = 201: aac4cfc fscache: add fscache hit statistics
180: c77043f = 202: 819b1bd git-gui--askyesno: fix funny text wrapping
203: dd4a4b3 = 203: 85a3acb unpack-trees: enable fscache for sparse-checkout
181: 763e396 = 204: dad28d6 git-gui--askyesno (mingw): use Git for Windows' icon, if available
204: 7f8a492 = 205: 43f6fc7 status: disable and free fscache at the end of the status command
183: 260a226 = 206: 56be33e Merge branch 'git-gui-askyesno'
205: 80fac0b = 207: 9c9a415 mem_pool: add GIT_TRACE_MEMPOOL support
206: 5ab65f9 = 208: 9bb3c64 fscache: fscache takes an initial size
207: 8fb6658 = 209: 0b45ce6 fscache: update fscache to be thread specific instead of global
208: b1936de = 210: 7983d1c fscache: teach fscache to use mempool
209: 2f36bb9 = 211: 33c78ea fscache: make fscache_enable() thread safe
210: b929876 = 212: 6b6cb44 fscache: teach fscache to use NtQueryDirectoryFile
211: 25d5f67 = 213: d7884fa fscache: remember the reparse tag for each entry
212: 4cf835a = 214: 1d0ede2 Merge branch 'fscache'
213: 7060cb3 = 215: 0ffb4b1 fscache: implement an FSCache-aware is_mount_point()
214: 7e51e58 = 216: 94db8cd Merge pull request status: disable and free fscache at the end of the status command git#1909 from benpeart/free-fscache-after-status-gfw
215: c4c16d6 = 217: 05797ac clean: make use of FSCache
216: 4b6e4e1 = 218: edefd96 Merge remote-tracking branch 'benpeart/fscache-per-thread-gfw'
217: 32a5a58 = 219: d8eed32 Merge branch 'dont-clean-junctions-fscache'
218: b563be0 = 220: fccc413 pack-objects (mingw): demonstrate a segmentation fault with large deltas
219: 0f59e64 = 221: e6a8ddb mingw: support long paths
220: 8e17755 = 222: 43412fa win32(long path support): leave drive-less absolute paths intact
221: 0aa298b = 223: 9501d7c compat/fsmonitor/fsm-*-win32: support long paths
222: 1baa88e = 224: 67f8390 clean: suggest using
core.longPathsif paths are too long to remove223: 41d725f = 225: 73ac509 mingw: Support
git_terminal_promptwith more terminals224: 0beffa6 = 226: c1426b3 compat/terminal.c: only use the Windows console if bash 'read -r' fails
225: 733150d = 227: a96fb7d mingw (git_terminal_prompt): do fall back to CONIN$/CONOUT$ method
226: 9e4877c = 228: 9a6c468 Win32: symlink: move phantom symlink creation to a separate function
227: 61cf20f = 229: 0a555d5 Introduce helper to create symlinks that knows about index_state
228: ac778f5 = 230: c898bd9 mingw: allow to specify the symlink type in .gitattributes
229: 54bd9f9 = 231: 17423d0 Win32: symlink: add test for
symlinkattribute230: 5007623 = 232: 7c81672 mingw: explicitly specify with which cmd to prefix the cmdline
231: 832ff67 = 233: ddf9680 mingw: when path_lookup() failed, try BusyBox
233: 4c518c6 = 234: 316b61f test-tool: learn to act as a drop-in replacement for
iconv235: d669bbc = 235: 5d2846f tests(mingw): if
iconvis unavailable, usetest-helper --iconv237: c4a2d6f = 236: cf989b8 gitattributes: mark .png files as binary
239: 03de80b = 237: 4f6fbb9 tests: move test PNGs into t/lib-diff/
241: dbf386d = 238: c4171e3 tests: only override sort & find if there are usable ones in /usr/bin/
242: 6c43f8a = 239: 873c019 tests: use the correct path separator with BusyBox
243: 7008129 = 240: 7a45da9 mingw: only use Bash-ism
builtin pwd -Wwhen available244: 7200e10 = 241: 6d20b2d tests (mingw): remove Bash-specific pwd option
245: 0e2e73f = 242: 78a5ea9 test-lib: add BUSYBOX prerequisite
247: 13ec468 = 243: de8c15c t5003: use binary file from t/lib-diff/
232: 4f1155a = 244: b5206bf mingw: introduce code to detect whether we're inside a Windows container
249: 094cde6 = 245: 92cb19c t5532: workaround for BusyBox on Windows
234: 767bac4 = 246: c783fff mingw: when running in a Windows container, try to rename() harder
251: d851bef = 247: 32a4464 t5605: special-case hardlink test for BusyBox-w32
236: 7adf156 = 248: 6859232 mingw: move the file_attr_to_st_mode() function definition
253: bc3e3b9 = 249: badc24d t5813: allow for $PWD to be a Windows path
238: f78fcc1 = 250: 27b12d7 mingw: Windows Docker volumes are not symbolic links
256: c42f7ab = 251: 77dcc74 t9200: skip tests when $PWD contains a colon
259: 6f645b2 = 252: 22fc1fb mingw: kill child processes in a gentler way
240: a2ecb64 = 253: 37d70b9 mingw: work around rename() failing on a read-only file
260: 9b78ca2 = 254: 1d200a9 mingw: optionally enable wsl compability file mode bits
263: 7832372 = 255: 35fd433 mingw: really handle SIGINT
246: 62e9a63 = 256: 6a7f0d8 Merge branch 'gitk-and-git-gui-patches'
248: e72a76f = 257: 585939c Merge branch 'long-paths'
250: fc62db2 = 258: b246c60 Merge branch 'msys2'
252: c0bd917 = 259: 60b727b Merge 'docker-volumes-are-no-symlinks'
254: 75c8f49 = 260: 300646a mingw: try resetting the read-only bit if rename fails (Reset READONLY if rename fails git#4527)
257: 30de94f = 261: 7100a98 Merge pull request Specify symlink type in .gitattributes git#1897 from piscisaureus/symlink-attr
255: 2f41394 = 262: 72a3970 Describe Git for Windows' architecture [no ci]
261: f3cfff4 = 263: 09dc47d Merge branch 'busybox-w32'
258: 727975e = 264: 72d7647 Modify the Code of Conduct for Git for Windows
264: 9d72073 = 265: 30a604f Merge branch 'wsl-file-mode-bits'
262: c1d50c5 = 266: 58fd045 CONTRIBUTING.md: add guide for first-time contributors
266: 831674a = 267: 9791cce Partially un-revert "editor: save and reset terminal after calling EDITOR"
267: d62509e = 268: 501a00f Merge pull request Handle Ctrl+C in Git Bash nicely git#1170 from dscho/mingw-kill-process
265: 740290b = 269: fd477c6 README.md: Add a Windows-specific preamble
269: 56c6d41 = 270: 62d2e08 reset: reinstate support for the deprecated --stdin option
270: ba39999 = 271: 110b30f Merge branch 'un-revert-editor-save-and-reset'
268: 93ed29d = 272: 223e8e3 Add an issue template
271: b0318a0 = 273: 16b7071 Add a GitHub workflow to monitor component updates
273: b009655 = 274: 7352f8c fsmonitor: reintroduce core.useBuiltinFSMonitor
274: 5fece07 = 275: 026addb Merge branch 'phase-out-reset-stdin'
272: be78449 = 276: 2cc60b6 Modify the GitHub Pull Request template (to reflect Git for Windows)
275: 7a0eb33 = 277: 02dd76d dependabot: help keeping GitHub Actions versions up to date
277: 4706500 = 278: 59ecda6 Merge branch 'deprecate-core.useBuiltinFSMonitor'
276: 238fecd = 279: e401869 SECURITY.md: document Git for Windows' policies
278: 7ebd9ec = 280: 94caf38 Merge pull request Start monitoring updates of Git for Windows' components in the open git#2837 from dscho/monitor-component-updates
279: 0d01e2f = 281: 9ccdc34 Merge 'readme' into HEAD
280: bf6d375 < -: ---------- Winansi: Drop pre-Vista workaround (Winansi: Drop pre-Vista workaround git#6109)