1TkCVS(1)                    General Commands Manual                   TkCVS(1)
2
3
4

NAME

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

SYNOPSIS

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

DESCRIPTION

13       TkCVS is a Tcl/Tk-based graphical interface to the CVS  and  Subversion
14       configuration  management  systems. It displays the status of the files
15       in the current working directory, and provides  buttons  and  menus  to
16       execute  configuration-management  commands on the selected files. Lim‐
17       ited RCS functionality is also  present.   TkDiff  is  bundled  in  for
18       browsing and merging your changes.
19
20       TkCVS also aids in browsing the repository. For Subversion, the reposi‐
21       tory tree is browsed like an ordinary file tree.   For  CVS,  the  CVS‐
22       ROOT/modules  file is read.  TkCVS extends CVS with a method to produce
23       a browsable, "user friendly" listing of modules. This requires  special
24       comments  in  the CVSROOT/modules file. See "CVS Modules File" for more
25       guidance.
26

OPTIONS

28       TkCVS accepts the following options.
29
30       -dir directory
31              Start TkCVS in the specified directory.
32
33       -help  Print a usage message.
34
35       -log file
36              Invoke a log browser for the specified file. -log and  -win  are
37              mutually exclusive.
38
39       -root cvsroot
40              Set $CVSROOT to the specified repository.
41
42       -win workdir|module|merge
43              Start  by  displaying  the  directory browser (the default), the
44              module browser, or the directory-merge tool. -win and  -log  are
45              mutually exclusive.
46

Examples

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

Working Directory Browser

