git push over sshfs失败,“关闭sha1文件时出错:错误的文件描述符”

时间:2011-01-27 17:40:31

标签: git macos rhel sshfs

我们正在使用sshfs在SSH上安装文件系统,并将其用作git存储库协作的远程存储。

Mac OSX 10.6.6到RHEL 3服务器 SSHFS 2.2版(MacFUSE SSHFS 2.2.0)
MacFUSE库版本:FUSE 2.7.3 / MacFUSE 2.0.3

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

以下是我们如何创建我们的repo,在本地使用它们,然后尝试回到服务器:

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

奇怪的是,对repo的小编辑似乎成功推送,但是对于多个新文件或大量编辑的较大提交不起作用。

我们是sshfs和MacFuse新手,但是中级git用户。

有任何想法或建议吗?

2 个答案:

答案 0 :(得分:4)

Git可以本地推送SSH而无需将服务器挂载到本地文件系统。 我建议尝试这个:

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

我这样做,只需将原点遥控器改为gituser@gitserver.ourdomain.com:/path/to/directory而不是~/git

如果它不起作用,它至少会告诉我们MacFuse或sshfs不应该受到指责。

答案 1 :(得分:0)

我们从来没有找到解决我们在通过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