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.47.0 #5196

Merged
merged 427 commits into from
Oct 8, 2024
Merged

Conversation

dscho
Copy link
Member

@dscho dscho commented Oct 8, 2024

Range-diff relative to
  • 5: 4d1fa2f = 1: 82b47a4 t9350: point out that refs are not updated correctly
  • 4: f4a21be = 2: 32c8a61 gitk(Windows): avoid inadvertently calling executables in the worktree
  • 6: 9c8ddeb = 3: 84c0be4 transport-helper: add trailing --
  • 7: 0388e0f = 4: 8b51b7a remote-helper: check helper status after import/export
  • 8: a2fc5f4 = 5: 5278695 mingw: demonstrate a problem with certain absolute paths
  • 9: 19e2851 = 6: 2c843e8 Always auto-gc after calling a fast-import transport
  • 10: 591248d = 7: 4097c1d mingw: allow absolute paths without drive prefix
  • 11: 241c1df = 8: 298f318 mingw: include the Python parts in the build
  • 12: a6c8bed = 9: 30e563a clean: do not traverse mount points
  • 13: dff182e = 10: 0c32432 win32/pthread: avoid name clashes with winpthread
  • 14: 39566c5 = 11: 71b00f9 clean: remove mount points when possible
  • 15: 34ba44b = 12: e08a265 git-compat-util: avoid redeclaring _DEFAULT_SOURCE
  • 16: f603a03 = 13: 8d0c8ba Import the source code of mimalloc v2.1.2
  • 17: 25f63e8 = 14: f5bbbbb mimalloc: adjust for building inside Git
  • 18: f699fda = 15: c70b879 mimalloc: offer a build-time option to enable it
  • 19: cac1794 = 16: 7134a1e mimalloc: use "weak" random seed when statically linked
  • 20: 6021bfb = 17: a7c62e6 mingw: use mimalloc
  • 21: 8eeb5a0 = 18: 894ab10 transport: optionally disable side-band-64k
  • 22: 228a2ba = 19: bee546e mingw: make sure errno is set correctly when socket operations fail
  • 23: 65bfabd = 20: 9b9040f mingw: do resolve symlinks in getcwd()
  • 25: e781529 = 21: 9d6e390 mingw: demonstrate a git add issue with NTFS junctions
  • 28: ae71902 = 22: f931810 strbuf_realpath(): use platform-dependent API if available
  • 24: c08df14 = 23: 14f188f mingw: fix fatal error working on mapped network drives on Windows
  • 26: c78ac59 = 24: 9a3f6c2 clink.pl: fix MSVC compile script to handle libcurl-d.lib
  • 27: 64b04e8 = 25: 2d3b95d mingw: ensure valid CTYPE
  • 29: 40e207d = 26: a25428a mingw: allow git.exe to be used instead of the "Git wrapper"
  • 32: 2e0c2ab = 27: 8bf47b1 mingw: ignore HOMEDRIVE/HOMEPATH if it points to Windows' system directory
  • 33: cfcc099 = 28: 20ed4ce http: use new "best effort" strategy for Secure Channel revoke checking
  • 30: b680f09 = 29: 29b8d1e mingw: implement a platform-specific strbuf_realpath()
  • 31: 1b42afc = 30: e46b3fe vcxproj: unclash project directories with build outputs
  • 34: f1f23e4 = 31: e58a01e t5505/t5516: allow running without .git/branches/ in the templates
  • 35: dd2a525 = 32: 7ef36fb t5505/t5516: fix white-space around redirectors
  • 36: 72487ea = 33: 3dbe3b6 t3701: verify that we can add lots of files interactively
  • 37: 6288c4d = 34: 4096d96 git add -i: handle CR/LF line endings in the interactive input
  • 38: 4958dbf = 35: ec6ab10 commit: accept "scissors" with CR/LF line endings
  • 39: abfefcf = 36: 0297fd3 t0014: fix indentation
  • 40: 64d500c = 37: eca2cf5 git-gui: accommodate for intent-to-add files
  • 41: 526a67e = 38: d19278d clink.pl: fix libexpatd.lib link error when using MSVC
  • 42: 980c640 = 39: a1cdb00 Makefile: clean up .ilk files when MSVC=1
  • 43: b3909cb = 40: b0782da vcbuild: add support for compiling Windows resource files
  • 44: 991b6bc = 41: bfc8ec0 config.mak.uname: add git.rc to MSVC builds
  • 45: dd1e678 = 42: 7571c7c clink.pl: ignore no-stack-protector arg on MSVC=1 builds
  • 46: 048c378 = 43: acd8bcd clink.pl: move default linker options for MSVC=1 builds
  • 47: af990b7 = 44: 530cbc4 buildsystems: remove duplicate clause
  • 48: c11788b = 45: 75f4966 vcxproj: handle resource files, too
  • 49: d9a9273 = 46: 314c8cd vcxproj: ignore -fno-stack-protector and -fno-common
  • 50: 76ca105 = 47: 4ced2ab vcxproj: handle GUI programs, too
  • 51: e24174d = 48: eb6bbeb vcpkg_install: detect lack of Git
  • 52: c848dd0 = 49: b8faef9 vcpkg_install: add comment regarding slow network connections
  • 53: 673ea43 = 50: f4aea0b vcxproj: support building Windows/ARM64 binaries
  • 55: e581b8f = 51: 321c096 cmake: install headless-git.
  • 54: d7299cb = 52: d2e44fd vcbuild: install ARM64 dependencies when building ARM64 binaries
  • 56: a35125a = 53: 984b177 vcbuild: add an option to install individual 'features'
  • 57: a048ca2 = 54: d848405 cmake: allow building for Windows/ARM64
  • 58: e3e5c93 = 55: 8efc694 ci(vs-build) also build Windows/ARM64 artifacts
  • 59: 4ee6903 = 56: 54bbcfe Add schannel to curl installation
  • 60: 33191e9 = 57: cbaedbe cmake(): allow setting HOST_CPU for cross-compilation
  • 62: 17271de = 58: d1078e1 subtree: update contrib/subtree test target
  • 61: 589c2ed = 59: d96e86f mingw: allow for longer paths in parse_interpreter()
  • 63: 1d39b88 = 60: fd88e77 compat/vcbuild: document preferred way to build in Visual Studio
  • 64: f3a8521 = 61: ef787ec http: optionally send SSL client certificate
  • 66: 3821d74 = 62: 72c0388 CMake: default Visual Studio generator has changed
  • 67: 6c8207b = 63: dbeace9 .gitignore: add Visual Studio CMakeSetting.json file
  • 68: f3bd851 = 64: dc7b364 CMakeLists: add default "x64-windows" arch for Visual Studio
  • 65: bd5a61a = 65: 3a5a85d ci: run contrib/subtree tests in CI builds
  • 69: 134d2ad = 66: 8f9ee9a CMake: show Win32 and Generator_platform build-option values
  • 71: a559944 = 67: 89a13aa hash-object: demonstrate a >4GB/LLP64 problem
  • 72: 7d65d13 = 68: d21a631 write_object_file_literally(): use size_t
  • 73: 22c171e = 69: fc342ff object-file.c: use size_t for header lengths
  • 74: 18a1d9e = 70: af5980d hash algorithms: use size_t for section lengths
  • 75: 010e219 = 71: a3aa580 hash-object --stdin: verify that it works with >4GB/LLP64
  • 70: 45da5f1 = 72: 2e16f8d init: do parse all core.* settings early
  • 76: 5fd5556 = 73: 75551ae hash-object: add another >4GB/LLP64 test case
  • 77: eae8966 = 74: 3011d30 setup: properly use "%(prefix)/" when in WSL
  • 78: 5c00a23 = 75: 7f3f3e4 hash-object: add a >4GB/LLP64 test case using filtered input
  • 79: 64dc42c = 76: 2f29de6 compat/mingw.c: do not warn when failing to get owner
  • 81: fe66c70 = 77: 1e34e83 mingw: $env:TERM="xterm-256color" for newer OSes
  • 80: 7486396 = 78: fcd3b4e Add config option windows.appendAtomically
  • 84: 72a3cfd = 79: 4bb392d vcxproj: allow building with NO_PERL again
  • 82: 278e737 = 80: 17fd211 winansi: check result and Buffer before using Name
  • 83: cbd02d4 = 81: 1a36188 mingw: change core.fsyncObjectFiles = 1 by default
  • 85: c7f6953 = 82: ae9705d vcxproj: require C11
  • 86: e681757 = 83: 5c2f375 vcxproj: ignore the -pedantic option
  • 87: 6946087 = 84: 31233e3 vcxproj: include reftable when committing .vcxproj files
  • 88: caceb15 = 85: 956a0d4 vcxproj: handle libreftable_test, too
  • 89: 4243581 = 86: 4eb3bfc vcxproj: avoid escaping double quotes in the defines
  • 90: 6c18069 = 87: af6fc9a ci: adjust Azure Pipeline for runs_on_pool
  • 91: e095e4c = 88: 81c2b63 ci: stop linking the prove cache
  • 92: a981ae8 = 89: 63dd727 ci: reinstate Azure Pipelines support
  • 93: 727d268 = 90: 8c8d3ee azure-pipeline: drop the GETTEXT_POISON job
  • 94: ecc368b = 91: 082f7b6 azure-pipeline: stop hard-coding apt-get calls
  • 95: ea10516 = 92: 915aa04 azure-pipeline: drop the code to write to/read from a file share
  • 96: 190832c = 93: fe5de3e azure-pipeline: use partial clone/parallel checkout to initialize minimal-sdk
  • 97: 7d81f0b = 94: 4572d4d azure-pipeline: downcase the job name of the Linux32 job
  • 98: 28d78a2 = 95: 83cceed azure-pipeline: run static-analysis on jammy
  • 99: c9f66c4 = 96: fe9ded9 bswap.h: add support for built-in bswap functions
  • 100: 6c1b605 = 97: 9dff4e7 config.mak.uname: add support for clangarm64
  • 101: 86c3000 = 98: 94f1f27 MinGW: link as terminal server aware
  • 102: a36a76c = 99: 9685fb6 Fix Windows version resources
  • 103: a99ced1 = 100: cafdce8 ci: create clangarm64-build.yml
  • 104: da2c993 = 101: 3957cee status: fix for old-style submodules with commondir
  • 108: b81567e = 102: fd5e65d windows: skip linking git-<command> for built-ins
  • 109: 3106f5f = 103: 74807d1 windows: fix Repository>Explore Working Copy
  • 105: 630c9ff = 104: 98f21f5 http: optionally load libcurl lazily
  • 106: f0ba8a2 = 105: eec957e http: support lazy-loading libcurl also on Windows
  • 107: 1cc64e9 = 106: 9d0e622 http: when loading libcurl lazily, allow for multiple SSL backends
  • 110: 09bef5a = 107: 2718450 mingw: do load libcurl dynamically by default
  • 111: 93c275d = 108: 1047e1b Add a GitHub workflow to verify that Git/Scalar work in Nano Server
  • 112: 5ac3aeb = 109: 94f5522 mingw: suggest windows.appendAtomically in more cases
  • 113: 11c77e4 = 110: 56ea536 win32: use native ANSI sequence processing, if possible
  • 114: 1687e53 = 111: b478fc7 git.rc: include winuser.h
  • 115: a533937 = 112: a92f41b common-main.c: fflush stdout buffer upon exit
  • 116: b01d5cb = 113: 7179e42 t5601/t7406(mingw): do run tests with symlink support
  • 119: ddf961b = 114: 8202b24 win32: ensure that localtime_r() is declared even in i686 builds
  • 120: aaf6d53 = 115: d2ebe05 Fallback to AppData if XDG_CONFIG_HOME is unset
  • 117: 26ba963 = 116: 776b930 ci: work around a problem with HTTP/2 vs libcurl v8.10.0
  • 118: 6ed5f62 = 117: 31382dc pack-objects: add --full-name-hash option
  • 122: 5cc3464 = 118: e9fe71f repack: test --full-name-hash option
  • 123: 221be0e = 119: 2bd50fb pack-objects: add GIT_TEST_FULL_NAME_HASH
  • 121: 7442730 = 120: f398f64 run-command: be helpful with Git LFS fails on Windows 7
  • 124: 78dbc40 = 121: d3c0826 git-repack: update usage to match docs
  • 125: 4a37ccb = 122: 871f936 p5313: add size comparison test
  • 126: 18686eb = 123: 97829b5 test-tool: add helper for name-hash values
  • 127: 82bb044 = 124: 5c8182b repack/pack-objects: mark --full-name-hash as experimental
  • 128: 41e90b4 = 125: 685d130 path-walk: introduce an object walk by path
  • 129: 65b5595 = 126: f10a957 t6601: add helper for testing path-walk API
  • 130: 6fedcc4 = 127: 118b06d path-walk: allow consumer to specify object types
  • 131: e6acd74 = 128: 731998c path-walk: allow visiting tags
  • 132: 8e5e612 = 129: 9e7da31 revision: create mark_trees_uninteresting_dense()
  • 133: d0f2213 = 130: ec1a5d4 path-walk: add prune_all_uninteresting option
  • 134: ce40df4 = 131: 4578489 pack-objects: extract should_attempt_deltas()
  • 135: 8e8a5b8 = 132: 454cfdd pack-objects: add --path-walk option
  • 136: 13ff91f = 133: 82abe40 pack-objects: introduce GIT_TEST_PACK_PATH_WALK
  • 137: a9bc29e = 134: f07075e repack: add --path-walk option
  • 138: 5b38114 = 135: bf51d09 pack-objects: enable --path-walk via config
  • 139: c7bd1df = 136: 2d533c9 scalar: enable path-walk during push via config
  • 140: 2488d13 = 137: 2f07cd7 pack-objects: refactor path-walk delta phase
  • 141: 4f530f7 = 138: cd6e3a6 pack-objects: thread the path-based compression
  • 275: 930a3aa = 139: 8b02eeb path-walk API: avoid adding a root tree more than once
  • 142: 1dedc04 = 140: a288333 backfill: add builtin boilerplate
  • 143: 2fae6ee = 141: e61870b backfill: basic functionality and tests
  • 144: 4392105 = 142: c7df6b4 backfill: add --batch-size= option
  • 145: 120e50c = 143: 938bdf9 backfill: add --sparse option
  • 146: bff91f1 = 144: b8cebf0 backfill: assume --sparse when sparse-checkout is enabled
  • 147: 192f63e = 145: 51b8ae8 backfill: mark it as experimental
  • 148: 714bedd = 146: 6d2fb8b survey: stub in new experimental 'git-survey' command
  • 149: 5bac1ad = 147: 4e61f93 survey: add command line opts to select references
  • 150: 8f9e220 = 148: 3c9a3dd survey: start pretty printing data in table form
  • 151: f2f89bc = 149: dc4a5f7 survey: add object count summary
  • 152: f39486a = 150: 61f5ff5 survey: summarize total sizes by object type
  • 153: 6a43d07 = 151: 0714ece survey: show progress during object walk
  • 154: 34983c1 = 152: 76ae6b5 survey: add ability to track prioritized lists
  • 155: 5484401 = 153: 1eef810 survey: add report of "largest" paths
  • 156: 7e30b29 = 154: 910d865 survey: add --top= option and config
  • 1: 05c2161 = 155: 1b6847f line-log: protect inner strbuf from free
  • 157: 2be2c92 = 156: a563945 survey: clearly note the experimental nature in the output
  • 2: 94d2c03 = 157: eff0ca0 line-log: remove output_prefix()
  • 3: e1d825a = 158: db93c66 diff: modify output_prefix function pointer
  • 158: ca2829a = 159: 2e6b871 Win32: make FILETIME conversion functions public
  • 159: efd0753 = 160: dcfad57 Win32: dirent.c: Move opendir down
  • 160: 2c4e757 = 161: 0077575 mingw: make the dirent implementation pluggable
  • 161: 6070b5d = 162: 95bccd8 Win32: make the lstat implementation pluggable
  • 162: e4b7d0f = 163: 98e220a mingw: add infrastructure for read-only file system level caches
  • 163: 273b65d = 164: 028efda mingw: add a cache below mingw's lstat and dirent implementations
  • 164: 4fc7b9e = 165: d4f0444 fscache: load directories only once
  • 165: 0fc3a76 = 166: e45f8ad fscache: add key for GIT_TRACE_FSCACHE
  • 166: 028fac7 = 167: d00800e fscache: remember not-found directories
  • 167: db1aa34 = 168: ade3ba7 fscache: add a test for the dir-not-found optimization
  • 168: 9888212 = 169: 53de33f add: use preload-index and fscache for performance
  • 169: 08455cf = 170: fda16c8 dir.c: make add_excludes aware of fscache during status
  • 170: c30c7af = 171: 3826f0d fscache: make fscache_enabled() public
  • 171: 5b0f5ab = 172: eeead24 dir.c: regression fix for add_excludes with fscache
  • 172: ca14fa2 = 173: 7973ab2 fetch-pack.c: enable fscache for stats under .git/objects
  • 173: 2e5a053 = 174: bb923bb checkout.c: enable fscache for checkout again
  • 174: 95dd5f5 = 175: 6f5ebad Enable the filesystem cache (fscache) in refresh_index().
  • 175: ae01e29 = 176: 5517a9f fscache: use FindFirstFileExW to avoid retrieving the short name
  • 176: e6aace3 = 177: 2a5d448 status: disable and free fscache at the end of the status command
  • 177: d8b2771 = 178: e931185 fscache: add GIT_TEST_FSCACHE support
  • 178: d7c89b0 = 179: 94dd824 fscache: add fscache hit statistics
  • 179: b6d63b6 = 180: 3257dfe mem_pool: add GIT_TRACE_MEMPOOL support
  • 180: ff03c40 = 181: 9e1e228 fscache: fscache takes an initial size
  • 181: bbfecad = 182: daf7e83 fscache: update fscache to be thread specific instead of global
  • 182: a49d409 = 183: b8f8cdc fscache: teach fscache to use mempool
  • 183: 936a148 = 184: f34dae8 fscache: make fscache_enable() thread safe
  • 184: af2cbc4 = 185: 6330375 fscache: teach fscache to use NtQueryDirectoryFile
  • 185: 0bc448d = 186: 3629591 unpack-trees: enable fscache for sparse-checkout
  • 186: e9b3856 = 187: 8cf3d40 fscache: remember the reparse tag for each entry
  • 187: ed01d91 = 188: 8b37641 git-gui: provide question helper for retry fallback on Windows
  • 188: fad0d53 = 189: d5c7454 fscache: implement an FSCache-aware is_mount_point()
  • 189: 23e7a19 = 190: 3158c66 git gui: set GIT_ASKPASS=git-gui--askpass if not set yet
  • 190: 634d2fd = 191: 75ce329 clean: make use of FSCache
  • 191: 77d9198 = 192: 76d79d9 gitk: Unicode file name support
  • 192: eff723f = 193: 4ab6eca git-gui--askyesno: fix funny text wrapping
  • 193: 574b793 = 194: 0c82cc9 gitk: Use an external icon file on Windows
  • 194: f915c80 = 195: dde11f4 git-gui--askyesno: allow overriding the window title
  • 195: 60ab5b7 = 196: 28d40b9 gitk: fix arrow keys in input fields with Tcl/Tk >= 8.6
  • 196: 60e7d4a = 197: e6058c8 git-gui--askyesno (mingw): use Git for Windows' icon, if available
  • 197: a7d2c23 = 198: 24be74a gitk: make the "list references" default window width wider
  • 198: 90dd9df = 199: bf28c7f pack-objects (mingw): demonstrate a segmentation fault with large deltas
  • 199: 5521252 = 200: 0b30bc0 mingw: support long paths
  • 200: be9ac19 = 201: 0a9dc09 Win32: fix 'lstat("dir/")' with long paths
  • 201: edd7b9e = 202: 5ff1ebe win32(long path support): leave drive-less absolute paths intact
  • 206: a345fc3 = 203: e4527a8 compat/fsmonitor/fsm-*-win32: support long paths
  • 202: 4fa5d93 = 204: 67337c8 mingw: Support git_terminal_prompt with more terminals
  • 203: 5242dd5 = 205: b5dc26a compat/terminal.c: only use the Windows console if bash 'read -r' fails
  • 204: 23da434 = 206: 1f391dd mingw (git_terminal_prompt): do fall back to CONIN$/CONOUT$ method
  • 205: 74b72b7 = 207: 2c87e7b strbuf_readlink: don't call readlink twice if hint is the exact link size
  • 207: a13b107 = 208: a36b695 clean: suggest using core.longPaths if paths are too long to remove
  • 208: 4b961fb = 209: 5bea09f strbuf_readlink: support link targets that exceed PATH_MAX
  • 209: 0796d92 = 210: 512490f lockfile.c: use is_dir_sep() instead of hardcoded '/' checks
  • 210: 2a3f2e7 = 211: bd1d088 Win32: don't call GetFileAttributes twice in mingw_lstat()
  • 211: 72bb1c8 = 212: 6d21967 Win32: implement stat() with symlink support
  • 212: 3ddbf36 = 213: a32c452 Win32: remove separate do_lstat() function
  • 213: 1bc1573 = 214: 04ac44d Win32: let mingw_lstat() error early upon problems with reparse points
  • 214: 077ca3d = 215: 797b60f mingw: teach fscache and dirent about symlinks
  • 215: 71d4237 = 216: 147a648 Win32: lstat(): return adequate stat.st_size for symlinks
  • 216: 59e73e6 = 217: 3d9ebe3 Win32: factor out retry logic
  • 217: a88262b = 218: 65c4e23 Win32: change default of 'core.symlinks' to false
  • 218: 73aa817 = 219: d8c0893 Win32: add symlink-specific error codes
  • 219: bcd17e6 = 220: 3a56953 Win32: mingw_unlink: support symlinks to directories
  • 220: a6b6059 = 221: d27bed2 Win32: mingw_rename: support renaming symlinks
  • 221: cfe1b4f = 222: f99b857 Win32: mingw_chdir: change to symlink-resolved directory
  • 222: 7218afe = 223: 86420a1 Win32: implement readlink()
  • 223: 6f3d99b = 224: dc59fce mingw: lstat: compute correct size for symlinks
  • 224: a6bfbd0 = 225: a7ad2f4 Win32: implement basic symlink() functionality (file symlinks only)
  • 225: 26495c7 = 226: 73e5a1e Win32: symlink: add support for symlinks to directories
  • 226: 40bd44a = 227: 248e7b4 mingw: try to create symlinks without elevated permissions
  • 227: 0323d4d = 228: ebe8730 mingw: emulate stat() a little more faithfully
  • 228: 409d835 = 229: 132c94f mingw: special-case index entries for symlinks with buggy size
  • 229: 182e519 = 230: 4d79b76 mingw: introduce code to detect whether we're inside a Windows container
  • 230: 4bf94db = 231: f3ef296 mingw: when running in a Windows container, try to rename() harder
  • 231: 74cf36c = 232: 7d1cc97 mingw: move the file_attr_to_st_mode() function definition
  • 232: 179084c = 233: 53cb5c1 mingw: Windows Docker volumes are not symbolic links
  • 233: f087676 = 234: ec29d2b Win32: symlink: move phantom symlink creation to a separate function
  • 234: 1263235 = 235: c088807 Introduce helper to create symlinks that knows about index_state
  • 235: a96c675 = 236: 5a30497 mingw: allow to specify the symlink type in .gitattributes
  • 236: b4744d8 = 237: a9ed70c Win32: symlink: add test for symlink attribute
  • 241: 2cbb28f = 238: fc96572 mingw: work around rename() failing on a read-only file
  • 237: 08dde17 = 239: 236b7b7 mingw: explicitly specify with which cmd to prefix the cmdline
  • 238: 3c30fa9 = 240: 9fd2e84 mingw: when path_lookup() failed, try BusyBox
  • 239: ddcc426 = 241: cf2a479 test-lib: avoid unnecessary Perl invocation
  • 240: 60bbecf = 242: 00139f9 test-tool: learn to act as a drop-in replacement for iconv
  • 242: e36a6be = 243: 7774624 tests(mingw): if iconv is unavailable, use test-helper --iconv
  • 243: 56d40ca = 244: 023f17b gitattributes: mark .png files as binary
  • 244: 6788827 = 245: 9ab6b6b tests: move test PNGs into t/lib-diff/
  • 245: 80dd451 = 246: 95f6db9 tests: only override sort & find if there are usable ones in /usr/bin/
  • 246: 61b13d6 = 247: 1aab1ad tests: use the correct path separator with BusyBox
  • 247: d60e553 = 248: e033676 mingw: only use Bash-ism builtin pwd -W when available
  • 248: d899318 = 249: 8e3b66b tests (mingw): remove Bash-specific pwd option
  • 249: 13908df = 250: 7ae8372 test-lib: add BUSYBOX prerequisite
  • 250: b0ff24d = 251: bb1b278 t5003: use binary file from t/lib-diff/
  • 251: 15dfc0c = 252: ffe9503 t5532: workaround for BusyBox on Windows
  • 252: 5a9274c = 253: dbb27bd t5605: special-case hardlink test for BusyBox-w32
  • 253: eeaff0e = 254: 5b36798 t5813: allow for $PWD to be a Windows path
  • 254: 7779b95 = 255: 918f4ab t9200: skip tests when $PWD contains a colon
  • 255: a7bab71 = 256: b99fde4 mingw: add a Makefile target to copy test artifacts
  • 256: 15ae007 = 257: 0f35e77 mingw: optionally enable wsl compability file mode bits
  • 257: 6e70a32 = 258: 10bb07f mingw: kill child processes in a gentler way
  • 258: 24c2e4b = 259: 63cc420 mingw: do not call xutftowcs_path in mingw_mktemp
  • 259: 9bad165 = 260: 26539c4 mingw: really handle SIGINT
  • 260: a5cd03b = 261: 8b8b123 Partially un-revert "editor: save and reset terminal after calling EDITOR"
  • 261: d2f963e = 262: 2ce548c Add a GitHub workflow to monitor component updates
  • 263: 4f0462d = 263: c3e1525 reset: reinstate support for the deprecated --stdin option
  • 264: 3f88490 = 264: b4fb482 fsmonitor: reintroduce core.useBuiltinFSMonitor
  • 265: 866b1c5 = 265: 7a06b7b dependabot: help keeping GitHub Actions versions up to date
  • 262: 1b3e316 = 266: 2ce307a Describe Git for Windows' architecture [no ci]
  • 266: d4b1f97 = 267: 26bccbe Modify the Code of Conduct for Git for Windows
  • 267: d634b06 = 268: 141b8ab CONTRIBUTING.md: add guide for first-time contributors
  • 268: c4881c1 = 269: b134efe README.md: Add a Windows-specific preamble
  • 269: 8614edb = 270: fa6fc63 Add an issue template
  • 270: 7ff9f4d = 271: 0ce6de6 Modify the GitHub Pull Request template (to reflect Git for Windows)
  • 271: dd05d1c = 272: e587604 .github: Add configuration for the Sentiment Bot
  • 272: f346b35 = 273: 2ff87a4 Document how $HOME is set on Windows
  • 273: 4bcceba = 274: 9468391 SECURITY.md: document Git for Windows' policies
  • 274: 49e3069 (upstream: 7355574) < -: ------------ t0610: skip concurrent write test case on Windows

