-
1. Почеток
- 1.1 За верзиска контрола
- 1.2 Кратка историја на Git
- 1.3 Основи на Гит
- 1.4 Командната линија
- 1.5 Инсталирање на Git
- 1.6 First-Time Git Setup
- 1.7 Getting Help
- 1.8 Заклучок
-
2. Основите на Git
-
3. Гранење во Git
- 3.1 Гранење објаснето
- 3.2 Основно разгранување и спојување
- 3.3 Branch Management
- 3.4 Работни процеси
- 3.5 Далечински гранки
- 3.6 Ребаза
- 3.7 Заклучок
-
4. Git на Сервер
- 4.1 Протоколите
- 4.2 Добивање на Git на сервер
- 4.3 Генерирање на вашиот SSH јавен клуч
- 4.4 Поставување на серверот
- 4.5 Гит демон
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Опции за домаќини на трети лица
- 4.10 Заклучок
-
5. Дистрибуиран Git
- 5.1 Дистрибуирани работни процеси
- 5.2 Придонес кон проект
- 5.3 Приватен мал тим
- 5.4 Одржување на проект
- 5.5 Заклучок
-
6. GitHub
-
7. Git Алатки
- 7.1 Revision Selection
- 7.2 Интерактивно стажирање
- 7.3 Stashing and Cleaning
- 7.4 Signing Your Work
- 7.5 Searching
- 7.6 Rewriting History
- 7.7 Reset Demystified
- 7.8 Напредно спојување
- 7.9 Rerere
- 7.10 Дебагирање со Git
- 7.11 Submodules
- 7.12 Збивање
- 7.13 Заменување
- 7.14 Складирање на ингеренции
- 7.15 Заклучок
-
8. Персонализација на Git
- 8.1 Git Configuration
- 8.2 Git Атрибути
- 8.3 Git Hooks
- 8.4 An Example Git-Enforced Policy
- 8.5 Заклучок
-
9. Git и други системи
- 9.1 Git како Клиент
- 9.2 Мигрирање кон Git
- 9.3 Заклучок
-
10. Внатрешноста на Git
- 10.1 Plumbing and Porcelain
- 10.2 Git Objects
- 10.3 Git References
- 10.4 Packfiles
- 10.5 The Refspec
- 10.6 Transfer Protocols
- 10.7 Maintenance and Data Recovery
- 10.8 Environment Variables
- 10.9 Заклучок
-
A1. Appendix A: Git во други околини
- A1.1 Graphical Interfaces
- A1.2 Git in Visual Studio
- A1.3 Git in Eclipse
- A1.4 Git in Bash
- A1.5 Git in Zsh
- A1.6 Git in Powershell
- A1.7 Заклучок
-
A2. Appendix B: Вметнување на Git во вашите апликации
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
-
A3. Appendix C: Git команди
- A3.1 Setup and Config
- A3.2 Getting and Creating Projects
- A3.3 Basic Snapshotting
- A3.4 Branching and Merging
- A3.5 Sharing and Updating Projects
- A3.6 Inspection and Comparison
- A3.7 Debugging
- A3.8 Patching
- A3.9 Email
- A3.10 External Systems
- A3.11 Administration
- A3.12 Plumbing Commands
4.6 Git на Сервер - Smart HTTP
Smart HTTP
Сега имаме автентичен пристап преку SSH и пристап без пристап преку git: //
, но исто така постои и протокол кој може да го стори истовремено.
Поставувањето на Smart HTTP е во основа едноставно овозможување CGI скрипта која е обезбедена со Git наречен 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
, кои се потребни за правилно функционирање.
Исто така, ќе треба да ја наместите Unix корисничката група на директориуми / 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 само ќе им служи на клиентите кои не ги идентификуваат клиентите со складиштето` git-daemon-export-ok` во нив, исто како што го правеше демонот Git.
Конечно, ќе сакате да му кажете на 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 специфики за конфигурација, бидејќи вие би можеле да користите друг сервер или да имаат различни потреби за автентикација.
Идејата е дека Git доаѓа со CGI наречен git-http-backend
, кој кога ќе се повика, ќе ги направи сите преговори да испраќаат и примаат податоци преку HTTP.
Таа не имплементира ниедна проверка на автентичност, но таа лесно може да се контролира на слојот на веб серверот кој се повикува.
Можете да го направите ова со скоро секој веб-сервер способен за CGI, па затоа одете со оној што го знаете најдобро.
Note
|
За повеќе информации за конфигурирање автентикација во Apache, проверете ги документите на Apache тука: http://httpd.apache.org/docs/current/howto/auth.html [] |