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
Have you tried the steps on the ports Migration wiki page? It was painful, but after doing the --force
uninstall and reinstall process, I haven't had any issues with any of my ports, which includes git
(with pretty much every variant turned on).
Git compiles so easily there's really not any reason to bother with any of macports' craziness. Get rid of whatever's in /opt and try building it the normal way. Odds are good it will work.
Another option is to download from the helpful page on GitHub:
http://help.github.com/mac-git-installation/
They have a stand-alone installer (though the second option there is MacPorts...)
They used to have a very nice all in one page tutorial that seems to be splintered now. What a shame.
For me, this was an issue only specifically relevant to my brew install. On OSX 10.9.2, I had brew installed under root, so this works for me:
sudo su
export GIT_EXEC_PATH=/Applications/Xcode.app/Contents/Developer/usr/libexec/git-core
brew update # or whatever you want from here