Nothing stands out, except maybe that the numbers reflect that I moved a couple of patches into the ready-for-upstream thicket.

derrickstolee and others added 30 commits October 8, 2024 08:55
In anticipation of a few planned applications, introduce the most basic form
of a path-walk API. It currently assumes that there are no UNINTERESTING
objects, and does not include any complicated filters. It calls a function
pointer on groups of tree and blob objects as grouped by path. This only
includes objects the first time they are discovered, so an object that
appears at multiple paths will not be included in two batches.

There are many future adaptations that could be made, but they are left for
future updates when consumers are ready to take advantage of those features.

Signed-off-by: Derrick Stolee <[email protected]>
Add some tests based on the current behavior, doing interesting checks
for different sets of branches, ranges, and the --boundary option. This
sets a baseline for the behavior and we can extend it as new options are
introduced.

Signed-off-by: Derrick Stolee <[email protected]>
We add the ability to filter the object types in the path-walk API so
the callback function is called fewer times.

This adds the ability to ask for the commits in a list, as well. Future
changes will add the ability to visit annotated tags.

Signed-off-by: Derrick Stolee <[email protected]>
In anticipation of using the path-walk API to analyze tags or include
them in a pack-file, add the ability to walk the tags that were included
in the revision walk.

Signed-off-by: Derrick Stolee <[email protected]>
The sparse tree walk algorithm was created in d5d2e93 (revision:
implement sparse algorithm, 2019-01-16) and involves using the
mark_trees_uninteresting_sparse() method. This method takes a repository
and an oidset of tree IDs, some of which have the UNINTERESTING flag and
some of which do not.

Create a method that has an equivalent set of preconditions but uses a
"dense" walk (recursively visits all reachable trees, as long as they
have not previously been marked UNINTERESTING). This is an important
difference from mark_tree_uninteresting(), which short-circuits if the
given tree has the UNINTERESTING flag.

A use of this method will be added in a later change, with a condition
set whether the sparse or dense approach should be used.

Signed-off-by: Derrick Stolee <[email protected]>
This option causes the path-walk API to act like the sparse tree-walk
algorithm implemented by mark_trees_uninteresting_sparse() in
list-objects.c.

Starting from the commits marked as UNINTERESTING, their root trees and
all objects reachable from those trees are UNINTERSTING, at least as we
walk path-by-path. When we reach a path where all objects associated
with that path are marked UNINTERESTING, then do no continue walking the
children of that path.

We need to be careful to pass the UNINTERESTING flag in a deep way on
the UNINTERESTING objects before we start the path-walk, or else the
depth-first search for the path-walk API may accidentally report some
objects as interesting.

Signed-off-by: Derrick Stolee <[email protected]>
This will be helpful in a future change.

Signed-off-by: Derrick Stolee <[email protected]>
In order to more easily compute delta bases among objects that appear at the
exact same path, add a --path-walk option to 'git pack-objects'.

This option will use the path-walk API instead of the object walk given by
the revision machinery. Since objects will be provided in batches
representing a common path, those objects can be tested for delta bases
immediately instead of waiting for a sort of the full object list by
name-hash. This has multiple benefits, including avoiding collisions by
name-hash.

