Git Puse sobre SSHFS falla con "Error al cerrar el archivo SHA1: descriptor de archivo malo"

StackOverflow https://stackoverflow.com/questions/4819834

  •  26-10-2019
  •  | 
  •  

Pregunta

Estamos montando un sistema de archivos a través de SSH usando SSHFS y lo estamos utilizando como almacenamiento remoto para la colaboración de repositorio de Git.

Mac OSX 10.6.6 a un servidor RHEL 3 SSHFS versión 2.2 (MacFuse SSHFS 2.2.0)
Versión de la biblioteca de MacFuse: Fusible 2.7.3 / MacFuse 2.0.3

sshfs -o workaround=rename gituser@gitserver.ourdomain.com:/path/to/directory ~/git

Así es como estamos creando nuestros repositiones, trabajando con ellos localmente y luego tratando de volver al servidor:

cd ~/git/mypersonaluser
git init --bare --share mynewrepo.git
git clone ~/git/mypersonaluser/mynewrepo.git ~/Desktop/mynewrepo
cd ~/Desktop/mynewrepo
... make a few edits to the repo ...
git push origin master

Counting objects: 7, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 20.82 KiB | 23 KiB/s, done.
Total 4 (delta 1), reused 0 (delta 0)
fatal: error when closing sha1 file: Bad file descriptor
error: unpack failed: unpack-objects abnormal exit
To /Users/joebob/git/mypersonaluser/mynewrepo.git/
 ! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to '/Users/joebob/git/mypersonaluser/mynewrepo.git/'

Lo extraño es que parece que las ediciones pequeñas para el repositorio empujan con éxito, pero que los compromisos más grandes con múltiples archivos nuevos o grandes cantidades de ediciones no funcionan.

Somos SSHFS y MacFuse Newbies, pero usuarios intermedios de GIT.

¿Alguna idea o sugerencia?

¿Fue útil?

Solución 2

Nunca encontramos una solución a los problemas que experimentamos al montar el servidor a través de SSHFS. Pero un compañero de trabajo mío descubrió cómo instalar los binarios GIT localmente dentro de una sola cuenta en el servidor RHEL 3 y ahora podemos comunicarnos con nuestros repositorios remotos a través de SSH, que ahora funciona sin problemas.

Aquí están los comandos de instalación que utilizó, que deben usarse cuando se inician sesión en su servidor a través de SSH:

curl -O http://kernel.org/pub/software/scm/git/git-1.7.4.1.tar.gz
tar xvfz git-1.7.4.1.tar.gz
cd git-1.7.4.1
./configure --prefix=$HOME CFLAGS='-I/usr/kerberos/include'
make SHELL="/bin/bash" install

A continuación, agregue su cuenta remota bin directorio a la cuenta del servidor PATH editando ~/.bashrc en el servidor y agregar esta línea al final:

export PATH=$PATH:$HOME/bin

Desde su máquina de desarrollo, puede definir una ubicación de repositorio remoto y presionarla.

git add remote myremote ssh://myuser@server.domain.com/home/myuser/path/to/repo.git
git push myremote branchnamehere

Otros consejos

Git puede pasar por alto a SSH sin tener que montar el servidor al sistema de archivos local. Recomendaría probar esto:

git push gituser@gitserver.ourdomain.com:/path/to/directory master

I esto funciona, solo cambia tu origen remoto a gituser@gitserver.ourdomain.com:/path/to/directory en vez de ~/git

Si no funciona, al menos nos dirá que MacFuse o SSHFS no son culpables.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top