#git-repository #git #version-control #cli

app gmg

git 仓库命令行管理器

3 个版本

0.1.2 2023年5月22日
0.1.1 2023年5月18日
0.1.0 2023年3月18日

#1 in #vcs

每月 37 次下载

Apache-2.0

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