Hex Artifact Content
Not logged in

Artifact 0385926f22bb5f59f9a6b9b2b3ade1903001f84b:

File tools/cvs2fossil/lib/c2f_frev.tcl part of check-in [b679ca3356] - Code cleanup. Removed trailing whitespace across the board. by aku on 2007-11-25 07:54:09.

0000: 23 23 20 2d 2a 2d 20 74 63 6c 20 2d 2a 2d 0a 23  ## -*- tcl -*-.#
0010: 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20   # ## ### ##### 
0020: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23  ######## #######
0030: 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23  ###### #########
0040: 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 20  ############.## 
0050: 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30  Copyright (c) 20
0060: 30 37 20 41 6e 64 72 65 61 73 20 4b 75 70 72 69  07 Andreas Kupri
0070: 65 73 2e 0a 23 0a 23 20 54 68 69 73 20 73 6f 66  es..#.# This sof
0080: 74 77 61 72 65 20 69 73 20 6c 69 63 65 6e 73 65  tware is license
0090: 64 20 61 73 20 64 65 73 63 72 69 62 65 64 20 69  d as described i
00a0: 6e 20 74 68 65 20 66 69 6c 65 20 4c 49 43 45 4e  n the file LICEN
00b0: 53 45 2c 20 77 68 69 63 68 0a 23 20 79 6f 75 20  SE, which.# you 
00c0: 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65  should have rece
00d0: 69 76 65 64 20 61 73 20 70 61 72 74 20 6f 66 20  ived as part of 
00e0: 74 68 69 73 20 64 69 73 74 72 69 62 75 74 69 6f  this distributio
00f0: 6e 2e 0a 23 0a 23 20 54 68 69 73 20 73 6f 66 74  n..#.# This soft
0100: 77 61 72 65 20 63 6f 6e 73 69 73 74 73 20 6f 66  ware consists of
0110: 20 76 6f 6c 75 6e 74 61 72 79 20 63 6f 6e 74 72   voluntary contr
0120: 69 62 75 74 69 6f 6e 73 20 6d 61 64 65 20 62 79  ibutions made by
0130: 20 6d 61 6e 79 0a 23 20 69 6e 64 69 76 69 64 75   many.# individu
0140: 61 6c 73 2e 20 20 46 6f 72 20 65 78 61 63 74 20  als.  For exact 
0150: 63 6f 6e 74 72 69 62 75 74 69 6f 6e 20 68 69 73  contribution his
0160: 74 6f 72 79 2c 20 73 65 65 20 74 68 65 20 72 65  tory, see the re
0170: 76 69 73 69 6f 6e 0a 23 20 68 69 73 74 6f 72 79  vision.# history
0180: 20 61 6e 64 20 6c 6f 67 73 2c 20 61 76 61 69 6c   and logs, avail
0190: 61 62 6c 65 20 61 74 20 68 74 74 70 3a 2f 2f 66  able at http://f
01a0: 6f 73 73 69 6c 2d 73 63 6d 2e 68 77 61 63 69 2e  ossil-scm.hwaci.
01b0: 63 6f 6d 2f 66 6f 73 73 69 6c 0a 23 20 23 20 23  com/fossil.# # #
01c0: 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23  # ### ##### ####
01d0: 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23  #### ###########
01e0: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23  ## #############
01f0: 23 23 23 23 23 23 23 23 0a 0a 23 23 20 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 70 61 63 6b 61 67 65 20 72 65  tting.package re
0340: 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 73 69 6c  quire vc::fossil
0350: 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 73  ::import::cvs::s
0360: 74 61 74 65 20 20 20 20 20 20 3b 20 23 20 53 74  tate      ; # St
0370: 61 74 65 20 73 74 6f 72 61 67 65 2e 0a 0a 23 20  ate storage...# 
0380: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23  # ## ### ##### #
0390: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23  ####### ########
03a0: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23  ##### ##########
03b0: 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 0a 0a  ###########.##..
03c0: 73 6e 69 74 3a 3a 74 79 70 65 20 3a 3a 76 63 3a  snit::type ::vc:
03d0: 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a  :fossil::import:
03e0: 3a 63 76 73 3a 3a 66 69 6c 65 3a 3a 72 65 76 20  :cvs::file::rev 
03f0: 7b 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 23  {.    # # ## ###
0400: 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20   ##### ######## 
0410: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20  #############.  
0420: 20 20 23 23 20 50 75 62 6c 69 63 20 41 50 49 0a    ## Public API.
0430: 0a 20 20 20 20 63 6f 6e 73 74 72 75 63 74 6f 72  .    constructor
0440: 20 7b 72 65 76 6e 72 20 64 61 74 65 20 73 74 61   {revnr date sta
0450: 74 65 20 74 68 65 66 69 6c 65 7d 20 7b 0a 09 73  te thefile} {..s
0460: 65 74 20 6d 79 72 65 76 6e 72 20 20 20 20 24 72  et myrevnr    $r
0470: 65 76 6e 72 0a 09 73 65 74 20 6d 79 64 61 74 65  evnr..set mydate
0480: 20 20 20 20 20 24 64 61 74 65 0a 09 73 65 74 20       $date..set 
0490: 6d 79 6f 72 69 67 64 61 74 65 20 24 64 61 74 65  myorigdate $date
04a0: 0a 09 73 65 74 20 6d 79 73 74 61 74 65 20 20 20  ..set mystate   
04b0: 20 24 73 74 61 74 65 0a 09 73 65 74 20 6d 79 66   $state..set myf
04c0: 69 6c 65 20 20 20 20 20 24 74 68 65 66 69 6c 65  ile     $thefile
04d0: 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a  ..return.    }..
04e0: 20 20 20 20 6d 65 74 68 6f 64 20 64 65 66 69 64      method defid
04f0: 20 7b 7d 20 7b 0a 09 73 65 74 20 6d 79 69 64 20   {} {..set myid 
0500: 5b 69 6e 63 72 20 6d 79 69 64 63 6f 75 6e 74 65  [incr myidcounte
0510: 72 5d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d  r]..return.    }
0520: 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 69 64 20  ..    method id 
0530: 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 69  {} { return $myi
0540: 64 20 7d 0a 0a 20 20 20 20 23 20 42 61 73 69 63  d }..    # Basic
0550: 20 70 69 65 63 65 73 20 5f 5f 5f 5f 5f 5f 5f 5f   pieces ________
0560: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
0570: 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 68 61 73  ..    method has
0580: 6d 65 74 61 20 7b 7d 20 7b 20 72 65 74 75 72 6e  meta {} { return
0590: 20 5b 65 78 70 72 20 7b 24 6d 79 6d 65 74 61 69   [expr {$mymetai
05a0: 64 20 6e 65 20 22 22 7d 5d 20 7d 0a 20 20 20 20  d ne ""}] }.    
05b0: 6d 65 74 68 6f 64 20 68 61 73 74 65 78 74 20 7b  method hastext {
05c0: 7d 20 7b 0a 09 73 74 72 75 63 74 3a 3a 6c 69 73  } {..struct::lis
05d0: 74 20 61 73 73 69 67 6e 20 24 6d 79 74 65 78 74  t assign $mytext
05e0: 20 73 20 65 0a 09 72 65 74 75 72 6e 20 5b 65 78   s e..return [ex
05f0: 70 72 20 7b 24 73 20 3c 3d 20 24 65 7d 5d 0a 20  pr {$s <= $e}]. 
0600: 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64     }..    method
0610: 20 73 65 74 6d 65 74 61 20 7b 6d 65 74 61 7d 20   setmeta {meta} 
0620: 7b 20 73 65 74 20 6d 79 6d 65 74 61 69 64 20 24  { set mymetaid $
0630: 6d 65 74 61 20 3b 20 72 65 74 75 72 6e 20 7d 0a  meta ; return }.
0640: 20 20 20 20 6d 65 74 68 6f 64 20 73 65 74 74 65      method sette
0650: 78 74 20 7b 74 65 78 74 7d 20 7b 20 73 65 74 20  xt {text} { set 
0660: 6d 79 74 65 78 74 20 20 20 24 74 65 78 74 20 3b  mytext   $text ;
0670: 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 20 6d 65   return }.    me
0680: 74 68 6f 64 20 73 65 74 6c 6f 64 20 20 7b 6c 6f  thod setlod  {lo
0690: 64 7d 20 20 7b 20 73 65 74 20 6d 79 6c 6f 64 20  d}  { set mylod 
06a0: 20 20 20 24 6c 6f 64 20 20 3b 20 72 65 74 75 72     $lod  ; retur
06b0: 6e 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20  n }..    method 
06c0: 72 65 76 6e 72 20 7b 7d 20 7b 20 72 65 74 75 72  revnr {} { retur
06d0: 6e 20 24 6d 79 72 65 76 6e 72 20 7d 0a 20 20 20  n $myrevnr }.   
06e0: 20 6d 65 74 68 6f 64 20 73 74 61 74 65 20 7b 7d   method state {}
06f0: 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 73 74 61   { return $mysta
0700: 74 65 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20  te }.    method 
0710: 6c 6f 64 20 20 20 7b 7d 20 7b 20 72 65 74 75 72  lod   {} { retur
0720: 6e 20 24 6d 79 6c 6f 64 20 20 20 7d 0a 20 20 20  n $mylod   }.   
0730: 20 6d 65 74 68 6f 64 20 64 61 74 65 20 20 7b 7d   method date  {}
0740: 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 64 61 74   { return $mydat
0750: 65 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64  e  }..    method
0760: 20 69 73 6e 65 65 64 65 64 20 7b 7d 20 7b 0a 09   isneeded {} {..
0770: 69 66 20 7b 24 6d 79 6f 70 65 72 61 74 69 6f 6e  if {$myoperation
0780: 20 6e 65 20 22 6e 6f 74 68 69 6e 67 22 7d 20 20   ne "nothing"}  
0790: 20 20 20 20 20 20 20 7b 72 65 74 75 72 6e 20 31         {return 1
07a0: 7d 0a 09 69 66 20 7b 24 6d 79 72 65 76 6e 72 20  }..if {$myrevnr 
07b0: 6e 65 20 22 31 2e 31 22 7d 20 20 20 20 20 20 20  ne "1.1"}       
07c0: 20 20 20 20 20 20 20 20 20 20 7b 72 65 74 75 72            {retur
07d0: 6e 20 31 7d 0a 09 69 66 20 7b 21 5b 24 6d 79 6c  n 1}..if {![$myl
07e0: 6f 64 20 69 73 74 72 75 6e 6b 5d 7d 20 20 20 20  od istrunk]}    
07f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 72 65               {re
0800: 74 75 72 6e 20 31 7d 0a 09 69 66 20 7b 21 5b 6c  turn 1}..if {![l
0810: 6c 65 6e 67 74 68 20 24 6d 79 62 72 61 6e 63 68  length $mybranch
0820: 65 73 5d 7d 20 20 20 20 20 20 20 20 20 20 20 20  es]}            
0830: 7b 72 65 74 75 72 6e 20 31 7d 0a 09 73 65 74 20  {return 1}..set 
0840: 66 69 72 73 74 62 72 61 6e 63 68 20 5b 6c 69 6e  firstbranch [lin
0850: 64 65 78 20 24 6d 79 62 72 61 6e 63 68 65 73 20  dex $mybranches 
0860: 30 5d 0a 09 69 66 20 7b 21 5b 24 66 69 72 73 74  0]..if {![$first
0870: 62 72 61 6e 63 68 20 68 61 73 63 68 69 6c 64 5d  branch haschild]
0880: 7d 20 20 20 20 20 20 20 20 20 20 7b 72 65 74 75  }          {retu
0890: 72 6e 20 31 7d 0a 09 69 66 20 7b 24 6d 79 69 73  rn 1}..if {$myis
08a0: 6f 6e 64 65 66 61 75 6c 74 62 72 61 6e 63 68 7d  ondefaultbranch}
08b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 72                {r
08c0: 65 74 75 72 6e 20 31 7d 0a 0a 09 23 20 46 49 58  eturn 1}...# FIX
08d0: 3a 20 54 68 69 73 20 6d 65 73 73 61 67 65 20 77  : This message w
08e0: 69 6c 6c 20 6e 6f 74 20 6d 61 74 63 68 20 69 66  ill not match if
08f0: 20 74 68 65 20 52 43 53 20 66 69 6c 65 20 77 61   the RCS file wa
0900: 73 20 72 65 6e 61 6d 65 64 0a 09 23 20 6d 61 6e  s renamed..# man
0910: 75 61 6c 6c 79 20 61 66 74 65 72 20 69 74 20 77  ually after it w
0920: 61 73 20 63 72 65 61 74 65 64 2e 0a 0a 09 73 65  as created....se
0930: 74 20 67 65 6e 20 22 66 69 6c 65 20 5b 66 69 6c  t gen "file [fil
0940: 65 20 74 61 69 6c 20 5b 24 6d 79 66 69 6c 65 20  e tail [$myfile 
0950: 75 73 72 70 61 74 68 5d 5d 20 77 61 73 20 69 6e  usrpath]] was in
0960: 69 74 69 61 6c 6c 79 20 61 64 64 65 64 20 6f 6e  itially added on
0970: 20 62 72 61 6e 63 68 20 5b 24 66 69 72 73 74 62   branch [$firstb
0980: 72 61 6e 63 68 20 6e 61 6d 65 5d 2e 22 0a 09 73  ranch name]."..s
0990: 65 74 20 6c 6f 67 20 5b 24 6d 79 66 69 6c 65 20  et log [$myfile 
09a0: 63 6f 6d 6d 69 74 6d 65 73 73 61 67 65 6f 66 20  commitmessageof 
09b0: 24 6d 79 6d 65 74 61 69 64 5d 0a 0a 09 72 65 74  $mymetaid]...ret
09c0: 75 72 6e 20 5b 65 78 70 72 20 7b 24 6c 6f 67 20  urn [expr {$log 
09d0: 6e 65 20 24 67 65 6e 7d 5d 0a 20 20 20 20 7d 0a  ne $gen}].    }.
09e0: 0a 20 20 20 20 6d 65 74 68 6f 64 20 69 73 6e 65  .    method isne
09f0: 65 64 65 64 62 72 61 6e 63 68 64 65 6c 20 7b 7d  ededbranchdel {}
0a00: 20 7b 0a 09 69 66 20 7b 24 6d 79 70 61 72 65 6e   {..if {$myparen
0a10: 74 62 72 61 6e 63 68 20 65 71 20 22 22 7d 20 20  tbranch eq ""}  
0a20: 20 20 20 20 20 20 20 20 20 7b 72 65 74 75 72 6e           {return
0a30: 20 31 7d 20 3b 20 23 20 6e 6f 74 20 66 69 72 73   1} ; # not firs
0a40: 74 20 6f 6e 20 61 20 62 72 61 6e 63 68 2c 20 6e  t on a branch, n
0a50: 65 65 64 65 64 0a 09 73 65 74 20 62 61 73 65 20  eeded..set base 
0a60: 5b 24 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 68  [$myparentbranch
0a70: 20 70 61 72 65 6e 74 5d 0a 09 69 66 20 7b 24 62   parent]..if {$b
0a80: 61 73 65 20 20 20 20 20 20 20 20 20 20 20 65 71  ase           eq
0a90: 20 22 22 7d 20 20 20 20 20 20 20 20 20 20 20 7b   ""}           {
0aa0: 72 65 74 75 72 6e 20 31 7d 20 3b 20 23 20 62 72  return 1} ; # br
0ab0: 61 6e 63 68 20 68 61 73 20 70 61 72 65 6e 74 20  anch has parent 
0ac0: 6c 6f 64 2c 20 6e 65 65 64 65 64 0a 09 69 66 20  lod, needed..if 
0ad0: 7b 5b 24 73 65 6c 66 20 4c 4f 44 4c 65 6e 67 74  {[$self LODLengt
0ae0: 68 5d 20 3c 20 32 7d 20 20 20 20 20 20 20 20 20  h] < 2}         
0af0: 20 20 7b 72 65 74 75 72 6e 20 31 7d 20 3b 20 23    {return 1} ; #
0b00: 20 6f 75 72 20 6c 6f 64 20 63 6f 6e 74 61 69 6e   our lod contain
0b10: 73 20 6f 6e 6c 79 20 6f 75 72 73 65 6c 76 65 73  s only ourselves
0b20: 2c 20 6e 65 65 64 65 64 2e 0a 09 69 66 20 7b 24  , needed...if {$
0b30: 6d 79 6f 70 65 72 61 74 69 6f 6e 20 6e 65 20 22  myoperation ne "
0b40: 64 65 6c 65 74 65 22 7d 20 20 20 20 20 20 20 20  delete"}        
0b50: 7b 72 65 74 75 72 6e 20 31 7d 20 3b 20 23 20 4e  {return 1} ; # N
0b60: 6f 74 20 61 20 64 65 6c 65 74 69 6f 6e 2c 20 6e  ot a deletion, n
0b70: 65 65 64 65 64 0a 09 69 66 20 7b 5b 6c 6c 65 6e  eeded..if {[llen
0b80: 67 74 68 20 24 6d 79 74 61 67 73 5d 7d 20 20 20  gth $mytags]}   
0b90: 20 20 20 20 20 20 20 20 20 20 20 20 7b 72 65 74              {ret
0ba0: 75 72 6e 20 31 7d 20 3b 20 23 20 48 61 76 65 20  urn 1} ; # Have 
0bb0: 74 61 67 73 2c 20 6e 65 65 64 65 64 0a 09 69 66  tags, needed..if
0bc0: 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 6d 79 62 72   {[llength $mybr
0bd0: 61 6e 63 68 65 73 5d 7d 20 20 20 20 20 20 20 20  anches]}        
0be0: 20 20 20 7b 72 65 74 75 72 6e 20 31 7d 20 3b 20     {return 1} ; 
0bf0: 23 20 48 61 76 65 20 6f 74 68 65 72 20 62 72 61  # Have other bra
0c00: 6e 63 68 65 73 2c 20 6e 65 65 64 65 64 0a 09 69  nches, needed..i
0c10: 66 20 7b 61 62 73 28 24 6d 79 64 61 74 65 20 2d  f {abs($mydate -
0c20: 20 5b 24 62 61 73 65 20 64 61 74 65 5d 29 20 3e   [$base date]) >
0c30: 20 32 7d 20 7b 72 65 74 75 72 6e 20 31 7d 20 3b   2} {return 1} ;
0c40: 20 23 20 4e 65 78 74 20 72 65 76 20 3e 20 32 20   # Next rev > 2 
0c50: 73 65 63 6f 6e 64 73 20 61 70 61 72 74 2c 20 6e  seconds apart, n
0c60: 65 65 64 65 64 0a 0a 20 20 20 20 20 20 20 20 23  eeded..        #
0c70: 20 46 49 58 4d 45 3a 20 54 68 69 73 20 6d 65 73   FIXME: This mes
0c80: 73 61 67 65 20 77 69 6c 6c 20 6e 6f 74 20 6d 61  sage will not ma
0c90: 74 63 68 20 69 66 20 74 68 65 20 52 43 53 20 66  tch if the RCS f
0ca0: 69 6c 65 20 77 61 73 0a 20 20 20 20 20 20 20 20  ile was.        
0cb0: 23 20 72 65 6e 61 6d 65 64 20 6d 61 6e 75 61 6c  # renamed manual
0cc0: 6c 79 20 61 66 74 65 72 20 69 74 20 77 61 73 20  ly after it was 
0cd0: 63 72 65 61 74 65 64 2e 0a 0a 09 73 65 74 20 71  created....set q
0ce0: 66 69 6c 65 20 5b 73 74 72 69 6e 67 20 6d 61 70  file [string map
0cf0: 20 7b 0a 09 20 20 20 20 2e 20 20 5c 5c 2e 20 20   {..    .  \\.  
0d00: 3f 20 20 5c 5c 3f 20 20 2a 20 20 5c 5c 2a 20 20  ?  \\?  *  \\*  
0d10: 5c 5c 20 5c 5c 5c 5c 20 2b 20 20 5c 5c 2b 20 20  \\ \\\\ +  \\+  
0d20: 5e 20 5c 5c 5e 20 24 20 5c 5c 24 0a 09 20 20 20  ^ \\^ $ \\$..   
0d30: 20 5c 5b 20 5c 5c 5c 5b 20 5c 5d 20 5c 5c 5c 5d   \[ \\\[ \] \\\]
0d40: 20 28 20 20 5c 5c 28 20 20 20 29 20 5c 5c 29 20   (  \\(   ) \\) 
0d50: 20 5c 7b 20 5c 5c 5c 7b 20 5c 7d 20 5c 5c 5c 7d   \{ \\\{ \} \\\}
0d60: 0a 09 7d 20 5b 66 69 6c 65 20 74 61 69 6c 20 5b  ..} [file tail [
0d70: 24 6d 79 66 69 6c 65 20 75 73 72 70 61 74 68 5d  $myfile usrpath]
0d80: 5d 5d 0a 09 73 65 74 20 70 61 74 74 65 72 6e 20  ]]..set pattern 
0d90: 22 66 69 6c 65 20 24 71 66 69 6c 65 20 77 61 73  "file $qfile was
0da0: 20 61 64 64 65 64 20 6f 6e 20 62 72 61 6e 63 68   added on branch
0db0: 20 2e 2a 20 6f 6e 20 5c 5c 64 7b 34 7d 2d 5c 5c   .* on \\d{4}-\\
0dc0: 64 7b 32 7d 2d 5c 5c 64 7b 32 7d 20 5c 5c 64 7b  d{2}-\\d{2} \\d{
0dd0: 32 7d 3a 5c 5c 64 7b 32 7d 3a 5c 5c 64 7b 32 7d  2}:\\d{2}:\\d{2}
0de0: 28 20 5c 5b 2b 2d 5c 5d 5c 5c 64 7b 34 7d 29 3f  ( \[+-\]\\d{4})?
0df0: 22 0a 09 73 65 74 20 6c 6f 67 20 20 20 20 20 5b  "..set log     [
0e00: 24 6d 79 66 69 6c 65 20 63 6f 6d 6d 69 74 6d 65  $myfile commitme
0e10: 73 73 61 67 65 6f 66 20 24 6d 79 6d 65 74 61 69  ssageof $mymetai
0e20: 64 5d 0a 0a 09 23 20 4e 6f 74 20 74 68 65 20 73  d]...# Not the s
0e30: 70 65 63 69 61 6c 20 6d 65 73 73 61 67 65 2c 20  pecial message, 
0e40: 6e 65 65 64 65 64 0a 09 69 66 20 7b 21 5b 72 65  needed..if {![re
0e50: 67 65 78 70 20 2d 2d 20 24 70 61 74 74 65 72 6e  gexp -- $pattern
0e60: 20 24 6c 6f 67 5d 7d 20 7b 72 65 74 75 72 6e 20   $log]} {return 
0e70: 31 7d 0a 0a 09 23 20 54 68 69 73 20 69 73 20 61  1}...# This is a
0e80: 6e 20 75 6e 6e 65 65 64 65 64 20 69 6e 69 74 69  n unneeded initi
0e90: 61 6c 20 62 72 61 6e 63 68 20 64 65 6c 65 74 65  al branch delete
0ea0: 2e 0a 09 72 65 74 75 72 6e 20 30 0a 20 20 20 20  ...return 0.    
0eb0: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 4c 4f  }..    method LO
0ec0: 44 4c 65 6e 67 74 68 20 7b 7d 20 7b 0a 09 73 65  DLength {} {..se
0ed0: 74 20 6e 20 31 20 3b 20 23 20 63 6f 75 6e 74 20  t n 1 ; # count 
0ee0: 73 65 6c 66 0a 09 73 65 74 20 72 65 76 20 24 6d  self..set rev $m
0ef0: 79 63 68 69 6c 64 0a 09 77 68 69 6c 65 20 7b 24  ychild..while {$
0f00: 72 65 76 20 6e 65 20 22 22 7d 20 7b 0a 09 20 20  rev ne ""} {..  
0f10: 20 20 69 6e 63 72 20 6e 0a 09 20 20 20 20 73 65    incr n..    se
0f20: 74 20 72 65 76 20 5b 24 72 65 76 20 63 68 69 6c  t rev [$rev chil
0f30: 64 5d 0a 09 7d 0a 09 72 65 74 75 72 6e 20 24 6e  d]..}..return $n
0f40: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 42 61  .    }..    # Ba
0f50: 73 69 63 20 70 61 72 65 6e 74 2f 63 68 69 6c 64  sic parent/child
0f60: 20 6c 69 6e 6b 61 67 65 20 5f 5f 5f 5f 5f 5f 5f   linkage _______
0f70: 5f 5f 5f 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20  ___..    method 
0f80: 68 61 73 70 61 72 65 6e 74 20 7b 7d 20 7b 20 72  hasparent {} { r
0f90: 65 74 75 72 6e 20 5b 65 78 70 72 20 7b 24 6d 79  eturn [expr {$my
0fa0: 70 61 72 65 6e 74 20 6e 65 20 22 22 7d 5d 20 7d  parent ne ""}] }
0fb0: 0a 20 20 20 20 6d 65 74 68 6f 64 20 68 61 73 63  .    method hasc
0fc0: 68 69 6c 64 20 20 7b 7d 20 7b 20 72 65 74 75 72  hild  {} { retur
0fd0: 6e 20 5b 65 78 70 72 20 7b 24 6d 79 63 68 69 6c  n [expr {$mychil
0fe0: 64 20 20 6e 65 20 22 22 7d 5d 20 7d 0a 0a 20 20  d  ne ""}] }..  
0ff0: 20 20 6d 65 74 68 6f 64 20 73 65 74 70 61 72 65    method setpare
1000: 6e 74 20 7b 70 61 72 65 6e 74 7d 20 7b 0a 09 69  nt {parent} {..i
1010: 66 20 7b 24 6d 79 70 61 72 65 6e 74 20 6e 65 20  f {$myparent ne 
1020: 22 22 7d 20 7b 20 74 72 6f 75 62 6c 65 20 69 6e  ""} { trouble in
1030: 74 65 72 6e 61 6c 20 22 50 61 72 65 6e 74 20 61  ternal "Parent a
1040: 6c 72 65 61 64 79 20 64 65 66 69 6e 65 64 22 20  lready defined" 
1050: 7d 0a 09 73 65 74 20 6d 79 70 61 72 65 6e 74 20  }..set myparent 
1060: 24 70 61 72 65 6e 74 0a 09 72 65 74 75 72 6e 0a  $parent..return.
1070: 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f      }..    metho
1080: 64 20 63 75 74 66 72 6f 6d 70 61 72 65 6e 74 20  d cutfromparent 
1090: 7b 7d 20 7b 20 73 65 74 20 6d 79 70 61 72 65 6e  {} { set myparen
10a0: 74 20 22 22 20 3b 20 72 65 74 75 72 6e 20 7d 0a  t "" ; return }.
10b0: 20 20 20 20 6d 65 74 68 6f 64 20 63 75 74 66 72      method cutfr
10c0: 6f 6d 63 68 69 6c 64 20 20 7b 7d 20 7b 20 73 65  omchild  {} { se
10d0: 74 20 6d 79 63 68 69 6c 64 20 20 22 22 20 3b 20  t mychild  "" ; 
10e0: 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 6d 65  return }..    me
10f0: 74 68 6f 64 20 73 65 74 63 68 69 6c 64 20 7b 63  thod setchild {c
1100: 68 69 6c 64 7d 20 7b 0a 09 69 66 20 7b 24 6d 79  hild} {..if {$my
1110: 63 68 69 6c 64 20 6e 65 20 22 22 7d 20 7b 20 74  child ne ""} { t
1120: 72 6f 75 62 6c 65 20 69 6e 74 65 72 6e 61 6c 20  rouble internal 
1130: 22 43 68 69 6c 64 20 61 6c 72 65 61 64 79 20 64  "Child already d
1140: 65 66 69 6e 65 64 22 20 7d 0a 09 73 65 74 20 6d  efined" }..set m
1150: 79 63 68 69 6c 64 20 24 63 68 69 6c 64 0a 09 72  ychild $child..r
1160: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20  eturn.    }..   
1170: 20 6d 65 74 68 6f 64 20 63 68 61 6e 67 65 70 61   method changepa
1180: 72 65 6e 74 20 7b 70 61 72 65 6e 74 7d 20 7b 20  rent {parent} { 
1190: 73 65 74 20 6d 79 70 61 72 65 6e 74 20 24 70 61  set myparent $pa
11a0: 72 65 6e 74 20 3b 20 72 65 74 75 72 6e 20 7d 0a  rent ; return }.
11b0: 20 20 20 20 6d 65 74 68 6f 64 20 63 68 61 6e 67      method chang
11c0: 65 63 68 69 6c 64 20 20 7b 63 68 69 6c 64 7d 20  echild  {child} 
11d0: 20 7b 20 73 65 74 20 6d 79 63 68 69 6c 64 20 20   { set mychild  
11e0: 24 63 68 69 6c 64 20 20 3b 20 72 65 74 75 72 6e  $child  ; return
11f0: 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 70   }..    method p
1200: 61 72 65 6e 74 20 7b 7d 20 7b 20 72 65 74 75 72  arent {} { retur
1210: 6e 20 24 6d 79 70 61 72 65 6e 74 20 7d 0a 20 20  n $myparent }.  
1220: 20 20 6d 65 74 68 6f 64 20 63 68 69 6c 64 20 20    method child  
1230: 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 63  {} { return $myc
1240: 68 69 6c 64 20 20 7d 0a 0a 20 20 20 20 23 20 42  hild  }..    # B
1250: 72 61 6e 63 68 20 6c 69 6e 6b 61 67 65 20 5f 5f  ranch linkage __
1260: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1270: 5f 5f 5f 5f 0a 0a 20 20 20 20 6d 65 74 68 6f 64  ____..    method
1280: 20 73 65 74 70 61 72 65 6e 74 62 72 61 6e 63 68   setparentbranch
1290: 20 7b 62 72 61 6e 63 68 7d 20 7b 0a 09 69 66 20   {branch} {..if 
12a0: 7b 24 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 68  {$myparentbranch
12b0: 20 6e 65 20 22 22 7d 20 7b 20 74 72 6f 75 62 6c   ne ""} { troubl
12c0: 65 20 69 6e 74 65 72 6e 61 6c 20 22 42 72 61 6e  e internal "Bran
12d0: 63 68 20 70 61 72 65 6e 74 20 61 6c 72 65 61 64  ch parent alread
12e0: 79 20 64 65 66 69 6e 65 64 22 20 7d 0a 09 73 65  y defined" }..se
12f0: 74 20 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 68  t myparentbranch
1300: 20 24 62 72 61 6e 63 68 0a 09 72 65 74 75 72 6e   $branch..return
1310: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68  .    }..    meth
1320: 6f 64 20 68 61 73 70 61 72 65 6e 74 62 72 61 6e  od hasparentbran
1330: 63 68 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 5b  ch {} { return [
1340: 65 78 70 72 20 7b 24 6d 79 70 61 72 65 6e 74 62  expr {$myparentb
1350: 72 61 6e 63 68 20 6e 65 20 22 22 7d 5d 20 7d 0a  ranch ne ""}] }.
1360: 20 20 20 20 6d 65 74 68 6f 64 20 68 61 73 62 72      method hasbr
1370: 61 6e 63 68 65 73 20 20 20 20 20 7b 7d 20 7b 20  anches     {} { 
1380: 72 65 74 75 72 6e 20 5b 6c 6c 65 6e 67 74 68 20  return [llength 
1390: 24 6d 79 62 72 61 6e 63 68 65 73 5d 20 7d 0a 0a  $mybranches] }..
13a0: 20 20 20 20 6d 65 74 68 6f 64 20 70 61 72 65 6e      method paren
13b0: 74 62 72 61 6e 63 68 20 7b 7d 20 7b 20 72 65 74  tbranch {} { ret
13c0: 75 72 6e 20 24 6d 79 70 61 72 65 6e 74 62 72 61  urn $myparentbra
13d0: 6e 63 68 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64  nch }.    method
13e0: 20 62 72 61 6e 63 68 65 73 20 20 20 20 20 7b 7d   branches     {}
13f0: 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 62 72 61   { return $mybra
1400: 6e 63 68 65 73 20 7d 0a 0a 20 20 20 20 6d 65 74  nches }..    met
1410: 68 6f 64 20 61 64 64 62 72 61 6e 63 68 20 7b 62  hod addbranch {b
1420: 72 61 6e 63 68 7d 20 7b 0a 09 6c 61 70 70 65 6e  ranch} {..lappen
1430: 64 20 6d 79 62 72 61 6e 63 68 65 73 20 24 62 72  d mybranches $br
1440: 61 6e 63 68 0a 09 72 65 74 75 72 6e 0a 20 20 20  anch..return.   
1450: 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 61   }..    method a
1460: 64 64 63 68 69 6c 64 6f 6e 62 72 61 6e 63 68 20  ddchildonbranch 
1470: 7b 63 68 69 6c 64 7d 20 7b 0a 09 6c 61 70 70 65  {child} {..lappe
1480: 6e 64 20 6d 79 62 72 61 6e 63 68 63 68 69 6c 64  nd mybranchchild
1490: 72 65 6e 20 24 63 68 69 6c 64 0a 09 72 65 74 75  ren $child..retu
14a0: 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65  rn.    }..    me
14b0: 74 68 6f 64 20 63 75 74 66 72 6f 6d 70 61 72 65  thod cutfrompare
14c0: 6e 74 62 72 61 6e 63 68 20 7b 7d 20 7b 20 73 65  ntbranch {} { se
14d0: 74 20 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 68  t myparentbranch
14e0: 20 22 22 20 3b 20 72 65 74 75 72 6e 20 7d 0a 0a   "" ; return }..
14f0: 20 20 20 20 6d 65 74 68 6f 64 20 72 65 6d 6f 76      method remov
1500: 65 62 72 61 6e 63 68 20 7b 62 72 61 6e 63 68 7d  ebranch {branch}
1510: 20 7b 0a 09 6c 64 65 6c 65 74 65 20 6d 79 62 72   {..ldelete mybr
1520: 61 6e 63 68 65 73 20 24 62 72 61 6e 63 68 0a 09  anches $branch..
1530: 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20  return.    }..  
1540: 20 20 6d 65 74 68 6f 64 20 72 65 6d 6f 76 65 63    method removec
1550: 68 69 6c 64 6f 6e 62 72 61 6e 63 68 20 7b 72 65  hildonbranch {re
1560: 76 7d 20 7b 0a 09 6c 64 65 6c 65 74 65 20 6d 79  v} {..ldelete my
1570: 62 72 61 6e 63 68 63 68 69 6c 64 72 65 6e 20 24  branchchildren $
1580: 72 65 76 0a 09 72 65 74 75 72 6e 0a 20 20 20 20  rev..return.    
1590: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 6f  }..    method so
15a0: 72 74 62 72 61 6e 63 68 65 73 20 7b 7d 20 7b 0a  rtbranches {} {.
15b0: 09 23 20 50 61 73 73 20 32 3a 20 43 6f 6c 6c 65  .# Pass 2: Colle
15c0: 63 74 52 65 76 0a 0a 09 69 66 20 7b 5b 6c 6c 65  ctRev...if {[lle
15d0: 6e 67 74 68 20 24 6d 79 62 72 61 6e 63 68 65 73  ngth $mybranches
15e0: 5d 20 3c 20 32 7d 20 72 65 74 75 72 6e 0a 0a 09  ] < 2} return...
15f0: 23 20 53 6f 72 74 20 74 68 65 20 62 72 61 6e 63  # Sort the branc
1600: 68 65 73 20 73 70 61 77 6e 65 64 20 62 79 20 74  hes spawned by t
1610: 68 69 73 20 72 65 76 69 73 69 6f 6e 20 69 6e 20  his revision in 
1620: 63 72 65 61 74 69 6f 6e 0a 09 23 20 6f 72 64 65  creation..# orde
1630: 72 2e 20 54 6f 20 68 65 6c 70 20 69 6e 20 74 68  r. To help in th
1640: 69 73 20 6f 75 72 20 66 69 6c 65 20 67 61 76 65  is our file gave
1650: 20 61 6c 6c 20 62 72 61 6e 63 68 65 73 20 61 20   all branches a 
1660: 70 6f 73 69 74 69 6f 6e 0a 09 23 20 69 64 2c 20  position..# id, 
1670: 69 6e 20 6f 72 64 65 72 20 6f 66 20 74 68 65 69  in order of thei
1680: 72 20 64 65 66 69 6e 69 74 69 6f 6e 20 62 79 20  r definition by 
1690: 74 68 65 20 52 43 53 20 61 72 63 68 69 76 65 2e  the RCS archive.
16a0: 0a 09 23 0a 09 23 20 54 68 65 20 63 72 65 61 74  ..#..# The creat
16b0: 69 6f 6e 20 6f 72 64 65 72 20 69 73 20 28 61 70  ion order is (ap
16c0: 70 61 72 65 6e 74 6c 79 29 20 74 68 65 20 72 65  parently) the re
16d0: 76 65 72 73 65 20 6f 66 20 74 68 65 0a 09 23 20  verse of the..# 
16e0: 64 65 66 69 6e 69 74 69 6f 6e 20 6f 72 64 65 72  definition order
16f0: 2e 20 28 49 66 20 61 20 62 72 61 6e 63 68 20 69  . (If a branch i
1700: 73 20 63 72 65 61 74 65 64 20 74 68 65 6e 20 64  s created then d
1710: 65 6c 65 74 65 64 2c 20 61 0a 09 23 20 6c 61 74  eleted, a..# lat
1720: 65 72 20 62 72 61 6e 63 68 20 63 61 6e 20 62 65  er branch can be
1730: 20 61 73 73 69 67 6e 65 64 20 74 68 65 20 72 65   assigned the re
1740: 63 79 63 6c 65 64 20 62 72 61 6e 63 68 20 6e 75  cycled branch nu
1750: 6d 62 65 72 3b 0a 09 23 20 74 68 65 72 65 66 6f  mber;..# therefo
1760: 72 65 20 62 72 61 6e 63 68 20 6e 75 6d 62 65 72  re branch number
1770: 73 20 61 72 65 20 6e 6f 74 20 61 6e 20 69 6e 64  s are not an ind
1780: 69 63 61 74 69 6f 6e 20 6f 66 20 63 72 65 61 74  ication of creat
1790: 69 6f 6e 0a 09 23 20 6f 72 64 65 72 2e 29 0a 0a  ion..# order.)..
17a0: 09 73 65 74 20 74 6d 70 20 7b 7d 0a 09 66 6f 72  .set tmp {}..for
17b0: 65 61 63 68 20 62 72 61 6e 63 68 20 24 6d 79 62  each branch $myb
17c0: 72 61 6e 63 68 65 73 20 7b 0a 09 20 20 20 20 6c  ranches {..    l
17d0: 61 70 70 65 6e 64 20 74 6d 70 20 5b 6c 69 73 74  append tmp [list
17e0: 20 24 62 72 61 6e 63 68 20 5b 24 62 72 61 6e 63   $branch [$branc
17f0: 68 20 70 6f 73 69 74 69 6f 6e 5d 5d 0a 09 7d 0a  h position]]..}.
1800: 0a 09 73 65 74 20 6d 79 62 72 61 6e 63 68 65 73  ..set mybranches
1810: 20 7b 7d 0a 09 66 6f 72 65 61 63 68 20 69 74 65   {}..foreach ite
1820: 6d 20 5b 6c 73 6f 72 74 20 2d 69 6e 64 65 78 20  m [lsort -index 
1830: 31 20 2d 64 65 63 72 65 61 73 69 6e 67 20 24 74  1 -decreasing $t
1840: 6d 70 5d 20 7b 0a 09 20 20 20 20 73 74 72 75 63  mp] {..    struc
1850: 74 3a 3a 6c 69 73 74 20 61 73 73 69 67 6e 20 24  t::list assign $
1860: 69 74 65 6d 20 62 72 61 6e 63 68 20 70 6f 73 69  item branch posi
1870: 74 69 6f 6e 0a 09 20 20 20 20 6c 61 70 70 65 6e  tion..    lappen
1880: 64 20 6d 79 62 72 61 6e 63 68 65 73 20 24 62 72  d mybranches $br
1890: 61 6e 63 68 0a 09 7d 0a 09 72 65 74 75 72 6e 0a  anch..}..return.
18a0: 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f      }..    metho
18b0: 64 20 6d 6f 76 65 62 72 61 6e 63 68 65 73 74 6f  d movebranchesto
18c0: 20 7b 72 65 76 7d 20 7b 0a 09 73 65 74 20 72 65   {rev} {..set re
18d0: 76 6c 6f 64 20 5b 24 72 65 76 20 6c 6f 64 5d 0a  vlod [$rev lod].
18e0: 09 66 6f 72 65 61 63 68 20 62 72 61 6e 63 68 20  .foreach branch 
18f0: 24 6d 79 62 72 61 6e 63 68 65 73 20 7b 0a 09 20  $mybranches {.. 
1900: 20 20 20 24 72 65 76 20 61 64 64 62 72 61 6e 63     $rev addbranc
1910: 68 20 24 62 72 61 6e 63 68 0a 09 20 20 20 20 24  h $branch..    $
1920: 62 72 61 6e 63 68 20 73 65 74 70 61 72 65 6e 74  branch setparent
1930: 20 24 72 65 76 0a 09 20 20 20 20 24 62 72 61 6e   $rev..    $bran
1940: 63 68 20 73 65 74 6c 6f 64 20 24 72 65 76 6c 6f  ch setlod $revlo
1950: 64 0a 09 7d 0a 09 66 6f 72 65 61 63 68 20 62 72  d..}..foreach br
1960: 61 6e 63 68 72 65 76 20 24 6d 79 62 72 61 6e 63  anchrev $mybranc
1970: 68 63 68 69 6c 64 72 65 6e 20 7b 0a 09 20 20 20  hchildren {..   
1980: 20 24 72 65 76 20 61 64 64 63 68 69 6c 64 6f 6e   $rev addchildon
1990: 62 72 61 6e 63 68 20 24 62 72 61 6e 63 68 72 65  branch $branchre
19a0: 76 0a 09 20 20 20 20 24 62 72 61 6e 63 68 72 65  v..    $branchre
19b0: 76 20 63 75 74 66 72 6f 6d 70 61 72 65 6e 74 0a  v cutfromparent.
19c0: 09 20 20 20 20 24 62 72 61 6e 63 68 72 65 76 20  .    $branchrev 
19d0: 73 65 74 70 61 72 65 6e 74 20 24 72 65 76 0a 09  setparent $rev..
19e0: 7d 0a 09 73 65 74 20 6d 79 62 72 61 6e 63 68 65  }..set mybranche
19f0: 73 20 20 20 20 20 20 20 7b 7d 0a 09 73 65 74 20  s       {}..set 
1a00: 6d 79 62 72 61 6e 63 68 63 68 69 6c 64 72 65 6e  mybranchchildren
1a10: 20 7b 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20   {}..return.    
1a20: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 72 65  }..    method re
1a30: 6d 6f 76 65 61 6c 6c 62 72 61 6e 63 68 65 73 20  moveallbranches 
1a40: 7b 7d 20 7b 0a 09 73 65 74 20 6d 79 62 72 61 6e  {} {..set mybran
1a50: 63 68 65 73 20 20 20 20 20 20 20 7b 7d 0a 09 73  ches       {}..s
1a60: 65 74 20 6d 79 62 72 61 6e 63 68 63 68 69 6c 64  et mybranchchild
1a70: 72 65 6e 20 7b 7d 0a 09 72 65 74 75 72 6e 0a 20  ren {}..return. 
1a80: 20 20 20 7d 0a 0a 20 20 20 20 23 20 54 61 67 20     }..    # Tag 
1a90: 6c 69 6e 6b 61 67 65 20 5f 5f 5f 5f 5f 5f 5f 5f  linkage ________
1aa0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1ab0: 5f 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 61 64  _..    method ad
1ac0: 64 74 61 67 20 7b 74 61 67 7d 20 7b 0a 09 6c 61  dtag {tag} {..la
1ad0: 70 70 65 6e 64 20 6d 79 74 61 67 73 20 24 74 61  ppend mytags $ta
1ae0: 67 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a  g..return.    }.
1af0: 0a 20 20 20 20 6d 65 74 68 6f 64 20 74 61 67 73  .    method tags
1b00: 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d 79   {} { return $my
1b10: 74 61 67 73 20 7d 0a 0a 20 20 20 20 6d 65 74 68  tags }..    meth
1b20: 6f 64 20 72 65 6d 6f 76 65 61 6c 6c 74 61 67 73  od removealltags
1b30: 20 7b 7d 20 7b 0a 09 73 65 74 20 6d 79 74 61 67   {} {..set mytag
1b40: 73 20 7b 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20  s {}..return.   
1b50: 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 6d   }..    method m
1b60: 6f 76 65 74 61 67 73 74 6f 20 7b 72 65 76 7d 20  ovetagsto {rev} 
1b70: 7b 0a 09 73 65 74 20 72 65 76 6c 6f 64 20 5b 24  {..set revlod [$
1b80: 72 65 76 20 6c 6f 64 5d 0a 09 66 6f 72 65 61 63  rev lod]..foreac
1b90: 68 20 74 61 67 20 24 6d 79 74 61 67 73 20 7b 0a  h tag $mytags {.
1ba0: 09 20 20 20 20 24 72 65 76 20 61 64 64 74 61 67  .    $rev addtag
1bb0: 20 24 74 61 67 0a 09 20 20 20 20 24 74 61 67 20   $tag..    $tag 
1bc0: 73 65 74 74 61 67 72 65 76 20 24 72 65 76 0a 09  settagrev $rev..
1bd0: 20 20 20 20 24 74 61 67 20 73 65 74 6c 6f 64 20      $tag setlod 
1be0: 24 72 65 76 6c 6f 64 0a 09 7d 0a 09 73 65 74 20  $revlod..}..set 
1bf0: 6d 79 74 61 67 73 20 7b 7d 0a 09 72 65 74 75 72  mytags {}..retur
1c00: 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 67  n.    }..    # g
1c10: 65 6e 65 72 61 6c 20 73 79 6d 62 6f 6c 20 6f 70  eneral symbol op
1c20: 65 72 61 74 69 6f 6e 73 20 5f 5f 5f 5f 5f 5f 5f  erations _______
1c30: 5f 5f 5f 5f 0a 0a 20 20 20 20 6d 65 74 68 6f 64  ____..    method
1c40: 20 6d 6f 76 65 73 79 6d 62 6f 6c 73 74 6f 20 7b   movesymbolsto {
1c50: 72 65 76 7d 20 7b 0a 09 23 20 4d 6f 76 65 20 74  rev} {..# Move t
1c60: 68 65 20 74 61 67 73 20 61 6e 64 20 62 72 61 6e  he tags and bran
1c70: 63 68 65 73 20 61 74 74 61 63 68 65 64 20 74 6f  ches attached to
1c80: 20 74 68 69 73 20 72 65 76 69 73 69 6f 6e 20 74   this revision t
1c90: 6f 20 74 68 65 0a 09 23 20 64 65 73 74 69 6e 61  o the..# destina
1ca0: 74 69 6f 6e 20 61 6e 64 20 66 69 78 20 61 6c 6c  tion and fix all
1cb0: 20 70 6f 69 6e 74 65 72 73 2e 0a 0a 09 24 73 65   pointers....$se
1cc0: 6c 66 20 6d 6f 76 65 74 61 67 73 74 6f 20 20 20  lf movetagsto   
1cd0: 20 20 24 72 65 76 0a 09 24 73 65 6c 66 20 6d 6f    $rev..$self mo
1ce0: 76 65 62 72 61 6e 63 68 65 73 74 6f 20 24 72 65  vebranchesto $re
1cf0: 76 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a  v..return.    }.
1d00: 0a 20 20 20 20 23 20 44 65 72 69 76 65 64 20 73  .    # Derived s
1d10: 74 75 66 66 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  tuff ___________
1d20: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20  ____________..  
1d30: 20 20 6d 65 74 68 6f 64 20 64 65 74 65 72 6d 69    method determi
1d40: 6e 65 6f 70 65 72 61 74 69 6f 6e 20 7b 7d 20 7b  neoperation {} {
1d50: 0a 09 23 20 4c 6f 6f 6b 20 61 74 20 74 68 65 20  ..# Look at the 
1d60: 73 74 61 74 65 20 6f 66 20 62 6f 74 68 20 74 68  state of both th
1d70: 69 73 20 72 65 76 69 73 69 6f 6e 20 61 6e 64 20  is revision and 
1d80: 69 74 73 20 70 61 72 65 6e 74 20 74 6f 0a 09 23  its parent to..#
1d90: 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 74   determine the t
1da0: 79 70 65 20 6f 70 66 20 6f 70 65 72 61 74 69 6f  ype opf operatio
1db0: 6e 20 77 68 69 63 68 20 77 61 73 20 70 65 72 66  n which was perf
1dc0: 6f 72 6d 65 64 20 28 61 64 64 2c 0a 09 23 20 6d  ormed (add,..# m
1dd0: 6f 64 69 66 79 2c 20 64 65 6c 65 74 65 2c 20 6e  odify, delete, n
1de0: 6f 6e 65 29 2e 0a 09 23 0a 09 23 20 54 68 65 20  one)...#..# The 
1df0: 69 6d 70 6f 72 74 61 6e 74 20 69 6e 66 6f 72 6d  important inform
1e00: 61 74 69 6f 6e 20 69 73 20 64 65 61 64 20 76 73  ation is dead vs
1e10: 20 6e 6f 74 2d 64 65 61 64 20 66 6f 72 20 62 6f   not-dead for bo
1e20: 74 68 2c 0a 09 23 20 67 69 76 69 6e 67 20 72 69  th,..# giving ri
1e30: 73 65 20 74 6f 20 66 6f 75 72 20 70 6f 73 73 69  se to four possi
1e40: 62 6c 65 20 74 79 70 65 73 2e 0a 0a 09 73 65 74  ble types....set
1e50: 20 73 64 65 61 64 20 5b 65 78 70 72 20 7b 24 6d   sdead [expr {$m
1e60: 79 73 74 61 74 65 20 65 71 20 22 64 65 61 64 22  ystate eq "dead"
1e70: 7d 5d 0a 09 73 65 74 20 70 64 65 61 64 20 5b 65  }]..set pdead [e
1e80: 78 70 72 20 7b 24 6d 79 70 61 72 65 6e 74 20 65  xpr {$myparent e
1e90: 71 20 22 22 20 7c 7c 20 5b 24 6d 79 70 61 72 65  q "" || [$mypare
1ea0: 6e 74 20 73 74 61 74 65 5d 20 65 71 20 22 64 65  nt state] eq "de
1eb0: 61 64 22 7d 5d 0a 0a 09 73 65 74 20 6d 79 6f 70  ad"}]...set myop
1ec0: 65 72 61 74 69 6f 6e 20 24 6d 79 6f 70 73 74 61  eration $myopsta
1ed0: 74 65 28 5b 6c 69 73 74 20 24 70 64 65 61 64 20  te([list $pdead 
1ee0: 24 73 64 65 61 64 5d 29 0a 09 72 65 74 75 72 6e  $sdead])..return
1ef0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68  .    }..    meth
1f00: 6f 64 20 6f 70 65 72 61 74 69 6f 6e 20 7b 7d 20  od operation {} 
1f10: 7b 20 72 65 74 75 72 6e 20 24 6d 79 6f 70 65 72  { return $myoper
1f20: 61 74 69 6f 6e 20 7d 0a 20 20 20 20 6d 65 74 68  ation }.    meth
1f30: 6f 64 20 72 65 74 79 70 65 20 7b 78 7d 20 7b 20  od retype {x} { 
1f40: 73 65 74 20 6d 79 6f 70 65 72 61 74 69 6f 6e 20  set myoperation 
1f50: 24 78 20 3b 20 72 65 74 75 72 6e 20 7d 0a 0a 20  $x ; return }.. 
1f60: 20 20 20 6d 65 74 68 6f 64 20 69 73 6f 6e 64 65     method isonde
1f70: 66 61 75 6c 74 62 72 61 6e 63 68 20 20 20 20 7b  faultbranch    {
1f80: 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 69 73  } { return $myis
1f90: 6f 6e 64 65 66 61 75 6c 74 62 72 61 6e 63 68 20  ondefaultbranch 
1fa0: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 65  }..    method se
1fb0: 74 6f 6e 64 65 66 61 75 6c 74 62 72 61 6e 63 68  tondefaultbranch
1fc0: 20 20 20 7b 78 7d 20 7b 20 73 65 74 20 6d 79 69     {x} { set myi
1fd0: 73 6f 6e 64 65 66 61 75 6c 74 62 72 61 6e 63 68  sondefaultbranch
1fe0: 20 24 78 20 3b 20 72 65 74 75 72 6e 20 7d 0a 0a   $x ; return }..
1ff0: 20 20 20 20 6d 65 74 68 6f 64 20 73 65 74 64 65      method setde
2000: 66 61 75 6c 74 62 72 61 6e 63 68 63 68 69 6c 64  faultbranchchild
2010: 20 20 7b 72 65 76 7d 20 7b 20 73 65 74 20 6d 79    {rev} { set my
2020: 64 62 63 68 69 6c 64 20 24 72 65 76 20 3b 20 72  dbchild $rev ; r
2030: 65 74 75 72 6e 20 7d 0a 20 20 20 20 6d 65 74 68  eturn }.    meth
2040: 6f 64 20 73 65 74 64 65 66 61 75 6c 74 62 72 61  od setdefaultbra
2050: 6e 63 68 70 61 72 65 6e 74 20 7b 72 65 76 7d 20  nchparent {rev} 
2060: 7b 0a 09 73 65 74 20 6d 79 64 62 70 61 72 65 6e  {..set mydbparen
2070: 74 20 24 72 65 76 0a 0a 09 23 20 52 65 74 79 70  t $rev...# Retyp
2080: 65 20 74 68 65 20 72 65 76 69 73 69 6f 6e 20 28  e the revision (
2090: 6d 61 79 20 63 68 61 6e 67 65 20 66 72 6f 6d 20  may change from 
20a0: 27 61 64 64 27 20 74 6f 20 27 63 68 61 6e 67 65  'add' to 'change
20b0: 27 29 2e 0a 0a 09 73 65 74 20 73 64 65 61 64 20  ')....set sdead 
20c0: 5b 65 78 70 72 20 7b 24 6d 79 6f 70 65 72 61 74  [expr {$myoperat
20d0: 69 6f 6e 20 20 20 20 20 6e 65 20 22 63 68 61 6e  ion     ne "chan
20e0: 67 65 22 7d 5d 0a 09 73 65 74 20 70 64 65 61 64  ge"}]..set pdead
20f0: 20 5b 65 78 70 72 20 7b 5b 24 72 65 76 20 6f 70   [expr {[$rev op
2100: 65 72 61 74 69 6f 6e 5d 20 6e 65 20 22 63 68 61  eration] ne "cha
2110: 6e 67 65 22 7d 5d 0a 09 73 65 74 20 6d 79 6f 70  nge"}]..set myop
2120: 65 72 61 74 69 6f 6e 20 24 6d 79 6f 70 73 74 61  eration $myopsta
2130: 74 65 28 5b 6c 69 73 74 20 24 70 64 65 61 64 20  te([list $pdead 
2140: 24 73 64 65 61 64 5d 29 0a 09 72 65 74 75 72 6e  $sdead])..return
2150: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68  .    }..    meth
2160: 6f 64 20 63 75 74 64 65 66 61 75 6c 74 62 72 61  od cutdefaultbra
2170: 6e 63 68 70 61 72 65 6e 74 20 7b 7d 20 7b 20 73  nchparent {} { s
2180: 65 74 20 6d 79 64 62 70 61 72 65 6e 74 20 22 22  et mydbparent ""
2190: 20 3b 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 20   ; return }.    
21a0: 6d 65 74 68 6f 64 20 63 75 74 64 65 66 61 75 6c  method cutdefaul
21b0: 74 62 72 61 6e 63 68 63 68 69 6c 64 20 20 7b 7d  tbranchchild  {}
21c0: 20 7b 20 73 65 74 20 6d 79 64 62 63 68 69 6c 64   { set mydbchild
21d0: 20 20 22 22 20 3b 20 72 65 74 75 72 6e 20 7d 0a    "" ; return }.
21e0: 0a 20 20 20 20 6d 65 74 68 6f 64 20 64 65 66 61  .    method defa
21f0: 75 6c 74 62 72 61 6e 63 68 63 68 69 6c 64 20 20  ultbranchchild  
2200: 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 64  {} { return $myd
2210: 62 63 68 69 6c 64 20 7d 0a 20 20 20 20 6d 65 74  bchild }.    met
2220: 68 6f 64 20 64 65 66 61 75 6c 74 62 72 61 6e 63  hod defaultbranc
2230: 68 70 61 72 65 6e 74 20 7b 7d 20 7b 20 72 65 74  hparent {} { ret
2240: 75 72 6e 20 24 6d 79 64 62 70 61 72 65 6e 74 20  urn $mydbparent 
2250: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 68 61  }..    method ha
2260: 73 64 65 66 61 75 6c 74 62 72 61 6e 63 68 63 68  sdefaultbranchch
2270: 69 6c 64 20 20 7b 7d 20 7b 20 72 65 74 75 72 6e  ild  {} { return
2280: 20 5b 65 78 70 72 20 7b 24 6d 79 64 62 63 68 69   [expr {$mydbchi
2290: 6c 64 20 20 6e 65 20 22 22 7d 5d 20 7d 0a 20 20  ld  ne ""}] }.  
22a0: 20 20 6d 65 74 68 6f 64 20 68 61 73 64 65 66 61    method hasdefa
22b0: 75 6c 74 62 72 61 6e 63 68 70 61 72 65 6e 74 20  ultbranchparent 
22c0: 7b 7d 20 7b 20 72 65 74 75 72 6e 20 5b 65 78 70  {} { return [exp
22d0: 72 20 7b 24 6d 79 64 62 70 61 72 65 6e 74 20 6e  r {$mydbparent n
22e0: 65 20 22 22 7d 5d 20 7d 0a 0a 20 20 20 20 23 20  e ""}] }..    # 
22f0: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23  # ## ### ##### #
2300: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23  ####### ########
2310: 23 23 23 23 23 0a 20 20 20 20 23 23 20 54 79 70  #####.    ## Typ
2320: 65 20 41 50 49 0a 0a 20 20 20 20 74 79 70 65 6d  e API..    typem
2330: 65 74 68 6f 64 20 69 73 74 72 75 6e 6b 72 65 76  ethod istrunkrev
2340: 6e 72 20 7b 72 65 76 6e 72 7d 20 7b 0a 09 72 65  nr {revnr} {..re
2350: 74 75 72 6e 20 5b 65 78 70 72 20 7b 5b 6c 6c 65  turn [expr {[lle
2360: 6e 67 74 68 20 5b 73 70 6c 69 74 20 24 72 65 76  ngth [split $rev
2370: 6e 72 20 2e 5d 5d 20 3d 3d 20 32 7d 5d 0a 20 20  nr .]] == 2}].  
2380: 20 20 7d 0a 0a 20 20 20 20 74 79 70 65 6d 65 74    }..    typemet
2390: 68 6f 64 20 69 73 62 72 61 6e 63 68 72 65 76 6e  hod isbranchrevn
23a0: 72 20 7b 72 65 76 6e 72 20 5f 20 62 76 7d 20 7b  r {revnr _ bv} {
23b0: 0a 09 69 66 20 7b 5b 72 65 67 65 78 70 20 24 6d  ..if {[regexp $m
23c0: 79 62 72 61 6e 63 68 70 61 74 74 65 72 6e 20 24  ybranchpattern $
23d0: 72 65 76 6e 72 20 2d 3e 20 68 65 61 64 20 74 61  revnr -> head ta
23e0: 69 6c 5d 7d 20 7b 0a 09 20 20 20 20 75 70 76 61  il]} {..    upva
23f0: 72 20 31 20 24 62 76 20 62 72 61 6e 63 68 6e 72  r 1 $bv branchnr
2400: 0a 09 20 20 20 20 73 65 74 20 62 72 61 6e 63 68  ..    set branch
2410: 6e 72 20 24 7b 68 65 61 64 7d 24 74 61 69 6c 0a  nr ${head}$tail.
2420: 09 20 20 20 20 72 65 74 75 72 6e 20 31 0a 09 7d  .    return 1..}
2430: 0a 09 72 65 74 75 72 6e 20 30 0a 20 20 20 20 7d  ..return 0.    }
2440: 0a 0a 20 20 20 20 74 79 70 65 6d 65 74 68 6f 64  ..    typemethod
2450: 20 32 62 72 61 6e 63 68 6e 72 20 7b 72 65 76 6e   2branchnr {revn
2460: 72 7d 20 7b 0a 09 23 20 49 6e 70 75 74 20 69 73  r} {..# Input is
2470: 20 61 20 62 72 61 6e 63 68 20 72 65 76 69 73 69   a branch revisi
2480: 6f 6e 20 6e 75 6d 62 65 72 2c 20 69 2e 65 2e 20  on number, i.e. 
2490: 61 20 72 65 76 69 73 69 6f 6e 20 6e 75 6d 62 65  a revision numbe
24a0: 72 0a 09 23 20 77 69 74 68 20 61 6e 20 65 76 65  r..# with an eve
24b0: 6e 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6d 70  n number of comp
24c0: 6f 6e 65 6e 74 73 3b 20 66 6f 72 20 65 78 61 6d  onents; for exam
24d0: 70 6c 65 20 27 32 2e 39 2e 32 2e 31 27 0a 09 23  ple '2.9.2.1'..#
24e0: 20 28 6e 65 76 65 72 20 27 32 2e 39 2e 32 27 20   (never '2.9.2' 
24f0: 6e 6f 72 20 27 32 2e 39 2e 30 2e 32 27 29 2e 20  nor '2.9.0.2'). 
2500: 20 54 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75   The return valu
2510: 65 20 69 73 20 74 68 65 0a 09 23 20 62 72 61 6e  e is the..# bran
2520: 63 68 20 6e 75 6d 62 65 72 20 28 66 6f 72 20 65  ch number (for e
2530: 78 61 6d 70 6c 65 2c 20 27 32 2e 39 2e 32 27 29  xample, '2.9.2')
2540: 2e 20 20 46 6f 72 20 74 72 75 6e 6b 20 72 65 76  .  For trunk rev
2550: 69 73 69 6f 6e 73 2c 0a 09 23 20 6c 69 6b 65 20  isions,..# like 
2560: 27 33 2e 34 27 2c 20 77 65 20 72 65 74 75 72 6e  '3.4', we return
2570: 20 74 68 65 20 65 6d 70 74 79 20 73 74 72 69 6e   the empty strin
2580: 67 2e 0a 0a 09 69 66 20 7b 5b 24 74 79 70 65 20  g....if {[$type 
2590: 69 73 74 72 75 6e 6b 72 65 76 6e 72 20 24 72 65  istrunkrevnr $re
25a0: 76 6e 72 5d 7d 20 7b 0a 09 20 20 20 20 72 65 74  vnr]} {..    ret
25b0: 75 72 6e 20 22 22 0a 09 7d 0a 09 72 65 74 75 72  urn ""..}..retur
25c0: 6e 20 5b 6a 6f 69 6e 20 5b 6c 72 61 6e 67 65 20  n [join [lrange 
25d0: 5b 73 70 6c 69 74 20 24 72 65 76 6e 72 20 2e 5d  [split $revnr .]
25e0: 20 30 20 65 6e 64 2d 31 5d 20 2e 5d 0a 20 20 20   0 end-1] .].   
25f0: 20 7d 0a 0a 20 20 20 20 74 79 70 65 6d 65 74 68   }..    typemeth
2600: 6f 64 20 32 62 72 61 6e 63 68 70 61 72 65 6e 74  od 2branchparent
2610: 72 65 76 6e 72 20 7b 62 72 61 6e 63 68 6e 72 7d  revnr {branchnr}
2620: 20 7b 0a 09 23 20 43 68 6f 70 20 74 68 65 20 6c   {..# Chop the l
2630: 61 73 74 20 73 65 67 6d 65 6e 74 20 6f 66 66 0a  ast segment off.
2640: 09 72 65 74 75 72 6e 20 5b 6a 6f 69 6e 20 5b 6c  .return [join [l
2650: 72 61 6e 67 65 20 5b 73 70 6c 69 74 20 24 62 72  range [split $br
2660: 61 6e 63 68 6e 72 20 2e 5d 20 30 20 65 6e 64 2d  anchnr .] 0 end-
2670: 31 5d 20 2e 5d 0a 20 20 20 20 7d 0a 0a 20 20 20  1] .].    }..   
2680: 20 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23   # # ## ### ####
2690: 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23  # ######## #####
26a0: 23 23 23 23 23 23 23 23 0a 0a 20 20 20 20 6d 65  ########..    me
26b0: 74 68 6f 64 20 70 65 72 73 69 73 74 20 7b 7d 20  thod persist {} 
26c0: 7b 0a 09 73 65 74 20 66 69 64 20 5b 24 6d 79 66  {..set fid [$myf
26d0: 69 6c 65 20 69 64 5d 0a 09 73 65 74 20 6c 6f 64  ile id]..set lod
26e0: 20 5b 24 6d 79 6c 6f 64 20 69 64 5d 0a 09 73 65   [$mylod id]..se
26f0: 74 20 6f 70 20 20 24 6d 79 6f 70 63 6f 64 65 28  t op  $myopcode(
2700: 24 6d 79 6f 70 65 72 61 74 69 6f 6e 29 0a 09 73  $myoperation)..s
2710: 65 74 20 69 64 62 20 24 6d 79 69 73 6f 6e 64 65  et idb $myisonde
2720: 66 61 75 6c 74 62 72 61 6e 63 68 0a 0a 09 73 74  faultbranch...st
2730: 72 75 63 74 3a 3a 6c 69 73 74 20 61 73 73 69 67  ruct::list assig
2740: 6e 20 24 6d 79 74 65 78 74 20 63 6f 66 66 20 65  n $mytext coff e
2750: 6e 64 0a 09 73 65 74 20 63 6c 65 6e 20 5b 65 78  nd..set clen [ex
2760: 70 72 20 7b 24 65 6e 64 20 2d 20 24 63 6f 66 66  pr {$end - $coff
2770: 7d 5d 0a 0a 09 6c 61 70 70 65 6e 64 20 6d 61 70  }]...lappend map
2780: 20 40 50 40 20 5b 65 78 70 72 20 7b 20 28 24 6d   @P@ [expr { ($m
2790: 79 70 61 72 65 6e 74 20 20 20 20 20 20 20 65 71  yparent       eq
27a0: 20 22 22 29 20 3f 20 22 4e 55 4c 4c 22 20 3a 20   "") ? "NULL" : 
27b0: 5b 24 6d 79 70 61 72 65 6e 74 20 20 20 20 20 20  [$myparent      
27c0: 20 69 64 5d 20 7d 5d 0a 09 6c 61 70 70 65 6e 64   id] }]..lappend
27d0: 20 6d 61 70 20 40 43 40 20 5b 65 78 70 72 20 7b   map @C@ [expr {
27e0: 20 28 24 6d 79 63 68 69 6c 64 20 20 20 20 20 20   ($mychild      
27f0: 20 20 65 71 20 22 22 29 20 3f 20 22 4e 55 4c 4c    eq "") ? "NULL
2800: 22 20 3a 20 5b 24 6d 79 63 68 69 6c 64 20 20 20  " : [$mychild   
2810: 20 20 20 20 20 69 64 5d 20 7d 5d 0a 09 6c 61 70       id] }]..lap
2820: 70 65 6e 64 20 6d 61 70 20 40 44 50 20 5b 65 78  pend map @DP [ex
2830: 70 72 20 7b 20 28 24 6d 79 64 62 70 61 72 65 6e  pr { ($mydbparen
2840: 74 20 20 20 20 20 65 71 20 22 22 29 20 3f 20 22  t     eq "") ? "
2850: 4e 55 4c 4c 22 20 3a 20 5b 24 6d 79 64 62 70 61  NULL" : [$mydbpa
2860: 72 65 6e 74 20 20 20 20 20 69 64 5d 20 7d 5d 0a  rent     id] }].
2870: 09 6c 61 70 70 65 6e 64 20 6d 61 70 20 40 44 43  .lappend map @DC
2880: 20 5b 65 78 70 72 20 7b 20 28 24 6d 79 64 62 63   [expr { ($mydbc
2890: 68 69 6c 64 20 20 20 20 20 20 65 71 20 22 22 29  hild      eq "")
28a0: 20 3f 20 22 4e 55 4c 4c 22 20 3a 20 5b 24 6d 79   ? "NULL" : [$my
28b0: 64 62 63 68 69 6c 64 20 20 20 20 20 20 69 64 5d  dbchild      id]
28c0: 20 7d 5d 0a 09 6c 61 70 70 65 6e 64 20 6d 61 70   }]..lappend map
28d0: 20 40 42 50 20 5b 65 78 70 72 20 7b 20 28 24 6d   @BP [expr { ($m
28e0: 79 70 61 72 65 6e 74 62 72 61 6e 63 68 20 65 71  yparentbranch eq
28f0: 20 22 22 29 20 3f 20 22 4e 55 4c 4c 22 20 3a 20   "") ? "NULL" : 
2900: 5b 24 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 68  [$myparentbranch
2910: 20 69 64 5d 20 7d 5d 0a 0a 09 73 65 74 20 63 6d   id] }]...set cm
2920: 64 20 7b 0a 09 20 20 20 20 49 4e 53 45 52 54 20  d {..    INSERT 
2930: 49 4e 54 4f 20 72 65 76 69 73 69 6f 6e 20 28 20  INTO revision ( 
2940: 72 69 64 2c 20 20 20 66 69 64 2c 20 20 72 65 76  rid,   fid,  rev
2950: 2c 20 20 20 20 20 20 6c 6f 64 2c 20 70 61 72 65  ,      lod, pare
2960: 6e 74 2c 20 63 68 69 6c 64 2c 20 20 69 73 64 65  nt, child,  isde
2970: 66 61 75 6c 74 2c 20 64 62 70 61 72 65 6e 74 2c  fault, dbparent,
2980: 20 64 62 63 68 69 6c 64 2c 20 62 70 61 72 65 6e   dbchild, bparen
2990: 74 2c 20 20 6f 70 2c 20 20 64 61 74 65 2c 20 20  t,  op,  date,  
29a0: 20 20 73 74 61 74 65 2c 20 20 20 20 6d 69 64 2c    state,    mid,
29b0: 20 20 20 20 20 20 20 63 6f 66 66 2c 20 20 63 6c         coff,  cl
29c0: 65 6e 29 0a 09 20 20 20 20 56 41 4c 55 45 53 20  en)..    VALUES 
29d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 24                ($
29e0: 6d 79 69 64 2c 20 24 66 69 64 2c 20 24 6d 79 72  myid, $fid, $myr
29f0: 65 76 6e 72 2c 20 24 6c 6f 64 2c 20 40 50 40 2c  evnr, $lod, @P@,
2a00: 20 20 20 20 40 43 40 2c 20 20 20 24 69 64 62 2c      @C@,   $idb,
2a10: 20 20 20 20 20 20 20 40 44 50 2c 20 20 20 20 20         @DP,     
2a20: 20 40 44 43 2c 20 20 20 20 20 40 42 50 20 20 20   @DC,     @BP   
2a30: 20 2c 20 24 6f 70 2c 20 24 6d 79 64 61 74 65 2c   , $op, $mydate,
2a40: 20 24 6d 79 73 74 61 74 65 2c 20 24 6d 79 6d 65   $mystate, $myme
2a50: 74 61 69 64 2c 20 24 63 6f 66 66 2c 20 24 63 6c  taid, $coff, $cl
2a60: 65 6e 29 3b 0a 09 7d 0a 0a 09 73 74 61 74 65 20  en);..}...state 
2a70: 74 72 61 6e 73 61 63 74 69 6f 6e 20 7b 0a 09 20  transaction {.. 
2a80: 20 20 20 73 74 61 74 65 20 72 75 6e 20 5b 73 74     state run [st
2a90: 72 69 6e 67 20 6d 61 70 20 24 6d 61 70 20 24 63  ring map $map $c
2aa0: 6d 64 5d 0a 0a 09 20 20 20 20 23 20 41 6e 64 20  md]...    # And 
2ab0: 74 68 65 20 62 72 61 6e 63 68 20 63 68 69 6c 64  the branch child
2ac0: 72 65 6e 20 61 73 20 77 65 6c 6c 2c 20 66 6f 72  ren as well, for
2ad0: 20 70 61 73 73 20 35 2e 0a 09 20 20 20 20 66 6f   pass 5...    fo
2ae0: 72 65 61 63 68 20 62 63 20 24 6d 79 62 72 61 6e  reach bc $mybran
2af0: 63 68 63 68 69 6c 64 72 65 6e 20 7b 0a 09 09 73  chchildren {...s
2b00: 65 74 20 62 63 69 64 20 5b 24 62 63 20 69 64 5d  et bcid [$bc id]
2b10: 0a 09 09 73 74 61 74 65 20 72 75 6e 20 7b 0a 09  ...state run {..
2b20: 09 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
2b30: 20 72 65 76 69 73 69 6f 6e 62 72 61 6e 63 68 63   revisionbranchc
2b40: 68 69 6c 64 72 65 6e 20 28 72 69 64 2c 20 20 20  hildren (rid,   
2b50: 62 72 69 64 29 0a 09 09 20 20 20 20 56 41 4c 55  brid)...    VALU
2b60: 45 53 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ES              
2b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
2b80: 24 6d 79 69 64 2c 20 24 62 63 69 64 29 3b 0a 09  $myid, $bcid);..
2b90: 09 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 72 65  .}..    }..}..re
2ba0: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20  turn.    }..    
2bb0: 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23  # # ## ### #####
2bc0: 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23   ######## ######
2bd0: 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 53  #######.    ## S
2be0: 74 61 74 65 0a 0a 20 20 20 20 23 20 50 65 72 73  tate..    # Pers
2bf0: 69 73 74 65 6e 74 3a 20 6d 79 69 64 20 20 20 20  istent: myid    
2c00: 20 20 20 20 20 20 20 20 20 20 20 20 2d 20 72 65              - re
2c10: 76 69 73 69 6f 6e 2e 72 69 64 0a 20 20 20 20 23  vision.rid.    #
2c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 79 66               myf
2c30: 69 6c 65 20 20 20 20 20 20 20 20 20 20 20 20 20  ile             
2c40: 20 2d 20 72 65 76 69 73 69 6f 6e 2e 66 69 64 0a   - revision.fid.
2c50: 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20      #           
2c60: 20 20 6d 79 6c 6f 64 20 20 20 20 20 20 20 20 20    mylod         
2c70: 20 20 20 20 20 20 2d 20 72 65 76 69 73 69 6f 6e        - revision
2c80: 2e 6c 6f 64 0a 20 20 20 20 23 20 20 20 20 20 20  .lod.    #      
2c90: 20 20 20 20 20 20 20 6d 79 72 65 76 6e 72 20 20         myrevnr  
2ca0: 20 20 20 20 20 20 20 20 20 20 20 2d 20 72 65 76             - rev
2cb0: 69 73 69 6f 6e 2e 72 65 76 0a 20 20 20 20 23 20  ision.rev.    # 
2cc0: 20 20 20 20 20 20 20 20 20 20 20 20 6d 79 64 61              myda
2cd0: 74 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20  te              
2ce0: 2d 20 72 65 76 69 73 69 6f 6e 2e 64 61 74 65 0a  - revision.date.
2cf0: 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20      #           
2d00: 20 20 6d 79 73 74 61 74 65 20 20 20 20 20 20 20    mystate       
2d10: 20 20 20 20 20 20 2d 20 72 65 76 69 73 69 6f 6e        - revision
2d20: 2e 73 74 61 74 65 0a 20 20 20 20 23 20 20 20 20  .state.    #    
2d30: 20 20 20 20 20 20 20 20 20 6d 79 6d 65 74 61 69           mymetai
2d40: 64 20 20 20 20 20 20 20 20 20 20 20 20 2d 20 72  d            - r
2d50: 65 76 69 73 69 6f 6e 2e 6d 69 64 0a 20 20 20 20  evision.mid.    
2d60: 23 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 79  #             my
2d70: 74 65 78 74 20 20 20 20 20 20 20 20 20 20 20 20  text            
2d80: 20 20 2d 20 72 65 76 69 73 69 6f 6e 2e 7b 63 73    - revision.{cs
2d90: 2c 63 6c 7d 0a 20 20 20 20 23 20 20 20 20 20 20  ,cl}.    #      
2da0: 20 20 20 20 20 20 20 6d 79 70 61 72 65 6e 74 20         myparent 
2db0: 20 20 20 20 20 20 20 20 20 20 20 2d 20 72 65 76             - rev
2dc0: 69 73 69 6f 6e 2e 70 61 72 65 6e 74 0a 20 20 20  ision.parent.   
2dd0: 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 6d   #             m
2de0: 79 63 68 69 6c 64 20 20 20 20 20 20 20 20 20 20  ychild          
2df0: 20 20 20 2d 20 72 65 76 69 73 69 6f 6e 2e 63 68     - revision.ch
2e00: 69 6c 64 0a 20 20 20 20 23 20 20 20 20 20 20 20  ild.    #       
2e10: 20 20 20 20 20 20 6d 79 70 61 72 65 6e 74 62 72        myparentbr
2e20: 61 6e 63 68 20 20 20 20 20 20 2d 20 72 65 76 69  anch      - revi
2e30: 73 69 6f 6e 2e 62 70 61 72 65 6e 74 0a 20 20 20  sion.bparent.   
2e40: 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 6d   #             m
2e50: 79 6f 70 65 72 61 74 69 6f 6e 20 20 20 20 20 20  yoperation      
2e60: 20 20 20 2d 20 72 65 76 69 73 69 6f 6e 2e 6f 70     - revision.op
2e70: 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20  .    #          
2e80: 20 20 20 6d 79 69 73 6f 6e 64 65 66 61 75 6c 74     myisondefault
2e90: 62 72 61 6e 63 68 20 2d 20 72 65 76 69 73 69 6f  branch - revisio
2ea0: 6e 2e 69 73 64 65 66 61 75 6c 74 0a 20 20 20 20  n.isdefault.    
2eb0: 23 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 79  #             my
2ec0: 64 62 70 61 72 65 6e 74 20 20 20 20 20 20 20 20  dbparent        
2ed0: 20 20 2d 20 72 65 76 69 73 69 6f 6e 2e 64 62 70    - revision.dbp
2ee0: 61 72 65 6e 74 0a 20 20 20 20 23 20 20 20 20 20  arent.    #     
2ef0: 20 20 20 20 20 20 20 20 6d 79 64 62 63 68 69 6c          mydbchil
2f00: 64 20 20 20 20 20 20 20 20 20 20 20 2d 20 72 65  d           - re
2f10: 76 69 73 69 6f 6e 2e 64 62 63 68 69 6c 64 0a 0a  vision.dbchild..
2f20: 0a 20 20 20 20 74 79 70 65 76 61 72 69 61 62 6c  .    typevariabl
2f30: 65 20 6d 79 62 72 61 6e 63 68 70 61 74 74 65 72  e mybranchpatter
2f40: 6e 20 7b 5e 28 28 3f 3a 5c 64 2b 5c 2e 5c 64 2b  n {^((?:\d+\.\d+
2f50: 5c 2e 29 2b 29 28 3f 3a 30 5c 2e 29 3f 28 5c 64  \.)+)(?:0\.)?(\d
2f60: 2b 29 24 7d 0a 20 20 20 20 23 20 46 69 72 73 74  +)$}.    # First
2f70: 20 61 20 6e 6f 6e 7a 65 72 6f 20 65 76 65 6e 20   a nonzero even 
2f80: 6e 75 6d 62 65 72 20 6f 66 20 64 69 67 69 74 20  number of digit 
2f90: 67 72 6f 75 70 73 20 77 69 74 68 20 74 72 61 69  groups with trai
2fa0: 6c 69 6e 67 20 64 6f 74 0a 20 20 20 20 23 20 43  ling dot.    # C
2fb0: 56 53 20 74 68 65 6e 20 73 74 69 63 6b 73 20 61  VS then sticks a
2fc0: 6e 20 65 78 74 72 61 20 30 20 69 6e 20 68 65 72  n extra 0 in her
2fd0: 65 3b 20 52 43 53 20 64 6f 65 73 20 6e 6f 74 2e  e; RCS does not.
2fe0: 0a 20 20 20 20 23 20 41 6e 64 20 74 68 65 20 6c  .    # And the l
2ff0: 61 73 74 20 64 69 67 69 74 20 67 72 6f 75 70 2e  ast digit group.
3000: 0a 0a 20 20 20 20 74 79 70 65 76 61 72 69 61 62  ..    typevariab
3010: 6c 65 20 6d 79 69 64 63 6f 75 6e 74 65 72 20 30  le myidcounter 0
3020: 20 3b 20 23 20 43 6f 75 6e 74 65 72 20 66 6f 72   ; # Counter for
3030: 20 72 65 76 69 73 69 6f 6e 20 69 64 73 2e 0a 20   revision ids.. 
3040: 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 69 64     variable myid
3050: 20 20 20 20 20 20 20 20 20 20 20 7b 7d 20 3b 20             {} ; 
3060: 23 20 52 65 76 69 73 69 6f 6e 20 69 64 2e 0a 0a  # Revision id...
3070: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 72      variable myr
3080: 65 76 6e 72 20 20 20 20 20 7b 7d 20 3b 20 23 20  evnr     {} ; # 
3090: 52 65 76 69 73 69 6f 6e 20 6e 75 6d 62 65 72 20  Revision number 
30a0: 6f 66 20 74 68 65 20 72 65 76 69 73 69 6f 6e 2e  of the revision.
30b0: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79  .    variable my
30c0: 64 61 74 65 20 20 20 20 20 20 7b 7d 20 3b 20 23  date      {} ; #
30d0: 20 54 69 6d 65 73 74 61 6d 70 20 6f 66 20 74 68   Timestamp of th
30e0: 65 20 72 65 76 69 73 69 6f 6e 2c 20 73 65 63 6f  e revision, seco
30f0: 6e 64 73 20 73 69 6e 63 65 20 65 70 6f 63 68 0a  nds since epoch.
3100: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 6f      variable myo
3110: 72 69 67 64 61 74 65 20 20 7b 7d 20 3b 20 23 20  rigdate  {} ; # 
3120: 4f 72 69 67 69 6e 61 6c 20 75 6e 6d 6f 64 69 66  Original unmodif
3130: 69 65 64 20 74 69 6d 65 73 74 61 6d 70 2e 0a 20  ied timestamp.. 
3140: 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 73 74     variable myst
3150: 61 74 65 20 20 20 20 20 7b 7d 20 3b 20 23 20 53  ate     {} ; # S
3160: 74 61 74 65 20 6f 66 20 74 68 65 20 72 65 76 69  tate of the revi
3170: 73 69 6f 6e 2e 0a 20 20 20 20 76 61 72 69 61 62  sion..    variab
3180: 6c 65 20 6d 79 66 69 6c 65 20 20 20 20 20 20 7b  le myfile      {
3190: 7d 20 3b 20 23 20 52 65 66 20 74 6f 20 74 68 65  } ; # Ref to the
31a0: 20 66 69 6c 65 20 6f 62 6a 65 63 74 20 74 68 65   file object the
31b0: 20 72 65 76 69 73 69 6f 6e 20 62 65 6c 6f 6e 67   revision belong
31c0: 73 20 74 6f 2e 0a 20 20 20 20 76 61 72 69 61 62  s to..    variab
31d0: 6c 65 20 6d 79 74 65 78 74 20 20 20 20 20 20 7b  le mytext      {
31e0: 7d 20 3b 20 23 20 52 61 6e 67 65 20 6f 66 20 74  } ; # Range of t
31f0: 68 65 20 28 64 65 6c 74 61 29 20 74 65 78 74 20  he (delta) text 
3200: 66 6f 72 20 74 68 69 73 20 72 65 76 69 73 69 6f  for this revisio
3210: 6e 20 69 6e 20 74 68 65 20 66 69 6c 65 2e 0a 20  n in the file.. 
3220: 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 6d 65     variable myme
3230: 74 61 69 64 20 20 20 20 7b 7d 20 3b 20 23 20 49  taid    {} ; # I
3240: 64 20 6f 66 20 74 68 65 20 6d 65 74 61 20 64 61  d of the meta da
3250: 74 61 20 67 72 6f 75 70 20 74 68 65 20 72 65 76  ta group the rev
3260: 69 73 69 6f 6e 0a 09 09 09 20 20 20 20 20 20 23  ision....      #
3270: 20 62 65 6c 6f 6e 67 73 20 74 6f 2e 20 54 68 69   belongs to. Thi
3280: 73 20 69 73 20 6c 61 74 65 72 20 75 73 65 64 20  s is later used 
3290: 74 6f 20 70 75 74 0a 09 09 09 20 20 20 20 20 20  to put....      
32a0: 23 20 74 68 65 20 66 69 6c 65 20 72 65 76 69 73  # the file revis
32b0: 69 6f 6e 73 20 69 6e 74 6f 20 70 72 65 6c 69 6d  ions into prelim
32c0: 69 6e 61 72 79 0a 09 09 09 20 20 20 20 20 20 23  inary....      #
32d0: 20 63 68 61 6e 67 65 73 65 74 73 20 28 61 6b 61   changesets (aka
32e0: 20 70 72 6f 6a 65 63 74 20 72 65 76 69 73 69 6f   project revisio
32f0: 6e 73 29 2e 0a 09 09 09 20 20 20 20 20 20 23 20  ns).....      # 
3300: 54 68 69 73 20 69 64 20 65 6e 63 6f 64 65 73 20  This id encodes 
3310: 34 20 70 69 65 63 65 73 20 6f 66 20 64 61 74 61  4 pieces of data
3320: 2c 0a 09 09 09 20 20 20 20 20 20 23 20 6e 61 6d  ,....      # nam
3330: 65 6c 79 3a 20 74 68 65 20 70 72 6f 6a 65 63 74  ely: the project
3340: 20 61 6e 64 20 62 72 61 6e 63 68 20 74 68 65 0a   and branch the.
3350: 09 09 09 20 20 20 20 20 20 23 20 72 65 76 69 73  ...      # revis
3360: 69 6f 6e 20 77 61 73 20 63 6f 6d 6d 69 74 74 65  ion was committe
3370: 64 20 74 6f 2c 20 74 68 65 20 61 75 74 68 6f 72  d to, the author
3380: 0a 09 09 09 20 20 20 20 20 20 23 20 77 68 6f 20  ....      # who 
3390: 64 69 64 20 74 68 65 20 63 6f 6d 6d 69 74 2c 20  did the commit, 
33a0: 61 6e 64 20 74 68 65 20 6d 65 73 73 61 67 65 0a  and the message.
33b0: 09 09 09 20 20 20 20 20 20 23 20 75 73 65 64 2e  ...      # used.
33c0: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79  .    variable my
33d0: 6c 6f 64 20 20 20 20 20 20 20 7b 7d 20 3b 20 23  lod       {} ; #
33e0: 20 52 65 66 65 72 65 6e 63 65 20 74 6f 20 74 68   Reference to th
33f0: 65 20 6c 69 6e 65 2d 6f 66 2d 64 65 76 65 6c 6f  e line-of-develo
3400: 70 6d 65 6e 74 0a 09 09 09 20 20 20 20 20 20 23  pment....      #
3410: 20 6f 62 6a 65 63 74 20 74 68 65 20 72 65 76 69   object the revi
3420: 73 69 6f 6e 20 62 65 6c 6f 6e 67 73 20 74 6f 2e  sion belongs to.
3430: 20 41 6e 0a 09 09 09 20 20 20 20 20 20 23 20 61   An....      # a
3440: 6c 74 65 72 6e 61 74 69 76 65 20 69 64 69 6f 6d  lternative idiom
3450: 20 77 6f 75 6c 64 20 62 65 20 74 6f 20 63 61 6c   would be to cal
3460: 6c 20 69 74 0a 09 09 09 20 20 20 20 20 20 23 20  l it....      # 
3470: 74 68 65 20 62 72 61 6e 63 68 20 74 68 65 20 72  the branch the r
3480: 65 76 69 73 69 6f 6e 20 69 73 20 6f 6e 2e 20 54  evision is on. T
3490: 68 69 73 0a 09 09 09 20 20 20 20 20 20 23 20 72  his....      # r
34a0: 65 66 65 72 65 6e 63 65 20 69 73 20 74 6f 20 61  eference is to a
34b0: 20 70 72 6f 6a 65 63 74 2d 6c 65 76 65 6c 20 6f   project-level o
34c0: 62 6a 65 63 74 0a 09 09 09 20 20 20 20 20 20 23  bject....      #
34d0: 20 28 73 79 6d 62 6f 6c 20 6f 72 20 74 72 75 6e   (symbol or trun
34e0: 6b 29 2e 0a 0a 20 20 20 20 23 20 42 61 73 69 63  k)...    # Basic
34f0: 20 70 61 72 65 6e 74 2f 63 68 69 6c 64 20 6c 69   parent/child li
3500: 6e 6b 61 67 65 20 28 6c 69 6e 65 73 20 6f 66 20  nkage (lines of 
3510: 64 65 76 65 6c 6f 70 6d 65 6e 74 29 0a 0a 20 20  development)..  
3520: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 70 61 72    variable mypar
3530: 65 6e 74 20 7b 7d 20 3b 20 23 20 52 65 66 20 74  ent {} ; # Ref t
3540: 6f 20 70 61 72 65 6e 74 20 72 65 76 69 73 69 6f  o parent revisio
3550: 6e 20 6f 62 6a 65 63 74 2e 20 4c 69 6e 6b 20 72  n object. Link r
3560: 65 71 75 69 72 65 64 20 62 65 63 61 75 73 65 20  equired because 
3570: 6f 66 0a 20 20 20 20 23 20 20 20 20 20 20 20 20  of.    #        
3580: 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 20              ; # 
3590: 27 63 76 73 61 64 6d 69 6e 20 2d 6f 27 2c 20 77  'cvsadmin -o', w
35a0: 68 69 63 68 20 63 61 6e 20 63 72 65 61 74 65 20  hich can create 
35b0: 61 72 62 69 74 72 61 72 79 20 67 61 70 73 20 69  arbitrary gaps i
35c0: 6e 20 74 68 65 0a 20 20 20 20 23 20 20 20 20 20  n the.    #     
35d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b                 ;
35e0: 20 23 20 6e 75 6d 62 65 72 69 6e 67 20 73 65 71   # numbering seq
35f0: 75 65 6e 63 65 2e 20 54 68 69 73 20 69 73 20 69  uence. This is i
3600: 6e 20 74 68 65 20 73 61 6d 65 20 6c 69 6e 65 20  n the same line 
3610: 6f 66 20 64 65 76 65 6c 6f 70 6d 65 6e 74 0a 20  of development. 
3620: 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20     #            
3630: 20 20 20 20 20 20 20 20 3b 20 23 20 4e 6f 74 65          ; # Note
3640: 3a 20 46 6f 72 20 74 68 65 20 66 69 72 73 74 20  : For the first 
3650: 72 65 76 69 73 69 6f 6e 20 6f 6e 20 61 20 62 72  revision on a br
3660: 61 6e 63 68 20 74 68 65 20 72 65 76 69 73 69 6f  anch the revisio
3670: 6e 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20  n.    #         
3680: 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 69             ; # i
3690: 74 20 77 61 73 20 73 70 61 77 6e 65 64 20 66 72  t was spawned fr
36a0: 6f 6d 20 69 73 20 74 68 65 20 70 61 72 65 6e 74  om is the parent
36b0: 2e 20 4f 6e 6c 79 20 74 68 65 20 72 6f 6f 74 20  . Only the root 
36c0: 72 65 76 69 73 69 6f 6e 0a 20 20 20 20 23 20 20  revision.    #  
36d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36e0: 20 20 3b 20 23 20 6f 66 20 6d 79 66 69 6c 65 27    ; # of myfile'
36f0: 73 20 72 65 76 69 73 69 6f 6e 20 74 72 65 65 20  s revision tree 
3700: 68 61 73 20 6e 6f 74 68 69 6e 67 20 73 65 74 20  has nothing set 
3710: 68 65 72 65 2e 0a 20 20 20 20 23 20 20 20 20 20  here..    #     
3720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b                 ;
3730: 20 23 0a 0a 20 20 20 20 76 61 72 69 61 62 6c 65   #..    variable
3740: 20 6d 79 63 68 69 6c 64 20 20 7b 7d 20 3b 20 23   mychild  {} ; #
3750: 20 52 65 66 20 74 6f 20 74 68 65 20 70 72 69 6d   Ref to the prim
3760: 61 72 79 20 63 68 69 6c 64 20 72 65 76 69 73 69  ary child revisi
3770: 6f 6e 20 6f 62 6a 65 63 74 2c 20 69 2e 65 2e 20  on object, i.e. 
3780: 74 68 65 20 6e 65 78 74 0a 20 20 20 20 23 20 20  the next.    #  
3790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37a0: 20 20 3b 20 23 20 72 65 76 69 73 69 6f 6e 20 69    ; # revision i
37b0: 6e 20 74 68 65 20 73 61 6d 65 20 6c 69 6e 65 20  n the same line 
37c0: 6f 66 20 64 65 76 65 6c 6f 70 6d 65 6e 74 2e 0a  of development..
37d0: 0a 20 20 20 20 23 20 42 72 61 6e 63 68 20 6c 69  .    # Branch li
37e0: 6e 6b 61 67 65 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  nkage __________
37f0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20 20  __________..    
3800: 76 61 72 69 61 62 6c 65 20 6d 79 62 72 61 6e 63  variable mybranc
3810: 68 65 73 20 20 20 20 20 7b 7d 20 3b 20 23 20 4c  hes     {} ; # L
3820: 69 73 74 20 6f 66 20 74 68 65 20 62 72 61 6e 63  ist of the branc
3830: 68 65 73 20 28 6f 62 6a 73 29 20 73 70 61 77 6e  hes (objs) spawn
3840: 65 64 20 62 79 20 74 68 69 73 20 72 65 76 69 73  ed by this revis
3850: 69 6f 6e 2e 0a 20 20 20 20 76 61 72 69 61 62 6c  ion..    variabl
3860: 65 20 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 68  e myparentbranch
3870: 20 7b 7d 20 3b 20 23 20 46 6f 72 20 74 68 65 20   {} ; # For the 
3880: 66 69 72 73 74 20 72 65 76 69 73 69 6f 6e 20 6f  first revision o
3890: 6e 20 61 20 62 72 61 6e 63 68 20 74 68 65 20 72  n a branch the r
38a0: 65 6c 65 76 61 6e 74 0a 20 20 20 20 23 20 20 20  elevant.    #   
38b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38c0: 20 20 20 20 20 20 20 3b 20 23 20 62 72 61 6e 63         ; # branc
38d0: 68 20 6f 62 6a 65 63 74 2e 20 54 68 69 73 20 61  h object. This a
38e0: 6c 73 6f 20 61 6c 6c 6f 77 73 20 75 73 20 74 6f  lso allows us to
38f0: 20 64 65 74 65 72 6d 69 6e 65 20 69 66 0a 20 20   determine if.  
3900: 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20    #             
3910: 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23               ; #
3920: 20 6d 79 70 61 72 65 6e 74 20 69 73 20 69 6e 20   myparent is in 
3930: 74 68 65 20 73 61 6d 65 20 4c 4f 44 2c 20 6f 72  the same LOD, or
3940: 20 74 68 65 20 72 65 76 69 73 69 6f 6e 20 74 68   the revision th
3950: 65 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20  e.    #         
3960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3970: 20 3b 20 23 20 62 72 61 6e 63 68 20 73 70 61 77   ; # branch spaw
3980: 6e 65 64 20 66 72 6f 6d 2e 0a 0a 20 20 20 20 23  ned from...    #
3990: 20 4c 69 73 74 20 6f 66 20 74 68 65 20 72 65 76   List of the rev
39a0: 69 73 69 6f 6e 20 6f 62 6a 65 63 74 73 20 6f 66  ision objects of
39b0: 20 74 68 65 20 66 69 72 73 74 20 63 6f 6d 6d 69   the first commi
39c0: 74 73 20 6f 6e 20 61 6e 79 0a 20 20 20 20 23 20  ts on any.    # 
39d0: 62 72 61 6e 63 68 65 73 20 73 70 61 77 6e 65 64  branches spawned
39e0: 20 62 79 20 74 68 69 73 20 72 65 76 69 73 69 6f   by this revisio
39f0: 6e 20 6f 6e 20 77 68 69 63 68 20 63 6f 6d 6d 69  n on which commi
3a00: 74 73 20 6f 63 63 75 72 72 65 64 2e 0a 20 20 20  ts occurred..   
3a10: 20 23 20 54 68 69 73 20 64 65 70 65 6e 64 65 6e   # This dependen
3a20: 63 79 20 69 73 20 6b 65 70 74 20 65 78 70 6c 69  cy is kept expli
3a30: 63 69 74 6c 79 20 62 65 63 61 75 73 65 20 6f 74  citly because ot
3a40: 68 65 72 77 69 73 65 20 61 0a 20 20 20 20 23 20  herwise a.    # 
3a50: 72 65 76 69 73 69 6f 6e 2d 6f 6e 6c 79 20 74 6f  revision-only to
3a60: 70 6f 6c 6f 67 69 63 61 6c 20 73 6f 72 74 20 77  pological sort w
3a70: 6f 75 6c 64 20 6d 69 73 73 20 74 68 65 20 64 65  ould miss the de
3a80: 70 65 6e 64 65 6e 63 79 20 74 68 61 74 0a 20 20  pendency that.  
3a90: 20 20 23 20 65 78 69 73 74 73 20 76 69 61 20 2d    # exists via -
3aa0: 3e 20 6d 79 62 72 61 6e 63 68 65 73 2e 0a 0a 20  > mybranches... 
3ab0: 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 62 72     variable mybr
3ac0: 61 6e 63 68 63 68 69 6c 64 72 65 6e 20 7b 7d 20  anchchildren {} 
3ad0: 3b 20 23 20 4c 69 73 74 20 6f 66 20 74 68 65 20  ; # List of the 
3ae0: 72 65 76 69 73 69 6f 6e 73 20 28 6f 62 6a 73 29  revisions (objs)
3af0: 20 77 68 69 63 68 20 61 72 65 20 74 68 65 20 66   which are the f
3b00: 69 72 73 74 0a 20 20 20 20 23 20 20 20 20 20 20  irst.    #      
3b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b20: 20 20 20 20 20 20 3b 20 23 20 63 6f 6d 6d 69 74        ; # commit
3b30: 73 20 6f 6e 20 61 6e 79 20 6f 66 20 74 68 65 20  s on any of the 
3b40: 62 72 61 6e 63 68 65 73 20 73 70 61 77 6e 65 64  branches spawned
3b50: 20 66 72 6f 6d 20 74 68 69 73 0a 20 20 20 20 23   from this.    #
3b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b70: 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 20              ; # 
3b80: 72 65 76 69 73 69 6f 6e 2e 20 54 68 65 20 64 65  revision. The de
3b90: 70 65 6e 64 65 6e 63 79 20 69 73 20 6b 65 70 74  pendency is kept
3ba0: 20 65 78 70 6c 69 63 69 74 6c 79 20 74 6f 0a 20   explicitly to. 
3bb0: 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20     #            
3bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3bd0: 3b 20 23 20 65 6e 73 75 72 65 20 74 68 61 74 20  ; # ensure that 
3be0: 61 20 72 65 76 69 73 69 6f 6e 2d 6f 6e 6c 79 20  a revision-only 
3bf0: 74 6f 70 6f 6c 6f 67 69 63 61 6c 20 73 6f 72 74  topological sort
3c00: 20 77 69 6c 6c 0a 20 20 20 20 23 20 20 20 20 20   will.    #     
3c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c20: 20 20 20 20 20 20 20 3b 20 23 20 6e 6f 74 20 6d         ; # not m
3c30: 69 73 73 20 69 74 2c 20 61 73 20 69 74 20 6f 74  iss it, as it ot
3c40: 68 65 72 77 69 73 65 20 65 78 69 73 74 73 20 6f  herwise exists o
3c50: 6e 6c 79 20 76 69 61 0a 20 20 20 20 23 20 20 20  nly via.    #   
3c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c70: 20 20 20 20 20 20 20 20 20 3b 20 23 20 6d 79 62           ; # myb
3c80: 72 61 6e 63 68 65 73 2e 0a 0a 20 20 20 20 23 20  ranches...    # 
3c90: 54 61 67 20 6c 69 6e 6b 61 67 65 20 5f 5f 5f 5f  Tag linkage ____
3ca0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
3cb0: 5f 5f 5f 5f 0a 0a 20 20 20 20 76 61 72 69 61 62  ____..    variab
3cc0: 6c 65 20 6d 79 74 61 67 73 20 7b 7d 20 3b 20 23  le mytags {} ; #
3cd0: 20 4c 69 73 74 20 6f 66 20 74 61 67 73 20 28 6f   List of tags (o
3ce0: 62 6a 73 29 20 61 73 73 6f 63 69 61 74 65 64 20  bjs) associated 
3cf0: 77 69 74 68 20 74 68 69 73 20 72 65 76 69 73 69  with this revisi
3d00: 6f 6e 2e 0a 0a 20 20 20 20 23 20 4d 6f 72 65 20  on...    # More 
3d10: 64 65 72 69 76 65 64 20 64 61 74 61 0a 0a 20 20  derived data..  
3d20: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 6f 70 65    variable myope
3d30: 72 61 74 69 6f 6e 20 20 20 20 20 20 20 20 7b 7d  ration        {}
3d40: 20 3b 20 23 20 4f 6e 65 20 6f 66 20 27 61 64 64   ; # One of 'add
3d50: 27 2c 20 27 63 68 61 6e 67 65 27 2c 20 27 64 65  ', 'change', 'de
3d60: 6c 65 74 65 27 2c 20 6f 72 0a 09 09 09 20 20 20  lete', or....   
3d70: 20 20 20 20 20 20 20 20 20 20 23 20 27 6e 6f 74            # 'not
3d80: 68 69 6e 67 27 2e 20 44 65 72 69 76 65 64 20 66  hing'. Derived f
3d90: 72 6f 6d 20 6f 75 72 20 61 6e 64 0a 09 09 09 20  rom our and.... 
3da0: 20 20 20 20 20 20 20 20 20 20 20 20 23 20 69 74              # it
3db0: 73 20 70 61 72 65 6e 74 27 73 20 73 74 61 74 65  s parent's state
3dc0: 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d  ..    variable m
3dd0: 79 69 73 6f 6e 64 65 66 61 75 6c 74 62 72 61 6e  yisondefaultbran
3de0: 63 68 20 30 20 3b 20 23 20 42 6f 6f 6c 65 61 6e  ch 0 ; # Boolean
3df0: 20 66 6c 61 67 2c 20 73 65 74 20 69 66 20 74 68   flag, set if th
3e00: 65 0a 09 09 09 09 20 20 20 20 20 23 20 72 65 76  e.....     # rev
3e10: 69 73 69 6f 6e 20 69 73 20 6f 6e 20 74 68 65 20  ision is on the 
3e20: 6e 6f 6e 2d 74 72 75 6e 6b 0a 09 09 09 09 20 20  non-trunk.....  
3e30: 20 20 20 23 20 64 65 66 61 75 6c 74 20 62 72 61     # default bra
3e40: 6e 63 68 2c 20 61 6b 61 20 76 65 6e 64 6f 72 0a  nch, aka vendor.
3e50: 09 09 09 09 20 20 20 20 20 23 20 62 72 61 6e 63  ....     # branc
3e60: 68 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  h..    variable 
3e70: 6d 79 64 62 70 61 72 65 6e 74 20 20 20 20 20 20  mydbparent      
3e80: 20 20 20 7b 7d 20 3b 20 23 20 52 65 66 65 72 65     {} ; # Refere
3e90: 6e 63 65 20 74 6f 20 74 68 65 20 6c 61 73 74 20  nce to the last 
3ea0: 72 65 76 69 73 69 6f 6e 0a 09 09 09 09 20 20 20  revision.....   
3eb0: 20 20 23 20 6f 6e 20 74 68 65 20 76 65 6e 64 6f    # on the vendo
3ec0: 72 20 62 72 61 6e 63 68 20 69 66 20 74 68 69 73  r branch if this
3ed0: 20 69 73 0a 09 09 09 09 20 20 20 20 20 23 20 74   is.....     # t
3ee0: 68 65 20 70 72 69 6d 61 72 79 20 63 68 69 6c 64  he primary child
3ef0: 20 6f 66 20 74 68 65 0a 09 09 09 09 20 20 20 20   of the.....    
3f00: 20 23 20 72 65 67 75 6c 61 72 20 72 6f 6f 74 2e   # regular root.
3f10: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79  .    variable my
3f20: 64 62 63 68 69 6c 64 20 20 20 20 20 20 20 20 20  dbchild         
3f30: 20 7b 7d 20 3b 20 23 20 52 65 66 65 72 65 6e 63   {} ; # Referenc
3f40: 65 20 74 6f 20 74 68 65 20 70 72 69 6d 61 72 79  e to the primary
3f50: 20 63 68 69 6c 64 0a 09 09 09 09 20 20 20 20 20   child.....     
3f60: 23 20 6f 66 20 74 68 65 20 72 65 67 75 6c 61 72  # of the regular
3f70: 20 72 6f 6f 74 20 69 66 20 74 68 69 73 20 69 73   root if this is
3f80: 0a 09 09 09 09 20 20 20 20 20 23 20 74 68 65 20  .....     # the 
3f90: 6c 61 73 74 20 72 65 76 69 73 69 6f 6e 20 6f 6e  last revision on
3fa0: 20 74 68 65 20 76 65 6e 64 6f 72 0a 09 09 09 09   the vendor.....
3fb0: 20 20 20 20 20 23 20 62 72 61 6e 63 68 2e 0a 0a       # branch...
3fc0: 20 20 20 20 23 20 64 65 61 64 28 73 65 6c 66 29      # dead(self)
3fd0: 20 78 20 64 65 61 64 28 70 61 72 65 6e 74 29 20   x dead(parent) 
3fe0: 2d 3e 20 6f 70 65 72 61 74 69 6f 6e 0a 20 20 20  -> operation.   
3ff0: 20 74 79 70 65 76 61 72 69 61 62 6c 65 20 6d 79   typevariable my
4000: 6f 70 73 74 61 74 65 20 2d 61 72 72 61 79 20 7b  opstate -array {
4010: 0a 09 7b 30 20 30 7d 20 63 68 61 6e 67 65 0a 09  ..{0 0} change..
4020: 7b 30 20 31 7d 20 64 65 6c 65 74 65 0a 09 7b 31  {0 1} delete..{1
4030: 20 30 7d 20 61 64 64 0a 09 7b 31 20 31 7d 20 6e   0} add..{1 1} n
4040: 6f 74 68 69 6e 67 0a 20 20 20 20 7d 0a 0a 20 20  othing.    }..  
4050: 20 20 74 79 70 65 6d 65 74 68 6f 64 20 67 65 74    typemethod get
4060: 6f 70 63 6f 64 65 73 20 7b 7d 20 7b 0a 09 66 6f  opcodes {} {..fo
4070: 72 65 61 63 68 20 7b 69 64 20 6e 61 6d 65 7d 20  reach {id name} 
4080: 5b 73 74 61 74 65 20 72 75 6e 20 7b 0a 09 20 20  [state run {..  
4090: 20 20 53 45 4c 45 43 54 20 6f 69 64 2c 20 6e 61    SELECT oid, na
40a0: 6d 65 20 46 52 4f 4d 20 6f 70 74 79 70 65 3b 0a  me FROM optype;.
40b0: 09 7d 5d 20 7b 20 73 65 74 20 6d 79 6f 70 63 6f  .}] { set myopco
40c0: 64 65 28 24 6e 61 6d 65 29 20 24 69 64 20 7d 0a  de($name) $id }.
40d0: 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20  .return.    }.. 
40e0: 20 20 20 74 79 70 65 76 61 72 69 61 62 6c 65 20     typevariable 
40f0: 6d 79 6f 70 63 6f 64 65 20 2d 61 72 72 61 79 20  myopcode -array 
4100: 7b 7d 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23  {}..    # # ## #
4110: 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23  ## ##### #######
4120: 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  # #############.
4130: 20 20 20 20 23 23 20 49 6e 74 65 72 6e 61 6c 20      ## Internal 
4140: 6d 65 74 68 6f 64 73 0a 0a 20 20 20 20 23 20 23  methods..    # #
4150: 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23   ## ### ##### ##
4160: 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23  ###### #########
4170: 23 23 23 23 0a 20 20 20 20 23 23 20 43 6f 6e 66  ####.    ## Conf
4180: 69 67 75 72 61 74 69 6f 6e 0a 0a 20 20 20 20 70  iguration..    p
4190: 72 61 67 6d 61 20 2d 68 61 73 74 79 70 65 69 6e  ragma -hastypein
41a0: 66 6f 20 20 20 20 6e 6f 20 20 3b 20 23 20 6e 6f  fo    no  ; # no
41b0: 20 74 79 70 65 20 69 6e 74 72 6f 73 70 65 63 74   type introspect
41c0: 69 6f 6e 0a 20 20 20 20 70 72 61 67 6d 61 20 2d  ion.    pragma -
41d0: 68 61 73 69 6e 66 6f 20 20 20 20 20 20 20 20 6e  hasinfo        n
41e0: 6f 20 20 3b 20 23 20 6e 6f 20 6f 62 6a 65 63 74  o  ; # no object
41f0: 20 69 6e 74 72 6f 73 70 65 63 74 69 6f 6e 0a 20   introspection. 
4200: 20 20 20 70 72 61 67 6d 61 20 2d 73 69 6d 70 6c     pragma -simpl
4210: 65 64 69 73 70 61 74 63 68 20 79 65 73 20 3b 20  edispatch yes ; 
4220: 23 20 73 69 6d 70 6c 65 20 66 61 73 74 20 64 69  # simple fast di
4230: 73 70 61 74 63 68 0a 0a 20 20 20 20 23 20 23 20  spatch..    # # 
4240: 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23  ## ### ##### ###
4250: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23  ##### ##########
4260: 23 23 23 0a 7d 0a 0a 6e 61 6d 65 73 70 61 63 65  ###.}..namespace
4270: 20 65 76 61 6c 20 3a 3a 76 63 3a 3a 66 6f 73 73   eval ::vc::foss
4280: 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a  il::import::cvs:
4290: 3a 66 69 6c 65 20 7b 0a 20 20 20 20 6e 61 6d 65  :file {.    name
42a0: 73 70 61 63 65 20 65 78 70 6f 72 74 20 72 65 76  space export rev
42b0: 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65  .    namespace e
42c0: 76 61 6c 20 72 65 76 20 7b 0a 09 6e 61 6d 65 73  val rev {..names
42d0: 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63  pace import ::vc
42e0: 3a 3a 74 6f 6f 6c 73 3a 3a 6d 69 73 63 3a 3a 2a  ::tools::misc::*
42f0: 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f  ..namespace impo
4300: 72 74 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a  rt ::vc::fossil:
4310: 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 73 74  :import::cvs::st
4320: 61 74 65 0a 20 20 20 20 7d 0a 7d 0a 0a 23 20 23  ate.    }.}..# #
4330: 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23   ## ### ##### ##
4340: 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23  ###### #########
4350: 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23  #### ###########
4360: 23 23 23 23 23 23 23 23 23 23 0a 23 23 20 52 65  ##########.## Re
4370: 61 64 79 0a 0a 70 61 63 6b 61 67 65 20 70 72 6f  ady..package pro
4380: 76 69 64 65 20 76 63 3a 3a 66 6f 73 73 69 6c 3a  vide vc::fossil:
4390: 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 66 69  :import::cvs::fi
43a0: 6c 65 3a 3a 72 65 76 20 31 2e 30 0a 72 65 74 75  le::rev 1.0.retu
43b0: 72 6e 0a                                         rn.