2009-09-23 16 views
13

ich mein MacBook Pro zu Snow Leopard und "git pull" kehrt kürzlich aktualisiert:"Git-Pull" gebrochen

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 über Macports versucht Neuinstallation, aber ohne Erfolg. Dann sah ich dies

Das überraschte mich, da dieses Verzeichnis nicht existiert, noch hat es jemals existiert. Google hilft hier nicht. Hoffentlich kannst du :)

+0

Ich lief in gleiches Problem, wenn ich versuchte, git binary aus Xcode Paket zu hacken. 'ln -s /Applications/Xcode.app/Contents/Developer/usr/bin/git ~/bin/git' – shakthi

Antwort

23

Blick in die Quelle git, gibt es einen 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 git --exec-path nennen, erhalten Sie const char *git_exec_path(void) in exec_cmd.c aufrufen. Das sieht wie folgt 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); 

Nun _argv_exec_path_ gesetzt, wenn Sie sagen, --exec-path=/some/where so diskontiert werden kann. Sie haben angegeben, dass die Umgebungsvariable nicht festgelegt ist. GIT_EXEC_PATH wird beim Kompilieren in Makefile definiert. Wenn man rückwärts geht, scheint es nur libexec/git-core zu sein. Also müssen wir schauen, was system_path() stattdessen tut.

Ich bin mir nicht sicher, ob RUNTIME_PREFIX für Sie definiert ist. Aber während ich im Makefile tippte, bemerkte ich, dass prefix standardmäßig $(HOME) ist. Ich vermute, dass dies die Ursache Ihrer Probleme sein könnte.

Die einfache Antwort ist dies in ~/.bashrc zu setzen:

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

Wenn Sie möchten, um mehr darüber zu erfahren, was los ist, werden Sie wahrscheinlich git neu kompilieren port -d upgrade -f git-core (oder ähnlich) und genau hinsehen im Build-Protokoll, um zu sehen, wo das Präfix gesetzt wird. Übrigens, port cat git-core zeigt starke Verwendung von ${prefix} so sollte es (hoffentlich) offensichtlich sein.

+0

Ausgezeichnet! Das hat es behoben. – Ovid

+3

Nur eine Klarstellung für jeden anderen, der dies findet: Der Pfad zu git's Befehlen wird tatsächlich zur Kompilierzeit gesetzt (obwohl er durch GIT_EXEC_PATH und dann durch --exec-path geändert werden kann). Dies wird höchstwahrscheinlich zur Kompilierzeit durch 'make prefix =/path/to/git ...' gesetzt. Hoffentlich werden alle vorgefertigten Versionen dies richtig machen! – Cascabel

+1

Wenn ich nur wüsste, dass du einen Workaround willst und keine Lösung! ;-) –

2

Interessant. versuchen Sie echo $GIT_EXEC_PATH, which git. Es ist unwahrscheinlich, dass sie mit dem Schneebesen zusammenhängen ...

+0

$ GIT_EXEC_PATH ist nicht gesetzt und" what git "gibt/opt/local/bin/git zurück, da ich ' Ich erwarte. – Ovid

+0

Das ist seltsam. Ich hatte keine Probleme mit 'git' und Schnee, aber ich benutze nicht die von Macports. Sobald ich nach Hause komme, werde ich versuchen, die "git" von Macports zu testen und zu sehen, ob es sich schlecht benimmt ... –

+0

Gut, Macports git gibt '/ opt/local/libexec/git-core' zurück exec-path für mich ... –

1

Haben Sie die Schritte auf der ports Migration wiki page versucht? Es war schmerzhaft, aber nachdem ich den --force Deinstallations- und Neuinstallationsprozess ausgeführt habe, hatte ich keine Probleme mit irgendwelchen meiner Ports, einschließlich git (mit ziemlich jeder aktivierten Variante).

+0

Ja, habe ich vor ein paar Tagen, nachdem ich so viele meiner Ports nicht funktionierte gefunden. Es war, wie Sie sagten, schmerzhaft. Es löste auch mein git Problem nicht :) – Ovid

0

Git kompiliert so leicht es gibt wirklich keinen Grund, sich mit irgendwas von Macports Verrücktheit zu beschäftigen. Befreien Sie sich von allem, was in/opt ist und versuchen Sie es auf die normale Art und Weise. Die Chancen stehen gut, es wird funktionieren.

0

Eine weitere Option ist von der hilfreichen Seite auf GitHub zum Download:

http://help.github.com/mac-git-installation/

Sie haben einen eigenständigen Installer (wenn auch die zweite Option gibt MacPorts ist ...)

Sie benutzten ein sehr schönes Tutorial in einer Seite zu haben, das jetzt zersplittert zu sein scheint. Schade.

2

Auf meinem System ist libexec/git-core in /usr/local und nicht /opt/local. Das /usr/local/libexec Verzeichnis hatte nur root zugänglich Berechtigungen für mich, und dies das Problem behoben:

sudo chmod a+rx /usr/local/libexec 
+0

Das hat auch für mich funktioniert. Ich hatte auf Mac OS X installiert (configure, make, sudo make install) und dort anscheinend die falschen Berechtigungen abgelegt. – danwood

0

Für mich ist dies ein Problem war nur speziell relevant für mein Gebräu installieren. Auf OSX 10.9.2, hatte ich Gebräu unter Root installiert, so das funktioniert für mich:

sudo su 
export GIT_EXEC_PATH=/Applications/Xcode.app/Contents/Developer/usr/libexec/git-core 
brew update # or whatever you want from here