-
1. Почетак
- 1.1 О контроли верзије
- 1.2 Кратка историја програма Гит
- 1.3 Шта је Гит?
- 1.4 Командна линија
- 1.5 Инсталирање програма Гит
- 1.6 Подешавања за први пут
- 1.7 Тражење помоћи
- 1.8 Резиме
-
2. Основе програма Гит
- 2.1 Прављење Гит репозиторијума
- 2.2 Снимање промена над репозиторијумом
- 2.3 Преглед историје комитова
- 2.4 Опозив
- 2.5 Рад са удаљеним репозиторијумима
- 2.6 Означавање
- 2.7 Гит алијаси
- 2.8 Резиме
-
3. Гранање у програму Гит
- 3.1 Укратко о гранању
- 3.2 Основе гранања и спајања
- 3.3 Управљање гранама
- 3.4 Процеси рада са гранањем
- 3.5 Удаљене гране
- 3.6 Ребазирање
- 3.7 Резиме
-
4. Гит на серверу
- 4.1 Протоколи
- 4.2 Постављање програма Гит на сервер
- 4.3 Генерисање јавног SSH кључа
- 4.4 Подешавање сервера
- 4.5 Гит демон
- 4.6 Паметан HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Опције за хостовање које нуде трећа лица
- 4.10 Резиме
-
5. Дистрибуирани Гит
-
6. GitHub
-
7. Гит алати
- 7.1 Избор ревизија
- 7.2 Интерактивно стејџовање
- 7.3 Скривање и чишћење
- 7.4 Потписивање вашег рада
- 7.5 Претрага
- 7.6 Поновно исписивање историје
- 7.7 Демистификовани ресет
- 7.8 Напредно спајање
- 7.9 Rerere
- 7.10 Отклањање грешака са програмом Git
- 7.11 Подмодули
- 7.12 Паковање
- 7.13 Замена
- 7.14 Складиште акредитива
- 7.15 Резиме
-
8. Прилагођавање програма Гит
- 8.1 Конфигурисање програма Гит
- 8.2 Гит атрибути
- 8.3 Гит куке
- 8.4 Пример полисе коју спроводи програм Гит
- 8.5 Резиме
-
9. Гит и остали системи
- 9.1 Гит као клијент
- 9.2 Мигрирање на Гит
- 9.3 Резиме
-
10. Гит изнутра
- 10.1 Водовод и порцелан
- 10.2 Гит објекти
- 10.3 Гит референце
- 10.4 Pack фајлови
- 10.5 Рефспек
- 10.6 Протоколи за пренос
- 10.7 Одржавање и опоравак податак
- 10.8 Променљиве окружења
- 10.9 Резиме
-
A1. Додатак А: Програм Гит у другим окружењима
- A1.1 Графички интерфејси
- A1.2 Гит у Visual Studio
- A1.3 Гит у Visual Studio Code
- A1.4 Гит у IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.5 Гит у Sublime Text
- A1.6 Гит унутар Bash
- A1.7 Гит у Zsh
- A1.8 Гит у Powershell
- A1.9 Резиме
-
A2. Додатак Б: Уграђивање програма Гит у ваше апликације
- A2.1 Гит из командне линије
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Додатак В: Гит команде
- A3.1 Подешавање и конфигурација
- A3.2 Набављање и креирање пројеката
- A3.3 Основно снимање
- A3.4 Гранање и спајање
- A3.5 Дељење и ажурирање пројеката
- A3.6 Инспекција и поређење
- A3.7 Отклањање грешака
- A3.8 Крпљење
- A3.9 Имејл
- A3.10 Спољни системи
- A3.11 Администрација
- A3.12 Водоводне команде
4.6 Гит на серверу - Паметан HTTP
Паметан HTTP
Сада имамо аутентификован приступ кроз SSH и неаутентификован приступ преко git://
, али постоји и протокол који може радити обе ствари истовремено.
Подешавање Паметног HTTP протокола се у принципу своди на укључивање CGI скрипте која долази уз програм Гит под именом git-http-backend
на серверу.
Овај CGI ће прочитати путању и заглавља које пошаљу git fetch
или git push
на HTTP URL и одредити да ли клијент може да комуницира преко HTTP протокола (што је тачно за сваког клијента почевши од верзије 1.6.6).
Ако CGI види да је клијент паметан, комуницираће с њим на паметан начин; иначе ће му приступити приглупо (тако да је компатибилан уназад за читање са старијим верзијама клијената).
Хајде да прођемо кроз веома једноставно постављање. Користићемо Apache као CGI сервер. Ако немате подешен Apache, овако га можете поставити на Линукс машини:
$ sudo apt-get install apache2 apache2-utils
$ a2enmod cgi alias env
Ово такође укључује модуле mod_cgi
, mod_alias
и mod_env
који су неопходни за исправан рад.
Мораћете и да подесите Јуникс групу корисника директоријума /srv/git
на www-data
како би ваш веб сервер могао да има приступ за читање и писање репозиторијума, јер ће се инстанца Apache сервера која покреће CGI скрипту подразумевано извршавати као тај корисник:
$ chgrp -R www-data /srv/git
Следеће што треба да урадимо јесте да додамо неке ствари у Apache конфигурацију како бисмо могли да извршавамо git-http-backend
као обрађивач свега што дође на /git
путању вашег веб сервера.
SetEnv GIT_PROJECT_ROOT /srv/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
Ако изоставите променљиву окружења GIT_HTTP_EXPORT_ALL
, програм Гит ће онда неаутентификованим клијентима сервирати само репозиторијуме које у себи садрже фајл git-deamon-export-ok
, баш као што је био случај код Гит демона.
За крај, потребно је да Apache серверу наложите да дозволи захтеве ка git-http-backend
скрипти и да на неки начин аутентификује захтеве за упис, на пример са Auth блоком на следећи начин:
<Files "git-http-backend">
AuthType Basic
AuthName "Git Access"
AuthUserFile /srv/git/.htpasswd
Require expr !(%{QUERY_STRING} -strmatch '*service=git-receive-pack*' || %{REQUEST_URI} =~ m#/git-receive-pack$#)
Require valid-user
</Files>
За ово је неопходно да направите .htpasswd
фајл који садржи лозинке свих важећих корисника.
Ево примера додавања корисника „schacon” у тај фајл:
$ htpasswd -c /srv/git/.htpasswd schacon
Има гомила начина но које Apache може да аутентификује кориснике, па ћете морати да изаберете и имплементирате један од њих. Ово је само најједноставнији пример који нам је пао на памет. Скоро сигурно ћете ово желети да подесите преко SSL како би сви подаци били шифровани.
Не желимо да се превише упустимо у детаље конфигурације Apache сервера, пошто је прилично вероватно да користите и неки други сервер, или имате другачије потребе за аутентификацијом.
Идеја је да уз програм Гит долази CGI скрипта који се назива git-http-backend
и која обавља све неопходне преговоре о слању и примању података преко HTTP протокола када се покрене.
Она сама не имплементира било какву аутентификацију, али се то једноставно може контролисати на нивоу веб сервера који је позива.
Ово можете имплементирати употребом скори сваког веб сервера који има подршку за CGI, тако да је најбоље да изаберете онај који већ добро познајете.
Белешка
|
За више информација о конфигурацији аутентификације у Apache серверу, погледајте Apache документацију на следећој адреси: http://httpd.apache.org/docs/current/howto/auth.html |