What's cooking (2022/11 #3)

Taylor Blau committed Nov 14, 2022 at 23:44 UTC 74dc966180f9f1ad16f31f3149f0f081df21fe5d
1 file changed +434 -351
whats-cooking.txt
+434 -351
@@ -1,10 +1,10 @@
1 To: git@vger.kernel.org
2 -Subject: What's cooking in git.git (Nov 2022, #02; Tue, 8)
3 -X-master-at: 319605f8f00e402f3ea758a02c63534ff800a711
4 -X-next-at: 0f3c55d4c2b7864bffb2d92278eff08d0b2e083f
2 +Subject: What's cooking in git.git (Nov 2022, #03; Mon, 14)
3 +X-master-at: eea7033409a0ed713c78437fc76486983d211e25
4 +X-next-at: 34eb0ea05a4e3296eee641767d1ed2edda20609d
5 Bcc: lwn@lwn.net, gitster@pobox.com
6
7 -What's cooking in git.git (Nov 2022, #02; Tue, 8)
7 +What's cooking in git.git (Nov 2022, #03; Mon, 14)
8 --------------------------------------------------
9
10 Here are the topics that have been cooking in my tree. Commits
@@ -14,11 +14,10 @@ release). Commits prefixed with '-' are only in 'seen', and aren't
14 considered "accepted" at all. A topic without enough support may be
15 discarded after a long period of no activity.
16
17 -A handful of topics are still sitting in 'seen' waiting review. They
18 -are marked accordingly below. Otherwise, a number of topics have
19 -graduated, and the slate for 'next' is relatively small. Hopefully
20 -some additional review effort will mean that we can graduate some of
21 -those topics to 'next' in the next round of integration.
17 +There are still a large-ish number of topics in 'seen' that are
18 +waiting for review. Otherwise, the remaining topics are graduating at
19 +a reasonable pace, and the queue for 'next' has returned to a normal
20 +level.
21
22 Copies of the source code to Git live in many repositories, and the
23 following is a list of the ones I push into or their mirrors. Some
@@ -55,336 +54,227 @@ for convenience (replace "htmldocs" with "manpages" for the manual
54 --------------------------------------------------
55 [Graduated to 'master']
56
58 -* es/mark-gc-cruft-as-experimental (2022-10-26) 2 commits
59 - (merged to 'next' on 2022-11-03 at 4079e1b06b)
60 - + config: let feature.experimental imply gc.cruftPacks=true
61 - + gc: add tests for --cruft and friends
62 -
63 - Enable gc.cruftpacks by default for those who opt into
64 - feature.experimental setting.
65 - source: <cover.1666819953.git.me@ttaylorr.com>
66 -
67 -
68 -* jc/set-gid-bit-less-aggressively (2022-10-28) 1 commit
69 - (merged to 'next' on 2022-11-03 at 32bfd99ffd)
70 - + adjust_shared_perm(): leave g+s alone when the group does not matter
71 -
72 - The adjust_shared_perm() helper function learned to refrain from
73 - setting the "g+s" bit on directories when it is not necessary.
74 - source: <xmqqr0yrhco6.fsf@gitster.g>
75 -
76 -
77 -* jk/ref-filter-parsing-bugs (2022-11-02) 2 commits
78 - (merged to 'next' on 2022-11-03 at 92c1a50548)
79 - + ref-filter: fix parsing of signatures with CRLF and no body
80 - + ref-filter: fix parsing of signatures without blank lines
81 -
82 - Various tests exercising the transfer.credentialsInUrl configuration
83 - are taught to avoid making requests which require resolving localhost
84 - to reduce CI-flakiness.
85 - source: <Y2IeqOT5Ao1Qa0Zl@coredump.intra.peff.net>
86 -
87 -
88 -* ma/drop-redundant-diagnostic (2022-10-31) 1 commit
89 - (merged to 'next' on 2022-11-03 at 196c5a337b)
90 - + test-lib-functions: drop redundant diagnostic print
57 +* ab/rev-info-init (2022-11-08) 1 commit
58 + (merged to 'next' on 2022-11-08 at 909ad9ed3a)
59 + + revisions API: extend the nascent REV_INFO_INIT macro
60
92 - A redundant diagnostic message is dropped from test_path_is_missing().
93 - source: <20221031180048.5766-1-martin.agren@gmail.com>
61 + Progress on being able to initialize a rev_info struct with a macro.
62 + source: <patch-1.1-c3afcd69ddb-20221108T140134Z-avarab@gmail.com>
63
64
96 -* po/glossary-around-traversal (2022-10-30) 4 commits
97 - (merged to 'next' on 2022-11-03 at 58b659f92b)
98 - + glossary: add reachability bitmap description
99 - + glossary: add "commit graph" description
100 - + doc: use 'object database' not ODB or abbreviation
101 - + doc: use "commit-graph" hyphenation consistently
65 +* al/trace2-clearing-skip-worktree (2022-11-04) 2 commits
66 + (merged to 'next' on 2022-11-08 at 567aeb8d83)
67 + + index: raise a bug if the index is materialised more than once
68 + + index: add trace2 region for clear skip worktree
69
103 - The glossary entries for "commit-graph file" and "reachability
104 - bitmap" have been added.
105 - source: <20221029164112.2097-1-philipoakley@iee.email>
70 + Add trace2 counters to the region to clear skip worktree bits in a
71 + sparse checkout.
72 + source: <pull.1368.v4.git.git.1667516701.gitgitgadget@gmail.com>
73
74
108 -* rs/archive-filter-error-once (2022-10-30) 1 commit
109 - (merged to 'next' on 2022-11-03 at c2d1004d96)
110 - + archive-tar: report filter start error only once
75 +* do/modernize-t7001 (2022-11-04) 1 commit
76 + (merged to 'next' on 2022-11-08 at dfc9c80e73)
77 + + t7001-mv.sh: modernizing test script using functions
78
112 - "git archive" mistakenly complained twice about a missing executable,
113 - which has been corrected.
114 - source: <c51b72e5-1c32-65e4-6faa-04693b623e2e@web.de>
79 + Modernize test script to avoid "test -f" and friends.
80 + source: <pull.1372.v3.git.git.1667574352244.gitgitgadget@gmail.com>
81
82
117 -* rs/no-more-run-command-v (2022-10-30) 12 commits
118 - (merged to 'next' on 2022-11-03 at 27eb80811c)
119 - + replace and remove run_command_v_opt()
120 - + replace and remove run_command_v_opt_cd_env_tr2()
121 - + replace and remove run_command_v_opt_tr2()
122 - + replace and remove run_command_v_opt_cd_env()
123 - + use child_process members "args" and "env" directly
124 - + use child_process member "args" instead of string array variable
125 - + sequencer: simplify building argument list in do_exec()
126 - + bisect--helper: factor out do_bisect_run()
127 - + bisect: simplify building "checkout" argument list
128 - + am: simplify building "show" argument list
129 - + run-command: fix return value comment
130 - + merge: remove always-the-same "verbose" arguments
83 +* js/ci-set-output (2022-11-08) 1 commit
84 + (merged to 'next' on 2022-11-08 at 553062428c)
85 + + ci: use a newer `github-script` version
86
132 - Simplify the run-command API.
133 - source: <ea061164-b36b-485c-963f-8c13e813a47e@web.de>
87 + Update the actions/github-script dependency in CI to avoid a
88 + deprecation warning.
89 + source: <pull.1387.git.1667902408921.gitgitgadget@gmail.com>
90
91
136 -* tb/howto-using-redo-script (2022-10-26) 1 commit
137 - (merged to 'next' on 2022-11-03 at 521600fd56)
138 - + Documentation/howto/maintain-git.txt: fix Meta/redo-jch.sh invocation
139 - (this branch is used by tb/howto-maintain-git-fixes.)
92 +* mh/password-can-be-pat (2022-11-08) 1 commit
93 + (merged to 'next' on 2022-11-08 at 3135ade2a6)
94 + + Documentation/gitcredentials.txt: mention password alternatives
95
141 - Doc update.
142 - source: <4ba057094ae6b1bd5c18583f23f7f99232034c72.1666815325.git.me@ttaylorr.com>
96 + Documentation update to git-credential(1).
97 + source: <pull.1396.v3.git.1667912487608.gitgitgadget@gmail.com>
98
99 --------------------------------------------------
100 [New Topics]
101
147 -* ab/rev-info-init (2022-11-08) 1 commit
148 - (merged to 'next' on 2022-11-08 at 909ad9ed3a)
149 - + revisions API: extend the nascent REV_INFO_INIT macro
102 +* ab/remove--super-prefix (2022-11-14) 12 commits
103 + - fetch: rename "--submodule-prefix" to "--super-prefix"
104 + - read-tree: add "--super-prefix" option, eliminate global
105 + - submodule tests: test "git branch -t" output and stderr
106 + - submodule--helper: convert "{update,clone}" to their own "--super-prefix"
107 + - submodule--helper: convert "status" to its own "--super-prefix"
108 + - submodule--helper: convert "sync" to its own "--super-prefix"
109 + - submodule--helper: convert "foreach" to its own "--super-prefix"
110 + - submodule--helper: "deinit" has never used "--super-prefix"
111 + - submodule--helper: don't use global --super-prefix in "absorbgitdirs"
112 + - read-tree + fetch tests: test failing "--super-prefix" interaction
113 + - Merge branch 'ab/submodule-no-abspath' into ab/remove--super-prefix
114 + - Merge branch 'ab/submodule-helper-prep-only' into ab/remove--super-prefix
115 + (this branch uses ab/submodule-helper-prep-only and ab/submodule-no-abspath.)
116
151 - Progress on being able to initialize a rev_info struct with a macro.
117 + Remove the top-level `--super-prefix` option.
118
153 - Will merge to 'master'.
154 - source: <patch-1.1-c3afcd69ddb-20221108T140134Z-avarab@gmail.com>
119 + Expecting a reroll?
120 + source: <cover-v2-00.10-00000000000-20221114T100803Z-avarab@gmail.com>
121
122
157 -* ab/various-leak-fixes (2022-11-08) 16 commits
158 - - built-ins: use free() not UNLEAK() if trivial, rm dead code
159 - - revert: fix parse_options_concat() leak
160 - - cherry-pick: free "struct replay_opts" members
161 - - rebase: don't leak on "--abort"
162 - - connected.c: free the "struct packed_git"
163 - - sequencer.c: fix "opts->strategy" leak in read_strategy_opts()
164 - - ls-files: fix a --with-tree memory leak
165 - - revision API: call graph_clear() in release_revisions()
166 - - unpack-file: fix ancient leak in create_temp_file()
167 - - built-ins & libs & helpers: add/move destructors, fix leaks
168 - - dir.c: free "ident" and "exclude_per_dir" in "struct untracked_cache"
169 - - read-cache.c: clear and free "sparse_checkout_patterns"
170 - - commit: discard partial cache before (re-)reading it
171 - - {reset,merge}: call discard_index() before returning
172 - - tests: mark tests as passing with SANITIZE=leak
173 - - Merge branch 'pw/rebase-no-reflog-action' into ab/various-leak-fixes
174 - (this branch uses pw/rebase-no-reflog-action.)
123 +* ab/submodule-no-abspath (2022-11-09) 1 commit
124 + - submodule--helper absorbgitdirs: no abspaths in "Migrating git..."
125 + (this branch is used by ab/remove--super-prefix.)
126
176 - Various leak fixes.
127 + Remove an absolute path in the "Migrating git directory" message.
128
129 Will merge to 'next'.
179 - source: <cover-v2-00.15-00000000000-20221108T172650Z-avarab@gmail.com>
130 + source: <patch-1.1-34b54fdd9bb-20221109T020347Z-avarab@gmail.com>
131
132
182 -* aw/complete-case-insensitive (2022-11-07) 2 commits
183 - - completion: add case-insensitive match of pseudorefs
184 - - completion: add optional ignore-case when matching refs
133 +* ab/t7610-timeout (2022-11-09) 1 commit
134 + (merged to 'next' on 2022-11-14 at 82a4abdb1d)
135 + + t7610: fix flaky timeout issue, don't clone from example.com
136
186 - Introduce a case insensitive mode to the Bash completion helpers.
137 + Fix a source of flakiness in CI when compiling with SANITIZE=leak.
138
188 - Waiting for review.
189 - source: <pull.1374.git.git.1667669315.gitgitgadget@gmail.com>
190 -
191 -
192 -* dd/bisect-helper-subcommand (2022-11-05) 3 commits
193 - (merged to 'next' on 2022-11-08 at 3951bf0f12)
194 - + bisect--helper: parse subcommand with OPT_SUBCOMMAND
195 - + bisect--helper: move all subcommands into their own functions
196 - + bisect--helper: remove unused options
197 - (this branch is used by dd/git-bisect-builtin.)
139 + Will cook in 'next'.
140 + source: <patch-1.1-83eca7b5a7c-20221105T115420Z-avarab@gmail.com>
141
199 - Fix a regression in the bisect-helper which mistakenly treats
200 - arguments to the command given to 'git bisect run' as arguments to
201 - the helper.
142
203 - Will cook in 'next'.
204 - source: <cover.1667667058.git.congdanhqx@gmail.com>
205 -
206 -
207 -* dd/git-bisect-builtin (2022-11-07) 14 commits
208 - - Turn `git bisect` into a full built-in
209 - - bisect--helper: log: allow arbitrary number of arguments
210 - - bisect--helper: remove subcommand state
211 - - bisect--helper: make `state` optional
212 - - bisect--helper: emit usage for "git bisect"
213 - - bisect test: test exit codes on bad usage
214 - - bisect--helper: pretend we're real bisect when report error
215 - - bisect--helper: remove unused arguments from do_bisect_run
216 - - bisect run: keep some of the post-v2.30.0 output
217 - - bisect: fix output regressions in v2.30.0
218 - - bisect--helper: pass arg[cv] down to do_bisect_run
219 - - bisect: refactor bisect_run() to match CodingGuidelines
220 - - bisect tests: test for v2.30.0 "bisect run" regressions
221 - - Merge branch 'dd/bisect-helper-subcommand' into dd/git-bisect-builtin
222 - (this branch uses dd/bisect-helper-subcommand.)
143 +* es/chainlint-lineno (2022-11-11) 4 commits
144 + - chainlint: prefix annotated test definition with line numbers
145 + - chainlint: latch line numbers at which each token starts and ends
146 + - chainlint: sidestep impoverished macOS "terminfo"
147 + - Merge branch 'es/chainlint-output' into es/chainlint-lineno
148 + (this branch uses es/chainlint-output.)
149
224 - Expecting a (combined) reroll???
225 - source: <cover-00.13-00000000000-20221104T132117Z-avarab@gmail.com>
150 + Teach chainlint.pl to annotate the original test definition instead
151 + of the token stream.
152
227 -* ds/packed-refs-v2 (2022-11-07) 30 commits
228 - - refs: skip hashing when writing packed-refs v2
229 - - p1401: create performance test for ref operations
230 - - ci: run GIT_TEST_PACKED_REFS_VERSION=2 in some builds
231 - - t*: skip packed-refs v2 over http tests
232 - - t3210: require packed-refs v1 for some tests
233 - - t5502: add PACKED_REFS_V1 prerequisite
234 - - t5312: allow packed-refs v2 format
235 - - t1409: test with packed-refs v2
236 - - packed-backend: create GIT_TEST_PACKED_REFS_VERSION
237 - - packed-refs: write prefix chunks
238 - - packed-refs: read optional prefix chunks
239 - - packed-refs: read file format v2
240 - - packed-refs: write file format version 2
241 - - packed-backend: create shell of v2 writes
242 - - config: add config values for packed-refs v2
243 - - packed-backend: create abstraction for writing refs
244 - - packed-backend: extract iterator/updates merge
245 - - packed-backend: extract add_write_error()
246 - - refs: extract packfile format to new file
247 - - chunk-format: parse trailing table of contents
248 - - chunk-format: allow trailing table of contents
249 - - chunk-format: store chunk offset during write
250 - - chunk-format: document trailing table of contents
251 - - chunk-format: number of chunks is optional
252 - - refs: allow loose files without packed-refs
253 - - repository: wire ref extensions to ref backends
254 - - config: fix multi-level bulleted list
255 - - extensions: add refFormat extension
256 - - read-cache: add index.computeHash config option
257 - - hashfile: allow skipping the hash function
153 + Will merge to 'next'.
154 + source: <pull.1413.v2.git.1668152094.gitgitgadget@gmail.com>
155
259 - Waiting for review.
260 - source: <pull.1408.git.1667846164.gitgitgadget@gmail.com>
156
157 +* ew/format-patch-mboxrd (2022-11-14) 1 commit
158 + - format-patch: add --mboxrd alias for --pretty=mboxrd
159
263 -* es/chainlint-output (2022-11-08) 4 commits
264 - - chainlint: annotate original test definition rather than token stream
265 - - chainlint: latch start/end position of each token
266 - - chainlint: tighten accuracy when consuming input stream
267 - - chainlint: add explanatory comments
160 + Teach `format-patch` a convenient alias for `--pretty=mboxrd`.
161
269 - Teach chainlint.pl to annotate the original test definition instead
270 - of the token stream.
162 + Waiting for discussion to settle.
163 + source: <20221114094114.18986-1-e@80x24.org>
164
272 - Will merge to 'next'?
273 - source: <pull.1375.git.git.1667934510.gitgitgadget@gmail.com>
165
166 +* gc/redact-h2h3-headers (2022-11-14) 2 commits
167 + (merged to 'next' on 2022-11-14 at 34157d24e9)
168 + + http: redact curl h2h3 headers in info
169 + + t: run t5551 tests with both HTTP and HTTP/2
170
276 -* ja/worktree-orphan (2022-11-04) 2 commits
277 - - worktree add: add --orphan flag
278 - - worktree add: Include -B in usage docs
171 + Redact headers from cURL's h2h3 module in GIT_CURL_VERBOSE and
172 + others.
173
280 - 'git worktree add' learned how to create a worktree based on an
281 - orphaned branch with `--orphan`.
174 + Will merge to 'master'.
175 + source: <pull.1377.v3.git.git.1668206106.gitgitgadget@gmail.com>
176
283 - source: <20221104213401.17393-1-jacobabel@nullpo.dev>
177
178 +* jk/branch-delete-detached (2022-11-10) 1 commit
179 + (merged to 'next' on 2022-11-14 at b185797ec0)
180 + + branch: gracefully handle '-d' on orphan HEAD
181
286 -* js/ci-set-output (2022-11-08) 1 commit
287 - (merged to 'next' on 2022-11-08 at 553062428c)
288 - + ci: use a newer `github-script` version
182 + Fix a bug where `git branch -d` did not work on an orphaned HEAD.
183 + source: <Y2H/1S3G+KeeEN/l@coredump.intra.peff.net>
184
290 - Update the actions/github-script dependency in CI to avoid a
291 - deprecation warning.
185
293 - Will merge to 'master'.
294 - source: <pull.1387.git.1667902408921.gitgitgadget@gmail.com>
186 +* js/drop-mingw-test-cmp (2022-11-14) 2 commits
187 + - tests(mingw): avoid very slow `mingw_test_cmp`
188 + - t0021: use Windows-friendly `pwd`
189
190 + Use `git diff --no-index` as a test_cmp on Windows.
191
297 -* js/remove-stale-scalar-repos (2022-11-07) 1 commit
298 - (merged to 'next' on 2022-11-08 at 6d598a3b80)
299 - + scalar reconfigure -a: remove stale `scalar.repo` entries
192 + Expecting a reroll.
193 + source: <pull.1309.v4.git.1668434812.gitgitgadget@gmail.com>
194
301 - 'scalar reconfigure -a' is taught to automatically remove
302 - scalar.repo entires which no longer exist.
195
304 - Will cook in 'next'.
305 - source: <pull.1407.git.1667845501422.gitgitgadget@gmail.com>
196 +* mc/switch-advice (2022-11-09) 1 commit
197 + - po: use `switch` over `checkout` in error message
198
199 + Use 'switch' instead of 'checkout' in an error message.
200
308 -* jt/submodule-on-demand (2022-11-07) 1 commit
309 - - submodule: explicitly specify on-demand upon push
201 + Waiting for review response.
202 + source: <pull.1308.git.git.1668018620148.gitgitgadget@gmail.com>
203
311 - Push all submodules recursively with
312 - '--recurse-submodules=on-demand'.
204
314 - Waiting for review.
315 - source: <20221108002553.3836987-1-jonathantanmy@google.com>
205 +* mh/credential-unrecognized-attrs (2022-11-12) 1 commit
206 + (merged to 'next' on 2022-11-14 at 8170443d0a)
207 + + docs: clarify that credential discards unrecognised attributes
208
209 + Docfix.
210
318 -* pw/rebase-no-reflog-action (2022-11-04) 2 commits
319 - - rebase: stop exporting GIT_REFLOG_ACTION
320 - - sequencer: stop exporting GIT_REFLOG_ACTION
321 - (this branch is used by ab/various-leak-fixes.)
211 + Will merge to 'master'.
212 + source: <pull.1393.git.1666598268697.gitgitgadget@gmail.com>
213
323 - Avoid setting GIT_REFLOG_ACTION to improve readability of the
324 - sequencer internals.
214
326 - Expecting a (final?) reroll.
327 - source: <pull.1405.git.1667575142.gitgitgadget@gmail.com>
215 +* mh/gitcredentials-generate (2022-11-14) 1 commit
216 + - Docs: describe how a credential-generating helper works
217
218 + Doc update.
219
330 -* rp/maintenance-qol (2022-11-08) 2 commits
331 - (merged to 'next' on 2022-11-08 at 076428c430)
332 - + maintenance: add option to register in a specific config
333 - + for-each-repo: interpolate repo path arguments
220 + Waiting for review.
221 + source: <pull.1379.git.git.1668217470500.gitgitgadget@gmail.com>
222
335 - 'git maintenance register' is taught to write configuration to an
336 - arbitrary path, and 'git for-each-repo' is taught to expand tilde
337 - characters in paths.
223
339 - Will cook in 'next'.
340 - source: <20221108194930.25805-1-ronan@rjp.ie>
224 +* mh/increase-credential-cache-timeout (2022-11-09) 1 commit
225 + (merged to 'next' on 2022-11-14 at afe54db0f1)
226 + + Documentation: increase example cache timeout to 1 hour
227
228 + Update the credential-cache documentation to provide a more realistic
229 + example.
230
343 -* sa/cat-file-mailmap--batch-check (2022-10-30) 2 commits
344 - - cat-file: add mailmap support to --batch-check option
345 - - cat-file: add mailmap support to -s option
231 + Will merge to 'master'.
232 + source: <pull.1412.v2.git.1668010273573.gitgitgadget@gmail.com>
233
347 - 'cat-file' gains mailmap support for its '--batch-check' and '-s'
348 - options.
234
350 -* sz/macos-fsmonitor-symlinks (2022-11-08) 1 commit
351 - - fsmonitor--daemon: on macOS support symlink
235 +* ms/sendemail-validate-headers (2022-11-11) 1 commit
236 + - Expose header information to git-send-email's sendemail-validate hook
237
353 - Fix an issue where core.fsmonitor on macOS would not notice created
354 - or modified symbolic links.
238 + Expecting a reroll.
239 + source: <20221111194223.644845-2-michael.strawbridge@amd.com>
240
356 - Waiting for review.
357 - source: <pull.1406.git.1667885119570.gitgitgadget@gmail.com>
241
242 +* pw/strict-label-lookups (2022-11-10) 2 commits
243 + (merged to 'next' on 2022-11-14 at 7db4398d23)
244 + + sequencer: tighten label lookups
245 + + sequencer: unify label lookup
246
360 -* tb/ci-concurrency (2022-11-08) 1 commit
361 - - ci: avoid unnecessary builds
247 + Correct an error where `git rebase` would mistakenly use a branch or
248 + tag named "refs/rewritten/xyz" when missing a rebase label.
249
363 - Avoid unnecessary builds in CI, with settings configured in
364 - ci-config.
250 + Will cook in 'next'.
251 + source: <pull.1414.git.1668098622.gitgitgadget@gmail.com>
252
366 - Waiting for review.
367 - source: <ff172f1de982f6f79b598e4ac6d5b2964ca4a098.1667931937.git.me@ttaylorr.com>
253
254 +* rs/multi-filter-args (2022-11-12) 3 commits
255 + - list-objects-filter: remove OPT_PARSE_LIST_OBJECTS_FILTER_INIT()
256 + - pack-object: simplify --filter handling
257 + - pack-objects: fix handling of multiple --filter options
258
370 -* tl/notes--blankline (2022-11-07) 3 commits
371 - - notes.c: drop unreachable code in "append_edit()"
372 - - notes.c: fixed tip when target and append note are both empty
373 - - notes.c: introduce "--blank-line" option
259 + Fix a bug where `pack-objects` would not respect multiple `--filter`
260 + arguments when invoked directly.
261
375 - 'git notes append' was taught '--[no-]blank-line' to conditionally
376 - add a LF between a new and existing note.
262 + Expecting a reroll?
263 + source: <c64e4fa5-62c2-2a93-a4ef-bd84407ea570@web.de>
264
378 - Expecting a reroll.
379 - source: <cover.1667828335.git.dyroneteng@gmail.com>
265
266 +* vd/skip-cache-tree-update (2022-11-10) 5 commits
267 + (merged to 'next' on 2022-11-14 at 06b2da01ff)
268 + + rebase: use 'skip_cache_tree_update' option
269 + + read-tree: use 'skip_cache_tree_update' option
270 + + reset: use 'skip_cache_tree_update' option
271 + + unpack-trees: add 'skip_cache_tree_update' option
272 + + cache-tree: add perf test comparing update and prime
273
382 -* vd/update-refs-delete (2022-11-07) 1 commit
383 - (merged to 'next' on 2022-11-08 at 2866156953)
384 - + rebase --update-refs: avoid unintended ref deletion
274 + Avoid calling 'cache_tree_update()' when doing so would be redundant.
275
386 - Will cook in 'next'.
387 - source: <20221107174752.91186-1-vdye@github.com>
276 + Will merge to 'master'.
277 + source: <pull.1411.v3.git.1668107165.gitgitgadget@gmail.com>
278
279 --------------------------------------------------
280 [Stalled]
@@ -510,6 +400,243 @@ for convenience (replace "htmldocs" with "manpages" for the manual
400 --------------------------------------------------
401 [Cooking]
402
403 +* ab/various-leak-fixes (2022-11-08) 18 commits
404 + - built-ins: use free() not UNLEAK() if trivial, rm dead code
405 + - revert: fix parse_options_concat() leak
406 + - cherry-pick: free "struct replay_opts" members
407 + - rebase: don't leak on "--abort"
408 + - connected.c: free the "struct packed_git"
409 + - sequencer.c: fix "opts->strategy" leak in read_strategy_opts()
410 + - ls-files: fix a --with-tree memory leak
411 + - revision API: call graph_clear() in release_revisions()
412 + - unpack-file: fix ancient leak in create_temp_file()
413 + - built-ins & libs & helpers: add/move destructors, fix leaks
414 + - dir.c: free "ident" and "exclude_per_dir" in "struct untracked_cache"
415 + - read-cache.c: clear and free "sparse_checkout_patterns"
416 + - commit: discard partial cache before (re-)reading it
417 + - {reset,merge}: call discard_index() before returning
418 + - tests: mark tests as passing with SANITIZE=leak
419 + - Merge branch 'pw/rebase-no-reflog-action' into ab/various-leak-fixes
420 + - rebase: stop exporting GIT_REFLOG_ACTION
421 + - sequencer: stop exporting GIT_REFLOG_ACTION
422 +
423 + Various leak fixes.
424 +
425 + Will merge to 'next'.
426 + source: <cover-v2-00.15-00000000000-20221108T172650Z-avarab@gmail.com>
427 +
428 +
429 +* aw/complete-case-insensitive (2022-11-07) 2 commits
430 + - completion: add case-insensitive match of pseudorefs
431 + - completion: add optional ignore-case when matching refs
432 +
433 + Introduce a case insensitive mode to the Bash completion helpers.
434 +
435 + Waiting for review.
436 + source: <pull.1374.git.git.1667669315.gitgitgadget@gmail.com>
437 +
438 +
439 +* dd/bisect-helper-subcommand (2022-11-11) 3 commits
440 + (merged to 'next' on 2022-11-14 at 066f19c4fe)
441 + + bisect--helper: parse subcommand with OPT_SUBCOMMAND
442 + + bisect--helper: move all subcommands into their own functions
443 + + bisect--helper: remove unused options
444 + (this branch is used by dd/git-bisect-builtin.)
445 +
446 + Fix a regression in the bisect-helper which mistakenly treats
447 + arguments to the command given to 'git bisect run' as arguments to
448 + the helper.
449 +
450 + Will cook in 'next'.
451 + source: <cover.1668097286.git.congdanhqx@gmail.com>
452 +
453 +
454 +* dd/git-bisect-builtin (2022-11-11) 12 commits
455 + (merged to 'next' on 2022-11-14 at fc304fb52f)
456 + + Turn `git bisect` into a full built-in
457 + + bisect--helper: log: allow arbitrary number of arguments
458 + + bisect--helper: handle states directly
459 + + bisect--helper: emit usage for "git bisect"
460 + + bisect test: test exit codes on bad usage
461 + + bisect--helper: identify as bisect when report error
462 + + bisect-run: verify_good: account for non-negative exit status
463 + + bisect run: keep some of the post-v2.30.0 output
464 + + bisect: fix output regressions in v2.30.0
465 + + bisect: refactor bisect_run() to match CodingGuidelines
466 + + bisect tests: test for v2.30.0 "bisect run" regressions
467 + + Merge branch 'dd/bisect-helper-subcommand' into dd/git-bisect-builtin
468 + (this branch uses dd/bisect-helper-subcommand.)
469 +
470 + `git bisect` becomes a builtin.
471 +
472 + Will cook in 'next'.
473 + source: <cover.1668097962.git.congdanhqx@gmail.com>
474 +
475 +
476 +* ds/packed-refs-v2 (2022-11-07) 30 commits
477 + - refs: skip hashing when writing packed-refs v2
478 + - p1401: create performance test for ref operations
479 + - ci: run GIT_TEST_PACKED_REFS_VERSION=2 in some builds
480 + - t*: skip packed-refs v2 over http tests
481 + - t3210: require packed-refs v1 for some tests
482 + - t5502: add PACKED_REFS_V1 prerequisite
483 + - t5312: allow packed-refs v2 format
484 + - t1409: test with packed-refs v2
485 + - packed-backend: create GIT_TEST_PACKED_REFS_VERSION
486 + - packed-refs: write prefix chunks
487 + - packed-refs: read optional prefix chunks
488 + - packed-refs: read file format v2
489 + - packed-refs: write file format version 2
490 + - packed-backend: create shell of v2 writes
491 + - config: add config values for packed-refs v2
492 + - packed-backend: create abstraction for writing refs
493 + - packed-backend: extract iterator/updates merge
494 + - packed-backend: extract add_write_error()
495 + - refs: extract packfile format to new file
496 + - chunk-format: parse trailing table of contents
497 + - chunk-format: allow trailing table of contents
498 + - chunk-format: store chunk offset during write
499 + - chunk-format: document trailing table of contents
500 + - chunk-format: number of chunks is optional
501 + - refs: allow loose files without packed-refs
502 + - repository: wire ref extensions to ref backends
503 + - config: fix multi-level bulleted list
504 + - extensions: add refFormat extension
505 + - read-cache: add index.computeHash config option
506 + - hashfile: allow skipping the hash function
507 +
508 + Waiting for review.
509 + source: <pull.1408.git.1667846164.gitgitgadget@gmail.com>
510 +
511 +
512 +* es/chainlint-output (2022-11-08) 4 commits
513 + (merged to 'next' on 2022-11-14 at 9cd7d30183)
514 + + chainlint: annotate original test definition rather than token stream
515 + + chainlint: latch start/end position of each token
516 + + chainlint: tighten accuracy when consuming input stream
517 + + chainlint: add explanatory comments
518 + (this branch is used by es/chainlint-lineno.)
519 +
520 + Teach chainlint.pl to annotate the original test definition instead
521 + of the token stream.
522 +
523 + Will cook in 'next'.
524 + source: <pull.1375.git.git.1667934510.gitgitgadget@gmail.com>
525 +
526 +
527 +* ja/worktree-orphan (2022-11-10) 2 commits
528 + - worktree add: add --orphan flag
529 + - worktree add: Include -B in usage docs
530 +
531 + 'git worktree add' learned how to create a worktree based on an
532 + orphaned branch with `--orphan`.
533 +
534 + Waiting for review discussion to settle, but leaning negative.
535 + source: <20221110233137.10414-1-jacobabel@nullpo.dev>
536 +
537 +
538 +* js/remove-stale-scalar-repos (2022-11-11) 2 commits
539 + (merged to 'next' on 2022-11-14 at e1c86051c4)
540 + + tests(scalar): tighten the stale `scalar.repo` test some
541 + (merged to 'next' on 2022-11-08 at 6d598a3b80)
542 + + scalar reconfigure -a: remove stale `scalar.repo` entries
543 +
544 + 'scalar reconfigure -a' is taught to automatically remove
545 + scalar.repo entires which no longer exist.
546 +
547 + Will cook in 'next'.
548 + source: <pull.1415.git.1668065327120.gitgitgadget@gmail.com>
549 +
550 +
551 +* jt/submodule-on-demand (2022-11-14) 1 commit
552 + - Doc: document push.recurseSubmodules=only
553 +
554 + Push all submodules recursively with
555 + '--recurse-submodules=on-demand'.
556 +
557 + Expecting a reroll?
558 + source: <20221114213713.2341945-1-jonathantanmy@google.com>
559 +
560 +
561 +* pw/rebase-no-reflog-action (2022-11-09) 2 commits
562 + (merged to 'next' on 2022-11-14 at 790dadc8d3)
563 + + rebase: stop exporting GIT_REFLOG_ACTION
564 + + sequencer: stop exporting GIT_REFLOG_ACTION
565 +
566 + Avoid setting GIT_REFLOG_ACTION to improve readability of the
567 + sequencer internals.
568 +
569 + Expecting a (final?) reroll.
570 + source: <31df037eafede799c2ef27df66c6da309b719b1b.1668003719.git.gitgitgadget@gmail.com>
571 +
572 +
573 +* rp/maintenance-qol (2022-11-14) 2 commits
574 + (merged to 'next' on 2022-11-14 at 17db40bf26)
575 + + maintenance: add option to register in a specific config
576 + + for-each-repo: interpolate repo path arguments
577 +
578 + 'git maintenance register' is taught to write configuration to an
579 + arbitrary path, and 'git for-each-repo' is taught to expand tilde
580 + characters in paths.
581 +
582 + Will cook in 'next'.
583 + source: <20221109190708.22725-1-ronan@rjp.ie>
584 +
585 +
586 +* sa/cat-file-mailmap--batch-check (2022-11-14) 3 commits
587 + - doc/cat-file: allow --use-mailmap for --batch options
588 + - cat-file: add mailmap support to --batch-check option
589 + - cat-file: add mailmap support to -s option
590 +
591 + 'cat-file' gains mailmap support for its '--batch-check' and '-s'
592 + options.
593 +
594 + Will merge to 'next'.
595 + source: <20221113212830.92609-1-siddharthasthana31@gmail.com>
596 +
597 +
598 +* sz/macos-fsmonitor-symlinks (2022-11-08) 1 commit
599 + - fsmonitor--daemon: on macOS support symlink
600 +
601 + Fix an issue where core.fsmonitor on macOS would not notice created
602 + or modified symbolic links.
603 +
604 + Waiting for review.
605 + source: <pull.1406.git.1667885119570.gitgitgadget@gmail.com>
606 +
607 +
608 +* tb/ci-concurrency (2022-11-08) 1 commit
609 + - ci: avoid unnecessary builds
610 +
611 + Avoid unnecessary builds in CI, with settings configured in
612 + ci-config.
613 +
614 + Waiting for review.
615 + source: <ff172f1de982f6f79b598e4ac6d5b2964ca4a098.1667931937.git.me@ttaylorr.com>
616 +
617 +
618 +* tl/notes--blankline (2022-11-09) 5 commits
619 + - notes.c: introduce "--no-blank-line" option
620 + - notes.c: provide tips when target and append note are both empty
621 + - notes.c: drop unreachable code in 'append_edit()'
622 + - notes.c: cleanup for "designated init" and "char ptr init"
623 + - notes.c: cleanup 'strbuf_grow' call in 'append_edit'
624 +
625 + 'git notes append' was taught '--[no-]blank-line' to conditionally
626 + add a LF between a new and existing note.
627 +
628 + Expecting a reroll.
629 + source: <cover.1667980450.git.dyroneteng@gmail.com>
630 +
631 +
632 +* vd/update-refs-delete (2022-11-07) 1 commit
633 + (merged to 'next' on 2022-11-08 at 2866156953)
634 + + rebase --update-refs: avoid unintended ref deletion
635 +
636 + Will merge to 'master'.
637 + source: <20221107174752.91186-1-vdye@github.com>
638 +
639 +
640 * ab/submodule-helper-prep-only (2022-11-08) 9 commits
641 (merged to 'next' on 2022-11-08 at c0c4f4d1c3)
642 + submodule--helper: use OPT_SUBCOMMAND() API
@@ -521,6 +648,7 @@ for convenience (replace "htmldocs" with "manpages" for the manual
648 + submodule--helper: fix a memory leak in "status"
649 + submodule tests: add tests for top-level flag output
650 + submodule--helper: move "config" to a test-tool
651 + (this branch is used by ab/remove--super-prefix.)
652
653 Preparation to remove git-submodule.sh and replace it with a builtin.
654
@@ -556,16 +684,6 @@ for convenience (replace "htmldocs" with "manpages" for the manual
684 source: <20221102220142.574890-1-szeder.dev@gmail.com>
685
686
559 -* tb/branch-delete-detached (2022-11-01) 1 commit
560 - - branch: gracefully handle '-d' on detached HEAD
561 -
562 - 'git branch -d' is taught to ignore failures to resolve HEAD when
563 - detached.
564 -
565 - Expecting a reroll.
566 - source: <c68f4b140f2495a35c5f30bec4e2e56c246160f4.1667334672.git.me@ttaylorr.com>
567 -
568 -
687 * tb/howto-maintain-git-fixes (2022-10-31) 2 commits
688 - Documentation: build redo-seen.sh from jch..seen
689 - Documentation: build redo-jch.sh from master..jch
@@ -576,15 +694,16 @@ for convenience (replace "htmldocs" with "manpages" for the manual
694 source: <cover.1667260044.git.me@ttaylorr.com>
695
696
579 -* tl/pack-bitmap-absolute-paths (2022-11-04) 2 commits
580 - - pack-bitmap.c: remove unnecessary "open_pack_index()" calls
581 - - pack-bitmap.c: avoid exposing absolute paths
697 +* tl/pack-bitmap-absolute-paths (2022-11-14) 2 commits
698 + (merged to 'next' on 2022-11-14 at 34eb0ea05a)
699 + + pack-bitmap.c: avoid exposing absolute paths
700 + + pack-bitmap.c: remove unnecessary "open_pack_index()" calls
701
702 The pack-bitmap machinery is taught to log the paths of redundant
703 bitmap(s) to trace2 instead of stderr.
704
586 - Expecting a (final?) reroll.
587 - source: <cover.1667470481.git.dyroneteng@gmail.com>
705 + Will merge to 'master'.
706 + source: <cover.1668063122.git.dyroneteng@gmail.com>
707
708
709 * ab/cmake-nix-and-ci (2022-11-04) 14 commits
@@ -619,7 +738,7 @@ for convenience (replace "htmldocs" with "manpages" for the manual
738 Resolve issues with the bin-wrappers/% rules where "make
739 bin-wrappers/git" would generate the script but not "git" itself.
740
622 - Waiting for review.
741 + Waiting for review discussion to settle, but leaning negative.
742 source: <cover-v3-0.4-00000000000-20221031T222249Z-avarab@gmail.com>
743
744
@@ -631,73 +750,54 @@ for convenience (replace "htmldocs" with "manpages" for the manual
750
751 Various test updates.
752
634 - Waiting for review.
753 + Will merge to 'master'?
754 source: <cover-0.3-00000000000-20221029T025520Z-avarab@gmail.com>
755
756
638 -* do/modernize-t7001 (2022-11-04) 1 commit
639 - (merged to 'next' on 2022-11-08 at dfc9c80e73)
640 - + t7001-mv.sh: modernizing test script using functions
641 -
642 - Modernize test script to avoid "test -f" and friends.
643 -
644 - Will merge to 'master'.
645 - source: <pull.1372.v3.git.git.1667574352244.gitgitgadget@gmail.com>
646 -
647 -
648 -* kz/merge-tree-merge-base (2022-11-04) 2 commits
649 - - merge-tree.c: allow specifying the merge-base when --stdin is passed
650 - - merge-tree.c: add --merge-base=<commit> option
757 +* kz/merge-tree-merge-base (2022-11-12) 2 commits
758 + (merged to 'next' on 2022-11-14 at 76d48ae21f)
759 + + merge-tree.c: allow specifying the merge-base when --stdin is passed
760 + + merge-tree.c: add --merge-base=<commit> option
761
762 "merge-tree" learns a new `--merge-base` option.
763
654 - Waiting for review.
655 - source: <pull.1397.v6.git.1667472621.gitgitgadget@gmail.com>
656 -
657 -
658 -* mh/password-can-be-pat (2022-11-08) 1 commit
659 - (merged to 'next' on 2022-11-08 at 3135ade2a6)
660 - + Documentation/gitcredentials.txt: mention password alternatives
661 -
662 - Documentation update to git-credential(1).
663 -
664 - Will merge to 'master'.
665 - source: <pull.1396.v3.git.1667912487608.gitgitgadget@gmail.com>
764 + Will cook in 'next'.
765 + source: <pull.1397.v7.git.1668210314.gitgitgadget@gmail.com>
766
767
668 -* po/pretty-hard-trunc (2022-11-02) 1 commit
768 +* po/pretty-hard-trunc (2022-11-13) 1 commit
769 - pretty-formats: add hard truncation, without ellipsis, options
770
771 Add a new pretty format which truncates without ellipsis.
772
673 - Missing test coverage.
674 - source: <20221102120853.2013-1-philipoakley@iee.email>
773 + Waiting for review.
774 + source: <20221112143616.1429-1-philipoakley@iee.email>
775
776
677 -* rr/long-status-advice (2022-11-04) 1 commit
777 +* rr/long-status-advice (2022-11-10) 1 commit
778 - status: long status advice adapted to recent capabilities
779
780 The advice message emitted by a slow "status" run is amended to
781 mention fsmonitor.
782
783 Waiting for reviewer feedback on the updated round.
684 - source: <pull.1384.v3.git.1667424467505.gitgitgadget@gmail.com>
784 + source: <pull.1384.v5.git.1668110679098.gitgitgadget@gmail.com>
785
786
787 * ab/config-multi-and-nonbool (2022-11-02) 9 commits
688 - - for-each-repo: with bad config, don't conflate <path> and <cmd>
689 - - config API: add "string" version of *_value_multi(), fix segfaults
690 - - config API users: test for *_get_value_multi() segfaults
691 - - for-each-repo: error on bad --config
692 - - config API: have *_multi() return an "int" and take a "dest"
693 - - versioncmp.c: refactor config reading next commit
694 - - config tests: add "NULL" tests for *_get_value_multi()
695 - - config tests: cover blind spots in git_die_config() tests
696 - - for-each-repo tests: test bad --config keys
788 + . for-each-repo: with bad config, don't conflate <path> and <cmd>
789 + . config API: add "string" version of *_value_multi(), fix segfaults
790 + . config API users: test for *_get_value_multi() segfaults
791 + . for-each-repo: error on bad --config
792 + . config API: have *_multi() return an "int" and take a "dest"
793 + . versioncmp.c: refactor config reading next commit
794 + . config tests: add "NULL" tests for *_get_value_multi()
795 + . config tests: cover blind spots in git_die_config() tests
796 + . for-each-repo tests: test bad --config keys
797
798 A mixed bag of config API updates.
799
700 - Expecting a reroll.
800 + Waiting for review.
801 cf. <221026.86pmeebcj9.gmgdl@evledraar.gmail.com>
802 source: <cover-v2-0.9-00000000000-20221101T225822Z-avarab@gmail.com>
803
@@ -718,17 +818,18 @@ for convenience (replace "htmldocs" with "manpages" for the manual
818 Makefile comments updates and reordering to clarify knobs used to
819 choose SHA implementations.
820
721 - Will cook in 'next'.
821 + Will merge to 'master'?
822 source: <cover-v5-00.10-00000000000-20221107T211736Z-avarab@gmail.com>
823
824
725 -* ps/receive-use-only-advertised (2022-11-08) 6 commits
825 +* ps/receive-use-only-advertised (2022-11-11) 7 commits
826 - receive-pack: only use visible refs for connectivity check
827 - rev-parse: add `--exclude-hidden=` option
828 - revision: add new parameter to exclude hidden refs
829 - revision: introduce struct to handle exclusions
830 - revision: move together exclusion-related functions
831 - refs: get rid of global list of hidden refs
832 + - refs: fix memory leak when parsing hideRefs config
833
834 "git receive-pack" used to use all the local refs as the boundary
835 for checking connectivity of the data "git push" sent, but now it
@@ -741,7 +842,7 @@ for convenience (replace "htmldocs" with "manpages" for the manual
842 Expecting a (final?) reroll.
843 cf. <221028.86bkpw805n.gmgdl@evledraar.gmail.com>
844 cf. <xmqqr0yrizqm.fsf@gitster.g>
744 - source: <cover.1667901510.git.ps@pks.im>
845 + source: <cover.1668149149.git.ps@pks.im>
846
847
848 * gc/submodule-clone-update-with-branches (2022-10-30) 8 commits
@@ -757,29 +858,20 @@ for convenience (replace "htmldocs" with "manpages" for the manual
858 "git clone --recurse-submodules" and "git submodule update" learns
859 to honor the "propagete branches" option.
860
760 - Waiting for review.
861 + Waiting for review on the updated round.
862 source: <pull.1321.v3.git.git.1666988096.gitgitgadget@gmail.com>
863
864
764 -* pw/config-int-parse-fixes (2022-10-22) 3 commits
765 - . git_parse_signed(): avoid integer overflow
766 - . config: require at least one digit when parsing numbers
767 - . git_parse_unsigned: reject negative values
865 +* pw/config-int-parse-fixes (2022-11-09) 3 commits
866 + - git_parse_signed(): avoid integer overflow
867 + - config: require at least one digit when parsing numbers
868 + - git_parse_unsigned: reject negative values
869
870 Assorted fixes of parsing end-user input as integers.
871
771 - Expecting a reroll to add test coverage.
872 + Will merge to 'next'?
873 cf. <Y1L+Qv+cs1bjqjK9@coredump.intra.peff.net>
773 - source: <pull.1389.git.1666359915.gitgitgadget@gmail.com>
774 -
775 -
776 -* sa/cat-file-mailmap (2022-10-21) 1 commit
777 - . doc/cat-file: allow --use-mailmap for --batch options
778 -
779 - Doc updates.
780 -
781 - Waiting for review response.
782 - source: <20221021103442.202759-1-siddharthasthana31@gmail.com>
874 + source: <pull.1389.v2.git.1668003388.gitgitgadget@gmail.com>
875
876
877 * tb/repack-expire-to (2022-10-24) 4 commits
@@ -792,7 +884,7 @@ for convenience (replace "htmldocs" with "manpages" for the manual
884 "git repack" learns to send cruft objects out of the way into
885 packfiles outside the repository.
886
795 - Will cook in 'next'.
887 + Will merge to 'master'.
888 source: <cover.1666636974.git.me@ttaylorr.com>
889
890
@@ -807,18 +899,6 @@ for convenience (replace "htmldocs" with "manpages" for the manual
899 source: <20221025122856.20204-1-christian.couder@gmail.com>
900
901
810 -* al/trace2-clearing-skip-worktree (2022-11-04) 2 commits
811 - (merged to 'next' on 2022-11-08 at 567aeb8d83)
812 - + index: raise a bug if the index is materialised more than once
813 - + index: add trace2 region for clear skip worktree
814 -
815 - Add trace2 counters to the region to clear skip worktree bits in a
816 - sparse checkout.
817 -
818 - Will merge to 'master'.
819 - source: <pull.1368.v4.git.git.1667516701.gitgitgadget@gmail.com>
820 -
821 -
902 * mc/credential-helper-auth-headers (2022-11-02) 11 commits
903 - t5556: add HTTP authentication tests
904 - test-http-server: add simple authentication
@@ -882,7 +962,9 @@ for convenience (replace "htmldocs" with "manpages" for the manual
962 source: <pull.1374.git.1665068476.gitgitgadget@gmail.com>
963
964
885 -* ab/coccicheck-incremental (2022-11-02) 13 commits
965 +* ab/coccicheck-incremental (2022-11-11) 14 commits
966 + (merged to 'next' on 2022-11-14 at 8a70133571)
967 + + Makefile: don't create a ".build/.build/" for cocci, fix output
968 (merged to 'next' on 2022-11-08 at 0f3c55d4c2)
969 + spatchcache: add a ccache-alike for "spatch"
970 + cocci: run against a generated ALL.cocci
@@ -902,4 +984,5 @@ for convenience (replace "htmldocs" with "manpages" for the manual
984 incrementally.
985
986 Will cook in 'next'.
987 + source: <221109.86tu38p1x8.gmgdl@evledraar.gmail.com>
988 source: <cover-v5-00.13-00000000000-20221101T222616Z-avarab@gmail.com>