亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

directory search
Guides gitattributes giteveryday gitglossary gitignore gitmodules gitrevisions gittutorial gitworkflows Administration git archive git bundle git clean git filter-branch git fsck git gc git instaweb git reflog Basic Snapshotting git add git commit git diff git mv git reset git rm git status Branching and Merging git branch git checkout git log git merge git mergetool git stash git tag Debugging git bisect git blame git grep Email git am git format-patch git request-pull git send-email External Systems git fast-import git svn Getting and Creating Projects git clone git init Git git annotate git archimport git bisect-lk2009 git check-attr git check-mailmap git check-ref-format git checkout-index git cherry git citool git column git credential git credential-cache git credential-store git cvsexportcommit git cvsimport git cvsserver git diff-files git diff-tree git difftool git fast-export git fetch-pack git fmt-merge-msg git get-tar-commit-id git gui git http-backend git http-fetch git http-push git imap-send git index-pack git interpret-trailers git ls-remote git ls-tree git mailinfo git mailsplit git merge-file git merge-index git merge-one-file git merge-tree git mktag git mktree git name-rev git notes git p4 git pack-objects git pack-redundant git pack-refs git parse-remote git patch-id git prune git prune-packed git quiltimport git receive-pack git remote-ext git remote-fd git remote-testgit git repack git replace git rerere git send-pack git sh-i18n git sh-setup git shell git show-branch git show-index git stripspace git unpack-file git unpack-objects git upload-archive git upload-pack git var git verify-commit git verify-tag git whatchanged git worktree Inspection and Comparison git describe git shortlog git show Miscellaneous api credentials api index gitcli gitcore tutorial gitcredentials gitcvs migration gitdiffcore githooks gitk gitnamespaces gitremote helpers gitrepository layout gitsubmodules gittutorial 2 gitweb gitweb.conf pack format User Manual Patching git apply git cherry-pick git rebase git revert Plumbing Commands git cat-file git check-ignore git commit-tree git count-objects git diff-index git for-each-ref git hash-object git ls-files git merge-base git read-tree git rev-list git rev-parse git show-ref git symbolic-ref git update-index git update-ref git verify-pack git write-tree Server Admin git daemon git update-server-info Setup and Config git git config git help Sharing and Updating Projects git fetch git pull git push git remote git submodule
characters

Name

gitweb  -  Git web界面(Git倉(cāng)庫(kù)的前端)

概要

要開(kāi)始使用gitweb,請(qǐng)從Git存儲(chǔ)庫(kù)運(yùn)行g(shù)it-instaweb [1]。這將配置并啟動(dòng)您的Web服務(wù)器,并運(yùn)行Web瀏覽器指向gitweb。

描述

Gitweb為Git存儲(chǔ)庫(kù)提供了一個(gè)Web界面。其功能包括:

  • 使用公共根查看多個(gè)Git存儲(chǔ)庫(kù)。

  • 瀏覽版本庫(kù)的每個(gè)版本。

  • 在任何修訂版中查看存儲(chǔ)庫(kù)中文件的內(nèi)容。

  • 查看分支的修訂日志,文件和目錄的歷史記錄,查看什么時(shí)候由誰(shuí)改變。

  • 查看任何文件的責(zé)任/注釋詳細(xì)信息(如果啟用)。

  • 為任何分支生成提交的RSS和Atom提要。這些供稿在現(xiàn)代網(wǎng)絡(luò)瀏覽器中可自動(dòng)發(fā)現(xiàn)。

  • 查看修訂版本中更改的所有內(nèi)容,并逐個(gè)查看修訂版本,查看版本庫(kù)的歷史記錄。

  • 查找提交的消息與提供的搜索詞匹配的提交。

組態(tài)

gitweb的行為的各個(gè)方面可以通過(guò)配置文件gitweb_config.perl/etc/gitweb.conf。有關(guān)詳細(xì)信息,請(qǐng)參閱gitweb.conf [5]。

庫(kù)

