web-dev-qa-db-fra.com

OSX 10.10 yosemite beta sur git pull: git-sh-setup: Aucun fichier ni répertoire de ce type

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

90
meghaphone

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.

100
pilif

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!

20
Marthyn Olthof

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!

16
Feng

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.

13
Ubiquill

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:

  • Remplacez /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-setup / par git-sh-setup
  • Remplacez /usr/local/Cellar/git/2.0.0/libexec/git-core/git-stash / par git-stash
  • Remplacez /usr/local/Cellar/git/2.0.0/libexec/git-core/git-pull / par git-pull

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

3
jbnunn

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.

1
pyrou

Il y a une mise à jour de git-rebase.sh

https://github.com/git/git/pull/110/files

1
basbebe

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

1
ferchak

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.

0
Frank Lämmer