/parallel_foreach_submodule

:octocat: Tool for "git submodule foreach" execution in parallel

Primary LanguagePythonGNU Lesser General Public License v3.0LGPL-3.0

Parallel Foreach Submodule

PyPI Version PyPI Compatibility PyPI License Codacy Badge Build Status

Parallel Foreach Submodule (PFS) is a tool for "git submodule foreach" execution in parallel.

The origin of the tool is the following question in Stack Overflow:

👀 Execute “git submodule foreach” in parallel

What can I do with PFS?

  • Execute git submodule foreach in parallel
  • Use it from terminal when it is installed
  • Multiplatform execution (it is developed in Python)

Installation

You can install or upgrade PFS with:

$ pip install pfs --upgrade

Or you can install from source with:

$ git clone https://github.com/stt-systems/parallel_foreach_submodule.git --recursive
$ cd parallel_foreach_submodule
$ pip install .

Quick example

$ pfs -p "D:\project" -c "git pull origin" -j 8

The example executes command git pull origin for each submdoule in D:\project using 8 threads.

For commands that include quoted text, such as the message in git commit, you must escape the inner quotation marks:

$ pfs -p "D:\project" -c "git commit -m \"Your commit message\"" -j 8

Shortcuts

List of shortcuts or aliases to write faster some usual operations

  • pfs --pull ~ pfs -c "git pull origin"
  • pfs --status ~ pfs -c "git status"
  • pfs --pending ~ pfs -c "git log <since origin/current>..<until current>"
  • pfs --in-branch [branch_name] ~ pfs -c "IF (git rev-parse --abbrev-ref HEAD) == branch"
  • pfs --not-in-branch [branch_name] ~ pfs -c "IF (git rev-parse --abbrev-ref HEAD) != branch"

⚠️ Shortcuts only show repositories affected with changes, use --verbose for full log

Help

Run the following command to see all options available:

pfs --help or pfs -h