Skip to main content

Display the 'git status' in sub-directories

Project description

git-substatus

CI status Python version PyPI version hub.docker.com pre-commit Code style: black

A command-line tool to inspect the status of git repositories from a directory, e.g., a projects folder keeping all of your git projects. You can inspect:

  • status

    • added, removed, modified, renamed

    • merge conflicts

    • etc.

  • stash

  • worktree

Usage

See at git-substatus --help:

usage: git-substatus [-h] [-v] [--include-hidden] [--fetch] [path]

See subdirectories' git status
==============================

The output consists of four columns:

repo name | branch head | status | git stashes (if any)

The string (*WT) seen next to the repo names shows that the
repo has some git worktrees. See more:
<https://git-scm.com/docs/git-worktree>

positional arguments:
  path              a path to where you want to see git substatuses. If empty, the
                    current working directory is selected.

options:
  -h, --help        show this help message and exit
  -v, --version     show program's version number and exit
  --include-hidden  repositories starting with a dot (.) are included.
  --fetch           perform git fetch from remote on all sub repositories.

Installation

Install from the PyPI:

pip install git-substatus

Install from the repo:

pip install git+https://github.com/strboul/git-substatus.git

Alternatively, the Docker image can be used:

docker run --rm -t -v "$(pwd)":/"$(pwd)" -w "$(pwd)" strboul/git-substatus:latest

To shorten the command, it's also possible to add an alias in the .bashrc or .zshrc, e.g.:

_git_substatus() {
  docker run --rm -t -v "$(pwd)":/"$(pwd)" -w "$(pwd)" strboul/git-substatus:latest "$@"
}
alias git-substatus="_git_substatus"

Benchmark: it's measured that the container solution is ~70% slower than the native operation due to the overhead; however, the container solution is still useful for portability matters.

Development

This tool has no module dependency outside The Python Standard Library.

Development docs

Versioning and release

  1. Bump up the __version__ in git_substatus/__init__.py and commit the change in the batch where you changed the files.

  2. (For the codeowners) This step is only on master. Create a version tag with make tag-create target. Push the tag to the origin with make tag-push. Upon the push, the release CI workflow will be triggered that will distribute the new version to the platforms, such as PyPI, DockerHub.

pre-commit

Run pre-commit git hooks on every commit that run checks against the files added to a commit.

Upon cloning the repo, set up pre-commit:

Add tests

  • Write/update unit tests (if relevant). You can start by adding/modifying a case to generator file of scripts/generate_test_repos.sh.

Run tests && debugging

virtualenv venv
source venv/bin/activate  # deactivate
pip install -r dev-requirements.txt  # pip freeze > dev-requirements.txt
make

Put a breakpoint() at a relevant place and run:

make test

Add new methods

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

git-substatus-0.2.11.tar.gz (24.2 kB view details)

Uploaded Source

Built Distribution

git_substatus-0.2.11-py3-none-any.whl (25.9 kB view details)

Uploaded Python 3

File details

Details for the file git-substatus-0.2.11.tar.gz.

File metadata

  • Download URL: git-substatus-0.2.11.tar.gz
  • Upload date:
  • Size: 24.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for git-substatus-0.2.11.tar.gz
Algorithm Hash digest
SHA256 439771f0e8e2711bf3bee1526aa3438b5e92ea86cc0995ed9b50fd9c48b3c2e8
MD5 b66cf786082d5fd422147e2c7509b2e0
BLAKE2b-256 eaad5fae6dee94422a7cfb1ae90943c09c4bcb7168d7ac0132c10ca03a002199

See more details on using hashes here.

File details

Details for the file git_substatus-0.2.11-py3-none-any.whl.

File metadata

File hashes

Hashes for git_substatus-0.2.11-py3-none-any.whl
Algorithm Hash digest
SHA256 04bb69ad19bd6b1cef436624256ac3236b7ee15e1c1e241362573dcf0d455650
MD5 4a6e46d095f129bfaccec4f5e4c9caf3
BLAKE2b-256 f462aa2e2508241c80cb33dd7bab630bc82b42cf3460ebc01c88993cd6988728

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page