9 个版本 (5 个重大更改)

0.6.0 2021年12月12日
0.5.0 2021年2月22日
0.4.0 2020年10月19日
0.3.0 2020年10月15日
0.1.1 2019年3月9日

开发工具 中排名 #1196

每月下载量 38

Unlicense 或 MIT

58KB
388

gitall

gitall 递归查找目录下所有仓库,并在每个仓库中并行运行给定的 Git 命令。

GitHub Workflow Status Crate Documentation

用法

最简单的方式是 cd 到包含所有要操作的仓库的目录,然后编写你的 Git 命令,将 git 改为 gitall。要传递选项给 Git 命令,必须在命令前添加 --,以告诉 gitall 停止解析其自己的选项并将它们传递给 Git。例如,要列出所有远程和本地仓库分支,需要运行 gitall -- branch -va

提示:如果您在 PATH 中添加一个名为 git-foo 的文件(无论是通过复制还是符号链接),您可以通过 git 来调用该程序,使用 git foo;无需额外的别名或设置。因此,在运行 ln -s /usr/bin/gitall /usr/bin/git-all 之后,您可以通过 git all 使用 gitall,就像使用 gitall 一样。

示例

打印最新提交的 SHA

获取 ~/code 下所有仓库的最新更改

$ cd ~/code
$ gitall fetch origin
/home/matt/code/gitall.rs
From github.com:mattmahn/gitall.rs
   17acab9..8994d3c  master     -> origin/master
 * [new branch]      windows-build -> origin/windows-build

/home/matt/code/jsonapi-server
From github.com:holidayextras/jsonapi-server
 * [new branch]      greenkeeper/debug-4.1.1 -> origin/greenkeeper/debug-4.1.1
 * [new branch]      greenkeeper/eslint-plugin-node-8.0.0 -> origin/greenkeeper/eslint-plugin-node-8.0.0
 * [new branch]      greenkeeper/jscpd-0.6.25 -> origin/greenkeeper/jscpd-0.6.25
 * [new branch]      greenkeeper/jscpd-1.0.0 -> origin/greenkeeper/jscpd-1.0.0
 * [new branch]      greenkeeper/jscpd-1.0.1 -> origin/greenkeeper/jscpd-1.0.1
 * [new branch]      greenkeeper/jscpd-1.0.2 -> origin/greenkeeper/jscpd-1.0.2
 * [new branch]      greenkeeper/jscpd-1.0.3 -> origin/greenkeeper/jscpd-1.0.3
 * [new branch]      greenkeeper/jscpd-1.1.0 -> origin/greenkeeper/jscpd-1.1.0
 * [new branch]      greenkeeper/jscpd-1.2.0 -> origin/greenkeeper/jscpd-1.2.0
 * [new branch]      greenkeeper/jscpd-1.2.1 -> origin/greenkeeper/jscpd-1.2.1
 * [new branch]      greenkeeper/jscpd-1.2.2 -> origin/greenkeeper/jscpd-1.2.2
 * [new branch]      greenkeeper/jscpd-1.2.3 -> origin/greenkeeper/jscpd-1.2.3
 * [new branch]      greenkeeper/jscpd-2.0.0 -> origin/greenkeeper/jscpd-2.0.0
 * [new branch]      greenkeeper/jscpd-2.0.1 -> origin/greenkeeper/jscpd-2.0.1
 * [new branch]      greenkeeper/jscpd-2.0.2 -> origin/greenkeeper/jscpd-2.0.2
 * [new branch]      greenkeeper/jscpd-2.0.3 -> origin/greenkeeper/jscpd-2.0.3
 * [new branch]      greenkeeper/jscpd-2.0.4 -> origin/greenkeeper/jscpd-2.0.4
 * [new branch]      greenkeeper/qs-6.6.0 -> origin/greenkeeper/qs-6.6.0
 * [new branch]      mast       -> origin/mast

或者,您可以从任何目录运行 gitall -D ~/code fetch origin

选项

Executes git(1) commands in repos below a parent directory

USAGE:
    gitall [FLAGS] [OPTIONS] <COMMAND>...

FLAGS:
    -L, --follow
            When specified, symbolic links will be followed when navigating the directory tree.

        --full-path
            By default, REGEX matches against only the directory name. Using this flag, REGEX matches against the full
            canonical path.
    -h, --help
            Prints help information

    -V, --version
            Prints version information


OPTIONS:
        --color <WHEN>
            Controls when to use color [default: auto]  [possible values: always, true, auto, never, false]

    -D, --directory <DIR>
            The directory to start searching under [default: .]

    -X, --executable <PROGRAM>
            The program to run in each repo [default: git]

    -d, --max-depth <LEVELS>
            Descend at most LEVELS of directories below DIR

    -r, --regex <REGEX>
            Filters command to repo(s) matching provided regular expression [default: .*]

    -j, --threads <NUM>
            The maximum number of commands to run in parallel


ARGS:
    <COMMAND>...
            A single git command to run in each repo

安装

依赖

  • Git
  • Rust & Cargo(仅用于构建)

您可以通过 crates.io 安装 gitall

$ cargo install gitall

或者从 releases 页面上下载某些平台的预构建二进制文件。解压发布工件后,将 gitall 可执行文件移动到您的 PATH 中的某个目录。有关安装位于 complete/ 的完成脚本,请参阅您的 shell 文档。

从源代码

克隆此存储库,构建 gitall,然后将可执行文件复制到您的 PATH 中的某个目录

$ git clone https://github.com/mattmahn/gitall.rs && cd gitall.rs
$ cargo build --release
# install target/release/gitall /usr/bin/

Bash、Zsh、fish、Elvish 和 PowerShell 的 shell 完成脚本也在构建期间生成;您可以在 target/release/build/gitall<hash>/out/ 找到它们。有关安装,请参阅您的 shell 文档。

依赖

~4–13MB
~135K SLoC