The objects marked as UNINTERESTING are included in these batches, so we
are guaranteeing some locality to find good delta bases.

After the individual passes are done on a per-path basis, the default
name-hash is used to find other opportunistic delta bases that did not
match exactly by the full path name.

RFC TODO: It is important to note that this option is inherently
incompatible with using a bitmap index. This walk probably also does not
work with other advanced features, such as delta islands.

Getting ahead of myself, this option compares well with --full-name-hash
when the packfile is large enough, but also performs at least as well as
the default in all cases that I've seen.

RFC TODO: this should probably be recording the batch locations to another
list so they could be processed in a second phase using threads.

RFC TODO: list some examples of how this outperforms previous pack-objects
strategies. (This is coming in later commits that include performance
test changes.)

Signed-off-by: Derrick Stolee <[email protected]>
There are many tests that validate whether 'git pack-objects' works as
expected. Instead of duplicating these tests, add a new test environment
variable, GIT_TEST_PACK_PATH_WALK, that implies --path-walk by default
when specified.

This was useful in testing the implementation of the --path-walk
implementation, especially in conjunction with test such as:

 - t0411-clone-from-partial.sh : One test fetches from a repo that does
   not have the boundary objects. This causes the path-based walk to
   fail. Disable the variable for this test.

 - t5306-pack-nobase.sh : Similar to t0411, one test fetches from a repo
   without a boundary object.

 - t5310-pack-bitmaps.sh : One test compares the case when packing with
   bitmaps to the case when packing without them. Since we disable the
   test variable when writing bitmaps, this causes a difference in the
   object list (the --path-walk option adds an extra object). Specify
   --no-path-walk in both processes for the comparison. Another test
   checks for a specific delta base, but when computing dynamically
   without using bitmaps, the base object it too small to be considered
   in the delta calculations so no base is used.

 - t5316-pack-delta-depth.sh : This script cares about certain delta
   choices and their chain lengths. The --path-walk option changes how
   these chains are selected, and thus changes the results of this test.

 - t5322-pack-objects-sparse.sh : This demonstrates the effectiveness of
   the --sparse option and how it combines with --path-walk.

 - t5332-multi-pack-reuse.sh : This test verifies that the preferred
   pack is used for delta reuse when possible. The --path-walk option is
   not currently aware of the preferred pack at all, so finds a
   different delta base.

 - t7406-submodule-update.sh : When using the variable, the --depth
   option collides with the --path-walk feature, resulting in a warning
   message. Disable the variable so this warning does not appear.

