-
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.48.0 rc2 #5348
base: main
Are you sure you want to change the base?
Rebase to v2.48.0 rc2 #5348
Conversation
Add some tests based on the current behavior, doing interesting checks for different sets of branches, ranges, and the --boundary option. This sets a baseline for the behavior and we can extend it as new options are introduced. Signed-off-by: Derrick Stolee <[email protected]>
We add the ability to filter the object types in the path-walk API so the callback function is called fewer times. This adds the ability to ask for the commits in a list, as well. Future changes will add the ability to visit annotated tags. Signed-off-by: Derrick Stolee <[email protected]>
In anticipation of using the path-walk API to analyze tags or include them in a pack-file, add the ability to walk the tags that were included in the revision walk. Signed-off-by: Derrick Stolee <[email protected]>
The sparse tree walk algorithm was created in d5d2e93 (revision: implement sparse algorithm, 2019-01-16) and involves using the mark_trees_uninteresting_sparse() method. This method takes a repository and an oidset of tree IDs, some of which have the UNINTERESTING flag and some of which do not. Create a method that has an equivalent set of preconditions but uses a "dense" walk (recursively visits all reachable trees, as long as they have not previously been marked UNINTERESTING). This is an important difference from mark_tree_uninteresting(), which short-circuits if the given tree has the UNINTERESTING flag. A use of this method will be added in a later change, with a condition set whether the sparse or dense approach should be used. Signed-off-by: Derrick Stolee <[email protected]>
This option causes the path-walk API to act like the sparse tree-walk algorithm implemented by mark_trees_uninteresting_sparse() in list-objects.c. Starting from the commits marked as UNINTERESTING, their root trees and all objects reachable from those trees are UNINTERSTING, at least as we walk path-by-path. When we reach a path where all objects associated with that path are marked UNINTERESTING, then do no continue walking the children of that path. We need to be careful to pass the UNINTERESTING flag in a deep way on the UNINTERESTING objects before we start the path-walk, or else the depth-first search for the path-walk API may accidentally report some objects as interesting. Signed-off-by: Derrick Stolee <[email protected]>
This will be helpful in a future change. Signed-off-by: Derrick Stolee <[email protected]>
In order to more easily compute delta bases among objects that appear at the exact same path, add a --path-walk option to 'git pack-objects'. This option will use the path-walk API instead of the object walk given by the revision machinery. Since objects will be provided in batches representing a common path, those objects can be tested for delta bases immediately instead of waiting for a sort of the full object list by name-hash. This has multiple benefits, including avoiding collisions by name-hash. The objects marked as UNINTERESTING are included in these batches, so we are guaranteeing some locality to find good delta bases. After the individual passes are done on a per-path basis, the default name-hash is used to find other opportunistic delta bases that did not match exactly by the full path name. RFC TODO: It is important to note that this option is inherently incompatible with using a bitmap index. This walk probably also does not work with other advanced features, such as delta islands. Getting ahead of myself, this option compares well with --full-name-hash when the packfile is large enough, but also performs at least as well as the default in all cases that I've seen. RFC TODO: this should probably be recording the batch locations to another list so they could be processed in a second phase using threads. RFC TODO: list some examples of how this outperforms previous pack-objects strategies. (This is coming in later commits that include performance test changes.) Signed-off-by: Derrick Stolee <[email protected]>
There are many tests that validate whether 'git pack-objects' works as expected. Instead of duplicating these tests, add a new test environment variable, GIT_TEST_PACK_PATH_WALK, that implies --path-walk by default when specified. This was useful in testing the implementation of the --path-walk implementation, especially in conjunction with test such as: - t0411-clone-from-partial.sh : One test fetches from a repo that does not have the boundary objects. This causes the path-based walk to fail. Disable the variable for this test. - t5306-pack-nobase.sh : Similar to t0411, one test fetches from a repo without a boundary object. - t5310-pack-bitmaps.sh : One test compares the case when packing with bitmaps to the case when packing without them. Since we disable the test variable when writing bitmaps, this causes a difference in the object list (the --path-walk option adds an extra object). Specify --no-path-walk in both processes for the comparison. Another test checks for a specific delta base, but when computing dynamically without using bitmaps, the base object it too small to be considered in the delta calculations so no base is used. - t5316-pack-delta-depth.sh : This script cares about certain delta choices and their chain lengths. The --path-walk option changes how these chains are selected, and thus changes the results of this test. - t5322-pack-objects-sparse.sh : This demonstrates the effectiveness of the --sparse option and how it combines with --path-walk. - t5332-multi-pack-reuse.sh : This test verifies that the preferred pack is used for delta reuse when possible. The --path-walk option is not currently aware of the preferred pack at all, so finds a different delta base. - t7406-submodule-update.sh : When using the variable, the --depth option collides with the --path-walk feature, resulting in a warning message. Disable the variable so this warning does not appear. I want to call out one specific test change that is only temporary: - t5530-upload-pack-error.sh : One test cares specifically about an "unable to read" error message. Since the current implementation performs delta calculations within the path-walk API callback, a different "unable to get size" error message appears. When this is changed in a future refactoring, this test change can be reverted. Signed-off-by: Derrick Stolee <[email protected]>
Since 'git pack-objects' supports a --path-walk option, allow passing it through in 'git repack'. This presents interesting testing opportunities for comparing the different repacking strategies against each other. Add the --path-walk option to the performance tests in p5313. For the microsoft/fluentui repo [1] checked out at a specific commit [2], the results are very interesting: Test this tree ------------------------------------------------------------------ 5313.2: thin pack 0.40(0.47+0.04) 5313.3: thin pack size 1.2M 5313.4: thin pack with --full-name-hash 0.09(0.10+0.04) 5313.5: thin pack size with --full-name-hash 22.8K 5313.6: thin pack with --path-walk 0.08(0.06+0.02) 5313.7: thin pack size with --path-walk 20.8K 5313.8: big pack 2.16(8.43+0.23) 5313.9: big pack size 17.7M 5313.10: big pack with --full-name-hash 1.42(3.06+0.21) 5313.11: big pack size with --full-name-hash 18.0M 5313.12: big pack with --path-walk 2.21(8.39+0.24) 5313.13: big pack size with --path-walk 17.8M 5313.14: repack 98.05(662.37+2.64) 5313.15: repack size 449.1K 5313.16: repack with --full-name-hash 33.95(129.44+2.63) 5313.17: repack size with --full-name-hash 182.9K 5313.18: repack with --path-walk 106.21(121.58+0.82) 5313.19: repack size with --path-walk 159.6K [1] https://github.com/microsoft/fluentui [2] e70848ebac1cd720875bccaa3026f4a9ed700e08 This repo suffers from having a lot of paths that collide in the name hash, so examining them in groups by path leads to better deltas. Also, in this case, the single-threaded implementation is competitive with the full repack. This is saving time diffing files that have significant differences from each other. A similar, but private, repo has even more extremes in the thin packs: Test this tree -------------------------------------------------------------- 5313.2: thin pack 2.39(2.91+0.10) 5313.3: thin pack size 4.5M 5313.4: thin pack with --full-name-hash 0.29(0.47+0.12) 5313.5: thin pack size with --full-name-hash 15.5K 5313.6: thin pack with --path-walk 0.35(0.31+0.04) 5313.7: thin pack size with --path-walk 14.2K Notice, however, that while the --full-name-hash version is working quite well in these cases for the thin pack, it does poorly for some other standard cases, such as this test on the Linux kernel repository: Test this tree -------------------------------------------------------------- 5313.2: thin pack 0.01(0.00+0.00) 5313.3: thin pack size 310 5313.4: thin pack with --full-name-hash 0.00(0.00+0.00) 5313.5: thin pack size with --full-name-hash 1.4K 5313.6: thin pack with --path-walk 0.00(0.00+0.00) 5313.7: thin pack size with --path-walk 310 Here, the --full-name-hash option does much worse than the default name hash, but the path-walk option does exactly as well. Signed-off-by: Derrick Stolee <[email protected]>
Users may want to enable the --path-walk option for 'git pack-objects' by default, especially underneath commands like 'git push' or 'git repack'. This should be limited to client repositories, since the --path-walk option disables bitmap walks, so would be bad to include in Git servers when serving fetches and clones. There is potential that it may be helpful to consider when repacking the repository, to take advantage of improved deltas across historical versions of the same files. Much like how "pack.useSparse" was introduced and included in "feature.experimental" before being enabled by default, use the repository settings infrastructure to make the new "pack.usePathWalk" config enabled by "feature.experimental" and "feature.manyFiles". Signed-off-by: Derrick Stolee <[email protected]>
Repositories registered with Scalar are expected to be client-only repositories that are rather large. This means that they are more likely to be good candidates for using the --path-walk option when running 'git pack-objects', especially under the hood of 'git push'. Enable this config in Scalar repositories. Signed-off-by: Derrick Stolee <[email protected]>
Previously, the --path-walk option to 'git pack-objects' would compute deltas inline with the path-walk logic. This would make the progress indicator look like it is taking a long time to enumerate objects, and then very quickly computed deltas. Instead of computing deltas on each region of objects organized by tree, store a list of regions corresponding to these groups. These can later be pulled from the list for delta compression before doing the "global" delta search. This presents a new progress indicator that can be used in tests to verify that this stage is happening. The current implementation is not integrated with threads, but could be done in a future update. Since we do not attempt to sort objects by size until after exploring all trees, we can remove the previous change to t5530 due to a different error message appearing first. Signed-off-by: Derrick Stolee <[email protected]>
Adapting the implementation of ll_find_deltas(), create a threaded version of the --path-walk compression step in 'git pack-objects'. This involves adding a 'regions' member to the thread_params struct, allowing each thread to own a section of paths. We can simplify the way jobs are split because there is no value in extending the batch based on name-hash the way sections of the object entry array are attempted to be grouped. We re-use the 'list_size' and 'remaining' items for the purpose of borrowing work in progress from other "victim" threads when a thread has finished its batch of work more quickly. Using the Git repository as a test repo, the p5313 performance test shows that the resulting size of the repo is the same, but the threaded implementation gives gains of varying degrees depending on the number of objects being packed. (This was tested on a 16-core machine.) Test HEAD~1 HEAD ------------------------------------------------------------- 5313.6: thin pack with --path-walk 0.01 0.01 +0.0% 5313.7: thin pack size with --path-walk 475 475 +0.0% 5313.12: big pack with --path-walk 1.99 1.87 -6.0% 5313.13: big pack size with --path-walk 14.4M 14.3M -0.4% 5313.18: repack with --path-walk 98.14 41.46 -57.8% 5313.19: repack size with --path-walk 197.2M 197.3M +0.0% Signed-off-by: Derrick Stolee <[email protected]>
When adding tree objects, we are very careful to avoid adding the same tree object more than once. There was one small gap in that logic, though: when adding a root tree object. Two refs can easily share the same root tree object, and we should still not add it more than once. Signed-off-by: Johannes Schindelin <[email protected]>
This topic branch extends the protections introduced for Git GUI's CVE-2022-41953 to cover `gitk`, too. Signed-off-by: Johannes Schindelin <[email protected]>
These fixes were necessary for Sverre Rabbelier's remote-hg to work, but for some magic reason they are not necessary for the current remote-hg. Makes you wonder how that one gets away with it. Signed-off-by: Johannes Schindelin <[email protected]>
This topic branch allows us to specify absolute paths without the drive prefix e.g. when cloning. Example: C:\Users\me> git clone https://github.com/git/git \upstream-git This will clone into a new directory C:\upstream-git, in line with how Windows interprets absolute paths. Signed-off-by: Johannes Schindelin <[email protected]>
This topic branch teaches `git clean` to respect NTFS junctions and Unix bind mounts: it will now stop at those boundaries. Signed-off-by: Johannes Schindelin <[email protected]>
In MSYS2, we have two Python interpreters at our disposal, so we can include the Python stuff in the build. Signed-off-by: Johannes Schindelin <[email protected]>
6e98293
to
6fc8ad7
Compare
Oy. I had rebased to -rc0. Range-diff relative to -rc1
|
the win test failures look weird.
Why do they seemingly all test reftable basics? |
That's because the unit tests are not sharded between the matrix jobs. They are simply run in all of them.
That means that the executable (or, crucially, a DLL needed by that executable) is not found. Another curiosity is that it does work in |
The reason is that we're not using |
As indicated by the `#undef malloc` line in `reftable/basics.h`, it is quite common to compile in allocators other than the default one by defining `malloc` constants and friends. This pattern is used e.g. in Git for Windows, which uses the powerful and performant `mimalloc` allocator. Furthermore, in `reftable/basics.c` this `#undef malloc` is _specifically_ disabled by virtue of defining the `REFTABLE_ALLOW_BANNED_ALLOCATORS` constant before including `reftable/basic.h`. However, in 8db127d (reftable: avoid leaks on realloc error, 2024-12-28) and in 2cca185 (reftable: fix allocation count on realloc error, 2024-12-28), `reftable_set_alloc()` function calls were introduced that pass `malloc`, `realloc` and `free` function pointers as parameters _after_ `reftable/basics.h` ensured that they were no longer `#define`d. This causes problems because those calls happen after the initial allocator has already been used to initialize an array, which is subsequently resized using the overridden default `realloc()` allocator. You cannot mix and match allocators like that, which leads to a `STATUS_HEAP_CORRUPTION` (C0000374), and when running this unit test through shell and/or `prove` (which only support 7-bit status codes), it surfaces as exit code 127. It is totally unnecessary to pass those function pointers to `malloc`/`realloc`/`free` in, though: The `reftable` code goes out of its way to fall back to the initial allocator when passing `NULL` parameters instead. So let's do that instead of causing heap corruptions. Signed-off-by: Johannes Schindelin <[email protected]>
Start work on a new 'git survey' command to scan the repository for monorepo performance and scaling problems. The goal is to measure the various known "dimensions of scale" and serve as a foundation for adding additional measurements as we learn more about Git monorepo scaling problems. The initial goal is to complement the scanning and analysis performed by the GO-based 'git-sizer' (https://github.com/github/git-sizer) tool. It is hoped that by creating a builtin command, we may be able to take advantage of internal Git data structures and code that is not accessible from GO to gain further insight into potential scaling problems. Co-authored-by: Derrick Stolee <[email protected]> Signed-off-by: Jeff Hostetler <[email protected]> Signed-off-by: Derrick Stolee <[email protected]>
Getting started contributing to Git can be difficult on a Windows machine. CONTRIBUTING.md contains a guide to getting started, including detailed steps for setting up build tools, running tests, and submitting patches to upstream. [includes an example by Pratik Karki how to submit v2, v3, v4, etc.] Signed-off-by: Derrick Stolee <[email protected]>
Includes touch-ups by 마누엘, Philip Oakley and 孙卓识. Signed-off-by: Johannes Schindelin <[email protected]>
With improvements by Clive Chan, Adric Norris, Ben Bodenmiller and Philip Oakley. Helped-by: Clive Chan <[email protected]> Helped-by: Adric Norris <[email protected]> Helped-by: Ben Bodenmiller <[email protected]> Helped-by: Philip Oakley <[email protected]> Signed-off-by: Brendan Forster <[email protected]> Signed-off-by: Johannes Schindelin <[email protected]>
These are Git for Windows' Git GUI and gitk patches. We will have to decide at some point what to do about them, but that's a little lower priority (as Git GUI seems to be unmaintained for the time being, and the gitk maintainer keeps a very low profile on the Git mailing list, too). Signed-off-by: Johannes Schindelin <[email protected]>
Git for Windows accepts pull requests; Core Git does not. Therefore we need to adjust the template (because it only matches core Git's project management style, not ours). Also: direct Git for Windows enhancements to their contributions page, space out the text for easy reading, and clarify that the mailing list is plain text, not HTML. Signed-off-by: Philip Oakley <[email protected]> Signed-off-by: Johannes Schindelin <[email protected]>
This is the recommended way on GitHub to describe policies revolving around security issues and about supported versions. Helped-by: Sven Strickroth <[email protected]> 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]>
We map WSAGetLastError() errors to errno errors in winsock_error_to_errno(), but the MSVC strerror() implementation only produces "Unknown error" for most of them. Produce some more meaningful error messages in these cases. Our builds for ARM64 link against the newer UCRT strerror() that does know these errors, so we won't change the strerror() used there. The wording of the messages is copied from glibc strerror() messages. Reported-by: M Hickford <[email protected]> Signed-off-by: Matthias Aßhauer <[email protected]> Signed-off-by: Johannes Schindelin <[email protected]>
The part about keeping the original error number hasn't been accurate since commit c11f75c (mingw: make sure errno is set correctly when socket operations fail, 2019-11-25) and the part about strerror() not knowing about these errors is untrue since the previous commit. Signed-off-by: Matthias Aßhauer <[email protected]> Signed-off-by: Johannes Schindelin <[email protected]>
Commit 2406bf5 (Win32: detect unix socket support at runtime, 2024-04-03) introduced a runtime detection for whether the operating system supports unix sockets for Windows, but a mistake snuck into the tests. When building and testing Git without NO_UNIX_SOCKETS we currently skip t0301-credential-cache on Windows if unix sockets are supported and run the tests if they aren't. Flip that logic to actually work the way it was intended. Signed-off-by: Matthias Aßhauer <[email protected]> Signed-off-by: Johannes Schindelin <[email protected]>
…updates Start monitoring updates of Git for Windows' component in the open
In 245670c (credential-cache: check for windows specific errors, 2021-09-14) we concluded that on Windows we would always encounter ENETDOWN where we would expect ECONNREFUSED on POSIX systems, when connecting to unix sockets. As reported in [1], we do encounter ECONNREFUSED on Windows if the socket file doesn't exist, but the containing directory does and ENETDOWN if neither exists. We should handle this case like we do on non-windows systems. [1] git-for-windows#4762 (comment) This fixes git-for-windows#5314 Helped-by: M Hickford <[email protected]> Signed-off-by: Matthias Aßhauer <[email protected]> Signed-off-by: Johannes Schindelin <[email protected]>
Add a README.md for GitHub goodness. Signed-off-by: Johannes Schindelin <[email protected]>
I should probably add some tests for this.
6fc8ad7
to
783fac4
Compare
Range-diff relative to the pre-force-push iteration
|
This closes #5346.
Range-diff relative to -rc1
8: 3cc3ffa = 1: 22ef58c mingw: include the Python parts in the build
1: 11bb5b8 = 2: dec23a5 t9350: point out that refs are not updated correctly
9: 3f1a73b = 3: f39ddfd win32/pthread: avoid name clashes with winpthread
2: aec753c ! 4: 50f0a12 transport-helper: add trailing --
10: 3f05b3b ! 5: 36342eb git-compat-util: avoid redeclaring _DEFAULT_SOURCE
3: 31e1af5 = 6: 8da7d7c remote-helper: check helper status after import/export
5: 78f66b0 = 7: 8cfd03a mingw: demonstrate a problem with certain absolute paths
124: 06e0112 = 8: 8a1d3c0 clean: do not traverse mount points
11: 560d0d4 = 9: f7fd91e Import the source code of mimalloc v2.1.2
4: 5a897de = 10: 8049442 gitk(Windows): avoid inadvertently calling executables in the worktree
6: df3998b = 11: 773fbcf Always auto-gc after calling a fast-import transport
7: 87d4cfb = 12: 8aab862 mingw: allow absolute paths without drive prefix
125: 7dbe561 = 13: 7b7b1fc clean: remove mount points when possible
12: 6dd92ca = 14: 5d9ba62 mimalloc: adjust for building inside Git
13: febf841 = 15: 73bb991 mimalloc: offer a build-time option to enable it
16: 9d275a0 = 16: e6b75ae mingw: demonstrate a
git add
issue with NTFS junctions14: 4528095 = 17: d0a5298 mimalloc: use "weak" random seed when statically linked
17: 31f58e3 = 18: 6e562c9 strbuf_realpath(): use platform-dependent API if available
15: f458355 = 19: ead65eb mingw: use mimalloc
18: f3e2ad9 = 20: 2559a73 transport: optionally disable side-band-64k
19: a2b1b49 = 21: 072dde1 mingw: make sure
errno
is set correctly when socket operations fail20: 13b040d = 22: ce16057 mingw: do resolve symlinks in
getcwd()
21: 3272ab0 = 23: aecb88a mingw: fix fatal error working on mapped network drives on Windows
22: 3acd06a = 24: 2ea53fa clink.pl: fix MSVC compile script to handle libcurl-d.lib
23: 222babc = 25: 224ee14 mingw: implement a platform-specific
strbuf_realpath()
28: 10731e4 = 26: 6c75ee5 vcxproj: unclash project directories with build outputs
24: d0e2fb9 = 27: 5fd2a9f mingw: ensure valid CTYPE
29: a6ba317 = 28: 0eadd82 t5505/t5516: allow running without
.git/branches/
in the templates25: 0b5dd6d = 29: 3f61685 mingw: allow
git.exe
to be used instead of the "Git wrapper"30: 41c294e = 30: 012bed8 t5505/t5516: fix white-space around redirectors
26: ac16fde = 31: 98bdeb0 mingw: ignore HOMEDRIVE/HOMEPATH if it points to Windows' system directory
27: efa8463 = 32: ddb19a8 http: use new "best effort" strategy for Secure Channel revoke checking
31: ff5a4db = 33: a05e3c1 t3701: verify that we can add lots of files interactively
38: e4243ee = 34: 7a9e3e5 git add -i: handle CR/LF line endings in the interactive input
32: 32a281f = 35: 5ee14ce Merge branch 'dscho-avoid-d-f-conflict-in-vs-master'
33: 184a4ba = 36: 44cf370 clink.pl: fix libexpatd.lib link error when using MSVC
34: eda3ac0 = 37: 377d17a Makefile: clean up .ilk files when MSVC=1
35: 87fe2b9 = 38: 1261684 vcbuild: add support for compiling Windows resource files
36: 0853341 = 39: 253a2bc config.mak.uname: add git.rc to MSVC builds
37: b47a343 = 40: d4a14a8 clink.pl: ignore no-stack-protector arg on MSVC=1 builds
44: f15d9a4 = 41: 84c2c77 clink.pl: move default linker options for MSVC=1 builds
46: a9494c8 = 42: 1f15d87 buildsystems: remove duplicate clause
48: df922fa = 43: 3ca3a0e vcxproj: handle resource files, too
50: c073149 = 44: 8cd5075 vcxproj: ignore -fno-stack-protector and -fno-common
39: fffb68b = 45: 684f5ca commit: accept "scissors" with CR/LF line endings
40: 9f96f7a = 46: 1066f30 t0014: fix indentation
41: 1379467 = 47: 129581a git-gui: accommodate for intent-to-add files
42: 342ac02 = 48: 552f7f2 vcpkg_install: detect lack of Git
43: b4879d1 = 49: 469fdec vcpkg_install: add comment regarding slow network connections
45: 040d62c = 50: 2038d97 vcxproj: support building Windows/ARM64 binaries
47: eec15e9 = 51: 7cfe419 vcbuild: install ARM64 dependencies when building ARM64 binaries
49: b76a3ad = 52: dcdec7c vcbuild: add an option to install individual 'features'
51: 48ecb20 ! 53: d35c6be cmake: allow building for Windows/ARM64
53: 7eb63e5 = 54: 712dee3 ci(vs-build) also build Windows/ARM64 artifacts
55: d4c2eb0 = 55: 17629c0 Add schannel to curl installation
52: 3f2bc24 = 56: 917bc1f vcxproj: handle GUI programs, too
56: cc998a1 = 57: f32bb13 cmake(): allow setting HOST_CPU for cross-compilation
54: 297e258 = 58: 24db72b cmake: install headless-git.
58: 84ade65 = 59: 446eca4 mingw: allow for longer paths in
parse_interpreter()
59: c20d25f = 60: 26ba486 compat/vcbuild: document preferred way to build in Visual Studio
60: caa497b = 61: af0d8b1 http: optionally send SSL client certificate
57: 60e1f22 = 62: 20ae060 subtree: update
contrib/subtree
test
target61: ef3864e ! 63: 543ed4c ci: run
contrib/subtree
tests in CI builds66: 7064474 = 64: 0baeef9 hash-object: demonstrate a >4GB/LLP64 problem
67: cc41ae7 = 65: 54c7b14 write_object_file_literally(): use size_t
68: d356a95 = 66: 4deeb27 object-file.c: use size_t for header lengths
62: da9353e = 67: 1a41afb CMake: default Visual Studio generator has changed
69: 3a7bad3 = 68: a8fdad5 hash algorithms: use size_t for section lengths
63: d02506e = 69: 311a070 .gitignore: add Visual Studio CMakeSetting.json file
70: e712f83 = 70: 4c4630e hash-object --stdin: verify that it works with >4GB/LLP64
64: 217c404 = 71: ff0eeb8 CMakeLists: add default "x64-windows" arch for Visual Studio
71: 93c471b = 72: 864c5d4 hash-object: add another >4GB/LLP64 test case
65: 4659ca0 = 73: 988fb83 CMake: show Win32 and Generator_platform build-option values
73: 4995368 = 74: ec235d2 init: do parse all core.* settings early
75: d750ec6 = 75: 49513a8 vcxproj: allow building with
NO_PERL
again76: 5735c9f = 76: c127adc vcxproj: require C11
77: 0c544f2 = 77: 3a483c0 vcxproj: ignore the
-pedantic
option79: a743fb7 = 78: 109b543 vcxproj: include reftable when committing
.vcxproj
files72: 3806fdc = 79: 6021aa5 setup: properly use "%(prefix)/" when in WSL
78: a966265 = 80: 6a54987 Add config option
windows.appendAtomically
84: 4473e64 = 81: cef298e vcxproj: handle libreftable_test, too
74: a6eb082 = 82: a37ca0e hash-object: add a >4GB/LLP64 test case using filtered input
80: 6ee1f62 = 83: 17c3d48 compat/mingw.c: do not warn when failing to get owner
81: bd7b567 = 84: b72b0f7 mingw: $env:TERM="xterm-256color" for newer OSes
82: 267c656 = 85: 6a1cbfe winansi: check result and Buffer before using Name
83: a27122f = 86: d0ddfe1 mingw: change core.fsyncObjectFiles = 1 by default
85: d4953f3 = 87: 8f6bbc9 vcxproj: avoid escaping double quotes in the defines
86: d8215b9 = 88: 00ca888 ci: adjust Azure Pipeline for
runs_on_pool
87: 6be0928 = 89: 9538ae7 ci: stop linking the
prove
cache88: 697c1b9 = 90: 647d99e ci: reinstate Azure Pipelines support
89: 928a978 = 91: cf6647b azure-pipeline: drop the
GETTEXT_POISON
job90: f450aab = 92: 34c01d9 azure-pipeline: stop hard-coding
apt-get
calls91: 35109d2 = 93: 23e51c9 azure-pipeline: drop the code to write to/read from a file share
92: 3c25d5b = 94: 4fea981 azure-pipeline: use partial clone/parallel checkout to initialize minimal-sdk
93: e95207b = 95: e666cb9 azure-pipeline: downcase the job name of the
Linux32
job94: 32fc08e = 96: 89ac0fe azure-pipeline: run static-analysis on jammy
95: 01511dc = 97: 28f4d80 bswap.h: add support for built-in bswap functions
96: 0906557 = 98: 7e447fe MinGW: link as terminal server aware
97: 8752383 = 99: d8bd7fc Fix Windows version resources
98: 10c9b97 = 100: f1658b3 config.mak.uname: add support for clangarm64
102: a2e93ff = 101: 1ef415a http: optionally load libcurl lazily
103: 61872fb = 102: b486348 http: support lazy-loading libcurl also on Windows
104: edb4af1 = 103: d21966a http: when loading libcurl lazily, allow for multiple SSL backends
99: a312f70 = 104: 3a27cd0 status: fix for old-style submodules with commondir
100: 0c6e6d7 = 105: e59d48b windows: skip linking
git-<command>
for built-ins101: 2191bbd = 106: f31f8ab windows: fix Repository>Explore Working Copy
105: 4733873 = 107: 8b11498 mingw: do load libcurl dynamically by default
106: a13f595 = 108: 1e63dd9 Add a GitHub workflow to verify that Git/Scalar work in Nano Server
107: 2f6d36e = 109: 5a98ed6 mingw: suggest
windows.appendAtomically
in more cases108: 6fa79c8 = 110: da21187 win32: use native ANSI sequence processing, if possible
109: 70bfa98 = 111: b07b12a git.rc: include winuser.h
110: cef418d = 112: a747bbb ci: work around a problem with HTTP/2 vs libcurl v8.10.0
111: 234f80e = 113: 483dc01 pack-objects: add --full-name-hash option
112: b0f1e44 = 114: febe0b1 repack: test --full-name-hash option
113: c85f4fd = 115: b4eef58 pack-objects: add GIT_TEST_FULL_NAME_HASH
115: 2c5bf42 = 116: 361bb65 common-main.c: fflush stdout buffer upon exit
116: 08fb43a = 117: 6a2ae28 t5601/t7406(mingw): do run tests with symlink support
117: f3b8834 ! 118: 21284fa win32: ensure that
localtime_r()
is declared even in i686 builds118: a591f56 = 119: 81a3759 Fallback to AppData if XDG_CONFIG_HOME is unset
123: fe4d145 = 120: a29b771 run-command: be helpful with Git LFS fails on Windows 7
114: 4875b99 = 121: d03abf2 git-repack: update usage to match docs
119: e06da52 = 122: e49e7c5 p5313: add size comparison test
178: c18eec2 = 123: 39bab40 test-tool: add helper for name-hash values
179: d3c8e10 = 124: e274a63 repack/pack-objects: mark
--full-name-hash
as experimental180: 717d2ea = 125: 7ff4fe5 path-walk: introduce an object walk by path
181: 5712852 = 126: df84412 t6601: add helper for testing path-walk API
182: 5ca70e2 = 127: f567251 path-walk: allow consumer to specify object types
183: ea9bfb1 = 128: d151ebd path-walk: allow visiting tags
184: 22bf55a = 129: acfeeff revision: create mark_trees_uninteresting_dense()
185: c828be5 = 130: cf475d2 path-walk: add prune_all_uninteresting option
186: 4ba7825 = 131: a9f9573 pack-objects: extract should_attempt_deltas()
187: 631e5ae = 132: 3bfa8a1 pack-objects: add --path-walk option
188: 668d2c6 = 133: 2b4a7d9 pack-objects: introduce GIT_TEST_PACK_PATH_WALK
189: c08b741 = 134: c6ae978 repack: add --path-walk option
190: bcc2998 = 135: 31dbbea pack-objects: enable --path-walk via config
191: b66f206 = 136: 99a82ac scalar: enable path-walk during push via config
192: fc1b841 = 137: 7be97e4 pack-objects: refactor path-walk delta phase
193: 00d5b70 = 138: ed5a42c pack-objects: thread the path-based compression
194: 82591fb = 139: a2fc00d path-walk API: avoid adding a root tree more than once
195: ed57923 = 140: 337c8a7 backfill: add builtin boilerplate
196: 8fa78d4 = 141: 8443f8e backfill: basic functionality and tests
197: 6bbef15 = 142: a8f4d79 backfill: add --batch-size= option
198: cdcc117 = 143: 0e911de backfill: add --sparse option
199: 0ccd24d = 144: bd7e75d backfill: assume --sparse when sparse-checkout is enabled
200: e3a0eb1 = 145: bdeea65 backfill: mark it as experimental
201: 247d737 = 146: 082e1a3 survey: stub in new experimental 'git-survey' command
202: 1b0e485 = 147: 4590028 survey: add command line opts to select references
203: dcde0e1 = 148: 647faa3 survey: start pretty printing data in table form
204: ae8bf20 = 149: d6943f5 survey: add object count summary
205: e91880a = 150: 92bc5eb survey: summarize total sizes by object type
206: 8039e13 = 151: 6a1ddb2 survey: show progress during object walk
207: 4c6ca70 = 152: be8a17d survey: add ability to track prioritized lists
208: b0605a4 = 153: aef9da1 survey: add report of "largest" paths
209: daeb926 = 154: a9a757b survey: add --top= option and config
210: 937327e = 155: bdc97cd survey: clearly note the experimental nature in the output
211: 43f7f13 = 156: 538de6e path-walk: improve path-walk speed with many tags
120: 7fb1ae5 = 157: 86c65b5 Merge branch 'safe-PATH-lookup-in-gitk-on-Windows'
121: 34b04ff = 158: 05ccd0a Merge 'remote-hg-prerequisites' into HEAD
122: e73893e = 159: faf58a9 Merge branch 'drive-prefix'
126: da9b725 = 160: a2ca598 Merge branch 'dont-clean-junctions'
127: d7df245 = 161: 159d4fe Merge branch 'msys2-python'
128: cd7cf56 = 162: c8b8438 Merge branch 'mimalloc-v2.0.9'
129: beb5609 = 163: fb9369a Merge pull request Config option to disable side-band-64k for transport #2375 from assarbad/reintroduce-sideband-config
130: da29bce = 164: c9172d4 Merge pull request Make sure
errno
is set when socket operations fail #2405 from dscho/mingw-setsockopt131: d541c52 = 165: 6a828c7 Merge pull request Do resolve symlinks in
getcwd()
#2449 from dscho/mingw-getcwd-and-symlinks132: a9a0c48 = 166: 32c291f Merge pull request mingw: fix fatal error working on mapped network drives on Windows #2488 from bmueller84/master
133: 870c8d6 = 167: 1bd8846 Merge pull request clink.pl: fix MSVC compile script to handle libcurl-d.lib #2501 from jeffhostetler/clink-debug-curl
134: f8cd560 = 168: 201e4df Merge pull request Handle
git add <file>
where <file> traverses an NTFS junction #2504 from dscho/access-repo-via-junction135: 7cb2536 = 169: 3efc959 Merge pull request Allow running Git directly from
C:\Program Files\Git\mingw64\bin\git.exe
#2506 from dscho/issue-2283136: de511d7 = 170: fab37de Merge pull request Introduce and use the new "best effort" strategy for Secure Channel revoke checking #2535 from dscho/schannel-revoke-best-effort
137: 6407120 = 171: 01d2c97 Merge pull request ci: avoid d/f conflict in vs/master #2618 from dscho/avoid-d/f-conflict-in-vs/master
138: 88a8e24 = 172: 3aaae53 Merge 'add-p-many-files'
139: f2157d4 = 173: 9cb2c86 Merge pull request git add -i: handle CR/LF line endings in the interactive input #2730 from dscho/crlf-aware-git-add-i
140: f1a1373 = 174: 3932ccb Merge pull request Rationalize line endings for scissors-cleanup #2714 from lbonanomi/crlf-scissors
141: 4fe1db9 = 175: bcf2b58 Merge pull request t/t0014: fix: eliminate additional lines from trace #2655 from jglathe/jg/t0014_trace_extra_info
142: e9200cf = 176: c167b9b Merge 'git-gui/js/intent-to-add'
143: 6c3c708 = 177: d7809a6 Merge pull request Include Windows-specific maintenance and headless-git #2974 from derrickstolee/maintenance-and-headless
144: c8a4dc5 = 178: 9e0c4be cmake: install headless-git. (cmake: install headless-git. #4338)
145: f6a54f1 = 179: 0e8704c Merge pull request Vcpkg Install: detect lack of working Git, and note possible vcpkg time outs #2351 from PhilipOakley/vcpkg-tip
146: ccbec2f = 180: d51177d Merge pull request Windows arm64 support #2915 from dennisameling/windows-arm64-support
147: 0ed7af2 = 181: d0e0acf Merge pull request cmake(): allow setting HOST_CPU for cross-compilation #3327 from dennisameling/fix-host-cpu
148: e623cef = 182: 94e5ab6 Merge pull request mingw: allow for longer paths in
parse_interpreter()
#3165 from dscho/increase-allowed-length-of-interpreter-path149: 86b931d = 183: 688a48f Merge pull request Let the documentation reflect that there is no vs/master anymore #3220 from dscho/there-is-no-vs/master-anymore
150: 6173157 = 184: 8aa979e Merge pull request http: Add support for enabling automatic sending of SSL client certificate #3293 from pascalmuller/http-support-automatically-sending-client-certificate
151: 6fcd144 = 185: ae0f662 Merge pull request Add
contrib/subtree
test execution to CI builds #3349 from vdye/feature/ci-subtree-tests152: 1c14759 = 186: 4aaec2f Merge pull request Make Git for Windows start builds in modern Visual Studio #3306 from PhilipOakley/vs-sln
153: 76e1342 = 187: c402d01 Merge pull request init: respect core.symlinks before copying the templates #3417 from dscho/initialize-core.symlinks-earlier
154: 5da2991 = 188: 090b4da Merge pull request Begin
unsigned long
->size_t
conversion to support large files on Windows #3533 from PhilipOakley/hashliteral_t155: fc26435 = 189: 985f614 Merge pull request Various fixes around
safe.directory
#3791: Various fixes aroundsafe.directory
156: 7b204a8 = 190: a4f5d84 Merge pull request mingw: set $env:TERM=xterm-256color for newer OSes #3751 from rkitover/native-term
157: 990b30e = 191: 597dde3 Merge pull request winansi: check result before using Name for pty #3875 from 1480c1/wine/detect_msys_tty
158: c38e4c7 = 192: d91eba2 Merge branch 'optionally-dont-append-atomically-on-windows'
159: cbbfd77 = 193: 3149ce0 Merge branch 'fsync-object-files-always'
160: 13fd784 = 194: 1aadf95 Merge branch 'ci-fixes'
161: b4bbe84 = 195: 58ed9d2 Merge pull request MinGW: link as terminal server aware #3942 from rimrul/mingw-tsaware
162: aa15e39 = 196: 473b8a1 Fix Windows version resources (Fix Windows version resources #4092)
163: 04375b7 = 197: 21691c3 Merge branch 'builtin-swap-functions'
164: 96ce6dc = 198: 729f1e5 Add support for CLANGARM64 target (Add support for CLANGARM64 target #3916)
165: 79dbf24 = 199: 3a0e80f Fix global repository field not being cleared (Fix global repository field not being cleared #4083)
166: 49e222c = 200: 07c162b Skip linking the "dashed"
git-<command>
s for built-ins (Skip linking the "dashed"git-<command>
s for built-ins #4252)167: 7a3b0bf = 201: 94fb910 Git GUI: fix Repository>Explore Working Copy (Git GUI: fix Repository>Explore Working Copy #4357)
168: 1d1d34c = 202: 95e1b1b Lazy load libcurl, allowing for an SSL/TLS backend-specific libcurl (Lazy load libcurl, allowing for an SSL/TLS backend-specific libcurl #4410)
169: 780a638 = 203: dd19adc Merge branch 'nano-server'
170: 97d6a3d = 204: 5c6ef0a Additional error checks for issuing the windows.appendAtomically warning (Additional error checks for issuing the windows.appendAtomically warning #4528)
171: bee92c6 = 205: 8be349c win32: use native ANSI sequence processing, if possible (win32: use native ANSI sequence processing, if possible #4700)
172: f6ea06b = 206: b3deb40 ARM64: Embed manifest properly (ARM64: Embed manifest properly #4718)
173: 8e8746f = 207: 049f3a2 common-main.c: fflush stdout buffer when exit (common-main.c: fflush stdout buffer when exit #4901)
174: 8a03762 = 208: 26077db Merge branch 'run-t5601-and-t7406-with-symlinks-on-windows-10'
175: a3bc5a7 = 209: d94923d Merge branch 'Fix-i686-build-with-GCC-v14'
176: 9058dbf = 210: cd00427 Merge branch 'Fallback-to-AppData-if-XDG-CONFIG-HOME-is-unset'
177: 02d8f68 = 211: be75295 Merge branch 'run-command-be-helpful-when-Git-LFS-fails-on-Windows-7'
212: 57102a0 = 212: d8a424f pack-objects: create new name-hash algorithm (pack-objects: create new name-hash algorithm #5157)
213: fe9bb49 = 213: c10c2d3 Add path walk API and its use in 'git pack-objects' (Add path walk API and its use in 'git pack-objects' #5171)
214: 6361ad9 = 214: b1c5108 path-walk API: avoid adding a root tree more than once (path-walk API: avoid adding a root tree more than once #5195)
215: 8261a96 = 215: bce1712 Introduce 'git backfill' to get missing blobs in a partial clone (Introduce 'git backfill' to get missing blobs in a partial clone #5172)
216: 0a2409f ! 216: 77bd3af Add experimental 'git survey' builtin (Add experimental 'git survey' builtin #5174)
217: 2653087 ! 217: 011c572 path-walk: improve path-walk speed with many tags (path-walk: improve path-walk speed with many tags #5205)
218: 1ba5bb6 = 218: b952052 Merge branch 'ready-for-upstream'
219: 7437408 = 219: ec1ddac Win32: make FILETIME conversion functions public
220: c467349 = 220: 5370021 Win32: dirent.c: Move opendir down
221: c1a73bc = 221: a2f2bed mingw: make the dirent implementation pluggable
222: 8f716ae = 222: 28d3259 Win32: make the lstat implementation pluggable
223: 84375a7 = 223: e64cf00 mingw: add infrastructure for read-only file system level caches
224: 1ff2275 = 224: 8f8cae9 mingw: add a cache below mingw's lstat and dirent implementations
225: 3c6c1a3 = 225: 3da4bac fscache: load directories only once
226: 842ccc1 = 226: 6928f67 fscache: add key for GIT_TRACE_FSCACHE
227: e251d36 = 227: df28b3a fscache: remember not-found directories
228: f2ed338 = 228: 4626a3f fscache: add a test for the dir-not-found optimization
229: 37a5774 = 229: abae2dd add: use preload-index and fscache for performance
230: 1eecdca = 230: 9b5d767 dir.c: make add_excludes aware of fscache during status
231: 8b9520d = 231: fb4f5bf fscache: make fscache_enabled() public
232: 6e65c31 = 232: 9fd4aaa dir.c: regression fix for add_excludes with fscache
233: 5ce03d7 = 233: 6c51d79 fetch-pack.c: enable fscache for stats under .git/objects
234: e89f5ef = 234: 0bae08d checkout.c: enable fscache for checkout again
235: 9a234e5 = 235: f27bcc3 Enable the filesystem cache (fscache) in refresh_index().
236: ba37bce = 236: e3bbb7b fscache: use FindFirstFileExW to avoid retrieving the short name
237: c16679f = 237: c965296 status: disable and free fscache at the end of the status command
238: e31fe77 = 238: f114f18 fscache: add GIT_TEST_FSCACHE support
239: b7f233d = 239: f07b698 fscache: add fscache hit statistics
240: 7212f15 = 240: 39d4be0 mem_pool: add GIT_TRACE_MEMPOOL support
241: d62cc4a = 241: 37d2223 fscache: fscache takes an initial size
242: 7b620c6 = 242: 40ca4ef fscache: update fscache to be thread specific instead of global
243: 3308914 = 243: ce8df9f fscache: teach fscache to use mempool
244: 951831f = 244: 0e94791 fscache: make fscache_enable() thread safe
245: 0ed68ab = 245: a56eb93 fscache: teach fscache to use NtQueryDirectoryFile
246: a4932ba = 246: 91f4f90 unpack-trees: enable fscache for sparse-checkout
247: 658faab = 247: cd83cd0 fscache: remember the reparse tag for each entry
250: 13aaa6f = 248: 7bd14f5 git-gui: provide question helper for retry fallback on Windows
248: 84dc943 = 249: 1694e02 fscache: implement an FSCache-aware is_mount_point()
251: 999b9d2 = 250: a285245 git gui: set GIT_ASKPASS=git-gui--askpass if not set yet
249: aff9c5c = 251: feff761 clean: make use of FSCache
252: 53bc672 = 252: 49a31c4 gitk: Unicode file name support
253: d2a95c9 = 253: a3f9653 git-gui--askyesno: fix funny text wrapping
254: 2891686 ! 254: 386563c gitk: Use an external icon file on Windows
255: e85ee97 = 255: dd8a4a3 git-gui--askyesno: allow overriding the window title
256: 9360077 = 256: 001be00 gitk: fix arrow keys in input fields with Tcl/Tk >= 8.6
257: 8b10c79 = 257: 1ee5d70 git-gui--askyesno (mingw): use Git for Windows' icon, if available
259: d064b7d = 258: 4065da8 Merge 'git-gui' into HEAD
258: ec83eb8 = 259: c04a31b gitk: make the "list references" default window width wider
260: 225a649 = 260: d40c45a Merge branch 'git-gui-askyesno'
261: 1b88843 = 261: 59f40ce Merge 'gitk' into HEAD
262: 5c59ae7 = 262: d2f1181 Merge branch 'fscache'
263: ead98c6 = 263: 2fa19b6 Merge pull request fscache: add not-found directory cache to fscache #994 from jeffhostetler/jeffhostetler/fscache_nfd
264: fedccca = 264: 9ef4f26 Merge pull request add: use preload-index and fscache for performance #971 from jeffhostetler/jeffhostetler/add_preload_fscache
265: dbe21c0 = 265: 0494ea7 Merge pull request dir.c: make add_excludes aware of fscache during status #1344 from jeffhostetler/perf_add_excludes_with_fscache
266: 80c4c6f = 266: 9628e1b Merge pull request fetch-pack.c: enable fscache for stats under .git/objects #1426 from atetubou/fetch_pack
267: 124f4d4 = 267: 06f28a4 Merge pull request checkout.c: enable fscache for checkout again #1468 from atetubou/fscache_checkout_flush
268: 3683af5 = 268: 07142ea Merge pull request Enable the filesystem cache (fscache) in refresh_index(). #1827 from benpeart/fscache_refresh_index
269: 0f48b1e = 269: 4811157 Merge pull request fscache: use FindFirstFileExW to avoid retrieving the short name #1908 from benpeart/FindFirstFileEx-gfw
270: 31877cb = 270: 33b04fa Merge pull request status: disable and free fscache at the end of the status command #1909 from benpeart/free-fscache-after-status-gfw
271: 4ef0cbe = 271: 934728e Merge pull request fscache: add GIT_TEST_FSCACHE support #1911 from benpeart/git_test_fscache-gfw
272: fe19f7b = 272: ee53250 Merge pull request fscache: add fscache hit statistics #1910 from benpeart/fscache_statistics-gfw
273: 4b7ad45 = 273: 16cb9f5 Merge remote-tracking branch 'benpeart/fscache-per-thread-gfw'
274: 4d8f07f = 274: 600b087 Merge pull request fscache: make fscache_enable() thread safe #1934 from benpeart/fscache-thread-safe-enable-gfw
275: b2289f0 = 275: d121dcb Merge pull request fscache: teach fscache to use NtQueryDirectoryFile #1937 from benpeart/fscache-NtQueryDirectoryFile-gfw
276: 0ee98ae = 276: 7b6af3b Merge branch 'fscache-and-sparse-checkout'
277: 181c119 = 277: 2d1b21a Merge branch 'dont-clean-junctions-fscache'
278: dba37e8 = 278: b1158e6 pack-objects (mingw): demonstrate a segmentation fault with large deltas
279: da59a5a = 279: bf48e14 mingw: support long paths
280: 29d2eb0 = 280: 590a1dc Win32: fix 'lstat("dir/")' with long paths
281: 281482c = 281: 50b036c win32(long path support): leave drive-less absolute paths intact
284: ffac96b = 282: 4104681 mingw: Support
git_terminal_prompt
with more terminals285: 8b9b5a0 = 283: cc2b667 compat/terminal.c: only use the Windows console if bash 'read -r' fails
286: 86d309f = 284: 6cb49c5 mingw (git_terminal_prompt): do fall back to CONIN$/CONOUT$ method
287: c8b30ea = 285: c61fb0b strbuf_readlink: don't call readlink twice if hint is the exact link size
282: 9d9060a = 286: 2c38b76 compat/fsmonitor/fsm-*-win32: support long paths
283: ba0f161 = 287: b458e35 clean: suggest using
core.longPaths
if paths are too long to remove288: 7564b76 = 288: d68854b strbuf_readlink: support link targets that exceed PATH_MAX
289: 7045375 = 289: 4b1d390 lockfile.c: use is_dir_sep() instead of hardcoded '/' checks
290: 4dd345f = 290: 902b18a Win32: don't call GetFileAttributes twice in mingw_lstat()
291: 24b2079 = 291: 9954f28 Win32: implement stat() with symlink support
292: 4448227 = 292: 6916c16 Win32: remove separate do_lstat() function
293: 720ff4f = 293: 1825a92 Win32: let mingw_lstat() error early upon problems with reparse points
294: 7f0e475 = 294: e9d30b7 mingw: teach fscache and dirent about symlinks
295: 15d9ebc = 295: 136f062 Win32: lstat(): return adequate stat.st_size for symlinks
296: bfe3a8d = 296: 0f23b65 Win32: factor out retry logic
297: fd71c74 = 297: af0dfd3 Win32: change default of 'core.symlinks' to false
298: 9d3dc70 = 298: e0cbfb3 Win32: add symlink-specific error codes
299: 4aacaa2 = 299: a05ee44 Win32: mingw_unlink: support symlinks to directories
300: a476dff = 300: 5dcdda3 Win32: mingw_rename: support renaming symlinks
301: b5ce5a5 = 301: e196694 Win32: mingw_chdir: change to symlink-resolved directory
302: bbdff29 = 302: 16fa74d Win32: implement readlink()
303: 22444da = 303: cf13693 mingw: lstat: compute correct size for symlinks
304: 779dfff = 304: da7cf2c Win32: implement basic symlink() functionality (file symlinks only)
305: d7135b3 = 305: d527197 Win32: symlink: add support for symlinks to directories
306: f776f96 = 306: e34bdc0 mingw: try to create symlinks without elevated permissions
307: bb48bc5 = 307: 6d69813 mingw: emulate stat() a little more faithfully
308: b19e053 = 308: 0d18df2 mingw: special-case index entries for symlinks with buggy size
309: 0f5b3be = 309: 0845caa mingw: introduce code to detect whether we're inside a Windows container
312: 61d9dc0 = 310: 27c9ddb Win32: symlink: move phantom symlink creation to a separate function
310: 03e4daf = 311: f73311b mingw: when running in a Windows container, try to rename() harder
313: 714ab70 = 312: 2747eb5 Introduce helper to create symlinks that knows about index_state
311: f33b115 = 313: e915ddb mingw: move the file_attr_to_st_mode() function definition
314: c1d47f9 = 314: a891d07 mingw: allow to specify the symlink type in .gitattributes
315: ddd67d2 = 315: f9131e5 mingw: Windows Docker volumes are not symbolic links
316: c85178f = 316: a2f18f9 Win32: symlink: add test for
symlink
attribute317: d710917 = 317: ec4fa5d mingw: work around rename() failing on a read-only file
318: 3c55f81 = 318: 76340bc mingw: explicitly specify with which cmd to prefix the cmdline
319: 6202426 = 319: f1a4a0e mingw: when path_lookup() failed, try BusyBox
320: 8d068c8 = 320: 9cd2044 test-lib: avoid unnecessary Perl invocation
321: 33afc51 = 321: dc1cbc8 test-tool: learn to act as a drop-in replacement for
iconv
322: dcab3e9 = 322: 5a4721f tests(mingw): if
iconv
is unavailable, usetest-helper --iconv
323: 3b6db2a = 323: 05a8cfe gitattributes: mark .png files as binary
324: 7bcc5bb = 324: 1d0ae81 tests: move test PNGs into t/lib-diff/
325: 1819e89 = 325: f10fb5d tests: only override sort & find if there are usable ones in /usr/bin/
326: cb214a9 = 326: 0fe3c01 tests: use the correct path separator with BusyBox
327: b44e0a1 = 327: 100329c mingw: only use Bash-ism
builtin pwd -W
when available328: 6f709cd = 328: 03f8476 tests (mingw): remove Bash-specific pwd option
329: fe9b337 = 329: 5930cd4 test-lib: add BUSYBOX prerequisite
330: 56397c0 = 330: 409d505 t5003: use binary file from t/lib-diff/
331: 943cebe = 331: f84ca64 t5532: workaround for BusyBox on Windows
332: 76aaf08 = 332: 34d4ee5 t5605: special-case hardlink test for BusyBox-w32
333: b11693c = 333: f696881 t5813: allow for $PWD to be a Windows path
334: cc5a6a1 = 334: 8546f4c t9200: skip tests when $PWD contains a colon
335: e77fe5f = 335: f52b2d6 mingw: add a Makefile target to copy test artifacts
336: 08bf6c2 = 336: 9980832 mingw: kill child processes in a gentler way
338: cf381e0 = 337: 97126b7 mingw: do not call xutftowcs_path in mingw_mktemp
337: 9dc26ca = 338: baaa784 mingw: optionally enable wsl compability file mode bits
339: 985de60 = 339: a861966 mingw: really handle SIGINT
340: c0e4873 = 340: fa5b7bd Partially un-revert "editor: save and reset terminal after calling EDITOR"
346: 1ba81bb = 341: fb50bbe Add a GitHub workflow to monitor component updates
341: afc1e3b = 342: 42e2651 reset: reinstate support for the deprecated --stdin option
348: 4fcf9ff = 343: 91a6893 fsmonitor: reintroduce core.useBuiltinFSMonitor
349: 7e81408 = 344: 4290180 dependabot: help keeping GitHub Actions versions up to date
342: b44b8e6 = 345: ff8ee04 Describe Git for Windows' architecture [no ci]
343: 05e17f6 = 346: 21eaa4c Modify the Code of Conduct for Git for Windows
344: bfe0af7 = 347: 1e7b848 CONTRIBUTING.md: add guide for first-time contributors
345: 80bd342 = 348: c1b6397 README.md: Add a Windows-specific preamble
350: 68add37 = 349: 28462bd Merge branch 'gitk-and-git-gui-patches'
347: befbbb2 = 350: 14a2c74 Add an issue template
352: 235e9b1 = 351: d7d770a Merge branch 'long-paths'
351: 183c8c9 = 352: a676f22 Modify the GitHub Pull Request template (to reflect Git for Windows)
354: 516305d = 353: fc1482a Merge branch 'fix-v4-fsmonitor-long-paths' into try-v4-fsmonitor
353: 24fa65c = 354: b8f7ae4 SECURITY.md: document Git for Windows' policies
355: 08d4169 = 355: 8ebb303 Merge pull request clean: suggest using
core.longPaths
if paths are too long to remove #3817 from mathstuf/name-too-long-advice356: f7f7587 = 356: 6e2492e Merge branch 'msys2'
357: 9e7901f = 357: a42e4fa Merge branch 'kblees/kb/symlinks'
358: fe99995 = 358: 68ccaa5 Merge 'docker-volumes-are-no-symlinks'
359: 607d7a2 = 359: 6fdd1c8 mingw: try resetting the read-only bit if rename fails (Reset READONLY if rename fails #4527)
360: 93b01db = 360: 74f406f Merge pull request Specify symlink type in .gitattributes #1897 from piscisaureus/symlink-attr
361: 6b03046 = 361: 7dbb8a1 Merge branch 'busybox-w32'
362: 35f58b2 = 362: 96279c7 Merge branch 'wsl-file-mode-bits'
363: d471e61 = 363: 9c85c7b Merge pull request Handle Ctrl+C in Git Bash nicely #1170 from dscho/mingw-kill-process
364: a61bb84 = 364: 36106a5 Merge pull request Switch to batched fsync by default #3492 from dscho/ns/batched-fsync
365: db8466b = 365: d912e23 Merge branch 'un-revert-editor-save-and-reset'
366: b57f7c3 = 366: 6b20bc9 Merge branch 'phase-out-reset-stdin'
367: 0b97509 = 367: c140a7c Merge branch 'deprecate-core.useBuiltinFSMonitor'
368: 0da0453 = 368: 98a8705 Merge pull request Start monitoring updates of Git for Windows' components in the open #2837 from dscho/monitor-component-updates
369: 5d54b0d = 369: 44d1375 Merge 'readme' into HEAD
370: e71f228 ! 370: 99a1141 compat/mingw: handle WSA errors in strerror
371: 86c5a9b = 371: 0490df2 compat/mingw: drop outdated comment
372: dfbc6bd = 372: a6a71fe t0301: actually test credential-cache on Windows
373: 9a70050 = 373: 8795978 credential-cache: handle ECONNREFUSED gracefully
374: 58d6792 = 374: 6e98293 credential-cache: handle ECONNREFUSED gracefully (credential-cache: handle ECONNREFUSED gracefully #5329)