Subject: Submodules UX overhaul update (was: What's cooking in git.git (Oct 2021, #04; Thu, 14))

From: Emily Shaffer <[email-masked]>
Date: Fri, 15 Oct 2021 11:56:33 -0700

On Thu, Oct 14, 2021 at 05:28:04PM -0700, Junio C Hamano wrote:
> [Graduated to 'master']
> 
> * ab/config-based-hooks-1 (2021-09-27) 8 commits
>   (merged to 'next' on 2021-10-06 at d05325ed35)
>  + 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: don't perform "mv $@+ $@" dance for $(GENERATED_H)
>  + Makefile: stop hardcoding {command,config}-list.h
>  + Makefile: mark "check" target as .PHONY
>  (this branch is used by ab/config-based-hooks-2.)
> 
>  Mostly preliminary clean-up in the hook API.

Glad to see it go in.

> --------------------------------------------------
> [New Topics]
> 

Ævar has sent the next set of hook API patches to list - please take a
look. I sent a review today, but I am probably too familiar with those
patches to spot important details, by now.

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

Jonathan Tan sent an RFC series adding a new conditional config include
based on configured remote URL, which we hope will A) make it easier for
us to pilot test the submodule workflow, and B) make it easier for
engineers at MegaCorp (or anybody shipping a package via a package
manager) to provide configs (and later hooks) without relying on the
controversial remote-suggested-hooks topic proposed earlier.

https://lore.kernel.org/git/cover.1634077795.git.jonathantanmy%40google.com

> --------------------------------------------------
> [Stalled]
> 
> * ar/submodule-update (2021-10-13) 9 commits
>  . submodule--helper: rename helper functions
>  . submodule--helper: remove unused helpers
>  . submodule: move core cmd_update() logic to C
>  . submodule--helper: run update using child process struct
>  . submodule--helper: allow setting superprefix for init_submodule()
>  . submodule--helper: refactor get_submodule_displaypath()
>  . submodule--helper: rename helpers for update-clone
>  . submodule--helper: get remote names from any repository
>  . submodule--helper: split up ensure_core_worktree()
> 
>  Rewrite of "git submodule update" in C.
> 
>  Kicked out of 'seen' to make room for es/superproject-aware-submodules
>  which is among the topics this topic stomps on.

The reroll of es/superproject-aware-submodules v4 went out yesterday:

https://lore.kernel.org/git/20211014203416.2802639-1-emilyshaffer%40google.com

> --------------------------------------------------
> [Cooking]
> 
> * es/superproject-aware-submodules (2021-10-14) 4 commits
>  - submodule: record superproject gitdir during 'update'
>  - submodule: record superproject gitdir during absorbgitdirs
>  - introduce submodule.superprojectGitDir record
>  - t7400-submodule-basic: modernize inspect() helper
> 
>  A configuration variable in a submodule points at the location of
>  the superproject it is bound to (RFC).
> 
>  Brought back to 'seen' to see if it still plays well with the rest
>  of 'seen', without the conflicting ar/submodule-update topic.

See above; a reroll happened.

> * jt/no-abuse-alternate-odb-for-submodules (2021-10-08) 9 commits
>   (merged to 'next' on 2021-10-14 at ae49a2ceda)
>  + submodule: trace adding submodule ODB as alternate
>  + submodule: pass repo to check_has_commit()
>  + object-file: only register submodule ODB if needed
>  + merge-{ort,recursive}: remove add_submodule_odb()
>  + refs: peeling non-the_repository iterators is BUG
>  + refs: teach arbitrary repo support to iterators
>  + refs: plumb repo into ref stores
>  + Merge branch 'jk/ref-paranoia' into jt/no-abuse-alternate-odb-for-submodules
>  + Merge branch 'jt/add-submodule-odb-clean-up' into jt/no-abuse-alternate-odb-for-submodules
> 
>  Follow through the work to use the repo interface to access
>  submodule objects in-process, instead of abusing the alternate
>  object database interface.
> 
>  Will merge to 'master'.

\o/

Besides what was in the What's Cooking mail, we have a couple more
series on our minds:

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

 Introducing a new value for core.autosetupmerge, "inherit". This eases
 our ability to push to the right place in submodules when running 'git
 push' recursively from the superproject.

 However, this topic is not ready for review - Josh is planning a
 re-roll later in the week.

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

 Pre-work for 'git branch --recurse-submodules' support. This one is
 mostly plumbing through `struct repo` and replacing a few instances of
 `the_repository`. Glen is planning a reroll shortly.

 - Emily