четверг, 17 февраля 2011 г.

Установка git сервера и веб-интерфейса к нему

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

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

Итак, нам понадобятся:

  • Debian или Ubuntu с рутовыми правами;
  • Apache;
  • Доступ в интернет, доставить нужные пакеты;

 

Шаг 1 Ставим git и gitweb:

Закатываем рукава, открываем консоль и начинаем:

$ sudo aptitude git-core git-svn gitweb

Активируем нужные моды apache:

$ sudo a2enmod dav
$ sudo a2enmod dav_fs
$ sudo a2enmod rewrite
$ sudo a2enmod env

Шаг 2 Создаём виртуальный хост и первый репозиторий

Создаём виртуальный хост, на котором будут находиться наши репозитории. Заодно создаём пустой репозиторий.

$ sudo mkdir /git.domain.com
$ sudo mkdir /git.domain.com/main.git
$ chmod -R a+w .
$ cd /git.domain.com
$ git –bare init
$ git update-server-info

Редактируем конфигурацию Apache:

$ sudo vi /etc/apache2/conf.d/git.conf

Создаём виртуальный хост на порту 31337 в папке /git.domain.com:

--- /etc/apache2/conf.d/git.conf ---
<VirtualHost *:31337>
  ServerAdmin admin@server.com
 
DocumentRoot /git.domain.com

  <Directory /git.domain.com>
    Options FollowSymLinks
    Order allow,deny
    Allow from all
    </Directory>
  <Location />
    DAV on
    AuthType Basic
    AuthName «Git»
    AuthUserFile /etc/apache2/passwd.git
    <LimitExcept GET HEAD PROPFIND OPTIONS REPORT>
      Require valid-user
    </LimitExcept>
  </Location>
</VirtualHost>
--- end of file ---

Файл с паролями может находиться где угодно, но в /etc/apache2 ему будем сухо и безопасно. Создаим этот файл и добавим туда первого пользователя:

$ sudo htpasswd -c /etc/apache2/passwd.git <user>

Задаём пароль и файл создан. Теперь нужно перезапустить аpache:

$ sudo /etc/init.d/apache2 restart

Теперь пройдём на http://<username>@<servername>/main.git браузером проверит спросит ли он пароль и пустит ли с правильным паролем.

Шаг 3 настраиваем веб-интерфейс (gitweb)

Создаём конфигурационный файл gitweb:

$ sudo vi /etc/gitweb.conf

Файлик должен содержать приблизительно следующие настройки:

--- /etc/gitweb.conf ---
$site_name = “git.domain.tld”;
$projectroot = “/git.domain.com”;
$git_temp = “/tmp”;
$projects_list = $projectroot;
$stylesheet = “/gitweb.css”;
$logo = “/git-logo.png”;
$favicon = “/git-favicon.png”;
$projects_list_description_width = 40;

$feature{’pathinfo’}{’default’} = [1];
--- end of file ---

Теперь перечитываем конфиг:

$ sudo /etc/init.d/apache reload

и идём на http://<username>@<servername> любоваться первым репозиторием. Редактировать описание репозитория можно в файле description в папке с репозиторием.

Всё, серверная часть настроена.

Шаг 4 Коммитимся

Осталось сделать первый коммит, подключить наш репозиторий как origin, сделать git push – и можно работать.

$ git commit –a –m “Initial commit”
$ git remote add origin
http://<user>:<password>@git.domain.com:31337/main.git
$ git push origin master

Заработало? Поздравляю :).

5 комментариев:

  1. На будущее готовится http://gitorious.org/.

    ОтветитьУдалить
  2. а не могли бы вы написать скрипт на шелле, чтоб автоматом разворачивал все?

    ОтветитьУдалить
  3. рекомендую посмотреть gitosis
    а по поводу успешной модели ветвления - git-flow

    ОтветитьУдалить
  4. спасибо.
    gitosis смотрел, но меня интересовал доступ не по ssh, а через http.

    ОтветитьУдалить