Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rebase to v2.45.0 #4931

Merged
merged 356 commits into from
Apr 29, 2024
Merged

Conversation

dscho
Copy link
Member

@dscho dscho commented Apr 29, 2024

Range-diff relative to v2.45.0-rc1
  • 1: 9f43223 = 1: 5276fbd gitk(Windows): avoid inadvertently calling executables in the worktree

  • 3: 558ffb9 = 2: d97c456 t9350: point out that refs are not updated correctly

  • 5: ecff969 = 3: 05c3992 transport-helper: add trailing --

  • 7: beef9e4 = 4: d693f34 remote-helper: check helper status after import/export

  • 8: 457cc48 = 5: 5ae7516 mingw: demonstrate a problem with certain absolute paths

  • 9: 6558978 = 6: 0d2e880 clean: do not traverse mount points

  • 11: 3ca3b5d = 7: 54d71a9 Always auto-gc after calling a fast-import transport

  • 12: 2ef4a16 = 8: fc3249a mingw: allow absolute paths without drive prefix

  • 13: 9976134 = 9: 6b65a3e clean: remove mount points when possible

  • 2: 12209df = 10: 028914d mingw: include the Python parts in the build

  • 4: 7e1b0ce = 11: 43e51ab win32/pthread: avoid name clashes with winpthread

  • 6: 3e1a49c = 12: 46e08dd git-compat-util: avoid redeclaring _DEFAULT_SOURCE

  • 10: aeeda9e = 13: 4607a50 Import the source code of mimalloc v2.1.2

  • 14: 2d75c1a = 14: 257ecbd mimalloc: adjust for building inside Git

  • 15: b2ad29f = 15: b38e3c7 mimalloc: offer a build-time option to enable it

  • 17: 782f249 = 16: 71d3cbe mimalloc: use "weak" random seed when statically linked

  • 19: 4be2b79 = 17: dd44055 mingw: use mimalloc

  • 20: 06f2304 = 18: bc7c7f3 transport: optionally disable side-band-64k

  • 21: fb350b3 = 19: df2cf51 mingw: make sure errno is set correctly when socket operations fail

  • 27: dec505d = 20: f9c6b81 mingw: ensure valid CTYPE

  • 16: e007ba4 = 21: f38b347 mingw: demonstrate a git add issue with NTFS junctions

  • 29: b82dd1b = 22: a2ce54e mingw: allow git.exe to be used instead of the "Git wrapper"

  • 18: 8e01678 = 23: 232bf46 strbuf_realpath(): use platform-dependent API if available

  • 26: c471d8f = 24: 6ea53ea vcxproj: unclash project directories with build outputs

  • 31: 7d0cb7f = 25: 216a997 mingw: ignore HOMEDRIVE/HOMEPATH if it points to Windows' system directory

  • 32: 3086128 = 26: bcf2561 http: use new "best effort" strategy for Secure Channel revoke checking

  • 22: 568d6e0 = 27: a67f563 mingw: do resolve symlinks in getcwd()

  • 23: cb2c0e7 = 28: 5410eee mingw: fix fatal error working on mapped network drives on Windows

  • 24: de706ea = 29: c95492e clink.pl: fix MSVC compile script to handle libcurl-d.lib

  • 25: 2ce01e0 = 30: 9fe947d mingw: implement a platform-specific strbuf_realpath()

  • 28: c705edb = 31: 61d4f9d t5505/t5516: allow running without .git/branches/ in the templates

  • 30: afc4de7 = 32: 601c5b1 t5505/t5516: fix white-space around redirectors

  • 37: d1a67ed = 33: 0911e23 clink.pl: fix libexpatd.lib link error when using MSVC

  • 38: 2ac8a27 = 34: 335a39c Makefile: clean up .ilk files when MSVC=1

  • 33: e1ceb79 = 35: 6dbe175 t3701: verify that we can add lots of files interactively

  • 34: f4e0479 = 36: 7dce9b1 git add -i: handle CR/LF line endings in the interactive input

  • 35: 777364d = 37: c1677cc commit: accept "scissors" with CR/LF line endings

  • 36: b44c23e = 38: 53545fb t0014: fix indentation

  • 49: a204d2c = 39: 02493cf git-gui: accommodate for intent-to-add files

  • 39: e45a172 = 40: 75d5e8d vcbuild: add support for compiling Windows resource files

  • 40: 8310197 = 41: 1c4226f config.mak.uname: add git.rc to MSVC builds

  • 41: da8e0bb = 42: 1c9f7b4 clink.pl: ignore no-stack-protector arg on MSVC=1 builds

  • 46: 62c0946 = 43: d1c8f82 vcpkg_install: detect lack of Git

  • 42: 78fe613 = 44: fbd9969 clink.pl: move default linker options for MSVC=1 builds

  • 48: e5be0bf = 45: d93c7ce vcpkg_install: add comment regarding slow network connections

  • 43: ddec368 = 46: 7609cab buildsystems: remove duplicate clause

  • 51: df7693f = 47: 76472a0 vcxproj: support building Windows/ARM64 binaries

  • 44: 6fffdda = 48: 4dd6b90 vcxproj: handle resource files, too

  • 52: 6393658 = 49: cf53b9c vcbuild: install ARM64 dependencies when building ARM64 binaries

  • 45: af5a0e8 = 50: ce51cdb vcxproj: ignore -fno-stack-protector and -fno-common

  • 53: b542c8d = 51: a02a742 vcbuild: add an option to install individual 'features'

  • 47: ada7ad4 = 52: 02152a6 vcxproj: handle GUI programs, too

  • 54: 93b87a7 = 53: 72fd5e0 cmake: allow building for Windows/ARM64

  • 50: db54344 = 54: 26c6223 cmake: install headless-git.

  • 55: d5ef2a8 = 55: f292807 ci(vs-build) also build Windows/ARM64 artifacts

  • 56: 33c550f = 56: 1774af6 Add schannel to curl installation

  • 58: f95d3d0 = 57: 5bdd4b0 cmake(): allow setting HOST_CPU for cross-compilation

  • 57: a3d87c0 = 58: 6b06589 subtree: update contrib/subtree test target

  • 67: 814e35a = 59: 2f8c6a1 CMake: default Visual Studio generator has changed

  • 59: 000ef0b = 60: dbcd6cf ci(vs-build): download the vcpkg artifacts using a dedicated Action

  • 60: 0ec6a4d = 61: f12e10a mingw: allow for longer paths in parse_interpreter()

  • 61: b4bd722 = 62: a4a63a8 compat/vcbuild: document preferred way to build in Visual Studio

  • 62: d287806 = 63: aa68c96 http: optionally send SSL client certificate

  • 63: 748514d = 64: 615b16f ci: run contrib/subtree tests in CI builds

  • 64: 2ee2186 = 65: 33cf513 hash-object: demonstrate a >4GB/LLP64 problem

  • 65: a75f621 = 66: 5514fd8 write_object_file_literally(): use size_t

  • 66: c674713 = 67: 3c64c59 object-file.c: use size_t for header lengths

  • 68: 0cf28bc = 68: af84a1b hash algorithms: use size_t for section lengths

  • 69: 96520b1 = 69: fa9e370 .gitignore: add Visual Studio CMakeSetting.json file

  • 70: 7b0b8cc = 70: 8179e09 hash-object --stdin: verify that it works with >4GB/LLP64

  • 71: 616acdf = 71: 0dcd834 CMakeLists: add default "x64-windows" arch for Visual Studio

  • 72: a2b7099 = 72: 3ae6576 hash-object: add another >4GB/LLP64 test case

  • 73: b822a0a = 73: 5f4c34c setup: properly use "%(prefix)/" when in WSL

  • 74: ab8394f = 74: 24ef53b CMake: show Win32 and Generator_platform build-option values

  • 75: b7b7421 = 75: b125917 init: do parse all core.* settings early

  • 76: c591482 = 76: dffa475 Enable the built-in FSMonitor as an experimental feature

  • 77: e4c2ba4 = 77: e6fe01a hash-object: add a >4GB/LLP64 test case using filtered input

  • 79: 0737cd6 = 78: 077d4b3 vcxproj: allow building with NO_PERL again

  • 80: cb895f4 = 79: cb4ff22 vcxproj: require C11

  • 81: 0feca76 = 80: 5ecabf7 vcxproj: ignore the -pedantic option

  • 82: 1a1fc67 = 81: f73313e vcxproj: include reftable when committing .vcxproj files

  • 90: 54bea87 = 82: c8aa77e Add config option windows.appendAtomically

  • 83: 3cc9e51 = 83: f044ee6 vcxproj: handle libreftable_test, too

  • 78: e825d5b = 84: 8f62760 compat/mingw.c: do not warn when failing to get owner

  • 92: f785954 = 85: a4a3b06 mingw: $env:TERM="xterm-256color" for newer OSes

  • 93: e9dd8ee = 86: 172683b winansi: check result and Buffer before using Name

  • 94: 53513cf = 87: ceecfc2 mingw: change core.fsyncObjectFiles = 1 by default

  • 84: bec451e = 88: 102fca6 vcxproj: avoid escaping double quotes in the defines

  • 85: 4881929 = 89: 7bcb195 ci: adjust Azure Pipeline for runs_on_pool

  • 86: b46b12b = 90: 2c0480f ci: stop linking the prove cache

  • 87: c5bfed9 = 91: 0e16024 ci: reinstate Azure Pipelines support

  • 88: af83eca = 92: 1578377 azure-pipeline: drop the GETTEXT_POISON job

  • 89: 1441bba = 93: 99c6f80 azure-pipeline: stop hard-coding apt-get calls

  • 91: 75c2296 = 94: 3ee9fc6 azure-pipeline: drop the code to write to/read from a file share

  • 95: 3d074ef = 95: 49ab7aa azure-pipeline: use partial clone/parallel checkout to initialize minimal-sdk

  • 98: 7607efb = 96: dad4868 azure-pipeline: downcase the job name of the Linux32 job

  • 97: 8aad276 = 97: 17d4b2b MinGW: link as terminal server aware

  • 96: 95379d2 = 98: 31f297e bswap.h: add support for built-in bswap functions

  • 101: 87b7f57 = 99: a630dc6 azure-pipeline: run static-analysis on jammy

  • 102: e4540aa = 100: 64f8cef Fix Windows version resources

  • 100: a52b505 = 101: 47d00fd http: optionally load libcurl lazily

  • 107: 1ad5a9d = 102: ba60d9a http: support lazy-loading libcurl also on Windows

  • 99: ad6d175 = 103: 4b05bbc config.mak.uname: add support for clangarm64

  • 108: 28ffdf8 = 104: 164d76d http: when loading libcurl lazily, allow for multiple SSL backends

  • 103: 72bfa56 = 105: 6b0fd48 ci: create clangarm64-build.yml

  • 104: d429e61 = 106: 180bbd6 status: fix for old-style submodules with commondir

  • 105: a487169 = 107: 9d086a7 windows: skip linking git-<command> for built-ins

  • 106: 63006dc = 108: 503e55b windows: fix Repository>Explore Working Copy

  • 109: a8a4732 = 109: 6f90446 mingw: do load libcurl dynamically by default

  • 110: 9c955d7 = 110: 85334a2 Add a GitHub workflow to verify that Git/Scalar work in Nano Server

  • 111: 63bdf1c = 111: ce46757 mingw: suggest windows.appendAtomically in more cases

  • 112: 8ab0c43 = 112: 6316eb2 win32: use native ANSI sequence processing, if possible

  • 113: 5d951a4 = 113: 0159466 git.rc: include winuser.h

  • 114: b9e6423 = 114: 0cf7a4b build(deps): bump microsoft/setup-msbuild from 1 to 2

  • 115: 97c9a2d = 115: 2e97dd4 common-main.c: fflush stdout buffer upon exit

  • 116: 2571af7 = 116: 5586a22 Win32: make FILETIME conversion functions public

  • 117: 7fa746b = 117: 306c076 Win32: dirent.c: Move opendir down

  • 118: fc662be = 118: d9f03ee mingw: make the dirent implementation pluggable

  • 119: 34fe2ac = 119: 54146a0 Win32: make the lstat implementation pluggable

  • 120: 9146041 = 120: 248dfb6 mingw: add infrastructure for read-only file system level caches

  • 121: 7d53867 = 121: 81efcfc mingw: add a cache below mingw's lstat and dirent implementations

  • 122: 4966246 = 122: a531c79 fscache: load directories only once

  • 123: bba4480 = 123: d312984 fscache: add key for GIT_TRACE_FSCACHE

  • 124: c0e6881 = 124: 6f0af43 fscache: remember not-found directories

  • 125: 84ce6e5 = 125: f323654 fscache: add a test for the dir-not-found optimization

  • 126: 6433c52 = 126: 539b80e add: use preload-index and fscache for performance

  • 127: 8189e1c = 127: 207b270 dir.c: make add_excludes aware of fscache during status

  • 128: c93024c = 128: 5179c43 fscache: make fscache_enabled() public

  • 129: ec522de = 129: a360904 dir.c: regression fix for add_excludes with fscache

  • 130: 7aea1dc = 130: 6a2d489 fetch-pack.c: enable fscache for stats under .git/objects

  • 131: e8df0cc = 131: 9e0d3fa checkout.c: enable fscache for checkout again

  • 132: 174dd02 = 132: 801c398 Enable the filesystem cache (fscache) in refresh_index().

  • 133: 8163b99 = 133: 5f72280 fscache: use FindFirstFileExW to avoid retrieving the short name

  • 134: 6cbbad8 = 134: 8fd2f5d status: disable and free fscache at the end of the status command

  • 135: f1995b7 = 135: 042b3f7 fscache: add GIT_TEST_FSCACHE support

  • 136: f06d91f = 136: 0ffd8c0 fscache: add fscache hit statistics

  • 137: c43f50b ! 137: 46d9644 mem_pool: add GIT_TRACE_MEMPOOL support

    @@ Commit message
     
      ## mem-pool.c ##
     @@
    - 
      #include "git-compat-util.h"
      #include "mem-pool.h"
    + #include "gettext.h"
     +#include "trace.h"
      
     +static struct trace_key trace_mem_pool = TRACE_KEY_INIT(MEMPOOL);
  • 138: 0a045ff = 138: a3d9d4d fscache: fscache takes an initial size

  • 139: 5255247 = 139: 8d38d6d fscache: update fscache to be thread specific instead of global

  • 140: 39bda77 = 140: 39c3a1b fscache: teach fscache to use mempool

  • 141: 533f9e9 = 141: 9587296 fscache: make fscache_enable() thread safe

  • 143: 8e9ca04 = 142: a0ad9ad fscache: teach fscache to use NtQueryDirectoryFile

  • 145: 541baa9 = 143: c304a06 unpack-trees: enable fscache for sparse-checkout

  • 147: 30b1d3a = 144: 15ec12b fscache: remember the reparse tag for each entry

  • 149: 27961dc = 145: c05be06 fscache: implement an FSCache-aware is_mount_point()

  • 151: dcd00e9 = 146: ff96fbf clean: make use of FSCache

  • 142: ce3e0e8 = 147: cf6610f git-gui: provide question helper for retry fallback on Windows

  • 144: 977c3b0 = 148: d64195b git gui: set GIT_ASKPASS=git-gui--askpass if not set yet

  • 152: 499ff40 = 149: 26b21dc gitk: Unicode file name support

  • 146: 6f2a430 = 150: 66a208e git-gui--askyesno: fix funny text wrapping

  • 153: 32bffaa = 151: 265146e gitk: Use an external icon file on Windows

  • 148: ed71a89 = 152: 2f2809d git-gui--askyesno: allow overriding the window title

  • 154: 98c36d3 = 153: bb84157 gitk: fix arrow keys in input fields with Tcl/Tk >= 8.6

  • 150: becd3f9 = 154: 5290dbf git-gui--askyesno (mingw): use Git for Windows' icon, if available

  • 155: 8969e69 = 155: 1a677a2 gitk: make the "list references" default window width wider

  • 156: 20a11ca = 156: 82d4781 pack-objects (mingw): demonstrate a segmentation fault with large deltas

  • 157: 625106c = 157: 5e395c8 mingw: support long paths

  • 158: faff0b3 = 158: 347dbbe Win32: fix 'lstat("dir/")' with long paths

  • 159: 696b10d = 159: 617101a win32(long path support): leave drive-less absolute paths intact

  • 165: 1ca2e1e = 160: d9f0035 compat/fsmonitor/fsm-*-win32: support long paths

  • 166: 2bc30ac = 161: 2722ab8 clean: suggest using core.longPaths if paths are too long to remove

  • 160: 63a6d9a = 162: a1b71bc mingw: Support git_terminal_prompt with more terminals

  • 161: 796cfff = 163: 166fb9b compat/terminal.c: only use the Windows console if bash 'read -r' fails

  • 162: 343b488 = 164: ebe6522 mingw (git_terminal_prompt): do fall back to CONIN$/CONOUT$ method

  • 163: f4955cd = 165: e0e8441 Unbreak interactive GPG prompt upon signing

  • 164: 6a14d74 = 166: 0d4cf3a strbuf_readlink: don't call readlink twice if hint is the exact link size

  • 167: 9d67bb2 = 167: 2f9887e strbuf_readlink: support link targets that exceed PATH_MAX

  • 168: 3072002 = 168: 2432596 lockfile.c: use is_dir_sep() instead of hardcoded '/' checks

  • 169: 19a825e = 169: 3496501 Win32: don't call GetFileAttributes twice in mingw_lstat()

  • 170: df4555c = 170: f3c58ef Win32: implement stat() with symlink support

  • 171: 02c9d3c = 171: b0980d8 Win32: remove separate do_lstat() function

  • 172: 83e3509 = 172: fbc7290 Win32: let mingw_lstat() error early upon problems with reparse points

  • 173: 57465e4 = 173: 253f132 mingw: teach fscache and dirent about symlinks

  • 174: 2613a02 = 174: a4951f7 Win32: lstat(): return adequate stat.st_size for symlinks

  • 175: ad1fbe8 = 175: 3bbd6ca Win32: factor out retry logic

  • 176: 4b67135 = 176: 7cc8344 Win32: change default of 'core.symlinks' to false

  • 177: 8d2858f = 177: edd443d Win32: add symlink-specific error codes

  • 178: 6b290a6 = 178: ed95126 Win32: mingw_unlink: support symlinks to directories

  • 179: 301ceca = 179: 32182bf Win32: mingw_rename: support renaming symlinks

  • 180: 7148f4a = 180: f6573ff Win32: mingw_chdir: change to symlink-resolved directory

  • 181: 2b9e7f8 = 181: e1f86a6 Win32: implement readlink()

  • 182: 05a356c = 182: 37a28f9 mingw: lstat: compute correct size for symlinks

  • 183: 67ccfb0 = 183: 330f307 Win32: implement basic symlink() functionality (file symlinks only)

  • 184: 26bc82a = 184: f62ecde Win32: symlink: add support for symlinks to directories

  • 185: ad86f85 = 185: 4d22fbd mingw: try to create symlinks without elevated permissions

  • 186: efed2c0 = 186: f5ce689 mingw: emulate stat() a little more faithfully

  • 187: aa856df = 187: 5eae016 mingw: special-case index entries for symlinks with buggy size

  • 188: cd64939 = 188: 1974e65 mingw: introduce code to detect whether we're inside a Windows container

  • 189: b573ccd = 189: bb0b148 mingw: when running in a Windows container, try to rename() harder

  • 191: d70f32d = 190: 9a68c82 mingw: move the file_attr_to_st_mode() function definition

  • 193: 2ab9aeb = 191: e7ee57c mingw: Windows Docker volumes are not symbolic links

  • 195: 90b30de = 192: fe337e8 mingw: work around rename() failing on a read-only file

  • 190: 3aa4992 = 193: 99a95d8 Win32: symlink: move phantom symlink creation to a separate function

  • 192: 96c4415 = 194: f3bf009 Introduce helper to create symlinks that knows about index_state

  • 194: b17faea = 195: 4fb4264 mingw: allow to specify the symlink type in .gitattributes

  • 196: 3800bf1 = 196: b455eb7 Win32: symlink: add test for symlink attribute

  • 197: 78d7b91 = 197: 8f79b6d mingw: explicitly specify with which cmd to prefix the cmdline

  • 198: 6a152ae = 198: 36d6185 mingw: when path_lookup() failed, try BusyBox

  • 199: a2b6d53 = 199: 12528d9 test-lib: avoid unnecessary Perl invocation

  • 200: 67a7c71 = 200: 597416d test-tool: learn to act as a drop-in replacement for iconv

  • 201: 6cd3c61 = 201: 4a6bb05 tests(mingw): if iconv is unavailable, use test-helper --iconv

  • 202: 531afe8 = 202: 8a2bcfe gitattributes: mark .png files as binary

  • 203: 2617d71 = 203: b294f6f tests: move test PNGs into t/lib-diff/

  • 204: 67c6c4a = 204: a20a507 tests: only override sort & find if there are usable ones in /usr/bin/

  • 205: adc691d = 205: 16cef01 tests: use the correct path separator with BusyBox

  • 206: 03e2f38 = 206: b5d2f7d mingw: only use Bash-ism builtin pwd -W when available

  • 207: 8d8f255 = 207: 7230dc0 tests (mingw): remove Bash-specific pwd option

  • 208: 761ae68 = 208: ee6dd97 test-lib: add BUSYBOX prerequisite

  • 209: 94b8691 = 209: 4aa5a27 t5003: use binary file from t/lib-diff/

  • 210: b7c8860 = 210: 5803764 t5532: workaround for BusyBox on Windows

  • 211: e60070d = 211: af8ef67 t5605: special-case hardlink test for BusyBox-w32

  • 212: 1e8f2e3 = 212: 65de7eb t5813: allow for $PWD to be a Windows path

  • 213: 9841b48 = 213: 055c478 t9200: skip tests when $PWD contains a colon

  • 214: d425aec = 214: ce079ef mingw: add a Makefile target to copy test artifacts

  • 215: 19de391 = 215: cafdf5e mingw: kill child processes in a gentler way

  • 217: 32a9480 = 216: c8771b7 mingw: optionally enable wsl compability file mode bits

  • 216: ca39a37 = 217: 7c15ab7 mingw: do not call xutftowcs_path in mingw_mktemp

  • 228: b0298d3 = 218: 661f368 Add a GitHub workflow to monitor component updates

  • 221: c08de6f = 219: 36c237d Describe Git for Windows' architecture [no ci]

  • 218: bb03d97 = 220: 7594c18 mingw: really handle SIGINT

  • 219: 742f407 = 221: ecfdabf Partially un-revert "editor: save and reset terminal after calling EDITOR"

  • 220: 3454388 = 222: ccf6426 reset: reinstate support for the deprecated --stdin option

  • 230: 1037959 = 223: 82a3f2b fsmonitor: reintroduce core.useBuiltinFSMonitor

  • 231: afff8ef = 224: 7d7e45d dependabot: help keeping GitHub Actions versions up to date

  • 222: 8d9be6b = 225: c4a3fe5 Modify the Code of Conduct for Git for Windows

  • 223: e72f07a = 226: b6701cf CONTRIBUTING.md: add guide for first-time contributors

  • 224: 95054be = 227: da4dd24 README.md: Add a Windows-specific preamble

  • 225: 4795cdf = 228: 3211a4a Add an issue template

  • 226: 2cf7608 = 229: 699b7cf Modify the GitHub Pull Request template (to reflect Git for Windows)

  • 227: 528a0c0 = 230: 187e8d0 .github: Add configuration for the Sentiment Bot

  • 229: 787c3af = 231: f391ab7 Document how $HOME is set on Windows

  • 232: 8dd648d = 232: 7d8f06c SECURITY.md: document Git for Windows' policies

