Fossil

Check-in [7083eb1a]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Change the markup in the index.wiki page from HTML to wiki. Extend the wikitheory.wiki page. Other documentation tweaks.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 7083eb1a1c7a32206a0960e354899d2c2058554c
User & Date: drh 2008-11-20 03:14:22.000
Context
2008-11-20
17:24
added documentation plan, just so I can ask myself "What was I thinking?" later. ... (check-in: f8835f73 user: kejoki tags: trunk)
03:14
Change the markup in the index.wiki page from HTML to wiki. Extend the wikitheory.wiki page. Other documentation tweaks. ... (check-in: 7083eb1a user: drh tags: trunk)
01:07
When creating a new repository or cloning a repository, print the initial administrator password on standard output. This is intended to help new users figure out how to log in. Ticket [ca08d51f19] ... (check-in: 0c6ea0d9 user: drh tags: trunk)
Changes
Unified Diff Ignore Whitespace Patch
Changes to www/bugtheory.wiki.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<h1>Bug-Tracking In <a href="index.wiki">Fossil</a></h1>

A bug-report in fossil is called a "ticket".  Tickets are tracked
separately from code check-ins (baselines).

Some other distributed bug-tracking systems store tickets as files within
the source tree and thereby leverage the syncing and merging capabilities
of the versioning system to sync and merge tickets.  This approach is
rejected in fossil for three reasons:

  1.  Check-ins (a.k.a. "baselines") in fossil are immutable.  So if
      tickets were part of the check-in, then there would no way to add
      new tickets to a check-in as new bugs are discovered.

  2.  Any project of reasonable size and complexity will generate thousands
      and thousands of tickets, and we do not want all those ticket files
      cluttering the source tree.

  3.  We want tickets to be managed from the web interface and to have a











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<h1>Bug-Tracking In <a href="index.wiki">Fossil</a></h1>

A bug-report in fossil is called a "ticket".  Tickets are tracked
separately from code check-ins (baselines).

Some other distributed bug-tracking systems store tickets as files within
the source tree and thereby leverage the syncing and merging capabilities
of the versioning system to sync and merge tickets.  This approach is
rejected in fossil for three reasons:

  1.  Check-ins (a.k.a. "baselines") in fossil are immutable.  So if
      tickets were part of the check-in, then there would be no way to add
      new tickets to a check-in as new bugs are discovered.

  2.  Any project of reasonable size and complexity will generate thousands
      and thousands of tickets, and we do not want all those ticket files
      cluttering the source tree.

  3.  We want tickets to be managed from the web interface and to have a
Changes to www/index.wiki.
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<h1>Fossil: Distributed Revision Control, Wiki, and Bug-Tracking</h1>

<p>
Fossil is a
<a href="http://en.wikipedia.org/wiki/Revision_control">
distributed software revision control system</a> that includes an integrated
<a href="wikitheory.wiki">wiki</a> and an integrated
<a href="bugtheory.wiki">bug-tracking system</a> all in a single, 
easy-to-use, stand-alone executable.
Fossil is
<a href="http://www.fossil-scm.org/">self-hosting</a>
since 2007-07-21 on
<a href="http://www.hwaci.com/cgi-bin/fossil">two separate servers</a>.
You can download the <a href="../../../timeline">latest sources</a> and
<a href="build.wiki">compile it yourself</a>.
Or you can grab
<a href="http://www.fossil-scm.org/download.html">pre-compiled binaries</a>.
</p>

<p>Feature Summary:</p>

<ul>
<li>Flexible workflow:<ul>
    <li>Disconnected, distributed development like
      <a href="http://kerneltrap.org/node/4982">git</a>,
      <a href="http://www.monotone.ca/">monotone</a>,
      <a href="http://www.selenic.com/mercurial/wiki/index.cgi">mercurial</a>,
      and <a href="http://www.bitkeeper.com/">bitkeeper</a>
    <li>Or, client/server operation like 
      <a href="http://www.nongnu.org/cvs/">CVS</a> and
      <a href="http://subversion.tigris.org/">subversion</a>,
    <li>Or, operations on local repositories,
    <li>Or, all of the above at the same time</ul></li>