Gitweb可以顯示來(lái)自一個(gè)或多個(gè)Git存儲(chǔ)庫(kù)的信息。這些存儲(chǔ)庫(kù)必須全部在本地文件系統(tǒng)上,并且必須共享公共存儲(chǔ)庫(kù)的根目錄,即全部位于單個(gè)父存儲(chǔ)庫(kù)下(另請(qǐng)參閱“高級(jí)Web服務(wù)器設(shè)置”部分,“具有多個(gè)項(xiàng)目的根目錄的Web服務(wù)器配置”小節(jié))。

our $projectroot = '/path/to/parent/directory';

$projectrootis 的默認(rèn)值/pub/git。您可以在構(gòu)建gitweb時(shí)通過(guò)GITWEB_PROJECTROOT構(gòu)建配置變量來(lái)更改它。

默認(rèn)情況下,所有Git倉(cāng)庫(kù)$projectroot都是可見(jiàn)的,并可用于gitweb。默認(rèn)情況下,通過(guò)掃描$projectrootGit存儲(chǔ)庫(kù)的目錄生成項(xiàng)目列表(對(duì)于更精確的對(duì)象數(shù)據(jù)庫(kù); gitweb對(duì)工作區(qū)域不感興趣,并且最適合顯示“裸”存儲(chǔ)庫(kù))。

gitweb中存儲(chǔ)庫(kù)的名稱(chēng)是其$GIT_DIR(它的對(duì)象數(shù)據(jù)庫(kù))相對(duì)于的路徑$projectroot。因此,存儲(chǔ)庫(kù)$ repo可以在“$ projectroot / $ repo”找到。

項(xiàng)目列表文件格式

您可以通過(guò)掃描從$ projectroot開(kāi)始的文件系統(tǒng)來(lái)找到存儲(chǔ)庫(kù),而不是讓gitweb通過(guò)從$ projectroot開(kāi)始掃描文件系統(tǒng)來(lái)找到存儲(chǔ)庫(kù),您可以通過(guò)設(shè)置$projects_list指向帶有項(xiàng)目列表的純文本文件(以及其他信息)來(lái)提供預(yù)先生成的可見(jiàn)項(xiàng)目列表。

