Github forking workflow made easy

Forking

Do you fork too often? So do we.

It's quite familiar to have your project completely hosted on Github: repositories, issues, milestones, wiki, etc. The problem with this is that your team members need to be very familiar with Git and very disciplined.

That's why we created Gub.

Gub is a Ruby executable gem that we created to get all tedius stuff done.

Here's how Gub maps to your Github workflow:

List repositories

You can then list all your repositories:

$ gub repos

Clone an existing repository

Suppose you have forked someone/example at myuser/example. You may do:

$ gub clone myuser/example

This will clone and set a remote named "upstream" to follow someone/example.

List repository issues

You then can do:

$ gub issues

And it would list all issues on myuser/example if it has issues enabled. If not, it will list issues from someone/example.

You can filter issues assigned to you by adding --mine to the command.

Working on an issue

You may then do:

$ gub start 123

And it would synchronize your master with someone/example, then creates a new branch issue-123 and finally will checkout the issue-123 branch.

The good thing here is that your team won't have to remember the branch naming convention, it's already forced by Gub.

When you're done working on an issue and still have the issue-123 checked out, execute:

$ gub finish

Which will convert issue #123 to a Github pull-request.

Keep your fork up-to-date

Just:

$ gub sync

And you're done.

Wrap up

Gub is quite simple and easy to use. It requires little knowledge of how Github works and you won't have to keep a browser window open.

Ideas or suggestions?