I want to call out one specific test change that is only temporary:

 - t5530-upload-pack-error.sh : One test cares specifically about an
   "unable to read" error message. Since the current implementation
   performs delta calculations within the path-walk API callback, a
   different "unable to get size" error message appears. When this
   is changed in a future refactoring, this test change can be reverted.

Signed-off-by: Derrick Stolee <[email protected]>
Since 'git pack-objects' supports a --path-walk option, allow passing it
through in 'git repack'. This presents interesting testing opportunities for
comparing the different repacking strategies against each other.

Add the --path-walk option to the performance tests in p5313.

For the microsoft/fluentui repo [1] checked out at a specific commit [2],
the results are very interesting:

Test                                           this tree
------------------------------------------------------------------
5313.2: thin pack                              0.40(0.47+0.04)
5313.3: thin pack size                                    1.2M
5313.4: thin pack with --full-name-hash        0.09(0.10+0.04)
5313.5: thin pack size with --full-name-hash             22.8K
5313.6: thin pack with --path-walk             0.08(0.06+0.02)
5313.7: thin pack size with --path-walk                  20.8K
5313.8: big pack                               2.16(8.43+0.23)
5313.9: big pack size                                    17.7M
5313.10: big pack with --full-name-hash        1.42(3.06+0.21)
5313.11: big pack size with --full-name-hash             18.0M
5313.12: big pack with --path-walk             2.21(8.39+0.24)
5313.13: big pack size with --path-walk                  17.8M
5313.14: repack                                98.05(662.37+2.64)
5313.15: repack size                                    449.1K
5313.16: repack with --full-name-hash          33.95(129.44+2.63)
5313.17: repack size with --full-name-hash              182.9K
5313.18: repack with --path-walk               106.21(121.58+0.82)
5313.19: repack size with --path-walk                   159.6K

