Can Has: Better Mirroring to the Git Hubs?

April 9th, 2009 by ymendel 2 comments »

Some time ago, Rick worked out this slightly wacky scheme to handle our git repos, with backups and mirrors and suchlike. After much prodding from me, he posted about it, accompanied by just one quite-wacky picture and a lot of code-like content.

He’s no Giles Bowkett.

To help people out, we keep pushing this kind of mirroring scheme upon them when they even come close to asking about handling git repos, and we do it for their own good. We went through some headaches, we suffered from reliability and stability issues, and we wrote down some simple steps to follow and get your mirroring up and running. The problem was that each new repository created required some manual work to get the mirroring set up.

But no more! Mr. Damien Lebrun (dinoboff on github) left a comment on that old post telling us he had come to save the day with his Python skills and desire to scratch an itch.

Now all you have to do put something like this in your gitosis.conf:

[repo freshtrack]
mirrors = git@github.com:flogic/freshtrack.git

If you do that, it Just Works™. Well, it Just Works™ if you let Damien’s new gitosis create the repo using its fancy template with its special post-receive hook. If the repository already exists on your gitosis host, you’ll have to handle any hook placement yourself. Damien said as much in his comment, and it’s really obvious anyway, but that didn’t stop me from spending ten minutes trying to figure out why the mirroring wasn’t working.

And it gets even better! Prompted by a question from me (or quite possibly something he was going to do anyway), he made it simple to set the mirror on multiple repositories at once. Check this out from my own gitosis.conf:

[mirror ymendel-github]
repos = dugdale flac2mp3 fsevents graphtunes markov music_conversion_observer one_inch_punch pj punch_widget truthy pj_talk truthy_talk
uri = git@github.com:ymendel/%s.git

It’s really that simple. No more logging in to the gitosis host and futzing with repositories. (At least not once you futz with the ones that are already there. Deal with it.)

To Damien Lebrun, a git-mirroring hero. Check out his fork of gitosis for more information, and especially check out the example configuration.

Update 2009-04-12 Damien just sent word that the repetition in the group and mirror sections can be reduced with the brand-new repo aliases. Check out the example mirror config (and pay attention to the lines involving “public” and “@public”.

A Long Way Around (for little to no gain)

February 24th, 2009 by vinbarnes 1 comment »

Am I the only one that gets miffed trying to read gists without wordwrap? The answer is probably Yes but that's not the point. Here at OG we opt to use gists instead of the ubiquitous Google Docs for editing everything from our bylaws to t-shirt orders. This is serious stuff. And unfortunately, I don't have a Kindle to better my reading experience.

The point is that I usually click the raw link, cut and paste into TextEdit and proceed to read with wordwrap. Ugh. It feels like someone tossed a bag of frozen peas at my 21st digit...

The first pass of this used appscript to open the contents in TextEdit after automating the downloading of the raw content. But then I found out about qlmanage, the hidden, unsupported Quick Look simulator/debugger in Leopard. So of course, I used it instead! Achtung baby!

To quote "Lonesome" Dave Peverett,

I feel good. I feel alright!

A day with an outsider

January 19th, 2009 by ymendel 0 comments »

We’re kind-hearted people here at OGC. Sometimes we take in strays. Rick can tell you about his dog if you ask, and I’ve fostered more cats than I care to deal with again (3 or thereabouts). So when our neighborly friend Mr. Jeremy McAnally heard that his buddy Ryan wanted to try his hand at a Corey Haines-esque pairing tour, he naturally thought of foisting Ryan off on recommending him to us.

After some e-mail back-and-forth, we settled on a date for Ryan to come up and spend a day in the OGC lair. It kind of sucked because it made me get up and out of the house and seeing my esteemed partners and colleagues earlier than my norm, and it was also the day I finally killed my car, but other than that it was a very good day. Ryan has his take of the day’s events up, but I thought I’d try to put forth my own.

We met at Kevin’s a little early to talk over some final ideas while waiting on Ryan to show up, as he promptly did at our agreed-upon time of 10am. Then we went over the overview of what we’d be working on, including a bit of history of the people involved, where our data model came from, why we’re focusing on one particular part of the app to start it up. From there, we looked at the stories we’d collected, split into two pairs (I got Ryan to start), and got to work.

It may have felt to Ryan like he was slowing me down, but as I explained to him, sometimes being slowed down is a good thing. In my mind, one of the primary benefits of practices like writing stories, BDD, and pairing is that they slow you down and make you think about what you’re doing. They give you the time to design and code better. Paradoxironically, they speed you up by slowing you down.

And all the stuff he said he learned, I told him that our first 3-2-1 taught us much of the same. Just watching someone else with different practices, different knowledge, different ideas — there’s so much you can pick up. Actually getting to work with a person like that? Forget about it. And packing that into an intense day (or few) instead of just making it an every-now-and-then thing? Oh man.

As a three-man team, we have some mathematic disadvantage when it comes to constant and vigilant pairing. We also have other interests and personal lives that have us in a fairly common situation of developing separately but together, off in our own coding worlds with communication through various electronic means. It doesn’t have the same benefits of in-person pairing, as we’re reminded when we do get together and smack down a bunch of stories while talking to each other. It’s nice to carve out time and get into that groove.

Anyone else want a piece of this? Come on up. We’d like to have you. Just keep in mind that Ryan’s set a precedent of the guest paying for lunch.

Update: They say good news travels fast. Two local programmers have contacted us about pairing opportunities. Also, we’re working on a follow-up pairing session with Ryan in the next month or two. That, or he wants to kidnap my dog! –Kevin