章節 ▾ 第二版

4.7 Git 伺服器上的 GitWeb

GitWeb

現在你的專案已經有了基本的讀寫和只讀訪問許可權,你可能想設定一個簡單的基於網路的檢視器。Git自帶一個名為GitWeb的CGI指令碼,有時會用於此目的。

The GitWeb web-based user interface
圖 49. GitWeb 的基於Web的使用者介面

如果你想看看GitWeb在你的專案中會是什麼樣子,Git帶有一個命令,如果你係統上安裝了lighttpdwebrick之類的輕量級Web伺服器,就可以啟動一個臨時例項。在Linux機器上,lighttpd通常已安裝,因此你可以在專案目錄中輸入git instaweb來執行它。如果你執行的是macOS,Leopard預裝了Ruby,所以webrick可能是你最好的選擇。要使用非lighttpd處理器啟動instaweb,你可以使用--httpd選項執行它。

$ git instaweb --httpd=webrick
[2009-02-21 10:02:21] INFO  WEBrick 1.3.1
[2009-02-21 10:02:21] INFO  ruby 1.8.6 (2008-03-03) [universal-darwin9.0]

這會在埠1234上啟動一個HTTPD伺服器,然後自動啟動一個Web瀏覽器並開啟該頁面。這對於你來說非常容易。當你完成並想關閉伺服器時,你可以使用--stop選項執行相同的命令。

$ git instaweb --httpd=webrick --stop

如果你想為你的團隊或你託管的開源專案在伺服器上一直執行Web介面,你需要設定CGI指令碼,使其由你的普通Web伺服器提供服務。一些Linux發行版提供了gitweb軟體包,你可以透過aptdnf安裝,所以你可能想先嚐試一下。我們將非常快速地介紹手動安裝GitWeb。首先,你需要獲取Git原始碼(GitWeb隨附),並生成自定義CGI指令碼。

$ git clone https://git.kernel.org/pub/scm/git/git.git
$ cd git/
$ make GITWEB_PROJECTROOT="/srv/git" prefix=/usr gitweb
    SUBDIR gitweb
    SUBDIR ../
make[2]: `GIT-VERSION-FILE' is up to date.
    GEN gitweb.cgi
    GEN static/gitweb.js
$ sudo cp -Rf gitweb /var/www/

請注意,你必須使用GITWEB_PROJECTROOT變數告訴命令在哪裡找到你的Git倉庫。現在,你需要讓Apache對該指令碼使用CGI,為此你可以新增一個VirtualHost。

<VirtualHost *:80>
    ServerName gitserver
    DocumentRoot /var/www/gitweb
    <Directory /var/www/gitweb>
        Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
        AllowOverride All
        order allow,deny
        Allow from all
        AddHandler cgi-script cgi
        DirectoryIndex gitweb.cgi
    </Directory>
</VirtualHost>

再次強調,GitWeb可以透過任何支援CGI或Perl的Web伺服器提供服務;如果你喜歡使用其他方式,設定起來也不會困難。此時,你應該能夠訪問http://gitserver/來線上檢視你的倉庫。

scroll-to-top