Rebase shears/seen: 4 conflict(s) (0 skipped, 4 resolved) (#28764452175)#282
Open
gitforwindowshelper[bot] wants to merge 336 commits into
Open
Rebase shears/seen: 4 conflict(s) (0 skipped, 4 resolved) (#28764452175)#282gitforwindowshelper[bot] wants to merge 336 commits into
gitforwindowshelper[bot] wants to merge 336 commits into
Conversation
In order to be a better Windows citizenship, Git should save its configuration files on AppData folder. This can enables git configuration files be replicated between machines using the same Microsoft account logon which would reduce the friction of setting up Git on new systems. Therefore, if %APPDATA%\Git\config exists, we use it; otherwise $HOME/.config/git/config is used. Signed-off-by: Ariel Lourenco <ariellourenco@users.noreply.github.com>
Git LFS is now built with Go 1.21 which no longer supports Windows 7. However, Git for Windows still wants to support Windows 7. Ideally, Git LFS would re-introduce Windows 7 support until Git for Windows drops support for Windows 7, but that's not going to happen: git-for-windows#4996 (comment) The next best thing we can do is to let the users know what is happening, and how to get out of their fix, at least. This is not quite as easy as it would first seem because programs compiled with Go 1.21 or newer will simply throw an exception and fail with an Access Violation on Windows 7. The only way I found to address this is to replicate the logic from Go's very own `version` command (which can determine the Go version with which a given executable was built) to detect the situation, and in that case offer a helpful error message. This addresses git-for-windows#4996. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
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 <stolee@gmail.com>
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 <stolee@gmail.com> Signed-off-by: Jeff Hostetler <git@jeffhostetler.com> Signed-off-by: Derrick Stolee <stolee@gmail.com>
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 <git@jeffhostetler.com> Signed-off-by: Derrick Stolee <stolee@gmail.com> Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
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 <stolee@gmail.com>
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 <stolee@gmail.com>
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. Note: zlib-ng is slightly more efficient even at those small sizes. Even between zlib versions, there are slight differences in compression. To accommodate for that in the tests, not the exact numbers but some rough approximations are validated (the test should validate `git survey`, after all, not zlib). Signed-off-by: Derrick Stolee <stolee@gmail.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Derrick Stolee <stolee@gmail.com>
The winsock2 library provides functions that work on different data types than file descriptors, therefore we wrap them. But that is not the only difference: they also do not set `errno` but expect the callers to enquire about errors via `WSAGetLastError()`. Let's translate that into appropriate `errno` values whenever the socket operations fail so that Git's code base does not have to change its expectations. This closes git-for-windows#2404 Helped-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
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 <git@jeffhostetler.com> Signed-off-by; Jeff Hostetler <git@jeffhostetler.com> Signed-off-by: Derrick Stolee <stolee@gmail.com>
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 <mirth.hickford@gmail.com> Signed-off-by: Matthias Aßhauer <mha1993@live.de> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
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'.
The exact disk size seems to be not quite robust enough for testing, as
could be seen by the `linux-musl-meson` job consistently failing, possibly
because of zlib-ng deflates differently: t8100.4(git survey
(default)) was failing with a symptom like this:
TOTAL OBJECT SIZES BY TYPE
===============================================
Object Type | Count | Disk Size | Inflated Size
------------+-------+-----------+--------------
- Commits | 10 | 1523 | 2153
+ Commits | 10 | 1528 | 2153
Trees | 10 | 495 | 1706
Blobs | 10 | 191 | 101
- Tags | 4 | 510 | 528
+ Tags | 4 | 547 | 528
This means: the disk size is unlikely something we can verify robustly.
Since zlib-ng seems to increase the disk size of the tags from 528 to
547, we cannot even assume that the disk size is always smaller than the
inflated size. We will most likely want to either skip verifying the
disk size altogether, or go for some kind of fuzzy matching, say, by
replacing `s/ 1[45][0-9][0-9] / ~1.5k /` and `s/ [45][0-9][0-9] / ~½k /`
or something like that.
Signed-off-by: Derrick Stolee <stolee@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This comment has been true for the longest time; The combination of the two preceding commits made it incorrect, so let's drop that comment. Signed-off-by: Matthias Aßhauer <mha1993@live.de> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
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 <stolee@gmail.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
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 <mha1993@live.de> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
While this command is definitely something we _want_, chances are that upstreaming this will require substantial changes. We still want to be able to experiment with this before that, to focus on what we need out of this command: To assist with diagnosing issues with large repositories, as well as to help monitoring the growth and the associated painpoints of such repositories. To that end, we are about to integrate this command into `microsoft/git`, to get the tool into the hands of users who need it most, with the idea to iterate in close collaboration between these users and the developers familar with Git's internals. However, we will definitely want to avoid letting anybody have the impression that this command, its exact inner workings, as well as its output format, are anywhere close to stable. To make that fact utterly clear (and thereby protect the freedom to iterate and innovate freely before upstreaming the command), let's mark its output as experimental in all-caps, as the first thing we do. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
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 <mirth.hickford@gmail.com> Signed-off-by: Matthias Aßhauer <mha1993@live.de> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Preparation for widening the delta-encoding API to size_t in subsequent commits, which is what lets pack-objects drop the cast_size_t_to_ulong() shims that 606c192 (odb, packfile: use size_t for streaming object sizes, 2026-05-08) had to leave behind in get_delta() and try_delta() because their downstream consumers were still narrow. The struct is private to diff-delta.c, so widening its fields in isolation is a no-op at runtime: the values stored continue to fit in 32 bits on Windows because the public API around it still truncates. Splitting it out keeps the API-change commit focused on caller updates. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
The sole caller (try_delta() in builtin/pack-objects.c) passes an unsigned long, which promotes safely, so no caller fixups are needed. Splitting it out keeps the diff_delta() / create_delta() widening, which does ripple to several callers, in its own commit. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
These three are a single accounting tuple (the globals tracking cumulative cached-delta bytes, plus the helper that compares them against an incoming delta size) and are latently 32-bit on Windows where unsigned long != size_t: a pack with many large cached deltas could wrap silently. The widening is internally consistent on its own: the additions and subtractions against delta_cache_size already come from size_t sources (DELTA_SIZE() returns size_t), and delta_cacheable()'s sole caller in try_delta() still passes unsigned long, which promotes. Prerequisite for dropping try_delta()'s cast_size_t_to_ulong() shims, which becomes possible once create_delta() and diff_delta() are widened in a later commit. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
free_unpacked() sums two byte counts: sizeof_delta_index() and SIZE(n->entry). The latter has been size_t since the prior topic "More work supporting objects larger than 4GB on Windows" widened SIZE() / oe_size() to size_t, so accumulating it into an unsigned long return was a silent Windows-only truncation on a packing run with many large objects. The sole caller (find_deltas()) holds its own mem_usage in an unsigned long for now and subtracts the return into it, so the new narrowing happens at that subtraction. find_deltas() and the matching try_delta() out-parameter are widened next. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
The pair must move together because find_deltas() passes &mem_usage to try_delta(): widening either alone breaks the type match. mem_usage accumulates per-object byte counts already computed in size_t (SIZE() and sizeof_delta_index() reach here through free_unpacked(), now size_t), and was the last 32-bit-on-Windows narrowing point in the delta-window memory accounting chain. With this commit, that chain is internally size_t end-to-end except for sizeof_delta_index()'s still-narrow return, whose value is bounded by create_delta_index()'s entries cap. window_memory_limit (config-driven via git_config_ulong()) stays unsigned long: it is only compared against mem_usage and promotes. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Last stop in the delta-encoding API widening for >4 GiB blobs on
Windows: with create_delta_index() done in the prior commit and
create_delta()/diff_delta() finished here, every byte count that
crosses delta.h is now size_t. The struct fields they store into
have been size_t since the diff-delta struct widening.
The API change must move with all callers in the same commit (the
build only passes when every &delta_size matches the new size_t*).
Caller updates are kept minimal:
* builtin/pack-objects.c get_delta() and try_delta(): widen only
the local delta_size variable; the surrounding unsigned-long
locals and their cast_size_t_to_ulong() shims are out of scope
here and will be cleaned up in their own commits.
* builtin/fast-import.c, diff.c, t/helper/test-pack-deltas.c:
keep the local unsigned-long delta size (each feeds a still-
unsigned-long downstream consumer: zlib's avail_in,
deflate_it(), the test helper's own do_compress()), and bridge
via a temporary size_t plus cast_size_t_to_ulong(). The new
casts are paid back in later topics that widen those consumers.
* t/helper/test-delta.c: widen the local outright (no downstream
consumer beyond the test's own out_size, which is already
size_t).
Assisted-by: Opus 4.7
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Bundling the two widenings: four call sites pass &stream.avail_in directly to use_pack(), and widening either type fencepost alone would force a bridge variable at each. Doing both together is the simpler end state and is the prerequisite for the do_compress() widening in the next commit, which is what lets write_no_reuse_object() lose its last cast_size_t_to_ulong() shim. The unsigned-long locals widened at the other use_pack() callers (avail / remaining / left) hold pack-window sizes bounded by core.packedGitWindowSize, so the change is type consistency rather than a new >4GB capability. git_zstream.avail_in / avail_out likewise reach zlib's uInt fields only after zlib_buf_cap()'s 1 GiB cap, so the wrapper already accepted size_t-shaped inputs in practice. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Prep for the upcoming git_deflate_bound() widening to size_t: the local that catches its return needs to be size_t too, otherwise the widening would introduce a silent Windows narrowing here. No semantic effect with the current unsigned-long-returning git_deflate_bound() (size_t == unsigned long on this caller's platforms today). Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Fixes a pre-existing silent narrowing from git_deflate_bound()'s unsigned long return into an int local: anything past 2 GiB has always wrapped negative here and then been re-extended to size_t inside xmalloc(). Also prep for the upcoming git_deflate_bound() widening to size_t, which would extend the narrowing further if bound stayed int. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Although NTLM authentication is considered weak (extending even to
NTLMv2, which purportedly allows brute-forcing reasonably complex
8-character passwords in a matter of days, given ample compute
resources), it _is_ one of the authentication methods supported by
libcurl.
Note: The added test case *cannot* reuse the existing `custom_auth`
facility. The reason is that that facility is backed by an NPH script
("No Parse Headers"), which does not allow handling the 3-phase NTLM
authentication correctly (in my hands, the NPH script would not even be
called upon the Type 3 message, a "200 OK" would be returned, but no
headers, let alone the `git http-backend` output as payload). Having a
separate NTLM authentication script makes the exact workings clearer and
more readable, anyway.
Co-authored-by: Matthew John Cheetham <mjcheetham@outlook.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This will come in handy in the next commit. Signed-off-by: JiSeop Moon <zcube@zcube.kr> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Bert Belder <bertbelder@gmail.com>
At some stage, t5003-archive-zip wants to add a file that is not ASCII. To that end, it uses /bin/sh. But that file may actually not exist (it is too easy to forget that not all the world is Unix/Linux...)! Besides, we already have perfectly fine binary files intended for use solely by the tests. So let's use one of them instead. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
The Git for Windows project has grown quite complex over the years, certainly much more complex than during the first years where the `msysgit.git` repository was abusing Git for package management purposes and the `git/git` fork was called `4msysgit.git`. Let's describe the status quo in a thorough way. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
While it may seem super convenient to some old Unix hands to simpy require Perl to be available when running the test suite, this is a major hassle on Windows, where we want to verify that Perl is not, actually, required in a NO_PERL build. As a super ugly workaround, we "install" a script into /usr/bin/perl reading like this: #!/bin/sh # We'd much rather avoid requiring Perl altogether when testing # an installed Git. Oh well, that's why we cannot have nice # things. exec c:/git-sdk-64/usr/bin/perl.exe "$@" The problem with that is that BusyBox assumes that the #! line in a script refers to an executable, not to a script. So when it encounters the line #!/usr/bin/perl in t5532's proxy-get-cmd, it barfs. Let's help this situation by simply executing the Perl script with the "interpreter" specified explicitly. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
In this time and age, AI is everywhere. However, it's sometimes not very easy to use. For green-field projects it works quite a bit better than for existing legacy projects. And Git's source code is _quite_ as legacy code as they come... 😁 Now, the only way how AI can be used efficiently with legacy code is by providing enough information by way of prompt context for the AI to have a chance to make any sense of the code. The structure and the architecture is, after all, not designed for AI, but rather the opposite: By virtue of having grown organically over two decades, there is no design that AI coding models would readily grasp. So here is a document that describes all kinds of aspects about this project. The idea is to help AI by providing information that it does not have ingrained in its weights. The idea is to provide information that a human prompter might take for granted, but no coding model will have been trained on specifically. Assisted-by: Claude Opus 4.5 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
When t5605 tries to verify that files are hardlinked (or that they are not), it uses the `-links` option of the `find` utility. BusyBox' implementation does not support that option, and BusyBox-w32's lstat() does not even report the number of hard links correctly (for performance reasons). So let's just switch to a different method that actually works on Windows. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
The Git project followed Git for Windows' lead and added their Code of Conduct, based on the Contributor Covenant v1.4, later updated to v2.0. We adapt it slightly to Git for Windows. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Git for Windows uses MSYS2's Bash to run the test suite, which comes with benefits but also at a heavy price: on the plus side, MSYS2's POSIX emulation layer allows us to continue pretending that we are on a Unix system, e.g. use Unix paths instead of Windows ones, yet this is bought at a rather noticeable performance penalty. There *are* some more native ports of Unix shells out there, though, most notably BusyBox-w32's ash. These native ports do not use any POSIX emulation layer (or at most a *very* thin one, choosing to avoid features such as fork() that are expensive to emulate on Windows), and they use native Windows paths (usually with forward slashes instead of backslashes, which is perfectly legal in almost all use cases). And here comes the problem: with a $PWD looking like, say, C:/git-sdk-64/usr/src/git/t/trash directory.t5813-proto-disable-ssh Git's test scripts get quite a bit confused, as their assumptions have been shattered. Not only does this path contain a colon (oh no!), it also does not start with a slash. This is a problem e.g. when constructing a URL as t5813 does it: ssh://remote$PWD. Not only is it impossible to separate the "host" from the path with a $PWD as above, even prefixing $PWD by a slash won't work, as /C:/git-sdk-64/... is not a valid path. As a workaround, detect when $PWD does not start with a slash on Windows, and simply strip the drive prefix, using an obscure feature of Windows paths: if an absolute Windows path starts with a slash, it is implicitly prefixed by the drive prefix of the current directory. As we are talking about the current directory here, anyway, that strategy works. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
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 <mha1993@live.de> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
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 <dstolee@microsoft.com>
On Windows, the current working directory is pretty much guaranteed to contain a colon. If we feed that path to CVS, it mistakes it for a separator between host and port, though. This has not been a problem so far because Git for Windows uses MSYS2's Bash using a POSIX emulation layer that also pretends that the current directory is a Unix path (at least as long as we're in a shell script). However, that is rather limiting, as Git for Windows also explores other ports of other Unix shells. One of those is BusyBox-w32's ash, which is a native port (i.e. *not* using any POSIX emulation layer, and certainly not emulating Unix paths). So let's just detect if there is a colon in $PWD and punt in that case. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
…ITOR" In e3f7e01 (Revert "editor: save and reset terminal after calling EDITOR", 2021-11-22), we reverted the commit wholesale where the terminal state would be saved and restored before/after calling an editor. The reverted commit was intended to fix a problem with Windows Terminal where simply calling `vi` would cause problems afterwards. To fix the problem addressed by the revert, but _still_ keep the problem with Windows Terminal fixed, let's revert the revert, with a twist: we restrict the save/restore _specifically_ to the case where `vi` (or `vim`) is called, and do not do the same for any other editor. This should still catch the majority of the cases, and will bridge the time until the original patch is re-done in a way that addresses all concerns. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
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 <vdye@github.com> Helped-by: Matthew John Cheetham <mjcheetham@outlook.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Reintroduce the 'core.useBuiltinFSMonitor' config setting (originally added in 0a756b2 (fsmonitor: config settings are repository-specific, 2021-03-05)) after its removal from the upstream version of FSMonitor. Upstream, the 'core.useBuiltinFSMonitor' setting was rendered obsolete by "overloading" the 'core.fsmonitor' setting to take a boolean value. However, several applications (e.g., 'scalar') utilize the original config setting, so it should be preserved for a deprecation period before complete removal: * if 'core.fsmonitor' is a boolean, the user is correctly using the new config syntax; do not use 'core.useBuiltinFSMonitor'. * if 'core.fsmonitor' is unspecified, use 'core.useBuiltinFSMonitor'. * if 'core.fsmonitor' is a path, override and use the builtin FSMonitor if 'core.useBuiltinFSMonitor' is 'true'; otherwise, use the FSMonitor hook indicated by the path. Additionally, for this deprecation period, advise users to switch to using 'core.fsmonitor' to specify their use of the builtin FSMonitor. Signed-off-by: Victoria Dye <vdye@github.com>
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 <johannes.schindelin@gmx.de>
Includes touch-ups by 마누엘, Philip Oakley and 孙卓识. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
With improvements by Clive Chan, Adric Norris, Ben Bodenmiller and Philip Oakley. Helped-by: Clive Chan <cc@clive.io> Helped-by: Adric Norris <landstander668@gmail.com> Helped-by: Ben Bodenmiller <bbodenmiller@hotmail.com> Helped-by: Philip Oakley <philipoakley@iee.org> Signed-off-by: Brendan Forster <brendan@github.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
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 <philipoakley@iee.org> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This is the recommended way on GitHub to describe policies revolving around security issues and about supported versions. Helped-by: Sven Strickroth <email@cs-ware.de> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
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 <johannes.schindelin@gmx.de>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
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 <johannes.schindelin@gmx.de>
Upstream Git does not test their tags with the expensive set of tests, so a couple of them seem quite broken for now, even so much as hanging indefinitely. It is outside of the responsibility of the Git for Windows project to fix upstream's own tests for platforms other than Windows, so let's not exercise them. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
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 <johannes.schindelin@gmx.de>
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 <johannes.schindelin@gmx.de>
…updates Start monitoring updates of Git for Windows' component in the open
Bumps [actions/cache](https://github.com/actions/cache) from 5 to 6. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](actions/cache@v5...v6) --- updated-dependencies: - dependency-name: actions/cache dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Add a README.md for GitHub goodness. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Bumps [actions/cache](https://github.com/actions/cache) from 5 to 6. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/cache/releases">actions/cache's releases</a>.</em></p> <blockquote> <h2>v6.0.0</h2> <h2>What's Changed</h2> <ul> <li>Update packages, migrate to ESM by <a href="https://github.com/Samirat"><code>@Samirat</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1760">actions/cache#1760</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v5...v6.0.0">https://github.com/actions/cache/compare/v5...v6.0.0</a></p> <h2>v5.1.0</h2> <h2>What's Changed</h2> <ul> <li>Bump <code>@actions/cache</code> to v5.1.0 - handle read-only cache access by <a href="https://github.com/jasongin"><code>@jasongin</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1775">actions/cache#1775</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v5...v5.1.0">https://github.com/actions/cache/compare/v5...v5.1.0</a></p> <h2>v5.0.5</h2> <h2>What's Changed</h2> <ul> <li>Update ts-http-runtime dependency by <a href="https://github.com/yacaovsnc"><code>@yacaovsnc</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1747">actions/cache#1747</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v5...v5.0.5">https://github.com/actions/cache/compare/v5...v5.0.5</a></p> <h2>v5.0.4</h2> <h2>What's Changed</h2> <ul> <li>Add release instructions and update maintainer docs by <a href="https://github.com/Link"><code>@Link</code></a>- in <a href="https://redirect.github.com/actions/cache/pull/1696">actions/cache#1696</a></li> <li>Potential fix for code scanning alert no. 52: Workflow does not contain permissions by <a href="https://github.com/Link"><code>@Link</code></a>- in <a href="https://redirect.github.com/actions/cache/pull/1697">actions/cache#1697</a></li> <li>Fix workflow permissions and cleanup workflow names / formatting by <a href="https://github.com/Link"><code>@Link</code></a>- in <a href="https://redirect.github.com/actions/cache/pull/1699">actions/cache#1699</a></li> <li>docs: Update examples to use the latest version by <a href="https://github.com/XZTDean"><code>@XZTDean</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1690">actions/cache#1690</a></li> <li>Fix proxy integration tests by <a href="https://github.com/Link"><code>@Link</code></a>- in <a href="https://redirect.github.com/actions/cache/pull/1701">actions/cache#1701</a></li> <li>Fix cache key in examples.md for bun.lock by <a href="https://github.com/RyPeck"><code>@RyPeck</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1722">actions/cache#1722</a></li> <li>Update dependencies & patch security vulnerabilities by <a href="https://github.com/Link"><code>@Link</code></a>- in <a href="https://redirect.github.com/actions/cache/pull/1738">actions/cache#1738</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/XZTDean"><code>@XZTDean</code></a> made their first contribution in <a href="https://redirect.github.com/actions/cache/pull/1690">actions/cache#1690</a></li> <li><a href="https://github.com/RyPeck"><code>@RyPeck</code></a> made their first contribution in <a href="https://redirect.github.com/actions/cache/pull/1722">actions/cache#1722</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v5...v5.0.4">https://github.com/actions/cache/compare/v5...v5.0.4</a></p> <h2>v5.0.3</h2> <h2>What's Changed</h2> <ul> <li>Bump <code>@actions/cache</code> to v5.0.5 (Resolves: <a href="https://github.com/actions/cache/security/dependabot/33">https://github.com/actions/cache/security/dependabot/33</a>)</li> <li>Bump <code>@actions/core</code> to v2.0.3</li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v5...v5.0.3">https://github.com/actions/cache/compare/v5...v5.0.3</a></p> <h2>v.5.0.2</h2> <h1>v5.0.2</h1> <h2>What's Changed</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/actions/cache/blob/main/RELEASES.md">actions/cache's changelog</a>.</em></p> <blockquote> <h1>Releases</h1> <h2>How to prepare a release</h2> <blockquote> <p>[!NOTE] Relevant for maintainers with write access only.</p> </blockquote> <ol> <li>Switch to a new branch from <code>main</code>.</li> <li>Run <code>npm test</code> to ensure all tests are passing.</li> <li>Update the version in <a href="https://github.com/actions/cache/blob/main/package.json"><code>https://github.com/actions/cache/blob/main/package.json</code></a>.</li> <li>Run <code>npm run build</code> to update the compiled files.</li> <li>Update this <a href="https://github.com/actions/cache/blob/main/RELEASES.md"><code>https://github.com/actions/cache/blob/main/RELEASES.md</code></a> with the new version and changes in the <code>## Changelog</code> section.</li> <li>Run <code>licensed cache</code> to update the license report.</li> <li>Run <code>licensed status</code> and resolve any warnings by updating the <a href="https://github.com/actions/cache/blob/main/.licensed.yml"><code>https://github.com/actions/cache/blob/main/.licensed.yml</code></a> file with the exceptions.</li> <li>Commit your changes and push your branch upstream.</li> <li>Open a pull request against <code>main</code> and get it reviewed and merged.</li> <li>Draft a new release <a href="https://github.com/actions/cache/releases">https://github.com/actions/cache/releases</a> use the same version number used in <code>package.json</code> <ol> <li>Create a new tag with the version number.</li> <li>Auto generate release notes and update them to match the changes you made in <code>RELEASES.md</code>.</li> <li>Toggle the set as the latest release option.</li> <li>Publish the release.</li> </ol> </li> <li>Navigate to <a href="https://github.com/actions/cache/actions/workflows/release-new-action-version.yml">https://github.com/actions/cache/actions/workflows/release-new-action-version.yml</a> <ol> <li>There should be a workflow run queued with the same version number.</li> <li>Approve the run to publish the new version and update the major tags for this action.</li> </ol> </li> </ol> <h2>Changelog</h2> <h3>6.1.0</h3> <ul> <li>Bump <code>@actions/cache</code> to v6.1.0 to pick up <a href="https://redirect.github.com/actions/toolkit/pull/2435">actions/toolkit#2435 Handle cache write error due to read-only token</a></li> <li>Switch redundant "Cache save failed" warning to debug log in save-only</li> </ul> <h3>6.0.0</h3> <ul> <li>Updated <code>@actions/cache</code> to ^6.0.1, <code>@actions/core</code> to ^3.0.1, <code>@actions/exec</code> to ^3.0.0, <code>@actions/io</code> to ^3.0.2</li> <li>Migrated to ESM module system</li> <li>Upgraded Jest to v30 and test infrastructure to be ESM compatible</li> </ul> <h3>5.0.4</h3> <ul> <li>Bump <code>minimatch</code> to v3.1.5 (fixes ReDoS via globstar patterns)</li> <li>Bump <code>undici</code> to v6.24.1 (WebSocket decompression bomb protection, header validation fixes)</li> <li>Bump <code>fast-xml-parser</code> to v5.5.6</li> </ul> <h3>5.0.3</h3> <ul> <li>Bump <code>@actions/cache</code> to v5.0.5 (Resolves: <a href="https://github.com/actions/cache/security/dependabot/33">https://github.com/actions/cache/security/dependabot/33</a>)</li> <li>Bump <code>@actions/core</code> to v2.0.3</li> </ul> <h3>5.0.2</h3> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/cache/commit/55cc8345863c7cc4c66a329aec7e433d2d1c52a9"><code>55cc834</code></a> Merge pull request <a href="https://redirect.github.com/actions/cache/issues/1768">#1768</a> from jasongin/readonly-cache</li> <li><a href="https://github.com/actions/cache/commit/d8cd72f230726cdf4457ebb61ec1b593a8d12337"><code>d8cd72f</code></a> Bump <code>@actions/cache</code> to v6.1.0 - handle cache write error due to RO token</li> <li><a href="https://github.com/actions/cache/commit/2c8a9bd7457de244a408f35966fab2fb45fda9c8"><code>2c8a9bd</code></a> Merge pull request <a href="https://redirect.github.com/actions/cache/issues/1760">#1760</a> from actions/samirat/esm_migration_and_package_update</li> <li><a href="https://github.com/actions/cache/commit/e9b91fdc3fea7d79165fceb79042ef45c2d51023"><code>e9b91fd</code></a> Prettier fixes</li> <li><a href="https://github.com/actions/cache/commit/e4884b8ff7f92ef6b52c79eda480bbc86e685adb"><code>e4884b8</code></a> Rebuild dist</li> <li><a href="https://github.com/actions/cache/commit/10baf0191a3c426ea0fa4a3253a5c04233b6e18f"><code>10baf01</code></a> Fixed licenses</li> <li><a href="https://github.com/actions/cache/commit/e39b386c9004d72a15d864ade8c0b3a702d47a37"><code>e39b386</code></a> Fix test mock return order</li> <li><a href="https://github.com/actions/cache/commit/b6928203372a8571ff984c0c883ef3a1adfb0c06"><code>b692820</code></a> PR feedback</li> <li><a href="https://github.com/actions/cache/commit/60749128a44d25d3c520a489e576380cf00ff3f1"><code>6074912</code></a> Rebuild dist bundles as ESM to match type:module</li> <li><a href="https://github.com/actions/cache/commit/5a912e8b4af820fa082a0e75cfd2c782f8fbfe0e"><code>5a912e8</code></a> Fix lint and jest issues</li> <li>Additional commits viewable in <a href="https://github.com/actions/cache/compare/v5...v6">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
) While upstreaming those patches, I've been asked to adjust them. This backports those fixes. Of course, the _real_ reason to do this _now_ is that I need _some_ PR to make a new Git for Windows release (to address [the NTLM](git-for-windows#6308) issue).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Workflow run
Rebase Summary: seen
From: b0f6e2769f (Some amendments for the
hashliteral_tsize fixes (git-for-windows#6311), 2026-07-03) (e5a67a78b0..b0f6e2769f)Resolved: e17ed3d (survey: stub in new experimental 'git-survey' command, 2024-04-29)
added
surveyto the first case group (both h_expect_outcome and all_expect_outcome = expect_failure) in upstream's restructured case statementRange-diff
1: e17ed3d ! 1: 9836493 survey: stub in new experimental 'git-survey' command
Resolved: d1f82b3 (README.md: Add a Windows-specific preamble, 2014-01-10)
resolved by keeping the Git for Windows preamble, replacing upstream's updated badge lines (GitHub + GitLab) with the GfW-specific header and build instructions
Range-diff
1: d1f82b3 ! 1: a6ff2a5 README.md: Add a Windows-specific preamble
Resolved: e91c3b2 (ci: only run the expensive tests in the Windows tests for now, 2026-06-12)
resolved by keeping the new
test -z "$MSYSTEM" ||guard line while using upstream's renamed$CI_EVENTvariable instead of$GITHUB_EVENT_NAMERange-diff
1: e91c3b2 ! 1: 29030f0 ci: only run the expensive tests in the Windows tests for now
Resolved: b0f6e2769f (Some amendments for the
hashliteral_tsize fixes (git-for-windows#6311), 2026-07-03)resolved by taking HEAD for all files unchanged by the merge, and applying the !LONG_IS_64BIT removal in t/t1007-hash-object.sh
Range-diff
1: b0f6e2769f ! 1: 35fd563 Some amendments for the
hashliteral_tsize fixes (Some amendments for thehashliteral_tsize fixes git#6311)@@ Commit message Of course, the _real_ reason to do this _now_ is that I need _some_ PR to make a new Git for Windows release (to address [the NTLM](https://github.com/git-for-windows/git/issues/6308) issue). + + ## .github/workflows/main.yml ## + remerge CONFLICT (content): Merge conflict in .github/workflows/main.yml + index f3437e0069..57ad4ba64f 100644 + --- .github/workflows/main.yml + +++ .github/workflows/main.yml +@@ .github/workflows/main.yml: jobs: + uses: microsoft/setup-msbuild@v3 + - name: copy dlls to root + shell: cmd +-<<<<<<< ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)) + run: lib\compat\vcbuild\vcpkg_copy_dlls.bat release ${{ matrix.arch }}-windows + - name: generate Visual Studio solution + shell: bash + run: | + cmake `pwd`/contrib/buildsystems/ -DCMAKE_PREFIX_PATH=`pwd`/lib/compat/vcbuild/vcpkg/installed/${{ matrix.arch }}-windows \ +-======= +- run: compat\vcbuild\vcpkg_copy_dlls.bat release ${{ matrix.arch }}-windows +- - name: generate Visual Studio solution +- shell: bash +- run: | +- cmake `pwd`/contrib/buildsystems/ -DCMAKE_PREFIX_PATH=`pwd`/compat/vcbuild/vcpkg/installed/${{ matrix.arch }}-windows \ +->>>>>>> c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input) + -DNO_GETTEXT=YesPlease -DPERL_TESTS=OFF -DPYTHON_TESTS=OFF -DCURL_NO_CURL_CMAKE=ON -DCMAKE_GENERATOR_PLATFORM=${{ matrix.arch }} -DVCPKG_ARCH=${{ matrix.arch }}-windows -DHOST_CPU=${{ matrix.arch }} + - name: MSBuild + run: | + + ## Makefile ## + remerge CONFLICT (content): Merge conflict in Makefile + index 58bacec1da..d79e382ed9 100644 + --- Makefile + +++ Makefile +@@ Makefile: else + endif + + ifdef LAZYLOAD_LIBCURL +-<<<<<<< ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)) + LAZYLOAD_LIBCURL_OBJ = lib/compat/lazyload-curl.o +-======= +- LAZYLOAD_LIBCURL_OBJ = compat/lazyload-curl.o +->>>>>>> c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input) + OBJECTS += $(LAZYLOAD_LIBCURL_OBJ) + # The `CURL_STATICLIB` constant must be defined to avoid seeing the functions + # declared as DLL imports +@@ Makefile: endif + endif + ifdef USE_CURL_FOR_IMAP_SEND + BASIC_CFLAGS += -DUSE_CURL_FOR_IMAP_SEND +-<<<<<<< ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)) + IMAP_SEND_BUILDDEPS = lib/http.o $(LAZYLOAD_LIBCURL_OBJ) +-======= +- IMAP_SEND_BUILDDEPS = http.o $(LAZYLOAD_LIBCURL_OBJ) +->>>>>>> c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input) + IMAP_SEND_LDFLAGS += $(CURL_LIBCURL) + endif + ifndef NO_EXPAT +@@ Makefile: git-imap-send$X: imap-send.o $(IMAP_SEND_BUILDDEPS) GIT-LDFLAGS $(GITLIBS) + $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \ + $(IMAP_SEND_LDFLAGS) $(LIBS) + +-<<<<<<< ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)) + git-http-fetch$X: lib/http.o lib/http-walker.o http-fetch.o $(LAZYLOAD_LIBCURL_OBJ) GIT-LDFLAGS $(GITLIBS) + $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \ + $(CURL_LIBCURL) $(LIBS) + git-http-push$X: lib/http.o http-push.o $(LAZYLOAD_LIBCURL_OBJ) GIT-LDFLAGS $(GITLIBS) +-======= +-git-http-fetch$X: http.o http-walker.o http-fetch.o $(LAZYLOAD_LIBCURL_OBJ) GIT-LDFLAGS $(GITLIBS) +- $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \ +- $(CURL_LIBCURL) $(LIBS) +-git-http-push$X: http.o http-push.o $(LAZYLOAD_LIBCURL_OBJ) GIT-LDFLAGS $(GITLIBS) +->>>>>>> c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input) + $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \ + $(CURL_LIBCURL) $(EXPAT_LIBEXPAT) $(LIBS) + +@@ Makefile: $(REMOTE_CURL_ALIASES): $(REMOTE_CURL_PRIMARY) + ln -s $< $@ 2>/dev/null || \ + cp $< $@ + +-<<<<<<< ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)) + $(REMOTE_CURL_PRIMARY): remote-curl.o lib/http.o lib/http-walker.o $(LAZYLOAD_LIBCURL_OBJ) GIT-LDFLAGS $(GITLIBS) +-======= +-$(REMOTE_CURL_PRIMARY): remote-curl.o http.o http-walker.o $(LAZYLOAD_LIBCURL_OBJ) GIT-LDFLAGS $(GITLIBS) +->>>>>>> c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input) + $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \ + $(CURL_LIBCURL) $(EXPAT_LIBEXPAT) $(LIBS) + + + ## ci/lib.sh ## + remerge CONFLICT (content): Merge conflict in ci/lib.sh + index 126c5818ed..f31a36ceeb 100755 + --- ci/lib.sh + +++ ci/lib.sh +@@ ci/lib.sh: export SKIP_DASHED_BUILT_INS=YesPlease + # In order to catch bugs introduced at integration time by mismerges, + # enable the long tests for pushes to the integration branches as well. + test -z "$MSYSTEM" || +-<<<<<<< ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)) + case "$CI_EVENT,$CI_BRANCH" in +-======= +-case "$GITHUB_EVENT_NAME,$CI_BRANCH" in +->>>>>>> c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input) + pull_request,*|push,*next*|push,*master*|push,*main*|push,*maint*) + export GIT_TEST_LONG=${GIT_TEST_LONG:-true} + ;; + + ## compat/win32/dirent.h (deleted) ## + remerge CONFLICT (modify/delete): compat/win32/dirent.h deleted in ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)) and modified in c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input). Version c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input) of compat/win32/dirent.h left in tree. + index a58a8075fd..0000000000 + --- compat/win32/dirent.h + +++ /dev/null +@@ +-#ifndef DIRENT_H +-#define DIRENT_H +- +-#define DT_UNKNOWN 0 +-#define DT_DIR 1 +-#define DT_REG 2 +-#define DT_LNK 3 +- +-struct dirent { +- unsigned char d_type; /* file type to prevent lstat after readdir */ +- char d_name[/* FLEX_ARRAY */]; /* file name */ +-}; +- +-/* +- * Base DIR structure, contains pointers to readdir/closedir implementations so +- * that opendir may choose a concrete implementation on a call-by-call basis. +- */ +-typedef struct DIR { +- struct dirent *(*preaddir)(struct DIR *dir); +- int (*pclosedir)(struct DIR *dir); +-} DIR; +- +-/* default dirent implementation */ +-extern DIR *dirent_opendir(const char *dirname); +- +-#define opendir git_opendir +- +-/* current dirent implementation */ +-extern DIR *(*opendir)(const char *dirname); +- +-#define readdir(dir) (dir->preaddir(dir)) +-#define closedir(dir) (dir->pclosedir(dir)) +- +-#endif /* DIRENT_H */ + + ## compat/win32/path-utils.c (deleted) ## + remerge CONFLICT (modify/delete): compat/win32/path-utils.c deleted in ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)) and modified in c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input). Version c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input) of compat/win32/path-utils.c left in tree. + index c4fea0301b..0000000000 + --- compat/win32/path-utils.c + +++ /dev/null +@@ +-#define USE_THE_REPOSITORY_VARIABLE +- +-#include "../../git-compat-util.h" +-#include "../../environment.h" +-#include "../../wrapper.h" +-#include "../../strbuf.h" +-#include "../../versioncmp.h" +- +-int win32_has_dos_drive_prefix(const char *path) +-{ +- int i; +- +- /* +- * Does it start with an ASCII letter (i.e. highest bit not set), +- * followed by a colon? +- */ +- if (!(0x80 & (unsigned char)*path)) +- return *path && path[1] == ':' ? 2 : 0; +- +- /* +- * While drive letters must be letters of the English alphabet, it is +- * possible to assign virtually _any_ Unicode character via `subst` as +- * a drive letter to "virtual drives". Even `1`, or `ä`. Or fun stuff +- * like this: +- * +- * subst ֍: %USERPROFILE%\Desktop +- */ +- for (i = 1; i < 4 && (0x80 & (unsigned char)path[i]); i++) +- ; /* skip first UTF-8 character */ +- return path[i] == ':' ? i + 1 : 0; +-} +- +-int win32_skip_dos_drive_prefix(char **path) +-{ +- int ret = has_dos_drive_prefix(*path); +- *path += ret; +- return ret; +-} +- +-int win32_offset_1st_component(const char *path) +-{ +- char *pos = (char *)path; +- +- /* unc paths */ +- if (!skip_dos_drive_prefix(&pos) && +- is_dir_sep(pos[0]) && is_dir_sep(pos[1])) { +- /* skip server name */ +- pos = strpbrk(pos + 2, "\\/"); +- if (!pos) +- return 0; /* Error: malformed unc path */ +- +- do { +- pos++; +- } while (*pos && !is_dir_sep(*pos)); +- } +- +- return pos + is_dir_sep(*pos) - path; +-} +- +-int win32_fspathncmp(const char *a, const char *b, size_t count) +-{ +- int diff; +- +- for (;;) { +- if (!count--) +- return 0; +- if (!*a) +- return *b ? -1 : 0; +- if (!*b) +- return +1; +- +- if (is_dir_sep(*a)) { +- if (!is_dir_sep(*b)) +- return -1; +- a++; +- b++; +- continue; +- } else if (is_dir_sep(*b)) +- return +1; +- +- diff = ignore_case ? +- (unsigned char)tolower(*a) - (int)(unsigned char)tolower(*b) : +- (unsigned char)*a - (int)(unsigned char)*b; +- if (diff) +- return diff; +- a++; +- b++; +- } +-} +- +-int win32_fspathcmp(const char *a, const char *b) +-{ +- return win32_fspathncmp(a, b, (size_t)-1); +-} +- +-static int read_at(int fd, char *buffer, size_t offset, size_t size) +-{ +- if (lseek(fd, offset, SEEK_SET) < 0) { +- fprintf(stderr, "could not seek to 0x%x\n", (unsigned int)offset); +- return -1; +- } +- +- return read_in_full(fd, buffer, size); +-} +- +-static size_t le16(const char *buffer) +-{ +- unsigned char *u = (unsigned char *)buffer; +- return u[0] | (u[1] << 8); +-} +- +-static size_t le32(const char *buffer) +-{ +- return le16(buffer) | (le16(buffer + 2) << 16); +-} +- +-/* +- * Determine the Go version of a given executable, if it was built with Go. +- * +- * This recapitulates the logic from +- * https://github.com/golang/go/blob/master/src/cmd/go/internal/version/version.go +- * (without requiring the user to install `go.exe` to find out). +- */ +-static ssize_t get_go_version(const char *path, char *go_version, size_t go_version_size) +-{ +- int fd = open(path, O_RDONLY); +- char buffer[1024]; +- off_t offset; +- size_t num_sections, opt_header_size, i; +- char *p = NULL, *q; +- ssize_t res = -1; +- +- if (fd < 0) +- return -1; +- +- if (read_in_full(fd, buffer, 2) < 0) +- goto fail; +- +- /* +- * Parse the PE file format, for more details, see +- * https://en.wikipedia.org/wiki/Portable_Executable#Layout and +- * https://learn.microsoft.com/en-us/windows/win32/debug/pe-format +- */ +- if (buffer[0] != 'M' || buffer[1] != 'Z') +- goto fail; +- +- if (read_at(fd, buffer, 0x3c, 4) < 0) +- goto fail; +- +- /* Read the `PE\0\0` signature and the COFF file header */ +- offset = le32(buffer); +- if (read_at(fd, buffer, offset, 24) < 0) +- goto fail; +- +- if (buffer[0] != 'P' || buffer[1] != 'E' || buffer[2] != '\0' || buffer[3] != '\0') +- goto fail; +- +- num_sections = le16(buffer + 6); +- opt_header_size = le16(buffer + 20); +- offset += 24; /* skip file header */ +- +- /* +- * Validate magic number 0x10b or 0x20b, for full details see +- * https://learn.microsoft.com/en-us/windows/win32/debug/pe-format#optional-header-standard-fields-image-only +- */ +- if (read_at(fd, buffer, offset, 2) < 0 || +- ((i = le16(buffer)) != 0x10b && i != 0x20b)) +- goto fail; +- +- offset += opt_header_size; +- +- for (i = 0; i < num_sections; i++) { +- if (read_at(fd, buffer, offset + i * 40, 40) < 0) +- goto fail; +- +- /* +- * For full details about the section headers, see +- * https://learn.microsoft.com/en-us/windows/win32/debug/pe-format#section-table-section-headers +- */ +- if ((le32(buffer + 36) /* characteristics */ & ~0x600000) /* IMAGE_SCN_ALIGN_32BYTES */ == +- (/* IMAGE_SCN_CNT_INITIALIZED_DATA */ 0x00000040 | +- /* IMAGE_SCN_MEM_READ */ 0x40000000 | +- /* IMAGE_SCN_MEM_WRITE */ 0x80000000)) { +- size_t size = le32(buffer + 16); /* "SizeOfRawData " */ +- size_t pointer = le32(buffer + 20); /* "PointerToRawData " */ +- +- /* +- * Skip the section if either size or pointer is 0, see +- * https://github.com/golang/go/blob/go1.21.0/src/debug/buildinfo/buildinfo.go#L333 +- * for full details. +- * +- * Merely seeing a non-zero size will not actually do, +- * though: he size must be at least `buildInfoSize`, +- * i.e. 32, and we expect a UVarint (at least another +- * byte) _and_ the bytes representing the string, +- * which we expect to start with the letters "go" and +- * continue with the Go version number. +- */ +- if (size < 32 + 1 + 2 + 1 || !pointer) +- continue; +- +- p = malloc(size); +- +- if (!p || read_at(fd, p, pointer, size) < 0) +- goto fail; +- +- /* +- * Look for the build information embedded by Go, see +- * https://github.com/golang/go/blob/go1.21.0/src/debug/buildinfo/buildinfo.go#L165-L175 +- * for full details. +- * +- * Note: Go contains code to enforce alignment along a +- * 16-byte boundary. In practice, no `.exe` has been +- * observed that required any adjustment, therefore +- * this here code skips that logic for simplicity. +- */ +- q = memmem(p, size - 18, "\xff Go buildinf:", 14); +- if (!q) +- goto fail; +- /* +- * Decode the build blob. For full details, see +- * https://github.com/golang/go/blob/go1.21.0/src/debug/buildinfo/buildinfo.go#L177-L191 +- * +- * Note: The `endianness` values observed in practice +- * were always 2, therefore the complex logic to handle +- * any other value is skipped for simplicty. +- */ +- if ((q[14] == 8 || q[14] == 4) && q[15] == 2) { +- /* +- * Only handle a Go version string with fewer +- * than 128 characters, so the Go UVarint at +- * q[32] that indicates the string's length must +- * be only one byte (without the high bit set). +- */ +- if ((q[32] & 0x80) || +- !q[32] || +- (q + 33 + q[32] - p) > (ssize_t)size || +- q[32] + 1 > (ssize_t)go_version_size) +- goto fail; +- res = q[32]; +- memcpy(go_version, q + 33, res); +- go_version[res] = '\0'; +- break; +- } +- } +- } +- +-fail: +- free(p); +- close(fd); +- return res; +-} +- +-void win32_warn_about_git_lfs_on_windows7(int exit_code, const char *argv0) +-{ +- char buffer[128], *git_lfs = NULL; +- const char *p; +- +- /* +- * Git LFS v3.5.1 fails with an Access Violation on Windows 7; That +- * would usually show up as an exit code 0xc0000005. For some reason +- * (probably because at this point, we no longer have the _original_ +- * HANDLE that was returned by `CreateProcess()`) we observe other +- * values like 0xb00 and 0x2 instead. Since the exact exit code +- * seems to be inconsistent, we check for a non-zero exit status. +- */ +- if (exit_code == 0) +- return; +- if (GetVersion() >> 16 > 7601) +- return; /* Warn only on Windows 7 or older */ +- if (!istarts_with(argv0, "git-lfs ") && +- strcasecmp(argv0, "git-lfs")) +- return; +- if (!(git_lfs = locate_in_PATH("git-lfs"))) +- return; +- if (get_go_version(git_lfs, buffer, sizeof(buffer)) > 0 && +- skip_prefix(buffer, "go", &p) && +- versioncmp("1.21.0", p) <= 0) +- warning("This program was built with Go v%s\n" +- "i.e. without support for this Windows version:\n" +- "\n\t%s\n" +- "\n" +- "To work around this, you can download and install a " +- "working version from\n" +- "\n" +- "\thttps://github.com/git-lfs/git-lfs/releases/tag/" +- "v3.4.1\n", +- p, git_lfs); +- free(git_lfs); +-} + + ## config.mak.uname ## + remerge CONFLICT (content): Merge conflict in config.mak.uname + index c456754775..32cc40e3cc 100644 + --- config.mak.uname + +++ config.mak.uname +@@ config.mak.uname: endif + CC = lib/compat/vcbuild/scripts/clink.pl + AR = lib/compat/vcbuild/scripts/lib.pl + CFLAGS = +-<<<<<<< ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)) + BASIC_CFLAGS = -nologo -I. -Ilib/compat/vcbuild/include -DWIN32 -D_CONSOLE -DHAVE_STRING_H -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE + COMPAT_OBJS = lib/compat/msvc.o lib/compat/winansi.o \ + lib/compat/win32/flush.o \ +@@ config.mak.uname: endif + COMPAT_CFLAGS = -D__USE_MINGW_ACCESS -DDETECT_MSYS_TTY \ + -DENSURE_MSYSTEM_IS_SET="\"$(MSYSTEM)\"" -DMINGW_PREFIX="\"$(patsubst /%,%,$(MINGW_PREFIX))\"" \ + -DNOGDI -DHAVE_STRING_H -Ilib/compat -Ilib/compat/regex -Ilib/compat/win32 -DSTRIP_EXTENSION=\".exe\" +-======= +- BASIC_CFLAGS = -nologo -I. -Icompat/vcbuild/include -DWIN32 -D_CONSOLE -DHAVE_STRING_H -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE +- COMPAT_OBJS = compat/msvc.o compat/winansi.o \ +- compat/win32/flush.o \ +- compat/win32/path-utils.o \ +- compat/win32/pthread.o compat/win32/syslog.o \ +- compat/win32/trace2_win32_process_info.o \ +- compat/win32/dirent.o compat/win32/fscache.o compat/win32/wsl.o +- COMPAT_CFLAGS = -D__USE_MINGW_ACCESS -DDETECT_MSYS_TTY \ +- -DENSURE_MSYSTEM_IS_SET="\"$(MSYSTEM)\"" -DMINGW_PREFIX="\"$(patsubst /%,%,$(MINGW_PREFIX))\"" \ +- -DNOGDI -DHAVE_STRING_H -Icompat -Icompat/regex -Icompat/win32 -DSTRIP_EXTENSION=\".exe\" +->>>>>>> c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input) + BASIC_LDFLAGS = -IGNORE:4217 -IGNORE:4049 -NOLOGO + # invalidcontinue.obj allows Git's source code to close the same file + # handle twice, or to access the osfhandle of an already-closed stdout +@@ config.mak.uname: endif + EXTLIBS = user32.lib advapi32.lib shell32.lib wininet.lib ws2_32.lib invalidcontinue.obj kernel32.lib ntdll.lib + GITLIBS += git.res + PTHREAD_LIBS = +-<<<<<<< ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)) + RC = lib/compat/vcbuild/scripts/rc.pl +-======= +- RC = compat/vcbuild/scripts/rc.pl +->>>>>>> c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input) + lib = + BASIC_CFLAGS += $(vcpkg_inc) $(sdk_includes) $(msvc_includes) + ifndef DEBUG +@@ config.mak.uname: ifeq ($(uname_S),MINGW) + CSPRNG_METHOD = rtlgenrandom + BASIC_LDFLAGS += -municode -Wl,--tsaware + LAZYLOAD_LIBCURL = YesDoThatPlease +-<<<<<<< ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)) + COMPAT_CFLAGS += -DNOGDI -Ilib/compat -Ilib/compat/win32 + COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\" + COMPAT_OBJS += lib/compat/mingw.o lib/compat/winansi.o \ +@@ config.mak.uname: ifeq ($(uname_S),MINGW) + lib/compat/win32/path-utils.o \ + lib/compat/win32/pthread.o lib/compat/win32/syslog.o \ + lib/compat/win32/dirent.o lib/compat/win32/fscache.o lib/compat/win32/wsl.o +-======= +- COMPAT_CFLAGS += -DNOGDI -Icompat -Icompat/win32 +- COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\" +- COMPAT_OBJS += compat/mingw.o compat/winansi.o \ +- compat/win32/trace2_win32_process_info.o \ +- compat/win32/flush.o \ +- compat/win32/path-utils.o \ +- compat/win32/pthread.o compat/win32/syslog.o \ +- compat/win32/dirent.o compat/win32/fscache.o compat/win32/wsl.o +->>>>>>> c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input) + BASIC_CFLAGS += -DWIN32 + EXTLIBS += -lws2_32 + GITLIBS += git.res + + ## contrib/buildsystems/CMakeLists.txt ## + remerge CONFLICT (content): Merge conflict in contrib/buildsystems/CMakeLists.txt + index eea171b8a5..e95bddbc82 100644 + --- contrib/buildsystems/CMakeLists.txt + +++ contrib/buildsystems/CMakeLists.txt +@@ contrib/buildsystems/CMakeLists.txt: if(NOT DEFINED CMAKE_EXPORT_COMPILE_COMMANDS) + endif() + + if(USE_VCPKG) +-<<<<<<< ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)) + set(VCPKG_DIR "${CMAKE_SOURCE_DIR}/lib/compat/vcbuild/vcpkg") +-======= +- set(VCPKG_DIR "${CMAKE_SOURCE_DIR}/compat/vcbuild/vcpkg") +->>>>>>> c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input) + message("WIN32: ${WIN32}") # show its underlying text values + message("VCPKG_DIR: ${VCPKG_DIR}") + message("VCPKG_ARCH: ${VCPKG_ARCH}") # maybe unset +@@ contrib/buildsystems/CMakeLists.txt: if(USE_VCPKG) + message("ENV(CMAKE_EXPORT_COMPILE_COMMANDS): $ENV{CMAKE_EXPORT_COMPILE_COMMANDS}") + if(NOT EXISTS ${VCPKG_DIR}) + message("Initializing vcpkg and building the Git's dependencies (this will take a while...)") +-<<<<<<< ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)) + execute_process(COMMAND ${CMAKE_SOURCE_DIR}/lib/compat/vcbuild/vcpkg_install.bat ${VCPKG_ARCH}) +-======= +- execute_process(COMMAND ${CMAKE_SOURCE_DIR}/compat/vcbuild/vcpkg_install.bat ${VCPKG_ARCH}) +->>>>>>> c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input) + endif() + if(NOT EXISTS ${VCPKG_ARCH}) + message("VCPKG_ARCH: unset, using 'x64-windows'") +@@ contrib/buildsystems/CMakeLists.txt: endif() + + #default behaviour + include_directories(${CMAKE_SOURCE_DIR}) +-<<<<<<< ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)) + include_directories(${CMAKE_SOURCE_DIR}/lib) +-======= +->>>>>>> c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input) + + # When cross-compiling, define HOST_CPU as the canonical name of the CPU on + # which the built Git will run (for instance "x86_64"). +@@ contrib/buildsystems/CMakeLists.txt: if(CMAKE_SYSTEM_NAME STREQUAL "Windows") + add_compile_definitions(ENSURE_MSYSTEM_IS_SET="MINGW32" MINGW_PREFIX="mingw32") + endif() + list(APPEND compat_SOURCES +-<<<<<<< ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)) + lib/compat/mingw.c + lib/compat/winansi.c + lib/compat/win32/flush.c +@@ contrib/buildsystems/CMakeLists.txt: if(CMAKE_SYSTEM_NAME STREQUAL "Windows") + lib/compat/win32/wsl.c + lib/compat/strdup.c + lib/compat/win32/fscache.c) +-======= +- compat/mingw.c +- compat/winansi.c +- compat/win32/flush.c +- compat/win32/path-utils.c +- compat/win32/pthread.c +- compat/win32mmap.c +- compat/win32/syslog.c +- compat/win32/trace2_win32_process_info.c +- compat/win32/dirent.c +- compat/win32/wsl.c +- compat/strdup.c +- compat/win32/fscache.c) +->>>>>>> c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input) + set(NO_UNIX_SOCKETS 1) + + elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") +@@ contrib/buildsystems/CMakeLists.txt: if(WIN32) + message(FATAL_ERROR "Unhandled compiler: ${CMAKE_C_COMPILER_ID}") + endif() + +-<<<<<<< ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)) + add_executable(headless-git ${CMAKE_SOURCE_DIR}/lib/compat/win32/headless.c) +-======= +- add_executable(headless-git ${CMAKE_SOURCE_DIR}/compat/win32/headless.c) +->>>>>>> c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input) + list(APPEND PROGRAMS_BUILT headless-git) + if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "Clang") + target_link_options(headless-git PUBLIC -municode -Wl,-subsystem,windows) +@@ contrib/buildsystems/CMakeLists.txt: string(REPLACE "@USE_LIBPCRE2@" "" git_build_options "${git_build_options}") + string(REPLACE "@WITH_BREAKING_CHANGES@" "" git_build_options "${git_build_options}") + string(REPLACE "@X@" "${EXE_EXTENSION}" git_build_options "${git_build_options}") + if(USE_VCPKG) +-<<<<<<< ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)) + string(APPEND git_build_options "PATH=\"$PATH:$TEST_DIRECTORY/../lib/compat/vcbuild/vcpkg/installed/${VCPKG_ARCH}/bin\"\n") +-======= +- string(APPEND git_build_options "PATH=\"$PATH:$TEST_DIRECTORY/../compat/vcbuild/vcpkg/installed/${VCPKG_ARCH}/bin\"\n") +->>>>>>> c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input) + endif() + file(WRITE ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS ${git_build_options}) + + + ## lib/compat/vcbuild/README ## + remerge CONFLICT (content): Merge conflict in lib/compat/vcbuild/README + index cedae34ed7..2531650b18 100644 + --- lib/compat/vcbuild/README + +++ lib/compat/vcbuild/README +@@ lib/compat/vcbuild/README: The Steps to Build Git with VS2015 or VS2017 from the command line. + Prompt or from an SDK bash window: + + $ cd <repo_root> +-<<<<<<< ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)):lib/compat/vcbuild/README + $ ./lib/compat/vcbuild/vcpkg_install.bat x64-windows + + or + + $ ./lib/compat/vcbuild/vcpkg_install.bat arm64-windows +-======= +- $ ./compat/vcbuild/vcpkg_install.bat x64-windows +- +- or +- +- $ ./compat/vcbuild/vcpkg_install.bat arm64-windows +->>>>>>> c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input):compat/vcbuild/README + + The vcpkg tools and all of the third-party sources will be installed + in this folder: + + ## lib/git-compat-util.h ## + remerge CONFLICT (content): Merge conflict in lib/git-compat-util.h + index 74ab65d045..1e09c0775c 100644 + --- lib/git-compat-util.h + +++ lib/git-compat-util.h +@@ lib/git-compat-util.h: struct fscache; + #ifndef enable_fscache + #define enable_fscache(x) /* noop */ + #endif +-<<<<<<< ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)):lib/git-compat-util.h + #ifndef flush_fscache + #define flush_fscache() /* noop */ + #endif +-======= +->>>>>>> c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input):git-compat-util.h + + #ifndef disable_fscache + #define disable_fscache() /* noop */ + + ## meson.build ## + remerge CONFLICT (content): Merge conflict in meson.build + index 62354d35ec..d8c56a0c82 100644 + --- meson.build + +++ meson.build +@@ meson.build: if host_machine.system() == 'cygwin' + ] + elif host_machine.system() == 'windows' + compat_sources += [ +-<<<<<<< ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)) + 'lib/compat/winansi.c', + 'lib/compat/win32/dirent.c', + 'lib/compat/win32/flush.c', +@@ meson.build: elif host_machine.system() == 'windows' + 'lib/compat/win32/syslog.c', + 'lib/compat/win32/wsl.c', + 'lib/compat/win32mmap.c', +-======= +- 'compat/winansi.c', +- 'compat/win32/dirent.c', +- 'compat/win32/flush.c', +- 'compat/win32/fscache.c', +- 'compat/win32/path-utils.c', +- 'compat/win32/pthread.c', +- 'compat/win32/syslog.c', +- 'compat/win32/wsl.c', +- 'compat/win32mmap.c', +->>>>>>> c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input) + ] + + libgit_c_args += [ + + ## meson_options.txt ## + remerge CONFLICT (content): Merge conflict in meson_options.txt + index 96c532de66..427697f5f7 100644 + --- meson_options.txt + +++ meson_options.txt +@@ meson_options.txt: option('runtime_prefix', type: 'boolean', value: false, + description: 'Resolve ancillary tooling and support files relative to the location of the runtime binary instead of hard-coding them into the binary.') + option('sane_tool_path', type: 'array', value: [], + description: 'An array of paths to pick up tools from in case the normal tools are broken or lacking.') +-<<<<<<< ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)) + option('nanosec', type: 'boolean', value: false, + description: 'Care about sub-second file mtimes and ctimes.') +-======= +->>>>>>> c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input) + option('msystem', type: 'string', value: '', + description: 'Fall-back on Windows when MSYSTEM is not set.') + option('mingw_prefix', type: 'string', value: '', + + ## t/t1007-hash-object.sh ## + remerge CONFLICT (content): Merge conflict in t/t1007-hash-object.sh + index 690380d426..463b38f990 100755 + --- t/t1007-hash-object.sh + +++ t/t1007-hash-object.sh +@@ t/t1007-hash-object.sh: test_expect_success EXPENSIVE,SIZE_T_IS_64BIT \ + + # This clean filter does nothing, other than excercising the interface. + # We ensure that cleaning doesn't mangle large files on 64-bit Windows. +-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)) +-test_expect_success EXPENSIVE,SIZE_T_IS_64BIT,!LONG_IS_64BIT \ +-================================ + test_expect_success EXPENSIVE,SIZE_T_IS_64BIT \ +->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input) + 'hash filtered files over 4GB correctly' ' + { test -f big || test-tool genzeros $((5*1024*1024*1024)) >big; } && + test_oid large5GB >expect && + + ## t/t1517-outside-repo.sh ## + remerge CONFLICT (content): Merge conflict in t/t1517-outside-repo.sh + index bcad1469ac..db2c5e3d5f 100755 + --- t/t1517-outside-repo.sh + +++ t/t1517-outside-repo.sh +@@ t/t1517-outside-repo.sh: do + http-backend | http-fetch | http-push | init-db | \ + mktag | p4 | p4.py | pickaxe | remote-ftp | remote-ftps | \ + remote-http | remote-https | replay | send-email | \ +-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)) + sh-i18n--envsubst | shell | show | stage | survey | \ + upload-archive--writer | upload-pack | whatchanged) + h_expect_outcome=expect_failure +@@ t/t1517-outside-repo.sh: do + h_expect_outcome=expect_success + all_expect_outcome=expect_failure + ;; +-================================ +- sh-i18n--envsubst | shell | show | stage | submodule | survey | svn | \ +- upload-archive--writer | upload-pack | web--browse | whatchanged) +- expect_outcome=expect_failure ;; +->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input) + *) + h_expect_outcome=expect_success + all_expect_outcome=expect_success + + ## t/t6403-merge-file.sh ## + remerge CONFLICT (content): Merge conflict in t/t6403-merge-file.sh + index 59fd0f27ed..bd58e471bc 100755 + --- t/t6403-merge-file.sh + +++ t/t6403-merge-file.sh +@@ t/t6403-merge-file.sh: test_expect_success "expected conflict markers" ' + test_expect_success 'binary files cannot be merged' ' + test_must_fail git merge-file -p \ + orig.txt "$TEST_DIRECTORY"/lib-diff/test-binary-1.png new1.txt 2> merge.err && +-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ae37fd813d (build(deps): bump actions/cache from 5 to 6 (#6303)) + test_grep "Cannot merge binary files" merge.err +-================================ +- grep "Cannot merge binary files" merge.err +->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> c8dff95af8 (fixup! hash-object: add a >4GB/LLP64 test case using filtered input) + ' + + test_expect_success 'binary files cannot be merged with --object-id' 'To: 35fd563966 (Some amendments for the
hashliteral_tsize fixes (git-for-windows#6311), 2026-07-03) (01e49ca4d6..35fd563966)Statistics
Range-diff (click to expand)
1: 8560fa5 = 1: 734acde mingw: skip symlink type auto-detection for network share targets
2: 6598b98 = 2: 6b59404 unix-socket: avoid leak when initialization fails
3: 8865b79 = 3: e68015b Merge branch 'prevent-accidental-ntlm-exfiltration-via-symlinks'
4: dd7179b = 4: bf3192b grep: prevent
^$false match at end of file5: 2e6d3ae = 5: d3030ce Merge branch 'v2.53.0.windows.3'
6: cf09606 = 6: 3a5fade Merge branch 'fixes-from-the-git-mailing-list'
7: 0a53b6a = 7: d03d9a4 ci(vs-build): adapt to Visual Studio 2026 default on windows-latest
8: af50649 = 8: 2872cef vcpkg_install: detect lack of Git
9: bcba2c1 = 9: 72a2361 vcpkg_install: add comment regarding slow network connections
10: 314b9a5 = 10: 8f43127 vcbuild: install ARM64 dependencies when building ARM64 binaries
11: 11a0b86 = 11: 7d324d5 vcbuild: add an option to install individual 'features'
12: d36179c = 12: 06619a5 cmake: allow building for Windows/ARM64
13: 3a9a7d0 = 13: b6e17f0 ci(vs-build) also build Windows/ARM64 artifacts
14: 87931b4 = 14: e70e009 vcbuild: stop hard-coding OpenSSL as a dependency
15: 5df3055 = 15: cd42fd5 cmake(): allow setting HOST_CPU for cross-compilation
16: 3cb624a = 16: 6196103 t9350: point out that refs are not updated correctly
17: 9ef959e = 17: c29c0a7 CMake: default Visual Studio generator has changed
18: df513c1 = 18: b0b6156 transport-helper: add trailing --
19: b4c5138 = 19: 31ce6ba mingw: demonstrate a
git addissue with NTFS junctions20: 01d68ba = 20: a71610a .gitignore: add Visual Studio CMakeSetting.json file
21: a132576 = 21: 2855ee7 t5505/t5516: allow running without
.git/branches/in the templates22: 731e80f = 22: 149cea9 remote-helper: check helper status after import/export
23: c74f1ab = 23: 42ea899 strbuf_realpath(): use platform-dependent API if available
24: 6636489 = 24: 9cbb968 http: use new "best effort" strategy for Secure Channel revoke checking
25: 38e2778 = 25: 7f670e7 subtree: update
contrib/subtreetesttarget26: ce2b793 = 26: 9dc2318 CMakeLists: add default "x64-windows" arch for Visual Studio
27: 1f55b6b = 27: daf3cc8 hash-object: add another >4GB/LLP64 test case
28: f83fd2a = 28: 5735fb8 setup: properly use "%(prefix)/" when in WSL
30: c08d2ad = 29: 994a5d3 mingw: include the Python parts in the build
31: cd25d1b = 30: 9b37fe2 t5505/t5516: fix white-space around redirectors
33: 1c7b25b = 31: f3cc7a2 ci: bump actions/checkout from 6 to 7
34: c26f867 = 32: d7a7f65 Always auto-gc after calling a fast-import transport
35: 0aae854 = 33: 3304113 mingw: prevent regressions with "drive-less" absolute paths
36: fc4c9b8 = 34: aa404b9 transport: optionally disable side-band-64k
37: c670e3c = 35: 45752bb mingw: fix fatal error working on mapped network drives on Windows
38: ebf0476 = 36: 76aa417 clink.pl: fix MSVC compile script to handle libcurl-d.lib
39: dc58010 = 37: 2feae41 mingw: implement a platform-specific
strbuf_realpath()40: ba630f4 = 38: 05a8909 t3701: verify that we can add lots of files interactively
41: 13ac104 = 39: b64efdf commit: accept "scissors" with CR/LF line endings
42: cdef420 = 40: a6420dc t0014: fix indentation
43: 7274cc7 = 41: 1e202a3 git-gui: accommodate for intent-to-add files
44: 6bc84ed = 42: 17c7b63 mingw: allow for longer paths in
parse_interpreter()45: 77cdce2 = 43: 4d4c66d compat/vcbuild: document preferred way to build in Visual Studio
46: e4d1c49 = 44: db98389 http: optionally send SSL client certificate
47: f2305d2 = 45: 1d1f4cd ci: run
contrib/subtreetests in CI builds48: 98f9bfa = 46: 020ac90 CMake: show Win32 and Generator_platform build-option values
49: 2ebd85c = 47: 38edf3a hash-object: add a >4GB/LLP64 test case using filtered input
50: e11e800 = 48: dd4c34c compat/mingw.c: do not warn when failing to get owner
56: ae25711 = 49: 0eaa9d6 windows: skip linking
git-<command>for built-ins57: ce740db = 50: 5e69674 mingw: stop hard-coding
CC = gcc58: cc81ac3 = 51: 2b058e3 mingw: drop the -D_USE_32BIT_TIME_T option
59: d5fc813 = 52: 8f6c39c mingw: only use -Wl,--large-address-aware for 32-bit builds
60: 26c128d = 53: 94e1f3a mingw: avoid over-specifying
--pic-executable61: 47ce92d = 54: a5c9a4d mingw: set the prefix and HOST_CPU as per MSYS2's settings
62: 0a4fb18 = 55: b39f82d mingw: only enable the MSYS2-specific stuff when compiling in MSYS2
63: 46ea276 = 56: 352bc22 mingw: rely on MSYS2's metadata instead of hard-coding it
64: f1087e2 = 57: 035c3d8 mingw: always define
ETC_*for MSYS2 environments65: 1e05d64 = 58: 80ee16b max_tree_depth: lower it for clang builds in general on Windows
66: 84fbc4d = 59: 2b97f7c mingw: ensure valid CTYPE
67: de49fee = 60: dc4fc8c mingw: allow
git.exeto be used instead of the "Git wrapper"69: 81122cd = 61: fea32af mingw: ignore HOMEDRIVE/HOMEPATH if it points to Windows' system directory
71: 0bec69f = 62: 97a042b Merge branch 'dscho-avoid-d-f-conflict-in-vs-master'
73: e042e51 = 63: 2fec560 clink.pl: fix libexpatd.lib link error when using MSVC
75: 5d87e07 = 64: 0550420 Makefile: clean up .ilk files when MSVC=1
77: 043be9e = 65: 95fb17e vcbuild: add support for compiling Windows resource files
79: bab2691 = 66: 5104f59 config.mak.uname: add git.rc to MSVC builds
32: ea199de = 67: d4c434f MinGW: link as terminal server aware
83: d58f7f7 = 68: adb5345 clink.pl: ignore no-stack-protector arg on MSVC=1 builds
84: c4425d2 = 69: 5e59ddb http: optionally load libcurl lazily
88: 776c640 = 70: 9b09504 clink.pl: move default linker options for MSVC=1 builds
89: fa75535 = 71: f1cd8e9 http: support lazy-loading libcurl also on Windows
29: 6f8c566 = 72: dc99f51 Add config option
windows.appendAtomically93: b6fc1c3 = 73: 9e88fd8 cmake: install headless-git.
94: 09d9ad8 = 74: b0d2d5a http: when loading libcurl lazily, allow for multiple SSL backends
68: 4f51771 = 75: c848eaa revision: create mark_trees_uninteresting_dense()
51: d046460 = 76: 4b3f72a mingw: $env:TERM="xterm-256color" for newer OSes
52: 025e77d = 77: d4384e0 winansi: check result and Buffer before using Name
53: e94d63f = 78: 28540c8 mingw: change core.fsyncObjectFiles = 1 by default
54: 88d9929 = 79: 5d37511 Fix Windows version resources
55: cb45805 = 80: 3da4d62 status: fix for old-style submodules with commondir
98: 39a77ff = 81: 8546132 git.rc: include winuser.h
99: 299bf20 = 82: 9fceec3 mingw: do load libcurl dynamically by default
100: ae00768 = 83: 101e9e0 Add a GitHub workflow to verify that Git/Scalar work in Nano Server
101: a1678cb = 84: 48fd9f7 mingw: suggest
windows.appendAtomicallyin more cases102: 660b7de = 85: 56a4072 win32: use native ANSI sequence processing, if possible
103: 3482e9a = 86: ac21b24 common-main.c: fflush stdout buffer upon exit
104: 26a4aa7 = 87: 2287e5e t5601/t7406(mingw): do run tests with symlink support
105: 79c6e0d = 88: b70712c Fallback to AppData if XDG_CONFIG_HOME is unset
106: b9173c3 = 89: ded4ff7 run-command: be helpful with Git LFS fails on Windows 7
70: e17ed3d ! 90: 9836493 survey: stub in new experimental 'git-survey' command
72: 1c885da = 91: df1521c survey: add command line opts to select references
74: 69493f0 = 92: 77ae2b2 survey: start pretty printing data in table form
76: 68d6254 = 93: 77e750f survey: add object count summary
78: b623ed5 = 94: 0f1ef5a survey: summarize total sizes by object type
80: 0f215ad = 95: 771d21d survey: show progress during object walk
81: 8b52a7b = 96: 9f227df mingw: make sure
errnois set correctly when socket operations fail85: 1930380 = 97: 7f60798 survey: add ability to track prioritized lists
86: d4718e5 = 98: c83fa47 compat/mingw: handle WSA errors in strerror
90: 4e8047a = 99: 975a2dd survey: add report of "largest" paths
91: 11fcdc1 = 100: 3787a3a compat/mingw: drop outdated comment
95: 662d226 = 101: 5934610 survey: add --top= option and config
96: f6b8d26 = 102: 5811355 t0301: actually test credential-cache on Windows
107: fa7da30 = 103: 893ad1c survey: clearly note the experimental nature in the output
108: 4b5450a = 104: 2e4402a credential-cache: handle ECONNREFUSED gracefully
114: 8d6c9c7 = 105: ef4f242 diff-delta: widen struct delta_index size fields to size_t
115: a48ccfd = 106: 81fcde6 delta: widen create_delta_index() parameter to size_t
116: 94efd89 = 107: c94ba9e pack-objects: widen delta-cache accounting to size_t
117: 05f5d16 = 108: 45d7a33 pack-objects: widen free_unpacked() return to size_t
118: 92b8631 = 109: c2c97c6 pack-objects: widen mem_usage and try_delta out-param to size_t
119: 4d6f130 = 110: 87c7ef2 delta: widen create_delta() and diff_delta() to size_t
125: c2802da = 111: d5b8f09 mingw: Support
git_terminal_promptwith more terminals120: d75c75e = 112: f02f7c9 packfile, git-zlib: widen use_pack() and zstream avail fields to size_t
127: b03b633 = 113: dd77d6f compat/terminal.c: only use the Windows console if bash 'read -r' fails
121: 6d6af4b = 114: b8fc5fa archive-zip: widen zlib_deflate_raw()'s maxsize local to size_t
129: 362b5c3 = 115: f74e92c mingw (git_terminal_prompt): do fall back to CONIN$/CONOUT$ method
122: 2d085ab = 116: 9855451 diff: widen deflate_it()'s bound local from int to size_t
131: 1e91b14 = 117: f6decc5 Win32: symlink: move phantom symlink creation to a separate function
123: f4058c0 = 118: 512be4f http-push: widen start_put()'s size local from ssize_t to size_t
82: 9d6883a = 119: 68cec19 t5563: verify that NTLM authentication works
133: 97c9883 = 120: fe6e465 mingw: introduce code to detect whether we're inside a Windows container
134: e286bb6 = 121: 9930485 Introduce helper to create symlinks that knows about index_state
124: 8cbd1c3 = 122: 3bbec05 t/helper/test-pack-deltas: widen do_compress()'s maxsize local to size_t
87: 6648d33 = 123: 38a204c http: disallow NTLM authentication by default
136: e324270 = 124: 17af76e mingw: when running in a Windows container, try to rename() harder
137: c349c82 = 125: 976040c mingw: allow to specify the symlink type in .gitattributes
126: efd8b3f = 126: 1fac524 git-zlib: widen git_deflate_bound() to size_t
92: 61b29f1 = 127: 213389f http: warn if might have failed because of NTLM
140: 8b68657 = 128: a066ba8 mingw: move the file_attr_to_st_mode() function definition
141: 3fabe53 = 129: 765ecb6 Win32: symlink: add test for
symlinkattribute128: dc2b933 = 130: 2213b9d diff: stop truncating the deflated-binary-diff size on Windows
97: f2dc239 = 131: c1f076b credential: advertise NTLM suppression and allow helpers to re-enable
144: f6577ad = 132: ba3a82d mingw: Windows Docker volumes are not symbolic links
145: e547f10 = 133: 9205e71 clean: do not traverse mount points
130: 7463624 = 134: 9b9c26f convert: widen gather_convert_stats() helpers to size_t
146: b68fa68 = 135: df2b009 pack-bitmap: stop truncating blob sizes used by --filter=blob:limit
109: 3b3765c = 136: 5d10d51 reftable: do make sure to use custom allocators
110: 7d6c18a = 137: 5078f1e check-whitespace: avoid alerts about upstream commits
111: b36cdb7 = 138: c3f2b03 t/t5571-prep-push-hook.sh: Add test with writing to stderr
112: 32c0f2b = 139: c22510a dir: do not traverse mount points
113: aa08f3c = 140: a4775fc win32: thread-utils: handle multi-socket systems
150: 1ed5e33 = 141: 1cc09c8 t5563: add tests for http.emptyAuth with Negotiate
151: 41fb060 = 142: 2c731d1 entry: flush fscache after creating directories and writing files
152: 534966f = 143: 04e9f39 ci(macos): skip the
git p4tests153: 72b7ad2 = 144: 19e7bfa mingw: work around rename() failing on a read-only file
154: 24cd566 = 145: a36f3b6 clean: remove mount points when possible
155: 86e67ab = 146: f976747 mingw: optionally enable wsl compability file mode bits
156: a2fe522 = 147: c29b296 Refuse to follow invalid paths in
.gitfiles132: 71cacca = 148: 3d7155f read-cache: stop truncating index blob sizes on Windows
135: 4f56965 = 149: 4a6e50c xdiff-interface: widen buffer_is_binary() size parameter to size_t
138: e8dccb8 = 150: 6ecdfef combine-diff: stop truncating combined-diff blob sizes on Windows
139: 423a40f = 151: 8c19298 tree-walk: drop link_len cast in get_tree_entry_follow_symlinks()
142: 5b3abb5 = 152: 5d91c43 diff: widen textconv_object() size out-param to size_t
157: a07d388 = 153: dd2b427 Merge branch 'size-t/pack-objects-delta'
143: 6f6ce1f = 154: bd4dc27 tree-walk: widen init_tree_desc() and init_tree_desc_gently() to size_t
147: 8baba80 = 155: 9e0d834 diffcore: widen struct diff_filespec.size to size_t
158: 643e260 = 156: d349c91 Merge branch 'size-t/pack-bitmap'
148: 4bdb0aa = 157: 5512347 pack-objects: drop the two tree-walk casts in the preferred-base path
149: f5443be = 158: 8b8bff8 diff-delta: widen sizeof_delta_index() return to size_t
159: c139975 = 159: 66c8164 Merge branch 'size-t/diff'
160: fea8402 = 160: 02ba118 tree: widen struct tree.size and parse_tree_buffer() to size_t
161: 837f1aa = 161: 4e1af45 Merge branch 'size-t/diff-delta-sizeof'
162: 5d9dfa3 = 162: d40c424 commit: widen the commit-buffer API to size_t
163: 7c55204 = 163: a775e2c Merge branch 'size-t/tree'
164: f18cca9 = 164: 3b66e2d blame: widen find_line_starts() len parameter to size_t
165: c634e7a = 165: 9fbc224 Merge branch 'size-t/commit'
166: 1758851 = 166: 18218e5 grep: widen struct grep_source.size and grep_buffer() to size_t
167: b772765 = 167: 2ffc664 Merge branch 'size-t/blame'
168: 913cbea = 168: 50c5b41 fast-export: drop the export_blob() size cast and widen anonymize_blob()
169: 81e1d47 = 169: 207e7e7 Merge branch 'size-t/grep'
170: 1437d6f = 170: 96bbc86 repo: drop the inflated-size cast in count_objects()
171: a1f14e5 = 171: 332a9cb Merge branch 'size-t/fast-export'
172: 3539a71 = 172: b740f28 unpack-objects: widen the size-passing infrastructure to size_t
173: 420f87c = 173: 0e17361 Merge branch 'size-t/repo'
174: 864c1ba = 174: 767ce79 Merge branch 'size-t/unpack-objects'
175: 9dd36f5 = 175: 7dd492b Merge branch 'topic/size-t' into size-t-followups
176: 5774671 = 176: 4169d6c pack-objects: drop cast_size_t_to_ulong shims in get_delta()
177: 61aac2d = 177: d4bc9f9 pack-objects: drop cast_size_t_to_ulong shims in try_delta()
178: cf30760 = 178: d57fc44 pack-objects: drop the last size shim in write_no_reuse_object()
179: a00f415 = 179: ec695b6 blame: widen struct blame_scoreboard.final_buf_size to size_t
180: e5283bb = 180: 262b551 fast-import: drop the six size casts in the object-read paths
181: c980709 = 181: 5474258 t/helper/test-pack-deltas: drop the delta_size cast in write_ref_delta()
186: 6c2e414 = 182: 1af3460 Drop the
cast_size_t_to_ulong()helper187: c86915c = 183: e400bb9 Merge branch 'topic/size-t' (size_t evacuation, upstream-bound)
189: bf3cf3e = 184: afacee1 Merge branch 'topic/size-t-followups' (size_t followups depending on seen topics)
190: 19b6c36 = 185: ecd68ac coverity: skip building with Rust, for now
182: fc1560e = 186: 170895c Merge branch 'bump-ci-actions/checkout-from-6-to-7'
183: aeba723 = 187: e691905 Merge 'remote-hg-prerequisites' into HEAD
184: 588b3f6 = 188: 656ee6d Merge branch 'drive-prefix'
185: 9489a01 = 189: 50a2e2c Merge branch 'msys2-python'
188: d8b68c3 = 190: 3fd90bb Merge pull request Config option to disable side-band-64k for transport git#2375 from assarbad/reintroduce-sideband-config
191: 10ff363 = 191: 357b4d4 Merge pull request mingw: fix fatal error working on mapped network drives on Windows git#2488 from bmueller84/master
192: ca2def5 = 192: 80406ee Merge pull request clink.pl: fix MSVC compile script to handle libcurl-d.lib git#2501 from jeffhostetler/clink-debug-curl
193: 321af6f = 193: 222879d Merge pull request Handle
git add <file>where <file> traverses an NTFS junction git#2504 from dscho/access-repo-via-junction194: 9f10891 = 194: f096c3a Merge pull request Introduce and use the new "best effort" strategy for Secure Channel revoke checking git#2535 from dscho/schannel-revoke-best-effort
195: 956799c = 195: dcd0100 Merge pull request ci: avoid d/f conflict in vs/master git#2618 from dscho/avoid-d/f-conflict-in-vs/master
196: 0469520 = 196: 661e18b Merge 'add-p-many-files'
197: 78512d4 = 197: b1bfc9e Merge pull request Rationalize line endings for scissors-cleanup git#2714 from lbonanomi/crlf-scissors
198: 022b377 = 198: b46960b Merge pull request t/t0014: fix: eliminate additional lines from trace git#2655 from jglathe/jg/t0014_trace_extra_info
199: 2a27b48 = 199: a1eb2f6 Merge 'git-gui/js/intent-to-add'
200: f13a821 = 200: f5a96b0 Merge pull request Vcpkg Install: detect lack of working Git, and note possible vcpkg time outs git#2351 from PhilipOakley/vcpkg-tip
201: c2bfcfc = 201: f2910b1 Merge pull request Windows arm64 support git#2915 from dennisameling/windows-arm64-support
202: 9f02f45 = 202: abe0733 Merge pull request cmake(): allow setting HOST_CPU for cross-compilation git#3327 from dennisameling/fix-host-cpu
203: 314686b = 203: e47e82c Merge pull request mingw: allow for longer paths in
parse_interpreter()git#3165 from dscho/increase-allowed-length-of-interpreter-path204: 6a5cab9 = 204: ecb4666 Merge pull request Let the documentation reflect that there is no vs/master anymore git#3220 from dscho/there-is-no-vs/master-anymore
205: 5d9d365 = 205: 7c11851 Merge pull request http: Add support for enabling automatic sending of SSL client certificate git#3293 from pascalmuller/http-support-automatically-sending-client-certificate
206: 3b7c79b = 206: 3f58734 Merge pull request Add
contrib/subtreetest execution to CI builds git#3349 from vdye/feature/ci-subtree-tests207: 1edbea6 = 207: 93a8b1c Merge pull request Make Git for Windows start builds in modern Visual Studio git#3306 from PhilipOakley/vs-sln
208: 77bca48 = 208: 0a1db23 Merge pull request Begin
unsigned long->size_tconversion to support large files on Windows git#3533 from PhilipOakley/hashliteral_t209: dbb10b3 = 209: 79c6690 Merge pull request Various fixes around
safe.directorygit#3791: Various fixes aroundsafe.directory210: 626977d = 210: 59d2239 Merge pull request mingw: set $env:TERM=xterm-256color for newer OSes git#3751 from rkitover/native-term
211: 7acd713 = 211: ae36d80 Merge pull request winansi: check result before using Name for pty git#3875 from 1480c1/wine/detect_msys_tty
212: b16a3b9 = 212: 4ac0395 Merge branch 'optionally-dont-append-atomically-on-windows'
213: 19b5b12 = 213: caa6a13 Merge branch 'fsync-object-files-always'
214: 3024de1 = 214: fc2e373 Merge pull request MinGW: link as terminal server aware git#3942 from rimrul/mingw-tsaware
215: 8b1a377 = 215: d00597e Fix Windows version resources (Fix Windows version resources git#4092)
216: 2e1bc39 = 216: 5a2a500 Fix global repository field not being cleared (Fix global repository field not being cleared git#4083)
217: f3b03d5 = 217: 71c9db9 Skip linking the "dashed"
git-<command>s for built-ins (Skip linking the "dashed"git-<command>s for built-ins git#4252)218: 5eace92 = 218: 99f5436 Add full
mingw-w64-git(i.e. regular MSYS2 ecosystem) support (Add fullmingw-w64-git(i.e. regular MSYS2 ecosystem) support git#5971)219: 1cfe9fb = 219: 20bfaf1 Merge pull request Allow running Git directly from
C:\Program Files\Git\mingw64\bin\git.exegit#2506 from dscho/issue-2283220: 8c6f2fe = 220: 4b0b66d Merge pull request Include Windows-specific maintenance and headless-git git#2974 from derrickstolee/maintenance-and-headless
221: b7d7cab = 221: f697020 ARM64: Embed manifest properly (ARM64: Embed manifest properly git#4718)
222: b55b332 = 222: 9ae604e Lazy load libcurl, allowing for an SSL/TLS backend-specific libcurl (Lazy load libcurl, allowing for an SSL/TLS backend-specific libcurl git#4410)
223: aaad412 = 223: 784d702 Merge branch 'nano-server'
224: 6752be0 = 224: fc5bceb Additional error checks for issuing the windows.appendAtomically warning (Additional error checks for issuing the windows.appendAtomically warning git#4528)
225: 178b327 = 225: 7667e67 win32: use native ANSI sequence processing, if possible (win32: use native ANSI sequence processing, if possible git#4700)
226: cc7bd2d = 226: 4541f86 common-main.c: fflush stdout buffer when exit (common-main.c: fflush stdout buffer when exit git#4901)
227: b888505 = 227: 9e5d1de Merge branch 'run-t5601-and-t7406-with-symlinks-on-windows-10'
228: b17207c = 228: 2876cf1 Merge branch 'Fallback-to-AppData-if-XDG-CONFIG-HOME-is-unset'
229: fd1ae44 = 229: f5b491c Merge branch 'run-command-be-helpful-when-Git-LFS-fails-on-Windows-7'
230: 35903f8 = 230: 4e596b9 Add path walk API and its use in 'git pack-objects' (Add path walk API and its use in 'git pack-objects' git#5171)
231: 217b6d5 = 231: c3a5342 Add experimental 'git survey' builtin (Add experimental 'git survey' builtin git#5174)
232: f3a94b9 = 232: b3caa93 credential-cache: handle ECONNREFUSED gracefully (credential-cache: handle ECONNREFUSED gracefully git#5329)
233: 9b72d6e = 233: e1b4e39 Merge branch 'reftable-vs-custom-allocators'
234: d2340a5 = 234: 0c20e62 Merge branch 'check-whitespace-only-downstream'
235: 8660d31 = 235: a2cf813 t/t5571-prep-push-hook.sh: Add test with writing to stderr (t/t5571-prep-push-hook.sh: Add test with writing to stderr git#6063)
236: 02ae1de = 236: 4c87ff9 Merge branch 'disallow-ntlm-auth-by-default'
237: fd5c99f = 237: 5670cbd Don't traverse mount points in
remove_dir_recurse()(Don't traverse mount points inremove_dir_recurse()git#6151)238: b25f5b5 = 238: 207502b Detect number of cores better on multi-socket systems (Detect number of cores better on multi-socket systems git#6108)
239: afea99c = 239: d088b27 http: fix emptyAuth=auto for Negotiate/SPNEGO (http: fix emptyAuth=auto for Negotiate/SPNEGO git#6170)
240: 77becea = 240: c69cad8 entry: flush fscache after creating directories and writing files (entry: flush fscache after creating directories and writing files git#6250)
241: 41c9b60 = 241: 5e067bb ci(macos): skip the
git p4tests (ci(macos): skip thegit p4tests git#5954)242: 8c0c0a9 = 242: b2facb4 Merge branch 'msys2'
243: d4beba4 = 243: d462672 Merge 'docker-volumes-are-no-symlinks'
244: 607575b = 244: ba25712 mingw: try resetting the read-only bit if rename fails (Reset READONLY if rename fails git#4527)
245: 66c1e21 = 245: a71448b Merge pull request Specify symlink type in .gitattributes git#1897 from piscisaureus/symlink-attr
246: 6a998b3 = 246: 365fc01 Merge branch 'dont-clean-junctions'
247: d3d7b6c = 247: e8d80fd Merge branch 'wsl-file-mode-bits'
248: 5acf745 = 248: 16dbdd5 Merge branch 'validate-dotgit'
249: 66dc388 = 249: 3fbc78e Continue improving support for 4GB+ packs/clones/objects (Continue improving support for 4GB+ packs/clones/objects git#6289)
250: 1d9f314 = 250: 05a58a7 Merge branch 'skip-rust-in-the-coverity-builds'
251: 53365c6 = 251: 2a0931a Merge branch 'ready-for-upstream'
252: ef8b717 = 252: 307717e Win32: make FILETIME conversion functions public
253: 519bd02 = 253: 872c5d2 Win32: dirent.c: Move opendir down
254: 6499b97 = 254: 3de0114 mingw: make the dirent implementation pluggable
255: 0a57931 = 255: 27104f3 Win32: make the lstat implementation pluggable
256: e5fe45f = 256: 4953738 mingw: add infrastructure for read-only file system level caches
257: de35ca8 = 257: 2a6df10 mingw: add a cache below mingw's lstat and dirent implementations
258: 612d58d = 258: dd2e951 fscache: load directories only once
259: 7af6eb0 = 259: adc2336 fscache: add key for GIT_TRACE_FSCACHE
260: 9094e88 = 260: 7ab93f0 fscache: remember not-found directories
261: 9f4e793 = 261: 118352d fscache: add a test for the dir-not-found optimization
262: 8578135 = 262: e91eeb1 add: use preload-index and fscache for performance
263: 5dbc7ac = 263: eb70cd6 dir.c: make add_excludes aware of fscache during status
281: a678014 = 264: 227558c git-gui--askyesno: fix funny text wrapping
264: 80c70b1 = 265: ed05fd1 fscache: make fscache_enabled() public
283: 2b09452 = 266: 5a0f97b git-gui--askyesno (mingw): use Git for Windows' icon, if available
265: 24818bf = 267: c9b3fa7 dir.c: regression fix for add_excludes with fscache
266: 7c13ee3 = 268: c586965 fetch-pack.c: enable fscache for stats under .git/objects
267: aacff2d = 269: 6d647ab checkout.c: enable fscache for checkout again
268: 9f48b7b = 270: fa93fd4 Enable the filesystem cache (fscache) in refresh_index().
269: 1c03d91 = 271: cf90e32 fscache: use FindFirstFileExW to avoid retrieving the short name
270: 6ed71f9 = 272: 7467e08 fscache: add GIT_TEST_FSCACHE support
271: 036bd73 = 273: 35e1d7b fscache: add fscache hit statistics
272: cb15724 = 274: 0b058f7 unpack-trees: enable fscache for sparse-checkout
273: 3e86e20 = 275: 9a8995a status: disable and free fscache at the end of the status command
274: 0cf5cc2 = 276: 46d4d89 mem_pool: add GIT_TRACE_MEMPOOL support
275: e713354 = 277: 71b6b03 fscache: fscache takes an initial size
276: a75d2ee = 278: 2695ded fscache: update fscache to be thread specific instead of global
277: cffd1af = 279: 50f7f0f fscache: teach fscache to use mempool
278: c840ca5 = 280: da87ac6 fscache: make fscache_enable() thread safe
279: 00bf578 = 281: a20dd66 fscache: teach fscache to use NtQueryDirectoryFile
280: 47fb060 = 282: 6eefe92 fscache: remember the reparse tag for each entry
282: 49802c0 = 283: 5b0edab fscache: Windows Docker volumes are not symbolic links
284: 515c5ab = 284: 335ba6c fscache: optionally enable wsl compability file mode bits
285: 802e2d0 = 285: 3289dbc Merge branch 'fscache'
286: 69cc8d6 = 286: 46ceaf3 fscache: implement an FSCache-aware is_mount_point()
287: 15674c3 = 287: 155047e Merge pull request status: disable and free fscache at the end of the status command git#1909 from benpeart/free-fscache-after-status-gfw
288: 28750c3 = 288: 6e24b44 clean: make use of FSCache
289: 27643af = 289: 6e46110 Merge remote-tracking branch 'benpeart/fscache-per-thread-gfw'
290: 1fe5580 = 290: 213e80d Merge branch 'dont-clean-junctions-fscache'
291: 9962620 = 291: e55c616 pack-objects (mingw): demonstrate a segmentation fault with large deltas
292: a92b549 = 292: 105aa0e mingw: support long paths
293: 57b2ecc = 293: a20dac2 win32(long path support): leave drive-less absolute paths intact
294: 927c64a = 294: 8f64f77 compat/fsmonitor/fsm-*-win32: support long paths
295: 75c5a84 = 295: a2e3476 clean: suggest using
core.longPathsif paths are too long to remove296: ba670e2 = 296: 6a77414 mingw: explicitly specify with which cmd to prefix the cmdline
297: af64907
Truncated; see the full conflict report in the workflow run summary.