I recently upgraded my MacBook Pro to Snow Leopard and "git pull" returns:
rakudo $ git pull
git: 'pull' is not a git-command. See 'git --help'
Did you mean this?
shell
rakudo $ git-pull
-bash: git-pull: command not found
I've tried reinstalling via macports, but to no avail. Then I saw this
rakudo $ git --exec-path
/Users/ovid/libexec/git-core
That surprised me as that directory does not exist, nor has it ever existed. Google is not helping here. Hopefully you can :)
Looking in the source of git, there's a comment in git.c:
/*
* We use PATH to find git commands, but we prepend some higher
* precedence paths: the "--exec-path" option, the GIT_EXEC_PATH
* environment, and the $(gitexecdir) from the Makefile at build
* time.
*/
If you call git --exec-path
, you end up calling const char *git_exec_path(void)
in exec_cmd.c. That looks like this:
const char *env;
if (argv_exec_path)
return argv_exec_path;
env = getenv(EXEC_PATH_ENVIRONMENT);
if (env && *env) {
return env;
}
return system_path(GIT_EXEC_PATH);
Now, _argv_exec_path_ is set when you say --exec-path=/some/where
so can be discounted. You've stated that the environment variable isn't set. GIT_EXEC_PATH
is defined during compilation in the Makefile. Going backwards, it seems to be defined as just libexec/git-core
. So, we need to look at what system_path() does instead.
I'm not sure whether RUNTIME_PREFIX
is defined for you. But while nosing in the Makefile, I did notice that prefix defaults to $(HOME)
. I suspect that this may be the cause of your problems.
The simple answer is to put this in ~/.bashrc
:
export GIT_EXEC_PATH=/opt/local/libexec/git-core
If you want to find out more about what's going on, you'll probably have to recompile git using port -d upgrade -f git-core
(or similar) and look closely at the build log to see where prefix is being set. Incidentally, port cat git-core
shows heavy usage of ${prefix}
so it should (hopefully) be obvious.
Interesting. try echo $GIT_EXEC_PATH
, which git
. It's unlikely to be related to the snow beast…
On my system, libexec/git-core
is in /usr/local
and not /opt/local
. The /usr/local/libexec
directory had only root accessible permissions for me, and this fixed the problem:
sudo chmod a+rx /usr/local/libexec
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With