54       The  working  directory  browser  shows the files in your local working
55       copy, or "sandbox."  It shows the status of the files at a  glance  and
56       provides tools to help with most of the common CVS, SVN, and RCS opera‐
57       tions you might do.
58
59       At the top of the browser you will find:
60
61       *  The name of the current directory. You  can  change  directories  by
62       typing  in  this  field.  Recently visited directories are saved in the
63       picklist.
64
65       *  The relative path of the current directory in the repository. If  it
66       is  not contained in the repository you may import it using the menu or
67       toolbar button.
68
69       *  A Directory Tag name, if the directory is contained in  the  reposi‐
70       tory  and  it  has been checked out against a particular branch or tag.
71       In Subversion, the branch or tag is inferred from the URL based on  the
72       conventional trunk-branches-tags repository organization.
73
74       *   The  CVSROOT of the current directory if it's under CVS control, or
75       the URL of the Subversion repository if it's under Subversion  control.
76       If  neither  is true, it may default to the value of the $CVSROOT envi‐
77       ronment variable.
78
79       The main part of the working directory browser is a list of  the  files
80       in  the current directory with an icon next to each showing its status.
81       You select a file by clicking on its name or icon once  with  the  left
82       mouse  button. Holding the Control key while clicking will add the file
83       to the group of those already selected. You  can  select  a  contiguous
84       group  of  files  by holding the Shift key while clicking. You can also
85       select a group of files by dragging the mouse with the middle or  right
86       button  pressed  to  select  an  area. Selecting an item that's already
87       selected de-selects that item. To unselect all files,  click  the  left
88       mouse button in an empty area of the file list.
89
90       *   The  Date column (can be hidden) shows the modification time of the
91       file is shown. The format of the date  column  may  be  specified  with
92       cvscfg(dateformat).  The default format was chosen because it sorts the
93       same way alphabetically as chronologically.
94
95       If the directory belongs  to  a  revision  system,  other  columns  are
96       present.
97
98       *  The revision column shows which revision of the file is checked out,
99       and whether it's on the trunk or on a branch.
100
101       *  The status column (can be hidden) shows the  revision  of  the  file
102       spelled  out in text.  This information is mostly redundant to the icon
103       in the file column.
104
105       *  The Editor/Author/Locker column (can be hidden) varies according  to
106       revision  system.  In Subversion, the author of the most recent checkin
107       is shown.  In CVS, it shows a list of people editing the files if  your
108       site  uses  "cvs watch" and/or "cvs edit". Otherwise, it will be empty.
109       In RCS, it shows who, if anyone, has the file locked.
110
111       The optional columns can be displayed or hidden using the Options menu.
112
113       You can move into a directory by double-clicking on it.
114
115       Double clicking on a file will load the file into a suitable editor  so
116       you  can  change  it. A different editor can be used for different file
117       types (see Configuration Files).
118
119   File Status
120       When you are in a directory that is under CVS  or  Subversion  control,
121       the  file  status  will be shown by an icon next to each file. Checking
122       the "Status Column" option causes the status to be displayed in text in
123       its own column. Some possible statuses are:
124
125       Up-to-date
126              The file is up to date with respect to the repository.
127
128       Locally Modified
129              The  file has been modified in the current directory since being
130              checked out of the repository.
131
132       Locally Added
133              The file has been added to the repository. This file will become
134              permanent in the repository once a commit is made.
135
136       Locally Removed
137              You  have  removed  the  file with remove, and not yet committed
138              your changes.
139
140       Needs Checkout
141              Someone else has committed a newer revision to  the  repository.
142              The  name is slightly misleading; you will ordinarily use update
143              rather than checkout to get that newer revision.
144
145       Needs Patch
146              Like Needs Checkout, but the CVS server will send a patch rather
147              than  the entire file. Sending a patch or sending an entire file
148              accomplishes the same thing.
149
150       Needs Merge
151              Someone else has committed a newer revision to  the  repository,
152              and you have also made modifications to the file.
153
154       Unresolved Conflict
155              This  is  like  Locally  Modified, except that a previous update
156              command gave a conflict. You need to resolve the conflict before
157              checking in.
158
159       ?      The file is not contained in the repository. You may need to add
160              the file to the repository by pressing the "Add" button.
161
162       [directory:CVS]
163              A directory which has been checked out from a CVS repository.
164
165       [directory:SVN]
166              The file is a directory which has been checked out from  a  Sub‐
167              version  repository.   In Subversion, directories are themselves
168              versioned objects.
169
170       [directory:RCS]
171              A directory which contains an RCS sub-directory  or  some  files
172              with  the  ,v  suffix, presumably containing some files that are
173              under RCS revision control.
174
175       [directory]
176              The file is a directory.
177
178   File Filters
179       You can specify file matching patterns to instruct  TkCVS  which  files
180       you  wish  to see. You can also specify patterns telling it which files
181       to remove when you press the "Clean" button or select the File->Cleanup
182       menu item.
183
184       "Hide"  works  exactly  the  way  a  .cvsignore file works. That is, it
185       causes non-CVS files with the pattern to be  ignored.  It's  meant  for
186       hiding  .o  files  and  such. Any file under CVS control will be listed
187       anyway.
188
189       "Show" is the inverse. It hides non-CVS files except for those with the
190       pattern.
191
192   Buttons
193       Module Browser:
194              The  big  button  at  the  upper right opens the module browser.
195              Opens a module browser window which will enable you  to  explore
196              items  in  the  repository  even if they're not checked out.  In
197              CVS, this requires that there be entries in the  CVSROOT/modules
198              file.  Browsing can be improved by using TkCVS-specific comments
199              in CVSROOT/modules.
200
201       Go Up: The button to the left of  the  entry  that  shows  the  current
202              directory. Press it and you go up one level.
203
204       There  are a number of buttons at the bottom of the window. Pressing on
205       one of these causes the following actions:
206
207       Delete:
208              Press this button to delete the selected files. The  files  will
209              not be removed from the repository. To remove the files from the
210              repository as well as delete them,  press  the  "Remove"  button
211              instead.
212
213       Edit:  Press  this button to load the selected files in to an appropri‐
214              ate editor.
215
216       View:  Press this button to view the selected files in a Tk  text  win‐
217              dow.  This can be a lot faster then Edit, in case your preferred
218              editor is xemacs or something of that magnitude.
219
220       Refresh:
221              Press this button to re-read the current directory, in case  the
222              status of some files may have changed.
223
224       Status Check:
225              Shows, in a searchable text window, the status of all the files.
226              By default, it is recursive and lists unknown (?)  files.  These
227              can be changed in the Options menu.
228
229       Directory Branch Browse:
230              For  merging  the  entire directory. In Subversion, it opens the
231              Branch Browser for "."  In CVS, it  chooses  a  "representative"
232              file  in  the  current  directory and opens a graphical tool for
233              directory merges.
234
235       Log (Branch) Browse:
236              This button will bring up the log browser window for each of the
237              selected files in the window. See the Log Browser section.
238
239       Annotate:
240              This  displays a window in which the selected file is shown with
241              the lines highlighted according to when and by  whom  they  were
242              last revised.  In Subversion, it's also called "blame."
243
244       Diff:  This  compares  the  selected files with the equivalent files in
245              the repository. A separate program called  "TkDiff"  (also  sup‐
246              plied  with  TkCVS)  is used to do this. For more information on
247              TkDiff, see TkDiff's help menu.
248
249       Merge Conflict:
250              If a file's status says "Needs Merge", "Conflict", or is  marked
251              with  a "C" in CVS Check, there was a difference which CVS needs
252              help to reconcile. This button invokes TkDiff with the -conflict
253              option,  opening  a  merge  window to help you merge the differ‐
254              ences.
255
256       Check In:
257              This  button  commits  your  changes  to  the  repository.  This
258              includes  adding  new files and removing deleted files. When you
259              press this button, a dialog will appear asking you for the  ver‐
260              sion  number of the files you want to commit, and a comment. You
261              need only enter a version number if you want to bring the  files
262              in the repository up to the next major version number. For exam‐
263              ple, if a file is version 1.10, and you do not enter  a  version
264              number,  it will be checked in as version 1.11. If you enter the
265              version number 3, then it will be  checked  in  as  version  3.0
266              instead.   It  is  usually  better to use symbolic tags for that
267              purpose.  If you use rcsinfo to supply a template for  the  com‐
268              ment,  you  must use an external editor.  Set cvscfg(use_cvsedi‐
269              tor) to do this. For checking in to RCS, an externel  editor  is
270              always used.
271
272       Update:
273              This  updates  your sandbox directory with any changes committed
274              to the repository by other developers.
275
276       Update with Options:
277              Allows you to update from a different branch, with a  tag,  with
278              empty directories, and so on.
279
280       Add Files:
281              Press  this button when you want to add new files to the reposi‐
282              tory. You must create the file before adding it to  the  reposi‐
283              tory.  To  add  some  files, select them and press the Add Files
284              button. The files that you have added to the repository will  be
285              committed  next  time  you  press the Check In button. It is not
286              recursive. Use the menu CVS -> Add Recursively for that.
287
288       Remove Files:
289              This button will remove files. To remove files, select them  and
290              press  the  Remove  button.  The  files  will disappear from the
291              directory, and will be removed from the repository next time you
292              press the Check In button. It is not recursive. Use the menu CVS
293              -> Remove Recursively for that.
294
295       Tag:   This button will tag the selected files. In CVS, the -F  (force)
296              option will move the tag if it already exists on the file.
297
298       Branch Tag:
299              This  button  will tag the selected files, creating a branch. In
300              CVS, the -F (force) option will  move  the  tag  if  it  already
301              exists on the file.
302
303       Lock (CVS and RCS):
304              Lock an RCS file for editing.  If cvscfg(cvslock) is set, lock a
305              CVS file.  Use of locking is philosophically discouraged in  CVS
306              since  it's against the "concurrent" part of Concurrent Version‐
307              ing System, but locking policy  is  nevertheless  used  at  some
308              sites.  One size doesn't fit all.
309
310       Unlock (CVS and RCS):
311              Unlock  an  RCS  file.   If cvscfg(cvslock) is set, unlock a CVS
312              file.
313
314       Set Edit Flag (CVS):
315              This button sets the edit flag on the selected  files,  enabling
316              other  developers  to  see  that you are currently editing those
317              files (See "cvs edit" in the CVS documentation).
318
319       Reset Edit Flag (CVS):
320              This button resets the edit flag on the selected files, enabling
321              other  developers  to  see  that you are no longer editing those
322              files (See "cvs edit" in the CVS documentation). As the  current
323              version  of  cvs  waits  on a prompt for "cvs unedit" if changes
324              have been made to the file in question (to ask if  you  want  to
325              revert  the changes to the current revision), the current action
326              of tkcvs is to abort the unedit (by piping in nothing to stdin).
327              Therefore,  to  lose the changes and revert to the current revi‐
328              sion, it is necessary to delete the file and do an update  (this
329              will also clear the edit flag). To keep the changes, make a copy
330              of the file, delete the original,  update,  and  then  move  the
331              saved copy back to the original filename.
332
333       Close: Press  this button to close the Working Directory Browser. If no
334              other windows are open, TkCVS exits.
335