該文件使用以下格式:

  • 每行一個(gè)記錄(用于項(xiàng)目/存儲(chǔ)庫(kù)); 不支持行延續(xù)(換行符轉(zhuǎn)義)。

  • 前導(dǎo)和尾隨空白被忽略。

  • 空白分隔的字段; 任何運(yùn)行的空白都可以用作字段分隔符(Perl的“ split(" ", $line)” 規(guī)則)。

  • 字段使用RFC 3986第2.1節(jié)(百分比編碼)中定義的修改的URI編碼,或者更確切地說(shuō),“查詢(xún)字符串編碼”(請(qǐng)參閱https://en.wikipedia.org/wiki/Query_string#URL_encoding),區(qū)別在于SP (“”)可以編碼為“+”(因此“+”必須也是百分比編碼的)。保留字符為:“%”(用于編碼),“+”(可用于編碼空格),Perl中定義的所有空白字符,包括SP,TAB和LF(用于分隔記錄中的字段)。

  • 當(dāng)前識(shí)別的字段是:<存儲(chǔ)庫(kù)路徑>存儲(chǔ)庫(kù)GIT_DIR的路徑,相對(duì)于$projectroot 作為存儲(chǔ)庫(kù)所有者顯示的<存儲(chǔ)庫(kù)所有者>,最好是全名或電子郵件,或兩者兼而有之

您可以TXT直接從gitweb 使用project_index操作(項(xiàng)目列表頁(yè)面上的鏈接)生成項(xiàng)目列表索引文件; 另請(qǐng)參閱下面的“使用gitweb生成項(xiàng)目列表”一節(jié)。

示例內(nèi)容:

foo.git       Joe+R+Hacker+<joe@example.com>foo/bar.git   O+W+Ner+<owner@example.org>

默認(rèn)情況下,這個(gè)文件只控制項(xiàng)目列表頁(yè)面上可見(jiàn)的項(xiàng)目(注意,沒(méi)有指向正確識(shí)別的Git存儲(chǔ)庫(kù)的項(xiàng)目將不會(huì)被gitweb顯示)。即使項(xiàng)目在項(xiàng)目列表頁(yè)面上不可見(jiàn),您仍然可以通過(guò)手工制作gitweb URL來(lái)查看它。通過(guò)將$strict_export配置變量(參見(jiàn)gitweb.conf [5])設(shè)置為真值,您可以只允許查看也顯示在概覽頁(yè)面上的存儲(chǔ)庫(kù)(即只有項(xiàng)目列表文件中明確列出的項(xiàng)目才可訪(fǎng)問(wèn))。

使用gitweb生成項(xiàng)目列表

我們假設(shè)GITWEB_CONFIG具有默認(rèn)的Makefile值,即gitweb_config.perl。將以下內(nèi)容放入gitweb_make_index.perl文件中:

read_config_file("gitweb_config.perl");$projects_list = $projectroot;

然后創(chuàng)建以下腳本以適合GITWEB_LIST構(gòu)建配置變量(或$projects_listgitweb config中的變量)的格式獲取項(xiàng)目列表:

#!/bin/shexport GITWEB_CONFIG="gitweb_make_index.perl"export GATEWAY_INTERFACE="CGI/1.1"export HTTP_ACCEPT="*/*"export REQUEST_METHOD="GET"export QUERY_STRING="a=project_index"perl -- /var/www/cgi-bin/gitweb.cgi

運(yùn)行該腳本并將其輸出保存到文件中。這個(gè)文件然后可以用作項(xiàng)目列表文件,這意味著你可以設(shè)置$projects_list它的文件名。

控制對(duì)Git存儲(chǔ)庫(kù)的訪(fǎng)問(wèn)

默認(rèn)情況下,所有Git倉(cāng)庫(kù)$projectroot都是可見(jiàn)的,并可用于gitweb。然而,你可以配置gitweb控制對(duì)存儲(chǔ)庫(kù)的訪(fǎng)問(wèn)。

  • 如“項(xiàng)目列表文件格式”部分所述,您可以通過(guò)在項(xiàng)目列表文件中選擇性地包含存儲(chǔ)庫(kù)并將gitweb配置變量設(shè)置為指向它來(lái)控制哪些項(xiàng)目可見(jiàn)$projects_list。通過(guò)$strict_export設(shè)置,項(xiàng)目列表文件也可用于控制哪些存儲(chǔ)庫(kù)可用。

  • 您可以將gitweb配置為僅列出并允許通過(guò)$export_okgitweb配置文件中的變量查看顯式導(dǎo)出的存儲(chǔ)庫(kù); 請(qǐng)參閱gitweb.conf [5]手冊(cè)頁(yè)。如果它的計(jì)算結(jié)果為true,那么gitweb只有$export_ok在它的對(duì)象數(shù)據(jù)庫(kù)中存在名為by的文件時(shí)才顯示存儲(chǔ)庫(kù)(如果目錄有指定的魔術(shù)文件$export_ok)。例如默認(rèn)情況下git-daemon [1](除非使用--export-all選項(xiàng))允許僅為那些具有git-daemon-export-ok文件的存儲(chǔ)庫(kù)提取數(shù)據(jù)。添加我們的$ export_ok =“git-daemon-export-ok”;

使gitweb顯示,并只允許訪(fǎng)問(wèn)那些可以通過(guò)git://協(xié)議獲取的存儲(chǔ)庫(kù)。

  • 最后,可以指定一個(gè)任意perl子例程,這個(gè)子例程會(huì)被每個(gè)資源庫(kù)調(diào)用以確定它是否可以導(dǎo)出。子例程接收項(xiàng)目(存儲(chǔ)庫(kù))的絕對(duì)路徑作為其唯一參數(shù)(即“$ projectroot / $ project”)。例如,如果您使用mod_perl來(lái)運(yùn)行腳本,并為您的存儲(chǔ)庫(kù)配置了愚蠢的HTTP協(xié)議認(rèn)證,那么只有當(dāng)用戶(hù)有權(quán)讀取這些文件時(shí),才可以使用以下掛接:$ export_auth_hook = sub {use Apache2 :: SubRequest(); 使用Apache2 :: Const -compile => qw(HTTP_OK); my $ path =“$ _0 / HEAD”; 我的$ r = Apache2 :: RequestUtil->請(qǐng)求; my $ sub = $ r-> lookup_file($ path); 返回$子>文件名eq $路徑&& $子>狀態(tài)== Apache2 ::常量:: HTTP_OK; };

每個(gè)版本庫(kù)的gitweb配置

您可以通過(guò)在GIT_DIRGit存儲(chǔ)庫(kù)中創(chuàng)建文件或通過(guò)設(shè)置一些repo配置變量(in GIT_DIR/config,參見(jiàn)git-config [1])來(lái)配置gitweb中顯示的單個(gè)存儲(chǔ)庫(kù)。

您可以在存儲(chǔ)庫(kù)中使用以下文件:

README.html

<div>塊元素中的gitweb項(xiàng)目“摘要”頁(yè)面中包含的html文件(HTML片段)。您可以使用它來(lái)獲取項(xiàng)目的更長(zhǎng)描述,提供鏈接(例如項(xiàng)目的主頁(yè))等。只有在XSS預(yù)防功能關(guān)閉的情況下才能識(shí)別這種情況($prevent_xss錯(cuò)誤,請(qǐng)參閱gitweb.conf [5]); 在未來(lái)XSS預(yù)防開(kāi)啟時(shí)安全地包含自述文件的方法可能會(huì)被制定出來(lái)。

description (or gitweb.description)

Short(簡(jiǎn)稱(chēng)為$projects_list_description_width項(xiàng)目列表頁(yè)面,默認(rèn)為25個(gè)字符;請(qǐng)參閱gitweb.conf [5])(項(xiàng)目庫(kù)的項(xiàng)目)單行描述。純文本文件; HTML將被轉(zhuǎn)義。默認(rèn)設(shè)置為

Unnamed repository; edit this file to name it for gitweb.

在創(chuàng)建存儲(chǔ)庫(kù)期間通常安裝在模板中/usr/share/git-core/templates/。您可以使用gitweb.descriptionrepo配置變量,但該文件優(yōu)先。

category (or gitweb.category)

項(xiàng)目的單線(xiàn)類(lèi)別,用于在$projects_list_group_categories啟用時(shí)對(duì)項(xiàng)目進(jìn)行分組。默認(rèn)情況下(文件和配置變量不存在),未分類(lèi)的項(xiàng)目放在$project_list_default_category類(lèi)別中。您可以使用gitweb.categoryrepo配置變量,但該文件優(yōu)先。

配置變量$projects_list_group_categories$project_list_default_category描述在gitweb.conf [5]

cloneurl (or multiple-valued gitweb.url)

帶有存儲(chǔ)庫(kù)URL的文件(用于克隆和提取),每行一個(gè)。顯示在項(xiàng)目摘要頁(yè)面中。您可以使用多值gitweb.url存儲(chǔ)庫(kù)配置變量,但該文件優(yōu)先。

這是每個(gè)存儲(chǔ)庫(kù)增強(qiáng)/版本的基于全局前綴的@git_base_url_listgitweb配置變量(請(qǐng)參閱gitweb.conf [5])。

gitweb.owner

您可以使用gitweb.owner存儲(chǔ)庫(kù)配置變量來(lái)設(shè)置存儲(chǔ)庫(kù)的所有者。它顯示在項(xiàng)目列表和摘要頁(yè)面中。

如果未設(shè)置,則使用文件系統(tǒng)目錄的所有者(通過(guò)GECOS字段,即來(lái)自getpwuid(3)的實(shí)名字段),如果$projects_list未設(shè)置(gitweb掃描$projectroot存儲(chǔ)庫(kù)); 如果$projects_list指向使用存儲(chǔ)庫(kù)列表的文件,則項(xiàng)目所有者將默認(rèn)為此文件對(duì)給定存儲(chǔ)庫(kù)的值。

various gitweb.* config variables (in config)

閱讀%feature哈希的詳細(xì)列表和描述。另請(qǐng)參閱gitweb.conf中的“配置gitweb功能”部分[5]

行動(dòng)和網(wǎng)址

Gitweb可以使用基于URL的path_info(組件),或者它可以通過(guò)查詢(xún)參數(shù)傳遞所有必要的信息。典型的gitweb網(wǎng)址分為五個(gè)部分:

.../gitweb.cgi/<repo>/<action>/<revision>:/<path>?<arguments>

回購(gòu)

操作將在其上執(zhí)行的存儲(chǔ)庫(kù)。

除了列出所有可用項(xiàng)目的所有操作(無(wú)論采用何種形式),都需要此參數(shù)。

action

將要運(yùn)行的操作。默認(rèn)為projects_list如果沒(méi)有設(shè)置回購(gòu),summary否則。

調(diào)整

顯示修訂。默認(rèn)為HEAD。

path

執(zhí)行操作的<repository>中的路徑,用于需要它的操作。

arguments

任何控制動(dòng)作行為的參數(shù)。

某些操作需要或允許指定兩個(gè)修訂版本,有時(shí)甚至包含兩個(gè)路徑名。在大多數(shù)通用形式中,這樣的基于路徑信息(組件)的gitweb URL看起來(lái)像這樣:

.../gitweb.cgi/<repo>/<action>/<revision_from>:/<path_from>..<revision_to>:/<path_to>?<arguments>

每個(gè)動(dòng)作都以子例程的形式實(shí)現(xiàn),并且必須存在于%動(dòng)作哈希中。某些操作默認(rèn)情況下處于禁用狀態(tài),必須通過(guò)功能機(jī)制啟用。例如,要啟用blame視圖,請(qǐng)將以下內(nèi)容添加到gitweb配置文件中:

$feature{'blame'}{'default'} = [1];

操作:

標(biāo)準(zhǔn)行動(dòng)是:

project_list

列出可用的Git存儲(chǔ)庫(kù)。如果在URL中未指定存儲(chǔ)庫(kù),則這是默認(rèn)命令。

summary

顯示關(guān)于給定存儲(chǔ)庫(kù)的摘要 如果在URL中沒(méi)有指定操作,則這是默認(rèn)命令,并且只指定存儲(chǔ)庫(kù)。

heads   remotes

列出給定存儲(chǔ)庫(kù)中的所有本地或全部遠(yuǎn)程跟蹤分支。

后者默認(rèn)情況下不可用,除非已配置。

tags

列出給定存儲(chǔ)庫(kù)中的所有標(biāo)記(輕量級(jí)和注釋?zhuān)?/p>

blob   tree

在給定的版本中顯示給定存儲(chǔ)庫(kù)路徑中的文件和目錄。如果在URL中沒(méi)有指定任何操作,并且給出路徑,則這是默認(rèn)命令。

blob_plain

在給定路徑和修訂版本中,返回給定存儲(chǔ)庫(kù)中文件的原始數(shù)據(jù)。此行為的鏈接已標(biāo)記raw。

blobdiff

顯示同一文件的兩個(gè)修訂之間的差異。

blame   blame_incremental

顯示文件的責(zé)任(也稱(chēng)為注釋?zhuān)┬畔?。在每行的基礎(chǔ)上,它顯示該行最后更改的版本以及提交更改的用戶(hù)。增量版本(如果啟用了JavaScript,則會(huì)自動(dòng)使用該版本)使用Ajax向指定文件的內(nèi)容逐漸添加責(zé)備信息。

出于性能原因,此操作默認(rèn)處于禁用狀態(tài)。

提交commitdiff

顯示有關(guān)存儲(chǔ)庫(kù)中特定提交的信息。該commit視圖更詳細(xì)地顯示了有關(guān)提交的信息,該commitdiff操作顯示了給定提交的變更集。

patch

以純文本郵件格式返回提交,適用于使用git-am [1]。

tag

顯示特定的注釋標(biāo)簽(標(biāo)簽對(duì)象)。

log   shortlog

顯示給定分支的日志信息(提交消息或僅提交主題)(從給定修訂開(kāi)始)。

shortlog視圖是更緊湊; 它顯示每行一次提交。

history

從給定修訂(默認(rèn)為HEAD,即默認(rèn)分支)開(kāi)始,顯示給定存儲(chǔ)庫(kù)路徑中文件或目錄的歷史記錄。

這種觀點(diǎn)與shortlog觀點(diǎn)相似。

rss   atom

生成對(duì)存儲(chǔ)庫(kù)的更改的RSS(或Atom)訂閱源。

網(wǎng)絡(luò)服務(wù)器配置

本節(jié)介紹如何配置一些常用的Web服務(wù)器來(lái)運(yùn)行g(shù)itweb。在所有情況下,/path/to/gitweb在這些例子中是你運(yùn)行g(shù)itweb并且包含的目錄gitweb_config.perl

如果您已經(jīng)配置了一個(gè)未在此處列出的gitweb的Web服務(wù)器,請(qǐng)發(fā)送說(shuō)明,以便它們可以包含在未來(lái)版本中。

Apache作為CGI

必須將Apache配置為在安裝gitweb的目錄中支持CGI腳本。我們假設(shè)它是/var/www/cgi-bin目錄。

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"<Directory "/var/www/cgi-bin">
    Options Indexes FollowSymlinks ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all</Directory>

使用該配置,瀏覽存儲(chǔ)庫(kù)的完整路徑是:

http://server/cgi-bin/gitweb.cgi

Apache with mod_perl, via ModPerl::Registry

你可以在gitweb中使用mod_perl。您必須安裝Apache :: Registry(用于mod_perl 1.x)或ModPerl :: Registry(用于mod_perl 2.x)以啟用此支持。

假設(shè)安裝了gitweb /var/www/perl,以下Apache配置(適用于mod_perl 2.x)是合適的。

Alias /perl "/var/www/perl"<Directory "/var/www/perl">
    SetHandler perl-script
    PerlResponseHandler ModPerl::Registry
    PerlOptions +ParseHeaders
    Options Indexes FollowSymlinks +ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all</Directory>

使用該配置,瀏覽存儲(chǔ)庫(kù)的完整路徑是:

http://server/perl/gitweb.cgi

Apache與FastCGI

Gitweb與Apache和FastCGI協(xié)同工作。首先,您需要重命名,復(fù)制或?qū)itweb.cgi鏈接到gitweb.fcgi。假設(shè)gitweb安裝在/usr/share/gitweb目錄中。以下Apache配置是合適的(未測(cè)試?。?/p>

FastCgiServer /usr/share/gitweb/gitweb.cgi
ScriptAlias /gitweb /usr/share/gitweb/gitweb.cgi

Alias /gitweb/static /usr/share/gitweb/static<Directory /usr/share/gitweb/static>
    SetHandler default-handler</Directory>

使用該配置,瀏覽存儲(chǔ)庫(kù)的完整路徑是:

http://server/gitweb

高級(jí)Web服務(wù)器設(shè)置

所有這些示例都使用請(qǐng)求重寫(xiě),并且需要mod_rewrite(或等效;下面的示例是為Apache編寫(xiě)的)。

gitweb的唯一URL和抓取

如果你想為gitweb和你的http://倉(cāng)庫(kù)都有一個(gè)URL ,你可以像這樣配置Apache:

<VirtualHost *:80>
    ServerName    git.example.org
    DocumentRoot  /pub/git
    SetEnv        GITWEB_CONFIG   /etc/gitweb.conf

    # turning on mod rewrite
    RewriteEngine on

    # make the front page an internal rewrite to the gitweb script
    RewriteRule ^/$  /cgi-bin/gitweb.cgi

    # make access for "dumb clients" work
    RewriteRule ^/(.*\.git/(?!/?(HEAD|info|objects|refs)).*)?$ \                /cgi-bin/gitweb.cgi%{REQUEST_URI}  [L,PT]</VirtualHost>

上面的配置希望你的公共倉(cāng)庫(kù)可以作為可復(fù)制的Git URL和可瀏覽的gitweb界面一起存在/pub/git并且將作為它們服務(wù)http://git.domain.org/dir-under-pub-git。如果你啟動(dòng)你的git-daemon [1],--base-path=/pub/git --export-all那么你甚至可以使用git://完全相同路徑的URL。

設(shè)置環(huán)境變量GITWEB_CONFIG會(huì)告訴gitweb使用指定的文件(即在本例中/etc/gitweb.conf)作為gitweb的配置。在上面的例子中,你并不需要它。只有當(dāng)你的配置文件與內(nèi)置不同的地方(在編譯gitweb的時(shí)候)gitweb_config.perl或者/etc/gitweb.conf。有關(guān)詳細(xì)信息,請(qǐng)參閱gitweb.conf [5],特別是有關(guān)優(yōu)先級(jí)規(guī)則的信息。

如果您使用示例中的重寫(xiě)規(guī)則,則可能還需要在您的gitweb配置文件中使用/etc/gitweb.conf以下內(nèi)容(以下示例):

@stylesheets = ("/some/absolute/path/gitweb.css");$my_uri    = "/";$home_link = "/";$per_request_config = 1;

現(xiàn)在,盡管gitweb應(yīng)該在需要時(shí)創(chuàng)建HTML基本標(biāo)記(為相對(duì)鏈接設(shè)置基本URI),所以它應(yīng)該自動(dòng)工作。

具有多個(gè)項(xiàng)目根目錄的Web服務(wù)器配置

如果您想要將gitweb用于多個(gè)項(xiàng)目根目錄,您可以按照以下方式編輯Apache虛擬主機(jī)和gitweb配置文件。

虛擬主機(jī)配置(在Apache配置文件中)應(yīng)該如下所示:

<VirtualHost *:80>
    ServerName    git.example.org
    DocumentRoot  /pub/git
    SetEnv        GITWEB_CONFIG  /etc/gitweb.conf

    # turning on mod rewrite
    RewriteEngine on

    # make the front page an internal rewrite to the gitweb script
    RewriteRule ^/$  /cgi-bin/gitweb.cgi  [QSA,L,PT]

    # look for a public_git folder in unix users' home
    # http://git.example.org/~<user>/
    RewriteRule ^/\~([^\/]+)(/|/gitweb.cgi)?$        /cgi-bin/gitweb.cgi \                [QSA,E=GITWEB_PROJECTROOT:/home/$1/public_git/,L,PT]

    # http://git.example.org/+<user>/
    #RewriteRule ^/\+([^\/]+)(/|/gitweb.cgi)?$        /cgi-bin/gitweb.cgi \                 [QSA,E=GITWEB_PROJECTROOT:/home/$1/public_git/,L,PT]

    # http://git.example.org/user/<user>/
    #RewriteRule ^/user/([^\/]+)/(gitweb.cgi)?$        /cgi-bin/gitweb.cgi \                 [QSA,E=GITWEB_PROJECTROOT:/home/$1/public_git/,L,PT]

    # defined list of project roots
    RewriteRule ^/scm(/|/gitweb.cgi)?$ /cgi-bin/gitweb.cgi \                [QSA,E=GITWEB_PROJECTROOT:/pub/scm/,L,PT]
    RewriteRule ^/var(/|/gitweb.cgi)?$ /cgi-bin/gitweb.cgi \                [QSA,E=GITWEB_PROJECTROOT:/var/git/,L,PT]

    # make access for "dumb clients" work
    RewriteRule ^/(.*\.git/(?!/?(HEAD|info|objects|refs)).*)?$ \                /cgi-bin/gitweb.cgi%{REQUEST_URI}  [L,PT]</VirtualHost>

這里實(shí)際的項(xiàng)目根目錄通過(guò)GITWEB_PROJECT_ROOTweb服務(wù)器的環(huán)境變量傳遞給gitweb ,所以你需要把下面的代碼放到gitweb配置文件中(/etc/gitweb.conf在上面的例子中):

$projectroot = $ENV{'GITWEB_PROJECTROOT'} || "/pub/git";

請(qǐng)注意,這需要為每個(gè)請(qǐng)求設(shè)置,因此要么$per_request_config必須是false,要么上面的代碼必須放在引用的代碼中$per_request_config;

這些配置有兩件事。首先,<user>服務(wù)器的每個(gè)unix用戶(hù)()都能夠?yàn)g覽通過(guò)~/public_git/以下URL 找到的gitweb Git存儲(chǔ)庫(kù):

