13 个版本

0.6.3 2024 年 8 月 10 日
0.6.2 2024 年 6 月 8 日
0.6.1 2023 年 8 月 11 日
0.6.0 2023 年 5 月 10 日
0.1.0 2017 年 2 月 1 日

#116文件系统

Download history 184/week @ 2024-06-03 42/week @ 2024-06-10 6/week @ 2024-06-17 24/week @ 2024-07-01 12/week @ 2024-07-29 98/week @ 2024-08-05 32/week @ 2024-08-12

142 每月下载次数

MIT 许可证

49KB
860 代码行

git-global

Crates.io Crates.io Build

使用 git-global 跟踪您机器上所有的 git 仓库。

这是一个可以用 cargo install git-global 安装的 Rust 程序。(获取 cargo 和 Rust,请参阅 https://rustup.rs。)安装后,您可以可选地使用 git global install-manpage 安装手册页。

安装后,您将获得一个额外的 git 子命令,您可以从任何位置运行它来检查所有 git 仓库: git global。使用 git global <subcommand>

  • git global ahead:显示包含不在任何远程上的提交的分支的仓库
  • git global info:显示关于 git-global 自身的元信息(配置、已知仓库数量等)
  • git global install-manpage:尝试安装 git-global 的手册页(非功能性)
  • git global list:显示所有已知仓库的列表
  • git global scan:通过搜索文件系统更新已知仓库的缓存
  • git global staged:显示具有此类更改的仓库的git索引状态
  • git global stashed:显示所有有存储的仓库的存储
  • git global status:显示所有有更改的仓库的 git status -s
  • git global unstaged:显示具有此类更改的工作目录状态

命令行标志

除了基于配置文件选项外,还有一些全局命令行标志具有优先级

  • --json:以JSON格式打印子命令结果
  • --untracked:在子命令结果中显示未跟踪的文件,例如,对于 statusstagedunstaged 子命令
  • --nountracked:不在子命令结果中显示未跟踪的文件,例如,对于 statusstagedunstaged 子命令

配置

要更改 git-global 的默认行为,您可以使用 —— 等等 —— git的全局配置!

要将仓库发现根目录设置为除主目录以外的其他目录

git config --global global.basedir /some/path

要添加在遍历目录时排除的模式

git config --global global.ignore .cargo,.vim,Library

global 部分的配置选项支持完整的列表

  • basedir:仓库发现的根目录(默认:$HOME
  • follow-symlinks:在仓库发现期间是否跟随符号链接(默认:true
  • same-filesystem:在仓库发现期间是否保持与 basedir 相同的文件系统(默认:在Windows或Unix上为 true,在其他情况下为 false
  • ignore:在遍历目录时排除的模式列表(默认:无)
  • default-cmd:未指定时运行的默认子命令,例如,运行 git global 时(默认:status
  • show-untracked:是否在输出中包含未跟踪的文件(默认:true

手册页生成

最新版本的手册页存储在doc/git-global.1 仓库中。要从本地克隆的仓库生成它,请运行

cargo run --bin generate-manpage --features=manpage > doc/git-global.1

想法

以下是一些关于未来子命令和功能的想法

  • git global dirty:显示所有有任何类型更改的仓库

  • git global branched:显示不在master上的所有仓库(待办:或在不同默认分支的 .gitconfig 中)

  • git global duplicates:显示被检出到多个位置的仓库

  • git global remotes:显示所有远程仓库(待办:为什么?或许应该按主机名过滤?)

  • git global add <path>:将 git 仓库添加到缓存,这些仓库在扫描中找不到

  • git global ignore <path>:忽略一个 git 仓库并将其从缓存中删除

  • git global ignored:显示当前被忽略的 git 仓库

  • git global monitor:启动守护进程以使用 inotify 监视 git 目录

  • git global pull:从默认跟踪分支拉取更改到干净的仓库

  • git global cd <fuzzy repo>:更改到匹配的仓库的目录(编号6)

  • 将结果流式传输到STDOUT,随着它们的到来(来自git global status,例如,这样我们就不必等待它们全部收集完毕)

  • 如果数据库已填充,则使用locate .git,而不是遍历文件系统

  • 创建一个Subcommand特质

  • 以通用方式执行并发,而不仅仅是针对status子命令

发布说明

  • 0.6.3 (2024-08-10)
    • 使ahead子命令能够与损坏的引用一起工作(编号105)。谢谢,koalp!
    • 各种依赖项更新。
  • 0.6.2 (2024-06-08)
    • 各种依赖项更新,包括 json --> serde_json
  • 0.6.1 (2023-08-10)
    • 各种依赖项更新。
  • 0.6.0 (2023-05-10)
    • 更新到 Rust 2021 版本。
    • 更新、替换或删除多个依赖项。
  • 0.5.1 (2022-03-17)
    • 添加 generate-manpage 二进制文件和(非功能性的)install-manpage 子命令。
  • 0.5.0 (2021-07-12)
    • 添加 ahead 子命令 - 谢谢,koalp!。
  • 0.4.1 (2021-06-03)
    • 修复缓存仓库被删除时的崩溃。
  • 0.4.0 (2021-04-19)
    • 更新到 Rust 2018 版本(感谢,koalp!)。
    • directories 替换 dirsapp_dirs 包。
      • 在升级到此版本之前创建的缓存文件可能在升级后不再被考虑,因此可能在升级到此版本后的第一次命令运行期间需要重新生成缓存。但是,如果无法创建缓存文件,我们不再会恐慌。
  • 0.3.2 (2020-11-13)
    • 更新依赖项。
  • 0.3.1 (2020-04-25)
    • 更新依赖项。
  • 0.3.0 (2019-08-04)
    • 添加子命令
      • staged
      • stashed
      • unstaged
    • 添加配置选项
      • default-cmd
      • show-untracked
      • follow-symlinks
      • same-filesystem
    • 添加命令行标志
      • --untracked
      • --nountracked
    • 添加选项以在扫描目录时跟踪符号链接并保持在同一文件系统上;默认情况下两者都是 true。(感谢,pka!)
  • 0.2.0 (2019-03-18)
    • 在状态输出中包含未跟踪文件。
    • 扩展文档和包元数据。
    • 更新和更改几个依赖项。
    • 添加一些测试。
    • 进行了一些公共API更改,例如
      • GitGlobalConfig 重命名为 Config
      • GitGlobalResult 重命名为 Report
      • get_reposfind_reposcache_repos 函数移动到 Config
      • core 模块拆分为 configreporeport
    • 合并了在未配置忽略任何内容时扫描目录的漏洞修复(#1)。
  • 0.1.0 (2017-01-31)
    • 这是首次发布,包括以下子命令:help、info、list、scan、status。

依赖项

~10–22MB
~334K SLoC