Hex Artifact Content
Not logged in

Artifact 590fdb0ca9f8cc8e60eb35b66f62714f920f2ca1:

File tools/cvs2fossil/lib/c2f_frev.tcl part of check-in [886b6f257b] - Added code able to exclude all non-trunk revisions upon user request. by aku on 2007-10-21 06:10:13.

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 6d  mydate  }..    m
06b0: 65 74 68 6f 64 20 69 73 6e 65 65 64 65 64 20 7b  ethod isneeded {
06c0: 7d 20 7b 0a 09 69 66 20 7b 24 6d 79 6f 70 65 72  } {..if {$myoper
06d0: 61 74 69 6f 6e 20 6e 65 20 22 6e 6f 74 68 69 6e  ation ne "nothin
06e0: 67 22 7d 20 20 20 20 20 20 20 20 20 7b 72 65 74  g"}         {ret
06f0: 75 72 6e 20 31 7d 0a 09 69 66 20 7b 24 6d 79 72  urn 1}..if {$myr
0700: 65 76 6e 72 20 6e 65 20 22 31 2e 31 22 7d 20 20  evnr ne "1.1"}  
0710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
0720: 72 65 74 75 72 6e 20 31 7d 0a 09 69 66 20 7b 21  return 1}..if {!
0730: 5b 24 6d 79 6c 6f 64 20 69 73 74 72 75 6e 6b 5d  [$mylod istrunk]
0740: 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }               
0750: 20 20 7b 72 65 74 75 72 6e 20 31 7d 0a 09 69 66    {return 1}..if
0760: 20 7b 21 5b 6c 6c 65 6e 67 74 68 20 24 6d 79 62   {![llength $myb
0770: 72 61 6e 63 68 65 73 5d 7d 20 20 20 20 20 20 20  ranches]}       
0780: 20 20 20 20 20 7b 72 65 74 75 72 6e 20 31 7d 0a       {return 1}.
0790: 09 73 65 74 20 66 69 72 73 74 62 72 61 6e 63 68  .set firstbranch
07a0: 20 5b 6c 69 6e 64 65 78 20 24 6d 79 62 72 61 6e   [lindex $mybran
07b0: 63 68 65 73 20 30 5d 0a 09 69 66 20 7b 21 5b 24  ches 0]..if {![$
07c0: 66 69 72 73 74 62 72 61 6e 63 68 20 68 61 73 63  firstbranch hasc
07d0: 68 69 6c 64 5d 7d 20 20 20 20 20 20 20 20 20 20  hild]}          
07e0: 7b 72 65 74 75 72 6e 20 31 7d 0a 09 69 66 20 7b  {return 1}..if {
07f0: 24 6d 79 69 73 6f 6e 64 65 66 61 75 6c 74 62 72  $myisondefaultbr
0800: 61 6e 63 68 7d 20 20 20 20 20 20 20 20 20 20 20  anch}           
0810: 20 20 20 7b 72 65 74 75 72 6e 20 31 7d 0a 0a 09     {return 1}...
0820: 23 20 46 49 58 3a 20 54 68 69 73 20 6d 65 73 73  # FIX: This mess
0830: 61 67 65 20 77 69 6c 6c 20 6e 6f 74 20 6d 61 74  age will not mat
0840: 63 68 20 69 66 20 74 68 65 20 52 43 53 20 66 69  ch if the RCS fi
0850: 6c 65 20 77 61 73 20 72 65 6e 61 6d 65 64 0a 09  le was renamed..
0860: 23 20 6d 61 6e 75 61 6c 6c 79 20 61 66 74 65 72  # manually after
0870: 20 69 74 20 77 61 73 20 63 72 65 61 74 65 64 2e   it was created.
0880: 0a 0a 09 73 65 74 20 67 65 6e 20 22 66 69 6c 65  ...set gen "file
0890: 20 5b 66 69 6c 65 20 74 61 69 6c 20 5b 24 6d 79   [file tail [$my
08a0: 66 69 6c 65 20 75 73 72 70 61 74 68 5d 5d 20 77  file usrpath]] w
08b0: 61 73 20 69 6e 69 74 69 61 6c 6c 79 20 61 64 64  as initially add
08c0: 65 64 20 6f 6e 20 62 72 61 6e 63 68 20 5b 24 66  ed on branch [$f
08d0: 69 72 73 74 62 72 61 6e 63 68 20 6e 61 6d 65 5d  irstbranch name]
08e0: 2e 22 0a 09 73 65 74 20 6c 6f 67 20 5b 24 6d 79  ."..set log [$my
08f0: 66 69 6c 65 20 63 6f 6d 6d 69 74 6d 65 73 73 61  file commitmessa
0900: 67 65 6f 66 20 24 6d 79 6d 65 74 61 69 64 5d 0a  geof $mymetaid].
0910: 0a 09 72 65 74 75 72 6e 20 5b 65 78 70 72 20 7b  ..return [expr {
0920: 24 6c 6f 67 20 6e 65 20 24 67 65 6e 7d 5d 0a 20  $log ne $gen}]. 
0930: 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64     }..    method
0940: 20 69 73 6e 65 65 64 65 64 62 72 61 6e 63 68 64   isneededbranchd
0950: 65 6c 20 7b 7d 20 7b 0a 09 69 66 20 7b 24 6d 79  el {} {..if {$my
0960: 70 61 72 65 6e 74 62 72 61 6e 63 68 20 65 71 20  parentbranch eq 
0970: 22 22 7d 20 20 20 20 20 20 20 20 20 20 20 7b 72  ""}           {r
0980: 65 74 75 72 6e 20 31 7d 20 3b 20 23 20 6e 6f 74  eturn 1} ; # not
0990: 20 66 69 72 73 74 20 6f 6e 20 61 20 62 72 61 6e   first on a bran
09a0: 63 68 2c 20 6e 65 65 64 65 64 0a 09 73 65 74 20  ch, needed..set 
09b0: 62 61 73 65 20 5b 24 6d 79 70 61 72 65 6e 74 62  base [$myparentb
09c0: 72 61 6e 63 68 20 70 61 72 65 6e 74 5d 0a 09 69  ranch parent]..i
09d0: 66 20 7b 24 62 61 73 65 20 20 20 20 20 20 20 20  f {$base        
09e0: 20 20 20 65 71 20 22 22 7d 20 20 20 20 20 20 20     eq ""}       
09f0: 20 20 20 20 7b 72 65 74 75 72 6e 20 31 7d 20 3b      {return 1} ;
0a00: 20 23 20 62 72 61 6e 63 68 20 68 61 73 20 70 61   # branch has pa
0a10: 72 65 6e 74 20 6c 6f 64 2c 20 6e 65 65 64 65 64  rent lod, needed
0a20: 0a 09 69 66 20 7b 5b 24 73 65 6c 66 20 4c 4f 44  ..if {[$self LOD
0a30: 4c 65 6e 67 74 68 5d 20 3c 20 32 7d 20 20 20 20  Length] < 2}    
0a40: 20 20 20 20 20 20 20 7b 72 65 74 75 72 6e 20 31         {return 1
0a50: 7d 20 3b 20 23 20 6f 75 72 20 6c 6f 64 20 63 6f  } ; # our lod co
0a60: 6e 74 61 69 6e 73 20 6f 6e 6c 79 20 6f 75 72 73  ntains only ours
0a70: 65 6c 76 65 73 2c 20 6e 65 65 64 65 64 2e 0a 09  elves, needed...
0a80: 69 66 20 7b 24 6d 79 6f 70 65 72 61 74 69 6f 6e  if {$myoperation
0a90: 20 6e 65 20 22 64 65 6c 65 74 65 22 7d 20 20 20   ne "delete"}   
0aa0: 20 20 20 20 20 7b 72 65 74 75 72 6e 20 31 7d 20       {return 1} 
0ab0: 3b 20 23 20 4e 6f 74 20 61 20 64 65 6c 65 74 69  ; # Not a deleti
0ac0: 6f 6e 2c 20 6e 65 65 64 65 64 0a 09 69 66 20 7b  on, needed..if {
0ad0: 5b 6c 6c 65 6e 67 74 68 20 24 6d 79 74 61 67 73  [llength $mytags
0ae0: 5d 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ]}              
0af0: 20 7b 72 65 74 75 72 6e 20 31 7d 20 3b 20 23 20   {return 1} ; # 
0b00: 48 61 76 65 20 74 61 67 73 2c 20 6e 65 65 64 65  Have tags, neede
0b10: 64 0a 09 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20  d..if {[llength 
0b20: 24 6d 79 62 72 61 6e 63 68 65 73 5d 7d 20 20 20  $mybranches]}   
0b30: 20 20 20 20 20 20 20 20 7b 72 65 74 75 72 6e 20          {return 
0b40: 31 7d 20 3b 20 23 20 48 61 76 65 20 6f 74 68 65  1} ; # Have othe
0b50: 72 20 62 72 61 6e 63 68 65 73 2c 20 6e 65 65 64  r branches, need
0b60: 65 64 0a 09 69 66 20 7b 61 62 73 28 24 6d 79 64  ed..if {abs($myd
0b70: 61 74 65 20 2d 20 5b 24 62 61 73 65 20 64 61 74  ate - [$base dat
0b80: 65 5d 29 20 3e 20 32 7d 20 7b 72 65 74 75 72 6e  e]) > 2} {return
0b90: 20 31 7d 20 3b 20 23 20 4e 65 78 74 20 72 65 76   1} ; # Next rev
0ba0: 20 3e 20 32 20 73 65 63 6f 6e 64 73 20 61 70 61   > 2 seconds apa
0bb0: 72 74 2c 20 6e 65 65 64 65 64 0a 0a 20 20 20 20  rt, needed..    
0bc0: 20 20 20 20 23 20 46 49 58 4d 45 3a 20 54 68 69      # FIXME: Thi
0bd0: 73 20 6d 65 73 73 61 67 65 20 77 69 6c 6c 20 6e  s message will n
0be0: 6f 74 20 6d 61 74 63 68 20 69 66 20 74 68 65 20  ot match if the 
0bf0: 52 43 53 20 66 69 6c 65 20 77 61 73 0a 20 20 20  RCS file was.   
0c00: 20 20 20 20 20 23 20 72 65 6e 61 6d 65 64 20 6d       # renamed m
0c10: 61 6e 75 61 6c 6c 79 20 61 66 74 65 72 20 69 74  anually after it
0c20: 20 77 61 73 20 63 72 65 61 74 65 64 2e 0a 0a 09   was created....
0c30: 73 65 74 20 71 66 69 6c 65 20 5b 73 74 72 69 6e  set qfile [strin
0c40: 67 20 6d 61 70 20 7b 0a 09 20 20 20 20 2e 20 20  g map {..    .  
0c50: 5c 5c 2e 20 20 3f 20 20 5c 5c 3f 20 20 2a 20 20  \\.  ?  \\?  *  
0c60: 5c 5c 2a 20 20 5c 5c 20 5c 5c 5c 5c 20 2b 20 20  \\*  \\ \\\\ +  
0c70: 5c 5c 2b 20 20 5e 20 5c 5c 5e 20 24 20 5c 5c 24  \\+  ^ \\^ $ \\$
0c80: 0a 09 20 20 20 20 5c 5b 20 5c 5c 5c 5b 20 5c 5d  ..    \[ \\\[ \]
0c90: 20 5c 5c 5c 5d 20 28 20 20 5c 5c 28 20 20 20 29   \\\] (  \\(   )
0ca0: 20 5c 5c 29 20 20 5c 7b 20 5c 5c 5c 7b 20 5c 7d   \\)  \{ \\\{ \}
0cb0: 20 5c 5c 5c 7d 0a 09 7d 20 5b 66 69 6c 65 20 74   \\\}..} [file t
0cc0: 61 69 6c 20 5b 24 6d 79 66 69 6c 65 20 75 73 72  ail [$myfile usr
0cd0: 70 61 74 68 5d 5d 5d 0a 09 73 65 74 20 70 61 74  path]]]..set pat
0ce0: 74 65 72 6e 20 22 66 69 6c 65 20 24 71 66 69 6c  tern "file $qfil
0cf0: 65 20 77 61 73 20 61 64 64 65 64 20 6f 6e 20 62  e was added on b
0d00: 72 61 6e 63 68 20 2e 2a 20 6f 6e 20 5c 5c 64 7b  ranch .* on \\d{
0d10: 34 7d 2d 5c 5c 64 7b 32 7d 2d 5c 5c 64 7b 32 7d  4}-\\d{2}-\\d{2}
0d20: 20 5c 5c 64 7b 32 7d 3a 5c 5c 64 7b 32 7d 3a 5c   \\d{2}:\\d{2}:\
0d30: 5c 64 7b 32 7d 28 20 5c 5b 2b 2d 5c 5d 5c 5c 64  \d{2}( \[+-\]\\d
0d40: 7b 34 7d 29 3f 22 0a 09 73 65 74 20 6c 6f 67 20  {4})?"..set log 
0d50: 20 20 20 20 5b 24 6d 79 66 69 6c 65 20 63 6f 6d      [$myfile com
0d60: 6d 69 74 6d 65 73 73 61 67 65 6f 66 20 24 6d 79  mitmessageof $my
0d70: 6d 65 74 61 69 64 5d 0a 0a 09 23 20 4e 6f 74 20  metaid]...# Not 
0d80: 74 68 65 20 73 70 65 63 69 61 6c 20 6d 65 73 73  the special mess
0d90: 61 67 65 2c 20 6e 65 65 64 65 64 0a 09 69 66 20  age, needed..if 
0da0: 7b 21 5b 72 65 67 65 78 70 20 2d 2d 20 24 70 61  {![regexp -- $pa
0db0: 74 74 65 72 6e 20 24 6c 6f 67 5d 7d 20 7b 72 65  ttern $log]} {re
0dc0: 74 75 72 6e 20 31 7d 0a 0a 09 23 20 54 68 69 73  turn 1}...# This
0dd0: 20 69 73 20 61 6e 20 75 6e 6e 65 65 64 65 64 20   is an unneeded 
0de0: 69 6e 69 74 69 61 6c 20 62 72 61 6e 63 68 20 64  initial branch d
0df0: 65 6c 65 74 65 2e 0a 09 72 65 74 75 72 6e 20 30  elete...return 0
0e00: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68  .    }..    meth
0e10: 6f 64 20 4c 4f 44 4c 65 6e 67 74 68 20 7b 7d 20  od LODLength {} 
0e20: 7b 0a 09 73 65 74 20 6e 20 31 20 3b 20 23 20 63  {..set n 1 ; # c
0e30: 6f 75 6e 74 20 73 65 6c 66 0a 09 73 65 74 20 72  ount self..set r
0e40: 65 76 20 24 6d 79 63 68 69 6c 64 0a 09 77 68 69  ev $mychild..whi
0e50: 6c 65 20 7b 24 72 65 76 20 6e 65 20 22 22 7d 20  le {$rev ne ""} 
0e60: 7b 0a 09 20 20 20 20 69 6e 63 72 20 6e 0a 09 20  {..    incr n.. 
0e70: 20 20 20 73 65 74 20 72 65 76 20 5b 24 72 65 76     set rev [$rev
0e80: 20 63 68 69 6c 64 5d 0a 09 7d 0a 09 72 65 74 75   child]..}..retu
0e90: 72 6e 20 24 6e 0a 20 20 20 20 7d 0a 0a 20 20 20  rn $n.    }..   
0ea0: 20 23 20 42 61 73 69 63 20 70 61 72 65 6e 74 2f   # Basic parent/
0eb0: 63 68 69 6c 64 20 6c 69 6e 6b 61 67 65 20 5f 5f  child linkage __
0ec0: 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20 20 6d 65  ________..    me
0ed0: 74 68 6f 64 20 68 61 73 70 61 72 65 6e 74 20 7b  thod hasparent {
0ee0: 7d 20 7b 20 72 65 74 75 72 6e 20 5b 65 78 70 72  } { return [expr
0ef0: 20 7b 24 6d 79 70 61 72 65 6e 74 20 6e 65 20 22   {$myparent ne "
0f00: 22 7d 5d 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64  "}] }.    method
0f10: 20 68 61 73 63 68 69 6c 64 20 20 7b 7d 20 7b 20   haschild  {} { 
0f20: 72 65 74 75 72 6e 20 5b 65 78 70 72 20 7b 24 6d  return [expr {$m
0f30: 79 63 68 69 6c 64 20 20 6e 65 20 22 22 7d 5d 20  ychild  ne ""}] 
0f40: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 65  }..    method se
0f50: 74 70 61 72 65 6e 74 20 7b 70 61 72 65 6e 74 7d  tparent {parent}
0f60: 20 7b 0a 09 69 66 20 7b 24 6d 79 70 61 72 65 6e   {..if {$myparen
0f70: 74 20 6e 65 20 22 22 7d 20 7b 20 74 72 6f 75 62  t ne ""} { troub
0f80: 6c 65 20 69 6e 74 65 72 6e 61 6c 20 22 50 61 72  le internal "Par
0f90: 65 6e 74 20 61 6c 72 65 61 64 79 20 64 65 66 69  ent already defi
0fa0: 6e 65 64 22 20 7d 0a 09 73 65 74 20 6d 79 70 61  ned" }..set mypa
0fb0: 72 65 6e 74 20 24 70 61 72 65 6e 74 0a 09 72 65  rent $parent..re
0fc0: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20  turn.    }..    
0fd0: 6d 65 74 68 6f 64 20 63 75 74 66 72 6f 6d 70 61  method cutfrompa
0fe0: 72 65 6e 74 20 7b 7d 20 7b 20 73 65 74 20 6d 79  rent {} { set my
0ff0: 70 61 72 65 6e 74 20 22 22 20 3b 20 72 65 74 75  parent "" ; retu
1000: 72 6e 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20  rn }.    method 
1010: 63 75 74 66 72 6f 6d 63 68 69 6c 64 20 20 7b 7d  cutfromchild  {}
1020: 20 7b 20 73 65 74 20 6d 79 63 68 69 6c 64 20 20   { set mychild  
1030: 22 22 20 3b 20 72 65 74 75 72 6e 20 7d 0a 0a 20  "" ; return }.. 
1040: 20 20 20 6d 65 74 68 6f 64 20 73 65 74 63 68 69     method setchi
1050: 6c 64 20 7b 63 68 69 6c 64 7d 20 7b 0a 09 69 66  ld {child} {..if
1060: 20 7b 24 6d 79 63 68 69 6c 64 20 6e 65 20 22 22   {$mychild ne ""
1070: 7d 20 7b 20 74 72 6f 75 62 6c 65 20 69 6e 74 65  } { trouble inte
1080: 72 6e 61 6c 20 22 43 68 69 6c 64 20 61 6c 72 65  rnal "Child alre
1090: 61 64 79 20 64 65 66 69 6e 65 64 22 20 7d 0a 09  ady defined" }..
10a0: 73 65 74 20 6d 79 63 68 69 6c 64 20 24 63 68 69  set mychild $chi
10b0: 6c 64 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d  ld..return.    }
10c0: 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 70 61 72  ..    method par
10d0: 65 6e 74 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20  ent {} { return 
10e0: 24 6d 79 70 61 72 65 6e 74 20 7d 0a 20 20 20 20  $myparent }.    
10f0: 6d 65 74 68 6f 64 20 63 68 69 6c 64 20 20 7b 7d  method child  {}
1100: 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 63 68 69   { return $mychi
1110: 6c 64 20 20 7d 0a 0a 20 20 20 20 23 20 42 72 61  ld  }..    # Bra
1120: 6e 63 68 20 6c 69 6e 6b 61 67 65 20 5f 5f 5f 5f  nch linkage ____
1130: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1140: 5f 5f 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 73  __..    method s
1150: 65 74 70 61 72 65 6e 74 62 72 61 6e 63 68 20 7b  etparentbranch {
1160: 62 72 61 6e 63 68 7d 20 7b 0a 09 69 66 20 7b 24  branch} {..if {$
1170: 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 68 20 6e  myparentbranch n
1180: 65 20 22 22 7d 20 7b 20 74 72 6f 75 62 6c 65 20  e ""} { trouble 
1190: 69 6e 74 65 72 6e 61 6c 20 22 42 72 61 6e 63 68  internal "Branch
11a0: 20 70 61 72 65 6e 74 20 61 6c 72 65 61 64 79 20   parent already 
11b0: 64 65 66 69 6e 65 64 22 20 7d 0a 09 73 65 74 20  defined" }..set 
11c0: 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 68 20 24  myparentbranch $
11d0: 62 72 61 6e 63 68 0a 09 72 65 74 75 72 6e 0a 20  branch..return. 
11e0: 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64     }..    method
11f0: 20 68 61 73 70 61 72 65 6e 74 62 72 61 6e 63 68   hasparentbranch
1200: 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 5b 65 78   {} { return [ex
1210: 70 72 20 7b 24 6d 79 70 61 72 65 6e 74 62 72 61  pr {$myparentbra
1220: 6e 63 68 20 6e 65 20 22 22 7d 5d 20 7d 0a 20 20  nch ne ""}] }.  
1230: 20 20 6d 65 74 68 6f 64 20 68 61 73 62 72 61 6e    method hasbran
1240: 63 68 65 73 20 20 20 20 20 7b 7d 20 7b 20 72 65  ches     {} { re
1250: 74 75 72 6e 20 5b 6c 6c 65 6e 67 74 68 20 24 6d  turn [llength $m
1260: 79 62 72 61 6e 63 68 65 73 5d 20 7d 0a 0a 20 20  ybranches] }..  
1270: 20 20 6d 65 74 68 6f 64 20 70 61 72 65 6e 74 62    method parentb
1280: 72 61 6e 63 68 20 7b 7d 20 7b 20 72 65 74 75 72  ranch {} { retur
1290: 6e 20 24 6d 79 70 61 72 65 6e 74 62 72 61 6e 63  n $myparentbranc
12a0: 68 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 62  h }.    method b
12b0: 72 61 6e 63 68 65 73 20 20 20 20 20 7b 7d 20 7b  ranches     {} {
12c0: 20 72 65 74 75 72 6e 20 24 6d 79 62 72 61 6e 63   return $mybranc
12d0: 68 65 73 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f  hes }..    metho
12e0: 64 20 61 64 64 62 72 61 6e 63 68 20 7b 62 72 61  d addbranch {bra
12f0: 6e 63 68 7d 20 7b 0a 09 6c 61 70 70 65 6e 64 20  nch} {..lappend 
1300: 6d 79 62 72 61 6e 63 68 65 73 20 24 62 72 61 6e  mybranches $bran
1310: 63 68 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d  ch..return.    }
1320: 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 61 64 64  ..    method add
1330: 63 68 69 6c 64 6f 6e 62 72 61 6e 63 68 20 7b 63  childonbranch {c
1340: 68 69 6c 64 7d 20 7b 0a 09 6c 61 70 70 65 6e 64  hild} {..lappend
1350: 20 6d 79 62 72 61 6e 63 68 63 68 69 6c 64 72 65   mybranchchildre
1360: 6e 20 24 63 68 69 6c 64 0a 09 72 65 74 75 72 6e  n $child..return
1370: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68  .    }..    meth
1380: 6f 64 20 63 75 74 66 72 6f 6d 70 61 72 65 6e 74  od cutfromparent
1390: 62 72 61 6e 63 68 20 7b 7d 20 7b 20 73 65 74 20  branch {} { set 
13a0: 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 68 20 22  myparentbranch "
13b0: 22 20 3b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20  " ; return }..  
13c0: 20 20 6d 65 74 68 6f 64 20 72 65 6d 6f 76 65 62    method removeb
13d0: 72 61 6e 63 68 20 7b 62 72 61 6e 63 68 7d 20 7b  ranch {branch} {
13e0: 0a 09 6c 64 65 6c 65 74 65 20 6d 79 62 72 61 6e  ..ldelete mybran
13f0: 63 68 65 73 20 24 62 72 61 6e 63 68 0a 09 72 65  ches $branch..re
1400: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20  turn.    }..    
1410: 6d 65 74 68 6f 64 20 72 65 6d 6f 76 65 63 68 69  method removechi
1420: 6c 64 6f 6e 62 72 61 6e 63 68 20 7b 72 65 76 7d  ldonbranch {rev}
1430: 20 7b 0a 09 6c 64 65 6c 65 74 65 20 6d 79 62 72   {..ldelete mybr
1440: 61 6e 63 68 63 68 69 6c 64 72 65 6e 20 24 72 65  anchchildren $re
1450: 76 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a  v..return.    }.
1460: 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 6f 72 74  .    method sort
1470: 62 72 61 6e 63 68 65 73 20 7b 7d 20 7b 0a 09 69  branches {} {..i
1480: 66 20 7b 21 5b 6c 6c 65 6e 67 74 68 20 24 6d 79  f {![llength $my
1490: 62 72 61 6e 63 68 65 73 5d 7d 20 72 65 74 75 72  branches]} retur
14a0: 6e 0a 0a 09 23 20 53 6f 72 74 20 74 68 65 20 62  n...# Sort the b
14b0: 72 61 6e 63 68 65 73 20 73 70 61 77 6e 65 64 20  ranches spawned 
14c0: 62 79 20 74 68 69 73 20 72 65 76 69 73 69 6f 6e  by this revision
14d0: 20 69 6e 20 63 72 65 61 74 69 6f 6e 0a 09 23 20   in creation..# 
14e0: 6f 72 64 65 72 2e 20 54 6f 20 68 65 6c 70 20 69  order. To help i
14f0: 6e 20 74 68 69 73 20 6f 75 72 20 66 69 6c 65 20  n this our file 
1500: 67 61 76 65 20 61 6c 6c 20 62 72 61 6e 63 68 65  gave all branche
1510: 73 20 61 20 70 6f 73 69 74 69 6f 6e 0a 09 23 20  s a position..# 
1520: 69 64 2c 20 69 6e 20 6f 72 64 65 72 20 6f 66 20  id, in order of 
1530: 74 68 65 69 72 20 64 65 66 69 6e 69 74 69 6f 6e  their definition
1540: 20 62 79 20 74 68 65 20 52 43 53 20 61 72 63 68   by the RCS arch
1550: 69 76 65 2e 0a 09 23 0a 09 23 20 54 68 65 20 63  ive...#..# The c
1560: 72 65 61 74 69 6f 6e 20 6f 72 64 65 72 20 69 73  reation order is
1570: 20 28 61 70 70 61 72 65 6e 74 6c 79 29 20 74 68   (apparently) th
1580: 65 20 72 65 76 65 72 73 65 20 6f 66 20 74 68 65  e reverse of the
1590: 0a 09 23 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f  ..# definition o
15a0: 72 64 65 72 2e 20 28 49 66 20 61 20 62 72 61 6e  rder. (If a bran
15b0: 63 68 20 69 73 20 63 72 65 61 74 65 64 20 74 68  ch is created th
15c0: 65 6e 20 64 65 6c 65 74 65 64 2c 20 61 0a 09 23  en deleted, a..#
15d0: 20 6c 61 74 65 72 20 62 72 61 6e 63 68 20 63 61   later branch ca
15e0: 6e 20 62 65 20 61 73 73 69 67 6e 65 64 20 74 68  n be assigned th
15f0: 65 20 72 65 63 79 63 6c 65 64 20 62 72 61 6e 63  e recycled branc
1600: 68 20 6e 75 6d 62 65 72 3b 0a 09 23 20 74 68 65  h number;..# the
1610: 72 65 66 6f 72 65 20 62 72 61 6e 63 68 20 6e 75  refore branch nu
1620: 6d 62 65 72 73 20 61 72 65 20 6e 6f 74 20 61 6e  mbers are not an
1630: 20 69 6e 64 69 63 61 74 69 6f 6e 20 6f 66 20 63   indication of c
1640: 72 65 61 74 69 6f 6e 0a 09 23 20 6f 72 64 65 72  reation..# order
1650: 2e 29 0a 0a 09 73 65 74 20 74 6d 70 20 7b 7d 0a  .)...set tmp {}.
1660: 09 66 6f 72 65 61 63 68 20 62 72 61 6e 63 68 20  .foreach branch 
1670: 24 6d 79 62 72 61 6e 63 68 65 73 20 7b 0a 09 20  $mybranches {.. 
1680: 20 20 20 6c 61 70 70 65 6e 64 20 74 6d 70 20 5b     lappend tmp [
1690: 6c 69 73 74 20 24 62 72 61 6e 63 68 20 5b 24 62  list $branch [$b
16a0: 72 61 6e 63 68 20 70 6f 73 69 74 69 6f 6e 5d 5d  ranch position]]
16b0: 0a 09 7d 0a 0a 09 73 65 74 20 6d 79 62 72 61 6e  ..}...set mybran
16c0: 63 68 65 73 20 7b 7d 0a 09 66 6f 72 65 61 63 68  ches {}..foreach
16d0: 20 69 74 65 6d 20 5b 6c 73 6f 72 74 20 2d 69 6e   item [lsort -in
16e0: 64 65 78 20 31 20 2d 64 65 63 72 65 61 73 69 6e  dex 1 -decreasin
16f0: 67 20 24 74 6d 70 5d 20 7b 0a 09 20 20 20 20 73  g $tmp] {..    s
1700: 74 72 75 63 74 3a 3a 6c 69 73 74 20 61 73 73 69  truct::list assi
1710: 67 6e 20 24 69 74 65 6d 20 62 72 61 6e 63 68 20  gn $item branch 
1720: 70 6f 73 69 74 69 6f 6e 0a 09 20 20 20 20 6c 61  position..    la
1730: 70 70 65 6e 64 20 6d 79 62 72 61 6e 63 68 65 73  ppend mybranches
1740: 20 24 62 72 61 6e 63 68 0a 09 7d 0a 09 72 65 74   $branch..}..ret
1750: 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d  urn.    }..    m
1760: 65 74 68 6f 64 20 6d 6f 76 65 62 72 61 6e 63 68  ethod movebranch
1770: 65 73 74 6f 20 7b 72 65 76 7d 20 7b 0a 09 73 65  esto {rev} {..se
1780: 74 20 72 65 76 6c 6f 64 20 5b 24 72 65 76 20 6c  t revlod [$rev l
1790: 6f 64 5d 0a 09 66 6f 72 65 61 63 68 20 62 72 61  od]..foreach bra
17a0: 6e 63 68 20 24 6d 79 62 72 61 6e 63 68 65 73 20  nch $mybranches 
17b0: 7b 0a 09 20 20 20 20 24 72 65 76 20 61 64 64 62  {..    $rev addb
17c0: 72 61 6e 63 68 20 24 62 72 61 6e 63 68 0a 09 20  ranch $branch.. 
17d0: 20 20 20 24 62 72 61 6e 63 68 20 73 65 74 70 61     $branch setpa
17e0: 72 65 6e 74 20 24 72 65 76 0a 09 20 20 20 20 24  rent $rev..    $
17f0: 62 72 61 6e 63 68 20 73 65 74 6c 6f 64 20 24 72  branch setlod $r
1800: 65 76 6c 6f 64 0a 09 7d 0a 09 66 6f 72 65 61 63  evlod..}..foreac
1810: 68 20 62 72 61 6e 63 68 72 65 76 20 24 6d 79 62  h branchrev $myb
1820: 72 61 6e 63 68 63 68 69 6c 64 72 65 6e 20 7b 0a  ranchchildren {.
1830: 09 20 20 20 20 24 72 65 76 20 61 64 64 63 68 69  .    $rev addchi
1840: 6c 64 6f 6e 62 72 61 6e 63 68 20 24 62 72 61 6e  ldonbranch $bran
1850: 63 68 72 65 76 0a 09 20 20 20 20 24 62 72 61 6e  chrev..    $bran
1860: 63 68 72 65 76 20 63 75 74 66 72 6f 6d 70 61 72  chrev cutfrompar
1870: 65 6e 74 0a 09 20 20 20 20 24 62 72 61 6e 63 68  ent..    $branch
1880: 72 65 76 20 73 65 74 70 61 72 65 6e 74 20 24 72  rev setparent $r
1890: 65 76 0a 09 7d 0a 09 73 65 74 20 6d 79 62 72 61  ev..}..set mybra
18a0: 6e 63 68 65 73 20 20 20 20 20 20 20 7b 7d 0a 09  nches       {}..
18b0: 73 65 74 20 6d 79 62 72 61 6e 63 68 63 68 69 6c  set mybranchchil
18c0: 64 72 65 6e 20 7b 7d 0a 09 72 65 74 75 72 6e 0a  dren {}..return.
18d0: 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f      }..    metho
18e0: 64 20 72 65 6d 6f 76 65 61 6c 6c 62 72 61 6e 63  d removeallbranc
18f0: 68 65 73 20 7b 7d 20 7b 0a 09 66 6f 72 65 61 63  hes {} {..foreac
1900: 68 20 62 72 61 6e 63 68 20 24 6d 79 62 72 61 6e  h branch $mybran
1910: 63 68 65 73 20 7b 0a 09 20 20 20 20 24 62 72 61  ches {..    $bra
1920: 6e 63 68 20 64 65 73 74 72 6f 79 0a 09 7d 0a 09  nch destroy..}..
1930: 73 65 74 20 6d 79 62 72 61 6e 63 68 65 73 20 20  set mybranches  
1940: 20 20 20 20 20 7b 7d 0a 09 73 65 74 20 6d 79 62       {}..set myb
1950: 72 61 6e 63 68 63 68 69 6c 64 72 65 6e 20 7b 7d  ranchchildren {}
1960: 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a  ..return.    }..
1970: 20 20 20 20 23 20 54 61 67 20 6c 69 6e 6b 61 67      # Tag linkag
1980: 65 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  e ______________
1990: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20  ___________..   
19a0: 20 6d 65 74 68 6f 64 20 61 64 64 74 61 67 20 7b   method addtag {
19b0: 74 61 67 7d 20 7b 0a 09 6c 61 70 70 65 6e 64 20  tag} {..lappend 
19c0: 6d 79 74 61 67 73 20 24 74 61 67 0a 09 72 65 74  mytags $tag..ret
19d0: 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d  urn.    }..    m
19e0: 65 74 68 6f 64 20 74 61 67 73 20 7b 7d 20 7b 20  ethod tags {} { 
19f0: 72 65 74 75 72 6e 20 24 6d 79 74 61 67 73 20 7d  return $mytags }
1a00: 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 72 65 6d  ..    method rem
1a10: 6f 76 65 61 6c 6c 74 61 67 73 20 7b 7d 20 7b 0a  ovealltags {} {.
1a20: 09 66 6f 72 65 61 63 68 20 74 61 67 20 24 6d 79  .foreach tag $my
1a30: 74 61 67 73 20 7b 20 24 74 61 67 20 64 65 73 74  tags { $tag dest
1a40: 72 6f 79 20 7d 0a 09 73 65 74 20 6d 79 74 61 67  roy }..set mytag
1a50: 73 20 7b 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20  s {}..return.   
1a60: 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 6d   }..    method m
1a70: 6f 76 65 74 61 67 73 74 6f 20 7b 72 65 76 7d 20  ovetagsto {rev} 
1a80: 7b 0a 09 73 65 74 20 72 65 76 6c 6f 64 20 5b 24  {..set revlod [$
1a90: 72 65 76 20 6c 6f 64 5d 0a 09 66 6f 72 65 61 63  rev lod]..foreac
1aa0: 68 20 74 61 67 20 24 6d 79 74 61 67 73 20 7b 0a  h tag $mytags {.
1ab0: 09 20 20 20 20 24 72 65 76 20 61 64 64 74 61 67  .    $rev addtag
1ac0: 20 24 74 61 67 0a 09 20 20 20 20 24 74 61 67 20   $tag..    $tag 
1ad0: 73 65 74 74 61 67 72 65 76 20 24 72 65 76 0a 09  settagrev $rev..
1ae0: 20 20 20 20 24 74 61 67 20 73 65 74 6c 6f 64 20      $tag setlod 
1af0: 24 72 65 76 6c 6f 64 0a 09 7d 0a 09 73 65 74 20  $revlod..}..set 
1b00: 6d 79 74 61 67 73 20 7b 7d 0a 09 72 65 74 75 72  mytags {}..retur
1b10: 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 67  n.    }..    # g
1b20: 65 6e 65 72 61 6c 20 73 79 6d 62 6f 6c 20 6f 70  eneral symbol op
1b30: 65 72 61 74 69 6f 6e 73 20 5f 5f 5f 5f 5f 5f 5f  erations _______
1b40: 5f 5f 5f 5f 0a 0a 20 20 20 20 6d 65 74 68 6f 64  ____..    method
1b50: 20 6d 6f 76 65 73 79 6d 62 6f 6c 73 74 6f 20 7b   movesymbolsto {
1b60: 72 65 76 7d 20 7b 0a 09 23 20 4d 6f 76 65 20 74  rev} {..# Move t
1b70: 68 65 20 74 61 67 73 20 61 6e 64 20 62 72 61 6e  he tags and bran
1b80: 63 68 65 73 20 61 74 74 61 63 68 65 64 20 74 6f  ches attached to
1b90: 20 74 68 69 73 20 72 65 76 69 73 69 6f 6e 20 74   this revision t
1ba0: 6f 20 74 68 65 0a 09 23 20 64 65 73 74 69 6e 61  o the..# destina
1bb0: 74 69 6f 6e 20 61 6e 64 20 66 69 78 20 61 6c 6c  tion and fix all
1bc0: 20 70 6f 69 6e 74 65 72 73 2e 0a 0a 09 24 73 65   pointers....$se
1bd0: 6c 66 20 6d 6f 76 65 74 61 67 73 74 6f 20 20 20  lf movetagsto   
1be0: 20 20 24 72 65 76 0a 09 24 73 65 6c 66 20 6d 6f    $rev..$self mo
1bf0: 76 65 62 72 61 6e 63 68 65 73 74 6f 20 24 72 65  vebranchesto $re
1c00: 76 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a  v..return.    }.
1c10: 0a 20 20 20 20 23 20 44 65 72 69 76 65 64 20 73  .    # Derived s
1c20: 74 75 66 66 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  tuff ___________
1c30: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20  ____________..  
1c40: 20 20 6d 65 74 68 6f 64 20 64 65 74 65 72 6d 69    method determi
1c50: 6e 65 6f 70 65 72 61 74 69 6f 6e 20 7b 7d 20 7b  neoperation {} {
1c60: 0a 09 23 20 4c 6f 6f 6b 20 61 74 20 74 68 65 20  ..# Look at the 
1c70: 73 74 61 74 65 20 6f 66 20 62 6f 74 68 20 74 68  state of both th
1c80: 69 73 20 72 65 76 69 73 69 6f 6e 20 61 6e 64 20  is revision and 
1c90: 69 74 73 20 70 61 72 65 6e 74 20 74 6f 0a 09 23  its parent to..#
1ca0: 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 74   determine the t
1cb0: 79 70 65 20 6f 70 66 20 6f 70 65 72 61 74 69 6f  ype opf operatio
1cc0: 6e 20 77 68 69 63 68 20 77 61 73 20 70 65 72 66  n which was perf
1cd0: 6f 72 6d 65 64 20 28 61 64 64 2c 0a 09 23 20 6d  ormed (add,..# m
1ce0: 6f 64 69 66 79 2c 20 64 65 6c 65 74 65 2c 20 6e  odify, delete, n
1cf0: 6f 6e 65 29 2e 0a 09 23 0a 09 23 20 54 68 65 20  one)...#..# The 
1d00: 69 6d 70 6f 72 74 61 6e 74 20 69 6e 66 6f 72 6d  important inform
1d10: 61 74 69 6f 6e 20 69 73 20 64 65 61 64 20 76 73  ation is dead vs
1d20: 20 6e 6f 74 2d 64 65 61 64 20 66 6f 72 20 62 6f   not-dead for bo
1d30: 74 68 2c 0a 09 23 20 67 69 76 69 6e 67 20 72 69  th,..# giving ri
1d40: 73 65 20 74 6f 20 66 6f 75 72 20 70 6f 73 73 69  se to four possi
1d50: 62 6c 65 20 74 79 70 65 73 2e 0a 0a 09 73 65 74  ble types....set
1d60: 20 73 64 65 61 64 20 5b 65 78 70 72 20 7b 24 6d   sdead [expr {$m
1d70: 79 73 74 61 74 65 20 65 71 20 22 64 65 61 64 22  ystate eq "dead"
1d80: 7d 5d 0a 09 73 65 74 20 70 64 65 61 64 20 5b 65  }]..set pdead [e
1d90: 78 70 72 20 7b 24 6d 79 70 61 72 65 6e 74 20 65  xpr {$myparent e
1da0: 71 20 22 22 20 7c 7c 20 5b 24 6d 79 70 61 72 65  q "" || [$mypare
1db0: 6e 74 20 73 74 61 74 65 5d 20 65 71 20 22 64 65  nt state] eq "de
1dc0: 61 64 22 7d 5d 0a 0a 09 73 65 74 20 6d 79 6f 70  ad"}]...set myop
1dd0: 65 72 61 74 69 6f 6e 20 24 6d 79 6f 70 73 74 61  eration $myopsta
1de0: 74 65 28 5b 6c 69 73 74 20 24 70 64 65 61 64 20  te([list $pdead 
1df0: 24 73 64 65 61 64 5d 29 0a 09 72 65 74 75 72 6e  $sdead])..return
1e00: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68  .    }..    meth
1e10: 6f 64 20 6f 70 65 72 61 74 69 6f 6e 20 7b 7d 20  od operation {} 
1e20: 7b 20 72 65 74 75 72 6e 20 24 6d 79 6f 70 65 72  { return $myoper
1e30: 61 74 69 6f 6e 20 7d 0a 20 20 20 20 6d 65 74 68  ation }.    meth
1e40: 6f 64 20 72 65 74 79 70 65 20 7b 78 7d 20 7b 20  od retype {x} { 
1e50: 73 65 74 20 6d 79 6f 70 65 72 61 74 69 6f 6e 20  set myoperation 
1e60: 24 78 20 3b 20 72 65 74 75 72 6e 20 7d 0a 0a 20  $x ; return }.. 
1e70: 20 20 20 6d 65 74 68 6f 64 20 69 73 6f 6e 64 65     method isonde
1e80: 66 61 75 6c 74 62 72 61 6e 63 68 20 20 20 20 7b  faultbranch    {
1e90: 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 69 73  } { return $myis
1ea0: 6f 6e 64 65 66 61 75 6c 74 62 72 61 6e 63 68 20  ondefaultbranch 
1eb0: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 65  }..    method se
1ec0: 74 6f 6e 64 65 66 61 75 6c 74 62 72 61 6e 63 68  tondefaultbranch
1ed0: 20 20 20 7b 78 7d 20 7b 20 73 65 74 20 6d 79 69     {x} { set myi
1ee0: 73 6f 6e 64 65 66 61 75 6c 74 62 72 61 6e 63 68  sondefaultbranch
1ef0: 20 24 78 20 3b 20 72 65 74 75 72 6e 20 7d 0a 0a   $x ; return }..
1f00: 20 20 20 20 6d 65 74 68 6f 64 20 73 65 74 64 65      method setde
1f10: 66 61 75 6c 74 62 72 61 6e 63 68 63 68 69 6c 64  faultbranchchild
1f20: 20 20 7b 72 65 76 7d 20 7b 20 73 65 74 20 6d 79    {rev} { set my
1f30: 64 62 63 68 69 6c 64 20 24 72 65 76 20 3b 20 72  dbchild $rev ; r
1f40: 65 74 75 72 6e 20 7d 0a 20 20 20 20 6d 65 74 68  eturn }.    meth
1f50: 6f 64 20 73 65 74 64 65 66 61 75 6c 74 62 72 61  od setdefaultbra
1f60: 6e 63 68 70 61 72 65 6e 74 20 7b 72 65 76 7d 20  nchparent {rev} 
1f70: 7b 0a 09 73 65 74 20 6d 79 64 62 70 61 72 65 6e  {..set mydbparen
1f80: 74 20 24 72 65 76 0a 0a 09 23 20 52 65 74 79 70  t $rev...# Retyp
1f90: 65 20 74 68 65 20 72 65 76 69 73 69 6f 6e 20 28  e the revision (
1fa0: 6d 61 79 20 63 68 61 6e 67 65 20 66 72 6f 6d 20  may change from 
1fb0: 27 61 64 64 27 20 74 6f 20 27 63 68 61 6e 67 65  'add' to 'change
1fc0: 27 29 2e 0a 0a 09 73 65 74 20 73 64 65 61 64 20  ')....set sdead 
1fd0: 5b 65 78 70 72 20 7b 24 6d 79 6f 70 65 72 61 74  [expr {$myoperat
1fe0: 69 6f 6e 20 20 20 20 20 6e 65 20 22 63 68 61 6e  ion     ne "chan
1ff0: 67 65 22 7d 5d 0a 09 73 65 74 20 70 64 65 61 64  ge"}]..set pdead
2000: 20 5b 65 78 70 72 20 7b 5b 24 72 65 76 20 6f 70   [expr {[$rev op
2010: 65 72 61 74 69 6f 6e 5d 20 6e 65 20 22 63 68 61  eration] ne "cha
2020: 6e 67 65 22 7d 5d 0a 09 73 65 74 20 6d 79 6f 70  nge"}]..set myop
2030: 65 72 61 74 69 6f 6e 20 24 6d 79 6f 70 73 74 61  eration $myopsta
2040: 74 65 28 5b 6c 69 73 74 20 24 70 64 65 61 64 20  te([list $pdead 
2050: 24 73 64 65 61 64 5d 29 0a 09 72 65 74 75 72 6e  $sdead])..return
2060: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68  .    }..    meth
2070: 6f 64 20 63 75 74 64 65 66 61 75 6c 74 62 72 61  od cutdefaultbra
2080: 6e 63 68 70 61 72 65 6e 74 20 7b 7d 20 7b 20 73  nchparent {} { s
2090: 65 74 20 6d 79 64 62 70 61 72 65 6e 74 20 22 22  et mydbparent ""
20a0: 20 3b 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 20   ; return }.    
20b0: 6d 65 74 68 6f 64 20 63 75 74 64 65 66 61 75 6c  method cutdefaul
20c0: 74 62 72 61 6e 63 68 63 68 69 6c 64 20 20 7b 7d  tbranchchild  {}
20d0: 20 7b 20 73 65 74 20 6d 79 64 62 63 68 69 6c 64   { set mydbchild
20e0: 20 20 22 22 20 3b 20 72 65 74 75 72 6e 20 7d 0a    "" ; return }.
20f0: 0a 20 20 20 20 6d 65 74 68 6f 64 20 64 65 66 61  .    method defa
2100: 75 6c 74 62 72 61 6e 63 68 63 68 69 6c 64 20 20  ultbranchchild  
2110: 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 64  {} { return $myd
2120: 62 63 68 69 6c 64 20 7d 0a 20 20 20 20 6d 65 74  bchild }.    met
2130: 68 6f 64 20 64 65 66 61 75 6c 74 62 72 61 6e 63  hod defaultbranc
2140: 68 70 61 72 65 6e 74 20 7b 7d 20 7b 20 72 65 74  hparent {} { ret
2150: 75 72 6e 20 24 6d 79 64 62 70 61 72 65 6e 74 20  urn $mydbparent 
2160: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 68 61  }..    method ha
2170: 73 64 65 66 61 75 6c 74 62 72 61 6e 63 68 63 68  sdefaultbranchch
2180: 69 6c 64 20 20 7b 7d 20 7b 20 72 65 74 75 72 6e  ild  {} { return
2190: 20 5b 65 78 70 72 20 7b 24 6d 79 64 62 63 68 69   [expr {$mydbchi
21a0: 6c 64 20 20 6e 65 20 22 22 7d 5d 20 7d 0a 20 20  ld  ne ""}] }.  
21b0: 20 20 6d 65 74 68 6f 64 20 68 61 73 64 65 66 61    method hasdefa
21c0: 75 6c 74 62 72 61 6e 63 68 70 61 72 65 6e 74 20  ultbranchparent 
21d0: 7b 7d 20 7b 20 72 65 74 75 72 6e 20 5b 65 78 70  {} { return [exp
21e0: 72 20 7b 24 6d 79 64 62 70 61 72 65 6e 74 20 6e  r {$mydbparent n
21f0: 65 20 22 22 7d 5d 20 7d 0a 0a 20 20 20 20 23 20  e ""}] }..    # 
2200: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23  # ## ### ##### #
2210: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23  ####### ########
2220: 23 23 23 23 23 0a 20 20 20 20 23 23 20 54 79 70  #####.    ## Typ
2230: 65 20 41 50 49 0a 0a 20 20 20 20 74 79 70 65 6d  e API..    typem
2240: 65 74 68 6f 64 20 69 73 74 72 75 6e 6b 72 65 76  ethod istrunkrev
2250: 6e 72 20 7b 72 65 76 6e 72 7d 20 7b 0a 09 72 65  nr {revnr} {..re
2260: 74 75 72 6e 20 5b 65 78 70 72 20 7b 5b 6c 6c 65  turn [expr {[lle
2270: 6e 67 74 68 20 5b 73 70 6c 69 74 20 24 72 65 76  ngth [split $rev
2280: 6e 72 20 2e 5d 5d 20 3d 3d 20 32 7d 5d 0a 20 20  nr .]] == 2}].  
2290: 20 20 7d 0a 0a 20 20 20 20 74 79 70 65 6d 65 74    }..    typemet
22a0: 68 6f 64 20 69 73 62 72 61 6e 63 68 72 65 76 6e  hod isbranchrevn
22b0: 72 20 7b 72 65 76 6e 72 20 5f 20 62 76 7d 20 7b  r {revnr _ bv} {
22c0: 0a 09 69 66 20 7b 5b 72 65 67 65 78 70 20 24 6d  ..if {[regexp $m
22d0: 79 62 72 61 6e 63 68 70 61 74 74 65 72 6e 20 24  ybranchpattern $
22e0: 72 65 76 6e 72 20 2d 3e 20 68 65 61 64 20 74 61  revnr -> head ta
22f0: 69 6c 5d 7d 20 7b 0a 09 20 20 20 20 75 70 76 61  il]} {..    upva
2300: 72 20 31 20 24 62 76 20 62 72 61 6e 63 68 6e 72  r 1 $bv branchnr
2310: 0a 09 20 20 20 20 73 65 74 20 62 72 61 6e 63 68  ..    set branch
2320: 6e 72 20 24 7b 68 65 61 64 7d 24 74 61 69 6c 0a  nr ${head}$tail.
2330: 09 20 20 20 20 72 65 74 75 72 6e 20 31 0a 09 7d  .    return 1..}
2340: 0a 09 72 65 74 75 72 6e 20 30 0a 20 20 20 20 7d  ..return 0.    }
2350: 0a 0a 20 20 20 20 74 79 70 65 6d 65 74 68 6f 64  ..    typemethod
2360: 20 32 62 72 61 6e 63 68 6e 72 20 7b 72 65 76 6e   2branchnr {revn
2370: 72 7d 20 7b 0a 09 23 20 49 6e 70 75 74 20 69 73  r} {..# Input is
2380: 20 61 20 62 72 61 6e 63 68 20 72 65 76 69 73 69   a branch revisi
2390: 6f 6e 20 6e 75 6d 62 65 72 2c 20 69 2e 65 2e 20  on number, i.e. 
23a0: 61 20 72 65 76 69 73 69 6f 6e 20 6e 75 6d 62 65  a revision numbe
23b0: 72 0a 09 23 20 77 69 74 68 20 61 6e 20 65 76 65  r..# with an eve
23c0: 6e 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6d 70  n number of comp
23d0: 6f 6e 65 6e 74 73 3b 20 66 6f 72 20 65 78 61 6d  onents; for exam
23e0: 70 6c 65 20 27 32 2e 39 2e 32 2e 31 27 0a 09 23  ple '2.9.2.1'..#
23f0: 20 28 6e 65 76 65 72 20 27 32 2e 39 2e 32 27 20   (never '2.9.2' 
2400: 6e 6f 72 20 27 32 2e 39 2e 30 2e 32 27 29 2e 20  nor '2.9.0.2'). 
2410: 20 54 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75   The return valu
2420: 65 20 69 73 20 74 68 65 0a 09 23 20 62 72 61 6e  e is the..# bran
2430: 63 68 20 6e 75 6d 62 65 72 20 28 66 6f 72 20 65  ch number (for e
2440: 78 61 6d 70 6c 65 2c 20 27 32 2e 39 2e 32 27 29  xample, '2.9.2')
2450: 2e 20 20 46 6f 72 20 74 72 75 6e 6b 20 72 65 76  .  For trunk rev
2460: 69 73 69 6f 6e 73 2c 0a 09 23 20 6c 69 6b 65 20  isions,..# like 
2470: 27 33 2e 34 27 2c 20 77 65 20 72 65 74 75 72 6e  '3.4', we return
2480: 20 74 68 65 20 65 6d 70 74 79 20 73 74 72 69 6e   the empty strin
2490: 67 2e 0a 0a 09 69 66 20 7b 5b 24 74 79 70 65 20  g....if {[$type 
24a0: 69 73 74 72 75 6e 6b 72 65 76 6e 72 20 24 72 65  istrunkrevnr $re
24b0: 76 6e 72 5d 7d 20 7b 0a 09 20 20 20 20 72 65 74  vnr]} {..    ret
24c0: 75 72 6e 20 22 22 0a 09 7d 0a 09 72 65 74 75 72  urn ""..}..retur
24d0: 6e 20 5b 6a 6f 69 6e 20 5b 6c 72 61 6e 67 65 20  n [join [lrange 
24e0: 5b 73 70 6c 69 74 20 24 72 65 76 6e 72 20 2e 5d  [split $revnr .]
24f0: 20 30 20 65 6e 64 2d 31 5d 20 2e 5d 0a 20 20 20   0 end-1] .].   
2500: 20 7d 0a 0a 20 20 20 20 74 79 70 65 6d 65 74 68   }..    typemeth
2510: 6f 64 20 32 62 72 61 6e 63 68 70 61 72 65 6e 74  od 2branchparent
2520: 72 65 76 6e 72 20 7b 62 72 61 6e 63 68 6e 72 7d  revnr {branchnr}
2530: 20 7b 0a 09 23 20 43 68 6f 70 20 74 68 65 20 6c   {..# Chop the l
2540: 61 73 74 20 73 65 67 6d 65 6e 74 20 6f 66 66 0a  ast segment off.
2550: 09 72 65 74 75 72 6e 20 5b 6a 6f 69 6e 20 5b 6c  .return [join [l
2560: 72 61 6e 67 65 20 5b 73 70 6c 69 74 20 24 62 72  range [split $br
2570: 61 6e 63 68 6e 72 20 2e 5d 20 30 20 65 6e 64 2d  anchnr .] 0 end-
2580: 31 5d 20 2e 5d 0a 20 20 20 20 7d 0a 0a 20 20 20  1] .].    }..   
2590: 20 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23   # # ## ### ####
25a0: 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23  # ######## #####
25b0: 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 20  ########.    ## 
25c0: 53 74 61 74 65 0a 0a 20 20 20 20 74 79 70 65 76  State..    typev
25d0: 61 72 69 61 62 6c 65 20 6d 79 62 72 61 6e 63 68  ariable mybranch
25e0: 70 61 74 74 65 72 6e 20 7b 5e 28 28 3f 3a 5c 64  pattern {^((?:\d
25f0: 2b 5c 2e 5c 64 2b 5c 2e 29 2b 29 28 3f 3a 30 5c  +\.\d+\.)+)(?:0\
2600: 2e 29 3f 28 5c 64 2b 29 24 7d 0a 20 20 20 20 23  .)?(\d+)$}.    #
2610: 20 46 69 72 73 74 20 61 20 6e 6f 6e 7a 65 72 6f   First a nonzero
2620: 20 65 76 65 6e 20 6e 75 6d 62 65 72 20 6f 66 20   even number of 
2630: 64 69 67 69 74 20 67 72 6f 75 70 73 20 77 69 74  digit groups wit
2640: 68 20 74 72 61 69 6c 69 6e 67 20 64 6f 74 0a 20  h trailing dot. 
2650: 20 20 20 23 20 43 56 53 20 74 68 65 6e 20 73 74     # CVS then st
2660: 69 63 6b 73 20 61 6e 20 65 78 74 72 61 20 30 20  icks an extra 0 
2670: 69 6e 20 68 65 72 65 3b 20 52 43 53 20 64 6f 65  in here; RCS doe
2680: 73 20 6e 6f 74 2e 0a 20 20 20 20 23 20 41 6e 64  s not..    # And
2690: 20 74 68 65 20 6c 61 73 74 20 64 69 67 69 74 20   the last digit 
26a0: 67 72 6f 75 70 2e 0a 0a 20 20 20 20 76 61 72 69  group...    vari
26b0: 61 62 6c 65 20 6d 79 72 65 76 6e 72 20 20 20 20  able myrevnr    
26c0: 20 7b 7d 20 3b 20 23 20 52 65 76 69 73 69 6f 6e   {} ; # Revision
26d0: 20 6e 75 6d 62 65 72 20 6f 66 20 74 68 65 20 72   number of the r
26e0: 65 76 69 73 69 6f 6e 2e 0a 20 20 20 20 76 61 72  evision..    var
26f0: 69 61 62 6c 65 20 6d 79 64 61 74 65 20 20 20 20  iable mydate    
2700: 20 20 7b 7d 20 3b 20 23 20 54 69 6d 65 73 74 61    {} ; # Timesta
2710: 6d 70 20 6f 66 20 74 68 65 20 72 65 76 69 73 69  mp of the revisi
2720: 6f 6e 2c 20 73 65 63 6f 6e 64 73 20 73 69 6e 63  on, seconds sinc
2730: 65 20 65 70 6f 63 68 0a 20 20 20 20 76 61 72 69  e epoch.    vari
2740: 61 62 6c 65 20 6d 79 6f 72 69 67 64 61 74 65 20  able myorigdate 
2750: 20 7b 7d 20 3b 20 23 20 4f 72 69 67 69 6e 61 6c   {} ; # Original
2760: 20 75 6e 6d 6f 64 69 66 69 65 64 20 74 69 6d 65   unmodified time
2770: 73 74 61 6d 70 2e 0a 20 20 20 20 76 61 72 69 61  stamp..    varia
2780: 62 6c 65 20 6d 79 73 74 61 74 65 20 20 20 20 20  ble mystate     
2790: 7b 7d 20 3b 20 23 20 53 74 61 74 65 20 6f 66 20  {} ; # State of 
27a0: 74 68 65 20 72 65 76 69 73 69 6f 6e 2e 0a 20 20  the revision..  
27b0: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 66 69 6c    variable myfil
27c0: 65 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 52 65  e      {} ; # Re
27d0: 66 20 74 6f 20 74 68 65 20 66 69 6c 65 20 6f 62  f to the file ob
27e0: 6a 65 63 74 20 74 68 65 20 72 65 76 69 73 69 6f  ject the revisio
27f0: 6e 20 62 65 6c 6f 6e 67 73 20 74 6f 2e 0a 20 20  n belongs to..  
2800: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 74 65 78    variable mytex
2810: 74 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 52 61  t      {} ; # Ra
2820: 6e 67 65 20 6f 66 20 74 68 65 20 28 64 65 6c 74  nge of the (delt
2830: 61 29 20 74 65 78 74 20 66 6f 72 20 74 68 69 73  a) text for this
2840: 20 72 65 76 69 73 69 6f 6e 20 69 6e 20 74 68 65   revision in the
2850: 20 66 69 6c 65 2e 0a 20 20 20 20 76 61 72 69 61   file..    varia
2860: 62 6c 65 20 6d 79 6d 65 74 61 69 64 20 20 20 20  ble mymetaid    
2870: 7b 7d 20 3b 20 23 20 49 64 20 6f 66 20 74 68 65  {} ; # Id of the
2880: 20 6d 65 74 61 20 64 61 74 61 20 67 72 6f 75 70   meta data group
2890: 20 74 68 65 20 72 65 76 69 73 69 6f 6e 0a 09 09   the revision...
28a0: 09 20 20 20 20 20 20 23 20 62 65 6c 6f 6e 67 73  .      # belongs
28b0: 20 74 6f 2e 20 54 68 69 73 20 69 73 20 6c 61 74   to. This is lat
28c0: 65 72 20 75 73 65 64 20 74 6f 20 70 75 74 0a 09  er used to put..
28d0: 09 09 20 20 20 20 20 20 23 20 74 68 65 20 66 69  ..      # the fi
28e0: 6c 65 20 72 65 76 69 73 69 6f 6e 73 20 69 6e 74  le revisions int
28f0: 6f 20 70 72 65 6c 69 6d 69 6e 61 72 79 0a 09 09  o preliminary...
2900: 09 20 20 20 20 20 20 23 20 63 68 61 6e 67 65 73  .      # changes
2910: 65 74 73 20 28 61 6b 61 20 70 72 6f 6a 65 63 74  ets (aka project
2920: 20 72 65 76 69 73 69 6f 6e 73 29 2e 0a 09 09 09   revisions).....
2930: 20 20 20 20 20 20 23 20 54 68 69 73 20 69 64 20        # This id 
2940: 65 6e 63 6f 64 65 73 20 34 20 70 69 65 63 65 73  encodes 4 pieces
2950: 20 6f 66 20 64 61 74 61 2c 0a 09 09 09 20 20 20   of data,....   
2960: 20 20 20 23 20 6e 61 6d 65 6c 79 3a 20 74 68 65     # namely: the
2970: 20 70 72 6f 6a 65 63 74 20 61 6e 64 20 62 72 61   project and bra
2980: 6e 63 68 20 74 68 65 0a 09 09 09 20 20 20 20 20  nch the....     
2990: 20 23 20 72 65 76 69 73 69 6f 6e 20 77 61 73 20   # revision was 
29a0: 63 6f 6d 6d 69 74 74 65 64 20 74 6f 2c 20 74 68  committed to, th
29b0: 65 20 61 75 74 68 6f 72 0a 09 09 09 20 20 20 20  e author....    
29c0: 20 20 23 20 77 68 6f 20 64 69 64 20 74 68 65 20    # who did the 
29d0: 63 6f 6d 6d 69 74 2c 20 61 6e 64 20 74 68 65 20  commit, and the 
29e0: 6d 65 73 73 61 67 65 0a 09 09 09 20 20 20 20 20  message....     
29f0: 20 23 20 75 73 65 64 2e 0a 20 20 20 20 76 61 72   # used..    var
2a00: 69 61 62 6c 65 20 6d 79 6c 6f 64 20 20 20 20 20  iable mylod     
2a10: 20 20 7b 7d 20 3b 20 23 20 52 65 66 65 72 65 6e    {} ; # Referen
2a20: 63 65 20 74 6f 20 74 68 65 20 6c 69 6e 65 2d 6f  ce to the line-o
2a30: 66 2d 64 65 76 65 6c 6f 70 6d 65 6e 74 0a 09 09  f-development...
2a40: 09 20 20 20 20 20 20 23 20 6f 62 6a 65 63 74 20  .      # object 
2a50: 74 68 65 20 72 65 76 69 73 69 6f 6e 20 62 65 6c  the revision bel
2a60: 6f 6e 67 73 20 74 6f 2e 20 41 6e 0a 09 09 09 20  ongs to. An.... 
2a70: 20 20 20 20 20 23 20 61 6c 74 65 72 6e 61 74 69       # alternati
2a80: 76 65 20 69 64 69 6f 6d 20 77 6f 75 6c 64 20 62  ve idiom would b
2a90: 65 20 74 6f 20 63 61 6c 6c 20 69 74 0a 09 09 09  e to call it....
2aa0: 20 20 20 20 20 20 23 20 74 68 65 20 62 72 61 6e        # the bran
2ab0: 63 68 20 74 68 65 20 72 65 76 69 73 69 6f 6e 20  ch the revision 
2ac0: 69 73 20 6f 6e 2e 20 54 68 69 73 0a 09 09 09 20  is on. This.... 
2ad0: 20 20 20 20 20 23 20 72 65 66 65 72 65 6e 63 65       # reference
2ae0: 20 69 73 20 74 6f 20 61 20 70 72 6f 6a 65 63 74   is to a project
2af0: 2d 6c 65 76 65 6c 20 6f 62 6a 65 63 74 0a 09 09  -level object...
2b00: 09 20 20 20 20 20 20 23 20 28 73 79 6d 62 6f 6c  .      # (symbol
2b10: 20 6f 72 20 74 72 75 6e 6b 29 2e 0a 0a 20 20 20   or trunk)...   
2b20: 20 23 20 42 61 73 69 63 20 70 61 72 65 6e 74 2f   # Basic parent/
2b30: 63 68 69 6c 64 20 6c 69 6e 6b 61 67 65 20 28 6c  child linkage (l
2b40: 69 6e 65 73 20 6f 66 20 64 65 76 65 6c 6f 70 6d  ines of developm
2b50: 65 6e 74 29 0a 0a 20 20 20 20 76 61 72 69 61 62  ent)..    variab
2b60: 6c 65 20 6d 79 70 61 72 65 6e 74 20 7b 7d 20 3b  le myparent {} ;
2b70: 20 23 20 52 65 66 20 74 6f 20 70 61 72 65 6e 74   # Ref to parent
2b80: 20 72 65 76 69 73 69 6f 6e 20 6f 62 6a 65 63 74   revision object
2b90: 2e 20 4c 69 6e 6b 20 72 65 71 75 69 72 65 64 20  . Link required 
2ba0: 62 65 63 61 75 73 65 20 6f 66 0a 20 20 20 20 23  because of.    #
2bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bc0: 20 20 20 20 3b 20 23 20 27 63 76 73 61 64 6d 69      ; # 'cvsadmi
2bd0: 6e 20 2d 6f 27 2c 20 77 68 69 63 68 20 63 61 6e  n -o', which can
2be0: 20 63 72 65 61 74 65 20 61 72 62 69 74 72 61 72   create arbitrar
2bf0: 79 20 67 61 70 73 20 69 6e 20 74 68 65 0a 20 20  y gaps in the.  
2c00: 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20    #             
2c10: 20 20 20 20 20 20 20 3b 20 23 20 6e 75 6d 62 65         ; # numbe
2c20: 72 69 6e 67 20 73 65 71 75 65 6e 63 65 2e 20 54  ring sequence. T
2c30: 68 69 73 20 69 73 20 69 6e 20 74 68 65 20 73 61  his is in the sa
2c40: 6d 65 20 6c 69 6e 65 20 6f 66 20 64 65 76 65 6c  me line of devel
2c50: 6f 70 6d 65 6e 74 0a 20 20 20 20 23 20 20 20 20  opment.    #    
2c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c70: 3b 20 23 20 4e 6f 74 65 3a 20 46 6f 72 20 74 68  ; # Note: For th
2c80: 65 20 66 69 72 73 74 20 72 65 76 69 73 69 6f 6e  e first revision
2c90: 20 6f 6e 20 61 20 62 72 61 6e 63 68 20 74 68 65   on a branch the
2ca0: 20 72 65 76 69 73 69 6f 6e 0a 20 20 20 20 23 20   revision.    # 
2cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cc0: 20 20 20 3b 20 23 20 69 74 20 77 61 73 20 73 70     ; # it was sp
2cd0: 61 77 6e 65 64 20 66 72 6f 6d 20 69 73 20 74 68  awned from is th
2ce0: 65 20 70 61 72 65 6e 74 2e 20 4f 6e 6c 79 20 74  e parent. Only t
2cf0: 68 65 20 72 6f 6f 74 20 72 65 76 69 73 69 6f 6e  he root revision
2d00: 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20  .    #          
2d10: 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 6f 66            ; # of
2d20: 20 6d 79 66 69 6c 65 27 73 20 72 65 76 69 73 69   myfile's revisi
2d30: 6f 6e 20 74 72 65 65 20 68 61 73 20 6e 6f 74 68  on tree has noth
2d40: 69 6e 67 20 73 65 74 20 68 65 72 65 2e 0a 20 20  ing set here..  
2d50: 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20    #             
2d60: 20 20 20 20 20 20 20 3b 20 23 0a 0a 20 20 20 20         ; #..    
2d70: 76 61 72 69 61 62 6c 65 20 6d 79 63 68 69 6c 64  variable mychild
2d80: 20 20 7b 7d 20 3b 20 23 20 52 65 66 20 74 6f 20    {} ; # Ref to 
2d90: 74 68 65 20 70 72 69 6d 61 72 79 20 63 68 69 6c  the primary chil
2da0: 64 20 72 65 76 69 73 69 6f 6e 20 6f 62 6a 65 63  d revision objec
2db0: 74 2c 20 69 2e 65 2e 20 74 68 65 20 6e 65 78 74  t, i.e. the next
2dc0: 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20  .    #          
2dd0: 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 72 65            ; # re
2de0: 76 69 73 69 6f 6e 20 69 6e 20 74 68 65 20 73 61  vision in the sa
2df0: 6d 65 20 6c 69 6e 65 20 6f 66 20 64 65 76 65 6c  me line of devel
2e00: 6f 70 6d 65 6e 74 2e 0a 0a 20 20 20 20 23 20 42  opment...    # B
2e10: 72 61 6e 63 68 20 6c 69 6e 6b 61 67 65 20 5f 5f  ranch linkage __
2e20: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
2e30: 5f 5f 0a 0a 20 20 20 20 76 61 72 69 61 62 6c 65  __..    variable
2e40: 20 6d 79 62 72 61 6e 63 68 65 73 20 20 20 20 20   mybranches     
2e50: 7b 7d 20 3b 20 23 20 4c 69 73 74 20 6f 66 20 74  {} ; # List of t
2e60: 68 65 20 62 72 61 6e 63 68 65 73 20 28 6f 62 6a  he branches (obj
2e70: 73 29 20 73 70 61 77 6e 65 64 20 62 79 20 74 68  s) spawned by th
2e80: 69 73 20 72 65 76 69 73 69 6f 6e 2e 0a 20 20 20  is revision..   
2e90: 20 76 61 72 69 61 62 6c 65 20 6d 79 70 61 72 65   variable mypare
2ea0: 6e 74 62 72 61 6e 63 68 20 7b 7d 20 3b 20 23 20  ntbranch {} ; # 
2eb0: 46 6f 72 20 74 68 65 20 66 69 72 73 74 20 72 65  For the first re
2ec0: 76 69 73 69 6f 6e 20 6f 6e 20 61 20 62 72 61 6e  vision on a bran
2ed0: 63 68 20 74 68 65 20 72 65 6c 65 76 61 6e 74 0a  ch the relevant.
2ee0: 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20      #           
2ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b                 ;
2f00: 20 23 20 62 72 61 6e 63 68 20 6f 62 6a 65 63 74   # branch object
2f10: 2e 20 54 68 69 73 20 61 6c 73 6f 20 61 6c 6c 6f  . This also allo
2f20: 77 73 20 75 73 20 74 6f 20 64 65 74 65 72 6d 69  ws us to determi
2f30: 6e 65 20 69 66 0a 20 20 20 20 23 20 20 20 20 20  ne if.    #     
2f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f50: 20 20 20 20 20 3b 20 23 20 6d 79 70 61 72 65 6e       ; # myparen
2f60: 74 20 69 73 20 69 6e 20 74 68 65 20 73 61 6d 65  t is in the same
2f70: 20 4c 4f 44 2c 20 6f 72 20 74 68 65 20 72 65 76   LOD, or the rev
2f80: 69 73 69 6f 6e 20 74 68 65 0a 20 20 20 20 23 20  ision the.    # 
2f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fa0: 20 20 20 20 20 20 20 20 20 3b 20 23 20 62 72 61           ; # bra
2fb0: 6e 63 68 20 73 70 61 77 6e 65 64 20 66 72 6f 6d  nch spawned from
2fc0: 2e 0a 0a 20 20 20 20 23 20 4c 69 73 74 20 6f 66  ...    # List of
2fd0: 20 74 68 65 20 72 65 76 69 73 69 6f 6e 20 6f 62   the revision ob
2fe0: 6a 65 63 74 73 20 6f 66 20 74 68 65 20 66 69 72  jects of the fir
2ff0: 73 74 20 63 6f 6d 6d 69 74 73 20 6f 6e 20 61 6e  st commits on an
3000: 79 0a 20 20 20 20 23 20 62 72 61 6e 63 68 65 73  y.    # branches
3010: 20 73 70 61 77 6e 65 64 20 62 79 20 74 68 69 73   spawned by this
3020: 20 72 65 76 69 73 69 6f 6e 20 6f 6e 20 77 68 69   revision on whi
3030: 63 68 20 63 6f 6d 6d 69 74 73 20 6f 63 63 75 72  ch commits occur
3040: 72 65 64 2e 0a 20 20 20 20 23 20 54 68 69 73 20  red..    # This 
3050: 64 65 70 65 6e 64 65 6e 63 79 20 69 73 20 6b 65  dependency is ke
3060: 70 74 20 65 78 70 6c 69 63 69 74 6c 79 20 62 65  pt explicitly be
3070: 63 61 75 73 65 20 6f 74 68 65 72 77 69 73 65 20  cause otherwise 
3080: 61 0a 20 20 20 20 23 20 72 65 76 69 73 69 6f 6e  a.    # revision
3090: 2d 6f 6e 6c 79 20 74 6f 70 6f 6c 6f 67 69 63 61  -only topologica
30a0: 6c 20 73 6f 72 74 20 77 6f 75 6c 64 20 6d 69 73  l sort would mis
30b0: 73 20 74 68 65 20 64 65 70 65 6e 64 65 6e 63 79  s the dependency
30c0: 20 74 68 61 74 0a 20 20 20 20 23 20 65 78 69 73   that.    # exis
30d0: 74 73 20 76 69 61 20 2d 3e 20 6d 79 62 72 61 6e  ts via -> mybran
30e0: 63 68 65 73 2e 0a 0a 20 20 20 20 76 61 72 69 61  ches...    varia
30f0: 62 6c 65 20 6d 79 62 72 61 6e 63 68 63 68 69 6c  ble mybranchchil
3100: 64 72 65 6e 20 7b 7d 20 3b 20 23 20 4c 69 73 74  dren {} ; # List
3110: 20 6f 66 20 74 68 65 20 72 65 76 69 73 69 6f 6e   of the revision
3120: 73 20 28 6f 62 6a 73 29 20 77 68 69 63 68 20 61  s (objs) which a
3130: 72 65 20 74 68 65 20 66 69 72 73 74 0a 20 20 20  re the first.   
3140: 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20   #              
3150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20                ; 
3160: 23 20 63 6f 6d 6d 69 74 73 20 6f 6e 20 61 6e 79  # commits on any
3170: 20 6f 66 20 74 68 65 20 62 72 61 6e 63 68 65 73   of the branches
3180: 20 73 70 61 77 6e 65 64 20 66 72 6f 6d 20 74 68   spawned from th
3190: 69 73 0a 20 20 20 20 23 20 20 20 20 20 20 20 20  is.    #        
31a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31b0: 20 20 20 20 3b 20 23 20 72 65 76 69 73 69 6f 6e      ; # revision
31c0: 2e 20 54 68 65 20 64 65 70 65 6e 64 65 6e 63 79  . The dependency
31d0: 20 69 73 20 6b 65 70 74 20 65 78 70 6c 69 63 69   is kept explici
31e0: 74 6c 79 20 74 6f 0a 20 20 20 20 23 20 20 20 20  tly to.    #    
31f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3200: 20 20 20 20 20 20 20 20 3b 20 23 20 65 6e 73 75          ; # ensu
3210: 72 65 20 74 68 61 74 20 61 20 72 65 76 69 73 69  re that a revisi
3220: 6f 6e 2d 6f 6e 6c 79 20 74 6f 70 6f 6c 6f 67 69  on-only topologi
3230: 63 61 6c 20 73 6f 72 74 20 77 69 6c 6c 0a 20 20  cal sort will.  
3240: 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20    #             
3250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b                 ;
3260: 20 23 20 6e 6f 74 20 6d 69 73 73 20 69 74 2c 20   # not miss it, 
3270: 61 73 20 69 74 20 6f 74 68 65 72 77 69 73 65 20  as it otherwise 
3280: 65 78 69 73 74 73 20 6f 6e 6c 79 20 76 69 61 0a  exists only via.
3290: 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20      #           
32a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32b0: 20 3b 20 23 20 6d 79 62 72 61 6e 63 68 65 73 2e   ; # mybranches.
32c0: 0a 0a 20 20 20 20 23 20 54 61 67 20 6c 69 6e 6b  ..    # Tag link
32d0: 61 67 65 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  age ____________
32e0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20  ____________..  
32f0: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 74 61 67    variable mytag
3300: 73 20 7b 7d 20 3b 20 23 20 4c 69 73 74 20 6f 66  s {} ; # List of
3310: 20 74 61 67 73 20 28 6f 62 6a 73 29 20 61 73 73   tags (objs) ass
3320: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69  ociated with thi
3330: 73 20 72 65 76 69 73 69 6f 6e 2e 0a 0a 20 20 20  s revision...   
3340: 20 23 20 4d 6f 72 65 20 64 65 72 69 76 65 64 20   # More derived 
3350: 64 61 74 61 0a 0a 20 20 20 20 76 61 72 69 61 62  data..    variab
3360: 6c 65 20 6d 79 6f 70 65 72 61 74 69 6f 6e 20 20  le myoperation  
3370: 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 4f 6e 65        {} ; # One
3380: 20 6f 66 20 27 61 64 64 27 2c 20 27 63 68 61 6e   of 'add', 'chan
3390: 67 65 27 2c 20 27 64 65 6c 65 74 65 27 2c 20 6f  ge', 'delete', o
33a0: 72 0a 09 09 09 20 20 20 20 20 20 20 20 20 20 20  r....           
33b0: 20 20 23 20 27 6e 6f 74 68 69 6e 67 27 2e 20 44    # 'nothing'. D
33c0: 65 72 69 76 65 64 20 66 72 6f 6d 20 6f 75 72 20  erived from our 
33d0: 61 6e 64 0a 09 09 09 20 20 20 20 20 20 20 20 20  and....         
33e0: 20 20 20 20 23 20 69 74 73 20 70 61 72 65 6e 74      # its parent
33f0: 27 73 20 73 74 61 74 65 2e 0a 20 20 20 20 76 61  's state..    va
3400: 72 69 61 62 6c 65 20 6d 79 69 73 6f 6e 64 65 66  riable myisondef
3410: 61 75 6c 74 62 72 61 6e 63 68 20 30 20 3b 20 23  aultbranch 0 ; #
3420: 20 42 6f 6f 6c 65 61 6e 20 66 6c 61 67 2c 20 73   Boolean flag, s
3430: 65 74 20 69 66 20 74 68 65 0a 09 09 09 09 20 20  et if the.....  
3440: 20 20 20 23 20 72 65 76 69 73 69 6f 6e 20 69 73     # revision is
3450: 20 6f 6e 20 74 68 65 20 6e 6f 6e 2d 74 72 75 6e   on the non-trun
3460: 6b 0a 09 09 09 09 20 20 20 20 20 23 20 64 65 66  k.....     # def
3470: 61 75 6c 74 20 62 72 61 6e 63 68 2c 20 61 6b 61  ault branch, aka
3480: 20 76 65 6e 64 6f 72 0a 09 09 09 09 20 20 20 20   vendor.....    
3490: 20 23 20 62 72 61 6e 63 68 2e 0a 20 20 20 20 76   # branch..    v
34a0: 61 72 69 61 62 6c 65 20 6d 79 64 62 70 61 72 65  ariable mydbpare
34b0: 6e 74 20 20 20 20 20 20 20 20 20 7b 7d 20 3b 20  nt         {} ; 
34c0: 23 20 52 65 66 65 72 65 6e 63 65 20 74 6f 20 74  # Reference to t
34d0: 68 65 20 6c 61 73 74 20 72 65 76 69 73 69 6f 6e  he last revision
34e0: 0a 09 09 09 09 20 20 20 20 20 23 20 6f 6e 20 74  .....     # on t
34f0: 68 65 20 76 65 6e 64 6f 72 20 62 72 61 6e 63 68  he vendor branch
3500: 20 69 66 20 74 68 69 73 20 69 73 0a 09 09 09 09   if this is.....
3510: 20 20 20 20 20 23 20 74 68 65 20 70 72 69 6d 61       # the prima
3520: 72 79 20 63 68 69 6c 64 20 6f 66 20 74 68 65 0a  ry child of the.
3530: 09 09 09 09 20 20 20 20 20 23 20 72 65 67 75 6c  ....     # regul
3540: 61 72 20 72 6f 6f 74 2e 0a 20 20 20 20 76 61 72  ar root..    var
3550: 69 61 62 6c 65 20 6d 79 64 62 63 68 69 6c 64 20  iable mydbchild 
3560: 20 20 20 20 20 20 20 20 20 7b 7d 20 3b 20 23 20           {} ; # 
3570: 52 65 66 65 72 65 6e 63 65 20 74 6f 20 74 68 65  Reference to the
3580: 20 70 72 69 6d 61 72 79 20 63 68 69 6c 64 0a 09   primary child..
3590: 09 09 09 20 20 20 20 20 23 20 6f 66 20 74 68 65  ...     # of the
35a0: 20 72 65 67 75 6c 61 72 20 72 6f 6f 74 20 69 66   regular root if
35b0: 20 74 68 69 73 20 69 73 0a 09 09 09 09 20 20 20   this is.....   
35c0: 20 20 23 20 74 68 65 20 6c 61 73 74 20 72 65 76    # the last rev
35d0: 69 73 69 6f 6e 20 6f 6e 20 74 68 65 20 76 65 6e  ision on the ven
35e0: 64 6f 72 0a 09 09 09 09 20 20 20 20 20 23 20 62  dor.....     # b
35f0: 72 61 6e 63 68 2e 0a 0a 20 20 20 20 23 20 64 65  ranch...    # de
3600: 61 64 28 73 65 6c 66 29 20 78 20 64 65 61 64 28  ad(self) x dead(
3610: 70 61 72 65 6e 74 29 20 2d 3e 20 6f 70 65 72 61  parent) -> opera
3620: 74 69 6f 6e 0a 20 20 20 20 74 79 70 65 76 61 72  tion.    typevar
3630: 69 61 62 6c 65 20 6d 79 6f 70 73 74 61 74 65 20  iable myopstate 
3640: 2d 61 72 72 61 79 20 7b 0a 09 7b 30 20 30 7d 20  -array {..{0 0} 
3650: 63 68 61 6e 67 65 0a 09 7b 30 20 31 7d 20 64 65  change..{0 1} de
3660: 6c 65 74 65 0a 09 7b 31 20 30 7d 20 61 64 64 0a  lete..{1 0} add.
3670: 09 7b 31 20 31 7d 20 6e 6f 74 68 69 6e 67 0a 20  .{1 1} nothing. 
3680: 20 20 20 7d 0a 0a 20 20 20 20 23 20 23 20 23 23     }..    # # ##
3690: 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23   ### ##### #####
36a0: 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23  ### ############
36b0: 23 0a 20 20 20 20 23 23 20 49 6e 74 65 72 6e 61  #.    ## Interna
36c0: 6c 20 6d 65 74 68 6f 64 73 0a 0a 20 20 20 20 23  l methods..    #
36d0: 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20   # ## ### ##### 
36e0: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23  ######## #######
36f0: 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 43 6f  ######.    ## Co
3700: 6e 66 69 67 75 72 61 74 69 6f 6e 0a 0a 20 20 20  nfiguration..   
3710: 20 70 72 61 67 6d 61 20 2d 68 61 73 74 79 70 65   pragma -hastype
3720: 69 6e 66 6f 20 20 20 20 6e 6f 20 20 3b 20 23 20  info    no  ; # 
3730: 6e 6f 20 74 79 70 65 20 69 6e 74 72 6f 73 70 65  no type introspe
3740: 63 74 69 6f 6e 0a 20 20 20 20 70 72 61 67 6d 61  ction.    pragma
3750: 20 2d 68 61 73 69 6e 66 6f 20 20 20 20 20 20 20   -hasinfo       
3760: 20 6e 6f 20 20 3b 20 23 20 6e 6f 20 6f 62 6a 65   no  ; # no obje
3770: 63 74 20 69 6e 74 72 6f 73 70 65 63 74 69 6f 6e  ct introspection
3780: 0a 20 20 20 20 70 72 61 67 6d 61 20 2d 73 69 6d  .    pragma -sim
3790: 70 6c 65 64 69 73 70 61 74 63 68 20 79 65 73 20  pledispatch yes 
37a0: 3b 20 23 20 73 69 6d 70 6c 65 20 66 61 73 74 20  ; # simple fast 
37b0: 64 69 73 70 61 74 63 68 0a 0a 20 20 20 20 23 20  dispatch..    # 
37c0: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23  # ## ### ##### #
37d0: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23  ####### ########
37e0: 23 23 23 23 23 0a 7d 0a 0a 6e 61 6d 65 73 70 61  #####.}..namespa
37f0: 63 65 20 65 76 61 6c 20 3a 3a 76 63 3a 3a 66 6f  ce eval ::vc::fo
3800: 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76  ssil::import::cv
3810: 73 3a 3a 66 69 6c 65 20 7b 0a 20 20 20 20 6e 61  s::file {.    na
3820: 6d 65 73 70 61 63 65 20 65 78 70 6f 72 74 20 72  mespace export r
3830: 65 76 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 65  ev.    namespace
3840: 20 65 76 61 6c 20 72 65 76 20 7b 0a 09 6e 61 6d   eval rev {..nam
3850: 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a  espace import ::
3860: 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6d 69 73 63 3a  vc::tools::misc:
3870: 3a 2a 0a 20 20 20 20 7d 0a 7d 0a 0a 23 20 23 20  :*.    }.}..# # 
3880: 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23  ## ### ##### ###
3890: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23  ##### ##########
38a0: 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23  ### ############
38b0: 23 23 23 23 23 23 23 23 23 0a 23 23 20 52 65 61  #########.## Rea
38c0: 64 79 0a 0a 70 61 63 6b 61 67 65 20 70 72 6f 76  dy..package prov
38d0: 69 64 65 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a  ide vc::fossil::
38e0: 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 66 69 6c  import::cvs::fil
38f0: 65 3a 3a 72 65 76 20 31 2e 30 0a 72 65 74 75 72  e::rev 1.0.retur
3900: 6e 0a                                            n.