Felix Crux

Technology & Miscellanea

Tags: , ,

I am afraid that I have to admit that the development of this site has until now proceeded in what any programmer must consider a state of sin: it was not under version control. Sure, I had periodic snapshot backups, but forget about versions, branches, and reverts.

The reason for this is that I was under the mistaken impression that my VCS of choice, git, made it difficult to set up remote branches. I think my confusion stemmed from the fact that it is somewhat tricky to set up public-facing ones with good commit-access control etc (which is why GitHub is so great).

Now that I looked into it more, I find it's actually tremendously easy, and I've got a really great work-flow set up: I have a master repo on the server, a development repo on my laptop, and another one in the directory from which the site is served. I can make changes on my laptop (and thanks to the magic of makefiles and m4 macros, keep a separate dev config file), and then push those to the master repository. When I'm ready to launch, I just pull them to the serving repo and run a make prod.

Setting all this up was surprisingly easy. The first step is to set up the master repo, using git --bare init. This initializes an empty repository, additionally specifying (via --bare) that git need not bother with anything but the repository metadata itself, and can ignore the actual working files. The two client repositories can then either be cloned from this master one, or if one of them already contains data, simply add the master as a remote branch. Pushing and pulling from one repo to another is now a breeze.

As a result of this exciting development, I've gotten around to fixing up the reference library somewhat, although it still lacks any kind of searching or sorting, not to mention pagination.

blog comments powered by Disqus