git - ozh - zsh god
OSX 10.10 yosemite beta en git pull: git-sh-setup: ningĂșn archivo o directorio (10)
ACTUALIZACIÓN: todavía no funciona con el lanzamiento mencionado a continuación, mi error. Git push funciona. Git pull no.
Me parece que el problema ha sido resuelto por Apple con Mac OS X Yosemite 10.10 ( 14A329r ). Estoy en el canal general de Beta Yosemite (no desarrollador). Git push / Halar funciona como se esperaba de nuevo sin ninguna modificación.
Después de actualizar a OSX 10.10 Yosemite Beta, ejecutar git pull
devuelve el siguiente error:
/ Library / Developer / CommandLineTools / usr / libexec / git-core / git-pull: línea 11: git-sh-setup: no existe ningún archivo o directorio
Revisé el directorio git-core al que se hace referencia y git-sh-setup.sh está allí.
Otros comandos de git funcionan exactamente como se esperaba
Aquí hay una solución temporal (suponiendo Homebrew y Git 2.0.0) si necesita que Git funcione antes de que salga una solución oficial. Configuro dos variables de 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"
... y luego reemplazó instancias de git
con enlaces absolutos apropiados. Puedes usar los siguientes Gists para hacer lo mismo:
- Reemplace /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-setup/ con git-sh-setup
- Reemplace /usr/local/Cellar/git/2.0.0/libexec/git-core/git-stash/ con git-stash
- Reemplace /usr/local/Cellar/git/2.0.0/libexec/git-core/git-pull/ con git-pull
Este es un truco seguro, pero te pondrá en marcha.
EDITAR: Asegúrate de mirar la respuesta de @pilif antes de hacer esto ...
Como una solución temporal, modifiqué las líneas de git-pull 11, 12 y 336 para que sean:
. /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"
Esto corrige git-pull por ahora, pero estoy seguro de que hay una mejor solución.
Creo que esto es un error en iTerm cuando se usa zsh. Deliberadamente no invocan / usr / bin / login, y no usan execle para borrar las variables de entorno como deberían ser.
Creo que la solución más limpia para esto por ahora es cambiar el comando inicial en su sesión de iTerm para que sea
/usr/bin/login -f <your user name>
Esto soluciona el problema para mí.
Otro punto de datos para analizar el problema: parece que en 10.10, existen múltiples copias de la variable de entorno PATH y las subcapas parecen preferir la segunda copia.
Puede reproducir esto iniciando cualquier aplicación de cacao en la consola lanzada por iTerm. Recibirá una advertencia que se ve así:
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''.
Creo que esto es un problema en 10.10 y no en iTerm, pero algo que iTerm está haciendo está causando que se manifieste (esto no ocurre en Terminal.app)
Actualización : Esto es causado por iTerm haciendo cosas "interesantes" para el medio ambiente. Actualice el lanzamiento oficial de iTerm 2.0 para que este problema desaparezca.
Descargar la versión más reciente de iTerm2 solucionó esto
Edite su archivo git-pull y agregue esta línea encima (justo después del bloque de comentarios)
PATH="$(dirname $0):$PATH"
O simplemente copia y pega esto en tu terminal:
ed -s $(which git-pull) <<< $''6i/nPATH="$(dirname $0):$PATH"/n./nwq''
Actualización: pilif por pilif , desde la última actualización de iTerm2 (1.0.0.20140629), git-pull
funciona correctamente sin esta anulación de PATH
.
Hay una actualización de git-rebase.sh
La solución temporal de Ubiquill se aplica a git rebase (y presumiblemente a otras funciones que no funcionen) también. En ese caso, se requiere reemplazar las líneas 47 y 48 con el siguiente *:
. /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
* Esta ruta asume que tienes instalado git con homebrew, y vive dentro de /usr/local/Cellar/git/2.0.0/.
Otra solución, modifique su iTerm2
cd /Applications/iTerm.app/Contents/MacOS
mv iTerm iTerm-bin
cat > iTerm <<EOF
#!/bin/sh
unset PATH
/${0}-bin
EOF
chmod +x iTerm
Hecho.
¡Disfruta de tu iTerm2 con Yosemite!