summaryrefslogtreecommitdiff
path: root/Documentation/RelNotes/2.24.0.txt
blob: 7f44e7a5f2848f7cd704a6e4870bcb426749ee65 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
Git 2.24 Release Notes
======================
 
Updates since v2.23
-------------------
 
Backward compatibility note
 
 * Although it is not officially deprecated, "filter-branch" is
   showing its age and alternatives are available.  From this release,
   we started to discourage its uses and hint people about
   filter-repo.
 
UI, Workflows & Features
 
 * We now have an active interim maintainer for the Git-Gui part of
   the system.  Praise and thank Pratyush Yadav for volunteering.
 
 * The command line parser learned "--end-of-options" notation; the
   standard convention for scripters to have hardcoded set of options
   first on the command line, and force the command to treat end-user
   input as non-options, has been to use "--" as the delimiter, but
   that would not work for commands that use "--" as a delimiter
   between revs and pathspec.
 
 * A mechanism to affect the default setting for a (related) group of
   configuration variables is introduced.
 
 * "git fetch" learned "--set-upstream" option to help those who first
   clone from their private fork they intend to push to, add the true
   upstream via "git remote add" and then "git fetch" from it.
 
 * Device-tree files learned their own userdiff patterns.
   (merge 3c81760bc6 sb/userdiff-dts later to maint).
 
 * "git rebase --rebase-merges" learned to drive different merge
   strategies and pass strategy specific options to them.
 
 * A new "pre-merge-commit" hook has been introduced.
 
 * Command line completion updates for "git -c var.name=val" have been
   added.
 
 * The lazy clone machinery has been taught that there can be more
   than one promisor remote and consult them in order when downloading
   missing objects on demand.
 
 * The list-objects-filter API (used to create a sparse/lazy clone)
   learned to take a combined filter specification.
 
 * The documentation and tests for "git format-patch" have been
   cleaned up.
 
 * On Windows, the root level of UNC share is now allowed to be used
   just like any other directory.
 
 * The command line completion support (in contrib/) learned about the
   "--skip" option of "git revert" and "git cherry-pick".
 
 * "git rebase --keep-base <upstream>" tries to find the original base
   of the topic being rebased and rebase on top of that same base,
   which is useful when running the "git rebase -i" (and its limited
   variant "git rebase -x").
 
   The command also has learned to fast-forward in more cases where it
   can instead of replaying to recreate identical commits.
 
 * A configuration variable tells "git fetch" to write the commit
   graph after finishing.
 
 
Performance, Internal Implementation, Development Support etc.
 
 * The code to write commit-graph over given commit object names has
   been made a bit more robust.
 
 * The first line of verbose output from each test piece now carries
   the test name and number to help scanning with eyeballs.
 
 * Further clean-up of the initialization code.
 
 * xmalloc() used to have a mechanism to ditch memory and address
   space resources as the last resort upon seeing an allocation
   failure from the underlying malloc(), which made the code complex
   and thread-unsafe with dubious benefit, as major memory resource
   users already do limit their uses with various other mechanisms.
   It has been simplified away.
 
 * Unnecessary full-tree diff in "git log -L" machinery has been
   optimized away.
 
 * The http transport lacked some optimization the native transports
   learned to avoid unnecessary ref advertisement, which has been
   corrected.
 
 * Preparation for SHA-256 upgrade continues in the test department.
   (merge 0c37c41d13 bc/hash-independent-tests-part-5 later to maint).
 
 * The memory ownership model of the "git fast-import" got
   straightened out.
 
 * Output from trace2 subsystem is formatted more prettily now.
 
 * The internal code originally invented for ".gitignore" processing
   got reshuffled and renamed to make it less tied to "excluding" and
   stress more that it is about "matching", as it has been reused for
   things like sparse checkout specification that want to check if a
   path is "included".
 
 
 
