I am trying to figure out how to use fossil for an upcoming project. I
keep coming back to fossil as the alternatives (git, mercurial,...)
are just... well I will go bald trying to figure them out. I made a
test repository to play with and mostly figured out the command line
commands. The problem I am having is how to add files, do check-ins
and such via the UI, mostly regarding doing it remotely without
command line access.
You don't use command line access on the remote server.
For the use cases where fossil was invented, developed, and is widely
used today, you do have command line access on a local machine where you
are running your developer tools, IDE, emacs, vi, compilers, TeX, or
whatever else you need. That is usually a desktop machine of some flavor
that does provide a shell prompt. Fossil itself is broadly portable to
nearly anything with a C compiler that can compile SQLite. That
certainly includes nearly any flavor of *nix, Windows and Mac today.
On your developer PC you need a copy of the fossil executable
(fossil.exe on Windows, for example). There should be no "installation"
per se other than putting fossil in a folder where it will be found by
your shell prompt.
Working with an existing project, you would clone the public repository
to your local machine, open the clone into a workspace, work as needed
including adding, deleting and renaming files (which you do need to use
fossil commands to tell your local repository about), and finally fossil
commit the changes. Most of the time such a repository is set up
correctly to sync with the remote copy automatically, but there are
commands to manage that and manually push and pull changes as well.
It is the fossil sync command (which is an automatic part of commit)
which actually reaches out over the internet to discover remote changes
to pull and local changes to push. Push and pull command that only move
changes one direction or the other are available, but rarely needed in
The commands listed by "fossil help" with no options are intended to be
the subset that important to new users and daily use.
My question is, for example the sqlite fossil system, someone wants to
check-in a change of a file, or add a new file. How do they do such
over the internet without having command line access? I do not see any
operations from the UI that does that.
The short answer is that they don't do that.
There has been some discussion about supporting some changes from the
UI, where the most compelling use case is to support remote editing of
documentation. But there is a (IMHO justifiable) fear of making it too
easy to commit untested changes to code. If you need web-editable
documentation, there is the wiki feature. If you need version controlled
documentation, use .wiki or .markdown files checked in to the repository
from a command line in a clone and reach them with /doc URLs on the web.
In our best understood use cases, testing implies having developer tools
and access, and that implies having a command line from which changes to
a local clone are easily made.
Seems adding files, doing check-ins, merges, should all be part of the UI.
IMHO, no, those are things that specifically should not be done in the UI.
So do people who have a check-in or a new file email the file to the
administrator and they add/check-in, or do those people have command
Anyone can clone the official fossil repository to configure and build
their own copies. The SQLite repository is the same, anyone can clone
from it and work with its full history. In both cases, essentially the
entire server is implemented by a copy of fossil itself, with a copy of
With commit access, you set up your clone to use a supplied username and
password for access to the remote and it all just works.
Ross Berteig ***@CheshireEng.com
Cheshire Engineering Corp. http://www.CheshireEng.com/
+1 626 303 1602