1TkCVS(1) General Commands Manual TkCVS(1)
2
3
4
6 TkCVS - a Tk/Tcl Graphical Interface to CVS and Subversion
7
9 tkcvs [-dir directory] [-root cvsroot] [-win workdir|module|merge]
10 [-log file]
11
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
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
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
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
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
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
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
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
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
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
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
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
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
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
993 cvs(1), svn(1)
994
996 Del (del@babel.babel.com.au): Maintenance and Subversion support:
997 Dorothy Robinson
998
999
1000
10018.1 Release TkCVS(1)