Display the 'git status' in sub-directories
Project description
git-substatus
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
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
-
Bump up the
__version__
ingit_substatus/__init__.py
and commit the change in the batch where you changed the files. -
(For the codeowners) This step is only on master. Create a version tag with
make tag-create
target. Push the tag to the origin withmake 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
:
- Install pre-commit https://pre-commit.com/#installation
- Run
pre-commit install
that installs the hook scripts at.git/hooks
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
- Use the reference to name the functions/methods in the module: https://mirrors.edge.kernel.org/pub/software/scm/git/docs/gitglossary.html
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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 439771f0e8e2711bf3bee1526aa3438b5e92ea86cc0995ed9b50fd9c48b3c2e8 |
|
MD5 | b66cf786082d5fd422147e2c7509b2e0 |
|
BLAKE2b-256 | eaad5fae6dee94422a7cfb1ae90943c09c4bcb7168d7ac0132c10ca03a002199 |
File details
Details for the file git_substatus-0.2.11-py3-none-any.whl
.
File metadata
- Download URL: git_substatus-0.2.11-py3-none-any.whl
- Upload date:
- Size: 25.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 04bb69ad19bd6b1cef436624256ac3236b7ee15e1c1e241362573dcf0d455650 |
|
MD5 | 4a6e46d095f129bfaccec4f5e4c9caf3 |
|
BLAKE2b-256 | f462aa2e2508241c80cb33dd7bab630bc82b42cf3460ebc01c88993cd6988728 |