PhilipOakley and others added 30 commits April 29, 2024 21:47
Ensure key CMake option values are part of the CMake output to
facilitate user support when tool updates impact the wider CMake
actions, particularly ongoing 'improvements' in Visual Studio.

These CMake displays perform the same function as the build-options.txt
provided in the main Git for Windows. CMake is already chatty.
The setting of CMAKE_EXPORT_COMPILE_COMMANDS is also reported.

Include the environment's CMAKE_EXPORT_COMPILE_COMMANDS value which
may have been propogated to CMake's internal value.

Testing the CMAKE_EXPORT_COMPILE_COMMANDS processing can be difficult
in the Visual Studio environment, as it may be cached in many places.
The 'environment' may include the OS, the user shell, CMake's
own environment, along with the Visual Studio presets and caches.

See previous commit for arefacts that need removing for a clean test.

Signed-off-by: Philip Oakley <[email protected]>
In Git for Windows, `has_symlinks` is set to 0 by default. Therefore, we
need to parse the config setting `core.symlinks` to know if it has been
set to `true`. In `git init`, we must do that before copying the
templates because they might contain symbolic links.

Even if the support for symbolic links on Windows has not made it to
upstream Git yet, we really should make sure that all the `core.*`
settings are parsed before proceeding, as they might very well change
the behavior of `git init` in a way the user intended.

