Version 33 of Fossil

Updated 2013-10-14 17:31:09 by pooryorick

Fossil, by [D. Richard Hipp Fossil is a software configuration management (SCM) system.

Disambiguation

"Fossil" is also the name of the filesystem in Plan 9 4th Edition [L1 ]. Plan 9 Fossil runs on top of Venti [L2 ] which indexes files and file fragments by their SHA-1 hash.

Features

  • Bug Tracking And Wiki
  • Web Interface
  • Autosync
  • Self-Contained
  • Simple Networking
  • CGI Enabled
  • Robust & Reliable

Attributes

license
Fossil license page%|%BSD(2)

See Also

Developing Tcl with Batteries Included
how to accessing the Tcl fossil repositories

Articles

Version Control with Fossil ,Jake Edge ,2011

Documentation

Fossil Quickstart
Fossil vs CVS Commands
for people coming from CVS

Description

Fossil is is is designed to control and track the development of a software project and to record the history of the project. There are many such systems in use today. Fossil strives to distinguish itself from the others by being extremely simple to setup and operate.

Fossil stores content using an enduring file format in an SQLite database so that transactions are atomic even if interrupted by a power loss or system crash. Furthermore, automatic self-checks verify that all aspects of the repository are consistent prior to each commit. In over three years of operation, no work has ever been lost after having been committed to a Fossil repository.

Setup of the bug-tracking subsystem is accomplished using a TCL-like language called TH1 .

Previous Licenses

EMJ : BUT, as from 4th January 2010, see http://www.fossil-scm.org/fossil/doc/tip/COPYRIGHT-BSD2.txt . So (in my interpretation), versions of Fossil before checkin d2bec5a1d4 are GPL, and d2bec5a1d4 and beyond are not.


bch : This is incorrect; there are multiple branches. The mainline ``trunk'' is indeed BSD, but there is a specific GPL branch as well. See: http://fossil-scm.org/index.html/brlist and http://www.methodlogic.net/BSDFossil.html

Tips and Tricks

Versionless Link to a File

http://www.fossil-scm.org/fossil/artifact?filename=src/main.c&ci=trunk

and

http://www.fossil-scm.org/fossil/doc/trunk/src/main.c

HaO 2013-05-28 (Info from Jan Nijtmans):

Standard merge

There is a branch 'branch1', branched from trunk after the checkin with id 'checkin1'.

I merge it back to trunk when I am in a checkout of trunk:

% mkdir trunk
% cd trunk
% fossil open -R ../repository.fossil
% fossil merge branch1

Merge to another branch

Now I have another branch 'branch2' and I want to merge the changes within 'branch1' to this second branch.

So I go to a checkout of branch2 and try a merge:

% mkdir branch2
% cd branch2
% fossil open -R ../repository.fossil branch2
% fossil merge branch1

This does not work, as it will merge also all changes contained in 'checkin1', the origin of the branch 'branch1'.

% fossil undo

To limit the merged changes to the changes done in 'branch1', one must use the '--baseline' option:

% fossil merge --baseline checkin1 branch1

Example

A practical example is to merge an msgcat bug fix in the branch 'bug3036566' into the trunk (e.g. tcl8.6) and into tcl8.5 (tag 'core-8-5-branch').

The bug branch was forked from trunk after checkin '76f6a1495e'.

% mkdir bug3036566
% cd bug3036566
% fossil open -R ../tcl.fossil
--- make modifications ---
% fossil commit -branch bug3036566 --branchcolor #ffc0c0

which looked after some modifications like that: [L3 ]

Now trunk was merged:

% mkdir trunk
% cd trunk
% fossil open -R ../tcl.fossil
% fossil merge bug3036566
--- test ---
% fossil commit

To merge the changes to tcl8.5 branch:

% mkdir core-8-5-branch
% cd core-8-5-branch
% fossil open -R ../tcl.fossil core-8-5-branch
% fossil merge --baseline 76f6a1495e bug3036566
--- test ---
% fossil commit