Skip to content

Rebase onto v2.24.0-rc1 #2369

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

Merged
merged 320 commits into from
Oct 24, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
320 commits
Select commit Hold shift + click to select a range
e143aee
git add -p: use non-zero exit code when the diff generation failed
dscho Mar 23, 2019
c61fd39
built-in add -i: implement the `help` command
slavicaDj Feb 14, 2019
9d67667
built-in add -i: offer the `quit` command
dscho Oct 18, 2019
045b603
built-in add -i: start implementing the `patch` functionality in C
dscho Mar 11, 2019
dc527fc
built-in add -i: wire up the new C code for the `patch` command
dscho Mar 12, 2019
5e38281
built-in add -p: show colored hunks by default
dscho Mar 12, 2019
9a04584
built-in add -p: adjust hunk headers as needed
dscho Mar 21, 2019
8b92313
built-in add -p: color the prompt and the help text
dscho Mar 12, 2019
3bd2a34
built-in add -p: offer a helpful error message when hunk navigation f…
dscho Mar 17, 2019
f04a8f6
built-in add -p: support multi-file diffs
dscho Mar 15, 2019
67e83cc
built-in add -p: handle deleted empty files
dscho Mar 15, 2019
05b83d2
built-in app -p: allow selecting a mode change as a "hunk"
dscho Mar 15, 2019
5abd898
built-in add -p: show different prompts for mode changes and deletions
dscho Mar 23, 2019
be10e16
apply --allow-overlap: fix a corner case
dscho Mar 20, 2019
7be787e
built-in add -p: implement the hunk splitting feature
dscho Mar 17, 2019
3607028
built-in add -p: coalesce hunks after splitting them
dscho Mar 19, 2019
53c07bb
built-in add -p: implement hunk editing
dscho Mar 19, 2019
552bb8b
built-in add -p: implement the 'g' ("goto") command
dscho Mar 21, 2019
9e7dbf0
built-in add -p: implement the '/' ("search regex") command
dscho Mar 21, 2019
3bb0611
built-in add -p: implement the 'q' ("quit") command
dscho Mar 22, 2019
2242f9d
built-in add -p: only show the applicable parts of the help text
dscho Mar 24, 2019
e23e650
built-in add -p: prepare for patch modes other than "stage"
dscho Mar 23, 2019
e1d694c
built-in add -p: implement the "stash" and "reset" patch modes
dscho Mar 23, 2019
894b034
legacy stash -p: respect the add.interactive.usebuiltin setting
dscho Mar 24, 2019
4ef10b5
built-in add -p: support interactive.diffFilter
dscho Mar 12, 2019
22e7e91
built-in stash: use the built-in `git add -p` if so configured
dscho Apr 4, 2019
d8c6284
built-in add -p: handle diff.algorithm
dscho Mar 23, 2019
4b788c2
built-in add -p: implement the "checkout" patch modes
dscho Mar 23, 2019
6f325a6
terminal: make the code of disable_echo() reusable
dscho Apr 4, 2019
338dfc9
built-in add -p: implement the "worktree" patch modes
dscho Mar 23, 2019
5f6f4b0
terminal: accommodate Git for Windows' default terminal
dscho Apr 4, 2019
a0272d8
built-in add -p: show helpful hint when nothing can be staged
dscho Mar 24, 2019
c4bed75
commit --interactive: make it work with the built-in `add -i`
dscho Mar 29, 2019
7d3a449
terminal: add a new function to read a single keystroke
dscho Mar 26, 2019
aac1b23
built-in add -p: respect the `interactive.singlekey` config setting
dscho Mar 26, 2019
228335d
built-in add -p: handle Escape sequences in interactive.singlekey mode
dscho Mar 27, 2019
383b435
built-in add -p: handle Escape sequences more efficiently
dscho Mar 27, 2019
ee9721b
t3904: fix incorrect demonstration of a bug
dscho Apr 6, 2019
fbff4f0
Merge branch 'add-i-in-c-status-and-help'
dscho Mar 28, 2019
96e8aaa
ci: include the built-in `git add -i` in the `linux-gcc` job
dscho Mar 28, 2019
5565b7e
stash -p: (partially) fix bug concerning split hunks
dscho Apr 6, 2019
7ede43a
Merge branch 'add-i-in-c-all-except-patch'
dscho Mar 28, 2019
6095d39
Merge branch 'add-i-fixes'
dscho Mar 28, 2019
090056b
Merge branch 'add-p-in-c'
dscho Mar 28, 2019
ca5107d
Merge branch 'other-command-p-in-c'
dscho Mar 28, 2019
13d83df
Merge branch 'add-p-in-c-config-settings'
dscho Mar 28, 2019
c720b3a
gitk: prevent overly long command lines
dscho Apr 25, 2019
61be1c9
Merge branch 'stash-p-corner-case'
dscho May 8, 2019
b5e557b
mingw: change core.fsyncObjectFiles = 1 by default
dscho Sep 4, 2017
3d0457c
gitk: Escape file paths before piping to git log
gix Aug 19, 2019
38eda55
t9001, t9116: avoid pipes
dscho Jan 11, 2017
006213a
mingw: explicitly `fflush` stdout
Apr 16, 2015
a0ba1cc
clean: do not traverse mount points
dscho Dec 7, 2018
11c0c9c
mingw: make is_hidden tests in t0001/t5611 more robust
dscho Feb 21, 2017
f840dc1
Help debugging with MSys2 by optionally executing bash with strace
dscho Feb 20, 2015
8ee1c48
clean: remove mount points when possible
dscho Dec 11, 2018
2274e10
mingw: cope with the Isilon network file system
naatje80 Jul 4, 2019
17285c8
config.mak.uname: PCRE1 cleanup
carenas Aug 31, 2019
de2e4e3
rebase -r: let `label` generate safer labels
ROGERSM94 Aug 29, 2019
abc8677
mingw: demonstrate that all file handles are inherited by child proce…
dscho Jan 26, 2018
ef8714e
mingw: work around incorrect standard handles
dscho Feb 7, 2018
6f4c061
vcpkg_install: detect lack of Git
PhilipOakley Oct 6, 2019
1380508
mingw: spawned processes need to inherit only standard handles
dscho Jan 26, 2018
5897c0d
Merge branch 'reset-stdin'
dscho Jun 8, 2018
589dcb1
vcpkg_install: add comment regarding slow network connections
PhilipOakley Oct 6, 2019
91681f7
mingw: move Git for Windows' system config where users expect it
dscho Oct 6, 2019
ea9db60
mingw: include the Python parts in the build
dscho Feb 16, 2015
f915a5b
mingw: restrict file handle inheritance only on Windows 7 and later
dscho May 31, 2019
f90a54b
Merge 'remote-hg-prerequisites' into HEAD
dscho Jun 8, 2018
62824d8
Merge pull request #996 from jeffhostetler/jeffhostetler/register_ren…
dscho Jun 8, 2018
eddb44f
Merge branch 'drive-prefix'
dscho Jun 8, 2018
5a834d4
Merge branch 'test-unc-fetch'
dscho Oct 11, 2018
49bc151
Merge branch 'mingw-expand-absolute-user-path'
dscho Oct 12, 2018
598fdee
Merge pull request #1915 from dscho/open-in-gdb
dscho Nov 7, 2018
f52f5e3
Merge branch 'dont-spawn-gzip-in-archive'
dscho Feb 21, 2019
500f01c
Merge remote-tracking branch 'dscho/add-p' into add-p-g4w
dscho Apr 3, 2019
bb6df76
Merge branch 'fsync-object-files-always'
dscho Oct 11, 2018
3b5bd6d
Merge pull request #2170 from dscho/gitk-long-cmdline
dscho Apr 26, 2019
8d9856a
Merge branch 'avoid-pipes-in-svn-tests'
dscho May 31, 2019
c4c7843
Merge branch 'fflush-in-git-clean'
dscho May 31, 2019
2a8813f
Merge branch 'robustify-is-hidden-tests'
dscho May 31, 2019
7dc339a
Merge branch 'msys2-strace'
dscho May 31, 2019
88cfad5
Merge branch 'dont-clean-junctions'
dscho Jul 30, 2019
0e89afc
Merge branch 'work-around-isilon'
dscho Jul 8, 2019
5af10a8
Merge pull request #2316 from carenas/win-pcre1-cleanup
dscho Sep 2, 2019
64512ea
Merge pull request #2315 from ROGERSM94/fix-rebase
dscho Sep 2, 2019
8087bc8
Merge pull request #2351 from PhilipOakley/vcpkg-tip
dscho Oct 7, 2019
3cebc8e
Merge branch 'move-gfw-system-config-to-top-level'
dscho Oct 18, 2019
2c2aaa8
Merge branch 'msys2-python'
dscho May 31, 2019
767d52f
Revert "git-gui: set GIT_DIR and GIT_WORK_TREE after setup"
hvoigt Feb 18, 2010
bc2447a
git-gui: provide question helper for retry fallback on Windows
hvoigt Feb 21, 2010
861934d
git-gui (Windows): use git-bash.exe if it is available
tomyy Oct 18, 2015
ae82ac7
git gui: set GIT_ASKPASS=git-gui--askpass if not set yet
dscho Jul 23, 2010
d9147a2
respect core.hooksPath, falling back to .git/hooks
dscho Oct 4, 2018
44c2806
Merge branch 'inherit-only-stdhandles'
dscho Jan 31, 2018
e9a2f33
gitk: Unicode file name support
kblees Feb 4, 2012
b8d45b9
git-gui--askyesno: fix funny text wrapping
dscho Sep 20, 2017
8bb0f4b
gitk: Use an external icon file on Windows
sschuberth Jul 22, 2012
68d5d6a
Merge 'git-gui' into HEAD
dscho Jun 7, 2018
b03189f
git-gui--askyesno: allow overriding the window title
dscho Sep 20, 2017
f33a518
gitk: fix arrow keys in input fields with Tcl/Tk >= 8.6
dscho Feb 16, 2016
4fb346c
Merge branch 'msys2-git-gui'
dscho Jun 7, 2018
61f0aab
git-gui: correctly restore GIT_DIR after invoking gitk
max630 Jan 18, 2017
5df5475
git-gui--askyesno (mingw): use Git for Windows' icon, if available
dscho Sep 20, 2017
fdc3558
gitk: make the "list references" default window width wider
sidecut Jan 21, 2016
a8f7063
Merge branch 'git-gui-hooks-path' of https://github.com/dscho/git-gui
dscho Jul 10, 2018
5a97ae3
Merge pull request #1032 from max630/gitgui_GIT_GIT_unset
dscho Jun 8, 2018
6eacee3
Merge branch 'git-gui-askyesno'
dscho Jun 8, 2018
f1ffb4b
Merge 'gitk' into HEAD
dscho Jun 7, 2018
c60aa33
Allow `add -p` and `add -i` with a large number of files
kkheller May 27, 2015
ff3e8df
Win32: make FILETIME conversion functions public
kblees Jul 6, 2013
9895a73
t3701: verify that we can add *lots* of files interactively
dscho Sep 12, 2015
eef3110
Win32: dirent.c: Move opendir down
kblees Sep 8, 2013
b89e3cf
Win32: Make the dirent implementation pluggable
kblees Sep 8, 2013
4802359
Win32: make the lstat implementation pluggable
kblees Sep 8, 2013
f059bd5
add infrastructure for read-only file system level caches
kblees Sep 8, 2013
106fd9b
fscache: add key for GIT_TRACE_FSCACHE
jeffhostetler Jan 24, 2017
eb2441a
dir.c: make add_excludes aware of fscache during status
jeffhostetler Nov 1, 2017
5e38d75
Win32: add a cache below mingw's lstat and dirent implementations
kblees Oct 1, 2013
d925ec2
fscache: remember not-found directories
jeffhostetler Dec 13, 2016
ad100fa
fscache: make fscache_enabled() public
jeffhostetler Dec 20, 2017
53dc6bd
fscache: load directories only once
kblees Jun 24, 2014
a1b67bf
fscache: add a test for the dir-not-found optimization
dscho Jan 25, 2017
44aa427
add: use preload-index and fscache for performance
jeffhostetler Nov 22, 2016
4d137f6
dir.c: regression fix for add_excludes with fscache
jeffhostetler Dec 20, 2017
0cbaa49
fetch-pack.c: enable fscache for stats under .git/objects
Nov 22, 2017
9c80973
checkout.c: enable fscache for checkout again
Jan 30, 2018
8acbbef
Enable the filesystem cache (fscache) in refresh_index().
benpeart Sep 7, 2018
84890bf
fscache: use FindFirstFileExW to avoid retrieving the short name
benpeart Oct 23, 2018
d231f36
status: disable and free fscache at the end of the status command
benpeart Nov 1, 2018
4f1aebc
fscache: add GIT_TEST_FSCACHE support
benpeart Oct 4, 2018
2e66c07
At the end of the add command, disable and free the fscache so that w…
benpeart Nov 5, 2018
b3ef6a8
fscache: add fscache hit statistics
benpeart Sep 25, 2018
2a2114d
mem_pool: add GIT_TRACE_MEMPOOL support
benpeart Oct 4, 2018
41f845d
fscache: fscache takes an initial size
benpeart Nov 2, 2018
d108d76
fscache: remember the reparse tag for each entry
dscho Dec 11, 2018
95277e5
fscache: update fscache to be thread specific instead of global
benpeart Oct 4, 2018
366f821
fscache: implement an FSCache-aware is_mount_point()
dscho Dec 11, 2018
7e54068
pack-objects (mingw): demonstrate a segmentation fault with large deltas
vangdfang Jan 9, 2014
7a537bd
fscache: teach fscache to use mempool
benpeart Nov 2, 2018
01ae388
fscache: make fscache_enable() thread safe
benpeart Nov 16, 2018
fba0b55
fscache: teach fscache to use NtQueryDirectoryFile
benpeart Nov 15, 2018
1340da2
unpack-trees: enable fscache for sparse-checkout
derrickstolee Jun 12, 2019
73ddef8
clean: make use of FSCache
dscho Dec 11, 2018
3aa79f6
mingw: Support `git_terminal_prompt` with more terminals
kblees Mar 19, 2015
c083419
compat/terminal.c: only use the Windows console if bash 'read -r' fails
kblees May 9, 2015
aa7b0d4
mingw (git_terminal_prompt): do fall back to CONIN$/CONOUT$ method
dscho Feb 23, 2018
e4832d2
Win32: support long paths
kblees Jul 28, 2015
78da5a8
Unbreak interactive GPG prompt upon signing
dscho Sep 6, 2016
24ede82
Win32: fix 'lstat("dir/")' with long paths
kblees Jul 4, 2014
b234445
mingw: disable t9020
dscho Feb 23, 2015
8fe15e6
mingw: ensure valid CTYPE
dscho Feb 21, 2017
62f9a19
mingw: ensure that core.longPaths is handled *always*
dscho Aug 29, 2017
d283592
strbuf_readlink: don't call readlink twice if hint is the exact link …
kblees May 11, 2015
4981ee8
strbuf_readlink: support link targets that exceed PATH_MAX
kblees May 11, 2015
59280a6
lockfile.c: use is_dir_sep() instead of hardcoded '/' checks
kblees May 11, 2015
beee405
Win32: don't call GetFileAttributes twice in mingw_lstat()
kblees May 12, 2015
e95507e
Win32: implement stat() with symlink support
kblees May 15, 2015
b2b9765
Win32: remove separate do_lstat() function
kblees May 11, 2015
2ba2bf5
Win32: let mingw_lstat() error early upon problems with reparse points
kblees May 23, 2015
134a5bb
Win32: teach fscache and dirent about symlinks
kblees Jan 10, 2017
79c6fa8
Win32: lstat(): return adequate stat.st_size for symlinks
kblees May 15, 2015
b098145
Win32: factor out retry logic
kblees May 19, 2015
a009f8f
Win32: change default of 'core.symlinks' to false
kblees May 23, 2015
308e71f
Win32: add symlink-specific error codes
kblees May 15, 2015
1cfb903
Win32: mingw_unlink: support symlinks to directories
kblees May 23, 2015
4415781
Merge branch 'maybe-drop'
dscho Oct 12, 2018
831f437
Win32: mingw_rename: support renaming symlinks
kblees May 19, 2015
3eb49d6
Win32: mingw_chdir: change to symlink-resolved directory
kblees May 23, 2015
2e5c11b
Win32: implement readlink()
kblees May 23, 2015
97199ef
Win32: implement basic symlink() functionality (file symlinks only)
kblees May 23, 2015
64280e2
Win32: symlink: add support for symlinks to directories
kblees May 23, 2015
0caca38
mingw: introduce code to detect whether we're inside a Windows container
ZCube Apr 23, 2018
c77220a
Win32: symlink: move phantom symlink creation to a separate function
piscisaureus Oct 26, 2018
ff23e99
mingw: when running in a Windows container, try to rename() harder
ZCube Apr 23, 2018
12e6bc4
Introduce helper to create symlinks that knows about index_state
dscho Feb 11, 2019
68b4bf2
transport-helper: prefer Git's builtins over dashed form
dscho Jul 19, 2017
e0c295c
mingw: move the file_attr_to_st_mode() function definition
ZCube Apr 23, 2018
0a6d0ae
mingw: allow to specify the symlink type in .gitattributes
piscisaureus Oct 26, 2018
028d47f
mingw: explicitly specify with which cmd to prefix the cmdline
dscho Jul 20, 2017
2c2e885
mingw: try to create symlinks without elevated permissions
dscho May 30, 2017
3c59dbc
mingw: Windows Docker volumes are *not* symbolic links
dscho Apr 23, 2018
2731427
Win32: symlink: add test for `symlink` attribute
piscisaureus Oct 26, 2018
5c9ca05
mingw: when path_lookup() failed, try BusyBox
dscho Jul 20, 2017
8e40e47
test-lib: avoid unnecessary Perl invocation
dscho Aug 5, 2017
997666c
tests: replace mingw_test_cmp with a helper in C
dscho Jun 7, 2018
4b4de07
test-tool: learn to act as a drop-in replacement for `iconv`
dscho Jul 20, 2017
7258dcb
tests(mingw): if `iconv` is unavailable, use `test-helper --iconv`
dscho Jul 20, 2017
c321dd0
tests: use t/diff-lib/* consistently
dscho Aug 5, 2017
d914da6
gitattributes: mark .png files as binary
dscho Oct 11, 2018
38ce595
tests: move test PNGs into t/diff-lib/
dscho Aug 5, 2017
941119c
tests: only override sort & find if there are usable ones in /usr/bin/
dscho Jul 17, 2017
c42a8f1
tests: use the correct path separator with BusyBox
dscho Nov 19, 2018
f942888
mingw: only use Bash-ism `builtin pwd -W` when available
dscho Jun 29, 2017
7ec7444
tests (mingw): remove Bash-specific pwd option
dscho Jun 30, 2017
924b0b3
test-lib: add BUSYBOX prerequisite
dscho Jul 19, 2017
089efcd
t0021: use Windows path when appropriate
dscho Aug 4, 2017
a034fd6
t1300: mark all test cases with funny filenames as !MINGW
dscho Jul 3, 2017
2102b17
t4124: avoid using "normal" diff mode
dscho Jul 5, 2017
d847a9c
t5003: use binary file from t/diff-lib/
dscho Aug 5, 2017
9bd634f
t5003: skip `unzip -a` tests with BusyBox
dscho Jul 5, 2017
bcf5bb8
t5532: workaround for BusyBox on Windows
dscho Jul 21, 2017
33dc885
t5605: special-case hardlink test for BusyBox-w32
dscho Jul 21, 2017
21d5c42
t5813: allow for $PWD to be a Windows path
dscho Jul 5, 2017
de66991
t7063: when running under BusyBox, avoid unsupported find option
dscho Jul 19, 2017
9849759
t9200: skip tests when $PWD contains a colon
dscho Jul 7, 2017
84ef240
mingw: kill child processes in a gentler way
dscho May 17, 2017
75411ad
mingw: add a Makefile target to copy test artifacts
dscho Jul 19, 2017
c7fb8b7
mingw: really handle SIGINT
dscho Apr 22, 2018
b094a01
status: carry the --no-lock-index option for backwards-compatibility
dscho Aug 12, 2016
6283497
Modify the Code of Conduct for Git for Windows
dscho Oct 11, 2019
69be88c
CONTRIBUTING.md: add guide for first-time contributors
derrickstolee Mar 1, 2018
a847087
README.md: Add a Windows-specific preamble
dscho Jan 10, 2014
7556e6c
Add an issue template
shiftkey Feb 18, 2016
abc5c61
Modify the GitHub Pull Request template (to reflect Git for Windows)
Dec 22, 2017
af3207e
.github: Add configuration for the Sentiment Bot
dscho Feb 20, 2018
2021092
status: reinstate --show-ignored-directory as a deprecated option
dscho Nov 9, 2017
bd77d7d
Document how $HOME is set on Windows
alejandro5042 Mar 9, 2018
36eeade
status: verify that --show-ignored-directory prints a warning
dscho Nov 9, 2017
906819e
SECURITY.md: document Git for Windows' policies
dscho Aug 23, 2019
e27f42d
Merge branch 'ready-for-upstream'
dscho Oct 11, 2018
4075995
Merge branch 'gitk-and-git-gui-patches'
dscho Oct 11, 2018
c2276e2
Merge 'add-p-many-files'
dscho Jun 8, 2018
479a2e7
Merge branch 'fscache'
dscho Nov 15, 2018
41ec77c
Merge pull request #994 from jeffhostetler/jeffhostetler/fscache_nfd
dscho Jun 8, 2018
7ddd544
Merge pull request #971 from jeffhostetler/jeffhostetler/add_preload_…
dscho Jun 8, 2018
08acaaa
Merge pull request #1344 from jeffhostetler/perf_add_excludes_with_fs…
dscho Jun 8, 2018
9cb153a
Merge pull request #1426 from atetubou/fetch_pack
dscho Jun 8, 2018
1717c77
Merge pull request #1468 from atetubou/fscache_checkout_flush
dscho Oct 12, 2018
9700121
Merge pull request #1827 from benpeart/fscache_refresh_index
dscho Sep 27, 2018
0b501bc
Merge pull request #1908 from benpeart/FindFirstFileEx-gfw
dscho Nov 5, 2018
21ff214
Merge pull request #1909 from benpeart/free-fscache-after-status-gfw
dscho Nov 5, 2018
19efca2
Merge pull request #1911 from benpeart/git_test_fscache-gfw
dscho Nov 5, 2018
d15c99f
Merge pull request #1914 from benpeart/free-fscache-after-add-gfw
dscho Nov 16, 2018
9155e74
Merge pull request #1910 from benpeart/fscache_statistics-gfw
dscho Nov 16, 2018
b3cbf3e
Merge remote-tracking branch 'benpeart/fscache-per-thread-gfw'
dscho Nov 16, 2018
508f796
Merge pull request #1934 from benpeart/fscache-thread-safe-enable-gfw
dscho Nov 26, 2018
43d2bf8
Merge pull request #1937 from benpeart/fscache-NtQueryDirectoryFile-gfw
dscho Nov 27, 2018
5197737
Merge branch 'fscache-and-sparse-checkout'
derrickstolee Jun 18, 2019
2821539
Merge branch 'dont-clean-junctions-fscache'
dscho Jul 23, 2019
2cdfabf
Merge branch 'long-paths'
dscho Nov 15, 2018
35ef4f1
Merge branch 'msys2'
dscho Nov 15, 2018
2f55f70
Merge branch 'kblees/kb/symlinks'
dscho Nov 15, 2018
eb9b1f3
Merge 'docker-volumes-are-no-symlinks'
dscho Oct 12, 2018
7380253
Merge pull request #1897 from piscisaureus/symlink-attr
dscho Oct 31, 2018
c2dc9a7
Merge branch 'busybox-w32'
dscho Feb 7, 2019
2fcdbc1
Merge pull request #1170 from dscho/mingw-kill-process
dscho Oct 11, 2018
b6e7db0
Merge branch 'status-no-lock-index'
dscho Jun 8, 2018
80a7ee6
Merge pull request #1354 from dscho/phase-out-show-ignored-directory-…
dscho Jun 8, 2018
b1b9387
Merge 'readme' into HEAD
dscho Jun 7, 2018
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
10 changes: 10 additions & 0 deletions Documentation/RelNotes/2.24.0.txt
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,9 @@ UI, Workflows & Features
submodules, but this did not apply to "git fetch --multiple" that
fetches from multiple remote repositories. It now does.

* The installation instruction for zsh completion script (in
contrib/) has been a bit improved.


Performance, Internal Implementation, Development Support etc.

Expand Down Expand Up @@ -337,6 +340,10 @@ Fixes since v2.23
corrected.
(merge 556895d0c8 jj/stash-reset-only-toplevel later to maint).

* The atomic push over smart HTTP transport did not work, which has
been corrected.
(merge 6f1194246a bc/smart-http-atomic-push later to maint).

* Other code cleanup, docfix, build fix, etc.
(merge d1387d3895 en/fast-import-merge-doc later to maint).
(merge 1c24a54ea4 bm/repository-layout-typofix later to maint).
Expand Down Expand Up @@ -385,3 +392,6 @@ Fixes since v2.23
(merge 5cc6a4be11 rs/http-push-simplify later to maint).
(merge a81e42d235 rs/column-use-utf8-strnwidth later to maint).
(merge 062a309d36 rs/remote-curl-use-argv-array later to maint).
(merge 3b3c79f6c9 nr/diff-highlight-indent-fix later to maint).
(merge 3444ec2eb2 wb/fsmonitor-bitmap-fix later to maint).
(merge 10da030ab7 cb/pcre2-chartables-leakfix later to maint).
5 changes: 5 additions & 0 deletions Documentation/gitremote-helpers.txt
Original file line number Diff line number Diff line change
Expand Up @@ -509,6 +509,11 @@ set by Git if the remote helper has the 'option' capability.
Indicate that only the objects wanted need to be fetched, not
their dependents.

'option atomic' {'true'|'false'}::
When pushing, request the remote server to update refs in a single atomic
transaction. If successful, all refs will be updated, or none will. If the
remote side does not support this capability, the push will fail.

SEE ALSO
--------
linkgit:git-remote[1]
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.24.0-rc0
DEF_VER=v2.24.0-rc1

LF='
'
Expand Down
34 changes: 30 additions & 4 deletions add-patch.c
Original file line number Diff line number Diff line change
Expand Up @@ -511,10 +511,9 @@ static int parse_diff(struct add_p_state *s, const struct pathspec *ps)
(int)(eol - (plain->buf + file_diff->head.start)),
plain->buf + file_diff->head.start);

if ((marker == '-' || marker == '+') &&
(*p == ' ' || *p == '\\'))
if ((marker == '-' || marker == '+') && *p == ' ')
hunk->splittable_into++;
if (marker)
if (marker && *p != '\\')
marker = *p;

p = eol == pend ? pend : eol + 1;
Expand Down Expand Up @@ -563,8 +562,13 @@ static int parse_diff(struct add_p_state *s, const struct pathspec *ps)

static size_t find_next_line(struct strbuf *sb, size_t offset)
{
char *eol = memchr(sb->buf + offset, '\n', sb->len - offset);
char *eol;

if (offset >= sb->len)
BUG("looking for next line beyond buffer (%d >= %d)\n%s",
(int)offset, (int)sb->len, sb->buf);

eol = memchr(sb->buf + offset, '\n', sb->len - offset);
if (!eol)
return sb->len;
return eol - sb->buf + 1;
Expand Down Expand Up @@ -849,6 +853,14 @@ static int split_hunk(struct add_p_state *s, struct file_diff *file_diff,

while (splittable_into > 1) {
ch = s->plain.buf[current];

if (!ch)
BUG("buffer overrun while splitting hunks");

/*
* Is this the first context line after a chain of +/- lines?
* Then record the start of the next split hunk.
*/
if ((marker == '-' || marker == '+') && ch == ' ') {
first = 0;
hunk[1].start = current;
Expand All @@ -857,8 +869,22 @@ static int split_hunk(struct add_p_state *s, struct file_diff *file_diff,
context_line_count = 0;
}

/*
* Was the previous line a +/- one? Alternatively, is this the
* first line (and not a +/- one)?
*
* Then just increment the appropriate counter and continue
* with the next line.
*
* Otherwise this is the first of a chain of +/- lines.
* neither the first of a chain of context lines?
*/
if (marker != ' ' || (ch != '-' && ch != '+')) {
next_hunk_line:
/* Comment lines are attached to the previous line */
if (ch == '\\')
ch = marker ? marker : ' ';

/* current hunk not done yet */
if (ch == ' ')
context_line_count++;
Expand Down
4 changes: 2 additions & 2 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ jobs:
displayName: 'Download git-sdk-64-minimal'
- powershell: |
& git-sdk-64-minimal\usr\bin\bash.exe -lc @"
make vcxproj
make NDEBUG=1 DEVELOPER=1 vcxproj
"@
if (!$?) { exit(1) }
displayName: Generate Visual Studio Solution
Expand Down Expand Up @@ -255,7 +255,7 @@ jobs:

cd t &&
PATH=\"`$PWD/helper:`$PATH\" &&
test-tool.exe run-command testsuite -V -x --write-junit-xml \
test-tool.exe run-command testsuite --jobs=10 -V -x --write-junit-xml \
`$(test-tool.exe path-utils slice-tests \
`$SYSTEM_JOBPOSITIONINPHASE `$SYSTEM_TOTALJOBSINPHASE t[0-9]*.sh)
"@
Expand Down
1 change: 1 addition & 0 deletions builtin/grep.c
Original file line number Diff line number Diff line change
Expand Up @@ -1147,5 +1147,6 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
run_pager(&opt, prefix);
clear_pathspec(&pathspec);
free_grep_patterns(&opt);
grep_destroy();
return !hit;
}
1 change: 1 addition & 0 deletions ci/install-dependencies.sh
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ osx-clang|osx-gcc)
brew install caskroom/cask/perforce
case "$jobname" in
osx-gcc)
brew link gcc ||
brew link gcc@8
;;
esac
Expand Down
5 changes: 3 additions & 2 deletions contrib/completion/git-completion.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@
#
# zstyle ':completion:*:*:git:*' script ~/.git-completion.zsh
#
# The recommended way to install this script is to copy to '~/.zsh/_git', and
# then add the following to your ~/.zshrc file:
# The recommended way to install this script is to make a copy of it in
# ~/.zsh/ directory as ~/.zsh/git-completion.zsh and then add the following
# to your ~/.zshrc file:
#
# fpath=(~/.zsh $fpath)

Expand Down
2 changes: 1 addition & 1 deletion contrib/diff-highlight/DiffHighlight.pm
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ sub handle_line {
(?:$COLOR?\|$COLOR?[ ])* # zero or more trailing "|"
[ ]* # trailing whitespace for merges
/x) {
my $graph_prefix = $&;
my $graph_prefix = $&;

# We must flush before setting graph indent, since the
# new commit may be indented differently from what we
Expand Down
29 changes: 24 additions & 5 deletions fsmonitor.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,13 @@ struct trace_key trace_fsmonitor = TRACE_KEY_INIT(FSMONITOR);
static void fsmonitor_ewah_callback(size_t pos, void *is)
{
struct index_state *istate = (struct index_state *)is;
struct cache_entry *ce = istate->cache[pos];
struct cache_entry *ce;

if (pos >= istate->cache_nr)
BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" >= %u)",
(uintmax_t)pos, istate->cache_nr);

ce = istate->cache[pos];
ce->ce_flags &= ~CE_FSMONITOR_VALID;
}

Expand Down Expand Up @@ -50,17 +55,24 @@ int read_fsmonitor_extension(struct index_state *istate, const void *data,
}
istate->fsmonitor_dirty = fsmonitor_dirty;

if (istate->fsmonitor_dirty->bit_size > istate->cache_nr)
BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" > %u)",
(uintmax_t)istate->fsmonitor_dirty->bit_size, istate->cache_nr);

trace_printf_key(&trace_fsmonitor, "read fsmonitor extension successful");
return 0;
}

void fill_fsmonitor_bitmap(struct index_state *istate)
{
unsigned int i;
unsigned int i, skipped = 0;
istate->fsmonitor_dirty = ewah_new();
for (i = 0; i < istate->cache_nr; i++)
if (!(istate->cache[i]->ce_flags & CE_FSMONITOR_VALID))
ewah_set(istate->fsmonitor_dirty, i);
for (i = 0; i < istate->cache_nr; i++) {
if (istate->cache[i]->ce_flags & CE_REMOVE)
skipped++;
else if (!(istate->cache[i]->ce_flags & CE_FSMONITOR_VALID))
ewah_set(istate->fsmonitor_dirty, i - skipped);
}
}

void write_fsmonitor_extension(struct strbuf *sb, struct index_state *istate)
Expand All @@ -71,6 +83,10 @@ void write_fsmonitor_extension(struct strbuf *sb, struct index_state *istate)
uint32_t ewah_size = 0;
int fixup = 0;

if (istate->fsmonitor_dirty->bit_size > istate->cache_nr)
BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" > %u)",
(uintmax_t)istate->fsmonitor_dirty->bit_size, istate->cache_nr);

put_be32(&hdr_version, INDEX_EXTENSION_VERSION);
strbuf_add(sb, &hdr_version, sizeof(uint32_t));

Expand Down Expand Up @@ -236,6 +252,9 @@ void tweak_fsmonitor(struct index_state *istate)
}

/* Mark all previously saved entries as dirty */
if (istate->fsmonitor_dirty->bit_size > istate->cache_nr)
BUG("fsmonitor_dirty has more entries than the index (%"PRIuMAX" > %u)",
(uintmax_t)istate->fsmonitor_dirty->bit_size, istate->cache_nr);
ewah_each_bit(istate->fsmonitor_dirty, fsmonitor_ewah_callback, istate);

/* Now mark the untracked cache for fsmonitor usage */
Expand Down
47 changes: 44 additions & 3 deletions grep.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,20 @@ static int grep_source_is_binary(struct grep_source *gs,

static struct grep_opt grep_defaults;

#ifdef USE_LIBPCRE2
static pcre2_general_context *pcre2_global_context;

static void *pcre2_malloc(PCRE2_SIZE size, MAYBE_UNUSED void *memory_data)
{
return malloc(size);
}

static void pcre2_free(void *pointer, MAYBE_UNUSED void *memory_data)
{
return free(pointer);
}
#endif

static const char *color_grep_slots[] = {
[GREP_COLOR_CONTEXT] = "context",
[GREP_COLOR_FILENAME] = "filename",
Expand Down Expand Up @@ -150,12 +164,28 @@ int grep_config(const char *var, const char *value, void *cb)
* Initialize one instance of grep_opt and copy the
* default values from the template we read the configuration
* information in an earlier call to git_config(grep_config).
*
* If using PCRE, make sure that the library is configured
* to use the same allocator as Git (e.g. nedmalloc on Windows).
*
* Any allocated memory needs to be released in grep_destroy().
*/
void grep_init(struct grep_opt *opt, struct repository *repo, const char *prefix)
{
struct grep_opt *def = &grep_defaults;
int i;

#if defined(USE_LIBPCRE2)
if (!pcre2_global_context)
pcre2_global_context = pcre2_general_context_create(
pcre2_malloc, pcre2_free, NULL);
#endif

#ifdef USE_LIBPCRE1
pcre_malloc = malloc;
pcre_free = free;
#endif

memset(opt, 0, sizeof(*opt));
opt->repo = repo;
opt->prefix = prefix;
Expand All @@ -178,6 +208,13 @@ void grep_init(struct grep_opt *opt, struct repository *repo, const char *prefix
color_set(opt->colors[i], def->colors[i]);
}

void grep_destroy(void)
{
#ifdef USE_LIBPCRE2
pcre2_general_context_free(pcre2_global_context);
#endif
}

static void grep_set_pattern_type_option(enum grep_pattern_type pattern_type, struct grep_opt *opt)
{
/*
Expand Down Expand Up @@ -461,7 +498,6 @@ static void compile_pcre2_pattern(struct grep_pat *p, const struct grep_opt *opt
PCRE2_UCHAR errbuf[256];
PCRE2_SIZE erroffset;
int options = PCRE2_MULTILINE;
const uint8_t *character_tables = NULL;
int jitret;
int patinforet;
size_t jitsizearg;
Expand All @@ -470,11 +506,15 @@ static void compile_pcre2_pattern(struct grep_pat *p, const struct grep_opt *opt

p->pcre2_compile_context = NULL;

/* pcre2_global_context is initialized in append_grep_pattern */
if (opt->ignore_case) {
if (!opt->ignore_locale && has_non_ascii(p->pattern)) {
character_tables = pcre2_maketables(NULL);
if (!pcre2_global_context)
BUG("pcre2_global_context uninitialized");
p->pcre2_tables = pcre2_maketables(pcre2_global_context);
p->pcre2_compile_context = pcre2_compile_context_create(NULL);
pcre2_set_character_tables(p->pcre2_compile_context, character_tables);
pcre2_set_character_tables(p->pcre2_compile_context,
p->pcre2_tables);
}
options |= PCRE2_CASELESS;
}
Expand Down Expand Up @@ -571,6 +611,7 @@ static void free_pcre2_pattern(struct grep_pat *p)
pcre2_compile_context_free(p->pcre2_compile_context);
pcre2_code_free(p->pcre2_pattern);
pcre2_match_data_free(p->pcre2_match_data);
free((void *)p->pcre2_tables);
}
#else /* !USE_LIBPCRE2 */
static void compile_pcre2_pattern(struct grep_pat *p, const struct grep_opt *opt)
Expand Down
2 changes: 2 additions & 0 deletions grep.h
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ struct grep_pat {
pcre2_code *pcre2_pattern;
pcre2_match_data *pcre2_match_data;
pcre2_compile_context *pcre2_compile_context;
const uint8_t *pcre2_tables;
uint32_t pcre2_jit_on;
unsigned fixed:1;
unsigned is_fixed:1;
Expand Down Expand Up @@ -172,6 +173,7 @@ struct grep_opt {
void init_grep_defaults(struct repository *);
int grep_config(const char *var, const char *value, void *);
void grep_init(struct grep_opt *, struct repository *repo, const char *prefix);
void grep_destroy(void);
void grep_commit_pattern_type(enum grep_pattern_type, struct grep_opt *opt);

void append_grep_pat(struct grep_opt *opt, const char *pat, size_t patlen, const char *origin, int no, enum grep_pat_token t);
Expand Down
13 changes: 12 additions & 1 deletion remote-curl.c
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ struct options {
push_cert : 2,
deepen_relative : 1,
from_promisor : 1,
no_dependents : 1;
no_dependents : 1,
atomic : 1;
};
static struct options options;
static struct string_list cas_options = STRING_LIST_INIT_DUP;
Expand Down Expand Up @@ -148,6 +149,14 @@ static int set_option(const char *name, const char *value)
else
return -1;
return 0;
} else if (!strcmp(name, "atomic")) {
if (!strcmp(value, "true"))
options.atomic = 1;
else if (!strcmp(value, "false"))
options.atomic = 0;
else
return -1;
return 0;
} else if (!strcmp(name, "push-option")) {
if (*value != '"')
string_list_append(&options.push_options, value);
Expand Down Expand Up @@ -1196,6 +1205,8 @@ static int push_git(struct discovery *heads, int nr_spec, const char **specs)
argv_array_push(&args, "--signed=yes");
else if (options.push_cert == SEND_PACK_PUSH_CERT_IF_ASKED)
argv_array_push(&args, "--signed=if-asked");
if (options.atomic)
argv_array_push(&args, "--atomic");
if (options.verbosity == 0)
argv_array_push(&args, "--quiet");
else if (options.verbosity > 1)
Expand Down
2 changes: 1 addition & 1 deletion repo-settings.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ void prepare_repo_settings(struct repository *r)
UPDATE_DEFAULT_BOOL(r->settings.core_commit_graph, 1);
UPDATE_DEFAULT_BOOL(r->settings.gc_write_commit_graph, 1);

if (!repo_config_get_bool(r, "index.version", &value))
if (!repo_config_get_int(r, "index.version", &value))
r->settings.index_version = value;
if (!repo_config_get_maybe_bool(r, "core.untrackedcache", &value)) {
if (value == 0)
Expand Down
2 changes: 1 addition & 1 deletion t/helper/test-progress.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ void progress_test_force_update(void);

int cmd__progress(int argc, const char **argv)
{
uint64_t total = 0;
int total = 0;
const char *title;
struct strbuf line = STRBUF_INIT;
struct progress *progress;
Expand Down
Loading