26 个版本

0.4.4 2024年7月7日
0.4.2 2024年1月4日
0.4.1 2023年12月31日
0.3.11 2023年9月26日
0.2.3 2022年11月30日

#248 in 开发工具

Download history 1/week @ 2024-05-21 1/week @ 2024-06-04 144/week @ 2024-06-25 146/week @ 2024-07-02 30/week @ 2024-07-09 16/week @ 2024-07-30

68 每月下载次数

MIT 许可证

105KB
3K SLoC

🚀 ghr

crates.io Rust

带有自动附加配置文件的另一个仓库管理工具。

🔥 动机

ghq 是目前解决我们仓库管理压力的最著名解决方案。然而,我想要根据一些规则自定义 git 配置,例如在我的公司仓库中使用我的公司电子邮件。

为了实现这一点,ghq 对我来说不够用。所以我用 Rust,当今的强大和现代语言,重新编写了它们。

📦 安装

macOS / 使用 Homebrew(简单)

brew install s6n-jp/tap/ghr

升级

brew upgrade s6n-jp/tap/ghr

Windows / 使用 scoop(简单)

scoop bucket add siketyan https://github.com/siketyan/scoop-bucket.git
scoop install ghr

升级

scoop update ghr

任何操作系统 / 使用 cargo(经典)

如果您尚未安装 Rust 环境,请遵循 rustup 的说明。

cargo install ghr

对于升级,我们建议使用 cargo-update

cargo install-update ghr

🔧 安装 shell 扩展

为了最大限度地扩展 ghr 功能,建议安装 shell 扩展。将以下行添加到您的 shell 配置脚本中以启用它。

Bash

source <(ghr shell bash)

要启用自动完成,请将以下行添加到 ~/.bash_completion

source <(ghr shell bash --completion)

Fish

ghr shell fish | source

要启用自动完成,请将以下行添加到 ~/.config/fish/completions/ghr.fish

ghr shell fish --completion | source

💚 用法

Usage: ghr <COMMAND>

Commands:
  cd       Change directory to one of the managed repositories (Shell extension required)
  clone    Clones a Git repository to local
  delete   Deletes a repository from local
  init     Initialises a Git repository in local
  list     Lists all managed repositories
  open     Opens a repository in an application
  browse   Browse a repository on web
  path     Prints the path to root, owner, or a repository
  profile  Manages profiles to use in repositories
  search   Perform a fuzzy search on the repositories list
  shell    Writes a shell script to extend ghr features
  sync     Sync repositories between your devices
  version  Prints the version of this application
  help     Print this message or the help of the given subcommand(s)

Options:
  -q, --quiet    Operates quietly. Errors will be reported even if this option is enabled
  -v, --verbose  Operates verbosely. Traces, debug logs will be reported
  -h, --help     Print help

克隆仓库

ghr 支持许多仓库克隆模式或 URL

ghr clone <owner>/<repo>
ghr clone github.com:<owner>/<repo>
ghr clone https://github.com/<owner>/<repo>.git
ghr clone ssh://[email protected]/<owner>/<repo>.git
ghr clone [email protected]:<owner>/<repo>.git

如果您已安装 shell 扩展,您可以将目录更改到已克隆的仓库

ghr clone <url_or_pattern> --cd

如果您经常使用特定所有者的仓库,您可以将默认所有者设置为解析。

[defaults]
owner = "siketyan"
ghr clone <repo>

更改目录

您可以在 shell 中更改到管理的仓库之一。这需要安装 shell 扩展。

ghr cd <url_or_pattern>

附加配置文件

创建 ~/.ghr/ghr.toml 并按需编辑

[profiles.default]
user.name = "Your Name"
user.email = "[email protected]"

[profiles.company]
user.name = "Your Name (ACME Inc.)"
user.email = "[email protected]"

[[rules]]
profile.name = "company"
owner = "acme" # Applies company profiles to all repositories in `acme` org

[[rules]]
profile.name = "default"

配置应用程序以打开仓库

编辑 ~/.ghr/ghr.toml 并按需添加条目

[applications.vscode]
cmd = "code"
args = ["%p"]

[!NOTE] %p 将被替换为仓库路径。

查找仓库路径

ghr path # Root directory
ghr path <owner>/<repo> # Repository directory
ghr path <url> # Repository directory resolved by URL
ghr path github.com/<owner>/<repo> # Repository directory of the specified host
ghr path --owner=<owner> # Owner root
ghr path --host=github.com # Host root
ghr path --host=github.com --owner=<owner> # Owner root of the specified host

同步仓库及其状态

[!WARNING] 此功能为实验性。

ghr支持对托管仓库的当前分支和远程进行导出和恢复。

ghr sync dump > repositories.toml
ghr sync restore < repositories.toml

🛠 自定义

您可以通过在shell配置文件中设置环境变量GHR_ROOT来更改ghr管理的仓库的根目录。

ghr path # ~/.ghr
GHR_ROOT=/path/to/root ghr path # /path/to/root

依赖关系

~24–75MB
~1.5M SLoC