To jest polecenie gitweb, które można uruchomić w darmowym dostawcy usług hostingowych OnWorks przy użyciu jednej z wielu naszych bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online MAC OS
PROGRAM:
IMIĘ
gitweb - interfejs sieciowy Git (frontend sieciowy do repozytoriów Git)
STRESZCZENIE
Aby rozpocząć pracę z gitweb, uruchom git-instaweb(1) z repozytorium Git. To by
skonfiguruj i uruchom serwer WWW oraz uruchom przeglądarkę internetową wskazując na gitweb.
OPIS
Gitweb zapewnia interfejs sieciowy do repozytoriów Git. Jego funkcje obejmują:
· Przeglądanie wielu repozytoriów Git ze wspólnym rootem.
· Przeglądanie każdej wersji repozytorium.
· Przeglądanie zawartości plików w repozytorium w dowolnej wersji.
· Przeglądając dziennik zmian oddziałów, historię plików i katalogów, zobacz co było
zmienione kiedy, przez kogo.
· Wyświetlanie szczegółów winy / adnotacji dowolnego pliku (jeśli jest włączony).
· Generowanie kanałów RSS i Atom zatwierdzeń dla dowolnej gałęzi. Kanały są
automatycznie wykrywane w nowoczesnych przeglądarkach internetowych.
· Przeglądanie wszystkiego, co zostało zmienione w rewizji, i przeglądanie kolejnych wersji
czas, przeglądając historię repozytorium.
· Znalezienie zatwierdzeń, których komunikaty zatwierdzenia pasują do podanego wyszukiwanego terminu.
See http://git.kernel.org/?p=git/git.git;a=drzewo;f=gitweb or
http://repo.or.cz/w/git.git/tree/HEAD:/gitweb/ dla kodu źródłowego gitweb, przeglądanego za pomocą
samego gitweba.
KONFIGURACJA
Różne aspekty zachowania gitweba mogą być kontrolowane przez plik konfiguracyjny
gitweb_config.perl or /etc/gitweb.conf. Zobacz gitweb.conf(5) szczegóły.
Repozytoria
Gitweb może wyświetlać informacje z jednego lub więcej repozytoriów Git. Te repozytoria muszą
być wszystkie w lokalnym systemie plików i muszą współdzielić wspólny katalog główny repozytorium, tj. znajdować się pod a
pojedyncze repozytorium nadrzędne (ale zobacz także sekcję „Zaawansowana konfiguracja serwera WWW”, „Webserver
konfiguracja z podsekcją root wielu projektów).
nasz $projectroot = '/ścieżka/do/nadrzędnego/katalogu';
Wartość domyślna $projectroot to /pub/git. Możesz to zmienić podczas budowania gitweb
poprzez zmienną konfiguracji kompilacji GITWEB_PROJECTROOT.
Domyślnie wszystkie repozytoria Git w $projectroot są widoczne i dostępne dla gitweb.
Lista projektów jest domyślnie generowana przez skanowanie katalogu $projectroot w poszukiwaniu
Repozytoria Git (dokładniej mówiąc o obiektowych bazach danych; gitweb nie jest zainteresowany plikiem
obszar roboczy i najlepiej nadaje się do pokazywania „nagich” repozytoriów).
Nazwa repozytorium w gitweb to ścieżka do jego $GIT_DIR (jego obiektowej bazy danych)
względem $projectroot. Dlatego repozytorium $repo można znaleźć pod adresem
„$root projektu/$repo”.
Projekty podstęp filet format
Zamiast tego, aby gitweb znajdował repozytoria, skanując system plików, zaczynając od
$projectroot, możesz udostępnić wstępnie wygenerowaną listę widocznych projektów według ustawienia
$projects_list, aby wskazywał zwykły plik tekstowy z listą projektów (z dodatkowymi
informacje).
Ten plik ma następujący format:
· Jeden rekord (dla projektu/repozytorium) na linię; nie obsługuje kontynuacji linii
(ucieczka nowej linii).
· Wiodące i końcowe spacje są ignorowane.
· Pola oddzielone spacjami; dowolny ciąg białych znaków może służyć jako separator pól
(reguły dla Perla "split(" ", $line)").
· Pola używają zmodyfikowanego kodowania URI, zdefiniowanego w RFC 3986, sekcja 2.1 (Percent-Encoding),
lub raczej „Kodowanie ciągu zapytania” (patrz
http://en.wikipedia.org/wiki/Query_string#URL_kodowanie), z tą różnicą, że SP
(„ ”) można zakodować jako „+” (a zatem „+” musi być również zakodowane w procentach).
Zarezerwowane znaki to: „%” (używany do kodowania), „+” (może być używany do kodowania SPACJA),
wszystkie białe znaki zdefiniowane w Perlu, w tym SP, TAB i LF, (używane do
oddzielne pola w rekordzie).
· Obecnie rozpoznawane pola to:
ścieżka do repozytorium GIT_DIR, względem $projectroot
wyświetlany jako właściciel repozytorium, najlepiej imię i nazwisko, adres e-mail lub jedno i drugie
Możesz wygenerować plik indeksu listy projektów za pomocą akcji project_index (the TXT link
na stronie z listą projektów) bezpośrednio z gitweb; zobacz także „Generowanie listy projektów za pomocą
gitweb” poniżej.
Przykładowa zawartość:
foo.git Joe+R+Hacker+jan@example.com>
foo/bar.git O+W+Ner+właściciel@example.org>
Domyślnie ten plik kontroluje tylko, które projekty są widoczny na stronie z listą projektów (uwaga
że wpisy, które nie wskazują poprawnie rozpoznanych repozytoriów Git, nie będą wyświetlane
przez gitweba). Nawet jeśli projekt nie jest widoczny na stronie z listą projektów, możesz go wyświetlić
niemniej jednak ręcznie tworząc adres URL gitweb. Ustawiając konfigurację $strict_export
zmienna (zob gitweb.conf(5)) na wartość true możesz zezwolić na przeglądanie tylko repozytoriów
pokazany również na stronie przeglądu (tj. tylko projekty wyraźnie wymienione na liście projektów
plik będzie dostępny).
Generowanie projektowanie podstęp za pomocą gitweb
Zakładamy, że GITWEB_CONFIG ma swoją domyślną wartość Makefile, a mianowicie gitweb_config.perl.
Wstaw następujące gitweb_make_index.perl file:
read_config_file("gitweb_config.perl");
$lista_projektów = $katalog główny projektu;
Następnie utwórz następujący skrypt, aby uzyskać listę projektów w odpowiednim formacie
Zmienna konfiguracyjna kompilacji GITWEB_LIST (lub zmienna $projects_list w konfiguracji gitweb):
#!/ Bin / sh
eksportuj GITWEB_CONFIG="gitweb_make_index.perl"
eksportuj GATEWAY_INTERFACE="CGI/1.1"
eksportuj HTTP_ACCEPT="*/*"
wyeksportuj REQUEST_METHOD="GET"
wyeksportuj QUERY_STRING="a=indeks_projektu"
perl -- /var/www/cgi-bin/gitweb.cgi
Uruchom ten skrypt i zapisz jego dane wyjściowe do pliku. Plik ten można następnie wykorzystać jako projekty
list, co oznacza, że możesz ustawić $projects_list na jego nazwę pliku.
Sterowanie dostęp do git repozytoria
Domyślnie wszystkie repozytoria Git w $projectroot są widoczne i dostępne dla gitweb.
Możesz jednak skonfigurować sposób, w jaki gitweb kontroluje dostęp do repozytoriów.
· Jak opisano w sekcji „Format pliku listy projektów”, możesz kontrolować, które projekty
jest widoczny poprzez selektywne włączanie repozytoriów do pliku listy projektów i ustawianie
$projects_list zmienna konfiguracyjna gitweb, aby na nią wskazywała. Z zestawem $strict_export,
plik listy projektów może być używany do kontrolowania, które repozytoria są dostępny , jak również.
· Możesz skonfigurować gitweb tak, aby wyświetlał tylko listę i zezwalał na przeglądanie jawnie wyeksportowanych
repozytoria, poprzez zmienną $export_ok w pliku konfiguracyjnym gitweb; Widzieć gitweb.confSkładowanie
strona podręcznika. Jeśli ma wartość true, gitweb pokazuje repozytoria tylko wtedy, gdy ten plik nazwany przez
$export_ok istnieje w swojej obiektowej bazie danych (jeśli katalog ma magiczny plik o nazwie
$eksport_ok).
Na przykład demon git(1) domyślnie (chyba że użyto opcji --export-all) zezwala
ciągnięcie tylko dla tych repozytoriów, które mają git-daemon-export-ok plik. Dodawanie
nasz $export_ok = "git-daemon-export-ok";
sprawia, że gitweb pokazuje i zezwala na dostęp tylko do tych repozytoriów, z których można pobrać
przez protokół git://.
· Wreszcie, możliwe jest określenie dowolnego podprogramu Perla, który zostanie wywołany
dla każdego repozytorium, aby określić, czy można je wyeksportować. Podprogram standardowy otrzymuje
bezwzględna ścieżka do projektu (repozytorium) jako jedyny parametr (tj
„$główny projekt/$projekt”).
Na przykład, jeśli używasz mod_perl do uruchamiania skryptu i masz głupi protokół HTTP
uwierzytelnianie skonfigurowane dla twoich repozytoriów, możesz użyć następującego haka
zezwalaj na dostęp tylko wtedy, gdy użytkownik jest uprawniony do odczytu plików:
$export_auth_hook = sub {
użyj Apache2::SubRequest();
użyj Apache2::Const -compile => qw(HTTP_OK);
moja $ścieżka = "$_[0]/HEAD";
mój $r = Apache2::RequestUtil->request;
mój $sub = $r->lookup_file($ścieżka);
return $sub->nazwa pliku eq $ścieżka
&& $sub->status == Apache2::Const::HTTP_OK;
};
Na repozytorium gitweb konfiguracja
Możesz skonfigurować poszczególne repozytoria pokazane w gitweb, tworząc plik w formacie GIT_DIR
repozytorium Git lub ustawiając jakąś zmienną konfiguracyjną repo (in GIT_DIR/config, Patrz
git-config(1)).
W repozytorium możesz użyć następujących plików:
README.html
Plik html (fragment HTML), który jest zawarty na stronie „podsumowania” projektu gitweb
wewnątrz element blokowy. Możesz go użyć do dłuższego opisu projektu, np
podać linki (na przykład do strony głównej projektu) itp. Jest to rozpoznawane tylko w przypadku XSS
zapobieganie jest wyłączone ($prevent_xss jest fałszywe, zobacz gitweb.conf(5)); sposób na włączenie a
Plik README bezpiecznie przy włączonej ochronie przed XSS może zostać opracowany w przyszłości.
opis (lub gitweb.description)
Krótki (skrócony do $projects_list_description_width na stronie listy projektów, który
domyślnie ma 25 znaków; Widzieć gitweb.conf(5)) jednowierszowy opis projektu
(z repozytorium). Zwykły plik tekstowy; HTML zostanie zmieniony. Domyślnie ustawione na
Nienazwane repozytorium; edytuj ten plik, aby nadać mu nazwę dla gitweb.
z szablonu podczas tworzenia repozytorium, zwykle instalowany w
/usr/share/git-core/templates/. Możesz użyć konfiguracji repozytorium gitweb.description
zmiennej, ale plik ma pierwszeństwo.
kategoria (lub gitweb.category)
Kategoria pojedynczego wiersza projektu, używana do grupowania projektów, jeśli
$projects_list_group_categories jest włączone. Domyślnie (plik i konfiguracja
zmienna nieobecna), projekty nieskategoryzowane są umieszczane w $project_list_default_category
Kategoria. Możesz użyć zmiennej konfiguracyjnej repozytorium gitweb.category, ale plik
ma pierwszeństwo.
Zmienne konfiguracyjne $projects_list_group_categories i
$project_list_default_category są opisane w gitweb.confSkładowanie
cloneurl (lub wielowartościowy gitweb.url)
Plik z adresem URL repozytorium (używany do klonowania i pobierania), po jednym w wierszu. Wyświetlane w
strona z podsumowaniem projektu. Możesz użyć wielowartościowej konfiguracji repozytorium gitweb.url
za to zmienna, ale plik ma pierwszeństwo.
To jest ulepszenie dla każdego repozytorium / wersja globalnego prefiksu @git_base_url_list
zmienna konfiguracyjna gitweb (patrz gitweb.conf(5)).
gitweb.właściciel
Możesz użyć zmiennej konfiguracyjnej repozytorium gitweb.owner, aby ustawić repozytorium
właściciel. Jest wyświetlany na liście projektów i stronie podsumowania.
Jeśli nie jest ustawiona, używany jest właściciel katalogu systemu plików (poprzez pole GECOS, czyli prawdziwe nazwisko
pole od getpwuid(3)) jeśli $projects_list nie jest ustawione (gitweb skanuje $projectroot w poszukiwaniu
repozytoria); jeśli $projects_list wskazuje na plik z listą repozytoriów, to
właściciel projektu domyślnie przyjmuje wartość z tego pliku dla danego repozytorium.
różne zmienne konfiguracyjne gitweb.* (w konfiguracji)
Przeczytaj opis skrótu %feature, aby uzyskać szczegółową listę i opisy. Zobacz też
Sekcja „Konfigurowanie funkcji gitweb” w gitweb.confSkładowanie
DZIAŁANIA, ROLNICZE adresy URL
Gitweb może używać adresów URL opartych na path_info (komponentach) lub może przekazywać wszystkie niezbędne informacje
poprzez parametry zapytania. Typowe adresy URL gitweb są podzielone na pięć komponentów:
.../gitweb.cgi/ / / :/ ?
repo
Repozytorium, na którym zostanie wykonana akcja.
Wszystkie działania z wyjątkiem tych, które wymieniają wszystkie dostępne projekty, w dowolnej formie,
wymaga tego parametru.
akcja
Akcja, która zostanie uruchomiona. Domyślnie do lista_projektów jeśli repo nie jest ustawione, i do
streszczenie Inaczej.
rewizja
Pokazano wersję. Domyślnie jest to HEAD.
ścieżka
Ścieżka w ramach na którym jest wykonywana akcja, dla tych akcji
które tego wymagają.
argumenty
Wszelkie argumenty kontrolujące zachowanie akcji.
Niektóre akcje wymagają lub pozwalają określić dwie wersje, a czasem nawet dwie ścieżki.
W najbardziej ogólnej formie taki adres URL gitweb oparty na path_info (komponencie) wygląda następująco:
.../gitweb.cgi/ / / :/ .. :/ ?
Każda akcja jest zaimplementowana jako podprogram i musi być obecna w mieszaniu %actions. Niektóre
akcje są domyślnie wyłączone i należy je włączyć za pomocą mechanizmu funkcji. Na przykład
umożliwić winić view dodaj następujące elementy do pliku konfiguracyjnego gitweb:
$funkcja{'wina'}{'wartość domyślna'} = [1];
Akcje:
Standardowe działania to:
lista_projektów
Wyświetla listę dostępnych repozytoriów Git. Jest to domyślne polecenie, jeśli nie ma repozytorium
podany w adresie URL.
streszczenie
Wyświetla podsumowanie dotyczące danego repozytorium. Jest to domyślne polecenie, jeśli nie ma żadnej akcji
określone w adresie URL i określone jest tylko repozytorium.
głowice, piloty
Wyświetla listę wszystkich lokalnych lub wszystkich oddziałów zdalnego śledzenia w danym repozytorium.
Ta ostatnia nie jest domyślnie dostępna, chyba że została skonfigurowana.
tagi
Wypisz wszystkie tagi (lekkie i z adnotacjami) w danym repozytorium.
plama, drzewo
Pokazuje pliki i katalogi w danej ścieżce repozytorium, w danej wersji. To jest
default polecenie, jeśli w adresie URL nie określono żadnej akcji, a podano ścieżkę.
blob_plain
Zwraca surowe dane dla pliku w danym repozytorium, w podanej ścieżce i wersji.
Linki do tej akcji są zaznaczone surowy.
blobdiff
Pokazuje różnicę między dwiema wersjami tego samego pliku.
wina, wina_incremental
Pokazuje informacje o obwinianiu (nazywane również adnotacjami) dla pliku. Na podstawie linii
pokazuje wersję, w której ta linia została ostatnio zmieniona, oraz użytkownika, który ją zatwierdził
zmiana. Wersja przyrostowa (która, jeśli jest skonfigurowana, jest używana automatycznie, gdy
JavaScript jest włączony) używa Ajax do stopniowego dodawania informacji o winie do zawartości
podany plik.
Ta akcja jest domyślnie wyłączona ze względu na wydajność.
popełnić, popełnić różnicę
Pokazuje informacje o konkretnym zatwierdzeniu w repozytorium. The popełnić oglądać pokazy
bardziej szczegółowe informacje o zatwierdzeniu, różnica popełnienia akcja pokazuje zestaw zmian dla
dane zatwierdzenie.
łata
Zwraca zatwierdzenie w zwykłym formacie wiadomości tekstowej, odpowiednim do zastosowania git-am(1).
etykieta
Wyświetl określony znacznik z adnotacją (obiekt znacznika).
dziennik, skrót
Pokazuje informacje dziennika (komunikat o zatwierdzeniu lub po prostu temat zatwierdzenia) dla danej gałęzi
(począwszy od danej wersji).
Kurs krótki dziennik widok jest bardziej zwarty; pokazuje jedno zatwierdzenie na linię.
historia
Pokazuje historię pliku lub katalogu w podanej ścieżce repozytorium, zaczynając od podanej
wersja (domyślnie HEAD, czyli domyślna gałąź).
Ten widok jest podobny do krótki dziennik widok.
rss, atom
Generuje kanał RSS (lub Atom) zmian w repozytorium.
SERWER INTERNETOWY KONFIGURACJA
W tej sekcji wyjaśniono, jak skonfigurować niektóre popularne serwery WWW do uruchamiania gitweb. we wszystkich przypadkach
/path/to/gitweb w przykładach to katalog, w którym uruchomiłeś zainstalowany gitweb i który zawiera
gitweb_config.perl.
Jeśli skonfigurowałeś serwer WWW, którego nie ma na liście dla gitweb, wyślij plik
instrukcje, aby można je było uwzględnić w przyszłych wydaniach.
Apache as CGI
Apache musi być skonfigurowany do obsługi skryptów CGI w katalogu, w którym znajduje się gitweb
zainstalowany. Załóżmy, że tak /var/www/cgi-bin katalogiem.
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
Opcje Indeksy FollowSymlinks ExecCGI
Brak AllowOverride
Zezwalaj na zamówienia, odmawiaj
Allow from all
Przy tej konfiguracji pełna ścieżka do przeglądania repozytoriów wyglądałaby następująco:
http://server/cgi-bin/gitweb.cgi
Apache w mod_perl, przez ModPerl::Rejestr
Możesz użyć mod_perl z gitweb. Musisz zainstalować Apache::Registry (dla mod_perl 1.x) lub
ModPerl::Registry (dla mod_perl 2.x), aby włączyć tę obsługę.
Zakładając, że gitweb jest zainstalowany na /var/www/perl, następująca konfiguracja Apache
(dla mod_perl 2.x) jest odpowiedni.
Alias /perl "/var/www/perl"
SetHandler perl-skrypt
PerlResponseHandler ModPerl::Rejestr
PerlOptions + ParseHeaders
Opcje Indeksy FollowSymlinks +ExecCGI
Brak AllowOverride
Zezwalaj na zamówienia, odmawiaj
Allow from all
Przy tej konfiguracji pełna ścieżka do przeglądania repozytoriów wyglądałaby następująco:
http://server/perl/gitweb.cgi
Apache w FastCGI
Gitweb współpracuje z Apache i FastCGI. Najpierw musisz zmienić nazwę, skopiować lub dowiązać symbolicznie gitweb.cgi
do gitweb.fcgi. Załóżmy, że gitweb jest zainstalowany w /usr/share/gitweb informator. Plik
następująca konfiguracja Apache jest odpowiednia (NIETESTOWANA!)
Serwer FastCgi /usr/share/gitweb/gitweb.cgi
Alias skryptu /gitweb /usr/share/gitweb/gitweb.cgi
Alias /gitweb/static /usr/share/gitweb/static
<Katalog /usr/share/gitweb/static>
Domyślny program obsługi SetHandler
Przy tej konfiguracji pełna ścieżka do przeglądania repozytoriów wyglądałaby następująco:
http://server/gitweb
ADVANCED WEB SERVER USTAWIAĆ
Wszystkie te przykłady używają przepisywania żądań i wymagają mod_rewrite (lub odpowiednika; przykłady
poniżej są napisane dla Apache).
Jedna URL dla gitweb i dla ujmujący
Jeśli chcesz mieć jeden adres URL zarówno dla repozytoriów gitweb, jak i http://, możesz to zrobić
skonfiguruj Apache w ten sposób:
NazwaSerwera git.example.org
Katalog główny dokumentu /pub/git
SetEnv GITWEB_CONFIG /etc/gitweb.conf
# włączanie przepisywania modów
RewriteEngine na
# spraw, aby strona główna była wewnętrznym przepisaniem skryptu gitweb
Przepisz regułę ^/$ /cgi-bin/gitweb.cgi
# udostępnij pracę „głupim klientom”.
RewriteRule ^/(.*\.git/(?!/?(HEAD|info|objects|refs)).*)?$
/cgi-bin/gitweb.cgi%{REQUEST_URI} [L,PT]
Powyższa konfiguracja zakłada, że twoje publiczne repozytoria będą działać w ramach /pub/git i woli
służyć im jako http://git.domain.org/dir-under-pub-git, zarówno jako klonowalny adres URL Git, jak i jako
przeglądalny interfejs gitweb. Jeśli następnie rozpoczniesz demon git(1) z
--base-path=/pub/git --export-all wtedy możesz nawet użyć adresu URL git:// z dokładnie
ta sama ścieżka.
Ustawienie zmiennej środowiskowej GITWEB_CONFIG powie gitweb, aby użył nazwanego pliku
(tj. w tym przykładzie /etc/gitweb.conf) jako konfiguracja dla gitweb. Naprawdę nie
potrzebuję tego w powyższym przykładzie; jest to wymagane tylko wtedy, gdy plik konfiguracyjny znajduje się w innym pliku
miejsce niż wbudowane (podczas kompilacji gitweb) gitweb_config.perl or /etc/gitweb.conf. Zobaczyć
gitweb.conf(5) w celu uzyskania szczegółowych informacji, w szczególności informacji o zasadach pierwszeństwa.
Jeśli użyjesz reguł przepisywania z przykładu ty może też potrzebuje czegoś takiego
następujące w pliku konfiguracyjnym gitweb (/etc/gitweb.conf następujący przykład):
@stylesheets = ("/trochę/absolute/ścieżka/gitweb.css");
$my_uri = "/";
$home_link = "/";
$per_request_config = 1;
Obecnie jednak gitweb powinien w razie potrzeby utworzyć podstawowy znacznik HTML (aby ustawić podstawowy URI dla
linki względne), więc powinno działać automatycznie.
Serwer internetowy konfiguracja w wielokrotność projektowanie' korzeń
Jeśli chcesz używać gitweb z kilkoma korzeniami projektu, możesz edytować swój wirtualny host Apache
i pliki konfiguracyjne gitweb w następujący sposób.
Konfiguracja hosta wirtualnego (w pliku konfiguracyjnym Apache) powinna wyglądać następująco:
NazwaSerwera git.example.org
Katalog główny dokumentu /pub/git
SetEnv GITWEB_CONFIG /etc/gitweb.conf
# włączanie przepisywania modów
RewriteEngine na
# spraw, aby strona główna była wewnętrznym przepisaniem skryptu gitweb
RewriteRule ^/$ /cgi-bin/gitweb.cgi [QSA,L,PT]
# poszukaj folderu public_git w domu użytkowników systemu unix
# http://git.example.org/~ /
RewriteRule ^/\~([^\/]+)(/|/gitweb.cgi)?$ /cgi-bin/gitweb.cgi
[QSA, E=GITWEB_PROJECTROOT:/Dom/$1/public_git/,L,PT]
# http://git.example.org/+ /
#RewriteRule ^/\+([^\/]+)(/|/gitweb.cgi)?$ /cgi-bin/gitweb.cgi
[QSA, E=GITWEB_PROJECTROOT:/Dom/$1/public_git/,L,PT]
# http://git.example.org/user//
#RewriteRule ^/user/([^\/]+)/(gitweb.cgi)?$ /cgi-bin/gitweb.cgi
[QSA, E=GITWEB_PROJECTROOT:/Dom/$1/public_git/,L,PT]
# zdefiniowana lista korzeni projektu
RewriteRule ^/scm(/|/gitweb.cgi)?$ /cgi-bin/gitweb.cgi
[QSA,E=GITWEB_PROJECTROOT:/pub/scm/,L,PT]
Przepisz regułę ^/ var(/|/gitweb.cgi)?$ /cgi-bin/gitweb.cgi
[QSA,E=GITWEB_PROJECTROOT:/var/git/,L,PT]
# udostępnij pracę „głupim klientom”.
RewriteRule ^/(.*\.git/(?!/?(HEAD|info|objects|refs)).*)?$
/cgi-bin/gitweb.cgi%{REQUEST_URI} [L,PT]
Tutaj rzeczywisty katalog główny projektu jest przekazywany do gitweb przez zmienną środowiskową GITWEB_PROJECT_ROOT
z serwera WWW, więc musisz umieścić następujący wiersz w pliku konfiguracyjnym gitweb
(/etc/gitweb.conf w powyższym przykładzie):
$projekt główny = $ENV{'GITWEB_PROJECTROOT'} || "/pub/git";
Note że wymaga to ustawienia dla każdego żądania, więc musi być albo $per_request_config
false lub powyższe należy umieścić w kodzie, do którego odwołuje się $per_request_config;
Te konfiguracje umożliwiają dwie rzeczy. Po pierwsze, każdy użytkownik systemu unix ( ) woli serwera
być w stanie przeglądać repozytoria gitweb Git znalezione w ~/public_git/ z
następujący adres URL:
http://git.example.org/~ /
Jeśli nie chcesz tej funkcji na swoim serwerze, po prostu usuń drugą regułę przepisywania.
Jeśli już używasz „mod_userdir” na swoim wirtualnym hoście lub nie chcesz używać „~” jako
pierwszy znak, po prostu skomentuj lub usuń drugą regułę przepisywania i odkomentuj jedną z nich
podążaj zgodnie z tym, czego chcesz.
Po drugie, repozytoria znalezione w /pub/scm/ i /var/git/ będzie dostępny przez
http://git.example.org/scm/ i http://git.example.org/var/. Możesz dodać tyle projektów
korzenie, jak chcesz, dodając reguły przepisywania, takie jak trzecia i czwarta.
PATH_INFO zwyczaj
Jeśli włączysz użycie PATH_INFO w gitweb przez umieszczenie
$funkcja{'informacje o ścieżce'}{'domyślna'} = [1];
w pliku konfiguracyjnym gitweb możliwe jest skonfigurowanie serwera tak, aby
zużywa i tworzy adresy URL w formularzu
http://git.example.com/project.git/shortlog/sometag
czyli bez gitweb.cgi części, używając konfiguracji takiej jak poniżej. Ten
konfiguracja zakłada, że /var/www/gitweb to DocumentRoot twojego serwera WWW, zawiera
skrypt gitweb.cgi i uzupełniające pliki statyczne (stylesheet, favicon, JavaScript):
SerwerAlias git.example.com
Dokument Główny /var/www/gitweb
Opcje ExecCGI
AddHandler skrypt cgi cgi
DirectoryIndex gitweb.cgi
RewriteEngine On
RewriteCond% {REQUEST_FILENAME}!-F
RewriteCond% {REQUEST_FILENAME}!-D
RewriteRule ^.* /gitweb.cgi/$0 [L,PT]
Reguła przepisywania gwarantuje, że istniejące pliki statyczne będą poprawnie obsługiwane, podczas gdy
każdy inny adres URL zostanie przekazany do gitweb jako parametr PATH_INFO.
Ogłoszenie że w tym przypadku nie potrzebujesz specjalnych ustawień dla @stylesheets, $my_uri i
$home_link, ale tracisz dostęp „głupiego klienta” do katalogu .git swojego projektu (opisanego w
Sekcja „Pojedynczy adres URL dla gitweb i pobierania”). Możliwym obejściem tego ostatniego jest
następujące: w katalogu głównym projektu (np /pub/git) mają nazwy projektów bez a
rozszerzenie .git (np /pub/git/projekt zamiast /pub/git/projekt.git) i skonfiguruj
Apache w następujący sposób:
SerwerAlias git.example.com
Dokument Główny /var/www/gitweb
Dopasowanie aliasu ^(/.*?)(\.git)(/.*)?$ /pub/git$1$3
Opcje ExecCGI
AddHandler skrypt cgi cgi
DirectoryIndex gitweb.cgi
RewriteEngine On
RewriteCond% {REQUEST_FILENAME}!-F
RewriteCond% {REQUEST_FILENAME}!-D
RewriteRule ^.* /gitweb.cgi/$0 [L,PT]
Dodatkowy AliasMatch sprawia, że tak jest
http://git.example.com/project.git
da surowy dostęp do katalogu Git projektu (aby projekt mógł zostać sklonowany), natomiast
http://git.example.com/project
zapewni przyjazny dla człowieka dostęp do gitweb.
To rozwiązanie nie jest w 100% kuloodporne w tym sensie, że jeśli jakiś projekt ma nazwany ref
(gałąź, znacznik) zaczynający się od git/, następnie ścieżki takie jak
http://git.example.com/project/command/abranch..git/abranch
zakończy się niepowodzeniem z błędem 404.
Korzystaj z gitweb online, korzystając z usług onworks.net