• The Fork Queue

    schacon 15 Dec 2008

    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.

  • Comments

    sammcd Mon Dec 15 19:57:38 -0800 2008

    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.

    foca Mon Dec 15 20:21:22 -0800 2008

    This looks awesome, congrats guys

    technomancy Mon Dec 15 20:44:03 -0800 2008

    This looks awesome!

    Could you provide a link to a non-flash version of the screencast? Thanks.

    isaac Mon Dec 15 20:48:59 -0800 2008
    schacon Mon Dec 15 21:00:27 -0800 2008

    i added a link directly to the page for the video

    nex3 Mon Dec 15 22:11:08 -0800 2008

    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.

    bumi Tue Dec 16 00:49:01 -0800 2008

    wow this looks awesome! we just have to love github! ;) thanks!

    dnunes Tue Dec 16 02:48:58 -0800 2008

    . . Hey nex3, thanks for remembering us about it. I almost forgot about color blindness check on my porojects. Will do it right away.

    alx Tue Dec 16 04:08:09 -0800 2008

    For those interested to translate the project presented in the video:

    http://github.com/schacon/gitbook

    ashebanow Tue Dec 16 07:01:55 -0800 2008

    Hey, fork queue too and the horse you rode in on!

    Sorry, couldn’t resist :-)

    GFunk911 Tue Dec 16 07:25:13 -0800 2008

    What was the other big feature?

    icefox Tue Dec 16 07:54:13 -0800 2008

    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

    icefox Tue Dec 16 07:57:26 -0800 2008

    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

    britt Tue Dec 16 09:22:12 -0800 2008

    Fork queue looks like a great feature and I, for one, want to commend you on the lack of fork in this post.

    britt Tue Dec 16 09:23:13 -0800 2008

    Ah dammit… and I was being so clever

    That was supposed to say “the lack of fork puns in this post”.

    emk Tue Dec 16 10:47:03 -0800 2008

    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

    lacky Tue Dec 16 12:28:33 -0800 2008

    Wow, that just made collab a heckofalot easier

    bradfitz Tue Dec 16 14:47:36 -0800 2008

    Love it! I’ve always been unhappy with email patch management…. this is perfect.

    ryan-allen Tue Dec 16 16:25:22 -0800 2008

    You guys are so oarsum! I just liek recently bought a secret micro plan. I am so very happy you’ve made this product :)

    sporkmonger Wed Dec 17 07:19:54 -0800 2008

    Wow, this is beyond awesome. For some projects, this is going to be a godsend.

    sporkmonger Wed Dec 17 07:26:48 -0800 2008

    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.

    elliottcable Wed Dec 17 13:40:21 -0800 2008

    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.

    davisp Sun Feb 01 15:07:02 -0800 2009

    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.

    ctran Thu Feb 12 11:54:55 -0800 2009

    Could you provide the steps behind apply process? (sequence of git commands that will produce the same result if done manually)

    bronson Wed Dec 09 14:03:09 -0800 2009

    You guys should kill the spam here! It's getting a little distasteful.

    Please log in to comment.