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.44.0 #4834

Merged
merged 327 commits into from
Feb 23, 2024
Merged

Conversation

dscho
Copy link
Member

@dscho dscho commented Feb 23, 2024

Range-diff relative to main
  • 1: 62fcd7b = 1: f6d07da gitk(Windows): avoid inadvertently calling executables in the worktree

  • 2: e0cc854 = 2: ffa8b59 t9350: point out that refs are not updated correctly

  • 3: 211aece = 3: 1569727 transport-helper: add trailing --

  • 4: 334446b = 4: b5975da remote-helper: check helper status after import/export

  • 8: bd9b731 = 5: 52ee51f Always auto-gc after calling a fast-import transport

  • 5: 8368668 = 6: 7e1ee54 mingw: demonstrate a problem with certain absolute paths

  • 6: 13e0dae = 7: 91929b0 clean: do not traverse mount points

  • 9: 319a5d3 = 8: 6d7e635 mingw: allow absolute paths without drive prefix

  • 10: 2e91287 = 9: e1c57f4 clean: remove mount points when possible

  • 7: d897bc3 = 10: 0b807dc mingw: include the Python parts in the build

  • 11: ef50537 = 11: 746b42f win32/pthread: avoid name clashes with winpthread

  • 12: 62a5b3d = 12: 7e92bf4 git-compat-util: avoid redeclaring _DEFAULT_SOURCE

  • 13: a5c8a3f = 13: 4410e83 Import the source code of mimalloc v2.1.2

  • 14: d24c486 = 14: b869a33 mimalloc: adjust for building inside Git

  • 15: 606ba7c = 15: e90dea5 mimalloc: offer a build-time option to enable it

  • 16: 26a0fac = 16: 0b3b763 mimalloc: use "weak" random seed when statically linked

  • 17: 67dc229 = 17: e6cd8f2 mingw: use mimalloc

  • 18: 695977a = 18: bc841ff transport: optionally disable side-band-64k

  • 19: 97e8b5d = 19: 4e2e131 mingw: make sure errno is set correctly when socket operations fail

  • 22: 3db73ef = 20: 28d0568 mingw: demonstrate a git add issue with NTFS junctions

  • 24: 33559ef = 21: cf25607 strbuf_realpath(): use platform-dependent API if available

  • 21: 7f0b800 = 22: 3affab3 mingw: ensure valid CTYPE

  • 20: 3eac281 = 23: 0b77572 mingw: do resolve symlinks in getcwd()

  • 28: a47cb58 = 24: f3151fe mingw: fix fatal error working on mapped network drives on Windows

  • 29: 5cd260b = 25: af5f503 clink.pl: fix MSVC compile script to handle libcurl-d.lib

  • 30: fd8f0b2 = 26: d4d3aee mingw: implement a platform-specific strbuf_realpath()

  • 25: ca2ddfa = 27: ac698b8 vcxproj: unclash project directories with build outputs

  • 31: f2359a8 = 28: 80e60bb t5505/t5516: allow running without .git/branches/ in the templates

  • 23: 489012c = 29: 78aca51 mingw: allow git.exe to be used instead of the "Git wrapper"

  • 32: 314efd1 = 30: bb2ec50 t5505/t5516: fix white-space around redirectors

  • 26: 2f11f1a = 31: 9e5e830 mingw: ignore HOMEDRIVE/HOMEPATH if it points to Windows' system directory

  • 27: 3f0b244 = 32: 39f0b43 http: use new "best effort" strategy for Secure Channel revoke checking

  • 33: 608e4f3 = 33: a70f3ef t3701: verify that we can add lots of files interactively

  • 34: 26f4930 = 34: 850ae56 git add -i: handle CR/LF line endings in the interactive input

  • 35: 8d5b373 = 35: 4ffb4f7 commit: accept "scissors" with CR/LF line endings

  • 36: 6f9b859 = 36: 449a729 t0014: fix indentation

  • 37: e87ac47 = 37: edd04e4 git-gui: accommodate for intent-to-add files

  • 38: b7726dd = 38: 1477241 clink.pl: fix libexpatd.lib link error when using MSVC

  • 39: 78e4065 = 39: 48af27c Makefile: clean up .ilk files when MSVC=1

  • 40: e5e37b5 = 40: 8d38caa vcbuild: add support for compiling Windows resource files

  • 41: c98a1c3 = 41: f56cd80 config.mak.uname: add git.rc to MSVC builds

  • 42: c414fd2 = 42: db752ae clink.pl: ignore no-stack-protector arg on MSVC=1 builds

  • 43: 55151e9 = 43: bacc877 clink.pl: move default linker options for MSVC=1 builds

  • 44: 77bc401 = 44: 701b3eb buildsystems: remove duplicate clause

  • 46: 09ec951 = 45: 7df2091 vcpkg_install: detect lack of Git

  • 45: b7f4499 = 46: 7aff82b vcxproj: handle resource files, too

  • 48: 13d3106 = 47: 56cb4d2 vcpkg_install: add comment regarding slow network connections

  • 47: e215021 = 48: 7ff808c vcxproj: ignore -fno-stack-protector and -fno-common

  • 50: 063d456 = 49: bec86b4 vcxproj: support building Windows/ARM64 binaries

  • 49: fa2b0d0 = 50: 3296421 vcxproj: handle GUI programs, too

  • 52: d5c3f35 = 51: 6b27288 vcbuild: install ARM64 dependencies when building ARM64 binaries

  • 51: a51a82d = 52: d044e20 cmake: install headless-git.

  • 53: 9c5213f = 53: 699ecb3 vcbuild: add an option to install individual 'features'

  • 54: 1490af3 = 54: 2f6bc68 cmake: allow building for Windows/ARM64

  • 55: a9df5f9 = 55: 417ce96 ci(vs-build) also build Windows/ARM64 artifacts

  • 56: d0166ef = 56: 7d53f99 Add schannel to curl installation

  • 57: c83f7c1 = 57: c0576d3 cmake(): allow setting HOST_CPU for cross-compilation

  • 58: faa84ec = 58: 5b54031 ci(vs-build): download the vcpkg artifacts using a dedicated Action

  • 59: 51db8a5 = 59: aee8fa8 mingw: allow for longer paths in parse_interpreter()

  • 67: 0ee8704 = 60: 673a33e subtree: update contrib/subtree test target

  • 63: 82d1b77 = 61: 1d76420 CMake: default Visual Studio generator has changed

  • 60: 9820d93 = 62: f3f8c5a compat/vcbuild: document preferred way to build in Visual Studio

  • 61: bd3b751 = 63: 3696462 http: optionally send SSL client certificate

  • 70: 6b1b192 = 64: cd537f5 ci: run contrib/subtree tests in CI builds

  • 65: 8666b50 = 65: 6cafcba .gitignore: add Visual Studio CMakeSetting.json file

  • 62: 5afd79f = 66: a42f7c5 hash-object: demonstrate a >4GB/LLP64 problem

  • 68: 5df1093 = 67: bf410ee CMakeLists: add default "x64-windows" arch for Visual Studio

  • 64: fd291d0 = 68: cf231ef write_object_file_literally(): use size_t

  • 71: 0b8bf61 = 69: d3c63da CMake: show Win32 and Generator_platform build-option values

  • 72: 51cb720 = 70: 143b4ea init: do parse all core.* settings early

  • 73: bc3b0db = 71: 272cf41 Enable the built-in FSMonitor as an experimental feature

  • 66: fb336cb = 72: 0620f84 object-file.c: use size_t for header lengths

  • 69: c09771d = 73: a70bcde hash algorithms: use size_t for section lengths

  • 74: e199612 = 74: ced7957 hash-object --stdin: verify that it works with >4GB/LLP64

  • 76: bd35ae2 = 75: dc8fdb5 hash-object: add another >4GB/LLP64 test case

  • 77: 71aba2a = 76: 1c37c54 setup: properly use "%(prefix)/" when in WSL

  • 80: 58b6d48 = 77: 9f3a1f5 hash-object: add a >4GB/LLP64 test case using filtered input

  • 81: 78dbbc1 = 78: 8ffd41b compat/mingw.c: do not warn when failing to get owner

  • 82: 5f78ab9 = 79: 3c712e4 mingw: $env:TERM="xterm-256color" for newer OSes

  • 75: e07d57d = 80: ac28795 vcxproj: allow building with NO_PERL again

  • 78: ce8d5b7 = 81: 15c43f8 Add config option windows.appendAtomically

  • 79: adf4378 = 82: e3242a9 vcxproj: require C11

  • 83: 5457bef = 83: a96099c winansi: check result and Buffer before using Name

  • 84: cd22a6d = 84: 7135f7f mingw: change core.fsyncObjectFiles = 1 by default

  • 85: f59659a = 85: 66b781b vcxproj: ignore the -pedantic option

  • 86: 4d9f4f7 = 86: 4c025b1 vcxproj: include reftable when committing .vcxproj files

  • 87: 8cf7664 = 87: 6518161 vcxproj: handle libreftable_test, too

  • 88: 08f032c = 88: e3f119d vcxproj: avoid escaping double quotes in the defines

  • 89: 3644fa4 = 89: 712174e ci: adjust Azure Pipeline for runs_on_pool

  • 90: e3881d4 = 90: 755e24a ci: stop linking the prove cache

  • 91: 242a9b5 = 91: 84cf485 ci: reinstate Azure Pipelines support

  • 92: 53167ac = 92: c6b8b60 azure-pipeline: drop the GETTEXT_POISON job

  • 93: 2f5d536 = 93: 9c6adc8 azure-pipeline: stop hard-coding apt-get calls

  • 94: 68286a8 = 94: fbe4ef8 azure-pipeline: drop the code to write to/read from a file share

  • 95: fc13951 = 95: 81cb4e3 azure-pipeline: use partial clone/parallel checkout to initialize minimal-sdk

  • 96: fa9b79d = 96: b5bb224 azure-pipeline: downcase the job name of the Linux32 job

  • 101: 40f4e01 = 97: ace479f bswap.h: add support for built-in bswap functions

  • 97: 0699395 = 98: effc5a9 MinGW: link as terminal server aware

  • 103: b69bdb3 = 99: 1bd5125 config.mak.uname: add support for clangarm64

  • 98: 046ac62 = 100: f7d5f33 azure-pipeline: run static-analysis on jammy

  • 99: 13b3fa7 = 101: 980bdc2 Fix Windows version resources

  • 100: f9fa3f5 = 102: a2ba280 http: optionally load libcurl lazily

  • 102: f3ba177 = 103: 3aa6dc3 http: support lazy-loading libcurl also on Windows

  • 104: c1b66ba = 104: 089b1ef http: when loading libcurl lazily, allow for multiple SSL backends

  • 105: 0c8bf65 = 105: f86f976 ci: create clangarm64-build.yml

  • 106: a53bda1 = 106: 3c04c1b status: fix for old-style submodules with commondir

  • 107: 1322cfc = 107: cd182d8 windows: skip linking git-<command> for built-ins

  • 108: 5a79d8f = 108: a806007 windows: fix Repository>Explore Working Copy

  • 109: e6e865e = 109: 11cee6c mingw: do load libcurl dynamically by default

  • 110: fd9b23f = 110: 807aed5 Add a GitHub workflow to verify that Git/Scalar work in Nano Server

  • 111: 6f0132e ! 111: f2bac6e mingw: suggest windows.appendAtomically in more cases

    @@ compat/mingw.c: ssize_t mingw_write(int fd, const void *buf, size_t len)
      		int orig = errno;
      
      		/* check if fd is a pipe */
    - 		HANDLE h = (HANDLE) _get_osfhandle(fd);
    - 		if (GetFileType(h) != FILE_TYPE_PIPE)
    +@@ compat/mingw.c: ssize_t mingw_write(int fd, const void *buf, size_t len)
    + 			}
    + 
      			errno = orig;
    --		else if (orig == EINVAL)
    -+		else if (orig == EINVAL || errno == EBADF)
    +-		} else if (orig == EINVAL)
    ++		} else if (orig == EINVAL || errno == EBADF)
      			errno = EPIPE;
      		else {
      			DWORD buf_size;
  • 112: 79cf7b2 = 112: 4d19bae win32: use native ANSI sequence processing, if possible

  • 113: 1c85e4f ! 113: b222864 git.rc: include winuser.h

    @@ Commit message
         This fixes https://github.com/git-for-windows/git/issues/4707
     
         Signed-off-by: Matthias A├ƒhauer <[email protected]>
    +    Signed-off-by: Johannes Schindelin <[email protected]>
     
      ## contrib/buildsystems/CMakeLists.txt ##
     @@ contrib/buildsystems/CMakeLists.txt: if(CMAKE_C_COMPILER_ID STREQUAL "MSVC")
    @@ contrib/buildsystems/Generators/Vcxproj.pm
     @@ contrib/buildsystems/Generators/Vcxproj.pm: sub createProject {
            <AdditionalDependencies>\$(VCPKGLibs);\$(AdditionalDependencies)</AdditionalDependencies>
            <AdditionalOptions>invalidcontinue.obj %(AdditionalOptions)</AdditionalOptions>
    -       <EntryPointSymbol>wmainCRTStartup</EntryPointSymbol>
    +       <EntryPointSymbol>$entrypoint</EntryPointSymbol>
     -      <ManifestFile>$cdup\\compat\\win32\\git.manifest</ManifestFile>
    -       <SubSystem>Console</SubSystem>
    +       <SubSystem>$subsystem</SubSystem>
          </Link>
      EOM
     
  • 114: 37aedfb = 114: f45cdb8 build(deps): bump microsoft/setup-msbuild from 1 to 2

  • 115: 14c4100 = 115: 72efe1a Win32: make FILETIME conversion functions public

  • 116: d1f56cd = 116: 2e5d520 Win32: dirent.c: Move opendir down

  • 117: 120f639 = 117: 8c981f7 mingw: make the dirent implementation pluggable

  • 118: 1074cd0 = 118: a5f5f3d Win32: make the lstat implementation pluggable

  • 119: fb48846 = 119: 4b7ab84 mingw: add infrastructure for read-only file system level caches

  • 120: af07154 = 120: bb69605 mingw: add a cache below mingw's lstat and dirent implementations

  • 121: e6b3fe6 = 121: 3d96e1c fscache: load directories only once

  • 122: 3a7dbd8 = 122: 17adee1 fscache: add key for GIT_TRACE_FSCACHE

  • 123: 5ee40f7 = 123: 528ada5 fscache: remember not-found directories

  • 124: df56507 = 124: f5fe405 fscache: add a test for the dir-not-found optimization

  • 125: a0518a9 = 125: cc63eb4 add: use preload-index and fscache for performance

  • 126: 99dae94 = 126: edbeaf8 dir.c: make add_excludes aware of fscache during status

  • 127: 8785376 = 127: 49daea6 fscache: make fscache_enabled() public

  • 128: fd83736 = 128: 52e5aef dir.c: regression fix for add_excludes with fscache

  • 129: f5e2ecf = 129: 4d934d6 fetch-pack.c: enable fscache for stats under .git/objects

  • 130: b0e415f = 130: a936cbc checkout.c: enable fscache for checkout again

  • 131: 79b01d0 = 131: 31a3dba Enable the filesystem cache (fscache) in refresh_index().

  • 132: 3446126 = 132: 5114996 fscache: use FindFirstFileExW to avoid retrieving the short name

  • 133: 15271c3 = 133: a3cdefd status: disable and free fscache at the end of the status command

  • 134: 1912848 = 134: fa145d7 fscache: add GIT_TEST_FSCACHE support

  • 135: d6fe7f0 = 135: c7b65bc fscache: add fscache hit statistics

  • 136: 4d545f8 = 136: 13ded6c mem_pool: add GIT_TRACE_MEMPOOL support

  • 137: ad803f7 = 137: 1829c22 fscache: fscache takes an initial size

  • 138: a259c8a = 138: 22ebe7e fscache: update fscache to be thread specific instead of global

  • 139: 4fae199 = 139: 263ee17 fscache: teach fscache to use mempool

  • 140: c5e04c7 = 140: 133ac14 fscache: make fscache_enable() thread safe

  • 141: b954d02 = 141: 35d4265 fscache: teach fscache to use NtQueryDirectoryFile

  • 142: 8cdf01b = 142: 2dbee49 unpack-trees: enable fscache for sparse-checkout

  • 143: 75b30d8 = 143: 0194798 fscache: remember the reparse tag for each entry

  • 145: de10ad7 = 144: dd36249 fscache: implement an FSCache-aware is_mount_point()

  • 144: 818865b = 145: 7816d55 git-gui: provide question helper for retry fallback on Windows

  • 147: fa0e60a = 146: 8b551c8 clean: make use of FSCache

  • 146: 2a53be8 = 147: 4bb2790 git gui: set GIT_ASKPASS=git-gui--askpass if not set yet

  • 149: 5b853a7 = 148: fc248d7 git-gui--askyesno: fix funny text wrapping

  • 148: 0a7ed7f = 149: e29f89a gitk: Unicode file name support

  • 151: bc2cc2f = 150: a9ffbc7 git-gui--askyesno: allow overriding the window title

  • 150: d832848 = 151: 0e85f32 gitk: Use an external icon file on Windows

  • 153: 261e4f5 = 152: b451ae7 git-gui--askyesno (mingw): use Git for Windows' icon, if available

  • 152: 01a4d03 = 153: 10ad832 gitk: fix arrow keys in input fields with Tcl/Tk >= 8.6

  • 154: 577173a = 154: fbd7e65 gitk: make the "list references" default window width wider

  • 155: ffe2c64 = 155: 52f6639 pack-objects (mingw): demonstrate a segmentation fault with large deltas

  • 156: 76c2eac = 156: fd5d72b mingw: support long paths

  • 157: b2fdffe = 157: 0681755 Win32: fix 'lstat("dir/")' with long paths

  • 158: df1e5e2 = 158: 1db54b0 win32(long path support): leave drive-less absolute paths intact

  • 159: 8bbd305 = 159: 7053e81 mingw: Support git_terminal_prompt with more terminals

  • 163: 2c1ce5e = 160: 78cfa1f compat/fsmonitor/fsm-*-win32: support long paths

  • 164: 3907a64 = 161: e971fb3 clean: suggest using core.longPaths if paths are too long to remove

  • 160: 9a13e18 = 162: 22df5ca compat/terminal.c: only use the Windows console if bash 'read -r' fails

  • 161: c58b002 = 163: 41d9f78 mingw (git_terminal_prompt): do fall back to CONIN$/CONOUT$ method

  • 162: 272044b = 164: e8164d3 Unbreak interactive GPG prompt upon signing

  • 165: 23d5c30 = 165: 429ee93 strbuf_readlink: don't call readlink twice if hint is the exact link size

  • 166: 3698a7a = 166: 3fa5764 strbuf_readlink: support link targets that exceed PATH_MAX

  • 167: 8d475d0 = 167: 756ab38 lockfile.c: use is_dir_sep() instead of hardcoded '/' checks

  • 168: 972c276 = 168: 3aae221 Win32: don't call GetFileAttributes twice in mingw_lstat()

  • 169: 975782b = 169: 1d64bbf Win32: implement stat() with symlink support

  • 170: 63a3e18 = 170: 05512a4 Win32: remove separate do_lstat() function

  • 171: c8b7ebf = 171: 20e81f0 Win32: let mingw_lstat() error early upon problems with reparse points

  • 172: bd4102e = 172: 5a068ec mingw: teach fscache and dirent about symlinks

  • 173: fddfdc5 = 173: d3e3d71 Win32: lstat(): return adequate stat.st_size for symlinks

  • 174: cd4d60e = 174: b7c06d6 Win32: factor out retry logic

  • 175: 33399e6 = 175: 0126843 Win32: change default of 'core.symlinks' to false

  • 176: 4c22343 = 176: 95d1af8 Win32: add symlink-specific error codes

  • 177: f656a8c = 177: 81743f0 Win32: mingw_unlink: support symlinks to directories

  • 178: e8328f0 = 178: d61f05b Win32: mingw_rename: support renaming symlinks

  • 179: 533ae66 = 179: cf4045c Win32: mingw_chdir: change to symlink-resolved directory

  • 180: dbef513 = 180: 3ecf442 Win32: implement readlink()

  • 181: 250218a = 181: cfac282 mingw: lstat: compute correct size for symlinks

  • 182: f5575ef = 182: 3374e63 Win32: implement basic symlink() functionality (file symlinks only)

  • 183: 17d2538 = 183: 7934ce8 Win32: symlink: add support for symlinks to directories

  • 184: 364eb4f = 184: 4e373b8 mingw: try to create symlinks without elevated permissions

  • 185: 6f48c2a = 185: 89d4082 mingw: emulate stat() a little more faithfully

  • 186: a17c710 = 186: 992cc80 mingw: special-case index entries for symlinks with buggy size

  • 187: 88251bc = 187: 7be3b3a mingw: introduce code to detect whether we're inside a Windows container

  • 188: 288df17 = 188: 013eda5 mingw: when running in a Windows container, try to rename() harder

  • 189: 44d74b2 = 189: 611eabc mingw: move the file_attr_to_st_mode() function definition

  • 190: 158ce8b = 190: b210c4e Win32: symlink: move phantom symlink creation to a separate function

  • 191: 54085a4 = 191: 6386870 Introduce helper to create symlinks that knows about index_state

  • 192: 96236be = 192: 2f99f99 mingw: allow to specify the symlink type in .gitattributes

  • 193: 7ca143e = 193: 67fe40d Win32: symlink: add test for symlink attribute

  • 194: 2f03de8 = 194: ae4c6b6 mingw: explicitly specify with which cmd to prefix the cmdline

  • 196: 22b7f9c = 195: c5b9c4b mingw: when path_lookup() failed, try BusyBox

  • 198: c3f1c16 = 196: 7625cef test-lib: avoid unnecessary Perl invocation

  • 199: 5d5bf57 = 197: ddbb69a test-tool: learn to act as a drop-in replacement for iconv

  • 195: 4b4712e = 198: 9edd88c mingw: Windows Docker volumes are not symbolic links

  • 200: fca41ad = 199: 9e8d658 tests(mingw): if iconv is unavailable, use test-helper --iconv

  • 197: 2ee1fe2 = 200: 8ffc879 mingw: work around rename() failing on a read-only file

  • 201: ea80e76 = 201: ae6a020 gitattributes: mark .png files as binary

  • 202: 7dfaefb = 202: eddcae4 tests: move test PNGs into t/lib-diff/

  • 203: 1a48af1 = 203: 8a90932 tests: only override sort & find if there are usable ones in /usr/bin/

  • 204: d11c95b = 204: ba47334 tests: use the correct path separator with BusyBox

  • 205: 3bcdfdb = 205: c194c5e mingw: only use Bash-ism builtin pwd -W when available

  • 206: 029143c = 206: dd9d056 tests (mingw): remove Bash-specific pwd option

  • 207: 64ed077 = 207: 23ddde7 test-lib: add BUSYBOX prerequisite

  • 208: 58098ea = 208: f0f57df t5003: use binary file from t/lib-diff/

  • 209: bf4cb0c = 209: 402447a t5532: workaround for BusyBox on Windows

  • 210: b5a985c = 210: d4c7a3f t5605: special-case hardlink test for BusyBox-w32

  • 211: 14d76f9 = 211: f9669a6 t5813: allow for $PWD to be a Windows path

  • 212: d5950c6 = 212: ff12d28 t9200: skip tests when $PWD contains a colon

  • 213: 6207783 = 213: a919d31 mingw: add a Makefile target to copy test artifacts

  • 214: 6847cd3 = 214: 1d64d94 mingw: optionally enable wsl compability file mode bits

  • 215: efe974c = 215: 339a508 mingw: kill child processes in a gentler way

  • 216: e545d58 = 216: 0a89d0f mingw: do not call xutftowcs_path in mingw_mktemp

  • 217: 5e42c55 = 217: 71f8e1c mingw: really handle SIGINT

  • 218: d90c212 = 218: 5a2b8b2 Partially un-revert "editor: save and reset terminal after calling EDITOR"

  • 219: 897d509 = 219: 3cdda27 reset: reinstate support for the deprecated --stdin option

  • 221: 38e9da0 = 220: 64429a0 Describe Git for Windows' architecture [no ci]

  • 222: 2c331d3 = 221: a55dc03 Modify the Code of Conduct for Git for Windows

  • 223: 833f3c3 = 222: c6ad32d CONTRIBUTING.md: add guide for first-time contributors

  • 224: 2d8a358 = 223: 4c1cd14 README.md: Add a Windows-specific preamble

  • 225: f1b298f = 224: 3d2d684 Add an issue template

  • 226: 7fef714 = 225: d2bb9f8 Modify the GitHub Pull Request template (to reflect Git for Windows)

  • 227: d9b9b80 = 226: c95f781 .github: Add configuration for the Sentiment Bot

  • 228: 68025ac = 227: 309a94f Add a GitHub workflow to monitor component updates

  • 229: 3b32cf5 = 228: 2c8c23b Document how $HOME is set on Windows

  • 220: b793692 = 229: 0d76ca2 fsmonitor: reintroduce core.useBuiltinFSMonitor

  • 230: ddf1017 = 230: 30db82a dependabot: help keeping GitHub Actions versions up to date

  • 231: 6b80c82 = 231: dd07134 SECURITY.md: document Git for Windows' policies

This closes #4832

PhilipOakley and others added 30 commits February 23, 2024 21:01
Continue walking the code path for the >4GB `hash-object --literally`
test. The `hash_object_file_literally()` function internally uses both
`hash_object_file()` and `write_object_file_prepare()`. Both function
signatures use `unsigned long` rather than `size_t` for the mem buffer
sizes. Use `size_t` instead, for LLP64 compatibility.

While at it, convert those function's object's header buffer length to
`size_t` for consistency. The value is already upcast to `uintmax_t` for
print format compatibility.

Note: The hash-object test still does not pass. A subsequent commit
continues to walk the call tree's lower level hash functions to identify
further fixes.

Signed-off-by: Philip Oakley <[email protected]>
Signed-off-by: Johannes Schindelin <[email protected]>
Continue walking the code path for the >4GB `hash-object --literally`
test to the hash algorithm step for LLP64 systems.

This patch lets the SHA1DC code use `size_t`, making it compatible with
LLP64 data models (as used e.g. by Windows).

The interested reader of this patch will note that we adjust the
signature of the `git_SHA1DCUpdate()` function without updating _any_
call site. This certainly puzzled at least one reviewer already, so here
is an explanation:

This function is never called directly, but always via the macro
`platform_SHA1_Update`, which is usually called via the macro
`git_SHA1_Update`. However, we never call `git_SHA1_Update()` directly
in `struct git_hash_algo`. Instead, we call `git_hash_sha1_update()`,
which is defined thusly:

    static void git_hash_sha1_update(git_hash_ctx *ctx,
                                     const void *data, size_t len)
    {
        git_SHA1_Update(&ctx->sha1, data, len);
    }

i.e. it contains an implicit downcast from `size_t` to `unsigned long`
(before this here patch). With this patch, there is no downcast anymore.

With this patch, finally, the t1007-hash-object.sh "files over 4GB hash
literally" test case is fixed.

Signed-off-by: Philip Oakley <[email protected]>
Signed-off-by: Johannes Schindelin <[email protected]>
Just like the `hash-object --literally` code path, the `--stdin` code
path also needs to use `size_t` instead of `unsigned long` to represent
memory sizes, otherwise it would cause problems on platforms using the
LLP64 data model (such as Windows).

To limit the scope of the test case, the object is explicitly not
written to the object store, nor are any filters applied.

The `big` file from the previous test case is reused to save setup time;
To avoid relying on that side effect, it is generated if it does not
exist (e.g. when running via `sh t1007-*.sh --long --run=1,41`).

Signed-off-by: Philip Oakley <[email protected]>
Signed-off-by: Johannes Schindelin <[email protected]>
To complement the `--stdin` and `--literally` test cases that verify
that we can hash files larger than 4GB on 64-bit platforms using the
LLP64 data model, here is a test case that exercises `hash-object`
_without_ any options.

Just as before, we use the `big` file from the previous test case if it
exists to save on setup time, otherwise generate it.

Signed-off-by: Philip Oakley <[email protected]>
Signed-off-by: Johannes Schindelin <[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]>
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]>
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]>
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]>
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]>
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]>
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]>
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]>
dscho and others added 23 commits February 23, 2024 21:02
Rather than using private IFTTT Applets that send mails to this
maintainer whenever a new version of a Git for Windows component was
released, let's use the power of GitHub workflows to make this process
publicly visible.

