Git drückt über SSHFS, der mit "Fehler beim Schließen der SHA1 -Datei: schlechter Dateideskriptor" fehlschlägt.

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

  •  26-10-2019
  •  | 
  •  

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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top