Skip to main content

Command line tool to send GitHub pull-request

Project description

Build Status https://badge.fury.io/py/git-pull-request.svg

git-pull-request is a command line tool to send GitHub pull-request from your terminal.

Installation

Use the standard Python installation method:

pip install git-pull-request

Usage

You need to write your GitHub credentials into your ~/.netrc file. In case you have 2FA enabled, make sure to replace your password by a Personal access token:

machine github.com login jd password f00b4r

Note: since credentials are stored in plain text, you should encrypt your $HOME directory to improve security.

Once you’ve made your commits into a branch, just type:

git pull-request

This will:

  1. Fork the upstream repository into your account (if needed)

  2. Add your forked repository as a remote named “github” (if needed)

  3. Force push your current branch to your remote

  4. Create a pull-request for your current branch to the remote matching branch, or master by default.

If you add more commits to your branch later, or need to rebase your branch to edit commits, you’ll just need to run git pull-request to update your pull-request. git-pull-request automatically detects that a pull-request has been opened for your current working branch.

Workflow advice

When sending pull-requests, it’s preferable to do so from your own branch. You can create your own branch from master by doing:

$ git checkout -b myownbranch --track origin/master

This will checkout a new branch called myownbranch that is a copy of master. Using the –track option makes sure that the upstream source branch is written in your .git/config file. This will allow git-pull-request to know to which branch send the pull-request.

Since this is long to type, you can use an alias in git to make it faster:

$ git config --global alias.nb "!git checkout --track $(git config branch.$(git rev-parse --abbrev-ref HEAD).remote)/$(git rev-parse --abbrev-ref HEAD) -b"

This will create a git nb alias that will create a new branch tracking the current branch and checking it out. You can then use it like that:

$ git nb foobar
Branch foobar set up to track remote branch master from origin.
Switched to a new branch 'foobar'

Difference with hub

The wrapper hub provides hub fork and hub pull-request as command line tools to fork and create pull-requests.

Unfortunately, it’s hard to combine these tools in an automated implementation for a complete workflow. For example: If you need to update your pull-request, there’s no way to identify existing pull requests, so calling hub pull-request would just open a new pull-request.

git-pull-request wraps all of these operations into one convenient tool.

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-pull-request-2.3.0.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

git_pull_request-2.3.0-py2.py3-none-any.whl (12.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file git-pull-request-2.3.0.tar.gz.

File metadata

File hashes

Hashes for git-pull-request-2.3.0.tar.gz
Algorithm Hash digest
SHA256 7553b7fd84643d28320b744574a0882f0e4a86cd34d610a449925fcdf949b840
MD5 0b7486a8b55b6772154740c022029c9e
BLAKE2b-256 832189fa0a3dcfa433323d57c1989fab69d77e3cfe54f80702c5b7587a0c8458

See more details on using hashes here.

File details

Details for the file git_pull_request-2.3.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for git_pull_request-2.3.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 10f8431f8dab14e3b7b85aaaa6756770965a9feeb8547b89b9b7e684764960be
MD5 e7b6787857018b7a35c64d98cfa40eec
BLAKE2b-256 cf3de49a128258626595494f1c0f8c3b477ce15702dc59dd8fd3475cbe0db4f5

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