http://git.example.org/~<user>/

如果您不想在服務(wù)器上使用此功能,只需刪除第二個(gè)重寫(xiě)規(guī)則即可。

如果您已經(jīng)mod_userdir在您的虛擬主機(jī)中使用過(guò),或者您不想使用'?'作為第一個(gè)字符,則只需評(píng)論或刪除第二個(gè)重寫(xiě)規(guī)則,然后根據(jù)需要取消注釋以下內(nèi)容之一。

其次,在倉(cāng)庫(kù)中發(fā)現(xiàn)/pub/scm//var/git/會(huì)通過(guò)訪(fǎng)問(wèn)http://git.example.org/scm/http://git.example.org/var/。您可以通過(guò)添加第三和第四個(gè)重寫(xiě)規(guī)則來(lái)添加任意數(shù)量的項(xiàng)目根目錄。

PATH_INFO usage

如果你通過(guò)放在gitweb中啟用PATH_INFO用法

$feature{'pathinfo'}{'default'} = [1];

在你的gitweb配置文件中,可以設(shè)置你的服務(wù)器,使它消耗并生成表單中的URL

http://git.example.com/project.git/shortlog/sometag

即沒(méi)有gitweb.cgi部分,通過(guò)使用如下配置。此配置假定/var/www/gitweb您的Web服務(wù)器的DocumentRoot包含gitweb.cgi腳本和補(bǔ)充靜態(tài)文件(stylesheet,favicon,JavaScript):

