Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
347 commits
Select commit Hold shift + click to select a range
ad55d14
mingw: allow for longer paths in `parse_interpreter()`
dscho Apr 2, 2021
8eeef6f
compat/vcbuild: document preferred way to build in Visual Studio
dscho May 17, 2021
cc69694
http: optionally send SSL client certificate
pascalmuller Jun 23, 2021
a2fde06
ci: run `contrib/subtree` tests in CI builds
vdye Aug 5, 2021
818e3bd
hash-object: demonstrate a >4GB/LLP64 problem
PhilipOakley Oct 31, 2021
c06f428
object-file.c: use size_t for header lengths
PhilipOakley Nov 12, 2021
0d01208
hash algorithms: use size_t for section lengths
PhilipOakley Nov 12, 2021
9836977
.gitignore: add Visual Studio CMakeSetting.json file
PhilipOakley Apr 24, 2021
557305d
hash-object --stdin: verify that it works with >4GB/LLP64
PhilipOakley Dec 6, 2021
b4d9805
CMakeLists: add default "x64-windows" arch for Visual Studio
PhilipOakley Apr 22, 2021
563c0d6
hash-object: add another >4GB/LLP64 test case
PhilipOakley Dec 6, 2021
ca1adae
CMake: show Win32 and Generator_platform build-option values
PhilipOakley May 10, 2021
52942df
init: do parse _all_ core.* settings early
dscho Sep 8, 2021
8623269
setup: properly use "%(prefix)/" when in WSL
derrickstolee Apr 13, 2022
9405bf4
hash-object: add a >4GB/LLP64 test case using filtered input
PhilipOakley Dec 7, 2021
c79e7d5
compat/mingw.c: do not warn when failing to get owner
derrickstolee Apr 13, 2022
6aaa3bd
mingw: $env:TERM="xterm-256color" for newer OSes
rkitover Apr 12, 2022
7cbf187
winansi: check result and Buffer before using Name
1480c1 May 28, 2022
1097e9b
Add config option `windows.appendAtomically`
sunzhuoshi Jan 15, 2022
bf9ba85
mingw: change core.fsyncObjectFiles = 1 by default
dscho Sep 4, 2017
66f453b
http: optionally load libcurl lazily
dscho May 6, 2023
f830b1e
http: support lazy-loading libcurl also on Windows
dscho May 7, 2023
fd97bab
http: when loading libcurl lazily, allow for multiple SSL backends
dscho May 7, 2023
0a8c063
MinGW: link as terminal server aware
rimrul Jul 10, 2022
1e9c1c3
Fix Windows version resources
Mortein Nov 2, 2022
10884da
status: fix for old-style submodules with commondir
sceptical-coder Oct 28, 2022
63830e4
windows: skip linking `git-<command>` for built-ins
dscho Jan 27, 2023
57654d4
mingw: do load libcurl dynamically by default
dscho May 7, 2023
3b78503
Add a GitHub workflow to verify that Git/Scalar work in Nano Server
dscho Nov 2, 2022
f95f4ba
mingw: suggest `windows.appendAtomically` in more cases
dsl101 Jul 28, 2023
00f22b1
win32: use native ANSI sequence processing, if possible
dscho Nov 22, 2023
6596645
git.rc: include winuser.h
rimrul Dec 2, 2023
95a077f
common-main.c: fflush stdout buffer upon exit
chengzhuo5 Apr 8, 2024
b4295cd
survey: stub in new experimental 'git-survey' command
Apr 29, 2024
7cada41
t5601/t7406(mingw): do run tests with symlink support
dscho Apr 9, 2024
26f28f4
win32: ensure that `localtime_r()` is declared even in i686 builds
dscho May 21, 2024
1cd294f
Fallback to AppData if XDG_CONFIG_HOME is unset
ariellourenco Jul 2, 2024
778b516
run-command: be helpful with Git LFS fails on Windows 7
dscho Jul 4, 2024
5703eb4
revision: create mark_trees_uninteresting_dense()
derrickstolee Sep 6, 2024
0274d9e
ci: work around a problem with HTTP/2 vs libcurl v8.10.0
dscho Sep 24, 2024
6a4a1f1
survey: add command line opts to select references
Apr 29, 2024
ffaf469
survey: start pretty printing data in table form
derrickstolee Sep 1, 2024
c8836a7
survey: add object count summary
derrickstolee Sep 2, 2024
20f25dd
survey: summarize total sizes by object type
derrickstolee Sep 2, 2024
4632f04
survey: show progress during object walk
derrickstolee Sep 2, 2024
7ebf4b3
survey: add ability to track prioritized lists
derrickstolee Sep 2, 2024
f6f250f
survey: add report of "largest" paths
derrickstolee Sep 2, 2024
16cad39
survey: add --top=<N> option and config
derrickstolee Sep 23, 2024
64fbfff
mingw: make sure `errno` is set correctly when socket operations fail
dscho Nov 14, 2019
ba05f2f
survey: clearly note the experimental nature in the output
dscho Jul 1, 2024
88eb4d4
compat/mingw: handle WSA errors in strerror
rimrul Dec 22, 2024
53aa240
compat/mingw: drop outdated comment
rimrul Dec 22, 2024
36eccac
t0301: actually test credential-cache on Windows
rimrul Dec 29, 2024
ec180e4
credential-cache: handle ECONNREFUSED gracefully
rimrul Dec 22, 2024
b345652
max_tree_depth: lower it for clangarm64 on Windows
dscho Apr 15, 2025
3f15959
reftable: do make sure to use custom allocators
dscho Mar 6, 2025
78a62de
check-whitespace: avoid alerts about upstream commits
dscho Jun 3, 2025
b105384
mingw: avoid the comma operator
dscho Jun 5, 2025
d905624
wincred: Avoid memory corruption
elieux Oct 3, 2025
bc3be23
Merge branch 'organize-mingw-includes'
dscho Jun 2, 2025
2f28f22
Merge 'remote-hg-prerequisites' into HEAD
dscho Jun 8, 2018
1ec419b
Merge branch 'drive-prefix'
dscho Jun 8, 2018
976e8fc
Merge branch 'dont-clean-junctions'
dscho Jul 30, 2019
3ad29c2
Merge branch 'msys2-python'
dscho May 31, 2019
8dfb6e5
Merge branch 'mimalloc-v2.2.3'
dscho Sep 8, 2022
bd30cff
Merge pull request #2375 from assarbad/reintroduce-sideband-config
dscho Oct 30, 2019
f27141d
Merge pull request #2449 from dscho/mingw-getcwd-and-symlinks
dscho Jan 3, 2020
ee02a03
Merge pull request #2488 from bmueller84/master
dscho Jan 22, 2020
b551854
Merge pull request #2501 from jeffhostetler/clink-debug-curl
dscho Jan 30, 2020
53f2f3d
Merge pull request #2504 from dscho/access-repo-via-junction
dscho Feb 1, 2020
ff180a0
Merge pull request #2506 from dscho/issue-2283
dscho Feb 11, 2020
7a792de
Merge pull request #2535 from dscho/schannel-revoke-best-effort
dscho Mar 4, 2020
4bff95a
Merge pull request #2618 from dscho/avoid-d/f-conflict-in-vs/master
dscho May 9, 2020
d5bed96
Merge 'add-p-many-files'
dscho Jun 8, 2018
09c1e92
Merge pull request #2714 from lbonanomi/crlf-scissors
dscho Jul 3, 2020
3c07024
Merge pull request #2655 from jglathe/jg/t0014_trace_extra_info
dscho Oct 9, 2020
055b5f5
Merge 'git-gui/js/intent-to-add'
dscho Oct 18, 2020
42a9ac4
Merge pull request #2974 from derrickstolee/maintenance-and-headless
dscho Jan 11, 2021
9e56bbe
cmake: install headless-git. (#4338)
dscho Mar 13, 2023
2b85cab
Merge pull request #2351 from PhilipOakley/vcpkg-tip
dscho Oct 7, 2019
9d6faac
Merge pull request #2915 from dennisameling/windows-arm64-support
dscho Dec 9, 2020
ef56f57
Merge pull request #3327 from dennisameling/fix-host-cpu
dscho Jul 19, 2021
3dbb71e
Merge pull request #3165 from dscho/increase-allowed-length-of-interp…
dscho Apr 3, 2021
784c9d4
Merge pull request #3220 from dscho/there-is-no-vs/master-anymore
dscho May 17, 2021
4cff14b
Merge pull request #3293 from pascalmuller/http-support-automatically…
dscho Jun 24, 2021
33f34b4
Merge pull request #3349 from vdye/feature/ci-subtree-tests
dscho Aug 10, 2021
74555ca
Merge pull request #3306 from PhilipOakley/vs-sln
dscho Oct 12, 2021
f50780d
Merge pull request #3417 from dscho/initialize-core.symlinks-earlier
dscho Oct 13, 2021
991f755
Merge pull request #3533 from PhilipOakley/hashliteral_t
dscho Dec 15, 2021
cf567cf
Merge pull request #3791: Various fixes around `safe.directory`
derrickstolee Apr 13, 2022
115db37
Merge pull request #3751 from rkitover/native-term
dscho Apr 21, 2022
3c3d8e2
Merge pull request #3875 from 1480c1/wine/detect_msys_tty
dscho May 30, 2022
24b3d25
Merge branch 'optionally-dont-append-atomically-on-windows'
dscho Jun 23, 2022
32838cb
Merge branch 'fsync-object-files-always'
dscho Oct 11, 2018
7c7d605
Merge pull request #3942 from rimrul/mingw-tsaware
dscho Jul 27, 2022
400585a
Fix Windows version resources (#4092)
dscho Nov 3, 2022
0e9f0e2
Fix global repository field not being cleared (#4083)
dscho Dec 20, 2022
b30ce45
Skip linking the "dashed" `git-<command>`s for built-ins (#4252)
dscho Jan 31, 2023
13fe41e
Lazy load libcurl, allowing for an SSL/TLS backend-specific libcurl (…
dscho May 15, 2023
d714791
Merge branch 'nano-server'
dscho Aug 7, 2023
2fc329f
Additional error checks for issuing the windows.appendAtomically warn…
dscho Aug 7, 2023
3d88962
win32: use native ANSI sequence processing, if possible (#4700)
dscho Dec 2, 2023
5ff752c
ARM64: Embed manifest properly (#4718)
dscho Dec 7, 2023
983b398
common-main.c: fflush stdout buffer when exit (#4901)
dscho Apr 12, 2024
57bf3c3
Merge branch 'run-t5601-and-t7406-with-symlinks-on-windows-10'
dscho Jul 12, 2024
77132bd
Merge branch 'Fix-i686-build-with-GCC-v14'
dscho Jul 12, 2024
f1ec5ed
Merge branch 'Fallback-to-AppData-if-XDG-CONFIG-HOME-is-unset'
dscho Jul 12, 2024
d56b355
Merge branch 'run-command-be-helpful-when-Git-LFS-fails-on-Windows-7'
dscho Jul 12, 2024
bed5bf6
pack-objects: create new name-hash algorithm (#5157)
dscho Sep 24, 2024
5259e9b
Add path walk API and its use in 'git pack-objects' (#5171)
derrickstolee Sep 25, 2024
ce4e3dd
Add experimental 'git survey' builtin (#5174)
dscho Sep 26, 2024
bd12e69
credential-cache: handle ECONNREFUSED gracefully (#5329)
dscho Jan 1, 2025
cb1c4c3
clangarm64: let the tests pass! (#5586)
dscho Apr 21, 2025
f6e28f5
Merge branch 'reftable-vs-custom-allocators'
dscho Jun 2, 2025
028a2bb
Merge branch 'check-whitespace-only-downstream'
dscho Jun 3, 2025
6d1559a
mingw: avoid the comma operator (#5660)
dscho Jun 5, 2025
fb26366
wincred: Avoid memory corruption (#5856)
dscho Oct 6, 2025
1f05eaa
Merge branch 'ready-for-upstream'
dscho Oct 11, 2018
5760c6e
git-gui--askyesno: fix funny text wrapping
dscho Sep 20, 2017
1ac75e7
git-gui: provide question helper for retry fallback on Windows
hvoigt Feb 21, 2010
aee4f8f
git-gui--askyesno: allow overriding the window title
dscho Sep 20, 2017
f04fe9b
git gui: set GIT_ASKPASS=git-gui--askpass if not set yet
dscho Jul 23, 2010
afe8b8a
git-gui--askyesno (mingw): use Git for Windows' icon, if available
dscho Sep 20, 2017
fcf0398
Merge 'git-gui' into HEAD
dscho Jun 7, 2018
c5da66b
Merge branch 'git-gui-askyesno'
dscho Jun 8, 2018
afddb28
Win32: make FILETIME conversion functions public
kblees Jul 6, 2013
542d608
Win32: dirent.c: Move opendir down
kblees Sep 8, 2013
e019d5a
mingw: make the dirent implementation pluggable
kblees Sep 8, 2013
75a4afc
Win32: make the lstat implementation pluggable
kblees Sep 8, 2013
02a1afe
mingw: add infrastructure for read-only file system level caches
kblees Sep 8, 2013
e5267cb
mingw: add a cache below mingw's lstat and dirent implementations
kblees Oct 1, 2013
7fa25b2
fscache: load directories only once
kblees Jun 24, 2014
271aa38
fscache: add key for GIT_TRACE_FSCACHE
jeffhostetler Jan 24, 2017
2ed1272
fscache: remember not-found directories
jeffhostetler Dec 13, 2016
6a6f958
fscache: add a test for the dir-not-found optimization
dscho Jan 25, 2017
d6e1c12
add: use preload-index and fscache for performance
jeffhostetler Nov 22, 2016
1c71ed0
dir.c: make add_excludes aware of fscache during status
jeffhostetler Nov 1, 2017
07a12fa
fscache: make fscache_enabled() public
jeffhostetler Dec 20, 2017
f049733
dir.c: regression fix for add_excludes with fscache
jeffhostetler Dec 20, 2017
d1d7ebe
fetch-pack.c: enable fscache for stats under .git/objects
Nov 22, 2017
3dc226f
checkout.c: enable fscache for checkout again
Jan 30, 2018
8aeff6f
Enable the filesystem cache (fscache) in refresh_index().
benpeart Sep 7, 2018
7c096a4
fscache: use FindFirstFileExW to avoid retrieving the short name
benpeart Oct 23, 2018
280ec8d
fscache: add GIT_TEST_FSCACHE support
benpeart Oct 4, 2018
b5888fb
fscache: add fscache hit statistics
benpeart Sep 25, 2018
232a0c2
mem_pool: add GIT_TRACE_MEMPOOL support
benpeart Oct 4, 2018
65322b5
fscache: fscache takes an initial size
benpeart Nov 2, 2018
b1f344b
fscache: update fscache to be thread specific instead of global
benpeart Oct 4, 2018
b823714
fscache: teach fscache to use mempool
benpeart Nov 2, 2018
6799656
fscache: make fscache_enable() thread safe
benpeart Nov 16, 2018
48a0f62
unpack-trees: enable fscache for sparse-checkout
derrickstolee Jun 12, 2019
3e0848c
fscache: remember the reparse tag for each entry
dscho Dec 11, 2018
97a16c9
status: disable and free fscache at the end of the status command
benpeart Nov 1, 2018
8ee062d
fscache: teach fscache to use NtQueryDirectoryFile
benpeart Nov 15, 2018
7c6b186
Merge branch 'fscache'
dscho Nov 15, 2018
246a4e3
fscache: implement an FSCache-aware is_mount_point()
dscho Dec 11, 2018
14784ca
Merge pull request #1909 from benpeart/free-fscache-after-status-gfw
dscho Nov 5, 2018
529d28c
clean: make use of FSCache
dscho Dec 11, 2018
8f617fb
Merge remote-tracking branch 'benpeart/fscache-per-thread-gfw'
dscho Nov 16, 2018
d116c79
Merge branch 'dont-clean-junctions-fscache'
dscho Jul 23, 2019
e683b9a
pack-objects (mingw): demonstrate a segmentation fault with large deltas
vangdfang Jan 9, 2014
4703d0e
mingw: support long paths
kblees Jul 28, 2015
6547977
Win32: fix 'lstat("dir/")' with long paths
kblees Jul 4, 2014
bc34cd2
win32(long path support): leave drive-less absolute paths intact
dscho Sep 6, 2023
341494f
compat/fsmonitor/fsm-*-win32: support long paths
jeffhostetler Mar 25, 2022
c3eb596
clean: suggest using `core.longPaths` if paths are too long to remove
mathstuf Apr 22, 2022
1f4d3a6
strbuf_readlink: don't call readlink twice if hint is the exact link …
kblees May 11, 2015
1b3ab9a
strbuf_readlink: support link targets that exceed PATH_MAX
kblees May 11, 2015
e0ea4c2
lockfile.c: use is_dir_sep() instead of hardcoded '/' checks
kblees May 11, 2015
42912d4
Win32: don't call GetFileAttributes twice in mingw_lstat()
kblees May 12, 2015
1f99439
Win32: implement stat() with symlink support
kblees May 15, 2015
5f4a6a4
Win32: remove separate do_lstat() function
kblees May 11, 2015
f84ce7f
Win32: let mingw_lstat() error early upon problems with reparse points
kblees May 23, 2015
6772d60
mingw: Support `git_terminal_prompt` with more terminals
kblees Mar 19, 2015
e5e4ea9
mingw: teach fscache and dirent about symlinks
kblees Jan 10, 2017
4a7fae8
compat/terminal.c: only use the Windows console if bash 'read -r' fails
kblees May 9, 2015
51b009e
Win32: lstat(): return adequate stat.st_size for symlinks
kblees May 15, 2015
9f9ce12
mingw (git_terminal_prompt): do fall back to CONIN$/CONOUT$ method
dscho Feb 23, 2018
d6e6e29
Win32: factor out retry logic
kblees May 19, 2015
94655c7
Win32: change default of 'core.symlinks' to false
kblees May 23, 2015
79c8553
Win32: add symlink-specific error codes
kblees May 15, 2015
98c4afe
Win32: mingw_unlink: support symlinks to directories
kblees May 23, 2015
457dc39
Win32: mingw_rename: support renaming symlinks
kblees May 19, 2015
ade12d3
Win32: mingw_chdir: change to symlink-resolved directory
kblees May 23, 2015
5ae7d29
Win32: implement readlink()
kblees May 23, 2015
154ad49
mingw: lstat: compute correct size for symlinks
billziss-gh May 28, 2020
459c1cc
Win32: implement basic symlink() functionality (file symlinks only)
kblees May 23, 2015
4f75085
Win32: symlink: add support for symlinks to directories
kblees May 23, 2015
4ab296f
mingw: try to create symlinks without elevated permissions
dscho May 30, 2017
8ac5c58
mingw: emulate stat() a little more faithfully
dscho Mar 2, 2020
340b04a
mingw: introduce code to detect whether we're inside a Windows container
ZCube Apr 23, 2018
1e51c2e
Win32: symlink: move phantom symlink creation to a separate function
piscisaureus Oct 26, 2018
854bdc6
mingw: when running in a Windows container, try to rename() harder
ZCube Apr 23, 2018
03f9e72
Introduce helper to create symlinks that knows about index_state
dscho Feb 11, 2019
03cf6a6
mingw: move the file_attr_to_st_mode() function definition
ZCube Apr 23, 2018
c68b797
mingw: allow to specify the symlink type in .gitattributes
piscisaureus Oct 26, 2018
ccdf9bf
mingw: special-case index entries for symlinks with buggy size
dscho Jun 4, 2020
dc350a1
mingw: Windows Docker volumes are *not* symbolic links
dscho Apr 23, 2018
e7ab56a
mingw: work around rename() failing on a read-only file
dsl101 Jul 28, 2023
a945010
mingw: explicitly specify with which cmd to prefix the cmdline
dscho Jul 20, 2017
bfd9ff9
mingw: when path_lookup() failed, try BusyBox
dscho Jul 20, 2017
89ddc23
test-tool: learn to act as a drop-in replacement for `iconv`
dscho Jul 20, 2017
ee5fc68
tests(mingw): if `iconv` is unavailable, use `test-helper --iconv`
dscho Jul 20, 2017
03da4d6
gitattributes: mark .png files as binary
dscho Oct 11, 2018
697cbf4
tests: move test PNGs into t/lib-diff/
dscho Aug 5, 2017
b396c21
tests: only override sort & find if there are usable ones in /usr/bin/
dscho Jul 17, 2017
49eb59d
tests: use the correct path separator with BusyBox
dscho Nov 19, 2018
74eaa8c
Win32: symlink: add test for `symlink` attribute
piscisaureus Oct 26, 2018
5c9b85f
mingw: only use Bash-ism `builtin pwd -W` when available
dscho Jun 29, 2017
51fe8dc
tests (mingw): remove Bash-specific pwd option
dscho Jun 30, 2017
fc3910a
test-lib: add BUSYBOX prerequisite
dscho Jul 19, 2017
d0ae914
t5003: use binary file from t/lib-diff/
dscho Aug 5, 2017
1fab782
t5532: workaround for BusyBox on Windows
dscho Jul 21, 2017
aa1ea25
t5605: special-case hardlink test for BusyBox-w32
dscho Jul 21, 2017
0185f56
t5813: allow for $PWD to be a Windows path
dscho Jul 5, 2017
6bf3a28
t9200: skip tests when $PWD contains a colon
dscho Jul 7, 2017
a7c03a1
mingw: add a Makefile target to copy test artifacts
dscho Jul 19, 2017
c18c474
mingw: kill child processes in a gentler way
dscho May 17, 2017
561554b
mingw: optionally enable wsl compability file mode bits
swigger Jun 7, 2023
5efb26b
mingw: really handle SIGINT
dscho Apr 22, 2018
3c0040e
mingw: do not call xutftowcs_path in mingw_mktemp
neerajsi-msft Oct 27, 2021
c2d851e
Add a GitHub workflow to monitor component updates
dscho Sep 29, 2020
3781091
Partially un-revert "editor: save and reset terminal after calling ED…
dscho Nov 25, 2021
b846014
reset: reinstate support for the deprecated --stdin option
dscho Dec 10, 2019
bc05c51
fsmonitor: reintroduce core.useBuiltinFSMonitor
vdye Apr 4, 2022
1559b38
Describe Git for Windows' architecture [no ci]
dscho Feb 13, 2023
8f60a54
Modify the Code of Conduct for Git for Windows
dscho Oct 11, 2019
68aafe1
CONTRIBUTING.md: add guide for first-time contributors
derrickstolee Mar 1, 2018
0c84a1d
README.md: Add a Windows-specific preamble
dscho Jan 10, 2014
2078f89
Add an issue template
shiftkey Feb 18, 2016
b10a6f4
Modify the GitHub Pull Request template (to reflect Git for Windows)
Dec 22, 2017
e93b2bc
dependabot: help keeping GitHub Actions versions up to date
dscho Feb 6, 2024
736564b
SECURITY.md: document Git for Windows' policies
dscho Aug 23, 2019
31a167a
Merge branch 'gitk-and-git-gui-patches'
dscho Oct 11, 2018
8fdc176
Merge branch 'long-paths'
dscho Nov 15, 2018
6649e78
Merge branch 'msys2'
dscho Nov 15, 2018
0430167
Merge branch 'kblees/kb/symlinks'
dscho Nov 15, 2018
ce046c6
Merge 'docker-volumes-are-no-symlinks'
dscho Oct 12, 2018
e51d4b5
mingw: try resetting the read-only bit if rename fails (#4527)
dscho Aug 7, 2023
25003fc
Merge pull request #1897 from piscisaureus/symlink-attr
dscho Oct 31, 2018
baf41fb
Merge branch 'busybox-w32'
dscho Feb 7, 2019
5061b4d
Merge branch 'wsl-file-mode-bits'
dscho Aug 7, 2023
cb92c44
Merge pull request #1170 from dscho/mingw-kill-process
dscho Oct 11, 2018
5667532
Merge pull request #3492 from dscho/ns/batched-fsync
vdye Oct 28, 2021
01e5f46
Merge branch 'un-revert-editor-save-and-reset'
dscho Jan 15, 2022
d720867
Merge branch 'phase-out-reset-stdin'
dscho Jun 8, 2018
a76804e
Merge branch 'deprecate-core.useBuiltinFSMonitor'
dscho Jan 24, 2023
005de4a
Merge pull request #2837 from dscho/monitor-component-updates
dscho Oct 7, 2020
2755072
Merge 'readme' into HEAD
dscho Jun 7, 2018
bd2ecba
diff: stop output garbled message in dry run mode
brandb97 Oct 17, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ build:mingw64:
variables:
NO_PERL: 1
before_script:
- Set-MpPreference -DisableRealtimeMonitoring $true
- ./ci/install-sdk.ps1 -directory "git-sdk"
script:
- git-sdk/usr/bin/bash.exe -l -c 'ci/make-test-artifacts.sh artifacts'
Expand All @@ -135,6 +136,7 @@ test:mingw64:
- job: "build:mingw64"
artifacts: true
before_script:
- Set-MpPreference -DisableRealtimeMonitoring $true
- git-sdk/usr/bin/bash.exe -l -c 'tar xf artifacts/artifacts.tar.gz'
- New-Item -Path .git/info -ItemType Directory
- New-Item .git/info/exclude -ItemType File -Value "/git-sdk"
Expand All @@ -148,6 +150,7 @@ test:mingw64:
tags:
- saas-windows-medium-amd64
before_script:
- Set-MpPreference -DisableRealtimeMonitoring $true
- choco install -y git meson ninja openssl
- Import-Module $env:ChocolateyInstall\helpers\chocolateyProfile.psm1
- refreshenv
Expand Down
45 changes: 45 additions & 0 deletions Documentation/RelNotes/2.51.2.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
Git 2.51.2 Release Notes
========================

In addition to fixes for an unfortunate regression introduced in Git
2.51.1 that caused "git diff --quiet -w" to be not so quiet when there
are additions, deletions and conflicts, this maintenance release merges
more fixes/improvements that have landed on the master front, primarily
to make the CI part of the system a bit more robust.


Fixes since Git 2.51.1
----------------------

* Recently we attempted to improve "git diff -w --quiet" and friends
to handle cases where patch output would be suppressed, but it
introduced a bug that emits unnecessary output, which has been
corrected.

* The code to squelch output from "git diff -w --name-status"
etc. for paths that "git diff -w -p" would have stayed silent
leaked output from dry-run patch generation, which has been
corrected.

* Windows "real-time monitoring" interferes with the execution of
tests and affects negatively in both correctness and performance,
which has been disabled in Gitlab CI.

* An earlier addition to "git diff --no-index A B" to limit the
output with pathspec after the two directories misbehaved when
these directories were given with a trailing slash, which has been
corrected.

* The "--short" option of "git status" that meant output for humans
and "-z" option to show NUL delimited output format did not mix
well, and colored some but not all things. The command has been
updated to color all elements consistently in such a case.

* Unicode width table update.

* Recent OpenSSH creates the Unix domain socket to communicate with
ssh-agent under $HOME instead of /tmp, which causes our test to
fail doe to overly long pathname in our test environment, which has
been worked around by using "ssh-agent -T".

Also contains various documentation updates, code cleanups and minor fixups.
4 changes: 2 additions & 2 deletions Documentation/config/core.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,8 @@ The built-in file system monitor is currently available only on a
limited set of supported platforms. Currently, this includes Windows
and MacOS.
+
Otherwise, this variable contains the pathname of the "fsmonitor"
hook command.
Otherwise, this variable contains the pathname of the "fsmonitor"
hook command.
+
This hook command is used to identify all files that may have changed
since the requested date/time. This information is used to speed up
Expand Down
18 changes: 9 additions & 9 deletions Documentation/git-config.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -117,15 +117,15 @@ OPTIONS

--comment <message>::
Append a comment at the end of new or modified lines.

If _<message>_ begins with one or more whitespaces followed
by "#", it is used as-is. If it begins with "#", a space is
prepended before it is used. Otherwise, a string " # " (a
space followed by a hash followed by a space) is prepended
to it. And the resulting string is placed immediately after
the value defined for the variable. The _<message>_ must
not contain linefeed characters (no multi-line comments are
permitted).
+
If _<message>_ begins with one or more whitespaces followed
by "#", it is used as-is. If it begins with "#", a space is
prepended before it is used. Otherwise, a string " # " (a
space followed by a hash followed by a space) is prepended
to it. And the resulting string is placed immediately after
the value defined for the variable. The _<message>_ must
not contain linefeed characters (no multi-line comments are
permitted).

--all::
With `get`, return all values for a multi-valued key.
Expand Down
14 changes: 7 additions & 7 deletions Documentation/git-rev-parse.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -174,13 +174,13 @@ for another option.

Allow oids to be input from any object format that the current
repository supports.

Specifying "sha1" translates if necessary and returns a sha1 oid.

Specifying "sha256" translates if necessary and returns a sha256 oid.

Specifying "storage" translates if necessary and returns an oid in
encoded in the storage hash algorithm.
+
Specifying "sha1" translates if necessary and returns a sha1 oid.
+
Specifying "sha256" translates if necessary and returns a sha256 oid.
+
Specifying "storage" translates if necessary and returns an oid in
encoded in the storage hash algorithm.

Options for Objects
~~~~~~~~~~~~~~~~~~~
Expand Down
4 changes: 2 additions & 2 deletions Documentation/git-shortlog.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ OPTIONS
describe each commit. '<format>' can be any string accepted
by the `--format` option of 'git log', such as '* [%h] %s'.
(See the "PRETTY FORMATS" section of linkgit:git-log[1].)

Each pretty-printed commit will be rewrapped before it is shown.
+
Each pretty-printed commit will be rewrapped before it is shown.

--date=<format>::
Show dates formatted according to the given date string. (See
Expand Down
72 changes: 44 additions & 28 deletions Documentation/git-sparse-checkout.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -295,34 +295,50 @@ patterns in non-cone mode has a number of shortcomings:
inconsistent.

* It has edge cases where the "right" behavior is unclear. Two examples:

First, two users are in a subdirectory, and the first runs
git sparse-checkout set '/toplevel-dir/*.c'
while the second runs
git sparse-checkout set relative-dir
Should those arguments be transliterated into
current/subdirectory/toplevel-dir/*.c
and
current/subdirectory/relative-dir
before inserting into the sparse-checkout file? The user who typed
the first command is probably aware that arguments to set/add are
supposed to be patterns in non-cone mode, and probably would not be
happy with such a transliteration. However, many gitignore-style
patterns are just paths, which might be what the user who typed the
second command was thinking, and they'd be upset if their argument
wasn't transliterated.

Second, what should bash-completion complete on for set/add commands
for non-cone users? If it suggests paths, is it exacerbating the
problem above? Also, if it suggests paths, what if the user has a
file or directory that begins with either a '!' or '#' or has a '*',
'\', '?', '[', or ']' in its name? And if it suggests paths, will
it complete "/pro" to "/proc" (in the root filesystem) rather than to
"/progress.txt" in the current directory? (Note that users are
likely to want to start paths with a leading '/' in non-cone mode,
for the same reason that .gitignore files often have one.)
Completing on files or directories might give nasty surprises in
all these cases.
+
First, two users are in a subdirectory, and the first runs
+
----
git sparse-checkout set '/toplevel-dir/*.c'
----
+
while the second runs
+
----
git sparse-checkout set relative-dir
----
+
Should those arguments be transliterated into
+
----
current/subdirectory/toplevel-dir/*.c
----
+
and
+
----
current/subdirectory/relative-dir
----
+
before inserting into the sparse-checkout file? The user who typed
the first command is probably aware that arguments to set/add are
supposed to be patterns in non-cone mode, and probably would not be
happy with such a transliteration. However, many gitignore-style
patterns are just paths, which might be what the user who typed the
second command was thinking, and they'd be upset if their argument
wasn't transliterated.
+
Second, what should bash-completion complete on for set/add commands
for non-cone users? If it suggests paths, is it exacerbating the
problem above? Also, if it suggests paths, what if the user has a
file or directory that begins with either a '!' or '#' or has a '*',
'\', '?', '[', or ']' in its name? And if it suggests paths, will
it complete "/pro" to "/proc" (in the root filesystem) rather than to
"/progress.txt" in the current directory? (Note that users are
likely to want to start paths with a leading '/' in non-cone mode,
for the same reason that .gitignore files often have one.)
Completing on files or directories might give nasty surprises in
all these cases.

* The excessive flexibility made other extensions essentially
impractical. `--sparse-index` is likely impossible in non-cone
Expand Down
2 changes: 1 addition & 1 deletion GIT-VERSION-GEN
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/sh

DEF_VER=v2.51.1
DEF_VER=v2.51.2

LF='
'
Expand Down
2 changes: 1 addition & 1 deletion RelNotes
26 changes: 23 additions & 3 deletions diff.c
Original file line number Diff line number Diff line change
Expand Up @@ -6817,18 +6817,38 @@ void diff_flush(struct diff_options *options)
DIFF_FORMAT_NAME |
DIFF_FORMAT_NAME_STATUS |
DIFF_FORMAT_CHECKDIFF)) {
/*
* make sure diff_Flush_patch_quietly() to be silent.
*/
FILE *dev_null = NULL;
int saved_color_moved = options->color_moved;

if (options->flags.diff_from_contents) {
dev_null = xfopen("/dev/null", "w");
options->color_moved = 0;
}
for (i = 0; i < q->nr; i++) {
struct diff_filepair *p = q->queue[i];

if (!check_pair_status(p))
continue;

if (options->flags.diff_from_contents &&
!diff_flush_patch_quietly(p, options))
continue;
if (options->flags.diff_from_contents) {
FILE *saved_file = options->file;
int found_changes;

options->file = dev_null;
found_changes = diff_flush_patch_quietly(p, options);
options->file = saved_file;
if (!found_changes)
continue;
}
flush_one_pair(p, options);
}
if (options->flags.diff_from_contents) {
fclose(dev_null);
options->color_moved = saved_color_moved;
}
separator++;
}

Expand Down
34 changes: 17 additions & 17 deletions t/t2401-worktree-prune.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ test_expect_success 'prune files inside $GIT_DIR/worktrees' '
Removing worktrees/abc: not a valid directory
EOF
test_cmp expect actual &&
! test -f .git/worktrees/abc &&
! test -d .git/worktrees
test_path_is_missing .git/worktrees/abc &&
test_path_is_missing .git/worktrees
'

test_expect_success 'prune directories without gitdir' '
Expand All @@ -36,8 +36,8 @@ Removing worktrees/def: gitdir file does not exist
EOF
git worktree prune --verbose 2>actual &&
test_cmp expect actual &&
! test -d .git/worktrees/def &&
! test -d .git/worktrees
test_path_is_missing .git/worktrees/def &&
test_path_is_missing .git/worktrees
'

test_expect_success SANITY 'prune directories with unreadable gitdir' '
Expand All @@ -47,8 +47,8 @@ test_expect_success SANITY 'prune directories with unreadable gitdir' '
chmod u-r .git/worktrees/def/gitdir &&
git worktree prune --verbose 2>actual &&
test_grep "Removing worktrees/def: unable to read gitdir file" actual &&
! test -d .git/worktrees/def &&
! test -d .git/worktrees
test_path_is_missing .git/worktrees/def &&
test_path_is_missing .git/worktrees
'

test_expect_success 'prune directories with invalid gitdir' '
Expand All @@ -57,8 +57,8 @@ test_expect_success 'prune directories with invalid gitdir' '
: >.git/worktrees/def/gitdir &&
git worktree prune --verbose 2>actual &&
test_grep "Removing worktrees/def: invalid gitdir file" actual &&
! test -d .git/worktrees/def &&
! test -d .git/worktrees
test_path_is_missing .git/worktrees/def &&
test_path_is_missing .git/worktrees
'

test_expect_success 'prune directories with gitdir pointing to nowhere' '
Expand All @@ -67,32 +67,32 @@ test_expect_success 'prune directories with gitdir pointing to nowhere' '
echo "$(pwd)"/nowhere >.git/worktrees/def/gitdir &&
git worktree prune --verbose 2>actual &&
test_grep "Removing worktrees/def: gitdir file points to non-existent location" actual &&
! test -d .git/worktrees/def &&
! test -d .git/worktrees
test_path_is_missing .git/worktrees/def &&
test_path_is_missing .git/worktrees
'

test_expect_success 'not prune locked checkout' '
test_when_finished rm -r .git/worktrees &&
mkdir -p .git/worktrees/ghi &&
: >.git/worktrees/ghi/locked &&
git worktree prune &&
test -d .git/worktrees/ghi
test_path_is_dir .git/worktrees/ghi
'

test_expect_success 'not prune recent checkouts' '
test_when_finished rm -r .git/worktrees &&
git worktree add jlm HEAD &&
test -d .git/worktrees/jlm &&
test_path_is_dir .git/worktrees/jlm &&
rm -rf jlm &&
git worktree prune --verbose --expire=2.days.ago &&
test -d .git/worktrees/jlm
test_path_is_dir .git/worktrees/jlm
'

test_expect_success 'not prune proper checkouts' '
test_when_finished rm -r .git/worktrees &&
git worktree add --detach "$PWD/nop" main &&
git worktree prune &&
test -d .git/worktrees/nop
test_path_is_dir .git/worktrees/nop
'

test_expect_success 'prune duplicate (linked/linked)' '
Expand All @@ -103,8 +103,8 @@ test_expect_success 'prune duplicate (linked/linked)' '
mv .git/worktrees/w2/gitdir.new .git/worktrees/w2/gitdir &&
git worktree prune --verbose 2>actual &&
test_grep "duplicate entry" actual &&
test -d .git/worktrees/w1 &&
! test -d .git/worktrees/w2
test_path_is_dir .git/worktrees/w1 &&
test_path_is_missing .git/worktrees/w2
'

test_expect_success 'prune duplicate (main/linked)' '
Expand All @@ -116,7 +116,7 @@ test_expect_success 'prune duplicate (main/linked)' '
mv repo wt &&
git -C wt worktree prune --verbose 2>actual &&
test_grep "duplicate entry" actual &&
! test -d .git/worktrees/wt
test_path_is_missing .git/worktrees/wt
'

test_expect_success 'not prune proper worktrees inside linked worktree with relative paths' '
Expand Down
11 changes: 11 additions & 0 deletions t/t7508-status.sh
Original file line number Diff line number Diff line change
Expand Up @@ -717,6 +717,17 @@ test_expect_success TTY 'status -s with color.status' '

'

test_expect_success TTY 'status -s keeps colors with -z' '
test_when_finished "rm -f output.*" &&
test_terminal git status -s -z >output.raw &&
# convert back to newlines to avoid portability issues with
# test_decode_color and test_cmp, and to let us use the same expected
# output as earlier tests
tr "\0" "\n" <output.raw >output.nl &&
test_decode_color <output.nl >output &&
test_cmp expect output
'

cat >expect <<\EOF
## <YELLOW>main<RESET>...<CYAN>upstream<RESET> [ahead <YELLOW>1<RESET>, behind <CYAN>2<RESET>]
<RED>M<RESET> dir1/modified
Expand Down
Loading
Loading