Man Linux: Main Page and Category List

NAME

       TkCVS - a Tk/Tcl Graphical Interface to CVS and Subversion

SYNOPSIS

       tkcvs  [-dir  directory]  [-root  cvsroot]  [-win workdir|module|merge]
       [-log file]

DESCRIPTION

       TkCVS is a Tcl/Tk-based graphical interface to the CVS  and  Subversion
       configuration  management  systems. It displays the status of the files
       in the current working directory, and provides  buttons  and  menus  to
       execute   configuration-management  commands  on  the  selected  files.
       Limited RCS functionality is also present.  TkDiff is  bundled  in  for
       browsing and merging your changes.

       TkCVS  also  aids  in  browsing  the  repository.  For  Subversion, the
       repository tree is browsed like an ordinary file tree.   For  CVS,  the
       CVSROOT/modules  file  is  read.   TkCVS  extends  CVS with a method to
       produce a browsable, "user friendly" listing of modules. This  requires
       special  comments  in  the CVSROOT/modules file. See "CVS Modules File"
       for more guidance.

OPTIONS

       TkCVS accepts the following options.

       -dir directory
              Start TkCVS in the specified directory.

       -help  Print a usage message.

       -log file
              Invoke a log browser for the specified file. -log and  -win  are
              mutually exclusive.

       -root cvsroot
              Set $CVSROOT to the specified repository.

       -win workdir|module|merge
              Start  by  displaying  the  directory browser (the default), the
              module browser, or the directory-merge tool. -win and  -log  are
              mutually exclusive.

Examples

              % tkcvs -win module -root /jaz/repository
       Browse the modules located in CVSROOT /jaz/repository
              % tkcvs -log tstheap.c
       View the log of the file tstheap.c

