“git pull” broken

后端 未结 7 1515
情书的邮戳
情书的邮戳 2020-12-01 18:47

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 yo         


        
相关标签:
7条回答
  • 2020-12-01 19:05

    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).

    0 讨论(0)
  • 2020-12-01 19:05

    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.

    0 讨论(0)
  • 2020-12-01 19:13

    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.

    0 讨论(0)
  • 2020-12-01 19:18

    Interesting. try echo $GIT_EXEC_PATH, which git. It's unlikely to be related to the snow beast…

    0 讨论(0)
  • 2020-12-01 19:18

    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.

    0 讨论(0)
  • 2020-12-01 19:21

    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
    
    0 讨论(0)
提交回复
热议问题