git pull to sshfs сбой с «ошибкой при закрытии файла SHA1: дескриптор плохого файла»

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

  •  26-10-2019
  •  | 
  •  

Вопрос

Мы устанавливаем файловую систему над SSH, используя SSHF и используем ее в качестве удаленного хранилища для сотрудничества репозитория GIT.

Mac OSX 10.6.6 к SSHFS SSHFS RHEL 3 (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

Вот как мы создаем наши репо, работаем с ними локально, а затем пытаемся вернуться на сервер:

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

Что странно, так это то, что небольшие изменения в репо успешно, но что более крупные коммиты с несколькими новыми файлами или большими объемами изменений не работают.

Мы новички SSHF и Macfuse, но пользователи промежуточных GIT.

Есть идеи или предложения?

Это было полезно?

Решение 2

Мы никогда не находили исправления проблем, которые мы столкнулись при установке сервера по SSHF. Но мой коллега действительно выяснил, как установить двоичные файлы Git локально в одну учетную запись на сервере RHEL 3, и теперь мы можем общаться с нашими удаленными репозиториями над 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 NAGIVE без необходимости установить сервер в локальную файловую систему. Я бы порекомендовал попробовать это:

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

Я работает, просто измените свое происхождение удаленным на gituser@gitserver.ourdomain.com:/path/to/directory вместо ~/git

Если это не сработает, это, по крайней мере, скажет нам, что Macfuse или SSHFS не виноваты.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top