Commit Graph

139094 Commits

Author SHA1 Message Date
Karsten Blees
ee28a06cb2 Win32: make FILETIME conversion functions public
We will use them in the upcoming "FSCache" patches (to accelerate
sequential lstat() calls).

Signed-off-by: Karsten Blees <blees@dcon.de>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2022-11-23 10:59:49 +01:00
Johannes Schindelin
ace0e696fc Merge branch 'ready-for-upstream'
This is the branch thicket of patches in Git for Windows that are
considered ready for upstream. To keep them in a ready-to-submit shape,
they are kept as close to the beginning of the branch thicket as
possible.
2022-11-23 10:59:49 +01:00
Johannes Schindelin
0da18ebe82 Add support for CLANGARM64 target (#3916)
**This requires an ARM64-machine with Windows 11 installed (which
supports x64 emulation for MSYS2)**

### The main idea

- Use the main MSYS2/git-sdk-64 setup, which works on Windows 11 on ARM
thanks to x64-emulation
- Configure the official `clangarm64` MSYS2 repo
- Install `mingw-w64-clang-aarch64-toolchain` which contains the
ARM64-native Clang compiler
2022-11-23 10:59:49 +01:00
Johannes Schindelin
532aa37a61 Merge branch 'builtin-swap-functions'
Do prefer GCC's built-in bit-swap functions.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2022-11-23 10:59:13 +01:00
Johannes Schindelin
71aab994de Fix Windows version resources (#4092)
Add `FileVersion`, which is a required string ([Microsoft
documentation](https://learn.microsoft.com/en-us/windows/win32/menurc/versioninfo-resource))
in the `StringFileInfo` block.
As not all required strings were present in the block, none were being
included.
Fixes #4090

After including the `FileVersion` string, all other defined strings are
now being included on executables.

File version information for `git.exe` has changed from:
```
PS C:\Program Files\Git\bin> [System.Diagnostics.FileVersionInfo]::GetVersionInfo("C:\Data\git-sdk-64\usr\src\git\git.exe") | Select-Object *

FileVersionRaw     : 2.38.1.1
ProductVersionRaw  : 2.38.1.1
Comments           :
CompanyName        :
FileBuildPart      : 1
FileDescription    :
FileMajorPart      : 2
FileMinorPart      : 38
FileName           : C:\Data\git-sdk-64\usr\src\git\git.exe
FilePrivatePart    : 1
FileVersion        :
InternalName       :
IsDebug            : False
IsPatched          : False
IsPrivateBuild     : False
IsPreRelease       : False
IsSpecialBuild     : False
Language           : English (United States)
LegalCopyright     :
LegalTrademarks    :
OriginalFilename   :
PrivateBuild       :
ProductBuildPart   : 1
ProductMajorPart   : 2
ProductMinorPart   : 38
ProductName        :
ProductPrivatePart : 1
ProductVersion     :
SpecialBuild       :
```

To the following:
```
PS C:\Program Files\Git\bin> [System.Diagnostics.FileVersionInfo]::GetVersionInfo("C:\Data\git-sdk-64\usr\src\git\git.exe") | Select-Object *

FileVersionRaw     : 2.38.1.1
ProductVersionRaw  : 2.38.1.1
Comments           :
CompanyName        : The Git Development Community
FileBuildPart      : 1
FileDescription    : Git for Windows
FileMajorPart      : 2
FileMinorPart      : 38
FileName           : C:\Data\git-sdk-64\usr\src\git\git.exe
FilePrivatePart    : 1
FileVersion        : 2.38.1.windows.1.10.g6ed65a6fab
InternalName       : git
IsDebug            : False
IsPatched          : False
IsPrivateBuild     : False
IsPreRelease       : False
IsSpecialBuild     : False
Language           : English (United States)
LegalCopyright     :
LegalTrademarks    :
OriginalFilename   : git.exe
PrivateBuild       :
ProductBuildPart   : 1
ProductMajorPart   : 2
ProductMinorPart   : 38
ProductName        : Git
ProductPrivatePart : 1
ProductVersion     : 2.38.1.windows.1.10.g6ed65a6fab
SpecialBuild       :
```

I wasn't really expecting `GIT_VERSION` to contain the Git commit, I was
hoping for just `2.38.1` or `2.38.1.1`, at least for the `FileVersion`
string.

Anybody know if it's possible to concatenate the `MAJOR`, `MINOR`,
`MICRO`, and `PATCHLEVEL` fields with dots, or if there's another
variable that can be used (with or without `PATCHLEVEL`)?
Alternatively, use the complete `GIT_VERSION` for both `FileVersion` and
`ProductVersion`.
2022-11-23 10:59:13 +01:00
Johannes Schindelin
4626994496 Merge pull request #4013 from dscho/mimalloc
Switch Git for Windows to using mimalloc instead of nedmalloc
2022-11-23 10:59:13 +01:00
Johannes Schindelin
ca794c7dff Merge pull request #3942 from rimrul/mingw-tsaware
MinGW: link as terminal server aware
2022-11-23 10:59:13 +01:00
Johannes Schindelin
8be5e35416 Merge branch 'ci-fixes'
Backport a couple fixes to make the CI build run again (so much for
reproducible builds...).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2022-11-23 10:59:13 +01:00
Johannes Schindelin
49c7e3a914 Merge branch 'optionally-dont-append-atomically-on-windows'
Fix append failure issue under remote directories #2753

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2022-11-23 10:59:13 +01:00
Johannes Schindelin
e338ec9ccc Merge pull request #3875 from 1480c1/wine/detect_msys_tty
winansi: check result before using Name for pty
2022-11-23 10:59:13 +01:00
Johannes Schindelin
786370837c Merge pull request #3751 from rkitover/native-term
mingw: set $env:TERM=xterm-256color for newer OSes
2022-11-23 10:59:12 +01:00
Derrick Stolee
f9e8da1c52 Merge pull request #3791: Various fixes around safe.directory
The first three commits are rebased versions of those in gitgitgadget/git#1215. These allow the following:

1. Fix `git config --global foo.bar <path>` from allowing the `<path>`. As a bonus, users with a config value starting with `/` will not get a warning about "old-style" paths needing a "`%(prefix)/`".

2. When in WSL, the path starts with `/` so it needs to be interpolated properly. Update the warning to include `%(prefix)/` to get the right value for WSL users. (This is specifically for using Git for Windows from Git Bash, but in a WSL directory.)

3. When using WSL, the ownership check fails and reports an error message. This is noisy, and happens even if the user has marked the path with `safe.directory`. Remove that error message.
2022-11-23 10:59:12 +01:00
Johannes Schindelin
dca41ce0dd Merge pull request #3533 from PhilipOakley/hashliteral_t
Begin `unsigned long`->`size_t` conversion to support large files on Windows
2022-11-23 10:59:12 +01:00
Jeff Hostetler
290aa9617d Merge branch 'mark-v4-fsmonitor-experimental' into try-v4-fsmonitor 2022-11-23 10:59:12 +01:00
Johannes Schindelin
58a5d3514d Merge pull request #3417 from dscho/initialize-core.symlinks-earlier
init: respect core.symlinks before copying the templates
2022-11-23 10:59:12 +01:00
Johannes Schindelin
f55bd6cabf Merge pull request #3306 from PhilipOakley/vs-sln
Make Git for Windows start builds in modern Visual Studio
2022-11-23 10:59:12 +01:00
Johannes Schindelin
a0afb991d7 Merge pull request #3349 from vdye/feature/ci-subtree-tests
Add `contrib/subtree` test execution to CI builds
2022-11-23 10:59:12 +01:00
Johannes Schindelin
fd5839bb40 Merge pull request #3293 from pascalmuller/http-support-automatically-sending-client-certificate
http: Add support for enabling automatic sending of SSL client certificate
2022-11-23 10:59:12 +01:00
Johannes Schindelin
da5f345039 Merge pull request #3220 from dscho/there-is-no-vs/master-anymore
Let the documentation reflect that there is no vs/master anymore
2022-11-23 10:59:12 +01:00
Johannes Schindelin
366694bb51 Merge pull request #3165 from dscho/increase-allowed-length-of-interpreter-path
mingw: allow for longer paths in `parse_interpreter()`
2022-11-23 10:59:11 +01:00
Johannes Schindelin
cb1f02b0ce Merge pull request #3150 from dscho/ci-cache-vcpkg-artifacts-g4w
ci: cache vcpkg artifacts
2022-11-23 10:59:11 +01:00
Johannes Schindelin
fcaf702d50 Merge pull request #3327 from dennisameling/fix-host-cpu
cmake(): allow setting HOST_CPU for cross-compilation
2022-11-23 10:59:11 +01:00
Johannes Schindelin
95809c1029 Merge pull request #2915 from dennisameling/windows-arm64-support
Windows arm64 support
2022-11-23 10:59:11 +01:00
Johannes Schindelin
dbd0516baf Merge pull request #2351 from PhilipOakley/vcpkg-tip
Vcpkg Install: detect lack of working Git, and note possible vcpkg time outs
2022-11-23 10:59:11 +01:00
Johannes Schindelin
4e03a0e269 Merge pull request #2974 from derrickstolee/maintenance-and-headless
Include Windows-specific maintenance and headless-git
2022-11-23 10:59:11 +01:00
Johannes Schindelin
99b6ef2cea Merge 'git-gui/js/intent-to-add'
This merges the current version of the patch that tries to address Git
GUI's problems with intent-to-add files.

This patch will likely be improved substantially before it is merged
into Git GUI's main branch, but we want to have _something_ resembling a
fix already in Git for Windows v2.29.0.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2022-11-23 10:59:11 +01:00
Johannes Schindelin
50cad178b4 Merge pull request #2655 from jglathe/jg/t0014_trace_extra_info
t/t0014: fix: eliminate additional lines from trace
2022-11-23 10:59:11 +01:00
Johannes Schindelin
6df96c91db Merge pull request #2714 from lbonanomi/crlf-scissors
Rationalize line endings for scissors-cleanup
2022-11-23 10:58:54 +01:00
Johannes Schindelin
aef6776084 Merge pull request #2730 from dscho/crlf-aware-git-add-i
git add -i: handle CR/LF line endings in the interactive input
2022-11-23 10:58:54 +01:00
Johannes Schindelin
bdf3b5fbf7 Merge 'add-p-many-files'
This topic branch allows `add -p` and `add -i` with a large number of
files. It is kind of a hack that was never really meant to be
upstreamed. Let's see if we can do better in the built-in `add -p`.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2022-11-23 10:58:54 +01:00
Johannes Schindelin
1a27308636 Merge pull request #2618 from dscho/avoid-d/f-conflict-in-vs/master
ci: avoid d/f conflict in vs/master
2022-11-23 10:58:53 +01:00
Johannes Schindelin
be5c281e9a Merge pull request #2535 from dscho/schannel-revoke-best-effort
Introduce and use the new "best effort" strategy for Secure Channel revoke checking
2022-11-23 10:58:53 +01:00
Johannes Schindelin
3ce62a956b Merge pull request #2506 from dscho/issue-2283
Allow running Git directly from `C:\Program Files\Git\mingw64\bin\git.exe`
2022-11-23 10:58:53 +01:00
Johannes Schindelin
6a626e96e4 Merge pull request #2504 from dscho/access-repo-via-junction
Handle `git add <file>` where <file> traverses an NTFS junction
2022-11-23 10:58:53 +01:00
Johannes Schindelin
fd31ed4ca2 Merge pull request #2501 from jeffhostetler/clink-debug-curl
clink.pl: fix MSVC compile script to handle libcurl-d.lib
2022-11-23 10:58:53 +01:00
Johannes Schindelin
e69a61a33b Merge pull request #2488 from bmueller84/master
mingw: fix fatal error working on mapped network drives on Windows
2022-11-23 10:58:53 +01:00
Johannes Schindelin
0a05dc424e Merge pull request #2449 from dscho/mingw-getcwd-and-symlinks
Do resolve symlinks in `getcwd()`
2022-11-23 10:58:53 +01:00
Johannes Schindelin
82504df937 Merge pull request #2405 from dscho/mingw-setsockopt
Make sure `errno` is set when socket operations fail
2022-11-23 10:58:53 +01:00
Johannes Schindelin
af2b5aa6be Merge pull request #2375 from assarbad/reintroduce-sideband-config
Config option to disable side-band-64k for transport
2022-11-23 10:58:52 +01:00
Johannes Schindelin
6c0310fced Merge branch 'msys2-python'
In MSYS2, we have two Python interpreters at our disposal, so we can
include the Python stuff in the build.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2022-11-23 10:58:52 +01:00
Johannes Schindelin
9dd04c4e87 Merge branch 'dont-clean-junctions'
This topic branch teaches `git clean` to respect NTFS junctions and Unix
bind mounts: it will now stop at those boundaries.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2022-11-23 10:58:52 +01:00
Johannes Schindelin
bae0fc7344 Merge pull request #2170 from dscho/gitk-long-cmdline
Fix gitk (long cmdline)
2022-11-23 10:58:52 +01:00
Johannes Schindelin
ddf0e913c1 Merge branch 'fsync-object-files-always'
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2022-11-23 10:58:52 +01:00
Johannes Schindelin
b4521f89c8 Merge branch 'drive-prefix'
This topic branch allows us to specify absolute paths without the drive
prefix e.g. when cloning.

Example:

	C:\Users\me> git clone https://github.com/git/git \upstream-git

This will clone into a new directory C:\upstream-git, in line with how
Windows interprets absolute paths.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2022-11-23 10:58:52 +01:00
Johannes Schindelin
0beffe6964 Merge 'remote-hg-prerequisites' into HEAD
These fixes were necessary for Sverre Rabbelier's remote-hg to work,
but for some magic reason they are not necessary for the current
remote-hg. Makes you wonder how that one gets away with it.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2022-11-23 10:58:52 +01:00
Johannes Schindelin
fccbf65e02 Always auto-gc after calling a fast-import transport
After importing anything with fast-import, we should always let the
garbage collector do its job, since the objects are written to disk
inefficiently.

This brings down an initial import of http://selenic.com/hg from about
230 megabytes to about 14.

In the future, we may want to make this configurable on a per-remote
basis, or maybe teach fast-import about it in the first place.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2022-11-23 10:58:47 +01:00
Dennis Ameling
4f202b4161 ci: create clangarm64-build.yml
No GitHub-hosted ARM64 runners are available at the moment of writing,
but folks can leverage self-hosted runners of this architecture. This CI
pipeline comes in handy for forks of the git-for-windows/git project
that have such runners available. The pipeline can be kicked off
manually through a workflow_dispatch.

Signed-off-by: Dennis Ameling <dennis@dennisameling.com>
2022-11-23 10:28:46 +01:00
Dennis Ameling
8ebe8f388c config.mak.uname: add support for clangarm64
CLANGARM64 is a relatively new MSYSTEM added by the MSYS2 team. In order
to have Git build correctly for this platform, let's add some
configuration for it to config.mak.uname.

Signed-off-by: Dennis Ameling <dennis@dennisameling.com>
2022-11-23 10:28:46 +01:00
Dennis Ameling
c4b7fc6384 bswap.h: add support for built-in bswap functions
Newer compiler versions, like GCC 10 and Clang 12, have built-in
functions for bswap32 and bswap64. This comes in handy, for example,
when targeting CLANGARM64 on Windows, which would not be supported
without this logic.

Signed-off-by: Dennis Ameling <dennis@dennisameling.com>
2022-11-23 10:28:45 +01:00
Kiel Hurley
4bfdf59d42 Fix Windows version resources
Add FileVersion, which is a required field
As not all required fields were present, none were being included
Fixes #4090

Signed-off-by: Kiel Hurley <kielhurley@gmail.com>
2022-11-23 10:22:13 +01:00