kycvs - a graphical CVS frontend


kycvs [[-c command] [-d directory] [-e editor] [-f file(s)]] | [-h]


kycvs is a graphical frontend for cvs the ``Concurrent Versions System''. It allows you to use almost all cvs commands via menu, hotkey or popup.


The following commandline options are currently known by kycvs:

-c command
A cvs command to perform on startup. See Arguments below for a list of currently supported commands. - Default: None.
-d directory
The directory to use on startup. Default: last directory used when running kycvs the last time (or current directory if kycvs was never called before).
-e editor
Editor to use for cvs commands. Default: CVSEDITOR (see ENVIRONMENT below). Note: Apart from being passed to cvs where appropriate this is never used.
-f file(s)
File(s) to use with the -c command. Default: None. Note: This must be the last option since all arguments are considered filenames.
-h --help
Prints out a short usage note.


The -c command accepts one of the following cvs commands:

Add a new file/directory to the repository
Administration front End for rcs
Show last revision where each line was modified
Checkout sources for editing
Check files into the repository
Show differences between revisions
Get ready to edit a watched file
See who is editing a watched file
Export sources from CVS, similar to checkout
Show repository access history
Import sources into CVS, using vendor branches
Create a CVS repository if it doesn't exist
Print out history information for files
Prompt for password for authenticating server
Removes entry in .cvspass for remote repository
Create 'patch' format diffs between releases
Indicate that a Module is no longer in use
Remove an entry from the repository
Add a symbolic tag to a module
Display status information on checked out files
Add a symbolic tag to checked out version of files
Undo an edit command
Bring work tree in sync with repository
Set watches
See who is watching a file

Note: This commandline support is strictly experimental and going to be removed in a future version! If you're typing in the commands anyway, you're probably better off calling the cvs binary directly without kycvs as an intermediate instance.


Nothing special to mention for normal usage.

If you have the source-distribution, however, and build kycvs with debugging enabled (the $D+ dcc compiler-switch) the program will print out (on STDOUT and STDERR) a huge amount of text telling something about its internal doings. Unless you're quite familiar with the source-code and the software-design used therin, these messages won't be very useful for you.


While cvs uses additional environment-variables (see cvs(1)), kycvs uses the following variables (if set):

Should contain the full pathname to the root of the cvs source repository (where the RCS files are kept). This information is used by kycvs as the default repository to be passed to cvs.
Specifies the program to use for recording log messages during commit. If not set, the VISUAL and EDITOR environment variables are tried (in that order). Since kycvs comes with its own builtin editor to write log-messages and alike, there's usually no need to worry about this setting.
In order to find two specific libraries (see the discussion in RESTRICTIONS below) kycvs needs the LD_LIBRARY_PATH variable point to the directory, where it can find those libraries. If you're using a binary distribution of kycvs the startKyCVS script will take care of that.

If you installed kycvs from the source and use the FHS-conformant location /opt/kycvs/ for the binary you should either type export LD_LIBRARY_PATH="/opt/kycvs/" before starting the program, put that command in your ~/.bashrc or ~/.profile, or just use the startKyCVS script as well.

Only used if the getlogin(3) call fails to return the current username. This name is currently used only for the window title.


The following files are used by kycvs (mostly r/o):

If the user's home-directory contains such a file it is read and used to determine whether a given filename is to be ignored by the fileview of kycvs if the user chooses to view only those files that are under CVS-control.
The cvs initialisation file. Lines in this file can be used to specify default options for each cvs(1) command. On startup kycvs reads the global options from this file to set its own internal properties accordingly. It then defaults to ignoring this file using the cvs option -f with all internally generated cvs commands (this is user-configurable at runtime).
If the working directory contains such a file it is read and used to determine whether a given filename is to be ignored (see above). In effect, for every directory the user's ~/.cvsignore and the directory's ./.cvsignore are merged in memory.
kycvs stores its user-defined settings in a INI-file style in the users home-directory. This is the only file kycvs uses to write to, the other files (except the following tempfile) are read only. The file-format is quite simple (in fact, in comes from WinDo$): There are several sections each of which containing a couple of keyword=contents pairs.
When submitting a commit command to cvs the log-messages provided by the user are stored in a temporary file in the systems /tmp directory. The file and its name is created by the mkstemp(3) call at runtime, so the actual name(s) will vary. Usually this file(s) are deleted automatically by kycvs so the user won't ever see one of them.
The executable binary of kycvs. Usually started via /opt/kycvs/startKyCVS (see below).

Unless you've set the LD_LIBRARY_PATH variable (e.g. in ~./bashrc) you should not place this binary in a directory on your PATH. Better use the startup script (with appropriate sym-links).