Log (Branch) Browser

337       The TkCVS Log Browser window enables you to view a graphical display of
338       the  revision  log  of  a file, including all previous versions and any
339       branched versions.
340
341       You can get to the log browser window in three ways, either by invoking
342       it  directly with "tkcvs [-log] <filename>", by selecting a file within
343       the main window of TkCVS and pressing the  Log  Browse  button,  or  by
344       selecting a file in a list invoked from the module browser and pressing
345       the Log Browse button.
346
347       If the Log Browser is examining a checked-out  file,  the  buttons  for
348       performing merge operations are enabled.
349
350   Log Browser Window
351       The  log  browser  window has three components. These are the file name
352       and version information section at the top, the log display in the mid‐
353       dle, and a row of buttons along the bottom.
354
355   Log Display
356       The  main  log  display is fairly self explanatory. It shows a group of
357       boxes connected by lines indicating the main trunk of the file develop‐
358       ment  (on the left hand side) and any branches that the file has (which
359       spread out to the right of the main trunk).
360
361       Each box contains the version number, author of the version, and  other
362       information determined by the menu View -> Revision Layout.
363
364       Constructing  the branch diagram from Subversion is inefficient, so the
365       Log Browser counts the tags when doing a Subversion diagram and pops up
366       a dialog giving you a chance to skip the tag step if there are too many
367       tags (where "many" arbitrarily equals 10.)
368
369   Version Numbers
370       Once a file is loaded into the log browser, one or two version  numbers
371       may  be  selected.  The  primary  version  (Selection A) is selected by
372       clicking the left mouse button on a version box in the  main  log  dis‐
373       play.
374
375       The  secondary  version (Selection B) is selected by clicking the right
376       mouse button on a version box in the main log display.
377
378       Operations such as "View" and "Annotate" operate only  on  the  primary
379       version selected.
380
381       Operations  such  as  "Diff" and "Merge Changes to Current" require two
382       versions to be selected.
383
384   Log Browser Buttons
385       The log browser contains the following buttons:
386
387       Refresh:
388              Re-reads the revision history of the file.
389
390       View:  Pressing this button displays a Tk text  window  containing  the
391              version of the file at Selection A.
392
393       Annotate:
394              This displays a window in which the file is shown with its lines
395              highlighted according  to  when  and  by  whom  they  were  last
396              revised.  In Subversion, it's also called "blame."
397
398       Diff:  Pressing  this  button  runs the "tkdiff" program to display the
399              differences between version A and version B.
400
401       Merge: To use this button, select a branch version of the  file,  other
402              than  the  branch  you  are currently on, as the primary version
403              (Selection A). The changes made along the branch up to that ver‐
404              sion  will be merged into the current version, and stored in the
405              current directory. Optionally, select another version (Selection
406              B)  and the changes will be from that point rather than from the
407              base of the branch.  The version of  the  file  in  the  current
408              directory  will  be  merged, but no commit will occur.  Then you
409              inspect the merged files, correct any conflicts which may occur,
410              and  commit  when you are satisfied.  Optionally, TkCVS will tag
411              the version that the merge is from.  It suggests a  tag  of  the
412              form "mergefrom_<rev>_date."  If you use this auto-tagging func‐
413              tion, another dialog containing a suggested tag for the  merged-
414              to  version  will appear.  It's suggested to leave the dialog up
415              until you are finished, then copy-and-paste  the  suggested  tag
416              into the "Tag" dialog.  It is always a good practice to tag when
417              doing merges, and if you use tags of  the  suggested  form,  the
418              Branch  Browser  can  diagram  them. (Auto-tagging is not imple‐
419              mented in Subversion because, despite the  fact  that  tags  are
420              "cheap,"  it's  somewhat  impractical  to auto-tag single files.
421              You can do the tagging manually, however.)
422
423       View Tags:
424              This button lists all the tags applied to the file in a  search‐
425              able text window.
426
427       Close: This  button  closes  the  Log  Browser. If no other windows are
428              open, TkCVS exits.
429
430   The View Options Menu
431       The View Menu allows you to control what you see in the branch diagram.
432       You  can  choose  how much information to show in the boxes, whether to
433       show empty revisions, and whether to show tags.  You can  even  control
434       the  size  of  the boxes.  If you are using Subversion, you may wish to
435       turn the display of tags off.  If they aren't asked for they  won't  be
436       read from the repository, which can save a lot of time.
437

