@@ -133,6 +133,16 @@ Performance, Internal Implementation, Development Support etc.
133
133
* The codepath in "git fsck" to detect malformed tree objects has
134
134
been updated not to die but keep going after detecting them.
135
135
136
+ * We call "qsort(array, nelem, sizeof(array[0]), fn)", and most of
137
+ the time third parameter is redundant. A new QSORT() macro lets us
138
+ omit it.
139
+
140
+ * "git pack-objects" in a repository with many packfiles used to
141
+ spend a lot of time looking for/at objects in them; the accesses to
142
+ the packfiles are now optimized by checking the most-recently-used
143
+ packfile first.
144
+ (merge c9af708b1a jk/pack-objects-optim-mru later to maint).
145
+
136
146
137
147
Also contains various documentation updates and code clean-ups.
138
148
@@ -174,35 +184,28 @@ notes for details).
174
184
we are sending an object C, we want a tag B that directly points at
175
185
C but also a tag A that points at the tag B. We used to miss the
176
186
intermediate tag B in some cases.
177
- (merge b773dde jk/pack-tag-of-tag later to maint).
178
187
179
188
* Update Japanese translation for "git-gui".
180
- (merge 02748bc sy/git-gui-i18n-ja later to maint).
181
189
182
190
* "git fetch http::/site/path" did not die correctly and segfaulted
183
191
instead.
184
- (merge d63ed6e jk/fix-remote-curl-url-wo-proto later to maint).
185
192
186
193
* "git commit-tree" stopped reading commit.gpgsign configuration
187
194
variable that was meant for Porcelain "git commit" in Git 2.9; we
188
195
forgot to update "git gui" to look at the configuration to match
189
196
this change.
190
- (merge f14a310 js/git-gui-commit-gpgsign later to maint).
191
197
192
198
* "git add --chmod=+x" added recently lacked documentation, which has
193
199
been corrected.
194
- (merge 7ef7903 et/add-chmod-x later to maint).
195
200
196
201
* "git log --cherry-pick" used to include merge commits as candidates
197
202
to be matched up with other commits, resulting a lot of wasted time.
198
203
The patch-id generation logic has been updated to ignore merges to
199
204
avoid the wastage.
200
- (merge 7c81040 jk/patch-ids-no-merges later to maint).
201
205
202
206
* The http transport (with curl-multi option, which is the default
203
207
these days) failed to remove curl-easy handle from a curlm session,
204
208
which led to unnecessary API failures.
205
- (merge 2abc848 ew/http-do-not-forget-to-call-curl-multi-remove-handle later to maint).
206
209
207
210
* There were numerous corner cases in which the configuration files
208
211
are read and used or not read at all depending on the directory a
@@ -221,13 +224,11 @@ notes for details).
221
224
* Performance tests done via "t/perf" did not use the same set of
222
225
build configuration if the user relied on autoconf generated
223
226
configuration.
224
- (merge cd5c281 ks/perf-build-with-autoconf later to maint).
225
227
226
228
* "git format-patch --base=..." feature that was recently added
227
229
showed the base commit information after "-- " e-mail signature
228
230
line, which turned out to be inconvenient. The base information
229
231
has been moved above the signature line.
230
- (merge 480871e jt/format-patch-base-info-above-sig later to maint).
231
232
232
233
* More i18n.
233
234
(merge 43073f8 va/i18n later to maint).
@@ -239,21 +240,18 @@ notes for details).
239
240
than nice. As the underlying commands used inside "git rebase"
240
241
would fail with a more meaningful error message and advice text
241
242
when the bogus ident matters, this extra check was removed.
242
- (merge 1e461c4 jk/rebase-i-drop-ident-check later to maint).
243
243
244
244
* "git gc --aggressive" used to limit the delta-chain length to 250,
245
245
which is way too deep for gaining additional space savings and is
246
246
detrimental for runtime performance. The limit has been reduced to
247
247
50.
248
- (merge 07e7dbf jk/reduce-gc-aggressive-depth later to maint).
249
248
250
249
* Documentation for individual configuration variables to control use
251
250
of color (like `color.grep`) said that their default value is
252
251
'false', instead of saying their default is taken from `color.ui`.
253
252
When we updated the default value for color.ui from 'false' to
254
253
'auto' quite a while ago, all of them broke. This has been
255
254
corrected.
256
- (merge 14d16e2 mm/config-color-ui-default-to-auto later to maint).
257
255
258
256
* The pretty-format specifier "%C(auto)" used by the "log" family of
259
257
commands to enable coloring of the output is taught to also issue a
@@ -262,15 +260,13 @@ notes for details).
262
260
263
261
* A shell script example in check-ref-format documentation has been
264
262
fixed.
265
- (merge 92dece7 ep/doc-check-ref-format-example later to maint).
266
263
267
264
* "git checkout <word>" does not follow the usual disambiguation
268
265
rules when the <word> can be both a rev and a path, to allow
269
266
checking out a branch 'foo' in a project that happens to have a
270
267
file 'foo' in the working tree without having to disambiguate.
271
268
This was poorly documented and the check was incorrect when the
272
269
command was run from a subdirectory.
273
- (merge b829b94 nd/checkout-disambiguation later to maint).
274
270
275
271
* Some codepaths in "git diff" used regexec(3) on a buffer that was
276
272
mmap(2)ed, which may not have a terminating NUL, leading to a read
@@ -283,15 +279,12 @@ notes for details).
283
279
internal directory structure we assumed HomeBrew uses, which was a
284
280
no-no. The procedure has been updated to ask HomeBrew things we
285
281
need to know to fix this.
286
- (merge f86f49b ls/travis-homebrew-path-fix later to maint).
287
282
288
283
* When "git rebase -i" is given a broken instruction, it told the
289
284
user to fix it with "--edit-todo", but didn't say what the step
290
285
after that was (i.e. "--continue").
291
- (merge 37875b4 rt/rebase-i-broken-insn-advise later to maint).
292
286
293
287
* Documentation around tools to import from CVS was fairly outdated.
294
- (merge 106b672 jk/doc-cvs-update later to maint).
295
288
296
289
* "git clone --recurse-submodules" lost the progress eye-candy in
297
290
recent update, which has been corrected.
@@ -311,7 +304,6 @@ notes for details).
311
304
* In the codepath that comes up with the hostname to be used in an
312
305
e-mail when the user didn't tell us, we looked at ai_canonname
313
306
field in struct addrinfo without making sure it is not NULL first.
314
- (merge c375a7efa3 jk/ident-ai-canonname-could-be-null later to maint).
315
307
316
308
* "git worktree", even though it used the default_abbrev setting that
317
309
ought to be affected by core.abbrev configuration variable, ignored
@@ -361,12 +353,37 @@ notes for details).
361
353
has seen a micro-optimization.
362
354
(merge e94ce1394e sg/ref-filter-parse-optim later to maint).
363
355
356
+ * When we started cURL to talk to imap server when a new enough
357
+ version of cURL library is available, we forgot to explicitly add
358
+ imap(s):// before the destination. To some folks, that didn't work
359
+ and the library tried to make HTTP(s) requests instead.
360
+ (merge d2d07ab861 ak/curl-imap-send-explicit-scheme later to maint).
361
+
362
+ * The ./configure script generated from configure.ac was taught how
363
+ to detect support of SSL by libcurl better.
364
+ (merge 924b7eb1c9 dp/autoconf-curl-ssl later to maint).
365
+
366
+ * The command-line completion script (in contrib/) learned to
367
+ complete "git cmd ^mas<HT>" to complete the negative end of
368
+ reference to "git cmd ^master".
369
+ (merge 49416ad22a cp/completion-negative-refs later to maint).
370
+
371
+ * The existing "git fetch --depth=<n>" option was hard to use
372
+ correctly when making the history of an existing shallow clone
373
+ deeper. A new option, "--deepen=<n>", has been added to make this
374
+ easier to use. "git clone" also learned "--shallow-since=<date>"
375
+ and "--shallow-exclude=<tag>" options to make it easier to specify
376
+ "I am interested only in the recent N months worth of history" and
377
+ "Give me only the history since that version".
378
+ (merge cccf74e2da nd/shallow-deepen later to maint).
379
+
380
+ * It is a common mistake to say "git blame --reverse OLD path",
381
+ expecting that the command line is dwimmed as if asking how lines
382
+ in path in an old revision OLD have survived up to the current
383
+ commit.
384
+ (merge e1d09701a4 jc/blame-reverse later to maint).
385
+
364
386
* Other minor doc, test and build updates and code cleanups.
365
- (merge e78d57e bw/pathspec-remove-unused-extern-decl later to maint).
366
- (merge ce25e4c rs/checkout-some-states-are-const later to maint).
367
- (merge a8342a4 rs/strbuf-remove-fix later to maint).
368
- (merge b56aa5b rs/unpack-trees-reduce-file-scope-global later to maint).
369
- (merge 5efc60c mr/vcs-svn-printf-ulong later to maint).
370
387
(merge a22ae75 rs/cocci later to maint).
371
388
(merge 45ccef87b3 rs/copy-array later to maint).
372
389
(merge 8201688ecd dt/mailinfo later to maint).
0 commit comments