Working Directory Browser

       The  working  directory  browser  shows the files in your local working
       copy, or "sandbox."  It shows the status of the files at a  glance  and
       provides  tools  to  help  with  most  of  the common CVS, SVN, and RCS
       operations you might do.

       At the top of the browser you will find:

       *  The name of the current directory. You  can  change  directories  by
       typing  in  this  field.  Recently visited directories are saved in the
       picklist.

       *  The relative path of the current directory in the repository. If  it
       is  not contained in the repository you may import it using the menu or
       toolbar button.

       *  A  Directory  Tag  name,  if  the  directory  is  contained  in  the
       repository  and  it has been checked out against a particular branch or
       tag.  In Subversion, the branch or tag is inferred from the  URL  based
       on the conventional trunk-branches-tags repository organization.

       *   The  CVSROOT of the current directory if it’s under CVS control, or
       the URL of the Subversion repository if it’s under Subversion  control.
       If  neither  is  true,  it  may  default  to  the value of the $CVSROOT
       environment variable.

       The main part of the working directory browser is a list of  the  files
       in  the current directory with an icon next to each showing its status.
       You select a file by clicking on its name or icon once  with  the  left
       mouse  button. Holding the Control key while clicking will add the file
       to the group of those already selected. You  can  select  a  contiguous
       group  of  files  by holding the Shift key while clicking. You can also
       select a group of files by dragging the mouse with the middle or  right
       button  pressed  to  select  an  area. Selecting an item that’s already
       selected de-selects that item. To unselect all files,  click  the  left
       mouse button in an empty area of the file list.

       *   The  Date column (can be hidden) shows the modification time of the
       file is shown. The format of the date  column  may  be  specified  with
       cvscfg(dateformat).  The default format was chosen because it sorts the
       same way alphabetically as chronologically.

       If the directory belongs  to  a  revision  system,  other  columns  are
       present.

       *  The revision column shows which revision of the file is checked out,
       and whether it’s on the trunk or on a branch.

       *  The status column (can be hidden) shows the  revision  of  the  file
       spelled  out in text.  This information is mostly redundant to the icon
       in the file column.

       *  The Editor/Author/Locker column (can be hidden) varies according  to
       revision  system.  In Subversion, the author of the most recent checkin
       is shown.  In CVS, it shows a list of people editing the files if  your
       site  uses  "cvs watch" and/or "cvs edit". Otherwise, it will be empty.
       In RCS, it shows who, if anyone, has the file locked.

       The optional columns can be displayed or hidden using the Options menu.

       You can move into a directory by double-clicking on it.

       Double  clicking on a file will load the file into a suitable editor so
       you can change it. A different editor can be used  for  different  file
       types (see Configuration Files).

   File Status
       When  you  are  in a directory that is under CVS or Subversion control,
       the file status will be shown by an icon next to  each  file.  Checking
       the "Status Column" option causes the status to be displayed in text in
       its own column. Some possible statuses are:

       Up-to-date
              The file is up to date with respect to the repository.

       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.

       Locally Removed
              You have removed the file with remove,  and  not  yet  committed
              your changes.

       Needs Checkout
              Someone  else  has committed a newer revision to the repository.
              The name is slightly misleading; you will ordinarily use  update
              rather than checkout to get that newer revision.

       Needs Patch
              Like Needs Checkout, but the CVS server will send a patch rather
              than the entire file. Sending a patch or sending an entire  file
              accomplishes the same thing.

       Needs Merge
              Someone  else  has committed a newer revision to the repository,
              and you have also made modifications to the file.

       Unresolved Conflict
              This is like Locally Modified, except  that  a  previous  update
              command gave a conflict. You need to resolve the conflict before
              checking in.

       ?      The file is not contained in the repository. You may need to add
              the file to the repository by pressing the "Add" button.

       [directory:CVS]
              A directory which has been checked out from a CVS repository.

       [directory:SVN]
              The  file  is  a  directory  which  has  been checked out from a
              Subversion   repository.    In   Subversion,   directories   are
              themselves versioned objects.

       [directory:RCS]
              A  directory  which  contains an RCS sub-directory or some files
              with the ,v suffix, presumably containing some  files  that  are
              under RCS revision control.

       [directory]
              The file is a directory.

   File Filters
       You  can  specify  file matching patterns to instruct TkCVS which files
       you wish to see. You can also specify patterns telling it  which  files
       to remove when you press the "Clean" button or select the File->Cleanup
       menu item.

       "Hide" works exactly the way a  .cvsignore  file  works.  That  is,  it
       causes  non-CVS  files  with  the pattern to be ignored. It’s meant for
       hiding .o files and such. Any file under CVS  control  will  be  listed
       anyway.

       "Show" is the inverse. It hides non-CVS files except for those with the
       pattern.

   Buttons
       Module Browser:
              The big button at the upper  right  opens  the  module  browser.
              Opens  a  module browser window which will enable you to explore
              items in the repository even if they’re  not  checked  out.   In
              CVS,  this requires that there be entries in the CVSROOT/modules
              file.  Browsing can be improved by using TkCVS-specific comments
              in CVSROOT/modules.

       Go Up: The  button  to  the  left  of  the entry that shows the current
              directory. Press it and you go up one level.

       There are a number of buttons at the bottom of the window. Pressing  on
       one of these causes the following actions:

       Delete:
              Press  this  button to delete the selected 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.

       Edit:  Press  this  button  to  load  the  selected  files  in  to   an
              appropriate editor.

       View:  Press  this  button  to  view  the  selected  files in a Tk text
              window. This can be  a  lot  faster  then  Edit,  in  case  your
              preferred editor is xemacs or something of that magnitude.

       Refresh:
              Press  this button to re-read the current directory, in case the
              status of some files may have changed.

       Status Check:
              Shows, in a searchable text window, the status of all the files.
              By  default,  it is recursive and lists unknown (?) files. These
              can be changed in the Options menu.

       Directory Branch Browse:
              For merging the entire directory. In Subversion,  it  opens  the
              Branch  Browser  for  "."  In CVS, it chooses a "representative"
              file in the current directory and opens  a  graphical  tool  for
              directory merges.

       Log (Branch) Browse:
              This button will bring up the log browser window for each of the
              selected files in the window. See the Log Browser section.

       Annotate:
              This displays a window in which the selected file is shown  with
              the  lines  highlighted  according to when and by whom they were
              last revised.  In Subversion, it’s also called "blame."

       Diff:  This compares the selected files with the  equivalent  files  in
              the   repository.  A  separate  program  called  "TkDiff"  (also
              supplied with TkCVS) is used to do this. For more information on
              TkDiff, see TkDiff’s help menu.

       Merge Conflict:
              If  a file’s status says "Needs Merge", "Conflict", or is marked
              with a "C" in CVS Check, there was a difference which CVS  needs
              help to reconcile. This button invokes TkDiff with the -conflict
              option,  opening  a  merge  window  to  help   you   merge   the
              differences.

       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.
              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.  It is usually better to use symbolic  tags
              for  that  purpose.  If you use rcsinfo to supply a template for
              the  comment,  you   must   use   an   external   editor.    Set
              cvscfg(use_cvseditor)  to  do  this.  For checking in to RCS, an
              externel editor is always used.

       Update:
              This updates your sandbox directory with any  changes  committed
              to the repository by other developers.

       Update with Options:
              Allows  you  to update from a different branch, with a tag, with
              empty directories, and so on.

       Add Files:
              Press this button  when  you  want  to  add  new  files  to  the
              repository.  You  must  create  the file before adding it to the
              repository. To add some files, select them  and  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. It is
              not recursive. Use the menu CVS -> Add Recursively for that.

       Remove Files:
              This  button will remove files. To remove files, select them and
              press the Remove button.  The  files  will  disappear  from  the
              directory, and will be removed from the repository next time you
              press the Check In button. It is not recursive. Use the menu CVS
              -> Remove Recursively for that.

       Tag:   This  button will tag the selected files. In CVS, the -F (force)
              option will move the tag if it already exists on the file.

       Branch Tag:
              This button will tag the selected files, creating a  branch.  In
              CVS,  the  -F  (force)  option  will  move the tag if it already
              exists on the file.

       Lock (CVS and RCS):
              Lock an RCS file for editing.  If cvscfg(cvslock) is set, lock a
              CVS  file.  Use of locking is philosophically discouraged in CVS
              since  it’s  against  the  "concurrent"   part   of   Concurrent
              Versioning  System,  but  locking policy is nevertheless used at
              some sites.  One size doesn’t fit all.

       Unlock (CVS and RCS):
              Unlock an RCS file.  If cvscfg(cvslock) is  set,  unlock  a  CVS
              file.

       Set Edit Flag (CVS):
              This  button  sets the edit flag on the selected files, enabling
              other developers to see that you  are  currently  editing  those
              files (See "cvs edit" in the CVS documentation).

       Reset Edit Flag (CVS):
              This button resets the edit flag on the selected files, enabling
              other developers to see that you are  no  longer  editing  those
              files  (See "cvs edit" in the CVS documentation). As the current
              version of cvs waits on a prompt for  "cvs  unedit"  if  changes
              have  been  made  to the file in question (to ask if you want to
              revert the changes to the current revision), the current  action
              of tkcvs is to abort the unedit (by piping in nothing to stdin).
              Therefore, to  lose  the  changes  and  revert  to  the  current
              revision,  it  is  necessary to delete the file and do an update
              (this will also clear the edit flag). To keep the changes,  make
              a  copy  of the file, delete the original, update, and then move
              the saved copy back to the original filename.

       Close: Press this button to close the Working Directory Browser. If  no
              other windows are open, TkCVS exits.