Simple shell-script to start kycvs. It sets the LD_LIBRARY_PATH variable (see above) if needed and then runs kycvs. This script should be sym-linked to /opt/bin/kycvs (or /usr/local/bin/kycvs or whereever your PATH happens to point to for locally installed binaries) to start kycvs from everywhere in your filesystem.
If you have not installed the Kylix IDE you'll need a binary distribution of kycvs containing the additional files
        sym-linked to /opt/kycvs/
            sym-linked to /opt/kycvs/
        sym-linked to /opt/kycvs/

See the discussion in RESTRICTIONS below as well.


Some commandline-options do not work as expected. They are going to be removed in a future release anyway: Why should one use a GUI app if one likes to type in the commands?

Some more ``bells'n'whistles''?


    None known as of yet ;-)
    Please feel free to submit any reports of anormalities
    you may observe to the EMail-address below.


kycvs was written in Object Pascal using the Kylix 1 IDE provided by Borland (see ). Since Pascal is not yet the 'native' language of GNU/Linux it uses a couple of external libraries which need to be installed on your system in order to run kycvs.

external libraries

The kycvs executable is linked with the following libraries (where the => paths are those of a FHS-conformant installation):

    /lib/ => /lib/ => /usr/X11R6/lib/ => /opt/kylix/bin/ => /lib/ => /lib/ => /lib/ => /opt/kylix/bin/
    /lib/ => /lib/ => /usr/X11R6/lib/ => /usr/X11R6/lib/ => /usr/X11R6/lib/ => /usr/lib/ => /usr/lib/ => /lib/

Apart from the Kylix-specific and all of this libraries should be available with a recent GNU/Linux distribution (at least if you've installed a graphic user-interface on your workstation).

The following list shows, what packages/rmps provide those libraries:

    /lib/ => glibc-2.2.4-19.3 => XFree86-libs-4.1.0-3 => kylix_main_program_files-1.0-1 => glibc-2.2.4-19.3 => glibc-2.2.4-19.3 => glibc-2.2.4-19.3 => kylix_main_program_files-1.0-1
    /lib/ => glibc-2.2.4-19.3 => XFree86-libs-4.1.0-3 => XFree86-libs-4.1.0-3 => XFree86-libs-4.1.0-3 => libjpeg-6b-16 => compat-libstdc++-6.2- => glibc-2.2.4-19.3

So this reduces to

The named Kylix-specific libraries are provided with the binary distributions of kycvs.


kycvs uses the visual components provided by the qt-libraries for its visual appearance. It accesses them through the Borland provided interface-libraries and (see above). In order to run kycvs you must either have the Kylix IDE installed on your system (so the named libraries can be found on your machine) or use a binary distribution which includes these two libraries as well. If you have KDE installed this should be all.

If you're using another desktop (like GNOME) you might have to install (but not: use) KDE as well or at least the underlaying QT-libraries. Installing QT is beyond the scope of this document; please refer to to learn about QT, and visit for more information on the KDE Project.

As of now I have no reports confirming or denying the use of kycvs under GNOME. Feel free to drop me a note if you're going to try it!


Concurrent Versions System

The whole cvs support depends on a properly installed cvs executable. If kycvs fails to find/call cvs via the $PATH there is simply no cvs support. kycvs is not a replacement for cvs but a visual frontend. You should refer to the documentation that comes with cvs to learn how to setup and use cvs(1) properly.

The cvs commands admin, init, login and logout are not available via kycvs. You should use the commandline in a shell if you really need them.


kycvs is a multithread application. That means it does its job with the help of a couple of ``worker-threads''. All cvs queries are done actually by such a ``worker'' in the background without blocking the GUI. The maximum number of concurrently running threads is user-configurable at runtime (default is 4).

Another ``worker'' tries to keep the memory-usage as low as possible. Since walking through a directory-tree may result in hundreds or even thousands of files seen (every of which internally represented by an object), such a walk could eat up quite a bit of memory. A GC-thread in the background takes care of that: it checks every directory whether it's ``expired'' and if so removes all file-objects associated with this directory from memory. The time after which a directory is assumed ``expired'' is user-configurable at runtime (default is 180 seconds i.e. 3 minutes).


chlog(1), cvs(1), diff(1)

For CVS updates, more information on documentation, software related to CVS, development of CVS, and more, see: and


Copyright 2001-2002 DFG/M.Watermann, D-10247 Berlin, FRG

See the file COPYING included in the distribution for a complete license statement.


chlog and kycvs was written by


starting 2001-10-05.

    $Id: kycvs.html,v 1.3 2016/02/19 17:52:21 matthias Exp $