Skip to content

Commit

Permalink
Rebase to v2.44.0-rc1 (#4816)
Browse files Browse the repository at this point in the history
<details><summary>Range-diff relative to main</summary>



* 1: eb7ae2c = 1: b85851b gitk(Windows): avoid inadvertently
calling executables in the worktree
* 2: 8ec1763 = 2: e300ee0 t9350: point out that refs are not
updated correctly
* 3: b23a328 = 3: 4c2bec3 transport-helper: add trailing --
* 4: ed0a844 = 4: 4773f56 remote-helper: check helper status
after import/export
* 5: 795df89 = 5: 1beb2a0 mingw: demonstrate a problem with
certain absolute paths
* 8: 4df7f74 = 6: 5bc0a87 Always auto-gc after calling a
fast-import transport
* 7: d356b85 = 7: 6ed6c40 mingw: include the Python parts in
the build
* 11: 713527b = 8: 9b84468 win32/pthread: avoid name clashes
with winpthread
* 6: cf13025 = 9: 3c8a4f9 clean: do not traverse mount points
* 12: 3d44f17 = 10: 1437592 git-compat-util: avoid redeclaring
_DEFAULT_SOURCE
* 9: 868992b = 11: b4584a1 mingw: allow absolute paths without
drive prefix
* 10: d7814f9 = 12: 92d9ad7 clean: remove mount points when
possible
* 13: 349f777 = 13: 4edc85e Import the source code of mimalloc
v2.1.2
* 14: e206f41 = 14: db92376 mimalloc: adjust for building
inside Git
* 15: f2ddbf3 = 15: b117900 mimalloc: offer a build-time
option to enable it
* 16: d31fba5 = 16: f32c013 mimalloc: use "weak" random seed
when statically linked
* 17:  9ce9df3 =  17:  dc533b3 mingw: use mimalloc
* 18: 24eeb18 = 18: 97286b5 transport: optionally disable
side-band-64k
* 19: 6a694f1 = 19: 8e70da5 mingw: make sure `errno` is set
correctly when socket operations fail
* 20: c649490 = 20: a3f4269 mingw: do resolve symlinks in
`getcwd()`
* 21: 76dc36c = 21: cae8b70 mingw: fix fatal error working on
mapped network drives on Windows
* 27: e53cde2 = 22: 08745e0 clink.pl: fix MSVC compile script
to handle libcurl-d.lib
* 22:  bab3249 =  23:  e3d760a mingw: ensure valid CTYPE
* 23: 0110f9a = 24: 1376236 mingw: demonstrate a `git add`
issue with NTFS junctions
* 24: 3560b11 = 25: a59f329 mingw: allow `git.exe` to be used
instead of the "Git wrapper"
* 25: 9ada5de = 26: 84eeb35 strbuf_realpath(): use
platform-dependent API if available
* 26: 1ccff87 = 27: a9495cf mingw: ignore HOMEDRIVE/HOMEPATH
if it points to Windows' system directory
* 28: 470a863 = 28: f73d1cc mingw: implement a
platform-specific `strbuf_realpath()`
* 29: 99dfbb5 = 29: cb1934b vcxproj: unclash project
directories with build outputs
* 30: 4e42bbc = 30: 2adbc19 t5505/t5516: allow running without
`.git/branches/` in the templates
* 31: 1764571 = 31: 933ca80 t5505/t5516: fix white-space
around redirectors
* 32: 8617793 = 32: 34e850d http: use new "best effort"
strategy for Secure Channel revoke checking
* 33: b432525 = 33: 6a80a39 t3701: verify that we can add
*lots* of files interactively
* 34: ff98b84 = 34: 49dc042 git add -i: handle CR/LF line
endings in the interactive input
* 35: c80db0f = 35: a43a6d9 commit: accept "scissors" with
CR/LF line endings
* 39:  d9819aa =  36:  8910fa9 t0014: fix indentation
* 40: 12ec6cb = 37: 9a6441e git-gui: accommodate for
intent-to-add files
* 36: d339319 = 38: a4f2b12 clink.pl: fix libexpatd.lib link
error when using MSVC
* 37: 6701301 = 39: 4922bcc Makefile: clean up .ilk files when
MSVC=1
* 38: e759b02 = 40: b521997 vcbuild: add support for compiling
Windows resource files
* 41: bc19814 = 41: 2235fbb config.mak.uname: add git.rc to
MSVC builds
* 42: 96d5def = 42: 4642b42 clink.pl: ignore
no-stack-protector arg on MSVC=1 builds
* 43: 38be606 = 43: 048ccb3 clink.pl: move default linker
options for MSVC=1 builds
* 44: acf87e9 = 44: 35c0d18 buildsystems: remove duplicate
clause
* 45: f9b959b = 45: 31e3ed7 vcxproj: handle resource files,
too
* 46: 9ad52f9 = 46: 19e9453 vcxproj: ignore
-fno-stack-protector and -fno-common
* 48: e48e360 = 47: ff5b0c7 vcxproj: handle GUI programs, too
* 47: e447a1e = 48: eacd5f8 vcpkg_install: detect lack of Git
* 49: 8f19423 = 49: e2e2712 vcpkg_install: add comment
regarding slow network connections
* 51: b07c00c = 50: 0b4976d vcxproj: support building
Windows/ARM64 binaries
* 52: d609b85 = 51: b766f3a vcbuild: install ARM64
dependencies when building ARM64 binaries
* 53: 4c84da2 = 52: 1810941 vcbuild: add an option to install
individual 'features'
* 54: 8b7fdd9 = 53: b58fc39 cmake: allow building for
Windows/ARM64
* 50:  e657e64 =  54:  8d04743 cmake: install headless-git.
* 55: a447767 ! 55: 736513d ci(vs-build) also build
Windows/ARM64 artifacts

   ``````diff
   @@ .github/workflows/main.yml: jobs:
    +      group: vs-build-${{ github.ref }}-${{ matrix.arch }}
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes'
}}
         steps:
   -     - uses: actions/checkout@v3
   +     - uses: actions/checkout@v4
    @@ .github/workflows/main.yml: jobs:
           uses: microsoft/setup-msbuild@v1
         - name: copy dlls to root
   @@ .github/workflows/main.yml: jobs:
           env:
    @@ .github/workflows/main.yml: jobs:
         - name: upload tracked files and build artifacts
   -       uses: actions/upload-artifact@v3
   +       uses: actions/upload-artifact@v4
           with:
    -        name: vs-artifacts
    +        name: vs-artifacts-${{ matrix.arch }}
   @@ .github/workflows/main.yml: jobs:
         name: win+VS test
    @@ .github/workflows/main.yml: jobs:
         - name: download tracked files and build artifacts
   -       uses: actions/download-artifact@v3
   +       uses: actions/download-artifact@v4
           with:
    -        name: vs-artifacts
    +        name: vs-artifacts-x64
   ``````

