forked from git/git
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
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.45.2 #4986
Merged
gitforwindowshelper
merged 363 commits into
git-for-windows:main
from
dscho:rebase-to-v2.45.2
Jun 3, 2024
Merged
Rebase to v2.45.2 #4986
gitforwindowshelper
merged 363 commits into
git-for-windows:main
from
dscho:rebase-to-v2.45.2
Jun 3, 2024
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
For Windows builds >= 15063 set $env:TERM to "xterm-256color" instead of "cygwin" because they have a more capable console system that supports this. Also set $env:COLORTERM="truecolor" if unset. $env:TERM is initialized so that ANSI colors in color.c work, see 29a3963 (Win32: patch Windows environment on startup, 2012-01-15). See git-for-windows#3629 regarding problems caused by always setting $env:TERM="cygwin". This is the same heuristic used by the Cygwin runtime. Signed-off-by: Rafael Kitover <[email protected]> Signed-off-by: Johannes Schindelin <[email protected]>
NtQueryObject under Wine can return a success but fill out no name. In those situations, Wine will set Buffer to NULL, and set result to the sizeof(OBJECT_NAME_INFORMATION). Running a command such as echo "$(git.exe --version 2>/dev/null)" will crash due to a NULL pointer dereference when the code attempts to null terminate the buffer, although, weirdly, removing the subshell or redirecting stdout to a file will not trigger the crash. Code has been added to also check Buffer and Length to ensure the check is as robust as possible due to the current behavior being fragile at best, and could potentially change in the future This code is based on the behavior of NtQueryObject under wine and reactos. Signed-off-by: Christopher Degawa <[email protected]>
This is another fall-out of the recent refactoring flurry. Signed-off-by: Johannes Schindelin <[email protected]>
This fixes the build after 7bc341e (git-compat-util: add a test balloon for C99 support, 2021-12-01). Signed-off-by: Johannes Schindelin <[email protected]>
This is now passed by default, ever since 6a8cbc4 (developer: enable pedantic by default, 2021-09-03). Signed-off-by: Johannes Schindelin <[email protected]>
Signed-off-by: Johannes Schindelin <[email protected]>
Atomic append on windows is only supported on local disk files, and it may cause errors in other situations, e.g. network file system. If that is the case, this config option should be used to turn atomic append off. Co-Authored-By: Johannes Schindelin <[email protected]> Signed-off-by: 孙卓识 <[email protected]> Signed-off-by: Johannes Schindelin <[email protected]>
From the documentation of said setting: This boolean will enable fsync() when writing object files. This is a total waste of time and effort on a filesystem that orders data writes properly, but can be useful for filesystems that do not use journalling (traditional UNIX filesystems) or that only journal metadata and not file contents (OS X’s HFS+, or Linux ext3 with "data=writeback"). The most common file system on Windows (NTFS) does not guarantee that order, therefore a sudden loss of power (or any other event causing an unclean shutdown) would cause corrupt files (i.e. files filled with NULs). Therefore we need to change the default. Note that the documentation makes it sound as if this causes really bad performance. In reality, writing loose objects is something that is done only rarely, and only a handful of files at a time. Signed-off-by: Johannes Schindelin <[email protected]>
Since ef8a6c6 (reftable: utility functions, 2021-10-07) we not only have a libreftable, but also a libreftable_test. Signed-off-by: Johannes Schindelin <[email protected]>
Visual Studio 2022 does not like that at all. Signed-off-by: Johannes Schindelin <[email protected]>
These refactorings are really gifts that keep on giving. Signed-off-by: Johannes Schindelin <[email protected]>
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 <[email protected]>
... so that we can test a MinGit backport in a private repository (with GitHub Actions, minutes and parallel jobs are limited way more than with Azure Pipelines in private repositories). In this commit, we reinstate the exact version of `azure-pipelines.yml` as 6081d38 (ci: retire the Azure Pipelines definition, 2020-04-11) deleted. Naturally, many adjustments are required to make it work again. Some of the changes are actually outside of that file (such as the `runs_on_pool` changes that are needed in the Azure Pipelines part of `ci/lib.sh`) and they were made in the commits leading up to this here commit. However, other adjustments are required in the `azure-pipelines.yml` file itself, and for ease of review (read: to build confidence in those changes) they will be made in subsequent, individual commits that explain the intent, context, implementation and justification like every good commit message should do. Signed-off-by: Johannes Schindelin <[email protected]>
This is a follow-up to 6c280b4 (ci: remove GETTEXT_POISON jobs, 2021-01-20) after reinstating the Azure Pipeline. Signed-off-by: Johannes Schindelin <[email protected]>
We have `ci/install-dependencies.sh` for that. Incidentally, this avoids the following error in the linux-* jobs: The following packages have unmet dependencies: git-email : Depends: git (< 1:2.25.1-.) but 1:2.35.1-0ppa1~ubuntu20.04.1 is to be installed Recommends: libemail-valid-perl but it is not going to be installed Signed-off-by: Johannes Schindelin <[email protected]>
We haven't used this feature in ages, we don't actually need to. Signed-off-by: Johannes Schindelin <[email protected]>
…imal-sdk The Azure Pipeline `git-sdk-64-minimal` was retired... Signed-off-by: Johannes Schindelin <[email protected]>
These many refactorings in Git sure are gifts that keep on giving. Signed-off-by: Johannes Schindelin <[email protected]>
This is inspired by d051ed7 (.github/workflows/main.yml: run static-analysis on bionic, 2021-02-08) and by ef46584 (ci: update 'static-analysis' to Ubuntu 22.04, 2022-08-23), adapted to the Azure Pipeline. When Azure Pipelines' build agents transitioned 'ubuntu-latest' from 18.04 to 20.04, it broke our `static-analysis` job, since Coccinelle was not madeavailable on Ubuntu focal (it is only available in the universe suite). This is not an issue with Ubuntu 22.04, but we will only know whether it is an issue with 24.04 when _that_ comes out. So let's play it safe and pin the `static_analysis` job to the latest Ubuntu version that we know to offer a working Coccinelle package. Signed-off-by: Taylor Blau <[email protected]> Signed-off-by: Junio C Hamano <[email protected]> Signed-off-by: Johannes Schindelin <[email protected]>
Whith Windows 2000, Microsoft introduced a flag to the PE header to mark executables as "terminal server aware". Windows terminal servers provide a redirected Windows directory and redirected registry hives when launching legacy applications without this flag set. Since we do not use any INI files in the Windows directory and don't write to the registry, we don't need this additional preparation. Telling the OS that we don't need this should provide slightly improved startup times in terminal server environments. When building for supported Windows Versions with MSVC the /TSAWARE linker flag is automatically set, but MinGW requires us to set the --tsaware flag manually. This partially addresses git-for-windows#3935. Signed-off-by: Matthias Aßhauer <[email protected]>
Add FileVersion, which is a required field As not all required fields were present, none were being included Fixes git-for-windows#4090 Signed-off-by: Kiel Hurley <[email protected]>
Newer compiler versions, like GCC 10 and Clang 12, have built-in functions for bswap32 and bswap64. This comes in handy, for example, when targeting CLANGARM64 on Windows, which would not be supported without this logic. Signed-off-by: Dennis Ameling <[email protected]>
CLANGARM64 is a relatively new MSYSTEM added by the MSYS2 team. In order to have Git build correctly for this platform, let's add some configuration for it to config.mak.uname. Signed-off-by: Dennis Ameling <[email protected]>
No GitHub-hosted ARM64 runners are available at the moment of writing, but folks can leverage self-hosted runners of this architecture. This CI pipeline comes in handy for forks of the git-for-windows/git project that have such runners available. The pipeline can be kicked off manually through a workflow_dispatch. Signed-off-by: Dennis Ameling <[email protected]>
In f9b7573 (repository: free fields before overwriting them, 2017-09-05), Git was taught to release memory before overwriting it, but 357a03e (repository.c: move env-related setup code back to environment.c, 2018-03-03) changed the code so that it would not _always_ be overwritten. As a consequence, the `commondir` attribute would point to already-free()d memory. This seems not to cause problems in core Git, but there are add-on patches in Git for Windows where the `commondir` attribute is subsequently used and causing invalid memory accesses e.g. in setups containing old-style submodules (i.e. the ones with a `.git` directory within theirs worktrees) that have `commondir` configured. This fixes git-for-windows#4083. Signed-off-by: Andrey Zabavnikov <[email protected]> Signed-off-by: Johannes Schindelin <[email protected]>
It is merely a historical wart that, say, `git-commit` exists in the `libexec/git-core/` directory, a tribute to the original idea to let Git be essentially a bunch of Unix shell scripts revolving around very few "plumbing" (AKA low-level) commands. Git has evolved a lot from there. These days, most of Git's functionality is contained within the `git` executable, in the form of "built-in" commands. To accommodate for scripts that use the "dashed" form of Git commands, even today, Git provides hard-links that make the `git` executable available as, say, `git-commit`, just in case that an old script has not been updated to invoke `git commit`. Those hard-links do not come cheap: they take about half a minute for every build of Git on Windows, they are mistaken for taking up huge amounts of space by some Windows Explorer versions that do not understand hard-links, and therefore many a "bug" report had to be addressed. The "dashed form" has been officially deprecated in Git version 1.5.4, which was released on February 2nd, 2008, i.e. a very long time ago. This deprecation was never finalized by skipping these hard-links, but we can start the process now, in Git for Windows. Signed-off-by: Johannes Schindelin <[email protected]>
Since Git v2.39.1, we are a bit more stringent in searching the PATH. In particular, we specifically require the `.exe` suffix. However, the `Repository>Explore Working Copy` command asks for `explorer.exe` to be found on the `PATH`, which _already_ has that suffix. Let's unstartle the PATH-finding logic about this scenario. This fixes git-for-windows#4356 Signed-off-by: Johannes Schindelin <[email protected]>
This compile-time option allows to ask Git to load libcurl dynamically at runtime. Together with a follow-up patch that optionally overrides the file name depending on the `http.sslBackend` setting, this kicks open the door for installing multiple libcurl flavors side by side, and load the one corresponding to the (runtime-)configured SSL/TLS backend. Signed-off-by: Johannes Schindelin <[email protected]>
This implements the Windows-specific support code, because everything is slightly different on Windows, even loading shared libraries. Note: I specifically do _not_ use the code from `compat/win32/lazyload.h` here because that code is optimized for loading individual functions from various system DLLs, while we specifically want to load _many_ functions from _one_ DLL here, and distinctly not a system DLL (we expect libcurl to be located outside `C:\Windows\system32`, something `INIT_PROC_ADDR` refuses to work with). Also, the `curl_easy_getinfo()`/`curl_easy_setopt()` functions are declared as vararg functions, which `lazyload.h` cannot handle. Finally, we are about to optionally override the exact file name that is to be loaded, which is a goal contrary to `lazyload.h`'s design. Signed-off-by: Johannes Schindelin <[email protected]>
The previous commits introduced a compile-time option to load libcurl lazily, but it uses the hard-coded name "libcurl-4.dll" (or equivalent on platforms other than Windows). To allow for installing multiple libcurl flavors side by side, where each supports one specific SSL/TLS backend, let's first look whether `libcurl-<backend>-4.dll` exists, and only use `libcurl-4.dll` as a fall back. That will allow us to ship with a libcurl by default that only supports the Secure Channel backend for the `https://` protocol. This libcurl won't suffer from any dependency problem when upgrading OpenSSL to a new major version (which will change the DLL name, and hence break every program and library that depends on it). This is crucial because Git for Windows relies on libcurl to keep working when building and deploying a new OpenSSL package because that library is used by `git fetch` and `git clone`. Note that this feature is by no means specific to Windows. On Ubuntu, for example, a `git` built using `LAZY_LOAD_LIBCURL` will use `libcurl.so.4` for `http.sslbackend=openssl` and `libcurl-gnutls.so.4` for `http.sslbackend=gnutls`. Signed-off-by: Johannes Schindelin <[email protected]>
…dvice clean: suggest using `core.longPaths` if paths are too long to remove
Signed-off-by: Johannes Schindelin <[email protected]>
This was pull request git-for-windows#1645 from ZCube/master Support windows container. Signed-off-by: Johannes Schindelin <[email protected]>
…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 <[email protected]>
Specify symlink type in .gitattributes
Signed-off-by: Johannes Schindelin <[email protected]>
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 <[email protected]>
Handle Ctrl+C in Git Bash nicely Signed-off-by: Johannes Schindelin <[email protected]>
Switch to batched fsync by default
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
…updates Start monitoring updates of Git for Windows' component in the open
Add a README.md for GitHub goodness. Signed-off-by: Johannes Schindelin <[email protected]>
Windows compiler suddenly started complaining that calloc(3) takes its arguments in <nmemb, size> order. Indeed, there are many calls that has their arguments in a _wrong_ order. Fix them all. A sample breakage can be seen at https://github.com/git/git/actions/runs/9046793153/job/24857988702#step:4:272 Signed-off-by: Junio C Hamano <[email protected]>
A long time ago, we decided to run tests in Git for Windows' SDK with the default `winsymlinks` mode: copying instead of linking. This is still the default mode of MSYS2 to this day. However, this is not how most users run Git for Windows: As the majority of Git for Windows' users seem to be on Windows 10 and newer, likely having enabled Developer Mode (which allows creating symbolic links without administrator privileges), they will run with symlink support enabled. This is the reason why it is crucial to get the fixes for CVE-2024-? to the users, and also why it is crucial to ensure that the test suite exercises the related test cases. This commit ensures the latter. Signed-off-by: Johannes Schindelin <[email protected]>
* jc/compat-regex-calloc-fix: compat/regex: fix argument order to calloc(3) This is a backport of 077c4e1 (Merge branch 'jc/compat-regex-calloc-fix' into next, 2024-05-13) to fix compile errors in Git for Windows' SDK since GCC was upgraded to v14.1.
The `__MINGW64__` constant is defined, surprise, surprise, only when building for a 64-bit CPU architecture. Therefore using it as a guard to define `_POSIX_C_SOURCE` (so that `localtime_r()` is declared, among other functions) is not enough, we also need to check `__MINGW32__`. Technically, the latter constant is defined even for 64-bit builds. But let's make things a bit easier to understand by testing for both constants. Making it so fixes this compile warning (turned error in GCC v14.1): archive-zip.c: In function 'dos_time': archive-zip.c:612:9: error: implicit declaration of function 'localtime_r'; did you mean 'localtime_s'? [-Wimplicit-function-declaration] 612 | localtime_r(&time, &tm); | ^~~~~~~~~~~ | localtime_s Signed-off-by: Johannes Schindelin <[email protected]>
The GCC v14.1 upgrade broke the build of `git-artifacts`. Partially, this has been fixed upstream already, but the i686 build requires a separate fix. This addresses git-for-windows#4953.
/git-artifacts The The |
/release-git |
/release The |
gitforwindowshelper
bot
merged commit Jun 3, 2024
91d03cb
into
git-for-windows:main
65 of 66 checks passed
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 origin/main
1: 580097b (upstream: 580097b) < -: ----------- http: reset POSTFIELDSIZE when clearing curl handle
2: ea61df9 (upstream: ea61df9) < -: ----------- INSTALL: bump libcurl version to 7.21.3
3: 5d312ec (upstream: 5d312ec) < -: ----------- remote-curl: add Transfer-Encoding header only for older curl
4: 6741e91 (upstream: 6741e91) < -: ----------- repository: avoid leaking
fsmonitor
data5: 3167b60 (upstream: 3167b60) < -: ----------- ci: upgrade to using macos-13
6: c67cf4c (upstream: c67cf4c) < -: ----------- test-lib: ignore uninteresting LSan output
7: cf5dcd8 (upstream: cf5dcd8) < -: ----------- ci(linux-asan/linux-ubsan): let's save some time
8: ce47f7c (upstream: ce47f7c) < -: ----------- GitHub Actions: update to checkout@v4
9: f6bed64 (upstream: f6bed64) < -: ----------- GitHub Actions: update to github-script@v7
10: 7e1bcc8 (upstream: 7e1bcc8) < -: ----------- ci: bump remaining outdated Actions versions
11: 213958f (upstream: 213958f) < -: ----------- ci(linux32): add a note about Actions that must not be updated
12: 150e6b0 (upstream: 150e6b0) < -: ----------- builtin/clone: stop resolving symlinks when copying files
13: d1bb66a (upstream: d1bb66a) < -: ----------- builtin/clone: abort when hardlinked source and target file differ
14: 8c9c051 (upstream: 8c9c051) < -: ----------- setup.c: introduce
die_upon_dubious_ownership()
15: 1204e1a (upstream: 1204e1a) < -: ----------- builtin/clone: refuse local clones of unsafe repositories
16: 5c5a4a1 (upstream: 5c5a4a1) < -: ----------- t0411: add tests for cloning from partial repo
17: f4aa8c8 (upstream: f4aa8c8) < -: ----------- fetch/clone: detect dubious ownership of local repositories
18: 7b70e9e (upstream: 7b70e9e) < -: ----------- upload-pack: disable lazy-fetching by default
19: e69ac42 (upstream: e69ac42) < -: ----------- docs: document security issues around untrusted .git dirs
20: c30a574 (upstream: c30a574) < -: ----------- has_dir_name(): do not get confused by characters < '/'
21: b20c10f (upstream: b20c10f) < -: ----------- t7423: add tests for symlinked submodule directories
22: 9cf8547 (upstream: 9cf8547) < -: ----------- clone: prevent clashing git dirs when cloning submodule in parallel
23: 9706576 (upstream: 9706576) < -: ----------- submodules: submodule paths must not contain symlinks
24: eafffd9 (upstream: eafffd9) < -: ----------- clone_submodule: avoid using
access()
on directories25: e8d0608 (upstream: e8d0608) < -: ----------- submodule: require the submodule path to contain directories only
26: e4930e8 (upstream: e4930e8) < -: ----------- t5510: verify that D/F confusion cannot lead to an RCE
27: 850c3a2 (upstream: 850c3a2) < -: ----------- entry: report more colliding paths
28: 31572dc (upstream: 31572dc) < -: ----------- clone: when symbolic links collide with directories, keep the latter
29: 48c171d (upstream: 48c171d) < -: ----------- find_hook(): refactor the
STRIP_EXTENSION
logic30: df93e40 (upstream: df93e40) < -: ----------- init: refactor the template directory discovery into its own function
31: 584de0b (upstream: 584de0b) < -: ----------- Add a helper function to compare file contents
32: 8db1e87 (upstream: 8db1e87) < -: ----------- clone: prevent hooks from running during a clone
33: 4412a04 (upstream: 4412a04) < -: ----------- init.templateDir: consider this config setting protected
34: 20f3588 (upstream: 20f3588) < -: ----------- core.hooksPath: add some protection while cloning
35: a33fea0 (upstream: a33fea0) < -: ----------- fsck: warn about symlink pointing inside a gitdir
36: 47b6d90 (upstream: 47b6d90) < -: ----------- Git 2.39.4
37: b9b439e (upstream: b9b439e) < -: ----------- Git 2.40.2
38: 0f15832 (upstream: 0f15832) < -: ----------- Git 2.41.1
39: babb4e5 (upstream: babb4e5) < -: ----------- Git 2.42.2
40: 1f2e64e (upstream: 1f2e64e) < -: ----------- Git 2.43.4
41: 10dc984 (upstream: 10dc984) < -: ----------- Git 2.44.1
42: 2c7b491 (upstream: 2c7b491) < -: ----------- Git 2.45.1
43: 5276fbd = 1: f589d8d gitk(Windows): avoid inadvertently calling executables in the worktree
44: d97c456 = 2: abb9d1a t9350: point out that refs are not updated correctly
45: 05c3992 = 3: 9b77b71 transport-helper: add trailing --
46: d693f34 = 4: 294de0e remote-helper: check helper status after import/export
49: 54d71a9 = 5: 0b5eed9 Always auto-gc after calling a fast-import transport
52: 028914d = 6: daedabf mingw: include the Python parts in the build
47: 5ae7516 = 7: 5cf4355 mingw: demonstrate a problem with certain absolute paths
48: 0d2e880 = 8: 47d6e2e clean: do not traverse mount points
53: 43e51ab = 9: a505fd6 win32/pthread: avoid name clashes with winpthread
50: fc3249a = 10: 382b72f mingw: allow absolute paths without drive prefix
51: 6b65a3e = 11: de80261 clean: remove mount points when possible
54: 46e08dd = 12: d21fef2 git-compat-util: avoid redeclaring _DEFAULT_SOURCE
55: 4607a50 = 13: 075ab9c Import the source code of mimalloc v2.1.2
56: 257ecbd = 14: 4b35ad1 mimalloc: adjust for building inside Git
57: b38e3c7 = 15: b884986 mimalloc: offer a build-time option to enable it
58: 71d3cbe = 16: 7c61188 mimalloc: use "weak" random seed when statically linked
59: dd44055 = 17: 31c3a61 mingw: use mimalloc
60: bc7c7f3 = 18: 0f34fe1 transport: optionally disable side-band-64k
61: df2cf51 = 19: 88a301a mingw: make sure
errno
is set correctly when socket operations fail69: a67f563 = 20: 7b39cb3 mingw: do resolve symlinks in
getcwd()
70: 5410eee = 21: 2b2dc89 mingw: fix fatal error working on mapped network drives on Windows
71: c95492e = 22: 8ee8d78 clink.pl: fix MSVC compile script to handle libcurl-d.lib
62: f9c6b81 = 23: 8fc00dd mingw: ensure valid CTYPE
63: f38b347 = 24: b434881 mingw: demonstrate a
git add
issue with NTFS junctions64: a2ce54e = 25: 8679d38 mingw: allow
git.exe
to be used instead of the "Git wrapper"65: 232bf46 = 26: c5562e3 strbuf_realpath(): use platform-dependent API if available
67: 216a997 = 27: 34e6478 mingw: ignore HOMEDRIVE/HOMEPATH if it points to Windows' system directory
68: bcf2561 = 28: 667361c http: use new "best effort" strategy for Secure Channel revoke checking
72: 9fe947d = 29: 416132f mingw: implement a platform-specific
strbuf_realpath()
66: 6ea53ea = 30: 5af8f39 vcxproj: unclash project directories with build outputs
73: 61d4f9d = 31: 1823346 t5505/t5516: allow running without
.git/branches/
in the templates74: 601c5b1 = 32: 7a45f6d t5505/t5516: fix white-space around redirectors
77: 6dbe175 = 33: 673f572 t3701: verify that we can add lots of files interactively
78: 7dce9b1 = 34: a730a97 git add -i: handle CR/LF line endings in the interactive input
79: c1677cc = 35: 9278f45 commit: accept "scissors" with CR/LF line endings
80: 53545fb = 36: d19e495 t0014: fix indentation
81: 02493cf = 37: aef280c git-gui: accommodate for intent-to-add files
75: 0911e23 = 38: db352d1 clink.pl: fix libexpatd.lib link error when using MSVC
76: 335a39c = 39: a973f57 Makefile: clean up .ilk files when MSVC=1
82: 75d5e8d = 40: fa9a0d1 vcbuild: add support for compiling Windows resource files
83: 1c4226f = 41: 830217b config.mak.uname: add git.rc to MSVC builds
84: 1c9f7b4 = 42: ddd2a24 clink.pl: ignore no-stack-protector arg on MSVC=1 builds
86: fbd9969 = 43: 8c32014 clink.pl: move default linker options for MSVC=1 builds
88: 7609cab = 44: 3e26a6c buildsystems: remove duplicate clause
90: 4dd6b90 = 45: 1cb4621 vcxproj: handle resource files, too
92: ce51cdb = 46: f8c572d vcxproj: ignore -fno-stack-protector and -fno-common
85: d1c8f82 = 47: fa1c483 vcpkg_install: detect lack of Git
94: 02152a6 = 48: 89bf9dc vcxproj: handle GUI programs, too
87: d93c7ce = 49: 4c34d18 vcpkg_install: add comment regarding slow network connections
96: 26c6223 = 50: ffc291a cmake: install headless-git.
89: 76472a0 = 51: 75ce41a vcxproj: support building Windows/ARM64 binaries
91: cf53b9c = 52: 91796ca vcbuild: install ARM64 dependencies when building ARM64 binaries
93: a02a742 = 53: 2100f36 vcbuild: add an option to install individual 'features'
95: 72fd5e0 = 54: 6d2ffb2 cmake: allow building for Windows/ARM64
97: f292807 = 55: b62bb95 ci(vs-build) also build Windows/ARM64 artifacts
98: 1774af6 = 56: fb6b9c1 Add schannel to curl installation
99: 5bdd4b0 = 57: 30fc06b cmake(): allow setting HOST_CPU for cross-compilation
100: 6b06589 = 58: 9f2bb4b subtree: update
contrib/subtree
test
target102: dbcd6cf = 59: 94a5123 ci(vs-build): download the vcpkg artifacts using a dedicated Action
103: f12e10a = 60: e5ca181 mingw: allow for longer paths in
parse_interpreter()
104: a4a63a8 = 61: cad1357 compat/vcbuild: document preferred way to build in Visual Studio
105: aa68c96 = 62: ffc4930 http: optionally send SSL client certificate
101: 2f8c6a1 = 63: 08399cc CMake: default Visual Studio generator has changed
111: fa9e370 = 64: 7da1dbd .gitignore: add Visual Studio CMakeSetting.json file
113: 0dcd834 = 65: 3c1c6b2 CMakeLists: add default "x64-windows" arch for Visual Studio
106: 615b16f = 66: 31aad70 ci: run
contrib/subtree
tests in CI builds116: 24ef53b = 67: cca9315 CMake: show Win32 and Generator_platform build-option values
117: b125917 = 68: e37ea80 init: do parse all core.* settings early
107: 33cf513 = 69: 958f330 hash-object: demonstrate a >4GB/LLP64 problem
108: 5514fd8 = 70: e335a51 write_object_file_literally(): use size_t
109: 3c64c59 = 71: aac4f01 object-file.c: use size_t for header lengths
110: af84a1b = 72: 41e7133 hash algorithms: use size_t for section lengths
112: 8179e09 = 73: 86e3fe3 hash-object --stdin: verify that it works with >4GB/LLP64
114: 3ae6576 = 74: 088db10 hash-object: add another >4GB/LLP64 test case
118: dffa475 = 75: 0508c6a Enable the built-in FSMonitor as an experimental feature
115: 5f4c34c = 76: 8afd3ea setup: properly use "%(prefix)/" when in WSL
119: e6fe01a = 77: 2763273 hash-object: add a >4GB/LLP64 test case using filtered input
126: 8f62760 = 78: 256cced compat/mingw.c: do not warn when failing to get owner
127: a4a3b06 = 79: ffdc0b6 mingw: $env:TERM="xterm-256color" for newer OSes
128: 172683b = 80: 29fbe6d winansi: check result and Buffer before using Name
120: 077d4b3 = 81: b440a2b vcxproj: allow building with
NO_PERL
again121: cb4ff22 = 82: 8aeadd0 vcxproj: require C11
122: 5ecabf7 = 83: 6d8873f vcxproj: ignore the
-pedantic
option124: c8aa77e = 84: 51a0924 Add config option
windows.appendAtomically
123: f73313e = 85: 58aed3c vcxproj: include reftable when committing
.vcxproj
files129: ceecfc2 = 86: 45dfdf1 mingw: change core.fsyncObjectFiles = 1 by default
125: f044ee6 = 87: 9dbe315 vcxproj: handle libreftable_test, too
130: 102fca6 = 88: 8f90c6f vcxproj: avoid escaping double quotes in the defines
131: 7bcb195 = 89: 83caa43 ci: adjust Azure Pipeline for
runs_on_pool
132: 2c0480f = 90: 08781b4 ci: stop linking the
prove
cache133: 0e16024 = 91: b0997e6 ci: reinstate Azure Pipelines support
134: 1578377 = 92: 9e056f2 azure-pipeline: drop the
GETTEXT_POISON
job135: 99c6f80 = 93: 3a249a9 azure-pipeline: stop hard-coding
apt-get
calls136: 3ee9fc6 = 94: 80412d9 azure-pipeline: drop the code to write to/read from a file share
137: 49ab7aa = 95: 6c9e236 azure-pipeline: use partial clone/parallel checkout to initialize minimal-sdk
138: dad4868 = 96: 92afbc0 azure-pipeline: downcase the job name of the
Linux32
job140: 31f297e = 97: ea13b95 bswap.h: add support for built-in bswap functions
139: 17d4b2b = 98: fa56bf7 MinGW: link as terminal server aware
141: a630dc6 = 99: e9152ac azure-pipeline: run static-analysis on jammy
142: 64f8cef = 100: 08f8722 Fix Windows version resources
145: 4b05bbc = 101: d7d0b29 config.mak.uname: add support for clangarm64
147: 6b0fd48 = 102: 1f5d277 ci: create clangarm64-build.yml
148: 180bbd6 = 103: 3a200f2 status: fix for old-style submodules with commondir
149: 9d086a7 = 104: bb6b77d windows: skip linking
git-<command>
for built-ins150: 503e55b = 105: c68b111 windows: fix Repository>Explore Working Copy
143: 47d00fd = 106: e2a86ce http: optionally load libcurl lazily
144: ba60d9a = 107: 3c74c0e http: support lazy-loading libcurl also on Windows
146: 164d76d = 108: b7f7f35 http: when loading libcurl lazily, allow for multiple SSL backends
151: 6f90446 = 109: 3a63706 mingw: do load libcurl dynamically by default
152: 85334a2 = 110: de8076b Add a GitHub workflow to verify that Git/Scalar work in Nano Server
153: ce46757 = 111: 6d4aac9 mingw: suggest
windows.appendAtomically
in more cases154: 6316eb2 ! 112: 0e12d73 win32: use native ANSI sequence processing, if possible
155: 0159466 = 113: 3fdb136 git.rc: include winuser.h
156: 0cf7a4b = 114: 80c092b build(deps): bump microsoft/setup-msbuild from 1 to 2
157: 2e97dd4 = 115: d31fe08 common-main.c: fflush stdout buffer upon exit
158: 5586a22 = 116: 0c4d990 Win32: make FILETIME conversion functions public
159: 306c076 = 117: 2a43ceb Win32: dirent.c: Move opendir down
160: d9f03ee = 118: ca8ae34 mingw: make the dirent implementation pluggable
161: 54146a0 = 119: bf09e51 Win32: make the lstat implementation pluggable
162: 248dfb6 = 120: 988ea3c mingw: add infrastructure for read-only file system level caches
163: 81efcfc = 121: 5c7439c mingw: add a cache below mingw's lstat and dirent implementations
164: a531c79 = 122: 24d9b52 fscache: load directories only once
165: d312984 = 123: 50007cd fscache: add key for GIT_TRACE_FSCACHE
166: 6f0af43 = 124: c4eaf36 fscache: remember not-found directories
167: f323654 = 125: 392749f fscache: add a test for the dir-not-found optimization
168: 539b80e = 126: 410acbf add: use preload-index and fscache for performance
169: 207b270 = 127: 3cfd9e2 dir.c: make add_excludes aware of fscache during status
170: 5179c43 = 128: b278999 fscache: make fscache_enabled() public
171: a360904 = 129: b7d5acc dir.c: regression fix for add_excludes with fscache
172: 6a2d489 = 130: 527bd69 fetch-pack.c: enable fscache for stats under .git/objects
173: 9e0d3fa = 131: a7255cf checkout.c: enable fscache for checkout again
174: 801c398 = 132: 4dd09d1 Enable the filesystem cache (fscache) in refresh_index().
175: 5f72280 = 133: 4a9f7dc fscache: use FindFirstFileExW to avoid retrieving the short name
176: 8fd2f5d = 134: b063006 status: disable and free fscache at the end of the status command
177: 042b3f7 = 135: a028a14 fscache: add GIT_TEST_FSCACHE support
178: 0ffd8c0 = 136: 7686bc6 fscache: add fscache hit statistics
179: 46d9644 = 137: 38b2842 mem_pool: add GIT_TRACE_MEMPOOL support
180: a3d9d4d = 138: 18795f2 fscache: fscache takes an initial size
181: 8d38d6d = 139: b4d0059 fscache: update fscache to be thread specific instead of global
182: 39c3a1b = 140: 4dc702e fscache: teach fscache to use mempool
183: 9587296 = 141: 67f924c fscache: make fscache_enable() thread safe
184: a0ad9ad = 142: 7060ba9 fscache: teach fscache to use NtQueryDirectoryFile
185: c304a06 = 143: 6fb2cde unpack-trees: enable fscache for sparse-checkout
186: 15ec12b = 144: c538ddf fscache: remember the reparse tag for each entry
189: cf6610f = 145: ae4fc8e git-gui: provide question helper for retry fallback on Windows
187: c05be06 = 146: 45a8200 fscache: implement an FSCache-aware is_mount_point()
190: d64195b = 147: ea7033f git gui: set GIT_ASKPASS=git-gui--askpass if not set yet
188: ff96fbf = 148: 51a7b4d clean: make use of FSCache
191: 26b21dc = 149: 6e3ad03 gitk: Unicode file name support
192: 66a208e = 150: 36fb936 git-gui--askyesno: fix funny text wrapping
193: 265146e = 151: 4d1ddf3 gitk: Use an external icon file on Windows
194: 2f2809d = 152: 9935b4a git-gui--askyesno: allow overriding the window title
195: bb84157 = 153: a35c841 gitk: fix arrow keys in input fields with Tcl/Tk >= 8.6
196: 5290dbf = 154: 849a213 git-gui--askyesno (mingw): use Git for Windows' icon, if available
197: 1a677a2 = 155: ad47ade gitk: make the "list references" default window width wider
198: 82d4781 = 156: 08a4b33 pack-objects (mingw): demonstrate a segmentation fault with large deltas
199: 5e395c8 = 157: e4cccd1 mingw: support long paths
200: 347dbbe = 158: 5dd339c Win32: fix 'lstat("dir/")' with long paths
201: 617101a = 159: 8af3c63 win32(long path support): leave drive-less absolute paths intact
202: d9f0035 = 160: 7429b6a compat/fsmonitor/fsm-*-win32: support long paths
203: 2722ab8 = 161: 2caadef clean: suggest using
core.longPaths
if paths are too long to remove204: a1b71bc = 162: 9185194 mingw: Support
git_terminal_prompt
with more terminals205: 166fb9b = 163: fc1bece compat/terminal.c: only use the Windows console if bash 'read -r' fails
206: ebe6522 = 164: e005fb8 mingw (git_terminal_prompt): do fall back to CONIN$/CONOUT$ method
207: e0e8441 = 165: ba2744c Unbreak interactive GPG prompt upon signing
208: 0d4cf3a = 166: 1bb4f92 strbuf_readlink: don't call readlink twice if hint is the exact link size
209: 2f9887e = 167: a0f945b strbuf_readlink: support link targets that exceed PATH_MAX
210: 2432596 = 168: 9819207 lockfile.c: use is_dir_sep() instead of hardcoded '/' checks
211: 3496501 = 169: 211bead Win32: don't call GetFileAttributes twice in mingw_lstat()
212: f3c58ef = 170: 713ddea Win32: implement stat() with symlink support
213: b0980d8 = 171: deccb41 Win32: remove separate do_lstat() function
214: fbc7290 = 172: d42a196 Win32: let mingw_lstat() error early upon problems with reparse points
215: 253f132 = 173: 57875ce mingw: teach fscache and dirent about symlinks
216: a4951f7 = 174: d21f319 Win32: lstat(): return adequate stat.st_size for symlinks
217: 3bbd6ca = 175: 1bb95f4 Win32: factor out retry logic
218: 7cc8344 = 176: c541060 Win32: change default of 'core.symlinks' to false
219: edd443d = 177: 36a53db Win32: add symlink-specific error codes
220: ed95126 = 178: 8af0aae Win32: mingw_unlink: support symlinks to directories
221: 32182bf = 179: 76a29eb Win32: mingw_rename: support renaming symlinks
222: f6573ff = 180: 3eef8c8 Win32: mingw_chdir: change to symlink-resolved directory
223: e1f86a6 = 181: 614116c Win32: implement readlink()
224: 37a28f9 = 182: 9135f9b mingw: lstat: compute correct size for symlinks
225: 330f307 = 183: 36de7f5 Win32: implement basic symlink() functionality (file symlinks only)
226: f62ecde = 184: b6ae9a1 Win32: symlink: add support for symlinks to directories
227: 4d22fbd = 185: 2dc52fa mingw: try to create symlinks without elevated permissions
228: f5ce689 = 186: 162d9ba mingw: emulate stat() a little more faithfully
229: 5eae016 = 187: 9e7788a mingw: special-case index entries for symlinks with buggy size
230: 1974e65 = 188: ecb012a mingw: introduce code to detect whether we're inside a Windows container
231: bb0b148 = 189: 8782e01 mingw: when running in a Windows container, try to rename() harder
232: 9a68c82 = 190: 1c116c6 mingw: move the file_attr_to_st_mode() function definition
233: e7ee57c = 191: f265297 mingw: Windows Docker volumes are not symbolic links
235: 99a95d8 = 192: 0d387c8 Win32: symlink: move phantom symlink creation to a separate function
236: f3bf009 = 193: 53b0ad0 Introduce helper to create symlinks that knows about index_state
237: 4fb4264 = 194: 310f4b7 mingw: allow to specify the symlink type in .gitattributes
238: b455eb7 = 195: ee6a445 Win32: symlink: add test for
symlink
attribute234: fe337e8 = 196: 0e9b96f mingw: work around rename() failing on a read-only file
239: 8f79b6d = 197: e804203 mingw: explicitly specify with which cmd to prefix the cmdline
240: 36d6185 = 198: d59aca0 mingw: when path_lookup() failed, try BusyBox
241: 12528d9 = 199: 6c343f9 test-lib: avoid unnecessary Perl invocation
242: 597416d = 200: faeaf41 test-tool: learn to act as a drop-in replacement for
iconv
243: 4a6bb05 = 201: af2e8f8 tests(mingw): if
iconv
is unavailable, usetest-helper --iconv
244: 8a2bcfe = 202: bd96a5c gitattributes: mark .png files as binary
245: b294f6f = 203: ca44def tests: move test PNGs into t/lib-diff/
246: a20a507 = 204: 77cafa7 tests: only override sort & find if there are usable ones in /usr/bin/
247: 16cef01 = 205: 1885bf8 tests: use the correct path separator with BusyBox
248: b5d2f7d = 206: c32fa77 mingw: only use Bash-ism
builtin pwd -W
when available249: 7230dc0 = 207: ca7b4a6 tests (mingw): remove Bash-specific pwd option
250: ee6dd97 = 208: 4db4c85 test-lib: add BUSYBOX prerequisite
251: 4aa5a27 = 209: b12d52b t5003: use binary file from t/lib-diff/
252: 5803764 = 210: 7d531d5 t5532: workaround for BusyBox on Windows
253: af8ef67 = 211: 380d54b t5605: special-case hardlink test for BusyBox-w32
254: 65de7eb = 212: cc94578 t5813: allow for $PWD to be a Windows path
255: 055c478 = 213: eb7ee49 t9200: skip tests when $PWD contains a colon
256: ce079ef = 214: 6609cf0 mingw: add a Makefile target to copy test artifacts
258: c8771b7 = 215: 42300f0 mingw: optionally enable wsl compability file mode bits
257: cafdf5e = 216: 423488e mingw: kill child processes in a gentler way
259: 7c15ab7 = 217: 6e750cd mingw: do not call xutftowcs_path in mingw_mktemp
262: 7594c18 = 218: 9b77bf3 mingw: really handle SIGINT
263: ecfdabf = 219: 82031c0 Partially un-revert "editor: save and reset terminal after calling EDITOR"
260: 661f368 ! 220: 4987066 Add a GitHub workflow to monitor component updates
264: ccf6426 = 221: b36f9e9 reset: reinstate support for the deprecated --stdin option
265: 82a3f2b = 222: 7a8147e fsmonitor: reintroduce core.useBuiltinFSMonitor
266: 7d7e45d = 223: 7d09408 dependabot: help keeping GitHub Actions versions up to date
261: 36c237d = 224: cc6b49d Describe Git for Windows' architecture [no ci]
267: c4a3fe5 < -: ----------- Modify the Code of Conduct for Git for Windows
277: 5b12899 ! 225: a4a7bce fixup! Modify the Code of Conduct for Git for Windows
268: b6701cf = 226: 23ef491 CONTRIBUTING.md: add guide for first-time contributors
269: da4dd24 ! 227: 4b77f03 README.md: Add a Windows-specific preamble
@@ README.md +Git for Windows +=============== + ++[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md) +[![Open in Visual Studio Code](https://img.shields.io/static/v1?logo=visualstudiocode&label=&message=Open%20in%20Visual%20Studio%20Code&labelColor=2c2c32&color=007acc&logoColor=007acc)](https://open.vscode.dev/git-for-windows/git) +[![Build status](https://github.com/git-for-windows/git/workflows/CI/badge.svg)](https://github.com/git-for-windows/git/actions?query=branch%3Amain+event%3Apush) +[![Join the chat at https://gitter.im/git-for-windows/git](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/git-for-windows/git?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
270: 3211a4a = 228: 19c7432 Add an issue template
271: 699b7cf = 229: 93306bf Modify the GitHub Pull Request template (to reflect Git for Windows)
272: 187e8d0 = 230: d723dac .github: Add configuration for the Sentiment Bot
273: f391ab7 = 231: 07098b4 Document how $HOME is set on Windows
274: 7d8f06c = 232: ce0413b SECURITY.md: document Git for Windows' policies
279: f01301a = 233: 855e15c compat/regex: fix argument order to calloc(3)
275: 965b167 = 234: 7f8c443 t5601/t7406(mingw): do run tests with symlink support
276: 6c80dd2 < -: ----------- amend! Modify the Code of Conduct for Git for Windows
278: 7b47393 < -: ----------- fixup! README.md: Add a Windows-specific preamble
280: 68af6e0 = 235: a74a04f win32: ensure that
localtime_r()
is declared even in i686 builds281: 45506bb < -: ----------- amend! win32: use native ANSI sequence processing, if possible
282: 5af092e < -: ----------- fixup! Add a GitHub workflow to monitor component updates