Назад | Перейти на главную страницу

Git Daemon в Linux?

Попытка установить простой git-daemon на сервере Linux и поговорить с ним из окна Windows.

На сервере linux:

  1. Сделайте папку / главная / фу / бар
  2. CD к / главная / фу / бар
  3. сделать git --bare init Вот
  4. Сделать коснитесь git-daemon-export-ok
  5. CD к / home / foo
  6. Запустите команду git-daemon --verbose --reuseaddr --base-path = / home / foo --enable = получать-пакет

В клиенте Windows с черепахой Git

  1. Делать git.exe clone --progress -v "git: // servername / bar" "C: \ source \ myFolderName" (работает)
  2. Создайте файл a.txt, добавьте его в git и зафиксируйте (работает)
  3. Сделать git.exe извлекает мастер "origin" а потом получить фатальный: не удалось найти удаленный эталонный мастер (имеет смысл, хозяина еще нет)
  4. Сделать git.exe нажмите "origin" master: master и черепаха висит вечно, ничего не делая

Я понимаю, почему я еще не могу получить данные от мастера в удаленной ветке ... но почему я не могу отправить свою первую фиксацию в удаленное репо? №4 действительно должен работать. Пробовал как с черепахой, так и с командной строкой mysysgit, в обоих случаях зависаю навсегда. Что мне не хватает? На сервере нет полезного журнала

Я обычно получаю доступ к репозиториям для чтения / записи с моего сервера, используя:

git remote add git@server.com:/repository

Это git через ssh, а не через git daemon. Вы можете использовать эту предоставленную конфигурацию user@server имеет доступ к репозиторию.

Вот еще кое-что, что вы можете сделать с этим:

  • Создайте пользователя с именем git с оболочкой /usr/bin/git-shell. Только в этом случае пользователь сможет выполнять операции git - ssh не будет работать.
  • Создать /home/git/.ssh/authorized_keys файл, содержащий ключи ssh, которые можно подключать. Любые добавленные здесь ключи позволят вам выполнить фиксацию, поэтому вы можете добавить ключи нескольких разных пользователей.

Эта настройка позволяет вам контролировать, кто может коммитить, позволяя кому-либо клонировать через эффективный протокол git: //.

Однако, если вы хотите получать пакеты, я думаю, что правильная команда:

git-daemon --verbose --reuseaddr --export-all --base-path=/home/foo --enable=receive-pack

Согласно это сообщение о переполнении стека.

К сожалению, это, вероятно, ошибка в msysgit. http://code.google.com/p/msysgit/issues/detail?id=457

На данный момент существует обходной путь (я думаю, не в основной ветке), но настоящего исправления нет.