/gush

Gush - Rapid workflow for project maintainers and contributors

Primary LanguagePHPMIT LicenseMIT

Gush

Gush is a rapid workflow for project maintainers and contributors

Build Status Scrutinizer Quality Score Code Coverage SensioLabsInsight Latest Stable Version Latest Unstable Version Total Downloads Stories in Ready

Gush logo

Logo courtesy from @maxakawizard and @kotosharic

Logo explanation is best depicted from this passage from Psalm 78:

True, he struck the rock, and water gushed out, streams flowed abundantly, but can he also give us bread? Can he supply meat for his people?” When the Lord heard them, he was furious; his fire broke out against Jacob, and his wrath rose against Israel, for they did not believe in God or trust in his deliverance.

There first thread of blood and the following are water gushing out of a rock, connecting the Old Testament prophecy fulfillment in the New Testament at the cross when Jesus was opened on his side and gushed out water and blood.

What is this?

Gush is an app console whose intention is to automate common maintainer and contributor tasks.

  • create a Pull Request with a formatted table description of the changes
  • create github release notes
  • change the base branch of a Pull Request
  • automate retrieval of issue's message, title and comments as a text
  • merge a PR with just the number and include all github discussion on the commit message
  • tagging signing off, change branch name and some queue of common tasks

Install

Install Gush in two ways:

1) Installing as a composer global dependency (recommended)

If it is the first time you globally install a dependency then make sure you follow the instructions here.

$ composer global require 'cordoval/gush=dev-master'

Upgrade to latest version

$ composer global update cordoval/gush

2) Installing as a phar file:

$ curl -sS https://bit.ly/gushphp | php
$ mv composer.phar /usr/local/bin/composer // optionally

or

$ curl -sS https://bit.ly/gushphp | php -- --install-dir=bin

Usage

You may want to start by configuring it:

$ gush configure
Insert your github credentials:
username: cordoval
password:
Cache folder [/Users/cordoval/.gush/cache]:
Configuration saved successfully.

Let's go into a repo, list, take ticket, send PR and merge it:

List it:

$ cd project_directory
$ gush issue:list
 #   State  PR?  Title                                     User       Assignee   Milestone        Labels       Created
 14  open        Tests and Documentation for Commands      cordoval                                            2014-01-10

Take it:

$ gush p:take 14
OUT > Fetching cordoval
OUT > Fetching origin
ERR > Note: checking out 'origin/master'.
You are in 'detached HEAD' state ...
ERR > HEAD is now at 681e0d6... Merge pull request #93 from cordoval/configure-command-test
ERR > Switched to a new branch '14-tests-and-documentation-for-commands'
~ git branch
* 14-tests-and-documentation-for-commands

Do your changes and commit them:

$ git commit -am "added instructions to use gush"

Send PR:

$ gush p:create
Bug fix? [y]
New feature? [n]
BC breaks? [n]
Deprecations? [n]
Tests pass? [y]
Fixed tickets [#000] #14
License [MIT]
Doc PR
PR Title: Added a bit of documentation under usage
ERR > fatal: remote cordoval already exists.
OUT > Fetching cordoval
OUT > Fetching origin
ERR > To git@github.com:cordoval/gush.git
 * [new branch]      14-tests-and-documentation-for-commands -> 14-tests-and-documentation-for-commands
OUT > Branch 14-tests-and-documentation-for-commands set up to track remote branch 14-tests-and-documentation-for-commands from cordoval.
https://github.com/cordoval/gush/pull/94

Merge it:

$ gush p:merge 94
Pull Request successfully merged

Contributions

Please send your PR using Gush and it will have 100% chances to be merged. See the issues.

Mailing list and IRC channel

Join the Mailing List and also on IRC channel #gushphp for discussions and questions.