* 56: f7954f5 = 56: dfc7f14 Add schannel to curl installation
* 57: d762b9d = 57: cd7caf5 cmake(): allow setting HOST_CPU
for cross-compilation
* 58: 05eba36 = 58: 5f98f73 ci(vs-build): download the vcpkg
artifacts using a dedicated Action
* 59: 1c9a318 = 59: de0ecc6 mingw: allow for longer paths in
`parse_interpreter()`
* 61: 95f0b13 = 60: ae60138 compat/vcbuild: document preferred
way to build in Visual Studio
* 64: 3710340 = 61: f0cadf3 CMake: default Visual Studio
generator has changed
* 65: b23eb9f = 62: c7ae216 .gitignore: add Visual Studio
CMakeSetting.json file
* 60: c855be1 = 63: 567e802 subtree: update `contrib/subtree`
`test` target
* 66: 809634c = 64: 1582f5f CMakeLists: add default
"x64-windows" arch for Visual Studio
* 62: 7aaa6dc = 65: 7ffc93a http: optionally send SSL client
certificate
* 63: 065c692 = 66: f60c5eb ci: run `contrib/subtree` tests in
CI builds
* 67: 414841d = 67: a07e77c CMake: show Win32 and
Generator_platform build-option values
* 68: 1667cfc = 68: 3887dd8 init: do parse _all_ core.*
settings early
* 69: 66dc4f6 ! 69: d6a9e8d Enable the built-in FSMonitor as
an experimental feature

   ``````diff
   @@ repo-settings.c