[1] https://github.com/microsoft/fluentui
[2] e70848ebac1cd720875bccaa3026f4a9ed700e08

This repo suffers from having a lot of paths that collide in the name
hash, so examining them in groups by path leads to better deltas. Also,
in this case, the single-threaded implementation is competitive with the
full repack. This is saving time diffing files that have significant
differences from each other.

A similar, but private, repo has even more extremes in the thin packs:

Test                                           this tree
--------------------------------------------------------------
5313.2: thin pack                              2.39(2.91+0.10)
5313.3: thin pack size                                    4.5M
5313.4: thin pack with --full-name-hash        0.29(0.47+0.12)
5313.5: thin pack size with --full-name-hash             15.5K
5313.6: thin pack with --path-walk             0.35(0.31+0.04)
5313.7: thin pack size with --path-walk                  14.2K

Notice, however, that while the --full-name-hash version is working
quite well in these cases for the thin pack, it does poorly for some
other standard cases, such as this test on the Linux kernel repository:

Test                                           this tree
--------------------------------------------------------------
5313.2: thin pack                              0.01(0.00+0.00)
5313.3: thin pack size                                     310
5313.4: thin pack with --full-name-hash        0.00(0.00+0.00)
5313.5: thin pack size with --full-name-hash              1.4K
5313.6: thin pack with --path-walk             0.00(0.00+0.00)
5313.7: thin pack size with --path-walk                    310