Merge Tool for CVS

439       The Merge Tool chooses a "representative" file in the current directory
440       and diagrams the branch tags. It tries to pick the "bushiest" file,  or
441       failing  that,  the most-revised file. If you disagree with its choice,
442       you can type the name of another file in the top entry and press Return
443       to diagram that file instead.
444
445       The  main  purpose  of this tool is to do merges (cvs update -j rev [-j
446       rev]) on the whole directory. For merging  one  file  at  a  time,  you
447       should  use  the  Log Browser. You can only merge to the line (trunk or
448       branch) that you are currently on. Select a branch  to  merge  from  by
449       clicking  on  it. Then press either the "Merge" or "Merge Changes" but‐
450       ton. The version of the file in the current  directory  will  be  over-
451       written,  but  it  will not be committed to the repository. You do that
452       after you've reconciled conflicts and decided if it's what  you  really
453       want.
454
455       Merge Branch to Current:
456              The  changes  made  on  the  branch  since its beginning will be
457              merged into the current version.
458
459       Merge Changes to Current:
460              Instead of merging from the base  of  the  branch,  this  button
461              merges  the changes that were made since a particular version on
462              the branch. It pops up a dialog in which you fill  in  the  ver‐
463              sion. It should usually be the version that was last merged.
464

Module Browser

