Now that the entire site is in D, I've been doing a lot more getting the code/ page more advanced. I've started to simplify what is displayed there in hopes to make it more useful. In addition, some subdirectories are starting to get handled.
First, you can access repositories by either their canonical name or nicknames specified server side. The only repository that works like this currently is jail , which can also be accessed by going to jl .
In the URL, after the repository name is the command. Currently, there are only two. The first is anything except "commits". It can even be nothing. That is the default handler, and displays a clone command, branches, three recent commits, the files in a repository and how/when they were last touched and the README file if there happens to be one in the repository. The "commits" command is really not interesting, and currently it ignores all arguments, producing a list of all commits for a repository. If you click on one of the commit links, it will take you to commits/$HASH which will eventually hold information about that commit :)
I'm still not having too much trouble parsing the output of git. I did have a small issue where the fyodor repository had a file with both spaces and a quotation mark. That didn't work well with the way I was passing filenames. I temporarily just surrounded the filename with double quotes, but this issue still needs to be addressed properly.
Oh, and the mysterious "a single modulus symbol aborts transfer" bug was solved with the help of ajanata from the #uakroncs IRC channel. He convinced me it was a problem with my code (Why, I never...). Turns out, I had mistyped one of the writeln calls to be writefln. This is a D function which works very much like printf from C, so it was looking for a type specifier and not finding anything that made sense. I deleted one character, and everything is good on that front :)