Log (Branch) 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 three ways, either by invoking
       it directly with "tkcvs [-log] <filename>", by selecting a file  within
       the  main  window  of  TkCVS  and pressing the Log Browse button, or by
       selecting a file in a list invoked from the module browser and pressing
       the Log Browse button.

       If  the  Log  Browser  is examining a checked-out file, the buttons for
       performing merge operations are enabled.

   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  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, author of the version, and other
       information determined by the menu View -> Revision Layout.

       Constructing the branch diagram from Subversion is inefficient, so  the
       Log Browser counts the tags when doing a Subversion diagram and pops up
       a dialog giving you a chance to skip the tag step if there are too many
       tags (where "many" arbitrarily equals 10.)

   Version Numbers
       Once  a file is loaded into the log browser, one or two version numbers
       may be selected. The primary  version  (Selection  A)  is  selected  by
       clicking  the  left  mouse  button  on  a  version  box in the main log
       display.

       The secondary version (Selection B) is selected by clicking  the  right
       mouse button on a version box in the main log display.

       Operations  such  as  "View" and "Annotate" operate only on the primary
       version selected.

       Operations such as "Diff" and "Merge Changes to  Current"  require  two
       versions to be selected.

   Searching the Diagram
       You can search the canvas for tags, revisions, authors, and dates.

       The following special characters are used in the search pattern:

         *      Matches any sequence of characters in string, including a null
       string.

         ?      Matches any single character in string.

         [chars] Matches any character  in  the  set  given  by  chars.  If  a
       sequence of the form x-y appears in chars, then any character between x
       and y, inclusive, will match.

         \x      Matches the single  character  x.  This  provides  a  way  of
       avoiding  the special interpretation of the characters *?[] in pattern.

       If you only enter "FOO" (without the

   Log Browser Buttons
       The log browser contains the following buttons:

       Refresh:
              Re-reads the revision history of the file.

       View:  Pressing this button displays a Tk text  window  containing  the
              version of the file at Selection A.

       Annotate:
              This displays a window in which the file is shown with its lines
              highlighted according  to  when  and  by  whom  they  were  last
              revised.  In Subversion, it’s also called "blame."

       Diff:  Pressing  this  button  runs the "tkdiff" program to display the
              differences between version A and version B.

       Merge: To use this button, select a branch version of the  file,  other
              than  the  branch  you  are currently on, as the primary version
              (Selection A). The changes made along  the  branch  up  to  that
              version  will  be merged into the current version, and stored in
              the  current  directory.  Optionally,  select  another   version
              (Selection  B)  and  the  changes will be from that point rather
              than from the base of the branch.  The version of  the  file  in
              the  current directory will be merged, but no commit will occur.
              Then you inspect the merged files, correct any  conflicts  which
              may occur, and commit when you are satisfied.  Optionally, TkCVS
              will tag the version that the merge is from.  It suggests a  tag
              of  the  form  "mergefrom_<rev>_date."   If  you  use this auto-
              tagging function, another dialog containing a suggested tag  for
              the  merged-to version will appear.  It’s suggested to leave the
              dialog up  until  you  are  finished,  then  copy-and-paste  the
              suggested  tag  into  the  "Tag"  dialog.   It  is always a good
              practice to tag when doing merges, and if you use  tags  of  the
              suggested  form,  the  Branch  Browser  can diagram them. (Auto-
              tagging is not implemented in Subversion  because,  despite  the
              fact  that  tags are "cheap," it’s somewhat impractical to auto-
              tag single files.  You can do the tagging manually, however.)

       View Tags:
              This button lists  all  the  tags  applied  to  the  file  in  a
              searchable text window.

       Close: This  button  closes  the  Log  Browser. If no other windows are
              open, TkCVS exits.

   The View Options Menu
       The View Menu allows you to control what you see in the branch diagram.
       You  can  choose  how much information to show in the boxes, whether to
       show empty revisions, and whether to show tags.  You can  even  control
       the  size  of  the boxes.  If you are using Subversion, you may wish to
       turn the display of tags off.  If they aren’t asked for they  won’t  be
       read from the repository, which can save a lot of time.

Merge Tool for CVS

       The Merge Tool chooses a "representative" file in the current directory
       and diagrams the branch tags. It tries to pick the "bushiest" file,  or
       failing  that,  the most-revised file. If you disagree with its choice,
       you can type the name of another file in the top entry and press Return
       to diagram that file instead.

       The  main  purpose  of this tool is to do merges (cvs update -j rev [-j
       rev]) on the whole directory. For merging  one  file  at  a  time,  you
       should  use  the  Log Browser. You can only merge to the line (trunk or
       branch) that you are currently on. Select a branch  to  merge  from  by
       clicking  on  it.  Then  press  either  the  "Merge" or "Merge Changes"
       button. The version of the file in the current directory will be  over-
       written,  but  it  will not be committed to the repository. You do that
       after you’ve reconciled conflicts and decided if it’s what  you  really
       want.

       Merge Branch to Current:
              The  changes  made  on  the  branch  since its beginning will be
              merged into the current version.

       Merge Changes to Current:
              Instead of merging from the base  of  the  branch,  this  button
              merges  the changes that were made since a particular version on
              the branch. It pops up  a  dialog  in  which  you  fill  in  the
              version.  It should usually be the version that was last merged.

Module Browser

       Operations that are  performed  on  the  repository  instead  of  in  a
       checked-out  working  directory  are done with the Module Browser.  The
       most common of these operations is checking out or exporting  from  the
       repository.   The  Module  Browser can be started from the command line
       (tkcvs -win module) or started from the main window by pressing the big
       button.

       Subversion  repositories  can  be browsed like a file tree, and that is
       what you will see in  the  Module  Browser.   CVS  repositories  aren’t
       directly  browsable,  but  if  the  CVSROOT/modules  file is maintained
       appropriately, TkCVS can display the modules and infer tree  structures
       if they are present. See the "CVS Modules File" section.

       Using  the module browser window, you can select a module to check out.
       When you check out a module, a new directory is created in the  current
       working directory with the same name as the module.

   Tagging and Branching (cvs rtag)
       You  can tag particular versions of a module or file in the repository,
       with plain or branch tags, without having the module checked out.

   Exporting
       Once a software release has been tagged, you can use a special type  of
       checkout  called  an export. This allows you to cleanly check out files
       from the repository,  without all of the administrivia that  CVS  needs
       to  have  while  working  on  the files. It 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.  In CVS, new modules can be assigned places within the
       repository, as well as descriptive names (so  that  other  people  know
       what they are for).

       When  the Module Browser displays a CVS repository, the first column is
       a tree showing the module codes and directory names of all of the items
       in  the  repository.  The  icon  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). It is possible for an
       item to be both a module and a directory. If it has a red ball  on  it,
       you can check it out. If it shows a plain folder icon, you have to open
       the folder to get to the items that you can check out.

       To select a module, click on it with the left mouse button.  The  right
       mouse button will perform a secondary selection, which is used only for
       Subversion diff and patch. To clear the selection, click  on  the  item
       again or click in an empty area of the module column. There can only be
       one primary and one secondary selection.

   Repository Browser Buttons
       The module browser contains the following buttons:

       Who:   Shows which modules are checked out by whom.

       Import:
              This item will import the contents of the current directory (the
              one  shown in the Working Directory Display) into the repository
              as  a  module.  See  the  section  titled  Importing  for   more
              information.

       File Browse:
              Displays  a  list  of the selected module’s files. From the file
              list, you can view the file, browse its revision history, or see
              a list of its tags.

       Check Out:
              Checks  out the current version of a module. A dialog allows you
              to specify a tag, change the destination, and so on.

       Export:
              Exports the current version of a module. A dialog allows you  to
              specify  a  tag,  change  the  destination, and so on. Export is
              similar to check-out, except exported directories do not contain
              the CVS or administrative directories, and are therefore cleaner
              (but  cannot  be  used  for  checking  files  back  in  to   the
              repository). You must supply a tag name when you are exporting a
              module to make sure you can reproduce the exported  files  at  a
              later date.

       Tag:   This button tags an entire module.

       Branch Tag:
              This creates a branch of a module by giving it a branch tag.

       Patch Summary:
              This  item  displays  a short summary of the differences between
              two versions of a module.

       Create Patch File:
              This item creates a Larry  Wall  format  patch(1)  file  of  the
              module selected.

       Close: This  button  closes the Repository Browser. If no other windows
              are open, TkCVS exits.

