Прочитав статью про успешную модель ветвления в 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
Заработало? Поздравляю :).
На будущее готовится http://gitorious.org/.
ОтветитьУдалитьмог бы :)
ОтветитьУдалитьрекомендую посмотреть gitosis
ОтветитьУдалитьа по поводу успешной модели ветвления - git-flow
спасибо.
ОтветитьУдалитьgitosis смотрел, но меня интересовал доступ не по ssh, а через http.