Re: [PATCH] Move all dashed form git commands to libexecdir
From: Johannes Schindelin <hidden>
Date: 2016-06-15 22:43:54
Hi, On Wed, 28 Nov 2007, Junio C Hamano wrote:
"Nguyen Thai Ngoc Duy" [off-list ref] writes:quoted
On Nov 28, 2007 8:13 AM, Junio C Hamano [off-list ref] wrote:quoted
In case somebody is thinking about 36e5e70e0f40 (Start deprecating "git-command" in favor of "git command"), that is a somewhat different issue. What Linus suggested is not installing git-foo link for built-in commands _anywhere_ on the filesystem. Not just "out of user's PATH". That is not deprecating dash form but removing the support for it. We need to give ample time for users to adjust to such a change.A little note on this one. I've been using git without builtin links for a while with my git-box port. There are still some builtin fixups needed. And because execv_git_cmd() always uses dash form, so it's impossible to use vanilla git without builtin links.Thanks for a heads up. Would people agree with a rough roadmap like this? - v1.5.4 will ship with gitexecdir=$(bindir) in Makefile. But the release notes for the version will warn users that: (1) using git-foo from the command line, and (2) using git-foo from your scripts without first prepending the return value of "git --exec-path" to the PATH is now officially deprecated (it has been deprecated for a long time since January 2006, v1.2.0~149) and upcoming v1.5.5 will ship with the default configuration that does not install git-foo form in user's PATH.
Maybe we can squeeze a step in here where only porcelains are installed in the bindir? FWIW I think that we should fix the problem with the builtins being called via their hard links. But how? As of now, libgit.a has no idea what the builtins are; this information is buried in git.c. The fundamental problem is that we cannot move handle_internal_command() into libgit.a, because it has pointers to all builtin cmd_*() functions. So maybe the best solution would be to try "git <command>" first, and then "git-<command>"? But this means another exec() call :-( Ciao, Dscho