Here, the --full-name-hash option does much worse than the default name
hash, but the path-walk option does exactly as well.

Signed-off-by: Derrick Stolee <[email protected]>
Users may want to enable the --path-walk option for 'git pack-objects' by
default, especially underneath commands like 'git push' or 'git repack'.

This should be limited to client repositories, since the --path-walk option
disables bitmap walks, so would be bad to include in Git servers when
serving fetches and clones. There is potential that it may be helpful to
consider when repacking the repository, to take advantage of improved deltas
across historical versions of the same files.

Much like how "pack.useSparse" was introduced and included in
"feature.experimental" before being enabled by default, use the repository
settings infrastructure to make the new "pack.usePathWalk" config enabled by
"feature.experimental" and "feature.manyFiles".

Signed-off-by: Derrick Stolee <[email protected]>
Repositories registered with Scalar are expected to be client-only
repositories that are rather large. This means that they are more likely to
be good candidates for using the --path-walk option when running 'git
pack-objects', especially under the hood of 'git push'. Enable this config
in Scalar repositories.

Signed-off-by: Derrick Stolee <[email protected]>
Previously, the --path-walk option to 'git pack-objects' would compute
deltas inline with the path-walk logic. This would make the progress
indicator look like it is taking a long time to enumerate objects, and
then very quickly computed deltas.

Instead of computing deltas on each region of objects organized by tree,
store a list of regions corresponding to these groups. These can later
be pulled from the list for delta compression before doing the "global"
delta search.

This presents a new progress indicator that can be used in tests to
verify that this stage is happening.

The current implementation is not integrated with threads, but could be
done in a future update.

Since we do not attempt to sort objects by size until after exploring
all trees, we can remove the previous change to t5530 due to a different
error message appearing first.

Signed-off-by: Derrick Stolee <[email protected]>
Adapting the implementation of ll_find_deltas(), create a threaded
version of the --path-walk compression step in 'git pack-objects'.

This involves adding a 'regions' member to the thread_params struct,
allowing each thread to own a section of paths. We can simplify the way
jobs are split because there is no value in extending the batch based on
name-hash the way sections of the object entry array are attempted to be
grouped. We re-use the 'list_size' and 'remaining' items for the purpose
of borrowing work in progress from other "victim" threads when a thread
has finished its batch of work more quickly.

Using the Git repository as a test repo, the p5313 performance test
shows that the resulting size of the repo is the same, but the threaded
implementation gives gains of varying degrees depending on the number of
objects being packed. (This was tested on a 16-core machine.)

Test                                    HEAD~1    HEAD
-------------------------------------------------------------
5313.6: thin pack with --path-walk        0.01    0.01  +0.0%
5313.7: thin pack size with --path-walk    475     475  +0.0%
5313.12: big pack with --path-walk        1.99    1.87  -6.0%
5313.13: big pack size with --path-walk  14.4M   14.3M  -0.4%
5313.18: repack with --path-walk         98.14   41.46 -57.8%
5313.19: repack size with --path-walk   197.2M  197.3M  +0.0%

Signed-off-by: Derrick Stolee <[email protected]>
When adding tree objects, we are very careful to avoid adding the same
tree object more than once. There was one small gap in that logic,
though: when adding a root tree object. Two refs can easily share the
same root tree object, and we should still not add it more than once.

Signed-off-by: Johannes Schindelin <[email protected]>
In anticipation of implementing 'git backfill', populate the necessary files
with the boilerplate of a new builtin.

RFC TODO: When preparing this for a full implementation, make sure it is
based on the newest standards introduced by [1].

[1] https://lore.kernel.org/git/[email protected]/T/#m606036ea2e75a6d6819d6b5c90e729643b0ff7f7
    [PATCH 1/3] builtin: add a repository parameter for builtin functions

Signed-off-by: Derrick Stolee <[email protected]>
The default behavior of 'git backfill' is to fetch all missing blobs that
are reachable from HEAD. Document and test this behavior.

The implementation is a very simple use of the path-walk API, initializing
the revision walk at HEAD to start the path-walk from all commits reachable
from HEAD. Ignore the object arrays that correspond to tree entries,
assuming that they are all present already.

Signed-off-by: Derrick Stolee <[email protected]>
Users may want to specify a minimum batch size for their needs. This is only
a minimum: the path-walk API provides a list of OIDs that correspond to the
same path, and thus it is optimal to allow delta compression across those
objects in a single server request.

We could consider limiting the request to have a maximum batch size in the
future.

Signed-off-by: Derrick Stolee <[email protected]>
One way to significantly reduce the cost of a Git clone and later fetches is
to use a blobless partial clone and combine that with a sparse-checkout that
reduces the paths that need to be populated in the working directory. Not
only does this reduce the cost of clones and fetches, the sparse-checkout
reduces the number of objects needed to download from a promisor remote.

However, history investigations can be expensie as computing blob diffs will
trigger promisor remote requests for one object at a time. This can be
avoided by downloading the blobs needed for the given sparse-checkout using
'git backfill' and its new '--sparse' mode, at a time that the user is
willing to pay that extra cost.

Note that this is distinctly different from the '--filter=sparse:<oid>'
option, as this assumes that the partial clone has all reachable trees and
we are using client-side logic to avoid downloading blobs outside of the
sparse-checkout cone. This avoids the server-side cost of walking trees
while also achieving a similar goal. It also downloads in batches based on
similar path names, presenting a resumable download if things are
interrupted.

This augments the path-walk API to have a possibly-NULL 'pl' member that may
point to a 'struct pattern_list'. This could be more general than the
sparse-checkout definition at HEAD, but 'git backfill --sparse' is currently
the only consumer.

Be sure to test this in both cone mode and not cone mode. Cone mode has the
benefit that the path-walk can skip certain paths once they would expand
beyond the sparse-checkout.

Signed-off-by: Derrick Stolee <[email protected]>
Start work on a new 'git survey' command to scan the repository
for monorepo performance and scaling problems.  The goal is to
measure the various known "dimensions of scale" and serve as a
foundation for adding additional measurements as we learn more
about Git monorepo scaling problems.