Importing New Modules

       Before importing a new module, first check to make sure that  you  have
       write  permission  to the repository. Also you’ll have to make sure the
       module name is not already in use.

       To import a module you first need  a  directory  where  the  module  is
       located.  Make  sure that there is nothing in this directory except the
       files that you want to import.

       Press the big "Repository Browser" button in the top part of the  tkcvs
       UI, or use CVS -> Import WD into Repository from the menu bar.

       In  the  module browser, press the Import button on the bottom, the one
       that shows a folder and an up arrow.

       In the dialog that pops up, fill in a descriptive title for the module.
       This will be what you see in the right side of the module browser.

       OK  the dialog.  Several things happen now.  The directory is imported,
       the CVSROOT/module file is updated, your original directory is saved as
       directory.orig, and the newly created module is checked out.

       When  it  finishes,  you  should  find  the  original Working Directory
       Browser showing the files in the newly created, checked out module.

       Here is a more detailed description of the fields in the Import Dialog.

       Module Name:
              A  name for the module.  This name must not already exist in the
              repository.  Your  organization  could  settle   on   a   single
              unambiguous code for modules. One possibility is something like:

                  [project code]-[subsystem code]-[module code]

       Module Path:
              The location in the repository tree where your new  module  will
              go.

       Descriptive Title:
              A  one-line  descriptive  title  for  your module.  This will be
              displayed in the right-hand column of 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.

       Importing   a   directory   into  Subversion  is  similar  but  not  so
       complicated.  You use the SVN -> Import CWD into Repository menu.   You
       need  supply  only  the  path  in  the  repository  where  you want the
       directory to go.  The repository must be prepared  and  the  path  must
       exist, however.

