BorCVS 0.4 Manual


BorCVS uses the command-line CVS application for execution of the commands. The output of CVS is shown in a result window. Because of that it would be helpfull if you know CVS, at least to some extent. Please refer to the documents on for information about CVS. Especially the Introduction to CVS would be helpfull, and if you have the time you can look at Version Management with CVS (also available in PDF), which is the definitive guide for CVS users. Another good book on CVS is Open Source Development with CVS by Karl Fogel, which partly available online.

The plugin usually assumes that all files in a project reside in the same directory. This base directory is the directory where the project file (.BPR) is located. It should be possible to have files in subdirectories of that directory, but CVS can not handle a file outside that directory tree (except if it is in another CVS working directory).

Important: before using this plugin, ensure that all your forms (.DFM files) are saved in text format. CVS does not handle binary files very well. If you don't do that, you won't be able to use this plugin, since it assumes that .DFM files are in text format. You can convert existing .DFM files using the convert utility found the C++ Builder or Delphi \bin directory.

You should check the "automatically save all files before any BorCVS action" checkbox in the preferences dialog. Then all files are automatically saved (like the "Save all" menu item) before any action, and it is ensured that CVS operates on the newest files.

All BorCVS commands are available in the CVS submenu, which is added to the C++ Builder or Delphi main-menu when BorCVS is installed. The commands are described in the following.

New Module

This command creates a new module in CVS. If you have created a project, and want to start using CVS on it, you can do so by first executing this command. It operates on the directory of your currently active project. If you don't have a project opened, it asks you to select a directory. First you have to enter some information about the module like the module name (which should be the same as the directory in which the project resides), the vendor tag and the release tag. It is also possible to enter a log message for the project. On the second page of the dialog you have to enter the path to the CVS repository, which can be either on the local computer or on a network. You can also add files, directory names or wildcards to the list of things to ingnore during import. On the last page you can set CVS wrappers, which is mostly used to ensure that CVS does not modify binary files.

After the OK button is pressed, BorCVS first looks if your module already exists in the CVS repository. You can only import to newly created modules with BorCVS. Then the files in the directory of the current project are imported. CVS imports all files, regardless if they are in the C++ Builder/Delphi project or not. It also includes any subdirectories. The only files that are not imported are the ones in the "ignore" list (which contains not just the file specifications of the "Files to ignore" page, but also some system defaults, refer to the CVS documentation). After CVS has imported the files, the project directory is renamed. That is necessary because the import command just imports the files, but does not create a valid working copy. The directory is renamed by appending .precvs to the name, and the newly created module is checked out again to the original directory name, so that you can continue working on the project.

I would recommend that you delete or move away all files that you do not want to import into CVS before executing this command. After the command was executed you can move them back to the working directory.


