2009-09-23 19 views
13

Recentemente ho aggiornato il mio MacBook Pro a Snow Leopard e "git pull" ritorna:"git pull" rotto

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 

Ho provato a reinstallare via MacPorts, ma senza alcun risultato. Poi ho visto questo

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

che mi ha sorpreso come quella directory non esiste, né è mai esistita. Google non sta aiutando qui. Spero che tu possa :)

+0

Ho incontrato lo stesso problema, quando ho cercato di incidere git binario di pacchetto Xcode. 'Ln -s /Applications/Xcode.app/Contents/Developer/usr/bin/git ~/bin/git' – shakthi

risposta

23

Guardando nella fonte di git, c'è un commento 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. 
*/ 

Se si chiama git --exec-path, si finisce per chiamare const char *git_exec_path(void) in exec_cmd.c. Che assomiglia a questo:

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

Ora, _argv_exec_path_ è impostato quando dici --exec-path=/some/where così possono essere scontati. Hai affermato che la variabile di ambiente non è impostata. GIT_EXEC_PATH viene definito durante la compilazione nello Makefile. Andando indietro, sembra essere definito come solo libexec/git-core. Quindi, dobbiamo guardare a ciò che fa invece system_path().

Non sono sicuro se RUNTIME_PREFIX è definito per voi. Ma mentre annoto nel Makefile, ho notato che il valore prefix predefinito è $(HOME). Sospetto che questa possa essere la causa dei tuoi problemi.

La risposta più semplice è quello di mettere questo in ~/.bashrc:

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

Se volete saperne di più su ciò che sta succedendo, probabilmente dovrete ricompilare git utilizzando port -d upgrade -f git-core (o simili) e guardare da vicino nel log di compilazione per vedere dove viene impostato il prefisso. Per inciso, port cat git-core mostra un uso intenso di ${prefix} quindi dovrebbe (si spera) essere ovvio.

+0

Eccellente! Questo l'ha risolto. – Ovid

+3

Solo un chiarimento per chiunque lo trovi: il percorso per i comandi di git è infatti impostato in fase di compilazione (sebbene possa essere modificato da GIT_EXEC_PATH, e quindi da --exec-path). Questo è molto probabilmente impostato in fase di compilazione da 'make prefix =/path/to/git ...'. Speriamo che qualsiasi versione pre-costruita faccia correttamente questo! – Cascabel

+1

Se solo sapessi che volevi una soluzione alternativa e non una soluzione! ;-) –

2

Interessante. prova echo $GIT_EXEC_PATH, which git. È improbabile che sia correlato alla bestia della neve ...

+0

$ GIT_EXEC_PATH non è impostato e "che git" restituisce/opt/local/bin/git, come I' Mi aspetto – Ovid

+0

Questo è strano. Non ho avuto problemi con 'git' e neve, ma non uso quello dei macport '. Una volta che torno a casa proverò le macports' 'git' e vedere se si comporta male ... –

+0

Beh, MacPorts' git restituisce'/opt/local/libexec/git-core' exec-percorso per me ... –

1

Hai provato i passaggi su ports Migration wiki page? È stato doloroso, ma dopo aver eseguito il processo di disinstallazione e di reinstallazione --force, non ho riscontrato alcun problema con nessuna delle mie porte, che include git (con praticamente tutte le varianti attivate).

+0

Sì, l'ho fatto un paio di giorni fa, dopo aver scoperto che molte delle mie porte non funzionavano. Come hai detto, è stato doloroso. Inoltre non ha risolto il mio problema git :) – Ovid

0

Git si compila così facilmente che non c'è davvero alcun motivo per preoccuparsi di qualsiasi follia dei Macports. Sbarazzati di tutto ciò che c'è in/opt e prova a costruirlo nel modo normale. Le probabilità sono buone, funzionerà.

0

Un'altra opzione è quella di scaricare dalla pagina disponibile su GitHub:

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

Hanno un programma di installazione autonomo (anche se la seconda opzione c'è MacPorts ...)

hanno usato per avere un tutorial tutto in una sola pagina che sembra essere scheggiato ora. Che peccato.

2

Sul mio sistema, libexec/git-core è in /usr/local e non /opt/local. La directory /usr/local/libexec aveva i permessi di root accessibili solo per me, e questo ha risolto il problema:

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

Quello ha funzionato anche per me. Ho installato (configura, crea, sudo make install) su Mac OS X e apparentemente ha messo lì le autorizzazioni sbagliate. – danwood

0

Per me, questo è stato un problema solo specificatamente rilevanti per la mia birra installare. Su OSX 10.9.2, ho avuto birra installato sotto radice, quindi questo funziona per me:

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