The initial goal is to complement the scanning and analysis performed
by the GO-based 'git-sizer' (https://github.com/github/git-sizer) tool.
It is hoped that by creating a builtin command, we may be able to take
advantage of internal Git data structures and code that is not
accessible from GO to gain further insight into potential scaling
problems.

Co-authored-by: Derrick Stolee <[email protected]>
Signed-off-by: Jeff Hostetler <[email protected]>
Signed-off-by: Derrick Stolee <[email protected]>
The previous change introduced the '--[no-]sparse' option for the 'git
backfill' command, but did not assume it as enabled by default. However,
this is likely the behavior that users will most often want to happen.
Without this default, users with a small sparse-checkout may be confused
when 'git backfill' downloads every version of every object in the full
history.

However, this is left as a separate change so this decision can be reviewed
independently of the value of the '--[no-]sparse' option.

Add a test of adding the '--sparse' option to a repo without sparse-checkout
to make it clear that supplying it without a sparse-checkout is an error.

Signed-off-by: Derrick Stolee <[email protected]>
By default we will scan all references in "refs/heads/", "refs/tags/"
and "refs/remotes/".

Add command line opts let the use ask for all refs or a subset of them
and to include a detached HEAD.

Signed-off-by: Jeff Hostetler <[email protected]>
Signed-off-by: Derrick Stolee <[email protected]>
This is a highly useful command, and we want it to get some testing "in
the wild". However, the patches have not yet been reviewed on the Git
mailing list, and are therefore subject to change. By marking the
command as experimental, users will be warned to pay attention to those
changes.

Signed-off-by: Johannes Schindelin <[email protected]>
When 'git survey' provides information to the user, this will be presented
in one of two formats: plaintext and JSON. The JSON implementation will be
delayed until the functionality is complete for the plaintext format.

The most important parts of the plaintext format are headers specifying the
different sections of the report and tables providing concreted data.

Create a custom table data structure that allows specifying a list of
strings for the row values. When printing the table, check each column for
the maximum width so we can create a table of the correct size from the
start.

The table structure is designed to be flexible to the different kinds of
output that will be implemented in future changes.

Signed-off-by: Derrick Stolee <[email protected]>
At the moment, nothing is obvious about the reason for the use of the
path-walk API, but this will become more prevelant in future iterations. For
now, use the path-walk API to sum up the counts of each kind of object.

For example, this is the reachable object summary output for my local repo:

REACHABLE OBJECT SUMMARY
========================
Object Type |  Count
------------+-------
       Tags |   1343
    Commits | 179344
      Trees | 314350
      Blobs | 184030

Signed-off-by: Derrick Stolee <[email protected]>
Now that we have explored objects by count, we can expand that a bit more to
summarize the data for the on-disk and inflated size of those objects. This
information is helpful for diagnosing both why disk space (and perhaps
clone or fetch times) is growing but also why certain operations are slow
because the inflated size of the abstract objects that must be processed is
so large.

Signed-off-by: Derrick Stolee <[email protected]>
In future changes, we will make use of these methods. The intention is to
keep track of the top contributors according to some metric. We don't want
to store all of the entries and do a sort at the end, so track a
constant-size table and remove rows that get pushed out depending on the
chosen sorting algorithm.

Co-authored-by: Jeff Hostetler <[email protected]>
Signed-off-by; Jeff Hostetler <[email protected]>
Signed-off-by: Derrick Stolee <[email protected]>
Since we are already walking our reachable objects using the path-walk API,
let's now collect lists of the paths that contribute most to different
metrics. Specifically, we care about

 * Number of versions.
 * Total size on disk.
 * Total inflated size (no delta or zlib compression).

This information can be critical to discovering which parts of the
repository are causing the most growth, especially on-disk size. Different
packing strategies might help compress data more efficiently, but the toal
inflated size is a representation of the raw size of all snapshots of those
paths. Even when stored efficiently on disk, that size represents how much
information must be processed to complete a command such as 'git blame'.

Since the on-disk size is likely to be fragile, stop testing the exact
output of 'git survey' and check that the correct set of headers is
output.

Signed-off-by: Derrick Stolee <[email protected]>
The 'git survey' builtin provides several detail tables, such as "top
files by on-disk size". The size of these tables defaults to 100,
currently.

Allow the user to specify this number via a new --top=<N> option or the
new survey.top config key.

Signed-off-by: Derrick Stolee <[email protected]>
alejandro5042 and others added 20 commits October 8, 2024 08:58
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]>
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
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 self-assigned this Oct 8, 2024
@dscho dscho added this to the v2.47.0 milestone Oct 8, 2024
@dscho dscho linked an issue Oct 8, 2024 that may be closed by this pull request
Ooops. Must not risk a segmentation fault in a partial clone missing
trees...

Signed-off-by: Johannes Schindelin <[email protected]>
@dscho
Copy link
Member Author

dscho commented Oct 8, 2024

I briefly considered backporting gitgitgadget#1812 because the link is broken: start /mingw64/share/doc/git-doc/technical/platform-support.html will open file:///C:/Program Files/Git/mingw64/share/doc/git-doc/technical/platform-support.html, and the ["How to maintain Git"](file:///C:/Program Files/Git/mingw64/share/doc/git-doc/howto/maintain-git.txt) link incorrectly specifies a .txt file (which does not exist) when it should specify a .html (which does).

But I decided against backporting given that there is no easy git help invocation to open the technical/platform-support page, indeed, the only other page containing the string "platform-support" would be the technical/unit-tests one, and it is merely an anchor there, not a link, and besides, technical/unit-tests is not linked from any other page at all, so there.

@dscho
Copy link
Member Author

dscho commented Oct 8, 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 Oct 8, 2024

/release

The release-git workflow run was started

@gitforwindowshelper gitforwindowshelper bot merged commit d53e464 into git-for-windows:main Oct 8, 2024
66 of 67 checks passed
@dscho dscho deleted the rebase-to-v2.47.0 branch October 8, 2024 10:06
@Unknown0423

This comment was marked as off-topic.

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.47.0