If we were to propose breaking the 12-year old promise to our users that we will keep "git-foo" binaries on disk where "git --exec-path" tells them, we first need to gauge how big a population we would be hurting with such a move. So here is a miniseries towards that. The third one hooks to the codepath in git.c::cmd_main() where av[0] is of "git-foo" form and we dispatch to "foo" as a builtin command. In the original code, we will die() if "foo" is not a built-in command in this codepath, so it is exactly the place we want to catch remaining uses of "git-foo" invoking built-in commands. There are a few legitimate "git-foo" calls made even for built-ins and those exceptions are marked in the command-list mechanism, which is shared with the help subsystem. We might want to see if we can unify this exception list with what we have in the Makefile as BIN_PROGRAMS and what Dscho introduces as ALL_COMMANDS_TO_INSTALL in his series. These have large overlaps in what they mean, but they are not exactly identical. Junio C Hamano (3): transport-helper: do not run git-remote-ext etc. in dashed form cvsexportcommit: do not run git programs in dashed form git: catch an attempt to run "git-foo" command-list.txt | 11 +++++++---- git-cvsexportcommit.perl | 16 ++++++++-------- git.c | 2 ++ help.c | 34 ++++++++++++++++++++++++++++++++++ help.h | 3 +++ transport-helper.c | 3 ++- 6 files changed, 56 insertions(+), 13 deletions(-) -- 2.28.0-454-g5f859b1948