Рано или позно приходишь к мысли, что не плохо бы иметь свой git сервер под проекты, чтоб не таскать взад-перед с компа на комп кучу наработок и скриптов. Ну и чтоб конечные потребители имели в наличии всегда срез последних наработок, а не таскали с сервера на сервер уже не актуальный скрипт.
Процесс установки:
apt-get install git gitweb openssh
, где git собственно сервер репозиатриев.
gitweb — веб морда для него
openssh — сервер SSH который позволит безопасно работать с git
Далее создадим свой первый репозитарий. Например в папке /home/git/
mkdir first cd first git init --bare
В папке будет создана следующая структура:
branches config description HEAD hooks info objects refs
Содержимое файла description можно отредактировать чтоб увидеть внятное описание скрипта в вебморде.
Следует помнить, что на сервере git храняться лишь изменения файлов, непосредственно саму структуру файлов репозитария вы сможете увидеть только на «клиентах» сервера.
Теперь настроим собственно «вебморду».
mcedit /etc/gitweb.conf
,и отредактиреум строчки:
$projectroot = "/home/git/"; //где лежат наши репозитарии $site_name = "Репозитарий скриптов и ПО ГК Рога и Копыта";
Вот и всё. Если теперь зайдете на на http://ваш_сервер/gitweb/, то увидите свой первый репозитарий git.
Как видите, вид совсем не презентабельный. Можно чуть «поколдовать» самому со скриптами в /usr/share/gitweb/static или взять еже готовую «тему» например с https://github.com/kogakure/gitweb-theme. Уже лучше.
Как пользоваться git на «клиенте»? Если пользуетесь например NetBeans, то заходим в меню Группа-Git-Клонировать, вводим адрес репозитария и все остальные данные, и следуем мастеру..
Затем создаем проект в папке с репозитарием и пишем код. Когда возникнет нужна сохранить код на git сервере — выделяем правой кнопкой по проекту: Git -> Фиксация. Затем Git -> Удаленный -> Вытолкнуть
Или тоже самое в консоли:
git init echo "hello!">readme.txt git add . git commit -m "Первый коммит" git remote add origin git@server_name:/home/git/first git push origin master
Безопасность.
Для того чтобы не дать доступ всем людям к данному репозитарию через giweb, можно поставить блокировку по паролю:
Alias /gitweb /usr/share/gitweb <Directory /usr/share/gitweb> AuthType Basic AuthName "Restricted Area 51" AuthBasicProvider file AuthUserFile /usr/share/gitweb/.htpasswd Require valid-user Options FollowSymLinks +ExecCGI AddHandler cgi-script .cgi </Directory>
Создать пользователя:
htpasswd -c /usr/share/gitweb/.htpasswd $USER