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.48.0 #5361
Draft
dscho
wants to merge
411
commits into
git-for-windows:main
Choose a base branch
from
dscho:rebase-to-v2.48.0
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Rebase to v2.48.0 #5361
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
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]>
Add a new test-tool helper, name-hash, to output the value of the name-hash algorithms for the input list of strings, one per line. Since the name-hash values can be stored in the .bitmap files, it is important that these hash functions do not change across Git versions. Add a simple test to t5310-pack-bitmaps.sh to provide some testing of the current values. Due to how these functions are implemented, it would be difficult to change them without disturbing these values. Create a performance test that uses test_size to demonstrate how collisions occur for these hash algorithms. This test helps inform someone as to the behavior of the name-hash algorithms for their repo based on the paths at HEAD. My copy of the Git repository shows modest statistics around the collisions of the default name-hash algorithm: Test this tree ----------------------------------------------------------------- 5314.1: paths at head 4.5K 5314.2: number of distinct name-hashes 4.1K 5314.3: number of distinct full-name-hashes 4.5K 5314.4: maximum multiplicity of name-hashes 13 5314.5: maximum multiplicity of fullname-hashes 1 Here, the maximum collision multiplicity is 13, but around 10% of paths have a collision with another path. In a more interesting example, the microsoft/fluentui [1] repo had these statistics at time of committing: Test this tree ----------------------------------------------------------------- 5314.1: paths at head 19.6K 5314.2: number of distinct name-hashes 8.2K 5314.3: number of distinct full-name-hashes 19.6K 5314.4: maximum multiplicity of name-hashes 279 5314.5: maximum multiplicity of fullname-hashes 1 [1] https://github.com/microsoft/fluentui That demonstrates that of the nearly twenty thousand path names, they are assigned around eight thousand distinct values. 279 paths are assigned to a single value, leading the packing algorithm to sort objects from those paths together, by size. In this repository, no collisions occur for the full-name-hash algorithm. In a more extreme example, an internal monorepo had a much worse collision rate: Test this tree ----------------------------------------------------------------- 5314.1: paths at head 221.6K 5314.2: number of distinct name-hashes 72.0K 5314.3: number of distinct full-name-hashes 221.6K 5314.4: maximum multiplicity of name-hashes 14.4K 5314.5: maximum multiplicity of fullname-hashes 2 Even in this repository with many more paths at HEAD, the collision rate was low and the maximum number of paths being grouped into a single bucket by the full-path-name algorithm was two. 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]>
This option is still under discussion on the Git mailing list. We still would like to have some real-world data, and the best way to get it is to get a Git for Windows release into users' hands so that they can test it. Nevertheless, without the official blessing of the Git maintainer, this optionis experimental, and we need to be clear about that. Signed-off-by: Johannes Schindelin <[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]>
In anticipation of implementing 'git backfill', populate the necessary files with the boilerplate of a new builtin. RFC TODO: When preparing this for a full implementation, make sure it is based on the newest standards introduced by [1]. [1] https://lore.kernel.org/git/[email protected]/T/#m606036ea2e75a6d6819d6b5c90e729643b0ff7f7 [PATCH 1/3] builtin: add a repository parameter for builtin functions Signed-off-by: Derrick Stolee <[email protected]>
The default behavior of 'git backfill' is to fetch all missing blobs that are reachable from HEAD. Document and test this behavior. The implementation is a very simple use of the path-walk API, initializing the revision walk at HEAD to start the path-walk from all commits reachable from HEAD. Ignore the object arrays that correspond to tree entries, assuming that they are all present already. Signed-off-by: Derrick Stolee <[email protected]>
Users may want to specify a minimum batch size for their needs. This is only a minimum: the path-walk API provides a list of OIDs that correspond to the same path, and thus it is optimal to allow delta compression across those objects in a single server request. We could consider limiting the request to have a maximum batch size in the future. Signed-off-by: Derrick Stolee <[email protected]>
One way to significantly reduce the cost of a Git clone and later fetches is to use a blobless partial clone and combine that with a sparse-checkout that reduces the paths that need to be populated in the working directory. Not only does this reduce the cost of clones and fetches, the sparse-checkout reduces the number of objects needed to download from a promisor remote. However, history investigations can be expensie as computing blob diffs will trigger promisor remote requests for one object at a time. This can be avoided by downloading the blobs needed for the given sparse-checkout using 'git backfill' and its new '--sparse' mode, at a time that the user is willing to pay that extra cost. Note that this is distinctly different from the '--filter=sparse:<oid>' option, as this assumes that the partial clone has all reachable trees and we are using client-side logic to avoid downloading blobs outside of the sparse-checkout cone. This avoids the server-side cost of walking trees while also achieving a similar goal. It also downloads in batches based on similar path names, presenting a resumable download if things are interrupted. This augments the path-walk API to have a possibly-NULL 'pl' member that may point to a 'struct pattern_list'. This could be more general than the sparse-checkout definition at HEAD, but 'git backfill --sparse' is currently the only consumer. Be sure to test this in both cone mode and not cone mode. Cone mode has the benefit that the path-walk can skip certain paths once they would expand beyond the sparse-checkout. Signed-off-by: Derrick Stolee <[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]>
The previous change introduced the '--[no-]sparse' option for the 'git backfill' command, but did not assume it as enabled by default. However, this is likely the behavior that users will most often want to happen. Without this default, users with a small sparse-checkout may be confused when 'git backfill' downloads every version of every object in the full history. However, this is left as a separate change so this decision can be reviewed independently of the value of the '--[no-]sparse' option. Add a test of adding the '--sparse' option to a repo without sparse-checkout to make it clear that supplying it without a sparse-checkout is an error. Signed-off-by: Derrick Stolee <[email protected]>
By default we will scan all references in "refs/heads/", "refs/tags/" and "refs/remotes/". Add command line opts let the use ask for all refs or a subset of them and to include a detached HEAD. Signed-off-by: Jeff Hostetler <[email protected]> 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 is a highly useful command, and we want it to get some testing "in the wild". However, the patches have not yet been reviewed on the Git mailing list, and are therefore subject to change. By marking the command as experimental, users will be warned to pay attention to those changes. Signed-off-by: Johannes Schindelin <[email protected]>
When 'git survey' provides information to the user, this will be presented in one of two formats: plaintext and JSON. The JSON implementation will be delayed until the functionality is complete for the plaintext format. The most important parts of the plaintext format are headers specifying the different sections of the report and tables providing concreted data. Create a custom table data structure that allows specifying a list of strings for the row values. When printing the table, check each column for the maximum width so we can create a table of the correct size from the start. The table structure is designed to be flexible to the different kinds of output that will be implemented in future changes. Signed-off-by: Derrick Stolee <[email protected]>
At the moment, nothing is obvious about the reason for the use of the path-walk API, but this will become more prevelant in future iterations. For now, use the path-walk API to sum up the counts of each kind of object. For example, this is the reachable object summary output for my local repo: REACHABLE OBJECT SUMMARY ======================== Object Type | Count ------------+------- Tags | 1343 Commits | 179344 Trees | 314350 Blobs | 184030 Signed-off-by: Derrick Stolee <[email protected]>
Now that we have explored objects by count, we can expand that a bit more to summarize the data for the on-disk and inflated size of those objects. This information is helpful for diagnosing both why disk space (and perhaps clone or fetch times) is growing but also why certain operations are slow because the inflated size of the abstract objects that must be processed is so large. Signed-off-by: Derrick Stolee <[email protected]>
Signed-off-by: Derrick Stolee <[email protected]>
In future changes, we will make use of these methods. The intention is to keep track of the top contributors according to some metric. We don't want to store all of the entries and do a sort at the end, so track a constant-size table and remove rows that get pushed out depending on the chosen sorting algorithm. Co-authored-by: Jeff Hostetler <[email protected]> Signed-off-by; Jeff Hostetler <[email protected]> Signed-off-by: Derrick Stolee <[email protected]>
Since we are already walking our reachable objects using the path-walk API, let's now collect lists of the paths that contribute most to different metrics. Specifically, we care about * Number of versions. * Total size on disk. * Total inflated size (no delta or zlib compression). This information can be critical to discovering which parts of the repository are causing the most growth, especially on-disk size. Different packing strategies might help compress data more efficiently, but the toal inflated size is a representation of the raw size of all snapshots of those paths. Even when stored efficiently on disk, that size represents how much information must be processed to complete a command such as 'git blame'. Since the on-disk size is likely to be fragile, stop testing the exact output of 'git survey' and check that the correct set of headers is output. Signed-off-by: Derrick Stolee <[email protected]>
The 'git survey' builtin provides several detail tables, such as "top files by on-disk size". The size of these tables defaults to 10, currently. Allow the user to specify this number via a new --top=<N> option or the new survey.top config key. Signed-off-by: Derrick Stolee <[email protected]> Signed-off-by: Johannes Schindelin <[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]>
Rather than using private IFTTT Applets that send mails to this maintainer whenever a new version of a Git for Windows component was released, let's use the power of GitHub workflows to make this process publicly visible. This workflow monitors the Atom/RSS feeds, and opens a ticket whenever a new version was released. Note: Bash sometimes releases multiple patched versions within a few minutes of each other (i.e. 5.1p1 through 5.1p4, 5.0p15 and 5.0p16). The MSYS2 runtime also has a similar system. We can address those patches as a group, so we shouldn't get multiple issues about them. Note further: We're not acting on newlib releases, OpenSSL alphas, Perl release candidates or non-stable Perl releases. There's no need to open issues about them. Co-authored-by: Matthias Aßhauer <[email protected]> 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]>
The `--stdin` option was a well-established paradigm in other commands, therefore we implemented it in `git reset` for use by Visual Studio. Unfortunately, upstream Git decided that it is time to introduce `--pathspec-from-file` instead. To keep backwards-compatibility for some grace period, we therefore reinstate the `--stdin` option on top of the `--pathspec-from-file` option, but mark it firmly as deprecated. Helped-by: Victoria Dye <[email protected]> Helped-by: Matthew John Cheetham <[email protected]> Signed-off-by: Johannes Schindelin <[email protected]>
Reintroduce the 'core.useBuiltinFSMonitor' config setting (originally added in 0a756b2 (fsmonitor: config settings are repository-specific, 2021-03-05)) after its removal from the upstream version of FSMonitor. Upstream, the 'core.useBuiltinFSMonitor' setting was rendered obsolete by "overloading" the 'core.fsmonitor' setting to take a boolean value. However, several applications (e.g., 'scalar') utilize the original config setting, so it should be preserved for a deprecation period before complete removal: * if 'core.fsmonitor' is a boolean, the user is correctly using the new config syntax; do not use 'core.useBuiltinFSMonitor'. * if 'core.fsmonitor' is unspecified, use 'core.useBuiltinFSMonitor'. * if 'core.fsmonitor' is a path, override and use the builtin FSMonitor if 'core.useBuiltinFSMonitor' is 'true'; otherwise, use the FSMonitor hook indicated by the path. Additionally, for this deprecation period, advise users to switch to using 'core.fsmonitor' to specify their use of the builtin FSMonitor. Signed-off-by: Victoria Dye <[email protected]>
See https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot#enabling-dependabot-version-updates-for-actions for details. Signed-off-by: Johannes Schindelin <[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]>
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]>
…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]>
The reftable regression test where it updates refs in a massively concurrent manner failed:
The error message At the same time it passed in my fork. So it is a flaky test now... |
And vice versa, in my fork
Yet another newly-flaky test... |
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 -rc2
1: 8c8a207 = 1: bbc14d7 t9350: point out that refs are not updated correctly
2: 25fb032 = 2: b5fe0f6 transport-helper: add trailing --
3: dca2663 = 3: c74f47b remote-helper: check helper status after import/export
6: f6f9f1c = 4: 6166ef7 gitk(Windows): avoid inadvertently calling executables in the worktree
7: 47dc063 = 5: dd17fae Always auto-gc after calling a fast-import transport
10: c0d09b9 = 6: a1108cf mingw: include the Python parts in the build
11: d55d5e5 = 7: a60cef9 win32/pthread: avoid name clashes with winpthread
12: 72f78bd = 8: 3eaa1ce git-compat-util: avoid redeclaring _DEFAULT_SOURCE
13: f7e4509 = 9: 461207c Import the source code of mimalloc v2.1.2
14: 0c0209d = 10: dfda515 mimalloc: adjust for building inside Git
15: a27ec22 = 11: 1499dbd mimalloc: offer a build-time option to enable it
4: b536507 = 12: ec0016c mingw: demonstrate a problem with certain absolute paths
5: 90288be = 13: c2b8b3d clean: do not traverse mount points
16: 2524a04 = 14: 080c851 mimalloc: use "weak" random seed when statically linked
8: 2dcf725 = 15: e75cb3b mingw: allow absolute paths without drive prefix
9: 00dad35 = 16: 64e8496 clean: remove mount points when possible
17: b866815 = 17: 11ebfb3 mingw: use mimalloc
18: 5dcfd01 = 18: 6b608e8 transport: optionally disable side-band-64k
23: 0dd5d94 = 19: 0cb219f mingw: ensure valid CTYPE
24: bf75da6 = 20: 0bc4c90 mingw: demonstrate a
git add
issue with NTFS junctions26: 07676d9 = 21: 345d8dd mingw: allow
git.exe
to be used instead of the "Git wrapper"27: 6c91598 = 22: 13709f0 strbuf_realpath(): use platform-dependent API if available
29: fe6fb0e = 23: 3db90c3 mingw: ignore HOMEDRIVE/HOMEPATH if it points to Windows' system directory
30: 058aad7 = 24: acc5a14 http: use new "best effort" strategy for Secure Channel revoke checking
20: 6d49ea6 = 25: d7476fc mingw: do resolve symlinks in
getcwd()
21: 09d7dec = 26: 2b6f291 mingw: fix fatal error working on mapped network drives on Windows
31: 6c2313d = 27: d919252 clink.pl: fix MSVC compile script to handle libcurl-d.lib
32: 7231ff0 = 28: 132f431 mingw: implement a platform-specific
strbuf_realpath()
22: d2efb3e = 29: ccdb636 vcxproj: unclash project directories with build outputs
25: 6a67ad3 = 30: c532ef3 t5505/t5516: allow running without
.git/branches/
in the templates28: f79ee51 = 31: adfc048 t5505/t5516: fix white-space around redirectors
33: 432f101 = 32: ca53503 t3701: verify that we can add lots of files interactively
34: ebd57fe = 33: c3d5ebc git add -i: handle CR/LF line endings in the interactive input
45: a17f9f8 = 34: 201c0e8 commit: accept "scissors" with CR/LF line endings
46: 9874912 = 35: ae133a0 t0014: fix indentation
47: 4a85fd1 = 36: ac73ea4 git-gui: accommodate for intent-to-add files
35: 5cc86b2 = 37: 77283d0 clink.pl: fix libexpatd.lib link error when using MSVC
36: 1430754 = 38: 4bff95d Makefile: clean up .ilk files when MSVC=1
37: 5c8e388 = 39: db01c40 vcbuild: add support for compiling Windows resource files
38: e18b12c = 40: 8f5ad65 config.mak.uname: add git.rc to MSVC builds
39: b442bcd = 41: 3e47c79 clink.pl: ignore no-stack-protector arg on MSVC=1 builds
40: bfd7b0f = 42: b59e4b9 clink.pl: move default linker options for MSVC=1 builds
41: fbce80f = 43: 49cf4b6 buildsystems: remove duplicate clause
48: 6612874 = 44: 81ee80b vcpkg_install: detect lack of Git
42: 03f535e = 45: adb7867 vcxproj: handle resource files, too
49: 75993b4 = 46: e3729ad vcpkg_install: add comment regarding slow network connections
43: 5016af7 = 47: 69d15a3 vcxproj: ignore -fno-stack-protector and -fno-common
50: e96a349 = 48: 79bb88c vcxproj: support building Windows/ARM64 binaries
44: 6f462b5 = 49: f1b2fd6 vcxproj: handle GUI programs, too
51: 0559b8f = 50: ff822c6 vcbuild: install ARM64 dependencies when building ARM64 binaries
57: 5663ad4 = 51: f45352c cmake: install headless-git.
52: 358ba6b = 52: 6e69568 vcbuild: add an option to install individual 'features'
53: 7b33166 = 53: b3ab8b7 cmake: allow building for Windows/ARM64
54: 15e901f = 54: d765597 ci(vs-build) also build Windows/ARM64 artifacts
55: 040847f = 55: f8c6875 Add schannel to curl installation
56: 1cd5f8b = 56: c80d4f9 cmake(): allow setting HOST_CPU for cross-compilation
64: 95727ac = 57: 3aeb23b CMake: default Visual Studio generator has changed
68: beea9e1 = 58: c20c6ee subtree: update
contrib/subtree
test
target66: 127faab = 59: 1033d6f .gitignore: add Visual Studio CMakeSetting.json file
58: 6704142 = 60: 1e95a2f mingw: allow for longer paths in
parse_interpreter()
59: 296b420 = 61: 48c6336 compat/vcbuild: document preferred way to build in Visual Studio
60: 8a42909 = 62: 921f35c http: optionally send SSL client certificate
71: 3e7da28 = 63: 1fcbe5c ci: run
contrib/subtree
tests in CI builds61: 10a5c81 = 64: 6183d2d hash-object: demonstrate a >4GB/LLP64 problem
62: 3bef351 = 65: 23fe600 write_object_file_literally(): use size_t
63: 2c008c5 = 66: c22d98b object-file.c: use size_t for header lengths
65: c35308a = 67: 4f197bd hash algorithms: use size_t for section lengths
67: 3d25b0e = 68: c4551e7 hash-object --stdin: verify that it works with >4GB/LLP64
69: fafa720 = 69: 40431da CMakeLists: add default "x64-windows" arch for Visual Studio
70: 11b2ac6 = 70: ce0d0a9 hash-object: add another >4GB/LLP64 test case
82: 4cd9933 = 71: b045dfa setup: properly use "%(prefix)/" when in WSL
72: 1bb4d11 = 72: 86670c8 CMake: show Win32 and Generator_platform build-option values
73: fff28fc = 73: d13b2b6 init: do parse all core.* settings early
74: 1a67a18 = 74: 1961e70 hash-object: add a >4GB/LLP64 test case using filtered input
85: bffde5d = 75: 307bb05 compat/mingw.c: do not warn when failing to get owner
75: 820a555 = 76: 7324a35 vcxproj: allow building with
NO_PERL
again76: 66d8ef5 = 77: 348fae0 vcxproj: require C11
77: 5c867e7 = 78: 102e426 vcxproj: ignore the
-pedantic
option78: 777ec58 = 79: 32973aa vcxproj: include reftable when committing
.vcxproj
files79: 0aa5472 = 80: 60299ef vcxproj: handle libreftable_test, too
80: af26bf7 = 81: a69adf6 vcxproj: avoid escaping double quotes in the defines
81: 9331662 = 82: 331afd2 ci: adjust Azure Pipeline for
runs_on_pool
84: eddaab6 = 83: d4d7862 ci: stop linking the
prove
cache83: 0ff2c12 = 84: cadcb6d Add config option
windows.appendAtomically
89: 814d99a = 85: b4b814e ci: reinstate Azure Pipelines support
86: e8fdcc3 = 86: c71eeba mingw: $env:TERM="xterm-256color" for newer OSes
87: beb405d = 87: 404e0aa winansi: check result and Buffer before using Name
88: 02c0dca = 88: 3f98d13 mingw: change core.fsyncObjectFiles = 1 by default
90: 876eee2 = 89: ebc3f7b azure-pipeline: drop the
GETTEXT_POISON
job91: 136ed6b = 90: 3ec9280 azure-pipeline: stop hard-coding
apt-get
calls92: 3d2e22c = 91: 209f633 azure-pipeline: drop the code to write to/read from a file share
93: 12b65ef = 92: ac9ce7c azure-pipeline: use partial clone/parallel checkout to initialize minimal-sdk
94: e08e05b = 93: a671d41 azure-pipeline: downcase the job name of the
Linux32
job95: e3fa52e = 94: 231a570 bswap.h: add support for built-in bswap functions
96: 01e8056 = 95: a4cc607 MinGW: link as terminal server aware
97: 7acf493 = 96: 7e22815 azure-pipeline: run static-analysis on jammy
98: 7423fab = 97: 4c4a0d5 Fix Windows version resources
99: 3a39c43 = 98: e80721d config.mak.uname: add support for clangarm64
100: bd79a1d = 99: 12dfa68 status: fix for old-style submodules with commondir
101: 222abf9 = 100: d9aa4c7 windows: skip linking
git-<command>
for built-ins102: 2f6d027 = 101: 58f6351 http: optionally load libcurl lazily
103: 1440baa = 102: 6f3580c http: support lazy-loading libcurl also on Windows
104: 09a6270 = 103: 5c064c2 http: when loading libcurl lazily, allow for multiple SSL backends
105: 8631bd2 = 104: f3cd3ed windows: fix Repository>Explore Working Copy
106: f89dc53 = 105: a8bd077 mingw: do load libcurl dynamically by default
107: 48cc7ed = 106: 0959164 Add a GitHub workflow to verify that Git/Scalar work in Nano Server
108: 5079c01 = 107: 171878e mingw: suggest
windows.appendAtomically
in more cases109: 526958a = 108: a3742f4 win32: use native ANSI sequence processing, if possible
110: 8d4b504 = 109: 5264077 git.rc: include winuser.h
113: 659c640 = 110: 4d9ebe3 ci: work around a problem with HTTP/2 vs libcurl v8.10.0
114: 1de9cad = 111: ef1206c pack-objects: add --full-name-hash option
115: ed17b4f = 112: a79d35a repack: test --full-name-hash option
116: 0990abf = 113: 8da7363 pack-objects: add GIT_TEST_FULL_NAME_HASH
117: acfc334 = 114: 9b1f343 git-repack: update usage to match docs
111: 5a7a5ba = 115: dbd4e4a common-main.c: fflush stdout buffer upon exit
112: 7c23b9e = 116: 7b12c55 t5601/t7406(mingw): do run tests with symlink support
121: d433451 = 117: 43ad970 win32: ensure that
localtime_r()
is declared even in i686 builds122: c12070c = 118: fd55ede Fallback to AppData if XDG_CONFIG_HOME is unset
123: 5e1a683 = 119: f08d175 run-command: be helpful with Git LFS fails on Windows 7
118: 33f3064 = 120: fe91a8a p5313: add size comparison test
119: 9fb1426 = 121: 9e9b294 test-tool: add helper for name-hash values
120: 131c260 = 122: 36064b6 repack/pack-objects: mark
--full-name-hash
as experimental124: 74ce00b = 123: 98030c3 path-walk: introduce an object walk by path
125: a2cf338 = 124: 4534fc6 t6601: add helper for testing path-walk API
126: e34dc72 = 125: 048428a path-walk: allow consumer to specify object types
127: 0e42bfa = 126: a3d393b path-walk: allow visiting tags
128: 63fa634 = 127: e35f96d revision: create mark_trees_uninteresting_dense()
129: e545bee = 128: ee8deef path-walk: add prune_all_uninteresting option
130: d90b21c = 129: f997fc8 pack-objects: extract should_attempt_deltas()
131: 159547f = 130: 7075c09 pack-objects: add --path-walk option
132: fc70c9f = 131: 2d88d3f pack-objects: introduce GIT_TEST_PACK_PATH_WALK
133: 34e991a = 132: 1d621e1 repack: add --path-walk option
134: 557e23b = 133: 91c1e93 pack-objects: enable --path-walk via config
135: b1d9661 = 134: 14f998c scalar: enable path-walk during push via config
136: 7b59e6c = 135: 4bad79d pack-objects: refactor path-walk delta phase
137: a7681ff = 136: 0603e43 pack-objects: thread the path-based compression
138: 9ed9a44 = 137: 23ae924 path-walk API: avoid adding a root tree more than once
140: 5de5395 = 138: 58eb7f1 backfill: add builtin boilerplate
141: ec146ba = 139: ebd1692 backfill: basic functionality and tests
142: dc94934 = 140: 6bbc831 backfill: add --batch-size= option
143: 35b7e38 = 141: 4f329aa backfill: add --sparse option
144: 2264e15 = 142: 5126f20 backfill: assume --sparse when sparse-checkout is enabled
145: a86d017 = 143: d0bd4c0 backfill: mark it as experimental
146: c6b7ce0 = 144: 2787935 survey: stub in new experimental 'git-survey' command
147: 7d894d8 = 145: 81a04f4 survey: add command line opts to select references
148: 0d8393e = 146: 3ee79f0 survey: start pretty printing data in table form
149: db19259 = 147: 2f3acdf survey: add object count summary
150: 4019c90 = 148: ea53fbb survey: summarize total sizes by object type
151: 1edff6d = 149: e073a42 survey: show progress during object walk
152: e65957e = 150: 2c1b163 survey: add ability to track prioritized lists
153: fc9fb68 = 151: 64b2ec2 survey: add report of "largest" paths
154: 5c03374 = 152: 59481d1 survey: add --top= option and config
155: c1267cc = 153: 31789fd survey: clearly note the experimental nature in the output
156: 084fec0 = 154: c847baa path-walk: improve path-walk speed with many tags
19: 22ca7af = 155: 5c96513 mingw: make sure
errno
is set correctly when socket operations fail139: 1350d79 (upstream: d02c37c) < -: ------------ t-reftable-basics: stop assuming that
malloc
is not a constant271: af9a2b6 = 156: 78e72dc compat/mingw: handle WSA errors in strerror
272: 0cf45c8 ! 157: fd6b18f compat/mingw: drop outdated comment
273: c4d7ea8 = 158: 5ae96a2 t0301: actually test credential-cache on Windows
274: ef52c17 = 159: 09fe109 credential-cache: handle ECONNREFUSED gracefully
157: 09c9eaf = 160: 8765262 Win32: make FILETIME conversion functions public
158: 8a2cf44 = 161: afb6c97 Win32: dirent.c: Move opendir down
159: 8bccc70 = 162: 5394912 mingw: make the dirent implementation pluggable
160: d70dde0 = 163: 4d6c9ae Win32: make the lstat implementation pluggable
161: 79b7550 = 164: 6d933f6 mingw: add infrastructure for read-only file system level caches
162: 31d1d18 = 165: 4bd5d05 mingw: add a cache below mingw's lstat and dirent implementations
163: fedce44 = 166: ac62ab4 fscache: load directories only once
164: 101b990 = 167: 0b4d50d fscache: add key for GIT_TRACE_FSCACHE
165: 537c684 = 168: 22e59f4 fscache: remember not-found directories
166: 26e514b = 169: 6f5197b fscache: add a test for the dir-not-found optimization
167: 4a0b366 = 170: 6b3627f add: use preload-index and fscache for performance
168: de1f16b = 171: bd69cf7 dir.c: make add_excludes aware of fscache during status
169: ccae4a7 = 172: 3de1d72 fscache: make fscache_enabled() public
170: 675d8dc = 173: b8686d7 dir.c: regression fix for add_excludes with fscache
171: 62a3d3c = 174: b2c8d16 fetch-pack.c: enable fscache for stats under .git/objects
172: 71c8974 = 175: 2bdea05 checkout.c: enable fscache for checkout again
173: 7ffa2ec = 176: ade2577 Enable the filesystem cache (fscache) in refresh_index().
174: 0c81d79 = 177: 72e7282 fscache: use FindFirstFileExW to avoid retrieving the short name
175: d27fb3c = 178: 24990f9 status: disable and free fscache at the end of the status command
176: b0da78f = 179: 17b2ca1 fscache: add GIT_TEST_FSCACHE support
177: c27092b = 180: 71c001b fscache: add fscache hit statistics
178: 409d6ec = 181: 3d55d81 mem_pool: add GIT_TRACE_MEMPOOL support
179: 0d603f9 = 182: b0d0b14 fscache: fscache takes an initial size
180: 580ced9 = 183: d042571 fscache: update fscache to be thread specific instead of global
181: 1ad0115 = 184: f5368b6 fscache: teach fscache to use mempool
182: 8e76d16 = 185: 31d4005 fscache: make fscache_enable() thread safe
184: fe8536e = 186: cf693a8 fscache: teach fscache to use NtQueryDirectoryFile
186: f67147a = 187: e47cadc unpack-trees: enable fscache for sparse-checkout
188: 8ee5310 = 188: 5fc6a7c fscache: remember the reparse tag for each entry
190: 00da8ee = 189: 014d3fe fscache: implement an FSCache-aware is_mount_point()
183: 8393a50 = 190: 7182f92 git-gui: provide question helper for retry fallback on Windows
192: 36b6ed3 = 191: bc90e75 clean: make use of FSCache
185: 6704d86 = 192: 25f46e3 git gui: set GIT_ASKPASS=git-gui--askpass if not set yet
193: 908c5a1 = 193: 138f2a2 gitk: Unicode file name support
187: 2bd9665 = 194: e1f73ec git-gui--askyesno: fix funny text wrapping
194: 1a36bff = 195: 5c6b2a6 gitk: Use an external icon file on Windows
189: 7117b15 = 196: b532ee6 git-gui--askyesno: allow overriding the window title
195: 8999621 = 197: 4a5f1dc gitk: fix arrow keys in input fields with Tcl/Tk >= 8.6
191: cd492f2 = 198: d033151 git-gui--askyesno (mingw): use Git for Windows' icon, if available
196: cafd484 = 199: 17d1088 gitk: make the "list references" default window width wider
197: 327543d = 200: 6adb8e4 pack-objects (mingw): demonstrate a segmentation fault with large deltas
198: bfc3db8 = 201: 94378c1 mingw: support long paths
199: 05674cc = 202: a5d11ab Win32: fix 'lstat("dir/")' with long paths
200: 4ec7736 = 203: 3c4cd62 win32(long path support): leave drive-less absolute paths intact
201: 884eda4 = 204: 072902e mingw: Support
git_terminal_prompt
with more terminals202: 448abe1 = 205: e79bbe4 compat/terminal.c: only use the Windows console if bash 'read -r' fails
203: 7f91760 = 206: 0449fa6 mingw (git_terminal_prompt): do fall back to CONIN$/CONOUT$ method
204: af1cd45 = 207: 37575e0 strbuf_readlink: don't call readlink twice if hint is the exact link size
210: 5f4c415 = 208: 314d9aa compat/fsmonitor/fsm-*-win32: support long paths
211: 4b2711a = 209: 2286800 clean: suggest using
core.longPaths
if paths are too long to remove205: dedb1ae = 210: 16ba97e strbuf_readlink: support link targets that exceed PATH_MAX
206: 2e09e44 = 211: 3bbb298 lockfile.c: use is_dir_sep() instead of hardcoded '/' checks
207: aadf124 = 212: 014c9ba Win32: don't call GetFileAttributes twice in mingw_lstat()
208: de191d1 = 213: a5e362e Win32: implement stat() with symlink support
209: af7734a = 214: 70e161c Win32: remove separate do_lstat() function
212: 7a45cf7 = 215: 6a57f09 Win32: let mingw_lstat() error early upon problems with reparse points
213: 6c99a15 = 216: d1a637d mingw: teach fscache and dirent about symlinks
214: 41c5c14 = 217: b160896 Win32: lstat(): return adequate stat.st_size for symlinks
215: 65b8430 = 218: 3b126ac Win32: factor out retry logic
216: a67d839 = 219: 60b07ae Win32: change default of 'core.symlinks' to false
217: 24160db = 220: eddaa17 Win32: add symlink-specific error codes
218: d3df280 = 221: db44028 Win32: mingw_unlink: support symlinks to directories
219: 87b35ec = 222: 9be895c Win32: mingw_rename: support renaming symlinks
220: 4a58657 = 223: 0ee6c2c Win32: mingw_chdir: change to symlink-resolved directory
221: 585b4bb = 224: 6fa7f53 Win32: implement readlink()
222: 4236f8c = 225: 16c8396 mingw: lstat: compute correct size for symlinks
223: 17bf729 = 226: 4bcc8a5 Win32: implement basic symlink() functionality (file symlinks only)
224: f7ab0fb = 227: 0a04e07 Win32: symlink: add support for symlinks to directories
225: 96891c3 = 228: e4a2ade mingw: try to create symlinks without elevated permissions
226: 85d41e4 = 229: cffe5af mingw: emulate stat() a little more faithfully
227: c80d141 = 230: 71f5ae4 mingw: special-case index entries for symlinks with buggy size
228: 06376e6 = 231: 3b7f7fa mingw: introduce code to detect whether we're inside a Windows container
229: eb17c48 = 232: 7cd902e mingw: when running in a Windows container, try to rename() harder
230: f33e574 = 233: 11f08d4 mingw: move the file_attr_to_st_mode() function definition
231: 167e81d = 234: f558a61 mingw: Windows Docker volumes are not symbolic links
232: e13c7c6 = 235: 249fd8a Win32: symlink: move phantom symlink creation to a separate function
234: ad1b7a4 = 236: 4d5a59a Introduce helper to create symlinks that knows about index_state
235: 3199b1b = 237: 61e072f mingw: allow to specify the symlink type in .gitattributes
236: faf1f46 = 238: b093fc0 Win32: symlink: add test for
symlink
attribute237: dfbdd01 = 239: 07d0a7a mingw: explicitly specify with which cmd to prefix the cmdline
238: 0612f86 = 240: 132edae mingw: when path_lookup() failed, try BusyBox
239: 3b9554e = 241: 95e3587 test-lib: avoid unnecessary Perl invocation
240: f6719f8 = 242: bcec4b7 test-tool: learn to act as a drop-in replacement for
iconv
241: d7f4c1d = 243: cf2505f tests(mingw): if
iconv
is unavailable, usetest-helper --iconv
242: f03dc97 = 244: 6c4d258 gitattributes: mark .png files as binary
233: 3e617a8 = 245: e333dec mingw: work around rename() failing on a read-only file
243: 14fa4bf = 246: 7a8d524 tests: move test PNGs into t/lib-diff/
244: 87dc864 = 247: dbd5f28 tests: only override sort & find if there are usable ones in /usr/bin/
245: 3789353 = 248: 1064509 tests: use the correct path separator with BusyBox
246: 6a6623b = 249: d442413 mingw: only use Bash-ism
builtin pwd -W
when available247: 7f70225 = 250: 14549d6 tests (mingw): remove Bash-specific pwd option
248: 5503200 = 251: ace3077 test-lib: add BUSYBOX prerequisite
249: 7ccc72d = 252: 332f414 t5003: use binary file from t/lib-diff/
250: bf6204f = 253: 5099904 t5532: workaround for BusyBox on Windows
251: 7c97cdd = 254: 680c136 t5605: special-case hardlink test for BusyBox-w32
252: 25a13ab = 255: bb27736 t5813: allow for $PWD to be a Windows path
253: 7e1cf71 = 256: ac2fe47 t9200: skip tests when $PWD contains a colon
254: 77fb64f = 257: 9db019a mingw: add a Makefile target to copy test artifacts
256: 0adaeae = 258: 1ecb133 mingw: kill child processes in a gentler way
258: 3a711ce = 259: 4238ff7 mingw: do not call xutftowcs_path in mingw_mktemp
255: 2e1f7ed = 260: c4cee35 mingw: optionally enable wsl compability file mode bits
257: 64b0171 = 261: 0eaad07 mingw: really handle SIGINT
260: de57309 = 262: e1a61a8 Partially un-revert "editor: save and reset terminal after calling EDITOR"
264: 49453d0 = 263: 6071d7a Describe Git for Windows' architecture [no ci]
265: 2890784 = 264: d94525a Modify the Code of Conduct for Git for Windows
266: 2b556c9 = 265: 6e5660d CONTRIBUTING.md: add guide for first-time contributors
267: b7c9a2b = 266: 07c3ffc README.md: Add a Windows-specific preamble
268: 1f22ae1 = 267: 126f900 Add an issue template
259: a0a9279 = 268: fc4f4cd Add a GitHub workflow to monitor component updates
269: 5b004bc = 269: a1fc7cd Modify the GitHub Pull Request template (to reflect Git for Windows)
261: db1e920 = 270: e4fe80e reset: reinstate support for the deprecated --stdin option
262: c359f03 = 271: c3c769b fsmonitor: reintroduce core.useBuiltinFSMonitor
263: 8732d41 = 272: b18e4dc dependabot: help keeping GitHub Actions versions up to date
270: b6c04e4 = 273: ed5a452 SECURITY.md: document Git for Windows' policies
275: 9b81fae (upstream: 1fbb8d7) < -: ------------ builtin/blame: fix out-of-bounds read with excessive
--abbrev
276: 049f0cf (upstream: 64f3ff3) < -: ------------ GIT-VERSION-GEN: allow it to be run in parallel