This fixes git-for-windows#3414

Signed-off-by: Johannes Schindelin <[email protected]>
If `feature.experimental` and `feature.manyFiles` are set and the user
has not explicitly turned off the builtin FSMonitor, we now start
the built-in FSMonitor by default.

Only forcing it when UNSET matches the behavior of UPDATE_DEFAULT_BOOL()
used for other repo settings.

Signed-off-by: Johannes Schindelin <[email protected]>
Signed-off-by: Jeff Hostetler <[email protected]>
To verify that the `clean` side of the `clean`/`smudge` filter code is
correct with regards to LLP64 (read: to ensure that `size_t` is used
instead of `unsigned long`), here is a test case using a trivial filter,
specifically _not_ writing anything to the object store to limit the
scope of the test case.

As in previous commits, the `big` file from previous test cases is
reused if available, to save setup time, otherwise re-generated.

Signed-off-by: Philip Oakley <[email protected]>
Signed-off-by: Johannes Schindelin <[email protected]>
This is another fall-out of the recent refactoring flurry.

Signed-off-by: Johannes Schindelin <[email protected]>
This fixes the build after 7bc341e (git-compat-util: add a test
balloon for C99 support, 2021-12-01).

Signed-off-by: Johannes Schindelin <[email protected]>
This is now passed by default, ever since 6a8cbc4 (developer: enable
pedantic by default, 2021-09-03).