static void repo_cfg_bool(struct repository *r, const char *key, int
*dest,
     			  int def)
    @@ repo-settings.c: void prepare_repo_settings(struct repository *r)
   - 	if (experimental) {
r->settings.fetch_negotiation_algorithm = FETCH_NEGOTIATION_SKIPPING;
     		r->settings.pack_use_bitmap_boundary_traversal = 1;
   + 		r->settings.pack_use_multi_pack_reuse = 1;
    +
    +		/*
    +		 * Force enable the builtin FSMonitor (unless the repo
   ``````

* 70: 68bb0cc = 70: 236135f hash-object: demonstrate a
>4GB/LLP64 problem
* 71: 254707b = 71: 54e9259 write_object_file_literally(): use
size_t
* 72: 0b4a921 = 72: 516c829 object-file.c: use size_t for
header lengths
* 73: a7172a5 = 73: f3220f4 hash algorithms: use size_t for
section lengths
* 74: bd50e8c = 74: 3353257 hash-object --stdin: verify that
it works with >4GB/LLP64
* 75: c752b1d = 75: 1edb627 hash-object: add another
>4GB/LLP64 test case
* 76: 8beb33a = 76: 407d577 setup: properly use "%(prefix)/"
when in WSL
* 77: adfa9af = 77: e5bcb59 hash-object: add a >4GB/LLP64 test
case using filtered input
* 81: 4194acd = 78: e966001 Add config option
`windows.appendAtomically`
* 78: 4d5f6bc = 79: 122b221 compat/mingw.c: do not warn when
failing to get owner
* 79: 09b582e = 80: 80220c7 mingw: $env:TERM="xterm-256color"
for newer OSes
* 80: ee67164 = 81: becda22 winansi: check result and Buffer
before using Name
* 87: 6af63c9 = 82: 3751282 mingw: change
core.fsyncObjectFiles = 1 by default
* 82: 4dd1012 = 83: dae381f vcxproj: allow building with
`NO_PERL` again
* 83:  75b29d5 =  84:  16b0f2b vcxproj: require C11
* 84: 5f42f98 = 85: e143213 vcxproj: ignore the `-pedantic`
option
* 85: b1dce61 = 86: aec6131 vcxproj: include reftable when
committing `.vcxproj` files
* 86: 1398194 = 87: d4ee719 vcxproj: handle libreftable_test,
too
* 88: bdda4a9 = 88: 46bf8d4 vcxproj: avoid escaping double
quotes in the defines
* 89: 9356e8a = 89: a87c891 ci: adjust Azure Pipeline for
`runs_on_pool`
* 90: e5e3418 = 90: e601a63 ci: stop linking the `prove` cache
* 91: bf1de07 = 91: 8950ff3 ci: reinstate Azure Pipelines
support
* 92: 9f2a988 = 92: c6f2362 azure-pipeline: drop the
`GETTEXT_POISON` job
* 93: 90d5aa1 = 93: 21036e5 azure-pipeline: stop hard-coding
`apt-get` calls
* 94: 2efc682 = 94: 2ee6500 azure-pipeline: drop the code to
write to/read from a file share
* 95: f02cef7 = 95: de3fc61 azure-pipeline: use partial
clone/parallel checkout to initialize minimal-sdk
* 96: f89636b = 96: c4a2691 azure-pipeline: downcase the job
name of the `Linux32` job
* 98: fc4ba85 = 97: e570cb6 bswap.h: add support for built-in
bswap functions
* 97: 4d7fc2f = 98: 1977b0d MinGW: link as terminal server
aware
* 99: e7164df = 99: 398e99b azure-pipeline: run
static-analysis on jammy
* 100:  0d4081b = 100:  793a4aa Fix Windows version resources
* 118: af7ae49 = 101: d5a0c15 config.mak.uname: add support
for clangarm64
* 101: 8c72ab3 = 102: 456b684 http: optionally load libcurl
lazily
* 119: 2849c15 = 103: 38db021 ci: create clangarm64-build.yml
* 104: d48d4a1 = 104: 1a15f97 status: fix for old-style
submodules with commondir
* 105: 575360d = 105: a7f5766 windows: skip linking
`git-<command>` for built-ins
* 106: 758eb76 = 106: a0a0f81 windows: fix Repository>Explore
Working Copy
* 102: 359804e = 107: afdf1c3 http: support lazy-loading
libcurl also on Windows
* 103: df832a2 = 108: db80eab http: when loading libcurl
lazily, allow for multiple SSL backends
* 107: 5f391ca = 109: a6c0451 mingw: do load libcurl
dynamically by default
* 120: a8f4b84 = 110: 653444f Add a GitHub workflow to verify
that Git/Scalar work in Nano Server
* 108: f8c5c67 = 111: 598d670 mingw: suggest
`windows.appendAtomically` in more cases
* 109: ad1a318 = 112: 87137c3 win32: use native ANSI sequence
processing, if possible
* 110:  c6e18ad = 113:  9bd36bc git.rc: include winuser.h
* 113: 742b547 = 114: 1f57497 build(deps): bump
mshick/add-pr-comment from 1 to 2
* 114: b3ee228 = 115: ec2d8db build(deps): bump
actions/setup-go from 2 to 5
* 239: 49981fa ! 116: 82d6f85 build(deps): bump
microsoft/setup-msbuild from 1 to 2

   ``````diff
   @@ Commit message
    
     ## .github/workflows/main.yml ##
    @@ .github/workflows/main.yml: jobs:
   -         repository: git/git
   -         definitionId: 9
   +         Expand-Archive compat.zip -DestinationPath . -Force
   +         Remove-Item compat.zip
         - name: add msbuild to PATH
    -      uses: microsoft/setup-msbuild@v1
    +      uses: microsoft/setup-msbuild@v2
         - name: copy dlls to root
           shell: cmd
- run: compat\vcbuild\vcpkg_copy_dlls.bat release ${{ matrix.arch
}}-windows
   +       run: compat\vcbuild\vcpkg_copy_dlls.bat release
   ``````

* 121: 4619239 = 117: 1fc651a Win32: make FILETIME conversion
functions public
* 122: b8f812c = 118: 7392f0b Win32: dirent.c: Move opendir
down
* 123: 73027ed = 119: 50ca74a mingw: make the dirent
implementation pluggable
* 124: 32d5356 = 120: 029bfbb Win32: make the lstat
implementation pluggable
* 125: abb83bc = 121: ddad2ed mingw: add infrastructure for
read-only file system level caches
* 126: bc9194e = 122: a708aac mingw: add a cache below mingw's
lstat and dirent implementations
* 127: 2b2895f = 123: b2aa80a fscache: load directories only
once
* 128: 8a0b4db = 124: 78eaedc fscache: add key for
GIT_TRACE_FSCACHE
* 129: d6d8974 = 125: 0fa5fc2 fscache: remember not-found
directories
* 130: 8dbd532 = 126: 843f261 fscache: add a test for the
dir-not-found optimization
* 131: 8650575 = 127: b935fb6 add: use preload-index and
fscache for performance
* 132: ae4b42e = 128: 52e5303 dir.c: make add_excludes aware
of fscache during status
* 133: 6a2343d = 129: 3f51586 fscache: make fscache_enabled()
public
* 134: c1585e2 = 130: c9e4f54 dir.c: regression fix for
add_excludes with fscache
* 135: 717aa9a = 131: d7a8910 fetch-pack.c: enable fscache for
stats under .git/objects
* 136: 058b1ac = 132: c28e607 checkout.c: enable fscache for
checkout again
* 137: 556779e = 133: bbd50d0 Enable the filesystem cache
(fscache) in refresh_index().
* 138: 8985e6d = 134: c177751 fscache: use FindFirstFileExW to
avoid retrieving the short name
* 139: c0e9478 = 135: 56b5f03 status: disable and free fscache
at the end of the status command
* 140: 0f9047d = 136: 56d493e fscache: add GIT_TEST_FSCACHE
support
* 141: 601a472 = 137: 6453004 fscache: add fscache hit
statistics
* 142: 5242cc1 = 138: f66b44d mem_pool: add GIT_TRACE_MEMPOOL
support
* 143: 217332c = 139: 3f6d11b fscache: fscache takes an
initial size
* 144: 87a49f2 = 140: e4fa72c fscache: update fscache to be
thread specific instead of global
* 145: d2d53d5 = 141: aa996e0 fscache: teach fscache to use
mempool
* 146: 80126ad = 142: 049d093 fscache: make fscache_enable()
thread safe
* 147: ae387da = 143: 6e11a86 fscache: teach fscache to use
NtQueryDirectoryFile
* 148: 4d2d6ae = 144: 487504c unpack-trees: enable fscache for
sparse-checkout
* 149: a1ff8e8 = 145: 4cb1b2b fscache: remember the reparse
tag for each entry
* 150: 7f6d364 = 146: 565c51c fscache: implement an
FSCache-aware is_mount_point()
* 156:  c377509 = 147:  02af368 clean: make use of FSCache
* 151: 4b1b1b2 = 148: 1e5089b git-gui: provide question helper
for retry fallback on Windows
* 152: 78e1b53 = 149: b6bd666 git gui: set
GIT_ASKPASS=git-gui--askpass if not set yet
* 153: b15d3d9 = 150: 3c2ef68 git-gui--askyesno: fix funny
text wrapping
* 154: aedb111 = 151: 4515dcd git-gui--askyesno: allow
overriding the window title
* 157: b78ed88 = 152: 081cd82 gitk: Unicode file name support
* 155: 35800e6 = 153: d812052 git-gui--askyesno (mingw): use
Git for Windows' icon, if available
* 158: 0fac83d = 154: 08088d4 gitk: Use an external icon file
on Windows
* 159: c93db98 = 155: 631e5e1 gitk: fix arrow keys in input
fields with Tcl/Tk >= 8.6
* 160: f74888f = 156: 67f2b2a gitk: make the "list references"
default window width wider
* 161: e9683b8 = 157: 2d3e5bd pack-objects (mingw):
demonstrate a segmentation fault with large deltas
* 162:  c4f7e1e = 158:  3d97521 mingw: support long paths
* 163: 32624bb = 159: 2938bf5 Win32: fix 'lstat("dir/")' with
long paths
* 164: 1b6d157 = 160: 835aab1 win32(long path support): leave
drive-less absolute paths intact
* 167: 7b3ecaa = 161: d3f9f35 mingw: Support
`git_terminal_prompt` with more terminals
* 165: c020f14 = 162: 7a2bc38 compat/fsmonitor/fsm-*-win32:
support long paths
* 166: 9c161b1 = 163: 91db5cd clean: suggest using
`core.longPaths` if paths are too long to remove
* 168: d4a2b56 = 164: 88898ca compat/terminal.c: only use the
Windows console if bash 'read -r' fails
* 169: 83d310a = 165: fae9178 mingw (git_terminal_prompt): do
fall back to CONIN$/CONOUT$ method
* 170: fede48b = 166: e19ba9b Unbreak interactive GPG prompt
upon signing
* 171: 34a933a = 167: 64f1993 strbuf_readlink: don't call
readlink twice if hint is the exact link size
* 172: 42cf85d = 168: ff3bcfe strbuf_readlink: support link
targets that exceed PATH_MAX
* 173: fa1bf38 = 169: 9eedc45 lockfile.c: use is_dir_sep()
instead of hardcoded '/' checks
* 174: 6f1a739 = 170: 02fcad4 Win32: don't call
GetFileAttributes twice in mingw_lstat()
* 175: dada6d0 = 171: 9a0406c Win32: implement stat() with
symlink support
* 176: 2a2665c = 172: ebb4cbd Win32: remove separate
do_lstat() function
* 177: 996eb09 = 173: ca4eb31 Win32: let mingw_lstat() error
early upon problems with reparse points
* 178: 185b204 = 174: 1f0dd07 mingw: teach fscache and dirent
about symlinks
* 179: 113ca09 = 175: 293d18a Win32: lstat(): return adequate
stat.st_size for symlinks
* 180:  534a752 = 176:  d9a2b0c Win32: factor out retry logic
* 181: 179020e = 177: a0ded62 Win32: change default of
'core.symlinks' to false
* 182: 1d95e40 = 178: 81dd006 Win32: add symlink-specific
error codes
* 183: 3148b50 = 179: 2d56f47 Win32: mingw_unlink: support
symlinks to directories
* 184: 4491333 = 180: 3495257 Win32: mingw_rename: support
renaming symlinks
* 185: 2a19c8e = 181: 0f4229a Win32: mingw_chdir: change to
symlink-resolved directory
* 186:  977b781 = 182:  83b9eea Win32: implement readlink()
* 187: fccf215 = 183: 41f21df mingw: lstat: compute correct
size for symlinks
* 188: 18ca6d4 = 184: 8a9711d Win32: implement basic symlink()
functionality (file symlinks only)
* 189: aceda06 = 185: a57efa6 Win32: symlink: add support for
symlinks to directories
* 190: a6b014c = 186: 4a23132 mingw: try to create symlinks
without elevated permissions
* 191: 1dc87ff = 187: a02e6a7 mingw: emulate stat() a little
more faithfully
* 192: b24bb5c = 188: 80afdbd mingw: special-case index
entries for symlinks with buggy size
* 193: 8f4dae0 = 189: be19594 mingw: introduce code to detect
whether we're inside a Windows container
* 194: b13757e = 190: 33d504e mingw: when running in a Windows
container, try to rename() harder
* 196: 2852c4e = 191: cf77157 mingw: move the
file_attr_to_st_mode() function definition
* 195: 7c0eb61 = 192: d954fc6 Win32: symlink: move phantom
symlink creation to a separate function
* 197: c6fd0ea = 193: 1882c46 Introduce helper to create
symlinks that knows about index_state
* 199: 3b56754 = 194: a28a0f8 mingw: allow to specify the
symlink type in .gitattributes
* 198: 3d21db0 = 195: b0068a2 mingw: Windows Docker volumes
are *not* symbolic links
* 201: 4a500ff = 196: 2648083 Win32: symlink: add test for
`symlink` attribute
* 200: 8732850 = 197: 1309f48 mingw: work around rename()
failing on a read-only file
* 202: 3f4790b = 198: 64c8e89 mingw: explicitly specify with
which cmd to prefix the cmdline
* 203: ab039e9 = 199: d183f32 mingw: when path_lookup()
failed, try BusyBox
* 204: 35e7204 = 200: e046af6 test-lib: avoid unnecessary Perl
invocation
* 205: 9dd0520 = 201: c13d5f0 test-tool: learn to act as a
drop-in replacement for `iconv`
* 206: ee66969 = 202: 8d6a91e tests(mingw): if `iconv` is
unavailable, use `test-helper --iconv`
* 207: 6cfa349 = 203: 39deb53 gitattributes: mark .png files
as binary
* 208: f941f55 = 204: 1b12d2e tests: move test PNGs into
t/lib-diff/
* 209: 6bf2469 = 205: f69fa03 tests: only override sort & find
if there are usable ones in /usr/bin/
* 210: 4a15dc6 = 206: c619329 tests: use the correct path
separator with BusyBox
* 211: 9b21147 = 207: 1f509e7 mingw: only use Bash-ism
`builtin pwd -W` when available
* 212: 1432f3b = 208: 67acbe8 tests (mingw): remove
Bash-specific pwd option
* 213: ee9645f = 209: a18a0f8 test-lib: add BUSYBOX
prerequisite
* 214: 32f116d = 210: 6b2142b t5003: use binary file from
t/lib-diff/
* 215: 27e1ff9 = 211: 6e490c1 t5532: workaround for BusyBox on
Windows
* 216: 388ddea = 212: d4287d2 t5605: special-case hardlink
test for BusyBox-w32
* 217: 4135380 = 213: 15b88e7 t5813: allow for $PWD to be a
Windows path
* 218: 4e1c3ca = 214: 891b29f t9200: skip tests when $PWD
contains a colon
* 219: 58dfc2b = 215: f8c17f3 mingw: add a Makefile target to
copy test artifacts
* 220: 8a79bc2 = 216: 4a2ec98 mingw: kill child processes in a
gentler way
* 221: b29a9ac = 217: d5e2881 mingw: optionally enable wsl
compability file mode bits
* 222:  57cc6f2 = 218:  5aa9ec7 mingw: really handle SIGINT
* 223: f95abb6 = 219: 875251f mingw: do not call
xutftowcs_path in mingw_mktemp
* 224: 1606d61 = 220: fe47e09 Partially un-revert "editor:
save and reset terminal after calling EDITOR"
* 225: 052add7 = 221: 576d1c3 reset: reinstate support for the
deprecated --stdin option
* 226: 6fc41b6 = 222: 315f0ea fsmonitor: reintroduce
core.useBuiltinFSMonitor
* 227: 7db097f = 223: b0702ab Describe Git for Windows'
architecture [no ci]
* 229: 666c595 = 224: 04e2a52 Modify the Code of Conduct for
Git for Windows
* 230: 8d8b80e = 225: 213f046 CONTRIBUTING.md: add guide for
first-time contributors
* 231: 80818bc = 226: 2bc7f44 README.md: Add a
Windows-specific preamble
* 232:  2be1a7b = 227:  76c1e92 Add an issue template
* 228: 7a503f1 = 228: 2cec329 Add a GitHub workflow to monitor
component updates
* 233: 08ec415 ! 229: c3d7282 Modify the GitHub Pull Request
template (to reflect Git for Windows)

   ``````diff
   @@ .github/PULL_REQUEST_TEMPLATE.md
+Nevertheless, you can use GitGitGadget
(https://gitgitgadget.github.io/)
to conveniently send your Pull Requests commits to our mailing list.
     
   - Please read the "guidelines for contributing" linked above!
+ For a single-commit pull request, please *leave the pull request
description
   ``````

* 111: dc95f4d = 230: 9e7f27a dependabot: help keeping GitHub
Actions versions up to date
* 112: 9471bc6 < -: ------------ build(deps): bump actions/cache
from 3 to 4
* 115: ac09146 < -: ------------ build(deps): bump
actions/download-artifact from 3 to 4
* 116: 8d2729e (upstream: 820a340) < -: ------------ ci: bump
actions/upload-artifact to v4
* 117: dd75561 (upstream: e94dec0) < -: ------------
build(deps): bump actions/checkout from 3 to 4
* 234: f9944c3 = 231: e01cfab .github: Add configuration for
the Sentiment Bot
* 235: 4d421e5 = 232: 4ac6362 Document how $HOME is set on
Windows
* 236: a5db93a = 233: 3fb190d SECURITY.md: document Git for
Windows' policies
* 237: ffbfa3b < -: ------------ build(deps): bump actions/checkout
from 1 to 4
* 238: 50bb273 (upstream: c4ddbe0) < -: ------------
build(deps): bump actions/github-script from 6 to 7

</details>
  • Loading branch information
dscho authored Feb 14, 2024
2 parents 5f4d459 + d201bdd commit e74f1e0
Show file tree
Hide file tree
Showing 48 changed files with 879 additions and 433 deletions.
3 changes: 3 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,7 @@ to the spam folder).
Nevertheless, you can use GitGitGadget (https://gitgitgadget.github.io/)
to conveniently send your Pull Requests commits to our mailing list.

For a single-commit pull request, please *leave the pull request description
empty*: your commit message itself should describe your changes.

Please read the "guidelines for contributing" linked above!
4 changes: 2 additions & 2 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,7 @@ jobs:
steps:
- uses: actions/checkout@v4
if: matrix.vector.jobname != 'linux32'
- uses: actions/checkout@v1
- uses: actions/checkout@v1 # cannot be upgraded because Node.js Actions aren't supported in this container
if: matrix.vector.jobname == 'linux32'
- run: ci/install-docker-dependencies.sh
- run: ci/run-build-and-tests.sh
Expand All @@ -358,7 +358,7 @@ jobs:
path: ${{env.FAILED_TEST_ARTIFACTS}}
- name: Upload failed tests' directories
if: failure() && env.FAILED_TEST_ARTIFACTS != '' && matrix.vector.jobname == 'linux32'
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v1 # cannot be upgraded because Node.js Actions aren't supported in this container
with:
name: failed-tests-${{matrix.vector.jobname}}
path: ${{env.FAILED_TEST_ARTIFACTS}}
Expand Down
37 changes: 37 additions & 0 deletions Documentation/RelNotes/2.43.2.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
Git 2.43.2 Release Notes
========================

Relative to Git 2.43.1, this release has two important fixes to allow
"git imap-send" to be built with NO_CURL defined, and to restore the
forced flushing behaviour when GIT_FLUSH=1 is set. It also contains
other, unexciting, fixes that have already been merged to the 'master'
branch of the development towards the next major release.

Fixes since Git 2.43.1
----------------------

* Update to a new feature recently added, "git show-ref --exists".

* Rename detection logic ignored the final line of a file if it is an
incomplete line.

* "git diff --no-rename A B" did not disable rename detection but did
not trigger an error from the command line parser.

* "git diff --no-index file1 file2" segfaulted while invoking the
external diff driver, which has been corrected.

* Rewrite //-comments to /* comments */ in files whose comments
prevalently use the latter.

* A failed "git tag -s" did not necessarily result in an error
depending on the crypto backend, which has been corrected.

* "git stash" sometimes was silent even when it failed due to
unwritable index file, which has been corrected.

* Recent conversion to allow more than 0/1 in GIT_FLUSH broke the
mechanism by flipping what yes/no means by mistake, which has been
corrected.

Also contains documentation updates, code clean-ups and minor fixups.
47 changes: 33 additions & 14 deletions Documentation/RelNotes/2.44.0.txt
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,14 @@ UI, Workflows & Features
refresh token the same way as credential-cache and
credential-libsecret backends.

* Command line completion support (in contrib/) has been
updated for "git bisect".

* "git branch" and friends learned to use the formatted text as
sorting key, not the underlying timestamp value, when the --sort
option is used with author or committer timestamp with a format
specifier (e.g., "--sort=creatordate:format:%H:%M:%S").


Performance, Internal Implementation, Development Support etc.

Expand Down Expand Up @@ -151,6 +159,18 @@ Performance, Internal Implementation, Development Support etc.
* The priority queue test has been migrated to the unit testing
framework.

* Setting `feature.experimental` opts the user into multi-pack reuse
experiment

* Squelch node.js 16 deprecation warnings from GitHub Actions CI
by updating actions/github-script and actions/checkout that use
node.js 20.

* The mechanism to report the filename in the source code, used by
the unit-test machinery, assumed that the compiler expanded __FILE__
to the path to the source given to the $(CC), but some compilers
give full path, breaking the output. This has been corrected.


Fixes since v2.43
-----------------
Expand Down Expand Up @@ -234,21 +254,18 @@ Fixes since v2.43
data from commit-graph too early, which has been corrected.

* Update to a new feature recently added, "git show-ref --exists".
(merge 0aabeaa562 tc/show-ref-exists-fix later to maint).

* oss-fuzz tests are built and run in CI.
(merge c4a9cf1df3 js/oss-fuzz-build-in-ci later to maint).

* Rename detection logic ignored the final line of a file if it is an
incomplete line.
(merge 1c5bc6971e en/diffcore-delta-final-line-fix later to maint).

* GitHub CI update.
(merge 0188b2c8e0 pb/ci-github-skip-logs-for-broken-tests later to maint).

* "git diff --no-rename A B" did not disable rename detection but did
not trigger an error from the command line parser.
(merge 457f96252f rs/parse-options-with-keep-unknown-abbrev-fix later to maint).

* "git archive --remote=<remote>" learned to talk over the smart
http (aka stateless) transport.
Expand All @@ -265,11 +282,9 @@ Fixes since v2.43

* "git diff --no-index file1 file2" segfaulted while invoking the
external diff driver, which has been corrected.
(merge 85a9a63c92 jk/diff-external-with-no-index later to maint).

* Rewrite //-comments to /* comments */ in files whose comments
prevalently use the latter.
(merge de65079d7b jc/comment-style-fixes later to maint).

* Cirrus CI jobs started breaking because we specified version of
FreeBSD that is no longer available, which has been corrected.
Expand All @@ -279,17 +294,21 @@ Fixes since v2.43
as <ptr, length> with a wrong length, which has been corrected.
(merge 156e28b36d jh/sparse-index-expand-to-path-fix later to maint).

* A failed "git tag -s" did not necessarily result in an error
depending on the crypto backend, which has been corrected.

* "git stash" sometimes was silent even when it failed due to
unwritable index file, which has been corrected.

* "git show-ref --verify" did not show things like "CHERRY_PICK_HEAD",
which has been corrected.

* Recent conversion to allow more than 0/1 in GIT_FLUSH broke the
mechanism by flipping what yes/no means by mistake, which has been
corrected.

* Other code cleanup, docfix, build fix, etc.
(merge 5aea3955bc rj/clarify-branch-doc-m later to maint).
(merge 9cce3be2df bk/bisect-doc-fix later to maint).
(merge 8f50984cf4 ne/doc-filter-blob-limit-fix later to maint).
(merge f10b0989b8 la/strvec-comment-fix later to maint).
(merge 8430b438f6 vd/fsck-submodule-url-test later to maint).
(merge f10031fadd nb/rebase-x-shell-docfix later to maint).
(merge af3d2c160f jc/majordomo-to-subspace later to maint).
(merge ee9895b0ff sd/negotiate-trace-fix later to maint).
(merge 976d0251ce jc/coc-whitespace-fix later to maint).
(merge 9023198280 jt/p4-spell-re-with-raw-string later to maint).
(merge 36c9c44fa4 tb/pack-bitmap-drop-unused-struct-member later to maint).
(merge 19ed0dff8f js/win32-retry-pipe-write-on-enospc later to maint).
(merge 3cb4384683 jc/t0091-with-unknown-git later to maint).
3 changes: 3 additions & 0 deletions Documentation/config/feature.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ skipping more commits at a time, reducing the number of round trips.
+
* `pack.useBitmapBoundaryTraversal=true` may improve bitmap traversal times by
walking fewer objects.
+
* `pack.allowPackReuse=multi` may improve the time it takes to create a pack by
reusing objects from multiple packs instead of just one.

feature.manyFiles::
Enable config options that optimize for repos with many files in the
Expand Down
10 changes: 6 additions & 4 deletions Documentation/git-bisect.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ DESCRIPTION
The command takes various subcommands, and different options depending
on the subcommand:

git bisect start [--term-(new|bad)=<term-new> --term-(old|good)=<term-old>]
git bisect start [--term-(bad|new)=<term-new> --term-(good|old)=<term-old>]
[--no-checkout] [--first-parent] [<bad> [<good>...]] [--] [<pathspec>...]
git bisect (bad|new|<term-new>) [<rev>]
git bisect (good|old|<term-old>) [<rev>...]
git bisect terms [--term-good | --term-bad]
git bisect terms [--term-(good|old) | --term-(bad|new)]
git bisect skip [(<rev>|<range>)...]
git bisect reset [<commit>]
git bisect (visualize|view)
Expand Down Expand Up @@ -165,8 +165,10 @@ To get a reminder of the currently used terms, use
git bisect terms
------------------------------------------------

You can get just the old (respectively new) term with `git bisect terms
--term-old` or `git bisect terms --term-good`.
You can get just the old term with `git bisect terms --term-old`
or `git bisect terms --term-good`; `git bisect terms --term-new`
and `git bisect terms --term-bad` can be used to learn how to call
the commits more recent than the sought change.

If you would like to use your own terms instead of "bad"/"good" or
"new"/"old", you can choose any names you like (except existing bisect
Expand Down
8 changes: 5 additions & 3 deletions Documentation/git-for-each-ref.txt
Original file line number Diff line number Diff line change
Expand Up @@ -359,9 +359,11 @@ In any case, a field name that refers to a field inapplicable to
the object referred by the ref does not cause an error. It
returns an empty string instead.

As a special case for the date-type fields, you may specify a format for
the date by adding `:` followed by date format name (see the
values the `--date` option to linkgit:git-rev-list[1] takes).
As a special case for the date-type fields, you may specify a format for the
date by adding `:` followed by date format name (see the values the `--date`
option to linkgit:git-rev-list[1] takes). If this formatting is provided in
a `--sort` key, references will be sorted according to the byte-value of the
formatted string rather than the numeric value of the underlying timestamp.

Some atoms like %(align) and %(if) always require a matching %(end).
We call them "opening atoms" and sometimes denote them as %($open).
Expand Down
2 changes: 1 addition & 1 deletion GIT-VERSION-GEN
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/bin/sh

GVF=GIT-VERSION-FILE
DEF_VER=v2.44.0-rc0
DEF_VER=v2.44.0-rc1

LF='
'
Expand Down
2 changes: 2 additions & 0 deletions builtin/pack-objects.c
Original file line number Diff line number Diff line change
Expand Up @@ -4396,6 +4396,8 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
prepare_repo_settings(the_repository);
if (sparse < 0)
sparse = the_repository->settings.pack_use_sparse;
if (the_repository->settings.pack_use_multi_pack_reuse)
allow_pack_reuse = MULTI_PACK_REUSE;
}

reset_pack_idx_option(&pack_idx_opts);
Expand Down
2 changes: 1 addition & 1 deletion builtin/show-ref.c
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ static int cmd_show_ref__verify(const struct show_one_options *show_one_opts,
while (*refs) {
struct object_id oid;

if ((starts_with(*refs, "refs/") || !strcmp(*refs, "HEAD")) &&
if ((starts_with(*refs, "refs/") || refname_is_safe(*refs)) &&
!read_ref(*refs, &oid)) {
show_one(show_one_opts, *refs, &oid);
}
Expand Down
8 changes: 4 additions & 4 deletions builtin/stash.c
Original file line number Diff line number Diff line change
Expand Up @@ -520,7 +520,7 @@ static void unstage_changes_unless_new(struct object_id *orig_tree)
repo_hold_locked_index(the_repository, &lock, LOCK_DIE_ON_ERROR);
if (write_locked_index(&the_index, &lock,
COMMIT_LOCK | SKIP_IF_UNCHANGED))
die(_("Unable to write index."));
die(_("could not write index"));
}

static int do_apply_stash(const char *prefix, struct stash_info *info,
Expand All @@ -537,7 +537,7 @@ static int do_apply_stash(const char *prefix, struct stash_info *info,
repo_read_index_preload(the_repository, NULL, 0);
if (repo_refresh_and_write_index(the_repository, REFRESH_QUIET, 0, 0,
NULL, NULL, NULL))
return -1;
return error(_("could not write index"));

if (write_index_as_tree(&c_tree, &the_index, get_index_file(), 0,
NULL))
Expand Down Expand Up @@ -1364,7 +1364,7 @@ static int do_create_stash(const struct pathspec *ps, struct strbuf *stash_msg_b
repo_read_index_preload(the_repository, NULL, 0);
if (repo_refresh_and_write_index(the_repository, REFRESH_QUIET, 0, 0,
NULL, NULL, NULL) < 0) {
ret = -1;
ret = error(_("could not write index"));
goto done;
}

Expand Down Expand Up @@ -1555,7 +1555,7 @@ static int do_push_stash(const struct pathspec *ps, const char *stash_msg, int q

if (repo_refresh_and_write_index(the_repository, REFRESH_QUIET, 0, 0,
NULL, NULL, NULL)) {
ret = -1;
ret = error(_("could not write index"));
goto done;
}

Expand Down
2 changes: 1 addition & 1 deletion builtin/tag.c
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ static int verify_tag(const char *name, const char *ref UNUSED,

static int do_sign(struct strbuf *buffer)
{
return sign_buffer(buffer, buffer, get_signing_key());
return sign_buffer(buffer, buffer, get_signing_key()) ? -1 : 0;
}

static const char tag_template[] =
Expand Down
65 changes: 58 additions & 7 deletions contrib/completion/git-completion.bash
Original file line number Diff line number Diff line change
Expand Up @@ -1483,20 +1483,59 @@ _git_bisect ()
{
__git_has_doubledash && return

local subcommands="start bad good skip reset visualize replay log run"
local subcommand="$(__git_find_on_cmdline "$subcommands")"
__git_find_repo_path

# If a bisection is in progress get the terms being used.
local term_bad term_good
if [ -f "$__git_repo_path"/BISECT_TERMS ]; then
term_bad=$(__git bisect terms --term-bad)
term_good=$(__git bisect terms --term-good)
fi

# We will complete any custom terms, but still always complete the
# more usual bad/new/good/old because git bisect gives a good error
# message if these are given when not in use, and that's better than
# silent refusal to complete if the user is confused.
#
# We want to recognize 'view' but not complete it, because it overlaps
# with 'visualize' too much and is just an alias for it.
#
local completable_subcommands="start bad new $term_bad good old $term_good terms skip reset visualize replay log run help"
local all_subcommands="$completable_subcommands view"

local subcommand="$(__git_find_on_cmdline "$all_subcommands")"

if [ -z "$subcommand" ]; then
__git_find_repo_path
if [ -f "$__git_repo_path"/BISECT_START ]; then
__gitcomp "$subcommands"
__gitcomp "$completable_subcommands"
else
__gitcomp "replay start"
fi
return
fi

case "$subcommand" in
bad|good|reset|skip|start)
start)
case "$cur" in
--*)
__gitcomp "--first-parent --no-checkout --term-new --term-bad --term-old --term-good"
return
;;
*)
__git_complete_refs
;;
esac
;;
terms)
__gitcomp "--term-good --term-old --term-bad --term-new"
return
;;
visualize|view)
__git_complete_log_opts
return
;;
bad|new|"$term_bad"|good|old|"$term_good"|reset|skip)
__git_complete_refs
;;
*)
Expand Down Expand Up @@ -2105,10 +2144,12 @@ __git_diff_merges_opts="off none on first-parent 1 separate m combined c dense-c
__git_log_pretty_formats="oneline short medium full fuller reference email raw format: tformat: mboxrd"
__git_log_date_formats="relative iso8601 iso8601-strict rfc2822 short local default human raw unix auto: format:"

_git_log ()
# Complete porcelain (i.e. not git-rev-list) options and at least some
# option arguments accepted by git-log. Note that this same set of options
# are also accepted by some other git commands besides git-log.
__git_complete_log_opts ()
{
__git_has_doubledash && return
__git_find_repo_path
COMPREPLY=()

local merge=""
if __git_pseudoref_exists MERGE_HEAD; then
Expand Down Expand Up @@ -2204,6 +2245,16 @@ _git_log ()
return
;;
esac
}

_git_log ()
{
__git_has_doubledash && return
__git_find_repo_path

__git_complete_log_opts
[ ${#COMPREPLY[@]} -eq 0 ] || return

__git_complete_revlist
}

Expand Down
2 changes: 1 addition & 1 deletion gpg-interface.c
Original file line number Diff line number Diff line change
Expand Up @@ -1063,7 +1063,7 @@ static int sign_buffer_ssh(struct strbuf *buffer, struct strbuf *signature,
if (strstr(signer_stderr.buf, "usage:"))
error(_("ssh-keygen -Y sign is needed for ssh signing (available in openssh version 8.2p1+)"));

error("%s", signer_stderr.buf);
ret = error("%s", signer_stderr.buf);
goto out;
}

Expand Down
Loading

0 comments on commit e74f1e0

Please sign in to comment.