Richard Bucker

Fossil SCM - work flow

Posted at — Dec 7, 2013

I have really started to take a liking to Fossil. I have been using it for a current project and while I could have easily use BitBucket or GitHub this is not the sort of project I want to risk sharing until it’s time. And while I could have self hosted BB and GH it’s a lot more trouble than it’s worth.Fossil is produced by the same developers that are responsible for SQLite. In fact SQLite is embedded. One of the better references is the Concepts page.What follows is a loose list of ordered commands for setting up your distributed environment for multiple users.Install fossil on the server and the local machine(s)In most cases it is a matter of copying the executable to a folder in the user’s path. In my case I have a bin directory off of my HOME.Initialize the repo on the remote server(login to the remote server)mkdir ${HOME}/fossil-repo${HOME}/bin/fossil init ${HOME}/fossil-repo/mydemo.fossilClone the remote repo to the local repomkdir ${HOME}/fossil-repo~/bin/fossil clone ssh://user@server//path_to_repo?fossil=path_to_fossil path_to_local_repoOpen the repo locallymkdir ${HOME}/democd ${HOME}/demo${HOME}/bin/fossil open ${HOME}/fossil-repo/mydemo.fossilCreate a small file; add it to the repo and commit… just so there is something in the projecttouch README${HOME}/bin/fossil add .${HOME}/bin/fossil commit -m “initial import”Perform an update before comitting new updates in order to import changes made by others${HOME}/bin/fossil update**One thing I noticed was that when I installed fossil on my OSX machine I was getting a strange error “killed by signal 2”. Since the error was being written to STDOUT by SSH I discovered that this command would prevent it from being displayed. It’s possible that the event is being generated on all ssh versions - only OSX is displaying it. So to suppress the message:~/bin/fossil setting ssh-command ‘ssh -q’