#git-repository #git #manage #git-tool #configure #rest #file

nightly bin+lib grm

管理多个 Git 仓库。您在文件中配置 Git 仓库,程序完成其余操作!

1 个不稳定版本

0.7.5 2022 年 7 月 2 日

#1684 in 开发工具

GPL-3.0-only

395KB
9K SLoC

Rust 4.5K SLoC // 0.0% comments Python 3.5K SLoC // 0.2% comments Jinja2 568 SLoC Shell 128 SLoC

GRM — Git 仓库管理器

GRM 帮助您以声明式方式管理 Git 仓库。在 TOML 文件中配置您的仓库,GRM 完成其余操作。

查看 官方文档 以获取安装和快速入门信息。

为什么?

我机器上有许多仓库。我的个人项目、分支、克隆的其他人的仓库、从未启动的项目……总之,我失去了全局观。

为了在这些机器之间同步这些仓库,我一直使用 Nextcloud。问题是,Nextcloud 对大量经常更改的小文件并不太高兴,例如 .git 中的文件。Git 也假设这些文件尽可能原子性地更新。Nextcloud 无法保证这一点,所以在同步期间执行 git status 时,总会出现一些问题。解决这些冲突真的让人头疼……

最后,我认为 Git 仓库根本不属于像 Nextcloud 这样的工具。Git 已经管理了内容和版本,所以让另一个工具做同样的事情是没有意义的。但当然,在新机器上从头开始设置所有这些仓库真的很麻烦。如果有一种方法可以一次性克隆所有这些仓库怎么办呢?

此外,我以前迁移过个人 Git 服务器的域名。我手动更新了一些远程仓库,但仍然会在一段时间未触及的项目中遇到旧的、过时的远程仓库。如果有一个地方可以一次性更新所有这些远程仓库会怎么样?

这就是 GRM 产生的原因。我非常喜欢基础设施即代码,GRM 就像为您的本地 Git 仓库提供的 Terraform。编写配置,运行工具,您的仓库就准备好了。唯一由 Git 跟踪的是仓库列表本身。

未来 & 想法

  • 对所有仓库的操作(例如,拉取)
  • 显示受管理仓库的状态(脏、与远程比较等)

可选功能

  • 支持多种文件格式(YAML、JSON)。
  • 添加 systemd 计时器单元以运行定期同步

Crates

  • 配置文件使用 toml
  • 因为我们在使用 Rust,所以使用了 serde
  • 使用 git2,这是一个围绕 libgit2 的安全包装,用于所有 git 操作
  • 使用 clapconsoleshellexpand 来实现良好的用户体验

链接

依赖项

~45MB
~1M SLoC