forked from git/git
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rebase to v2.38.0-rc0 #4021
Merged
Merged
Rebase to v2.38.0-rc0 #4021
Conversation
This file contains 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
…vision We cannot just check out the current revision: The user might have overridden `REPOSITORY` and `REF` via the workflow dispatch. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
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>
This simplifies the workflow dramatically, as well as accelerating it because the Action recently learned to use the partial clone/parallel checkout features of Git. Note that we have to reinstate that `/usr/bin/git` hack (a shell script that simply redirects to `/mingw64/bin/git.exe`) in the `pkg` job manually, since we no longer cache the `build-installers` artifact _after_ installing that hack in `bundle-artifacts`. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
Signed-off-by: Derrick Stolee <derrickstolee@github.com>
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>
To verify that the `clean` side of the `clean`/`smudge` filter code is correct with regards to LLP64 (read: to ensure that `size_t` is used instead of `unsigned long`), here is a test case using a trivial filter, specifically _not_ writing anything to the object store to limit the scope of the test case. As in previous commits, the `big` file from previous test cases is reused if available, to save setup time, otherwise re-generated. Signed-off-by: Philip Oakley <philipoakley@iee.email> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
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 the current `main` branch
1: ae86b86 = 1: e1c540c t9350: point out that refs are not updated correctly
2: ab69ea8 = 2: 8082fe4 transport-helper: add trailing --
3: 54396e2 = 3: 481d838 remote-helper: check helper status after import/export
5: f719924 = 4: 6671718 mingw: demonstrate a problem with certain absolute paths
4: 9849ef5 = 5: 607c337 Always auto-gc after calling a fast-import transport
9: 78295fa = 6: d840d0d mingw: allow absolute paths without drive prefix
7: c7d982d = 7: 59cdb66 gitk: prevent overly long command lines
11: dbcd36c = 8: 5e0e991 mingw: change core.fsyncObjectFiles = 1 by default
8: 9e37910 = 9: b332c56 clean: do not traverse mount points
gzip
15: 11264b0 = 10: 7b93cc2 mingw: include the Python parts in the build
12: 1f634b9 = 11: 63dab35 gitk: Escape file paths before piping to git log
13: c80f11e = 12: 9867f31 clean: remove mount points when possible
16: b304680 = 13: 920138a Config option to disable side-band-64k for transport
17: d711bd2 = 14: 7a7dffa mingw: make sure
errno
is set correctly when socket operations fail18: 1d10cc4 = 15: bac9575 mingw: do resolve symlinks in
getcwd()
19: 0038219 = 16: 8214a5c mingw: fix fatal error working on mapped network drives on Windows
22: a05f733 = 17: 9b681be mingw: ensure valid CTYPE
14: f343dd8 = 18: c041836 mingw: demonstrate a
git add
issue with NTFS junctions24: beb3082 = 19: 1f39185 mingw: allow
git.exe
to be used instead of the "Git wrapper"25: 1c305cf = 20: bb6f4fa strbuf_realpath(): use platform-dependent API if available
28: 7e7190c = 21: faec88e mingw: ignore HOMEDRIVE/HOMEPATH if it points to Windows' system directory
29: cb3b22c = 22: 1ecef8e http: use new "best effort" strategy for Secure Channel revoke checking
20: f51dca1 = 23: 2536656 clink.pl: fix MSVC compile script to handle libcurl-d.lib
30: c98beec = 24: 1ba1a9d mingw: implement a platform-specific
strbuf_realpath()
21: ef31fd2 = 25: 12e0667 vcxproj: unclash project directories with build outputs
23: 5eed085 ! 26: fdb7550 t5505/t5516: allow running without
.git/branches/
in the templates27: 12a00d1 ! 27: 2160fce t5505/t5516: fix white-space around redirectors
26: 0588767 = 28: ad04f51 Allow
add -p
andadd -i
with a large number of files31: 783307f = 29: 100a975 t3701: verify that we can add lots of files interactively
32: 58d581b = 30: 7e5094e git add -i: handle CR/LF line endings in the interactive input
36: 746f589 = 31: b21916e clink.pl: fix libexpatd.lib link error when using MSVC
37: 7ad85bd = 32: bf25f6b Makefile: clean up .ilk files when MSVC=1
38: 5b37548 = 33: c39dfee vcbuild: add support for compiling Windows resource files
39: 7001ed0 = 34: e45eb41 config.mak.uname: add git.rc to MSVC builds
33: 6322afc = 35: bda7bd9 commit: accept "scissors" with CR/LF line endings
34: b7ee730 = 36: 1b23cfd t0014: fix indentation
35: 64bedae = 37: 5314e08 git-gui: accommodate for intent-to-add files
40: 4229e71 = 38: cbd7448 clink.pl: ignore no-stack-protector arg on MSVC=1 builds
41: 7bc5f6b = 39: a09a029 clink.pl: move default linker options for MSVC=1 builds
47: 1f8748b = 40: 35b4e38 vcpkg_install: detect lack of Git
42: c49614d = 41: a2758d0 buildsystems: remove duplicate clause
50: 26f3562 = 42: ee5af34 vcpkg_install: add comment regarding slow network connections
43: 15e8d38 = 43: 653ef80 vcxproj: handle resource files, too
52: 1037048 = 44: d565baa vcxproj: support building Windows/ARM64 binaries
44: 920266a = 45: 99f2e86 vcxproj: ignore -fno-stack-protector and -fno-common
54: 38b7c5d = 46: 2916679 vcbuild: install ARM64 dependencies when building ARM64 binaries
45: 90f1b5b = 47: ff4e2e1 vcxproj: handle GUI programs, too
56: 64f83e8 = 48: f71b8f0 vcbuild: add an option to install individual 'features'
46: 788496e ! 49: b8ae498 win32: add a helper to run
git.exe
without a foreground window58: 98cd770 = 50: 4cfc909 cmake: allow building for Windows/ARM64
48: 27ced5b = 51: cddc674 git maintenance: avoid console window in scheduled tasks on Windows
49: 3ece0a6 = 52: a597d7b Add a GitHub workflow to generate Git for Windows' Pacman package
51: 95bd756 = 53: e17402f git-artifacts: if GPG secrets are available, use them
53: f94fd9e = 54: 1d2c687 git-artifacts: also code-sign, if configured via the secrets
55: 63e63ae = 55: eb56663 git-artifacts: also build the installer
57: 1f9c4f6 = 56: 507caf6 git-artifacts: also build portable, mingit and mingit-busybox
59: 88c8301 = 57: 286f370 git-artifacts: also build 32-bit versions
61: 5e65e9a = 58: a62b7f9 git-artifacts: also build the nuget package
63: 706e147 = 59: 74d09dc git-artifacts: allow restricting which artifacts are built
64: 845e925 = 60: 8550041 git-artifacts: allow specifying repo/ref via workflow_dispatch
65: 5c68e3e = 61: 4b51d6e git-artifacts: cache the build-installers artifact
66: 47a0963 = 62: 1ca5014 git-artifacts: use the cached build-installers instead of makepkg-git
60: 97b7164 = 63: 7543e15 ci(vs-build) also build Windows/ARM64 artifacts
67: 214ba16 = 64: 68d7ae9 git-artifacts: add ARM64 artifacts
62: 1efd586 = 65: 3d96f97 Add schannel to curl installation
74: 1bde85d = 66: 1188219 git-artifacts: add workaround for GCM Core on ARM64
68: cc14281 = 67: 630d02d git-artifacts(arm64): avoid hard-linking the dashed built-ins
69: 938ebc6 = 68: 4f1d1f9 git-artifacts: use a narrower
PATH
70: d78aee8 = 69: d715db3 git-artifacts: fix BUILD_ONLY handling for ARM64
71: 52da5f1 = 70: 862076b git-artifacts: extend the
SKIP
logic to handlepkg
andbuild-arm64
72: ef41657 = 71: d54f001 git-artifacts: mark all inputs as "not required"
73: 92a6d81 = 72: c05801e git-artifacts(build-arm64): build artifacts using the intended Git revision
75: c8bd524 = 73: a982171 cmake(): allow setting HOST_CPU for cross-compilation
76: db263be = 74: 62acf98 git-artifacts: use the
setup-git-for-windows-sdk
Action77: 586e440 = 75: 488456a ci(): add HOST_CPU to CMake command
78: d2c0317 = 76: ea48d99 subtree: update
contrib/subtree
test
target79: 021caaf = 77: 7387a76 ci(vs-build): download the vcpkg artifacts using a dedicated Action
80: 912211c = 78: ff5e984 mingw: allow for longer paths in
parse_interpreter()
81: ef3e53d = 79: 45a5d78 compat/vcbuild: document preferred way to build in Visual Studio
82: bbaf1f8 = 80: b5a014a http: optionally send SSL client certificate
83: b771d3a = 81: f6f01bd CMake: default Visual Studio generator has changed
84: 801018c = 82: f7ca3c6 .gitignore: add Visual Studio CMakeSetting.json file
85: f15f157 = 83: dc77415 hash-object: demonstrate a >4GB/LLP64 problem
86: 8b603fb = 84: 9dd28b0 CMakeLists: add default "x64-windows" arch for Visual Studio
87: 820a1f0 = 85: 83aa608 fsmonitor: reintroduce core.useBuiltinFSMonitor
88: 7f15973 ! 86: e9cbc5a hash_object_file_literally(): use size_t
89: 63e2295 = 87: 7e80060 ci: run
contrib/subtree
tests in CI builds90: f43728f = 88: 3d3f165 CMake: show Win32 and Generator_platform build-option values
91: dc9c250 = 89: 0af57e9 init: do parse all core.* settings early
92: 8bd0bad = 90: 57a866b Enable the built-in FSMonitor as an experimental feature
93: 5eec758 ! 91: ee00326 object-file.c: use size_t for header lengths
94: c017889 = 92: 3f2541e hash algorithms: use size_t for section lengths
95: 12853da = 93: d18a78b hash-object --stdin: verify that it works with >4GB/LLP64
96: 5ce7cff = 94: c4701dd hash-object: add another >4GB/LLP64 test case
125: 9ea4211 = 95: 47742b8 vcxproj: allow building with
NO_PERL
again126: 02da463 = 96: 103c942 vcxproj: require C11
98: 5879eb5 = 97: c22d07e setup: properly use "%(prefix)/" when in WSL
127: c628fe3 = 98: 9d8e328 vcxproj: ignore the
-pedantic
option97: 7fe1eb7 = 99: 561a5e8 hash-object: add a >4GB/LLP64 test case using filtered input
99: c4af75a = 100: ac8105a compat/mingw.c: do not warn when failing to get owner
100: dbcf6ec = 101: 439a8b2 mingw: $env:TERM="xterm-256color" for newer OSes
101: 4295ad2 = 102: 47afddb winansi: check result and Buffer before using Name
102: 8cd241f = 103: 0ba0416 Add config option
windows.appendAtomically
128: 4ce1741 = 104: ad6afeb vcxproj: include reftable when committing
.vcxproj
files129: 9ee7289 = 105: f6946cf vcxproj: handle libreftable_test, too
130: 54fd462 = 106: fcb8aed vcxproj: avoid escaping double quotes in the defines
131: 8603412 = 107: c9bfa3a ci: adjust Azure Pipeline for
runs_on_pool
132: 2b79cfe = 108: a379a40 ci: stop linking the
prove
cache133: cb4cc3d = 109: 8a3a771 ci: reinstate Azure Pipelines support
134: 14895fc = 110: fe20eb6 azure-pipeline: drop the
GETTEXT_POISON
job135: 34e2791 = 111: b6aa24d azure-pipeline: stop hard-coding
apt-get
calls136: 39dbdd8 = 112: 9c44fa9 azure-pipeline: drop the code to write to/read from a file share
137: c99c1ee = 113: ac551bf azure-pipeline: use partial clone/parallel checkout to initialize minimal-sdk
138: 9dd6cc6 = 114: 38fc4d2 azure-pipeline: downcase the job name of the
Linux32
job139: ac363dd = 115: 8079031 azure-pipeline: run static-analysis on bionic
124: 7617888 = 116: 9393f68 MinGW: link as terminal server aware
235: 45a8eca = 117: 825c77b win32/pthread: avoid name clashes with winpthread
236: 9e7f6dd = 118: 3bc8e61 git-compat-util: avoid redeclaring _DEFAULT_SOURCE
237: ce055a3 = 119: 85dfed2 Import the source code of mimalloc
238: 52846ae = 120: 34da9a7 mimalloc: adjust for building inside Git
239: 4a078fa = 121: b13fd67 mimalloc: avoid
%z
format240: e56f44a = 122: 44d01f4 mimalloc: avoid having to link to
psapi
just for mimalloc241: 59f74e9 = 123: f930463 mimalloc: avoid having to link to
bcrypt
just for mimalloc242: 2075ffd = 124: 314ace6 mimalloc: offer a build-time option to enable it
243: 53ff12c = 125: aa076e0 mimalloc: make MIMALLOC_SHOW_STATS work with redirected
stderr
244: e02f80a = 126: ff2ce66 mingw: use mimalloc
140: 14bb1e7 = 127: facf40a Win32: make FILETIME conversion functions public
141: 1a0db9d = 128: 055b028 Win32: dirent.c: Move opendir down
142: 2a6031e = 129: da9a2a8 mingw: make the dirent implementation pluggable
143: 5ed1165 = 130: 6665f73 Win32: make the lstat implementation pluggable
144: 4c7a0e8 = 131: 74d18a7 add infrastructure for read-only file system level caches
145: 04f0eea = 132: c887104 mingw: add a cache below mingw's lstat and dirent implementations
146: 7732cba = 133: c38580c fscache: load directories only once
147: 2423add = 134: 9f148f2 fscache: add key for GIT_TRACE_FSCACHE
148: 9efa26d = 135: 7fdc57e fscache: remember not-found directories
149: bab6c54 = 136: 455c2e3 fscache: add a test for the dir-not-found optimization
150: 07ed04d = 137: 137482a add: use preload-index and fscache for performance
151: bb9eda8 = 138: 47cf2b5 dir.c: make add_excludes aware of fscache during status
152: 5481d04 = 139: e98fd0c fscache: make fscache_enabled() public
153: ac0d931 = 140: 6a42aa2 dir.c: regression fix for add_excludes with fscache
154: 222ea58 = 141: 5fdfdf8 fetch-pack.c: enable fscache for stats under .git/objects
155: 8083408 = 142: 9bece8c checkout.c: enable fscache for checkout again
156: 19fcc4e = 143: 8166572 Enable the filesystem cache (fscache) in refresh_index().
157: 93d1777 = 144: fbd5b1c fscache: use FindFirstFileExW to avoid retrieving the short name
158: c8d1ef4 = 145: d1a82a9 status: disable and free fscache at the end of the status command
159: ebd7033 = 146: 98c2e04 fscache: add GIT_TEST_FSCACHE support
160: 0278530 = 147: 9f00d95 fscache: add fscache hit statistics
161: c2e5684 = 148: cc57cd2 mem_pool: add GIT_TRACE_MEMPOOL support
162: 6e64932 = 149: 23cc27b fscache: fscache takes an initial size
163: b69b01c = 150: e7f9898 fscache: update fscache to be thread specific instead of global
164: 63cd434 = 151: c07d166 fscache: teach fscache to use mempool
165: 7e70584 = 152: 7671b2e fscache: make fscache_enable() thread safe
166: 88ec319 = 153: db7a4ec fscache: teach fscache to use NtQueryDirectoryFile
167: 9f5d680 = 154: a5fddb7 unpack-trees: enable fscache for sparse-checkout
168: 20e9add = 155: 2af243c fscache: remember the reparse tag for each entry
103: bab3b66 = 156: 28f0304 git-gui: provide question helper for retry fallback on Windows
169: 11d4c65 = 157: 66577d6 fscache: implement an FSCache-aware is_mount_point()
104: 0334e9c = 158: e68f005 git gui: set GIT_ASKPASS=git-gui--askpass if not set yet
107: 27cfa37 = 159: 1bb10ea respect core.hooksPath, falling back to .git/hooks
170: 9ccebb8 = 160: abbb795 clean: make use of FSCache
108: 571b3c2 = 161: 1b3937c gitk: Unicode file name support
105: 8fa9f9a = 162: 69ac28a git-gui--askyesno: fix funny text wrapping
109: a2e617a = 163: d190d96 gitk: Use an external icon file on Windows
106: 1776f90 = 164: 5a0579f git-gui--askyesno: allow overriding the window title
110: 1409ef7 = 165: c47f966 gitk: fix arrow keys in input fields with Tcl/Tk >= 8.6
111: 48f07cd = 166: 3b82633 git-gui--askyesno (mingw): use Git for Windows' icon, if available
112: 791b338 = 167: a826a55 gitk: make the "list references" default window width wider
171: 88a9853 = 168: 8c3ddd3 pack-objects (mingw): demonstrate a segmentation fault with large deltas
172: d8c2462 = 169: a5186c2 mingw: support long paths
173: 3df12f3 = 170: a4b1114 Win32: fix 'lstat("dir/")' with long paths
174: 9a2ae5f ! 171: ae4e147 mingw: ensure that core.longPaths is handled always
175: f65d8c4 ! 172: b161856 compat/fsmonitor/fsm-*-win32: support long paths
176: 070982a = 173: e87a650 mingw: Support
git_terminal_prompt
with more terminals177: 54cc64c = 174: 9e64a6d compat/terminal.c: only use the Windows console if bash 'read -r' fails
178: e397113 = 175: 4045d58 mingw (git_terminal_prompt): do fall back to CONIN$/CONOUT$ method
179: 1c71006 = 176: 343cb04 Unbreak interactive GPG prompt upon signing
180: fc800a2 = 177: d4afc7e strbuf_readlink: don't call readlink twice if hint is the exact link size
181: 8fcb007 = 178: 84d1fc2 strbuf_readlink: support link targets that exceed PATH_MAX
182: a1e07d3 = 179: 4df3457 lockfile.c: use is_dir_sep() instead of hardcoded '/' checks
187: 845827a = 180: 0cb0c40 clean: suggest using
core.longPaths
if paths are too long to remove183: 139aaa1 = 181: 3be7cfb Win32: don't call GetFileAttributes twice in mingw_lstat()
184: 0a3cc55 = 182: 486537a Win32: implement stat() with symlink support
185: 928faaf = 183: 9254a1d Win32: remove separate do_lstat() function
186: 6e15d1a = 184: 5a082f5 Win32: let mingw_lstat() error early upon problems with reparse points
188: 1b8c2fb = 185: f299987 mingw: teach fscache and dirent about symlinks
189: 45d6ec8 = 186: d29d78d Win32: lstat(): return adequate stat.st_size for symlinks
190: 69276cd = 187: e8e77cb Win32: factor out retry logic
191: a2dd305 = 188: 2317280 Win32: change default of 'core.symlinks' to false
192: 1c4ec86 = 189: 34e5622 Win32: add symlink-specific error codes
193: 455739b = 190: 6b018f7 Win32: mingw_unlink: support symlinks to directories
194: 1101585 = 191: afd0b3b Win32: mingw_rename: support renaming symlinks
195: 8d7f000 = 192: 3b8e0db Win32: mingw_chdir: change to symlink-resolved directory
196: 469d533 = 193: 10803a3 Win32: implement readlink()
197: f918fbc = 194: ecf2380 mingw: lstat: compute correct size for symlinks
198: 9cbacce = 195: 69973d1 Win32: implement basic symlink() functionality (file symlinks only)
199: 3637e40 = 196: 1b17ac0 Win32: symlink: add support for symlinks to directories
200: 353df52 = 197: 5b31879 mingw: try to create symlinks without elevated permissions
201: 94fecae = 198: 6511703 mingw: emulate stat() a little more faithfully
202: 98b32d1 = 199: 973fe3a mingw: special-case index entries for symlinks with buggy size
207: ec52e55 = 200: 9a62649 mingw: introduce code to detect whether we're inside a Windows container
209: 2c6591e = 201: 6b57168 mingw: when running in a Windows container, try to rename() harder
211: daa52d9 = 202: c32a4e7 mingw: move the file_attr_to_st_mode() function definition
203: 1594420 = 203: b6ddca9 Win32: symlink: move phantom symlink creation to a separate function
213: 9f6d0ac = 204: adda2a7 mingw: Windows Docker volumes are not symbolic links
204: c8e87f6 = 205: d72e07c Introduce helper to create symlinks that knows about index_state
205: 1931132 = 206: e109581 mingw: allow to specify the symlink type in .gitattributes
206: 0e12da1 = 207: a5b42ee Win32: symlink: add test for
symlink
attribute208: fe2758c = 208: 9b86c8e mingw: explicitly specify with which cmd to prefix the cmdline
210: 4dc74b2 = 209: c6bb0e6 mingw: when path_lookup() failed, try BusyBox
212: 34d54e8 = 210: 1543bd1 test-lib: avoid unnecessary Perl invocation
214: 6c74c6f = 211: c8c6f5f tests: replace mingw_test_cmp with a helper in C
215: f830050 = 212: 90f9333 test-tool: learn to act as a drop-in replacement for
iconv
216: 7c340fc = 213: ac5e171 tests(mingw): if
iconv
is unavailable, usetest-helper --iconv
217: 50fceec = 214: d8b4e96 gitattributes: mark .png files as binary
218: 4e2afb4 ! 215: a879ff8 tests: move test PNGs into t/lib-diff/
219: 7bf0a3c = 216: 14597eb tests: only override sort & find if there are usable ones in /usr/bin/
220: e099c34 = 217: 8eb0287 tests: use the correct path separator with BusyBox
221: 2275b99 = 218: 8dad74f mingw: only use Bash-ism
builtin pwd -W
when available222: cf7e951 = 219: 8c27052 tests (mingw): remove Bash-specific pwd option
223: 891699c = 220: d43d800 test-lib: add BUSYBOX prerequisite
224: ec883ee = 221: 74d4ef4 t0021: use Windows path when appropriate
225: 2dadb43 = 222: 4471a7a t5003: use binary file from t/lib-diff/
226: a0cdc75 = 223: 7e12c02 t5532: workaround for BusyBox on Windows
227: e53a418 = 224: a1fad28 t5605: special-case hardlink test for BusyBox-w32
228: ad63bf4 = 225: f47e268 t5813: allow for $PWD to be a Windows path
229: 06080f0 = 226: 6ca169d t9200: skip tests when $PWD contains a colon
232: 4d60df9 = 227: 1eec264 mingw: add a Makefile target to copy test artifacts
230: 56963d0 = 228: 9c9c1da mingw: kill child processes in a gentler way
231: d3d2f8e = 229: d9a4b91 mingw: do not call xutftowcs_path in mingw_mktemp
233: f0da0f3 = 230: 986684b mingw: really handle SIGINT
234: d1f6dc3 = 231: 18f6cc8 Partially un-revert "editor: save and reset terminal after calling EDITOR"
115: 3d07d44 = 232: 16ba674 Modify the Code of Conduct for Git for Windows
116: 7f6c6bb = 233: 4efcd53 CONTRIBUTING.md: add guide for first-time contributors
117: 84f8d28 = 234: 87de92c README.md: Add a Windows-specific preamble
118: 862fffb = 235: 5136963 Add an issue template
119: 1d4ef51 = 236: 9d3de24 Modify the GitHub Pull Request template (to reflect Git for Windows)
120: 1545bcb = 237: b65196e .github: Add configuration for the Sentiment Bot
113: 1084daa = 238: cd39e48 reset: reinstate support for the deprecated --stdin option
114: 86b55ea = 239: bd909f5 mingw: deprecate old-style runtime-prefix handling in interpolate_path()
122: ea0b08f = 240: d196ef3 Add a GitHub workflow to monitor component updates
121: 22cd55b = 241: 0c44887 Document how $HOME is set on Windows
123: 396169c = 242: 66ace5f SECURITY.md: document Git for Windows' policies
The only noteworthy change here is this:
The reason that these two commits were dropped without replacement is that the
dont-spawn-gzip-in-archive
patches were obsoleted byrs/archive-with-internal-gzip
.