14 Stimmen

"git pull" kaputt

Ich habe kürzlich mein MacBook Pro auf Snow Leopard aktualisiert und "git pull" kehrt zurück:

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

Ich habe versucht, das Programm über macports neu zu installieren, aber ohne Erfolg. Dann sah ich dies

rakudo $ git --exec-path
/Users/ovid/libexec/git-core

Das hat mich überrascht, denn dieses Verzeichnis gibt es nicht und hat es auch nie gegeben. Google ist hier nicht hilfreich. Hoffentlich können Sie das :)

24voto

Dominic Mitchell Punkte 11251

Im Quelltext von git findet sich ein Kommentar 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.
 */

Wenn Sie anrufen git --exec-path rufen Sie am Ende const char *git_exec_path(void) in exec_cmd.c . Das sieht so aus:

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

Jetzt wird _argv_exec_path_ gesetzt, wenn Sie sagen --exec-path=/some/where kann also abgezogen werden. Sie haben angegeben, dass die Umgebungsvariable nicht gesetzt ist. GIT_EXEC_PATH wird während der Kompilierung in der Datei Makefile . Rückwärts betrachtet, scheint es nur definiert zu sein als libexec/git-core . Wir müssen uns also ansehen, was system_pfad() stattdessen tut.

Ich bin nicht sicher, ob RUNTIME_PREFIX ist für Sie definiert. Aber beim Stöbern im Makefile ist mir aufgefallen, dass Präfix wird standardmäßig auf $(HOME) . Ich vermute, dass dies die Ursache für Ihre Probleme sein könnte.

Die einfache Antwort ist, dies in ~/.bashrc :

export GIT_EXEC_PATH=/opt/local/libexec/git-core

Wenn Sie mehr darüber herausfinden wollen, was vor sich geht, müssen Sie wahrscheinlich git neu kompilieren, indem Sie port -d upgrade -f git-core (oder ähnlich) und sehen Sie sich das Erstellungsprotokoll genau an, um zu sehen, wo das Präfix gesetzt wird. Im Übrigen, port cat git-core zeigt eine starke Nutzung von ${prefix} Es sollte also (hoffentlich) offensichtlich sein.

2voto

Interessant. echo $GIT_EXEC_PATH , which git . Es ist unwahrscheinlich, dass es mit der Schneebestie zu tun hat

2voto

Bo Morgan Punkte 21

Auf meinem System, libexec/git-core ist in /usr/local und nicht /opt/local . Die /usr/local/libexec Verzeichnis hatte bei mir nur Root-Zugriffsrechte, und damit war das Problem behoben:

sudo chmod a+rx /usr/local/libexec

1voto

Hank Gay Punkte 67607

Haben Sie die Schritte auf der Seite Häfen Migration Wiki-Seite ? Es war schmerzhaft, aber nachdem ich die --force nach der Deinstallation und Neuinstallation hatte ich keine Probleme mit meinen Ports, einschließlich git (wobei so ziemlich jede Variante eingeschaltet ist).

0voto

Azeem.Butt Punkte 6025

Git lässt sich so leicht kompilieren, dass es wirklich keinen Grund gibt, sich mit den Verrücktheiten von macports herumzuschlagen. Entfernen Sie alles, was in /opt steht und versuchen Sie, es auf normale Weise zu kompilieren. Die Chancen stehen gut, dass es funktionieren wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X