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 git@org.com
就是这样。
设置创建 /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