Git drückt über SSHFS, der mit "Fehler beim Schließen der SHA1 -Datei: schlechter Dateideskriptor" fehlschlägt.
Frage
Mit SSHFS steigen wir über SSH ein Dateisystem über SSH und verwenden es als Remotespeicher für die Zusammenarbeit mit Git -Repository.
Mac OSX 10.6.6 zu einem RHEL 3 Server SSHFS Version 2.2 (MacFuse SSHFS 2.2.0)
MacFuse Library Version: Sicherung 2.7.3 / MacFuse 2.0.3
sshfs -o workaround=rename gituser@gitserver.ourdomain.com:/path/to/directory ~/git
So erstellen wir unsere Repos, arbeiten vor Ort mit ihnen und versuchen dann, zum Server zurückzukehren:
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/'
Was seltsam ist, ist, dass kleine Änderungen an den Repo erfolgreich drücken, aber dass größere Commits mit mehreren neuen Dateien oder großen Mengen an Änderungen nicht funktionieren.
Wir sind SSHFS und MacFuse -Neulinge, aber intermediäre Git -Benutzer.
Irgendwelche Ideen oder Vorschläge?
Lösung 2
Wir haben nie eine Lösung für die Probleme gefunden, die wir beim Montieren des Servers gegenüber SSHFs erlebt haben. Ein Kollege von mir hat jedoch herausgefunden, wie die Git-Binärdateien lokal innerhalb eines einzelnen Kontos auf dem RHEL 3-Server installiert werden können, und wir können jetzt mit unseren Remote-Repositories über SSH kommunizieren, was jetzt fehlerfrei funktioniert.
Hier sind die von ihm verwendeten Installationsbefehle, die verwendet werden sollten, wenn sie über SSH an Ihrem Server angemeldet sind:
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
Fügen Sie als nächstes Ihre Remote -Konto hinzu bin
Verzeichnis auf das Serverkonto des Serverkontos PATH
durch Bearbeitung ~/.bashrc
Auf dem Server und Hinzufügen dieser Zeile zum Ende:
export PATH=$PATH:$HOME/bin
Aus Ihrer Entwicklungsmaschine können Sie dann einen Remote -Repository -Standort definieren und darauf drängen.
git add remote myremote ssh://myuser@server.domain.com/home/myuser/path/to/repo.git
git push myremote branchnamehere
Andere Tipps
Git kann SSH nativ drücken, ohne den Server an das lokale Dateisystem zu montieren. Ich würde empfehlen, dies zu versuchen:
git push gituser@gitserver.ourdomain.com:/path/to/directory master
I Das funktioniert, ändern Sie einfach Ihre Herkunftsfernbedienung auf gituser@gitserver.ourdomain.com:/path/to/directory
Anstatt von ~/git
Wenn es auch nicht funktioniert, wird es uns zumindest sagen, dass MacFuse oder SSHFS nicht schuld sind.