What's cooking (2018/05 #02)

Junio C Hamano committed May 17, 2018 at 15:00 UTC 2b048814472b7dfc0e8ca250786c59c6bf0bc10a
1 file changed +1272 -886
whats-cooking.txt
+1272 -886
@@ -1,10 +1,10 @@
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 -Subject: What's cooking in git.git (May 2018, #01; Mon, 7)
4 -X-master-at: 1f1cddd558b54bb0ce19c8ace353fd07b758510d
5 -X-next-at: d54016d9e3a3ac00b0483d3779ff96f3882b7094
3 +Subject: What's cooking in git.git (May 2018, #02; Thu, 17)
4 +X-master-at: ccdcbd54c4475c2238b310f7113ab3075b5abc9c
5 +X-next-at: 5d83f92caf205e137a75902ff5658d2d82c898c5
6
7 -What's cooking in git.git (May 2018, #01; Mon, 7)
7 +What's cooking in git.git (May 2018, #02; Thu, 17)
8 --------------------------------------------------
9
10 Here are the topics that have been cooking. Commits prefixed with
@@ -17,284 +17,839 @@ of the repositories listed at
17
18 http://git-blame.blogspot.com/p/git-public-repositories.html
19
20 +--------------------------------------------------
21 +[Graduated to "master"]
22 +
23 +* hn/sort-ls-remote (2018-04-09) 1 commit
24 + (merged to 'next' on 2018-04-30 at 244ca5d30a)
25 + + ls-remote: create '--sort' option
26 +
27 + "git ls-remote" learned an option to allow sorting its output based
28 + on the refnames being shown.
29 +
30 +
31 +* sb/object-store-replace (2018-04-12) 15 commits
32 + (merged to 'next' on 2018-04-25 at 9a213fb505)
33 + + replace-object: allow lookup_replace_object to handle arbitrary repositories
34 + + replace-object: allow do_lookup_replace_object to handle arbitrary repositories
35 + + replace-object: allow prepare_replace_object to handle arbitrary repositories
36 + + refs: allow for_each_replace_ref to handle arbitrary repositories
37 + + refs: store the main ref store inside the repository struct
38 + + replace-object: add repository argument to lookup_replace_object
39 + + replace-object: add repository argument to do_lookup_replace_object
40 + + replace-object: add repository argument to prepare_replace_object
41 + + refs: add repository argument to for_each_replace_ref
42 + + refs: add repository argument to get_main_ref_store
43 + + replace-object: check_replace_refs is safe in multi repo environment
44 + + replace-object: eliminate replace objects prepared flag
45 + + object-store: move lookup_replace_object to replace-object.h
46 + + replace-object: move replace_map to object store
47 + + replace_object: use oidmap
48 + (this branch is used by sb/object-store-alloc and sb/oid-object-info.)
49 +
50 + The effort to pass the repository in-core structure throughout the
51 + API continues. This round deals with the code that implements the
52 + refs/replace/ mechanism.
53 +
54 +
55 +* ab/git-svn-get-record-typofix (2018-04-09) 1 commit
56 + (merged to 'next' on 2018-04-30 at 23f875f6b9)
57 + + git-svn: avoid warning on undef readline()
58 +
59 + "git svn" had a minor thinko/typo which has been fixed.
60 +
61 +
62 +* ab/nuke-emacs-contrib (2018-04-16) 1 commit
63 + (merged to 'next' on 2018-04-25 at 9b133d8a65)
64 + + git{,-blame}.el: remove old bitrotting Emacs code
65 +
66 + The scripts in contrib/emacs/ have outlived their usefulness and
67 + have been replaced with a stub that errors out and tells the user
68 + there are replacements.
69 +
70 +
71 +* ab/simplify-perl-makefile (2018-04-19) 2 commits
72 + (merged to 'next' on 2018-04-25 at 906cf21682)
73 + + Makefile: mark perllibdir as a .PHONY target
74 + (merged to 'next' on 2018-04-17 at 4448756934)
75 + + perl: fix installing modules from contrib
76 +
77 + Recent simplification of build procedure forgot a bit of tweak to
78 + the build procedure of contrib/mw-to-git/
79 +
80 +
81 +* bt/gpg-interface (2018-04-16) 7 commits
82 + (merged to 'next' on 2018-04-30 at 50c507b7d8)
83 + + gpg-interface: find the last gpg signature line
84 + + gpg-interface: extract gpg line matching helper
85 + + gpg-interface: fix const-correctness of "eol" pointer
86 + + gpg-interface: use size_t for signature buffer size
87 + + gpg-interface: modernize function declarations
88 + + gpg-interface: handle bool user.signingkey
89 + + t7004: fix mistaken tag name
90 +
91 + What is queued here is only the obviously correct and
92 + uncontroversial code clean-up part, which is an earlier 7 patches,
93 + of a larger series.
94 +
95 + The remainder that is not queued introduces a few configuration
96 + variables to deal with e-signature backends with different
97 + signature format.
98 +
99 +
100 +* bw/protocol-v2 (2018-03-15) 35 commits
101 + (merged to 'next' on 2018-04-11 at 23ee234a2c)
102 + + remote-curl: don't request v2 when pushing
103 + + remote-curl: implement stateless-connect command
104 + + http: eliminate "# service" line when using protocol v2
105 + + http: don't always add Git-Protocol header
106 + + http: allow providing extra headers for http requests
107 + + remote-curl: store the protocol version the server responded with
108 + + remote-curl: create copy of the service name
109 + + pkt-line: add packet_buf_write_len function
110 + + transport-helper: introduce stateless-connect
111 + + transport-helper: refactor process_connect_service
112 + + transport-helper: remove name parameter
113 + + connect: don't request v2 when pushing
114 + + connect: refactor git_connect to only get the protocol version once
115 + + fetch-pack: support shallow requests
116 + + fetch-pack: perform a fetch using v2
117 + + upload-pack: introduce fetch server command
118 + + push: pass ref prefixes when pushing
119 + + fetch: pass ref prefixes when fetching
120 + + ls-remote: pass ref prefixes when requesting a remote's refs
121 + + transport: convert transport_get_remote_refs to take a list of ref prefixes
122 + + transport: convert get_refs_list to take a list of ref prefixes
123 + + connect: request remote refs using v2
124 + + ls-refs: introduce ls-refs server command
125 + + serve: introduce git-serve
126 + + test-pkt-line: introduce a packet-line test helper
127 + + protocol: introduce enum protocol_version value protocol_v2
128 + + transport: store protocol version
129 + + connect: discover protocol version outside of get_remote_heads
130 + + connect: convert get_remote_heads to use struct packet_reader
131 + + transport: use get_refs_via_connect to get refs
132 + + upload-pack: factor out processing lines
133 + + upload-pack: convert to a builtin
134 + + pkt-line: add delim packet support
135 + + pkt-line: allow peeking a packet line without consuming it
136 + + pkt-line: introduce packet_read_with_status
137 + (this branch is used by bw/server-options and jt/partial-clone-proto-v2.)
138 +
139 + The beginning of the next-gen transfer protocol.
140 +
141 +
142 +* dj/runtime-prefix (2018-04-24) 7 commits
143 + (merged to 'next' on 2018-04-25 at e7e635a70e)
144 + + Makefile: quote $INSTLIBDIR when passing it to sed
145 + + Makefile: remove unused @@PERLLIBDIR@@ substitution variable
146 + (merged to 'next' on 2018-04-17 at a69aaa7a22)
147 + + mingw/msvc: use the new-style RUNTIME_PREFIX helper
148 + + exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
149 + + exec_cmd: RUNTIME_PREFIX on some POSIX systems
150 + + Makefile: add Perl runtime prefix support
151 + + Makefile: generate Perl header from template file
152 + (this branch is tangled with js/runtime-prefix.)
153 +
154 + A build-time option has been added to allow Git to be told to refer
155 + to its associated files relative to the main binary, in the same
156 + way that has been possible on Windows for quite some time, for
157 + Linux, BSDs and Darwin.
158 +
159 +
160 +* ds/commit-graph (2018-04-11) 16 commits
161 + (merged to 'next' on 2018-04-25 at 18af3d28d9)
162 + + commit-graph: implement "--append" option
163 + + commit-graph: build graph from starting commits
164 + + commit-graph: read only from specific pack-indexes
165 + + commit: integrate commit graph with commit parsing
166 + + commit-graph: close under reachability
167 + + commit-graph: add core.commitGraph setting
168 + + commit-graph: implement git commit-graph read
169 + + commit-graph: implement git-commit-graph write
170 + + commit-graph: implement write_commit_graph()
171 + + commit-graph: create git-commit-graph builtin
172 + + graph: add commit graph design document
173 + + commit-graph: add format document
174 + + csum-file: refactor finalize_hashfile() method
175 + + csum-file: rename hashclose() to finalize_hashfile()
176 + + Merge branch 'jk/cached-commit-buffer' into HEAD
177 + + Merge branch 'jt/binsearch-with-fanout' into HEAD
178 + (this branch is used by ds/generation-numbers and ds/lazy-load-trees.)
179 +
180 + Precompute and store information necessary for ancestry traversal
181 + in a separate file to optimize graph walking.
182 +
183 + Will merge to 'master'.
184 +
185 +
186 +* jc/parseopt-expiry-errors (2018-04-23) 2 commits
187 + (merged to 'next' on 2018-04-30 at 637085f3d8)
188 + + parseopt: handle malformed --expire arguments more nicely
189 + + gc: do not upcase error message shown with die()
190 +
191 + "git gc --prune=nonsense" spent long time repacking and then
192 + silently failed when underlying "git prune --expire=nonsense"
193 + failed to parse its command line. This has been corrected.
194 +
195 +
196 +* js/colored-push-errors (2018-04-24) 4 commits
197 + (merged to 'next' on 2018-04-30 at 31076c52a2)
198 + + config: document the settings to colorize push errors/hints
199 + + push: test to verify that push errors are colored
200 + + push: colorize errors
201 + + color: introduce support for colorizing stderr
202 +
203 + Error messages from "git push" can be painted for more visibility.
204 +
205 +
206 +* js/empty-config-section-fix (2018-04-09) 15 commits
207 + (merged to 'next' on 2018-04-25 at 1690df3e5f)
208 + + git_config_set: reuse empty sections
209 + + git config --unset: remove empty sections (in the common case)
210 + + git_config_set: make use of the config parser's event stream
211 + + git_config_set: do not use a state machine
212 + + config_set_store: rename some fields for consistency
213 + + config: avoid using the global variable `store`
214 + + config: introduce an optional event stream while parsing
215 + + t1300: `--unset-all` can leave an empty section behind (bug)
216 + + t1300: add a few more hairy examples of sections becoming empty
217 + + t1300: remove unreasonable expectation from TODO
218 + + t1300: avoid relying on a bug
219 + + config --replace-all: avoid extra line breaks
220 + + t1300: demonstrate that --replace-all can "invent" newlines
221 + + t1300: rename it to reflect that `repo-config` was deprecated
222 + + git_config_set: fix off-by-two
223 +
224 + "git config --unset a.b", when "a.b" is the last variable in an
225 + otherwise empty section "a", left an empty section "a" behind, and
226 + worse yet, a subsequent "git config a.c value" did not reuse that
227 + empty shell and instead created a new one. These have been
228 + (partially) corrected.
229 +
230 +
231 +* js/ident-date-fix (2018-04-19) 1 commit
232 + (merged to 'next' on 2018-04-30 at d50ec2f4c1)
233 + + sequencer: reset the committer date before commits
234 +
235 + During a "rebase -i" session, the code could give older timestamp
236 + to commits created by later "pick" than an earlier "reword", which
237 + has been corrected.
238 +
239 +
240 +* js/runtime-prefix (2018-04-24) 8 commits
241 + (merged to 'next' on 2018-04-30 at c6cfccf40e)
242 + + Avoid multiple PREFIX definitions
243 + + git_setup_gettext: plug memory leak
244 + + gettext: avoid initialization if the locale dir is not present
245 + (merged to 'next' on 2018-04-17 at a69aaa7a22)
246 + + mingw/msvc: use the new-style RUNTIME_PREFIX helper
247 + + exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
248 + + exec_cmd: RUNTIME_PREFIX on some POSIX systems
249 + + Makefile: add Perl runtime prefix support
250 + + Makefile: generate Perl header from template file
251 + (this branch is tangled with dj/runtime-prefix.)
252 +
253 +
254 +* ls/checkout-encoding (2018-04-16) 10 commits
255 + (merged to 'next' on 2018-04-25 at e0f8554b2a)
256 + + convert: add round trip check based on 'core.checkRoundtripEncoding'
257 + + convert: add tracing for 'working-tree-encoding' attribute
258 + + convert: check for detectable errors in UTF encodings
259 + + convert: add 'working-tree-encoding' attribute
260 + + utf8: add function to detect a missing UTF-16/32 BOM
261 + + utf8: add function to detect prohibited UTF-16/32 BOM
262 + + utf8: teach same_encoding() alternative UTF encoding names
263 + + strbuf: add a case insensitive starts_with()
264 + + strbuf: add xstrdup_toupper()
265 + + strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
266 +
267 + The new "checkout-encoding" attribute can ask Git to convert the
268 + contents to the specified encoding when checking out to the working
269 + tree (and the other way around when checking in).
270 +
271 +
272 +* ma/double-dashes-in-docs (2018-04-18) 4 commits
273 + (merged to 'next' on 2018-04-25 at aaac2dc63c)
274 + + git-submodule.txt: quote usage in monospace, drop backslash
275 + + git-[short]log.txt: unify quoted standalone --
276 + + doc: convert [\--] to [--]
277 + + doc: convert \--option to --option
278 +
279 + Doc formatting updates.
280 +
281 +
282 +* ma/fast-export-skip-merge-fix (2018-04-21) 1 commit
283 + (merged to 'next' on 2018-04-30 at f7fca02ab1)
284 + + fast-export: fix regression skipping some merge-commits
285 +
286 + "git fast-export" had a regression in v2.15.0 era where it skipped
287 + some merge commits in certain cases, which has been corrected.
288 +
289 +
290 +* ma/http-walker-no-partial (2018-04-24) 2 commits
291 + (merged to 'next' on 2018-04-30 at 4582c99ba8)
292 + + walker: drop fields of `struct walker` which are always 1
293 + + http-fetch: make `-a` standard behavior
294 +
295 + "git http-fetch" (deprecated) had an optional and experimental
296 + "feature" to fetch only commits and/or trees, which nobody used.
297 + This has been removed.
298 +
299 +
300 +* nd/submodule-status-fix (2018-04-19) 1 commit
301 + (merged to 'next' on 2018-04-30 at 34d1f9ca83)
302 + + submodule--helper: don't print null in 'submodule status'
303 +
304 + "git submodule status" did not check the symbolic revision name it
305 + computed for the submodule HEAD is not the NULL, and threw it at
306 + printf routines, which has been corrected.
307 +
308 +
309 +* nd/warn-more-for-devs (2018-04-16) 4 commits
310 + (merged to 'next' on 2018-04-25 at 2978e61414)
311 + + Makefile: add a DEVOPTS to get all of -Wextra
312 + + Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
313 + + Makefile: detect compiler and enable more warnings in DEVELOPER=1
314 + + connect.c: mark die_initial_contact() NORETURN
315 +
316 + The build procedure "make DEVELOPER=YesPlease" learned to enable a
317 + bit more warning options depending on the compiler used to help
318 + developers more. There also is "make DEVOPTS=tokens" knob
319 + available now, for those who want to help fixing warnings we
320 + usually ignore, for example.
321 +
322 +
323 +* ot/libify-get-ref-atom-value (2018-03-29) 6 commits
324 + (merged to 'next' on 2018-04-25 at 056bcaa69c)
325 + + ref-filter: libify get_ref_atom_value()
326 + + ref-filter: add return value to parsers
327 + + ref-filter: change parsing function error handling
328 + + ref-filter: add return value && strbuf to handlers
329 + + ref-filter: start adding strbufs with errors
330 + + ref-filter: add shortcut to work with strbufs
331 +
332 + Code restructuring, in preparation for further work.
333 +
334 +
335 +* sa/send-email-dedup-some-headers (2018-04-19) 1 commit
336 + (merged to 'next' on 2018-04-30 at 2a1fd8217e)
337 + + send-email: avoid duplicate In-Reply-To/References
338 +
339 + When fed input that already has In-Reply-To: and/or References:
340 + headers and told to add the same information, "git send-email"
341 + added these headers separately, instead of appending to an existing
342 + one, which is a violation of the RFC. This has been corrected.
343 +
344 +
345 +* sb/submodule-move-nested (2018-03-29) 6 commits
346 + (merged to 'next' on 2018-04-25 at 86b177433a)
347 + + submodule: fixup nested submodules after moving the submodule
348 + + submodule-config: remove submodule_from_cache
349 + + submodule-config: add repository argument to submodule_from_{name, path}
350 + + submodule-config: allow submodule_free to handle arbitrary repositories
351 + + grep: remove "repo" arg from non-supporting funcs
352 + + submodule.h: drop declaration of connect_work_tree_and_git_dir
353 +
354 + Moving a submodule that itself has submodule in it with "git mv"
355 + forgot to make necessary adjustment to the nested sub-submodules;
356 + now the codepath learned to recurse into the submodules.
357 +
358 +
359 +* sb/worktree-remove-opt-force (2018-04-18) 1 commit
360 + (merged to 'next' on 2018-04-25 at 0367d52a4b)
361 + + worktree: accept -f as short for --force for removal
362 +
363 + "git worktree remove" learned that "-f" is a shorthand for
364 + "--force" option, just like for "git worktree add".
365 +
366 +
367 +* sg/completion-clear-cached (2018-04-18) 1 commit
368 + (merged to 'next' on 2018-04-25 at 9178da6c3d)
369 + + completion: reduce overhead of clearing cached --options
370 +
371 + The completion script (in contrib/) learned to clear cached list of
372 + command line options upon dot-sourcing it again in a more efficient
373 + way.
374 +
375 +
376 +* sg/doc-gc-quote-mismatch-fix (2018-04-18) 1 commit
377 + (merged to 'next' on 2018-04-25 at bc3d1abf45)
378 + + docs/git-gc: fix minor rendering issue
379 +
380 + Doc formatting fix.
381 +
382 +
383 +* so/glossary-ancestor (2018-04-17) 1 commit
384 + (merged to 'next' on 2018-04-25 at 0a849fee00)
385 + + glossary: substitute "ancestor" for "direct ancestor" in 'push' description.
386 +
387 + Docfix.
388 +
389 +
390 +* tb/config-default (2018-04-23) 3 commits
391 + (merged to 'next' on 2018-04-25 at 59bb6beb2a)
392 + + builtin/config: introduce `color` type specifier
393 + + config.c: introduce 'git_config_color' to parse ANSI colors
394 + + builtin/config: introduce `--default`
395 + (this branch uses tb/config-type.)
396 +
397 + "git config --get" learned the "--default" option, to help the
398 + calling script. Building on top of the tb/config-type topic, the
399 + "git config" learns "--type=color" type. Taken together, you can
400 + do things like "git config --get foo.color --default blue" and get
401 + the ANSI color sequence for the color given to foo.color variable,
402 + or "blue" if the variable does not exist.
403 +
404 +
405 +* tb/config-type (2018-04-19) 2 commits
406 + (merged to 'next' on 2018-04-25 at fe69e93c82)
407 + + builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
408 + + builtin/config.c: treat type specifiers singularly
409 + (this branch is used by tb/config-default.)
410 +
411 + The "git config" command uses separate options e.g. "--int",
412 + "--bool", etc. to specify what type the caller wants the value to
413 + be interpreted as. A new "--type=<typename>" option has been
414 + introduced, which would make it cleaner to define new types.
415 +
416 +
417 +* tg/demote-stash-save-in-completion (2018-04-20) 2 commits
418 + (merged to 'next' on 2018-04-30 at 93d0af5375)
419 + + completion: make stash -p and alias for stash push -p
420 + + completion: stop showing 'save' for stash by default
421 +
422 + The command line completion (in contrib/) has been taught that "git
423 + stash save" has been deprecated ("git stash push" is the preferred
424 + spelling in the new world) and does not offer it as a possible
425 + completion candidate when "git stash push" can be.
426 +
427 +
428 +* tq/t1510 (2018-04-17) 1 commit
429 + (merged to 'next' on 2018-04-25 at 5710c81979)
430 + + t1510-repo-setup.sh: remove useless mkdir
431 +
432 + Test cleanup.
433 +
434 +
435 +* tz/doc-git-urls-reference (2018-04-20) 1 commit
436 + (merged to 'next' on 2018-04-30 at 39926c99fd)
437 + + doc/clone: update caption for GIT URLS cross-reference
438 +
439 + Doc fix.
440 +
441 --------------------------------------------------
442 [New Topics]
443
23 -* tb/test-apfs-utf8-normalization (2018-05-02) 1 commit
24 - - test: correct detection of UTF8_NFD_TO_NFC for APFS
444 +* hn/sort-ls-remote (2018-05-14) 1 commit
445 + (merged to 'next' on 2018-05-16 at 64336850f2)
446 + + t5512: run git fetch inside test
447 +
448 + Hotfix.
449 +
450 + Will merge to 'master'.
451
26 - A test to see if the filesystem normalizes UTF-8 filename has been
27 - updated to check what we need to know in a more direct way, i.e. a
28 - path created in NFC form can be accessed with NFD form (or vice
29 - versa) to cope with APFS as well as HFS.
452 +
453 +* sb/object-store-replace (2018-05-10) 2 commits
454 + (merged to 'next' on 2018-05-16 at 41bbedcc81)
455 + + replace-object.c: remove the_repository from prepare_replace_object
456 + + object.c: free replace map in raw_object_store_clear
457 +
458 + Hotfix.
459 +
460 + Will merge to 'master'.
461 +
462 +
463 +* sg/t6500-no-redirect-of-stdin (2018-05-09) 1 commit
464 + - t6050-replace: don't disable stdin for the whole test script
465 +
466 + Test cleanup.
467
468 Will merge to 'next'.
469
470
34 -* ab/get-short-oid (2018-05-02) 12 commits
35 - - get_short_oid: document & warn if we ignore the type selector
36 - - config doc: document core.disambiguate
37 - - get_short_oid / peel_onion: ^{commit} should be commit, not committish
38 - - get_short_oid / peel_onion: ^{tree} should be tree, not treeish
39 - - get_short_oid: learn to disambiguate by ^{blob}
40 - - get_short_oid: learn to disambiguate by ^{tag}
41 - - get_short_oid: sort ambiguous objects by type, then SHA-1
42 - - sha1-name.c: move around the collect_ambiguous() function
43 - - cache.h: add comment explaining the order in object_type
44 - - git-p4: change "commitish" typo to "committish"
45 - - sha1-array.h: align function arguments
46 - - sha1-name.c: remove stray newline
471 +* ao/config-api-doc (2018-05-11) 1 commit
472 + - doc: fix config API documentation about config_with_options
473 +
474 + Doc update.
475 +
476 + Will merge to 'next'.
477 +
478 +
479 +* bc/hash-independent-tests (2018-05-16) 28 commits
480 + - t5300: abstract away SHA-1-specific constants
481 + - t4208: abstract away SHA-1-specific constants
482 + - t4045: abstract away SHA-1-specific constants
483 + - t4042: abstract away SHA-1-specific constants
484 + - t4205: sort log output in a hash-independent way
485 + - t/lib-diff-alternative: abstract away SHA-1-specific constants
486 + - t4030: abstract away SHA-1-specific constants
487 + - t4029: abstract away SHA-1-specific constants
488 + - t4029: fix test indentation
489 + - t4022: abstract away SHA-1-specific constants
490 + - t4020: abstract away SHA-1-specific constants
491 + - t4014: abstract away SHA-1-specific constants
492 + - t4008: abstract away SHA-1-specific constants
493 + - t4007: abstract away SHA-1-specific constants
494 + - t3905: abstract away SHA-1-specific constants
495 + - t3702: abstract away SHA-1-specific constants
496 + - t3103: abstract away SHA-1-specific constants
497 + - t2203: abstract away SHA-1-specific constants
498 + - t: skip pack tests if not using SHA-1
499 + - t4044: skip test if not using SHA-1
500 + - t1512: skip test if not using SHA-1
501 + - t1007: annotate with SHA1 prerequisite
502 + - t0000: annotate with SHA1 prerequisite
503 + - t: switch $_x40 to $OID_REGEX
504 + - t/test-lib: introduce OID_REGEX
505 + - t: switch $_z40 to $ZERO_OID
506 + - t/test-lib: introduce ZERO_OID
507 + - t/test-lib: add an SHA1 prerequisite
508 +
509 + Many tests hardcode the raw object names, which would change once
510 + we migrate away from SHA-1. While some of them must test against
511 + exact object names, most of them do not have to use hardcoded
512 + constants in the test. The latter kind of tests have been updated
513 + to test the moral equivalent of the original without hardcoding the
514 + actual object names.
515 +
516 + Will merge to 'next'.
517
518
49 -* ah/misc-doc-updates (2018-05-06) 7 commits
50 - - doc: normalize [--options] to [options] in git-diff
51 - - doc: add note about shell quoting to revision.txt
52 - - git-svn: remove ''--add-author-from' for 'commit-diff'
53 - - doc: add '-d' and '-o' for 'git push'
54 - - doc: clarify ignore rules for git ls-files
55 - - doc: align 'diff --no-index' in text and synopsis
56 - - doc: improve formatting in githooks.txt
519 +* bp/status-rename-config (2018-05-13) 1 commit
520 + - add status config and command line options for rename detection
521 + (this branch uses em/status-rename-config.)
522
58 - Misc doc fixes.
523 + "git status" learned to honor a new status.renames configuration to
524 + skip rename detection, which could be useful for those who want to
525 + do so without disabling the default rename detection done by the
526 + "git diff" command.
527
528 Will merge to 'next'.
529
530
63 -* bc/format-patch-cover-no-attach (2018-05-02) 1 commit
64 - - format-patch: make cover letters always text/plain
65 -
66 - "git format-patch --cover --attach" created a broken MIME multipart
67 - message for the cover letter, which has been fixed by keeping the
68 - cover letter as plain text file.
531 +* bw/refspec-api (2018-05-16) 35 commits
532 + - submodule: convert push_unpushed_submodules to take a struct refspec
533 + - remote: convert check_push_refs to take a struct refspec
534 + - remote: convert match_push_refs to take a struct refspec
535 + - http-push: store refspecs in a struct refspec
536 + - transport: remove transport_verify_remote_names
537 + - send-pack: store refspecs in a struct refspec
538 + - transport: convert transport_push to take a struct refspec
539 + - push: convert to use struct refspec
540 + - push: check for errors earlier
541 + - remote: convert match_explicit_refs to take a struct refspec
542 + - remote: convert get_ref_match to take a struct refspec
543 + - remote: convert query_refspecs to take a struct refspec
544 + - remote: convert apply_refspecs to take a struct refspec
545 + - remote: convert get_stale_heads to take a struct refspec
546 + - fetch: convert prune_refs to take a struct refspec
547 + - fetch: convert get_ref_map to take a struct refspec
548 + - fetch: convert do_fetch to take a struct refspec
549 + - refspec: remove the deprecated functions
550 + - fetch: convert refmap to use struct refspec
551 + - fetch: convert fetch_one to use struct refspec
552 + - transport-helper: convert to use struct refspec
553 + - remote: convert fetch refspecs to struct refspec
554 + - remote: convert push refspecs to struct refspec
555 + - fast-export: convert to use struct refspec
556 + - clone: convert cmd_clone to use refspec_item_init
557 + - remote: convert match_push_refs to use struct refspec
558 + - remote: convert check_push_refs to use struct refspec
559 + - transport: convert transport_push to use struct refspec
560 + - pull: convert get_tracking_branch to use refspec_item_init
561 + - submodule--helper: convert push_check to use struct refspec
562 + - refspec: convert valid_fetch_refspec to use parse_refspec
563 + - refspec: introduce struct refspec
564 + - refspec: rename struct refspec to struct refspec_item
565 + - refspec: factor out parsing a single refspec
566 + - refspec: move refspec parsing logic into its own file
567 +
568 + An API update for handling of refspecs used by fetch & push
569 + codepath.
570
571 Will merge to 'next'.
572
573
73 -* bp/test-drop-caches (2018-05-04) 1 commit
74 - - test-drop-caches: simplify delay loading of NtSetSystemInformation
574 +* ds/commit-graph-lockfile-fix (2018-05-11) 1 commit
575 + - commit-graph: fix UX issue when .lock file exists
576 + (this branch uses ds/generation-numbers and ds/lazy-load-trees.)
577
76 - Code simplification.
578 + Update to ds/generation-numbers topic.
579 +
580 +
581 +* jk/apply-p-doc (2018-05-11) 1 commit
582 + - apply: clarify "-p" documentation
583 +
584 + Doc update.
585
586 Will merge to 'next'.
587
588
81 -* cc/perf-bisect (2018-05-06) 1 commit
82 - - perf/bisect_run_script: disable codespeed
589 +* jk/unavailable-can-be-missing (2018-05-13) 4 commits
590 + - mark_parents_uninteresting(): avoid most allocation
591 + - mark_parents_uninteresting(): replace list with stack
592 + - mark_parents_uninteresting(): drop missing object check
593 + - mark_tree_contents_uninteresting(): drop missing object check
594
84 - Performance test updates.
595 + Code clean-up to turn history traversal more robust in a
596 + semi-corrupt repository.
597
598 Will merge to 'next'.
599
600
89 -* cf/submodule-progress-dissociate (2018-05-04) 3 commits
90 - - submodule: add --dissociate option to add/update commands
91 - - submodule: add --progress option to add command
92 - - submodule: clean up subsititions in script
601 +* lm/credential-netrc (2018-05-14) 2 commits
602 + - git-credential-netrc: accept gpg option
603 + - git-credential-netrc: adapt to test framework for git
604
94 - "git submodule update" and "git submodule add" supported the
95 - "--reference" option to borrow objects from a neighbouring local
96 - repository like "git clone" does, but lacked the more recent
97 - invention "--dissociate". Also "git submodule add" has been taught
98 - to take the "--progress" option.
605 + Update credential-netrc helper (in contrib/) to allow customizing
606 + the GPG used to decrypt the encrypted .netrc file.
607
100 - Is this ready for 'next'? Should "git submodule -h" list the new
101 - options in its short help?
608 + Will merge to 'next'.
609
610
104 -* dd/send-email-reedit (2018-05-06) 1 commit
105 - - git-send-email: allow re-editing of message
611 +* ma/create-pseudoref-with-null-old-oid (2018-05-13) 3 commits
612 + - refs: handle zero oid for pseudorefs
613 + - t1400: add tests around adding/deleting pseudorefs
614 + - refs.c: refer to "object ID", not "sha1", in error messages
615
107 - "git send-email" can sometimes offer confirmation dialog "Send this
108 - email?" with choices 'Yes', 'No', 'Quit', and 'All'. A new action
109 - 'Edit' has been added to this dialog's choice.
110 -
111 - Waiting briefly for an ack or two.
112 - cf. <xmqq4ljlsahj.fsf@gitster-ct.c.googlers.com>
616 + "git update-ref A B" is supposed to ensure that ref A does not yet
617 + exist when B is a NULL OID, but this check was not done correctly
618 + for pseudo-refs outside refs/ hierarchy, e.g. MERGE_HEAD.
619
620 + Will merge to 'next'.
621
115 -* em/status-rename-config (2018-05-06) 1 commit
116 - - wt-status: use settings from git_diff_ui_config
622
118 - "git status" learned to pay attention to UI related diff
119 - configuration variables such as diff.renames.
623 +* ma/lockfile-cleanup (2018-05-10) 5 commits
624 + - lock_file: move static locks into functions
625 + - lock_file: make function-local locks non-static
626 + - refs.c: do not die if locking fails in `delete_pseudoref()`
627 + - refs.c: do not die if locking fails in `write_pseudoref()`
628 + - t/helper/test-write-cache: clean up lock-handling
629 +
630 + Code clean-up to adjust to a more recent lockfile API convention that
631 + allows lockfile instances kept on the stack.
632
633 Will merge to 'next'.
634
635
124 -* jm/cache-entry-from-mem-pool (2018-05-02) 5 commits
125 - - block alloc: add validations around cache_entry lifecyle
126 - - block alloc: allocate cache entries from mem_pool
127 - - mem-pool: fill out functionality
128 - - block alloc: add lifecycle APIs for cache_entry structs
129 - - read-cache: teach refresh_cache_entry() to take istate
636 +* nd/commit-util-to-slab (2018-05-14) 14 commits
637 + - commit.h: delete 'util' field in struct commit
638 + - merge: use commit-slab in merge remote desc instead of commit->util
639 + - log: use commit-slab in prepare_bases() instead of commit->util
640 + - show-branch: use commit-slab for commit-name instead of commit->util
641 + - name-rev: use commit-slab for rev-name instead of commit->util
642 + - bisect.c: use commit-slab for commit weight instead of commit->util
643 + - revision.c: use commit-slab for show_source
644 + - sequencer.c: use commit-slab to associate todo items to commits
645 + - sequencer.c: use commit-slab to mark seen commits
646 + - shallow.c: use commit-slab for commit depth instead of commit->util
647 + - describe: use commit-slab for commit names instead of commit->util
648 + - blame: use commit-slab for blame suspects instead of commit->util
649 + - commit-slab: support shared commit-slab
650 + - commit-slab.h: code split
651 +
652 + The in-core "commit" object had an all-purpose "void *util" field,
653 + which was tricky to use especially in library-ish part of the
654 + code. All of the existing uses of the field has been migrated to a
655 + more dedicated "commit-slab" mechanism and the field is eliminated.
656
131 - For a large tree, the index needs to hold many cache entries
132 - allocated on heap. These cache entries are now allocated out of a
133 - dedicated memory pool to amortize malloc(3) overhead.
657 + Will merge to 'next'.
658
135 - Needs review.
136 - Is the "caller always knows which pool an entry came from and calls
137 - the right kind of free" a feasible approach?
659
660 +* nd/diff-apply-ita (2018-05-14) 2 commits
661 + - apply: add --intent-to-add
662 + - diff: turn --ita-invisible-in-index on by default
663
140 -* js/branch-diff (2018-05-06) 18 commits
141 - - completion: support branch-diff
142 - - branch-diff: add a man page
143 - - branch-diff --dual-color: work around bogus white-space warning
144 - - branch-diff: offer to dual-color the diffs
145 - - diff: add an internal option to dual-color diffs of diffs
146 - - color: provide inverted colors, too
147 - - branch-diff: use color for the commit pairs
148 - - branch-diff: add tests
149 - - branch-diff: do not show "function names" in hunk headers
150 - - branch-diff: adjust the output of the commit pairs
151 - - branch-diff: suppress the diff headers
152 - - branch-diff: indent the diffs just like tbdiff
153 - - branch-diff: right-trim commit messages
154 - - branch-diff: also show the diff between patches
155 - - branch-diff: improve the order of the shown commits
156 - - branch-diff: first rudimentary implementation
157 - - Add a new builtin: branch-diff
158 - - Add a function to solve least-cost assignment problems
664 + "git diff" compares the index and the working tree. For paths
665 + added with intent-to-add bit, the command shows the full contents
666 + of them as added, but the paths themselves were not marked as new
667 + files. They are now shown as new by default.
668
160 - "git tbdiff" that lets us compare individual patches in two
161 - iterations of a topic has been rewritten and made into a built-in
162 - command.
669 + "git apply" learned the "--intent-to-add" option so that an
670 + otherwise working-tree-only application of a patch will add new
671 + paths to the index marked with the "intent-to-add" bit.
672
164 - Expecting a reroll.
165 - cf. <nycvar.QRO.7.76.6.1805052351560.77@tvgsbejvaqbjf.bet>
673 + Will merge to and cook in 'next'.
674
675
168 -* js/sequencer-and-root-commits (2018-05-06) 6 commits
169 - - rebase --rebase-merges: root commits can be cousins, too
170 - - rebase --rebase-merges: a "merge" into a new root is a fast-forward
171 - - sequencer: allow introducing new root commits
172 - - rebase -i --root: let the sequencer handle even the initial part
173 - - sequencer: learn about the special "fake root commit" handling
174 - - sequencer: extract helper to update active_cache_tree
175 - (this branch uses js/rebase-recreate-merge.)
676 +* nd/pack-format-doc (2018-05-13) 1 commit
677 + - pack-format.txt: more details on pack file format
678
177 - The implementation of "git rebase -i --root" has been updaed to use
178 - the sequencer machinery more.
679 + Doc update.
680
681 Will merge to 'next'.
682
683
183 -* js/use-bug-macro (2018-05-06) 4 commits
184 - - Convert remaining die*(BUG) messages
185 - - Replace all die("BUG: ...") calls by BUG() ones
186 - - run-command: use BUG() to report bugs, not die()
187 - - test-tool: help verifying BUG() code paths
684 +* nd/pack-struct-commit (2018-05-13) 1 commit
685 + - commit.h: rearrange 'index' to shrink struct commit
686
687 + Memory optimization.
688
190 -* jt/partial-clone-proto-v2 (2018-05-06) 4 commits
191 - - {fetch,upload}-pack: support filter in protocol v2
192 - - upload-pack: read config when serving protocol v2
193 - - upload-pack: fix error message typo
194 - - Merge branch 'bw/protocol-v2' into jt/partial-clone-proto-v2
195 - (this branch uses bw/protocol-v2; is tangled with bw/server-options.)
689 + Will merge to 'next'.
690
197 - Transfer protocol v2 learned to support the partial clone.
691 +
692 +* nd/repo-clear-keep-the-index (2018-05-10) 1 commit
693 + - repository: fix free problem with repo_clear(the_repository)
694 +
695 + the_repository->index is not a allocated piece of memory but
696 + repo_clear() indiscriminately attempted to free(3) it, which has
697 + been corrected.
698
699 Will merge to 'next'.
700
701
202 -* ma/doc-expand-tabs (2018-05-02) 1 commit
203 - - revisions.txt: expand tabs to spaces in diagram
702 +* nd/term-columns (2018-05-13) 2 commits
703 + - column: fix off-by-one default width
704 + - pager: set COLUMNS to term_columns()
705
205 - Fix one instance of asciidoctor's misformatting by expanding a tab
206 - into spaces in a literal block.
706 + The code did not propagate the terminal width to subprocesses via
707 + COLUMNS environment variable, which it now does. This caused
708 + trouble to "git column" helper subprocess when "git tag --column=row"
709 + tried to list the existing tags on a display with non-default width.
710
208 - Will discard. This approach is less maintainable than the approach
209 - taken by bc/asciidoctor-tab-width topic.
711 + Will merge to 'next'.
712
713
212 -* nd/completion-aliasfiletype-typofix (2018-05-06) 1 commit
213 - - completion: fix misspelled config key aliasesfiletype
714 +* nd/travis-gcc-7 (2018-05-14) 1 commit
715 + - travis-ci: run gcc-7 on linux-gcc jobs
716
215 - Typofix.
717 + Developer support. Use newer GCC on one of the builds done at
718 + TravisCI.org to get more warnings and errors diagnosed.
719
720 Will merge to 'next'.
721
722
220 -* nd/doc-header (2018-05-02) 1 commit
221 - - doc: keep first level section header in upper case
723 +* rs/no-null-ptr-arith-in-fast-export (2018-05-10) 1 commit
724 + - fast-export: avoid NULL pointer arithmetic
725
223 - Doc formatting fix.
726 + Code clean-up to avoid non-standard-conformant pointer arithmetic.
727
728 Will merge to 'next'.
729
730
228 -* nd/pack-unreachable-objects-doc (2018-05-06) 1 commit
229 - - pack-objects: validation and documentation about unreachable options
230 -
231 - Doc update.
731 +* sb/grep-die-on-unreadable-index (2018-05-16) 1 commit
732 + - grep: handle corrupt index files early
733 +
734 +
735 +* sb/object-store-grafts (2018-05-16) 19 commits
736 + - commit: allow lookup_commit_graft to handle arbitrary repositories
737 + - commit: allow prepare_commit_graft to handle arbitrary repositories
738 + - shallow: migrate shallow information into the object parser
739 + - path.c: migrate git_path_ to take a repository argument
740 + - cache: convert get_graft_file to handle arbitrary repositories
741 + - commit: convert read_graft_file to handle arbitrary repositories
742 + - commit: convert register_commit_graft to handle arbitrary repositories
743 + - commit: convert commit_graft_pos() to handle arbitrary repositories
744 + - shallow: add repository argument to is_repository_shallow
745 + - shallow: add repository argument to check_shallow_file_for_update
746 + - shallow: add repository argument to register_shallow
747 + - shallow: add repository argument to set_alternate_shallow_file
748 + - commit: add repository argument to lookup_commit_graft
749 + - commit: add repository argument to prepare_commit_graft
750 + - commit: add repository argument to read_graft_file
751 + - commit: add repository argument to register_commit_graft
752 + - commit: add repository argument to commit_graft_pos
753 + - object: move grafts to object parser
754 + - object-store: move object access functions to object-store.h
755 + (this branch uses sb/object-store-alloc and sb/oid-object-info.)
756 +
757 +
758 +* sb/submodule-merge-in-merge-recursive (2018-05-16) 3 commits
759 + - merge-recursive: give notice when submodule commit gets fast-forwarded
760 + - merge-recursive: i18n submodule merge output and respect verbosity
761 + - submodule.c: move submodule merging to merge-recursive.c
762 +
763 + By code restructuring of submodule merge in merge-recursive,
764 + informational messages from the codepath are now given using the
765 + same mechanism as other output, and honor the merge.verbosity
766 + configuration. The code also learned to give a few new messages
767 + when a submodule three-way merge resolves cleanly when one side
768 + records a descendant of the commit chosen by the other side.
769
770 Will merge to 'next'.
771
772
236 -* sb/object-store-alloc (2018-05-02) 14 commits
237 - - alloc.c: include alloc.h
238 - - alloc: allow arbitrary repositories for alloc functions
239 - - object: allow create_object to handle arbitrary repositories
240 - - object: allow grow_object_hash to handle arbitrary repositories
241 - - alloc: add repository argument to alloc_commit_index
242 - - alloc: add repository argument to alloc_report
243 - - alloc: add repository argument to alloc_object_node
244 - - alloc: add repository argument to alloc_tag_node
245 - - alloc: add repository argument to alloc_commit_node
246 - - alloc: add repository argument to alloc_tree_node
247 - - alloc: add repository argument to alloc_blob_node
248 - - object: add repository argument to grow_object_hash
249 - - object: add repository argument to create_object
250 - - repository: introduce object parser field
251 - (this branch uses sb/object-store-replace and sb/oid-object-info.)
773 +* sb/submodule-update-try-harder (2018-05-16) 1 commit
774 + - git-submodule.sh: try harder to fetch a submodule
775
253 - The conversion to pass "the_repository" and then "a_repository"
254 - throughout the object access API continues.
776 + "git submodule update" attempts two different kinds of "git fetch"
777 + against the upstream repository to grab a commit bound at the
778 + submodule's path, but it incorrectly gave up if the first kind
779 + (i.e. a normal fetch) failed, making the second "last resort" one
780 + (i.e. fetching an exact commit object by object name) ineffective.
781 + This has been corrected.
782
783 + Will merge to 'next'.
784
257 -* tb/grep-column (2018-05-06) 7 commits
258 - - contrib/git-jump/git-jump: jump to match column in addition to line
259 - - grep.c: add configuration variables to show matched option
260 - - builtin/grep.c: add '--column' option to 'git-grep(1)'
261 - - grep.c: display column number of first match
262 - - grep.[ch]: extend grep_opt to allow showing matched column
263 - - grep.c: expose matched column in match_line()
264 - - Documentation/config.txt: camel-case lineNumber for consistency
785
266 - "git grep" learned the "--column" option that gives not just the
267 - line number but the column number of the hit.
786 +* sg/t5310-jgit-bitmap-test (2018-05-11) 1 commit
787 + - t5310-pack-bitmaps: make JGit tests work with GIT_TEST_SPLIT_INDEX
788
789 + Test update.
790
270 -* bc/asciidoctor-tab-width (2018-05-07) 2 commits
271 - - Documentation: render revisions correctly under Asciidoctor
272 - - Documentation: use 8-space tabs with Asciidoctor
791 + Will merge to 'next'.
792
274 - Asciidoctor gives a reasonable imitation for AsciiDoc, but does not
275 - render illustration in a literal block correctly when indented with
276 - HT by default. The problem is fixed by forcing 8-space tabs.
793 +
794 +* sg/t5516-fixes (2018-05-11) 2 commits
795 + - t5516-fetch-push: fix broken &&-chain
796 + - t5516-fetch-push: fix 'push with dry-run' test
797 +
798 + Test fixes.
799
800 Will merge to 'next'.
801
802
281 -* bc/mailmap-self (2018-05-07) 1 commit
282 - - mailmap: update brian m. carlson's email address
803 +* sg/t7005-spaces-in-filenames-cleanup (2018-05-15) 1 commit
804 + - t7005-editor: get rid of the SPACES_IN_FILENAMES prereq
805 +
806 + Test update.
807
808 Will merge to 'next'.
809
810 +
811 +* tb/grep-only-matching (2018-05-14) 2 commits
812 + - builtin/grep.c: teach '-o', '--only-matching' to 'git-grep'
813 + - grep.c: extract show_line_header()
814 + (this branch uses tb/grep-column.)
815 +
816 --------------------------------------------------
817 [Stalled]
818
289 -* pc/submodule-helper-foreach (2018-02-02) 5 commits
290 - - submodule: port submodule subcommand 'foreach' from shell to C
291 - - submodule foreach: document variable '$displaypath'
292 - - submodule foreach: clarify the '$toplevel' variable documentation
293 - - submodule foreach: document '$sm_path' instead of '$path'
294 - - submodule foreach: correct '$path' in nested submodules from a subdirectory
819 +* jm/cache-entry-from-mem-pool (2018-05-02) 5 commits
820 + - block alloc: add validations around cache_entry lifecyle
821 + - block alloc: allocate cache entries from mem_pool
822 + - mem-pool: fill out functionality
823 + - block alloc: add lifecycle APIs for cache_entry structs
824 + - read-cache: teach refresh_cache_entry() to take istate
825 +
826 + For a large tree, the index needs to hold many cache entries
827 + allocated on heap. These cache entries are now allocated out of a
828 + dedicated memory pool to amortize malloc(3) overhead.
829 +
830 + Needs review.
831 + Is the "caller always knows which pool an entry came from and calls
832 + the right kind of free" a feasible approach?
833 + Oh, another thing, there is "lifecyle" typo in the title.
834
296 - Expecting a response to review comments
297 - e.g. cf. <20180206150044.1bffbb573c088d38c8e44bf5@google.com>
835 +
836 +* ab/fetch-tags-noclobber (2018-05-16) 9 commits
837 + - fixup! push tests: assert re-pushing annotated tags
838 + - fetch: stop clobbering existing tags without --force
839 + - fetch tests: add a test clobbering tag behavior
840 + - fetch tests: correct a comment "remove it" -> "remove them"
841 + - push doc: correct lies about how push refspecs work
842 + - push tests: assert re-pushing annotated tags
843 + - push tests: add more testing for forced tag pushing
844 + - push tests: fix logic error in "push" test assertion
845 + - push tests: remove redundant 'git push' invocation
846 +
847 + Expecting a reboot of the discussion to take it to some conclusion
848 + and then a reroll.
849 + cf. <f3b891c3-381f-de42-51d8-24fdfbca91d2@gmail.com>
850 + cf. <xmqq603yn50l.fsf@gitster-ct.c.googlers.com>
851 + cf. <xmqqzi1alodz.fsf@gitster-ct.c.googlers.com>
852 + cf. <xmqqvabylnbi.fsf@gitster-ct.c.googlers.com>
853
854
855 * pw/add-p-select (2018-03-16) 3 commits
@@ -342,15 +897,6 @@ of the repositories listed at
897 Seems to break a few tests.
898
899
345 -* ld/p4-unshelve (2018-02-22) 1 commit
346 - - git-p4: add unshelve command
347 -
348 - "git p4" learned to "unshelve" shelved commit from P4.
349 -
350 - Will hold, perhaps drop and use format-change that uses a proper "diff".
351 - cf. <CAE5ih7_ooDMqVtTMoQ70s5XCkncr04HY0JkqSp1UmKQeG81oaA@mail.gmail.com>
352 -
353 -
900 * av/fsmonitor-updates (2018-01-04) 6 commits
901 - fsmonitor: use fsmonitor data in `git diff`
902 - fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
@@ -386,289 +932,423 @@ of the repositories listed at
932 - SQUASH???
933 - http-backend: respect CONTENT_LENGTH as specified by rfc3875
934
389 - The http-backend (used for smart-http transport) used to slurp the
390 - whole input until EOF, without paying attention to CONTENT_LENGTH
391 - that is supplied in the environment and instead expecting the Web
392 - server to close the input stream. This has been fixed.
935 + The http-backend (used for smart-http transport) used to slurp the
936 + whole input until EOF, without paying attention to CONTENT_LENGTH
937 + that is supplied in the environment and instead expecting the Web
938 + server to close the input stream. This has been fixed.
939 +
940 + Expecting a reroll.
941 + Suggested fixes to be used when rerolling is queued, but I'd
942 + prefer _not_ squashing them myself.
943 +
944 + Also, it may be too complex solution for the problem.
945 + cf. <20171204171308.GA13332@sigill.intra.peff.net>
946 +
947 +
948 +* jk/drop-ancient-curl (2017-08-09) 5 commits
949 + - http: #error on too-old curl
950 + - curl: remove ifdef'd code never used with curl >=7.19.4
951 + - http: drop support for curl < 7.19.4
952 + - http: drop support for curl < 7.16.0
953 + - http: drop support for curl < 7.11.1
954 +
955 + Some code in http.c that has bitrot is being removed.
956 +
957 + Expecting a reroll.
958 +
959 +
960 +* mk/use-size-t-in-zlib (2017-08-10) 1 commit
961 + . zlib.c: use size_t for size
962 +
963 + The wrapper to call into zlib followed our long tradition to use
964 + "unsigned long" for sizes of regions in memory, which have been
965 + updated to use "size_t".
966 +
967 + Needs resurrecting by making sure the fix is good and still applies
968 + (or adjusted to today's codebase).
969 +
970 +--------------------------------------------------
971 +[Cooking]
972 +
973 +* ld/p4-unshelve (2018-05-16) 1 commit
974 + - git-p4: add unshelve command
975 +
976 + "git p4" learned to "unshelve" shelved commit from P4.
977 +
978 + Will merge to 'next'.
979 +
980 +
981 +* pc/submodule-helper-foreach (2018-05-11) 4 commits
982 + - submodule: port submodule subcommand 'foreach' from shell to C
983 + - submodule foreach: document variable '$displaypath'
984 + - submodule foreach: document '$sm_path' instead of '$path'
985 + - submodule foreach: correct '$path' in nested submodules from a subdirectory
986 +
987 + The bulk of "git submodule foreach" has been rewritten in C.
988 +
989 + Will merge to and cook in 'next'.
990 +
991 +
992 +* tb/test-apfs-utf8-normalization (2018-05-02) 1 commit
993 + (merged to 'next' on 2018-05-16 at feabe72b42)
994 + + test: correct detection of UTF8_NFD_TO_NFC for APFS
995 +
996 + A test to see if the filesystem normalizes UTF-8 filename has been
997 + updated to check what we need to know in a more direct way, i.e. a
998 + path created in NFC form can be accessed with NFD form (or vice
999 + versa) to cope with APFS as well as HFS.
1000 +
1001 + Will merge to 'master'.
1002 +
1003 +
1004 +* ab/get-short-oid (2018-05-11) 5 commits
1005 + - get_short_oid: sort ambiguous objects by type, then SHA-1
1006 + - sha1-name.c: move around the collect_ambiguous() function
1007 + - git-p4: change "commitish" typo to "committish"
1008 + - sha1-array.h: align function arguments
1009 + - sha1-name.c: remove stray newline
1010 +
1011 + When a short hexadecimal string is used to name an object but there
1012 + are multiple objects that share the string as the prefix of their
1013 + names, the code lists these ambiguous candidates in a help message.
1014 + These object names are now sorted according to their types for
1015 + easier eyeballing.
1016 +
1017 + Will merge to 'next'.
1018 +
1019 +
1020 +* ah/misc-doc-updates (2018-05-06) 7 commits
1021 + (merged to 'next' on 2018-05-16 at e2e3b68a66)
1022 + + doc: normalize [--options] to [options] in git-diff
1023 + + doc: add note about shell quoting to revision.txt
1024 + + git-svn: remove ''--add-author-from' for 'commit-diff'
1025 + + doc: add '-d' and '-o' for 'git push'
1026 + + doc: clarify ignore rules for git ls-files
1027 + + doc: align 'diff --no-index' in text and synopsis
1028 + + doc: improve formatting in githooks.txt
1029 +
1030 + Misc doc fixes.
1031 +
1032 + Will merge to 'master'.
1033 +
1034 +
1035 +* bc/format-patch-cover-no-attach (2018-05-02) 1 commit
1036 + (merged to 'next' on 2018-05-16 at fa1ffeb3fe)
1037 + + format-patch: make cover letters always text/plain
1038 +
1039 + "git format-patch --cover --attach" created a broken MIME multipart
1040 + message for the cover letter, which has been fixed by keeping the
1041 + cover letter as plain text file.
1042 +
1043 + Will merge to 'master'.
1044 +
1045
394 - Expecting a reroll.
395 - Suggested fixes to be used when rerolling is queued, but I'd
396 - prefer _not_ squashing them myself.
1046 +* bp/test-drop-caches (2018-05-04) 1 commit
1047 + (merged to 'next' on 2018-05-16 at 0e40ab2408)
1048 + + test-drop-caches: simplify delay loading of NtSetSystemInformation
1049
398 - Also, it may be too complex solution for the problem.
399 - cf. <20171204171308.GA13332@sigill.intra.peff.net>
1050 + Code simplification.
1051
1052 + Will merge to 'master'.
1053
402 -* jk/drop-ancient-curl (2017-08-09) 5 commits
403 - - http: #error on too-old curl
404 - - curl: remove ifdef'd code never used with curl >=7.19.4
405 - - http: drop support for curl < 7.19.4
406 - - http: drop support for curl < 7.16.0
407 - - http: drop support for curl < 7.11.1
1054
409 - Some code in http.c that has bitrot is being removed.
1055 +* cc/perf-bisect (2018-05-06) 1 commit
1056 + (merged to 'next' on 2018-05-16 at 5a078a2fdf)
1057 + + perf/bisect_run_script: disable codespeed
1058
411 - Expecting a reroll.
1059 + Performance test updates.
1060
1061 + Will merge to 'master'.
1062
414 -* mk/use-size-t-in-zlib (2017-08-10) 1 commit
415 - . zlib.c: use size_t for size
1063
417 - The wrapper to call into zlib followed our long tradition to use
418 - "unsigned long" for sizes of regions in memory, which have been
419 - updated to use "size_t".
1064 +* cf/submodule-progress-dissociate (2018-05-04) 3 commits
1065 + - submodule: add --dissociate option to add/update commands
1066 + - submodule: add --progress option to add command
1067 + - submodule: clean up subsititions in script
1068
421 - Needs resurrecting by making sure the fix is good and still applies
422 - (or adjusted to today's codebase).
1069 + "git submodule update" and "git submodule add" supported the
1070 + "--reference" option to borrow objects from a neighbouring local
1071 + repository like "git clone" does, but lacked the more recent
1072 + invention "--dissociate". Also "git submodule add" has been taught
1073 + to take the "--progress" option.
1074
424 ---------------------------------------------------
425 -[Cooking]
1075 + Will merge to 'next'..
1076 + "subsititions" needs to be typofixed ;-)
1077 +
1078
427 -* cc/perf-aggregate-unknown-option (2018-04-26) 1 commit
428 - - perf/aggregate: use Getopt::Long for option parsing
1079
430 - Perf-test helper updates.
1080 +* dd/send-email-reedit (2018-05-06) 1 commit
1081 + - git-send-email: allow re-editing of message
1082 +
1083 + "git send-email" can sometimes offer confirmation dialog "Send this
1084 + email?" with choices 'Yes', 'No', 'Quit', and 'All'. A new action
1085 + 'Edit' has been added to this dialog's choice.
1086
1087 Will merge to 'next'.
1088
1089
435 -* ab/perl-python-attrs (2018-04-27) 3 commits
436 - - .gitattributes: add a diff driver for Python
437 - - .gitattributes: use the "perl" differ for Perl
438 - - .gitattributes: add *.pl extension for Perl
1090 +* em/status-rename-config (2018-05-06) 1 commit
1091 + (merged to 'next' on 2018-05-16 at 33c1cc093c)
1092 + + wt-status: use settings from git_diff_ui_config
1093 + (this branch is used by bp/status-rename-config.)
1094
440 - We learned that our source files with ".pl" and ".py" extensions
441 - are Perl and Python files respectively and changes to them are
442 - better viewed as such with appropriate diff drivers.
1095 + "git status" learned to pay attention to UI related diff
1096 + configuration variables such as diff.renames.
1097
444 - Will merge to 'next'.
1098 + Will merge to 'master'.
1099
1100
447 -* js/test-unset-prereq (2018-04-30) 1 commit
448 - - tests: introduce test_unset_prereq, for debugging
1101 +* js/branch-diff (2018-05-16) 19 commits
1102 + - fixup! Add a function to solve least-cost assignment problems
1103 + - completion: support branch-diff
1104 + - branch-diff: add a man page
1105 + - branch-diff --dual-color: work around bogus white-space warning
1106 + - branch-diff: offer to dual-color the diffs
1107 + - diff: add an internal option to dual-color diffs of diffs
1108 + - color: provide inverted colors, too
1109 + - branch-diff: use color for the commit pairs
1110 + - branch-diff: add tests
1111 + - branch-diff: do not show "function names" in hunk headers
1112 + - branch-diff: adjust the output of the commit pairs
1113 + - branch-diff: suppress the diff headers
1114 + - branch-diff: indent the diffs just like tbdiff
1115 + - branch-diff: right-trim commit messages
1116 + - branch-diff: also show the diff between patches
1117 + - branch-diff: improve the order of the shown commits
1118 + - branch-diff: first rudimentary implementation
1119 + - Add a new builtin: branch-diff
1120 + - Add a function to solve least-cost assignment problems
1121
450 - Test debugging aid.
1122 + "git tbdiff" that lets us compare individual patches in two
1123 + iterations of a topic has been rewritten and made into a built-in
1124 + command.
1125
452 - Will merge to 'next'.
453 - cf. <20180507115950.3887-1-szeder.dev@gmail.com>
1126 + Expecting a reroll.
1127 + cf. <nycvar.QRO.7.76.6.1805052351560.77@tvgsbejvaqbjf.bet>
1128
1129
456 -* fg/completion-external (2018-04-30) 1 commit
457 - - completion: load completion file for external subcommand
1130 +* js/sequencer-and-root-commits (2018-05-06) 6 commits
1131 + - rebase --rebase-merges: root commits can be cousins, too
1132 + - rebase --rebase-merges: a "merge" into a new root is a fast-forward
1133 + - sequencer: allow introducing new root commits
1134 + - rebase -i --root: let the sequencer handle even the initial part
1135 + - sequencer: learn about the special "fake root commit" handling
1136 + - sequencer: extract helper to update active_cache_tree
1137 + (this branch uses js/rebase-recreate-merge.)
1138
459 - The command line completion mechanism (in contrib/) learned to load
460 - custom completion file for "git $command" where $command is a
461 - custom "git-$command" that the end user has on the $PATH when using
462 - newer version of bash.
1139 + The implementation of "git rebase -i --root" has been updated to use
1140 + the sequencer machinery more.
1141
1142 Will merge to 'next'.
465 - cf. <CAM0VKjkTu+OkLM3gvX73mWugxArCVmqRBmWGHiKuLiLRNkkNow@mail.gmail.com>
1143
1144
468 -* ma/double-dashes-in-docs (2018-04-18) 4 commits
469 - (merged to 'next' on 2018-04-25 at aaac2dc63c)
470 - + git-submodule.txt: quote usage in monospace, drop backslash
471 - + git-[short]log.txt: unify quoted standalone --
472 - + doc: convert [\--] to [--]
473 - + doc: convert \--option to --option
1145 +* js/use-bug-macro (2018-05-10) 5 commits
1146 + - BUG_exit_code: fix sparse "symbol not declared" warning
1147 + - Convert remaining die*(BUG) messages
1148 + - Replace all die("BUG: ...") calls by BUG() ones
1149 + - run-command: use BUG() to report bugs, not die()
1150 + - test-tool: help verifying BUG() code paths
1151
475 - Doc formatting updates.
1152 + Developer support update, by using BUG() macro instead of die() to
1153 + mark codepaths that should not happen more clearly.
1154
477 - Will merge to 'master'.
1155 + Will merge to 'next'.
1156 + Further updates can come on top later.
1157 + cf. <20180507090109.GA367@sigill.intra.peff.net>
1158
1159
480 -* sb/worktree-remove-opt-force (2018-04-18) 1 commit
481 - (merged to 'next' on 2018-04-25 at 0367d52a4b)
482 - + worktree: accept -f as short for --force for removal
1160 +* jt/partial-clone-proto-v2 (2018-05-06) 4 commits
1161 + - {fetch,upload}-pack: support filter in protocol v2
1162 + - upload-pack: read config when serving protocol v2
1163 + - upload-pack: fix error message typo
1164 + - Merge branch 'bw/protocol-v2' into jt/partial-clone-proto-v2
1165
484 - "git worktree remove" learned that "-f" is a shorthand for
485 - "--force" option, just like for "git worktree add".
1166 + Transfer protocol v2 learned to support the partial clone.
1167
487 - Will merge to 'master'.
1168 + Will merge to 'next'.
1169
1170
490 -* sg/completion-clear-cached (2018-04-18) 1 commit
491 - (merged to 'next' on 2018-04-25 at 9178da6c3d)
492 - + completion: reduce overhead of clearing cached --options
1171 +* ma/doc-expand-tabs (2018-05-02) 1 commit
1172 + - revisions.txt: expand tabs to spaces in diagram
1173
494 - The completion script (in contrib/) learned to clear cached list of
495 - command line options upon dot-sourcing it again in a more efficient
496 - way.
1174 + Fix one instance of asciidoctor's misformatting by expanding a tab
1175 + into spaces in a literal block.
1176
498 - Will merge to 'master'.
1177 + Will discard. This approach is less maintainable than the approach
1178 + taken by bc/asciidoctor-tab-width topic.
1179
1180
501 -* sg/doc-gc-quote-mismatch-fix (2018-04-18) 1 commit
502 - (merged to 'next' on 2018-04-25 at bc3d1abf45)
503 - + docs/git-gc: fix minor rendering issue
1181 +* nd/completion-aliasfiletype-typofix (2018-05-06) 1 commit
1182 + (merged to 'next' on 2018-05-16 at 045e4ac190)
1183 + + completion: fix misspelled config key aliasesfiletype
1184
505 - Doc formatting fix.
1185 + Typofix.
1186
1187 Will merge to 'master'.
1188
1189
510 -* js/ident-date-fix (2018-04-19) 1 commit
511 - (merged to 'next' on 2018-04-30 at d50ec2f4c1)
512 - + sequencer: reset the committer date before commits
1190 +* nd/doc-header (2018-05-02) 1 commit
1191 + (merged to 'next' on 2018-05-16 at 0599eb3ec9)
1192 + + doc: keep first level section header in upper case
1193
514 - During a "rebase -i" session, the code could give older timestamp
515 - to commits created by later "pick" than an earlier "reword", which
516 - has been corrected.
1194 + Doc formatting fix.
1195
1196 Will merge to 'master'.
1197
1198
521 -* nd/submodule-status-fix (2018-04-19) 1 commit
522 - (merged to 'next' on 2018-04-30 at 34d1f9ca83)
523 - + submodule--helper: don't print null in 'submodule status'
1199 +* nd/pack-unreachable-objects-doc (2018-05-06) 1 commit
1200 + (merged to 'next' on 2018-05-16 at c4bf977564)
1201 + + pack-objects: validation and documentation about unreachable options
1202
525 - "git submodule status" did not check the symbolic revision name it
526 - computed for the submodule HEAD is not the NULL, and threw it at
527 - printf routines, which has been corrected.
1203 + Doc update.
1204
1205 Will merge to 'master'.
1206
1207
532 -* sa/send-email-dedup-some-headers (2018-04-19) 1 commit
533 - (merged to 'next' on 2018-04-30 at 2a1fd8217e)
534 - + send-email: avoid duplicate In-Reply-To/References
535 -
536 - When fed input that already has In-Reply-To: and/or References:
537 - headers and told to add the same information, "git send-email"
538 - added these headers separately, instead of appending to an existing
539 - one, which is a violation of the RFC. This has been corrected.
540 -
541 - Will merge to 'master'.
1208 +* sb/object-store-alloc (2018-05-16) 13 commits
1209 + - alloc: allow arbitrary repositories for alloc functions
1210 + - object: allow create_object to handle arbitrary repositories
1211 + - object: allow grow_object_hash to handle arbitrary repositories
1212 + - alloc: add repository argument to alloc_commit_index
1213 + - alloc: add repository argument to alloc_report
1214 + - alloc: add repository argument to alloc_object_node
1215 + - alloc: add repository argument to alloc_tag_node
1216 + - alloc: add repository argument to alloc_commit_node
1217 + - alloc: add repository argument to alloc_tree_node
1218 + - alloc: add repository argument to alloc_blob_node
1219 + - object: add repository argument to grow_object_hash
1220 + - object: add repository argument to create_object
1221 + - repository: introduce parsed objects field
1222 + (this branch is used by sb/object-store-grafts; uses sb/oid-object-info.)
1223
1224 + The conversion to pass "the_repository" and then "a_repository"
1225 + throughout the object access API continues.
1226
544 -* tg/demote-stash-save-in-completion (2018-04-20) 2 commits
545 - (merged to 'next' on 2018-04-30 at 93d0af5375)
546 - + completion: make stash -p and alias for stash push -p
547 - + completion: stop showing 'save' for stash by default
1227
549 - The command line completion (in contrib/) has been taught that "git
550 - stash save" has been deprecated ("git stash push" is the preferred
551 - spelling in the new world) and does not offer it as a possible
552 - completion candidate when "git stash push" can be.
1228 +* tb/grep-column (2018-05-14) 7 commits
1229 + - contrib/git-jump/git-jump: jump to match column in addition to line
1230 + - grep.c: add configuration variables to show matched option
1231 + - builtin/grep.c: add '--column' option to 'git-grep(1)'
1232 + - grep.c: display column number of first match
1233 + - grep.[ch]: extend grep_opt to allow showing matched column
1234 + - grep.c: expose matched column in match_line()
1235 + - Documentation/config.txt: camel-case lineNumber for consistency
1236 + (this branch is used by tb/grep-only-matching.)
1237
554 - Will merge to 'master'.
1238 + "git grep" learned the "--column" option that gives not just the
1239 + line number but the column number of the hit.
1240
1241
557 -* tz/doc-git-urls-reference (2018-04-20) 1 commit
558 - (merged to 'next' on 2018-04-30 at 39926c99fd)
559 - + doc/clone: update caption for GIT URLS cross-reference
1242 +* bc/asciidoctor-tab-width (2018-05-07) 2 commits
1243 + (merged to 'next' on 2018-05-16 at be2a42c473)
1244 + + Documentation: render revisions correctly under Asciidoctor
1245 + + Documentation: use 8-space tabs with Asciidoctor
1246
561 - Doc fix.
1247 + Asciidoctor gives a reasonable imitation for AsciiDoc, but does not
1248 + render illustration in a literal block correctly when indented with
1249 + HT by default. The problem is fixed by forcing 8-space tabs.
1250
1251 Will merge to 'master'.
1252
1253
566 -* js/deprecate-grafts (2018-04-30) 12 commits
567 - - Remove obsolete script to convert grafts to replace refs
568 - - technical/shallow: describe why shallow cannot use replace refs
569 - - technical/shallow: stop referring to grafts
570 - - filter-branch: stop suggesting to use grafts
571 - - Deprecate support for .git/info/grafts
572 - - Add a test for `git replace --convert-graft-file`
573 - - replace: introduce --convert-graft-file
574 - - replace: prepare create_graft() for converting graft files wholesale
575 - - replace: "libify" create_graft() and callees
576 - - replace: avoid using die() to indicate a bug
577 - - commit: Let the callback of for_each_mergetag return on error
578 - - argv_array: offer to split a string by whitespace
579 -
580 - The functionality of "$GIT_DIR/info/grafts" has been superseded by
581 - the "refs/replace/" mechanism for some time now, but the internal
582 - code had support for it in many places, which has been cleaned up
583 - in order to drop support of the "grafts" mechanism.
1254 +* bc/mailmap-self (2018-05-08) 1 commit
1255 + (merged to 'next' on 2018-05-16 at a009c64bd2)
1256 + + mailmap: update brian m. carlson's email address
1257
585 - Will merge to 'next'.
1258 + Will merge to 'master'.
1259
1260
588 -* js/rebase-i-clean-msg-after-fixup-continue (2018-05-02) 4 commits
589 - - rebase --skip: clean up commit message after a failed fixup/squash
590 - - sequencer: always commit without editing when asked for
591 - - rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
592 - - rebase -i: demonstrate bugs with fixup!/squash! commit messages
1261 +* cc/perf-aggregate-unknown-option (2018-04-26) 1 commit
1262 + (merged to 'next' on 2018-05-08 at db7d2870f8)
1263 + + perf/aggregate: use Getopt::Long for option parsing
1264
594 - "git rebase -i" sometimes left intermediate "# This is a
595 - combination of N commits" message meant for the human consumption
596 - inside an editor in the final result in certain corner cases, which
597 - has been fixed.
1265 + Perf-test helper updates.
1266
599 - Will merge to 'next'.
1267 + Will merge to 'master'.
1268
1269
602 -* ma/fast-export-skip-merge-fix (2018-04-21) 1 commit
603 - (merged to 'next' on 2018-04-30 at f7fca02ab1)
604 - + fast-export: fix regression skipping some merge-commits
1270 +* ab/perl-python-attrs (2018-04-27) 3 commits
1271 + (merged to 'next' on 2018-05-08 at b440e9bbb9)
1272 + + .gitattributes: add a diff driver for Python
1273 + + .gitattributes: use the "perl" differ for Perl
1274 + + .gitattributes: add *.pl extension for Perl
1275
606 - "git fast-export" had a regression in v2.15.0 era where it skipped
607 - some merge commits in certain cases, which has been corrected.
1276 + We learned that our source files with ".pl" and ".py" extensions
1277 + are Perl and Python files respectively and changes to them are
1278 + better viewed as such with appropriate diff drivers.
1279
1280 Will merge to 'master'.
1281
1282
612 -* bw/server-options (2018-04-24) 4 commits
613 - - fetch: send server options when using protocol v2
614 - - ls-remote: send server options when using protocol v2
615 - - serve: introduce the server-option capability
616 - - Merge branch 'bw/protocol-v2' into HEAD
617 - (this branch uses bw/protocol-v2; is tangled with jt/partial-clone-proto-v2.)
1283 +* js/test-unset-prereq (2018-04-30) 1 commit
1284 + (merged to 'next' on 2018-05-08 at 3aecbf25a3)
1285 + + tests: introduce test_unset_prereq, for debugging
1286
619 - The transport protocol v2 is getting updated further.
1287 + Test debugging aid.
1288
621 - Will merge to 'next'.
1289 + Will merge to 'master'.
1290 + cf. <20180507115950.3887-1-szeder.dev@gmail.com>
1291
1292
624 -* jc/parseopt-expiry-errors (2018-04-23) 2 commits
625 - (merged to 'next' on 2018-04-30 at 637085f3d8)
626 - + parseopt: handle malformed --expire arguments more nicely
627 - + gc: do not upcase error message shown with die()
1293 +* fg/completion-external (2018-05-07) 1 commit
1294 + (merged to 'next' on 2018-05-16 at 5d83f92caf)
1295 + + completion: load completion file for external subcommand
1296
629 - "git gc --prune=nonsense" spent long time repacking and then
630 - silently failed when underlying "git prune --expire=nonsense"
631 - failed to parse its command line. This has been corrected.
1297 + The command line completion mechanism (in contrib/) learned to load
1298 + custom completion file for "git $command" where $command is a
1299 + custom "git-$command" that the end user has on the $PATH when using
1300 + newer version of bash.
1301
1302 Will merge to 'master'.
1303 + cf. <CAM0VKjkTu+OkLM3gvX73mWugxArCVmqRBmWGHiKuLiLRNkkNow@mail.gmail.com>
1304
1305
636 -* js/colored-push-errors (2018-04-24) 4 commits
637 - (merged to 'next' on 2018-04-30 at 31076c52a2)
638 - + config: document the settings to colorize push errors/hints
639 - + push: test to verify that push errors are colored
640 - + push: colorize errors
641 - + color: introduce support for colorizing stderr
1306 +* js/deprecate-grafts (2018-04-30) 12 commits
1307 + (merged to 'next' on 2018-05-08 at 1d7b31d179)
1308 + + Remove obsolete script to convert grafts to replace refs
1309 + + technical/shallow: describe why shallow cannot use replace refs
1310 + + technical/shallow: stop referring to grafts
1311 + + filter-branch: stop suggesting to use grafts
1312 + + Deprecate support for .git/info/grafts
1313 + + Add a test for `git replace --convert-graft-file`
1314 + + replace: introduce --convert-graft-file
1315 + + replace: prepare create_graft() for converting graft files wholesale
1316 + + replace: "libify" create_graft() and callees
1317 + + replace: avoid using die() to indicate a bug
1318 + + commit: Let the callback of for_each_mergetag return on error
1319 + + argv_array: offer to split a string by whitespace
1320
643 - Error messages from "git push" can be painted for more visibility.
1321 + The functionality of "$GIT_DIR/info/grafts" has been superseded by
1322 + the "refs/replace/" mechanism for some time now, but the internal
1323 + code had support for it in many places, which has been cleaned up
1324 + in order to drop support of the "grafts" mechanism.
1325
1326 Will merge to 'master'.
1327
1328
648 -* js/runtime-prefix (2018-04-24) 8 commits
649 - (merged to 'next' on 2018-04-30 at c6cfccf40e)
650 - + Avoid multiple PREFIX definitions
651 - + git_setup_gettext: plug memory leak
652 - + gettext: avoid initialization if the locale dir is not present
653 - (merged to 'next' on 2018-04-17 at a69aaa7a22)
654 - + mingw/msvc: use the new-style RUNTIME_PREFIX helper
655 - + exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
656 - + exec_cmd: RUNTIME_PREFIX on some POSIX systems
657 - + Makefile: add Perl runtime prefix support
658 - + Makefile: generate Perl header from template file
659 - (this branch is tangled with dj/runtime-prefix.)
1329 +* js/rebase-i-clean-msg-after-fixup-continue (2018-05-02) 4 commits
1330 + (merged to 'next' on 2018-05-08 at 7e684c153d)
1331 + + rebase --skip: clean up commit message after a failed fixup/squash
1332 + + sequencer: always commit without editing when asked for
1333 + + rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
1334 + + rebase -i: demonstrate bugs with fixup!/squash! commit messages
1335 +
1336 + "git rebase -i" sometimes left intermediate "# This is a
1337 + combination of N commits" message meant for the human consumption
1338 + inside an editor in the final result in certain corner cases, which
1339 + has been fixed.
1340
1341 Will merge to 'master'.
1342
1343
664 -* ma/http-walker-no-partial (2018-04-24) 2 commits
665 - (merged to 'next' on 2018-04-30 at 4582c99ba8)
666 - + walker: drop fields of `struct walker` which are always 1
667 - + http-fetch: make `-a` standard behaviour
1344 +* bw/server-options (2018-04-24) 4 commits
1345 + (merged to 'next' on 2018-05-08 at a18ce56f3c)
1346 + + fetch: send server options when using protocol v2
1347 + + ls-remote: send server options when using protocol v2
1348 + + serve: introduce the server-option capability
1349 + + Merge branch 'bw/protocol-v2' into HEAD
1350
669 - "git http-fetch" (deprecated) had an optional and experimental
670 - "feature" to fetch only commits and/or trees, which nobody used.
671 - This has been removed.
1351 + The transport protocol v2 is getting updated further.
1352
1353 Will merge to 'master'.
1354
@@ -719,409 +1399,231 @@ of the repositories listed at
1399
1400 Conversion from uchar[20] to struct object_id continues.
1401
1402 + Will merge to 'next'.
1403 +
1404
1405 * sb/oid-object-info (2018-04-26) 9 commits
724 - - cache.h: allow oid_object_info to handle arbitrary repositories
725 - - packfile: add repository argument to cache_or_unpack_entry
726 - - packfile: add repository argument to unpack_entry
727 - - packfile: add repository argument to read_object
728 - - packfile: add repository argument to packed_object_info
729 - - packfile: add repository argument to packed_to_object_type
730 - - packfile: add repository argument to retry_bad_packed_offset
731 - - cache.h: add repository argument to oid_object_info
732 - - cache.h: add repository argument to oid_object_info_extended
733 - (this branch is used by sb/object-store-alloc; uses sb/object-store-replace.)
1406 + (merged to 'next' on 2018-05-08 at f3c08f298e)
1407 + + cache.h: allow oid_object_info to handle arbitrary repositories
1408 + + packfile: add repository argument to cache_or_unpack_entry
1409 + + packfile: add repository argument to unpack_entry
1410 + + packfile: add repository argument to read_object
1411 + + packfile: add repository argument to packed_object_info
1412 + + packfile: add repository argument to packed_to_object_type
1413 + + packfile: add repository argument to retry_bad_packed_offset
1414 + + cache.h: add repository argument to oid_object_info
1415 + + cache.h: add repository argument to oid_object_info_extended
1416 + (this branch is used by sb/object-store-alloc and sb/object-store-grafts.)
1417
1418 The codepath around object-info API has been taught to take the
1419 repository object (which in turn tells the API which object store
1420 the objects are to be located).
1421
739 - Will merge to 'next'.
1422 + Will merge to 'master'.
1423
1424
1425 * en/unpack-trees-split-index-fix (2018-05-02) 1 commit
743 - - unpack_trees: fix breakage when o->src_index != o->dst_index
1426 + (merged to 'next' on 2018-05-16 at 1adff065b2)
1427 + + unpack_trees: fix breakage when o->src_index != o->dst_index
1428
1429 The split-index feature had a long-standing and dormant bug in
1430 certain use of the in-core merge machinery, which has been fixed.
1431
748 - Will merge to 'next'.
1432 + Will merge to 'master'.
1433 cf. <CACsJy8CeDhrT9GXe9q5gqsAeq_sSQ8jyF2nMOFxzjwKtE31oPQ@mail.gmail.com>
1434
1435
752 -* bp/merge-rename-config (2018-05-04) 3 commits
1436 +* bp/merge-rename-config (2018-05-08) 3 commits
1437 - merge: pass aggressive when rename detection is turned off
1438 - merge: add merge.renames config setting
1439 - merge: update documentation for {merge,diff}.renameLimit
1440 (this branch uses en/rename-directory-detection-reboot.)
1441
1442 + With merge.renames configuration set to false, the recursive merge
1443 + strategy can be told not to spend cycles trying to find renamed
1444 + paths and merge them accordingly.
1445 +
1446 + Will merge to 'next'.
1447 +
1448
1449 * en/git-debugger (2018-04-25) 1 commit
760 - - Make running git under other debugger-like programs easy
1450 + (merged to 'next' on 2018-05-08 at 73369cd1e5)
1451 + + Make running git under other debugger-like programs easy
1452
1453 Dev support.
1454
764 - Will merge to 'next'.
1455 + Will merge to 'master'.
1456
1457
1458 * js/no-pager-shorthand (2018-05-04) 1 commit
768 - - git: add -P as a short option for --no-pager
1459 + (merged to 'next' on 2018-05-08 at 10e6031dd1)
1460 + + git: add -P as a short option for --no-pager
1461
1462 "git --no-pager cmd" did not have short-and-sweet single letter
1463 option. Now it does.
1464
773 - Will merge to 'next'.
1465 + Will merge to 'master'.
1466
1467
1468 * sb/diff-color-move-more (2018-04-25) 7 commits
1469 - diff.c: add --color-moved-ignore-space-delta option
1470 - diff.c: decouple white space treatment from move detection algorithm
779 - - diff.c: add a blocks mode for moved code detection
780 - - diff.c: adjust hash function signature to match hashmap expectation
781 - - diff.c: do not pass diff options as keydata to hashmap
782 - - xdiff/xdiffi.c: remove unneeded function declarations
783 - - xdiff/xdiff.h: remove unused flags
784 -
785 - "git diff --color-moved" feature has further been tweaked.
786 -
787 -
788 -* so/glossary-ancestor (2018-04-17) 1 commit
789 - (merged to 'next' on 2018-04-25 at 0a849fee00)
790 - + glossary: substitute "ancestor" for "direct ancestor" in 'push' description.
791 -
792 - Docfix.
793 -
794 - Will merge to 'master'.
795 -
796 -
797 -* bt/gpg-interface (2018-04-16) 7 commits
798 - (merged to 'next' on 2018-04-30 at 50c507b7d8)
799 - + gpg-interface: find the last gpg signature line
800 - + gpg-interface: extract gpg line matching helper
801 - + gpg-interface: fix const-correctness of "eol" pointer
802 - + gpg-interface: use size_t for signature buffer size
803 - + gpg-interface: modernize function declarations
804 - + gpg-interface: handle bool user.signingkey
805 - + t7004: fix mistaken tag name
806 -
807 - What is queued here is only the obviously correct and
808 - uncontroversial code clean-up part, which is an earlier 7 patches,
809 - of a larger series.
810 -
811 - The remainder that is not queued introduces a few configuration
812 - variables to deal with e-signature backends with different
813 - signature format.
814 -
815 - Will merge to 'master'.
816 -
817 -
818 -* ds/generation-numbers (2018-05-02) 11 commits
819 - - commit-graph.txt: update design document
820 - - merge: check config before loading commits
821 - - commit: use generation number in remove_redundant()
822 - - commit: add short-circuit to paint_down_to_common()
823 - - commit: use generation numbers for in_merge_bases()
824 - - ref-filter: use generation number for --contains
825 - - commit-graph: always load commit-graph information
826 - - commit: use generations in paint_down_to_common()
827 - - commit-graph: compute generation numbers
828 - - commit: add generation number to struct commmit
829 - - ref-filter: fix outdated comment on in_commit_list
830 - (this branch uses ds/commit-graph and ds/lazy-load-trees.)
831 -
832 - A recently added "commit-graph" datafile has learned to store
833 - pre-computed generation numbers to speed up the decisions to stop
834 - history traversal.
835 -
836 - Is this ready for 'next'?
837 -
838 -
839 -* en/rename-directory-detection-reboot (2018-04-25) 36 commits
840 - - merge-recursive: fix check for skipability of working tree updates
841 - - merge-recursive: make "Auto-merging" comment show for other merges
842 - - merge-recursive: fix remainder of was_dirty() to use original index
843 - - merge-recursive: fix was_tracked() to quit lying with some renamed paths
844 - - t6046: testcases checking whether updates can be skipped in a merge
845 - - merge-recursive: avoid triggering add_cacheinfo error with dirty mod
846 - - merge-recursive: move more is_dirty handling to merge_content
847 - - merge-recursive: improve add_cacheinfo error handling
848 - - merge-recursive: avoid spurious rename/rename conflict from dir renames
849 - - directory rename detection: new testcases showcasing a pair of bugs
850 - - merge-recursive: fix remaining directory rename + dirty overwrite cases
851 - - merge-recursive: fix overwriting dirty files involved in renames
852 - - merge-recursive: avoid clobbering untracked files with directory renames
853 - - merge-recursive: apply necessary modifications for directory renames
854 - - merge-recursive: when comparing files, don't include trees
855 - - merge-recursive: check for file level conflicts then get new name
856 - - merge-recursive: add computation of collisions due to dir rename & merging
857 - - merge-recursive: check for directory level conflicts
858 - - merge-recursive: add get_directory_renames()
859 - - merge-recursive: make a helper function for cleanup for handle_renames
860 - - merge-recursive: split out code for determining diff_filepairs
861 - - merge-recursive: make !o->detect_rename codepath more obvious
862 - - merge-recursive: fix leaks of allocated renames and diff_filepairs
863 - - merge-recursive: introduce new functions to handle rename logic
864 - - merge-recursive: move the get_renames() function
865 - - directory rename detection: tests for handling overwriting dirty files
866 - - directory rename detection: tests for handling overwriting untracked files
867 - - directory rename detection: miscellaneous testcases to complete coverage
868 - - directory rename detection: testcases exploring possibly suboptimal merges
869 - - directory rename detection: more involved edge/corner testcases
870 - - directory rename detection: testcases checking which side did the rename
871 - - directory rename detection: files/directories in the way of some renames
872 - - directory rename detection: partially renamed directory testcase/discussion
873 - - directory rename detection: testcases to avoid taking detection too far
874 - - directory rename detection: directory splitting testcases
875 - - directory rename detection: basic testcases
876 - (this branch is used by bp/merge-rename-config.)
877 -
878 - Rename detection logic in "diff" family that is used in "merge" has
879 - learned to guess when all of x/a, x/b and x/c have moved to z/a,
880 - z/b and z/c, it is likely that x/d added in the meantime would also
881 - want to move to z/d by taking the hint that the entire directory
882 - 'x' moved to 'z'. Incidentally, this avoids updating a file in the
883 - working tree after a (non-trivial) merge whose result matches what
884 - our side originally had.
885 -
886 - Will merge to 'next'.
887 -
888 -
889 -* nd/command-list (2018-04-30) 10 commits
890 - - completion: let git provide the completable command list
891 - - help: use command-list.txt for the source of guides
892 - - help: add "-a --verbose" to list all commands with synopsis
893 - - git: support --list-cmds=list-<category>
894 - - completion: implement and use --list-cmds=main,others
895 - - git.c: convert --list-*builtins to --list-cmds=*
896 - - Remove common-cmds.h
897 - - help: use command-list.h for common command list
898 - - generate-cmds.sh: export all commands to command-list.h
899 - - generate-cmds.sh: factor out synopsis extract code
900 -
901 - The list of commands with their various attributes were spread
902 - across a few places in the build procedure, but it now is getting a
903 - bit more consolidated to allow more automation.
904 -
905 - Is this ready for 'next'.
906 -
907 -
908 -* sb/object-store-replace (2018-04-12) 15 commits
909 - (merged to 'next' on 2018-04-25 at 9a213fb505)
910 - + replace-object: allow lookup_replace_object to handle arbitrary repositories
911 - + replace-object: allow do_lookup_replace_object to handle arbitrary repositories
912 - + replace-object: allow prepare_replace_object to handle arbitrary repositories
913 - + refs: allow for_each_replace_ref to handle arbitrary repositories
914 - + refs: store the main ref store inside the repository struct
915 - + replace-object: add repository argument to lookup_replace_object
916 - + replace-object: add repository argument to do_lookup_replace_object
917 - + replace-object: add repository argument to prepare_replace_object
918 - + refs: add repository argument to for_each_replace_ref
919 - + refs: add repository argument to get_main_ref_store
920 - + replace-object: check_replace_refs is safe in multi repo environment
921 - + replace-object: eliminate replace objects prepared flag
922 - + object-store: move lookup_replace_object to replace-object.h
923 - + replace-object: move replace_map to object store
924 - + replace_object: use oidmap
925 - (this branch is used by sb/object-store-alloc and sb/oid-object-info.)
926 -
927 - The effort to pass the repository in-core structure throughout the
928 - API continues. This round deals with the code that implements the
929 - refs/replace/ mechanism.
930 -
931 - Will merge to 'master'.
932 -
933 -
934 -* sg/complete-paths (2018-04-17) 11 commits
935 - - completion: fill COMPREPLY directly when completing paths
936 - - completion: improve handling quoted paths in 'git ls-files's output
937 - - completion: remove repeated dirnames with 'awk' during path completion
938 - - t9902-completion: ignore COMPREPLY element order in some tests
939 - - completion: use 'awk' to strip trailing path components
940 - - completion: let 'ls-files' and 'diff-index' filter matching paths
941 - - completion: improve handling quoted paths on the command line
942 - - completion: support completing non-ASCII pathnames
943 - - completion: simplify prefix path component handling during path completion
944 - - completion: move __git_complete_index_file() next to its helpers
945 - - t9902-completion: add tests demonstrating issues with quoted pathnames
946 -
947 - Command line completion (in contrib/) learned to complete pathnames
948 - for various commands better.
949 -
950 - Will merge to 'next'.
951 -
952 -
953 -* tq/t1510 (2018-04-17) 1 commit
954 - (merged to 'next' on 2018-04-25 at 5710c81979)
955 - + t1510-repo-setup.sh: remove useless mkdir
956 -
957 - Test cleanup.
958 -
959 - Will merge to 'master'.
960 -
961 -
962 -* sb/blame-color (2018-04-24) 3 commits
963 - - builtin/blame: add new coloring scheme config
964 - - builtin/blame: highlight recently changed lines
965 - - builtin/blame: dim uninteresting metadata lines
966 -
967 - "git blame" learns to unhighlight uninteresting metadata from the
968 - originating commit on lines that are the same as the previous one,
969 - and also paint lines in different colors depending on the age of
970 - the commit.
971 -
972 - Is this ready for 'next'?
973 -
974 -
975 -* ab/simplify-perl-makefile (2018-04-19) 2 commits
976 - (merged to 'next' on 2018-04-25 at 906cf21682)
977 - + Makefile: mark perllibdir as a .PHONY target
978 - (merged to 'next' on 2018-04-17 at 4448756934)
979 - + perl: fix installing modules from contrib
980 -
981 - Recent simplification of build procedure forgot a bit of tweak to
982 - the build procedure of contrib/mw-to-git/
983 -
984 - Will merge to 'master'.
985 -
986 -
987 -* ds/lazy-load-trees (2018-05-02) 6 commits
988 - (merged to 'next' on 2018-05-02 at d54016d9e3)
989 - + coccinelle: avoid wrong transformation suggestions from commit.cocci
990 - (merged to 'next' on 2018-04-25 at b90813f421)
991 - + commit-graph: lazy-load trees for commits
992 - + treewide: replace maybe_tree with accessor methods
993 - + commit: create get_commit_tree() method
994 - + treewide: rename tree to maybe_tree
995 - + Merge branch 'bw/c-plus-plus' into ds/lazy-load-trees
996 - (this branch is used by ds/generation-numbers; uses ds/commit-graph.)
997 -
998 - The code has been taught to use the duplicated information stored
999 - in the commit-graph file to learn the tree object name for a commit
1000 - to avoid opening and parsing the commit object when it makes sense
1001 - to do so.
1002 -
1003 - Will merge to 'master'.
1004 -
1005 -
1006 -* ab/git-svn-get-record-typofix (2018-04-09) 1 commit
1007 - (merged to 'next' on 2018-04-30 at 23f875f6b9)
1008 - + git-svn: avoid warning on undef readline()
1009 -
1010 - "git svn" had a minor thinko/typo which has been fixed.
1011 -
1012 - Will merge to 'master'.
1013 -
1014 -
1015 -* hn/sort-ls-remote (2018-04-09) 1 commit
1016 - (merged to 'next' on 2018-04-30 at 244ca5d30a)
1017 - + ls-remote: create '--sort' option
1018 -
1019 - "git ls-remote" learned an option to allow sorting its output based
1020 - on the refnames being shown.
1021 -
1022 - Will merge to 'master'.
1023 -
1024 -
1025 -* js/empty-config-section-fix (2018-04-09) 15 commits
1026 - (merged to 'next' on 2018-04-25 at 1690df3e5f)
1027 - + git_config_set: reuse empty sections
1028 - + git config --unset: remove empty sections (in the common case)
1029 - + git_config_set: make use of the config parser's event stream
1030 - + git_config_set: do not use a state machine
1031 - + config_set_store: rename some fields for consistency
1032 - + config: avoid using the global variable `store`
1033 - + config: introduce an optional event stream while parsing
1034 - + t1300: `--unset-all` can leave an empty section behind (bug)
1035 - + t1300: add a few more hairy examples of sections becoming empty
1036 - + t1300: remove unreasonable expectation from TODO
1037 - + t1300: avoid relying on a bug
1038 - + config --replace-all: avoid extra line breaks
1039 - + t1300: demonstrate that --replace-all can "invent" newlines
1040 - + t1300: rename it to reflect that `repo-config` was deprecated
1041 - + git_config_set: fix off-by-two
1471 + - diff.c: add a blocks mode for moved code detection
1472 + - diff.c: adjust hash function signature to match hashmap expectation
1473 + - diff.c: do not pass diff options as keydata to hashmap
1474 + - xdiff/xdiffi.c: remove unneeded function declarations
1475 + - xdiff/xdiff.h: remove unused flags
1476
1043 - "git config --unset a.b", when "a.b" is the last variable in an
1044 - otherwise empty section "a", left an empty section "a" behind, and
1045 - worse yet, a subsequent "git config a.c value" did not reuse that
1046 - empty shell and instead created a new one. These have been
1047 - (partially) corrected.
1477 + "git diff --color-moved" feature has further been tweaked.
1478
1049 - Will merge to 'master'.
1479 + Will merge to 'next'.
1480
1481
1052 -* nd/warn-more-for-devs (2018-04-16) 4 commits
1053 - (merged to 'next' on 2018-04-25 at 2978e61414)
1054 - + Makefile: add a DEVOPTS to get all of -Wextra
1055 - + Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
1056 - + Makefile: detect compiler and enable more warnings in DEVELOPER=1
1057 - + connect.c: mark die_initial_contact() NORETURN
1482 +* ds/generation-numbers (2018-05-02) 11 commits
1483 + - commit-graph.txt: update design document
1484 + - merge: check config before loading commits
1485 + - commit: use generation number in remove_redundant()
1486 + - commit: add short-circuit to paint_down_to_common()
1487 + - commit: use generation numbers for in_merge_bases()
1488 + - ref-filter: use generation number for --contains
1489 + - commit-graph: always load commit-graph information
1490 + - commit: use generations in paint_down_to_common()
1491 + - commit-graph: compute generation numbers
1492 + - commit: add generation number to struct commmit
1493 + - ref-filter: fix outdated comment on in_commit_list
1494 + (this branch is used by ds/commit-graph-lockfile-fix; uses ds/lazy-load-trees.)
1495
1059 - The build procedure "make DEVELOPER=YesPlease" learned to enable a
1060 - bit more warning options depending on the compiler used to help
1061 - developers more. There also is "make DEVOPTS=tokens" knob
1062 - available now, for those who want to help fixing warnings we
1063 - usually ignore, for example.
1496 + A recently added "commit-graph" datafile has learned to store
1497 + pre-computed generation numbers to speed up the decisions to stop
1498 + history traversal.
1499 +
1500 + Is this ready for 'next' with ds/commit-graph-lockfile-fix?
1501 + A commit with triple 'm' needs its title amended, though.
1502 +
1503 +
1504 +* en/rename-directory-detection-reboot (2018-05-08) 36 commits
1505 + (merged to 'next' on 2018-05-08 at be350ebc17)
1506 + + merge-recursive: fix check for skipability of working tree updates
1507 + + merge-recursive: make "Auto-merging" comment show for other merges
1508 + + merge-recursive: fix remainder of was_dirty() to use original index
1509 + + merge-recursive: fix was_tracked() to quit lying with some renamed paths
1510 + + t6046: testcases checking whether updates can be skipped in a merge
1511 + + merge-recursive: avoid triggering add_cacheinfo error with dirty mod
1512 + + merge-recursive: move more is_dirty handling to merge_content
1513 + + merge-recursive: improve add_cacheinfo error handling
1514 + + merge-recursive: avoid spurious rename/rename conflict from dir renames
1515 + + directory rename detection: new testcases showcasing a pair of bugs
1516 + + merge-recursive: fix remaining directory rename + dirty overwrite cases
1517 + + merge-recursive: fix overwriting dirty files involved in renames
1518 + + merge-recursive: avoid clobbering untracked files with directory renames
1519 + + merge-recursive: apply necessary modifications for directory renames
1520 + + merge-recursive: when comparing files, don't include trees
1521 + + merge-recursive: check for file level conflicts then get new name
1522 + + merge-recursive: add computation of collisions due to dir rename & merging
1523 + + merge-recursive: check for directory level conflicts
1524 + + merge-recursive: add get_directory_renames()
1525 + + merge-recursive: make a helper function for cleanup for handle_renames
1526 + + merge-recursive: split out code for determining diff_filepairs
1527 + + merge-recursive: make !o->detect_rename codepath more obvious
1528 + + merge-recursive: fix leaks of allocated renames and diff_filepairs
1529 + + merge-recursive: introduce new functions to handle rename logic
1530 + + merge-recursive: move the get_renames() function
1531 + + directory rename detection: tests for handling overwriting dirty files
1532 + + directory rename detection: tests for handling overwriting untracked files
1533 + + directory rename detection: miscellaneous testcases to complete coverage
1534 + + directory rename detection: testcases exploring possibly suboptimal merges
1535 + + directory rename detection: more involved edge/corner testcases
1536 + + directory rename detection: testcases checking which side did the rename
1537 + + directory rename detection: files/directories in the way of some renames
1538 + + directory rename detection: partially renamed directory testcase/discussion
1539 + + directory rename detection: testcases to avoid taking detection too far
1540 + + directory rename detection: directory splitting testcases
1541 + + directory rename detection: basic testcases
1542 + (this branch is used by bp/merge-rename-config.)
1543 +
1544 + Rename detection logic in "diff" family that is used in "merge" has
1545 + learned to guess when all of x/a, x/b and x/c have moved to z/a,
1546 + z/b and z/c, it is likely that x/d added in the meantime would also
1547 + want to move to z/d by taking the hint that the entire directory
1548 + 'x' moved to 'z'. A bug causing dirty files involved in a rename
1549 + to be overwritten during merge has also been fixed as part of this
1550 + work. Incidentally, this also avoids updating a file in the
1551 + working tree after a (non-trivial) merge whose result matches what
1552 + our side originally had.
1553
1554 Will merge to 'master'.
1555
1556
1068 -* sb/submodule-move-nested (2018-03-29) 6 commits
1069 - (merged to 'next' on 2018-04-25 at 86b177433a)
1070 - + submodule: fixup nested submodules after moving the submodule
1071 - + submodule-config: remove submodule_from_cache
1072 - + submodule-config: add repository argument to submodule_from_{name, path}
1073 - + submodule-config: allow submodule_free to handle arbitrary repositories
1074 - + grep: remove "repo" arg from non-supporting funcs
1075 - + submodule.h: drop declaration of connect_work_tree_and_git_dir
1557 +* nd/command-list (2018-05-10) 13 commits
1558 + - completion: allow to customize the completable command list
1559 + - completion: let git provide the completable command list
1560 + - command-list.txt: documentation and guide line
1561 + - help: use command-list.txt for the source of guides
1562 + - help: add "-a --verbose" to list all commands with synopsis
1563 + - git: support --list-cmds=list-<category>
1564 + - completion: implement and use --list-cmds=main,others
1565 + - git --list-cmds: collect command list in a string_list
1566 + - git.c: convert --list-* to --list-cmds=*
1567 + - Remove common-cmds.h
1568 + - help: use command-list.h for common command list
1569 + - generate-cmds.sh: export all commands to command-list.h
1570 + - generate-cmds.sh: factor out synopsis extract code
1571
1077 - Moving a submodule that itself has submodule in it with "git mv"
1078 - forgot to make necessary adjustment to the nested sub-submodules;
1079 - now the codepath learned to recurse into the submodules.
1572 + The list of commands with their various attributes were spread
1573 + across a few places in the build procedure, but it now is getting a
1574 + bit more consolidated to allow more automation.
1575
1081 - Will merge to 'master'.
1576 + Will merge to 'next'.
1577
1578
1084 -* tb/config-type (2018-04-19) 2 commits
1085 - (merged to 'next' on 2018-04-25 at fe69e93c82)
1086 - + builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
1087 - + builtin/config.c: treat type specifiers singularly
1088 - (this branch is used by tb/config-default.)
1579 +* sg/complete-paths (2018-04-17) 11 commits
1580 + (merged to 'next' on 2018-05-08 at 2a11444f90)
1581 + + completion: fill COMPREPLY directly when completing paths
1582 + + completion: improve handling quoted paths in 'git ls-files's output
1583 + + completion: remove repeated dirnames with 'awk' during path completion
1584 + + t9902-completion: ignore COMPREPLY element order in some tests
1585 + + completion: use 'awk' to strip trailing path components
1586 + + completion: let 'ls-files' and 'diff-index' filter matching paths
1587 + + completion: improve handling quoted paths on the command line
1588 + + completion: support completing non-ASCII pathnames
1589 + + completion: simplify prefix path component handling during path completion
1590 + + completion: move __git_complete_index_file() next to its helpers
1591 + + t9902-completion: add tests demonstrating issues with quoted pathnames
1592
1090 - The "git config" command uses separate options e.g. "--int",
1091 - "--bool", etc. to specify what type the caller wants the value to
1092 - be interpreted as. A new "--type=<typename>" option has been
1093 - introduced, which would make it cleaner to define new types.
1593 + Command line completion (in contrib/) learned to complete pathnames
1594 + for various commands better.
1595
1596 Will merge to 'master'.
1597
1598
1098 -* tb/config-default (2018-04-23) 3 commits
1099 - (merged to 'next' on 2018-04-25 at 59bb6beb2a)
1100 - + builtin/config: introduce `color` type specifier
1101 - + config.c: introduce 'git_config_color' to parse ANSI colors
1102 - + builtin/config: introduce `--default`
1103 - (this branch uses tb/config-type.)
1599 +* sb/blame-color (2018-04-24) 3 commits
1600 + - builtin/blame: add new coloring scheme config
1601 + - builtin/blame: highlight recently changed lines
1602 + - builtin/blame: dim uninteresting metadata lines
1603
1105 - "git config --get" learned the "--default" option, to help the
1106 - calling script. Building on top of the tb/config-type topic, the
1107 - "git config" learns "--type=color" type. Taken together, you can
1108 - do things like "git config --get foo.color --default blue" and get
1109 - the ANSI color sequence for the color given to foo.color variable,
1110 - or "blue" if the variable does not exist.
1604 + "git blame" learns to unhighlight uninteresting metadata from the
1605 + originating commit on lines that are the same as the previous one,
1606 + and also paint lines in different colors depending on the age of
1607 + the commit.
1608
1112 - Will merge to 'master'.
1609 + Will merge to 'next'.
1610
1611
1115 -* ot/libify-get-ref-atom-value (2018-03-29) 6 commits
1116 - (merged to 'next' on 2018-04-25 at 056bcaa69c)
1117 - + ref-filter: libify get_ref_atom_value()
1118 - + ref-filter: add return value to parsers
1119 - + ref-filter: change parsing function error handling
1120 - + ref-filter: add return value && strbuf to handlers
1121 - + ref-filter: start adding strbufs with errors
1122 - + ref-filter: add shortcut to work with strbufs
1612 +* ds/lazy-load-trees (2018-05-02) 6 commits
1613 + (merged to 'next' on 2018-05-02 at d54016d9e3)
1614 + + coccinelle: avoid wrong transformation suggestions from commit.cocci
1615 + (merged to 'next' on 2018-04-25 at b90813f421)
1616 + + commit-graph: lazy-load trees for commits
1617 + + treewide: replace maybe_tree with accessor methods
1618 + + commit: create get_commit_tree() method
1619 + + treewide: rename tree to maybe_tree
1620 + + Merge branch 'bw/c-plus-plus' into ds/lazy-load-trees
1621 + (this branch is used by ds/commit-graph-lockfile-fix and ds/generation-numbers.)
1622
1124 - Code restructuring, in preparation for further work.
1623 + The code has been taught to use the duplicated information stored
1624 + in the commit-graph file to learn the tree object name for a commit
1625 + to avoid opening and parsing the commit object when it makes sense
1626 + to do so.
1627
1628 Will merge to 'master'.
1629
@@ -1140,6 +1642,7 @@ of the repositories listed at
1642 is used.
1643
1644 Will cook in 'next'.
1645 + Perhaps merge to 'master' immediately after 2.18 release?
1646
1647
1648 * jk/branch-l-1-removal (2018-03-26) 1 commit
@@ -1161,70 +1664,41 @@ of the repositories listed at
1664 Will keep in 'pu'.
1665
1666
1164 -* dj/runtime-prefix (2018-04-24) 7 commits
1165 - (merged to 'next' on 2018-04-25 at e7e635a70e)
1166 - + Makefile: quote $INSTLIBDIR when passing it to sed
1167 - + Makefile: remove unused @@PERLLIBDIR@@ substitution variable
1168 - (merged to 'next' on 2018-04-17 at a69aaa7a22)
1169 - + mingw/msvc: use the new-style RUNTIME_PREFIX helper
1170 - + exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
1171 - + exec_cmd: RUNTIME_PREFIX on some POSIX systems
1172 - + Makefile: add Perl runtime prefix support
1173 - + Makefile: generate Perl header from template file
1174 - (this branch is tangled with js/runtime-prefix.)
1175 -
1176 - A build-time option has been added to allow Git to be told to refer
1177 - to its associated files relative to the main binary, in the same
1178 - way that has been possible on Windows for quite some time, for
1179 - Linux, BSDs and Darwin.
1180 -
1181 - Will merge to 'master'.
1182 -
1183 -
1184 -* ab/nuke-emacs-contrib (2018-04-16) 1 commit
1185 - (merged to 'next' on 2018-04-25 at 9b133d8a65)
1186 - + git{,-blame}.el: remove old bitrotting Emacs code
1187 -
1188 - The scripts in contrib/emacs/ have outlived their usefulness and
1189 - have been replaced with a stub that errors out and tells the user
1190 - there are replacements.
1191 -
1192 - Will merge to 'master'.
1193 -
1194 -
1667 * nd/pack-objects-pack-struct (2018-04-16) 15 commits
1196 - - ci: exercise the whole test suite with uncommon code in pack-objects
1197 - - pack-objects: reorder members to shrink struct object_entry
1198 - - pack-objects: shrink delta_size field in struct object_entry
1199 - - pack-objects: shrink size field in struct object_entry
1200 - - pack-objects: clarify the use of object_entry::size
1201 - - pack-objects: don't check size when the object is bad
1202 - - pack-objects: shrink z_delta_size field in struct object_entry
1203 - - pack-objects: refer to delta objects by index instead of pointer
1204 - - pack-objects: move in_pack out of struct object_entry
1205 - - pack-objects: move in_pack_pos out of struct object_entry
1206 - - pack-objects: use bitfield for object_entry::depth
1207 - - pack-objects: use bitfield for object_entry::dfs_state
1208 - - pack-objects: turn type and in_pack_type to bitfields
1209 - - pack-objects: a bit of document about struct object_entry
1210 - - read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean
1668 + (merged to 'next' on 2018-05-16 at 171459475d)
1669 + + ci: exercise the whole test suite with uncommon code in pack-objects
1670 + + pack-objects: reorder members to shrink struct object_entry
1671 + + pack-objects: shrink delta_size field in struct object_entry
1672 + + pack-objects: shrink size field in struct object_entry
1673 + + pack-objects: clarify the use of object_entry::size
1674 + + pack-objects: don't check size when the object is bad
1675 + + pack-objects: shrink z_delta_size field in struct object_entry
1676 + + pack-objects: refer to delta objects by index instead of pointer
1677 + + pack-objects: move in_pack out of struct object_entry
1678 + + pack-objects: move in_pack_pos out of struct object_entry
1679 + + pack-objects: use bitfield for object_entry::depth
1680 + + pack-objects: use bitfield for object_entry::dfs_state
1681 + + pack-objects: turn type and in_pack_type to bitfields
1682 + + pack-objects: a bit of document about struct object_entry
1683 + + read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean
1684
1685 "git pack-objects" needs to allocate tons of "struct object_entry"
1686 while doing its work, and shrinking its size helps the performance
1687 quite a bit.
1688
1216 - Will merge to 'next'.
1689 + Will merge to 'master'.
1690 cf. <CACsJy8CuVRy4UPEwXJJYAjePEz5zjKMLhRjh9UFw0DPYTzobkw@mail.gmail.com>
1691
1692
1693 * nd/repack-keep-pack (2018-04-16) 7 commits
1221 - - pack-objects: show some progress when counting kept objects
1222 - - gc --auto: exclude base pack if not enough mem to "repack -ad"
1223 - - gc: handle a corner case in gc.bigPackThreshold
1224 - - gc: add gc.bigPackThreshold config
1225 - - gc: add --keep-largest-pack option
1226 - - repack: add --keep-pack option
1227 - - t7700: have closing quote of a test at the beginning of line
1694 + (merged to 'next' on 2018-05-08 at ab906be358)
1695 + + pack-objects: show some progress when counting kept objects
1696 + + gc --auto: exclude base pack if not enough mem to "repack -ad"
1697 + + gc: handle a corner case in gc.bigPackThreshold
1698 + + gc: add gc.bigPackThreshold config
1699 + + gc: add --keep-largest-pack option
1700 + + repack: add --keep-pack option
1701 + + t7700: have closing quote of a test at the beginning of line
1702
1703 "git gc" in a large repository takes a lot of time as it considers
1704 to repack all objects into one pack by default. The command has
@@ -1232,134 +1706,46 @@ of the repositories listed at
1706 marked with ".keep" so that it is left untouched while objects in
1707 other packs and loose ones are repacked.
1708
1235 - Will merge to 'next'.
1236 - cf. <CACsJy8CuVRy4UPEwXJJYAjePEz5zjKMLhRjh9UFw0DPYTzobkw@mail.gmail.com>
1237 -
1238 -
1239 -* ds/commit-graph (2018-04-11) 16 commits
1240 - (merged to 'next' on 2018-04-25 at 18af3d28d9)
1241 - + commit-graph: implement "--append" option
1242 - + commit-graph: build graph from starting commits
1243 - + commit-graph: read only from specific pack-indexes
1244 - + commit: integrate commit graph with commit parsing
1245 - + commit-graph: close under reachability
1246 - + commit-graph: add core.commitGraph setting
1247 - + commit-graph: implement git commit-graph read
1248 - + commit-graph: implement git-commit-graph write
1249 - + commit-graph: implement write_commit_graph()
1250 - + commit-graph: create git-commit-graph builtin
1251 - + graph: add commit graph design document
1252 - + commit-graph: add format document
1253 - + csum-file: refactor finalize_hashfile() method
1254 - + csum-file: rename hashclose() to finalize_hashfile()
1255 - + Merge branch 'jk/cached-commit-buffer' into HEAD
1256 - + Merge branch 'jt/binsearch-with-fanout' into HEAD
1257 - (this branch is used by ds/generation-numbers and ds/lazy-load-trees.)
1258 -
1259 - Precompute and store information necessary for ancestry traversal
1260 - in a separate file to optimize graph walking.
1261 -
1709 Will merge to 'master'.
1710 + cf. <CACsJy8CuVRy4UPEwXJJYAjePEz5zjKMLhRjh9UFw0DPYTzobkw@mail.gmail.com>
1711
1712
1713 * tg/worktree-add-existing-branch (2018-04-30) 4 commits
1266 - - worktree: teach "add" to check out existing branches
1267 - - worktree: factor out dwim_branch function
1268 - - worktree: improve message when creating a new worktree
1269 - - worktree: remove extra members from struct add_opts
1714 + (merged to 'next' on 2018-05-08 at 8b76505192)
1715 + + worktree: teach "add" to check out existing branches
1716 + + worktree: factor out dwim_branch function
1717 + + worktree: improve message when creating a new worktree
1718 + + worktree: remove extra members from struct add_opts
1719
1720 "git worktree add" learned to check out an existing branch.
1721
1273 - Will merge to 'next'.
1722 + Will merge to 'master'.
1723
1724
1725 * js/rebase-recreate-merge (2018-04-26) 17 commits
1277 - - rebase -i --rebase-merges: add a section to the man page
1278 - - rebase -i: introduce --rebase-merges=[no-]rebase-cousins
1279 - - pull: accept --rebase=merges to recreate the branch topology
1280 - - rebase --rebase-merges: avoid "empty merges"
1281 - - sequencer: handle post-rewrite for merge commands
1282 - - sequencer: make refs generated by the `label` command worktree-local
1283 - - rebase --rebase-merges: add test for --keep-empty
1284 - - rebase: introduce the --rebase-merges option
1285 - - rebase-helper --make-script: introduce a flag to rebase merges
1286 - - sequencer: fast-forward `merge` commands, if possible
1287 - - sequencer: introduce the `merge` command
1288 - - sequencer: introduce new commands to reset the revision
1289 - - git-rebase--interactive: clarify arguments
1290 - - sequencer: offer helpful advice when a command was rescheduled
1291 - - sequencer: refactor how original todo list lines are accessed
1292 - - sequencer: make rearrange_squash() a bit more obvious
1293 - - sequencer: avoid using errno clobbered by rollback_lock_file()
1726 + (merged to 'next' on 2018-05-16 at f1aeea2879)
1727 + + rebase -i --rebase-merges: add a section to the man page
1728 + + rebase -i: introduce --rebase-merges=[no-]rebase-cousins
1729 + + pull: accept --rebase=merges to recreate the branch topology
1730 + + rebase --rebase-merges: avoid "empty merges"
1731 + + sequencer: handle post-rewrite for merge commands
1732 + + sequencer: make refs generated by the `label` command worktree-local
1733 + + rebase --rebase-merges: add test for --keep-empty
1734 + + rebase: introduce the --rebase-merges option
1735 + + rebase-helper --make-script: introduce a flag to rebase merges
1736 + + sequencer: fast-forward `merge` commands, if possible
1737 + + sequencer: introduce the `merge` command
1738 + + sequencer: introduce new commands to reset the revision
1739 + + git-rebase--interactive: clarify arguments
1740 + + sequencer: offer helpful advice when a command was rescheduled
1741 + + sequencer: refactor how original todo list lines are accessed
1742 + + sequencer: make rearrange_squash() a bit more obvious
1743 + + sequencer: avoid using errno clobbered by rollback_lock_file()
1744 (this branch is used by js/sequencer-and-root-commits.)
1745
1746 "git rebase" learned "--rebase-merges" to transplant the whole
1747 topology of commit graph elsewhere.
1748
1299 - Will merge to 'next'.
1300 -
1301 -
1302 -* bw/protocol-v2 (2018-03-15) 35 commits
1303 - (merged to 'next' on 2018-04-11 at 23ee234a2c)
1304 - + remote-curl: don't request v2 when pushing
1305 - + remote-curl: implement stateless-connect command
1306 - + http: eliminate "# service" line when using protocol v2
1307 - + http: don't always add Git-Protocol header
1308 - + http: allow providing extra headers for http requests
1309 - + remote-curl: store the protocol version the server responded with
1310 - + remote-curl: create copy of the service name
1311 - + pkt-line: add packet_buf_write_len function
1312 - + transport-helper: introduce stateless-connect
1313 - + transport-helper: refactor process_connect_service
1314 - + transport-helper: remove name parameter
1315 - + connect: don't request v2 when pushing
1316 - + connect: refactor git_connect to only get the protocol version once
1317 - + fetch-pack: support shallow requests
1318 - + fetch-pack: perform a fetch using v2
1319 - + upload-pack: introduce fetch server command
1320 - + push: pass ref prefixes when pushing
1321 - + fetch: pass ref prefixes when fetching
1322 - + ls-remote: pass ref prefixes when requesting a remote's refs
1323 - + transport: convert transport_get_remote_refs to take a list of ref prefixes
1324 - + transport: convert get_refs_list to take a list of ref prefixes
1325 - + connect: request remote refs using v2
1326 - + ls-refs: introduce ls-refs server command
1327 - + serve: introduce git-serve
1328 - + test-pkt-line: introduce a packet-line test helper
1329 - + protocol: introduce enum protocol_version value protocol_v2
1330 - + transport: store protocol version
1331 - + connect: discover protocol version outside of get_remote_heads
1332 - + connect: convert get_remote_heads to use struct packet_reader
1333 - + transport: use get_refs_via_connect to get refs
1334 - + upload-pack: factor out processing lines
1335 - + upload-pack: convert to a builtin
1336 - + pkt-line: add delim packet support
1337 - + pkt-line: allow peeking a packet line without consuming it
1338 - + pkt-line: introduce packet_read_with_status
1339 - (this branch is used by bw/server-options and jt/partial-clone-proto-v2.)
1340 -
1341 - The beginning of the next-gen transfer protocol.
1342 -
1343 - Will merge to 'master'.
1344 -
1345 -
1346 -* ls/checkout-encoding (2018-04-16) 10 commits
1347 - (merged to 'next' on 2018-04-25 at e0f8554b2a)
1348 - + convert: add round trip check based on 'core.checkRoundtripEncoding'
1349 - + convert: add tracing for 'working-tree-encoding' attribute
1350 - + convert: check for detectable errors in UTF encodings
1351 - + convert: add 'working-tree-encoding' attribute
1352 - + utf8: add function to detect a missing UTF-16/32 BOM
1353 - + utf8: add function to detect prohibited UTF-16/32 BOM
1354 - + utf8: teach same_encoding() alternative UTF encoding names
1355 - + strbuf: add a case insensitive starts_with()
1356 - + strbuf: add xstrdup_toupper()
1357 - + strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
1358 -
1359 - The new "checkout-encoding" attribute can ask Git to convert the
1360 - contents to the specified encoding when checking out to the working
1361 - tree (and the other way around when checking in).
1362 -
1749 Will merge to 'master'.
1750
1751 --------------------------------------------------