466       Operations  that  are  performed  on  the  repository  instead  of in a
467       checked-out working directory are done with the  Module  Browser.   The
468       most  common  of these operations is checking out or exporting from the
469       repository.  The Module Browser can be started from  the  command  line
470       (tkcvs -win module) or started from the main window by pressing the big
471       button.
472
473       Subversion repositories can be browsed like a file tree,  and  that  is
474       what  you  will  see  in  the  Module Browser.  CVS repositories aren't
475       directly browsable, but  if  the  CVSROOT/modules  file  is  maintained
476       appropriately,  TkCVS can display the modules and infer tree structures
477       if they are present. See the "CVS Modules File" section.
478
479       Using the module browser window, you can select a module to check  out.
480       When  you check out a module, a new directory is created in the current
481       working directory with the same name as the module.
482
483   Tagging and Branching (cvs rtag)
484       You can tag particular versions of a module or file in the  repository,
485       with plain or branch tags, without having the module checked out.
486
487   Exporting
488       Once  a software release has been tagged, you can use a special type of
489       checkout called an export. This allows you to cleanly check  out  files
490       from  the  repository,  without all of the administrivia that CVS needs
491       to have while working on the files. It is  useful  for  delivery  of  a
492       software release to a customer.
493
494   Importing
495       TkCVS contains a special dialog to allow users to import new files into
496       the repository. In CVS, new modules can be assigned places  within  the
497       repository,  as  well  as  descriptive names (so that other people know
498       what they are for).
499
500       When the Module Browser displays a CVS repository, the first column  is
501       a tree showing the module codes and directory names of all of the items
502       in the repository. The icon shows  whether  the  item  is  a  directory
503       (which  may  contain  other directories or modules), or whether it is a
504       module (which may be checked out from TkCVS). It  is  possible  for  an
505       item  to  be both a module and a directory. If it has a red ball on it,
506       you can check it out. If it shows a plain folder icon, you have to open
507       the folder to get to the items that you can check out.
508
509       To  select  a module, click on it with the left mouse button. The right
510       mouse button will perform a secondary selection, which is used only for
511       Subversion  diff  and  patch. To clear the selection, click on the item
512       again or click in an empty area of the module column. There can only be
513       one primary and one secondary selection.
514
515   Repository Browser Buttons
516       The module browser contains the following buttons:
517
518       Who:   Shows which modules are checked out by whom.
519
520       Import:
521              This item will import the contents of the current directory (the
522              one shown in the Working Directory Display) into the  repository
523              as  a module. See the section titled Importing for more informa‐
524              tion.
525
526       File Browse:
527              Displays a list of the selected module's files.  From  the  file
528              list, you can view the file, browse its revision history, or see
529              a list of its tags.
530
531       Check Out:
532              Checks out the current version of a module. A dialog allows  you
533              to specify a tag, change the destination, and so on.
534
535       Export:
536              Exports  the current version of a module. A dialog allows you to
537              specify a tag, change the destination, and so on. Export is sim‐
538              ilar  to  check-out,  except exported directories do not contain
539              the CVS or administrative directories, and are therefore cleaner
540              (but  cannot  be  used for checking files back in to the reposi‐
541              tory). You must supply a tag name when you are exporting a  mod‐
542              ule to make sure you can reproduce the exported files at a later
543              date.
544
545       Tag:   This button tags an entire module.
546
547       Branch Tag:
548              This creates a branch of a module by giving it a branch tag.
549
550       Patch Summary:
551              This item displays a short summary of  the  differences  between
552              two versions of a module.
553
554       Create Patch File:
555              This  item creates a Larry Wall format patch(1) file of the mod‐
556              ule selected.
557
558       Close: This button closes the Repository Browser. If no  other  windows
559              are open, TkCVS exits.
560

Importing New Modules

562       Before  importing  a new module, first check to make sure that you have
563       write permission to the repository. Also you'll have to make  sure  the
564       module name is not already in use.
565
566       To  import  a  module  you  first  need a directory where the module is
567       located. Make sure that there is nothing in this directory  except  the
568       files that you want to import.
569
570       Press  the big "Repository Browser" button in the top part of the tkcvs
571       UI, or use CVS -> Import WD into Repository from the menu bar.
572
573       In the module browser, press the Import button on the bottom,  the  one
574       that shows a folder and an up arrow.
575
576       In the dialog that pops up, fill in a descriptive title for the module.
577       This will be what you see in the right side of the module browser.
578
579       OK the dialog.  Several things happen now.  The directory is  imported,
580       the CVSROOT/module file is updated, your original directory is saved as
581       directory.orig, and the newly created module is checked out.
582
583       When it finishes,  you  should  find  the  original  Working  Directory
584       Browser showing the files in the newly created, checked out module.
585
586       Here is a more detailed description of the fields in the Import Dialog.
587
588       Module Name:
589              A  name for the module.  This name must not already exist in the
590              repository. Your organization could settle on a single unambigu‐
591              ous code for modules. One possibility is something like:
592
593                  [project code]-[subsystem code]-[module code]
594
595       Module Path:
596              The  location  in the repository tree where your new module will
597              go.
598
599       Descriptive Title:
600              A one-line descriptive title for your module.  This will be dis‐
601              played in the right-hand column of the browser.
602
603       Version Number:
604              The  current version number of the module. This should be a num‐
605              ber of the form X.Y.Z where .Y and  .Z  are  optional.  You  can
606              leave this blank, in which case 1 will be used as the first ver‐
607              sion number.
608
609       Importing a directory into Subversion is similar  but  not  so  compli‐
610       cated.   You  use the SVN -> Import CWD into Repository menu.  You need
611       supply only the path in the repository where you want the directory  to
612       go.  The repository must be prepared and the path must exist, however.
613

Importing to an Existing Module (CVS)

