Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Attempting the same merge that aku tried and got empty files with. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
424d47e4532a2dfa414ba5ce3918bd64 |
| User & Date: | drh 2007-08-25 18:58:16.000 |
Context
|
2007-08-25
| ||
| 19:00 | Merging aku's changes into the head. ... (check-in: b0ad3f90bc user: drh tags: trunk) | |
| 18:58 | Attempting the same merge that aku tried and got empty files with. ... (check-in: 424d47e453 user: drh tags: trunk) | |
| 03:30 | Improvements to timeline formatting. Added the "concepts.html" document. ... (check-in: e319e8e870 user: drh tags: trunk) | |
| 03:23 | Fixed typos in comments ... (check-in: 609e4caf29 user: aku tags: trunk) | |
Changes
Added art/concept1.dia.
cannot compute difference between binary files
Added art/concept2.dia.
cannot compute difference between binary files
Changes to src/main.c.
| ︙ | ︙ | |||
194 195 196 197 198 199 200 |
g.fHttpTrace = find_option("httptrace", 0, 0)!=0;
g.zLogin = find_option("user", "U", 1);
zCmdName = argv[1];
}
rc = name_search(zCmdName, aCommand, count(aCommand), &idx);
if( rc==1 ){
fprintf(stderr,"%s: unknown command: %s\n"
| | | | 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 |
g.fHttpTrace = find_option("httptrace", 0, 0)!=0;
g.zLogin = find_option("user", "U", 1);
zCmdName = argv[1];
}
rc = name_search(zCmdName, aCommand, count(aCommand), &idx);
if( rc==1 ){
fprintf(stderr,"%s: unknown command: %s\n"
"%s: use \"help\" for more information\n",
argv[0], zCmdName, argv[0]);
return 1;
}else if( rc==2 ){
fprintf(stderr,"%s: ambiguous command prefix: %s\n"
"%s: use \"help\" for more information\n",
argv[0], zCmdName, argv[0]);
return 1;
}
aCommand[idx].xFunc();
return 0;
}
|
| ︙ | ︙ |
Changes to src/setup.c.
| ︙ | ︙ | |||
86 87 88 89 90 91 92 |
if( !g.okSetup ){
login_needed();
return;
}
style_submenu_element("Add", "Add User", "setup_uedit");
style_header("User List");
| > > > | | | | | | | | | | < < < | < | < | < < | | | | < < < | > > > | > | | > | 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 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
if( !g.okSetup ){
login_needed();
return;
}
style_submenu_element("Add", "Add User", "setup_uedit");
style_header("User List");
@ <table border="0" cellpadding="0" cellspacing="25">
@ <tr><td valign="top">
@ <b>Users:</b>
@ <table border="1" cellpadding="10"><tr><td>
@ <table cellspacing=0 cellpadding=0 border=0>
@ <tr>
@ <th align="right">User ID</th><th width="15"></td>
@ <th>Capabilities</th><th width="15"></td>
@ <th>Contact Info</th>
@ </tr>
db_prepare(&s, "SELECT uid, login, cap, info FROM user ORDER BY login");
while( db_step(&s)==SQLITE_ROW ){
@ <tr>
@ <td align="right">
if( g.okAdmin ){
@ <a href="setup_uedit?id=%d(db_column_int(&s,0))">
}
@ <nobr>%h(db_column_text(&s,1))</nobr>
if( g.okAdmin ){
@ </a>
}
@ </td><td></td>
@ <td align="center">%s(db_column_text(&s,2))</td><td></td>
@ <td align="left">%s(db_column_text(&s,3))</td>
@ </tr>
}
@ </table></td></tr></table>
@ <td valign="top">
@ <b>Notes:</b>
@ <ol>
@ <li><p>The permission flags are as follows:</p>
@ <ol type="a">
@ <li value="1"><b>Admin</b>: Create and delete users</li>
@ <li value="3"><b>Append-Tkt</b>: Append to tickets</li>
@ <li value="4"><b>Delete</b>: Delete wiki and tickets</li>
@ <li value="6"><b>New-Wiki</b>: Create new wiki pages</li>
@ <li value="7"><b>Clone</b>: Clone the repository</li>
@ <li value="8"><b>History</b>: View detail repository history</li>
@ <li value="9"><b>Check-In</b>: Commit new versions in the repository</li>
@ <li value="10"><b>Read-Wiki</b>: View wiki pages</li>
@ <li value="11"><b>Write-Wiki</b>: Edit wiki pages</li>
@ <li value="13"><b>Append-Wiki</b>: Append to wiki pages</li>
@ <li value="14"><b>New-Tkt</b>: Create new tickets</li>
@ <li value="15"><b>Check-Out</b>: Check out versions</li>
@ <li value="16"><b>Password</b>: Change your own password</li>
@ <li value="17"><b>Query</b>: Create new queries against tickets</li>
@ <li value="18"><b>Read-Tkt</b>: View tickets</li>
@ <li value="19"><b>Setup:</b> Setup and configure this website</li>
@ <li value="23"><b>Write-Tkt</b>: Edit tickets</li>
@ </ol>
@ </p></li>
@
@ <li><p>
@ Every user, logged in or not, has the privileges of <b>nobody</b>.
@ Any human can login as <b>anonymous</b> since the password is
@ clearly displayed on the login page for them to type. The purpose
@ of requiring anonymous to log in is to prevent access by spiders.
@ </p></li>
@
@ </ol>
@ </td></tr></table>
style_footer();
}
/*
** WEBPAGE: /setup_uedit
*/
void user_edit(void){
|
| ︙ | ︙ |
Changes to src/timeline.c.
| ︙ | ︙ | |||
109 110 111 112 113 114 115 |
if( !g.okRead ){ login_needed(); return; }
style_header("Timeline");
if( !g.okHistory &&
db_exists("SELECT 1 FROM user"
" WHERE login='anonymous'"
" AND cap LIKE '%%h%%'") ){
| | | | 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
if( !g.okRead ){ login_needed(); return; }
style_header("Timeline");
if( !g.okHistory &&
db_exists("SELECT 1 FROM user"
" WHERE login='anonymous'"
" AND cap LIKE '%%h%%'") ){
@ <p><b>Note:</b> You will be able to access <u>much</u> more
@ historical information if <a href="%s(g.zBaseURL)/login">login</a>.</p>
}
zSQL = mprintf(
"SELECT uuid, datetime(event.mtime,'localtime'), comment, user"
" FROM event, blob"
" WHERE event.type='ci' AND blob.rid=event.objid"
);
if( zStart ){
|
| ︙ | ︙ |
Added www/concept1.gif.
cannot compute difference between binary files
Added www/concept2.gif.
cannot compute difference between binary files
Added www/concepts.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 |
<html>
<head>
<title>Fossil Concepts</title>
</head>
<body bgcolor="white">
<h1 align="center">
Fossil Concepts
</h1>
<h2>1.0 Introduction</h2>
<p>
<a href="index.html">Fossil</a> is a
<a href="http://en.wikipedia.org/wiki/Software_configuration_management">
software configuration management</a> system.
Fossil is software that is design 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.</p>
<p>This document is intended as a quick introduction to the concepts
behind fossil.</p>
<h2>2.0 Composition Of A Project</h2>
<img src="concept1.gif" align="right" hspace="10">
<p>A software project normally consists of a "source tree".
A source tree is a hierarchy of files that are used to generate
the end product. The source tree changes over time as the
software grows and expands and as features are added and bugs
are fixed. A snapshot of the source tree at any point in time
is called a "version" or a "baseline" of the product.</p>
<p>A "repository" is a database that contains copies of all historical
versions or baselines for a project. Baselines are normally stored in the
repository in a highly space-efficient compressed format (delta encoding).
But that is an implementation detail that you the user need not worry over.
Think of the repository as a safe place where all your old baselines
securely stored away and available for retrieval whenever you need
them.</p>
<p>A repository in fossil is a single file on your disk. This file
might be rather larger (dozens or hundreds of megabytes for a large
or long running project) but it is nevertheless just a file. You
can move it around, rename it, write it out to a memory stick, or
do anything else you normally do with files.</p>
<p>Each source tree that is controlled by fossil is associated with
a single repository on the local disk drive. You can two or more
source trees tied to a single repository if you want (though one
tree per repository is the most common configuration.) So a
single repository can be associated with many source trees, but
each source tree is associated with only one repository.</p>
<p>Fossil source tree may not overlap. A fossil source tree is identified
by a file named "_FOSSIL_" in the root directory of the source tree. Every
file that is a sibling of _FOSSIL_ and every file in every subfolder is
considered potentially a part of the source tree. The _FOSSIL_ file
contains (among other things) the pathname of the repository with which
the source tree is associated. On the other hand, the repository has
no record of its source trees. So you are free to delete a source tree
or move it around without consequence. But if you move or rename or
delete a repository, then any source trees associated with that repository
will no longer be able to locate their repository and will stop working.</p>
<p>When multiple developers are working on the same project, each
developer typically has his or her own local repository and an associated
source tree in which to work. Developers share their work by
"syncing" the content of their local repositories either directly
or through a central server. Changes can "push" from the local
repository into a remote repository. Or changes can "pull" from a
remote repository into a local repository. Or one can do a "sync"
which is shortcut for doing both a push and a pull at the same time.
Fossil also has the concept of "cloning". A "clone" is like a "pull"
except that instead of beginning with an existing local repository,
a clone begins with nothing and creates a new local repository that
is a replicate of a remote repository.</p>
<p>Communication between repositories is via HTTP. Remote
repositories are identified by URL. You can also point a webbrowser
at a repository and get human-readable status, history, and tracking
information about the project.</p>
<h3>2.1 Identification Of Artifacts</h3>
<p>A particular version of a particular file is called an "artifact".
Each artifact has a universally unique name which is the
<a href="http://en.wikipedia.org/wiki/SHA">SHA1</a> hash of the content
of that file expressed as 40 characters of lower-case hexadecimal. Such
such has is referred to as the Universally Unique Identifier or UUID
for the artifact. The SHA1 algorithm is created with the purpose of
provide a highly forgery-resistent identifier for a file. Given any
file it is simple to find the UUID for that file. But given a
UUID it is computationally intractable to generate a file that will
generate that UUID.</p>
<p>UUIDs look something like this:</p>
<blockquote><b>
6089f0b563a9db0a6d90682fe47fd7161ff867c8<br>
59712614a1b3ccfd84078a37fa5b606e28434326<br>
19dbf73078be9779edd6a0156195e610f81c94f9<br>
b4104959a67175f02d6b415480be22a239f1f077<br>
997c9d6ae03ad114b2b57f04e9eeef17dcb82788
</b></blockquote>
<p>When referring to an artifact using fossil, you can use a unique
prefix of the UUID that is four characters or longer. This saves
a lot of typing. When displaying UUIDs, fossil will usually only
show the first 10 digits since that is normally enough to uniquely
identify a file.</p>
<p>Changing (or adding or removing) a single byte in a file results
in a completely different UUID. And since the UUID is the name of
the artifact, making any change to a file results in a new artifact.
In this way, artifacts are immutable.</p>
<p>A repository is really just an unordered collection of
artifacts. New artifacts can be added to the repository, but
existing artifacts can never be removed. Fossil is designed in
such a way that it can be handed a set of artifacts in any
order and it can figure out the relationship between those
artifacts and reconstruct the complete development history of
a software project.</p>
<h3>2.2 Manifests</h3>
<p>At the root of a source tree is a special file called the
"manifest". The manifest is a listing of all other files in
that source tree. The manifest contains the (complete) UUID
of the file and the name of the file as it appears on disk,
and thus serves as a mapping from UUID to disk name. The UUID
of the manifest is the UUID that identifies a baseline. When
you look at a "timeline" of changes in fossil, the UUID associated
with each check-in or commit is really just the UUID of the
manifest for that baseline.</p>
<p>Fossil automatically generates a manifest whenever you "commit"
a new baseline. So this is not something that you, the developer,
need to worry with. The format of a manifest is intentially
designed to be simple to parse, however, so that if
you want to read and interpret a manifest, either by hand or
with a script, that is easy to do.</p>
<p>In addition to identifying all files in the baseline, a
manifest also contains a check-in comment, the date and time
when the baseline was established, who created the baseline,
and links to other baselines from which the current baseline
is derived. There is also a couple of checksums used to verify
the integrity of the baseline. And the whole manifest might
be PGP clearsigned.</p>
<h3>2.3 Key concepts</h3>
<ul>
<li>A <b>baseline</b> or <b>version</b> is a set of files arranged
in a hierarchy.</li>
<li>A <b>repository</b> keeps a record of historical baselines.</li>
<li>Repositories share their changes using <b>push</b>, <b>pull</b>,
<b>sync</b>, and <b>clone</b>.</li>
<li>A particular version of a particular file is an <b>artifact</b>
that is identified by a <b>UUID</b>.</li>
<li>Artifacts tracked by fossil are inheriently immutable.</li>
<li>Fossil automatically generates a <b>manifest</b> file that identifies
every artifact in a baseline.</li>
<li>The UUID of the manifest is the UUID of the baseline.</li>
</ul>
<h2>3.0 Fossil - The Program</h2>
<p>Fossil is software. The implementation of fossil is in the form
of a single executable name "fossil". To install fossil on your system,
all you have to do is obtain a copy of this one executable file (either
by downloading a precompiled version or compiling it yourself) and then
putting that file somewhere on your PATH.</p>
<p>Fossil is completely self-contained. It is not necessary to
install any other software in order to use fossil. You do <u>not</u> need
CVS, gzip, diff, rsync, Python, Perl, Tcl, Java, apache, PostgreSQL, MySQL,
SQLite, Tcl, patch, or any similar software on your system in order to use
fossil effectively. You will want to have some kind of text editor
for entering check-in comments. Fossil will use whatever text editor
is identified by your VISUAL environment variable. Fossil will also
use GPG to clearsign your manifests if you happen to have it installed,
but fossil will skip that step if you do not have GPG so it is not
essential.</p>
<p>To uninstall fossil, simply delete the executable.</p>
<p>To upgrade an older version of fossil to a newer version, just
replace the old executable with the new one. You might need to
run a one-time command to restructure your repositories after
an upgrade. Check the instructions that come with the upgrade
for details.</p>
<p>To use fossil, simply type the name of executable in your
shell, followed by one of the various built-in commands and
arguments appropriate for that command. For example:</p>
<blockquote><b>
fossil help
</b></blockquote>
<p>In the next section, when we say things like "use the <b>help</b>
command" we mean to use the command name "help" as the first
token after the name of the fossil executable, as shown above.</p>
<h2>4.0 Workflow</h2>
<img src="concept2.gif" align="right" hspace="10">
<ol>
<li><p>
Establish a local repository using either the <b>new</b> command
to start a new project, or the <b>clone</b> command to make a clone
of a repository for an existing project.
</p></li>
<li><p>
Establish one or more source trees by changing your working directory
to where you want the root of the source tree to be, then issuing
the <b>open</b> command with the name of the repository file as its
argument.
</p></li>
<li><p>
Use the <b>update</b> command followed by a UUID to cause your
source tree to change to the baseline identified by that UUID.
The <b>timeline</b> or <b>leaves</b> commands might help you to
identify an appropriate baseline.
</p></li>
<li><p>
Edit the code. Add new files to the source tree using the <b>add</b>
command. Omit files from future baselines using the <b>rm</b> command.
(Even when you remove files from future baselines, those files continue
to exist in historical baselines.) Test your changes.
</p></li>
<li><p>
Create a new baseline using the <b>commit</b> command. You will be prompted
for a check-in comment and also for your GPG key if you have GPG installed.
The commit copies the edits you have made in your local source
tree into your local repository.
</p></li>
<li><p>
Share your changes with others using the <b>push</b> command.
Push causes the edits you committed into your local repository to be
pushed out into other repositories.
</p></li>
<li><p>
When your coworkers make their own changes, you can pull those changes
into your local repository using the <b>pull</b> command. Note that
the pull command only pulls the changes into your local repository,
not into your local source tree.
</p></li>
<li><p>
After the changes of others are in your local repository, you
can move them into your local source tree using <b>update</b>. If
you have made parallel
changes, you can merge your changes together with your coworkers changes
by do an <b>update</b> to your latest baseline, then doing a
<b>merge</b> with your coworkers latest baseline. After your
verify that the merged code is still functional, you can <b>commit</b>
a new baseline that contains both yours and your coworkers changes
and then push the new baseline back to your coworker.
</p></li>
<li><p>
Repeat all of the above until you have generated great software.
</p></li>
</ol>
<h2>5.0 Setting Up A Fossil Server</h2>
<p>With other configuration management software, setting up a server is
a lot of work and normally takes time, patience, and a lot of system
knowledge. Fossil is designed to avoid this frustration. Setting up
a server with fossil is ridiculously easy. You have three options:</p>
<ol>
<li><p><b>Setting up a stand-alone server</b></p>
<p>From within your source tree just use the <b>server</b> command and
fossil will start listening for incoming requests on TCP port 8080.
You can point your webbrowser at <a href="http://localhost:8080/">
http://localhost:8080/</a> and begin exploring. Or your coworkers
can do pushes or pulls against your server. Use the <b>--port</b>
option to the server command to specify a different TCP port. If
you do not have a local source tree, use the <b>-R</b> command-line
option to specify the repository file.</p>
<p>A stand-alone server is a great way to set of transient connections
between coworkers for doing quick pushes or pulls. But you can also
set up a permanent stand-alone server if you prefer. Just make
arrangements for fossil to be launched with appropriate arguments
after every reboot.</p>
</li>
<li><p><b>Setting up a CGI server</b></p>
<p>If you have a webserver running on your machine already, you can
set up fossil to be run from CGI. Simply create an executable script
that looks something like this:</p>
<blockquote><pre>
#!/usr/local/bin/fossil
repository: /home/me/bigproject.fossil
</pre></blockquote>
<p>Edit this script to use whatever pathnames are appropriate for
your project. Then point your webbrowser at the script and off you
go.</p></li>
<li><p><b>Setting up an inetd server</b></p>
<p>If you have inetd or xinetd running on your system, you can set
those services up to launch fossil to deal with inbound TCP/IP connections
on whatever port you want. Set up inetd or xinetd to launch fossil
like this:</p>
<blockquote><pre>
/usr/local/bin/fossil http /home/me/bigproject.fossil
</pre></blockquote>
<p>As before, change the filenames to whatever is appropriate for
your system. You can have fossil run as any user that has write
permission on the repository and on the directory that contains the
repository. But it is safer to run fossil as root. When fossil
sees that it is running as root, it automatically puts itself into
a <a href="http://en.wikipedia.org/wiki/Chroot">chroot jail</a> and
drops all privileges prior to reading any information from the client.
Since fossil is a stand-alone program, you do not need to put anything
in the chroot jail with fossil in order for it to do its job.</p>
</li>
</ol>
|
Changes to www/fileformat.html.
1 2 3 4 5 6 7 8 9 10 11 | <html> <head> <title>Fossil File Format</title> </head> <body bgcolor="white"> <h1 align="center"> Fossil File Formats </h1> <p> The global state of a fossil repository is determined by an unordered | | | < > > > > > > | 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 | <html> <head> <title>Fossil File Format</title> </head> <body bgcolor="white"> <h1 align="center"> Fossil File Formats </h1> <p> The global state of a fossil repository is determined by an unordered set of files. Some files are used to represent wiki pages, trouble tickets, and the special "manifest" file has a specific and well-defined format. Other files are just data. Files can be text or binary. </p> <p> Each file in the repository is named by its SHA1 hash. No prefixes or meta information is added to a file before its hash is computed. The name of a file in the repository is exactly the same SHA1 hash that is computed by sha1sum on the file as it exists in your source tree.</p> <p> Some files have a particular format which qualifies them as "manifests". A manifest assigns filenames to a subset of the files in the repository, in order to provide a snapshot of the state of the project at a point in time. Each manifest file corresponds to a version or baseline of the project. </p> |
| ︙ | ︙ |
Changes to www/index.html.
1 2 3 4 5 6 7 8 9 10 11 | <html> <head> <title>Fossil SCM Homepage</title> </head> <body bgcolor="white"> <h1>Fossil - A Software Configuration Management System</h1> <p> This is a preliminary homepage for a new software configuration management system called "Fossil". The system is | | > | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <html> <head> <title>Fossil SCM Homepage</title> </head> <body bgcolor="white"> <h1>Fossil - A Software Configuration Management System</h1> <p> This is a preliminary homepage for a new software configuration management system called "Fossil". The system is <a href="http://fossil-scm.hwaci.com/fossil/timeline">self-hosting</a> on <a href="http://www.hwaci.com/cgi-bin/fossil/timeline">two separate servers</a>. You can download the lastest sources compile it yourself using the instructions below. </p> <p>Design Goals For Fossil:</p> <ul> <li>Supports disconnected, distributed development (like <a href="http://kerneltrap.org/node/4982">git</a>, |
| ︙ | ︙ | |||
53 54 55 56 57 58 59 | on repository changes makes it exceedingly unlikely that data will ever be lost because of a software bug.</li> </ul> <p>Objectives Of Fossil:</p> <ul> | | > > | > | > > | 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 | on repository changes makes it exceedingly unlikely that data will ever be lost because of a software bug.</li> </ul> <p>Objectives Of Fossil:</p> <ul> <li>Fossil should be ridiculously easy to <a href="build.html">install</a> and <a href="quickstart.html">operate</a>.</li> <li>With fossil, it should be possible (and <a href="quickstart.html#serversetup">easy</a>) to set up a project on an inexpensive shared-hosting ISP (example: <a href="http://www.he.net/hosting.html">Hurricane Electric</a>) that provides nothing more than web space and CGI capability. Here is <a href="http://www.hwaci.com/cgi-bin/fossil/timeline">a demo</a>.</li> <li>Fossil should provide in-depth historical and status information about the project through a web interface</li> <li>The integration of <a href="http://wiki.org/wiki.cgi?WhatIsWiki">Wiki</a> and the ability to safely support anonymous check-in are features sometimes described as <a href="http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html">Web 2.0</a>. Fossil attempts to better capture "collective intelligence" and "the wisdom of crowds" by opening up write access to the masses.</li> </ul> <p>Other Links:</p> <ul> <li>The <a href="concepts.html">concepts</b> behind fossil</li> <li><a href="build.html">Building And Installing</a></li> <li><a href="quickstart.html">Quick Start</a> guide to using fossil <li><a href="pop.html">Principals Of Operation</a></li> <li>The <a href="selfcheck.html">automatic self-check</a> mechanism helps insure project integrity.</li> <li>The <a href="fileformat.html">file format</a> used by every content file stored in the repository.</li> </ul> </body> </html> |
Changes to www/quickstart.html.
| ︙ | ︙ | |||
167 168 169 170 171 172 173 174 175 176 177 178 179 180 |
<p>Test to make sure your merge didn't mess up the code, then
<b>commit</b> and possibly also <b>push</b> your changes. Remember
that nobody else can see your changes until you <b>commit</b> and
if other are using a different repository you will also need to
<b>push</b>.</p>
</blockquote><h2>Setting Up A Server</h2><blockquote>
<p>The easiest way to set up a server is:</p>
<blockquote>
<b>fossil server</b> <i>repository-filename</i>
</blockquote>
| > | 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 |
<p>Test to make sure your merge didn't mess up the code, then
<b>commit</b> and possibly also <b>push</b> your changes. Remember
that nobody else can see your changes until you <b>commit</b> and
if other are using a different repository you will also need to
<b>push</b>.</p>
<a name="serversetup">
</blockquote><h2>Setting Up A Server</h2><blockquote>
<p>The easiest way to set up a server is:</p>
<blockquote>
<b>fossil server</b> <i>repository-filename</i>
</blockquote>
|
| ︙ | ︙ | |||
214 215 216 217 218 219 220 |
root privileges prior to reading any information from the request.</p>
</blockquote><h2>More Hints</h2><blockquote>
<p>Try these commands:</p>
<blockquote><b>
| > | | | 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 |
root privileges prior to reading any information from the request.</p>
</blockquote><h2>More Hints</h2><blockquote>
<p>Try these commands:</p>
<blockquote><b>
fossil help<br>
fossil commands<br>
fossil test-commands
</b></blockquote>
<p>Explore and have fun!</p>
</blockquote></body></html>
|