Importing to an Existing Module (CVS)

       Before  importing  to an existing module, first check to make sure that
       you have write permission to the repository.

       To import to an existing module you first need a  directory  where  the
       code  is  located.  Make  sure  that there is nothing in this directory
       (including no CVS directory) except the files that you want to  import.

       Open  up  the  Repository Browser by selecting File/Browse Modules from
       the menu bar.

       In the Repository Browser, select File/Import  To  An  Existing  Module
       from the menu bar.

       In the dialog that pops up, press the Browse button and select the name
       of an existing module. Press the OK to close this dialog box. Enter the
       version number of the code to be imported.

       OK  the dialog.  Several things happen now.  The directory is imported,
       your original directory is  saved  as  directory.orig,  and  the  newly
       created module is checked out.

       When  it finishes, you will find the original Working Directory Browser
       showing the original code.  If  you  press  the  "Re-read  the  current
       directory" button you will see the results of the checked out code.

       Here is a more detailed description of the fields in the Import Dialog.

       Module Name:
              A name for the existing module. Filled in by the use of the  the
              Browse button

       Module Path:
              The  location  in  the repository tree where the existing module
              is. Filled in by the use of the Browse button.

       Version Number:
              The current version number of the module to  be  imported.  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.

Vendor Merge (CVS)

       Software  development  is sometimes based on source distribution from a
       vendor or third-party distributor. After building a  local  version  of
       this distribution, merging or tracking the vendor’s future release into
       the local version of the distribution can be done with the vendor merge
       command.

       The  vendor  merge  command  assumes that a separate module has already
       been defined for the vendor or third-party distribution with the use of
       the  "Import  To  A  New  Module"  and  "Import  To An Existing Module"
       commands. It also assumes that  a  separate  module  has  already  been
       defined  for  the local code for which the vendor merge operation is to
       be applied to.

       Start from an empty directory and invoke tkcvs. Open up the  Repository
       Browser by selecting File/Browse Modules from the menu bar.

       Checkout  the  module  of the local code to be merged with changes from
       the vendor module. (Use the red icon with the down arrow)

       In the Repository Browser, after verifying that the  Module  entry  box
       still  has  the  name  the module of the local code to which the vendor
       code is to be merged into, select File/Vendor Merge from the menu  bar.

       In  the  Module  Level  Merge With Vendor Code window, press the Browse
       button to select the module to be used as the vendor module.

       OK the dialog. All revisions from the vendor module will  be  shown  in
       the  two  scroll lists. Fill in the From and To entry boxes by clicking
       in the appropriate scroll lists.  Ok the dialog. Several things happens
       now.  Several  screens will appear showing the output from cvs commands
       for (1)checking  out  temp  files,  (2)cvs  merge,  and  (3)cvs  rdiff.
       Information  in  these  screens  will  tell you what routines will have
       merge conflicts and what files are new or deleted. After  perusing  the
       files,  close each screen. .TP (In the preceeding dialog box, there was
       an option to save outputs from the merge and rdiff operations to  files
       CVSmerge.out and CVSrdiff.out.)

       The  checked  out  local  code  will  now  contain changes from a merge
       between two revisions of the vendor modules.  This  code  will  not  be
       checked  into  the  repository. You can do that after you’ve reconciled
       conflicts and decide if that is what you really want.

       A detailed example on how to use the vendor merge operation is provided
       in the PDF file vendor5readme.pdf.

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.  You  can  put  a  file  called site_def in that
       directory, too. That’s a  good  place  for  site-specific  things  like
       tagcolours.  Unlike  tkcvs_def.tcl, it will not be overwritten when you
       install a newer version of TkCVS.

       Values in the site configuration files can be over-ridden at  the  user
       level  by  placing  a  .tkcvs  file in your home directory. Commands in
       either of these files should use Tcl syntax. In other words, to  set  a
       variable  name,  you  should  have the following command in your .tkcvs
       file:

                  set variablename value

       for example:

                  set cvscfg(editor) "gvim"

       The following variables are supported by TkCVS:

   Startup
       cvscfg(startwindow)
              Which window you want to see on startup. (workdir or module)

   CVS
       cvscfg(cvsroot)
              If set, it overrides the CVSROOT environment variable.

   Subversion
       If your SVN repository has a structure similar to trunk, branches,  and
       tags  but  with different names, you can tell TkCVS about it by setting
       variables in tkcvs_def.tcl:
           set cvscfg(svn_trunkdir) "elephants"
           set cvscfg(svn_branchdir) "dogs"
           set cvscfg(svn_tagdir) "ducklings" The branch  browser  depends  on
       the  convention of having a trunk, branches, and tags structure to draw
       the diagram.  These variables may give you a little more flexibility.

   GUI
       Most colors and fonts can be customized by using the options  database.
       For example, you can add lines like these to your .tkcvs file:

                 option add *Canvas.background #c3c3c3
                 option add *Menu.background #c3c3c3
                 option add *selectColor #ffec8b
                 option add *Text.background gray92
                 option add *Entry.background gray92
                 option add *Listbox.background gray92
                 option add *ToolTip.background LightGoldenrod1
                 option add *ToolTip.foreground black

       cvscfg(picklist_items)
              Maximum  number  of visited directories and repositories to save
              in the picklist history

   Log browser
       cvscfg(colourA) cvscfg(colourB)
              Hilight colours for revision-log boxes

       cvscfg(tagdepth)
              Number of tags  you  want  to  see  for  each  revision  on  the
              branching  diagram  before it says "more..." and offers a pop-up
              to show the rest

       cvscfg(toomany_tags)
              Number of tags in a Subversion repository that’s "too many", ie.
              will  take longer to proecess for the branch diagram than you’re
              willing to wait.  (Building a branch diagram for  Subversion  is
              very  inefficient.)  If  there  are  more  than  that number and
              cvscfg(confirm_prompt) is true,  a  dialog  will  appear  asking
              whether to process the tags or to draw the diagram without them.

       cvscfg(tagcolour,tagstring)
              Colors for marking tags. For example:
                  set cvscfg(tagcolour,tkcvs_r6) Purple

   Module browser
       cvscfg(aliasfolder)
              In the CVS module browser, if true this  will  cause  the  alias
              modules  to be grouped in one folder. Cleans up clutter if there
              are a lot of aliases.

   User preferences
       cvscfg(allfiles)
              Set this to false to see normal  files  only  in  the  directory
              browser. Set it to true to see all files including hidden files.

       cvscfg(auto_status)
              Set the default for automatic status-refresh of a CVS controlled
              directory.  Automatic  updates  are  done  when  a  directory is
              entered and after some operations.

       cvscfg(auto_tag)
              Whether to tag the merged-from  revision  when  using  TkCVS  to
              merge  different  revisions of files by default.  A dialog still
              lets you change your mind, regardless of the default.

       cvscfg(confirm_prompt)
              Ask for confirmation  before  performing  an  operation(true  or
              false)

       cvscfg(dateformat)
              Format  for  the  date  string  shown  in the "Date" column, for
              example "%Y/%m/%d %H:%M"

       cvscfg(cvslock)
              Set to true to turn on the ability to use cvs-admin locking from
              the GUI.

       cvscfg(econtrol)
              Set  this  to  true  to  turn on the ability to use CVS Edit and
              Unedit, if your site is configured to allow the feature.

       cvscfg(editor)
              Preferred default editor

       cvscfg(editors)
              String pairs giving the editor-command and string-match-pattern,
              for deciding which editor to use

       cvscfg(editorargs)
              Command-line arguments to send to the default editing program.

       cvscfg(ldetail)
              Detail level for status reports (latest, summary, verbose)

       cvscfg(mergetoformat)

       cvscfg(mergefromformat)
              Format for mergeto- and mergefrom- tags.  The _BRANCH_ part must
              be left as-is, but you  can  change  the  prefix  and  the  date
              format,  for  example  "mergeto_BRANCH_%d%b%y".  The date format
              must be the same for both.  CVS rule: a tag must not contain the
              characters ‘$,.:;@’

       cvscfg(rdetail)
              Detail  for  repository  and  workdir  reports  (terse, summary,
              verbose)

       cvscfg(recurse)
              Whether reports are recursive (true or false)

       cvscfg(savelines)
              How many lines to keep in the trace window

       cvscfg(status_filter)
              Filter out unknown files (status "?") from  CVS  Check  and  CVS
              Update reports.

       cvscfg(use_cvseditor)
              Let  CVS  invoke  an  editor for commit log messages rather than
              having tkcvs use its own input box.  By doing this, your  site’s
              commit template (rcsinfo) can be used.

   File filters
       cvscfg(file_filter)
              Pattern  for  which files to list. Empty string is equivalent to
              the entire directory (minus hidden files)

       cvscfg(ignore_file_filter)
              Pattern used in the workdir filter for files to be ignored

       cvscfg(clean_these)
              Pattern to be used for cleaning a directory  (removing  unwanted
              files)

   System
       cvscfg(print_cmd)
              System command used for printing. lpr, enscript -Ghr, etc)

       cvscfg(shell)
              What you want to happen when you ask for a shell

       cvscfg(terminal)
              Command prefix to use to run something in a terminal window

   Portability
       cvscfg(aster)
              File mask for all files (* for Unix, *.* for windows)

       cvscfg(null)
              The null device. /dev/null for Unix, nul for windows

       cvscfg(tkdiff)
              How to start tkdiff. Example sh /usr/local/bin/tkdiff

       cvscfg(tmpdir)
              Directory  in  which  to do behind-the-scenes checkouts. Usually
              /tmp or /var/tmp)

   Debugging
       cvscfg(log_classes)
              For debugging:  C=CVS  commands,  E=CVS  stderr  output,  F=File
              creation/deletion, T=Function entry/exit tracing, D=Debugging

       cvscfg(logging)
              Logging (debugging) on or off

Environment Variables

       You  should  have  the  CVSROOT  environment  variable  pointing to the
       location of your CVS repository before you run  TkCVS.  It  will  still
       allow  you to work with different repositories within the same session.

       If you wish TkCVS to point to a Subversion repository by  default,  you
       can  set  the  environment  variable  SVNROOT.   This has no meaning to
       Subversion itself, but it will clue TkCVS if it’s  started  in  an  un-
       versioned directory.

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 usermenu(view) "cat"

       Causes a new menu option titled "view" 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  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

       If you haven’t put anything in your CVSROOT/modules file, please do so.
       See the "Administrative Files" section of the CVS manual. Then, you can
       add  comments  which  TkCVS can use to title the modules and to display
       them in a tree structure.

       The simplest use of TkCVS’s "#D" directive is to display  a  meaningful
       title for the module:

              #D      softproj        Software Development Projects
              softproj softproj

       A  fancier  use is to organize the modules into a tree which will mimic
       their directory nesting in the  repository  when  they  appear  in  the
       module  browser.  For  example,  suppose  we  have  a  directory called
       "chocolate" which is organized like this:

              chocolate/
                  truffle/
                      cocoa3/
                          biter/
                          sniffer/
                          snuffler/

       To display its hierarchy, as well as make the deepest directories  more
       accessible  by  giving  them  module  names,  we  could put this in the
       modules file:

              #D   chocolate Top Chocolate
              #D   chocolate/truffle   Cocoa Level 2
              #D   chocolate/truffle/cocoa3 Cocoa Level 3
              #D   sniffer   Chocolate Sniffer
              sniffer   chocolate/truffle/cocoa3/sniffer
              #D   snuff     Chocolate Snuffler
              snuff     chocolate/truffle/cocoa3/snuffler
              #D   biter     Chocolate Biter
              biter     chocolate/truffle/cocoa3/biter

       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).

       These  extension lines commence with a "#" character, so CVS interprets
       them as comments. They can be safely left in the file whether  you  are
       using TkCVS or not.

       "#M" is equivalent to "#D". The two had different functions in previous
       versions of TkCVS, but now both are parsed the same way.

SEE ALSO

       cvs(1), svn(1)

AUTHOR

       Del  (del@babel.babel.com.au):  Maintenance  and  Subversion   support:
       Dorothy Robinson