Introduction
Introduction Statistics Contact Development Disclaimer Help
Title: [Cheatsheet] Fossil version control software
Author: Solène
Date: 29 January 2023
Tags: fossil versioning nocloud
Description: In this article, you will learn about the version control
software Fossil
# Introduction
Fossil is a DVCS (decentralized version control software), an
alternative to programs such as darcs, mercurial or git. It's
developed by the same people doing sqlite and rely on sqlite
internally.
Fossil official website
# Why?
Why not? I like diversity in software, and I'm unhappy to see Git
dominating the field. Fossil is a viable alternative, with simplified
workflow that work very well for my use case.
One feature I really like is the autosync, when a remote is configured,
fossil will automatically push the changes to the remote, then it looks
like a centralizer version control software like SVN, but for my usage
it's really practical. Of course, you can disable autosync if you
don't want to use this feature. I suppose this could be reproduced in
git using a post-commit hook that run `git push`.
Fossil is opinionated, so you may not like it if that doesn't match
your workflow, but when it does, it's a very practical software that
won't get in your way.
# Fossil repository is a file
A major and disappointing fact at first is that a fossil repository is
a single file. In order to checkout the content of the repository, you
will need to run `fossil open /path/to/repo.fossil` in the directory
you want to extract the files.
Fossil supports multiple checkout of different branches in different
directories, like git worktrees.
# Cheatsheet
Because I'm used to other versionning software, I need a simple
cheatsheet to learn most operations, they are easy to learn, but I
prefer to note it down somewhere.
## View extra files
You can easily find non-versioned files using the following command:
`fossil extras`
## View changes
You can get a list of tracked files that changed:
`fossil changes`
Note that it only display a list of files, not the diff that you can
obtain using `fossil diff`.
## Commit
By default, fossil will commit all changes in tracked files, if you
want to only commit a change in a file, you must pass it as a
parameter.
`fossil commit`
## Change author name
`fossil user new solene@t470` and `fossil user default solene@t470`
More possibilities are explained in Fossil documentation
## Add a remote
Copy the .fossil file to a remote server (I'm using ssh), and in your
fossil checkout, type `fossil remote add my-remote
ssh://hostname//home/solene/my-file.fossil`, and then `fossil remote
my-remote`.
Note that the remote server must have the fossil binary available in
`$PATH`.
## Display the Web Interface
`fossil ui` will open your web browser and log in as admin user, you
can view the timeline, bug trackers, wiki, forum etc... Of course, you
can enable/disable everything you want.
## Get changes from a remote
This is a two-step operation, you must first get changes from the
remote fossil, and then update your local checkout:
```
fossil pull
fossil update
```
## Commit partial changes in a file
Fossil doesn't allow staging and committing partial changes in a file
like with `git add -p`, the official way is to stash your changes,
generate a diff of the stash, edit the diff, apply it and commit. It's
recommended to use a program named patchouli to select hunks in the
diff file to ease the process.
Fossil documentation: Git to Fossil translation
The process looks like this:
```shell
fossil stash -m "tidying for making atomic commits"
fossil stash diff > diff
$EDITOR diff
patch -p0 < diff
fossil commit
```
Note that if you added new files, the "add" information is stashed and
contained in the diff.
You are viewing proxied material from dataswamp.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.