Artifact a4a0b8a72bb3cc473b7e2f2e2af117ea0fbafc16:
File
tools/lib/trouble.tcl
part of check-in
[a5476aed27]
- Modified sorting of timeline entries for the same second to properly split files and file versions from each other, and to have newer revisions later. Further added a storage for error messages to be repeated when the importer exist. First user is the code reporting corrupted archive files detected during a checkout.
by
aku on
2007-09-20 03:51:49.
0000: 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d # --------------
0010: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0020: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0030: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0040: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a ---------------.
0050: 23 20 54 6f 6f 6c 20 70 61 63 6b 61 67 65 73 2e # Tool packages.
0060: 20 45 72 72 6f 72 20 72 65 70 6f 72 74 69 6e 67 Error reporting
0070: 2e 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ...# -----------
0080: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
00a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
00b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
00c0: 2d 2d 0a 23 20 52 65 71 75 69 72 65 6d 65 6e 74 --.# Requirement
00d0: 73 0a 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 s..package requi
00e0: 72 65 20 54 63 6c 20 38 2e 34 0a 70 61 63 6b 61 re Tcl 8.4.packa
00f0: 67 65 20 72 65 71 75 69 72 65 20 76 63 3a 3a 74 ge require vc::t
0100: 6f 6f 6c 73 3a 3a 6c 6f 67 0a 0a 6e 61 6d 65 73 ools::log..names
0110: 70 61 63 65 20 65 76 61 6c 20 3a 3a 76 63 3a 3a pace eval ::vc::
0120: 74 6f 6f 6c 73 3a 3a 74 72 6f 75 62 6c 65 20 7b tools::trouble {
0130: 0a 20 20 20 20 3a 3a 76 63 3a 3a 74 6f 6f 6c 73 . ::vc::tools
0140: 3a 3a 6c 6f 67 3a 3a 73 79 73 74 65 6d 20 74 72 ::log::system tr
0150: 6f 75 62 6c 65 0a 20 20 20 20 6e 61 6d 65 73 70 ouble. namesp
0160: 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a ace import ::vc:
0170: 3a 74 6f 6f 6c 73 3a 3a 6c 6f 67 3a 3a 77 72 69 :tools::log::wri
0180: 74 65 0a 7d 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d te.}..# --------
0190: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
01a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
01b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
01c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
01d0: 2d 2d 2d 2d 2d 0a 23 20 41 50 49 0a 0a 23 20 76 -----.# API..# v
01e0: 63 3a 3a 74 6f 6f 6c 73 3a 3a 74 72 6f 75 62 6c c::tools::troubl
01f0: 65 3a 3a 61 64 64 20 6d 65 73 73 61 67 65 20 2d e::add message -
0200: 20 52 65 70 6f 72 74 20 65 72 72 6f 72 20 28 73 Report error (s
0210: 68 6f 77 6e 20 69 6e 20 67 65 6e 65 72 61 6c 0a hown in general.
0220: 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 #
0230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0240: 20 20 20 20 6c 6f 67 29 2c 20 61 6e 64 20 72 65 log), and re
0250: 6d 65 6d 62 65 72 20 66 6f 72 20 72 65 2d 64 69 member for re-di
0260: 73 70 6c 61 79 20 61 74 20 65 78 69 74 2e 0a 0a splay at exit...
0270: 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d # --------------
0280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0290: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
02a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
02b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a ---------------.
02c0: 23 20 41 50 49 20 49 6d 70 6c 65 6d 65 6e 74 61 # API Implementa
02d0: 74 69 6f 6e 0a 0a 70 72 6f 63 20 3a 3a 76 63 3a tion..proc ::vc:
02e0: 3a 74 6f 6f 6c 73 3a 3a 74 72 6f 75 62 6c 65 3a :tools::trouble:
02f0: 3a 61 64 64 20 7b 74 65 78 74 7d 20 7b 0a 20 20 :add {text} {.
0300: 20 20 76 61 72 69 61 62 6c 65 20 6d 65 73 73 61 variable messa
0310: 67 65 73 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 ges. lappend
0320: 20 6d 65 73 73 61 67 65 73 20 24 74 65 78 74 0a messages $text.
0330: 20 20 20 20 77 72 69 74 65 20 74 72 6f 75 62 6c write troubl
0340: 65 20 30 20 20 20 24 74 65 78 74 0a 20 20 20 20 e 0 $text.
0350: 72 65 74 75 72 6e 0a 7d 0a 0a 23 20 2d 2d 2d 2d return.}..# ----
0360: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0370: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0380: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0390: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
03a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 49 6e 74 65 ---------.# Inte
03b0: 72 6e 61 6c 73 2e 20 48 6f 6f 6b 20 69 6e 74 6f rnals. Hook into
03c0: 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e the application
03d0: 20 65 78 69 74 2c 20 73 68 6f 77 20 74 68 65 20 exit, show the
03e0: 72 65 6d 65 6d 62 65 72 65 64 20 6d 65 73 73 61 remembered messa
03f0: 67 65 73 2c 20 74 68 65 6e 0a 23 20 70 61 73 73 ges, then.# pass
0400: 20 74 68 72 6f 75 67 68 20 74 68 65 20 72 65 67 through the reg
0410: 75 6c 61 72 20 63 6f 6d 6d 61 6e 64 2e 0a 0a 72 ular command...r
0420: 65 6e 61 6d 65 20 3a 3a 65 78 69 74 20 76 63 3a ename ::exit vc:
0430: 3a 74 6f 6f 6c 73 3a 3a 74 72 6f 75 62 6c 65 3a :tools::trouble:
0440: 3a 45 58 49 54 0a 70 72 6f 63 20 20 20 3a 3a 65 :EXIT.proc ::e
0450: 78 69 74 20 7b 7b 73 74 61 74 75 73 20 30 7d 7d xit {{status 0}}
0460: 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 {. variable
0470: 3a 3a 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 74 72 6f ::vc::tools::tro
0480: 75 62 6c 65 3a 3a 6d 65 73 73 61 67 65 73 0a 20 uble::messages.
0490: 20 20 20 66 6f 72 65 61 63 68 20 6d 20 24 6d 65 foreach m $me
04a0: 73 73 61 67 65 73 20 7b 0a 09 77 72 69 74 65 20 ssages {..write
04b0: 74 72 6f 75 62 6c 65 20 30 20 24 6d 0a 20 20 20 trouble 0 $m.
04c0: 20 7d 0a 20 20 20 20 3a 3a 76 63 3a 3a 74 6f 6f }. ::vc::too
04d0: 6c 73 3a 3a 74 72 6f 75 62 6c 65 3a 3a 45 58 49 ls::trouble::EXI
04e0: 54 20 24 73 74 61 74 75 73 0a 20 20 20 20 23 20 T $status. #
04f0: 4e 6f 74 20 72 65 61 63 68 65 64 2e 0a 20 20 20 Not reached..
0500: 20 72 65 74 75 72 6e 0a 7d 0a 0a 6e 61 6d 65 73 return.}..names
0510: 70 61 63 65 20 65 76 61 6c 20 3a 3a 76 63 3a 3a pace eval ::vc::
0520: 74 6f 6f 6c 73 3a 3a 74 72 6f 75 62 6c 65 20 7b tools::trouble {
0530: 0a 20 20 20 20 23 20 4c 69 73 74 20 6f 66 20 74 . # List of t
0540: 68 65 20 72 65 6d 65 6d 62 65 72 65 64 20 65 72 he remembered er
0550: 72 6f 72 20 6d 65 73 73 61 67 65 73 20 74 6f 20 ror messages to
0560: 62 65 20 73 68 6f 77 6e 20 61 74 20 65 78 69 74 be shown at exit
0570: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 65 . variable me
0580: 73 73 61 67 65 73 20 7b 7d 0a 0a 20 20 20 20 6e ssages {}.. n
0590: 61 6d 65 73 70 61 63 65 20 65 78 70 6f 72 74 20 amespace export
05a0: 61 64 64 20 0a 7d 0a 0a 23 20 2d 2d 2d 2d 2d 2d add .}..# ------
05b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
05c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
05d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
05e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
05f0: 2d 2d 2d 2d 2d 2d 2d 0a 23 20 52 65 61 64 79 0a -------.# Ready.
0600: 0a 70 61 63 6b 61 67 65 20 70 72 6f 76 69 64 65 .package provide
0610: 20 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 74 72 6f 75 vc::tools::trou
0620: 62 6c 65 20 31 2e 30 0a 72 65 74 75 72 6e 0a ble 1.0.return.