<VirtualHost *:80>
        ServerAlias git.example.com

        DocumentRoot /var/www/gitweb        <Directory /var/www/gitweb>
                Options ExecCGI
                AddHandler cgi-script cgi

                DirectoryIndex gitweb.cgi

                RewriteEngine On
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteCond %{REQUEST_FILENAME} !-d
                RewriteRule ^.* /gitweb.cgi/$0 [L,PT]        </Directory></VirtualHost>

重寫(xiě)規(guī)則保證現(xiàn)有的靜態(tài)文件將被正確地提供,而任何其他URL將作為PATH_INFO參數(shù)傳遞給gitweb。

請(qǐng)注意,在這種情況下,你不需要特殊的設(shè)置@stylesheets$my_uri$home_link,但你失去了“啞客戶(hù)端”訪(fǎng)問(wèn)項(xiàng)目的.git迪爾斯(在“同一網(wǎng)址的GitWeb和獲取”部分所述)。后者的一個(gè)可能的解決方法如下:在你的項(xiàng)目的根目錄中(例如/pub/git)有沒(méi)有 .git擴(kuò)展名的項(xiàng)目(例如,/pub/git/project而不是/pub/git/project.git),并配置Apache如下:

<VirtualHost *:80>
        ServerAlias git.example.com

        DocumentRoot /var/www/gitweb

        AliasMatch ^(/.*?)(\.git)(/.*)?$ /pub/git$1$3        <Directory /var/www/gitweb>
                Options ExecCGI
                AddHandler cgi-script cgi

                DirectoryIndex gitweb.cgi

                RewriteEngine On
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteCond %{REQUEST_FILENAME} !-d
                RewriteRule ^.* /gitweb.cgi/$0 [L,PT]        </Directory></VirtualHost>

額外的AliasMatch使其成為可能

http://git.example.com/project.git

將原始訪(fǎng)問(wèn)該項(xiàng)目的Git目錄(以便項(xiàng)目可以克?。?,同時(shí)

http://git.example.com/project

將提供人性化的gitweb訪(fǎng)問(wèn)。

這個(gè)解決方案并不是100%的,因?yàn)槿绻硞€(gè)項(xiàng)目有一個(gè)名為ref(branch,tag)的開(kāi)頭git/,那么路徑如

http://git.example.com/project/command/abranch..git/abranch

將失敗并出現(xiàn)404錯(cuò)誤。

Bugs

請(qǐng)將任何錯(cuò)誤或功能請(qǐng)求報(bào)告給git@vger.kernel.org,將“gitweb”放在電子郵件主題中。

Previous article: Next article: