SwingCVS - Simple CVS GUI

The idea is to make a really simple GUI front end that optinally can be used on top of CVS from UNIX shell. The GUI shall only support CVS functions that benefit much from a GUI view. The primary benefit of a GUI view is that files, folders and folder subtrees can be specified quickly (compared to from shell) and that CVS status can be browsed quickly using file/folder icons.

CVS operations must be able to be performed on different subsets of the CVS tree. Subsets shall be defined by,

  • specific file
  • specific folder
  • a multiple set of files and folders
  • specific inclusion filter (precedence over exclusion)
  • specific exclusion filter
  • specific binary inclusion filter (precedence over exclusion)
  • specific binary exclusion filter
  • recursive or non recursive
  • conditional if file/folder is under CVS control or not (e.g. commit)

The GUI shall be a typical “Windows Explorer” view with a folder tree view on the left and folder contents on the right. The GUI shall be implemented in Java SE.

All cvs operations shall be implemented as UNIX shell commands which are called from Java GUI. This means the the application assumes a fully functional CVS installation as many operations is assumed to be done on command line. PicoCVS will also use the cvs commands directly as as backend. The following CVS commands should be supported via PicoCVS.

  • cvs add (includes commit)
  • cvs update
  • cvs commit
  • cvs tag
  • change binary setting

The target platform is UNIX with CVS and Java SE support.


The solution is divided in the following parts;

Selector / GUI

Selects which files to operator and which CVS operation. This is implemented using a Java Swing UI. Also settings for later stages are entered through this GUI.

The GUI shall consist of a tree view on the left and a file view on the right. Some characteristics are the following;

  • Double click on a folder should make it root.
  • Full path should be shown at bottom. Folders should be clickable as in MacOS.
  • Use marker menus for quick access to usual commands (add, remove, commit, update).


This part is responsible for locating the files that the CVS operation shall operate on. This part is implemented through a UNIX script. Input (provided from GUI) to finder are;

  • Set of selected files and folders
  • Recursive on/off
  • Positive filter
  • Negative filter


This part is responsible for executing the CVS command. This part is implemented through a UNIX script and relies on basic CVS implmentation in UNIX. Input (provided from GUI) to executir are;

  • CVS command
  • Automatic commit
  • Execute on individual files or not
  • Optional CVS settings

Conflict analysis

This part is responsible for formatting the output from the CVS command and possibly conflicts. The output is presented in GUI in a simple human readable format.