Signed-off-by: Johannes Schindelin <[email protected]>
Since ef8a6c6 (reftable: utility functions, 2021-10-07) we not only
have a libreftable, but also a libreftable_test.

Signed-off-by: Johannes Schindelin <[email protected]>
In the case of Git for Windows (say, in a Git Bash window) running in a
Windows Subsystem for Linux (WSL) directory, the GetNamedSecurityInfoW()
call in is_path_owned_By_current_side() returns an error code other than
ERROR_SUCCESS. This is consistent behavior across this boundary.

In these cases, the owner would always be different because the WSL
owner is a different entity than the Windows user.

The change here is to suppress the error message that looks like this:

  error: failed to get owner for '//wsl.localhost/...' (1)

Before this change, this warning happens for every Git command,
regardless of whether the directory is marked with safe.directory.

Signed-off-by: Derrick Stolee <[email protected]>
For Windows builds >= 15063 set $env:TERM to "xterm-256color" instead of
"cygwin" because they have a more capable console system that supports
this. Also set $env:COLORTERM="truecolor" if unset.

$env:TERM is initialized so that ANSI colors in color.c work, see
29a3963 (Win32: patch Windows environment on startup, 2012-01-15).

See git-for-windows#3629 regarding problems caused by always setting
$env:TERM="cygwin".