The checkout command creates a working copy for a module that does already exist in the CVS repository. You have to enter the module name of the CVS module on the server, and the local folder where you want to create the working copy. CVS creates a directory with the module name in the given local folder. You also have to specify the CVSROOT path. If you want, you can checkout a specific revision by setting some sticky options on the second page of the dialog. For the pserver method you can first use the login command in the CVS command dialog. If you use cvsnt (, BorCVS will ask you for the password. If you use the normal cvs binary, you have to login manually on the command line.

Update project

This command updates the current working directory to the newest revisions in the repository. Normally you have to select the files to update, but optionally you can update all files of the project by selecting the corresponding option. CVS merges all changes that others have made to the project into your local working copy. If a conflict is found, that file is opened for editing and you have to solve that conflict before you can commit your changes. Normally the command updates to the latest revision of the current branch, but you can specify another date, revision or tag to update to. You can also choose to reset any sticky options set previously and update again to the latest revision. Another option is to get a clean copy of the files, which deletes all changes you made since the last update (if a local file was changed, a backup is created by CVS). On the second page you can specify revisions that you want to merge to the current working copy.

Commit project

This command commits changes made to the local working directory to the repository and makes them available to other users. Like the update command you have to select the files to commit or check the option to commit all files in the working directory. You have to enter a log message for the changes you want to commit. You can also select one of the previous log messages. On the second page you have the option to commit to a specific revision. Usually CVS selects the new revision number of a commited file automatically.


With this command you can create a "tag" on the current revisions of the working directory. It is also possible to create a branch by checking the apropriate option. If you choose to update the working directory to the new branch, then a cvs update command is executed after the tag command. Usually the tag command operates on the directory of the currently active project, thus processing all files in the directory, but if you want, you can specify the files manually. The list is filled with all files in the current project. You can select or deselect a file by marking the checkbox in front of it. You can also manually add a file to the list, but be carefull with this option.


This command presents the status of all files in the current project. It shows the current revision, any options, if the file was modified localy, any sticky options and other information about the file. If you select a file you can also view the cvs log of that file, or you can view the differences between different revisions of that file. The dialog also allows the execution of CVS update and commit commands on selected files (those that have the checkbox checked).

The List of files can be sorted by clicking on the column header. By using the rights mouse button you get a context-menu which allows selection of files with a common state.

Add <form>

If a new file is created and added to the Project, it is not automatically version controlled. First it has to be added to CVS with this command. The command just schedules the file for addition, the addition of the file is done on the next commit. In the dialog you can select which files should be added, and it is possible to enter a description for the file(s). You can also set the keyword expansion mode. In the default setting CVS will decide (via an internal list of file endings) which keyword expansion mode to use. Normally, you would use that setting. For binary files (like .RES resources, .BMP bitmaps), however, you should set the keyword expansion mode to binary. If you don't do that, they will get corrupted by CVS, because it converts line endings between the unix and the windows mode.

Remove <form>

If you remove a file from the project it is not automatically removed from CVS. You can do that with the remove command. In the dialog you can select which files to remove. Optionally you can choose to delete the files that will be removed from the working directory.

Update <form>

This is the same as the update command, but it operates on the current module only. The list of files contains all files which belong to the current form or module. Optionally you can add a file, and you can choose which files to update by checking or unchecking the checkbox infront of them.

Commit <form>

Similar to the "Update <form>" command this is the same as the commit command but working on the current module instead of the whole project.

Diff <form>

This command is used to view the differences between revisions of a file. First you can select a file from all files of the current module. Then you have to select which revisions to compare. You can select the revisions by entering the revision number, a tag or a branch name, or the date of the revision. For more information look at the CVS manual. It is also possible to set some options that control the output of the diff command.

Log for <form>

Similar to the diff command you can view the revision history of a file with that command. After selecting a file you can set some options to restrict the output of the log command.

CVS command

BorCVS does not provide all functionality available on the command-line CVS or in WinCVS. For all commands not available directly you can use this feature to execute a CVS command directly. You can enter the command line, as you would at the command prompt, and CVS is executed with that command line. You can also specify the working directory. If the working directory is left empty, the current project directory is used. Optionally you can also select some files of the project, which are appended to the command you entered. This should allow execution of all other CVS commands, like initialization of a CVS repository or the admin commands. The result of the command is shown in the output window.


Using this menu item you can set the preferences for BorCVS. At first you should set the path to the CVS binary. If your CVS application is in your system PATH, you can just enter cvs.exe. If it is not you have to enter the full path to the application. Usually the installer should set this path to the location of the installed CVS binary. You should also specify if the cvs binary is normal cvs or the cvsnt application.

There are also a few global options you can set:


BorCVS is currently in development state, see the bug-tracker on the sourceforge project-page for a list of currently known bugs.

For the license terms under which you can use this software, see the BorCVS Readme.html.

If you have any comments regarding the functionality of BorCVS, any bug reports, ideas for new functionality or if you want to contribute to the development of BorCVS just write to or subscribe to one of the BorCVS mailing lists.

Page created by Thomas Bleier,, last modified 5-Apr-2002.