Johannes Schindelin <Johannes.Schindelin@xxxxxx> writes: > So maybe this patch series would be a good first step, but if we truly > wanted to break that 12-year old promise, we might need to have another > patch on top that _does_ install the dashed commands, but into a > subdirectory of `libexec/git-core/` that is only added to the `PATH` when > an "escape hatch"-style config setting is set. Yes, I think that is a much more reasonable approach. Instead of checking another environment variable that does not do anything but bypass the "you used dashed form for builtin" check, we install non builtins in libexec/git-core and leave the exec-cmd.c::setup_path() as-is to add it to the PATH. A new location will have the buitlin binaries, say in libexec/git-core/builtins, and it is not added to the $PATH by us. The scripts that the users updated 12-years ago by adding the former to the $PATH now needs to also add the latter, too, and those users will loudly complain (which is what we want to see happen [*1*]), but doing so is an easy way to unbreak them while we reverse the course. I think the cvsexportcommit and transport-helper changes are worth salvaging even if we don't remove builtin binaries, so I'll split them and whip them a bit more into a reasonable shape to be merged to 'next'. The "break those who say 'git-cat-file'" can be left for future. Thanks. [Footnote] *1* In the ancient thread, I was sick of hearing complaints that beat the dead horse, but in this particular case, we do want to hear from them---that is the primary reason why we are doing it. https://public-inbox.org/git/7vr68b8q9p.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxx/