гитоз против гитолита?

Я ищу установку сервера git, чтобы делиться проектами со своей командой. Я не хочу создавать учетную запись пользователя на сервере с доступом по SSH для каждого разработчика, которому нужен доступ к git. Кажется, есть два параллельных решения, которые охватывают эту проблему: gitosis и gitolite.

Я не мог найти никакого сравнения между обоими решениями. Каковы основные различия между ними? Есть ли другое подобное решение?


person greydet    schedule 04.06.2012    source источник


Ответы (5)


Я ищу установку сервера git, чтобы делиться проектами со своей командой.

Вы можете просто использовать git.

Чтобы иметь сервер git, единственное, что вам нужно на удаленном сервере, это git. Если вам не требуются детальные разрешения (совместное использование только с вашей командой предполагает, что это возможно) или какие-либо дополнительные функции, вам не нужен gitolite или что-то подобное.

Решение без установки

Если git доступен на удаленном сервере, вы можете делать то, о чем просите, прямо сейчас, ничего не делая.

ssh [user@]server
cd repos/are/here/
mkdir project.git
cd project.git
git init --bare

Локально:

cd projects/are/here/project
git remote add origin [user@]server:repos/are/here/project.git
git push -u origin master

Настроить сервер git очень просто.

Если вы хотите делать что-то с выделенным пользователем git, документация для настройка git-сервера короткая, потому что это действительно очень легко сделать.

В итоге:

  • Установить git
  • Создайте пользователя с именем git
  • Добавьте свои открытые ключи и ключи вашей команды в файл .ssh/authorized_keys пользователя git.
  • Измените оболочку пользователя git на git-shell
  • Создавать репозитории на сервере
  • запустите git pull/push на [email protected]

Единственная разница между использованием выделенного пользователя git и нет, заключается в том, что если вы настроите пользователя git на использование git-shell, он не позволит себе делать что-либо еще. Однако с точки зрения работы в качестве сервера git он идентичен решению без установки.

person AD7six    schedule 04.06.2012
comment
После установки зверя GitLab + Gitolite, если вам не нужен точный контроль над проектами и т. д., это путь. - person Andrew T Finnell; 05.06.2012
comment
Спасибо за этот ответ! На самом деле, когда я сказал, что не хочу создавать учетные записи пользователей для каждого, я должен был также упомянуть, что я не хочу, чтобы мои пользователи git имели доступ к оболочке сервера через ssh. Я думаю, что с вашим решением у них будет доступ к оболочке через пользователя git, верно? - person greydet; 05.06.2012
comment
Для решения без установки мне пришлось использовать git push origin master вместо git push. - person wsams; 06.09.2012
comment
@wsams: git push -u origin master и после него можно использовать git push. Я предпочитаю gito*, потому что, на мой взгляд, никто, обращающийся к репозиторию, не должен заботиться об абсолютном пути к нему в удаленной системе. - person ThiefMaster; 07.09.2012
comment
@ThiefMaster делает дикие предположения о том, что вы имеете в виду, если вы поместите репозитории в /home/git/, URL-адрес для доступа к проекту будет git@server:project.git. - person AD7six; 07.09.2012
comment
@wsams прочитайте эту часть ответа. Измените оболочку пользователя git на git-shell. - person fabspro; 18.05.2013
comment
Это обычный пользователь - я бы не хотел использовать git-shell @fabspro. - person wsams; 20.05.2013

Основное отличие состоит в том, что gitosis устарел и больше не поддерживается активно.

Gitolite обладает гораздо большей функциональностью и только что выпустил третья версия.

Его самая интересная функция — виртуальная ссылка (сокращенно VREF) который позволяет вам объявить столько хуков обновлений, сколько вы хотите, что позволяет вам ограничить от:

  • имя каталога/файла:
    Скажем, вы не хотите, чтобы младшие разработчики вносили изменения в Makefile, потому что он довольно сложный:
    - VREF/NAME/Makefile = @junior-devs

  • количество новых файлов:
    Допустим, вы не хотите, чтобы младшие разработчики загружали более 9 файлов за один коммит, потому что вы хотите, чтобы они делали небольшие коммиты:
    - VREF/COUNT/9/NEWFILES = @junior-devs

  • Расширенное определение типа файла:
    Иногда файл имеет стандартное расширение (которое нельзя «проигнорировать git»), но на самом деле оно создается автоматически. Вот один из способов поймать его:
    - VREF/FILETYPE/AUTOGENERATED = @all
    См. src/VREF/FILETETYPE, чтобы увидеть механизм обнаружения.

  • проверка электронной почты автора:
    Некоторые люди хотят убедиться, что «вы можете отправлять только свои собственные коммиты».
    - VREF/EMAIL-CHECK = @all
    См. src/VREF/EMAIL-CHECK.

  • голосование за фиксацию:
    Базовая реализация голосования за фиксацию на удивление проста:
    - VREF/EMAIL-CHECK = @all.
    # 2 votes required to push master, but trusted devs don't have this restriction
    # RW+ VREF/VOTES/2/master = @trusted-devs
    # - VREF/VOTES/2/master = @devs
    См. src/VREF/VOTES для реализации.

  • и так далее...

person VonC    schedule 04.06.2012
comment
Я использую Gitolite уже более 3 лет. Никогда не было проблем с этим. У наших производственных и промежуточных серверов есть доступ только для чтения к репозиториям. И легко поделиться проектом с другими командами разработчиков. Также его легко настроить, если вы уже знаете unix и git :) - person complistic; 30.05.2013
comment
Документация Gitolite включает сравнения с альтернативами: gitolite.com/gitolite/gitolite.html#alt - person Quinn Comendant; 12.04.2015

Просто примечание. Вы также можете использовать Gerrit для своих нужд:

Gerrit Code Review

Сначала кажется, что Gerrit используется для проверки кода, но на самом деле вы можете использовать его также для управления пользователями и предоставления им четко определенных разрешений. Вы можете обойти code-review (через управление доступом) и использовать его только для управления проектами и ssh-ключами. У Геррита действительно сильный механизм контроля доступа:

Контроль доступа Gerrit

Вы можете ограничить отправку любых ветвей, тегов или всего, что вы можете себе представить, что определено в документе управления доступом.

person Fatih Arslan    schedule 05.06.2012

Для еще более быстрого и грязного решения просто используйте git daemon и перейдите пиринговый. Вот статья об этом.

Изменить: я понимаю, что это не совсем отвечает на вопрос ОП. Я размещаю это здесь в основном для тех, кто, как и я, сталкивается с этим, ища простой и грязный способ поделиться кодом, пока не будет настроена корпоративная учетная запись github.

person Tim Keating    schedule 15.04.2013

Я какое-то время возился, чтобы заставить сервер git работать с доступом LDAP, мелкозернистым контролем доступа и т. Д. Нашел откровение: используйте Гитлаб:

  • git-репозитории
  • мелкозернистый доступ (afaik gitlab использует gitolite под капотом)

если вам нужен быстрый и быстрый метод установки: используйте установщик bitnami

person Chris Maes    schedule 12.02.2014
comment
Да, но GitLab (с gitlab-shell) потерял все хуки VREF, которые вы могли легко настроить с помощью Gitolite. И многие хотели бы получить их обратно: github.com/gitlabhq/gitlab-shell/ Issues/14 и github.com/gitlabhq/gitlab-shell/pull/ 85 - person VonC; 12.02.2014