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   Searching the Diagram
385       You can search the canvas for tags, revisions, authors, and dates.
386
387       The following special characters are used in the search pattern:
388
389         *      Matches any sequence of characters in string, including a null
390       string.
391
392         ?      Matches any single character in string.
393
394         [chars]  Matches  any  character  in  the  set  given  by chars. If a
395       sequence of the form x-y appears in chars, then any character between x
396       and y, inclusive, will match.
397
398              Matches  the single character x. This provides a way of avoiding
399       the special interpretation of the characters *?[] in pattern.
400
401       If you only enter "FOO" (without the
402
403   Log Browser Buttons
404       The log browser contains the following buttons:
405
406       Refresh:
407              Re-reads the revision history of the file.
408
409       View:  Pressing this button displays a Tk text  window  containing  the
410              version of the file at Selection A.
411
412       Annotate:
413              This displays a window in which the file is shown with its lines
414              highlighted according  to  when  and  by  whom  they  were  last
415              revised.  In Subversion, it's also called "blame."
416
417       Diff:  Pressing  this  button  runs the "tkdiff" program to display the
418              differences between version A and version B.
419
420       Merge: To use this button, select a branch version of the  file,  other
421              than  the  branch  you  are currently on, as the primary version
422              (Selection A). The changes made along the branch up to that ver‐
423              sion  will be merged into the current version, and stored in the
424              current directory. Optionally, select another version (Selection
425              B)  and the changes will be from that point rather than from the
426              base of the branch.  The version of  the  file  in  the  current
427              directory  will  be  merged, but no commit will occur.  Then you
428              inspect the merged files, correct any conflicts which may occur,
429              and  commit  when you are satisfied.  Optionally, TkCVS will tag
430              the version that the merge is from.  It suggests a  tag  of  the
431              form "mergefrom_<rev>_date."  If you use this auto-tagging func‐
432              tion, another dialog containing a suggested tag for the  merged-
433              to  version  will appear.  It's suggested to leave the dialog up
434              until you are finished, then copy-and-paste  the  suggested  tag
435              into the "Tag" dialog.  It is always a good practice to tag when
436              doing merges, and if you use tags of  the  suggested  form,  the
437              Branch  Browser  can  diagram  them. (Auto-tagging is not imple‐
438              mented in Subversion because, despite the  fact  that  tags  are
439              "cheap,"  it's  somewhat  impractical  to auto-tag single files.
440              You can do the tagging manually, however.)
441
442       View Tags:
443              This button lists all the tags applied to the file in a  search‐
444              able text window.
445
446       Close: This  button  closes  the  Log  Browser. If no other windows are
447              open, TkCVS exits.
448
449   The View Options Menu
450       The View Menu allows you to control what you see in the branch diagram.
451       You  can  choose  how much information to show in the boxes, whether to
452       show empty revisions, and whether to show tags.  You can  even  control
453       the  size  of  the boxes.  If you are using Subversion, you may wish to
454       turn the display of tags off.  If they aren't asked for they  won't  be
455       read from the repository, which can save a lot of time.
456

Merge Tool for CVS

458       The Merge Tool chooses a "representative" file in the current directory
459       and diagrams the branch tags. It tries to pick the "bushiest" file,  or
460       failing  that,  the most-revised file. If you disagree with its choice,
461       you can type the name of another file in the top entry and press Return
462       to diagram that file instead.
463
464       The  main  purpose  of this tool is to do merges (cvs update -j rev [-j
465       rev]) on the whole directory. For merging  one  file  at  a  time,  you
466       should  use  the  Log Browser. You can only merge to the line (trunk or
467       branch) that you are currently on. Select a branch  to  merge  from  by
468       clicking  on  it. Then press either the "Merge" or "Merge Changes" but‐
469       ton. The version of the file in the current  directory  will  be  over-
470       written,  but  it  will not be committed to the repository. You do that
471       after you've reconciled conflicts and decided if it's what  you  really
472       want.
473
474       Merge Branch to Current:
475              The  changes  made  on  the  branch  since its beginning will be
476              merged into the current version.
477
478       Merge Changes to Current:
479              Instead of merging from the base  of  the  branch,  this  button
480              merges  the changes that were made since a particular version on
481              the branch. It pops up a dialog in which you fill  in  the  ver‐
482              sion. It should usually be the version that was last merged.
483

Module Browser

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

Importing New Modules

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

Importing to an Existing Module (CVS)

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

Vendor Merge (CVS)

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

Configuration Files

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

Environment Variables

922       You should have the CVSROOT environment variable pointing to the  loca‐
923       tion  of  your CVS repository before you run TkCVS. It will still allow
924       you to work with different repositories within the same session.
925
926       If you wish TkCVS to point to a Subversion repository by  default,  you
927       can  set the environment variable SVNROOT.  This has no meaning to Sub‐
928       version itself, but it will clue TkCVS if it's started  in  an  un-ver‐
929       sioned directory.
930

User Configurable Menu Extensions

932       It  is  possible  to extend the TkCVS menu by inserting additional com‐
933       mands into the .tkcvs or tkcvs_def.tcl files. These  extensions  appear
934       on an extra menu to the right of the TkCVS Options menu.
935
936       To  create new menu entries on the user-defined menu, set the following
937       variables:
938
939   cvsmenu(command)
940       Setting a variable with this name to a value like "commandname"  causes
941       the  CVS  command  "cvs commandname" to be run when this menu option is
942       selected. For example, the following line:
943
944                  set cvsmenu(update_A) "update -A"
945
946       Causes a new menu option titled "update_A" to  be  added  to  the  user
947       defined  menu that will run the command "cvs update -A" on the selected
948       files when it is activated.
949
950       (This example command, for versions of CVS later than 1.3,  will  force
951       an  update  to  the head version of a file, ignoring any sticky tags or
952       versions attached to the file).
953
954   usermenu(command)
955       Setting a variable with this name to a value like "commandname"  causes
956       the  command "commandname" to be run when this menu option is selected.
957       For example, the following line:
958
959                  set usermenu(view) "cat"
960
961       Causes a new menu option titled "view" to be added to the User  defined
962       menu  that  will run the command "cat" on the selected files when it is
963       activated.
964
965       Any user-defined commands will be passed a list of  file  names  corre‐
966       sponding  to  the  files  selected on the directory listing on the main
967       menu as arguments.
968
969       The output of the user defined commands will be displayed in  a  window
970       when the command is finished.
971

CVS Modules File

973       If you haven't put anything in your CVSROOT/modules file, please do so.
974       See the "Administrative Files" section of the CVS manual. Then, you can
975       add  comments  which  TkCVS can use to title the modules and to display
976       them in a tree structure.
977
978       The simplest use of TkCVS's "#D" directive is to display  a  meaningful
979       title for the module:
980
981              #D      softproj        Software Development Projects
982              softproj softproj
983
984       A  fancier  use is to organize the modules into a tree which will mimic
985       their directory nesting in the repository when they appear in the  mod‐
986       ule  browser.  For  example, suppose we have a directory called "choco‐
987       late" which is organized like this:
988
989              chocolate/
990                  truffle/
991                      cocoa3/
992                          biter/
993                          sniffer/
994                          snuffler/
995
996       To display its hierarchy, as well as make the deepest directories  more
997       accessible  by  giving them module names, we could put this in the mod‐
998       ules file:
999
1000              #D   chocolate Top Chocolate
1001              #D   chocolate/truffle   Cocoa Level 2
1002              #D   chocolate/truffle/cocoa3 Cocoa Level 3
1003              #D   sniffer   Chocolate Sniffer
1004              sniffer   chocolate/truffle/cocoa3/sniffer
1005              #D   snuff     Chocolate Snuffler
1006              snuff     chocolate/truffle/cocoa3/snuffler
1007              #D   biter     Chocolate Biter
1008              biter     chocolate/truffle/cocoa3/biter
1009
1010       When you are installing TkCVS, you may like  to  add  these  additional
1011       lines  to  the  modules  file (remember to check out the modules module
1012       from the repository, and then commit it again when  you  have  finished
1013       the edits).
1014
1015       These  extension lines commence with a "#" character, so CVS interprets
1016       them as comments. They can be safely left in the file whether  you  are
1017       using TkCVS or not.
1018
1019       "#M" is equivalent to "#D". The two had different functions in previous
1020       versions of TkCVS, but now both are parsed the same way.
1021

SEE ALSO

1023       cvs(1), svn(1)
1024

AUTHOR

1026       Del  (del@babel.babel.com.au):  Maintenance  and  Subversion   support:
1027       Dorothy Robinson
1028
1029
1030
10318.2.2                               Release                           TkCVS(1)
Impressum