Hex Artifact Content
Not logged in

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.