qtcreator-plugin-fossil
is a version control plugin for Qt Creator
IDE. It implements support for fossil SCM, which is a free and
open-source distributed version control system (DVCS) and as such it adds to the
same toolbox as git, Bazaar, Mercurial etc.
fossil
SCM is designed and developed by D. Richard Hipp, the creator of
SQLite; in fact, the official repository for
SQLite source code is managed with fossil
, so is its own.
Some highlights of fossil
SCM: it's lightweight (just a single stand-alone
executable), it presents an intuitive yet potent command-line interface, it
yields a reasonable performance as one may expect from SQLite
(fossil
uses
it internally), it includes a built-in HTTP-server. On top of this, it also
features a built-in web-interface, issue-tracking, and project-wiki pages
... it also fixes bugs in your code on check-in (no, it doesn't -- but it
fossilizes them for posterity :)
Most importantly, fossil
is portable and available on the mainstream platforms.
In a way, fossil
offers to version control, what SQLite
does to
database realm, making it easy to introduce version control practices to teams
and projects of any size. In any case, we needed to make our existing fossil
repositories work with Qt Creator
-- so here it is.
qtcreator-plugin-fossil
is built with Qt Creator
VCS framework (similar
to official Bazaar
plugin) and makes use of fossil
command-line interface.
This directly integrates fossil
into Qt Creator
project flow. It supports
base set of version control operations (excluding merge). The guiding intent is
not to provide a full-blown GUI client to fossil
(it has its web-interface
already), but to marry the IDE convenience with the general version control flow.
qtcreator-plugin-fossil
is a free software; the use, copy, and distribution
rights are granted under the terms of the
@ref qtc-fossil-license | MIT License.
qtcreator-plugin-fossil
directly integrates fossil
into Qt Creator
project
flow similarly to git
and Bazaar
. It supports base set of version control
operations:
- create local
fossil
repository - clone a remote
fossil
repository - add/delete/rename tracked files
- show current status of the repository and current files
- commit changes made (branch and tag on commit)
- show timeline of the commits
- annotate file source lines with respective check-ins
- diff changes
- check-out/revert files in given revision
- push/pull/update changes to/from remote repository
This covers routine operations in code development context (stashing would
be nice too, well, maybe in the future). The rest (repository management, merge,
etc.) could be achieved via fossil
command-line or web-interface.
Refer to "Using Version Control Systems" Qt Creator
help page for more
details.
Updates and details about the current version listed in @ref qtc-fossil-changelog | qtcreator-plugin-fossil ChangeLog.
The recent releases of qtcreator-plugin-fossil
are available already pre-
built for the supported platforms, thanks to the GitHub's CI workflow features.
This greatly simplifies the availability and installation of the plugin.
To install the qtcreator-plugin-fossil
for Qt Creator
version 4.11 and
higher, you may download the binary release package from the project's
Releases GtHub page.
The packages are prepared for direct integration of the Fossil plugin
into
an existing Qt Creator
installation and consist of the plugin library file
and an updated Qt Creator
documentation (.qch
) file.
In brief, the plugin's 7z-package could be extracted directly into the
Qt Creator
installation directory. For example, plugin's ver=4.11.2_2
built for Qt Creator
version 4.11.2 (compatible with 4.11.0 and higher
patch-releases):
7z x QtCreator-Fossil-${ver}-Linux-x64.7z -o"${qtc_dir}" '-x!README.md'
Alternatively, the qtcreator-plugin-fossil
library file could be installed
as a user-plugin, locally to the user's home directory. Please refer to the
README.md
file included in the release installation package for details.
In short, it's a Qt Creator
plugin, so those familiar with plugin building
may just skip through to fetch the sources. Otherwise, read on.
As with any Qt Creator
plugins, qtcreator-plugin-fossil
sources need to be
integrated into Qt Creator
source tree, then built as part of Qt Creator
build process. Thus the plugin sources must target a specific Qt Creator
version. In the course of the qtcreator-plugin-fossil
project we naturally
adapted it for selected Qt Creator
updates, mostly targeting the long-term
support versions. It may be possible to try building it with interim releases,
though some tweaking may be needed to account for the underlying VCS framework
changes.
So the Quick start is not that quick as it requires some preparations and, yes,
the full Qt Creator
build, before the qtcreator-plugin-fossil
library could
be harvested and installed for use with the existing Qt Creator
instance of
matching or compatible version.
For reference: official instructions on how to
build Qt Creator from sources, also see Qt Creator
own
README.
In our experience, we normally would already have an active Qt Creator
instance
(from Qt SDK
installation), and would fetch the sources for that version, then
use that instance to build another one from sources with the
qtcreator-plugin-fossil
integrated. This leverages the IDE to help track
possible wrinkles (mostly missing dependencies) or source incompatibilities.
Cloning Qt Creator
repository is ok too, but be ready to accept over 250MB of
its size. Alternatively, this repository contains forks for selected
Qt Creator
releases with qtcreator-plugin-fossil
sources integrated
(see qtcreator-fossil-*
branches, subject to Qt Creator
license). We used these
directly to build and test qtcreator-plugin-fossil
.
-
Fetch the
Qt Creator
sources for the needed${version}
either from officialgit
repository; optionally fetch the sources for theqbs
module${qbs_version}
wget --output-document qt-creator-${version}.tar.gz https://github.com/qtproject/qt-creator/archive/v${version}.tar.gz wget --output-document qt-creator-${version}-qbs.tar.gz https://github.com/qt-labs/qbs/archive/v${qbs_version}.tar.gz
-
Fetch the
qtcreator-plugin-fossil
sources for the matching version${plugin_fossil_version}
wget --output-document qt-creator-${version}-fossil.tar.gz https://github.com/nomadbyte/qtcreator-plugin-fossil/archive/v${plugin_fossil_version}.tar.gz
-
Merge source trees
mkdir qtcreator-fossil-${version} cd qtcreator-fossil-${version} tar xvf ../qt-creator-${version}.tar.gz --strip-components=1 tar xvf ../qt-creator-${version}-qbs.tar.gz --strip-components=1 -C src/shared/qbs/ tar xvf ../qt-creator-${version}-fossil.tar.gz --strip-components=1
-
OR Fetch the
Qt Creator
sources with integratedqtcreator-plugin-fossil
wget --output-document qtcreator-fossil-${version}.tar.gz https://github.com/nomadbyte/qtcreator-plugin-fossil/archive/qtcreator-fossil-${version}.tar.gz mkdir qtcreator-fossil-${version} cd qtcreator-fossil-${version} tar xvf ../qtcreator-fossil-${version}.tar.gz --strip-components=1
-
Launch the installed
Qt Creator
instance and open theqtcreator.pro
projectqtcreator-fossil-${version}/qtcreator.pro
-
The integrated
qtcreator-plugin-fossil
projectqtcreator-fossil-${version}/src/plugins/fossil/fossil.pro
-
Build the
Qt Creator
in Release configuration with your selected Kit
This assumes all needed dependencies are installed
It will take some time... There will likely be a few warnings in Issues pane.
Once have got successful green build -- it should be ready to launch.
-
In
mode:Projects>Run
configuration add run parameters to avoid messing up settings of your activeQt Creator
instance. Create these directoriesWorking dir: <build-dir>/work Parameters: -settingspath ../settings
-
Run the built
Qt Creator
instance and confirm the presence of theFossil
pluginmenu:Help>About Plugins..>Version Control::Fossil menu:Tools>Options>Version Control::Fossil
-
Download fossil SCM client and install
fossil
executable file in yourPATH
-
Create a directory for local
fossil
repositories and remote clonesmkdir ~/fossils/qt
-
Configure the
qtcreator-plugin-fossil
to use that directorymenu:Tools>Options>Version Control::Fossil:Local Repositories Default path
Now you should be able to use fossil
repositories with Qt Creator
- Create a new project and from wizard select
Fossil
as Version Control
Once the project opens, you should be able to use fossil
from the main menu
menu:Tools>Fossil::Status
menu:Tools>Fossil::Commit
menu:Tools>Fossil::Timeline
The newly created fossil repository should also be found in the configured
location. As expected, the newly created project may also be managed via fossil
SCM command-line:
ls ~/fossils/qt/<new-project>.fossil
cd <new-project-dir>
fossil status
As a side-note, fossil
already offers ways of sharing the repositories with
other users (see fossil server
command), however as an alternative way to host
and serve your fossil
repositories, check out
Chisel Fossil SCM Hosting.
To clone a remote project repository, say, hosted at http://chiselapp.com
menu:File>New File or Project...>Import Project::Fossil Clone
wizard:Fossil Clone>Remote Repository Clone
Remote Repository: https://<repouser>:<passwd>@chiselapp.com/user/<username>/repository/<reponame>
NOTE: To use an external
fossil
repository, it needs to contain a validQt Creator
project (.pro
) file, whichQt Creator
then loads in at clone completion.
Refer to "Using Version Control Systems" Qt Creator
help page for more
details.
Once the qtcreator-plugin-fossil
has been successfully built, it may be
harvested from the build directory to install it for use with your active
Qt Creator
instance. Alternatively, install the newly built Qt Creator
(refer
to Qt Creator
own README)
NOTE: Exit the installed
Qt Creator
instance, if currently running, prior to installing the builtqtcreator-plugin-fossil
. OtherwiseQt Creator
may hang on exiting.
-
Harvest the built
qtcreator-plugin-fossil
plugin files fromQt Creator
build directory. -
Copy these files to location of the installed
Qt Creator
instance -
On Linux:
sudo cp $QTC_BUILD_DIR/lib/qtcreator/plugins/*Fossil* $QTC_INSTALL_DIR/lib/qtcreator/plugins/ ## for versions prior to v4.3.0_1 sudo cp -R $QTC_BUILD_DIR/share/qtcreator/templates/wizards/projects/vcs/fossil $QTC_INSTALL_DIR/share/qtcreator/templates/wizards/projects/vcs/
-
Optionally install the updated documentation
cd $QTC_BUILD_DIR make docs sudo mv $QTC_INSTALLL_DIR/share/doc/qtcreator/qtcreator.qch $QTC_INSTALLL_DIR/share/doc/qtcreator/qtcreator.qch-fossil-uninstall sudo cp $QTC_BUILD_DIR/share/doc/qtcreator/qtcreator.qch $QTC_INSTALLL_DIR/share/doc/qtcreator/
Starting up Qt Creator
should load the installed qtcreator-plugin-fossil
.
NOTE: In case the
qtcreator-plugin-fossil
fails to load into theQt Creator
, make sure that it was built with thatQt Creator
source version AND compiler version (seemenu:Help>About Qt Creator...
).
Refer to "Using Version Control Systems" Qt Creator
help page for more
details.
qtcreator-plugin-fossil
has already gone through a number of iterations to keep
up with Qt Creator
updates. Qt Creator
VCS framework too got its share of
updates, though for the most part it remains stable. Other VCS plugins, already
included in official Qt Creator
releases, are based on that framework
(Bazaar plugin
, Mercurial plugin
etc.) We intend to continue our practice of
maintaining qtcreator-plugin-fossil
so that it works with upcoming long-term
support Qt Creator
releases. There is obviously a great benefit of having it
also included in the official Qt Creator
code base, if that would be deemed
possible.
Let us know of your experience, challenges or problems (bugs?) with it -- quite possible we have dealt with these too and may have work-arounds or may suggest some alternatives.
Please direct your feedback to qtcreator-plugin-fossil GitHub project page.
Your contribution is welcomed!