git push sur sshfs défaut avec « erreur lors de la fermeture fichier SHA1: descripteur de fichier incorrect »

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

  •  26-10-2019
  •  | 
  •  

Question

Nous allons monter un système de fichiers via SSH en utilisant sshfs et utilisent comme un stockage à distance pour la collaboration dépôt git.

Mac OS X 10.6.6 à un serveur RHEL 3 Version 2.2 SSHFS (MacFUSE SSHFS 2.2.0)
MacFUSE version de la bibliothèque: FUSE 2.7.3 / 2.0.3 MacFUSE

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

Voici comment nous nous créons de notre repo, travailler avec eux sur place, puis en essayant de repousser au serveur:

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

Ce qui est étrange est, il semble que de petites modifications à la poussée des prises en pension avec succès, mais commits importants avec de multiples nouveaux fichiers ou de grandes quantités de modifications ne fonctionnent pas.

Nous sommes sshfs et les débutants MacFUSE, mais les utilisateurs git intermédiaire.

Toutes les idées ou suggestions?

Était-ce utile?

La solution 2

On n'a jamais trouvé une solution aux problèmes que nous avons connu lors du montage du serveur sur sshfs. Mais un collègue à moi a fait comprendre comment installer les binaires git localement dans un seul compte sur le serveur RHEL 3 et nous pouvons maintenant communiquer avec nos dépôts distants via SSH, qui fonctionne maintenant parfaitement.

Voici les commandes d'installation qu'il a utilisé, qui doit être utilisé lorsque vous êtes connecté à votre serveur via 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

Ensuite, ajoutez votre répertoire bin de compte à distance au PATH du compte du serveur en éditant ~/.bashrc sur le serveur et l'ajout de cette ligne à la fin:

export PATH=$PATH:$HOME/bin

A partir de votre machine de développement, vous pouvez alors définir un emplacement distant dépôt et pousser à lui.

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

Autres conseils

Git peut pousser sur SSH en mode natif, sans avoir à monter le serveur au système de fichiers local. Je recommande d'essayer ceci:

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

Je cela fonctionne, il suffit de changer votre origine à distance gituser@gitserver.ourdomain.com:/path/to/directory au lieu de ~/git

Si elle ne fonctionne pas, soit il au moins nous dire que MacFuse ou sshfs ne sont pas à blâmer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top