From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, "Emily Shaffer" <emilyshaffer@google.com>,
"SZEDER Gábor" <szeder.dev@gmail.com>,
"Taylor Blau" <me@ttaylorr.com>
Subject: Re: What's cooking in git.git (Sep 2021, #06; Mon, 20)
Date: Wed, 22 Sep 2021 01:07:00 +0200 [thread overview]
Message-ID: <875yut8nns.fsf@evledraar.gmail.com> (raw)
In-Reply-To: <xmqq1r5iaj9j.fsf@gitster.g>
On Mon, Sep 20 2021, Junio C Hamano wrote:
As usual, updates on my topics:
> * ab/make-tags-cleanup (2021-08-05) 5 commits
> * ab/progress-users-adjust-counters (2021-09-09) 2 commits
> * ab/serve-cleanup (2021-08-05) 10 commits
> * ab/tr2-leaks-and-fixes (2021-09-07) 6 commits
> * ab/unbundle-progress (2021-09-07) 4 commits
Thanks!
> * ab/repo-settings-cleanup (2021-09-20) 5 commits
> - repository.h: don't use a mix of int and bitfields
> - repo-settings.c: simplify the setup
> - read-cache & fetch-negotiator: check "enum" values in switch()
> - environment.c: remove test-specific "ignore_untracked..." variable
> - wrapper.c: add x{un,}setenv(), and use xsetenv() in environment.c
>
> Code cleanup.
>
> Will merge to 'next'?
> cf. <cover-v3-0.5-00000000000-20210919T084703Z-avarab@gmail.com>
> Looks like we got an implicit Ack from Derrick?
Sounds like the consensus is that it's ready for 'next'. I submitted a
v4 which both Taylor Blau & Derrick Stolee gave their
Reviewed-By/"LGTM", respectively:
https://lore.kernel.org/git/cover-v4-0.5-00000000000-20210921T131003Z-avarab@gmail.com/;
Thanks both!
> * ab/pack-objects-stdin (2021-07-09) 5 commits
> - pack-objects.c: make use of REV_INFO_STDIN_LINE_PROCESS
> - pack-objects.c: do stdin parsing via revision.c's API
> - revision.[ch]: add a "handle_stdin_line" API
> - revision.h: refactor "disable_stdin" and "read_from_stdin"
> - upload-pack: run is_repository_shallow() before setup_revisions()
>
> Introduce handle_stdin_line callback to revision API and uses it.
>
> Waiting for reviews.
I said a while ago I'd re-roll this with the actually interesting parts
included, will do that soonish.
> * es/config-based-hooks (2021-09-09) 6 commits
> - hook: allow out-of-repo 'git hook' invocations
> - hook: include hooks from the config
> - hook: introduce "git hook list"
> - hook: allow parallel hook execution
> - fixup! hook: run a list of hooks instead
> - hook: run a list of hooks instead
> (this branch uses ab/config-based-hooks-base.)
>
> Revamp the hooks subsystem to allow multiple of them to trigger
> upon the same event and control via the configuration variables.
>
> On hold.
> This is an interim one that goes with the updated ab/config-based-hooks-base.
More on this below....
> * ab/fsck-unexpected-type (2021-09-07) 22 commits
> - fsck: report invalid object type-path combinations
> - fsck: report invalid types recorded in objects
> - object-store.h: move read_loose_object() below 'struct object_info'
> - fsck: don't hard die on invalid object types
> - object-file.c: use "enum" return type for unpack_loose_header()
> - object-file.c: return -2 on "header too long" in unpack_loose_header()
> - object-file.c: return -1, not "status" from unpack_loose_header()
> - object-file.c: guard against future bugs in loose_object_info()
> - object-file.c: stop dying in parse_loose_header()
> - object-file.c: split up ternary in parse_loose_header()
> - object-file.c: simplify unpack_loose_short_header()
> - object-file.c: add missing braces to loose_object_info()
> - object-file.c: make parse_loose_header_extended() public
> - object-file.c: don't set "typep" when returning non-zero
> - cache.h: move object functions to object-store.h
> - cat-file tests: test for current --allow-unknown-type behavior
> - cat-file tests: add corrupt loose object test
> - rev-list tests: test for behavior with invalid object types
> - cat-file tests: test that --allow-unknown-type isn't on by default
> - cat-file tests: test for missing object with -t and -s
> - fsck tests: add test for fsck-ing an unknown type
> - fsck tests: refactor one test to use a sub-repo
>
> "git fsck" has been taught to report mismatch between expected and
> actual types of an object better.
>
> Needs review.
Taylor gave the v6 a really thorough review, and I re-rolled with a v7:
https://lore.kernel.org/git/cover-v7-00.17-00000000000-20210920T190304Z-avarab@gmail.com/
I think the current state is probably that he's going to get to looking
the v7 over a bit better, let's wait a few days...
> * ab/align-parse-options-help (2021-09-12) 4 commits
> - parse-options: properly align continued usage output
> - git rev-parse --parseopt tests: add more usagestr tests
> - send-pack: properly use parse_options() API for usage string
> - parse-options API users: align usage output in C-strings
>
> When "git cmd -h" shows more than one line of usage text (e.g.
> the cmd subcommand may take sub-sub-command), parse-options API
> learned to align these lines, even across i18n/l10n.
>
> Will merge to 'next'?
I think it's ready, I've got a minor v5 re-roll now :
https://lore.kernel.org/git/cover-v5-0.4-00000000000-20210921T132350Z-avarab@gmail.com/
> * ab/help-config-vars (2021-09-10) 6 commits
> - fixup! help / completion: make "git help" do the hard work
> - help / completion: make "git help" do the hard work
> - help: correct logic error in combining --all and --config
> - help tests: add test for --config output
> - help: correct usage & behavior of "git help --guides"
> - help: correct the usage string in -h and documentation
>
> Teach "git help -c" into helping the command line completion of
> configuration variables.
>
> Will merge to 'next'?
I re-rolled it just now:
https://lore.kernel.org/git/cover-v3-0.9-00000000000-20210921T223223Z-avarab@gmail.com/T/#u
I think it should be ready, but as shown there the range-diff against
the v2 is non-trivial.
> * ab/gc-remove-unused-call (2021-09-12) 1 commit
> [...]
> Will merge to 'master'.
> [...]
> Will merge to 'master'.
Thanks!
> * ab/unused-script-helpers (2021-09-12) 4 commits
> [...]
> Will merge to 'master'.
Thanks. Between this and this and the upcoming
git-rebase-preserve-merges.sh removal I had some plans for code
deletions in this area, but would appreciate your feedback at
https://lore.kernel.org/git/87tuiwjfvi.fsf@evledraar.gmail.com/
I.e. I still have no idea what sort of sweet spot you're trying to aim
for with backwards compatibility for the *.sh libraries....
> * ab/retire-option-argument (2021-09-12) 4 commits
> [...]
> Will merge to 'master'.
> * ab/http-drop-old-curl-plus (2021-09-13) 9 commits
> Will merge to 'master'.
Thanks!
> * ab/sanitize-leak-ci (2021-09-20) 2 commits
> - tests: add a test mode for SANITIZE=leak, run it in CI
> - Makefile: add SANITIZE=leak flag to GIT-BUILD-OPTIONS
>
> CI learns to run the leak sanitizer builds.
>
> Will merge to 'next'?
Yes please, as noted in
https://lore.kernel.org/git/87r1dh8r62.fsf@evledraar.gmail.com/ more
leak fixes are waiting on this.
I think the mode itself is thoroughly reviewed, we just had some hiccups
with t0000-basic.sh between "master" and "seen", but the v7 picked other
less troublesome tests as canaries:
https://lore.kernel.org/git/cover-v7-0.2-00000000000-20210919T075619Z-avarab@gmail.com/
> * ab/lib-subtest (2021-08-05) 11 commits
> [...]
>
> Updates to the tests in t0000 to test the test framework.
Stalled for quite some time, I wonder seeing as it's purely a test-only
code movement (and largely a code deletion) whether we could just
declare it good enough to proceed...
> * ab/only-single-progress-at-once (2021-07-23) 8 commits
> - progress.c: add & assert a "global_progress" variable
> - pack-bitmap-write.c: add a missing stop_progress()
> - progress.c: add temporary variable from progress struct
> - progress.c: stop eagerly fflush(stderr) when not a terminal
> - progress.c: call progress_interval() from progress_test_force_update()
> - progress.c: move signal handler functions lower
> - progress.c tests: test some invalid usage
> - progress.c tests: make start/stop verbs on stdin
>
> Further tweaks on progress API.
>
> On hold.
> cf. <20210901050406.GB76263@szeder.dev>
I re-rolled this, and think per
https://lore.kernel.org/git/cover-v2-0.8-00000000000-20210920T225701Z-avarab@gmail.com/
that this should be put off hold.
Hopefully SZEDER will chime in, but it appears to me that
<20210901050406.GB76263@szeder.dev> may have been based on a
misunderstanding about which series was queued up, or perhaps just
general justified paranoia about a BUG() in that code, but I think I've
shown that we probably won't run into one in the updated commit message
in v2.
> * ab/config-based-hooks-base (2021-09-09) 36 commits
> - hooks: fix a TOCTOU in "did we run a hook?" heuristic
> - receive-pack: convert receive hooks to hook.h
> - post-update: use hook.h library
> - receive-pack: convert 'update' hook to hook.h
> - hooks: allow callers to capture output
> - run-command: allow capturing of collated output
<mark2> (referenced below)
> - reference-transaction: use hook.h to run hooks
> - hook tests: use a modern style for "pre-push" tests
> - hook tests: test for exact "pre-push" hook input
> - transport: convert pre-push hook to hook.h
> - hook: convert 'post-rewrite' hook in sequencer.c to hook.h
> - hook: provide stdin by string_list or callback
> - run-command: add stdin callback for parallelization
> - am: convert 'post-rewrite' hook to hook.h
> - hook: support passing stdin to hooks
> - run-command: allow stdin for run_processes_parallel
<mark1> (referenced below)
> - run-command: remove old run_hook_{le,ve}() hook API
> - receive-pack: convert push-to-checkout hook to hook.h
> - read-cache: convert post-index-change to use hook.h
> - commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
> - git-p4: use 'git hook' to run hooks
> - send-email: use 'git hook run' for 'sendemail-validate'
> - git hook run: add an --ignore-missing flag
> - merge: convert post-merge to use hook.h
> - hooks: convert 'post-checkout' hook to hook library
> - am: convert applypatch to use hook.h
> - rebase: convert pre-rebase to use hook.h
> - gc: use hook library for pre-auto-gc hook
> - hook: add 'run' subcommand
<mark0> (referenced below)
> - hook-list.h: add a generated list of hooks, like config-list.h
> - hook.c users: use "hook_exists()" instead of "find_hook()"
> - hook.c: add a hook_exists() wrapper and use it in bugreport.c
> - hook.[ch]: move find_hook() from run-command.c to hook.c
> - Makefile: remove an out-of-date comment
> - Makefile: stop hardcoding {command,config}-list.h
> - Makefile: mark "check" target as .PHONY
> (this branch is used by es/config-based-hooks.)
>
> Restructuring of (a subset of) Emily's config-based-hooks series,
> to demonstrate that a series can be presented as a more logical and
> focused progression.
>
> Waiting for reviews.
It seems due to the size of this series we might be better off splitting
up this already split-up series.
I was trying to convince you to merge down the much more trivial changes
up to the <mark0> above, which are purely build system prep work. Any
chance you'd reconsider?
I think a plan that might be better would be:
1. Eject both ab/config-based-hooks-base & es/config-based-hooks
2. I'd submit a series up to the <mark0>, hopefully that can land fairly
soon thereafter.
3. Once that's in, another one for <mark0>..<mark1>, i.e. the "git hook
run" command, but only the more basic bits, and migrating fairly
simple hooks.
4. Then <mark1>..<mark2>, followed by <mark2>..ab/config-based-hooks-base
5. Then Emily's es/config-based-hooks.
That's converting a 2-step process (ab/config-based-hooks-base +
es/config-based-hooks) into 5 steps, but I suspect it would go faster,
right now it seems there's no takers for a review of this rather large
series. What do you & Emily think?
> * hn/reftable (2021-09-10) 20 commits
> - fixup! reftable: implement stack, a mutable database of reftable files.
> - Add "test-tool dump-reftable" command.
> - reftable: add dump utility
> - reftable: implement stack, a mutable database of reftable files.
> - reftable: implement refname validation
> - reftable: add merged table view
> - reftable: add a heap-based priority queue for reftable records
> - reftable: reftable file level tests
> - reftable: read reftable files
> - reftable: generic interface to tables
> - reftable: write reftable files
> - reftable: a generic binary tree implementation
> - reftable: reading/writing blocks
> - Provide zlib's uncompress2 from compat/zlib-compat.c
> - reftable: (de)serialization for the polymorphic record type.
> - reftable: add blocksource, an abstraction for random access reads
> - reftable: utility functions
> - reftable: add error related functionality
> - reftable: RFC: add LICENSE
> - hash.h: provide constants for the hash IDs
>
> The "reftable" backend for the refs API, without integrating into
> the refs subsystem.
>
> Will merge to 'next'?
>
>
> * ab/refs-files-cleanup (2021-08-25) 13 commits
> - refs/files: remove unused "errno != ENOTDIR" condition
> - refs/files: remove unused "errno == EISDIR" code
> - refs/files: remove unused "oid" in lock_ref_oid_basic()
> - refs API: remove OID argument to reflog_expire()
> - reflog expire: don't lock reflogs using previously seen OID
> - refs/files: add a comment about refs_reflog_exists() call
> - refs: make repo_dwim_log() accept a NULL oid
> - refs/debug: re-indent argument list for "prepare"
> - refs/files: remove unused "skip" in lock_raw_ref() too
> - refs/files: remove unused "extras/skip" in lock_ref_oid_basic()
> - refs: drop unused "flags" parameter to lock_ref_oid_basic()
> - refs/files: remove unused REF_DELETING in lock_ref_oid_basic()
> - refs/packet: add missing BUG() invocations to reflog callbacks
> (this branch is used by ab/refs-errno-cleanup and hn/refs-errno-cleanup.)
>
> Continued work on top of the hn/refs-errno-cleanup topic.
>
> Will merge to 'next'?
>
>
> * hn/refs-errno-cleanup (2021-08-25) 4 commits
> - refs: make errno output explicit for read_raw_ref_fn
> - refs/files-backend: stop setting errno from lock_ref_oid_basic
> - refs: remove EINVAL errno output from specification of read_raw_ref_fn
> - refs file backend: move raceproof_create_file() here
> (this branch is used by ab/refs-errno-cleanup; uses ab/refs-files-cleanup.)
>
> Futz with the way 'errno' is relied on in the refs API to carry the
> failure modes up the callchain.
>
> Will merge to 'next'?
I think "yes" to all of these, but I'm obviously biased :)
We had the cleanup topics merged to "next" already in an earlier
iteration, ran into an issue that's well understood & now fixed. I don't
think hanging around in "seen" for longer is going to give us any more
meaningful testing or data.
The combination of those topics & hn/reftable then allows us to proceed
with "real" reftable work.
next prev parent reply other threads:[~2021-09-22 0:22 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-21 0:02 What's cooking in git.git (Sep 2021, #06; Mon, 20) Junio C Hamano
2021-09-21 1:16 ` Junio C Hamano
2021-09-21 3:22 ` Taylor Blau
2021-09-21 8:44 ` cb/pedantic-build-for-developers, POSIX-but-not-C99 and -Wno-pedantic-ms-format Ævar Arnfjörð Bjarmason
2021-09-21 10:10 ` Carlo Arenas
2021-09-21 10:30 ` René Scharfe
2021-09-21 10:48 ` Carlo Arenas
2021-09-22 16:15 ` Junio C Hamano
2021-09-22 16:58 ` René Scharfe
2021-09-22 16:13 ` Junio C Hamano
2021-09-22 16:25 ` Randall S. Becker
2021-09-22 17:22 ` Randall S. Becker
2021-09-22 17:38 ` Randall S. Becker
2021-09-21 23:07 ` Ævar Arnfjörð Bjarmason [this message]
2021-09-23 16:36 ` What's cooking in git.git (Sep 2021, #06; Mon, 20) Junio C Hamano
2021-09-23 16:51 ` Ævar Arnfjörð Bjarmason
2021-09-23 17:41 ` Jeff King
2021-09-22 0:22 ` ns/batched-fsync (was Re: What's cooking in git.git (Sep 2021, #06; Mon, 20)) Ævar Arnfjörð Bjarmason
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=875yut8nns.fsf@evledraar.gmail.com \
--to=avarab@gmail.com \
--cc=emilyshaffer@google.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=me@ttaylorr.com \
--cc=szeder.dev@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).