Rebase to v2.38.0-rc2#4040
Merged
vdye merged 331 commits intogit-for-windows:mainfrom Sep 27, 2022
Merged
Conversation
We just introduced a helper to avoid showing a console window when the scheduled task runs `git.exe`. Let's actually use it. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Derrick Stolee <dstolee@microsoft.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>
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>
This is needed for the next commit, where we add HOST_CPU to the CMake invocation. 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>
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>
This is needed for the next change, where we add HOST_CPU support to the CMake definition. 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>
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>
The previous commit adds a test that demonstrates a problem in the `hash-object --literally` command, manifesting in an unnecessary file size limit on systems using the LLP64 data model (which includes Windows). Walking the affected code path is `cmd_hash_object()` >> `hash_fd()` >> `hash_literally()` >> `hash_object_file_literally()`. The function `hash_object_file_literally()` is the first with a file length parameter (via a mem buffer). This commit changes the type of that parameter to the LLP64 compatible `size_t` type. There are no other uses of the function. The `strbuf` type is already `size_t` compatible. Note: The hash-object test does not yet pass. Subsequent commits will continue to walk the call tree's lower level functions to identify further fixes. Signed-off-by: Philip Oakley <philipoakley@iee.email> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
As mentioned in the Makefile and CMakeLists.txt: "When cross-compiling, define HOST_CPU as the canonical name of the CPU on which the built Git will run (for instance "x86_64")" This commit sets the HOST_CPU variable since Git for Windows arm64 is cross-compiled from an amd64 host. Signed-off-by: Dennis Ameling <dennis@dennisameling.com>
We now have a GitHub Action to download and cache Azure Pipelines artifacts (such as the `vcpkg` artifacts), hiding gnarly internals, and also providing some robustness against network glitches. Let's use it. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
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>
Ensure key CMake option values are part of the CMake output to facilitate user support when tool updates impact the wider CMake actions, particularly ongoing 'improvements' in Visual Studio. These CMake displays perform the same function as the build-options.txt provided in the main Git for Windows. CMake is already chatty. The setting of CMAKE_EXPORT_COMPILE_COMMANDS is also reported. Include the environment's CMAKE_EXPORT_COMPILE_COMMANDS value which may have been propogated to CMake's internal value. Testing the CMAKE_EXPORT_COMPILE_COMMANDS processing can be difficult in the Visual Studio environment, as it may be cached in many places. The 'environment' may include the OS, the user shell, CMake's own environment, along with the Visual Studio presets and caches. See previous commit for arefacts that need removing for a clean test. Signed-off-by: Philip Oakley <philipoakley@iee.email>
In Git for Windows, `has_symlinks` is set to 0 by default. Therefore, we need to parse the config setting `core.symlinks` to know if it has been set to `true`. In `git init`, we must do that before copying the templates because they might contain symbolic links. Even if the support for symbolic links on Windows has not made it to upstream Git yet, we really should make sure that all the `core.*` settings are parsed before proceeding, as they might very well change the behavior of `git init` in a way the user intended. This fixes git-for-windows#3414 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
If `feature.experimental` and `feature.manyFiles` are set and the user has not explicitly turned off the builtin FSMonitor, we now start the built-in FSMonitor by default. Only forcing it when UNSET matches the behavior of UPDATE_DEFAULT_BOOL() used for other repo settings. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
This is another fall-out of the recent refactoring flurry. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This fixes the build after 7bc341e (git-compat-util: add a test balloon for C99 support, 2021-12-01). Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This is now passed by default, ever since 6a8cbc4 (developer: enable pedantic by default, 2021-09-03). Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Since ef8a6c6 (reftable: utility functions, 2021-10-07) we not only have a libreftable, but also a libreftable_test. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Visual Studio 2022 does not like that at all. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
These refactorings are really gifts that keep on giving. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
It is not useful because we do not have any persisted directory anymore, not since dropping our Travis CI support. 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.
Range-diff relative to `main`
1: e945191 = 1: 9e4b344 t9350: point out that refs are not updated correctly
2: 751fa71 = 2: fad3e22 transport-helper: add trailing --
18: 26c1e40 = 3: 2ec34fa mingw: demonstrate a
git addissue with NTFS junctions3: aca341d = 4: ab6d3ba remote-helper: check helper status after import/export
4: b8dddd8 = 5: 7a561a8 mingw: demonstrate a problem with certain absolute paths
5: 6a38c9f = 6: 2bcdb4e gitk: prevent overly long command lines
6: cae3981 = 7: 3dc1f93 clean: do not traverse mount points
21: 07f2f57 = 8: 51e8511 strbuf_realpath(): use platform-dependent API if available
7: 033c693 = 9: 9696162 mingw: include the Python parts in the build
8: a19f843 = 10: 2f43321 Always auto-gc after calling a fast-import transport
9: e479420 = 11: 24f9eb4 mingw: allow absolute paths without drive prefix
10: 991a895 = 12: c2b4ca5 mingw: change core.fsyncObjectFiles = 1 by default
11: b3b2ae8 = 13: 77e038e gitk: Escape file paths before piping to git log
12: 31df13d = 14: 8f48e48 clean: remove mount points when possible
13: 3b060e5 = 15: b464fc5 Config option to disable side-band-64k for transport
14: 6553219 = 16: e30a4f3 mingw: make sure
errnois set correctly when socket operations fail15: 511d9f8 = 17: 27810fd mingw: do resolve symlinks in
getcwd()25: c592889 = 18: 1a376ac mingw: fix fatal error working on mapped network drives on Windows
26: 6b66bdd = 19: 2b835e5 clink.pl: fix MSVC compile script to handle libcurl-d.lib
27: d58838c = 20: 689e64a mingw: implement a platform-specific
strbuf_realpath()16: 026942a = 21: 9e36712 vcxproj: unclash project directories with build outputs
17: 7aded36 = 22: 5d8309b mingw: ensure valid CTYPE
19: ccfba34 = 23: 7d3018f t5505/t5516: allow running without
.git/branches/in the templates20: ed7747c = 24: 1056e2d mingw: allow
git.exeto be used instead of the "Git wrapper"22: 5dc23b0 = 25: d4b8d8d t5505/t5516: fix white-space around redirectors
23: 4a1dc44 = 26: 4265cec mingw: ignore HOMEDRIVE/HOMEPATH if it points to Windows' system directory
32: cce1b40 = 27: 47da4a9 clink.pl: fix libexpatd.lib link error when using MSVC
33: 20f062e = 28: 778dfe4 Makefile: clean up .ilk files when MSVC=1
34: e13117d = 29: 39f1988 vcbuild: add support for compiling Windows resource files
35: 8192ddf = 30: b808265 config.mak.uname: add git.rc to MSVC builds
36: 1e122c3 = 31: a6b5014 clink.pl: ignore no-stack-protector arg on MSVC=1 builds
37: 0b1bee8 = 32: ac01f73 clink.pl: move default linker options for MSVC=1 builds
38: 1f88d3d = 33: 6ac1723 buildsystems: remove duplicate clause
39: a81bcc8 = 34: a5bd80a vcxproj: handle resource files, too
28: dffaaaf = 35: 11146c1 Allow
add -pandadd -iwith a large number of files41: 1abc867 = 36: 33cece2 vcxproj: ignore -fno-stack-protector and -fno-common
24: 0e8c173 = 37: 50decd1 http: use new "best effort" strategy for Secure Channel revoke checking
147: ac40eb3 = 38: 1207ab6 t3701: verify that we can add lots of files interactively
29: cdbebe0 = 39: 7770188 git add -i: handle CR/LF line endings in the interactive input
30: f137062 = 40: c2efd57 commit: accept "scissors" with CR/LF line endings
31: 1ad2c90 = 41: e838337 t0014: fix indentation
48: cfbe185 = 42: f272c6d git-gui: accommodate for intent-to-add files
49: c6ff951 = 43: 86b5b83 Add a GitHub workflow to generate Git for Windows' Pacman package
50: 5bfd37b = 44: fe15953 git-artifacts: if GPG secrets are available, use them
51: 400f769 = 45: 2ff4521 git-artifacts: also code-sign, if configured via the secrets
52: 217d7a4 = 46: be9cbd1 git-artifacts: also build the installer
53: 5012d57 = 47: 7e37513 git-artifacts: also build portable, mingit and mingit-busybox
54: 0f110f6 = 48: 8f797b1 git-artifacts: also build 32-bit versions
55: 44ad606 = 49: 70f9f27 git-artifacts: also build the nuget package
56: e5c469b = 50: 5d26353 git-artifacts: allow restricting which artifacts are built
57: c7793b8 = 51: c4026ae git-artifacts: allow specifying repo/ref via workflow_dispatch
58: f193e90 = 52: 30037d4 git-artifacts: cache the build-installers artifact
59: 9f8cc18 = 53: d041da1 git-artifacts: use the cached build-installers instead of makepkg-git
40: fb835c4 = 54: d7c509d vcpkg_install: detect lack of Git
60: eff54b0 = 55: 0356c6a git-artifacts: add ARM64 artifacts
42: d061df3 = 56: e6105d2 vcpkg_install: add comment regarding slow network connections
61: 5427059 = 57: 53aad25 git-artifacts(arm64): avoid hard-linking the dashed built-ins
44: a1cb6f1 = 58: 2bf3f76 vcxproj: support building Windows/ARM64 binaries
62: 60208ad = 59: c599d16 git-artifacts: use a narrower
PATH46: fcf4e5f = 60: 62da46b vcbuild: install ARM64 dependencies when building ARM64 binaries
64: cefb9bf = 61: a5a92b0 git-artifacts: fix BUILD_ONLY handling for ARM64
63: 45812f1 = 62: 6e1db68 vcbuild: add an option to install individual 'features'
66: b6d1188 = 63: ba7ead6 git-artifacts: extend the
SKIPlogic to handlepkgandbuild-arm6465: a6ab733 = 64: beecd31 cmake: allow building for Windows/ARM64
68: 2e138eb = 65: 2bebd12 git-artifacts: mark all inputs as "not required"
43: dc954b3 = 66: 786e517 vcxproj: handle GUI programs, too
67: 651a629 = 67: 53127bd ci(vs-build) also build Windows/ARM64 artifacts
70: 771153d = 68: b54ba50 git-artifacts(build-arm64): build artifacts using the intended Git revision
45: 396c873 = 69: 4935a3a win32: add a helper to run
git.exewithout a foreground window69: a2a4f8e = 70: 817169a Add schannel to curl installation
71: a8658bd = 71: ccdcf0d git-artifacts: add workaround for GCM Core on ARM64
73: e0d8176 = 72: c7b81e5 git-artifacts: use the
setup-git-for-windows-sdkAction47: 079b85a = 73: b9a0a3e git maintenance: avoid console window in scheduled tasks on Windows
72: 85c91bf = 74: 5512b74 cmake(): allow setting HOST_CPU for cross-compilation
74: c9c8710 = 75: 3c9ae0c ci(): add HOST_CPU to CMake command
75: 7f9f87f = 76: c6647bb CMake: default Visual Studio generator has changed
76: 6978229 = 77: 7c6e5da .gitignore: add Visual Studio CMakeSetting.json file
87: 4b272bd = 78: bc4e8ca hash-object: demonstrate a >4GB/LLP64 problem
77: 534e67a = 79: 4a93950 subtree: update
contrib/subtreetesttarget78: 5e2b1f6 = 80: aad8767 CMakeLists: add default "x64-windows" arch for Visual Studio
79: d8f646d = 81: 1caf80c fsmonitor: reintroduce core.useBuiltinFSMonitor
88: 1ee67eb = 82: 6eabb56 hash_object_file_literally(): use size_t
80: c1f85f3 = 83: 5a76858 ci(vs-build): download the vcpkg artifacts using a dedicated Action
81: ffdce9b = 84: bea767a mingw: allow for longer paths in
parse_interpreter()82: af09265 = 85: 14c7d6c compat/vcbuild: document preferred way to build in Visual Studio
83: 391b097 = 86: 603428a http: optionally send SSL client certificate
84: 406cd1d = 87: 9e685fa ci: run
contrib/subtreetests in CI builds85: 49674f1 = 88: d95f5b4 CMake: show Win32 and Generator_platform build-option values
86: 2f93a90 = 89: f800e86 init: do parse all core.* settings early
99: 6fcf6fc = 90: a8b6a87 Enable the built-in FSMonitor as an experimental feature
89: 03936f2 = 91: 760a697 vcxproj: allow building with
NO_PERLagain91: 005f80c = 92: df9ce70 vcxproj: require C11
93: 50bec54 = 93: 6992291 vcxproj: ignore the
-pedanticoption95: 4160649 = 94: 7401f11 vcxproj: include reftable when committing
.vcxprojfiles98: 0f97491 = 95: e43127e vcxproj: handle libreftable_test, too
105: 8ea3750 = 96: a76901f vcxproj: avoid escaping double quotes in the defines
107: 70cb56e = 97: 9937abe ci: adjust Azure Pipeline for
runs_on_pool109: f7d9c98 = 98: d6ce9d8 ci: stop linking the
provecache111: 95435ff = 99: 3b024a3 ci: reinstate Azure Pipelines support
113: b0b1934 = 100: 9a519cf azure-pipeline: drop the
GETTEXT_POISONjob90: 34b4f68 = 101: 204da3f object-file.c: use size_t for header lengths
115: 3f4dd05 = 102: 78a9087 azure-pipeline: stop hard-coding
apt-getcalls92: 334860c = 103: a66e876 hash algorithms: use size_t for section lengths
117: 8c69f10 = 104: c4586c4 azure-pipeline: drop the code to write to/read from a file share
94: 026b8d3 = 105: 308c596 hash-object --stdin: verify that it works with >4GB/LLP64
119: 2a15ef6 = 106: 4c57e0e azure-pipeline: use partial clone/parallel checkout to initialize minimal-sdk
96: 09c68e9 = 107: ab324b4 hash-object: add another >4GB/LLP64 test case
97: b126552 = 108: 3559732 setup: properly use "%(prefix)/" when in WSL
121: 2cb4e87 = 109: d2f9dfb azure-pipeline: downcase the job name of the
Linux32job100: 33a014d = 110: 02c619a hash-object: add a >4GB/LLP64 test case using filtered input
101: ec68459 = 111: b60d7a9 compat/mingw.c: do not warn when failing to get owner
102: c9a529c = 112: c7ff066 mingw: $env:TERM="xterm-256color" for newer OSes
103: f060165 = 113: 27b1b41 winansi: check result and Buffer before using Name
104: 0fe2bc1 = 114: c7b3a28 Add config option
windows.appendAtomically123: dd315da = 115: 0fe72fa azure-pipeline: run static-analysis on bionic
106: 42e3768 = 116: 1e2572c win32/pthread: avoid name clashes with winpthread
108: 8b0c082 = 117: 1d2f1f3 git-compat-util: avoid redeclaring _DEFAULT_SOURCE
110: 111e8ff = 118: 365c6dc Import the source code of mimalloc
112: 0495713 = 119: f9a9eb4 mimalloc: adjust for building inside Git
114: 0cf7358 = 120: f7e87f2 mimalloc: avoid
%zformat116: 7c6d4ad = 121: fa1a965 mimalloc: avoid having to link to
psapijust for mimalloc118: 64f09f3 = 122: 933f334 mimalloc: avoid having to link to
bcryptjust for mimalloc120: c5d12c1 = 123: fe0d614 mimalloc: offer a build-time option to enable it
122: baf7a64 = 124: b372896 mimalloc: make MIMALLOC_SHOW_STATS work with redirected
stderr124: 6b3c69b = 125: 26299de MinGW: link as terminal server aware
125: 6076a6e = 126: 2a5f403 mingw: use mimalloc
148: f2c74aa = 127: 56fac8c Win32: make FILETIME conversion functions public
149: 8c6f158 = 128: 65bc23b Win32: dirent.c: Move opendir down
150: 5220aea = 129: 9c9bc04 mingw: make the dirent implementation pluggable
151: 7210ff7 = 130: 7942318 Win32: make the lstat implementation pluggable
152: 6cdb2fb = 131: 3eab29f add infrastructure for read-only file system level caches
153: 5dc079e = 132: 595a93d mingw: add a cache below mingw's lstat and dirent implementations
154: 0890b0a = 133: 88d0d99 fscache: load directories only once
155: a8598ed = 134: cea0a34 fscache: add key for GIT_TRACE_FSCACHE
156: 2e26a6f = 135: 991854b fscache: remember not-found directories
157: 0d766ed = 136: c14c540 fscache: add a test for the dir-not-found optimization
158: fb506ce = 137: df4e5ef add: use preload-index and fscache for performance
159: 74e7e79 = 138: 74573ec dir.c: make add_excludes aware of fscache during status
160: cffcb62 = 139: 98f283d fscache: make fscache_enabled() public
161: dd574be = 140: 5275819 dir.c: regression fix for add_excludes with fscache
162: 81fc1c8 = 141: 95d1e6e fetch-pack.c: enable fscache for stats under .git/objects
163: 6265caf = 142: 0886032 checkout.c: enable fscache for checkout again
164: a917ff9 = 143: 1550ba6 Enable the filesystem cache (fscache) in refresh_index().
165: c5c3a85 = 144: 1225b62 fscache: use FindFirstFileExW to avoid retrieving the short name
166: 31f4a14 = 145: 0cf878d status: disable and free fscache at the end of the status command
167: 5e9d22b = 146: 0af9e0a fscache: add GIT_TEST_FSCACHE support
168: 2096c0e = 147: 0be9052 fscache: add fscache hit statistics
169: 511e2cd = 148: dceec29 mem_pool: add GIT_TRACE_MEMPOOL support
170: f995134 = 149: 8657e80 fscache: fscache takes an initial size
171: b62c18b = 150: 789e65d fscache: update fscache to be thread specific instead of global
172: c4bb102 = 151: 5da2035 fscache: teach fscache to use mempool
173: cd119f2 = 152: 8c19ee5 fscache: make fscache_enable() thread safe
126: ca5505d = 153: 741fb4d git-gui: provide question helper for retry fallback on Windows
174: aadde92 = 154: 2e01803 fscache: teach fscache to use NtQueryDirectoryFile
127: 57cd3d8 = 155: 626d967 git gui: set GIT_ASKPASS=git-gui--askpass if not set yet
175: 3ac93fc = 156: 2d6ea4f unpack-trees: enable fscache for sparse-checkout
128: 509b410 = 157: 83ed47e git-gui--askyesno: fix funny text wrapping
176: c1014ad = 158: 1fc97e3 fscache: remember the reparse tag for each entry
130: 98dc265 = 159: 7cf261f gitk: Unicode file name support
132: a4f0d2a = 160: 6f3f54a git-gui--askyesno: allow overriding the window title
177: c4f9797 = 161: 3ea45ab fscache: implement an FSCache-aware is_mount_point()
131: 402cfb1 = 162: 96188a6 gitk: Use an external icon file on Windows
129: 4780a09 = 163: 8ea09b2 respect core.hooksPath, falling back to .git/hooks
134: 9fa79fc = 164: cae3c77 git-gui--askyesno (mingw): use Git for Windows' icon, if available
178: be9795a = 165: 15f28ef clean: make use of FSCache
133: b34d25e = 166: 45dc2ab gitk: fix arrow keys in input fields with Tcl/Tk >= 8.6
135: 78632b6 = 167: e22e654 gitk: make the "list references" default window width wider
179: 2c04911 = 168: 9bc9368 pack-objects (mingw): demonstrate a segmentation fault with large deltas
180: 40772e0 ! 169: 4ec40c8 mingw: support long paths
181: f391b19 = 170: 85f34e1 Win32: fix 'lstat("dir/")' with long paths
191: d5ac68e = 171: 60e990d compat/fsmonitor/fsm-*-win32: support long paths
183: 3d9387a = 172: bbde1a8 mingw: Support
git_terminal_promptwith more terminals184: 8c5823d = 173: 441a2a8 compat/terminal.c: only use the Windows console if bash 'read -r' fails
185: 26fa080 = 174: 7272b72 mingw (git_terminal_prompt): do fall back to CONIN$/CONOUT$ method
186: 1100ffb = 175: 1069e67 Unbreak interactive GPG prompt upon signing
187: fe95dea = 176: 0c2ab7f strbuf_readlink: don't call readlink twice if hint is the exact link size
188: d925b68 = 177: 49ed7b2 strbuf_readlink: support link targets that exceed PATH_MAX
189: 366cf5c = 178: 4b2266d lockfile.c: use is_dir_sep() instead of hardcoded '/' checks
190: ae58428 = 179: 7041373 Win32: don't call GetFileAttributes twice in mingw_lstat()
193: 5e0578d = 180: 90225cb Win32: implement stat() with symlink support
194: ae4e96b = 181: 64bb4f0 Win32: remove separate do_lstat() function
195: aa33f26 = 182: b72841a Win32: let mingw_lstat() error early upon problems with reparse points
196: 0a17234 = 183: a3dc009 mingw: teach fscache and dirent about symlinks
197: c96e396 = 184: e110d9a Win32: lstat(): return adequate stat.st_size for symlinks
198: 1575448 = 185: 5488138 Win32: factor out retry logic
199: a64ec30 = 186: be51b75 Win32: change default of 'core.symlinks' to false
200: 199b080 = 187: a6ae04e Win32: add symlink-specific error codes
201: 90bbb62 = 188: 8e585f2 Win32: mingw_unlink: support symlinks to directories
202: 8458d84 = 189: be688dc Win32: mingw_rename: support renaming symlinks
203: 89798ae = 190: 1f8e066 Win32: mingw_chdir: change to symlink-resolved directory
204: ed2b8c1 = 191: 9017cdf Win32: implement readlink()
205: 628e191 = 192: fadfc91 mingw: lstat: compute correct size for symlinks
206: 2fa7c31 = 193: 9ddc216 Win32: implement basic symlink() functionality (file symlinks only)
207: d25cf4e = 194: 4819b40 Win32: symlink: add support for symlinks to directories
208: 348c78a = 195: e51be42 mingw: try to create symlinks without elevated permissions
209: 5d11986 = 196: a8db199 mingw: emulate stat() a little more faithfully
210: cf74ed5 = 197: 4586ef8 mingw: special-case index entries for symlinks with buggy size
192: 6e09ae2 = 198: b09513f clean: suggest using
core.longPathsif paths are too long to remove212: 2c12a23 = 199: 146a8d0 Win32: symlink: move phantom symlink creation to a separate function
214: 322fe4a = 200: 584bf04 Introduce helper to create symlinks that knows about index_state
216: 32e946b = 201: 8f901ec mingw: allow to specify the symlink type in .gitattributes
218: 97088dd = 202: 829bd8b Win32: symlink: add test for
symlinkattribute219: 469f0c6 = 203: 99d6228 mingw: explicitly specify with which cmd to prefix the cmdline
220: 27ea878 = 204: 6054515 mingw: when path_lookup() failed, try BusyBox
221: 950da0a = 205: 43fc774 test-lib: avoid unnecessary Perl invocation
222: 486da74 = 206: aee37d4 tests: replace mingw_test_cmp with a helper in C
223: fa912e4 = 207: e2d18bb test-tool: learn to act as a drop-in replacement for
iconv224: 1bd6e5c = 208: 23407d6 tests(mingw): if
iconvis unavailable, usetest-helper --iconv225: 5c32e43 = 209: db1efa5 gitattributes: mark .png files as binary
226: a3a4876 = 210: 4606af1 tests: move test PNGs into t/lib-diff/
227: ce25ea8 = 211: 456ed74 tests: only override sort & find if there are usable ones in /usr/bin/
228: 1264fff = 212: 0c898df tests: use the correct path separator with BusyBox
229: 11d64fa = 213: b282604 mingw: only use Bash-ism
builtin pwd -Wwhen available230: 874f370 = 214: 342c842 tests (mingw): remove Bash-specific pwd option
211: 65e654e = 215: 659b9bd mingw: introduce code to detect whether we're inside a Windows container
231: 069e648 = 216: 7e45200 test-lib: add BUSYBOX prerequisite
213: 3e5a5c4 = 217: b52221b mingw: when running in a Windows container, try to rename() harder
232: a1077e6 = 218: c361f3e t0021: use Windows path when appropriate
215: 39c16ac = 219: f2b46e5 mingw: move the file_attr_to_st_mode() function definition
233: 1066699 = 220: 8da5530 t5003: use binary file from t/lib-diff/
217: 7da6e7b = 221: 745fc2e mingw: Windows Docker volumes are not symbolic links
234: 09a3d4c = 222: cedb735 t5532: workaround for BusyBox on Windows
235: fd2cce4 = 223: dce6e75 t5605: special-case hardlink test for BusyBox-w32
236: 9a89257 = 224: 13ba332 t5813: allow for $PWD to be a Windows path
237: 7629ab1 = 225: b379060 t9200: skip tests when $PWD contains a colon
238: dea4755 = 226: ad1ae4b mingw: kill child processes in a gentler way
239: 78d6d6f = 227: 4cee6c1 mingw: do not call xutftowcs_path in mingw_mktemp
240: 493fb69 = 228: ab8548f mingw: add a Makefile target to copy test artifacts
241: 732efcf = 229: 0964e52 mingw: really handle SIGINT
242: 9904679 = 230: 6a4fae0 Partially un-revert "editor: save and reset terminal after calling EDITOR"
143: 901f599 = 231: 0e5125b reset: reinstate support for the deprecated --stdin option
144: ee532c7 = 232: 7aab794 mingw: deprecate old-style runtime-prefix handling in interpolate_path()
145: 7dd3289 = 233: 33595ad Add a GitHub workflow to monitor component updates
136: 677790f = 234: a613e69 Modify the Code of Conduct for Git for Windows
137: a573830 = 235: d217653 CONTRIBUTING.md: add guide for first-time contributors
138: 66acd8b = 236: 18206c3 README.md: Add a Windows-specific preamble
139: cf303e2 = 237: 2a66469 Add an issue template
140: e53f1f8 = 238: a057515 Modify the GitHub Pull Request template (to reflect Git for Windows)
141: 9e4f6ba = 239: 65c93fc .github: Add configuration for the Sentiment Bot
142: ca7cd83 = 240: d92c56b Document how $HOME is set on Windows
146: 6c56325 = 241: 40e12e1 SECURITY.md: document Git for Windows' policies
-182: a28d904 < -: ------------ mingw: ensure that core.longPaths is handled always
-243: 70b5348 < -: ------------ fixup! mingw: support long paths
-244: 04a77c9 < -: ------------ fixup! mingw: ensure that core.longPaths is handled always