gsc Bug Fixes

I announced gsc earlier this week because it worked for me. If you were brave and cloned the repository to try it out, you undoubtedly found that, well, it didn’t work for you. Thanks to Rob for reporting the problem with, as well as a few other bugs.

I’ve pushed an update to the repository on gitorious which includes fixes for the issue, support for some [likely] common Subversion configurations and a test suite. In addition to the installation issue Rob also reported that wasn’t able to clone his svn repository with gsc. Some investigation led me to realize the following cases weren’t supported:

  • svn:externals specified with nested local paths (ie, “vendor/product”)
  • empty directories in the Subversion repository with nothing but svn:externals set on them

Both now clone correctly.

One open question is what (if anything) gsc should do when you run it against an already cloned repository. I’ve envisioned it purely as a bootstrapping tool but received an email stating that it didn’t work when run a second time, so obviously it should do something, even if that’s just failing with an error message.

date:2009-07-25 18:41:27
tags:cc, git, git-svn, gsc, svn, svn:externals

git-svn and svn:externals

UPDATE I’ve pushed a few bug fixes; see this entry for details.

At Creative Commons we’re a dual-[D]VCS shop. Since we started self-hosting our repositories last year we’ve been using both Subversion and git. The rationale was pragmatic more than anything else: we have lots of code spread across many small projects and don’t have the time (or desire) to halt everything and cut over from one system to the other. This approach hasn’t been without it’s pain but I think that overall it’s been a good one. When we create projects we tend to create them in git and when we do major refactoring we move things over. It’s also given [STRIKEOUT:recalcitrant staff] me time to adjust my thinking to git. Adjustments like this usually involve lots of swearing, fuming and muttering.

As I’ve become more comfortable with git and its collection of support tools, I’ve found myself wanting to use git svn to work on projects that remain in Subversion. One issue I’ve run into is our reliance on svn:externals. We use externals extensively in our repository which has generally made it easy to share large chunks of code and data, and still be able to check out the complete dependencies for a project and get to work[1]_. More than once I’ve thought “oh, I’ll just clone that using git-svn so I can work on it on the plane[2]_,” only to realize that there are half a dozen externals I’d need to handle as well.

Last week I decided that tools like magit make git too useful not to use when I’m coding and that I needed to address the “externals issues“. I didn’t want to deal with a mass conversion, I just wanted to get the code from Subversion into the same layout in git. I found git-me-up which was close, but which baked in what I assume are Rails conventions that our projects don’t conform to. Something like this may already exist, but the result of my work is a little tool, **gsc** — “git subversion clone”.

gsc works by cloning a Subversion repository using git svn and then recursively looks for externals to fetch. If it finds an external, it does a shallow clone of the target (only fetching the most recent revision instead of the full history). The result is a copy of your project you can immediately start working on. Of course, it also inherits some of the constraints associated with svn:externals. If you want to work on code contained in an external (and push it back to the Subversion repository) you may need to check out the code manually[3]_. Of course, the beauty of DVCS is that there’s nothing stopping you from committing to the read-only clone locally and then pushing the changes via email to a reviewer.

You can grab gsc from gitorious. There are also installation instructions and basic usage information in the README.

[1]It’s also led to some sub-optimal software release practices, but that’s probably a different post.
[2]Yes, I’ve actually encountered the “airplane” scenario; this either means DVCS advocates are prescient or I’ve been traveling way too much lately.
[3]This is true because some repositories spell read-only and read-write access differently; both CC and Zope do this, so the svn:externals definitions are often written using the read-only syntax to make sure everyone can make a complete checkout.
date:2009-07-21 09:47:17
tags:cc, git, git-svn, gsc, svn, svn:externals

Tori Amos at The Paramount, Oakland

Monday I saw Tori Amos at The Paramount, Oakland (setlist). This was the third time I saw her in concert. The first two times were both on her Choirgirl Hotel tour, in 1998.

In 1998 I was that guy, one of the dozen or two that spent Halloween afternoon in the drizzle outside Elliot Hall of Music at Purdue for almost six hours, waiting for her bus to arrive so I could participate in the meet and greet. I clutched my Silent All These Years single — a second one, actually, purchased just for the occasion — and listened to the more wizened Tori-philes describe their first, sixth, tenth, twentieth concerts. I was a “virgin” and they delighted in explaining just how amazing my first time would be. Tori arrived, said hello, shock hands with people and gave hugs. She said something like, “my, aren’t you a tall one,” and gamely signed my single.

The show at Elliot was indeed amazing. As was the second show I saw her in, at Dayton, Ohio. Monday she did not disappoint.

At The Paramount she covered the breadth of her catalog, from Precious Things and Tear in Your Hand from Little Earthquakes, to the material from her most recent release, Abnormally Attracted To Sin. She even played Siren, a song she contributed to the soundtrack for Great Expectations (1998). From the first song to the end of the second encore the audience was held rapt, almost worshipful. Seeing Tori perform I was reminded how her music seems to pour out of her. It appears to be an extension of her mood, her presence on stage, drawing the audience in.

It’s hard not to compare Monday with my previous experiences seeing Tori. The show was similar to the previous shows in some ways; she played what I think of as the “live arrangement” of Precious Things, there was a bit of improv and she played a cover song (in this case she covered Baby One More Time by Britney Spears). The biggest difference this time was the audience’s demeanor. The first two times I saw her perform the audience was on their feet from beginning to end, cheering and dancing. Monday night The Paramount was almost church-like. People swayed a bit, mouthed the words and shouted “We love you Tori” at irregular intervals, but for the most part remained seated, listening attentively.

Sitting there in the dark, I also found myself comparing where I’m at in life now and where I was the first time. Ten years have past and have brought a lot of change in my life. Five jobs, two major relationships, a dozen addresses, and a cross-country move. I sat there in the dark of the theater Monday contemplating where I was ten years ago, five years ago. And I found myself grateful that I’ve had this music to accompany me and to grow with me.

date:2009-07-19 20:28:48
category:my life
tags:calidfornia, concert, east bay, music, oakland, paramount, tori amos

RDFa Bookmarklets for Ubiquity

I’ve been aware of Ubiquity since it launched and have meant to dig in and play with it for a while. I’m becoming increasingly reliant on my keyboard for fast interaction with the computer; I blame gnome-do. So using the keyboard to interact more quickly with my browser had a lot of appeal.

Today I finally installed Ubiquity 0.5 and looked at converting the RDFa bookmarklets to Ubiquity commands. The bookmarklets are invaluable for debugging and exploring RDFa, but I don’t use them often enough to feel like I want them on my bookmark bar all the time.

Turns out that Ubiquity makes it really easy to convert a bookmarklet to a command. I’ve converted the Get N3 and RDFa Highlight bookmarklets and made them available. I’d like to convert the fragment parser as well but I think that’ll be a little more involved.

To use the commands, just install Ubiquity 0.5 (or later for you visitors from the future) and visit the commands page. You’ll see a notification at the top of the browser window asking if you’d like to install the commands.

date:2009-07-11 09:58:28
category:development, geek, projects
tags:firefox, javascript, rdfa, ubiquity