Subject: Re: What's cooking in git.git (Jun 2021, #02; Sun, 6)

From: Ævar Arnfjörð Bjarmason <[email-masked]>
Date: Mon, 07 Jun 2021 16:10:17 +0200

On Sun, Jun 06 2021, Junio C Hamano wrote:

> * ab/update-submitting-patches (2021-05-13) 3 commits
>  - SubmittingPatches: remove pine-specific hints from MUA hints
>  - SubmittingPatches: replace discussion of Travis with GitHub Actions
>  - SubmittingPatches: move discussion of Signed-off-by above "send"
>
>  Reorganize and update the SubmitingPatches document.
>
>  Expecting a reroll.
>  cf. <[email-masked]>, <20210512235136.GB10785@localhost>

I submitted that re-roll today as
https://lore.kernel.org/git/[email-masked]/

> * ab/describe-tests-fix (2021-05-11) 5 commits
>  - describe tests: support -C in "check_describe"
>  - describe tests: fix nested "test_expect_success" call
>  - describe tests: don't rely on err.actual from "check_describe"
>  - describe tests: refactor away from glob matching
>  - describe tests: improve test for --work-tree & --dirty
>  (this branch uses ab/test-lib-updates.)
>
>  Various updates to tests around "git describe"
>
>  Waiting for the base topic to solidify.

...

> * ab/pickaxe-pcre2 (2021-05-11) 22 commits
>  - xdiff-interface: replace discard_hunk_line() with a flag
>  - xdiff users: use designated initializers for out_line
>  - pickaxe -G: don't special-case create/delete
>  - pickaxe -G: terminate early on matching lines
>  - xdiff-interface: allow early return from xdiff_emit_line_fn
>  - xdiff-interface: prepare for allowing early return
>  - pickaxe -S: slightly optimize contains()
>  - pickaxe: rename variables in has_changes() for brevity
>  - pickaxe -S: support content with NULs under --pickaxe-regex
>  - pickaxe: assert that we must have a needle under -G or -S
>  - pickaxe: refactor function selection in diffcore-pickaxe()
>  - perf: add performance test for pickaxe
>  - pickaxe/style: consolidate declarations and assignments
>  - diff.h: move pickaxe fields together again
>  - pickaxe: die when --find-object and --pickaxe-all are combined
>  - pickaxe: die when -G and --pickaxe-regex are combined
>  - pickaxe tests: add missing test for --no-pickaxe-regex being an error
>  - pickaxe tests: test for -G, -S and --find-object incompatibility
>  - pickaxe tests: add test for "log -S" not being a regex
>  - pickaxe tests: add test for diffgrep_consume() internals
>  - pickaxe tests: refactor to use test_commit --append --printf
>  - grep/pcre2 tests: reword comments referring to kwset
>  (this branch uses ab/test-lib-updates.)

...

> * es/config-based-hooks (2021-05-27) 37 commits
>  - docs: link githooks and git-hook manpages
>  - doc: clarify fsmonitor-watchman specification
>  - run-command: stop thinking about hooks
>  - git-send-email: use 'git hook run' for 'sendemail-validate'
>  - bugreport: use hook_exists instead of find_hook
>  - receive-pack: convert receive hooks to hook.h
>  - post-update: use hook.h library
>  - proc-receive: acquire hook list from hook.h
>  - receive-pack: convert 'update' hook to hook.h
>  - reference-transaction: look for hooks in config
>  - transport: convert pre-push hook to use config
>  - hook: convert 'post-rewrite' hook to config
>  - hooks: convert 'post-checkout' hook to hook library
>  - git-p4: use 'git hook' to run hooks
>  - receive-pack: convert push-to-checkout hook to hook.h
>  - read-cache: convert post-index-change hook to use config
>  - rebase: teach pre-rebase to use hook.h
>  - gc: use hook library for pre-auto-gc hook
>  - merge: use config-based hooks for post-merge hook
>  - am: convert applypatch hooks to use config
>  - commit: use config-based hooks
>  - hooks: allow callers to capture output
>  - run-command: allow capturing of collated output
>  - hook: provide stdin by string_list or callback
>  - run-command: add stdin callback for parallelization
>  - hook: allow specifying working directory for hooks
>  - hook: allow parallel hook execution
>  - run-command: allow stdin for run_processes_parallel
>  - hook: support passing stdin to hooks
>  - hook: introduce hook_exists()
>  - hook: add 'run' subcommand
>  - parse-options: parse into strvec
>  - hook: implement hookcmd.<name>.skip
>  - hook: teach hook.runHookDir
>  - hook: include hookdir hook in list
>  - hook: introduce git-hook subcommand
>  - doc: propose hooks managed by the config

