summaryrefslogtreecommitdiff
path: root/development/fossil/README
blob: af0f5691e7c4388e7ae4060f4b0abd039babb679 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
Fossil is a distributed version control and ticket tracking system
created by D. Richard Hipp, the primary author of SQLite.

Features:

- Tamper-proof artifact record
- Simple command-line interface
- Customizable web interface with JSON, RSS, CGI, wiki, chat, and forum
- Online project documentation with full-text search capability
- Integrated PIC-like markup language for creating diagrams
- Online activity and ticket reports
- User accounts with access controls
- Coherent versioning across all files
- Straightforward branching and merging
- Bisect searches to pinpoint behavior changes
- SHA3-256 and hardened SHA1 checksums
- FUSE filesystem makes all historical and branch revisions available
- Synchronization via http, https, ssh, and local/network filesystems
- Automated replication and backup
- Git import/export and Subversion/CVS import
- Nested checkouts to share common subtrees across related projects
- Checkout directory not cluttered with administrative files
- Support for Docker
- Unversioned file area for builds, statistics, other ephemeral content
- Optional PGP signing of commits
- Users can subscribe to email alerts to be notified of events
- Private branches which are excluded from syncs until published
- Bundles group a change set (e.g. a private branch) into a single file
- Users can make their own repositories, no need for special privileges
- Works in Windows as well as Linux and other Unix-like systems

Fossil can host an entire project development website, including the
download area, but it also can be used for individual projects with no
need for a shared server.

In addition to typical software development operations, one interesting
application is coordination and auditing of /etc and other configuration
files across a network of computers.

Content is stored in an SQLite database for atomicity, durability, and
effortless administration.

See Fossil in action online:

- https://fossil-scm.org/ - Fossil hosts its own development
- https://sqlite.org/src/ - Fossil originally created to manage SQLite
- https://core.tcl.tk/tcl/timeline?y=ci - Tcl/Tk migrated from CVS
- https://chiselapp.com/ - Free public hosting for Fossil projects

Key technical points:

- Unified revision history tree spans the entire repository
- Repository is a collection of artifacts identified by their checksums
- Artifacts are broadly grouped into content and structural artifacts
- Each check-in is tracked as a structural artifact known as a manifest
- Manifests primarily list the full names and checksums of each file
- Manifests can be amended by subsequent control artifacts
- In most cases, symbolic names refer to the latest matching check-in
- Branches are implemented using propagating symbolic tags

------------------------------------------------------------------------

This SlackBuild script installs not only release versions of Fossil but
also arbitrary development versions.  If the current directory contains
a file named "fossil-src.tar.gz", it is used as the source archive, and
the check-in timestamp is used as the version string.  For example, the
package name could be "fossil-20200320T040201-x86_64-1_SBo.tgz".

To download the latest trunk development version of Fossil, type:
$ wget https://fossil-scm.org/home/tarball/fossil-src.tar.gz

To download a specific version of Fossil, type:
$ wget https://fossil-scm.org/home/tarball/$VERSION/fossil-src.tar.gz

For more information about the allowable $VERSION formats, see:
https://fossil-scm.org/home/doc/trunk/www/checkin_names.wiki