#git-repository #git #repository #git-tool #declarative

app gitrs

一个简单、有偏见的、用Rust编写的工具,用于声明式地管理您机器上的Git仓库。

6个版本

0.3.5 2023年6月21日
0.3.4 2023年6月21日
0.1.0 2020年12月30日

#545 in 开发工具

每月下载量:48

MIT许可证

99KB
548

Build Status Latest Version

一个简单、有偏见的、用Rust编写的工具,用于声明式地管理您机器上的Git仓库。

"简单" - 支持的功能有限。例如,不支持对仓库运行命令。"有偏见" - 与Go和旧的 $GOPATH 相似,仓库是如此存储的。

安装

通过 cargo

cargo install gitrs

通过 nixpkgs

待办事项

用法

环境变量

  • GITRS_ROOT - (默认值: $HOME/src). 由gitrs管理的路径。
  • SSH_PRIVKEY_PATH - (默认值: $HOME/.ssh/id_rsa). 您的SSH私钥的路径。
  • SSH_PRIVKEY_PASS - (默认值: ""). SSH私钥密码。

全局参数

  • --root <path> - 指定 $GITRS_ROOT. 默认为 $HOME/src.

子命令

  • add <url> - 将仓库添加到配置文件。
  • remove <url> - 从配置文件中删除仓库。
  • sync - 读取配置文件,并将文件系统中的仓库添加或删除以匹配配置的状态。

日志记录

gitrs使用标准的Leveled日志,因此 RUST_LOG=<debug,info,warn,error>; gitrs ... 报告请求的日志。

$GITRS_ROOT/.gitrs.yaml 配置文件

metadata:
 version: v1beta
 root: /home/user/src
 last_sync: <timestamp>
repos:
- name: github.com/mccurdyc/gitrs
  pin: <true|default:false>
  sha: <sha>

设计目标

  • 做好一件事:从文件系统中克隆、更新或删除仓库。
    • 不支持在克隆的仓库上运行命令。
  • 仅支持SSH克隆,类似于Go的实现
  • 具有明确的文件结构。例如,$GOPATH。但您可以指定一个GITRS_ROOT
  • 您可以为不同的用途拥有多个“根”。例如,$HOME/{work,personal具有独立的gitrs配置。
  • 有一个单独的配置文件来声明要管理的仓库。
  • 配置文件是您机器上所有克隆仓库的真相来源。
    • 如果您运行add,它将仓库添加到配置文件。
    • 如果您运行remove,它将从配置文件中删除仓库。
    • 然后,sync克隆仓库并/或更新文件系统以反映配置文件的状态。
  • 配置文件(考虑YAML)
    • 支持注释
    • 如果您不想使用gitrs,则可以解析以用于另一个工具。
    • 您团队(在工作)需要的仓库的真相来源

待办事项

  • (待办) add --pin [<SHA>] 锁定/跳过仓库以检查更新。
  • (待办) sync --clean - 仅删除仓库,不更新或克隆。
  • (考虑) sync --archive - 归档仓库,到$GITRS_ROOT/.archived
  • (待办) watch - 监控配置文件的更新并同步文件系统。
  • (待办) list - 列出配置文件中的仓库。
  • (待办) status - 检查克隆的仓库是否需要删除,以及远程更新是否需要获取。
  • (待办) Nix包

采用

  • 我仍在考虑是否要为add添加支持多个仓库。
mv src/ src.bak/

for d in ~/src.bak/github.com/org/*; do
  gitrs add $(echo ${d##*src.bak/})
done

gitrs sync

灵感

参见类似项目

许可证

参见LICENSE.md

依赖关系

~16–27MB
~490K SLoC