This is the same heuristic used by the Cygwin runtime.

Signed-off-by: Rafael Kitover <[email protected]>
Signed-off-by: Johannes Schindelin <[email protected]>
NtQueryObject under Wine can return a success but fill out no name.
In those situations, Wine will set Buffer to NULL, and set result to
the sizeof(OBJECT_NAME_INFORMATION).

Running a command such as

echo "$(git.exe --version 2>/dev/null)"

will crash due to a NULL pointer dereference when the code attempts to
null terminate the buffer, although, weirdly, removing the subshell or
redirecting stdout to a file will not trigger the crash.

Code has been added to also check Buffer and Length to ensure the check
is as robust as possible due to the current behavior being fragile at
best, and could potentially change in the future

This code is based on the behavior of NtQueryObject under wine and
reactos.

Signed-off-by: Christopher Degawa <[email protected]>
Atomic append on windows is only supported on local disk files, and it may
cause errors in other situations, e.g. network file system. If that is the
case, this config option should be used to turn atomic append off.

Co-Authored-By: Johannes Schindelin <[email protected]>
Signed-off-by: 孙卓识 <[email protected]>
Signed-off-by: Johannes Schindelin <[email protected]>
From the documentation of said setting:

	This boolean will enable fsync() when writing object files.

	This is a total waste of time and effort on a filesystem that
	orders data writes properly, but can be useful for filesystems
	that do not use journalling (traditional UNIX filesystems) or
	that only journal metadata and not file contents (OS X’s HFS+,
	or Linux ext3 with "data=writeback").

The most common file system on Windows (NTFS) does not guarantee that
order, therefore a sudden loss of power (or any other event causing an
unclean shutdown) would cause corrupt files (i.e. files filled with
NULs). Therefore we need to change the default.

Note that the documentation makes it sound as if this causes really bad
performance. In reality, writing loose objects is something that is done
only rarely, and only a handful of files at a time.

Signed-off-by: Johannes Schindelin <[email protected]>
Visual Studio 2022 does not like that at all.

Signed-off-by: Johannes Schindelin <[email protected]>
These refactorings are really gifts that keep on giving.

Signed-off-by: Johannes Schindelin <[email protected]>
It is not useful because we do not have any persisted directory anymore,
not since dropping our Travis CI support.

Signed-off-by: Johannes Schindelin <[email protected]>
... so that we can test a MinGit backport in a private repository (with
GitHub Actions, minutes and parallel jobs are limited way more than with
Azure Pipelines in private repositories).

In this commit, we reinstate the exact version of `azure-pipelines.yml`
as 6081d38 (ci: retire the Azure Pipelines definition, 2020-04-11)
deleted.

Naturally, many adjustments are required to make it work again. Some of
the changes are actually outside of that file (such as the
`runs_on_pool` changes that are needed in the Azure Pipelines part of
`ci/lib.sh`) and they were made in the commits leading up to this here
commit.

However, other adjustments are required in the `azure-pipelines.yml`
file itself, and for ease of review (read: to build confidence in those
changes) they will be made in subsequent, individual commits that
explain the intent, context, implementation and justification like every
good commit message should do.

Signed-off-by: Johannes Schindelin <[email protected]>
This is a follow-up to 6c280b4 (ci: remove GETTEXT_POISON jobs,
2021-01-20) after reinstating the Azure Pipeline.

Signed-off-by: Johannes Schindelin <[email protected]>
We have `ci/install-dependencies.sh` for that. Incidentally, this avoids
the following error in the linux-* jobs:

    The following packages have unmet dependencies:
    git-email : Depends: git (< 1:2.25.1-.) but 1:2.35.1-0ppa1~ubuntu20.04.1 is to be installed
	  Recommends: libemail-valid-perl but it is not going to be installed

Signed-off-by: Johannes Schindelin <[email protected]>
We haven't used this feature in ages, we don't actually need to.

Signed-off-by: Johannes Schindelin <[email protected]>
…imal-sdk

The Azure Pipeline `git-sdk-64-minimal` was retired...

Signed-off-by: Johannes Schindelin <[email protected]>
These many refactorings in Git sure are gifts that keep on giving.

Signed-off-by: Johannes Schindelin <[email protected]>
This is inspired by d051ed7 (.github/workflows/main.yml: run
static-analysis on bionic, 2021-02-08) and by ef46584 (ci: update
'static-analysis' to Ubuntu 22.04, 2022-08-23), adapted to the Azure
Pipeline.

When Azure Pipelines' build agents transitioned 'ubuntu-latest' from
18.04 to 20.04, it broke our `static-analysis` job, since Coccinelle
was not madeavailable on Ubuntu focal (it is only available in the
universe suite).

This is not an issue with Ubuntu 22.04, but we will only know whether it
is an issue with 24.04 when _that_ comes out. So let's play it safe and
pin the `static_analysis` job to the latest Ubuntu version that we know
to offer a working Coccinelle package.

Signed-off-by: Taylor Blau <[email protected]>
Signed-off-by: Junio C Hamano <[email protected]>
Signed-off-by: Johannes Schindelin <[email protected]>
Whith Windows 2000, Microsoft introduced a flag to the PE header to mark executables as
"terminal server aware". Windows terminal servers provide a redirected Windows directory and
redirected registry hives when launching legacy applications without this flag set. Since we
do not use any INI files in the Windows directory and don't write to the registry, we don't
need  this additional preparation. Telling the OS that we don't need this should provide
slightly improved startup times in terminal server environments.

When building for supported Windows Versions with MSVC the /TSAWARE linker flag is
automatically set, but MinGW requires us to set the --tsaware flag manually.

This partially addresses git-for-windows#3935.

Signed-off-by: Matthias Aßhauer <[email protected]>
Add FileVersion, which is a required field
As not all required fields were present, none were being included
Fixes git-for-windows#4090

Signed-off-by: Kiel Hurley <[email protected]>
Newer compiler versions, like GCC 10 and Clang 12, have built-in
functions for bswap32 and bswap64. This comes in handy, for example,
when targeting CLANGARM64 on Windows, which would not be supported
without this logic.

Signed-off-by: Dennis Ameling <[email protected]>
This compile-time option allows to ask Git to load libcurl dynamically
at runtime.

Together with a follow-up patch that optionally overrides the file name
depending on the `http.sslBackend` setting, this kicks open the door for
installing multiple libcurl flavors side by side, and load the one
corresponding to the (runtime-)configured SSL/TLS backend.

Signed-off-by: Johannes Schindelin <[email protected]>
This implements the Windows-specific support code, because everything is
slightly different on Windows, even loading shared libraries.

Note: I specifically do _not_ use the code from
`compat/win32/lazyload.h` here because that code is optimized for
loading individual functions from various system DLLs, while we
specifically want to load _many_ functions from _one_ DLL here, and
distinctly not a system DLL (we expect libcurl to be located outside
`C:\Windows\system32`, something `INIT_PROC_ADDR` refuses to work with).
Also, the `curl_easy_getinfo()`/`curl_easy_setopt()` functions are
declared as vararg functions, which `lazyload.h` cannot handle. Finally,
we are about to optionally override the exact file name that is to be
loaded, which is a goal contrary to `lazyload.h`'s design.

Signed-off-by: Johannes Schindelin <[email protected]>
CLANGARM64 is a relatively new MSYSTEM added by the MSYS2 team. In order
to have Git build correctly for this platform, let's add some
configuration for it to config.mak.uname.

Signed-off-by: Dennis Ameling <[email protected]>
Philip Oakley and others added 22 commits April 29, 2024 21:48
Git for Windows accepts pull requests; Core Git does not. Therefore we
need to adjust the template (because it only matches core Git's
project management style, not ours).

Also: direct Git for Windows enhancements to their contributions page,
space out the text for easy reading, and clarify that the mailing list
is plain text, not HTML.

Signed-off-by: Philip Oakley <[email protected]>
Signed-off-by: Johannes Schindelin <[email protected]>
The sentiment bot will help detect when things get too heated.
Hopefully.

Signed-off-by: Johannes Schindelin <[email protected]>
Git documentation refers to $HOME and $XDG_CONFIG_HOME often, but does not specify how or where these values come from on Windows where neither is set by default. The new documentation reflects the behavior of setup_windows_environment() in compat/mingw.c.

Signed-off-by: Alejandro Barreto <[email protected]>
These are Git for Windows' Git GUI and gitk patches. We will have to
decide at some point what to do about them, but that's a little lower
priority (as Git GUI seems to be unmaintained for the time being, and
the gitk maintainer keeps a very low profile on the Git mailing list,
too).

Signed-off-by: Johannes Schindelin <[email protected]>
This is the recommended way on GitHub to describe policies revolving around
security issues and about supported versions.

Signed-off-by: Johannes Schindelin <[email protected]>
…dvice

clean: suggest using `core.longPaths` if paths are too long to remove
Signed-off-by: Johannes Schindelin <[email protected]>
This was pull request git-for-windows#1645 from ZCube/master

Support windows container.

Signed-off-by: Johannes Schindelin <[email protected]>
…ws#4527)

With this patch, Git for Windows works as intended on mounted APFS
volumes (where renaming read-only files would fail).

Signed-off-by: Johannes Schindelin <[email protected]>
Signed-off-by: Johannes Schindelin <[email protected]>
This patch introduces support to set special NTFS attributes that are
interpreted by the Windows Subsystem for Linux as file mode bits, UID
and GID.

Signed-off-by: Johannes Schindelin <[email protected]>
Handle Ctrl+C in Git Bash nicely

Signed-off-by: Johannes Schindelin <[email protected]>
A fix for calling `vim` in Windows Terminal caused a regression and was
reverted. We partially un-revert this, to get the fix again.

Signed-off-by: Johannes Schindelin <[email protected]>
This topic branch re-adds the deprecated --stdin/-z options to `git
reset`. Those patches were overridden by a different set of options in
the upstream Git project before we could propose `--stdin`.

We offered this in MinGit to applications that wanted a safer way to
pass lots of pathspecs to Git, and these applications will need to be
adjusted.

Instead of `--stdin`, `--pathspec-from-file=-` should be used, and
instead of `-z`, `--pathspec-file-nul`.

Signed-off-by: Johannes Schindelin <[email protected]>
Originally introduced as `core.useBuiltinFSMonitor` in Git for Windows
and developed, improved and stabilized there, the built-in FSMonitor
only made it into upstream Git (after unnecessarily long hemming and
hawing and throwing overly perfectionist style review sticks into the
spokes) as `core.fsmonitor = true`.

In Git for Windows, with this topic branch, we re-introduce the
now-obsolete config setting, with warnings suggesting to existing users
how to switch to the new config setting, with the intention to
ultimately drop the patch at some stage.

Signed-off-by: Johannes Schindelin <[email protected]>
…updates

Start monitoring updates of Git for Windows' component in the open
Add a README.md for GitHub goodness.

Signed-off-by: Johannes Schindelin <[email protected]>
@dscho dscho added this to the Next release milestone Apr 29, 2024
@dscho dscho self-assigned this Apr 29, 2024
@dscho dscho linked an issue Apr 29, 2024 that may be closed by this pull request
@dscho dscho marked this pull request as ready for review April 29, 2024 20:01
@dscho
Copy link
Member Author

dscho commented Apr 29, 2024

/git-artifacts

The tag-git workflow run was started

The git-artifacts-x86_64 workflow run was started.
The git-artifacts-i686 workflow run was started.

@dscho
Copy link
Member Author

dscho commented Apr 29, 2024

/release

The release-git workflow run was started

@gitforwindowshelper gitforwindowshelper bot merged commit b5d0511 into git-for-windows:main Apr 29, 2024
65 of 66 checks passed
@dscho dscho deleted the rebase-to-v2.45.0 branch April 29, 2024 20:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[New git version] v2.45.0