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 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
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
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
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
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
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
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
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
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
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
1023 cvs(1), svn(1)
1024
1026 Del (del@babel.babel.com.au): Maintenance and Subversion support:
1027 Dorothy Robinson
1028
1029
1030
10318.2.3 Release TkCVS(1)