FreeVCS, what's this?
(or why you should use a version control system)
Although many developers think of a version control system (VCS) as an expensive, complex, hard to use tool for a big development shared with many users (they are right for some systems) it may also be a very useful and handy help for the stand alone development of a small application or a component.
Have you ever modified a module from a working application to
make the thing's going better or faster and after a while nothing
will work as you expected (or will not work at all)? Have you
ever had 10 directories with different source version and no idea witch one holds the change you are searching for? Have you ever
started a faulty application from the IDE without backing up your
Have you ever lost one of your source files?
If you can say 'No' to all these questions, FreeVCS is probably not the right tool for you...(however, I don't believe this ;-)
The best way in this respect is to have the opportunity to get the original, unmodified modules back or at least to compare the changes to the latest version[s] of the modules. (A kind of 'Unrestricted Undo over a complete development' - module by module, all at one time, or to a predefined development state)
When you use FreeVCS, your files and projects are stored
compressed in a local or remote database (the version archive).
This safely stores your information and provides historical
information and version tracking
Saving (or restoring) of a module will take you just a few seconds. This is not restricted to the latest version of a module, you may get back any state of any module stored in the archive.
Due to FreeVCS's ability to show the differences between modules on disk to recent versions or between different versions of a module stored in the version archive it is easy for you to follow the changes made to a specific file.
In contrast to some file-based systems FreeVCS works project
oriented. With each change in the version archive, FreeVCS
records information's in his log file (if enabled.) Each time a
module is added, modified, moved or deleted from a project,
FreeVCS updates both the module in the version archive and the
The advantage of such higher-level histories in contrast to module based histories is plausible:
Suppose a feature that was working correctly last week breaks in this weeks build of your project. Obviously, someone introduced this bug recently, but in what file?
For instance, Project history might show that main.pas was just modified; before that const.pas was changed; before that options.pas was added to the project and so on. FreeVCS enables you to view the order of changes over the last week, who did it and why she/he (or you?) did it.
FreeVCS integrates directly with Delphi, you have access to all functions without leaving the IDE:
Project manager is FreeVCS main user interface. From this
window, you navigate your FreeVCS project, select modules, and
execute the standard version control (and all other) functions
that act on those projects and modules.
Project manager is a non-modal window, it can be left open while doing the usual work in the IDE.
A FreeVCS project has much in common with a Delphi project,
but there are significant differences:
A FreeVCS project is a collection of interrelated files that you store in the version archive under the same project name, based on an existing Delphi project .
To simplify the creation, the modules of your Delphi projects will be added automatically to the FreeVCS project (FreeVCS may also find the components and additional units used in your projects), but 'modules' in this context means not only Delphi related files. This will belong (nearly) to any type of file (components, packages, resources, include files, text files, help source files, graphics, installation files, documentation, bitmaps, binaries...) you wish to associate with your project. Because FreeVCS stores the modules with the complete path they may reside in any folder on your disk.
FreeVCS also supports files shared between different projects - one physical file but accessible from all projects.
|Common version tracking features
available in FreeVCS:
|Add/ Remove||VERSIONINFO Resource handling|
|Check In/Out / Undo Check Out||Purge (& keep a max. number of revisions)|
|Visual (& Binary) Compare||Used Units|
|Synchronize||Development Time Log|
|File based History||ToDo list|
|Project based History||Recent project list|
|Share the archive via network||Notify via network|
working folders based
on archive projects
(Labels) for modules and
| Development state backup in a single
Check in of a module:
Select one, a selection or all modules from Project Manager (or the current IDE file by a keyhook), add a comment, a keyword and click on Check In, that's all.
Keywords (strings up to 255 chars - also known as labels) can be assigned to a group of modules. These keywords can be used later (in Synchronize) to get a defined quantity of modules or a defined development state back to your working (or an other) directory.
Check out of a module:
Select one, a selection or all modules from Project Manager (or the current IDE file by a keyhook), add a comment and click on Check Out, that's all.
On checking a module out FreeVCS creates a new (the locked) revision and save the original module to give you the chance to 'Undo' all the changes you have made or to restore any of the old versions. You never work with the master copy of the module that is stored in the version archive.
To see the changes you've made while developing you can do a 'Visual Compare' between the module in your working directory and any older version stored in the archive. It is also possible to compare versions inside the archive. (.dfm (Form) files will be automatically converted to temporary text files to compare them.) Binary files may be compared via the CRC32 checksum stored by FreeVCS.
You have the possibility of specifying different editors (e.g. a HTML editor) for all your modules and to load the modules from Project Manager into these editors directly from the Delphi IDE (a kind of enhanced View).
Recent Delphi projects (packages, project groups) will be stored in a history (MRU). In opposite to the Delphi IDE this list can hold up to 100 of the most recent projects.
Loss of data: You can put the archive on a second drive and the (compressed) backup on a third (e.g. remote) drive to be protected from damaged disks.
FreeVCS will create a backup list including all the modules associated with your project who has needed to be saved since the last backup at run time. You are only one mouse click away from a regularly backup.
All of this will work with a minimum of configuration: The FreeVCS setup program will do all necessary settings for you.
This is a subset of the functions available in FreeVCS. Download and install to see more.
As you can see on this site, FreeVCS (currently 47 forms, 62 units, about 2.6 MB source) was written by the help of FreeVCS.
Although other version control systems are more complex and offer more features (and maybe fewer bugs?) - remember, you cannot compare such a commercial application developed by an entire company to a free one - I think this one is worth taking a look on it (apart from the fact that it is free).
Copyright © 1999 ( Thomas Hensle )
All rights reserved.