What's cooking (2021/01 #05)

Junio C Hamano committed Jan 25, 2021 at 15:29 UTC a0e3e70e5ea6a22877bcd3283e2f7e2173b5b117
1 file changed +631 -540
whats-cooking.txt
+631 -540
@@ -1,10 +1,10 @@
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 -Subject: What's cooking in git.git (Jan 2021, #04; Sat, 16)
4 -X-master-at: 66e871b6647ffea61a77a0f82c7ef3415f1ee79c
5 -X-next-at: 02bc693789bd06eae399a1ec06d0ca2f72f49ff3
3 +Subject: What's cooking in git.git (Jan 2021, #05; Mon, 25)
4 +X-master-at: e6362826a0409539642a5738db61827e5978e2e4
5 +X-next-at: 705c353deb6a369b8980a2bb0d65b01976f53945
6
7 -What's cooking in git.git (Jan 2021, #04; Sat, 16)
7 +What's cooking in git.git (Jan 2021, #05; Mon, 25)
8 --------------------------------------------------
9
10 Here are the topics that have been cooking. Commits prefixed with '-' are
@@ -12,10 +12,22 @@ only in 'seen' (formerly 'pu'---proposed updates) while commits prefixed
12 with '+' are in 'next'. The ones marked with '.' do not appear in any of
13 the integration branches, but I am still holding onto them.
14
15 -The third batch of topics are now in 'master'. Most of these cooked
16 -for shorter than usual in 'next' (I usually try to keep any topic in
17 -'next' for at least a week), but many of them are mostly benign doc
18 -and test fixes.
15 +The fourth batch of topics are now in 'master'. Dscho's "we
16 +shouldn't break our tests, or reduce coverage by them, when 'git
17 +init' starts using 'main' as the fallback default name for the
18 +initial branch topic is in. Two of the topics have especially
19 +noteworthy impact to end-users and developers, so I've added the
20 +following to the draft release notes:
21 +
22 + Backward incompatible and other important changes
23 +
24 + * The "pack-redundant" command, which has been left stale with almost
25 + unusable performance issues, now warns loudly when it gets used, as
26 + we no longer want to recommend its use (instead just "repack -d"
27 + instead).
28 +
29 + * The development community has adopted Contributor Covenant v2.0 to
30 + update from v1.4 that we have been using.
31
32 Copies of the source code to Git live in many repositories, and the
33 following is a list of the ones I push into or their mirrors. Some
@@ -29,162 +41,546 @@ With maint, master, next, seen, todo:
41 https://github.com/git/git/
42 https://gitlab.com/git-vcs/git/
43
32 -With all the integration branches and topics broken out:
44 +With all the integration branches and topics broken out:
45 +
46 + https://github.com/gitster/git/
47 +
48 +Even though the preformatted documentation in HTML and man format
49 +are not sources, they are published in these repositories for
50 +convenience (replace "htmldocs" with "manpages" for the manual
51 +pages):
52 +
53 + git://git.kernel.org/pub/scm/git/git-htmldocs.git/
54 + https://github.com/gitster/git-htmldocs.git/
55 +
56 +Release tarballs are available at:
57 +
58 + https://www.kernel.org/pub/software/scm/git/
59 +
60 +--------------------------------------------------
61 +[Graduated to 'master']
62 +
63 +* ab/branch-sort (2021-01-07) 7 commits
64 + (merged to 'next' on 2021-01-12 at 1231feea7c)
65 + + branch: show "HEAD detached" first under reverse sort
66 + + branch: sort detached HEAD based on a flag
67 + + ref-filter: move ref_sorting flags to a bitfield
68 + + ref-filter: move "cmp_fn" assignment into "else if" arm
69 + + ref-filter: add braces to if/else if/else chain
70 + + branch tests: add to --sort tests
71 + + branch: change "--local" to "--list" in comment
72 +
73 + The implementation of "git branch --sort" wrt the detached HEAD
74 + display has always been hacky, which has been cleaned up.
75 +
76 +
77 +* ab/coc-update-to-2.0 (2021-01-13) 3 commits
78 + (merged to 'next' on 2021-01-15 at 4859c12625)
79 + + CoC: update to version 2.0 + local changes
80 + + CoC: explicitly take any whitespace breakage
81 + + CoC: Update word-wrapping to match upstream
82 +
83 + Update the Code-of-conduct to version 2.0 from the upstream (we've
84 + been using version 1.4).
85 +
86 +
87 +* ab/mailmap (2021-01-12) 22 commits
88 + (merged to 'next' on 2021-01-13 at a3ce27912f)
89 + + shortlog: remove unused(?) "repo-abbrev" feature
90 + + mailmap doc + tests: document and test for case-insensitivity
91 + + mailmap tests: add tests for empty "<>" syntax
92 + + mailmap tests: add tests for whitespace syntax
93 + + mailmap tests: add a test for comment syntax
94 + + mailmap doc + tests: add better examples & test them
95 + + tests: refactor a few tests to use "test_commit --append"
96 + + test-lib functions: add an --append option to test_commit
97 + + test-lib functions: add --author support to test_commit
98 + + test-lib functions: document arguments to test_commit
99 + + test-lib functions: expand "test_commit" comment template
100 + + mailmap: test for silent exiting on missing file/blob
101 + + mailmap tests: get rid of overly complex blame fuzzing
102 + + mailmap tests: add a test for "not a blob" error
103 + + mailmap tests: remove redundant entry in test
104 + + mailmap tests: improve --stdin tests
105 + + mailmap tests: modernize syntax & test idioms
106 + + mailmap tests: use our preferred whitespace syntax
107 + + mailmap doc: start by mentioning the comment syntax
108 + + check-mailmap doc: note config options
109 + + mailmap doc: quote config variables `like.this`
110 + + mailmap doc: create a new "gitmailmap(5)" man page
111 + (this branch is used by ab/mailmap-fixup.)
112 +
113 + Clean-up docs, codepaths and tests around mailmap.
114 +
115 +
116 +* ab/mailmap-fixup (2021-01-14) 4 commits
117 + (merged to 'next' on 2021-01-15 at ef14e2263d)
118 + + t4203: make blame output massaging more robust
119 + + mailmap doc: use correct environment variable 'GIT_WORK_TREE'
120 + + t4203: stop losing return codes of git commands
121 + + test-lib-functions.sh: fix usage for test_commit()
122 + (this branch uses ab/mailmap.)
123 +
124 + Follow-up fixes and improvements to ab/mailmap topic.
125 +
126 +
127 +* ab/mktag (2021-01-06) 23 commits
128 + (merged to 'next' on 2021-01-08 at 6f9e11ad97)
129 + + mktag: add a --[no-]strict option
130 + + mktag: mark strings for translation
131 + + mktag: convert to parse-options
132 + + mktag: allow omitting the header/body \n separator
133 + + mktag: allow turning off fsck.extraHeaderEntry
134 + + fsck: make fsck_config() re-usable
135 + + mktag: use fsck instead of custom verify_tag()
136 + + mktag: use puts(str) instead of printf("%s\n", str)
137 + + mktag: remove redundant braces in one-line body "if"
138 + + mktag: use default strbuf_read() hint
139 + + mktag tests: test verify_object() with replaced objects
140 + + mktag tests: improve verify_object() test coverage
141 + + mktag tests: test "hash-object" compatibility
142 + + mktag tests: stress test whitespace handling
143 + + mktag tests: run "fsck" after creating "mytag"
144 + + mktag tests: don't create "mytag" twice
145 + + mktag tests: don't redirect stderr to a file needlessly
146 + + mktag tests: remove needless SHA-1 hardcoding
147 + + mktag tests: use "test_commit" helper
148 + + mktag tests: don't needlessly use a subshell
149 + + mktag doc: update to explain why to use this
150 + + mktag doc: grammar fix, when exists -> when it exists
151 + + mktag doc: say <hash> not <sha1>
152 +
153 + "git mktag" validates its input using its own rules before writing
154 + a tag object---it has been updated to share the logic with "git
155 + fsck".
156 +
157 +
158 +* cc/write-promisor-file (2021-01-14) 3 commits
159 + (merged to 'next' on 2021-01-14 at 9d773d4734)
160 + + pack-write: die on error in write_promisor_file()
161 + + fetch-pack: refactor writing promisor file
162 + + fetch-pack: rename helper to create_promisor_file()
163 +
164 + A bit of code refactoring.
165 +
166 +
167 +* dl/reflog-with-single-entry (2021-01-11) 2 commits
168 + (merged to 'next' on 2021-01-13 at 09b33209c4)
169 + + refs: allow @{n} to work with n-sized reflog
170 + + refs: factor out set_read_ref_cutoffs()
171 +
172 + After expiring a reflog and making a single commit, the reflog for
173 + the branch would record a single entry that knows both @{0} and
174 + @{1}, but we failed to answer "what commit were we on?", i.e. @{1}
175 +
176 +
177 +* en/diffcore-rename (2021-01-04) 9 commits
178 + (merged to 'next' on 2021-01-12 at fa769ebc35)
179 + + diffcore-rename: remove unnecessary duplicate entry checks
180 + + diffcore-rename: accelerate rename_dst setup
181 + + diffcore-rename: simplify and accelerate register_rename_src()
182 + + t4058: explore duplicate tree entry handling in a bit more detail
183 + + t4058: add more tests and documentation for duplicate tree entry handling
184 + + diffcore-rename: reduce jumpiness in progress counters
185 + + diffcore-rename: simplify limit check
186 + + diffcore-rename: avoid usage of global in too_many_rename_candidates()
187 + + diffcore-rename: rename num_create to num_destinations
188 + (this branch is used by en/merge-ort-perf.)
189 +
190 + File-level rename detection updates.
191 +
192 +
193 +* en/merge-ort-3 (2020-12-15) 11 commits
194 + (merged to 'next' on 2021-01-08 at fe481b9627)
195 + + merge-ort: add implementation of type-changed rename handling
196 + + merge-ort: add implementation of normal rename handling
197 + + merge-ort: add implementation of rename collisions
198 + + merge-ort: add implementation of rename/delete conflicts
199 + + merge-ort: add implementation of both sides renaming differently
200 + + merge-ort: add implementation of both sides renaming identically
201 + + merge-ort: add basic outline for process_renames()
202 + + merge-ort: implement compare_pairs() and collect_renames()
203 + + merge-ort: implement detect_regular_renames()
204 + + merge-ort: add initial outline for basic rename detection
205 + + merge-ort: add basic data structures for handling renames
206 + (this branch is used by en/merge-ort-perf and en/ort-directory-rename.)
207 +
208 + Rename detection is added to the "ORT" merge strategy.
209 +
210 +
211 +* jc/deprecate-pack-redundant (2020-12-15) 1 commit
212 + (merged to 'next' on 2021-01-12 at 14034c7892)
213 + + pack-redundant: gauge the usage before proposing its removal
214 +
215 + Warn loudly when the "pack-redundant" command, which has been left
216 + stale with almost unusable performance issues, gets used, as we no
217 + longer want to recommend its use (instead just "repack -d" instead).
218 +
219 +
220 +* jk/forbid-lf-in-git-url (2021-01-07) 2 commits
221 + (merged to 'next' on 2021-01-12 at 88a1d937ae)
222 + + fsck: reject .gitmodules git:// urls with newlines
223 + + git_connect_git(): forbid newlines in host and path
224 +
225 + Newline characters in the host and path part of git:// URL are
226 + now forbidden.
227 +
228 +
229 +* jk/log-cherry-pick-duplicate-patches (2021-01-12) 1 commit
230 + (merged to 'next' on 2021-01-13 at abcfbf8603)
231 + + patch-ids: handle duplicate hashmap entries
232 +
233 + When more than one commit with the same patch ID appears on one
234 + side, "git log --cherry-pick A...B" did not exclude them all when a
235 + commit with the same patch ID appears on the other side. Now it
236 + does.
237 +
238 +
239 +* js/default-branch-name-tests-final-stretch (2020-11-19) 29 commits
240 + (merged to 'next' on 2021-01-13 at 0e93f0d529)
241 + + tests: drop prereq `PREPARE_FOR_MAIN_BRANCH` where no longer needed
242 + + t99*: adjust the references to the default branch name "main"
243 + + tests(git-p4): transition to the default branch name `main`
244 + + t9[5-7]*: adjust the references to the default branch name "main"
245 + + t9[0-4]*: adjust the references to the default branch name "main"
246 + + t8*: adjust the references to the default branch name "main"
247 + + t7[5-9]*: adjust the references to the default branch name "main"
248 + + t7[0-4]*: adjust the references to the default branch name "main"
249 + + t6[4-9]*: adjust the references to the default branch name "main"
250 + + t64*: preemptively adjust alignment to prepare for `master` -> `main`
251 + + t6[0-3]*: adjust the references to the default branch name "main"
252 + + t5[6-9]*: adjust the references to the default branch name "main"
253 + + t55[4-9]*: adjust the references to the default branch name "main"
254 + + t55[23]*: adjust the references to the default branch name "main"
255 + + t551*: adjust the references to the default branch name "main"
256 + + t550*: adjust the references to the default branch name "main"
257 + + t5503: prepare aligned comment for replacing `master` with `main`
258 + + t5[0-4]*: adjust the references to the default branch name "main"
259 + + t5323: prepare centered comment for `master` -> `main`
260 + + t4*: adjust the references to the default branch name "main"
261 + + t3[5-9]*: adjust the references to the default branch name "main"
262 + + t34*: adjust the references to the default branch name "main"
263 + + t3416: preemptively adjust alignment in a comment
264 + + t3[0-3]*: adjust the references to the default branch name "main"
265 + + t2*: adjust the references to the default branch name "main"
266 + + t[01]*: adjust the references to the default branch name "main"
267 + + t0060: preemptively adjust alignment
268 + + tests: mark tests relying on the current default for `init.defaultBranch`
269 + + Merge 'jk/diff-release-filespec-fix' into js/default-branch-name-tests-final-stretch
270 +
271 + Prepare tests not to be affected by the name of the default branch
272 + "git init" creates.
273 +
274 +
275 +* jx/bundle (2021-01-11) 3 commits
276 + (merged to 'next' on 2021-01-14 at 749a907dd2)
277 + + bundle: arguments can be read from stdin
278 + + bundle: lost objects when removing duplicate pendings
279 + + test: add helper functions for git-bundle
280 +
281 + "git bundle" learns "--stdin" option to read its refs from the
282 + standard input. Also, it now does not lose refs whey they point
283 + at the same object.
284 +
285 +
286 +* ma/more-opaque-lock-file (2021-01-06) 5 commits
287 + (merged to 'next' on 2021-01-12 at f246e38b50)
288 + + read-cache: try not to peek into `struct {lock_,temp}file`
289 + + refs/files-backend: don't peek into `struct lock_file`
290 + + midx: don't peek into `struct lock_file`
291 + + commit-graph: don't peek into `struct lock_file`
292 + + builtin/gc: don't peek into `struct lock_file`
293 +
294 + Code clean-up.
295 +
296 +
297 +* ps/config-env-pairs (2021-01-15) 8 commits
298 + (merged to 'next' on 2021-01-15 at 4ed0341270)
299 + + config: allow specifying config entries via envvar pairs
300 + + environment: make `getenv_safe()` a public function
301 + + config: store "git -c" variables using more robust format
302 + + config: parse more robust format in GIT_CONFIG_PARAMETERS
303 + + config: extract function to parse config pairs
304 + + quote: make sq_dequote_step() a public function
305 + + config: add new way to pass config via `--config-env`
306 + + git: add `--super-prefix` to usage string
307 +
308 + Introduce two new ways to feed configuration variable-value pairs
309 + via environment variables, and tweak the way GIT_CONFIG_PARAMETERS
310 + encodes variable/value pairs to make it more robust.
311 +
312 +
313 +* ps/fetch-atomic (2021-01-12) 5 commits
314 + (merged to 'next' on 2021-01-13 at a8896d0873)
315 + + fetch: implement support for atomic reference updates
316 + + fetch: allow passing a transaction to `s_update_ref()`
317 + + fetch: refactor `s_update_ref` to use common exit path
318 + + fetch: use strbuf to format FETCH_HEAD updates
319 + + fetch: extract writing to FETCH_HEAD
320 +
321 + "git fetch" learns to treat ref updates atomically in all-or-none
322 + fashion, just like "git push" does, with the new "--atomic" option.
323 +
324
34 - https://github.com/gitster/git/
325 +* sj/untracked-files-in-submodule-directory-is-not-dirty (2020-12-08) 1 commit
326 + (merged to 'next' on 2021-01-12 at 2aca21c42e)
327 + + diff: do not show submodule with untracked files as "-dirty"
328
36 -Even though the preformatted documentation in HTML and man format
37 -are not sources, they are published in these repositories for
38 -convenience (replace "htmldocs" with "manpages" for the manual
39 -pages):
329 + "git diff" showed a submodule working tree with untracked cruft as
330 + "Submodule commit <objectname>-dirty", but a natural expectation is
331 + that the "-dirty" indicator would align with "git describe --dirty",
332 + which does not consider having untracked files in the working tree
333 + as source of dirtiness. The inconsistency has been fixed.
334
41 - git://git.kernel.org/pub/scm/git/git-htmldocs.git/
42 - https://github.com/gitster/git-htmldocs.git/
335
44 -Release tarballs are available at:
336 +* tb/pack-revindex-api (2021-01-14) 21 commits
337 + (merged to 'next' on 2021-01-15 at 1f2997979c)
338 + + for_each_object_in_pack(): clarify pack vs index ordering
339 + + pack-revindex.c: avoid direct revindex access in 'offset_to_pack_pos()'
340 + + pack-revindex: hide the definition of 'revindex_entry'
341 + + pack-revindex: remove unused 'find_revindex_position()'
342 + + pack-revindex: remove unused 'find_pack_revindex()'
343 + + builtin/gc.c: guess the size of the revindex
344 + + for_each_object_in_pack(): convert to new revindex API
345 + + unpack_entry(): convert to new revindex API
346 + + packed_object_info(): convert to new revindex API
347 + + retry_bad_packed_offset(): convert to new revindex API
348 + + get_delta_base_oid(): convert to new revindex API
349 + + rebuild_existing_bitmaps(): convert to new revindex API
350 + + try_partial_reuse(): convert to new revindex API
351 + + get_size_by_pos(): convert to new revindex API
352 + + show_objects_for_type(): convert to new revindex API
353 + + bitmap_position_packfile(): convert to new revindex API
354 + + check_object(): convert to new revindex API
355 + + write_reused_pack_verbatim(): convert to new revindex API
356 + + write_reused_pack_one(): convert to new revindex API
357 + + write_reuse_object(): convert to new revindex API
358 + + pack-revindex: introduce a new API
359 + (this branch is used by tb/pack-revindex-on-disk.)
360
46 - https://www.kernel.org/pub/software/scm/git/
361 + Abstract accesses to in-core revindex that allows enumerating
362 + objects stored in a packfile in the order they appear in the pack,
363 + in preparation for introducing an on-disk precomputed revindex.
364
365 --------------------------------------------------
366 [New Topics]
367
51 -* ab/fsck-doc-fix (2021-01-16) 1 commit
52 - - fsck doc: remove ancient out-of-date diagnostics
368 +* cm/rebase-i (2021-01-24) 9 commits
369 + . doc/git-rebase: add documentation for fixup [-C|-c] options
370 + . rebase -i: teach --autosquash to work with amend!
371 + . t3437: test script for fixup [-C|-c] options in interactive rebase
372 + . rebase -i: add fixup [-C | -c] command
373 + . sequencer: use const variable for commit message comments
374 + . sequencer: pass todo_item to do_pick_commit()
375 + . rebase -i: comment out squash!/fixup! subjects from squash message
376 + . sequencer: factor out code to append squash message
377 + . rebase -i: only write fixup-message when it's needed
378
54 - Documentation for "git fsck" lost stale bits that has become
55 - incorrect.
379 + "rebase -i" is getting cleaned up and also enhanced.
380 +
381 + It seems to break t3415 when merged to 'seen'.
382 +
383 +
384 +* ds/maintenance-prefetch-cleanup (2021-01-20) 2 commits
385 + - t7900: clean up some broken refs
386 + - maintenance: set log.excludeDecoration durin prefetch
387 +
388 + Test clean-up plus UI improvement by hiding extra refs that
389 + the prefetch task uses from "log --decorate" output.
390
391 Will merge to 'next'.
392
393
60 -* ab/tests-various-fixup (2021-01-16) 11 commits
61 - - tests: add a "set -o pipefail" for a patched bash
62 - - tests: split up bash detection library
63 - - archive tests: use a cheaper "zipinfo -h" invocation to get header
64 - - upload-pack tests: avoid a non-zero "grep" exit status
65 - - rm tests: actually test for SIGPIPE in SIGPIPE test
66 - - git-svn tests: rewrite brittle tests to use "--[no-]merges".
67 - - git svn mergeinfo tests: refactor "test -z" to use test_must_be_empty
68 - - git svn mergeinfo tests: modernize redirection & quoting style
69 - - cache-tree tests: refactor overly complex function
70 - - cache-tree tests: use a sub-shell with less indirection
71 - - cache-tree tests: remove unused $2 parameter
394 +* ds/more-index-cleanups (2021-01-23) 9 commits
395 + - t1092: test interesting sparse-checkout scenarios
396 + - test-lib: test_region looks for trace2 regions
397 + - sparse-checkout: load sparse-checkout patterns
398 + - name-hash: use trace2 regions for init
399 + - repository: add repo reference to index_state
400 + - fsmonitor: de-duplicate BUG()s around dirty bits
401 + - cache-tree: extract subtree_pos()
402 + - cache-tree: simplify verify_cache() prototype
403 + - cache-tree: clean up cache_tree_update()
404 + (this branch uses ds/cache-tree-basics.)
405
73 - Various test updates.
406 + Cleaning various codepaths up.
407
75 - Looking good.
408 + Will merge to 'next'.
409
77 ---------------------------------------------------
78 -[Graduated to 'master']
410
80 -* ab/gettext-charset-comment-fix (2021-01-11) 2 commits
81 - (merged to 'next' on 2021-01-12 at bc7f60e246)
82 - + gettext.c: remove/reword a mostly-useless comment
83 - + Makefile: remove a warning about old GETTEXT_POISON flag
411 +* jt/packfile-as-uri-doc (2021-01-20) 1 commit
412 + - Doc: clarify contents of packfile sent as URI
413
85 - Comments update.
414 + Doc fix for packfile URI feature.
415
416 + Will merge to 'next'.
417
88 -* ad/t4129-setfacl-target-fix (2021-01-09) 1 commit
89 - (merged to 'next' on 2021-01-12 at e09694772a)
90 - + t4129: fix setfacl-related permissions failure
418
92 - Test fix.
419 +* rs/worktree-list-verbose (2021-01-20) 7 commits
420 + - worktree: teach `list` verbose mode
421 + - worktree: teach `list` to annotate prunable worktree
422 + - worktree: teach `list --porcelain` to annotate locked worktree
423 + - t2402: ensure locked worktree is properly cleaned up
424 + - worktree: teach worktree_lock_reason() to gently handle main worktree
425 + - worktree: teach worktree to lazy-load "prunable" reason
426 + - worktree: libify should_prune_worktree()
427
428 + The "list" subcommand of "git worktree" learns to show more info in
429 + its verbose mode.
430
95 -* bc/doc-status-short (2021-01-11) 1 commit
96 - (merged to 'next' on 2021-01-13 at 6093625f0c)
97 - + docs: rephrase and clarify the git status --short format
431 + Expecting a reroll.
432 + cf. <gohp6kv9bq4a32.fsf@gmail.com>
433
99 - Doc update.
434
435 +* tb/geometric-repack (2021-01-20) 10 commits
436 + - builtin/repack.c: add '--geometric' option
437 + - builtin/repack.c: extract loose object handling
438 + - builtin/pack-objects.c: teach '--keep-pack-stdin'
439 + - packfile: add kept-pack cache for find_kept_pack_entry()
440 + - pack-objects: rewrite honor-pack-keep logic
441 + - p5303: measure time to repack with keep
442 + - p5303: add missing &&-chains
443 + - builtin/pack-objects.c: learn '--assume-kept-packs-closed'
444 + - revision: learn '--no-kept-objects'
445 + - packfile: introduce 'find_kept_pack_entry()'
446
102 -* dl/p4-encode-after-kw-expansion (2020-12-23) 1 commit
103 - (merged to 'next' on 2021-01-13 at 8fce17d998)
104 - + git-p4: fix syncing file types with pattern
447 + "git repack" so far has been only capable of repacking everything
448 + under the sun into a single pack (or split by size). A cleverer
449 + strategy to reduce the cost of repacking a repository has been
450 + introduced.
451
106 - Text encoding fix for "git p4".
452
453 +* zh/ls-files-deduplicate (2021-01-23) 3 commits
454 + - ls-files.c: add --deduplicate option
455 + - ls_files.c: consolidate two for loops into one
456 + - ls_files.c: bugfix for --deleted and --modified
457
109 -* ds/for-each-repo-noopfix (2021-01-07) 1 commit
110 - (merged to 'next' on 2021-01-12 at 92f83b5db1)
111 - + for-each-repo: do nothing on empty config
458 + "git ls-files" can and does show multiple entries when the index is
459 + unmerged, which is a source for confusion unless -s/-u option is in
460 + use. A new option --deduplicate has been introduced.
461
113 - "git for-each-repo --config=<var> <cmd>" should not run <cmd> for
114 - any repository when the configuration variable <var> is not defined
115 - even once.
462 + Will merge to 'next'.
463
464
118 -* ds/maintenance-part-4 (2021-01-05) 4 commits
119 - (merged to 'next' on 2021-01-08 at 1f98c859ea)
120 - + maintenance: use Windows scheduled tasks
121 - + maintenance: use launchctl on macOS
122 - + maintenance: include 'cron' details in docs
123 - + maintenance: extract platform-specific scheduling
465 +* ah/rebase-no-fork-point-config (2021-01-21) 1 commit
466 + - rebase: add a config option for --no-fork-point
467
125 - Follow-up on the "maintenance part-3" which introduced scheduled
126 - maintenance tasks to support platforms whose native scheduling
127 - methods are not 'cron'.
468 + "git rebase --[no-]fork-point" gained a configuration variable
469 + rebase.forkPoint so that users do not have to keep specifying a
470 + non-default setting.
471
472 + Expecting a reroll to update its tests.
473 + cf. <CAMMLpeTDNLUz9UVnL3aVK=J7X50Sq8L-OVGaoEsT5AY6EQON-g@mail.gmail.com>
474
130 -* jc/macos-install-dependencies-fix (2021-01-14) 1 commit
131 - (merged to 'next' on 2021-01-14 at 5a11de010b)
132 - + ci/install-depends: attempt to fix "brew cask" stuff
475
134 - Fix for procedure to building CI test environment for mac.
476 +* jk/peel-iterated-oid (2021-01-21) 1 commit
477 + - refs: switch peel_ref() to peel_iterated_oid()
478
479 + The peel_ref() API has been replaed with peel_iterated_oid().
480
137 -* jc/sign-off (2021-01-07) 1 commit
138 - (merged to 'next' on 2021-01-12 at 0d9a2a9a41)
139 - + SubmittingPatches: tighten wording on "sign-off" procedure
481 + Will merge to 'next'.
482
141 - Doc update.
483
484 +* jk/run-command-use-shell-doc (2021-01-22) 1 commit
485 + - run-command: document use_shell option
486
144 -* jk/t5516-deflake (2021-01-09) 1 commit
145 - (merged to 'next' on 2021-01-12 at ed5317a798)
146 - + t5516: loosen "not our ref" error check
487 + The .use_shell flag in struct child_process that is passed to
488 + run_command() API has been clarified with a bit more documentation.
489
148 - Test fix.
490 + Will merge to 'next'.
491 +
492 +
493 +* js/range-diff-wo-dotdot (2021-01-21) 3 commits
494 + - range-diff(docs): explain how to specify commit ranges
495 + - range-diff: handle commit ranges other than A..B
496 + - range-diff: refactor check for commit range
497 +
498 + There are other ways than ".." for a single token to denote a
499 + "commit range", namely "<rev>^!" and "<rev>^-<n>", but "git
500 + range-diff" did not understand them.
501 +
502 + Getting closer.
503 + cf. <xmqqzh107m5d.fsf@gitster.c.googlers.com>
504 +
505 +
506 +* js/skip-dashed-built-ins-from-config-mak (2021-01-21) 1 commit
507 + - SKIP_DASHED_BUILT_INS: respect `config.mak`
508 +
509 + Build fix.
510
511 + Will merge to 'next'.
512 +
513 +
514 +* jx/t5411-unique-filenames (2021-01-22) 2 commits
515 + - t5411: refactor check of refs using test_cmp_refs
516 + - t5411: use different out file to prevent overwriting
517 +
518 + Avoid individual tests in t5411 from getting affected by each other
519 + by forcing them to use separate output files during the test.
520 +
521 +
522 +* ph/use-delete-refs (2021-01-21) 1 commit
523 + - use delete_refs when deleting tags or branches
524 +
525 + When removing many branches and tags, the code used to do so one
526 + ref at a time. There is another API it can use to delete multiple
527 + refs, and it makes quite a lot of performance difference when the
528 + refs are packed.
529 +
530 + Will merge to 'next'.
531 +
532 +
533 +* tb/ls-refs-optim (2021-01-22) 3 commits
534 + - ls-refs.c: traverse prefixes of disjoint "ref-prefix" sets
535 + - ls-refs.c: initialize 'prefixes' before using it
536 + - refs: expose 'for_each_fullref_in_prefixes'
537 +
538 + The ls-refs protocol operation has been optimized to narrow the
539 + sub-hiearchy of refs/ it walks to produce response.
540
151 -* mt/t4129-with-setgid-dir (2021-01-06) 1 commit
152 - (merged to 'next' on 2021-01-12 at 7a54dd92d8)
153 - + t4129: don't fail if setgid is set in the test directory
541 + Will merge to 'next'.
542
155 - Some tests expect that "ls -l" output has either '-' or 'x' for
156 - group executable bit, but setgid bit can be inherited from parent
157 - directory and make these fields 'S' or 's' instead, causing test
158 - failures.
543
544 +* ab/grep-pcre-invalid-utf8 (2021-01-24) 2 commits
545 + - grep/pcre2: better support invalid UTF-8 haystacks
546 + - grep/pcre2 tests: don't rely on invalid UTF-8 data test
547
161 -* pb/mergetool-tool-help-fix (2021-01-06) 1 commit
162 - (merged to 'next' on 2021-01-12 at ba0f76b413)
163 - + mergetool--lib: fix '--tool-help' to correctly show available tools
548
165 - Fix 2.29 regression where "git mergetool --tool-help" fails to list
166 - all the available tools.
549 +* ab/retire-pcre1 (2021-01-23) 2 commits
550 + - Remove support for v1 of the PCRE library
551 + - config.mak.uname: remove redundant NO_LIBPCRE1_JIT flag
552
553
169 -* tb/local-clone-race-doc (2021-01-11) 1 commit
170 - (merged to 'next' on 2021-01-14 at b86c0426de)
171 - + Documentation/git-clone.txt: document race with --local
554 +* jt/transfer-fsck-across-packs (2021-01-23) 4 commits
555 + - fetch-pack: print and use dangling .gitmodules
556 + - fetch-pack: with packfile URIs, use index-pack arg
557 + - http-fetch: allow custom index-pack args
558 + - http: allow custom index-pack args
559
173 - Doc update.
560 + The approach to "fsck" the incoming objects in "index-pack" is
561 + attractive for performance reasons (we have them already in core,
562 + inflated and ready to be inspected), but fundamentally cannot be
563 + applied fully when we receive more than one pack stream, as a tree
564 + object in one pack may refer to a blob object in another pack as
565 + ".gitmodules", when we want to inspect blobs that are used as
566 + ".gitmodules" file, for example. Teach "index-pack" to emit
567 + objects that must be inspected later and check them in the calling
568 + "fetch-pack" process.
569
570
176 -* ug/doc-lose-dircache (2021-01-09) 1 commit
177 - (merged to 'next' on 2021-01-12 at 28310380a5)
178 - + doc: remove "directory cache" from man pages
571 +* jv/pack-objects-narrower-ref-iteration (2021-01-22) 1 commit
572 + - builtin/pack-objects.c: avoid iterating all refs
573
180 - Doc update.
574 + The "pack-objects" command needs to iterate over all the tags when
575 + automatic tag following is enabled, but it actually iterated over
576 + all refs and then discarded everything outside "refs/tags/"
577 + hierarchy, which was quite wasteful.
578
579 + Will merge to 'next'.
580
183 -* vv/send-email-with-less-secure-apps-access (2021-01-07) 1 commit
184 - (merged to 'next' on 2021-01-12 at 53243ca7e7)
185 - + git-send-email.txt: mention less secure app access with Gmail
581
187 - Doc update.
582 +* jv/upload-pack-filter-spec-quotefix (2021-01-25) 1 commit
583 + - upload-pack.c: fix filter spec quoting bug
584
585 --------------------------------------------------
586 [Stalled]
@@ -339,7 +735,34 @@ Release tarballs are available at:
735 --------------------------------------------------
736 [Cooking]
737
342 -* en/ort-directory-rename (2021-01-07) 18 commits
738 +* ab/fsck-doc-fix (2021-01-20) 1 commit
739 + (merged to 'next' on 2021-01-25 at e3db0fe96f)
740 + + fsck doc: remove ancient out-of-date diagnostics
741 +
742 + Documentation for "git fsck" lost stale bits that has become
743 + incorrect.
744 +
745 + Will merge to 'master'.
746 +
747 +
748 +* ab/tests-various-fixup (2021-01-23) 10 commits
749 + - rm tests: actually test for SIGPIPE in SIGPIPE test
750 + - archive tests: use a cheaper "zipinfo -h" invocation to get header
751 + - upload-pack tests: avoid a non-zero "grep" exit status
752 + - git-svn tests: rewrite brittle tests to use "--[no-]merges".
753 + - git svn mergeinfo tests: refactor "test -z" to use test_must_be_empty
754 + - git svn mergeinfo tests: modernize redirection & quoting style
755 + - cache-tree tests: explicitly test HEAD and index differences
756 + - cache-tree tests: use a sub-shell with less indirection
757 + - cache-tree tests: remove unused $2 parameter
758 + - cache-tree tests: refactor for modern test style
759 +
760 + Various test updates.
761 +
762 + Will merge to 'next'.
763 +
764 +
765 +* en/ort-directory-rename (2021-01-20) 18 commits
766 - merge-ort: fix a directory rename detection bug
767 - merge-ort: process_renames() now needs more defensiveness
768 - merge-ort: implement apply_directory_rename_modifications()
@@ -358,42 +781,14 @@ Release tarballs are available at:
781 - merge-ort: initialize and free new directory rename data structures
782 - merge-ort: add new data structures for directory rename detection
783 - Merge branch 'en/merge-ort-3' into en/ort-directory-rename
361 - (this branch is used by en/merge-ort-perf; uses en/merge-ort-3.)
784 + (this branch is used by en/merge-ort-perf.)
785
786 ORT merge strategy learns to infer "renamed directory" while
787 merging.
788
789
367 -* jk/forbid-lf-in-git-url (2021-01-07) 2 commits
368 - (merged to 'next' on 2021-01-12 at 88a1d937ae)
369 - + fsck: reject .gitmodules git:// urls with newlines
370 - + git_connect_git(): forbid newlines in host and path
371 -
372 - Newline characters in the host and path part of git:// URL are
373 - now forbidden.
374 -
375 - Will merge to 'master'.
376 -
377 -
378 -* ps/fetch-atomic (2021-01-12) 5 commits
379 - (merged to 'next' on 2021-01-13 at a8896d0873)
380 - + fetch: implement support for atomic reference updates
381 - + fetch: allow passing a transaction to `s_update_ref()`
382 - + fetch: refactor `s_update_ref` to use common exit path
383 - + fetch: use strbuf to format FETCH_HEAD updates
384 - + fetch: extract writing to FETCH_HEAD
385 -
386 - "git fetch" learns to treat ref updates atomically in all-or-none
387 - fashion, just like "git push" does, with the new "--atomic" option.
388 -
389 - Will merge to 'master'.
390 -
391 -
392 -* ab/detox-gettext-tests (2021-01-11) 6 commits
790 +* ab/detox-gettext-tests (2021-01-21) 3 commits
791 - tests: remove uses of GIT_TEST_GETTEXT_POISON=false
394 - - tests: (almost) remove C_LOCALE_OUTPUT prerequisites
395 - - tests: (almost) remove use of "test_i18ngrep !"
396 - - tests: remove misc use of test_i18n{cmp,grep}
792 - tests: remove support for GIT_TEST_GETTEXT_POISON
793 - ci: remove GETTEXT_POISON jobs
794
@@ -401,140 +796,43 @@ Release tarballs are available at:
796 not be controversial.
797
798
404 -* bc/signed-objects-with-both-hashes (2021-01-11) 6 commits
405 - - SQUASH??? ulong vs size_t
799 +* bc/signed-objects-with-both-hashes (2021-01-18) 6 commits
800 - gpg-interface: remove other signature headers before verifying
801 - ref-filter: hoist signature parsing
802 - commit: allow parsing arbitrary buffers with headers
803 - gpg-interface: improve interface for parsing tags
410 - - commit: ignore additional signatures when parsing signed commits
411 -
412 - Signed commits and tags now allow verification of objects, whose
413 - two object names (one in SHA-1, the other in SHA-256) are both
414 - signed.
415 -
416 -
417 -* ds/update-index (2021-01-09) 14 commits
418 - - update-index: remove static globals from callbacks
419 - - update-index: reduce static globals, part 2
420 - - update-index: reduce static globals, part 1
421 - - update-index: remove ce_match_stat(), all macros
422 - - update-index: replace several compatibility macros
423 - - update-index: use add_index_entry()
424 - - update-index: use remove_file_from_index()
425 - - update-index: use index_name_pos() over cache_name_pos()
426 - - update-index: use istate->cache_changed
427 - - update-index: use istate->cache_nr over active_nr
428 - - update-index: use istate->cache over active_cache
429 - - update-index: drop the_index, the_repository
430 - - rm: remove compatilibity macros
431 - - mv: remove index compatibility macros
432 - (this branch uses ag/merge-strategies-in-c.)
433 -
434 - The implementation of a few commands lost reliance of "the_index"
435 - compatibility macros by explicitly passing the index_state through
436 - the callchain.
437 -
438 - Unfortunately the base topic still needs to solidify.
439 -
440 -
441 -* jx/bundle (2021-01-11) 3 commits
442 - (merged to 'next' on 2021-01-14 at 749a907dd2)
443 - + bundle: arguments can be read from stdin
444 - + bundle: lost objects when removing duplicate pendings
445 - + test: add helper functions for git-bundle
446 -
447 - "git bundle" learns "--stdin" option to read its refs from the
448 - standard input. Also, it now does not lose refs whey they point
449 - at the same object.
450 -
451 - Will merge to 'master'.
452 -
453 -
454 -* ab/mailmap (2021-01-12) 22 commits
455 - (merged to 'next' on 2021-01-13 at a3ce27912f)
456 - + shortlog: remove unused(?) "repo-abbrev" feature
457 - + mailmap doc + tests: document and test for case-insensitivity
458 - + mailmap tests: add tests for empty "<>" syntax
459 - + mailmap tests: add tests for whitespace syntax
460 - + mailmap tests: add a test for comment syntax
461 - + mailmap doc + tests: add better examples & test them
462 - + tests: refactor a few tests to use "test_commit --append"
463 - + test-lib functions: add an --append option to test_commit
464 - + test-lib functions: add --author support to test_commit
465 - + test-lib functions: document arguments to test_commit
466 - + test-lib functions: expand "test_commit" comment template
467 - + mailmap: test for silent exiting on missing file/blob
468 - + mailmap tests: get rid of overly complex blame fuzzing
469 - + mailmap tests: add a test for "not a blob" error
470 - + mailmap tests: remove redundant entry in test
471 - + mailmap tests: improve --stdin tests
472 - + mailmap tests: modernize syntax & test idioms
473 - + mailmap tests: use our preferred whitespace syntax
474 - + mailmap doc: start by mentioning the comment syntax
475 - + check-mailmap doc: note config options
476 - + mailmap doc: quote config variables `like.this`
477 - + mailmap doc: create a new "gitmailmap(5)" man page
478 - (this branch is used by ab/mailmap-fixup.)
479 -
480 - Clean-up docs, codepaths and tests around mailmap.
481 -
482 - Will merge to 'master'.
483 -
484 -
485 -* jk/log-cherry-pick-duplicate-patches (2021-01-12) 1 commit
486 - (merged to 'next' on 2021-01-13 at abcfbf8603)
487 - + patch-ids: handle duplicate hashmap entries
488 -
489 - When more than one commit with the same patch ID appears on one
490 - side, "git log --cherry-pick A...B" did not exclude them all when a
491 - commit with the same patch ID appears on the other side. Now it
492 - does.
493 -
494 - Will merge to 'master'.
495 -
496 -
497 -* tb/pack-revindex-api (2021-01-14) 21 commits
498 - (merged to 'next' on 2021-01-15 at 1f2997979c)
499 - + for_each_object_in_pack(): clarify pack vs index ordering
500 - + pack-revindex.c: avoid direct revindex access in 'offset_to_pack_pos()'
501 - + pack-revindex: hide the definition of 'revindex_entry'
502 - + pack-revindex: remove unused 'find_revindex_position()'
503 - + pack-revindex: remove unused 'find_pack_revindex()'
504 - + builtin/gc.c: guess the size of the revindex
505 - + for_each_object_in_pack(): convert to new revindex API
506 - + unpack_entry(): convert to new revindex API
507 - + packed_object_info(): convert to new revindex API
508 - + retry_bad_packed_offset(): convert to new revindex API
509 - + get_delta_base_oid(): convert to new revindex API
510 - + rebuild_existing_bitmaps(): convert to new revindex API
511 - + try_partial_reuse(): convert to new revindex API
512 - + get_size_by_pos(): convert to new revindex API
513 - + show_objects_for_type(): convert to new revindex API
514 - + bitmap_position_packfile(): convert to new revindex API
515 - + check_object(): convert to new revindex API
516 - + write_reused_pack_verbatim(): convert to new revindex API
517 - + write_reused_pack_one(): convert to new revindex API
518 - + write_reuse_object(): convert to new revindex API
519 - + pack-revindex: introduce a new API
520 - (this branch is used by tb/pack-revindex-on-disk.)
521 -
522 - Abstract accesses to in-core revindex that allows enumerating
523 - objects stored in a packfile in the order they appear in the pack,
524 - in preparation for introducing an on-disk precomputed revindex.
804 + - commit: ignore additional signatures when parsing signed commits
805 + - ref-filter: switch some uses of unsigned long to size_t
806
526 - Will merge to 'master'.
807 + Signed commits and tags now allow verification of objects, whose
808 + two object names (one in SHA-1, the other in SHA-256) are both
809 + signed.
810
811 + Looking good.
812
529 -* cc/write-promisor-file (2021-01-14) 3 commits
530 - (merged to 'next' on 2021-01-14 at 9d773d4734)
531 - + pack-write: die on error in write_promisor_file()
532 - + fetch-pack: refactor writing promisor file
533 - + fetch-pack: rename helper to create_promisor_file()
813
535 - A bit of code refactoring.
814 +* ds/update-index (2021-01-09) 14 commits
815 + - update-index: remove static globals from callbacks
816 + - update-index: reduce static globals, part 2
817 + - update-index: reduce static globals, part 1
818 + - update-index: remove ce_match_stat(), all macros
819 + - update-index: replace several compatibility macros
820 + - update-index: use add_index_entry()
821 + - update-index: use remove_file_from_index()
822 + - update-index: use index_name_pos() over cache_name_pos()
823 + - update-index: use istate->cache_changed
824 + - update-index: use istate->cache_nr over active_nr
825 + - update-index: use istate->cache over active_cache
826 + - update-index: drop the_index, the_repository
827 + - rm: remove compatilibity macros
828 + - mv: remove index compatibility macros
829 + (this branch uses ag/merge-strategies-in-c.)
830
537 - Will merge to 'master'.
831 + The implementation of a few commands lost reliance of "the_index"
832 + compatibility macros by explicitly passing the index_state through
833 + the callchain.
834 +
835 + Unfortunately the base topic still needs to solidify.
836
837
838 * js/rebase-i-commit-cleanup-fix (2021-01-12) 1 commit
@@ -548,19 +846,6 @@ Release tarballs are available at:
846 cf. <20210112204939.1095-1-martin.agren@gmail.com>
847
848
551 -* ab/mailmap-fixup (2021-01-14) 4 commits
552 - (merged to 'next' on 2021-01-15 at ef14e2263d)
553 - + t4203: make blame output massaging more robust
554 - + mailmap doc: use correct environment variable 'GIT_WORK_TREE'
555 - + t4203: stop losing return codes of git commands
556 - + test-lib-functions.sh: fix usage for test_commit()
557 - (this branch uses ab/mailmap.)
558 -
559 - Follow-up fixes and improvements to ab/mailmap topic.
560 -
561 - Will merge to 'master'.
562 -
563 -
849 * tb/pack-revindex-on-disk (2021-01-14) 8 commits
850 - pack-revindex: ensure that on-disk reverse indexes are given precedence
851 - t: support GIT_TEST_WRITE_REV_INDEX
@@ -570,106 +855,59 @@ Release tarballs are available at:
855 - builtin/index-pack.c: write reverse indexes
856 - pack-write.c: prepare to write 'pack-*.rev' files
857 - packfile: prepare for the existence of '*.rev' files
573 - (this branch uses tb/pack-revindex-api.)
858
859 Introduce an on-disk file to record revindex for packdata, which
860 traditionally was always created on the fly and only in-core.
861
862
579 -* en/merge-ort-perf (2021-01-15) 4 commits
863 +* en/merge-ort-perf (2021-01-23) 6 commits
864 - merge-ort: begin performance work; instrument with trace2_region_* calls
865 + - merge-ort: ignore the directory rename split conflict for now
866 + - merge-ort: fix massive leak
867 - Merge branch 'en/ort-directory-rename' into en/merge-ort-perf
868 - Merge branch 'en/ort-conflict-handling' into en/merge-ort-perf
869 - Merge branch 'en/diffcore-rename' into en/merge-ort-perf
584 - (this branch uses en/diffcore-rename, en/merge-ort-3, en/ort-conflict-handling and en/ort-directory-rename.)
585 -
586 -
587 -* ab/branch-sort (2021-01-07) 7 commits
588 - (merged to 'next' on 2021-01-12 at 1231feea7c)
589 - + branch: show "HEAD detached" first under reverse sort
590 - + branch: sort detached HEAD based on a flag
591 - + ref-filter: move ref_sorting flags to a bitfield
592 - + ref-filter: move "cmp_fn" assignment into "else if" arm
593 - + ref-filter: add braces to if/else if/else chain
594 - + branch tests: add to --sort tests
595 - + branch: change "--local" to "--list" in comment
596 -
597 - The implementation of "git branch --sort" wrt the detached HEAD
598 - display has always been hacky, which has been cleaned up.
599 -
600 - Will merge to 'master'.
601 -
870 + (this branch uses en/ort-conflict-handling and en/ort-directory-rename.)
871
603 -* ab/coc-update-to-2.0 (2021-01-13) 3 commits
604 - (merged to 'next' on 2021-01-15 at 4859c12625)
605 - + CoC: update to version 2.0 + local changes
606 - + CoC: explicitly take any whitespace breakage
607 - + CoC: Update word-wrapping to match upstream
608 -
609 - Update the Code-of-conduct to version 2.0 from the upstream (we've
610 - been using version 1.4).
611 -
612 - Will merge to 'master'.
613 -
614 -
615 -* dl/reflog-with-single-entry (2021-01-11) 2 commits
616 - (merged to 'next' on 2021-01-13 at 09b33209c4)
617 - + refs: allow @{n} to work with n-sized reflog
618 - + refs: factor out set_read_ref_cutoffs()
619 -
620 - After expiring a reflog and making a single commit, the reflog for
621 - the branch would record a single entry that knows both @{0} and
622 - @{1}, but we failed to answer "what commit were we on?", i.e. @{1}
623 -
624 - Will merge to 'master'.
872 + The "ort" merge strategy.
873
874
875 * ds/cache-tree-basics (2021-01-15) 10 commits
628 - - cache-tree: speed up consecutive path comparisons
629 - - cache-tree: use ce_namelen() instead of strlen()
630 - - index-format: discuss recursion of cache-tree better
631 - - index-format: update preamble to cache tree extension
632 - - index-format: use 'cache tree' over 'cached tree'
633 - - cache-tree: trace regions for prime_cache_tree
634 - - cache-tree: trace regions for I/O
635 - - cache-tree: use trace2 in cache_tree_update()
636 - - unpack-trees: add trace2 regions
637 - - tree-walk: report recursion counts
876 + (merged to 'next' on 2021-01-25 at 29ee74df7b)
877 + + cache-tree: speed up consecutive path comparisons
878 + + cache-tree: use ce_namelen() instead of strlen()
879 + + index-format: discuss recursion of cache-tree better
880 + + index-format: update preamble to cache tree extension
881 + + index-format: use 'cache tree' over 'cached tree'
882 + + cache-tree: trace regions for prime_cache_tree
883 + + cache-tree: trace regions for I/O
884 + + cache-tree: use trace2 in cache_tree_update()
885 + + unpack-trees: add trace2 regions
886 + + tree-walk: report recursion counts
887 + (this branch is used by ds/more-index-cleanups.)
888
889 Document, clean-up and optimize the code around the cache-tree
890 extension in the index.
891
642 - Will merge to 'next'.
892 + Will merge to 'master'.
893
894
895 * en/ort-conflict-handling (2021-01-04) 10 commits
646 - - merge-ort: add handling for different types of files at same path
647 - - merge-ort: copy find_first_merges() implementation from merge-recursive.c
648 - - merge-ort: implement format_commit()
649 - - merge-ort: copy and adapt merge_submodule() from merge-recursive.c
650 - - merge-ort: copy and adapt merge_3way() from merge-recursive.c
651 - - merge-ort: flesh out implementation of handle_content_merge()
652 - - merge-ort: handle book-keeping around two- and three-way content merge
653 - - merge-ort: implement unique_path() helper
654 - - merge-ort: handle directory/file conflicts that remain
655 - - merge-ort: handle D/F conflict where directory disappears due to merge
896 + (merged to 'next' on 2021-01-25 at 369c1516c4)
897 + + merge-ort: add handling for different types of files at same path
898 + + merge-ort: copy find_first_merges() implementation from merge-recursive.c
899 + + merge-ort: implement format_commit()
900 + + merge-ort: copy and adapt merge_submodule() from merge-recursive.c
901 + + merge-ort: copy and adapt merge_3way() from merge-recursive.c
902 + + merge-ort: flesh out implementation of handle_content_merge()
903 + + merge-ort: handle book-keeping around two- and three-way content merge
904 + + merge-ort: implement unique_path() helper
905 + + merge-ort: handle directory/file conflicts that remain
906 + + merge-ort: handle D/F conflict where directory disappears due to merge
907 (this branch is used by en/merge-ort-perf.)
908
909 ORT merge strategy learns more support for merge conflicts.
910
660 - Will merge to 'next'.
661 -
662 -
663 -* ma/more-opaque-lock-file (2021-01-06) 5 commits
664 - (merged to 'next' on 2021-01-12 at f246e38b50)
665 - + read-cache: try not to peek into `struct {lock_,temp}file`
666 - + refs/files-backend: don't peek into `struct lock_file`
667 - + midx: don't peek into `struct lock_file`
668 - + commit-graph: don't peek into `struct lock_file`
669 - + builtin/gc: don't peek into `struct lock_file`
670 -
671 - Code clean-up.
672 -
911 Will merge to 'master'.
912
913
@@ -682,7 +920,7 @@ Release tarballs are available at:
920 cf. https://github.com/git/git/runs/1660588243?check_suite_focus=true#step:7:4186
921
922
685 -* ak/corrected-commit-date (2021-01-16) 11 commits
923 +* ak/corrected-commit-date (2021-01-18) 11 commits
924 - doc: add corrected commit date info
925 - commit-reach: use corrected commit dates in paint_down_to_common()
926 - commit-graph: use generation v2 only if entire chain does
@@ -698,6 +936,8 @@ Release tarballs are available at:
936 The commit-graph learned to use corrected commit dates instead of
937 the generation number to help topological revision traversal.
938
939 + Will merge to 'next'.
940 +
941
942 * fc/mergetool-automerge (2021-01-09) 8 commits
943 . fixup! mergetool: break setup_tool out into separate initialization function
@@ -717,7 +957,8 @@ Release tarballs are available at:
957 cf. https://github.com/git/git/runs/1675932107?check_suite_focus=true#step:7:10373
958
959
720 -* mr/bisect-in-c-4 (2020-12-21) 7 commits
960 +* mr/bisect-in-c-4 (2021-01-23) 8 commits
961 + - SQUASH???
962 - bisect--helper: retire `--check-and-set-terms` subcommand
963 - bisect--helper: reimplement `bisect_skip` shell function in C
964 - bisect--helper: retire `--bisect-auto-next` subcommand
@@ -732,9 +973,9 @@ Release tarballs are available at:
973
974
975 * jt/clone-unborn-head (2020-12-22) 3 commits
735 - - clone: respect remote unborn HEAD
736 - - connect, transport: add no-op arg for future patch
737 - - ls-refs: report unborn targets of symrefs
976 + . clone: respect remote unborn HEAD
977 + . connect, transport: add no-op arg for future patch
978 + . ls-refs: report unborn targets of symrefs
979
980 "git clone" tries to locally check out the branch pointed at by
981 HEAD of the remote repository after it is done, but the protocol
@@ -753,17 +994,6 @@ Release tarballs are available at:
994 Seems to break tests on Windows
995
996
756 -* jc/deprecate-pack-redundant (2020-12-15) 1 commit
757 - (merged to 'next' on 2021-01-12 at 14034c7892)
758 - + pack-redundant: gauge the usage before proposing its removal
759 -
760 - Warn loudly when the "pack-redundant" command, which has been left
761 - stale with almost unusable performance issues, gets used, as we no
762 - longer want to recommend its use (instead just "repack -d" instead).
763 -
764 - Will merge to 'master'.
765 -
766 -
997 * mt/parallel-checkout-part-1 (2020-12-16) 9 commits
998 - entry: add checkout_entry_ca() taking preloaded conv_attrs
999 - entry: move conv_attrs lookup up to checkout_entry()
@@ -780,81 +1010,44 @@ Release tarballs are available at:
1010 Looking good.
1011
1012
783 -* en/merge-ort-3 (2020-12-15) 11 commits
784 - (merged to 'next' on 2021-01-08 at fe481b9627)
785 - + merge-ort: add implementation of type-changed rename handling
786 - + merge-ort: add implementation of normal rename handling
787 - + merge-ort: add implementation of rename collisions
788 - + merge-ort: add implementation of rename/delete conflicts
789 - + merge-ort: add implementation of both sides renaming differently
790 - + merge-ort: add implementation of both sides renaming identically
791 - + merge-ort: add basic outline for process_renames()
792 - + merge-ort: implement compare_pairs() and collect_renames()
793 - + merge-ort: implement detect_regular_renames()
794 - + merge-ort: add initial outline for basic rename detection
795 - + merge-ort: add basic data structures for handling renames
796 - (this branch is used by en/merge-ort-perf and en/ort-directory-rename.)
797 -
798 - Rename detection is added to the "ORT" merge strategy.
799 -
800 - Will merge to 'master'.
801 -
802 -
803 -* ps/config-env-pairs (2021-01-15) 8 commits
804 - (merged to 'next' on 2021-01-15 at 4ed0341270)
805 - + config: allow specifying config entries via envvar pairs
806 - + environment: make `getenv_safe()` a public function
807 - + config: store "git -c" variables using more robust format
808 - + config: parse more robust format in GIT_CONFIG_PARAMETERS
809 - + config: extract function to parse config pairs
810 - + quote: make sq_dequote_step() a public function
811 - + config: add new way to pass config via `--config-env`
812 - + git: add `--super-prefix` to usage string
813 -
814 - Introduce two new ways to feed configuration variable-value pairs
815 - via environment variables, and tweak the way GIT_CONFIG_PARAMETERS
816 - encodes variable/value pairs to make it more robust.
817 -
818 - Will merge to 'master'.
819 -
820 -
1013 * so/log-diff-merge (2020-12-21) 32 commits
822 - - t4013: add tests for --diff-merges=first-parent
823 - - doc/git-show: include --diff-merges description
824 - - doc/rev-list-options: document --first-parent changes merges format
825 - - doc/diff-generate-patch: mention new --diff-merges option
826 - - doc/git-log: describe new --diff-merges options
827 - - diff-merges: add '--diff-merges=1' as synonym for 'first-parent'
828 - - diff-merges: add old mnemonic counterparts to --diff-merges
829 - - diff-merges: let new options enable diff without -p
830 - - diff-merges: do not imply -p for new options
831 - - diff-merges: implement new values for --diff-merges
832 - - diff-merges: make -m/-c/--cc explicitly mutually exclusive
833 - - diff-merges: refactor opt settings into separate functions
834 - - diff-merges: get rid of now empty diff_merges_init_revs()
835 - - diff-merges: group diff-merge flags next to each other inside 'rev_info'
836 - - diff-merges: split 'ignore_merges' field
837 - - diff-merges: fix -m to properly override -c/--cc
838 - - t4013: add tests for -m failing to override -c/--cc
839 - - t4013: support test_expect_failure through ':failure' magic
840 - - diff-merges: revise revs->diff flag handling
841 - - diff-merges: handle imply -p on -c/--cc logic for log.c
842 - - diff-merges: introduce revs->first_parent_merges flag
843 - - diff-merges: new function diff_merges_set_dense_combined_if_unset()
844 - - diff-merges: new function diff_merges_suppress()
845 - - diff-merges: re-arrange functions to match the order they are called in
846 - - diff-merges: rename diff_merges_default_to_enable() to match semantics
847 - - diff-merges: move checks for first_parent_only out of the module
848 - - diff-merges: rename all functions to have common prefix
849 - - revision: move diff merges functions to its own diff-merges.c
850 - - revision: provide implementation for diff merges tweaks
851 - - revision: factor out initialization of diff-merge related settings
852 - - revision: factor out setup of diff-merge related settings
853 - - revision: factor out parsing of diff-merge related options
1014 + (merged to 'next' on 2021-01-25 at 63977ef287)
1015 + + t4013: add tests for --diff-merges=first-parent
1016 + + doc/git-show: include --diff-merges description
1017 + + doc/rev-list-options: document --first-parent changes merges format
1018 + + doc/diff-generate-patch: mention new --diff-merges option
1019 + + doc/git-log: describe new --diff-merges options
1020 + + diff-merges: add '--diff-merges=1' as synonym for 'first-parent'
1021 + + diff-merges: add old mnemonic counterparts to --diff-merges
1022 + + diff-merges: let new options enable diff without -p
1023 + + diff-merges: do not imply -p for new options
1024 + + diff-merges: implement new values for --diff-merges
1025 + + diff-merges: make -m/-c/--cc explicitly mutually exclusive
1026 + + diff-merges: refactor opt settings into separate functions
1027 + + diff-merges: get rid of now empty diff_merges_init_revs()
1028 + + diff-merges: group diff-merge flags next to each other inside 'rev_info'
1029 + + diff-merges: split 'ignore_merges' field
1030 + + diff-merges: fix -m to properly override -c/--cc
1031 + + t4013: add tests for -m failing to override -c/--cc
1032 + + t4013: support test_expect_failure through ':failure' magic
1033 + + diff-merges: revise revs->diff flag handling
1034 + + diff-merges: handle imply -p on -c/--cc logic for log.c
1035 + + diff-merges: introduce revs->first_parent_merges flag
1036 + + diff-merges: new function diff_merges_set_dense_combined_if_unset()
1037 + + diff-merges: new function diff_merges_suppress()
1038 + + diff-merges: re-arrange functions to match the order they are called in
1039 + + diff-merges: rename diff_merges_default_to_enable() to match semantics
1040 + + diff-merges: move checks for first_parent_only out of the module
1041 + + diff-merges: rename all functions to have common prefix
1042 + + revision: move diff merges functions to its own diff-merges.c
1043 + + revision: provide implementation for diff merges tweaks
1044 + + revision: factor out initialization of diff-merge related settings
1045 + + revision: factor out setup of diff-merge related settings
1046 + + revision: factor out parsing of diff-merge related options
1047
1048 "git log" learned a new "--diff-merges=<how>" option.
1049
857 - Will merge to 'next'.
1050 + Will merge to 'master'.
1051
1052
1053 * es/config-hooks (2020-12-21) 34 commits
@@ -918,108 +1111,6 @@ Release tarballs are available at:
1111
1112 The "reftable" backend for the refs API.
1113
921 -
922 -* ab/mktag (2021-01-06) 23 commits
923 - (merged to 'next' on 2021-01-08 at 6f9e11ad97)
924 - + mktag: add a --[no-]strict option
925 - + mktag: mark strings for translation
926 - + mktag: convert to parse-options
927 - + mktag: allow omitting the header/body \n separator
928 - + mktag: allow turning off fsck.extraHeaderEntry
929 - + fsck: make fsck_config() re-usable
930 - + mktag: use fsck instead of custom verify_tag()
931 - + mktag: use puts(str) instead of printf("%s\n", str)
932 - + mktag: remove redundant braces in one-line body "if"
933 - + mktag: use default strbuf_read() hint
934 - + mktag tests: test verify_object() with replaced objects
935 - + mktag tests: improve verify_object() test coverage
936 - + mktag tests: test "hash-object" compatibility
937 - + mktag tests: stress test whitespace handling
938 - + mktag tests: run "fsck" after creating "mytag"
939 - + mktag tests: don't create "mytag" twice
940 - + mktag tests: don't redirect stderr to a file needlessly
941 - + mktag tests: remove needless SHA-1 hardcoding
942 - + mktag tests: use "test_commit" helper
943 - + mktag tests: don't needlessly use a subshell
944 - + mktag doc: update to explain why to use this
945 - + mktag doc: grammar fix, when exists -> when it exists
946 - + mktag doc: say <hash> not <sha1>
947 -
948 - "git mktag" validates its input using its own rules before writing
949 - a tag object---it has been updated to share the logic with "git
950 - fsck".
951 -
952 - Will merge to 'master'.
953 -
954 -
955 -* en/diffcore-rename (2021-01-04) 9 commits
956 - (merged to 'next' on 2021-01-12 at fa769ebc35)
957 - + diffcore-rename: remove unnecessary duplicate entry checks
958 - + diffcore-rename: accelerate rename_dst setup
959 - + diffcore-rename: simplify and accelerate register_rename_src()
960 - + t4058: explore duplicate tree entry handling in a bit more detail
961 - + t4058: add more tests and documentation for duplicate tree entry handling
962 - + diffcore-rename: reduce jumpiness in progress counters
963 - + diffcore-rename: simplify limit check
964 - + diffcore-rename: avoid usage of global in too_many_rename_candidates()
965 - + diffcore-rename: rename num_create to num_destinations
966 - (this branch is used by en/merge-ort-perf.)
967 -
968 - File-level rename detection updates.
969 -
970 - Will merge to 'master'.
971 -
972 -
973 -* js/default-branch-name-tests-final-stretch (2020-11-19) 29 commits
974 - (merged to 'next' on 2021-01-13 at 0e93f0d529)
975 - + tests: drop prereq `PREPARE_FOR_MAIN_BRANCH` where no longer needed
976 - + t99*: adjust the references to the default branch name "main"
977 - + tests(git-p4): transition to the default branch name `main`
978 - + t9[5-7]*: adjust the references to the default branch name "main"
979 - + t9[0-4]*: adjust the references to the default branch name "main"
980 - + t8*: adjust the references to the default branch name "main"
981 - + t7[5-9]*: adjust the references to the default branch name "main"
982 - + t7[0-4]*: adjust the references to the default branch name "main"
983 - + t6[4-9]*: adjust the references to the default branch name "main"
984 - + t64*: preemptively adjust alignment to prepare for `master` -> `main`
985 - + t6[0-3]*: adjust the references to the default branch name "main"
986 - + t5[6-9]*: adjust the references to the default branch name "main"
987 - + t55[4-9]*: adjust the references to the default branch name "main"
988 - + t55[23]*: adjust the references to the default branch name "main"
989 - + t551*: adjust the references to the default branch name "main"
990 - + t550*: adjust the references to the default branch name "main"
991 - + t5503: prepare aligned comment for replacing `master` with `main`
992 - + t5[0-4]*: adjust the references to the default branch name "main"
993 - + t5323: prepare centered comment for `master` -> `main`
994 - + t4*: adjust the references to the default branch name "main"
995 - + t3[5-9]*: adjust the references to the default branch name "main"
996 - + t34*: adjust the references to the default branch name "main"
997 - + t3416: preemptively adjust alignment in a comment
998 - + t3[0-3]*: adjust the references to the default branch name "main"
999 - + t2*: adjust the references to the default branch name "main"
1000 - + t[01]*: adjust the references to the default branch name "main"
1001 - + t0060: preemptively adjust alignment
1002 - + tests: mark tests relying on the current default for `init.defaultBranch`
1003 - + Merge 'jk/diff-release-filespec-fix' into js/default-branch-name-tests-final-stretch
1004 -
1005 - Prepare tests not to be affected by the name of the default branch
1006 - "git init" creates.
1007 -
1008 - Will merge to 'master'.
1009 -
1010 -
1011 -* sj/untracked-files-in-submodule-directory-is-not-dirty (2020-12-08) 1 commit
1012 - (merged to 'next' on 2021-01-12 at 2aca21c42e)
1013 - + diff: do not show submodule with untracked files as "-dirty"
1014 -
1015 - "git diff" showed a submodule working tree with untracked cruft as
1016 - "Submodule commit <objectname>-dirty", but a natural expectation is
1017 - that the "-dirty" indicator would align with "git describe --dirty",
1018 - which does not consider having untracked files in the working tree
1019 - as source of dirtiness. The inconsistency has been fixed.
1020 -
1021 - Will merge to 'master'.
1022 -
1114 --------------------------------------------------
1115 [Discarded]
1116