Artifact f38b4ceaf738ccb451e999f68a19724bc60afdc8:
File
tools/cvs2fossil/lib/c2f_file.tcl
part of check-in
[40eaf58ec7]
- Extended rcs parser with another callback run after the processing of the revision tree completed, before starting on description and delta texts. Updated file class to intercept the callback.
by
aku on
2007-10-12 07:20:47.
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 46 69 6c ########..## Fil
0200: 65 2c 20 70 61 72 74 20 6f 66 20 61 20 70 72 6f e, part of a pro
0210: 6a 65 63 74 2c 20 70 61 72 74 20 6f 66 20 61 20 ject, part of a
0220: 43 56 53 20 72 65 70 6f 73 69 74 6f 72 79 2e 20 CVS repository.
0230: 4d 75 6c 74 69 70 6c 65 0a 23 23 20 69 6e 73 74 Multiple.## inst
0240: 61 6e 63 65 73 20 61 72 65 20 70 6f 73 73 69 62 ances are possib
0250: 6c 65 2e 0a 0a 23 20 23 20 23 23 20 23 23 23 20 le...# # ## ###
0260: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 ##### ######## #
0270: 23 23 23 23 23 23 23 23 23 23 23 23 20 23 23 23 ############ ###
0280: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0290: 23 23 0a 23 23 20 52 65 71 75 69 72 65 6d 65 6e ##.## Requiremen
02a0: 74 73 0a 0a 70 61 63 6b 61 67 65 20 72 65 71 75 ts..package requ
02b0: 69 72 65 20 54 63 6c 20 38 2e 34 20 20 20 20 20 ire Tcl 8.4
02c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02d0: 20 20 20 20 20 20 20 20 3b 20 23 20 52 65 71 75 ; # Requ
02e0: 69 72 65 64 20 72 75 6e 74 69 6d 65 2e 0a 70 61 ired runtime..pa
02f0: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 73 6e ckage require sn
0300: 69 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 it
0310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0320: 20 20 3b 20 23 20 4f 4f 20 73 79 73 74 65 6d 2e ; # OO system.
0330: 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 .package require
0340: 20 73 74 72 75 63 74 3a 3a 73 65 74 20 20 20 20 struct::set
0350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0360: 20 20 20 20 20 3b 20 23 20 53 65 74 20 6f 70 65 ; # Set ope
0370: 72 61 74 69 6f 6e 73 2e 0a 70 61 63 6b 61 67 65 rations..package
0380: 20 72 65 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 require vc::fos
0390: 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 sil::import::cvs
03a0: 3a 3a 66 69 6c 65 3a 3a 72 65 76 20 20 3b 20 23 ::file::rev ; #
03b0: 20 43 56 53 20 70 65 72 20 66 69 6c 65 20 72 65 CVS per file re
03c0: 76 69 73 69 6f 6e 73 2e 0a 70 61 63 6b 61 67 65 visions..package
03d0: 20 72 65 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 require vc::fos
03e0: 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 sil::import::cvs
03f0: 3a 3a 66 69 6c 65 3a 3a 73 79 6d 20 20 3b 20 23 ::file::sym ; #
0400: 20 43 56 53 20 70 65 72 20 66 69 6c 65 20 73 79 CVS per file sy
0410: 6d 62 6f 6c 73 2e 0a 0a 23 20 23 20 23 23 20 23 mbols...# # ## #
0420: 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 ## ##### #######
0430: 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 20 # #############
0440: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0450: 23 23 23 23 23 0a 23 23 20 0a 0a 73 6e 69 74 3a #####.## ..snit:
0460: 3a 74 79 70 65 20 3a 3a 76 63 3a 3a 66 6f 73 73 :type ::vc::foss
0470: 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a il::import::cvs:
0480: 3a 66 69 6c 65 20 7b 0a 20 20 20 20 23 20 23 20 :file {. # #
0490: 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 ## ### ##### ###
04a0: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 ##### ##########
04b0: 23 23 23 0a 20 20 20 20 23 23 20 50 75 62 6c 69 ###. ## Publi
04c0: 63 20 41 50 49 0a 0a 20 20 20 20 63 6f 6e 73 74 c API.. const
04d0: 72 75 63 74 6f 72 20 7b 70 61 74 68 20 70 72 6f ructor {path pro
04e0: 6a 65 63 74 7d 20 7b 0a 09 73 65 74 20 6d 79 70 ject} {..set myp
04f0: 61 74 68 20 20 20 20 24 70 61 74 68 0a 09 73 65 ath $path..se
0500: 74 20 6d 79 70 72 6f 6a 65 63 74 20 24 70 72 6f t myproject $pro
0510: 6a 65 63 74 0a 09 72 65 74 75 72 6e 0a 20 20 20 ject..return.
0520: 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 70 }.. method p
0530: 61 74 68 20 20 20 20 7b 7d 20 7b 20 72 65 74 75 ath {} { retu
0540: 72 6e 20 24 6d 79 70 61 74 68 20 7d 0a 20 20 20 rn $mypath }.
0550: 20 6d 65 74 68 6f 64 20 70 72 6f 6a 65 63 74 20 method project
0560: 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 70 {} { return $myp
0570: 72 6f 6a 65 63 74 20 7d 0a 0a 20 20 20 20 23 20 roject }.. #
0580: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 # ## ### ##### #
0590: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
05a0: 23 23 23 23 23 0a 20 20 20 20 23 23 20 4d 65 74 #####. ## Met
05b0: 68 6f 64 73 20 72 65 71 75 69 72 65 64 20 66 6f hods required fo
05c0: 72 20 74 68 65 20 63 6c 61 73 73 20 74 6f 20 62 r the class to b
05d0: 65 20 61 20 73 69 6e 6b 20 6f 66 20 74 68 65 20 e a sink of the
05e0: 72 63 73 20 70 61 72 73 65 72 0a 0a 20 20 20 20 rcs parser..
05f0: 23 6d 65 74 68 6f 64 20 62 65 67 69 6e 20 7b 7d #method begin {}
0600: 20 7b 70 75 74 73 20 62 65 67 69 6e 7d 0a 20 20 {puts begin}.
0610: 20 20 23 6d 65 74 68 6f 64 20 73 65 74 68 65 61 #method sethea
0620: 64 20 7b 68 7d 20 7b 70 75 74 73 20 68 65 61 64 d {h} {puts head
0630: 3d 24 68 7d 0a 20 20 20 20 23 6d 65 74 68 6f 64 =$h}. #method
0640: 20 73 65 74 70 72 69 6e 63 69 70 61 6c 62 72 61 setprincipalbra
0650: 6e 63 68 20 7b 62 7d 20 7b 70 75 74 73 20 70 62 nch {b} {puts pb
0660: 3d 24 62 7d 0a 20 20 20 20 23 6d 65 74 68 6f 64 =$b}. #method
0670: 20 64 65 66 74 61 67 20 7b 73 20 72 7d 20 7b 70 deftag {s r} {p
0680: 75 74 73 20 24 73 3d 24 72 7d 0a 20 20 20 20 23 uts $s=$r}. #
0690: 6d 65 74 68 6f 64 20 73 65 74 63 6f 6d 6d 65 6e method setcommen
06a0: 74 20 7b 63 7d 20 7b 70 75 74 73 20 63 6f 6d 6d t {c} {puts comm
06b0: 65 6e 74 3d 24 63 7d 0a 20 20 20 20 23 6d 65 74 ent=$c}. #met
06c0: 68 6f 64 20 61 64 6d 69 6e 64 6f 6e 65 20 7b 7d hod admindone {}
06d0: 20 7b 70 75 74 73 20 61 64 6d 69 6e 64 6f 6e 65 {puts admindone
06e0: 7d 0a 20 20 20 20 23 6d 65 74 68 6f 64 20 64 65 }. #method de
06f0: 66 20 7b 72 65 76 20 64 61 74 65 20 61 75 74 68 f {rev date auth
0700: 6f 72 20 73 74 61 74 65 20 6e 65 78 74 20 62 72 or state next br
0710: 61 6e 63 68 65 73 7d 20 7b 70 75 74 73 20 22 64 anches} {puts "d
0720: 65 66 20 24 72 65 76 20 24 64 61 74 65 20 24 61 ef $rev $date $a
0730: 75 74 68 6f 72 20 24 73 74 61 74 65 20 24 6e 65 uthor $state $ne
0740: 78 74 20 24 62 72 61 6e 63 68 65 73 22 7d 0a 20 xt $branches"}.
0750: 20 20 20 23 6d 65 74 68 6f 64 20 64 65 66 64 6f #method defdo
0760: 6e 65 20 7b 7d 20 7b 70 75 74 73 20 64 65 66 2d ne {} {puts def-
0770: 64 6f 6e 65 7d 0a 20 20 20 20 23 6d 65 74 68 6f done}. #metho
0780: 64 20 73 65 74 64 65 73 63 20 7b 64 7d 20 7b 70 d setdesc {d} {p
0790: 75 74 73 20 64 65 73 63 3d 24 64 7d 0a 20 20 20 uts desc=$d}.
07a0: 20 23 6d 65 74 68 6f 64 20 65 78 74 65 6e 64 20 #method extend
07b0: 7b 72 65 76 20 63 6f 6d 6d 69 74 6d 73 67 20 64 {rev commitmsg d
07c0: 65 6c 74 61 72 61 6e 67 65 7d 20 7b 70 75 74 73 eltarange} {puts
07d0: 20 22 65 78 74 65 6e 64 20 24 63 6f 6d 6d 69 74 "extend $commit
07e0: 6d 73 67 20 24 64 65 6c 74 61 72 61 6e 67 65 22 msg $deltarange"
07f0: 7d 0a 20 20 20 20 23 6d 65 74 68 6f 64 20 64 6f }. #method do
0800: 6e 65 20 7b 7d 20 7b 70 75 74 73 20 64 6f 6e 65 ne {} {puts done
0810: 7d 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 }.. # # ## ##
0820: 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 # ##### ########
0830: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 #############.
0840: 20 20 20 23 23 20 50 65 72 73 69 73 74 65 6e 63 ## Persistenc
0850: 65 20 28 70 61 73 73 20 49 49 29 0a 0a 20 20 20 e (pass II)..
0860: 20 6d 65 74 68 6f 64 20 70 65 72 73 69 73 74 20 method persist
0870: 7b 7d 20 7b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 {} {. }..
0880: 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 # # ## ### #####
0890: 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######## ######
08a0: 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 49 #######. ## I
08b0: 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 73 69 6e mplement the sin
08c0: 6b 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 62 65 k.. method be
08d0: 67 69 6e 20 7b 7d 20 7b 23 69 67 6e 6f 72 65 7d gin {} {#ignore}
08e0: 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 65 74 .. method set
08f0: 68 65 61 64 20 7b 72 65 76 6e 72 7d 20 7b 0a 09 head {revnr} {..
0900: 73 65 74 20 6d 79 68 65 61 64 20 24 72 65 76 6e set myhead $revn
0910: 72 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a r..return. }.
0920: 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 65 74 70 . method setp
0930: 72 69 6e 63 69 70 61 6c 62 72 61 6e 63 68 20 7b rincipalbranch {
0940: 62 72 61 6e 63 68 6e 72 7d 20 7b 0a 09 73 65 74 branchnr} {..set
0950: 20 6d 79 70 72 69 6e 63 69 70 61 6c 20 24 62 72 myprincipal $br
0960: 61 6e 63 68 6e 72 0a 09 72 65 74 75 72 6e 0a 20 anchnr..return.
0970: 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 }.. method
0980: 20 64 65 66 74 61 67 20 7b 6e 61 6d 65 20 72 65 deftag {name re
0990: 76 6e 72 7d 20 7b 0a 09 23 20 46 55 54 55 52 45 vnr} {..# FUTURE
09a0: 3a 20 50 65 72 66 6f 72 6d 20 73 79 6d 62 6f 6c : Perform symbol
09b0: 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 transformation
09c0: 68 65 72 65 2e 0a 0a 09 69 66 20 7b 5b 73 74 72 here....if {[str
09d0: 75 63 74 3a 3a 73 65 74 20 63 6f 6e 74 61 69 6e uct::set contain
09e0: 73 20 24 6d 79 73 79 6d 62 6f 6c 73 20 24 6e 61 s $mysymbols $na
09f0: 6d 65 5d 7d 20 7b 0a 09 20 20 20 20 74 72 6f 75 me]} {.. trou
0a00: 62 6c 65 20 66 61 74 61 6c 20 22 4d 75 6c 74 69 ble fatal "Multi
0a10: 70 6c 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 20 ple definitions
0a20: 6f 66 20 74 68 65 20 73 79 6d 62 6f 6c 20 27 24 of the symbol '$
0a30: 6e 61 6d 65 27 20 69 6e 20 27 24 6d 79 70 61 74 name' in '$mypat
0a40: 68 27 22 0a 09 20 20 20 20 72 65 74 75 72 6e 0a h'".. return.
0a50: 09 7d 0a 0a 09 73 74 72 75 63 74 3a 3a 73 65 74 .}...struct::set
0a60: 20 61 64 64 20 6d 79 73 79 6d 62 6f 6c 73 20 24 add mysymbols $
0a70: 6e 61 6d 65 0a 0a 09 69 66 20 7b 5b 72 65 76 20 name...if {[rev
0a80: 69 73 62 72 61 6e 63 68 72 65 76 6e 72 20 24 72 isbranchrevnr $r
0a90: 65 76 6e 72 20 2d 3e 20 62 72 61 6e 63 68 6e 72 evnr -> branchnr
0aa0: 5d 7d 20 7b 0a 09 20 20 20 20 24 73 65 6c 66 20 ]} {.. $self
0ab0: 41 64 64 42 72 61 6e 63 68 20 24 6e 61 6d 65 20 AddBranch $name
0ac0: 24 62 72 61 6e 63 68 6e 72 0a 09 7d 20 65 6c 73 $branchnr..} els
0ad0: 65 20 7b 0a 09 20 20 20 20 24 73 65 6c 66 20 41 e {.. $self A
0ae0: 64 64 54 61 67 20 24 6e 61 6d 65 20 24 72 65 76 ddTag $name $rev
0af0: 6e 72 0a 09 7d 0a 09 72 65 74 75 72 6e 0a 20 20 nr..}..return.
0b00: 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 }.. method
0b10: 73 65 74 63 6f 6d 6d 65 6e 74 20 7b 63 7d 20 7b setcomment {c} {
0b20: 23 20 69 67 6e 6f 72 65 7d 0a 0a 20 20 20 20 6d # ignore}.. m
0b30: 65 74 68 6f 64 20 61 64 6d 69 6e 64 6f 6e 65 20 ethod admindone
0b40: 7b 7d 20 7b 0a 09 23 20 57 65 20 64 6f 20 6e 6f {} {..# We do no
0b50: 74 68 69 6e 67 20 61 74 20 74 68 65 20 62 6f 75 thing at the bou
0b60: 6e 64 61 72 79 20 6f 66 20 61 64 6d 69 6e 20 61 ndary of admin a
0b70: 6e 64 20 72 65 76 69 73 69 6f 6e 20 64 61 74 61 nd revision data
0b80: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 . }.. meth
0b90: 6f 64 20 64 65 66 20 7b 72 65 76 6e 72 20 64 61 od def {revnr da
0ba0: 74 65 20 61 75 74 68 6f 72 20 73 74 61 74 65 20 te author state
0bb0: 6e 65 78 74 20 62 72 61 6e 63 68 65 73 7d 20 7b next branches} {
0bc0: 0a 09 24 73 65 6c 66 20 4c 6f 6f 6b 46 6f 72 55 ..$self LookForU
0bd0: 6e 6c 61 62 65 6c 65 64 42 72 61 6e 63 68 65 73 nlabeledBranches
0be0: 20 24 62 72 61 6e 63 68 65 73 0a 09 24 6d 79 70 $branches..$myp
0bf0: 72 6f 6a 65 63 74 20 61 75 74 68 6f 72 20 24 61 roject author $a
0c00: 75 74 68 6f 72 0a 0a 09 69 66 20 7b 5b 69 6e 66 uthor...if {[inf
0c10: 6f 20 65 78 69 73 74 73 20 6d 79 72 65 76 28 24 o exists myrev($
0c20: 72 65 76 6e 72 29 5d 7d 20 7b 0a 09 20 20 20 20 revnr)]} {..
0c30: 74 72 6f 75 62 6c 65 20 66 61 74 61 6c 20 22 46 trouble fatal "F
0c40: 69 6c 65 20 24 6d 79 70 61 74 68 20 63 6f 6e 74 ile $mypath cont
0c50: 61 69 6e 73 20 64 75 70 6c 69 63 61 74 65 20 64 ains duplicate d
0c60: 65 66 69 6e 69 74 69 6f 6e 73 20 66 6f 72 20 72 efinitions for r
0c70: 65 76 69 73 69 6f 6e 20 24 72 65 76 6e 72 2e 22 evision $revnr."
0c80: 0a 09 20 20 20 20 72 65 74 75 72 6e 0a 09 7d 0a .. return..}.
0c90: 0a 09 73 65 74 20 6d 79 72 65 76 28 24 72 65 76 ..set myrev($rev
0ca0: 6e 72 29 20 5b 72 65 76 20 25 41 55 54 4f 25 20 nr) [rev %AUTO%
0cb0: 24 72 65 76 6e 72 20 24 64 61 74 65 20 24 61 75 $revnr $date $au
0cc0: 74 68 6f 72 20 24 73 74 61 74 65 20 24 73 65 6c thor $state $sel
0cd0: 66 5d 0a 0a 09 52 65 63 6f 72 64 42 61 73 69 63 f]...RecordBasic
0ce0: 44 65 70 65 6e 64 65 6e 63 69 65 73 20 24 72 65 Dependencies $re
0cf0: 76 6e 72 20 24 6e 65 78 74 0a 09 72 65 74 75 72 vnr $next..retur
0d00: 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 n. }.. met
0d10: 68 6f 64 20 64 65 66 64 6f 6e 65 20 7b 7d 20 7b hod defdone {} {
0d20: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 . }.. meth
0d30: 6f 64 20 73 65 74 64 65 73 63 20 7b 64 7d 20 7b od setdesc {d} {
0d40: 23 20 69 67 6e 6f 72 65 7d 0a 0a 20 20 20 20 6d # ignore}.. m
0d50: 65 74 68 6f 64 20 65 78 74 65 6e 64 20 7b 72 65 ethod extend {re
0d60: 76 6e 72 20 63 6f 6d 6d 69 74 6d 73 67 20 64 65 vnr commitmsg de
0d70: 6c 74 61 72 61 6e 67 65 7d 20 7b 0a 09 73 65 74 ltarange} {..set
0d80: 20 63 6d 20 5b 73 74 72 69 6e 67 20 74 72 69 6d cm [string trim
0d90: 20 24 63 6f 6d 6d 69 74 6d 73 67 5d 0a 09 24 6d $commitmsg]..$m
0da0: 79 70 72 6f 6a 65 63 74 20 63 6d 65 73 73 61 67 yproject cmessag
0db0: 65 20 24 63 6d 0a 0a 09 73 65 74 20 72 65 76 20 e $cm...set rev
0dc0: 24 6d 79 72 65 76 28 24 72 65 76 6e 72 29 0a 0a $myrev($revnr)..
0dd0: 09 69 66 20 7b 5b 24 72 65 76 20 68 61 73 63 6f .if {[$rev hasco
0de0: 6d 6d 69 74 6d 73 67 5d 7d 20 7b 0a 09 20 20 20 mmitmsg]} {..
0df0: 20 23 20 41 70 70 61 72 65 6e 74 6c 79 20 72 65 # Apparently re
0e00: 70 6f 73 69 74 6f 72 69 65 73 20 65 78 69 73 74 positories exist
0e10: 20 69 6e 20 77 68 69 63 68 20 74 68 65 20 64 65 in which the de
0e20: 6c 74 61 20 64 61 74 61 0a 09 20 20 20 20 23 20 lta data.. #
0e30: 66 6f 72 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 for revision 1.1
0e40: 20 69 73 20 70 72 6f 76 69 64 65 64 20 73 65 76 is provided sev
0e50: 65 72 61 6c 20 74 69 6d 65 73 2c 20 61 74 20 6c eral times, at l
0e60: 65 61 73 74 0a 09 20 20 20 20 23 20 74 77 69 63 east.. # twic
0e70: 65 2e 20 54 68 65 20 61 63 74 75 61 6c 20 63 61 e. The actual ca
0e80: 75 73 65 20 6f 66 20 74 68 69 73 20 64 75 70 6c use of this dupl
0e90: 69 63 61 74 69 6f 6e 20 69 73 20 6e 6f 74 0a 09 ication is not..
0ea0: 20 20 20 20 23 20 6b 6e 6f 77 6e 2e 20 53 70 65 # known. Spe
0eb0: 63 75 6c 61 74 69 6f 6e 20 63 65 6e 74 65 72 73 culation centers
0ec0: 20 6f 6e 20 52 43 53 2f 43 56 53 20 62 75 67 73 on RCS/CVS bugs
0ed0: 2c 20 6f 72 20 66 72 6f 6d 0a 09 20 20 20 20 23 , or from.. #
0ee0: 20 6d 61 6e 75 61 6c 20 65 64 69 74 73 20 6f 66 manual edits of
0ef0: 20 74 68 65 20 72 65 70 6f 73 69 74 6f 72 79 20 the repository
0f00: 77 68 69 63 68 20 62 6f 72 6b 65 64 20 74 68 65 which borked the
0f10: 0a 09 20 20 20 20 23 20 69 6e 74 65 72 6e 61 6c .. # internal
0f20: 73 2e 20 57 68 61 74 65 76 65 72 20 74 68 65 20 s. Whatever the
0f30: 63 61 75 73 65 2c 20 74 65 73 74 69 6e 67 20 73 cause, testing s
0f40: 68 6f 77 65 64 20 74 68 61 74 20 62 6f 74 68 0a howed that both.
0f50: 09 20 20 20 20 23 20 63 76 73 20 61 6e 64 20 72 . # cvs and r
0f60: 63 73 20 75 73 65 20 74 68 65 20 66 69 72 73 74 cs use the first
0f70: 20 64 65 66 69 6e 69 74 69 6f 6e 20 77 68 65 6e definition when
0f80: 20 70 65 72 66 6f 72 6d 69 6e 67 20 61 0a 09 20 performing a..
0f90: 20 20 20 23 20 63 68 65 63 6b 6f 75 74 2c 20 61 # checkout, a
0fa0: 6e 64 20 77 65 20 66 6f 6c 6c 6f 77 20 74 68 65 nd we follow the
0fb0: 69 72 20 6c 65 61 64 2e 20 53 69 64 65 20 6e 6f ir lead. Side no
0fc0: 74 65 73 3a 20 27 63 76 73 0a 09 20 20 20 20 23 tes: 'cvs.. #
0fd0: 20 6c 6f 67 27 20 66 61 69 6c 73 20 6f 6e 20 73 log' fails on s
0fe0: 75 63 68 20 61 20 66 69 6c 65 2c 20 61 6e 64 20 uch a file, and
0ff0: 27 63 76 73 20 72 6c 6f 67 27 20 70 72 69 6e 74 'cvs rlog' print
1000: 73 20 74 68 65 20 6c 6f 67 0a 09 20 20 20 20 23 s the log.. #
1010: 20 6d 65 73 73 61 67 65 20 66 72 6f 6d 20 74 68 message from th
1020: 65 20 66 69 72 73 74 20 64 65 6c 74 61 2c 20 69 e first delta, i
1030: 67 6e 6f 72 69 6e 67 20 74 68 65 20 73 65 63 6f gnoring the seco
1040: 6e 64 2e 0a 0a 09 20 20 20 20 6c 6f 67 20 77 72 nd.... log wr
1050: 69 74 65 20 31 20 66 69 6c 65 20 22 49 6e 20 66 ite 1 file "In f
1060: 69 6c 65 20 24 6d 79 70 61 74 68 20 3a 20 44 75 ile $mypath : Du
1070: 70 6c 69 63 61 74 65 20 64 65 6c 74 61 20 64 61 plicate delta da
1080: 74 61 20 66 6f 72 20 72 65 76 69 73 69 6f 6e 20 ta for revision
1090: 24 72 65 76 6e 72 22 0a 09 20 20 20 20 6c 6f 67 $revnr".. log
10a0: 20 77 72 69 74 65 20 31 20 66 69 6c 65 20 22 49 write 1 file "I
10b0: 67 6e 6f 72 69 6e 67 20 74 68 65 20 64 75 70 6c gnoring the dupl
10c0: 69 63 61 74 65 22 0a 09 20 20 20 20 72 65 74 75 icate".. retu
10d0: 72 6e 0a 09 7d 0a 0a 09 23 20 45 78 74 65 6e 64 rn..}...# Extend
10e0: 20 74 68 65 20 72 65 76 69 73 69 6f 6e 20 77 69 the revision wi
10f0: 74 68 20 74 68 65 20 6e 65 77 20 69 6e 66 6f 72 th the new infor
1100: 6d 61 74 69 6f 6e 2e 20 54 68 65 20 72 65 76 69 mation. The revi
1110: 73 69 6f 6e 0a 09 23 20 6f 62 6a 65 63 74 20 75 sion..# object u
1120: 73 65 73 20 74 68 69 73 20 74 6f 20 63 6f 6d 70 ses this to comp
1130: 6c 65 74 65 20 69 74 73 20 6d 65 74 61 20 64 61 lete its meta da
1140: 74 61 20 73 65 74 2e 0a 0a 09 24 72 65 76 20 73 ta set....$rev s
1150: 65 74 63 6f 6d 6d 69 74 6d 73 67 20 24 63 6d 0a etcommitmsg $cm.
1160: 09 24 72 65 76 20 73 65 74 74 65 78 74 20 20 24 .$rev settext $
1170: 64 65 6c 74 61 72 61 6e 67 65 0a 0a 09 69 66 20 deltarange...if
1180: 7b 21 5b 72 65 76 20 69 73 74 72 75 6e 6b 72 65 {![rev istrunkre
1190: 76 6e 72 20 24 72 65 76 6e 72 5d 7d 20 7b 0a 09 vnr $revnr]} {..
11a0: 20 20 20 20 24 72 65 76 20 73 65 74 62 72 61 6e $rev setbran
11b0: 63 68 20 5b 5b 24 73 65 6c 66 20 52 65 76 32 42 ch [[$self Rev2B
11c0: 72 61 6e 63 68 20 24 72 65 76 6e 72 5d 20 6e 61 ranch $revnr] na
11d0: 6d 65 5d 0a 09 7d 0a 0a 09 23 20 49 66 20 74 68 me]..}...# If th
11e0: 69 73 20 69 73 20 72 65 76 69 73 69 6f 6e 20 31 is is revision 1
11f0: 2e 31 2c 20 77 65 20 68 61 76 65 20 74 6f 20 64 .1, we have to d
1200: 65 74 65 72 6d 69 6e 65 20 77 68 65 74 68 65 72 etermine whether
1210: 20 74 68 65 0a 09 23 20 66 69 6c 65 20 73 65 65 the..# file see
1220: 6d 73 20 74 6f 20 68 61 76 65 20 62 65 65 6e 20 ms to have been
1230: 63 72 65 61 74 65 64 20 74 68 72 6f 75 67 68 20 created through
1240: 27 63 76 73 20 61 64 64 27 20 69 6e 73 74 65 61 'cvs add' instea
1250: 64 20 6f 66 0a 09 23 20 27 63 76 73 20 69 6d 70 d of..# 'cvs imp
1260: 6f 72 74 27 2e 20 54 68 69 73 20 63 61 6e 20 62 ort'. This can b
1270: 65 20 64 6f 6e 65 20 62 79 20 6c 6f 6f 6b 69 6e e done by lookin
1280: 67 20 61 74 20 74 68 65 20 75 6e 2d 0a 09 23 20 g at the un-..#
1290: 61 64 75 6c 74 65 72 61 74 65 64 20 63 6f 6d 6d adulterated comm
12a0: 69 74 20 6d 65 73 73 61 67 65 2c 20 61 73 20 43 it message, as C
12b0: 56 53 20 75 73 65 73 20 61 20 68 61 72 64 77 69 VS uses a hardwi
12c0: 72 65 64 20 6d 61 67 69 63 0a 09 23 20 6d 65 73 red magic..# mes
12d0: 73 61 67 65 20 66 6f 72 20 74 68 65 20 6c 61 74 sage for the lat
12e0: 74 65 72 2c 20 69 2e 65 2e 20 22 49 6e 69 74 69 ter, i.e. "Initi
12f0: 61 6c 20 72 65 76 69 73 69 6f 6e 5c 6e 22 2c 20 al revision\n",
1300: 6e 6f 0a 09 23 20 70 65 72 69 6f 64 2e 20 20 28 no..# period. (
1310: 54 68 69 73 20 66 61 63 74 20 61 6c 73 6f 20 68 This fact also h
1320: 65 6c 70 73 20 75 73 20 77 68 65 6e 20 74 68 65 elps us when the
1330: 20 74 69 6d 65 20 63 6f 6d 65 73 20 74 6f 0a 09 time comes to..
1340: 23 20 64 65 74 65 72 6d 69 6e 65 20 77 68 65 74 # determine whet
1350: 68 65 72 20 74 68 69 73 20 66 69 6c 65 20 6d 69 her this file mi
1360: 67 68 74 20 68 61 76 65 20 68 61 64 20 61 20 64 ght have had a d
1370: 65 66 61 75 6c 74 20 62 72 61 6e 63 68 0a 09 23 efault branch..#
1380: 20 69 6e 20 74 68 65 20 70 61 73 74 2e 29 0a 0a in the past.)..
1390: 09 69 66 20 7b 24 72 65 76 6e 72 20 65 71 20 22 .if {$revnr eq "
13a0: 22 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 6d 79 "} {.. set my
13b0: 69 6d 70 6f 72 74 65 64 20 5b 65 78 70 72 20 7b imported [expr {
13c0: 24 63 6f 6d 6d 69 74 6d 73 67 20 65 71 20 22 49 $commitmsg eq "I
13d0: 6e 69 74 69 61 6c 20 72 65 76 69 73 69 6f 6e 5c nitial revision\
13e0: 6e 22 7d 5d 0a 09 7d 0a 0a 09 23 20 48 65 72 65 n"}]..}...# Here
13f0: 20 77 65 20 61 6c 73 6f 20 6b 65 65 70 20 74 72 we also keep tr
1400: 61 63 6b 20 6f 66 20 74 68 65 20 6f 72 64 65 72 ack of the order
1410: 20 69 6e 20 77 68 69 63 68 20 74 68 65 20 72 65 in which the re
1420: 76 69 73 69 6f 6e 73 0a 09 23 20 77 65 72 65 20 visions..# were
1430: 61 64 64 65 64 20 74 6f 20 74 68 65 20 66 69 6c added to the fil
1440: 65 2e 0a 0a 09 6c 61 70 70 65 6e 64 20 6d 79 72 e....lappend myr
1450: 65 76 69 73 69 6f 6e 73 20 24 72 65 76 0a 09 72 evisions $rev..r
1460: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 eturn. }..
1470: 20 6d 65 74 68 6f 64 20 64 6f 6e 65 20 7b 7d 20 method done {}
1480: 7b 7d 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 {}.. # # ## #
1490: 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 ## ##### #######
14a0: 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 0a # #############.
14b0: 20 20 20 20 23 23 20 53 74 61 74 65 0a 0a 20 20 ## State..
14c0: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 70 61 74 variable mypat
14d0: 68 20 20 20 20 20 20 20 20 20 20 20 20 7b 7d 20 h {}
14e0: 3b 20 23 20 50 61 74 68 20 6f 66 20 72 63 73 20 ; # Path of rcs
14f0: 61 72 63 68 69 76 65 0a 20 20 20 20 76 61 72 69 archive. vari
1500: 61 62 6c 65 20 6d 79 70 72 6f 6a 65 63 74 20 20 able myproject
1510: 20 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 50 72 {} ; # Pr
1520: 6f 6a 65 63 74 20 6f 62 6a 65 63 74 20 74 68 65 oject object the
1530: 20 66 69 6c 65 20 62 65 6c 6f 6e 67 73 20 74 6f file belongs to
1540: 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d .. variable m
1550: 79 72 65 76 20 2d 61 72 72 61 79 20 20 20 20 20 yrev -array
1560: 20 7b 7d 20 3b 20 23 20 41 6c 6c 20 72 65 76 69 {} ; # All revi
1570: 73 69 6f 6e 73 20 61 6e 64 20 74 68 65 69 72 20 sions and their
1580: 63 6f 6e 6e 65 63 74 69 6f 6e 73 2e 0a 20 20 20 connections..
1590: 20 76 61 72 69 61 62 6c 65 20 6d 79 72 65 76 69 variable myrevi
15a0: 73 69 6f 6e 73 20 20 20 20 20 20 20 7b 7d 20 3b sions {} ;
15b0: 20 23 20 53 61 6d 65 20 61 73 20 6d 79 72 65 76 # Same as myrev
15c0: 2c 20 62 75 74 20 61 20 6c 69 73 74 2c 20 67 69 , but a list, gi
15d0: 76 69 6e 67 20 75 73 20 74 68 65 20 6f 72 64 65 ving us the orde
15e0: 72 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 r. #
15f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1600: 20 20 20 20 3b 20 23 20 6f 66 20 72 65 76 69 73 ; # of revis
1610: 69 6f 6e 73 2e 0a 20 20 20 20 76 61 72 69 61 62 ions.. variab
1620: 6c 65 20 6d 79 68 65 61 64 20 20 20 20 20 20 20 le myhead
1630: 20 20 20 20 20 7b 7d 20 3b 20 23 20 48 65 61 64 {} ; # Head
1640: 20 72 65 76 69 73 69 6f 6e 20 28 72 65 76 69 73 revision (revis
1650: 69 6f 6e 20 6e 75 6d 62 65 72 29 0a 20 20 20 20 ion number).
1660: 76 61 72 69 61 62 6c 65 20 6d 79 70 72 69 6e 63 variable myprinc
1670: 69 70 61 6c 20 20 20 20 20 20 20 7b 7d 20 3b 20 ipal {} ;
1680: 23 20 50 72 69 6e 63 69 70 61 6c 20 62 72 61 6e # Principal bran
1690: 63 68 20 28 62 72 61 6e 63 68 20 6e 75 6d 62 65 ch (branch numbe
16a0: 72 29 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 r). #
16b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
16c0: 20 20 20 20 20 3b 20 23 20 43 6f 6e 74 72 61 72 ; # Contrar
16d0: 79 20 74 6f 20 74 68 65 20 6e 61 6d 65 20 74 68 y to the name th
16e0: 69 73 20 69 73 20 74 68 65 20 64 65 66 61 75 6c is is the defaul
16f0: 74 20 62 72 61 6e 63 68 2e 0a 20 20 20 20 76 61 t branch.. va
1700: 72 69 61 62 6c 65 20 6d 79 64 65 70 65 6e 64 65 riable mydepende
1710: 6e 63 69 65 73 20 20 20 20 7b 7d 20 3b 20 23 20 ncies {} ; #
1720: 44 69 63 74 69 6f 6e 61 72 79 20 70 61 72 65 6e Dictionary paren
1730: 74 20 2d 3e 20 63 68 69 6c 64 2c 20 64 65 70 65 t -> child, depe
1740: 6e 64 65 6e 63 79 20 72 65 63 6f 72 64 65 72 2e ndency recorder.
1750: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 . variable my
1760: 69 6d 70 6f 72 74 65 64 20 20 20 20 20 20 20 20 imported
1770: 30 20 20 3b 20 23 20 42 6f 6f 6c 65 61 6e 20 66 0 ; # Boolean f
1780: 6c 61 67 2e 20 53 65 74 20 69 66 66 20 72 65 76 lag. Set iff rev
1790: 20 31 2e 31 20 6f 66 20 74 68 65 20 66 69 6c 65 1.1 of the file
17a0: 20 73 65 65 6d 69 6e 67 6c 79 0a 20 20 20 20 23 seemingly. #
17b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
17c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 ; #
17d0: 20 77 61 73 20 69 6d 70 6f 72 74 65 64 20 69 6e was imported in
17e0: 73 74 65 61 64 20 6f 66 20 61 64 64 65 64 20 6e stead of added n
17f0: 6f 72 6d 61 6c 6c 79 2e 0a 20 20 20 20 76 61 72 ormally.. var
1800: 69 61 62 6c 65 20 6d 79 72 6f 6f 74 20 20 20 20 iable myroot
1810: 20 20 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 52 {} ; # R
1820: 65 76 69 73 69 6f 6e 20 6e 75 6d 62 65 72 20 6f evision number o
1830: 66 20 74 68 65 20 72 6f 6f 74 20 72 65 76 69 73 f the root revis
1840: 69 6f 6e 2e 20 55 73 75 61 6c 6c 79 20 27 31 2e ion. Usually '1.
1850: 31 27 2e 0a 20 20 20 20 23 20 20 20 20 20 20 20 1'.. #
1860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1870: 20 20 20 20 20 20 3b 20 23 20 43 61 6e 20 62 65 ; # Can be
1880: 20 61 20 64 69 66 66 65 72 65 6e 74 20 6e 75 6d a different num
1890: 62 65 72 2c 20 62 65 63 61 75 73 65 20 6f 66 20 ber, because of
18a0: 27 63 76 73 61 64 6d 69 6e 20 2d 6f 27 2e 0a 20 'cvsadmin -o'..
18b0: 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 62 72 variable mybr
18c0: 61 6e 63 68 65 73 20 2d 61 72 72 61 79 20 7b 7d anches -array {}
18d0: 20 3b 20 23 20 62 72 61 6e 63 68 20 6e 75 6d 62 ; # branch numb
18e0: 65 72 20 20 20 2d 3e 20 73 79 6d 62 6f 6c 20 6f er -> symbol o
18f0: 62 6a 65 63 74 20 68 61 6e 64 6c 69 6e 67 20 74 bject handling t
1900: 68 65 20 62 72 61 6e 63 68 0a 20 20 20 20 76 61 he branch. va
1910: 72 69 61 62 6c 65 20 6d 79 74 61 67 73 20 20 20 riable mytags
1920: 20 20 2d 61 72 72 61 79 20 7b 7d 20 3b 20 23 20 -array {} ; #
1930: 72 65 76 69 73 69 6f 6e 20 6e 75 6d 62 65 72 20 revision number
1940: 2d 3e 20 6c 69 73 74 20 6f 66 20 73 79 6d 62 6f -> list of symbo
1950: 6c 20 6f 62 6a 65 63 74 20 66 6f 72 20 74 68 65 l object for the
1960: 20 74 61 67 73 0a 20 20 20 20 23 20 20 20 20 20 tags. #
1970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1980: 20 20 20 20 20 20 20 20 3b 20 23 20 61 73 73 6f ; # asso
1990: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 ciated with the
19a0: 72 65 76 69 73 69 6f 6e 2e 0a 20 20 20 20 76 61 revision.. va
19b0: 72 69 61 62 6c 65 20 6d 79 73 79 6d 62 6f 6c 73 riable mysymbols
19c0: 20 20 20 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 {} ; #
19d0: 53 65 74 20 6f 66 20 73 79 6d 62 6f 6c 20 6e 61 Set of symbol na
19e0: 6d 65 73 20 66 6f 75 6e 64 20 69 6e 20 74 68 69 mes found in thi
19f0: 73 20 66 69 6c 65 2e 0a 0a 20 20 20 20 23 23 23 s file... ###
1a00: 20 54 4f 44 4f 20 23 23 23 0a 20 20 20 20 23 23 TODO ###. ##
1a10: 23 20 46 69 6c 65 20 66 6c 61 67 20 2d 20 65 78 # File flag - ex
1a20: 65 63 75 74 61 62 6c 65 2c 0a 20 20 20 20 23 23 ecutable,. ##
1a30: 23 20 52 43 53 20 6d 6f 64 65 20 69 6e 66 6f 20 # RCS mode info
1a40: 28 6b 62 2c 20 6b 6b 62 2c 20 2e 2e 2e 29 0a 0a (kb, kkb, ...)..
1a50: 20 20 20 20 23 20 23 20 23 23 20 23 23 23 20 23 # # ## ### #
1a60: 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 #### ######## ##
1a70: 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 ###########.
1a80: 23 23 20 49 6e 74 65 72 6e 61 6c 20 6d 65 74 68 ## Internal meth
1a90: 6f 64 73 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 ods.. method
1aa0: 4c 6f 6f 6b 46 6f 72 55 6e 6c 61 62 65 6c 65 64 LookForUnlabeled
1ab0: 42 72 61 6e 63 68 65 73 20 7b 62 72 61 6e 63 68 Branches {branch
1ac0: 65 73 7d 20 7b 0a 09 66 6f 72 65 61 63 68 20 62 es} {..foreach b
1ad0: 72 61 6e 63 68 72 65 76 6e 72 20 24 62 72 61 6e ranchrevnr $bran
1ae0: 63 68 65 73 20 7b 0a 09 20 20 20 20 69 66 20 7b ches {.. if {
1af0: 5b 63 61 74 63 68 20 7b 0a 09 09 73 65 74 20 62 [catch {...set b
1b00: 72 61 6e 63 68 20 5b 24 73 65 6c 66 20 52 65 76 ranch [$self Rev
1b10: 32 42 72 61 6e 63 68 20 24 62 72 61 6e 63 68 72 2Branch $branchr
1b20: 65 76 6e 72 5d 0a 09 20 20 20 20 7d 5d 7d 20 7b evnr].. }]} {
1b30: 0a 09 09 73 65 74 20 62 72 61 6e 63 68 20 5b 24 ...set branch [$
1b40: 73 65 6c 66 20 41 64 64 55 6e 6c 61 62 65 6c 65 self AddUnlabele
1b50: 64 42 72 61 6e 63 68 20 5b 72 65 76 20 32 62 72 dBranch [rev 2br
1b60: 61 6e 63 68 6e 72 20 24 62 72 61 6e 63 68 72 65 anchnr $branchre
1b70: 76 6e 72 5d 5d 0a 09 20 20 20 20 7d 0a 09 20 20 vnr]].. }..
1b80: 20 20 23 20 54 4f 44 4f 20 24 62 72 61 6e 63 68 # TODO $branch
1b90: 20 63 68 69 6c 64 20 24 62 72 61 6e 63 68 72 65 child $branchre
1ba0: 76 6e 72 20 2d 20 77 68 65 6e 20 61 64 64 2d 75 vnr - when add-u
1bb0: 6e 6c 61 62 65 6c 65 64 20 68 61 73 20 73 65 6e nlabeled has sen
1bc0: 73 69 62 6c 65 20 72 65 74 75 72 6e 20 76 61 6c sible return val
1bd0: 75 65 0a 09 7d 0a 09 72 65 74 75 72 6e 0a 20 20 ue..}..return.
1be0: 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 }.. method
1bf0: 52 65 76 32 42 72 61 6e 63 68 20 7b 72 65 76 6e Rev2Branch {revn
1c00: 72 7d 20 7b 0a 09 69 66 20 7b 5b 72 65 76 20 69 r} {..if {[rev i
1c10: 73 74 72 75 6e 6b 72 65 76 6e 72 20 24 72 65 76 strunkrevnr $rev
1c20: 6e 72 5d 7d 20 7b 0a 09 20 20 20 20 74 72 6f 75 nr]} {.. trou
1c30: 62 6c 65 20 69 6e 74 65 72 6e 61 6c 20 22 45 78 ble internal "Ex
1c40: 70 65 63 74 65 64 20 61 20 62 72 61 6e 63 68 20 pected a branch
1c50: 72 65 76 69 73 69 6f 6e 20 6e 75 6d 62 65 72 22 revision number"
1c60: 0a 09 7d 0a 09 72 65 74 75 72 6e 20 24 6d 79 62 ..}..return $myb
1c70: 72 61 6e 63 68 65 73 28 5b 72 65 76 20 32 62 72 ranches([rev 2br
1c80: 61 6e 63 68 6e 72 20 24 72 65 76 6e 72 5d 29 0a anchnr $revnr]).
1c90: 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f }.. metho
1ca0: 64 20 41 64 64 55 6e 6c 61 62 65 6c 65 64 42 72 d AddUnlabeledBr
1cb0: 61 6e 63 68 20 7b 62 72 61 6e 63 68 6e 72 7d 20 anch {branchnr}
1cc0: 7b 0a 09 72 65 74 75 72 6e 20 5b 24 73 65 6c 66 {..return [$self
1cd0: 20 41 64 64 42 72 61 6e 63 68 20 75 6e 6c 61 62 AddBranch unlab
1ce0: 65 6c 65 64 2d 24 62 72 61 6e 63 68 6e 72 20 24 eled-$branchnr $
1cf0: 62 72 61 6e 63 68 6e 72 5d 0a 20 20 20 20 7d 0a branchnr]. }.
1d00: 0a 20 20 20 20 6d 65 74 68 6f 64 20 41 64 64 42 . method AddB
1d10: 72 61 6e 63 68 20 7b 6e 61 6d 65 20 62 72 61 6e ranch {name bran
1d20: 63 68 6e 72 7d 20 7b 0a 09 69 66 20 7b 5b 69 6e chnr} {..if {[in
1d30: 66 6f 20 65 78 69 73 74 73 20 6d 79 62 72 61 6e fo exists mybran
1d40: 63 68 65 73 28 24 62 72 61 6e 63 68 6e 72 29 5d ches($branchnr)]
1d50: 7d 20 7b 0a 09 20 20 20 20 6c 6f 67 20 77 72 69 } {.. log wri
1d60: 74 65 20 31 20 66 69 6c 65 20 22 49 6e 20 27 24 te 1 file "In '$
1d70: 6d 79 70 61 74 68 27 3a 20 42 72 61 6e 63 68 20 mypath': Branch
1d80: 27 24 62 72 61 6e 63 68 6e 72 27 20 6e 61 6d 65 '$branchnr' name
1d90: 64 20 27 5b 24 6d 79 62 72 61 6e 63 68 65 73 28 d '[$mybranches(
1da0: 24 62 72 61 6e 63 68 6e 72 29 20 6e 61 6d 65 5d $branchnr) name]
1db0: 27 22 0a 09 20 20 20 20 6c 6f 67 20 77 72 69 74 '".. log writ
1dc0: 65 20 31 20 66 69 6c 65 20 22 43 61 6e 6e 6f 74 e 1 file "Cannot
1dd0: 20 68 61 76 65 20 73 65 63 6f 6e 64 20 6e 61 6d have second nam
1de0: 65 20 27 24 6e 61 6d 65 27 2c 20 69 67 6e 6f 72 e '$name', ignor
1df0: 69 6e 67 20 69 74 22 0a 09 20 20 20 20 72 65 74 ing it".. ret
1e00: 75 72 6e 0a 09 7d 0a 09 73 65 74 20 62 72 61 6e urn..}..set bran
1e10: 63 68 20 5b 73 79 6d 20 25 41 55 54 4f 25 20 62 ch [sym %AUTO% b
1e20: 72 61 6e 63 68 20 24 62 72 61 6e 63 68 6e 72 20 ranch $branchnr
1e30: 5b 24 6d 79 70 72 6f 6a 65 63 74 20 67 65 74 73 [$myproject gets
1e40: 79 6d 62 6f 6c 20 24 6e 61 6d 65 5d 5d 0a 09 73 ymbol $name]]..s
1e50: 65 74 20 6d 79 62 72 61 6e 63 68 65 73 28 24 62 et mybranches($b
1e60: 72 61 6e 63 68 6e 72 29 20 24 62 72 61 6e 63 68 ranchnr) $branch
1e70: 0a 09 72 65 74 75 72 6e 20 24 62 72 61 6e 63 68 ..return $branch
1e80: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 . }.. meth
1e90: 6f 64 20 41 64 64 54 61 67 20 7b 6e 61 6d 65 20 od AddTag {name
1ea0: 72 65 76 6e 72 7d 20 7b 0a 09 73 65 74 20 74 61 revnr} {..set ta
1eb0: 67 20 5b 73 79 6d 20 25 41 55 54 4f 25 20 74 61 g [sym %AUTO% ta
1ec0: 67 20 24 72 65 76 6e 72 20 5b 24 6d 79 70 72 6f g $revnr [$mypro
1ed0: 6a 65 63 74 20 67 65 74 73 79 6d 62 6f 6c 20 24 ject getsymbol $
1ee0: 6e 61 6d 65 5d 5d 0a 09 6c 61 70 70 65 6e 64 20 name]]..lappend
1ef0: 6d 79 74 61 67 73 28 24 72 65 76 6e 72 29 20 24 mytags($revnr) $
1f00: 74 61 67 0a 09 72 65 74 75 72 6e 20 24 74 61 67 tag..return $tag
1f10: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70 72 6f 63 . }.. proc
1f20: 20 52 65 63 6f 72 64 42 61 73 69 63 44 65 70 65 RecordBasicDepe
1f30: 6e 64 65 6e 63 69 65 73 20 7b 72 65 76 6e 72 20 ndencies {revnr
1f40: 6e 65 78 74 7d 20 7b 0a 09 23 20 48 61 6e 64 6c next} {..# Handl
1f50: 65 20 74 68 65 20 72 65 76 69 73 69 6f 6e 20 64 e the revision d
1f60: 65 70 65 6e 64 65 6e 63 69 65 73 2e 20 52 65 63 ependencies. Rec
1f70: 6f 72 64 20 74 68 65 6d 20 66 6f 72 20 6e 6f 77 ord them for now
1f80: 2c 20 64 6f 0a 09 23 20 6e 6f 74 68 69 6e 67 20 , do..# nothing
1f90: 77 69 74 68 20 74 68 65 6d 20 79 65 74 2e 0a 0a with them yet...
1fa0: 09 23 20 4f 6e 20 74 68 65 20 74 72 75 6e 6b 20 .# On the trunk
1fb0: 74 68 65 20 27 6e 65 78 74 27 20 66 69 65 6c 64 the 'next' field
1fc0: 20 70 6f 69 6e 74 73 20 74 6f 20 74 68 65 20 70 points to the p
1fd0: 72 65 76 69 6f 75 73 0a 09 23 20 72 65 76 69 73 revious..# revis
1fe0: 69 6f 6e 2c 20 69 2e 65 2e 20 74 68 65 20 5f 70 ion, i.e. the _p
1ff0: 61 72 65 6e 74 5f 20 6f 66 20 74 68 65 20 63 75 arent_ of the cu
2000: 72 72 65 6e 74 20 6f 6e 65 2e 20 45 78 61 6d 70 rrent one. Examp
2010: 6c 65 3a 0a 09 23 20 31 2e 36 27 73 20 6e 65 78 le:..# 1.6's nex
2020: 74 20 69 73 20 31 2e 35 20 28 6d 6f 64 75 6c 6f t is 1.5 (modulo
2030: 20 63 76 73 20 61 64 6d 69 6e 20 2d 6f 29 2e 0a cvs admin -o)..
2040: 0a 09 23 20 43 6f 6e 74 72 61 72 69 6c 79 20 6f ..# Contrarily o
2050: 6e 20 61 20 62 72 61 6e 63 68 20 74 68 65 20 27 n a branch the '
2060: 6e 65 78 74 27 20 66 69 65 6c 64 20 70 6f 69 6e next' field poin
2070: 74 73 20 74 6f 20 74 68 65 0a 09 23 20 70 72 69 ts to the..# pri
2080: 6d 61 72 79 20 5f 63 68 69 6c 64 5f 20 6f 66 20 mary _child_ of
2090: 74 68 65 20 63 75 72 72 65 6e 74 20 72 65 76 69 the current revi
20a0: 73 69 6f 6e 2e 20 41 73 20 65 78 61 6d 70 6c 65 sion. As example
20b0: 2c 0a 09 23 20 31 2e 31 2e 33 2e 32 27 73 20 27 ,..# 1.1.3.2's '
20c0: 6e 65 78 74 27 20 77 69 6c 6c 20 62 65 20 31 2e next' will be 1.
20d0: 31 2e 33 2e 33 2e 0a 0a 09 23 20 54 68 65 20 27 1.3.3....# The '
20e0: 6e 65 78 74 27 20 66 69 65 6c 64 20 61 63 74 75 next' field actu
20f0: 61 6c 6c 79 20 61 6c 77 61 79 73 20 72 65 66 65 ally always refe
2100: 72 73 20 74 6f 20 74 68 65 20 72 65 76 69 73 69 rs to the revisi
2110: 6f 6e 0a 09 23 20 63 6f 6e 74 61 69 6e 69 6e 67 on..# containing
2120: 20 74 68 65 20 64 65 6c 74 61 20 6e 65 65 64 65 the delta neede
2130: 64 20 74 6f 20 72 65 74 72 69 65 76 65 20 74 68 d to retrieve th
2140: 61 74 20 72 65 76 69 73 69 6f 6e 2e 0a 0a 09 23 at revision....#
2150: 20 54 68 65 20 64 65 70 65 6e 64 65 6e 63 69 65 The dependencie
2160: 73 20 6e 65 65 64 65 64 20 68 65 72 65 20 61 72 s needed here ar
2170: 65 20 74 68 65 20 6c 6f 67 69 63 61 6c 20 73 74 e the logical st
2180: 72 75 63 74 75 72 65 2c 0a 09 23 20 70 61 72 65 ructure,..# pare
2190: 6e 74 2f 63 68 69 6c 64 2c 20 61 6e 64 20 6e 6f nt/child, and no
21a0: 74 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 t the implementa
21b0: 74 69 6f 6e 20 64 65 70 65 6e 64 65 6e 74 20 64 tion dependent d
21c0: 65 6c 74 61 0a 09 23 20 70 6f 69 6e 74 65 72 73 elta..# pointers
21d0: 2e 0a 0a 09 69 66 20 7b 24 6e 65 78 74 20 65 71 ....if {$next eq
21e0: 20 22 22 7d 20 72 65 74 75 72 6e 0a 0a 09 75 70 ""} return...up
21f0: 76 61 72 20 31 20 6d 79 64 65 70 65 6e 64 65 6e var 1 mydependen
2200: 63 69 65 73 20 6d 79 64 65 70 65 6e 64 65 6e 63 cies mydependenc
2210: 69 65 73 0a 0a 09 23 20 20 20 20 20 20 20 20 20 ies...#
2220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2230: 20 70 61 72 65 6e 74 20 2d 3e 20 63 68 69 6c 64 parent -> child
2240: 0a 09 69 66 20 7b 5b 72 65 76 20 69 73 74 72 75 ..if {[rev istru
2250: 6e 6b 72 65 76 6e 72 20 24 72 65 76 6e 72 5d 7d nkrevnr $revnr]}
2260: 20 7b 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 {.. lappend
2270: 6d 79 64 65 70 65 6e 64 65 6e 63 69 65 73 20 24 mydependencies $
2280: 6e 65 78 74 20 24 72 65 76 6e 72 0a 09 7d 20 65 next $revnr..} e
2290: 6c 73 65 20 7b 0a 09 20 20 20 20 6c 61 70 70 65 lse {.. lappe
22a0: 6e 64 20 6d 79 64 65 70 65 6e 64 65 6e 63 69 65 nd mydependencie
22b0: 73 20 24 72 65 76 6e 72 20 24 6e 65 78 74 0a 09 s $revnr $next..
22c0: 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a }..return. }.
22d0: 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 23 .. # # ## ###
22e0: 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 ##### ########
22f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 #############.
2300: 20 20 23 23 20 43 6f 6e 66 69 67 75 72 61 74 69 ## Configurati
2310: 6f 6e 0a 0a 20 20 20 20 70 72 61 67 6d 61 20 2d on.. pragma -
2320: 68 61 73 74 79 70 65 69 6e 66 6f 20 20 20 20 6e hastypeinfo n
2330: 6f 20 20 3b 20 23 20 6e 6f 20 74 79 70 65 20 69 o ; # no type i
2340: 6e 74 72 6f 73 70 65 63 74 69 6f 6e 0a 20 20 20 ntrospection.
2350: 20 70 72 61 67 6d 61 20 2d 68 61 73 69 6e 66 6f pragma -hasinfo
2360: 20 20 20 20 20 20 20 20 6e 6f 20 20 3b 20 23 20 no ; #
2370: 6e 6f 20 6f 62 6a 65 63 74 20 69 6e 74 72 6f 73 no object intros
2380: 70 65 63 74 69 6f 6e 0a 20 20 20 20 70 72 61 67 pection. prag
2390: 6d 61 20 2d 68 61 73 74 79 70 65 6d 65 74 68 6f ma -hastypemetho
23a0: 64 73 20 6e 6f 20 20 3b 20 23 20 74 79 70 65 20 ds no ; # type
23b0: 69 73 20 6e 6f 74 20 72 65 6c 65 76 61 6e 74 2e is not relevant.
23c0: 0a 20 20 20 20 70 72 61 67 6d 61 20 2d 73 69 6d . pragma -sim
23d0: 70 6c 65 64 69 73 70 61 74 63 68 20 79 65 73 20 pledispatch yes
23e0: 3b 20 23 20 73 69 6d 70 6c 65 20 66 61 73 74 20 ; # simple fast
23f0: 64 69 73 70 61 74 63 68 0a 0a 20 20 20 20 23 20 dispatch.. #
2400: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 # ## ### ##### #
2410: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
2420: 23 23 23 23 23 0a 7d 0a 0a 6e 61 6d 65 73 70 61 #####.}..namespa
2430: 63 65 20 65 76 61 6c 20 3a 3a 76 63 3a 3a 66 6f ce eval ::vc::fo
2440: 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 ssil::import::cv
2450: 73 20 7b 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 s {. namespac
2460: 65 20 65 78 70 6f 72 74 20 66 69 6c 65 0a 20 20 e export file.
2470: 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c namespace eval
2480: 20 66 69 6c 65 20 7b 0a 09 23 20 49 6d 70 6f 72 file {..# Impor
2490: 74 20 6e 6f 74 20 72 65 71 75 69 72 65 64 2c 20 t not required,
24a0: 61 6c 72 65 61 64 79 20 61 20 63 68 69 6c 64 20 already a child
24b0: 6e 61 6d 65 73 70 61 63 65 2e 0a 09 23 20 6e 61 namespace...# na
24c0: 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 76 mespace import v
24d0: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 c::fossil::impor
24e0: 74 3a 3a 63 76 73 3a 3a 66 69 6c 65 3a 3a 72 65 t::cvs::file::re
24f0: 76 0a 09 23 20 6e 61 6d 65 73 70 61 63 65 20 69 v..# namespace i
2500: 6d 70 6f 72 74 20 76 63 3a 3a 66 6f 73 73 69 6c mport vc::fossil
2510: 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 66 ::import::cvs::f
2520: 69 6c 65 3a 3a 73 79 6d 0a 20 20 20 20 7d 0a 7d ile::sym. }.}
2530: 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 23 ..# # ## ### ###
2540: 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 ## ######## ####
2550: 23 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######### ######
2560: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a ###############.
2570: 23 23 20 52 65 61 64 79 0a 0a 70 61 63 6b 61 67 ## Ready..packag
2580: 65 20 70 72 6f 76 69 64 65 20 76 63 3a 3a 66 6f e provide vc::fo
2590: 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 ssil::import::cv
25a0: 73 3a 3a 66 69 6c 65 20 31 2e 30 0a 72 65 74 75 s::file 1.0.retu
25b0: 72 6e 0a rn.