Gitcycle

Tame your development cycle.

Gitcycle is a drop-in replacement for git that makes pull request dev cycles super easy.

Get Started

Visit gitcycle.com to set up your environment.

Create Branch

Checkout the branch that you will eventually merge your feature into:

gitc checkout master

Type gitc + your ticket URL to create a new branch:

gitc https://xxx.lighthouseapp.com/projects/0000/tickets/0000-my-ticket

Pull Changes from Upstream

When you're developing, you may need to pull new changes from an upstream branch:

gitc pull

Push Changes

gitc push

Discuss Code

After pushing one or two commits, put the code up for discussion:

gitc discuss

Mark as Ready

When the branch is ready for merging, mark it as ready:

gitc ready

This will mark the pull request as "Pending Review".

Code Review

Managers will periodically check for "Pending Review" issues on GitHub.

Once reviewed, they will mark the issue as reviewed:

gitc reviewed [GITHUB ISSUE #] [...]

Quality Assurance

QA engineers will periodically check for "Pending QA" issues on Github.

To create a new QA branch:

gitc qa [GITHUB ISSUE #] [...]

This will create a new QA branch containing the commits from the related Github issue numbers.

This branch can be deployed to a staging environment for QA.

QA Fail

If a feature does not pass QA:

gitc qa fail [GITHUB ISSUE #] [...]

To fail all issues:

gitc qa fail

This will add a "fail" label to the issue.

QA Pass

If a feature passes QA:

gitc qa pass [GITHUB ISSUE #] [...]

To pass all issues:

gitc qa pass

This will add a "pass" label to the issue and will complete the pull request by merging the feature branch into the target branch.

More

Checkout Upstream Branch

If you are working in a fork, it is easy to checkout upstream branches:

gitc checkout [BRANCH]

Collaborate

Its easy to checkout branches from other forks:

gitc checkout [USER] [BRANCH]

QA Status

See who is QA'ing what:

gitc qa

Redo Branch

If you associate the wrong branch with a ticket, use gitc redo to fix it.

Checkout the branch that you will eventually merge your feature into:

gitc checkout master

Type gitc redo + your ticket URL to reset the branch:

gitc redo https://xxx.lighthouseapp.com/projects/0000/tickets/0000-my-ticket

Todo

  • Add ability to associate multiple branches/pull requests with one Lighthouse ticket
  • Add comment on lighthouse with issue URL
  • gitc discuss should tag issue with 'Discuss'
  • On pass or fail, send email to Github email
  • Note you can use gitc with a string
  • gitc qa pass, should not set ticket to pending-approval if its already resolved
  • If gitc reset happens on branch with Github issue, close the existing issue
  • Add comment on lighthouse with issue URL
  • Instead of detecting CONFLICT, use error status $? != 0
  • Label issues with ticket milestone
  • gitc qa pass # since we're changing this to pass all the tickets, we need to loop through all the merged issues and update the lighthouse state to pending-qa
  • There's still a Tagging Issue I tried to fix parseLabel http://d.pr/8eOS , Pass should remove Pending, but remove the Branch Name
  • gitc ready - possibly do syntax checks