Back to the Gaia-SINS home page

About Fossil SCM (Source Control Management)

Fossil is an open-source version control system: it's fully based on SQLite, and it comes from the same author of SQlite (Dr. R. Hipps).
More or less, Fossil is the same as the best known GIT or SVN; but Fossil is unbelively simple and lighweight compared to them.
That's not all: Fossil supports many features typical of web-based project management and bug-tracking tools such as Trac or RedMine.

Fossil is just a single small-sized program, requiring no configuration and no administration at all.
A further demonstration of the nice and pretty design principles typical of the SQLite's world:
small is beatifull and K.I.S.S. (keep it simple, stupid)

Using Fossil - a quick how-to

Installing the Fossil executable

You can download a prebuilt Fossil executable from here (many platoforms are supported).
A Win32 fossil.exe supporting encrypted SSL / HTTPS connections is available here

Alternatively, you can build by yourself starting form sources (a trivial task on Linux).
Fossil has absolutely no installation process: simply copy somewhere the executable, and it's immediately ready to go.
Anyway, placing the Fossil executable within your local search $PATH surely is a big good idea.

Downloading the local repository

$ fossil clone \
                 Bytes      Cards  Artifacts     Deltas
Sent:              53          1          0          0
Received:      748252        588        100        193
Sent:              58          2          0          0
Received:       37305          9          0          0
Total network traffic: 467 bytes sent, 769078 bytes received
Rebuilding repository meta-data...
  100.0% complete...
project-id: 0925b6b52c31f5089b1b2837682ddf050332a056
server-id:  1b7e05a956817a9eef66eba3747d0677fca7b396
admin-user: sandro (password is "0906b3")

Now you have a new file in your current directory, named librasterlite.fossil (your local repository).
This one simply represents a local replica of the central repository living in the remote server.
And it simply is an ordinary SQLite DB-file; you can query the DB using SpatiaLite-GUI, if you wish to do so.

Important notice: if you are a developer with commit privileges you should use a slightly different syntax:

$ fossil clone \

Explicitly declaring your user:password values into the URL will implicitly authorize you to commit afterwards:
obviously you must set such values as appropriate, e.g. sandro:pizza42

Extracting the sources from the local repository

$ mkdir librasterlite
$ cd librasterlite
$ fossil open ../librasterlite.fossil
project-name: librasterlite
repository:   c:/sviluppo-mingw/fossil/librasterlite.fossil
local-root:   c:/sviluppo-mingw/fossil/librasterlite/
user-home:    C:/Documents and Settings/XPMUser/Dati applicazioni
project-code: 0925b6b52c31f5089b1b2837682ddf050332a056
server-code:  1b7e05a956817a9eef66eba3747d0677fca7b396
checkout:     dd270c4d41fc9ffee69e22b206f1a10d224fb956 2011-11-13 09:10:22 UTC
parent:       978a32a5b39a88efa42b5482e650f69340a8c2c9 2011-11-12 19:06:13 UTC
tags:         trunk
comment:      fixing the WinOZ build system (both MinGW and MSVC) re-licensing
              the library under the MPL terms (user:

And now you have all the files contained into the repository nicely extracted into your current directory;
and any file is currently under version control.

Note well: if you don't have commit privileges to the remote repository, the full story ends here for you.
You can now build librasterlite as usual, being sure you are actually using the current development sources.

Committing your changes

The following notes are interesting only for developer having commit privileges to the remote repository.
Important notice: remember, you should perform fossil clone in the previous steps specifying the expected user:password
values within the URL, in order to be enabled to commit succesfully.

$ fossil status
EDITED     Makefile-static-MinGW

All right: you have changed some file(s), and now you obviously intend to permanently store such updates into the remote repository.

$ export "EDITOR=vi"
$ fossil commit
$ fossil close

Done: your changes are now permanently stored within the remote repository.

Available repositories

libspatialitefossil clone libspatialite.fossil
FreeXLfossil clone freexl.fossil
spatialite-toolsfossil clone spatialite-tools.fossil
libgaiagraphicsfossil clone libgaiagraphics.fossil
spatialite_guifossil clone spatialite_gui
librasterlitefossil clone librasterlite
spatialite_gisfossil clone spatialite_gis

More infos about Fossil

Please, read the official guide

Back to the Gaia-SINS home page