Belov Solutions

Установка Git на сервер

Введение

Эта статья описывает процесс базовой установки Git-сервера с поддержкой SSH-протокола на Linux. Хотя шаги применимы и к macOS или Windows, в боевой среде могут потребоваться дополнительные настройки безопасности и инструментов операционной системы. Мы рассмотрим создание голого репозитория, размещение его на сервере и настройку доступа для совместной работы.

Создание голого репозитория

Для установки Git-сервера необходимо экспортировать существующий репозиторий в голый репозиторий — репозиторий без рабочего каталога. Это делается с помощью команды git clone --bare:

$ git clone --bare my_project my_project.git
Cloning into bare repository 'my_project.git'...
done.

Эта команда создаёт копию данных Git в каталоге my_project.git. Эквивалентно копированию каталога .git:

$ cp -Rf my_project/.git my_project.git

Примечание: Голые репозитории по соглашению именуются с расширением .git. Они содержат данные Git, но не включают рабочий каталог.

Размещение голого репозитория на сервере

Предположим, у вас есть сервер git.example.com с доступом по SSH, и вы хотите размещать репозитории в каталоге /srv/git. Чтобы разместить голый репозиторий, скопируйте его на сервер:

$ scp -r my_project.git user@git.example.com:/srv/git

Пользователи с SSH-доступом и правами чтения для /srv/git могут клонировать репозиторий:

$ git clone user@git.example.com:/srv/git/my_project.git

Пользователи с правами записи в /srv/git/my_project.git могут отправлять изменения. Чтобы автоматически настроить права записи для группы, выполните на сервере:

$ ssh user@git.example.com
$ cd /srv/git/my_project.git
$ git init --bare --shared

Примечание: Команда git init --bare --shared не удаляет существующие коммиты или ссылки, а настраивает права для совместной работы.

Малые установки

Для небольших команд с несколькими разработчиками настройка Git-сервера проста. Основная сложность — управление доступом пользователей. Если репозитории должны быть доступны только для чтения или для чтения и записи разным пользователям, настройка прав становится более сложной.

Настройка SSH-доступа

Если на сервере уже есть SSH-доступ для всех разработчиков, размещение репозитория требует минимальных усилий. Права доступа можно настроить с помощью стандартных прав файловой системы.

Если учётных записей для команды нет, есть несколько способов настройки SSH-доступа:

  1. Создание учётных записей для каждого пользователя. Это просто, но требует выполнения adduser или useradd для каждого участника, что может быть обременительно.
  2. Использование единого пользователя git. Создайте пользователя git и добавьте публичные SSH-ключи участников в файл ~/.ssh/authorized_keys. Все подключаются через этого пользователя, что не влияет на авторство коммитов. Пример:
# На сервере
$ adduser git
$ su git
$ cd ~
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
# Добавьте публичные ключи пользователей в .ssh/authorized_keys
  1. Использование LDAP или другого сервера аутентификации. Если сервер поддерживает LDAP или другие централизованные системы аутентификации, настройте SSH для их использования.

Примечание: Пользователь, под которым осуществляется SSH-доступ, не влияет на данные коммитов, так как Git использует метаданные автора коммита.

Заключение

Установка Git-сервера с поддержкой SSH-протокола проста: создайте голый репозиторий, разместите его на сервере и настройте SSH-доступ. Для небольших команд достаточно SSH-сервера и прав файловой системы. Более сложные конфигурации, такие как публичный доступ или веб-интерфейс, требуют дополнительных шагов, которые можно изучить в документации Git.

Отзывы

Оставить отзыв

Ваша эл. почта не будет опубликована