Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

schwern (1528)

  (email not shown publicly)
AOL IM: MichaelSchwern (Add Buddy, Send Message)

Schwern can destroy CPAN at his whim.

Journal of schwern (1528)

Saturday February 14, 2009
06:05 PM

I <3 Github's fork queue

[ #38478 ]

Since it's Valentines Day, I'll squee about something I love. Github. Oh I loves it so hard. Hopefully this love will stand the test of time.

For years now I've wanted to replace mailing patches around with a version control centric system. I drop patches on the floor all the time, they get lost in my inbox or in the ticket queue. And that sucks, because people who actually write code are really valuable.

To fix this, I want a system that let anyone make their own branches, which they own, for each task they want to do. They could do easy updates from trunk, and when they're ready, they'd ping the project integrator to evaluate the change and pull it in.

SVK came close to this potential, with it's easy pushing and pulling and SVN-like syntax, but I never came around to making the associated tools and web site. Now, github has implemented this. This is why I've moved Test::More to github and why more will be following.

Instead of branching, you fork the whole project. Git makes this cheap. You have total control over that fork, which is good because I'm a terrible bottleneck. When your ready, you issue a "pull request" which pokes me to look at your changes and integrate them. Even better, there is a fork queue where you can see what changes are pending. Then a few clickies on web forms and the patches are integrated. It's a whole lot easier than the normal git pull process (see step 5). Github's integration process could provide a little more information about the merge, but I'm sure that will come.

Today I integrated a patch before it was even submitted!


The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
More | Login | Reply
Loading... please wait.
  • Do you plan to move EU::MM to Github?

    • You're about the fifth person to ask that. Seems people really want to mess with MakeMaker. :)

      Most likely. There's talk of instead of keeping a separate repository, for very core-centric modules like MakeMaker and ExtUtils::Install to instead just fork off the perl repository on github []. This will make p5p and CPAN coordination much easier.

      One showstopper, now resolved, was that the perl repo is rather large and forking it would eat up a big chunk of a free account's quota. Turns out forking is about 15

      • One showstopper, now resolved, was that the perl repo is rather large and forking it would eat up a big chunk of a free account's quota.

        Why not just use [], which provides actually-free Git hosting for Free projects?

        • Because I like GitHub, I like the people, they've been nice to Perl (they approached us to mirror in the Perl repo) and it's a whole lot more than just a place to host my git repositories. I don't want to knock, they're doing a great service, but if you think J Random Server running the stock git server is a replacement for GitHub, you really haven't looked at GitHub.

          [Incoming rant. Not necessarily at you, but you triggered a soft spot. And I'm sorry for ragging on, they're doing a

          • It seems to me that a zealous Open Source/Free Software advocate would be glad to see discrimination against proprietary software packages, forcing their producers to pay while Open Source folks go free.

            But what do I know?

            J. David works really hard, has a passion for writing good software, and knows many of the world's best Perl programmers
        • How about “Because it’s missing all of the features that Michael is squeeing about in his post”?

  • It certainly helps resolve the problem of patches versus giving commit to trunk.

  • Well, the way they apply patches sucks.

    Apparently just doing a simple fast forward merge is not cool enough, so a cherry pick with a signoff is done instead, meaning that your contributer now has to do a git reset --hard or they will run git pull and accidentally create a merge commit merging their changes with... you guessed it, their changes. Great =P

    Please just use git remote add foo git:// and then git remote update and git merge. It's just as easy, and actually works.

    • You seem to be assuming you're always going to be pulling in all their changes, in which case a merge might be better, but otherwise a cherry-pick and sign off is correct. They could detect that you're asking for all changes and do a merge, sounds like simple a feature request to me. And hey, here it is [].

      Worrying about the fiddly technical details of how they do their merge, fiddly technical details which could change tomorrow, fiddly technical details which really don't have that big an impact, is missing

      • fiddly technical details is an understatement. anybody who wants to contribute a simple patch will need to learn how to use one of git's scariest commands the next time they try to contribute.

        At least in my experience cherry picks are definitely *not* the common behavior.

        Thus only real use the fork queue has is to list the pending commits, and for that git log --decorate --all is at least IMHO more useful (well, actually I use gitx for that, but whatever).

        • You're the first I've heard mention this problem, and I cherry pick all the time. *shrug*