Правильный способ поделиться git репо через ssh - PullRequest
6 голосов
/ 07 сентября 2010

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

Что я делаю:

  1. Создать пустой репозиторий git на центральном компьютере git init

  2. Затем с каждой рабочей станции выполните что-то вроде git clone ssh://user@central-box/Users/user/Projects/my-project/.git/

Это хорошо работает, но мерзавец продолжает кричать на меня каждый раз, когда я нажимаю что-то вроде этого:

alt text

Есть ли лучший способ поделиться репо поверх ssh .

ВАЖНО: Я хорошо знаю о существовании gitosis и подобных инструментов, я не хочу ничего фантастического. Просто делюсь репозиторием .git через ssh.

Спасибо

Ответы [ 2 ]

9 голосов
/ 07 сентября 2010

На хост-машине вы должны сделать

git init --bare

Поскольку вам не нужны реальные файлы, только репо.

Если предупреждающее сообщение отправлено в ПЕРВОЙ толчок к репо, и никто его не трогал, выполните

git push -f

В противном случае эта ошибка означает, что ваша схема ветвления неверна.Вы НЕ должны редактировать ветку origin / branchname.Вам нужен собственный филиал под названием branchname, а затем, когда вы будете готовы подтвердить свой код, вы выполните

git commit
git pull
git push

И вы перейдете от своего локального отделения к origin / branchname.

Редактировать

Я хотел бы увидеть выходные данные этой команды в вашем локальном репо:

git branch

Вы не должны видеть ни слова источника, ни имени вашего сервера нигде ввыход * * 1 021

3 голосов
/ 08 сентября 2010

В дополнение к решению bwawok вам нужно следить за разрешением проблем. По умолчанию, когда git создает файлы от имени пользователя, их права доступа исходят из umask пользователя, а их группа устанавливается в группу пользователя по умолчанию. Для обычных масок и групп по умолчанию это нарушит общий репо, так как такие файлы не могут быть изменены другими пользователями.

К счастью, git можно настроить для правильной работы в этой ситуации: взгляните на параметр --shared для git init (или параметр core.sharedRepository). Самым простым вариантом является, вероятно, --shared=group, который предоставляет доступ на запись всем пользователям в группе "git".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...