<li>Integrated, distributed <a href="bugtheory.wiki">bug tracking</a> and 
<a href="wikitheory.wiki">wiki</a>.</li>
<li>Built-in web interface that supports deep archaeological digs through
the project history.</li>
<li>All network communication via 
<a href="http://en.wikipedia.org/wiki/HTTP">HTTP</a> with 
<a href="quickstart.wiki#proxy">proxy support</a>
so that everything works from behind restrictive firewalls.</li>
<li>Everything (client, server, and utilities) is included in a 
single self-contained executable - trivial to install</li>
<li>Server runs as <a href="quickstart.wiki#cgiserver">CGI</a>, using
<a href="quickstart.wiki#inetdserver">inetd/xinetd</a>
or using its own 
<a href="quickstart.wiki#serversetup">built-in, stand alone web server</a>.</li>
<li>An entire project contained in single disk file
(an <a href="http://www.sqlite.org/">SQLite</a> database.)</li>
<li>Uses an <a href="fileformat.wiki">enduring file format</a> that is 
designed to be readable, searchable, and extensible by people not yet born.</li>

<li>Automatic <a href="selfcheck.wiki">self-check</a>
on repository changes makes it exceedingly
unlikely that data will ever be lost because of a software bug.</li>
<li>Ridiculously easy to 
<a href="build.wiki">install</a> and 
<a href="quickstart.wiki">operate</a>.</li>
</ul>

<p>User Links:</p>

<ul>
<li>The <a href="concepts.wiki">concepts</b> behind fossil</li>
<li><a href="build.wiki">Building And Installing</a></li>
<li><a href="quickstart.wiki">Quick Start</a> guide to using fossil
<li>Fossil supports <a href="embeddeddoc.wiki">embedded documentation</a>
    that is versioned along with project source code.</li>
<li>The <a href="selfcheck.wiki">automatic self-check</a> mechanism
helps insure project integrity.</li>
<li>Fossil contains a <a href="wikitheory.wiki">built-in wiki</a>.</li>
<li>There is a
    <a href="http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users">
    mailing list</a> available for discussing fossil issues.</li>
<li><a href="qandc.wiki">Questions &amp; Criticisms</a> directed at fossil.</li>
<li>Some (unfinished but expanding) extended
    <a href="reference.wiki">reference documentation</a> for the fossil command line.
</ul>

<p>Developer Links: </p>

<ul>
<li><a href="pop.wiki">Principles Of Operation</a></li>
<li>The <a href="fileformat.wiki">file format</a> used by every content
file stored in the repository.</li>
<li>The <a href="delta_format.wiki">format of deltas</a> used to
efficiently store changes between file revisions.</li>
<li>The <a href="delta_encoder_algorithm.wiki">encoder algorithm</a> used to
efficiently generate deltas.</li>
<li>The <a href="sync.wiki">synchronization protocol</a>.</li>
</ul>

<p>Competing Projects:</p>

<ul>
<li><a href="http://www.ditrack.org/">DITrace</a>
     - A Distributed Issue  Tracker</li>
<li><a href="http://www.distract.wellquite.org/">DisTract</a>
     - Another distributed issue tracker based on 
     <a href="http://www.monotone.ca/">monotone</a>.</li>
<li><a href="http://www.monotone.ca/">Monotone</a> - distributed
     SCM in a single-file executable with a single-file SQLite
     database repository.</li>
</ul>


<

|
|
|
|

<
|

|
|
|

|
|

|

<
|









|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
<
|
<

|

<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<

|

<
|
|
|
|
|
|
|
|
<

|

<
<
|
|

|
|

|
<
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
77
78
79
80
81
82

83
84
85


86
87
88
89
90
91
92

<h1>Fossil: Distributed Revision Control, Wiki, and Bug-Tracking</h1>


