четверг, 18 июня 2015 г.

Git: делаем удалённый репозиторий

Ещё одно простое решение для простой задачи.
Немного предистории. Когда-то давно я задумался о том как хранить свои исходники в репозитории на своём vds. Тогда я пользовался Subversion и не считал ssh-туннели для доступа к репозиторию избыточной сложностью. Теперь я постарел, стал ленивым и полюбил git.
Что может быть проще, чем git init в корне проекта? И уже можно пользоваться всеми преимуществами контроля версий без всякого сервера.
Следующий шаг: проект уже вырос и паранойя выросла вместе с ним. Все разработчики делятся не два вида: одни ещё ни разу не теряли исходники а другие уже делают git push в конце каждого рабочего дня :)

Но как сделать push? У нас же только локальный репозиторий! Так давайте сделаем удалённый.
Ещё раз напоминаю: нам не нужен свой GitHub с блэкджеком и танцовщицами. Задача простая: добавить remote к локальному git-репозиторию и использовать его для себя как средство бэкапа исходников.

На севере:
Cоздаём каталог для хранения репозиториев:
mkdir /opt/git
Дальше создаём пользователя:
useradd -d /home/git -m git
... и добавляем свой публичный ключ в его ~/.ssh/authorized_keys
Теперь мы можем входить на свой сервер под этим пользователем без ввода пароля.
Даём пользователю git права на запись в /opt/git

На локальной машине:
Делаем пустую "болванку" своей локальной копии:
git clone --bare project project.git
тут project - корневой каталог вашего проекта. Дальше - заливаем то что получилось на сервер:
scp -r project.git git@111.111.111.111:/opt/git
Тут 111.111.111.111 ip вашего сервера.

Собственно... все!
У нас есть удалённый git репозиторий. Чтобы пользоваться им, добавим remote в локальный репозиторий своего проекта:
git remote add origin ssh://git@111.111.111.111/opt/git/project.git
Теперь можно делать не только commit, но и push. Если что-то случилось с локальной копией, восстановим её командой:
git clone git@111.111.111.111:/opt/git/project.git
Итого: наши исходники зеркалируются на сервере. Если хочется взять кого-то в команду - добавляем его ключ в authorized_keys и он получает доступ к исходникам. Опытный админ будет смотреть на нас свысока и рассказывать о продвинутых web-интерфейсах, группах проектов и разграничении прав. Но свою простую задачу мы решили без его помощи и можем дальше заниматься тем, что нам нужно, не забивая себе голову посторонними проблемами. 

Комментариев нет:

Отправить комментарий