All Projects → mattmahn → gitall.rs

mattmahn / gitall.rs

Licence: Unlicense and 2 other licenses found Licenses found Unlicense UNLICENSE Unknown COPYING MIT LICENSE-MIT
Run Git commands in all subdirectories really fast

Programming Languages

rust
11053 projects
shell
77523 projects

Projects that are alternatives of or similar to gitall.rs

java-multithread
Códigos feitos para o curso de Multithreading com Java, no canal RinaldoDev do YouTube.
Stars: ✭ 24 (-4%)
Mutual labels:  parallel, parallel-processing
Hamsters.js
100% Vanilla Javascript Multithreading & Parallel Execution Library
Stars: ✭ 517 (+1968%)
Mutual labels:  parallel, parallel-processing
Future.apply
🚀 R package: future.apply - Apply Function to Elements in Parallel using Futures
Stars: ✭ 159 (+536%)
Mutual labels:  parallel, parallel-processing
Parallel
Parallel processing for PHP based on Amp.
Stars: ✭ 478 (+1812%)
Mutual labels:  parallel, parallel-processing
Parallel-NDJSON-Reader
Parallel NDJSON Reader for Python
Stars: ✭ 13 (-48%)
Mutual labels:  parallel, parallel-processing
do
Simplest way to manage asynchronicity
Stars: ✭ 33 (+32%)
Mutual labels:  parallel
python-appium-framework
Complete Python Appium framework in 360 degree
Stars: ✭ 43 (+72%)
Mutual labels:  parallel
OpenABL
A domain-specific language for parallel and distributed agent-based simulations.
Stars: ✭ 24 (-4%)
Mutual labels:  parallel
PETAL
PETAL (ParallEl paThways AnaLyzer): a Python tool for deep biological pathway analysis
Stars: ✭ 31 (+24%)
Mutual labels:  parallel
XH5For
XDMF parallel partitioned mesh I/O on top of HDF5
Stars: ✭ 23 (-8%)
Mutual labels:  parallel
ParallelUtilities.jl
Fast and easy parallel mapreduce on HPC clusters
Stars: ✭ 28 (+12%)
Mutual labels:  parallel
php-parallel
The class allows you to run multiple operations parallel in different processes and send results to the main process. Useful if you need to run multiple independent operations simultaneously, instead of sequential execution, or if you run several independent queries, for example, queries to different data bases.
Stars: ✭ 16 (-36%)
Mutual labels:  parallel
scala-parallel-programming
coursera
Stars: ✭ 17 (-32%)
Mutual labels:  parallel
CESM postprocessing
Project repository for the CESM python based post-processing code, documentation and issues tracking.
Stars: ✭ 63 (+152%)
Mutual labels:  parallel
lightflow
A tiny Promise-inspired control flow library for browser and Node.js.
Stars: ✭ 29 (+16%)
Mutual labels:  parallel
pennylane-lightning
The PennyLane-Lightning plugin provides a fast state-vector simulator written in C++ for use with PennyLane
Stars: ✭ 28 (+12%)
Mutual labels:  parallel
ParNMPC
A Parallel Optimization Toolkit for Nonlinear Model Predictive Control (NMPC)
Stars: ✭ 173 (+592%)
Mutual labels:  parallel
parallel
PARALLEL: Stata module for parallel computing
Stars: ✭ 97 (+288%)
Mutual labels:  parallel
rocPRIM
ROCm Parallel Primitives
Stars: ✭ 95 (+280%)
Mutual labels:  parallel
behat-3-kickstart
Behat 3/Mink and Guzzle for API testing. Code follows PageObjects approach. Saucelabs integration.
Stars: ✭ 13 (-48%)
Mutual labels:  parallel

gitall

gitall recursively finds all repositories below a directory and runs the given Git command in each repository in parallel.

GitHub Workflow Status Crate Documentation

Usage

The simplest form is to cd to a directory containing all the repos you want to operate on, then write your Git command changing git to gitall. To pass options to the Git command, you must add -- before your command to tell gitall to stop parsing its own options and pass them to Git. For example, to list all remote and local repository branches you need to run gitall -- branch -va.

Pro Tip: if you add a file called git-foo to your PATH (either via copying or symlinking), you can call that program through git using git foo; no additional aliases or setup needed. So, after running ln -s /usr/bin/gitall /usr/bin/git-all, you can use gitall via git all exactly the same as if you used gitall. Similarly, any command aliases that you configure in your gitconfig file are recognized and can be run by gitall.

Examples

Print the latest commit SHA:

Fetch the latest changes for all your repositories under ~/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

Alternatively, you can run gitall -D ~/code fetch origin from any directory.

Options

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

Installation

Dependencies:

  • Git
  • Rust & Cargo (for build only)

You can install gitall from crates.io with

$ cargo install gitall

Or download pre-built binaries for some platforms on the releases page. After extracting the release artifacts, move the gitall executable to some directory in your PATH. Refer to your shell's documentation for installing the completion scripts located in complete/.

From source

Clone this repository, build gitall, then copy the executable to a directory in your PATH:

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

Shell completions for Bash, Zsh, fish, Elvish, and PowerShell are also generated during build; you can find them at target/release/build/gitall-<hash>/out/. Refer to your shell's documentation for installation.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].