To polecenie git-http-backend, które można uruchomić w darmowym dostawcy hostingu OnWorks, korzystając z jednej z wielu naszych darmowych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online systemu MAC OS
PROGRAM:
IMIĘ
git-http-backend — implementacja Git po stronie serwera przez HTTP
STRESZCZENIE
odrzutowiec zaplecze http
OPIS
Prosty program CGI udostępniający zawartość repozytorium Git klientom Git uzyskującym do niego dostęp
repozytorium przez protokoły http:// i https://. Program obsługuje pobieranie przez klientów
korzystając zarówno ze inteligentnego protokołu HTTP, jak i wstecznie kompatybilnego głupiego protokołu HTTP, jako
jak również klientów korzystających z inteligentnego protokołu HTTP.
Sprawdza, czy katalog ma plik magiczny „git-daemon-export-ok” i będzie
odmów eksportu dowolnego katalogu Git, który nie został wyraźnie oznaczony do eksportu w ten sposób
(chyba że zmienna środowiskowa GIT_HTTP_EXPORT_ALL jest ustawiona).
Domyślnie włączona jest tylko usługa upload-pack, która obsługuje odrzutowiec pobierz paczkę i odrzutowiec
ls-zdalne klientów, którzy są wywoływani z odrzutowiec sprowadzać, odrzutowiec Ciągnąć, odrzutowiec klonować, Jeśli
klient jest uwierzytelniony, usługa odbioru pakietów jest włączona, co umożliwia odrzutowiec wyślij paczkę
klientów, który jest wywoływany z odrzutowiec naciskać.
USŁUGI
Usługi te można włączać i wyłączać za pomocą pliku konfiguracyjnego dla każdego repozytorium:
http.getanyfile
Dotyczy to klientów Git starszych niż wersja 1.6.6, którzy nie mogą korzystać z funkcji przesyłania
usługa pakietu. Po włączeniu klienci mogą odczytać dowolny plik w repozytorium,
w tym obiekty, które nie są już osiągalne z gałęzi, ale nadal są obecne.
jest domyślnie włączona, ale repozytorium może ją wyłączyć, ustawiając tę konfigurację
element na fałsz.
http://www.uploadpack
To służy odrzutowiec pobierz paczkę i odrzutowiec ls-zdalne klientów. Jest domyślnie włączona, ale
repozytorium może wyłączyć tę funkcję, ustawiając tę pozycję konfiguracji na false.
http.odbierzpakiet
To służy odrzutowiec wyślij paczkę klientów, umożliwiając push. Jest domyślnie wyłączony dla
anonimowych użytkowników i domyślnie włączony dla użytkowników uwierzytelnionych przez serwer WWW.
można wyłączyć, ustawiając tę opcję na false lub włączyć dla wszystkich użytkowników, w tym
anonimowych użytkowników, ustawiając tę opcję na true.
URL TŁUMACZENIE
Aby określić lokalizację repozytorium na dysku, odrzutowiec zaplecze http łączy
zmienne środowiskowe PATH_INFO, które są ustawiane automatycznie przez serwer WWW, oraz
GIT_PROJECT_ROOT, który musi zostać ustawiony ręcznie w konfiguracji serwera WWW. Jeśli
GIT_PROJECT_ROOT nie jest ustawiony, odrzutowiec zaplecze http odczytuje PATH_TRANSLATED, który jest również ustawiony
automatycznie przez serwer WWW.
PRZYKŁADY
Wszystkie poniższe przykłady mapują http://$hostname/git/foo/bar.git na
/var/www/git/foo/bar.git.
Apache 2.x
Upewnij się, że mod_cgi, mod_alias i mod_env są włączone, ustaw GIT_PROJECT_ROOT (lub
DocumentRoot) i utwórz ScriptAlias dla CGI:
SetEnv GIT_PROJECT_ROOT /var/www/git
Ustaw środowisko GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
Aby umożliwić anonimowy dostęp do odczytu, ale uwierzytelniony dostęp do zapisu, należy wymagać autoryzacji
zarówno dla początkowej reklamy ref (którą wykrywamy jako push za pośrednictwem usługi
parametr w ciągu zapytania) i samo wywołanie receive-pack:
RewriteCond %{QUERY_STRING} service=git-receive-pack [OR]
Warunek ponownego zapisu %{REQUEST_URI} /git-receive-pack$
RewriteRule ^/git/ - [E=WYMAGANE UPRAWNIENIE:tak]
Zamów Odrzuć, Zezwól
Odrzuć z env=AUTHREQUIRED
AuthType Basic
AuthName „Dostęp do Git”
Wymagaj committerów grupowych
Spełnij wszelkie
...
Jeśli nie masz dostępnego modułu mod_rewrite, który można dopasować do ciągu zapytania, jest to
wystarczy chronić sam git-receive-pack, np.:
AuthType Basic
AuthName „Dostęp do Git”
Wymagaj committerów grupowych
...
W tym trybie serwer nie będzie żądał uwierzytelnienia, dopóki klient nie wykona uwierzytelnienia.
rozpoczyna fazę negocjacji obiektu podczas push, a nie w początkowej fazie
kontakt. Z tego powodu musisz również włączyć opcję konfiguracji http.receivepack w
wszelkie repozytoria, które powinny akceptować push. Domyślne zachowanie, jeśli http.receivepack
nie jest ustawiony, ma odrzucać wszelkie wiadomości push od niezweryfikowanych użytkowników; początkowe żądanie będzie
dlatego zgłoś klientowi 403 Zabronione, nawet nie dając mu możliwości
poświadczenie.
Aby wymagać uwierzytelniania zarówno podczas odczytu, jak i zapisu, należy użyć dyrektywy Location
repozytorium lub jeden z jego katalogów nadrzędnych:
AuthType Basic
AuthName „Prywatny dostęp do Git”
Wymagaj committerów grupowych
...
Aby obsługiwać gitweb pod tym samym adresem URL, użyj ScriptAliasMatch tylko do tych adresów URL, które odrzutowiec
zaplecze http może obsłużyć i przesłać resztę do gitweb:
Dopasowanie aliasu skryptu \
"(?x)^/git/(.*/(HEAD | \
informacje/odnośniki | \
obiekty/(informacje/[^/]+ | \
[0-9a-f]{2}/[0-9a-f]{38} | \
pakiet/pak-[0-9a-f]{40}\.(pak|idx)) | \
git-(prześlij|odbierz)-pack))$" \
/usr/libexec/git-core/git-http-backend/$1
Alias skryptu /git/ /var/www/cgi-bin/gitweb.cgi/
Aby obsługiwać wiele repozytoriów z różnych przestrzenie nazw git(7) w jednym repozytorium:
UstawEnvIf Request_URI "^/git/([^/]*)" GIT_NAMESPACE=$1
Dopasowanie aliasu skryptu ^/git/[^/]*(.*) /usr/libexec/git-core/git-http-backend/storage.git$1
Przyspieszony statyczny Apache 2.x
Podobnie jak powyżej, ale Apache może być używany do zwracania statycznych plików przechowywanych na
dysku. W wielu systemach może to być bardziej wydajne, ponieważ Apache może poprosić jądro o skopiowanie
zawartość pliku z systemu plików bezpośrednio do sieci:
SetEnv GIT_PROJECT_ROOT /var/www/git
AliasMatch ^/git/(.*/objects/[0-9a-f]{2}/[0-9a-f]{38})$ /var/www/git/$1
Dopasowanie aliasu ^/git/(.*/objects/pack/pack-[0-9a-f]{40}.(pack|idx))$ /var/www/git/$1
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
Można to połączyć z konfiguracją gitweb:
SetEnv GIT_PROJECT_ROOT /var/www/git
AliasMatch ^/git/(.*/objects/[0-9a-f]{2}/[0-9a-f]{38})$ /var/www/git/$1
Dopasowanie aliasu ^/git/(.*/objects/pack/pack-[0-9a-f]{40}.(pack|idx))$ /var/www/git/$1
Dopasowanie aliasu skryptu \
"(?x)^/git/(.*/(HEAD | \
informacje/odnośniki | \
obiekty/informacje/[^/]+ | \
git-(prześlij|odbierz)-pack))$" \
/usr/libexec/git-core/git-http-backend/$1
Alias skryptu /git/ /var/www/cgi-bin/gitweb.cgi/
Lighttpd
Upewnij się, że załadowano mod_cgi, mod_alias, mod_auth, mod_setenv, a następnie ustaw
Odpowiednio użyj GIT_PROJECT_ROOT i przekieruj wszystkie żądania do CGI:
alias.url += ( "/git" => "/usr/lib/git-core/git-http-backend„)
$HTTP["url"] =~ "^/git" {
cgi.assign = ("" => "")
setenv.add-environment = (
"GIT_PROJECT_ROOT" => "/var/www/git",
"GIT_HTTP_EXPORT_ALL" => ""
)
}
Aby włączyć anonimowy dostęp do odczytu, ale uwierzytelniony dostęp do zapisu:
$HTTP["querystring"] =~ "usługa=git-receive-pack" {
uwzględnij „git-auth.conf”
}
$HTTP["url"] =~ "^/git/.*/git-receive-pack$" {
uwzględnij „git-auth.conf”
}
gdzie git-auth.conf wygląda mniej więcej tak:
auth.require = (
"/" => (
„metoda” => „podstawowa”,
„realm” => „Dostęp do Git”,
„wymagane” => „ważny-użytkownik”
)
)
# ...i tutaj skonfiguruj auth.backend
Aby wymagać uwierzytelniania zarówno podczas odczytu, jak i zapisu:
$HTTP["url"] =~ "^/git/prywatne" {
uwzględnij „git-auth.conf”
}
ŚRODOWISKO
odrzutowiec zaplecze http opiera się na zmiennych środowiskowych CGI ustawionych przez wywołujący serwer WWW,
w tym:
· PATH_INFO (jeśli ustawiono GIT_PROJECT_ROOT, w przeciwnym wypadku PATH_TRANSLATED)
· UŻYTKOWNIK_ZDALNY
· ADRES_ZDALNY
· TYP_TREŚCI
· CIĄG_ZAPYTANIA
· METODA_ZAPYTANIA
Zmienna środowiskowa GIT_HTTP_EXPORT_ALL może zostać przekazana do git-http-backend omijać
sprawdzenie pliku „git-daemon-export-ok” w każdym repozytorium przed zezwoleniem na eksport
tego repozytorium.
Zmienna środowiskowa GIT_HTTP_MAX_REQUEST_BUFFER (lub konfiguracja http.maxRequestBuffer)
zmienna) może zostać ustawiona w celu zmiany największego żądania negocjacji ref, które będzie obsługiwane przez git
podczas pobierania; pobieranie wymagające większego bufora nie powiedzie się. Ta wartość powinna
zwykle nie trzeba tego zmieniać, ale może się to przydać, jeśli pobierasz dane z repozytorium
z ekstremalnie dużą liczbą odniesień. Wartość może być określona za pomocą jednostki (np. 100M
(dla 100 megabajtów). Domyślnie jest to 10 megabajtów.
Proces zaplecza ustawia GIT_COMMITTER_NAME na $UŻYTKOWNIK_ZDALNY i GIT_COMMITTER_EMAIL do
${REMOTE_USER}@http.${REMOTE_ADDR}, zapewniając, że wszelkie reflogi utworzone przez pakiet-odbioru git
zawierają pewne informacje identyfikujące zdalnego użytkownika, który wykonał operację push.
Wszystkie zmienne środowiskowe CGI są dostępne dla każdego z haków wywoływanych przez
pakiet-odbioru git.
GIT
Część odrzutowiec(1) apartament
Użyj git-http-backend online za pomocą usług onworks.net