gitは、「sha1ファイルを閉じるときにエラー:悪いファイル記述子」で失敗するSSHFSを押します
質問
SSHFSを使用してSSHにファイルシステムを取り付けており、GITリポジトリコラボレーションのリモートストレージとして使用しています。
Mac OSX 10.6.6からRHEL 3サーバーSSHFSバージョン2.2(MacFuse SSHFS 2.2.0)
MacFuseライブラリバージョン:ヒューズ2.7.3 / MacFuse 2.0.3
sshfs -o workaround=rename gituser@gitserver.ourdomain.com:/path/to/directory ~/git
リポジトリを作成し、ローカルで作業し、サーバーに押し戻そうとする方法は次のとおりです。
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/'
奇妙なことに、リポジトリの小さな編集が正常にプッシュするように見えますが、複数の新しいファイルや大量の編集で大量にコミットすることは機能しません。
私たちはSSHFSとMacFuseの初心者ですが、中級のGitユーザーです。
何かアイデアや提案はありますか?
解決 2
SSHFSにサーバーをマウントするときに経験した問題の修正は決して見つかりませんでした。しかし、私の同僚は、RHEL 3サーバーの単一のアカウント内にGitバイナリをローカルにインストールする方法を見つけました。これで、SSHを介したリモートリポジトリと通信できるようになりました。
彼が使用したインストールコマンドは次のとおりです。これは、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
次に、リモートアカウントを追加します bin
サーバーアカウントへのディレクトリ PATH
編集によって ~/.bashrc
サーバーで、この行を最後に追加します。
export PATH=$PATH:$HOME/bin
開発マシンから、リモートリポジトリの場所を定義してプッシュできます。
git add remote myremote ssh://myuser@server.domain.com/home/myuser/path/to/repo.git
git push myremote branchnamehere
他のヒント
GITは、サーバーをローカルファイルシステムにマウントすることなく、SSHをネイティブにプッシュできます。これを試すことをお勧めします:
git push gituser@gitserver.ourdomain.com:/path/to/directory master
私はこれが機能します、あなたの起源をリモートに変更するだけです gituser@gitserver.ourdomain.com:/path/to/directory
それ以外の ~/git
それがうまくいかない場合、少なくともMacFuseまたはSSHFSが責任を負わないことを教えてくれます。