Artifact c46d514b0d67046765b40039ad463a587af2e787:
File
tools/cvs2fossil/lib/c2f_psym.tcl
part of check-in
[b679ca3356]
- Code cleanup. Removed trailing whitespace across the board.
by
aku on
2007-11-25 07:54:09.
0000: 23 23 20 2d 2a 2d 20 74 63 6c 20 2d 2a 2d 0a 23 ## -*- tcl -*-.#
0010: 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 # ## ### #####
0020: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 ######## #######
0030: 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 ###### #########
0040: 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 20 ############.##
0050: 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30 Copyright (c) 20
0060: 30 37 20 41 6e 64 72 65 61 73 20 4b 75 70 72 69 07 Andreas Kupri
0070: 65 73 2e 0a 23 0a 23 20 54 68 69 73 20 73 6f 66 es..#.# This sof
0080: 74 77 61 72 65 20 69 73 20 6c 69 63 65 6e 73 65 tware is license
0090: 64 20 61 73 20 64 65 73 63 72 69 62 65 64 20 69 d as described i
00a0: 6e 20 74 68 65 20 66 69 6c 65 20 4c 49 43 45 4e n the file LICEN
00b0: 53 45 2c 20 77 68 69 63 68 0a 23 20 79 6f 75 20 SE, which.# you
00c0: 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 should have rece
00d0: 69 76 65 64 20 61 73 20 70 61 72 74 20 6f 66 20 ived as part of
00e0: 74 68 69 73 20 64 69 73 74 72 69 62 75 74 69 6f this distributio
00f0: 6e 2e 0a 23 0a 23 20 54 68 69 73 20 73 6f 66 74 n..#.# This soft
0100: 77 61 72 65 20 63 6f 6e 73 69 73 74 73 20 6f 66 ware consists of
0110: 20 76 6f 6c 75 6e 74 61 72 79 20 63 6f 6e 74 72 voluntary contr
0120: 69 62 75 74 69 6f 6e 73 20 6d 61 64 65 20 62 79 ibutions made by
0130: 20 6d 61 6e 79 0a 23 20 69 6e 64 69 76 69 64 75 many.# individu
0140: 61 6c 73 2e 20 20 46 6f 72 20 65 78 61 63 74 20 als. For exact
0150: 63 6f 6e 74 72 69 62 75 74 69 6f 6e 20 68 69 73 contribution his
0160: 74 6f 72 79 2c 20 73 65 65 20 74 68 65 20 72 65 tory, see the re
0170: 76 69 73 69 6f 6e 0a 23 20 68 69 73 74 6f 72 79 vision.# history
0180: 20 61 6e 64 20 6c 6f 67 73 2c 20 61 76 61 69 6c and logs, avail
0190: 61 62 6c 65 20 61 74 20 68 74 74 70 3a 2f 2f 66 able at http://f
01a0: 6f 73 73 69 6c 2d 73 63 6d 2e 68 77 61 63 69 2e ossil-scm.hwaci.
01b0: 63 6f 6d 2f 66 6f 73 73 69 6c 0a 23 20 23 20 23 com/fossil.# # #
01c0: 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 # ### ##### ####
01d0: 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 #### ###########
01e0: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 ## #############
01f0: 23 23 23 23 23 23 23 23 0a 0a 23 23 20 53 79 6d ########..## Sym
0200: 62 6f 6c 73 20 28 54 61 67 73 2c 20 42 72 61 6e bols (Tags, Bran
0210: 63 68 65 73 29 20 70 65 72 20 70 72 6f 6a 65 63 ches) per projec
0220: 74 2e 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23 t...# # ## ### #
0230: 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 #### ######## ##
0240: 23 23 23 23 23 23 23 23 23 23 23 20 23 23 23 23 ########### ####
0250: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0260: 23 0a 23 23 20 52 65 71 75 69 72 65 6d 65 6e 74 #.## Requirement
0270: 73 0a 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 s..package requi
0280: 72 65 20 54 63 6c 20 38 2e 34 20 20 20 20 20 20 re Tcl 8.4
0290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02a0: 20 20 20 20 20 20 20 20 20 3b 20 23 20 52 65 71 ; # Req
02b0: 75 69 72 65 64 20 72 75 6e 74 69 6d 65 2e 0a 70 uired runtime..p
02c0: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 73 ackage require s
02d0: 6e 69 74 20 20 20 20 20 20 20 20 20 20 20 20 20 nit
02e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02f0: 20 20 20 20 20 3b 20 23 20 4f 4f 20 73 79 73 74 ; # OO syst
0300: 65 6d 2e 0a 70 61 63 6b 61 67 65 20 72 65 71 75 em..package requ
0310: 69 72 65 20 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 74 ire vc::tools::t
0320: 72 6f 75 62 6c 65 20 20 20 20 20 20 20 20 20 20 rouble
0330: 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 45 72 ; # Er
0340: 72 6f 72 20 72 65 70 6f 72 74 69 6e 67 2e 0a 70 ror reporting..p
0350: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 76 ackage require v
0360: 63 3a 3a 74 6f 6f 6c 73 3a 3a 6c 6f 67 20 20 20 c::tools::log
0370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0380: 20 20 20 20 20 3b 20 23 20 55 73 65 72 20 66 65 ; # User fe
0390: 65 64 62 61 63 6b 2e 0a 70 61 63 6b 61 67 65 20 edback..package
03a0: 72 65 71 75 69 72 65 20 76 63 3a 3a 74 6f 6f 6c require vc::tool
03b0: 73 3a 3a 6d 69 73 63 20 20 20 20 20 20 20 20 20 s::misc
03c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 ;
03d0: 23 20 54 65 78 74 20 66 6f 72 6d 61 74 74 69 6e # Text formattin
03e0: 67 2e 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 g..package requi
03f0: 72 65 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 re vc::fossil::i
0400: 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 73 74 61 74 mport::cvs::stat
0410: 65 20 20 20 20 20 20 20 20 3b 20 23 20 53 74 61 e ; # Sta
0420: 74 65 20 73 74 6f 72 61 67 65 2e 0a 70 61 63 6b te storage..pack
0430: 61 67 65 20 72 65 71 75 69 72 65 20 73 74 72 75 age require stru
0440: 63 74 3a 3a 73 65 74 20 20 20 20 20 20 20 20 20 ct::set
0450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0460: 20 20 3b 20 23 20 53 65 74 20 68 61 6e 64 6c 69 ; # Set handli
0470: 6e 67 2e 0a 0a 23 20 23 20 23 23 20 23 23 23 20 ng...# # ## ###
0480: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 ##### ######## #
0490: 23 23 23 23 23 23 23 23 23 23 23 23 20 23 23 23 ############ ###
04a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
04b0: 23 23 0a 23 23 0a 0a 73 6e 69 74 3a 3a 74 79 70 ##.##..snit::typ
04c0: 65 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a e ::vc::fossil::
04d0: 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 72 6f import::cvs::pro
04e0: 6a 65 63 74 3a 3a 73 79 6d 20 7b 0a 20 20 20 20 ject::sym {.
04f0: 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 # # ## ### #####
0500: 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######## ######
0510: 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 50 #######. ## P
0520: 75 62 6c 69 63 20 41 50 49 0a 0a 20 20 20 20 63 ublic API.. c
0530: 6f 6e 73 74 72 75 63 74 6f 72 20 7b 6e 61 6d 65 onstructor {name
0540: 20 69 64 20 70 72 6f 6a 65 63 74 7d 20 7b 0a 09 id project} {..
0550: 73 65 74 20 6d 79 6e 61 6d 65 20 20 20 20 24 6e set myname $n
0560: 61 6d 65 0a 09 73 65 74 20 6d 79 69 64 20 20 20 ame..set myid
0570: 20 20 20 24 69 64 0a 09 73 65 74 20 6d 79 70 72 $id..set mypr
0580: 6f 6a 65 63 74 20 24 70 72 6f 6a 65 63 74 0a 0a oject $project..
0590: 09 23 20 43 6f 75 6e 74 20 74 6f 74 61 6c 20 6e .# Count total n
05a0: 75 6d 62 65 72 20 6f 66 20 73 79 6d 62 6f 6c 73 umber of symbols
05b0: 2e 0a 09 69 6e 63 72 20 6d 79 6e 75 6d 0a 09 72 ...incr mynum..r
05c0: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 eturn. }..
05d0: 20 6d 65 74 68 6f 64 20 6e 61 6d 65 20 7b 7d 20 method name {}
05e0: 7b 20 72 65 74 75 72 6e 20 24 6d 79 6e 61 6d 65 { return $myname
05f0: 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 69 64 }. method id
0600: 20 20 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 {} { return $
0610: 6d 79 69 64 20 20 20 7d 0a 0a 20 20 20 20 23 20 myid }.. #
0620: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 # ## ### ##### #
0630: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
0640: 23 23 23 23 23 0a 20 20 20 20 23 23 20 53 79 6d #####. ## Sym
0650: 62 6f 6c 20 74 79 70 65 0a 0a 20 20 20 20 6d 65 bol type.. me
0660: 74 68 6f 64 20 64 65 74 65 72 6d 69 6e 65 74 79 thod determinety
0670: 70 65 20 7b 7d 20 7b 0a 09 23 20 54 68 69 73 20 pe {} {..# This
0680: 69 73 20 64 6f 6e 65 20 62 79 20 61 20 66 69 78 is done by a fix
0690: 65 64 20 68 65 75 72 69 73 74 69 63 73 2c 20 77 ed heuristics, w
06a0: 69 74 68 20 67 75 69 64 61 6e 63 65 20 62 79 20 ith guidance by
06b0: 74 68 65 0a 09 23 20 75 73 65 72 20 69 6e 20 65 the..# user in e
06c0: 64 67 65 2d 63 61 73 65 73 2e 20 43 6f 6e 74 72 dge-cases. Contr
06d0: 61 72 79 20 74 6f 20 63 76 73 32 73 76 6e 20 77 ary to cvs2svn w
06e0: 68 69 63 68 20 75 73 65 73 20 61 20 62 69 67 0a hich uses a big.
06f0: 09 23 20 68 6f 6e 6b 69 6e 67 20 73 74 72 65 61 .# honking strea
0700: 67 79 20 63 6c 61 73 73 20 61 6e 64 20 72 75 6c gy class and rul
0710: 65 20 6f 62 6a 65 63 74 73 2e 20 4b 65 65 70 20 e objects. Keep
0720: 69 74 20 73 69 6d 70 6c 65 2c 20 77 65 0a 09 23 it simple, we..#
0730: 20 63 61 6e 20 65 78 70 61 6e 64 20 6c 61 74 65 can expand late
0740: 72 20 77 68 65 6e 20 77 65 20 61 63 74 75 61 6c r when we actual
0750: 6c 79 20 6e 65 65 64 20 61 6c 6c 20 74 68 65 20 ly need all the
0760: 63 6f 6d 70 6c 65 78 69 74 79 0a 09 23 20 66 6f complexity..# fo
0770: 72 20 63 6f 6e 66 69 67 75 72 61 62 69 6c 69 74 r configurabilit
0780: 79 2e 0a 0a 09 23 20 54 68 65 20 66 6f 6c 6c 6f y....# The follo
0790: 77 69 6e 67 20 67 75 69 64 65 6c 69 6e 65 73 20 wing guidelines
07a0: 61 72 65 20 61 70 70 6c 69 65 64 3a 0a 09 23 20 are applied:..#
07b0: 2d 20 49 73 20 75 73 61 67 65 20 75 6e 61 6d 62 - Is usage unamb
07c0: 69 67 6f 75 73 20 3f 0a 09 23 20 2d 20 57 61 73 igous ?..# - Was
07d0: 20 74 68 65 72 65 20 65 76 65 72 20 61 20 63 6f there ever a co
07e0: 6d 6d 69 74 20 6f 6e 20 74 68 65 20 73 79 6d 62 mmit on the symb
07f0: 6f 6c 20 3f 0a 09 23 20 2d 20 4d 6f 72 65 20 75 ol ?..# - More u
0800: 73 65 64 20 61 73 20 74 61 67 2c 20 6f 72 20 6d sed as tag, or m
0810: 6f 72 65 20 75 73 65 64 20 61 73 20 62 72 61 6e ore used as bran
0820: 63 68 20 3f 0a 09 23 20 2d 20 41 74 20 6c 61 73 ch ?..# - At las
0830: 74 2c 20 77 68 61 74 20 68 61 73 20 74 68 65 20 t, what has the
0840: 75 73 65 72 20 74 6f 6c 64 20 75 73 20 61 62 6f user told us abo
0850: 75 74 20 69 74 20 3f 0a 09 23 20 2d 20 46 61 69 ut it ?..# - Fai
0860: 6c 0a 0a 09 66 6f 72 65 61 63 68 20 72 75 6c 65 l...foreach rule
0870: 20 7b 0a 09 20 20 20 20 55 73 65 72 43 6f 6e 66 {.. UserConf
0880: 69 67 0a 09 20 20 20 20 55 6e 61 6d 62 69 67 6f ig.. Unambigo
0890: 75 73 0a 09 20 20 20 20 48 61 73 43 6f 6d 6d 69 us.. HasCommi
08a0: 74 73 0a 09 20 20 20 20 56 6f 74 65 43 6f 75 6e ts.. VoteCoun
08b0: 74 73 0a 09 7d 20 7b 0a 09 20 20 20 73 65 74 20 ts..} {.. set
08c0: 63 68 6f 73 65 6e 20 5b 24 73 65 6c 66 20 24 72 chosen [$self $r
08d0: 75 6c 65 5d 0a 09 20 20 20 69 66 20 7b 24 63 68 ule].. if {$ch
08e0: 6f 73 65 6e 20 65 71 20 24 6d 79 75 6e 64 65 66 osen eq $myundef
08f0: 7d 20 63 6f 6e 74 69 6e 75 65 0a 09 20 20 20 24 } continue.. $
0900: 73 65 6c 66 20 4d 61 72 6b 41 73 20 24 72 75 6c self MarkAs $rul
0910: 65 20 24 63 68 6f 73 65 6e 0a 09 20 20 20 72 65 e $chosen.. re
0920: 74 75 72 6e 0a 09 7d 0a 0a 09 23 20 4e 6f 6e 65 turn..}...# None
0930: 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 77 61 of the above wa
0940: 73 20 61 62 6c 65 20 74 6f 20 64 65 63 69 64 65 s able to decide
0950: 20 77 68 69 63 68 20 74 79 70 65 20 74 6f 20 61 which type to a
0960: 73 73 69 67 6e 20 74 6f 0a 09 23 20 74 68 65 20 ssign to..# the
0970: 73 79 6d 62 6f 6c 2e 20 54 68 69 73 20 69 73 20 symbol. This is
0980: 61 20 66 61 74 61 6c 20 65 72 72 6f 72 20 70 72 a fatal error pr
0990: 65 76 65 6e 74 69 6e 67 20 74 68 65 20 65 78 65 eventing the exe
09a0: 63 75 74 69 6f 6e 0a 09 23 20 6f 66 20 74 68 65 cution..# of the
09b0: 20 70 61 73 73 65 73 20 61 66 74 65 72 20 27 43 passes after 'C
09c0: 6f 6c 6c 61 74 65 53 79 6d 62 6f 6c 73 27 2e 0a ollateSymbols'..
09d0: 0a 09 69 6e 63 72 20 6d 79 72 75 6c 65 63 6f 75 ..incr myrulecou
09e0: 6e 74 28 55 6e 64 65 63 69 64 65 64 5f 29 0a 09 nt(Undecided_)..
09f0: 74 72 6f 75 62 6c 65 20 66 61 74 61 6c 20 22 55 trouble fatal "U
0a00: 6e 61 62 6c 65 20 74 6f 20 64 65 63 69 64 65 20 nable to decide
0a10: 68 6f 77 20 74 6f 20 63 6f 6e 76 65 72 74 20 73 how to convert s
0a20: 79 6d 62 6f 6c 20 27 24 6d 79 6e 61 6d 65 27 22 ymbol '$myname'"
0a30: 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a ..return. }..
0a40: 20 20 20 20 6d 65 74 68 6f 64 20 6d 61 72 6b 74 method markt
0a50: 68 65 74 72 75 6e 6b 20 7b 7d 20 7b 20 24 73 65 hetrunk {} { $se
0a60: 6c 66 20 4d 61 72 6b 41 73 20 49 73 54 68 65 54 lf MarkAs IsTheT
0a70: 72 75 6e 6b 20 24 6d 79 62 72 61 6e 63 68 20 3b runk $mybranch ;
0a80: 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 23 return }.. #
0a90: 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 # ## ### #####
0aa0: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 ######## #######
0ab0: 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 53 79 ######. ## Sy
0ac0: 6d 62 6f 6c 20 73 74 61 74 69 73 74 69 63 73 0a mbol statistics.
0ad0: 0a 20 20 20 20 6d 65 74 68 6f 64 20 64 65 66 63 . method defc
0ae0: 6f 75 6e 74 73 20 7b 74 63 20 62 63 20 63 63 7d ounts {tc bc cc}
0af0: 20 7b 0a 09 73 65 74 20 6d 79 62 72 61 6e 63 68 {..set mybranch
0b00: 63 6f 75 6e 74 20 24 74 63 0a 09 73 65 74 20 6d count $tc..set m
0b10: 79 74 61 67 63 6f 75 6e 74 20 20 20 20 24 62 63 ytagcount $bc
0b20: 0a 09 73 65 74 20 6d 79 63 6f 6d 6d 69 74 63 6f ..set mycommitco
0b30: 75 6e 74 20 24 63 63 0a 09 72 65 74 75 72 6e 0a unt $cc..return.
0b40: 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f }.. metho
0b50: 64 20 63 6f 75 6e 74 61 73 62 72 61 6e 63 68 20 d countasbranch
0b60: 7b 7d 20 7b 20 69 6e 63 72 20 6d 79 62 72 61 6e {} { incr mybran
0b70: 63 68 63 6f 75 6e 74 20 3b 20 72 65 74 75 72 6e chcount ; return
0b80: 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 63 6f }. method co
0b90: 75 6e 74 61 73 74 61 67 20 20 20 20 7b 7d 20 7b untastag {} {
0ba0: 20 69 6e 63 72 20 6d 79 74 61 67 63 6f 75 6e 74 incr mytagcount
0bb0: 20 20 20 20 3b 20 72 65 74 75 72 6e 20 7d 0a 20 ; return }.
0bc0: 20 20 20 6d 65 74 68 6f 64 20 63 6f 75 6e 74 61 method counta
0bd0: 63 6f 6d 6d 69 74 20 20 7b 7d 20 7b 20 69 6e 63 commit {} { inc
0be0: 72 20 6d 79 63 6f 6d 6d 69 74 63 6f 75 6e 74 20 r mycommitcount
0bf0: 3b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 ; return }..
0c00: 6d 65 74 68 6f 64 20 62 6c 6f 63 6b 65 64 62 79 method blockedby
0c10: 20 7b 73 79 6d 62 6f 6c 7d 20 7b 0a 09 23 20 52 {symbol} {..# R
0c20: 65 6d 65 6d 62 65 72 20 74 68 65 20 73 79 6d 62 emember the symb
0c30: 6f 6c 20 61 73 20 70 72 65 76 65 6e 74 69 6e 67 ol as preventing
0c40: 20 74 68 65 20 72 65 6d 6f 76 61 6c 20 6f 66 20 the removal of
0c50: 74 68 69 73 0a 09 23 20 73 79 6d 62 6f 6c 2e 20 this..# symbol.
0c60: 4f 74 20 69 73 20 61 20 74 61 67 20 6f 72 20 62 Ot is a tag or b
0c70: 72 61 6e 63 68 20 74 68 61 74 20 73 70 61 77 6e ranch that spawn
0c80: 65 64 20 66 72 6f 6d 20 61 20 72 65 76 69 73 69 ed from a revisi
0c90: 6f 6e 0a 09 23 20 6f 6e 20 74 68 69 73 20 73 79 on..# on this sy
0ca0: 6d 62 6f 6c 2e 0a 0a 09 73 74 72 75 63 74 3a 3a mbol....struct::
0cb0: 73 65 74 20 69 6e 63 6c 75 64 65 20 6d 79 62 6c set include mybl
0cc0: 6f 63 6b 65 72 73 20 24 73 79 6d 62 6f 6c 0a 09 ockers $symbol..
0cd0: 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 return. }..
0ce0: 20 20 6d 65 74 68 6f 64 20 70 6f 73 73 69 62 6c method possibl
0cf0: 65 70 61 72 65 6e 74 20 7b 73 79 6d 62 6f 6c 7d eparent {symbol}
0d00: 20 7b 0a 09 6c 6f 67 20 77 72 69 74 65 20 39 20 {..log write 9
0d10: 73 79 6d 62 6f 6c 20 22 50 6f 73 73 69 62 6c 65 symbol "Possible
0d20: 20 70 61 72 65 6e 74 20 28 24 6d 79 6e 61 6d 65 parent ($myname
0d30: 29 20 3d 20 5b 24 73 79 6d 62 6f 6c 20 6e 61 6d ) = [$symbol nam
0d40: 65 5d 22 0a 0a 09 69 66 20 7b 5b 69 6e 66 6f 20 e]"...if {[info
0d50: 65 78 69 73 74 73 20 6d 79 70 70 61 72 65 6e 74 exists mypparent
0d60: 28 24 73 79 6d 62 6f 6c 29 5d 7d 20 7b 0a 09 20 ($symbol)]} {..
0d70: 20 20 20 69 6e 63 72 20 6d 79 70 70 61 72 65 6e incr mypparen
0d80: 74 28 24 73 79 6d 62 6f 6c 29 0a 09 7d 20 65 6c t($symbol)..} el
0d90: 73 65 20 7b 0a 09 20 20 20 20 73 65 74 20 20 6d se {.. set m
0da0: 79 70 70 61 72 65 6e 74 28 24 73 79 6d 62 6f 6c ypparent($symbol
0db0: 29 20 31 0a 09 7d 0a 09 72 65 74 75 72 6e 0a 20 ) 1..}..return.
0dc0: 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 }.. method
0dd0: 20 69 73 67 68 6f 73 74 20 7b 7d 20 7b 0a 09 23 isghost {} {..#
0de0: 20 43 68 65 63 6b 73 20 69 66 20 74 68 69 73 20 Checks if this
0df0: 73 79 6d 62 6f 6c 20 28 61 73 20 6c 69 6e 65 20 symbol (as line
0e00: 6f 66 20 64 65 76 65 6c 6f 70 6d 65 6e 74 29 20 of development)
0e10: 6e 65 76 65 72 0a 09 23 20 65 78 69 73 74 65 64 never..# existed
0e20: 2e 0a 0a 09 69 66 20 7b 24 6d 79 63 6f 6d 6d 69 ....if {$mycommi
0e30: 74 63 6f 75 6e 74 20 3e 20 30 7d 20 20 20 20 20 tcount > 0}
0e40: 20 20 20 20 7b 20 72 65 74 75 72 6e 20 30 20 7d { return 0 }
0e50: 0a 09 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 ..if {[llength $
0e60: 6d 79 62 6c 6f 63 6b 65 72 73 5d 7d 20 20 20 20 myblockers]}
0e70: 20 20 7b 20 72 65 74 75 72 6e 20 30 20 7d 0a 09 { return 0 }..
0e80: 69 66 20 7b 5b 61 72 72 61 79 20 73 69 7a 65 20 if {[array size
0e90: 6d 79 70 70 61 72 65 6e 74 5d 20 3e 20 30 7d 20 mypparent] > 0}
0ea0: 7b 20 72 65 74 75 72 6e 20 30 20 7d 0a 0a 09 72 { return 0 }...r
0eb0: 65 74 75 72 6e 20 31 0a 20 20 20 20 7d 0a 0a 20 eturn 1. }..
0ec0: 20 20 20 23 20 23 20 23 23 20 23 23 23 20 23 23 # # ## ### ##
0ed0: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 ### ######## ###
0ee0: 23 23 23 23 23 23 23 23 23 23 0a 0a 20 20 20 20 ##########..
0ef0: 6d 65 74 68 6f 64 20 70 65 72 73 69 73 74 72 65 method persistre
0f00: 76 20 7b 7d 20 7b 0a 09 73 65 74 20 70 69 64 20 v {} {..set pid
0f10: 5b 24 6d 79 70 72 6f 6a 65 63 74 20 69 64 5d 0a [$myproject id].
0f20: 0a 09 73 74 61 74 65 20 74 72 61 6e 73 61 63 74 ..state transact
0f30: 69 6f 6e 20 7b 0a 09 20 20 20 20 73 74 61 74 65 ion {.. state
0f40: 20 72 75 6e 20 7b 0a 09 09 49 4e 53 45 52 54 20 run {...INSERT
0f50: 49 4e 54 4f 20 73 79 6d 62 6f 6c 20 28 20 73 69 INTO symbol ( si
0f60: 64 2c 20 20 20 70 69 64 2c 20 20 6e 61 6d 65 2c d, pid, name,
0f70: 20 20 20 74 79 70 65 2c 20 20 20 20 20 74 61 67 type, tag
0f80: 5f 63 6f 75 6e 74 2c 20 20 20 62 72 61 6e 63 68 _count, branch
0f90: 5f 63 6f 75 6e 74 2c 20 20 20 63 6f 6d 6d 69 74 _count, commit
0fa0: 5f 63 6f 75 6e 74 29 0a 09 09 56 41 4c 55 45 53 _count)...VALUES
0fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 24 6d ($m
0fc0: 79 69 64 2c 20 24 70 69 64 2c 20 24 6d 79 6e 61 yid, $pid, $myna
0fd0: 6d 65 2c 20 24 6d 79 75 6e 64 65 66 2c 20 24 6d me, $myundef, $m
0fe0: 79 74 61 67 63 6f 75 6e 74 2c 20 24 6d 79 62 72 ytagcount, $mybr
0ff0: 61 6e 63 68 63 6f 75 6e 74 2c 20 24 6d 79 63 6f anchcount, $myco
1000: 6d 6d 69 74 63 6f 75 6e 74 29 3b 0a 09 20 20 20 mmitcount);..
1010: 20 7d 0a 09 20 20 20 20 66 6f 72 65 61 63 68 20 }.. foreach
1020: 73 79 6d 62 6f 6c 20 24 6d 79 62 6c 6f 63 6b 65 symbol $myblocke
1030: 72 73 20 7b 0a 09 09 73 65 74 20 62 69 64 20 5b rs {...set bid [
1040: 24 73 79 6d 62 6f 6c 20 69 64 5d 0a 09 09 73 74 $symbol id]...st
1050: 61 74 65 20 72 75 6e 20 7b 0a 09 09 20 20 20 20 ate run {...
1060: 49 4e 53 45 52 54 20 49 4e 54 4f 20 62 6c 6f 63 INSERT INTO bloc
1070: 6b 65 72 20 28 73 69 64 2c 20 20 20 62 69 64 29 ker (sid, bid)
1080: 0a 09 09 20 20 20 20 56 41 4c 55 45 53 20 20 20 ... VALUES
1090: 20 20 20 20 20 20 20 20 20 20 20 28 24 6d 79 69 ($myi
10a0: 64 2c 20 24 62 69 64 29 3b 0a 09 09 7d 0a 09 20 d, $bid);...}..
10b0: 20 20 20 7d 0a 09 20 20 20 20 66 6f 72 65 61 63 }.. foreac
10c0: 68 20 7b 73 79 6d 62 6f 6c 20 63 6f 75 6e 74 7d h {symbol count}
10d0: 20 5b 61 72 72 61 79 20 67 65 74 20 6d 79 70 70 [array get mypp
10e0: 61 72 65 6e 74 5d 20 7b 0a 09 09 73 65 74 20 70 arent] {...set p
10f0: 69 64 20 5b 24 73 79 6d 62 6f 6c 20 69 64 5d 0a id [$symbol id].
1100: 09 09 73 74 61 74 65 20 72 75 6e 20 7b 0a 09 09 ..state run {...
1110: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 INSERT INTO
1120: 70 61 72 65 6e 74 20 28 73 69 64 2c 20 20 20 70 parent (sid, p
1130: 69 64 2c 20 20 6e 29 0a 09 09 20 20 20 20 56 41 id, n)... VA
1140: 4c 55 45 53 20 20 20 20 20 20 20 20 20 20 20 20 LUES
1150: 20 28 24 6d 79 69 64 2c 20 24 70 69 64 2c 20 24 ($myid, $pid, $
1160: 63 6f 75 6e 74 29 3b 0a 09 09 7d 0a 09 20 20 20 count);...}..
1170: 20 7d 0a 09 7d 0a 09 72 65 74 75 72 6e 0a 20 20 }..}..return.
1180: 20 20 7d 0a 0a 20 20 20 20 23 20 23 20 23 23 20 }.. # # ##
1190: 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 ### ##### ######
11a0: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 ## #############
11b0: 0a 20 20 20 20 23 23 20 53 74 61 74 65 0a 0a 20 . ## State..
11c0: 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 70 72 variable mypr
11d0: 6f 6a 65 63 74 20 7b 7d 20 3b 20 23 20 52 65 66 oject {} ; # Ref
11e0: 65 72 65 6e 63 65 20 74 6f 20 74 68 65 20 70 72 erence to the pr
11f0: 6f 6a 65 63 74 20 6f 62 6a 65 63 74 0a 09 09 09 oject object....
1200: 20 20 20 20 23 20 63 6f 6e 74 61 69 6e 69 6e 67 # containing
1210: 20 74 68 65 20 73 79 6d 62 6f 6c 2e 0a 20 20 20 the symbol..
1220: 20 76 61 72 69 61 62 6c 65 20 6d 79 6e 61 6d 65 variable myname
1230: 20 20 20 20 7b 7d 20 3b 20 23 20 54 68 65 20 73 {} ; # The s
1240: 79 6d 62 6f 6c 27 73 20 6e 61 6d 65 0a 20 20 20 ymbol's name.
1250: 20 76 61 72 69 61 62 6c 65 20 6d 79 69 64 20 20 variable myid
1260: 20 20 20 20 7b 7d 20 3b 20 23 20 52 65 70 6f 73 {} ; # Repos
1270: 69 74 6f 72 79 20 77 69 64 65 20 6e 75 6d 65 72 itory wide numer
1280: 69 63 20 69 64 20 6f 66 20 74 68 65 0a 09 09 09 ic id of the....
1290: 20 20 20 20 23 20 73 79 6d 62 6f 6c 2e 20 54 68 # symbol. Th
12a0: 69 73 20 69 6d 70 6c 69 63 69 74 6c 79 20 65 6e is implicitly en
12b0: 63 6f 64 65 73 20 74 68 65 0a 09 09 09 20 20 20 codes the....
12c0: 20 23 20 70 72 6f 6a 65 63 74 20 61 73 20 77 65 # project as we
12d0: 6c 6c 2e 0a 0a 20 20 20 20 76 61 72 69 61 62 6c ll... variabl
12e0: 65 20 6d 79 62 72 61 6e 63 68 63 6f 75 6e 74 20 e mybranchcount
12f0: 30 20 3b 20 23 20 43 6f 75 6e 74 20 68 6f 77 20 0 ; # Count how
1300: 6d 61 6e 79 20 75 73 65 73 20 61 73 20 62 72 61 many uses as bra
1310: 6e 63 68 2e 0a 20 20 20 20 76 61 72 69 61 62 6c nch.. variabl
1320: 65 20 6d 79 74 61 67 63 6f 75 6e 74 20 20 20 20 e mytagcount
1330: 30 20 3b 20 23 20 43 6f 75 6e 74 20 68 6f 77 20 0 ; # Count how
1340: 6d 61 6e 79 20 75 73 65 73 20 61 73 20 74 61 67 many uses as tag
1350: 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d .. variable m
1360: 79 63 6f 6d 6d 69 74 63 6f 75 6e 74 20 30 20 3b ycommitcount 0 ;
1370: 20 23 20 43 6f 75 6e 74 20 68 6f 77 20 6d 61 6e # Count how man
1380: 79 20 66 69 6c 65 73 20 64 69 64 20 61 20 63 6f y files did a co
1390: 6d 6d 69 74 20 6f 6e 20 74 68 65 20 73 79 6d 62 mmit on the symb
13a0: 6f 6c 2e 0a 0a 20 20 20 20 76 61 72 69 61 62 6c ol... variabl
13b0: 65 20 6d 79 62 6c 6f 63 6b 65 72 73 20 20 20 7b e myblockers {
13c0: 7d 20 3b 20 23 20 4c 69 73 74 20 28 53 65 74 29 } ; # List (Set)
13d0: 20 6f 66 20 74 68 65 20 73 79 6d 62 6f 6c 73 20 of the symbols
13e0: 77 68 69 63 68 20 62 6c 6f 63 6b 0a 09 09 09 20 which block....
13f0: 20 20 20 20 20 20 23 20 74 68 65 20 65 78 63 6c # the excl
1400: 75 73 69 6f 6e 20 6f 66 20 74 68 69 73 20 73 79 usion of this sy
1410: 6d 62 6f 6c 2e 0a 0a 20 20 20 20 76 61 72 69 61 mbol... varia
1420: 62 6c 65 20 6d 79 70 70 61 72 65 6e 74 20 2d 61 ble mypparent -a
1430: 72 72 61 79 20 7b 7d 20 3b 20 23 20 4d 61 70 73 rray {} ; # Maps
1440: 20 66 72 6f 6d 20 73 79 6d 62 6f 6c 73 20 74 6f from symbols to
1450: 20 74 68 65 20 6e 75 6d 62 65 72 0a 09 09 09 09 the number.....
1460: 20 20 20 23 20 6f 66 20 66 69 6c 65 73 20 69 6e # of files in
1470: 20 77 68 69 63 68 20 69 74 20 63 6f 75 6c 64 20 which it could
1480: 68 61 76 65 0a 09 09 09 09 20 20 20 23 20 62 65 have..... # be
1490: 65 6e 20 61 20 70 61 72 65 6e 74 20 6f 66 20 74 en a parent of t
14a0: 68 69 73 20 73 79 6d 62 6f 6c 2e 0a 0a 20 20 20 his symbol...
14b0: 20 76 61 72 69 61 62 6c 65 20 6d 79 74 79 70 65 variable mytype
14c0: 20 7b 7d 20 3b 20 23 20 54 68 65 20 74 79 70 65 {} ; # The type
14d0: 20 63 68 6f 73 65 6e 20 66 6f 72 20 74 68 65 20 chosen for the
14e0: 73 79 6d 62 6f 6c 20 74 6f 20 75 73 65 20 69 6e symbol to use in
14f0: 0a 09 09 09 20 23 20 74 68 65 20 63 6f 6e 76 65 .... # the conve
1500: 72 73 69 6f 6e 2e 0a 0a 20 20 20 20 23 20 23 20 rsion... # #
1510: 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 ## ### ##### ###
1520: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 ##### ##########
1530: 23 23 23 0a 0a 20 20 20 20 74 79 70 65 6d 65 74 ###.. typemet
1540: 68 6f 64 20 65 78 63 6c 75 64 65 20 7b 70 61 74 hod exclude {pat
1550: 74 65 72 6e 7d 20 7b 0a 09 23 20 53 74 6f 72 65 tern} {..# Store
1560: 20 74 68 65 20 70 61 74 74 65 72 6e 20 69 6e 20 the pattern in
1570: 6d 65 6d 6f 72 79 20 66 6f 72 20 75 73 65 20 62 memory for use b
1580: 79 20 74 68 65 20 63 6f 64 65 20 64 6f 69 6e 67 y the code doing
1590: 20 74 79 70 65 0a 09 23 20 64 65 74 65 72 6d 69 type..# determi
15a0: 6e 61 74 69 6f 6e 2e 0a 0a 09 6c 61 70 70 65 6e nation....lappen
15b0: 64 20 6d 79 65 78 63 6c 75 64 65 70 61 74 74 65 d myexcludepatte
15c0: 72 6e 20 5b 50 72 6f 63 65 73 73 50 61 74 74 65 rn [ProcessPatte
15d0: 72 6e 20 24 70 61 74 74 65 72 6e 20 65 78 63 6c rn $pattern excl
15e0: 75 73 69 6f 6e 5d 0a 09 72 65 74 75 72 6e 0a 20 usion]..return.
15f0: 20 20 20 7d 0a 0a 20 20 20 20 74 79 70 65 6d 65 }.. typeme
1600: 74 68 6f 64 20 66 6f 72 63 65 74 61 67 20 7b 70 thod forcetag {p
1610: 61 74 74 65 72 6e 7d 20 7b 0a 09 23 20 53 74 6f attern} {..# Sto
1620: 72 65 20 74 68 65 20 70 61 74 74 65 72 6e 20 69 re the pattern i
1630: 6e 20 6d 65 6d 6f 72 79 20 66 6f 72 20 75 73 65 n memory for use
1640: 20 62 79 20 74 68 65 20 63 6f 64 65 20 64 6f 69 by the code doi
1650: 6e 67 20 74 79 70 65 0a 09 23 20 64 65 74 65 72 ng type..# deter
1660: 6d 69 6e 61 74 69 6f 6e 2e 0a 0a 09 6c 61 70 70 mination....lapp
1670: 65 6e 64 20 6d 79 66 6f 72 63 65 70 61 74 74 65 end myforcepatte
1680: 72 6e 20 5b 50 72 6f 63 65 73 73 50 61 74 74 65 rn [ProcessPatte
1690: 72 6e 20 24 70 61 74 74 65 72 6e 20 66 6f 72 63 rn $pattern forc
16a0: 65 2d 74 61 67 5d 20 24 6d 79 74 61 67 0a 09 72 e-tag] $mytag..r
16b0: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 eturn. }..
16c0: 20 74 79 70 65 6d 65 74 68 6f 64 20 66 6f 72 63 typemethod forc
16d0: 65 62 72 61 6e 63 68 20 7b 70 61 74 74 65 72 6e ebranch {pattern
16e0: 7d 20 7b 0a 09 23 20 53 74 6f 72 65 20 74 68 65 } {..# Store the
16f0: 20 70 61 74 74 65 72 6e 20 69 6e 20 6d 65 6d 6f pattern in memo
1700: 72 79 20 66 6f 72 20 75 73 65 20 62 79 20 74 68 ry for use by th
1710: 65 20 63 6f 64 65 20 64 6f 69 6e 67 20 74 79 70 e code doing typ
1720: 65 0a 09 23 20 64 65 74 65 72 6d 69 6e 61 74 69 e..# determinati
1730: 6f 6e 2e 0a 0a 09 6c 61 70 70 65 6e 64 20 6d 79 on....lappend my
1740: 66 6f 72 63 65 70 61 74 74 65 72 6e 20 5b 50 72 forcepattern [Pr
1750: 6f 63 65 73 73 50 61 74 74 65 72 6e 20 24 70 61 ocessPattern $pa
1760: 74 74 65 72 6e 20 66 6f 72 63 65 2d 62 72 61 6e ttern force-bran
1770: 63 68 5d 20 24 6d 79 62 72 61 6e 63 68 0a 09 72 ch] $mybranch..r
1780: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 eturn. }..
1790: 20 70 72 6f 63 20 50 72 6f 63 65 73 73 50 61 74 proc ProcessPat
17a0: 74 65 72 6e 20 7b 70 61 74 74 65 72 6e 20 6c 61 tern {pattern la
17b0: 62 65 6c 7d 20 7b 0a 09 69 66 20 7b 5b 73 74 72 bel} {..if {[str
17c0: 69 6e 67 20 6d 61 74 63 68 20 2a 3a 2a 3a 2a 20 ing match *:*:*
17d0: 24 70 61 74 74 65 72 6e 5d 7d 20 7b 0a 09 20 20 $pattern]} {..
17e0: 20 20 23 20 42 61 64 20 73 79 6e 74 61 78 20 66 # Bad syntax f
17f0: 6f 72 20 74 68 65 20 70 61 74 74 65 72 6e 2c 20 or the pattern,
1800: 75 73 69 6e 67 20 6d 75 6c 74 69 70 6c 65 20 63 using multiple c
1810: 6f 6c 6f 6e 73 2e 0a 0a 09 20 20 20 20 74 72 6f olons.... tro
1820: 75 62 6c 65 20 66 61 74 61 6c 20 22 42 61 64 20 uble fatal "Bad
1830: 24 6c 61 62 65 6c 20 70 61 74 74 65 72 6e 20 27 $label pattern '
1840: 24 70 61 74 74 65 72 6e 27 22 0a 09 7d 20 65 6c $pattern'"..} el
1850: 73 65 69 66 20 7b 21 5b 73 74 72 69 6e 67 20 6d seif {![string m
1860: 61 74 63 68 20 2a 3a 2a 20 24 70 61 74 74 65 72 atch *:* $patter
1870: 6e 5d 7d 20 7b 0a 09 20 20 20 20 23 20 57 68 65 n]} {.. # Whe
1880: 6e 20 6f 6e 6c 79 20 61 20 73 79 6d 62 6f 6c 20 n only a symbol
1890: 70 61 74 74 65 72 6e 20 69 73 20 73 70 65 63 69 pattern is speci
18a0: 66 69 65 64 20 69 74 20 61 70 70 6c 69 65 73 20 fied it applies
18b0: 74 6f 0a 09 20 20 20 20 23 20 61 6c 6c 20 70 72 to.. # all pr
18c0: 6f 6a 65 63 74 73 2e 0a 0a 09 20 20 20 20 72 65 ojects.... re
18d0: 74 75 72 6e 20 5b 6c 69 73 74 20 2a 20 24 70 61 turn [list * $pa
18e0: 74 74 65 72 6e 5d 0a 09 7d 20 65 6c 73 65 20 7b ttern]..} else {
18f0: 0a 09 20 20 20 20 23 20 42 6f 74 68 20 70 72 6f .. # Both pro
1900: 6a 65 63 74 20 61 6e 64 20 73 79 6d 62 6f 6c 20 ject and symbol
1910: 70 61 74 74 65 72 6e 73 20 61 72 65 20 70 72 65 patterns are pre
1920: 73 65 6e 74 2c 20 77 65 20 73 70 6c 69 74 0a 09 sent, we split..
1930: 20 20 20 20 23 20 74 68 65 6d 20 61 70 61 72 74 # them apart
1940: 20 6e 6f 77 20 66 6f 72 20 73 74 6f 72 61 67 65 now for storage
1950: 20 61 6e 64 20 65 61 73 69 65 72 20 65 78 74 72 and easier extr
1960: 61 63 74 69 6f 6e 20 6c 61 74 65 72 2e 0a 0a 09 action later....
1970: 20 20 20 20 72 65 74 75 72 6e 20 5b 73 70 6c 69 return [spli
1980: 74 20 24 70 61 74 74 65 72 6e 20 3a 5d 0a 09 7d t $pattern :]..}
1990: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 74 79 70 65 . }.. type
19a0: 76 61 72 69 61 62 6c 65 20 6d 79 65 78 63 6c 75 variable myexclu
19b0: 64 65 70 61 74 74 65 72 6e 20 7b 7d 20 3b 20 23 depattern {} ; #
19c0: 20 4c 69 73 74 20 6f 66 20 70 61 74 74 65 72 6e List of pattern
19d0: 73 20 73 70 65 63 69 66 79 69 6e 67 0a 09 09 09 s specifying....
19e0: 09 20 20 20 20 20 20 20 23 20 74 68 65 20 73 79 . # the sy
19f0: 6d 62 6f 6c 73 20 74 6f 20 65 78 63 6c 75 64 65 mbols to exclude
1a00: 20 66 72 6f 6d 0a 09 09 09 09 20 20 20 20 20 20 from.....
1a10: 20 23 20 63 6f 6e 76 65 72 73 69 6f 6e 2e 20 54 # conversion. T
1a20: 61 67 73 20 61 6e 64 2f 6f 72 0a 09 09 09 09 20 ags and/or.....
1a30: 20 20 20 20 20 20 23 20 62 72 61 6e 63 68 65 73 # branches
1a40: 2e 0a 0a 20 20 20 20 74 79 70 65 76 61 72 69 61 ... typevaria
1a50: 62 6c 65 20 6d 79 66 6f 72 63 65 70 61 74 74 65 ble myforcepatte
1a60: 72 6e 20 7b 7d 20 3b 20 23 20 4c 69 73 74 20 6f rn {} ; # List o
1a70: 66 20 70 61 74 74 65 72 6e 73 20 61 6e 64 20 74 f patterns and t
1a80: 79 70 65 73 0a 09 09 09 09 20 20 20 20 20 23 20 ypes..... #
1a90: 73 70 65 63 69 66 79 69 6e 67 20 77 68 69 63 68 specifying which
1aa0: 20 73 79 6d 62 6f 6c 73 20 74 6f 0a 09 09 09 09 symbols to.....
1ab0: 20 20 20 20 20 23 20 66 6f 72 63 65 20 74 6f 20 # force to
1ac0: 73 70 65 63 69 66 69 63 20 74 79 70 65 73 2e 0a specific types..
1ad0: 0a 20 20 20 20 74 79 70 65 6d 65 74 68 6f 64 20 . typemethod
1ae0: 67 65 74 73 79 6d 74 79 70 65 73 20 7b 7d 20 7b getsymtypes {} {
1af0: 0a 09 66 6f 72 65 61 63 68 20 7b 74 69 64 20 6e ..foreach {tid n
1b00: 61 6d 65 7d 20 5b 73 74 61 74 65 20 72 75 6e 20 ame} [state run
1b10: 7b 0a 09 20 20 20 20 53 45 4c 45 43 54 20 74 69 {.. SELECT ti
1b20: 64 2c 20 6e 61 6d 65 20 46 52 4f 4d 20 73 79 6d d, name FROM sym
1b30: 74 79 70 65 3b 0a 09 7d 5d 20 7b 20 73 65 74 20 type;..}] { set
1b40: 6d 79 73 79 6d 74 79 70 65 28 24 74 69 64 29 20 mysymtype($tid)
1b50: 24 6e 61 6d 65 20 7d 0a 09 72 65 74 75 72 6e 0a $name }..return.
1b60: 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 4b 65 65 }.. # Kee
1b70: 70 20 74 68 65 20 63 6f 64 65 73 20 62 65 6c 6f p the codes belo
1b80: 77 20 69 6e 20 73 79 6e 63 20 77 69 74 68 20 27 w in sync with '
1b90: 70 61 73 73 3a 3a 63 6f 6c 6c 72 65 76 2f 73 65 pass::collrev/se
1ba0: 74 75 70 28 27 73 79 6d 74 79 70 65 27 29 2e 0a tup('symtype')..
1bb0: 20 20 20 20 74 79 70 65 76 61 72 69 61 62 6c 65 typevariable
1bc0: 20 6d 79 65 78 63 6c 75 64 65 64 20 20 20 20 20 myexcluded
1bd0: 20 20 20 30 20 3b 20 23 20 43 6f 64 65 20 66 6f 0 ; # Code fo
1be0: 72 20 73 79 6d 62 6f 6c 73 20 77 68 69 63 68 20 r symbols which
1bf0: 61 72 65 20 65 78 63 6c 75 64 65 64 2e 0a 20 20 are excluded..
1c00: 20 20 74 79 70 65 76 61 72 69 61 62 6c 65 20 6d typevariable m
1c10: 79 74 61 67 20 20 20 20 20 20 20 20 20 20 20 20 ytag
1c20: 20 31 20 3b 20 23 20 43 6f 64 65 20 66 6f 72 20 1 ; # Code for
1c30: 73 79 6d 62 6f 6c 73 20 77 68 69 63 68 20 61 72 symbols which ar
1c40: 65 20 74 61 67 73 2e 0a 20 20 20 20 74 79 70 65 e tags.. type
1c50: 76 61 72 69 61 62 6c 65 20 6d 79 62 72 61 6e 63 variable mybranc
1c60: 68 20 20 20 20 20 20 20 20 20 20 32 20 3b 20 23 h 2 ; #
1c70: 20 43 6f 64 65 20 66 6f 72 20 73 79 6d 62 6f 6c Code for symbol
1c80: 73 20 77 68 69 63 68 20 61 72 65 20 62 72 61 6e s which are bran
1c90: 63 68 65 73 2e 0a 20 20 20 20 74 79 70 65 76 61 ches.. typeva
1ca0: 72 69 61 62 6c 65 20 6d 79 75 6e 64 65 66 20 20 riable myundef
1cb0: 20 20 20 20 20 20 20 20 20 33 20 3b 20 23 20 43 3 ; # C
1cc0: 6f 64 65 20 66 6f 72 20 73 79 6d 62 6f 6c 73 20 ode for symbols
1cd0: 6f 66 20 75 6e 6b 6e 6f 77 6e 20 74 79 70 65 2e of unknown type.
1ce0: 0a 20 20 20 20 74 79 70 65 76 61 72 69 61 62 6c . typevariabl
1cf0: 65 20 6d 79 73 79 6d 74 79 70 65 20 2d 61 72 72 e mysymtype -arr
1d00: 61 79 20 7b 7d 20 3b 20 23 20 4d 61 70 20 66 72 ay {} ; # Map fr
1d10: 6f 6d 20 74 79 70 65 20 63 6f 64 65 20 74 6f 20 om type code to
1d20: 6c 61 62 65 6c 20 66 6f 72 20 74 68 65 20 6c 6f label for the lo
1d30: 67 2e 0a 0a 20 20 20 20 74 79 70 65 6d 65 74 68 g... typemeth
1d40: 6f 64 20 75 6e 64 65 66 20 20 20 20 7b 7d 20 7b od undef {} {
1d50: 20 72 65 74 75 72 6e 20 24 6d 79 75 6e 64 65 66 return $myundef
1d60: 20 20 20 20 7d 0a 20 20 20 20 74 79 70 65 6d 65 }. typeme
1d70: 74 68 6f 64 20 65 78 63 6c 75 64 65 64 20 7b 7d thod excluded {}
1d80: 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 65 78 63 { return $myexc
1d90: 6c 75 64 65 64 20 7d 0a 20 20 20 20 74 79 70 65 luded }. type
1da0: 6d 65 74 68 6f 64 20 74 61 67 20 20 20 20 20 20 method tag
1db0: 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 74 {} { return $myt
1dc0: 61 67 20 20 20 20 20 20 7d 0a 20 20 20 20 74 79 ag }. ty
1dd0: 70 65 6d 65 74 68 6f 64 20 62 72 61 6e 63 68 20 pemethod branch
1de0: 20 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d {} { return $m
1df0: 79 62 72 61 6e 63 68 20 20 20 7d 0a 0a 20 20 20 ybranch }..
1e00: 20 74 79 70 65 6d 65 74 68 6f 64 20 70 72 69 6e typemethod prin
1e10: 74 72 75 6c 65 73 74 61 74 69 73 74 69 63 73 20 trulestatistics
1e20: 7b 7d 20 7b 0a 09 6c 6f 67 20 77 72 69 74 65 20 {} {..log write
1e30: 32 20 73 79 6d 62 6f 6c 20 22 52 75 6c 65 20 75 2 symbol "Rule u
1e40: 73 61 67 65 20 73 74 61 74 69 73 74 69 63 73 3a sage statistics:
1e50: 22 0a 0a 09 73 65 74 20 66 6d 74 20 25 5b 73 74 "...set fmt %[st
1e60: 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 6d 79 6e ring length $myn
1e70: 75 6d 5d 73 0a 09 73 65 74 20 61 6c 6c 20 30 0a um]s..set all 0.
1e80: 0a 09 66 6f 72 65 61 63 68 20 6b 65 79 20 5b 6c ..foreach key [l
1e90: 73 6f 72 74 20 5b 61 72 72 61 79 20 6e 61 6d 65 sort [array name
1ea0: 73 20 6d 79 72 75 6c 65 63 6f 75 6e 74 5d 5d 20 s myrulecount]]
1eb0: 7b 0a 09 20 20 20 20 6c 6f 67 20 77 72 69 74 65 {.. log write
1ec0: 20 32 20 73 79 6d 62 6f 6c 20 22 2a 20 5b 66 6f 2 symbol "* [fo
1ed0: 72 6d 61 74 20 24 66 6d 74 20 24 6d 79 72 75 6c rmat $fmt $myrul
1ee0: 65 63 6f 75 6e 74 28 24 6b 65 79 29 5d 20 24 6b ecount($key)] $k
1ef0: 65 79 22 0a 09 20 20 20 20 69 6e 63 72 20 61 6c ey".. incr al
1f00: 6c 20 24 6d 79 72 75 6c 65 63 6f 75 6e 74 28 24 l $myrulecount($
1f10: 6b 65 79 29 0a 09 7d 0a 0a 09 6c 6f 67 20 77 72 key)..}...log wr
1f20: 69 74 65 20 32 20 73 79 6d 62 6f 6c 20 22 3d 20 ite 2 symbol "=
1f30: 5b 66 6f 72 6d 61 74 20 24 66 6d 74 20 24 61 6c [format $fmt $al
1f40: 6c 5d 20 74 6f 74 61 6c 22 0a 09 72 65 74 75 72 l] total"..retur
1f50: 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 53 n. }.. # S
1f60: 74 61 74 69 73 74 69 63 73 20 6f 6e 20 68 6f 77 tatistics on how
1f70: 20 6f 66 74 65 6e 20 65 61 63 68 20 27 72 75 6c often each 'rul
1f80: 65 27 20 77 61 73 20 75 73 65 64 20 74 6f 20 64 e' was used to d
1f90: 65 63 69 64 65 20 6f 6e 20 74 68 65 0a 20 20 20 ecide on the.
1fa0: 20 23 20 74 79 70 65 20 6f 66 20 61 20 73 79 6d # type of a sym
1fb0: 62 6f 6c 2e 0a 20 20 20 20 74 79 70 65 76 61 72 bol.. typevar
1fc0: 69 61 62 6c 65 20 6d 79 72 75 6c 65 63 6f 75 6e iable myrulecoun
1fd0: 74 20 2d 61 72 72 61 79 20 7b 0a 09 48 61 73 43 t -array {..HasC
1fe0: 6f 6d 6d 69 74 73 20 30 0a 09 49 73 54 68 65 54 ommits 0..IsTheT
1ff0: 72 75 6e 6b 20 30 0a 09 55 6e 61 6d 62 69 67 6f runk 0..Unambigo
2000: 75 73 20 30 0a 09 55 6e 64 65 63 69 64 65 64 5f us 0..Undecided_
2010: 20 30 0a 09 55 73 65 72 43 6f 6e 66 69 67 20 30 0..UserConfig 0
2020: 0a 09 56 6f 74 65 43 6f 75 6e 74 73 20 30 0a 20 ..VoteCounts 0.
2030: 20 20 20 7d 0a 0a 20 20 20 20 74 79 70 65 6d 65 }.. typeme
2040: 74 68 6f 64 20 70 72 69 6e 74 74 79 70 65 73 74 thod printtypest
2050: 61 74 69 73 74 69 63 73 20 7b 7d 20 7b 0a 09 6c atistics {} {..l
2060: 6f 67 20 77 72 69 74 65 20 32 20 73 79 6d 62 6f og write 2 symbo
2070: 6c 20 22 53 79 6d 62 6f 6c 20 74 79 70 65 20 73 l "Symbol type s
2080: 74 61 74 69 73 74 69 63 73 3a 22 0a 0a 09 73 65 tatistics:"...se
2090: 74 20 66 6d 74 20 25 5b 73 74 72 69 6e 67 20 6c t fmt %[string l
20a0: 65 6e 67 74 68 20 24 6d 79 6e 75 6d 5d 73 0a 09 ength $mynum]s..
20b0: 73 65 74 20 61 6c 6c 20 30 0a 0a 09 66 6f 72 65 set all 0...fore
20c0: 61 63 68 20 7b 73 74 79 70 65 20 73 70 6c 75 72 ach {stype splur
20d0: 61 6c 20 6e 7d 20 5b 73 74 61 74 65 20 72 75 6e al n} [state run
20e0: 20 7b 0a 09 20 20 20 20 53 45 4c 45 43 54 20 54 {.. SELECT T
20f0: 2e 6e 61 6d 65 2c 20 54 2e 70 6c 75 72 61 6c 2c .name, T.plural,
2100: 20 43 4f 55 4e 54 20 28 73 2e 73 69 64 29 0a 09 COUNT (s.sid)..
2110: 20 20 20 20 46 52 4f 4d 20 73 79 6d 62 6f 6c 20 FROM symbol
2120: 53 2c 20 73 79 6d 74 79 70 65 20 54 0a 09 20 20 S, symtype T..
2130: 20 20 57 48 45 52 45 20 53 2e 74 79 70 65 20 3d WHERE S.type =
2140: 20 54 2e 74 69 64 0a 09 20 20 20 20 47 52 4f 55 T.tid.. GROU
2150: 50 20 42 59 20 54 2e 6e 61 6d 65 0a 09 20 20 20 P BY T.name..
2160: 20 4f 52 44 45 52 20 42 59 20 54 2e 6e 61 6d 65 ORDER BY T.name
2170: 0a 09 20 20 20 20 3b 0a 09 7d 5d 20 7b 0a 09 20 .. ;..}] {..
2180: 20 20 20 6c 6f 67 20 77 72 69 74 65 20 32 20 73 log write 2 s
2190: 79 6d 62 6f 6c 20 22 2a 20 5b 66 6f 72 6d 61 74 ymbol "* [format
21a0: 20 24 66 6d 74 20 24 6e 5d 20 5b 73 70 20 24 6e $fmt $n] [sp $n
21b0: 20 24 73 74 79 70 65 20 24 73 70 6c 75 72 61 6c $stype $splural
21c0: 5d 22 0a 09 20 20 20 20 69 6e 63 72 20 61 6c 6c ]".. incr all
21d0: 20 24 6e 0a 09 7d 0a 0a 09 6c 6f 67 20 77 72 69 $n..}...log wri
21e0: 74 65 20 32 20 73 79 6d 62 6f 6c 20 22 3d 20 5b te 2 symbol "= [
21f0: 66 6f 72 6d 61 74 20 24 66 6d 74 20 24 61 6c 6c format $fmt $all
2200: 5d 20 74 6f 74 61 6c 22 0a 09 72 65 74 75 72 6e ] total"..return
2210: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 74 79 70 65 . }.. type
2220: 76 61 72 69 61 62 6c 65 20 6d 79 6e 75 6d 20 30 variable mynum 0
2230: 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 23 .. # # ## ###
2240: 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 ##### ########
2250: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 #############.
2260: 20 20 23 23 20 49 6e 74 65 72 6e 61 6c 20 6d 65 ## Internal me
2270: 74 68 6f 64 73 0a 0a 20 20 20 20 6d 65 74 68 6f thods.. metho
2280: 64 20 55 73 65 72 43 6f 6e 66 69 67 20 7b 7d 20 d UserConfig {}
2290: 7b 0a 09 73 65 74 20 70 72 6f 6a 65 63 74 20 5b {..set project [
22a0: 24 6d 79 70 72 6f 6a 65 63 74 20 62 61 73 65 5d $myproject base]
22b0: 0a 0a 09 23 20 46 69 72 73 74 20 63 68 65 63 6b ...# First check
22c0: 20 69 66 20 74 68 65 20 75 73 65 72 20 72 65 71 if the user req
22d0: 75 65 73 74 65 64 20 74 68 65 20 65 78 63 6c 75 uested the exclu
22e0: 73 69 6f 6e 20 6f 66 20 74 68 65 0a 09 23 20 73 sion of the..# s
22f0: 79 6d 62 6f 6c 20 66 72 6f 6d 20 63 6f 6e 76 65 ymbol from conve
2300: 72 73 69 6f 6e 2e 0a 0a 09 66 6f 72 65 61 63 68 rsion....foreach
2310: 20 65 78 20 24 6d 79 65 78 63 6c 75 64 65 70 61 ex $myexcludepa
2320: 74 74 65 72 6e 20 7b 0a 09 20 20 20 20 73 74 72 ttern {.. str
2330: 75 63 74 3a 3a 6c 69 73 74 20 61 73 73 69 67 6e uct::list assign
2340: 20 24 65 78 20 70 70 20 73 70 0a 09 20 20 20 20 $ex pp sp..
2350: 69 66 20 7b 21 5b 73 74 72 69 6e 67 20 6d 61 74 if {![string mat
2360: 63 68 20 24 70 70 20 24 70 72 6f 6a 65 63 74 5d ch $pp $project]
2370: 7d 20 63 6f 6e 74 69 6e 75 65 0a 09 20 20 20 20 } continue..
2380: 69 66 20 7b 21 5b 73 74 72 69 6e 67 20 6d 61 74 if {![string mat
2390: 63 68 20 24 73 70 20 24 6d 79 6e 61 6d 65 5d 7d ch $sp $myname]}
23a0: 20 20 63 6f 6e 74 69 6e 75 65 0a 09 20 20 20 20 continue..
23b0: 72 65 74 75 72 6e 20 24 6d 79 65 78 63 6c 75 64 return $myexclud
23c0: 65 64 0a 09 7d 0a 0a 09 23 20 49 66 20 74 68 65 ed..}...# If the
23d0: 20 73 79 6d 62 6f 6c 20 69 73 20 6e 6f 74 20 65 symbol is not e
23e0: 78 63 6c 75 64 65 64 20 66 75 72 74 68 65 72 20 xcluded further
23f0: 63 68 65 63 6b 20 69 66 20 74 68 65 20 75 73 65 check if the use
2400: 72 0a 09 23 20 66 6f 72 63 65 73 20 69 74 73 20 r..# forces its
2410: 63 6f 6e 76 65 72 73 69 6f 6e 20 61 73 20 61 20 conversion as a
2420: 73 70 65 63 69 66 69 63 20 74 79 70 65 2e 0a 0a specific type...
2430: 09 66 6f 72 65 61 63 68 20 7b 65 78 20 73 74 79 .foreach {ex sty
2440: 70 65 7d 20 24 6d 79 66 6f 72 63 65 70 61 74 74 pe} $myforcepatt
2450: 65 72 6e 20 7b 0a 09 20 20 20 20 73 74 72 75 63 ern {.. struc
2460: 74 3a 3a 6c 69 73 74 20 61 73 73 69 67 6e 20 24 t::list assign $
2470: 65 78 20 70 70 20 73 70 0a 09 20 20 20 20 69 66 ex pp sp.. if
2480: 20 7b 21 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 {![string match
2490: 20 24 70 70 20 24 70 72 6f 6a 65 63 74 5d 7d 20 $pp $project]}
24a0: 63 6f 6e 74 69 6e 75 65 0a 09 20 20 20 20 69 66 continue.. if
24b0: 20 7b 21 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 {![string match
24c0: 20 24 73 70 20 24 6d 79 6e 61 6d 65 5d 7d 20 20 $sp $myname]}
24d0: 63 6f 6e 74 69 6e 75 65 0a 09 20 20 20 20 72 65 continue.. re
24e0: 74 75 72 6e 20 24 73 74 79 70 65 0a 09 7d 0a 0a turn $stype..}..
24f0: 09 23 20 4e 6f 74 68 69 6e 67 20 69 73 20 66 6f .# Nothing is fo
2500: 72 63 65 64 2c 20 68 61 76 65 20 74 68 65 20 6d rced, have the m
2510: 61 69 6e 20 73 79 73 74 65 6d 20 68 61 6e 64 20 ain system hand
2520: 74 68 65 20 73 79 6d 62 6f 6c 20 6f 76 65 72 0a the symbol over.
2530: 09 23 20 74 6f 20 74 68 65 20 72 65 67 75 6c 61 .# to the regula
2540: 72 20 68 65 75 72 69 73 74 69 63 73 2e 0a 0a 09 r heuristics....
2550: 72 65 74 75 72 6e 20 24 6d 79 75 6e 64 65 66 0a return $myundef.
2560: 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f }.. metho
2570: 64 20 55 6e 61 6d 62 69 67 6f 75 73 20 7b 7d 20 d Unambigous {}
2580: 7b 0a 09 23 20 49 66 20 61 20 73 79 6d 62 6f 6c {..# If a symbol
2590: 20 69 73 20 75 73 65 64 20 75 6e 61 6d 62 69 67 is used unambig
25a0: 75 6f 75 73 6c 79 20 61 73 20 61 20 74 61 67 2f uously as a tag/
25b0: 62 72 61 6e 63 68 2c 20 63 6f 6e 76 65 72 74 0a branch, convert.
25c0: 09 23 20 69 74 20 61 73 20 73 75 63 68 2e 0a 0a .# it as such...
25d0: 09 73 65 74 20 69 73 74 61 67 20 20 20 20 5b 65 .set istag [e
25e0: 78 70 72 20 7b 24 6d 79 74 61 67 63 6f 75 6e 74 xpr {$mytagcount
25f0: 20 20 20 20 3e 20 30 7d 5d 0a 09 73 65 74 20 69 > 0}]..set i
2600: 73 62 72 61 6e 63 68 20 5b 65 78 70 72 20 7b 24 sbranch [expr {$
2610: 6d 79 62 72 61 6e 63 68 63 6f 75 6e 74 20 3e 20 mybranchcount >
2620: 30 20 7c 7c 20 24 6d 79 63 6f 6d 6d 69 74 63 6f 0 || $mycommitco
2630: 75 6e 74 20 3e 20 30 7d 5d 0a 0a 09 69 66 20 7b unt > 0}]...if {
2640: 24 69 73 74 61 67 20 26 26 20 24 69 73 62 72 61 $istag && $isbra
2650: 6e 63 68 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d nch} { return $m
2660: 79 75 6e 64 65 66 20 20 7d 0a 09 69 66 20 7b 24 yundef }..if {$
2670: 69 73 74 61 67 7d 20 20 20 20 20 20 20 20 20 20 istag}
2680: 20 20 20 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 { return $my
2690: 74 61 67 20 20 20 20 7d 0a 09 69 66 20 7b 24 69 tag }..if {$i
26a0: 73 62 72 61 6e 63 68 7d 20 20 20 20 20 20 20 20 sbranch}
26b0: 20 20 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 62 { return $myb
26c0: 72 61 6e 63 68 20 7d 0a 0a 09 23 20 53 79 6d 62 ranch }...# Symb
26d0: 6f 6c 20 77 61 73 20 6e 6f 74 20 75 73 65 64 20 ol was not used
26e0: 61 74 20 61 6c 6c 2e 0a 09 72 65 74 75 72 6e 20 at all...return
26f0: 24 6d 79 75 6e 64 65 66 0a 20 20 20 20 7d 0a 0a $myundef. }..
2700: 20 20 20 20 6d 65 74 68 6f 64 20 48 61 73 43 6f method HasCo
2710: 6d 6d 69 74 73 20 7b 7d 20 7b 0a 09 23 20 49 66 mmits {} {..# If
2720: 20 74 68 65 72 65 20 77 61 73 20 65 76 65 72 20 there was ever
2730: 61 20 63 6f 6d 6d 69 74 20 6f 6e 20 74 68 65 20 a commit on the
2740: 73 79 6d 62 6f 6c 2c 20 63 6f 6e 76 65 72 74 20 symbol, convert
2750: 69 74 20 61 73 20 61 0a 09 23 20 62 72 61 6e 63 it as a..# branc
2760: 68 2e 0a 0a 09 69 66 20 7b 24 6d 79 63 6f 6d 6d h....if {$mycomm
2770: 69 74 63 6f 75 6e 74 20 3e 20 30 7d 20 7b 20 72 itcount > 0} { r
2780: 65 74 75 72 6e 20 24 6d 79 62 72 61 6e 63 68 20 eturn $mybranch
2790: 7d 0a 09 72 65 74 75 72 6e 20 24 6d 79 75 6e 64 }..return $myund
27a0: 65 66 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 ef. }.. me
27b0: 74 68 6f 64 20 56 6f 74 65 43 6f 75 6e 74 73 20 thod VoteCounts
27c0: 7b 7d 20 7b 0a 09 23 20 43 6f 6e 76 65 72 74 20 {} {..# Convert
27d0: 74 68 65 20 73 79 6d 62 6f 6c 20 62 61 73 65 64 the symbol based
27e0: 20 6f 6e 20 68 6f 77 20 6f 66 74 65 6e 20 69 74 on how often it
27f0: 20 77 61 73 20 75 73 65 64 20 61 73 20 61 0a 09 was used as a..
2800: 23 20 62 72 61 6e 63 68 2f 74 61 67 2e 20 57 68 # branch/tag. Wh
2810: 69 63 68 65 76 65 72 20 68 61 70 70 65 6e 65 64 ichever happened
2820: 20 6d 6f 72 65 20 6f 66 74 65 6e 20 64 65 74 65 more often dete
2830: 72 6d 69 6e 65 73 20 68 6f 77 20 74 68 65 0a 09 rmines how the..
2840: 23 20 73 79 6d 62 6f 6c 20 69 73 20 63 6f 6e 76 # symbol is conv
2850: 65 72 74 65 64 2e 0a 0a 09 69 66 20 7b 24 6d 79 erted....if {$my
2860: 74 61 67 63 6f 75 6e 74 20 3e 20 24 6d 79 62 72 tagcount > $mybr
2870: 61 6e 63 68 63 6f 75 6e 74 7d 20 7b 20 72 65 74 anchcount} { ret
2880: 75 72 6e 20 24 6d 79 74 61 67 20 7d 0a 09 69 66 urn $mytag }..if
2890: 20 7b 24 6d 79 74 61 67 63 6f 75 6e 74 20 3c 20 {$mytagcount <
28a0: 24 6d 79 62 72 61 6e 63 68 63 6f 75 6e 74 7d 20 $mybranchcount}
28b0: 7b 20 72 65 74 75 72 6e 20 24 6d 79 62 72 61 6e { return $mybran
28c0: 63 68 20 7d 0a 09 72 65 74 75 72 6e 20 24 6d 79 ch }..return $my
28d0: 75 6e 64 65 66 0a 20 20 20 20 7d 0a 0a 20 20 20 undef. }..
28e0: 20 6d 65 74 68 6f 64 20 4d 61 72 6b 41 73 20 7b method MarkAs {
28f0: 6c 61 62 65 6c 20 63 68 6f 73 65 6e 7d 20 7b 0a label chosen} {.
2900: 09 6c 6f 67 20 77 72 69 74 65 20 33 20 73 79 6d .log write 3 sym
2910: 62 6f 6c 20 22 5c 5b 24 6c 61 62 65 6c 5c 5d 20 bol "\[$label\]
2920: 43 6f 6e 76 65 72 74 69 6e 67 20 73 79 6d 62 6f Converting symbo
2930: 6c 20 27 24 6d 79 6e 61 6d 65 27 20 61 73 20 24 l '$myname' as $
2940: 6d 79 73 79 6d 74 79 70 65 28 24 63 68 6f 73 65 mysymtype($chose
2950: 6e 29 22 0a 0a 09 73 65 74 20 6d 79 74 79 70 65 n)"...set mytype
2960: 20 24 63 68 6f 73 65 6e 0a 09 69 6e 63 72 20 6d $chosen..incr m
2970: 79 72 75 6c 65 63 6f 75 6e 74 28 24 6c 61 62 65 yrulecount($labe
2980: 6c 29 0a 0a 09 23 20 54 68 69 73 20 69 73 20 73 l)...# This is s
2990: 74 6f 72 65 64 20 64 69 72 65 63 74 6c 79 20 69 tored directly i
29a0: 6e 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 nto the database
29b0: 2e 0a 09 73 74 61 74 65 20 72 75 6e 20 7b 0a 09 ...state run {..
29c0: 20 20 20 20 55 50 44 41 54 45 20 73 79 6d 62 6f UPDATE symbo
29d0: 6c 0a 09 20 20 20 20 53 45 54 20 74 79 70 65 20 l.. SET type
29e0: 3d 20 24 63 68 6f 73 65 6e 0a 09 20 20 20 20 57 = $chosen.. W
29f0: 48 45 52 45 20 73 69 64 20 3d 20 24 6d 79 69 64 HERE sid = $myid
2a00: 0a 09 20 20 20 20 3b 0a 09 7d 0a 09 72 65 74 75 .. ;..}..retu
2a10: 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 rn. }.. #
2a20: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 # ## ### ##### #
2a30: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
2a40: 23 23 23 23 23 0a 20 20 20 20 23 23 20 43 6f 6e #####. ## Con
2a50: 66 69 67 75 72 61 74 69 6f 6e 0a 0a 20 20 20 20 figuration..
2a60: 70 72 61 67 6d 61 20 2d 68 61 73 74 79 70 65 69 pragma -hastypei
2a70: 6e 66 6f 20 20 20 20 6e 6f 20 20 3b 20 23 20 6e nfo no ; # n
2a80: 6f 20 74 79 70 65 20 69 6e 74 72 6f 73 70 65 63 o type introspec
2a90: 74 69 6f 6e 0a 20 20 20 20 70 72 61 67 6d 61 20 tion. pragma
2aa0: 2d 68 61 73 69 6e 66 6f 20 20 20 20 20 20 20 20 -hasinfo
2ab0: 6e 6f 20 20 3b 20 23 20 6e 6f 20 6f 62 6a 65 63 no ; # no objec
2ac0: 74 20 69 6e 74 72 6f 73 70 65 63 74 69 6f 6e 0a t introspection.
2ad0: 20 20 20 20 70 72 61 67 6d 61 20 2d 73 69 6d 70 pragma -simp
2ae0: 6c 65 64 69 73 70 61 74 63 68 20 79 65 73 20 3b ledispatch yes ;
2af0: 20 23 20 73 69 6d 70 6c 65 20 66 61 73 74 20 64 # simple fast d
2b00: 69 73 70 61 74 63 68 0a 0a 20 20 20 20 23 20 23 ispatch.. # #
2b10: 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 ## ### ##### ##
2b20: 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 ###### #########
2b30: 23 23 23 23 0a 7d 0a 0a 6e 61 6d 65 73 70 61 63 ####.}..namespac
2b40: 65 20 65 76 61 6c 20 3a 3a 76 63 3a 3a 66 6f 73 e eval ::vc::fos
2b50: 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 sil::import::cvs
2b60: 3a 3a 70 72 6f 6a 65 63 74 20 7b 0a 20 20 20 20 ::project {.
2b70: 6e 61 6d 65 73 70 61 63 65 20 65 78 70 6f 72 74 namespace export
2b80: 20 73 79 6d 0a 20 20 20 20 6e 61 6d 65 73 70 61 sym. namespa
2b90: 63 65 20 65 76 61 6c 20 73 79 6d 20 7b 0a 09 6e ce eval sym {..n
2ba0: 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 amespace import
2bb0: 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d ::vc::fossil::im
2bc0: 70 6f 72 74 3a 3a 63 76 73 3a 3a 73 74 61 74 65 port::cvs::state
2bd0: 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f ..namespace impo
2be0: 72 74 20 3a 3a 76 63 3a 3a 74 6f 6f 6c 73 3a 3a rt ::vc::tools::
2bf0: 6d 69 73 63 3a 3a 2a 0a 09 6e 61 6d 65 73 70 61 misc::*..namespa
2c00: 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a ce import ::vc::
2c10: 74 6f 6f 6c 73 3a 3a 74 72 6f 75 62 6c 65 0a 09 tools::trouble..
2c20: 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 namespace import
2c30: 20 3a 3a 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6c 6f ::vc::tools::lo
2c40: 67 0a 09 6c 6f 67 20 72 65 67 69 73 74 65 72 20 g..log register
2c50: 73 79 6d 62 6f 6c 0a 20 20 20 20 7d 0a 7d 0a 0a symbol. }.}..
2c60: 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 # # ## ### #####
2c70: 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######## ######
2c80: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
2c90: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 #############.##
2ca0: 20 52 65 61 64 79 0a 0a 70 61 63 6b 61 67 65 20 Ready..package
2cb0: 70 72 6f 76 69 64 65 20 76 63 3a 3a 66 6f 73 73 provide vc::foss
2cc0: 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a il::import::cvs:
2cd0: 3a 70 72 6f 6a 65 63 74 3a 3a 73 79 6d 20 31 2e :project::sym 1.
2ce0: 30 0a 72 65 74 75 72 6e 0a 0.return.