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 [email protected]
    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 等外部服务。

广告