



























昨天看 阮老师周刊 的时候,发现一个有趣的工具── stagit ,这个小工具可以从 Git 存储库生成包含 Git 信息的纯静态 HTML 网页。

特性:
限制:
对于个人用户来说,也许您并不需要 Gitea、GitLab、Gogs 或 SourceHut2 等可以自托管的 Git 服务。相反,使用 stagit 生成的静态 Git 存储库就已足够。
stagit 是完全用 C 写的,在 *nix 系统上安装 GCC 编译器和 Make 构建工具
Windows 用户可以使用 WSL2
# Debian/Ubuntu
sudo apt install -y gcc make
# Fedora/CentOS
sudo yum install -y gcc make
拉取 stagit 源码,编译安装
git clone git://git.codemadness.org/stagit \
&& cd stagit \
&& make \
&& sudo make install
如果在编译的时候缺少 git2.h 头文件,出现以下报错
cc -o stagit.o -c stagit.c -I/usr/local/include -D_XOPEN_SOURCE=700 -D_DEFAULT_SOURCE -D_BSD_SOURCE
stagit.c:15:10: fatal error: 'git2.h' file not found
#include <git2.h>
^~~~~~~~
1 error generated.
make: *** [stagit.o] Error 1
在 x86_64 和 ARM64/v8 的 Debian 11测试发现,Debian 上需要一些额外步骤(Fedora/CentOS 无测试)
# Debian 额外步骤开始
sudo apt update \
&& sudo apt install cmake libssl-dev libcurl4-gnutls-dev zlib1g-dev unzip
# 从源码开始
wget https://github.com/libgit2/libgit2/archive/refs/tags/v1.6.4.zip \
&& unzip v1.6.4.zip \
&& cd libgit2-1.6.4
vim CMakeLists.txt
# 将下面一行中的 ON 改为 OFF
option(BUILD_TESTS "Build Tests using the Clar suite" ON)
# 开始编译安装
mkdir build && cd build \
&& cmake .. \
&& cmake --build . \
&& cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local \
&& sudo cmake --build . --target install
# Debian 额外步骤结束
安装 libgit2 库
# Debian/Ubuntu
sudo apt install -y libgit2-dev
# Fedora/CentOS
sudo yum install -y libgit2-devel
# macOS
brew install libgit2
在 macOS 使用 Homebrew 安装 libgit2,手动查看安装路径
brew --prefix libgit2
# 输出
/opt/homebrew/opt/libgit2
然后编辑 stagit 的 Makefile
# 修改这两行
# LIBGIT_INC = -I/usr/local/include
# LIBGIT_LIB = -L/usr/local/lib -lgit2
# 替换实际路径
LIBGIT_INC = -I/opt/homebrew/opt/libgit2/include
LIBGIT_LIB = -L/opt/homebrew/opt/libgit2/lib -lgit2
继续执行编译安装,然后可以用 man 查看 stagit 和 stagit-index 的用户手册
man stagit
man stagit-index
我们暂时不需要掌握 stagit 和 stagit-index 的实际用法
创建一个工作目录,专门用来生成 stagit 站点,我创建了名为 git-source 的目录,准备:
Git 存储库里面的 owner 和 description 是特殊文件,用于单独显示每个存储库的所有者名称和描述,直接写入纯文本内容即可。下面是两个 Git 存储库的示例,省略了部分文件。
.# git-source 目录(绝对路径为 /Users/dejavu/Space/git-source)
├── favicon.png
├── logo.png
├── htmldir
│ ├── example_create.sh # 生成多个 Git 存储库静态页面的脚本
│ └── example_post-receive.sh # Git 的 post-receive hook 脚本,暂且按下不表
├── repos # 包含您的 Git 存储库
│ ├── self-hosted # 存储库一,内容已省略
│ └── xvo.es # 存储库二,示例内容如下
│ ├── 404.html
│ ├── LICENSE # 存储库许可证
│ ├── owner # 存储库所有者名称
│ ├── README.md # 存储库说明
│ ├── _redirects
│ ├── description # 存储库描述
│ ├── index.html
│ ├── lists.html
│ └── vercel.json
└── style.css
编辑 example_create.sh,将 reposdir 的值设置为包含您的 Git 存储库的 绝对路径,比如
reposdir="/Users/dejavu/Space/git-source/repos"
赋予脚本可执行权限
chmod +x example_create.sh
在 git-source 下执行脚本,生成静态网页
生成的网页可以托管到任意的静态托管服务上,如 GitHub Pages、Cloudflare Pages 等。

此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。