615       Before  importing  to an existing module, first check to make sure that
616       you have write permission to the repository.
617
618       To import to an existing module you first need a  directory  where  the
619       code  is  located.  Make  sure  that there is nothing in this directory
620       (including no CVS directory) except the files that you want to import.
621
622       Open up the Repository Browser by selecting  File/Browse  Modules  from
623       the menu bar.
624
625       In  the  Repository  Browser,  select File/Import To An Existing Module
626       from the menu bar.
627
628       In the dialog that pops up, press the Browse button and select the name
629       of an existing module. Press the OK to close this dialog box. Enter the
630       version number of the code to be imported.
631
632       OK the dialog.  Several things happen now.  The directory is  imported,
633       your  original directory is saved as directory.orig, and the newly cre‐
634       ated module is checked out.
635
636       When it finishes, you will find the original Working Directory  Browser
637       showing the original code. If you press the "Re-read the current direc‐
638       tory" button you will see the results of the checked out code.
639
640       Here is a more detailed description of the fields in the Import Dialog.
641
642       Module Name:
643              A name for the existing module. Filled in by the use of the  the
644              Browse button
645
646       Module Path:
647              The  location  in  the repository tree where the existing module
648              is. Filled in by the use of the Browse button.
649
650       Version Number:
651              The current version number of the module to  be  imported.  This
652              should  be  a  number  of  the  form  X.Y.Z  where .Y and .Z are
653              optional. You can leave this blank, in which case 1 will be used
654              as the first version number.
655

Vendor Merge (CVS)

657       Software  development  is sometimes based on source distribution from a
658       vendor or third-party distributor. After building a  local  version  of
659       this distribution, merging or tracking the vendor's future release into
660       the local version of the distribution can be done with the vendor merge
661       command.
662
663       The  vendor  merge  command  assumes that a separate module has already
664       been defined for the vendor or third-party distribution with the use of
665       the  "Import  To  A New Module" and "Import To An Existing Module" com‐
666       mands. It also assumes that a separate module has already been  defined
667       for  the  local  code  for  which  the  vendor merge operation is to be
668       applied to.
669
670       Start from an empty directory and invoke tkcvs. Open up the  Repository
671       Browser by selecting File/Browse Modules from the menu bar.
672
673       Checkout  the  module  of the local code to be merged with changes from
674       the vendor module. (Use the red icon with the down arrow)
675
676       In the Repository Browser, after verifying that the  Module  entry  box
677       still  has  the  name  the module of the local code to which the vendor
678       code is to be merged into, select File/Vendor Merge from the menu bar.
679
680       In the Module Level Merge With Vendor Code  window,  press  the  Browse
681       button to select the module to be used as the vendor module.
682
683       OK  the  dialog.  All revisions from the vendor module will be shown in
684       the two scroll lists. Fill in the From and To entry boxes  by  clicking
685       in the appropriate scroll lists.  Ok the dialog. Several things happens
686       now. Several screens will appear showing the output from  cvs  commands
687       for  (1)checking out temp files, (2)cvs merge, and (3)cvs rdiff. Infor‐
688       mation in these screens will tell you what  routines  will  have  merge
689       conflicts  and what files are new or deleted. After perusing the files,
690       close each screen. .TP (In the preceeding  dialog  box,  there  was  an
691       option  to  save  outputs  from the merge and rdiff operations to files
692       CVSmerge.out and CVSrdiff.out.)
693
694       The checked out local code  will  now  contain  changes  from  a  merge
695       between  two  revisions  of  the  vendor modules. This code will not be
696       checked into the repository. You can do that  after  you've  reconciled
697       conflicts and decide if that is what you really want.
698
699       A detailed example on how to use the vendor merge operation is provided
700       in the PDF file vendor5readme.pdf.
701

Configuration Files

