Git - GitWeb



GitWeb 是 Git 附帶的一個 CGI 指令碼。它是一個基於 Web 的介面,用於瀏覽 Git 倉庫。

使用此 Web 介面,使用者可以瀏覽和導航 Git 倉庫的內容,無需與命令列互動。GitWeb 是一個使用者友好的工具,開發人員和團隊通常使用它來檢視倉庫的程式碼、提交、分支、標籤等。

主要功能

以下是 GitWeb 的一些主要功能:

  • 瀏覽倉庫 - 您可以像瀏覽檔案資源管理器一樣瀏覽倉庫的內容,即檔案和目錄。

  • 提交歷史 - 顯示與提交相關的所有資訊,例如提交訊息、作者、時間戳等。

  • 檢視差異 - 您可以檢視程式碼中兩個分支或提交之間的差異。

  • 瀏覽分支和標籤 - 您可以瀏覽倉庫中所有可用的分支和標籤。

  • 輕鬆搜尋 - 您還可以廣泛地在倉庫中搜索,可以透過檔名、提交訊息或作者姓名進行搜尋。

設定 GitWeb

GitWeb 可以與 Web 伺服器(如ApacheNginx)一起安裝,也可以安裝在輕量級伺服器(如lighttpd)上。讓我們看看與 Web 伺服器一起設定 GitWeb 的分步指南

先決條件

以下是安裝 GitWeb 的先決條件:

  • 基於 Linux 的系統,例如 Ubuntu、Debian、CentOS 等。

  • 系統上已安裝 Git。

  • 已安裝 Web 伺服器,例如 Apache、Nginx。

  • 伺服器上可用的 Git 倉庫。

步驟

1. 安裝 GitWeb - 通常,GitWeb 包含在 Git 軟體包中,也可以作為單獨的軟體包安裝。

在 Ubuntu/Debian 上

sudo apt update
sudo apt install gitweb

在 CentOS 上

sudo yum install gitweb

2. 安裝 Web 伺服器 (Apache) - 如果您沒有 Web 伺服器,請安裝它。

在 Ubuntu/Debian 上

sudo apt install apache2

在 CentOS 上

sudo yum install httpd

伺服器安裝後,確保它正在執行。執行以下命令來執行 Web 伺服器:

#For Ubuntu/Debian
sudo systemctl start apache2

#For CentOS
sudo systemctl start httpd

3. 配置 GitWeb - 成功安裝後配置 GitWeb。

在 Ubuntu/Debian 上

GitWeb 的配置檔案位於:

/etc/gitweb.conf

確保 GitWeb 指向您倉庫的路徑已正確配置。例如,如果您的 Git 倉庫儲存在/var/lib/git中,您的gitweb.conf檔案應如下所示:

$projectroot = "/var/lib/git";
$git_temp = "/tmp";

確保倉庫根目錄($projectroot)指向儲存 Git 倉庫的目錄。

4. 配置 Apache 以服務 GitWeb - 之後,您需要透過建立配置檔案來配置 Apache 伺服器以服務 GitWeb。

在 Ubuntu/Debian 上

GitWeb 的配置檔案位於:

sudo nano /etc/apache2/sites-available/gitweb.conf

您需要在您的檔案中新增以下配置詳細資訊:

<VirtualHost *:80>
    ServerAdmin admin@example.com
    DocumentRoot /usr/share/gitweb
    Alias /gitweb /usr/share/gitweb

    <Directory /usr/share/gitweb>
        Options +ExecCGI
        AddHandler cgi-script .cgi
        DirectoryIndex gitweb.cgi
        Require all granted
    </Directory>

    SetEnv  GITWEB_CONFIG  /etc/gitweb.conf
</VirtualHost>

啟用站點和所需的模組

sudo a2enmod cgi
sudo a2ensite gitweb.conf

重新啟動 Apache 伺服器

sudo systemctl restart apache2

在 CentOS 上

設定類似,但您可能需要修改/etc/httpd/conf.d/gitweb.conf或在/etc/httpd/conf/httpd.conf中建立一個新的虛擬主機配置。

更改後重新啟動 Apache。

sudo systemctl restart httpd

5. 訪問 GitWeb

配置完成後,您可以透過在瀏覽器中導航到以下地址來訪問 GitWeb:

http://your-server-ip/gitweb

使用輕量級伺服器設定 GitWeb

為了以這種基於 Web 的方式檢視我們的專案,我們可以建立一個臨時的 GitWeb 例項。為此,可以使用輕量級 Web 伺服器。

  • 使用 GitWeb:在 Linux 上,我們可能已經安裝了 lighttpd,這是一個輕量級 Web 伺服器。

  • 在這種情況下,可以在我們的專案目錄中使用命令 `git instaweb` 來啟動 GitWeb。

  • 對於執行 Leopard 或更高版本的 macOS 使用者,Ruby 已預裝幷包含 webrick,這是一個輕量級 Web 伺服器。

  • 要設定 GitWeb,請使用 webrick 和 `git instaweb` 命令。

如果可用lighttpd,則在啟動 `git instaweb` 時預設使用它。

同樣,如果需要,我們可以使用 `--httpd` 選項來指定要使用的 Web 伺服器。

它是這樣工作的:

git instaweb --httpd=webrick

使用此命令,指示 Git 使用 webrick 而不是標準的 lighttpd 啟動 GitWeb。

  • INFO WEBrick:表示 webrick 伺服器已啟動。

  • INFO ruby:顯示當前安裝的 Ruby 版本,這很重要,因為 webrick 是一個基於 Ruby 的伺服器。

  • 我們可以透過使用該命令在埠 1234 上啟動 HTTP 伺服器並立即將我們的 Web 瀏覽器開啟到該埠來訪問我們的 GitWeb 介面。

  • 此係統易於使用,並且不需要太多工作。

  • 完成後,我們將使用帶有 `--stop` 選項的相同命令來關閉伺服器。

  • 伺服器將關閉,埠將因此開啟。

git instaweb --httpd=webrick --stop
  • 為了使 GitWeb 持續在伺服器上為我們的團隊或開源專案執行,我們必須設定 GitWeb CGI 指令碼以與我們的標準 Web 伺服器一起工作。

  • 我們應該首先尋找 GitWeb 軟體包,該軟體包可透過許多 Linux 系統上的軟體包管理器(例如 `apt` 或 `dnf`)安裝。

如果軟體包不可用,我們可以透過下載 Git 原始碼後建立 Git 原始碼附帶的 CGI 指令碼,手動安裝 GitWeb。

git clone https://github.com/example/repo.git
cd repo/
make GITWEB_PROJECTROOT="/srv/repositories" prefix=/usr/local 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/

接下來,配置 Apache 以使用 GitWeb 指令碼的 CGI。

編輯 Apache 配置檔案(例如 ` /etc/apache2/sites-available/gitweb.conf`)並新增以下 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>

新增配置後,重新啟動 Apache 並啟用該站點和任何必需的模組。

sudo a2enmod cgi
sudo a2ensite gitweb.conf
sudo systemctl restart apache2

GitWeb 通常用於在內部託管 Git 倉庫的環境中,允許團隊擁有簡單的 Web 介面,而無需使用 GitHub 或 GitLab 等外部服務。

廣告