This workflow monitors the Atom/RSS feeds, and opens a ticket whenever a
new version was released.

Note: Bash sometimes releases multiple patched versions within a few
minutes of each other (i.e. 5.1p1 through 5.1p4, 5.0p15 and 5.0p16). The
MSYS2 runtime also has a similar system. We can address those patches as
a group, so we shouldn't get multiple issues about them.

Note further: We're not acting on newlib releases, OpenSSL alphas, Perl
release candidates or non-stable Perl releases. There's no need to open
issues about them.

Co-authored-by: Matthias Aßhauer <[email protected]>
Signed-off-by: Johannes Schindelin <[email protected]>
Git 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]>
Reintroduce the 'core.useBuiltinFSMonitor' config setting (originally added
in 0a756b2 (fsmonitor: config settings are repository-specific,
2021-03-05)) after its removal from the upstream version of FSMonitor.

Upstream, the 'core.useBuiltinFSMonitor' setting was rendered obsolete by
"overloading" the 'core.fsmonitor' setting to take a boolean value. However,
several applications (e.g., 'scalar') utilize the original config setting,
so it should be preserved for a deprecation period before complete removal:

* if 'core.fsmonitor' is a boolean, the user is correctly using the new
  config syntax; do not use 'core.useBuiltinFSMonitor'.
* if 'core.fsmonitor' is unspecified, use 'core.useBuiltinFSMonitor'.
* if 'core.fsmonitor' is a path, override and use the builtin FSMonitor if
  'core.useBuiltinFSMonitor' is 'true'; otherwise, use the FSMonitor hook
  indicated by the path.

Additionally, for this deprecation period, advise users to switch to using
'core.fsmonitor' to specify their use of the builtin FSMonitor.

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

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

clean: suggest using `core.longPaths` if paths are too long to remove
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 v2.44.0 milestone Feb 23, 2024
@dscho dscho self-assigned this Feb 23, 2024
@dscho
Copy link
Member Author

dscho commented Feb 23, 2024

The range-diff looks slightly more complicated than I'd have wanted only because I needed to reorder two topics to avoid merge conflicts in the merge commits, and while at it I added my Sign-off.

@dscho
Copy link
Member Author

dscho commented Feb 23, 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 Feb 23, 2024

/release

The release-git workflow run was started

@gitforwindowshelper gitforwindowshelper bot merged commit ad0bbff into git-for-windows:main Feb 23, 2024
90 of 92 checks passed
@dscho dscho deleted the rebase-to-v2.44.0 branch February 23, 2024 21:17
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.44.0