Устанавливаем и настраиваем cGit на Ubuntu - Форум сайта uHelper
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Устанавливаем и настраиваем cGit на Ubuntu
LifePSDДата: Суббота, 13.03.2010, 19:38 | Сообщение # 1
$uCoz=($Life[xD]^$tmp);//<= c+^o%d#e$r
Группа: Заблокированные
Сообщений: 244
Репутация: 7778
С помощью данной статьи (пошаговой инструкции) вы сможете сделать себе собственный Git репозиторий, с веб-интерфейсом на базе cGit.

Вот так, просто и лаконично, выглядит стандартный cGit (кликабельно):



Сейчас стали очень популярный виртуальные выделенные серверы (VPS, VDS). За 5-15 долларов в месяц можно позволить себе пользоваться почти полноценным хостингом, с индивидуальными настройками, неплохими ресурсами и почти всем, что душа пожелает. Моя душа желает пользоваться системой контроля версий Git. У неё очень много плюсов, среди которых главные — это скорость и удобство. Я достаточно долго пользовался SVN (не по собственной воле) и я был очень удивлён, когда попробовал Git. Процесс разработки, слияния веток, переключения с ветки на ветку и обновление проходит чрезвычайно удобно, быстро и беспроблемно! В качестве веб-морды я выбрал cGit, потому что встретил довольно много мест, где её используют, он маленький и быстрый. А так же потому, что мне очень не понравился gitweb, который почему-то более популярен. На моём сервере и клиенте установлена ОС Ubuntu 9.04 и 9.10 соответственно. Все действия будут выполняться в консоли. Инструкция расчитана на начинающего пользователя.

В первую очередь (если вы этого до сих пор не сделали) нам нужно будет установить LAMP на удалённом компьютере (он же сервер, он же будущее хранилище). Для этого в убунте достаточно выполнить:

Quote
sudo tasksel install lamp-server

Далее мы скачаем свежую версию cGit и скомпилируем её. Для этого нам нужны некоторые библиотеки и программы. Чтобы их установить — выполните:
Quote
sudo apt-get install libcurl4-openssl-dev git-core build-essential mc

Мы установили пакеты для компиляции, файловый менеджер mc (c его очень удобным редактором mcedit) и непосредственно набор утилит Git. Приступим к компиляции и установке:
Quote
git clone git://hjemli.net/pub/git/cgit
cd cgit/
git submodule init
git submodule update
make

Скачается порядка 20 МБ. Дождитесь успешной компиляции и линковки (обычно не дольше нескольких минут). В результате у нас появился cgi-скрипт, лого и css файл для будущего репозитория. cGit мы установим и настроим вручную.

Дальше возможно несколько вариантов, в зависимости от того, как вы хотите получать доступ к cGit. Мне было удобно обращаться к поддомену. Например так: git.example.ru. Для этого создадим новый виртуальный хост (имя удалённого пользователя — projects):

Quote
sudo touch /etc/apache2/sites-available/cgit
sudo mcedit /etc/apache2/sites-available/cgit

И вставим в содержимое файла кусок кода (не забудьте поменять домен на свой):

Code
    <VirtualHost *:80>                    
         ServerName git.example.ru
         DocumentRoot /home/projects/www/cgit
         DirectoryIndex cgit.cgi
         SetEnv CGIT_CONFIG  /etc/cgitrc

         <Directory "/home/projects/www/cgit">
             Options FollowSymlinks ExecCGI
             Allow from all
             AllowOverride all
             Order allow,deny

             <Files cgit.cgi>
                 SetHandler cgi-script
             </Files>
         </Directory>
          
         <Directory "/home/projects">
             Allow from all
         </Directory>
     </VirtualHost>

Создадим директорию для cGit и скопируем туда скомпилированные файлы:
Quote
mkdir ~/www/cgit -p
cd ~/cgit
cp cgit ~/www/cgit/cgit.cgi
cp cgit.png ~/www/cgit/
cp cgit.css ~/www/cgit/

Создадим конфигурационный файл для cGit и пропишем в него настройки:
Quote
sudo touch /etc/cgitrc
sudo mcedit /etc/cgitrc