Fossil is a
[http://en.wikipedia.org/wiki/Revision_control | distributed software version control system]
that includes an integrated
[./wikitheory.wiki | distributed wiki] and an integrated
[./bugtheory.wiki | distributed bug-tracking system] all in a single, 
easy-to-use, stand-alone executable.

Fossil is [http://www.fossil-scm.org/ | self-hosting]
since 2007-07-21 on
[http://www.hwaci.com/cgi-bin/fossil | two separate servers].
You can download the [/timeline?y=ci | latest sources] and
[./build.wiki | compile it yourself].
Or you can grab
[http://www.fossil-scm.org/download.html | pre-compiled binaries].


Feature Summary:


  *  Flexible workflow:<ul>
    <li>Disconnected, distributed development like
      <a href="http://kerneltrap.org/node/4982">git</a>,
      <a href="http://www.monotone.ca/">monotone</a>,
      <a href="http://www.selenic.com/mercurial/wiki/index.cgi">mercurial</a>,
      and <a href="http://www.bitkeeper.com/">bitkeeper</a>
    <li>Or, client/server operation like 
      <a href="http://www.nongnu.org/cvs/">CVS</a> and
      <a href="http://subversion.tigris.org/">subversion</a>,
    <li>Or, operations on local repositories,
    <li>Or, all of the above at the same time</ul>
  *  Integrated, [./bugtheory.wiki | distributed bug tracking] and 
     [./wikitheory.wiki | distributed wiki].
  *  Built-in web interface that supports deep archaeological digs through
     the project history.
  *  All network communication via 
     [http://en.wikipedia.org/wiki/HTTP | HTTP] with 
     [./quickstart.wiki#proxy | proxy support]
     so that everything works from behind restrictive firewalls.
  *  Everything (client, server, and utilities) is included in a 
     single self-contained executable - trivial to install
  *  Server runs as [./quickstart.wiki#cgiserver | CGI], using
     [./quickstart.wiki#inetdserver | inetd/xinetd]
     or using its own 
     [./quickstart.wiki#serversetup | built-in, stand alone web server].
  *  An entire project contained in single disk file
     (an [http://www.sqlite.org/ | SQLite] database.)
  *  Uses an [./fileformat.wiki | enduring file format] that is 
     designed to be readable, searchable, and extensible by people
     not yet born.
  *  Automatic [./selfcheck.wiki | self-check]
     on repository changes makes it exceedingly
     unlikely that data will ever be lost because of a software bug.
  *  Ridiculously easy to [./build.wiki | install] and 

     [./quickstart.wiki | operate].


User Links:


  *  The [./concepts.wiki | concepts] behind fossil
  *  [./build.wiki | Building And Installing]
  *  [./quickstart.wiki | Quick Start] guide to using fossil
  *  Fossil supports [./embeddeddoc.wiki | embedded documentation]
     that is versioned along with project source code.
  *  The [./selfcheck.wiki | automatic self-check] mechanism
     helps insure project integrity.
  *  Fossil contains a [./wikitheory.wiki | built-in wiki].
  *  There is a
    [http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users | mailing list]
     available for discussing fossil issues.
  *  [./qandc.wiki | Questions &amp; Criticisms] directed at fossil.
  *  Some (unfinished but expanding) extended
      [./reference.wiki | reference documentation] for the fossil command line.


Developer Links:


  *  [./pop.wiki | Principles Of Operation]
  *  The [./fileformat.wiki | file format] used by every content
     file stored in the repository.
  *  The [./delta_format.wiki | format of deltas] used to
     efficiently store changes between file revisions.
  *  The [./delta_encoder_algorithm.wiki | encoder algorithm] used to
     efficiently generate deltas.
  *  The [./sync.wiki | synchronization protocol].


Competing Projects:



  *  [http://www.ditrack.org/ | DITrace] - A Distributed Issue Tracker
  *  [http://www.distract.wellquite.org/ | DisTract]
     - Another distributed issue tracker based on 
     [http://www.monotone.ca/ | monotone].
  *  [http://www.monotone.ca/ | Monotone] - distributed
     SCM in a single-file executable with a single-file SQLite
     database repository.

Changes to www/qandc.wiki.
16
17
18
19
20
21
22
23

24
25
26
27
28
29
30
  <p>Features provided by fossil that one does not get with other
  DVCSes include:</p>

  <ol>
  <li> Integrated <a href="wikitheory.wiki">wiki</a>. </li>
  <li> Integrated <a href="bugtheory.wiki">bug tracking</a> </li>
  <li> Immutable artifacts </li>
  <li> Self-contained, stand-alone executable </li>

  <li> Simple, well-defined, 
       <a href="fileformat.wiki">enduring file format</a> </li>
  </ol>
</blockquote>

<b>Why should I use this rather than Trac?</b>








|
>







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  <p>Features provided by fossil that one does not get with other
  DVCSes include:</p>

  <ol>
  <li> Integrated <a href="wikitheory.wiki">wiki</a>. </li>
  <li> Integrated <a href="bugtheory.wiki">bug tracking</a> </li>
  <li> Immutable artifacts </li>
  <li> Self-contained, stand-alone executable that can be run in
       a <a href="http://en.wikipedia.org/wiki/Chroot">chroot jail</a> </li>
  <li> Simple, well-defined, 
       <a href="fileformat.wiki">enduring file format</a> </li>
  </ol>
</blockquote>

<b>Why should I use this rather than Trac?</b>

76
77
78
79
80
81
82






















83
84
85
86
87
88
89
90
91
</blockquote>

<b>It would be useful to have a separate application that
keeps the bug-tracking database in a versioned file. That file can
then be pushed and pulled along with the rest repository.</b>

<blockquote>






















<p>This is addressed in the opening paragraphs of
the <a href="bugtheory.wiki">Bug-Tracking In Fossil</a> document.
</blockquote>

<b>Fossil is already the name of a plan9 versioned 
append-only filesystem.</b>

<blockquote>
I did not know that.  Perhaps they selected the name for the same reason that







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|







77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</blockquote>

<b>It would be useful to have a separate application that
keeps the bug-tracking database in a versioned file. That file can
then be pushed and pulled along with the rest repository.</b>

<blockquote>
<p>Fossil already <u>does</u> push and pull bugs along with the files
in your repository.  
But fossil does <u>not</u> track bugs as files in the source tree.
That approach to bug tracking was rejected for three reasons:</p>

<ol>
<li>  Check-ins in fossil are immutable.  So if
      tickets were part of the check-in, then there would be no way to add
      new tickets to a check-in as new bugs are discovered.

<li>  Any project of reasonable size and complexity will generate thousands
      and thousands of tickets, and we do not want all those ticket files
      cluttering the source tree.

<li>  We want tickets to be managed from the web interface and to have a
      permission system that is distinct from check-in permissions.
      In other words, we do not want to restrict the creation and editing
      of tickets to developers with check-in privileges and an installed
      copy of the fossil executable.  Casual passers-by on the internet should
      be permitted to create tickets.
</ol>

<p>These points are reiterated in the opening paragraphs of
the <a href="bugtheory.wiki">Bug-Tracking In Fossil</a> document.</p>
</blockquote>

<b>Fossil is already the name of a plan9 versioned 
append-only filesystem.</b>

<blockquote>
I did not know that.  Perhaps they selected the name for the same reason that
Changes to www/wikitheory.wiki.
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



















<h1>Wiki In <a href="index.wiki">Fossil</a></h1>

Fossil uses <a href="../../../wiki_rules">wiki markup</a> for many
things:

   *  Stand-alone wiki pages.
   *  Description and comments in <a href="bugtheory.wiki">bug reports</a>.
   *  Check-in comments.
   *  <a href="embeddeddoc.wiki">Embedded documentation</a> files whose
      name ends in "wiki".

The <a href="../../../wiki_rules">formatting rules</a> for fossil wiki
are designed to be simple and intuitive.  The idea is that wiki provides
paragaph breaks, numbered and bulletted lists, and hyperlinking for
simple documents together with a safe subset of HTML for more complex
formatting tasks.



















<h2>Stand-alone Wiki Pages</h2>

Each wiki page has its own revision history which is independent of
the sequence of baselines (check-ins).  Wiki pages can branch and merge
just like baselines, though as of this writing (2008-07-29) there is
no mechanism in the user interface to support branching and merging.
The current implementation of the wiki shows the version of the wiki
page that has the most recent timestamp.

In other words, if two users make unrelated changes to the same wiki
page on separate repositories, then those repositories are synced,
the wiki page will fork.  The web interface will display whichever edit
was checked in last.  The other edit can be found in the history.  The
file format will support merging the branches back together, but there
is no mechanism in the user interface (yet) to perform the merge.

Every change to a wiki page is a separate 
<a href="fileformat.wiki">control artifact</a> 
of type <a href="fileformat.wiki#wikichng">"Wiki Page"</a>.


<i>To be continued...</i>



















|

<
|


|

|


|




>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>


















|
|

>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
<h1>Wiki In [./index.wiki  | Fossil]</h1>


Fossil uses [/wiki_rules | wiki markup] for many things:

   *  Stand-alone wiki pages.
   *  Description and comments in [./bugtheory.wiki | bug reports].
   *  Check-in comments.
   *  [./embeddeddoc.wiki | Embedded documentation] files whose
      name ends in "wiki".

The [/wiki_rules | formatting rules] for fossil wiki
are designed to be simple and intuitive.  The idea is that wiki provides
paragaph breaks, numbered and bulletted lists, and hyperlinking for
simple documents together with a safe subset of HTML for more complex
formatting tasks.

Some commentators feel that the use of HTML is a mistake and that
fossil should use the markup language of the
<i>fill-in-your-favorite</i> wiki engine instead.  That approach
was considered but was rejected for the following reasons:

  1.  There is no standard wiki markup language.  Every wiki engine does
      it a little differently.

  2.  The wiki markup used by fossil, though limited, is common to most
      other wiki engines, is intuitive, and is sufficient for 90% of
      all formatting tasks.

  3.  Where the fossil wiki markup language is insufficient, HTML is
      used.  HTML is a standard language familiar to most programmers so
      there is nothing new to learn.  And, though cumbersome, the HTML
      does not need to be used very often so need not be a burden.


<h2>Stand-alone Wiki Pages</h2>

Each wiki page has its own revision history which is independent of
the sequence of baselines (check-ins).  Wiki pages can branch and merge
just like baselines, though as of this writing (2008-07-29) there is
no mechanism in the user interface to support branching and merging.
The current implementation of the wiki shows the version of the wiki
page that has the most recent timestamp.

In other words, if two users make unrelated changes to the same wiki
page on separate repositories, then those repositories are synced,
the wiki page will fork.  The web interface will display whichever edit
was checked in last.  The other edit can be found in the history.  The
file format will support merging the branches back together, but there
is no mechanism in the user interface (yet) to perform the merge.

Every change to a wiki page is a separate 
[./fileformat.wiki | control artifact]
of type [./fileformat.wiki#wikichng | "Wiki Page"].

<h2>Embedded Documentation</h2>

Files in the source tree that use the ".wiki" suffix can be accessed
and displayed using special URLs to the fossil server.  This allows
project documentation to be stored in the source tree and accessed 
online.  (Details are descripted [./embeddeddoc.wiki | separately].)

Some project prefer to store their documentation in wiki.  There is nothing
wrong with that.  But other projects prefer to keep documentation as part
of the source tree, so that it is versioned along with the source tree and
so that only developers with check-in privileges can change it.  
Embedded documentation serves this latter purpose.  Both forms of documentation
use the exact same wiki markup language.  Some projects may choose to
use both forms of documentation at the same time.

<h2>Bug-reports and check-in comments</h2>

The comments on check-ins and the text in the descriptions of bug reports
both use wiki formatting.  Exactly the same set of formatting rules apply.
There is never a need to learn one formatting language for documentation
and a different markup for bugs or for check-in comments.