tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
NAME
tkCVS - a Tk/Tcl Graphical Interface to CVS
SYNOPSIS
tkcvs
DESCRIPTION
tkCVS is a graphical interface to the CVS (Concurrent
Versions System) revision control system.
tkCVS USERS GUIDE
The following sections provide a working overview of tkCVS.
WORKING WITH tkCVS
To work with files from the repository using tkCVS, first
you need to select a directory (sometimes called a sandbox )
to work in. You can create a subdirectory from your home
directory (I use develop for all of my development software,
you may like to use src or progs ), or you may work from
your home directory.
After selecting this directory and navigating into it using
the directory display, you can select a module to work with.
In CVS, groups of files are arranged into modules for easy
access.
tkCVS arranges modules into directories and subdirectories
in a tree structure much in the same way that you would
arrange them in your home directory. You can navigate
through the tkCVS module tree using the Module Browser
window.
Working with files from the repository
Using the Module Browser window, you can select a
module to check out. Each module has a module code
which is displayed as you browse through the module
tree. When you check out a module, a new directory is
created in your working directory with the same name as
the module code.
You can then change into the new directory that tkCVS
has created, and all of the files in that module will
be in the directory.
You can use the simple file management and editing
features of tkCVS to work with files in this directory,
or you may use your own text editor, word processor, or
whatever to work with the files.
Once you have finished your edits (or whenever you have
Page 1 (printed 2/3/99)
tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
reached a stable stage in your development, or possibly
even on a daily basis), you can check files back in to
tkCVS using the Check In button.
Tagging and Branching
You can tag particular versions of a module or file in
the repository. Normally you will do this when your
programs are ready to be released into a testing or
production environment. Tagging is useful for taking
snapshots of what the repository contained at a
particular date (for example you can tag all of the
files associated with a particular software release).
You can also create branches based on tags or on
particular versions of the files in the repository.
This allows you to go back and fix particular bugs or
make important patches to an earlier release of
software while still being able to work on the latest
version.
You can use symbolic tag names to refer to versions of
files in the repository, instead of just numeric
version numbers. For example you can use the tag name
software_release_1_5 to indicate release 1.5 of a group
of files destined for a customer site.
Exporting
Once a software release has been tagged, you can use a
special type of check out called an export. This allows
you to more cleanly check out files from the
repository, without all of the administrivia that CVS
requires you to have while working on the files. This
type of facility is useful for delivery of a software
release to a customer.
Importing
tkCVS contains a special dialog to allow users to
import new files into the repository. New modules can
be assigned places within the repository, as well as
descriptive names (so that other people know what they
are for).
Working inside the repository.
tkCVS contains some features that enable it to work
inside the repository. The module browser window
displays the directories and modules within the
repository in a tree structured manner.
The module browser also contains a file browser window
that enables you to list the files within the module,
and view a specific version of a file.
Page 2 (printed 2/3/99)
tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
The log browser window contains a graphical display of
a revision log for a file, and enables you to see the
differences between two versions of a file by pointing
and clicking on the versions in the display.
Other Features
Other features of tkCVS allow you to tag files, add new
files or delete files from the repository, or view and
print reports about the repository contents. You can
also search the module database for module codes,
module names, and keywords within a module name.
CHECKING OUT MODULES USING tkCVS
To check out a module, first display the module browser
dialog using the Module Browse button. Note that you do not
have to check out modules using this dialog -- you can use
it for just browsing through the modules in the repository.
Once you have found the module you are looking for in the
module tree, you can check it out by pressing the Check Out
button, or export it using the Export button (see the
section on Exporting later in this manual).
TAGGING AND BRANCHING
CVS uses a system of tags to indicate places in the
development cycle when the repository (or parts of it) are
in a stable state. These tags can be applied to modules in
the repository or to files within a module.
Tagging Modules
To tag a module, first select the module using the
module browser (note that you may tag a module or a
directory tree -- to tag an entire directory tree
including all of its sub-directories and modules,
select the top level directory of the tree).
Enter the tag name into the Tag A entry box. Note that
a tag name may be any alphanumberic string, but may not
contain any spaces. Sample tag names include things
like software_release_1_0 or integration_test_release.
If you also enter a tag name into the Tag B entry box,
then all files in that module that are currently tagged
with Tag B will be also tagged with Tag A.
Select the Tag->Tag Module menu item from the menu on
the Module Browser dialog, and the module or directory
will be tagged with the tag name that you have entered.
Tagging Files
You may tag individual files from within the directory
browser. This is mostly useful when you only want to
Page 3 (printed 2/3/99)
tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
tag part of the files in a module, or when you are re-
tagging certain files within an already tagged module.
Select the files that are to be tagged, and select the
File->Tag Files option from the menu. This will
request that you enter a tag name. The selected files
will then be tagged with this tag name.
Updating to a Tag
Once a file or module has been tagged within the
repository, you may use the tag name for checking out
files, or updating files to a tag name.
If a tag name is entered in the Tag A field of the
browser window when you select a module for check out,
then the tagged version of the module (rather than the
latest version) will be checked out of the repository.
Similarly, instead of selecting File->Update to Head
from the main menu, you can select File->Update to Tag
to update a file to a tagged version (instead of the
head version). This will ask you to enter a tag name
before the module is updated.
Branching
CVS also supports the concept of branching files. When
you are applying a tag, the tag may be applied as a
branch tag, which means that all versions based on this
tag will be placed on a branch of the main version tree
instead of on the trunk.
You should update files to a branch tag before you
change them if you want your changes to not affect the
head version.
To read more about branching and branch tags, read the
cvs manual page.
EXPORTING
An important use of tagging modules is to indicate when a
new release of software is ready to be delivered, and to
mark the versions of all of the files in that release within
the repository.
When a release is about to be made, you may export it from
the repository. This is like a check-out, except for the
following:
* Exported directories do not contain the CVS or CVS.adm
administrative directories, and are therefore cleaner
(but cannot be used for checking files back in to the
repository).
Page 4 (printed 2/3/99)
tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
* Exported files do keyword expansion differently from
non-exported files (to ensure that the keyword
information is not lost should the file be imported
into CVS at a different site).
To export a module or directory, press the Export button at
the bottom of the module browser. You must supply a tag
name when you are exporting a module -- you cannot just
export the default (head) version. This is to make sure
that you have the tag in place so that you can reproduce the
exported files at a later date. This is called good
configuration management.
IMPORTING NEW MODULES USING tkCVS
Before importing a new module, first check to make sure that
you have write permission to the repository. Ask the
configuration management staff at your organisation to
determine whether you can write to the repository.
You should also take some time and view how the repository
is structured using the check-out dialog (see above). You
will need to provide a directory name for your module (which
should not be already in use) and so you will need to know
that the parent directory for your module exists in the
repository first. Although a module can be imported without
the parent directory existing, this means that the CVS
modules file must be patched manually after the operation is
finised to insert the directory name in the correct place in
the file.
To import a module, first enter the directory where the
module is located. Make sure that there is nothing in this
directory except the files that you want to import (create a
new empty directory first and copy the files from the module
into it if necessary).
Once this is done, press the Import button. You will need
to enter the following details:
Module Directory
The location in the module tree where your new module
will be put. This directory must not already exist,
although its parent directory must exist.
Module Name.
A one-line descriptive name for your module. This is
the name that will be displayed in the browser.
Version Number
The current version number of the module. This should
be a number of the form X.Y.Z where .Y and .Z are
optional. You can leave this blank, in which case 1
will be used as the first version number.
Page 5 (printed 2/3/99)
tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
Module Code
A module code for the module. This code must not
already exist in the repository. I strongly suggest
that your organisation settles on a single unambiguous
code for modules. One possibility is something like:
<project code>-<subsystem code>-<module code>
Using this scheme, you could have a 3 digit project
code, a 3 letter subsystem code, and a 4 letter module
code for each module, and everything would be easy to
locate.
Once you have entered these details, press the OK button to
import the module.
CREATING NEW DIRECTORIES USING tkCVS
tkCVS is not a file manager! You can't use it to create
directories within your home directory.
You can, however, use it to create new directories within
the repository. This is best done while importing new
modules. If you are about to import a new module, and the
parent directory does not exist in the repository, you can
create it using the New Directory button.
Press this button and a dialog will appear allowing you to
create the new directory. You must enter the following
information:
New Directory Location
Where (within the module tree) the new directory will
be created. This directory should not already exist,
but the parent directory must exist.
New Directory Name
This is a one-line descriptive name for the new
directory. Something like Accounting software or Test
data for my files should be sufficient.
Once you have entered this information, press the OK button
to create the directory.
You may use this dialog multiple times in one session to
create multiple directories, or an entire tree of
directories in your repository.
tkCVS REFERENCE
The following sections provide a complete reference to the
user interface to tkCVS.
Page 6 (printed 2/3/99)
tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
MAIN WINDOW
The tkCVS main window comprises a menu bar, a current
directory display, and some command buttons.
MENU
The tkCVS menu is displayed at the top of the window. There
are the following options on the menu:
File->Open
This opens the currently marked files so that they can
be edited.
File->Delete
This deletes the currently marked files.
File->Cleanup
This removes any backup files from the current
directory.
File->Print
This prints the currently selected files. For more
information on the print command used, see the section
on tkCVS configuration files.
File->Import
Select this to import new files into the repository.
This is described later.
File->Create Dir
Select this to create and name a new directory into the
repository. You must create and name a directory
before you import files into it.
File->Tag Files
Select this to tag some of the files in the current
directory. A symbolic tag name must be supplied. If
there are files in the current directory display that
have been selected, these will be tagged, otherwise all
of the files in the current directory will be tagged.
File->Update
Select this to update the files in the current
directory to the latest version in the repository.
Only files that have changed in the repository since
the current directory was checked out will be updated.
If there are files in the current display that have
been selected, these will be updated, otherwise all of
the files in the current directory will be updated.
File->Update to Tag
Select this to update the files in the current
directory to a particular tag name. A symbolic tag
Page 7 (printed 2/3/99)
tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
name must be supplied. If there are files in the
current display that have been selected, these will be
updated, otherwise all of the files in the current
directory will be updated.
File->Add Files
This is the same as the Add Files button. Press this
button to add new files to the repository. The files
you have selected will be added to the repository next
time you press the Check In button.
File->Remove Files
This is the same as the Delete Files button. Press
this button to remove the marked files from the
repository.
File->Log Browse
This option opens the Log Browser window for each of
the selected files.
File->Check In
This is the same as the Check In button.
File->Check Out
This option opens the Module Browser window
File->Exit
Select this to quit tkCVS.
Reports->CVS check
Select this option to run a cvscheck command in the
current directory.
This will list all of the files that need checking in
to the repository. All files that have been created
but not added to the repository are also listed, as
well as any files that have been removed from the
directory but not removed from the repository.
This is the same as pressing the Check button at the
bottom of the window.
Reports->CVS status
This option will display a status of all of the files
in the current directory that are part of CVS (to see
what files are missing from CVS or from the current
directory, press the Status button at the bottom of the
screen).
Each file, along with its version number and the
version number contained in the repository, is shown.
Page 8 (printed 2/3/99)
tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
The report may be limited to specific files by
selecting them in the file list before choosing this
menu option.
Reports->CVS diff
This option will display any differences between the
files in the current directory and those in the CVS
repository.
The report may be limited to specific files by
selecting them in the file list before choosing this
menu option.
Reports->CVS log
This option will display a version history log of the
files in the current directory.
The report may be limited to specific files by
selecting them in the file list before choosing this
menu option.
Reports->Module Tree
This report shows a formatted (tree structured) view of
all of the modules in the repository. It may be seen
on the screen, printed to a PostScript printer, or
saved to a file in ASCII format.
Reports->Modules Sorted by Name
This report shows an unformatted list of all of the
modules in the repository, sorted in alphabetical order
by module name.
Reports->Version Tree
This report is the same as the Module Tree, however it
also shows the version number of each file in the
modules in the repository.
For a very large CVS repository, this command can take
a long time to execute, and produce a very large
output, so be careful!
Reports->Version Listing by Name
This report is the same as Modules Sorted by Name,
however it also shows the version number of each file
in the modules in the repository.
For a very large CVS repository, this command can take
a long time to execute, and produce a very large
output, so be careful!
Search->Search Repository by Code
This item allows you to search the modules database for
Page 9 (printed 2/3/99)
tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
a module code. A dialog will appear asking you to
enter the module code that you are searching for. The
module code must exactly match the code of a module in
the database. If it does match, a window will appear
telling you the location of that module in the
database. If no match is detected, then a window will
appear telling you that there is no match. You can
enter the module code in either upper or lower case --
the search is case insensitive.
Search->Search Repository by Name
This item allows you to search the modules database for
a module name. A dialog will appear asking you to
enter the module name that you are searching for. The
module code must exactly match the name of a module in
the database. If it does match, a window will appear
telling you the location of that module in the
database. If no match is detected, then a window will
appear telling you that there is no match. You can
enter the module name in either upper or lower case --
the search is case insensitive.
Search->Search Repository by Keyword
This item allows you to search the modules database for
a particular word. A dialog will appear asking you to
enter the word that you are searching for. The word
can be a module name, a module code, or part of a
module name or code. The entire database will be
searched for any module whose name or code either
completely or partially matches the word you have
entered. If a match is found, then a window will
appear telling you the location of any modules that
match. There may be lots of matches, in which case you
may need to scroll the window to see all of them. The
search is case insensitive - you can enter the keyword
in either capitals or lower case.
Options->Show hidden files
This item turns on and off the display of hidden files
in the current directory. Hidden files are those files
whose name begins with a "." (dot).
Options->Check recursively
This item turns on recursive checking of the current
directory when the "Check" button at the bottom of the
window is pressed. Normally only the files in the
current directory are checked.
Options->Show untagged files in tag reports
When selecting a Version Tree for tagged files from the
module browser, normally only the files that have the
selected tag are displayed. With this option selected,
Page 10 (printed 2/3/99)
tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
all files will be displayed. The files that do not
have the selected tag will show a version number of
"missing".
Help->About tkCVS
This item displays a small dialog that tells you about
your release of tkCVS.
Help->About CVS
This item displays a small dialog that tells you about
your release of CVS.
CURRENT DIRECTORY DISPLAY
The current directory display shows:
* The name of the current directory,
* The location of the current directory in the CVS
repository. This will only be shown if the current
directory is contained in the CVS repository. If it is
not contained in the repository you may import it using
the Import button.
* A list of the files in the current directory.
You may select a file by clicking on it once with the left
mouse button. You may select a group of files by dragging
over them with the mouse.
Once you have selected files you may mark them. Most of the
operations in tkCVS (eg: check in, diff, update) work on the
set of marked files. You can mark all of the selected files
by using the "Mark Selected" button at the top of the
display.
You may also mark an individual file by clicking once in the
bar on the left hand side of the display next to the file
name.
Note that marking a file that is already marked un-marks it.
You may move into a directory by double-clicking on it.
Double clicking on a file will load the file into a simple
text editor so you can edit it.
File Status
When you are in a directory that is contained in the CVS
repository, a file status will be shown next to each file.
The various statuses that can be shown are:
ok The file is up to date with respect to the repository.
Page 11 (printed 2/3/99)
tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
???? The file is not contained in the repository. You may
need to add the file to the repository by pressing the
"Add" button.
Locally Modified
The file has been modified in the current directory
since being checked out of the repository.
Locally Added
The file has been added to the repository. This file
will become permanent in the repository once a commit
is made.
< dir >
The file is a directory.
BUTTONS
There are a number of buttons at the bottom of the window.
Depending on the setting of your cvscfg(buttons) variable,
the buttons may be displayed as text or as bitmaps.
Pressing on one of these causes the following actions:
Check
Press this button to run a cvscheck command in the
current directory.
This will list all of the files that need checking in
to the repository. All files that have been created
but not added to the repository are also listed, as
well as any files that have been removed from the
directory but not removed from the repository.
Edit Press this button to load the marked files in to a text
editor.
Delete
Press this button to delete the marked files. The
files will not be removed from the repository. To
remove the files from the repository as well as delete
them, press the "Remove" button instead.
Unselect
Press this button to un-select all of the selected
files.
Refresh
Press this button to re-read the current directory.
You might want to do this immediately after a check-in
or update, and also if you add new files to the
directory.
Log Browse
Page 12 (printed 2/3/99)
tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
This button will bring up the log browser window for
each of the selected files in the window. This window
is described later.
Cleanup
This button deletes all of the backup files in the
current directory. Normally you will not want to check
these files in to the repository, so you can remove
them with this button. Check the tkCVS configuration
file to determine the list of files that tkCVS
considers to be backup files.
Add Files
Press this button when you want to add new files to the
repository.
You can do this when you have created a new file in the
current directory. You must create the file before
adding it to the repository.
To add some files, first mark them in the list above
the buttons. Then press the Add Files button.
The files that you have added to the repository will be
committed next time you press the Check In button.
Remove
This button will delete files.
To delete a file, first mark the file in the list above
the buttons. Then press the Remove button.
The file will disappear from the directory and from the
file list, and will be removed from the repository next
time you press the Check In button.
Diff This compares the marked files with the equivalent
files in the repository. Note that a separate program
called "TkDiff" (also supplied with tkCVS) is used to
do this.
For more information on TkDiff, press the help button
on the bottom of the TkDiff main window.
Check In
This button commits your changes to the repository.
This includes adding new files and removing deleted
files.
When you press this button, a dialog will appear asking
you for the version number of the files you want to
commit, and a comment.
Page 13 (printed 2/3/99)
tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
You need only enter a version number if you want to
bring the files in the repository up to the next major
version number. For example, if a file is version
1.10, and you do not enter a version number, it will be
checked in as version 1.11. If you enter the version
number 3, then it will be checked in as version 3.0
instead.
Update
This updates your sandbox directory with any changes
committed to the repository by other developers.
Module Browse
Press this button to see the Module browser window.
This is described later.
Import
Press this button to import new files into the
repository. This is described later.
Quit Press this button to leave tkCVS.
THE MODULE BROWSER
Most of the file related actions of tkCVS are performed
within the main window. The module related actions of tkCVS
are performed within the module browser. The module browser
is displayed using the Module Browse button from the main
window.
When the dialog is displayed, it shows 3 lists. The first
list is the names of all of the items in the repository.
The second list shows whether the item is a directory (which
may contain other directories or modules), or whether it is
a module (which may be checked out from tkCVS ).
The third list shows the module code or directory location
in the repository, for reference.
You can double-click on a directory to open it. This
displays the name and code of all of the modules and
subdirectories within a directory.
Double clicking on a directory a second time closes it.
You can close the dialog by pressing the Quit button.
Module Browser Menu
The module browser also contains a menu, with the following
options:
Reports
This menu contains 4 options. These are Module Tree ,
Page 14 (printed 2/3/99)
tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
Modules Sorted by Name , Version Tree , and Version
Listing by Name
These perform the same functions as the equivalent
items on the tkCVS main menu, except for the following
note:
Each of these options restricts itself to the currently
selected module or directory in the module browser.
The version reports do not report the head version,
instead they report the version number attached to the
tag name given in the Tag A field of the module
browser.
Search
This menu contains 3 options. These are Search
Repository by Code , Search Repository by Name , and
Search Repository by Keyword
These perform the same functions as the equivalent
items on the tkCVS main menu.
Patch->Make Patch File
This item creates a Larry Wall format patch(1) file in
the current directory of the module selected. Note
that a tag name must be entered into the Tag A field of
the module browser. If a second tag name is entered
into the Tag B field, then the patch file will contain
differences between the two tagged versions of the
module. Otherwise the patch file will contain
differences between the head version and the tagged
version of the module.
Patch->View Patch Summary
This item displays a short summary of the differences
between two versions of a module. Note that a tag name
must be entered into the Tag A field of the module
browser. If a second tag name is entered into the
field, then the summary will list the changes between
the two tagged versions of the module. Otherwise the
summary will list differences between the head version
and the tagged version of the module.
Tag See the section titled Tagging and Branching for more
information on the options on this menu.
Module Browser Buttons
The module browser contains the following buttons:
Page 15 (printed 2/3/99)
tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
Check Out
Checks out the current version of a module. If a tag
name is entered into the Tag A field, then the tagged
version is checked out rather than the head version.
Export
See the section titled Exporting for more information
on exporting modules from the repository.
Patch Summary
This button displays a short summary of the differences
between two versions of a module. Note that a tag name
must be entered into the Tag A field of the module
browser. If a second tag name is entered into the Tag B
field, then the summary will list the changes between
the two tagged versions of the module. Otherwise the
summary will list differences between the head version
and the tagged version of the module.
File Browse
Select a module in the module browser and press this
button to display the file browser window.
Quit This button closes the module browser.
THE FILE BROWSER
Pressing the File Browse button in the module browser window
displays the tkCVS file browser. This window shows a list
of each file contained in the selected module, and contains
three buttons. These are:
View This displays a window showing the contents of the
file. The file may be viewed but not edited using this
window. (To edit a file in the repository, you must
check the file out of the repository).
Note that if a tag name or version number is entered
into the Version / Tag field at the top of the window,
the specified version of the file is displayed, and not
the head version.
Log This displays the log browser window for the file.
Quit This button closes the file browser.
THE LOG BROWSER
The tkCVS Log Browser window enables you to view a graphical
display of the revision log of a file, including all
previous versions, and any branched versions.
You can get to the log browser window in two ways, either by
selecting a file within the main window of tkCVS and
Page 16 (printed 2/3/99)
tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
pressing the Log Browse button, or by selecting a file in
the file browser window (available from within the module
browser) and pressing the Log Browse button.
The two forms of the log browser are slightly different.
From within the main window it is possible to perform merge
operations on a file, and the results of the merge are
stored in the current directory. From within the module
browser (working directly within the repository) merge
operations are not possible.
Log Browser Window
The log browser window has three components. These are
the file name and version information section at the
top, the log display in the middle, and a row of
buttons along the bottom.
Log Display
The main log display is fairly self explanatory. It
shows a group of boxes connected by small lines
indicating the main trunk of the file development (on
the left hand side) and any branches that the file has
(which spread out to the right of the main trunk).
Each box contains the version number and author of the
version.
Version Numbers
Once a file is loaded into the log browser, up to two
version numbers may be selected. The primary version
is selected by clicking the left mouse button on a
version box in the main log display.
The secondary version (Version B) is selected by
clicking the right mouse button on a version box in the
main log display.
Operations such as "View" and "Merge Branch to Head"
always operate only on the primary version selected.
Operations such as "Diff" and "Merge Changes to Head"
require two versions to be selected.
Log Browser Buttons
The log browser contains the following buttons:
View Pressing this button displays a window containing the
primary version of the file selected.
Diff Pressing this button runs the "tkdiff" program (by John
Klassa) to display the differences between version A
and version B.
Page 17 (printed 2/3/99)
tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
Merge Branch to Head
To use this button, first select a branch version of
the file as the primary version.
The changes made along the branch up to that version
will then be merged into the head version, and stored
in the current directory. The version of the file in
the current directory will be over-written.
Merge Changes to Head
To use this button, first select two versions anywhere
in the file log (although two adjacent branch versions
are more commonly selected). It is expected that in
most cases version B will be later than version A.
CVS will then calculate the changes made between the
two versions selected and merge the differences to the
head version.
Note that if version A is later (higher on the trunk or
further along the branch) than version B, a "reverse
diff" will be created. This will have the effect of
removing the changes from the head version.
For example, if the head version is 1.6, version A is
1.5, and version B is 1.3, this button will remove all
of the changes made between versions 1.3 and 1.5 from
the head version.
It may not make sense to select two branch versions on
different branches for this function.
View Tags
This button displays a window showing the tags
contained in the file.
Quit This button closes the Log Browser.
CONFIGURATION FILES
There are two configuration files for tkCVS. The first is
stored in the directory in which the *.tcl files for tkCVS
are installed. This is called tkcvs_def.tcl.
Values in this file can be over-ridden by including a .tkcvs
file in your home directory. Commands in either of these
files should be Tcl scripts. In other words, to set a
variable name, you should have the following command in your
.tkcvs file:
set <variable-name> <value>
Page 18 (printed 2/3/99)
tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
for example:
set cvscfg(papersize) "A4"
The following variables are supported by tkCVS:
cvscfg(papersize)
The paper size to print on. Set this to "A4" for
international standard A4 size paper, or "8x11" for US
letter paper.
cvscfg(pointsize)
The basic point size to use in reports.
cvscfg(headingsize)
The point size to use for heading text in reports.
cvscfg(subheadingsize)
The point size to use for sub headings in reports.
cvscfg(glb_background)
The background colour to use for all items in tkCVS.
cvscfg(glb_highlight)
The background colour to use for highlighted items.
cvscfg(bt_lookhere)
The background colour to use for non-highlighted items
of particular interest, in particular buttons,
scrollbars, etc.
cvscfg(bt_pressme)
The background colour to use for highlighted buttons,
scrollbars, etc.
cvscfg(glb_file_mark_color)
The colour to use to indicate marked files.
cvscfg(glb_dir_mark_color)
The colour to use to indicate directories (which cannot
be marked).
cvscfg(ldetail)
The default log file detail to be reported; one of
"last" (report only the comment from the last checkin);
"summary" (version number and comment string for all
check-ins); or "verbose" (all logfile detail possible,
including symbolic tags).
cvscfg(rdetail)
The default detail for status reports; one of "terse"
(report "status" only and only on those files which are
Page 19 (printed 2/3/99)
tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
not "up-to-date"); "summary" (report the "status" and
include "up-to-date"); or "verbose" (provide the report
as it would appear unmodified).
cvscfg(y_size)
The number of files that the main working listbox
should accomodate.
cvscfg(file_filter)
The default pattern to be used by the main listbox
filter. Use any valid pattern that can be used for a
pattern for 'ls'. An empty string is equilivant to the
entire directory (minus hidden files).
cvscfg(rm_cmd) and cvscfg(rm_flags)
This determines which operating system command is to be
used to delete files.
cvscfg(print_cmd)
This determines which operating system command is to be
used to print files.
cvscfg(clean_these)
This determines the pattern to be used for cleaning a
directory; i.e., the removal of unwanted files.
Typically these files are not under CVS.
cvscfg(confirm_prompt)
This determines the default value for confirmation
prompting before performing an operation over selected
files.
cvscfg(editor)
To override the default editor (setup when tkcvs is
configured and installed) a user can set the
cvscfg(editor) variable to the editor of choice in
their .tkcvs file (if they have one). Note that the
editor must be an Xwindow application.
cvscfg(buttonstyle)
This determines what sort of buttons you get on the
main window.
TOOLTIPS_OFF
ToolTips are the small pop-up descriptions of the
buttons that appear under the buttons when the cursor
is placed over them. Setting this variable to 1 will
turn ToolTips for the main window buttons off.
cvs The location of your CVS executable. This can be a
full path name or just the string "cvs" in which case
your PATH environment variable will be searched for the
Page 20 (printed 2/3/99)
tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
CVS programs.
cvscfg(allfiles)
Set this to 0 to see normal files only in the directory
browser, set it to 1 to see all files including hidden
files. This option may be turned on and off within the
program by using the Options->Show Hidden Files menu
option.
ENVIRONMENT VARIABLES
You must have the CVSROOT environment variable pointing to
the location of your CVS repository before you run tkCVS.
USER CONFIGURABLE MENU EXTENSIONS
It is possible to extend the tkCVS menu by inserting
additional commands into the .tkcvs or tkcvs_def.tcl files.
These extensions appear on an extra menu to the right of the
tkCVS Options menu.
To create new menu entries on the user-defined menu, set the
following variables:
cvsmenu(command)
Setting a variable with this name to a value like
"commandname" causes the CVS command "cvs commandname"
to be run when this menu option is selected. For
example, the following line:
set cvsmenu(update_A) "update -A"
Causes a new menu option titled "update_A" to be added
to the user defined menu that will run the command "cvs
update -A" on the selected files when it is activated.
(This example command, for versions of CVS later than
1.3, will force an update to the head version of a
file, ignoring any sticky tags or versions attached to
the file).
usermenu(command)
Setting a variable with this name to a value like
"commandname" causes the command "commandname" to be
run when this menu option is selected. For example,
the following line:
set cvsmenu(view) "cat"
Causes a new menu option titled "update_A" to be added
to the User defined menu that will run the command
"cat" on the selected files when it is activated.
Any user-defined commands will be passed a list of file
Page 21 (printed 2/3/99)
tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
names corresponding to the files selected on the directory
listing on the main menu as arguments.
The output of the user defined commands will be displayed in
a window when the command is finished.
CVS modules FILE
CVS maintains a file called modules in the $CVSROOT/CVSROOT
(or $CVSROOT/CVSROOT.adm for versions prior to 1.3)
directory in which it stores the location of all of the
modules in the CVS repository. tkCVS maintains a set of
backwards - compatible extensions to this file to store the
names of directories and modules.
The extensions are:
Directory Name
#D <TAB> directory <TAB> directory name.
eg:
#D <TAB> source/account/charge <TAB> Charge accounting
software
Module Name
#M <TAB> module code <TAB> module name
Where module code is the same as the module code that
CVS uses to refer to the module in the modules file.
The #M line must be after the #D line for the directory
in which the module is contained, but must be before
the line containing the module code line used by CVS.
When you are installing tkCVS, you may like to add these
additional lines to the modules file (remember to check out
the modules module from the repository, and then commit it
again when you have finished the edits).
Note that all of these extension lines commence with a "#"
character, and so CVS interprets them as comments. Only
tkCVS uses them for naming modules. They can be safely left
in the file whether you are using tkCVS or not (in fact they
are a useful reference when browsing your modules file).
BUGS
Sure. Mostly because I haven't finished it yet.
The text editor doesn't work so well with non-ASCII files.
If you find any other bugs, write out what you were doing at
Page 22 (printed 2/3/99)
tkCVS(n) Tcl ($Date: 1995/06/21 08:09:26 $) tkCVS(n)
the time the bug happened on the back of a clean $100 note
and post it to me.
SEE ALSO
cvs, rcs.
AUTHOR
Del (del@babel.dialix.oz.au)
Page 23 (printed 2/3/99)