Richard Bucker

Install and Configure Fossil-scm on OpenBSD

Posted at — Dec 9, 2019

Fossil is an interesting SCM (source code management) solution. It was the first that integrated the SCM, wiki, and ticketing into a single app. Previously I had attempted to aggregate systems but it never flushed out the way I wanted. Around that time there was a version of SVN (subversion) that had hooks, links and workflows; but SVN itself was a pain to operate. I personally had janked the source tree many times.

Speaking of janking the source tree GIT makes that very easy and it’s the reason I KISS by always adding and never rollingback.

In my current universe there are two reasons why I do not use Fossil. [1] because I write a lot of golang code and it depends on git for pulling imported/dependent source code. [2] I take the client/server approach to development and so I do not like my code repository to be on the same machine that I write, test, deploy code.

I need an idempotent approach to my development machine. Meaning, deploy a new machine, clone the code repository, install the tools the project depends on, build/test/deploy/destroy.

the repository should be a safe place to store the code.

Finally, I agree that Fossil is meant for smaller projects with smaller teams. Frankly that’s the way I work. And the last reason is that everthing is stored in a SQLite database and that makes commits transactional but more importantly management is so much easier than git. And so here we go.

Something to consider

There are a number of different ways to deploy Fossil:

As I’m writing this I have choices to make.

OpenBSD

OpenBSD is a favorite. The maintainers delete deprecated code and that is probably my favorite philosophy even though I tend to comment code. But once I see commented code I tend to delete it.

Install

you can always install from the source but that means installing a lot of packages just to compile Fossil. But you can install the fossil package in the package library. You’ll have to decide whether to install the static linked version or other. I prefer the static linked version.

sudo pkg_add install fossil

I have a bin dir in my home directory and Fossil was installed in /var/www/bin/fossil so I’ll build a symlink.

ln -s /var/www/bin/fossil ~/bin/fossil

At this point I can test that fossil was installed. fossil version

Mount a remote NFS volume

launch Fossil as a service

??