703       There are two configuration files for TkCVS. The first is stored in the
704       directory  in  which  the  *.tcl files for TkCVS are installed. This is
705       called tkcvs_def.tcl. You can put a file called site_def in that direc‐
706       tory,  too.  That's  a  good  place  for site-specific things like tag‐
707       colours. Unlike tkcvs_def.tcl, it will  not  be  overwritten  when  you
708       install a newer version of TkCVS.
709
710       Values  in  the site configuration files can be over-ridden at the user
711       level by placing a .tkcvs file in  your  home  directory.  Commands  in
712       either  of  these files should use Tcl syntax. In other words, to set a
713       variable name, you should have the following  command  in  your  .tkcvs
714       file:
715
716                  set variablename value
717
718       for example:
719
720                  set cvscfg(editor) "gvim"
721
722       The following variables are supported by TkCVS:
723
724   Startup
725       cvscfg(startwindow)
726              Which window you want to see on startup. (workdir or module)
727
728       cvscfg(cvsroot)
729              If set, it overrides the CVSROOT environment variable.
730
731   GUI
732       Most  colors and fonts can be customized by using the options database.
733       For example, you can add lines like these to your .tkcvs file:
734
735                 option add *Canvas.background #c3c3c3
736                 option add *Menu.background #c3c3c3
737                 option add *selectColor #ffec8b
738                 option add *Text.background gray92
739                 option add *Entry.background gray92
740                 option add *Listbox.background gray92
741                 option add *ToolTip.background LightGoldenrod1
742                 option add *ToolTip.foreground black
743
744       cvscfg(picklist_items)
745              Maximum number of visited directories and repositories  to  save
746              in the picklist history
747
748   Log browser
749       cvscfg(colourA) cvscfg(colourB)
750              Hilight colours for revision-log boxes
751
752       cvscfg(tagdepth)
753              Number  of tags you want to see for each revision on the branch‐
754              ing diagram before it says "more..." and offers a pop-up to show
755              the rest
756
757       cvscfg(toomany_tags)
758              Number of tags in a Subversion repository that's "too many", ie.
759              will take longer to proecess for the branch diagram than  you're
760              willing  to  wait.  (Building a branch diagram for Subversion is
761              very inefficient.) If  there  are  more  than  that  number  and
762              cvscfg(confirm_prompt)  is  true,  a  dialog  will appear asking
763              whether to process the tags or to draw the diagram without them.
764
765       cvscfg(tagcolour,tagstring)
766              Colors for marking tags. For example:
767                  set cvscfg(tagcolour,tkcvs_r6) Purple
768
769   Module browser
770       cvscfg(aliasfolder)
771              In the CVS module browser, if true this  will  cause  the  alias
772              modules  to be grouped in one folder. Cleans up clutter if there
773              are a lot of aliases.
774
775   User preferences
776       cvscfg(allfiles)
777              Set this to false to see normal  files  only  in  the  directory
778              browser. Set it to true to see all files including hidden files.
779
780       cvscfg(auto_status)
781              Set the default for automatic status-refresh of a CVS controlled
782              directory. Automatic  updates  are  done  when  a  directory  is
783              entered and after some operations.
784
785       cvscfg(auto_tag)
786              Whether  to  tag  the  merged-from  revision when using TkCVS to
787              merge different revisions of files by default.  A  dialog  still
788              lets you change your mind, regardless of the default.
789
790       cvscfg(confirm_prompt)
791              Ask  for  confirmation  before  performing  an operation(true or
792              false)
793
794       cvscfg(dateformat)
795              Format for the date string shown in the "Date" column, for exam‐
796              ple "%Y/%m/%d %H:%M"
797
798       cvscfg(cvslock)
799              Set to true to turn on the ability to use cvs-admin locking from
800              the GUI.
801
802       cvscfg(econtrol)
803              Set this to true to turn on the ability  to  use  CVS  Edit  and
804              Unedit, if your site is configured to allow the feature.
805
806       cvscfg(editor)
807              Preferred default editor
808
809       cvscfg(editors)
810              String pairs giving the editor-command and string-match-pattern,
811              for deciding which editor to use
812
813       cvscfg(editorargs)
814              Command-line arguments to send to the default editing program.
815
816       cvscfg(ldetail)
817              Detail level for status reports (latest, summary, verbose)
818
819       cvscfg(mergetoformat)
820
821       cvscfg(mergefromformat)
822              Format for mergeto- and mergefrom- tags.  The _BRANCH_ part must
823              be  left  as-is, but you can change the prefix and the date for‐
824              mat, for example "mergeto_BRANCH_%d%b%y".  The date format  must
825              be  the  same  for  both.   CVS rule: a tag must not contain the
826              characters `$,.:;@'
827
828       cvscfg(rdetail)
829              Detail for repository and workdir reports (terse, summary,  ver‐
830              bose)
831
832       cvscfg(recurse)
833              Whether reports are recursive (true or false)
834
835       cvscfg(savelines)
836              How many lines to keep in the trace window
837
838       cvscfg(status_filter)
839              Filter  out  unknown  files  (status "?") from CVS Check and CVS
840              Update reports.
841
842       cvscfg(use_cvseditor)
843              Let CVS invoke an editor for commit  log  messages  rather  than
844              having  tkcvs use its own input box.  By doing this, your site's
845              commit template (rcsinfo) can be used.
846
847   File filters
848       cvscfg(file_filter)
849              Pattern for which files to list. Empty string is  equivalent  to
850              the entire directory (minus hidden files)
851
852       cvscfg(ignore_file_filter)
853              Pattern used in the workdir filter for files to be ignored
854
855       cvscfg(clean_these)
856              Pattern  to  be used for cleaning a directory (removing unwanted
857              files)
858
859   System
860       cvscfg(print_cmd)
861              System command used for printing. lpr, enscript -Ghr, etc)
862
863       cvscfg(shell)
864              What you want to happen when you ask for a shell
865
866       cvscfg(terminal)
867              Command prefix to use to run something in a terminal window
868
869   Portability
870       cvscfg(aster)
871              File mask for all files (* for Unix, *.* for windows)
872
873       cvscfg(null)
874              The null device. /dev/null for Unix, nul for windows
875
876       cvscfg(tkdiff)
877              How to start tkdiff. Example sh /usr/local/bin/tkdiff
878
879       cvscfg(tmpdir)
880              Directory in which to do  behind-the-scenes  checkouts.  Usually
881              /tmp or /var/tmp)
882
883   Debugging
884       cvscfg(log_classes)
885              For  debugging: C=CVS commands, E=CVS stderr output, F=File cre‐
886              ation/deletion, T=Function entry/exit tracing, D=Debugging
887
888       cvscfg(logging)
889              Logging (debugging) on or off
890

Environment Variables

892       You should have the CVSROOT environment variable pointing to the  loca‐
893       tion  of  your CVS repository before you run TkCVS. It will still allow
894       you to work with different repositories within the same session.
895
896       If you wish TkCVS to point to a Subversion repository by  default,  you
897       can  set the environment variable SVNROOT.  This has no meaning to Sub‐
898       version itself, but it will clue TkCVS if it's started  in  an  un-ver‐
899       sioned directory.
900

User Configurable Menu Extensions

902       It  is  possible  to extend the TkCVS menu by inserting additional com‐
903       mands into the .tkcvs or tkcvs_def.tcl files. These  extensions  appear
904       on an extra menu to the right of the TkCVS Options menu.
905
906       To  create new menu entries on the user-defined menu, set the following
907       variables:
908
909   cvsmenu(command)
910       Setting a variable with this name to a value like "commandname"  causes
911       the  CVS  command  "cvs commandname" to be run when this menu option is
912       selected. For example, the following line:
913
914                  set cvsmenu(update_A) "update -A"
915
916       Causes a new menu option titled "update_A" to  be  added  to  the  user
917       defined  menu that will run the command "cvs update -A" on the selected
918       files when it is activated.
919
920       (This example command, for versions of CVS later than 1.3,  will  force
921       an  update  to  the head version of a file, ignoring any sticky tags or
922       versions attached to the file).
923
924   usermenu(command)
925       Setting a variable with this name to a value like "commandname"  causes
926       the  command "commandname" to be run when this menu option is selected.
927       For example, the following line:
928
929                  set usermenu(view) "cat"
930
931       Causes a new menu option titled "view" to be added to the User  defined
932       menu  that  will run the command "cat" on the selected files when it is
933       activated.
934
935       Any user-defined commands will be passed a list of  file  names  corre‐
936       sponding  to  the  files  selected on the directory listing on the main
937       menu as arguments.
938
939       The output of the user defined commands will be displayed in  a  window
940       when the command is finished.
941

CVS Modules File

943       If you haven't put anything in your CVSROOT/modules file, please do so.
944       See the "Administrative Files" section of the CVS manual. Then, you can
945       add  comments  which  TkCVS can use to title the modules and to display
946       them in a tree structure.
947
948       The simplest use of TkCVS's "#D" directive is to display  a  meaningful
949       title for the module:
950
951              #D      softproj        Software Development Projects
952              softproj softproj
953
954       A  fancier  use is to organize the modules into a tree which will mimic
955       their directory nesting in the repository when they appear in the  mod‐
956       ule  browser.  For  example, suppose we have a directory called "choco‐
957       late" which is organized like this:
958
959              chocolate/
960                  truffle/
961                      cocoa3/
962                          biter/
963                          sniffer/
964                          snuffler/
965
966       To display its hierarchy, as well as make the deepest directories  more
967       accessible  by  giving them module names, we could put this in the mod‐
968       ules file:
969
970              #D   chocolate Top Chocolate
971              #D   chocolate/truffle   Cocoa Level 2
972              #D   chocolate/truffle/cocoa3 Cocoa Level 3
973              #D   sniffer   Chocolate Sniffer
974              sniffer   chocolate/truffle/cocoa3/sniffer
975              #D   snuff     Chocolate Snuffler
976              snuff     chocolate/truffle/cocoa3/snuffler
977              #D   biter     Chocolate Biter
978              biter     chocolate/truffle/cocoa3/biter
979
980       When you are installing TkCVS, you may like  to  add  these  additional
981       lines  to  the  modules  file (remember to check out the modules module
982       from the repository, and then commit it again when  you  have  finished
983       the edits).
984
985       These  extension lines commence with a "#" character, so CVS interprets
986       them as comments. They can be safely left in the file whether  you  are
987       using TkCVS or not.
988
989       "#M" is equivalent to "#D". The two had different functions in previous
990       versions of TkCVS, but now both are parsed the same way.
991

SEE ALSO

993       cvs(1), svn(1)
994

AUTHOR

996       Del  (del@babel.babel.com.au):  Maintenance  and  Subversion   support:
997       Dorothy Robinson
998
999
1000
10018.1                                 Release                           TkCVS(1)
Impressum