1 Git v2.39 Release Notes
2 =======================
4 UI, Workflows & Features
5 ------------------------
7 * "git grep" learned to expand the sparse-index more lazily and on
8 demand in a sparse checkout.
10 * By default, use of fsmonitor on a repository on networked
11 filesystem is disabled. Add knobs to make it workable on macOS.
13 * After checking out a "branch" that is a symbolic-ref that points at
14 another branch, "git symbolic-ref HEAD" reports the underlying
15 branch, not the symbolic-ref the user gave checkout as argument.
16 The command learned the "--no-recurse" option to stop after
17 dereferencing a symbolic-ref only once.
19 * "git branch --edit-description @{-1}" is now a way to edit branch
20 description of the branch you were on before switching to the
23 * "git merge-tree --stdin" is a new way to request a series of merges
24 and report the merge results.
26 * "git shortlog" learned to group by the "format" string.
28 * A new "--include-whitespace" option is added to "git patch-id", and
29 existing bugs in the internal patch-id logic that did not match
30 what "git patch-id" produces have been corrected.
32 Performance, Internal Implementation, Development Support etc.
33 --------------------------------------------------------------
35 * With a bit of header twiddling, use the native regexp library on
36 macOS instead of the compat/ one.
38 * Prepare for GNU [ef]grep that throw warning of their uses.
40 * Sources related to fuzz testing have been moved down to their own
43 * Most credential helpers ignored unknown entries in a credential
44 description, but a few died upon seeing them. The latter were
45 taught to ignore them, too
47 * "scalar unregister" in a repository that is already been
48 unregistered reported an error.
50 * Remove error detection from a function that fetches from promisor
51 remotes, and make it die when such a fetch fails to bring all the
52 requested objects, to give an early failure to various operations.
54 * Update CodingGuidelines to clarify what features to use and avoid
57 * Avoid false-positive from LSan whose assumption may be broken with
58 higher optimization levels.
60 * Enable address and undefined sanitizer tasks at GitHub Actions CI.
62 * More UNUSED annotation to help using -Wunused option with the
64 (merge 4b992f0a24 jk/unused-anno-more later to maint).
66 * Rewrite a deep recursion in the skipping negotiator to use a loop
67 with on-heap prio queue to avoid stack wastage.
69 * Add documentation for message IDs in fsck error messages.
71 * Define the logical elements of a "bundle list", data structure to
72 store them in-core, format to transfer them, and code to parse
75 * The role the security mailing list plays in an embargoed release
78 * Two new facilities, "timer" and "counter", are introduced to the
81 * Code simplification by using strvec_pushf() instead of building an
82 argument in a separate strbuf.
84 * Make sure generated dependency file is stably sorted to help
85 developers debugging their build issues.
90 * The codepath that reads from the index v4 had unaligned memory
91 accesses, which has been corrected.
93 * Fix messages incorrectly marked for translation.
95 * "git fsck" failed to release contents of tree objects already used
96 from the memory, which has been fixed.
98 * "git clone" did not like to see the "--bare" and the "--origin"
99 options used together without a good reason.
101 * "git remote rename" failed to rename a remote without fetch
102 refspec, which has been corrected.
104 * Documentation on various Boolean GIT_* environment variables have
107 * "git rebase -i" can mistakenly attempt to apply a fixup to a commit
108 itself, which has been corrected.
110 * "git multi-pack-index repack/expire" used to repack unreachable
111 cruft into a new pack, which have been corrected.
113 * In read-only repositories, "git merge-tree" tried to come up with a
114 merge result tree object, which it failed (which is not wrong) and
115 led to a segfault (which is bad), which has been corrected.
117 * Force C locale while running tests around httpd to make sure we can
118 find expected error messages in the log.
120 * Fix a logic in "mailinfo -b" that miscomputed the length of a
121 substring, which lead to an out-of-bounds access.
123 * The codepath to sign learned to report errors when it fails to read
126 * Code clean-up that results in plugging a leak.
128 * "GIT_EDITOR=: git branch --edit-description" resulted in failure,
129 which has been corrected.
131 * The code to clean temporary object directories (used for
132 quarantine) tried to remove them inside its signal handler, which
135 * Update comment in the Makefile about the RUNTIME_PREFIX config knob.
137 * Clarify that "the sentence after <area>: prefix does not begin with
138 a capital letter" rule applies only to the commit title.
140 * "git branch --edit-description" on an unborh branch misleadingly
141 said that no such branch exists, which has been corrected.
143 * Work around older clang that warns against C99 zero initialization
146 * Giving "--invert-grep" and "--all-match" without "--grep" to the
147 "git log" command resulted in an attempt to access grep pattern
148 expression structure that has not been allocated, which has been
150 (merge db84376f98 ab/grep-simplify-extended-expression later to maint).
152 * "git diff rev^!" did not show combined diff to go to the rev from
154 (merge a79c6b6081 rs/diff-caret-bang-with-parents later to maint).
156 * Allow configuration files in "protected" scopes to include other
158 (merge ecec57b3c9 gc/bare-repo-discovery later to maint).
160 * Give a bit more diversity to macOS CI by using sha1dc in one of the
161 jobs (the other one tests Apple Common Crypto).
162 (merge 1ad5c3df35 jc/ci-osx-with-sha1dc later to maint).
164 * A bugfix with tracing support in midx codepath
165 (merge e9c3839944 tb/midx-bitmap-selection-fix later to maint).
167 * When geometric repacking feature is in use together with the
168 --pack-kept-objects option, we lost packs marked with .keep files.
169 (merge 197443e80a tb/save-keep-pack-during-geometric-repack later to maint).
171 * Move a global variable added as a hack during regression fixes to
172 its proper place in the API.
173 (merge 0b0ab95f17 ab/run-hook-api-cleanup later to maint).
175 * Update to build procedure with VS using CMake/CTest.
176 (merge c858750b41 js/cmake-updates later to maint).
178 * The short-help text shown by "git cmd -h" and the synopsis text
179 shown at the beginning of "git help cmd" have been made more
182 * When creating a multi-pack bitmap, remove per-pack bitmap files
183 unconditionally as they will never be consulted.
184 (merge 55d902cd61 tb/remove-unused-pack-bitmap later to maint).
186 * Fix a longstanding syntax error in Git.pm error codepath.
188 * "git diff --stat" etc. were invented back when everything was ASCII
189 and strlen() was a way to measure the display width of a string;
190 adjust them to compute the display width assuming UTF-8 pathnames.
191 (merge ce8529b2bb tb/diffstat-with-utf8-strwidth later to maint).
193 * "git branch --edit-description" can exit with status -1 which is
194 not a good practice; it learned to use 1 as everybody else instead.
196 * "git apply" limits its input to a bit less than 1 GiB.
198 * Merging a branch with directory renames into a branch that changes
199 the directory to a symlink was mishandled by the ort merge
200 strategy, which has been corrected.
202 * A bugfix to "git subtree" in its split and merge features.
204 * Fix some bugs in the reflog messages when rebasing and changes the
205 reflog messages of "rebase --apply" to match "rebase --merge" with
206 the aim of making the reflog easier to parse.
208 * "git rebase --keep-base" used to discard the commits that are
209 already cherry-picked to the upstream, even when "keep-base" meant
210 that the base, on top of which the history is being rebuilt, does
211 not yet include these cherry-picked commits. The --keep-base
212 option now implies --reapply-cherry-picks and --no-fork-point
215 * The way "git repack" creared temporary files when it received a
216 signal was prone to deadlocking, which has been corrected.
218 * Other code cleanup, docfix, build fix, etc.
219 (merge 413bc6d20a ds/cmd-main-reorder later to maint).
220 (merge 8d2863e4ed nw/t1002-cleanup later to maint).