Fixes since v2.23
-----------------
 
 * "git grep --recurse-submodules" that looks at the working tree
   files looked at the contents in the index in submodules, instead of
   files in the working tree.
   (merge 6a289d45c0 mt/grep-submodules-working-tree later to maint).
 
 * Codepaths to walk tree objects have been audited for integer
   overflows and hardened.
   (merge 5aa02f9868 jk/tree-walk-overflow later to maint).
 
 * "git pack-refs" can lose refs that are created while running, which
   is getting corrected.
   (merge a613d4f817 sc/pack-refs-deletion-racefix later to maint).
 
 * "git checkout" and "git restore" to re-populate the index from a
   tree-ish (typically HEAD) did not work correctly for a path that
   was removed and then added again with the intent-to-add bit, when
   the corresponding working tree file was empty.  This has been
   corrected.
 
 * Compilation fix.
   (merge 70597e8386 rs/nedalloc-fixlets later to maint).
 
 * "git gui" learned to call the clean-up procedure before exiting.
   (merge 0d88f3d2c5 py/git-gui-do-quit later to maint).
 
 * We promoted the "indent heuristics" that decides where to split
   diff hunks from experimental to the default a few years ago, but
   some stale documentation still marked it as experimental, which has
   been corrected.
   (merge 64e5e1fba1 sg/diff-indent-heuristic-non-experimental later to maint).
 
 * Fix a mismerge that happened in 2.22 timeframe.
   (merge acb7da05ac en/checkout-mismerge-fix later to maint).
 
 * "git archive" recorded incorrect length in extended pax header in
   some corner cases, which has been corrected.
   (merge 71d41ff651 rs/pax-extended-header-length-fix later to maint).
 
 * On-demand object fetching in lazy clone incorrectly tried to fetch
   commits from submodule projects, while still working in the
   superproject, which has been corrected.
   (merge a63694f523 jt/diff-lazy-fetch-submodule-fix later to maint).
 
 * Prepare get_short_oid() codepath to be thread-safe.
   (merge 7cfcb16b0e rs/sort-oid-array-thread-safe later to maint).
 
 * "for-each-ref" and friends that show refs did not protect themselves
   against ancient tags that did not record tagger names when asked to
   show "%(taggername)", which have been corrected.
   (merge 8b3f33ef11 mp/for-each-ref-missing-name-or-email later to maint).
 
 * The "git am" based backend of "git rebase" ignored the result of
   updating ".gitattributes" done in one step when replaying
   subsequent steps.
   (merge 2c65d90f75 bc/reread-attributes-during-rebase later to maint).
 
 * Tell cURL library to use the same malloc() implementation, with the
   xmalloc() wrapper, as the rest of the system, for consistency.
   (merge 93b980e58f cb/curl-use-xmalloc later to maint).
 
 * Build fix to adjust .gitignore to unignore a path that we started to track.
   (merge aac6ff7b5b js/visual-studio later to maint).
 
 * A few implementation fixes in the notes API.
   (merge 60fe477a0b mh/notes-duplicate-entries later to maint).
 
 * Fix an earlier regression to "git push --all" which should have
   been forbidden when the target remote repository is set to be a
   mirror.
   (merge 8e4c8af058 tg/push-all-in-mirror-forbidden later to maint).
 
 * Fix an earlier regression in the test suite, which mistakenly
   stopped running HTTPD tests.
   (merge 3960290675 sg/git-test-boolean later to maint).
 
 * "git rebase --autostash <upstream> <branch>", when <branch> is
   different from the current branch, incorrectly moved the tip of the
   current branch, which has been corrected.
   (merge bf1e28e0ad bw/rebase-autostash-keep-current-branch 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).
   (merge 415b770b88 ds/midx-expire-repack later to maint).
   (merge 19800bdc3f nd/diff-parseopt later to maint).
   (merge 58166c2e9d tg/t0021-racefix later to maint).
   (merge 7027f508c7 dl/compat-cleanup later to maint).
   (merge e770fbfeff jc/test-cleanup later to maint).
   (merge 1fd881d404 rs/trace2-dst-warning later to maint).
   (merge 7e92756751 mh/http-urlmatch-cleanup later to maint).
   (merge 9784f97321 mh/release-commit-memory-fix later to maint).
   (merge 60d198d022 tb/banned-vsprintf-namefix later to maint).
   (merge 80e3658647 rs/help-unknown-ref-does-not-return later to maint).
   (merge 0a8bc7068f dt/remote-helper-doc-re-lock-option later to maint).
   (merge 27fd1e4ea7 en/merge-options-ff-and-friends later to maint).
   (merge 502c386ff9 sg/clean-nested-repo-with-ignored later to maint).