-
1. Вступ
- 1.1 Про систему контролю версій
- 1.2 Коротка історія Git
- 1.3 Основи Git
- 1.4 Git, зазвичай, тільки додає дані
- 1.5 Три стани
- 1.6 Командний рядок
- 1.7 Інсталяція Git
- 1.8 Початкове налаштування Git
- 1.9 Отримання допомоги
- 1.10 Підсумок
-
2. Основи Git
- 2.1 Створення Git-репозиторія
- 2.2 Запис змін до репозиторія
- 2.3 Перегляд історії комітів
- 2.4 Скасування речей
- 2.5 Взаємодія з віддаленими сховищами
- 2.6 Теґування
- 2.7 Псевдоніми Git
- 2.8 Підсумок
-
3. Галуження в git
- 3.1 Гілки у кількох словах
- 3.2 Основи галуження та зливання
- 3.3 Управління гілками
- 3.4 Процеси роботи з гілками
- 3.5 Віддалені гілки
- 3.6 Перебазовування
- 3.7 Підсумок
-
4. Git на сервері
- 4.1 Протоколи
- 4.2 Отримання Git на сервері
- 4.3 Генерація вашого публічного ключа SSH
- 4.4 Налаштування Серверу
- 4.5 Демон Git
- 4.6 Розумний HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Варіанти стороннього хостингу
- 4.10 Підсумок
-
5. Розподілений Git
-
6. GitHub
-
7. Інструменти Git
- 7.1 Вибір ревізій
- 7.2 Інтерактивне індексування
- 7.3 Ховання та чищення
- 7.4 Підписання праці
- 7.5 Пошук
- 7.6 Переписування історії
- 7.7 Усвідомлення скидання (reset)
- 7.8 Складне злиття
- 7.9 Rerere
- 7.10 Зневадження з Git
- 7.11 Підмодулі
- 7.12 Пакування
- 7.13 Заміна
- 7.14 Збереження посвідчення (credential)
- 7.15 Підсумок
-
8. Налаштування Git
-
9. Git and Other Systems
- 9.1 Git як клієнт
- 9.2 Міграція на Git
- 9.3 Підсумок
-
10. Git зсередини
- 10.1 Кухонні та парадні команди
- 10.2 Об’єкти Git
- 10.3 Посилання Git
- 10.4 Файли пакунки
- 10.5 Специфікація посилань (refspec)
- 10.6 Протоколи передачі
- 10.7 Супроводження та відновлення даних
- 10.8 Змінні середовища
- 10.9 Підсумок
-
A1. Додаток A: Git в інших середовищах
- A1.1 Графічні інтерфейси
- A1.2 Git у Visual Studio
- A1.3 Git в Eclipse
- A1.4 Git у Bash
- A1.5 Git у Zsh
- A1.6 Git у Powershell
- A1.7 Підсумок
-
A2. Додаток B: Вбудовування Git у ваші застосунки
- A2.1 Git з командного рядка
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
-
A3. Додаток C: Команди Git
- A3.1 Налаштування та конфігурація
- A3.2 Отримання та створення проектів
- A3.3 Базове збереження відбитків
- A3.4 Галуження та зливання
- A3.5 Поширення й оновлення проектів
- A3.6 Огляд та порівняння
- A3.7 Зневаджування
- A3.8 Латання (patching)
- A3.9 Електронна пошта
- A3.10 Зовнішні системи
- A3.11 Адміністрування
- A3.12 Кухонні команди
4.6 Git на сервері - Розумний HTTP
Розумний HTTP
Ми вже маємо авторизований доступ через SSH та неавторизований через git://
, проте існує ще протокол, котрий може працювати в обох варіантах одночасно.
Налаштування Розумного HTTP потрибує лише ввімкнути CGI скрипт, що входить в пакет Git під назвою git-http-backent
, на вашому сервері.
Цей CGI буде читати шлях та заголовки, що їх відправили git fetch
чи git push
до HTTP URL та визначати, чи клієнт в змозі спілкуватися через HTTP (що є правдою для будь-якого клієнту після версії 1.6.6).
Якщо CGI визначив, що клієнт розумний, він буде з ним спілкуватися розумно, інакше доведеться використовувати тупу поведінку (отже він зворотно сумісний для читання зі старіших клієнтів).
Давайте покроково розглянемо дуже просту схему налаштування. Ми використаємо Apache в якості CGI серверу. Якщо у вас немає Apache, ви можете його встановити на Linux машині приблизно так:
$ sudo apt-get install apache2 apache2-utils
$ a2enmod cgi alias env
Ця команда також вмикає модулі mod_cgi
, mod_alias
і mod_env
. Вони всі необхідні для правильної роботи розумного HTTP.
Вам також треба встановити групу 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-backent
, який може відправляти та приймати дані Git через HTTP.
Він не реалізує авторизацію сам, проте авторизацію легко контролювати на рівні веб серверу, що його викликає.
Це дозволяє майже кожен веб сервер, що підтримує CGI, отже використовуйте той, що ви найкраще знаєте.
Зауваження
|
За докладнішою інформацією щодо конфігурації авторизації в Apache, дивіться документацію Apache за адресою: http://httpd.apache.org/docs/current/howto/auth.html |