Cygwin/Git/Gitosis не может отправить новый репозиторий

Недавно я установил cygwin, git и gitosis на своем компьютере с Windows Server 2003, и у меня возникли проблемы. Я внимательно следил за каждым учебником, который смог найти, и подтвердил, что таблица author_keys моей учетной записи git обновляется, когда я нажимаю репозиторий gitosis-admin. Однако я, кажется, застрял, когда дело доходит до создания нового репозитория.

Я видел много руководств, в которых рекомендуется следующий код (очевидно, имя репо меняется), испробованный как в командной строке git bash, так и в Windows:

mkdir free_monkey
cd free_monkey
git init
touch README
git add .
git commit -m "Added blank readme"
git remote add origin git@my_server:free_monkey.git
git push origin master

Когда я выполняю последнюю строку (независимо от того, что именно я отправляю), она говорит: «Удаленный конец неожиданно завис»: $ git push -v origin master:refs/heads/master Pushing to git@my_server:free_monkey.git fatal: Удаленный конец неожиданно повесил трубку

Мой файл gitosis.conf выглядит следующим образом:

[gitosis]
loglevel = DEBUG

[group gitosis-admin]
writable = gitosis-admin free_monkey.git free_monkey
members = git@my_server @all

Пожалуйста, дайте мне знать, если мне не хватает какой-либо информации, которая вам нужна, чтобы помочь мне отладить это. Спасибо!

Еще одна вещь, которая меня беспокоит:

$ ssh git@my_server git 
DEBUG:gitosis.serve.main:Got command 'git' 
ERROR:gitosis.serve.main:Unknown command denied 

Может в этом проблема? Если да, то как мне это исправить?


person Matt DeKrey    schedule 08.11.2009    source источник
comment
Добавьте это как редактирование в свой пост, чтобы сохранить форматирование.   -  person Jorge Israel Peña    schedule 08.11.2009
comment
Спасибо, Бленк, я добавил это к своему вопросу. Впервые задаю вопрос на StackOverflow; не знал, что могу отредактировать свой вопрос.   -  person Matt DeKrey    schedule 08.11.2009
comment
Часть, в которой отказано в команде, действительно является вашей подсказкой - git на удаленном сервере не работает должным образом. К сожалению, у меня нет опыта настройки git в Windows, но я бы посоветовал как минимум проверить, можете ли вы успешно запустить git вне gitosis — например, попробуйте где-нибудь команду «git init». Убедитесь, что git также находится в пути пользователя gitosis.   -  person ebneter    schedule 09.11.2009


Ответы (2)


Вероятно, вы сделали опечатку в первый раз или что-то в этом роде. Попробуйте удалить источник и добавить его заново:

git rm origin
git remote add origin git@my_server:free_monkey.git

Затем попробуйте нажать еще раз. Стоит попробовать.

person Jorge Israel Peña    schedule 08.11.2009
comment
К сожалению, нет, я пытался это сделать. Я все еще получаю фатальное: удаленный конец неожиданно завис ... Я также пробовал разных пользователей до @, и они тоже не работают. Спасибо за быстрое предложение. - person Matt DeKrey; 08.11.2009

Итак, кажется, что ошибка «Неизвестная команда отклонена» была отвлекающим маневром. Gitosis допускает только команды, которые фактически отправляются во время процесса git push/pull из соображений безопасности, поэтому «git» не была известной командой.

Я продолжал получать ту же ошибку, но наткнулся на ссылку на файл author_keys на другом форуме — наличие дубликатов ключей полностью портит файл author_keys. Конечно же, это была моя проблема. Надеюсь, это поможет кому-то там.

Чтобы действительно диагностировать это, выполните следующие действия:

  1. cat ваши файлы author_keys для пользователя, которого вы используете для доступа к вашим репозиториям git (мой был git@my_server, поэтому я посмотрел в /home/git/.ssh/authorized_keys). Убедитесь, что у вас есть каждый открытый ключ только один раз.
  2. Я столкнулся со второй проблемой, заключавшейся в том, что я пытался использовать несколько ppk с TortoiseGit и Pageant. Похоже, Pageant игнорирует запрос TortoiseGit на изменение ключей; щелкните правой кнопкой мыши Pageant на панели задач (компьютер в шляпе) и просмотрите ключи, затем удалите все ключи, которые не соответствуют открытому ключу, который вы хотите использовать (это могут быть все).

Теперь у меня есть gitosis, работающий на моем сервере, доступный через SSH, доступный через TortoiseGit.

person Matt DeKrey    schedule 09.11.2009
comment
С тех пор я перешел от использования Gitosis к специальному решению, которое использует разные имена пользователей и эффективно создает ситуацию, похожую на git-hub. Я заинтересован в том, чтобы поделиться кодом, но написал его на C# (у меня хорошая часть на Python, но я просто не очень разбираюсь в этом языке) и хотел бы получить его в повторно используемом состоянии для других. Если кому интересно, выложу на гитхаб, чтобы поделиться. - person Matt DeKrey; 29.05.2010