I'd like to get some feedback on whether you think my proposed
re-staring of the topic is something you're interested in accepting in
lieu of this approach.

I'm still waiting on Emily to reply to
https://lore.kernel.org/git/[email-masked]/ I'd
think it's best to wait for whath she has to say about it before.

I had the impression per
http://lore.kernel.org/git/[email-masked] that you were in
favor of it. There's some outstanding comments on my v1[1]. I'd like to
get some more sense of whether there's interest in it before working on
and sending a v2 to the list.

> * ab/send-email-optim (2021-05-28) 13 commits
>  - perl: nano-optimize by replacing Cwd::cwd() with Cwd::getcwd()
>  - send-email: move trivial config handling to Perl
>  - perl: lazily load some common Git.pm setup code
>  - send-email: lazily load modules for a big speedup
>  - send-email: get rid of indirect object syntax
>  - send-email: use function syntax instead of barewords
>  - send-email: lazily shell out to "git var"
>  - send-email: lazily load config for a big speedup
>  - send-email: copy "config_regxp" into git-send-email.perl
>  - send-email: refactor sendemail.smtpencryption config parsing
>  - send-email: remove non-working support for "sendemail.smtpssl"
>  - send-email tests: test for boolean variables without a value
>  - send-email tests: support GIT_TEST_PERL_FATAL_WARNINGS=true
>
>  "git send-email" optimization.

I think this is ready for "next" at this point.

> * ab/trace2-squelch-gcc-warning (2021-05-21) 1 commit
>   (merged to 'next' on 2021-05-28 at 6c7a015f99)
>  + trace2: refactor to avoid gcc warning under -O3
>
>  Workaround compiler warnings.
>
>  Will cook in 'next'.

Thanks.

> * ab/test-lib-updates (2021-05-11) 11 commits
>   (merged to 'next' on 2021-05-31 at 73bf1ecb31)
>  + test-lib: split up and deprecate test_create_repo()
>  + test-lib: do not show advice about init.defaultBranch under --verbose
>  + test-lib: reformat argument list in test_create_repo()
>  + submodule tests: use symbolic-ref --short to discover branch name
>  + test-lib functions: add --printf option to test_commit
>  + describe tests: convert setup to use test_commit
>  + test-lib functions: add an --annotated option to "test_commit"
>  + test-lib-functions: document test_commit --no-tag
>  + test-lib-functions: reword "test_commit --append" docs
>  + test-lib tests: remove dead GIT_TEST_FRAMEWORK_SELFTEST variable
>  + test-lib: bring $remove_trash out of retirement
>  (this branch is used by ab/describe-tests-fix and ab/pickaxe-pcre2.)
>
>  Test clean-up.

Per the note on the last What's Cooking I think this is ready[2], and
it's been in next for a ~week already.

So just a note to update the status of this, and since
ab/describe-tests-fix & ab/pickaxe-pcre2 would then be un-blocked by
this we can hopefully get them in early in this cycle too.

> * ab/fsck-unexpected-type (2021-05-21) 17 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: return -1, not "status" from unpack_loose_header()
>  . object-file.c: return -2 on "header too long" in unpack_loose_header()
>  . object-file.c: stop dying in parse_loose_header()
>  . object-file.c: add missing braces to loose_object_info()
>  . object-file.c: make parse_loose_header_extended() public
>  . 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.
>
>  Seems to break tests when merged to 'seen'.

I have not gotten to debugging this yet, which'll require me to find
some 32 bit machine to reproduce the issue, except I can't on the 32 bit
machines I've tried so far.

1. https://lore.kernel.org/git/[email-masked]/
2. https://lore.kernel.org/git/[email-masked]/