Après la mise à niveau vers OSX 10.10 Yosemite Beta, exécutez git pull
renvoie l'erreur suivante:
/ Bibliothèque/Développeur/CommandLineTools/usr/libexec/git-core/git-pull: ligne 11: git-sh-setup: aucun fichier ni répertoire de ce type
J'ai vérifié le répertoire référencé git-core et le git-sh-setup.sh est là.
Les autres commandes git fonctionnent exactement comme prévu
Je pense que la solution la plus propre pour le moment consiste à changer la commande initiale de votre session iTerm en
/usr/bin/login -f <your user name>
Cela corrige le problème pour moi.
Un autre point de données pour l’analyse du problème: il semble qu’en 10.10, il existe plusieurs copies de la variable d’environnement PATH et que les sous-coques semblent préférer la deuxième copie.
Vous pouvez reproduire cela en lançant n’importe quelle application cacao sur la console, telle que lancée par iTerm. Vous recevrez un avertissement qui ressemble à ceci:
2014-06-04 19:23:09.859 gitx[14676:362580] *** -[NSProcessInfo environment]: Warning: duplicate definition for key 'PATH' found in environment -- subsequent definitions are ignored. The first definition was '(the path I have configured in my Shell)', the ignored definition is '/usr/bin:/bin:/usr/sbin:/sbin'.
Je pense que cela pose un problème dans 10.10 et non pas dans iTerm, mais quelque chose que iTerm est en train de causer se manifeste (cela ne se produit pas dans Terminal.app)
Mise à jour: Ceci est causé par iTerm qui fait des choses "intéressantes" pour l'environnement. Mise à jour de la version officielle d'iTerm 2.0 pour résoudre ce problème.
Je crois que c'est un bug dans iTerm lors de l'utilisation de zsh. Ils n'invoquent délibérément pas/usr/bin/login et n'utilisent pas execle pour effacer les variables d'environnement comme elles devraient l'être.
Le téléchargement de la dernière version de iTerm2 a résolu ce problème pour moi!
Une autre solution, modifiez votre iTerm2
cd /Applications/iTerm.app/Contents/MacOS
mv iTerm iTerm-bin
cat > iTerm <<EOF
#!/bin/sh
unset PATH
\${0}-bin
EOF
chmod +x iTerm
Terminé.
Profitez de votre iTerm2 avec Yosemite!
En tant que solution temporaire, j'ai modifié les lignes git-pull 11, 12 et 336 comme suit:
. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-setup
. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-i18n
eval="/usr/local/Cellar/git/2.0.0/libexec/git-core/git-merge $diffstat $no_commit $verify_signatures $edit $squash $no_ff $ff_only"
Cela corrige git-pull pour le moment, mais je suis sûr qu'il existe une meilleure solution.
Voici une solution temporaire (en supposant que Homebrew et Git 2.0.0) si vous avez besoin que Git fonctionne avant la publication d’un correctif officiel. J'ai configuré deux variables Shell:
export GIT_PATH="/usr/local/Cellar/git/2.0.0/bin"
export GIT_CORE_PATH="/usr/local/Cellar/git/2.0.0/libexec/git-core"
... puis a remplacé les occurrences de git
par des liens absolus appropriés. Vous pouvez utiliser les Gists suivants pour faire la même chose:
C'est un bidouillage à coup sûr, mais cela vous permettra de continuer.
EDIT: Assurez-vous de regarder la réponse de @pilif avant de faire ceci ...
Editez votre fichier git-pull et ajoutez cette ligne dessus (juste après le bloc de commentaires)
PATH="$(dirname $0):$PATH"
Ou simplement copier-coller ceci dans votre terminal:
ed -s $(which git-pull) <<< $'6i\nPATH="$(dirname $0):$PATH"\n.\nwq'
Update: Comme présumé par pilif , depuis la dernière mise à jour iTerm2 (1.0.0.20140629), git-pull
fonctionne correctement sans cette PATH
substitution.
Il y a une mise à jour de git-rebase.sh
La solution de contournement d'Ubiquill s'applique également à git rebase (et probablement à toute autre fonction ne fonctionnant pas). Dans ce cas, il faut remplacer les lignes 47 et 48 par ce qui suit *:
. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-setup
. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-i18n
* Ce chemin suppose que vous avez installé git avec homebrew et qu'il réside à l'intérieur de /usr/local/Cellar/git/2.0.0/.
UPDATE: ne fonctionne toujours pas avec la version mentionnée ci-dessous, c'est mon erreur. Git Push fonctionne. Git Pull ne fonctionne pas.
Il me semble que le problème a été résolu par Apple avec Mac OS X Yosemite 10.10 (14A329r). Je suis sur le canal général Beta Yosemite (non développeur) Git Push /tirez fonctionne comme prévu à nouveau sans aucune modification.