Откроется редактор. Вот моё содержимое конфига, с комментариями:
Quote
#Относительный путь для всего остального
virtual-root=/

#Путь к картинке логотипа и стилям.
css=/cgit.css
logo=/cgit.png

#Директория для автоматического сканирования Git репозиториев.
scan-path=/home/projects

#Дополнительные ссылочки и информация...
enable-index-links=1
enable-log-filecount=1
enable-log-linecount=1

#Заголовок репозитария
root-title=Мои репозитории

#Подзаголовок
root-desc=Зачем откладывать на завтра то, что можно отложить на послезавтра?

#Разрешаем скачивание репозитариев, веток или коммитов архивами (очень удобная вещь)
snapshots=tar.gz tar.bz2 zip

#Список статических (кроме тех, что подхватываются автоматически) репозиториев

repo.url=temp
repo.path=/home/sartor/www/temp/.git
repo.desc=Это репозиторий для тестов
repo.owner=Sartor

repo.url=exp
repo.path=/home/sartor/www/exp/.git
repo.desc=Experimentum
repo.owner=Sartor


Теперь всё готово для запуска. Добавим виртуальный хост в список разрешённых и перезапустим апач:
Quote
sudo a2ensite cgit
sudo /etc/init.d/apache2 restart

Заходим на git.example.ru и убеждаемся, что всё работает.
Если появилась 50х ошибка, то нужно сделать следующее:
Quote
sudo touch ~/www/cgit/.htaccess
sudo mcedit ~/www/cgit/.htaccess

И вставить следующее содержимое (не забудьте изменить пути на свои):
Quote
RewriteEngine on

RewriteCond %{HTTP_HOST} ^git\.
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .* - [L]

RewriteCond %{HTTP_HOST} ^git\.
RewriteRule ^git/$ /home/projects/www/cgit/cgit.cgi [L]

RewriteCond %{HTTP_HOST} ^git\.
RewriteRule ^(.*)$ /home/projects/www/cgit/cgit.cgi?url=$1 [L,QSA]


Теперь точно будет работать smile
Чтобы проверить, правильно ли всё работает создадим репозиторий с одним файлом:
Quote
mkdir ~/test
cd ~/test
touch habr.txt
echo "Здоровья тебе, хабраюзер" > habr.txt
git init
git add .
git commit -m "Первый коммит"

Обновляем старничку в браузере и видим наш первый коммит.

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

Опишу примерный сценарий разработчика:

1. Создаю на сервере новую папку (например www/test) в домашней.
2. Делаю в ней git init.
3. На локальной машине делаю git clone projects@example.ru :www/test/.git. Это создаст локальную копию удалённого репозитория (пока пустого).
4. Накидываю кучу файлов в локальную папку, которую мы создали на предыдущем шаге. Делаю, так сказать, каркас проекта. Если нужно — добавляю исключения (.gitignore).
5. Выполняю git add. && git commit && git push, комментирую свои изменения.
6. Всё. Локальный и удалённый репозиарии обновлены и синхронизированны.
7. Работаю над проектом. После каких-либо осмысленных изменений делаю вновь шаг 5. Не забывайте предварительно зайти в ту папку, с которой работали. Особо ленивые хитрые могу сделать алиасы для баша.

Если вы веб-разрабочик и вам нужно довольно часто показывать текущий результат работы — очень полезно будет положить файл post-receive в папку .git/hooks какого-либо проекта с таким содержимым:

Quote
#!/bin/sh
cd ..
env -i git checkout -f
echo "Удалённый репозиторий успешно обновлён!"

И дайте ему права на исполнение. Теперь после каждого обновления (шаг 5) будет также обновляться рабочее дерево проекта и реальные файлы всегда будут последней, актуальной версии (а этого почти все и ожидают, когда обновили удалённый репозиторий, но так по умолчанию не происходит).

Обучение работы с git происходит быстро и интуитивно. По этой СКВ есть множество информации на разных языках, а с веб-интерфейсом пользоваться будет ещё легче.

На чистоту конфигов не претендую, админ из меня не очень. Но они гарантированно работают smile


 
  • Страница 1 из 1
  • 1
Поиск: