3 个版本
0.1.2 | 2023年5月22日 |
---|---|
0.1.1 | 2023年5月18日 |
0.1.0 | 2023年3月18日 |
#1 in #vcs
每月 37 次下载
37KB
1K SLoC
gmg - 超轻量级 git 管理器
想法
想法很简单:没有额外的服务器层,没有额外的代理。只是纯 git 和 ssh。
设置
设置脚本是为 Debian/Ubuntu 系统制作的
-
启动一个空的 Debian/Ubuntu 容器
-
gmg 需要系统 git 2.34 或以上版本。因此,请使用现代系统或手动安装较新的 git。
-
设置 ssh 服务器
-
从 发布 下载 gmg 二进制文件并将其放在某处,例如 /usr/local/bin/
-
将存储库中的 "share" 文件夹复制到容器中
-
在容器中执行(其中 org 是您的组织,org.com 是您的组织域名)
cd share && ./gmg-setup git@org [email protected]
就是这样。
设置创建 /git 文件夹以存储仓库,并配置全局更新钩子以保护分支。
快速入门
创建新的仓库
gmg repo create test -D "My test repo"
仓库路径可以包含组。例如 "tests/test"。gmg 使用仓库名称作为 POSIX 组来管理访问,因此完整的仓库名称(包括组)不能超过 30 个符号。
创建用户
gmg user create bob "Bob M" -
将公共 ssh 密钥文件复制到 stdin(或使用文件名而不是 "-" 参数)
授予用户对仓库的访问权限
gmg user grant bob test
克隆
仓库可以克隆为
git clone ssh://bob@server/git/test
此外,用户在获得访问权限后,在他们的主目录中会创建符号链接
git clone ssh://bob@server:test
将用户设置为维护者
维护者可以写入受保护的分支,其他人则不允许。
gmg maintainer set bob test
其他操作
输入
gmg -h
所有可能的命令。
与 cgit 集成
gmg 自动生成与 cgit 兼容的配置。这些配置为每个用户单独生成,使用 /etc/cgitrc 作为基础配置。
- 安装 cgit 和 NGINX
apt -y install cgit nginx fcgiwrap
-
将 share/cgit-gmg.cgi 放入 /usr/local/bin/
-
使用以下 NGINX 配置
server {
listen 80;
rewrite ^/(.*)/$ https://your-external.domain/$1 permanent;
rewrite ^/cgit-css/(.*) /$1 last;
root /usr/share/cgit;
try_files $uri @cgit;
auth_pam "Git";
auth_pam_service_name "nginx";
location @cgit {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /usr/local/bin/cgit-gmg.cgi;
fastcgi_param PATH_INFO $uri;
fastcgi_param QUERY_STRING $args;
fastcgi_param HTTP_HOST $server_name;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
}
}
- 要使用 cgit,用户必须设置系统密码
依赖项
~4–14MB
~171K SLoC