So, I have some repositories for private projects served up via git. I use gitosis to manage write access to the repositories, and it's worked quite well. I recommend it, as it sets up a restricted shell account which is usable solely for pushing to git repositories, and access is allowed by ssh key only.

After a while, I thought ``hey, I'll share my code out---it's gpl'ed for a reason''. I recalled from the git tutorials that to do so, you set up git-daemon and touch git-daemon-export-ok in the repository location. Set it up, and, after remembering to add git-daemon to the firewall, it worked. Yay! At least for now.

A couple weeks later, I tried to clone the code via the git protocol onto my Windows machine to see how portable my code truly was. It failed. Hrm... I ssh'ed into the box containing the repositories, and git-daemon-export-ok was gone from all of them! I re-added it, and it worked for the moment, but git-daemon-export-ok kept disappearing.

A couple hours later with google (apparently this isn't as common a problem as you'd think), I discovered that I needed to edit my gitosis.conf file to tell it the repository should be exported:

[repo myrepo]
daemon = yes

After adding these lines for all my public repositories, bamph!, it worked. Gitosis even added the git-daemon-export-ok file magically when the push was resolved. Happy day!

I applaud the authors here for helping me figure it out: http://sunoano.name/ws/public_xhtml/scm.html#providing_a_repository_to_the_world

tech Software