Skip to main content

A (tiny) Git utility for auto-committing and concurrent pushing

Project description

git pp

A (tiny) Git utility for auto-committing and concurrent pushing.

Powered by asyncio, with no dependency besides python>=3.10 and git.

Features

  • Auto-stages and commits with custom or generated commit messages
  • Pushes to multiple or all remotes of a git repository concurrently with asyncio
  • Operates on any number of git repositories at the same time

Demo

Asciicast

In this demo, git pp did the following in ~/config and ~/gui repos:

  • (Concurrently) Auto staged all changes and commits with ISO-8601 timestamps as commit messages;
  • (Concurrently) Pushed the changes in the checked out branch to all of their remotes, in this case, they’re origin and lab.

Use cases and example usage

  • You have multiple remotes registered on a local git repository (or more) and want to push the changes to all or some of the remotes fast and efficiently.
# Use --push-only or -po

$ git pp --push-only # this pushes to all remotes of the current git repository, does not stages or commits
$ git pp --push-only --remote [one or more remotes] # only pushes to the specified remotes
$ git pp -po --timeout 10 # terminates pushing to one remotes if it takes more than 10 seconds
$ git pp -po -b dev ~/my-proj ~/my-proj2 # pushes the dev branch to all remotes in ~/my-proj and ~/my-proj2 repository
  • You're tired of using git add --all && git commit every time you make a little change and want to automate this across one or more repositories.
$ git pp # stages all files in the current git repository and commits with a timestamp as the commit message
$ git pp -m 'Initial commit' # custom commit message
$ git pp --no-status # don't show git status and git add outputs

And you can do both of the above (auto-commit and push) with --push:

# Use --push or -p

$ git pp --push # stages, commits and pushes to all remotes.
$ git pp --push --remote [one or more remotes]
$ git pp -p --timeout 10
$ git pp -p -b dev ~/my-proj ~/my-proj2

Installation

First make sure the git executable is installed and in your $PATH.

Note that non-UNIX systems are not officially supported.

pipx

This is the recommended installation method.

$ pipx install git-pp

pip

$ pip install git-pp

AUR

For Archlinux.

$ yay -S python-git-pp

Usage

You can either invoke this tool with git-pp or git pp, --help is unsupported when using the latter.

$ git pp -h
usage: git pp [-h] [-m COMMIT_MESSAGE] [-v] [-so] [-p] [-po] [-r REMOTE [REMOTE ...]] [-b BRANCH] [-f] [-t TIMEOUT] [DIRS ...]

Git utility for auto-committing and concurrent pushing

positional arguments:
  DIRS                  Dirs to operate on (default: ['.'])

options:
  -h, --help            show this help message and exit
  -m COMMIT_MESSAGE, --commit-message COMMIT_MESSAGE
                        commit message (default: None)
  -v, --version         show program's version number and exit
  -so, --status-only    Prints status only (default: False)
  -p, --push            Push to all remotes (default: False)
  -po, --push-only      Push to all remotes, without pre_pull (default: False)
  -r REMOTE [REMOTE ...], --remote REMOTE [REMOTE ...]
                        Remote name (default: None)
  -b BRANCH, --branch BRANCH
                        Branch name (default: None)
  -f, --force           Force push (default: False)
  -t TIMEOUT, --timeout TIMEOUT
                        Timeout for a single push (default: None)

Develop

$ git clone https://github.com/tddschn/git-pp.git
$ cd git-pp
$ poetry install

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_pp-1.10.9.tar.gz (8.4 kB view details)

Uploaded Source

Built Distribution

git_pp-1.10.9-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file git_pp-1.10.9.tar.gz.

File metadata

  • Download URL: git_pp-1.10.9.tar.gz
  • Upload date:
  • Size: 8.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.1 Darwin/23.1.0

File hashes

Hashes for git_pp-1.10.9.tar.gz
Algorithm Hash digest
SHA256 340c375f1bb5c285d5d92a9dfc2404404163a73a893dc45f3277673f4fdc5356
MD5 be33662e0446fa500931de3a83c12708
BLAKE2b-256 7d479dc9fa2d40bd647b3313c1b957b7967a7d4e50c2c0801958530b32e2c130

See more details on using hashes here.

File details

Details for the file git_pp-1.10.9-py3-none-any.whl.

File metadata

  • Download URL: git_pp-1.10.9-py3-none-any.whl
  • Upload date:
  • Size: 9.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.1 Darwin/23.1.0

File hashes

Hashes for git_pp-1.10.9-py3-none-any.whl
Algorithm Hash digest
SHA256 d50fe79515549e1f1335ac855f7093fd14b22563533a2e7f4ab1e47e9742b2e0
MD5 82e2457d7e1e8425da2d9e2e706ad8ed
BLAKE2b-256 2a56d804d030e2284e7959751f017128f18ea6b009d2fd5488876d3070d8e15a

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