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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 3

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