I would like to introduce you to the Fork Queue, the first of two big features that rolled out today. As of a few minutes ago, everybody should now have a ‘Fork Queue’ tab on each of their projects.

When you click on that, you’ll see something like this:

This is a list of all the commits that exist in your projects fork network. If a couple of people have forked your project and then committed to their fork, you will now see a list of each of those commits, grouped by user, under this tab.
What’s more, you can click on a checkbox next to each one and then choose ‘Apply’ from the dropdown menu to cherry-pick those commits onto one of your branches. You can even create a new branch to apply them to for testing. Just click ‘change it’ next to your listed integration branch:

When you choose a few commits and then choose ‘Apply’, it will take each one and cherry-pick them onto whichever branch you designate as your integration branch, one after the other.

When it is done, it will tell you which of the cherry-picks applied cleanly and which failed. You can abort the process at this point, or you can move your branch forward to it’s new head with all those patches pulled in.
You can also ignore commits that don’t apply or you don’t want, so you don’t have to keep considering them.
This tool allows you to do a lot of repository collaboration maintenance entirely from the website. You can setup an integration branch that you ask everyone to make sure their commits apply cleanly to and pull them in one by one, entirely online. It also gives you great visibility to what is out there in your forked network and what you have or have not brought in yet.
For a bit more information, and a demonstration, check out our screencast on it:
(if you want to download the movie, you can get it from http://blip.tv/file/1580699)
We hope this makes some of your project maintenance tasks much easier. We’re planning a lot more for this new feature – if you have any ideas as to how we could make it even better, let us know.
Update: Commits you have rebased in will continue to show up, so just ignore them to make them go away. Also, for projects that have had a ton of forks with pushes, it may be too slow to use right now – we’re working on that. There shouldn’t be too many of those, though.
Update 2: Just to be clear – the suggested workflow for this would be to use the tool to pull in patches from forks into a testing branch and ignore the ones that aren’t ready or don’t apply. Then you would want to fetch that branch down and test the code before merging or rebasing it into your master branch. This allows you to do a email patch style workflow without actually having to deal with patches over email or having to add a remote to your local repo every time someone submits something.
Update 3: There is a bug we’re working on where the fork queue might show you the wrong commit for your master branch. Before you use this, double check that the master head is pointed where you think it is, or you might have some resetting work to do. It shouldn’t happen to many people (it’s if you pushed your remotes to us via ‘—mirror’ or something), but we’ll have it fixed soon.


Features like this are the reason why I keep you guys in the loop. With the way git works, I don’t really need github. But you guys just make yourselves too hard to cancel.
This looks awesome, congrats guys
This looks awesome!
Could you provide a link to a non-flash version of the screencast? Thanks.
http://chacon.blip.tv
i added a link directly to the page for the video
I’m partially red/green colorblind, and it’s very hard for me to tell the difference between the “will apply cleanly” and “won’t apply cleanly” commits. If the colors were a little brighter, or weren’t the same shade, it would be a lot easier.
wow this looks awesome! we just have to love github! ;) thanks!
. . Hey nex3, thanks for remembering us about it. I almost forgot about color blindness check on my porojects. Will do it right away.
For those interested to translate the project presented in the video:
http://github.com/schacon/gitbook
Hey, fork queue too and the horse you rode in on!
Sorry, couldn’t resist :-)
What was the other big feature?
Fantastic! This makes code reviews done right even easier. When discussing how to make github easier for good reviews I came up with a few ideas, but this tops them all in that it will encourage better code review.
http://benjamin-meyer.blogspot.com/2008/08/code-review-should-be-free.html
Another bonus of this tool is discovering all of the patches that people don’t tell you about. Looking into my arora forkqueue there are dozens of patches waiting for review :) http://github.com/icefox/arora/forkqueue
Fork queue looks like a great feature and I, for one, want to commend you on the lack of fork in this post.
Ah dammit… and I was being so clever …
That was supposed to say “the lack of fork puns in this post”.
I can’t wait until this feature is fast enough to work on the Mephisto repositories! It looks really spiffy, and I’m waiting to try it out.
http://github.com/emk/mephisto/forkqueue
Wow, that just made collab a heckofalot easier
Love it! I’ve always been unhappy with email patch management…. this is perfect.
You guys are so oarsum! I just liek recently bought a secret micro plan. I am so very happy you’ve made this product :)
Wow, this is beyond awesome. For some projects, this is going to be a godsend.
Feature request: Can we ignore certain forks in the fork queue? For example, most forks of acts_as_xapian won’t ever be interested in commits from the dm-xapian project.
Bug: I applied a commit by accident, then I reverted it locally using `git reset —hard HEAD^`. After force-pushing this to GitHub, the reverted commit didn’t show up in the fork queue again.
Definitely an awesome tool. But echoing the request from sporkmonger, can we get a way to say, “Only show me commits to these forks.” Otherwise I tend to spend a lot of time going through and ignoring every commit to other branches.
Could you provide the steps behind apply process? (sequence of git commands that will produce the same result if done manually)
You guys should kill the spam here! It's getting a little distasteful.