John Keeping wrote:
Calling across from one builtin/*.c file to another is just as wrong as
calling into a builtin/*.c file from a top-level file but the build
system happens not to enforce the former.
So libgit.a is a collection of everything that is shared between
builtins? Does that correspond to reality?
$ ls *.h | sed 's/.h$/.c/' | xargs file
An example violation: builtin/log.c uses functions defined in
builtin/shortlog.c.
What is the point of all this separation, if no external scripts are
ever going to use libgit.a?