Fossil: more than just bare bones

No Comments

After decades of making do with plain old files and directories, I recently bit the bullet and decided to put my programming projects under version control.

Fossil

Since I tend to work alone, mostly with fairly small code bases, I think almost any of the extant version control systems would fit my needs nicely. After looking at various alternatives, the system I ended up installing was Fossil SCM.

Well, you don't really install Fossil so much as copy a single executable file to your hard drive and be done with it. An 800 kB executable in fact, and that's for a full blown DVCS!

But wait, there's more to see inside the package. Fossil has an integrated issue ticket system and a wiki, and somehow they also managed to shoehorn a browser-based user interface, together with a web server to run it on. Personally, the issue ticketing part is not something I need right now. I do occasionally use the integrated wikis to jot down ephemeral stuff, but in the main my proper notes still go into project specific org-mode files. But it's still reassuring to know that these extras are present, and seemingly not bloating up Fossil.

Over 4 months of continual usage, the only real inconvenience I've faced with it has been the need to manually resolve merge conflicts. Fossil, as opposed to, say, Git, doesn't include a tool to assist in conflict resolution although I gather this is being looked into.

A shallow excavation

Here is a sequence of Fossil commands for carrying out some very elementary source code management:

  1. Create a new repository (maintained as a single archive file) with myself as admin user:
    > fossil new repo.fossil -A ikram
  2. Open the repository to start (or resume) working on the project (effectively, checks out the latest version of the repository's contents into the current directory):
    > fossil open repo.fossil
  3. Launch the UI inside a web browser window (displaying branch graph, version diffs, etc. and enabling wiki editing, ticket submission, user management, etc.):
    > fossil ui &
  4. Register a new file (one that already exists) for addition to the repository:
    > fossil add prog.lisp
  5. After editing some files, commit all changes (this will cause an external editor to prompt for the commit message):
    > fossil commit
  6. End the session:
    > fossil close

Be the first to write a comment!