Artifact 89b75955163e25f331c5222922dfa8aaa6497be9:
File
tools/cvs2fossil/lib/c2f_frev.tcl
part of check-in
[177a0cc55c]
- Fix setting of myimported, wrong condition.
Fix item assignment when sorting branches.
Fix parent/child linkage when setting up branch dependencies.
Completed processes on non-trunk default branch revisions.
Added skeleton code for the deletion of superfluous revisions.
by
aku on
2007-10-17 03:15:12.
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 52 65 76 ########..## Rev
0200: 69 73 69 6f 6e 73 20 70 65 72 20 66 69 6c 65 2e isions per file.
0210: 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 23 ..# # ## ### ###
0220: 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 ## ######## ####
0230: 23 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######### ######
0240: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a ###############.
0250: 23 23 20 52 65 71 75 69 72 65 6d 65 6e 74 73 0a ## Requirements.
0260: 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 .package require
0270: 20 54 63 6c 20 38 2e 34 20 20 20 20 20 20 20 20 Tcl 8.4
0280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0290: 20 20 20 20 20 3b 20 23 20 52 65 71 75 69 72 65 ; # Require
02a0: 64 20 72 75 6e 74 69 6d 65 2e 0a 70 61 63 6b 61 d runtime..packa
02b0: 67 65 20 72 65 71 75 69 72 65 20 73 6e 69 74 20 ge require snit
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 20 20 20 20 20 20 20 3b ;
02e0: 20 23 20 4f 4f 20 73 79 73 74 65 6d 2e 0a 70 61 # OO system..pa
02f0: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 76 63 ckage require vc
0300: 3a 3a 74 6f 6f 6c 73 3a 3a 6d 69 73 63 20 20 20 ::tools::misc
0310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0320: 20 20 3b 20 23 20 54 65 78 74 20 66 6f 72 6d 61 ; # Text forma
0330: 74 74 69 6e 67 0a 0a 23 20 23 20 23 23 20 23 23 tting..# # ## ##
0340: 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 # ##### ########
0350: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 20 23 ############# #
0360: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0370: 23 23 23 23 0a 23 23 20 0a 0a 73 6e 69 74 3a 3a ####.## ..snit::
0380: 74 79 70 65 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 type ::vc::fossi
0390: 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a l::import::cvs::
03a0: 66 69 6c 65 3a 3a 72 65 76 20 7b 0a 20 20 20 20 file::rev {.
03b0: 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 # # ## ### #####
03c0: 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######## ######
03d0: 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 50 #######. ## P
03e0: 75 62 6c 69 63 20 41 50 49 0a 0a 20 20 20 20 63 ublic API.. c
03f0: 6f 6e 73 74 72 75 63 74 6f 72 20 7b 72 65 76 6e onstructor {revn
0400: 72 20 64 61 74 65 20 73 74 61 74 65 20 74 68 65 r date state the
0410: 66 69 6c 65 7d 20 7b 0a 09 73 65 74 20 6d 79 72 file} {..set myr
0420: 65 76 6e 72 20 20 20 20 24 72 65 76 6e 72 0a 09 evnr $revnr..
0430: 73 65 74 20 6d 79 64 61 74 65 20 20 20 20 20 24 set mydate $
0440: 64 61 74 65 0a 09 73 65 74 20 6d 79 6f 72 69 67 date..set myorig
0450: 64 61 74 65 20 24 64 61 74 65 0a 09 73 65 74 20 date $date..set
0460: 6d 79 73 74 61 74 65 20 20 20 20 24 73 74 61 74 mystate $stat
0470: 65 0a 09 73 65 74 20 6d 79 66 69 6c 65 20 20 20 e..set myfile
0480: 20 20 24 74 68 65 66 69 6c 65 0a 09 72 65 74 75 $thefile..retu
0490: 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 rn. }.. #
04a0: 42 61 73 69 63 20 70 69 65 63 65 73 20 5f 5f 5f Basic pieces ___
04b0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ________________
04c0: 5f 5f 5f 5f 5f 0a 0a 20 20 20 20 6d 65 74 68 6f _____.. metho
04d0: 64 20 68 61 73 6d 65 74 61 20 7b 7d 20 7b 20 72 d hasmeta {} { r
04e0: 65 74 75 72 6e 20 5b 65 78 70 72 20 7b 24 6d 79 eturn [expr {$my
04f0: 6d 65 74 61 69 64 20 6e 65 20 22 22 7d 5d 20 7d metaid ne ""}] }
0500: 0a 20 20 20 20 6d 65 74 68 6f 64 20 68 61 73 74 . method hast
0510: 65 78 74 20 7b 7d 20 7b 0a 09 73 74 72 75 63 74 ext {} {..struct
0520: 3a 3a 6c 69 73 74 20 61 73 73 69 67 6e 20 24 6d ::list assign $m
0530: 79 74 65 78 74 20 73 20 65 0a 09 72 65 74 75 72 ytext s e..retur
0540: 6e 20 5b 65 78 70 72 20 7b 24 73 20 3c 3d 20 24 n [expr {$s <= $
0550: 65 7d 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d e}]. }.. m
0560: 65 74 68 6f 64 20 73 65 74 6d 65 74 61 20 7b 6d ethod setmeta {m
0570: 65 74 61 7d 20 7b 20 73 65 74 20 6d 79 6d 65 74 eta} { set mymet
0580: 61 69 64 20 24 6d 65 74 61 20 3b 20 72 65 74 75 aid $meta ; retu
0590: 72 6e 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 rn }. method
05a0: 73 65 74 74 65 78 74 20 7b 74 65 78 74 7d 20 7b settext {text} {
05b0: 20 73 65 74 20 6d 79 74 65 78 74 20 20 20 24 74 set mytext $t
05c0: 65 78 74 20 3b 20 72 65 74 75 72 6e 20 7d 0a 20 ext ; return }.
05d0: 20 20 20 6d 65 74 68 6f 64 20 73 65 74 6c 6f 64 method setlod
05e0: 20 20 7b 6c 6f 64 7d 20 20 7b 20 73 65 74 20 6d {lod} { set m
05f0: 79 6c 6f 64 20 20 20 20 24 6c 6f 64 20 20 3b 20 ylod $lod ;
0600: 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 6d 65 return }.. me
0610: 74 68 6f 64 20 72 65 76 6e 72 20 7b 7d 20 7b 20 thod revnr {} {
0620: 72 65 74 75 72 6e 20 24 6d 79 72 65 76 6e 72 20 return $myrevnr
0630: 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 74 61 }. method sta
0640: 74 65 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 te {} { return $
0650: 6d 79 73 74 61 74 65 20 7d 0a 20 20 20 20 6d 65 mystate }. me
0660: 74 68 6f 64 20 6c 6f 64 20 20 20 7b 7d 20 7b 20 thod lod {} {
0670: 72 65 74 75 72 6e 20 24 6d 79 6c 6f 64 20 20 20 return $mylod
0680: 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 64 61 74 }. method dat
0690: 65 20 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 e {} { return $
06a0: 6d 79 64 61 74 65 20 20 7d 0a 0a 20 20 20 20 23 mydate }.. #
06b0: 20 42 61 73 69 63 20 70 61 72 65 6e 74 2f 63 68 Basic parent/ch
06c0: 69 6c 64 20 6c 69 6e 6b 61 67 65 20 5f 5f 5f 5f ild linkage ____
06d0: 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20 20 6d 65 74 68 ______.. meth
06e0: 6f 64 20 68 61 73 70 61 72 65 6e 74 20 7b 7d 20 od hasparent {}
06f0: 7b 20 72 65 74 75 72 6e 20 5b 65 78 70 72 20 7b { return [expr {
0700: 24 6d 79 70 61 72 65 6e 74 20 6e 65 20 22 22 7d $myparent ne ""}
0710: 5d 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 68 ] }. method h
0720: 61 73 63 68 69 6c 64 20 20 7b 7d 20 7b 20 72 65 aschild {} { re
0730: 74 75 72 6e 20 5b 65 78 70 72 20 7b 24 6d 79 63 turn [expr {$myc
0740: 68 69 6c 64 20 20 6e 65 20 22 22 7d 5d 20 7d 0a hild ne ""}] }.
0750: 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 65 74 70 . method setp
0760: 61 72 65 6e 74 20 7b 70 61 72 65 6e 74 7d 20 7b arent {parent} {
0770: 0a 09 69 66 20 7b 24 6d 79 70 61 72 65 6e 74 20 ..if {$myparent
0780: 6e 65 20 22 22 7d 20 7b 20 74 72 6f 75 62 6c 65 ne ""} { trouble
0790: 20 69 6e 74 65 72 6e 61 6c 20 22 50 61 72 65 6e internal "Paren
07a0: 74 20 61 6c 72 65 61 64 79 20 64 65 66 69 6e 65 t already define
07b0: 64 22 20 7d 0a 09 73 65 74 20 6d 79 70 61 72 65 d" }..set mypare
07c0: 6e 74 20 24 70 61 72 65 6e 74 0a 09 72 65 74 75 nt $parent..retu
07d0: 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 rn. }.. me
07e0: 74 68 6f 64 20 63 75 74 66 72 6f 6d 70 61 72 65 thod cutfrompare
07f0: 6e 74 20 7b 7d 20 7b 20 73 65 74 20 6d 79 70 61 nt {} { set mypa
0800: 72 65 6e 74 20 22 22 20 3b 20 72 65 74 75 72 6e rent "" ; return
0810: 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 63 75 }. method cu
0820: 74 66 72 6f 6d 63 68 69 6c 64 20 20 7b 7d 20 7b tfromchild {} {
0830: 20 73 65 74 20 6d 79 63 68 69 6c 64 20 20 22 22 set mychild ""
0840: 20 3b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 ; return }..
0850: 20 6d 65 74 68 6f 64 20 73 65 74 63 68 69 6c 64 method setchild
0860: 20 7b 63 68 69 6c 64 7d 20 7b 0a 09 69 66 20 7b {child} {..if {
0870: 24 6d 79 63 68 69 6c 64 20 6e 65 20 22 22 7d 20 $mychild ne ""}
0880: 7b 20 74 72 6f 75 62 6c 65 20 69 6e 74 65 72 6e { trouble intern
0890: 61 6c 20 22 43 68 69 6c 64 20 61 6c 72 65 61 64 al "Child alread
08a0: 79 20 64 65 66 69 6e 65 64 22 20 7d 0a 09 73 65 y defined" }..se
08b0: 74 20 6d 79 63 68 69 6c 64 20 24 63 68 69 6c 64 t mychild $child
08c0: 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a ..return. }..
08d0: 20 20 20 20 6d 65 74 68 6f 64 20 70 61 72 65 6e method paren
08e0: 74 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d t {} { return $m
08f0: 79 70 61 72 65 6e 74 20 7d 0a 20 20 20 20 6d 65 yparent }. me
0900: 74 68 6f 64 20 63 68 69 6c 64 20 20 7b 7d 20 7b thod child {} {
0910: 20 72 65 74 75 72 6e 20 24 6d 79 63 68 69 6c 64 return $mychild
0920: 20 20 7d 0a 0a 20 20 20 20 23 20 42 72 61 6e 63 }.. # Branc
0930: 68 20 6c 69 6e 6b 61 67 65 20 5f 5f 5f 5f 5f 5f h linkage ______
0940: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ________________
0950: 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 65 74 .. method set
0960: 70 61 72 65 6e 74 62 72 61 6e 63 68 20 7b 62 72 parentbranch {br
0970: 61 6e 63 68 7d 20 7b 0a 09 69 66 20 7b 24 6d 79 anch} {..if {$my
0980: 70 61 72 65 6e 74 62 72 61 6e 63 68 20 6e 65 20 parentbranch ne
0990: 22 22 7d 20 7b 20 74 72 6f 75 62 6c 65 20 69 6e ""} { trouble in
09a0: 74 65 72 6e 61 6c 20 22 42 72 61 6e 63 68 20 70 ternal "Branch p
09b0: 61 72 65 6e 74 20 61 6c 72 65 61 64 79 20 64 65 arent already de
09c0: 66 69 6e 65 64 22 20 7d 0a 09 73 65 74 20 6d 79 fined" }..set my
09d0: 70 61 72 65 6e 74 62 72 61 6e 63 68 20 24 62 72 parentbranch $br
09e0: 61 6e 63 68 0a 09 72 65 74 75 72 6e 0a 20 20 20 anch..return.
09f0: 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 70 }.. method p
0a00: 61 72 65 6e 74 62 72 61 6e 63 68 20 7b 7d 20 7b arentbranch {} {
0a10: 20 72 65 74 75 72 6e 20 24 6d 79 70 61 72 65 6e return $myparen
0a20: 74 62 72 61 6e 63 68 20 7d 0a 0a 20 20 20 20 6d tbranch }.. m
0a30: 65 74 68 6f 64 20 61 64 64 62 72 61 6e 63 68 20 ethod addbranch
0a40: 7b 62 72 61 6e 63 68 7d 20 7b 0a 09 6c 61 70 70 {branch} {..lapp
0a50: 65 6e 64 20 6d 79 62 72 61 6e 63 68 65 73 20 24 end mybranches $
0a60: 62 72 61 6e 63 68 0a 09 72 65 74 75 72 6e 0a 20 branch..return.
0a70: 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 }.. method
0a80: 20 61 64 64 63 68 69 6c 64 6f 6e 62 72 61 6e 63 addchildonbranc
0a90: 68 20 7b 63 68 69 6c 64 7d 20 7b 0a 09 6c 61 70 h {child} {..lap
0aa0: 70 65 6e 64 20 6d 79 62 72 61 6e 63 68 63 68 69 pend mybranchchi
0ab0: 6c 64 72 65 6e 20 24 63 68 69 6c 64 0a 09 72 65 ldren $child..re
0ac0: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 turn. }..
0ad0: 6d 65 74 68 6f 64 20 63 75 74 66 72 6f 6d 70 61 method cutfrompa
0ae0: 72 65 6e 74 62 72 61 6e 63 68 20 7b 7d 20 7b 20 rentbranch {} {
0af0: 73 65 74 20 6d 79 70 61 72 65 6e 74 62 72 61 6e set myparentbran
0b00: 63 68 20 22 22 20 3b 20 72 65 74 75 72 6e 20 7d ch "" ; return }
0b10: 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 72 65 6d .. method rem
0b20: 6f 76 65 62 72 61 6e 63 68 20 7b 62 72 61 6e 63 ovebranch {branc
0b30: 68 7d 20 7b 0a 09 6c 64 65 6c 65 74 65 20 6d 79 h} {..ldelete my
0b40: 62 72 61 6e 63 68 65 73 20 24 62 72 61 6e 63 68 branches $branch
0b50: 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a ..return. }..
0b60: 20 20 20 20 6d 65 74 68 6f 64 20 72 65 6d 6f 76 method remov
0b70: 65 63 68 69 6c 64 6f 6e 62 72 61 6e 63 68 20 7b echildonbranch {
0b80: 72 65 76 7d 20 7b 0a 09 6c 64 65 6c 65 74 65 20 rev} {..ldelete
0b90: 6d 79 62 72 61 6e 63 68 63 68 69 6c 64 72 65 6e mybranchchildren
0ba0: 20 24 72 65 76 0a 09 72 65 74 75 72 6e 0a 20 20 $rev..return.
0bb0: 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 }.. method
0bc0: 73 6f 72 74 62 72 61 6e 63 68 65 73 20 7b 7d 20 sortbranches {}
0bd0: 7b 0a 09 69 66 20 7b 21 5b 6c 6c 65 6e 67 74 68 {..if {![llength
0be0: 20 24 6d 79 62 72 61 6e 63 68 65 73 5d 7d 20 72 $mybranches]} r
0bf0: 65 74 75 72 6e 0a 0a 09 23 20 53 6f 72 74 20 74 eturn...# Sort t
0c00: 68 65 20 62 72 61 6e 63 68 65 73 20 73 70 61 77 he branches spaw
0c10: 6e 65 64 20 62 79 20 74 68 69 73 20 72 65 76 69 ned by this revi
0c20: 73 69 6f 6e 20 69 6e 20 63 72 65 61 74 69 6f 6e sion in creation
0c30: 0a 09 23 20 6f 72 64 65 72 2e 20 54 6f 20 68 65 ..# order. To he
0c40: 6c 70 20 69 6e 20 74 68 69 73 20 6f 75 72 20 66 lp in this our f
0c50: 69 6c 65 20 67 61 76 65 20 61 6c 6c 20 62 72 61 ile gave all bra
0c60: 6e 63 68 65 73 20 61 20 70 6f 73 69 74 69 6f 6e nches a position
0c70: 0a 09 23 20 69 64 2c 20 69 6e 20 6f 72 64 65 72 ..# id, in order
0c80: 20 6f 66 20 74 68 65 69 72 20 64 65 66 69 6e 69 of their defini
0c90: 74 69 6f 6e 20 62 79 20 74 68 65 20 52 43 53 20 tion by the RCS
0ca0: 61 72 63 68 69 76 65 2e 0a 09 23 0a 09 23 20 54 archive...#..# T
0cb0: 68 65 20 63 72 65 61 74 69 6f 6e 20 6f 72 64 65 he creation orde
0cc0: 72 20 69 73 20 28 61 70 70 61 72 65 6e 74 6c 79 r is (apparently
0cd0: 29 20 74 68 65 20 72 65 76 65 72 73 65 20 6f 66 ) the reverse of
0ce0: 20 74 68 65 0a 09 23 20 64 65 66 69 6e 69 74 69 the..# definiti
0cf0: 6f 6e 20 6f 72 64 65 72 2e 20 28 49 66 20 61 20 on order. (If a
0d00: 62 72 61 6e 63 68 20 69 73 20 63 72 65 61 74 65 branch is create
0d10: 64 20 74 68 65 6e 20 64 65 6c 65 74 65 64 2c 20 d then deleted,
0d20: 61 0a 09 23 20 6c 61 74 65 72 20 62 72 61 6e 63 a..# later branc
0d30: 68 20 63 61 6e 20 62 65 20 61 73 73 69 67 6e 65 h can be assigne
0d40: 64 20 74 68 65 20 72 65 63 79 63 6c 65 64 20 62 d the recycled b
0d50: 72 61 6e 63 68 20 6e 75 6d 62 65 72 3b 0a 09 23 ranch number;..#
0d60: 20 74 68 65 72 65 66 6f 72 65 20 62 72 61 6e 63 therefore branc
0d70: 68 20 6e 75 6d 62 65 72 73 20 61 72 65 20 6e 6f h numbers are no
0d80: 74 20 61 6e 20 69 6e 64 69 63 61 74 69 6f 6e 20 t an indication
0d90: 6f 66 20 63 72 65 61 74 69 6f 6e 0a 09 23 20 6f of creation..# o
0da0: 72 64 65 72 2e 29 0a 0a 09 73 65 74 20 74 6d 70 rder.)...set tmp
0db0: 20 7b 7d 0a 09 66 6f 72 65 61 63 68 20 62 72 61 {}..foreach bra
0dc0: 6e 63 68 20 24 6d 79 62 72 61 6e 63 68 65 73 20 nch $mybranches
0dd0: 7b 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 74 {.. lappend t
0de0: 6d 70 20 5b 6c 69 73 74 20 24 62 72 61 6e 63 68 mp [list $branch
0df0: 20 5b 24 62 72 61 6e 63 68 20 70 6f 73 69 74 69 [$branch positi
0e00: 6f 6e 5d 5d 0a 09 7d 0a 0a 09 73 65 74 20 6d 79 on]]..}...set my
0e10: 62 72 61 6e 63 68 65 73 20 7b 7d 0a 09 66 6f 72 branches {}..for
0e20: 65 61 63 68 20 69 74 65 6d 20 5b 6c 73 6f 72 74 each item [lsort
0e30: 20 2d 69 6e 64 65 78 20 31 20 2d 64 65 63 72 65 -index 1 -decre
0e40: 61 73 69 6e 67 20 24 74 6d 70 5d 20 7b 0a 09 20 asing $tmp] {..
0e50: 20 20 20 73 74 72 75 63 74 3a 3a 6c 69 73 74 20 struct::list
0e60: 61 73 73 69 67 6e 20 24 69 74 65 6d 20 62 72 61 assign $item bra
0e70: 6e 63 68 20 70 6f 73 69 74 69 6f 6e 0a 09 20 20 nch position..
0e80: 20 20 6c 61 70 70 65 6e 64 20 6d 79 62 72 61 6e lappend mybran
0e90: 63 68 65 73 20 24 62 72 61 6e 63 68 0a 09 7d 0a ches $branch..}.
0ea0: 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 .return. }..
0eb0: 20 20 20 6d 65 74 68 6f 64 20 6d 6f 76 65 62 72 method movebr
0ec0: 61 6e 63 68 65 73 74 6f 20 7b 72 65 76 7d 20 7b anchesto {rev} {
0ed0: 0a 09 73 65 74 20 72 65 76 6c 6f 64 20 5b 24 72 ..set revlod [$r
0ee0: 65 76 20 6c 6f 64 5d 0a 09 66 6f 72 65 61 63 68 ev lod]..foreach
0ef0: 20 62 72 61 6e 63 68 20 24 6d 79 62 72 61 6e 63 branch $mybranc
0f00: 68 65 73 20 7b 0a 09 20 20 20 20 24 72 65 76 20 hes {.. $rev
0f10: 61 64 64 62 72 61 6e 63 68 20 24 62 72 61 6e 63 addbranch $branc
0f20: 68 0a 09 20 20 20 20 24 62 72 61 6e 63 68 20 73 h.. $branch s
0f30: 65 74 70 61 72 65 6e 74 20 24 72 65 76 0a 09 20 etparent $rev..
0f40: 20 20 20 24 62 72 61 6e 63 68 20 73 65 74 6c 6f $branch setlo
0f50: 64 20 24 72 65 76 6c 6f 64 0a 09 7d 0a 09 66 6f d $revlod..}..fo
0f60: 72 65 61 63 68 20 62 72 61 6e 63 68 72 65 76 20 reach branchrev
0f70: 24 6d 79 62 72 61 6e 63 68 63 68 69 6c 64 72 65 $mybranchchildre
0f80: 6e 20 7b 0a 09 20 20 20 20 24 72 65 76 20 61 64 n {.. $rev ad
0f90: 64 63 68 69 6c 64 6f 6e 62 72 61 6e 63 68 20 24 dchildonbranch $
0fa0: 62 72 61 6e 63 68 72 65 76 0a 09 20 20 20 20 24 branchrev.. $
0fb0: 62 72 61 6e 63 68 72 65 76 20 63 75 74 66 72 6f branchrev cutfro
0fc0: 6d 70 61 72 65 6e 74 0a 09 20 20 20 20 24 62 72 mparent.. $br
0fd0: 61 6e 63 68 72 65 76 20 73 65 74 70 61 72 65 6e anchrev setparen
0fe0: 74 20 24 72 65 76 0a 09 7d 0a 09 73 65 74 20 6d t $rev..}..set m
0ff0: 79 62 72 61 6e 63 68 65 73 20 20 20 20 20 20 20 ybranches
1000: 7b 7d 0a 09 73 65 74 20 6d 79 62 72 61 6e 63 68 {}..set mybranch
1010: 63 68 69 6c 64 72 65 6e 20 7b 7d 0a 09 72 65 74 children {}..ret
1020: 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 urn. }.. #
1030: 20 54 61 67 20 6c 69 6e 6b 61 67 65 20 5f 5f 5f Tag linkage ___
1040: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ________________
1050: 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20 20 6d 65 74 68 ______.. meth
1060: 6f 64 20 61 64 64 74 61 67 20 7b 74 61 67 7d 20 od addtag {tag}
1070: 7b 0a 09 6c 61 70 70 65 6e 64 20 6d 79 74 61 67 {..lappend mytag
1080: 73 20 24 74 61 67 0a 09 72 65 74 75 72 6e 0a 20 s $tag..return.
1090: 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 }.. method
10a0: 20 6d 6f 76 65 74 61 67 73 74 6f 20 7b 72 65 76 movetagsto {rev
10b0: 7d 20 7b 0a 09 73 65 74 20 72 65 76 6c 6f 64 20 } {..set revlod
10c0: 5b 24 72 65 76 20 6c 6f 64 5d 0a 09 66 6f 72 65 [$rev lod]..fore
10d0: 61 63 68 20 74 61 67 20 24 6d 79 74 61 67 73 20 ach tag $mytags
10e0: 7b 0a 09 20 20 20 20 24 72 65 76 20 61 64 64 74 {.. $rev addt
10f0: 61 67 20 24 74 61 67 0a 09 20 20 20 20 24 74 61 ag $tag.. $ta
1100: 67 20 73 65 74 74 61 67 72 65 76 20 24 72 65 76 g settagrev $rev
1110: 0a 09 20 20 20 20 24 74 61 67 20 73 65 74 6c 6f .. $tag setlo
1120: 64 20 24 72 65 76 6c 6f 64 0a 09 7d 0a 09 73 65 d $revlod..}..se
1130: 74 20 6d 79 74 61 67 73 20 7b 7d 0a 09 72 65 74 t mytags {}..ret
1140: 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 urn. }.. #
1150: 20 67 65 6e 65 72 61 6c 20 73 79 6d 62 6f 6c 20 general symbol
1160: 6f 70 65 72 61 74 69 6f 6e 73 20 5f 5f 5f 5f 5f operations _____
1170: 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20 20 6d 65 74 68 ______.. meth
1180: 6f 64 20 6d 6f 76 65 73 79 6d 62 6f 6c 73 74 6f od movesymbolsto
1190: 20 7b 72 65 76 7d 20 7b 0a 09 23 20 4d 6f 76 65 {rev} {..# Move
11a0: 20 74 68 65 20 74 61 67 73 20 61 6e 64 20 62 72 the tags and br
11b0: 61 6e 63 68 65 73 20 61 74 74 61 63 68 65 64 20 anches attached
11c0: 74 6f 20 74 68 69 73 20 72 65 76 69 73 69 6f 6e to this revision
11d0: 20 74 6f 20 74 68 65 0a 09 23 20 64 65 73 74 69 to the..# desti
11e0: 6e 61 74 69 6f 6e 20 61 6e 64 20 66 69 78 20 61 nation and fix a
11f0: 6c 6c 20 70 6f 69 6e 74 65 72 73 2e 0a 0a 09 24 ll pointers....$
1200: 73 65 6c 66 20 6d 6f 76 65 74 61 67 73 74 6f 20 self movetagsto
1210: 20 20 20 20 24 72 65 76 0a 09 24 73 65 6c 66 20 $rev..$self
1220: 6d 6f 76 65 62 72 61 6e 63 68 65 73 74 6f 20 24 movebranchesto $
1230: 72 65 76 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 rev..return.
1240: 7d 0a 0a 20 20 20 20 23 20 44 65 72 69 76 65 64 }.. # Derived
1250: 20 73 74 75 66 66 20 5f 5f 5f 5f 5f 5f 5f 5f 5f stuff _________
1260: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a ______________..
1270: 20 20 20 20 6d 65 74 68 6f 64 20 64 65 74 65 72 method deter
1280: 6d 69 6e 65 6f 70 65 72 61 74 69 6f 6e 20 7b 7d mineoperation {}
1290: 20 7b 0a 09 23 20 4c 6f 6f 6b 20 61 74 20 74 68 {..# Look at th
12a0: 65 20 73 74 61 74 65 20 6f 66 20 62 6f 74 68 20 e state of both
12b0: 74 68 69 73 20 72 65 76 69 73 69 6f 6e 20 61 6e this revision an
12c0: 64 20 69 74 73 20 70 61 72 65 6e 74 20 74 6f 0a d its parent to.
12d0: 09 23 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 .# determine the
12e0: 20 74 79 70 65 20 6f 70 66 20 6f 70 65 72 61 74 type opf operat
12f0: 69 6f 6e 20 77 68 69 63 68 20 77 61 73 20 70 65 ion which was pe
1300: 72 66 6f 72 6d 65 64 20 28 61 64 64 2c 0a 09 23 rformed (add,..#
1310: 20 6d 6f 64 69 66 79 2c 20 64 65 6c 65 74 65 2c modify, delete,
1320: 20 6e 6f 6e 65 29 2e 0a 09 23 0a 09 23 20 54 68 none)...#..# Th
1330: 65 20 69 6d 70 6f 72 74 61 6e 74 20 69 6e 66 6f e important info
1340: 72 6d 61 74 69 6f 6e 20 69 73 20 64 65 61 64 20 rmation is dead
1350: 76 73 20 6e 6f 74 2d 64 65 61 64 20 66 6f 72 20 vs not-dead for
1360: 62 6f 74 68 2c 0a 09 23 20 67 69 76 69 6e 67 20 both,..# giving
1370: 72 69 73 65 20 74 6f 20 66 6f 75 72 20 70 6f 73 rise to four pos
1380: 73 69 62 6c 65 20 74 79 70 65 73 2e 0a 0a 09 73 sible types....s
1390: 65 74 20 73 64 65 61 64 20 5b 65 78 70 72 20 7b et sdead [expr {
13a0: 24 6d 79 73 74 61 74 65 20 65 71 20 22 64 65 61 $mystate eq "dea
13b0: 64 22 7d 5d 0a 09 73 65 74 20 70 64 65 61 64 20 d"}]..set pdead
13c0: 5b 65 78 70 72 20 7b 24 6d 79 70 61 72 65 6e 74 [expr {$myparent
13d0: 20 65 71 20 22 22 20 7c 7c 20 5b 24 6d 79 70 61 eq "" || [$mypa
13e0: 72 65 6e 74 20 73 74 61 74 65 5d 20 65 71 20 22 rent state] eq "
13f0: 64 65 61 64 22 7d 5d 0a 0a 09 73 65 74 20 6d 79 dead"}]...set my
1400: 6f 70 65 72 61 74 69 6f 6e 20 24 6d 79 6f 70 73 operation $myops
1410: 74 61 74 65 28 5b 6c 69 73 74 20 24 70 64 65 61 tate([list $pdea
1420: 64 20 24 73 64 65 61 64 5d 29 0a 09 72 65 74 75 d $sdead])..retu
1430: 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 rn. }.. me
1440: 74 68 6f 64 20 6f 70 65 72 61 74 69 6f 6e 20 7b thod operation {
1450: 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 6f 70 } { return $myop
1460: 65 72 61 74 69 6f 6e 20 7d 0a 20 20 20 20 6d 65 eration }. me
1470: 74 68 6f 64 20 72 65 74 79 70 65 20 7b 78 7d 20 thod retype {x}
1480: 7b 20 73 65 74 20 6d 79 6f 70 65 72 61 74 69 6f { set myoperatio
1490: 6e 20 24 78 20 3b 20 72 65 74 75 72 6e 20 7d 0a n $x ; return }.
14a0: 0a 20 20 20 20 6d 65 74 68 6f 64 20 69 73 6f 6e . method ison
14b0: 64 65 66 61 75 6c 74 62 72 61 6e 63 68 20 7b 7d defaultbranch {}
14c0: 20 7b 20 73 65 74 20 6d 79 69 73 6f 6e 64 65 66 { set myisondef
14d0: 61 75 6c 74 62 72 61 6e 63 68 20 31 20 3b 20 72 aultbranch 1 ; r
14e0: 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 6d 65 74 eturn }.. met
14f0: 68 6f 64 20 73 65 74 64 65 66 61 75 6c 74 62 72 hod setdefaultbr
1500: 61 6e 63 68 63 68 69 6c 64 20 20 7b 72 65 76 7d anchchild {rev}
1510: 20 7b 20 73 65 74 20 6d 79 64 62 63 68 69 6c 64 { set mydbchild
1520: 20 24 72 65 76 20 3b 20 72 65 74 75 72 6e 20 7d $rev ; return }
1530: 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 65 74 64 . method setd
1540: 65 66 61 75 6c 74 62 72 61 6e 63 68 70 61 72 65 efaultbranchpare
1550: 6e 74 20 7b 72 65 76 7d 20 7b 0a 09 73 65 74 20 nt {rev} {..set
1560: 6d 79 64 62 70 61 72 65 6e 74 20 24 72 65 76 0a mydbparent $rev.
1570: 0a 09 23 20 52 65 74 79 70 65 20 74 68 65 20 72 ..# Retype the r
1580: 65 76 69 73 69 6f 6e 20 28 6d 61 79 20 63 68 61 evision (may cha
1590: 6e 67 65 20 66 72 6f 6d 20 27 61 64 64 27 20 74 nge from 'add' t
15a0: 6f 20 27 63 68 61 6e 67 65 27 29 2e 0a 0a 09 73 o 'change')....s
15b0: 65 74 20 73 64 65 61 64 20 5b 65 78 70 72 20 7b et sdead [expr {
15c0: 24 6d 79 6f 70 65 72 61 74 69 6f 6e 20 20 20 20 $myoperation
15d0: 20 6e 65 20 22 63 68 61 6e 67 65 22 7d 5d 0a 09 ne "change"}]..
15e0: 73 65 74 20 70 64 65 61 64 20 5b 65 78 70 72 20 set pdead [expr
15f0: 7b 5b 24 72 65 76 20 6f 70 65 72 61 74 69 6f 6e {[$rev operation
1600: 5d 20 6e 65 20 22 63 68 61 6e 67 65 22 7d 5d 0a ] ne "change"}].
1610: 09 73 65 74 20 6d 79 6f 70 65 72 61 74 69 6f 6e .set myoperation
1620: 20 24 6d 79 6f 70 73 74 61 74 65 28 5b 6c 69 73 $myopstate([lis
1630: 74 20 24 70 64 65 61 64 20 24 73 64 65 61 64 5d t $pdead $sdead]
1640: 29 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a )..return. }.
1650: 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 23 20 . # # ## ###
1660: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 ##### ######## #
1670: 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 ############.
1680: 20 23 23 20 54 79 70 65 20 41 50 49 0a 0a 20 20 ## Type API..
1690: 20 20 74 79 70 65 6d 65 74 68 6f 64 20 69 73 74 typemethod ist
16a0: 72 75 6e 6b 72 65 76 6e 72 20 7b 72 65 76 6e 72 runkrevnr {revnr
16b0: 7d 20 7b 0a 09 72 65 74 75 72 6e 20 5b 65 78 70 } {..return [exp
16c0: 72 20 7b 5b 6c 6c 65 6e 67 74 68 20 5b 73 70 6c r {[llength [spl
16d0: 69 74 20 24 72 65 76 6e 72 20 2e 5d 5d 20 3d 3d it $revnr .]] ==
16e0: 20 32 7d 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2}]. }..
16f0: 74 79 70 65 6d 65 74 68 6f 64 20 69 73 62 72 61 typemethod isbra
1700: 6e 63 68 72 65 76 6e 72 20 7b 72 65 76 6e 72 20 nchrevnr {revnr
1710: 5f 20 62 76 7d 20 7b 0a 09 69 66 20 7b 5b 72 65 _ bv} {..if {[re
1720: 67 65 78 70 20 24 6d 79 62 72 61 6e 63 68 70 61 gexp $mybranchpa
1730: 74 74 65 72 6e 20 24 72 65 76 6e 72 20 2d 3e 20 ttern $revnr ->
1740: 68 65 61 64 20 74 61 69 6c 5d 7d 20 7b 0a 09 20 head tail]} {..
1750: 20 20 20 75 70 76 61 72 20 31 20 24 62 76 20 62 upvar 1 $bv b
1760: 72 61 6e 63 68 6e 72 0a 09 20 20 20 20 73 65 74 ranchnr.. set
1770: 20 62 72 61 6e 63 68 6e 72 20 24 7b 68 65 61 64 branchnr ${head
1780: 7d 24 74 61 69 6c 0a 09 20 20 20 20 72 65 74 75 }$tail.. retu
1790: 72 6e 20 31 0a 09 7d 0a 09 72 65 74 75 72 6e 20 rn 1..}..return
17a0: 30 0a 20 20 20 20 7d 0a 0a 20 20 20 20 74 79 70 0. }.. typ
17b0: 65 6d 65 74 68 6f 64 20 32 62 72 61 6e 63 68 6e emethod 2branchn
17c0: 72 20 7b 72 65 76 6e 72 7d 20 7b 0a 09 23 20 49 r {revnr} {..# I
17d0: 6e 70 75 74 20 69 73 20 61 20 62 72 61 6e 63 68 nput is a branch
17e0: 20 72 65 76 69 73 69 6f 6e 20 6e 75 6d 62 65 72 revision number
17f0: 2c 20 69 2e 65 2e 20 61 20 72 65 76 69 73 69 6f , i.e. a revisio
1800: 6e 20 6e 75 6d 62 65 72 0a 09 23 20 77 69 74 68 n number..# with
1810: 20 61 6e 20 65 76 65 6e 20 6e 75 6d 62 65 72 20 an even number
1820: 6f 66 20 63 6f 6d 70 6f 6e 65 6e 74 73 3b 20 66 of components; f
1830: 6f 72 20 65 78 61 6d 70 6c 65 20 27 32 2e 39 2e or example '2.9.
1840: 32 2e 31 27 0a 09 23 20 28 6e 65 76 65 72 20 27 2.1'..# (never '
1850: 32 2e 39 2e 32 27 20 6e 6f 72 20 27 32 2e 39 2e 2.9.2' nor '2.9.
1860: 30 2e 32 27 29 2e 20 20 54 68 65 20 72 65 74 75 0.2'). The retu
1870: 72 6e 20 76 61 6c 75 65 20 69 73 20 74 68 65 0a rn value is the.
1880: 09 23 20 62 72 61 6e 63 68 20 6e 75 6d 62 65 72 .# branch number
1890: 20 28 66 6f 72 20 65 78 61 6d 70 6c 65 2c 20 27 (for example, '
18a0: 32 2e 39 2e 32 27 29 2e 20 20 46 6f 72 20 74 72 2.9.2'). For tr
18b0: 75 6e 6b 20 72 65 76 69 73 69 6f 6e 73 2c 0a 09 unk revisions,..
18c0: 23 20 6c 69 6b 65 20 27 33 2e 34 27 2c 20 77 65 # like '3.4', we
18d0: 20 72 65 74 75 72 6e 20 74 68 65 20 65 6d 70 74 return the empt
18e0: 79 20 73 74 72 69 6e 67 2e 0a 0a 09 69 66 20 7b y string....if {
18f0: 5b 24 74 79 70 65 20 69 73 74 72 75 6e 6b 72 65 [$type istrunkre
1900: 76 6e 72 20 24 72 65 76 6e 72 5d 7d 20 7b 0a 09 vnr $revnr]} {..
1910: 20 20 20 20 72 65 74 75 72 6e 20 22 22 0a 09 7d return ""..}
1920: 0a 09 72 65 74 75 72 6e 20 5b 6a 6f 69 6e 20 5b ..return [join [
1930: 6c 72 61 6e 67 65 20 5b 73 70 6c 69 74 20 24 72 lrange [split $r
1940: 65 76 6e 72 20 2e 5d 20 30 20 65 6e 64 2d 31 5d evnr .] 0 end-1]
1950: 20 2e 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 74 .]. }.. t
1960: 79 70 65 6d 65 74 68 6f 64 20 32 62 72 61 6e 63 ypemethod 2branc
1970: 68 70 61 72 65 6e 74 72 65 76 6e 72 20 7b 62 72 hparentrevnr {br
1980: 61 6e 63 68 6e 72 7d 20 7b 0a 09 23 20 43 68 6f anchnr} {..# Cho
1990: 70 20 74 68 65 20 6c 61 73 74 20 73 65 67 6d 65 p the last segme
19a0: 6e 74 20 6f 66 66 0a 09 72 65 74 75 72 6e 20 5b nt off..return [
19b0: 6a 6f 69 6e 20 5b 6c 72 61 6e 67 65 20 5b 73 70 join [lrange [sp
19c0: 6c 69 74 20 24 62 72 61 6e 63 68 6e 72 20 2e 5d lit $branchnr .]
19d0: 20 30 20 65 6e 64 2d 31 5d 20 2e 5d 0a 20 20 20 0 end-1] .].
19e0: 20 7d 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 }.. # # ## #
19f0: 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 ## ##### #######
1a00: 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 0a # #############.
1a10: 20 20 20 20 23 23 20 53 74 61 74 65 0a 0a 20 20 ## State..
1a20: 20 20 74 79 70 65 76 61 72 69 61 62 6c 65 20 6d typevariable m
1a30: 79 62 72 61 6e 63 68 70 61 74 74 65 72 6e 20 7b ybranchpattern {
1a40: 5e 28 28 3f 3a 5c 64 2b 5c 2e 5c 64 2b 5c 2e 29 ^((?:\d+\.\d+\.)
1a50: 2b 29 28 3f 3a 30 5c 2e 29 3f 28 5c 64 2b 29 24 +)(?:0\.)?(\d+)$
1a60: 7d 0a 20 20 20 20 23 20 46 69 72 73 74 20 61 20 }. # First a
1a70: 6e 6f 6e 7a 65 72 6f 20 65 76 65 6e 20 6e 75 6d nonzero even num
1a80: 62 65 72 20 6f 66 20 64 69 67 69 74 20 67 72 6f ber of digit gro
1a90: 75 70 73 20 77 69 74 68 20 74 72 61 69 6c 69 6e ups with trailin
1aa0: 67 20 64 6f 74 0a 20 20 20 20 23 20 43 56 53 20 g dot. # CVS
1ab0: 74 68 65 6e 20 73 74 69 63 6b 73 20 61 6e 20 65 then sticks an e
1ac0: 78 74 72 61 20 30 20 69 6e 20 68 65 72 65 3b 20 xtra 0 in here;
1ad0: 52 43 53 20 64 6f 65 73 20 6e 6f 74 2e 0a 20 20 RCS does not..
1ae0: 20 20 23 20 41 6e 64 20 74 68 65 20 6c 61 73 74 # And the last
1af0: 20 64 69 67 69 74 20 67 72 6f 75 70 2e 0a 0a 20 digit group...
1b00: 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 72 65 variable myre
1b10: 76 6e 72 20 20 20 20 20 7b 7d 20 3b 20 23 20 52 vnr {} ; # R
1b20: 65 76 69 73 69 6f 6e 20 6e 75 6d 62 65 72 20 6f evision number o
1b30: 66 20 74 68 65 20 72 65 76 69 73 69 6f 6e 2e 0a f the revision..
1b40: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 64 variable myd
1b50: 61 74 65 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 ate {} ; #
1b60: 54 69 6d 65 73 74 61 6d 70 20 6f 66 20 74 68 65 Timestamp of the
1b70: 20 72 65 76 69 73 69 6f 6e 2c 20 73 65 63 6f 6e revision, secon
1b80: 64 73 20 73 69 6e 63 65 20 65 70 6f 63 68 0a 20 ds since epoch.
1b90: 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 6f 72 variable myor
1ba0: 69 67 64 61 74 65 20 20 7b 7d 20 3b 20 23 20 4f igdate {} ; # O
1bb0: 72 69 67 69 6e 61 6c 20 75 6e 6d 6f 64 69 66 69 riginal unmodifi
1bc0: 65 64 20 74 69 6d 65 73 74 61 6d 70 2e 0a 20 20 ed timestamp..
1bd0: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 73 74 61 variable mysta
1be0: 74 65 20 20 20 20 20 7b 7d 20 3b 20 23 20 53 74 te {} ; # St
1bf0: 61 74 65 20 6f 66 20 74 68 65 20 72 65 76 69 73 ate of the revis
1c00: 69 6f 6e 2e 0a 20 20 20 20 76 61 72 69 61 62 6c ion.. variabl
1c10: 65 20 6d 79 66 69 6c 65 20 20 20 20 20 20 7b 7d e myfile {}
1c20: 20 3b 20 23 20 52 65 66 20 74 6f 20 74 68 65 20 ; # Ref to the
1c30: 66 69 6c 65 20 6f 62 6a 65 63 74 20 74 68 65 20 file object the
1c40: 72 65 76 69 73 69 6f 6e 20 62 65 6c 6f 6e 67 73 revision belongs
1c50: 20 74 6f 2e 0a 20 20 20 20 76 61 72 69 61 62 6c to.. variabl
1c60: 65 20 6d 79 74 65 78 74 20 20 20 20 20 20 7b 7d e mytext {}
1c70: 20 3b 20 23 20 52 61 6e 67 65 20 6f 66 20 74 68 ; # Range of th
1c80: 65 20 28 64 65 6c 74 61 29 20 74 65 78 74 20 66 e (delta) text f
1c90: 6f 72 20 74 68 69 73 20 72 65 76 69 73 69 6f 6e or this revision
1ca0: 20 69 6e 20 74 68 65 20 66 69 6c 65 2e 0a 20 20 in the file..
1cb0: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 6d 65 74 variable mymet
1cc0: 61 69 64 20 20 20 20 7b 7d 20 3b 20 23 20 49 64 aid {} ; # Id
1cd0: 20 6f 66 20 74 68 65 20 6d 65 74 61 20 64 61 74 of the meta dat
1ce0: 61 20 67 72 6f 75 70 20 74 68 65 20 72 65 76 69 a group the revi
1cf0: 73 69 6f 6e 0a 09 09 09 20 20 20 20 20 20 23 20 sion.... #
1d00: 62 65 6c 6f 6e 67 73 20 74 6f 2e 20 54 68 69 73 belongs to. This
1d10: 20 69 73 20 6c 61 74 65 72 20 75 73 65 64 20 74 is later used t
1d20: 6f 20 70 75 74 0a 09 09 09 20 20 20 20 20 20 23 o put.... #
1d30: 20 74 68 65 20 66 69 6c 65 20 72 65 76 69 73 69 the file revisi
1d40: 6f 6e 73 20 69 6e 74 6f 20 70 72 65 6c 69 6d 69 ons into prelimi
1d50: 6e 61 72 79 0a 09 09 09 20 20 20 20 20 20 23 20 nary.... #
1d60: 63 68 61 6e 67 65 73 65 74 73 20 28 61 6b 61 20 changesets (aka
1d70: 70 72 6f 6a 65 63 74 20 72 65 76 69 73 69 6f 6e project revision
1d80: 73 29 2e 0a 09 09 09 20 20 20 20 20 20 23 20 54 s)..... # T
1d90: 68 69 73 20 69 64 20 65 6e 63 6f 64 65 73 20 34 his id encodes 4
1da0: 20 70 69 65 63 65 73 20 6f 66 20 64 61 74 61 2c pieces of data,
1db0: 0a 09 09 09 20 20 20 20 20 20 23 20 6e 61 6d 65 .... # name
1dc0: 6c 79 3a 20 74 68 65 20 70 72 6f 6a 65 63 74 20 ly: the project
1dd0: 61 6e 64 20 62 72 61 6e 63 68 20 74 68 65 0a 09 and branch the..
1de0: 09 09 20 20 20 20 20 20 23 20 72 65 76 69 73 69 .. # revisi
1df0: 6f 6e 20 77 61 73 20 63 6f 6d 6d 69 74 74 65 64 on was committed
1e00: 20 74 6f 2c 20 74 68 65 20 61 75 74 68 6f 72 0a to, the author.
1e10: 09 09 09 20 20 20 20 20 20 23 20 77 68 6f 20 64 ... # who d
1e20: 69 64 20 74 68 65 20 63 6f 6d 6d 69 74 2c 20 61 id the commit, a
1e30: 6e 64 20 74 68 65 20 6d 65 73 73 61 67 65 0a 09 nd the message..
1e40: 09 09 20 20 20 20 20 20 23 20 75 73 65 64 2e 0a .. # used..
1e50: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 6c variable myl
1e60: 6f 64 20 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 od {} ; #
1e70: 52 65 66 65 72 65 6e 63 65 20 74 6f 20 74 68 65 Reference to the
1e80: 20 6c 69 6e 65 2d 6f 66 2d 64 65 76 65 6c 6f 70 line-of-develop
1e90: 6d 65 6e 74 0a 09 09 09 20 20 20 20 20 20 23 20 ment.... #
1ea0: 6f 62 6a 65 63 74 20 74 68 65 20 72 65 76 69 73 object the revis
1eb0: 69 6f 6e 20 62 65 6c 6f 6e 67 73 20 74 6f 2e 20 ion belongs to.
1ec0: 41 6e 0a 09 09 09 20 20 20 20 20 20 23 20 61 6c An.... # al
1ed0: 74 65 72 6e 61 74 69 76 65 20 69 64 69 6f 6d 20 ternative idiom
1ee0: 77 6f 75 6c 64 20 62 65 20 74 6f 20 63 61 6c 6c would be to call
1ef0: 20 69 74 0a 09 09 09 20 20 20 20 20 20 23 20 74 it.... # t
1f00: 68 65 20 62 72 61 6e 63 68 20 74 68 65 20 72 65 he branch the re
1f10: 76 69 73 69 6f 6e 20 69 73 20 6f 6e 2e 20 54 68 vision is on. Th
1f20: 69 73 0a 09 09 09 20 20 20 20 20 20 23 20 72 65 is.... # re
1f30: 66 65 72 65 6e 63 65 20 69 73 20 74 6f 20 61 20 ference is to a
1f40: 70 72 6f 6a 65 63 74 2d 6c 65 76 65 6c 20 6f 62 project-level ob
1f50: 6a 65 63 74 0a 09 09 09 20 20 20 20 20 20 23 20 ject.... #
1f60: 28 73 79 6d 62 6f 6c 20 6f 72 20 74 72 75 6e 6b (symbol or trunk
1f70: 29 2e 0a 0a 20 20 20 20 23 20 42 61 73 69 63 20 )... # Basic
1f80: 70 61 72 65 6e 74 2f 63 68 69 6c 64 20 6c 69 6e parent/child lin
1f90: 6b 61 67 65 20 28 6c 69 6e 65 73 20 6f 66 20 64 kage (lines of d
1fa0: 65 76 65 6c 6f 70 6d 65 6e 74 29 0a 0a 20 20 20 evelopment)..
1fb0: 20 76 61 72 69 61 62 6c 65 20 6d 79 70 61 72 65 variable mypare
1fc0: 6e 74 20 7b 7d 20 3b 20 23 20 52 65 66 20 74 6f nt {} ; # Ref to
1fd0: 20 70 61 72 65 6e 74 20 72 65 76 69 73 69 6f 6e parent revision
1fe0: 20 6f 62 6a 65 63 74 2e 20 4c 69 6e 6b 20 72 65 object. Link re
1ff0: 71 75 69 72 65 64 20 62 65 63 61 75 73 65 20 6f quired because o
2000: 66 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 f. #
2010: 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 27 ; # '
2020: 63 76 73 61 64 6d 69 6e 20 2d 6f 27 2c 20 77 68 cvsadmin -o', wh
2030: 69 63 68 20 63 61 6e 20 63 72 65 61 74 65 20 61 ich can create a
2040: 72 62 69 74 72 61 72 79 20 67 61 70 73 20 69 6e rbitrary gaps in
2050: 20 74 68 65 0a 20 20 20 20 23 20 20 20 20 20 20 the. #
2060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 ;
2070: 23 20 6e 75 6d 62 65 72 69 6e 67 20 73 65 71 75 # numbering sequ
2080: 65 6e 63 65 2e 20 54 68 69 73 20 69 73 20 69 6e ence. This is in
2090: 20 74 68 65 20 73 61 6d 65 20 6c 69 6e 65 20 6f the same line o
20a0: 66 20 64 65 76 65 6c 6f 70 6d 65 6e 74 0a 20 20 f development.
20b0: 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 #
20c0: 20 20 20 20 20 20 20 3b 20 23 20 4e 6f 74 65 3a ; # Note:
20d0: 20 46 6f 72 20 74 68 65 20 66 69 72 73 74 20 72 For the first r
20e0: 65 76 69 73 69 6f 6e 20 6f 6e 20 61 20 62 72 61 evision on a bra
20f0: 6e 63 68 20 74 68 65 20 72 65 76 69 73 69 6f 6e nch the revision
2100: 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 . #
2110: 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 69 74 ; # it
2120: 20 77 61 73 20 73 70 61 77 6e 65 64 20 66 72 6f was spawned fro
2130: 6d 20 69 73 20 74 68 65 20 70 61 72 65 6e 74 2e m is the parent.
2140: 20 4f 6e 6c 79 20 74 68 65 20 72 6f 6f 74 20 72 Only the root r
2150: 65 76 69 73 69 6f 6e 0a 20 20 20 20 23 20 20 20 evision. #
2160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2170: 20 3b 20 23 20 6f 66 20 6d 79 66 69 6c 65 27 73 ; # of myfile's
2180: 20 72 65 76 69 73 69 6f 6e 20 74 72 65 65 20 68 revision tree h
2190: 61 73 20 6e 6f 74 68 69 6e 67 20 73 65 74 20 68 as nothing set h
21a0: 65 72 65 2e 0a 20 20 20 20 23 20 20 20 20 20 20 ere.. #
21b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 ;
21c0: 23 0a 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 #.. variable
21d0: 6d 79 63 68 69 6c 64 20 20 7b 7d 20 3b 20 23 20 mychild {} ; #
21e0: 52 65 66 20 74 6f 20 74 68 65 20 70 72 69 6d 61 Ref to the prima
21f0: 72 79 20 63 68 69 6c 64 20 72 65 76 69 73 69 6f ry child revisio
2200: 6e 20 6f 62 6a 65 63 74 2c 20 69 2e 65 2e 20 74 n object, i.e. t
2210: 68 65 20 6e 65 78 74 0a 20 20 20 20 23 20 20 20 he next. #
2220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2230: 20 3b 20 23 20 72 65 76 69 73 69 6f 6e 20 69 6e ; # revision in
2240: 20 74 68 65 20 73 61 6d 65 20 6c 69 6e 65 20 6f the same line o
2250: 66 20 64 65 76 65 6c 6f 70 6d 65 6e 74 2e 0a 0a f development...
2260: 20 20 20 20 23 20 42 72 61 6e 63 68 20 6c 69 6e # Branch lin
2270: 6b 61 67 65 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f kage ___________
2280: 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20 20 76 _________.. v
2290: 61 72 69 61 62 6c 65 20 6d 79 62 72 61 6e 63 68 ariable mybranch
22a0: 65 73 20 20 20 20 20 7b 7d 20 3b 20 23 20 4c 69 es {} ; # Li
22b0: 73 74 20 6f 66 20 74 68 65 20 62 72 61 6e 63 68 st of the branch
22c0: 65 73 20 28 6f 62 6a 73 29 20 73 70 61 77 6e 65 es (objs) spawne
22d0: 64 20 62 79 20 74 68 69 73 20 72 65 76 69 73 69 d by this revisi
22e0: 6f 6e 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 on.. variable
22f0: 20 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 68 20 myparentbranch
2300: 7b 7d 20 3b 20 23 20 46 6f 72 20 74 68 65 20 66 {} ; # For the f
2310: 69 72 73 74 20 72 65 76 69 73 69 6f 6e 20 6f 6e irst revision on
2320: 20 61 20 62 72 61 6e 63 68 20 74 68 65 20 72 65 a branch the re
2330: 6c 65 76 61 6e 74 0a 20 20 20 20 23 20 20 20 20 levant. #
2340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2350: 20 20 20 20 20 20 3b 20 23 20 62 72 61 6e 63 68 ; # branch
2360: 20 6f 62 6a 65 63 74 2e 20 54 68 69 73 20 61 6c object. This al
2370: 73 6f 20 61 6c 6c 6f 77 73 20 75 73 20 74 6f 20 so allows us to
2380: 64 65 74 65 72 6d 69 6e 65 20 69 66 0a 20 20 20 determine if.
2390: 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 #
23a0: 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 ; #
23b0: 6d 79 70 61 72 65 6e 74 20 69 73 20 69 6e 20 74 myparent is in t
23c0: 68 65 20 73 61 6d 65 20 4c 4f 44 2c 20 6f 72 20 he same LOD, or
23d0: 74 68 65 20 72 65 76 69 73 69 6f 6e 20 74 68 65 the revision the
23e0: 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 . #
23f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2400: 3b 20 23 20 62 72 61 6e 63 68 20 73 70 61 77 6e ; # branch spawn
2410: 65 64 20 66 72 6f 6d 2e 0a 0a 20 20 20 20 23 20 ed from... #
2420: 4c 69 73 74 20 6f 66 20 74 68 65 20 72 65 76 69 List of the revi
2430: 73 69 6f 6e 20 6f 62 6a 65 63 74 73 20 6f 66 20 sion objects of
2440: 74 68 65 20 66 69 72 73 74 20 63 6f 6d 6d 69 74 the first commit
2450: 73 20 6f 6e 20 61 6e 79 0a 20 20 20 20 23 20 62 s on any. # b
2460: 72 61 6e 63 68 65 73 20 73 70 61 77 6e 65 64 20 ranches spawned
2470: 62 79 20 74 68 69 73 20 72 65 76 69 73 69 6f 6e by this revision
2480: 20 6f 6e 20 77 68 69 63 68 20 63 6f 6d 6d 69 74 on which commit
2490: 73 20 6f 63 63 75 72 72 65 64 2e 0a 20 20 20 20 s occurred..
24a0: 23 20 54 68 69 73 20 64 65 70 65 6e 64 65 6e 63 # This dependenc
24b0: 79 20 69 73 20 6b 65 70 74 20 65 78 70 6c 69 63 y is kept explic
24c0: 69 74 6c 79 20 62 65 63 61 75 73 65 20 6f 74 68 itly because oth
24d0: 65 72 77 69 73 65 20 61 0a 20 20 20 20 23 20 72 erwise a. # r
24e0: 65 76 69 73 69 6f 6e 2d 6f 6e 6c 79 20 74 6f 70 evision-only top
24f0: 6f 6c 6f 67 69 63 61 6c 20 73 6f 72 74 20 77 6f ological sort wo
2500: 75 6c 64 20 6d 69 73 73 20 74 68 65 20 64 65 70 uld miss the dep
2510: 65 6e 64 65 6e 63 79 20 74 68 61 74 0a 20 20 20 endency that.
2520: 20 23 20 65 78 69 73 74 73 20 76 69 61 20 2d 3e # exists via ->
2530: 20 6d 79 62 72 61 6e 63 68 65 73 2e 0a 0a 20 20 mybranches...
2540: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 62 72 61 variable mybra
2550: 6e 63 68 63 68 69 6c 64 72 65 6e 20 7b 7d 20 3b nchchildren {} ;
2560: 20 23 20 4c 69 73 74 20 6f 66 20 74 68 65 20 72 # List of the r
2570: 65 76 69 73 69 6f 6e 73 20 28 6f 62 6a 73 29 20 evisions (objs)
2580: 77 68 69 63 68 20 61 72 65 20 74 68 65 20 66 69 which are the fi
2590: 72 73 74 0a 20 20 20 20 23 20 20 20 20 20 20 20 rst. #
25a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
25b0: 20 20 20 20 20 3b 20 23 20 63 6f 6d 6d 69 74 73 ; # commits
25c0: 20 6f 6e 20 61 6e 79 20 6f 66 20 74 68 65 20 62 on any of the b
25d0: 72 61 6e 63 68 65 73 20 73 70 61 77 6e 65 64 20 ranches spawned
25e0: 66 72 6f 6d 20 74 68 69 73 0a 20 20 20 20 23 20 from this. #
25f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2600: 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 72 ; # r
2610: 65 76 69 73 69 6f 6e 2e 20 54 68 65 20 64 65 70 evision. The dep
2620: 65 6e 64 65 6e 63 79 20 69 73 20 6b 65 70 74 20 endency is kept
2630: 65 78 70 6c 69 63 69 74 6c 79 20 74 6f 0a 20 20 explicitly to.
2640: 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 #
2650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b ;
2660: 20 23 20 65 6e 73 75 72 65 20 74 68 61 74 20 61 # ensure that a
2670: 20 72 65 76 69 73 69 6f 6e 2d 6f 6e 6c 79 20 74 revision-only t
2680: 6f 70 6f 6c 6f 67 69 63 61 6c 20 73 6f 72 74 20 opological sort
2690: 77 69 6c 6c 0a 20 20 20 20 23 20 20 20 20 20 20 will. #
26a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
26b0: 20 20 20 20 20 20 3b 20 23 20 6e 6f 74 20 6d 69 ; # not mi
26c0: 73 73 20 69 74 2c 20 61 73 20 69 74 20 6f 74 68 ss it, as it oth
26d0: 65 72 77 69 73 65 20 65 78 69 73 74 73 20 6f 6e erwise exists on
26e0: 6c 79 20 76 69 61 0a 20 20 20 20 23 20 20 20 20 ly via. #
26f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2700: 20 20 20 20 20 20 20 20 3b 20 23 20 6d 79 62 72 ; # mybr
2710: 61 6e 63 68 65 73 2e 0a 0a 20 20 20 20 23 20 54 anches... # T
2720: 61 67 20 6c 69 6e 6b 61 67 65 20 5f 5f 5f 5f 5f ag linkage _____
2730: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ________________
2740: 5f 5f 5f 0a 0a 20 20 20 20 76 61 72 69 61 62 6c ___.. variabl
2750: 65 20 6d 79 74 61 67 73 20 7b 7d 20 3b 20 23 20 e mytags {} ; #
2760: 4c 69 73 74 20 6f 66 20 74 61 67 73 20 28 6f 62 List of tags (ob
2770: 6a 73 29 20 61 73 73 6f 63 69 61 74 65 64 20 77 js) associated w
2780: 69 74 68 20 74 68 69 73 20 72 65 76 69 73 69 6f ith this revisio
2790: 6e 2e 0a 0a 20 20 20 20 23 20 4d 6f 72 65 20 64 n... # More d
27a0: 65 72 69 76 65 64 20 64 61 74 61 0a 0a 20 20 20 erived data..
27b0: 20 76 61 72 69 61 62 6c 65 20 6d 79 6f 70 65 72 variable myoper
27c0: 61 74 69 6f 6e 20 20 20 20 20 20 20 20 7b 7d 20 ation {}
27d0: 3b 20 23 20 4f 6e 65 20 6f 66 20 27 61 64 64 27 ; # One of 'add'
27e0: 2c 20 27 63 68 61 6e 67 65 27 2c 20 27 64 65 6c , 'change', 'del
27f0: 65 74 65 27 2c 20 6f 72 0a 09 09 09 20 20 20 20 ete', or....
2800: 20 20 20 20 20 20 20 20 20 23 20 27 6e 6f 74 68 # 'noth
2810: 69 6e 67 27 2e 20 44 65 72 69 76 65 64 20 66 72 ing'. Derived fr
2820: 6f 6d 20 6f 75 72 20 61 6e 64 0a 09 09 09 20 20 om our and....
2830: 20 20 20 20 20 20 20 20 20 20 20 23 20 69 74 73 # its
2840: 20 70 61 72 65 6e 74 27 73 20 73 74 61 74 65 2e parent's state.
2850: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 . variable my
2860: 69 73 6f 6e 64 65 66 61 75 6c 74 62 72 61 6e 63 isondefaultbranc
2870: 68 20 30 20 3b 20 23 20 42 6f 6f 6c 65 61 6e 20 h 0 ; # Boolean
2880: 66 6c 61 67 2c 20 73 65 74 20 69 66 20 74 68 65 flag, set if the
2890: 0a 09 09 09 09 20 20 20 20 20 23 20 72 65 76 69 ..... # revi
28a0: 73 69 6f 6e 20 69 73 20 6f 6e 20 74 68 65 20 6e sion is on the n
28b0: 6f 6e 2d 74 72 75 6e 6b 0a 09 09 09 09 20 20 20 on-trunk.....
28c0: 20 20 23 20 64 65 66 61 75 6c 74 20 62 72 61 6e # default bran
28d0: 63 68 2c 20 61 6b 61 20 76 65 6e 64 6f 72 0a 09 ch, aka vendor..
28e0: 09 09 09 20 20 20 20 20 23 20 62 72 61 6e 63 68 ... # branch
28f0: 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d .. variable m
2900: 79 64 62 70 61 72 65 6e 74 20 20 20 20 20 20 20 ydbparent
2910: 20 20 7b 7d 20 3b 20 23 20 52 65 66 65 72 65 6e {} ; # Referen
2920: 63 65 20 74 6f 20 74 68 65 20 6c 61 73 74 20 72 ce to the last r
2930: 65 76 69 73 69 6f 6e 0a 09 09 09 09 20 20 20 20 evision.....
2940: 20 23 20 6f 6e 20 74 68 65 20 76 65 6e 64 6f 72 # on the vendor
2950: 20 62 72 61 6e 63 68 20 69 66 20 74 68 69 73 20 branch if this
2960: 69 73 0a 09 09 09 09 20 20 20 20 20 23 20 74 68 is..... # th
2970: 65 20 70 72 69 6d 61 72 79 20 63 68 69 6c 64 20 e primary child
2980: 6f 66 20 74 68 65 0a 09 09 09 09 20 20 20 20 20 of the.....
2990: 23 20 72 65 67 75 6c 61 72 20 72 6f 6f 74 2e 0a # regular root..
29a0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 64 variable myd
29b0: 62 63 68 69 6c 64 20 20 20 20 20 20 20 20 20 20 bchild
29c0: 7b 7d 20 3b 20 23 20 52 65 66 65 72 65 6e 63 65 {} ; # Reference
29d0: 20 74 6f 20 74 68 65 20 70 72 69 6d 61 72 79 20 to the primary
29e0: 63 68 69 6c 64 0a 09 09 09 09 20 20 20 20 20 23 child..... #
29f0: 20 6f 66 20 74 68 65 20 72 65 67 75 6c 61 72 20 of the regular
2a00: 72 6f 6f 74 20 69 66 20 74 68 69 73 20 69 73 0a root if this is.
2a10: 09 09 09 09 20 20 20 20 20 23 20 74 68 65 20 6c .... # the l
2a20: 61 73 74 20 72 65 76 69 73 69 6f 6e 20 6f 6e 20 ast revision on
2a30: 74 68 65 20 76 65 6e 64 6f 72 0a 09 09 09 09 20 the vendor.....
2a40: 20 20 20 20 23 20 62 72 61 6e 63 68 2e 0a 0a 20 # branch...
2a50: 20 20 20 23 20 64 65 61 64 28 73 65 6c 66 29 20 # dead(self)
2a60: 78 20 64 65 61 64 28 70 61 72 65 6e 74 29 20 2d x dead(parent) -
2a70: 3e 20 6f 70 65 72 61 74 69 6f 6e 0a 20 20 20 20 > operation.
2a80: 74 79 70 65 76 61 72 69 61 62 6c 65 20 6d 79 6f typevariable myo
2a90: 70 73 74 61 74 65 20 2d 61 72 72 61 79 20 7b 0a pstate -array {.
2aa0: 09 7b 30 20 30 7d 20 63 68 61 6e 67 65 0a 09 7b .{0 0} change..{
2ab0: 30 20 31 7d 20 64 65 6c 65 74 65 0a 09 7b 31 20 0 1} delete..{1
2ac0: 30 7d 20 61 64 64 0a 09 7b 31 20 31 7d 20 6e 6f 0} add..{1 1} no
2ad0: 74 68 69 6e 67 0a 20 20 20 20 7d 0a 0a 20 20 20 thing. }..
2ae0: 20 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 # # ## ### ####
2af0: 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 # ######## #####
2b00: 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 ########. ##
2b10: 49 6e 74 65 72 6e 61 6c 20 6d 65 74 68 6f 64 73 Internal methods
2b20: 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 23 .. # # ## ###
2b30: 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 ##### ########
2b40: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 #############.
2b50: 20 20 23 23 20 43 6f 6e 66 69 67 75 72 61 74 69 ## Configurati
2b60: 6f 6e 0a 0a 20 20 20 20 70 72 61 67 6d 61 20 2d on.. pragma -
2b70: 68 61 73 74 79 70 65 69 6e 66 6f 20 20 20 20 6e hastypeinfo n
2b80: 6f 20 20 3b 20 23 20 6e 6f 20 74 79 70 65 20 69 o ; # no type i
2b90: 6e 74 72 6f 73 70 65 63 74 69 6f 6e 0a 20 20 20 ntrospection.
2ba0: 20 70 72 61 67 6d 61 20 2d 68 61 73 69 6e 66 6f pragma -hasinfo
2bb0: 20 20 20 20 20 20 20 20 6e 6f 20 20 3b 20 23 20 no ; #
2bc0: 6e 6f 20 6f 62 6a 65 63 74 20 69 6e 74 72 6f 73 no object intros
2bd0: 70 65 63 74 69 6f 6e 0a 20 20 20 20 70 72 61 67 pection. prag
2be0: 6d 61 20 2d 73 69 6d 70 6c 65 64 69 73 70 61 74 ma -simpledispat
2bf0: 63 68 20 79 65 73 20 3b 20 23 20 73 69 6d 70 6c ch yes ; # simpl
2c00: 65 20 66 61 73 74 20 64 69 73 70 61 74 63 68 0a e fast dispatch.
2c10: 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 23 20 . # # ## ###
2c20: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 ##### ######## #
2c30: 23 23 23 23 23 23 23 23 23 23 23 23 0a 7d 0a 0a ############.}..
2c40: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a namespace eval :
2c50: 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 :vc::fossil::imp
2c60: 6f 72 74 3a 3a 63 76 73 3a 3a 66 69 6c 65 20 7b ort::cvs::file {
2c70: 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 . namespace e
2c80: 78 70 6f 72 74 20 72 65 76 0a 20 20 20 20 6e 61 xport rev. na
2c90: 6d 65 73 70 61 63 65 20 65 76 61 6c 20 72 65 76 mespace eval rev
2ca0: 20 7b 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 6d {..namespace im
2cb0: 70 6f 72 74 20 3a 3a 76 63 3a 3a 74 6f 6f 6c 73 port ::vc::tools
2cc0: 3a 3a 6d 69 73 63 3a 3a 2a 0a 20 20 20 20 7d 0a ::misc::*. }.
2cd0: 7d 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 }..# # ## ### ##
2ce0: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 ### ######## ###
2cf0: 23 23 23 23 23 23 23 23 23 23 20 23 23 23 23 23 ########## #####
2d00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
2d10: 0a 23 23 20 52 65 61 64 79 0a 0a 70 61 63 6b 61 .## Ready..packa
2d20: 67 65 20 70 72 6f 76 69 64 65 20 76 63 3a 3a 66 ge provide vc::f
2d30: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 ossil::import::c
2d40: 76 73 3a 3a 66 69 6c 65 3a 3a 72 65 76 20 31 2e vs::file::rev 1.
2d50: 30 0a 72 65 74 75 72 6e 0a 0.return.