Hex Artifact Content
Not logged in

Artifact b11a935cc8d103e3ec455b2acf48136b5cafcc83:

File tools/cvs2fossil/lib/c2f_fsym.tcl part of check-in [66235f2430] - Updated the copyright information of all files touched in the new year. by aku on 2008-02-06 05:04:12. Also file tools/cvs2fossil/lib/c2f_fsym.tcl part of check-in [6b78df3861] - Merge in changes from Andreas's branch. by drh on 2008-02-08 21:52:21.

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 2d 32 30 30 38 20 41 6e 64 72 65 61 73 20  07-2008 Andreas 
0070: 4b 75 70 72 69 65 73 2e 0a 23 0a 23 20 54 68 69  Kupries..#.# Thi
0080: 73 20 73 6f 66 74 77 61 72 65 20 69 73 20 6c 69  s software is li
0090: 63 65 6e 73 65 64 20 61 73 20 64 65 73 63 72 69  censed as descri
00a0: 62 65 64 20 69 6e 20 74 68 65 20 66 69 6c 65 20  bed in the file 
00b0: 4c 49 43 45 4e 53 45 2c 20 77 68 69 63 68 0a 23  LICENSE, which.#
00c0: 20 79 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65   you should have
00d0: 20 72 65 63 65 69 76 65 64 20 61 73 20 70 61 72   received as par
00e0: 74 20 6f 66 20 74 68 69 73 20 64 69 73 74 72 69  t of this distri
00f0: 62 75 74 69 6f 6e 2e 0a 23 0a 23 20 54 68 69 73  bution..#.# This
0100: 20 73 6f 66 74 77 61 72 65 20 63 6f 6e 73 69 73   software consis
0110: 74 73 20 6f 66 20 76 6f 6c 75 6e 74 61 72 79 20  ts of voluntary 
0120: 63 6f 6e 74 72 69 62 75 74 69 6f 6e 73 20 6d 61  contributions ma
0130: 64 65 20 62 79 20 6d 61 6e 79 0a 23 20 69 6e 64  de by many.# ind
0140: 69 76 69 64 75 61 6c 73 2e 20 20 46 6f 72 20 65  ividuals.  For e
0150: 78 61 63 74 20 63 6f 6e 74 72 69 62 75 74 69 6f  xact contributio
0160: 6e 20 68 69 73 74 6f 72 79 2c 20 73 65 65 20 74  n history, see t
0170: 68 65 20 72 65 76 69 73 69 6f 6e 0a 23 20 68 69  he revision.# hi
0180: 73 74 6f 72 79 20 61 6e 64 20 6c 6f 67 73 2c 20  story and logs, 
0190: 61 76 61 69 6c 61 62 6c 65 20 61 74 20 68 74 74  available at htt
01a0: 70 3a 2f 2f 66 6f 73 73 69 6c 2d 73 63 6d 2e 68  p://fossil-scm.h
01b0: 77 61 63 69 2e 63 6f 6d 2f 66 6f 73 73 69 6c 0a  waci.com/fossil.
01c0: 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23  # # ## ### #####
01d0: 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23   ######## ######
01e0: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23  ####### ########
01f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 0a 23  #############..#
0200: 23 20 53 79 6d 62 6f 6c 73 20 28 54 61 67 73 2c  # Symbols (Tags,
0210: 20 42 72 61 6e 63 68 65 73 29 20 70 65 72 20 66   Branches) per f
0220: 69 6c 65 2e 0a 0a 23 20 23 20 23 23 20 23 23 23  ile...# # ## ###
0230: 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20   ##### ######## 
0240: 23 23 23 23 23 23 23 23 23 23 23 23 23 20 23 23  ############# ##
0250: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0260: 23 23 23 0a 23 23 20 52 65 71 75 69 72 65 6d 65  ###.## Requireme
0270: 6e 74 73 0a 0a 70 61 63 6b 61 67 65 20 72 65 71  nts..package req
0280: 75 69 72 65 20 54 63 6c 20 38 2e 34 20 20 20 20  uire Tcl 8.4    
0290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
02a0: 20 20 20 20 20 20 20 20 20 3b 20 23 20 52 65 71           ; # Req
02b0: 75 69 72 65 64 20 72 75 6e 74 69 6d 65 2e 0a 70  uired runtime..p
02c0: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 73  ackage require s
02d0: 6e 69 74 20 20 20 20 20 20 20 20 20 20 20 20 20  nit             
02e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
02f0: 20 20 20 3b 20 23 20 4f 4f 20 73 79 73 74 65 6d     ; # OO system
0300: 2e 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72  ..package requir
0310: 65 20 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 74 72 6f  e vc::tools::tro
0320: 75 62 6c 65 20 20 20 20 20 20 20 20 20 20 20 20  uble            
0330: 20 20 20 20 20 20 3b 20 23 20 45 72 72 6f 72 20        ; # Error 
0340: 72 65 70 6f 72 74 69 6e 67 2e 0a 70 61 63 6b 61  reporting..packa
0350: 67 65 20 72 65 71 75 69 72 65 20 76 63 3a 3a 66  ge require vc::f
0360: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63  ossil::import::c
0370: 76 73 3a 3a 66 69 6c 65 3a 3a 72 65 76 20 20 3b  vs::file::rev  ;
0380: 20 23 20 43 56 53 20 70 65 72 20 66 69 6c 65 20   # CVS per file 
0390: 72 65 76 69 73 69 6f 6e 73 2e 0a 70 61 63 6b 61  revisions..packa
03a0: 67 65 20 72 65 71 75 69 72 65 20 76 63 3a 3a 66  ge require vc::f
03b0: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63  ossil::import::c
03c0: 76 73 3a 3a 73 74 61 74 65 20 20 20 20 20 20 3b  vs::state      ;
03d0: 20 23 20 53 74 61 74 65 20 73 74 6f 72 61 67 65   # State storage
03e0: 2e 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72  ..package requir
03f0: 65 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d  e vc::fossil::im
0400: 70 6f 72 74 3a 3a 63 76 73 3a 3a 69 6e 74 65 67  port::cvs::integ
0410: 72 69 74 79 20 20 3b 20 23 20 53 74 61 74 65 20  rity  ; # State 
0420: 69 6e 74 65 67 72 69 74 79 20 63 68 65 63 6b 73  integrity checks
0430: 2e 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23 23  ...# # ## ### ##
0440: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23  ### ######## ###
0450: 23 23 23 23 23 23 23 23 23 23 20 23 23 23 23 23  ########## #####
0460: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0470: 0a 23 23 0a 0a 73 6e 69 74 3a 3a 74 79 70 65 20  .##..snit::type 
0480: 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d  ::vc::fossil::im
0490: 70 6f 72 74 3a 3a 63 76 73 3a 3a 66 69 6c 65 3a  port::cvs::file:
04a0: 3a 73 79 6d 20 7b 0a 20 20 20 20 23 20 23 20 23  :sym {.    # # #
04b0: 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23  # ### ##### ####
04c0: 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23  #### ###########
04d0: 23 23 0a 20 20 20 20 23 23 20 50 75 62 6c 69 63  ##.    ## Public
04e0: 20 41 50 49 0a 0a 20 20 20 20 63 6f 6e 73 74 72   API..    constr
04f0: 75 63 74 6f 72 20 7b 73 79 6d 74 79 70 65 20 6e  uctor {symtype n
0500: 72 20 73 79 6d 62 6f 6c 20 66 69 6c 65 7d 20 7b  r symbol file} {
0510: 0a 09 73 65 74 20 6d 79 66 69 6c 65 20 20 20 24  ..set myfile   $
0520: 66 69 6c 65 0a 09 73 65 74 20 6d 79 74 79 70 65  file..set mytype
0530: 20 20 20 24 73 79 6d 74 79 70 65 0a 09 73 65 74     $symtype..set
0540: 20 6d 79 6e 72 20 20 20 20 20 24 6e 72 0a 09 73   mynr     $nr..s
0550: 65 74 20 6d 79 73 79 6d 62 6f 6c 20 24 73 79 6d  et mysymbol $sym
0560: 62 6f 6c 0a 0a 09 73 77 69 74 63 68 20 2d 65 78  bol...switch -ex
0570: 61 63 74 20 2d 2d 20 24 6d 79 74 79 70 65 20 7b  act -- $mytype {
0580: 0a 09 20 20 20 20 62 72 61 6e 63 68 20 20 7b 20  ..    branch  { 
0590: 53 65 74 75 70 42 72 61 6e 63 68 20 3b 20 72 65  SetupBranch ; re
05a0: 74 75 72 6e 20 7d 0a 09 20 20 20 20 74 61 67 20  turn }..    tag 
05b0: 20 20 20 20 7b 20 72 65 74 75 72 6e 20 7d 0a 09      { return }..
05c0: 7d 0a 09 69 6e 74 65 67 72 69 74 79 20 61 73 73  }..integrity ass
05d0: 65 72 74 20 30 20 7b 42 61 64 20 73 79 6d 62 6f  ert 0 {Bad symbo
05e0: 6c 20 74 79 70 65 20 27 24 6d 79 74 79 70 65 27  l type '$mytype'
05f0: 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a  }..return.    }.
0600: 0a 20 20 20 20 6d 65 74 68 6f 64 20 64 65 66 69  .    method defi
0610: 64 20 7b 7d 20 7b 0a 09 73 65 74 20 6d 79 69 64  d {} {..set myid
0620: 20 5b 69 6e 63 72 20 6d 79 69 64 63 6f 75 6e 74   [incr myidcount
0630: 65 72 5d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20  er]..return.    
0640: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 66 69  }..    method fi
0650: 64 20 20 20 20 7b 7d 20 7b 20 72 65 74 75 72 6e  d    {} { return
0660: 20 24 6d 79 69 64 20 20 20 20 20 7d 0a 20 20 20   $myid     }.   
0670: 20 6d 65 74 68 6f 64 20 73 79 6d 62 6f 6c 20 7b   method symbol {
0680: 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 73 79  } { return $mysy
0690: 6d 62 6f 6c 20 7d 0a 0a 20 20 20 20 23 20 53 79  mbol }..    # Sy
06a0: 6d 62 6f 6c 20 61 63 65 73 73 6f 72 20 6d 65 74  mbol acessor met
06b0: 68 6f 64 73 2e 0a 0a 20 20 20 20 64 65 6c 65 67  hods...    deleg
06c0: 61 74 65 20 6d 65 74 68 6f 64 20 6e 61 6d 65 20  ate method name 
06d0: 74 6f 20 6d 79 73 79 6d 62 6f 6c 0a 20 20 20 20  to mysymbol.    
06e0: 64 65 6c 65 67 61 74 65 20 6d 65 74 68 6f 64 20  delegate method 
06f0: 69 64 20 20 20 74 6f 20 6d 79 73 79 6d 62 6f 6c  id   to mysymbol
0700: 0a 0a 20 20 20 20 23 20 53 79 6d 62 6f 6c 20 61  ..    # Symbol a
0710: 67 67 72 65 67 61 74 69 6f 6e 20 6d 65 74 68 6f  ggregation metho
0720: 64 73 0a 0a 20 20 20 20 64 65 6c 65 67 61 74 65  ds..    delegate
0730: 20 6d 65 74 68 6f 64 20 63 6f 75 6e 74 61 73 62   method countasb
0740: 72 61 6e 63 68 20 74 6f 20 6d 79 73 79 6d 62 6f  ranch to mysymbo
0750: 6c 0a 20 20 20 20 64 65 6c 65 67 61 74 65 20 6d  l.    delegate m
0760: 65 74 68 6f 64 20 63 6f 75 6e 74 61 73 74 61 67  ethod countastag
0770: 20 20 20 20 74 6f 20 6d 79 73 79 6d 62 6f 6c 0a      to mysymbol.
0780: 20 20 20 20 64 65 6c 65 67 61 74 65 20 6d 65 74      delegate met
0790: 68 6f 64 20 63 6f 75 6e 74 61 63 6f 6d 6d 69 74  hod countacommit
07a0: 20 20 74 6f 20 6d 79 73 79 6d 62 6f 6c 0a 0a 20    to mysymbol.. 
07b0: 20 20 20 6d 65 74 68 6f 64 20 62 6c 6f 63 6b 65     method blocke
07c0: 64 62 79 20 7b 66 73 79 6d 62 6f 6c 7d 20 7b 0a  dby {fsymbol} {.
07d0: 09 24 6d 79 73 79 6d 62 6f 6c 20 62 6c 6f 63 6b  .$mysymbol block
07e0: 65 64 62 79 20 5b 24 66 73 79 6d 62 6f 6c 20 73  edby [$fsymbol s
07f0: 79 6d 62 6f 6c 5d 0a 09 72 65 74 75 72 6e 0a 20  ymbol]..return. 
0800: 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64     }..    method
0810: 20 70 6f 73 73 69 62 6c 65 70 61 72 65 6e 74 73   possibleparents
0820: 20 7b 7d 20 7b 0a 09 73 77 69 74 63 68 20 2d 65   {} {..switch -e
0830: 78 61 63 74 20 2d 2d 20 24 6d 79 74 79 70 65 20  xact -- $mytype 
0840: 7b 0a 09 20 20 20 20 62 72 61 6e 63 68 20 7b 20  {..    branch { 
0850: 24 73 65 6c 66 20 42 72 61 6e 63 68 50 61 72 65  $self BranchPare
0860: 6e 74 73 20 7d 0a 09 20 20 20 20 74 61 67 20 20  nts }..    tag  
0870: 20 20 7b 20 24 73 65 6c 66 20 54 61 67 50 61 72    { $self TagPar
0880: 65 6e 74 73 20 20 20 20 7d 0a 09 7d 0a 09 72 65  ents    }..}..re
0890: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20  turn.    }..    
08a0: 6d 65 74 68 6f 64 20 42 72 61 6e 63 68 50 61 72  method BranchPar
08b0: 65 6e 74 73 20 7b 7d 20 7b 0a 09 23 20 54 68 65  ents {} {..# The
08c0: 20 22 6f 62 76 69 6f 75 73 22 20 70 61 72 65 6e   "obvious" paren
08d0: 74 20 6f 66 20 61 20 62 72 61 6e 63 68 20 69 73  t of a branch is
08e0: 20 74 68 65 20 62 72 61 6e 63 68 20 68 6f 6c 64   the branch hold
08f0: 69 6e 67 20 74 68 65 0a 09 23 20 72 65 76 69 73  ing the..# revis
0900: 69 6f 6e 20 73 70 61 77 6e 69 6e 67 20 74 68 65  ion spawning the
0910: 20 62 72 61 6e 63 68 2e 20 41 6e 79 20 6f 74 68   branch. Any oth
0920: 65 72 20 62 72 61 6e 63 68 65 73 20 74 68 61 74  er branches that
0930: 20 61 72 65 0a 09 23 20 72 6f 6f 74 65 64 20 61   are..# rooted a
0940: 74 20 74 68 65 20 73 61 6d 65 20 72 65 76 69 73  t the same revis
0950: 69 6f 6e 20 61 6e 64 20 77 65 72 65 20 63 6f 6d  ion and were com
0960: 6d 69 74 74 65 64 20 65 61 72 6c 69 65 72 20 74  mitted earlier t
0970: 68 61 6e 0a 09 23 20 74 68 65 20 62 72 61 6e 63  han..# the branc
0980: 68 20 61 72 65 20 61 6c 73 6f 20 70 6f 73 73 69  h are also possi
0990: 62 6c 65 20 70 61 72 65 6e 74 73 2e 0a 0a 09 23  ble parents....#
09a0: 20 49 67 6e 6f 72 65 20 74 68 69 73 20 69 66 20   Ignore this if 
09b0: 74 68 65 20 62 72 61 6e 63 68 20 73 79 6d 62 6f  the branch symbo
09c0: 6c 20 69 73 20 64 65 74 61 63 68 65 64 2e 0a 09  l is detached...
09d0: 69 66 20 7b 24 6d 79 62 72 61 6e 63 68 70 61 72  if {$mybranchpar
09e0: 65 6e 74 20 65 71 20 22 22 7d 20 72 65 74 75 72  ent eq ""} retur
09f0: 6e 0a 0a 09 24 6d 79 73 79 6d 62 6f 6c 20 70 6f  n...$mysymbol po
0a00: 73 73 69 62 6c 65 70 61 72 65 6e 74 20 5b 5b 24  ssibleparent [[$
0a10: 6d 79 62 72 61 6e 63 68 70 61 72 65 6e 74 20 6c  mybranchparent l
0a20: 6f 64 5d 20 73 79 6d 62 6f 6c 5d 0a 0a 09 66 6f  od] symbol]...fo
0a30: 72 65 61 63 68 20 62 72 61 6e 63 68 20 5b 24 6d  reach branch [$m
0a40: 79 62 72 61 6e 63 68 70 61 72 65 6e 74 20 62 72  ybranchparent br
0a50: 61 6e 63 68 65 73 5d 20 7b 0a 09 20 20 20 20 23  anches] {..    #
0a60: 20 41 20 62 72 61 6e 63 68 20 63 61 6e 6e 6f 74   A branch cannot
0a70: 20 62 65 20 69 74 73 20 6f 77 6e 20 70 61 72 65   be its own pare
0a80: 6e 74 2e 20 4e 6f 72 20 63 61 6e 20 61 20 62 72  nt. Nor can a br
0a90: 61 6e 63 68 0a 09 20 20 20 20 23 20 63 72 65 61  anch..    # crea
0aa0: 74 65 64 20 61 66 74 65 72 20 74 68 69 73 20 6f  ted after this o
0ab0: 6e 65 20 62 65 20 69 74 73 20 70 61 72 65 6e 74  ne be its parent
0ac0: 2e 20 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61  . This means tha
0ad0: 74 20 77 65 0a 09 20 20 20 20 23 20 63 61 6e 20  t we..    # can 
0ae0: 61 62 6f 72 74 20 74 68 65 20 6c 6f 6f 70 20 77  abort the loop w
0af0: 68 65 6e 20 77 65 20 68 61 76 65 20 72 65 61 63  hen we have reac
0b00: 68 65 64 20 6f 75 72 73 65 6c 76 65 73 20 69 6e  hed ourselves in
0b10: 20 74 68 65 0a 09 20 20 20 20 23 20 6c 69 73 74   the..    # list
0b20: 20 6f 66 20 62 72 61 6e 63 68 65 73 2e 20 48 65   of branches. He
0b30: 72 65 20 74 68 65 20 6f 72 64 65 72 20 6f 66 20  re the order of 
0b40: 66 69 6c 65 3a 3a 72 65 76 2e 6d 79 62 72 61 6e  file::rev.mybran
0b50: 63 68 65 73 0a 09 20 20 20 20 23 20 63 6f 6d 65  ches..    # come
0b60: 73 20 69 6e 74 6f 20 70 6c 61 79 2c 20 61 73 20  s into play, as 
0b70: 63 72 65 61 74 65 64 20 62 79 20 66 69 6c 65 3a  created by file:
0b80: 3a 72 65 76 3a 3a 73 6f 72 74 62 72 61 6e 63 68  :rev::sortbranch
0b90: 65 73 2e 0a 0a 09 20 20 20 20 69 66 20 7b 24 62  es....    if {$b
0ba0: 72 61 6e 63 68 20 65 71 20 24 73 65 6c 66 7d 20  ranch eq $self} 
0bb0: 62 72 65 61 6b 0a 09 20 20 20 20 24 6d 79 73 79  break..    $mysy
0bc0: 6d 62 6f 6c 20 70 6f 73 73 69 62 6c 65 70 61 72  mbol possiblepar
0bd0: 65 6e 74 20 5b 24 62 72 61 6e 63 68 20 73 79 6d  ent [$branch sym
0be0: 62 6f 6c 5d 0a 09 7d 0a 09 72 65 74 75 72 6e 0a  bol]..}..return.
0bf0: 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f      }..    metho
0c00: 64 20 54 61 67 50 61 72 65 6e 74 73 20 7b 7d 20  d TagParents {} 
0c10: 7b 0a 09 23 20 54 68 65 20 22 6f 62 76 69 6f 75  {..# The "obviou
0c20: 73 22 20 70 61 72 65 6e 74 20 6f 66 20 61 20 74  s" parent of a t
0c30: 61 67 20 69 73 20 74 68 65 20 62 72 61 6e 63 68  ag is the branch
0c40: 20 68 6f 6c 64 69 6e 67 20 74 68 65 0a 09 23 20   holding the..# 
0c50: 72 65 76 69 73 69 6f 6e 20 73 70 61 77 6e 69 6e  revision spawnin
0c60: 67 20 74 68 65 20 74 61 67 2e 20 42 72 61 6e 63  g the tag. Branc
0c70: 68 65 73 20 74 68 61 74 20 61 72 65 20 73 70 61  hes that are spa
0c80: 77 6e 65 64 20 62 79 20 74 68 65 0a 09 23 20 73  wned by the..# s
0c90: 61 6d 65 20 72 65 76 69 73 69 6f 6e 20 61 72 65  ame revision are
0ca0: 20 61 6c 73 6f 20 70 6f 73 73 69 62 6c 65 20 70   also possible p
0cb0: 61 72 65 6e 74 73 2e 0a 0a 09 24 6d 79 73 79 6d  arents....$mysym
0cc0: 62 6f 6c 20 70 6f 73 73 69 62 6c 65 70 61 72 65  bol possiblepare
0cd0: 6e 74 20 5b 5b 24 6d 79 74 61 67 72 65 76 20 6c  nt [[$mytagrev l
0ce0: 6f 64 5d 20 73 79 6d 62 6f 6c 5d 0a 0a 09 66 6f  od] symbol]...fo
0cf0: 72 65 61 63 68 20 62 72 61 6e 63 68 20 5b 24 6d  reach branch [$m
0d00: 79 74 61 67 72 65 76 20 62 72 61 6e 63 68 65 73  ytagrev branches
0d10: 5d 20 7b 0a 09 20 20 20 20 24 6d 79 73 79 6d 62  ] {..    $mysymb
0d20: 6f 6c 20 70 6f 73 73 69 62 6c 65 70 61 72 65 6e  ol possibleparen
0d30: 74 20 5b 24 62 72 61 6e 63 68 20 73 79 6d 62 6f  t [$branch symbo
0d40: 6c 5d 0a 09 7d 0a 09 72 65 74 75 72 6e 0a 20 20  l]..}..return.  
0d50: 20 20 7d 0a 0a 20 20 20 20 23 0a 0a 20 20 20 20    }..    #..    
0d60: 6d 65 74 68 6f 64 20 69 73 74 72 75 6e 6b 20 7b  method istrunk {
0d70: 7d 20 7b 20 72 65 74 75 72 6e 20 30 20 7d 0a 0a  } { return 0 }..
0d80: 20 20 20 20 23 20 42 72 61 6e 63 68 20 61 63 65      # Branch ace
0d90: 73 73 6f 72 20 6d 65 74 68 6f 64 73 2e 0a 0a 20  ssor methods... 
0da0: 20 20 20 6d 65 74 68 6f 64 20 73 65 74 63 68 69     method setchi
0db0: 6c 64 72 65 76 6e 72 20 20 7b 72 65 76 6e 72 7d  ldrevnr  {revnr}
0dc0: 20 7b 0a 09 69 6e 74 65 67 72 69 74 79 20 61 73   {..integrity as
0dd0: 73 65 72 74 20 7b 24 6d 79 62 72 61 6e 63 68 63  sert {$mybranchc
0de0: 68 69 6c 64 72 65 76 6e 72 20 65 71 20 22 22 7d  hildrevnr eq ""}
0df0: 20 7b 43 68 69 6c 64 20 61 6c 72 65 61 64 79 20   {Child already 
0e00: 64 65 66 69 6e 65 64 7d 0a 09 73 65 74 20 6d 79  defined}..set my
0e10: 62 72 61 6e 63 68 63 68 69 6c 64 72 65 76 6e 72  branchchildrevnr
0e20: 20 24 72 65 76 6e 72 0a 09 72 65 74 75 72 6e 0a   $revnr..return.
0e30: 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f      }..    metho
0e40: 64 20 73 65 74 70 6f 73 69 74 69 6f 6e 20 20 7b  d setposition  {
0e50: 6e 7d 20 20 20 7b 20 73 65 74 20 6d 79 62 72 61  n}   { set mybra
0e60: 6e 63 68 70 6f 73 69 74 69 6f 6e 20 24 6e 20 3b  nchposition $n ;
0e70: 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 20 6d 65   return }.    me
0e80: 74 68 6f 64 20 73 65 74 70 61 72 65 6e 74 20 20  thod setparent  
0e90: 20 20 7b 72 65 76 7d 20 7b 20 73 65 74 20 6d 79    {rev} { set my
0ea0: 62 72 61 6e 63 68 70 61 72 65 6e 74 20 24 72 65  branchparent $re
0eb0: 76 20 3b 20 72 65 74 75 72 6e 20 7d 0a 20 20 20  v ; return }.   
0ec0: 20 6d 65 74 68 6f 64 20 73 65 74 63 68 69 6c 64   method setchild
0ed0: 20 20 20 20 20 7b 72 65 76 7d 20 7b 20 73 65 74       {rev} { set
0ee0: 20 6d 79 62 72 61 6e 63 68 63 68 69 6c 64 20 20   mybranchchild  
0ef0: 24 72 65 76 20 3b 20 72 65 74 75 72 6e 20 7d 0a  $rev ; return }.
0f00: 20 20 20 20 6d 65 74 68 6f 64 20 63 75 74 63 68      method cutch
0f10: 69 6c 64 20 20 20 20 20 7b 7d 20 20 20 20 7b 20  ild     {}    { 
0f20: 73 65 74 20 6d 79 62 72 61 6e 63 68 63 68 69 6c  set mybranchchil
0f30: 64 20 20 22 22 20 20 20 3b 20 72 65 74 75 72 6e  d  ""   ; return
0f40: 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 63 75   }.    method cu
0f50: 74 62 72 61 6e 63 68 70 61 72 65 6e 74 20 7b 7d  tbranchparent {}
0f60: 20 7b 20 73 65 74 20 6d 79 62 72 61 6e 63 68 70   { set mybranchp
0f70: 61 72 65 6e 74 20 22 22 20 20 20 3b 20 72 65 74  arent ""   ; ret
0f80: 75 72 6e 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f  urn }..    metho
0f90: 64 20 62 72 61 6e 63 68 6e 72 20 20 20 20 7b 7d  d branchnr    {}
0fa0: 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 6e 72 20   { return $mynr 
0fb0: 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 70 61 72  }.    method par
0fc0: 65 6e 74 72 65 76 6e 72 20 7b 7d 20 7b 20 72 65  entrevnr {} { re
0fd0: 74 75 72 6e 20 24 6d 79 62 72 61 6e 63 68 70 61  turn $mybranchpa
0fe0: 72 65 6e 74 72 65 76 6e 72 20 7d 0a 20 20 20 20  rentrevnr }.    
0ff0: 6d 65 74 68 6f 64 20 63 68 69 6c 64 72 65 76 6e  method childrevn
1000: 72 20 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24  r  {} { return $
1010: 6d 79 62 72 61 6e 63 68 63 68 69 6c 64 72 65 76  mybranchchildrev
1020: 6e 72 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20  nr }.    method 
1030: 68 61 73 63 68 69 6c 64 72 65 76 20 7b 7d 20 7b  haschildrev {} {
1040: 20 72 65 74 75 72 6e 20 5b 65 78 70 72 20 7b 24   return [expr {$
1050: 6d 79 62 72 61 6e 63 68 63 68 69 6c 64 72 65 76  mybranchchildrev
1060: 6e 72 20 6e 65 20 22 22 7d 5d 20 7d 0a 20 20 20  nr ne ""}] }.   
1070: 20 6d 65 74 68 6f 64 20 68 61 73 63 68 69 6c 64   method haschild
1080: 20 20 20 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20      {} { return 
1090: 5b 65 78 70 72 20 7b 24 6d 79 62 72 61 6e 63 68  [expr {$mybranch
10a0: 63 68 69 6c 64 20 6e 65 20 22 22 7d 5d 20 7d 0a  child ne ""}] }.
10b0: 20 20 20 20 6d 65 74 68 6f 64 20 70 61 72 65 6e      method paren
10c0: 74 20 20 20 20 20 20 7b 7d 20 7b 20 72 65 74 75  t      {} { retu
10d0: 72 6e 20 24 6d 79 62 72 61 6e 63 68 70 61 72 65  rn $mybranchpare
10e0: 6e 74 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20  nt }.    method 
10f0: 63 68 69 6c 64 20 20 20 20 20 20 20 7b 7d 20 7b  child       {} {
1100: 20 72 65 74 75 72 6e 20 24 6d 79 62 72 61 6e 63   return $mybranc
1110: 68 63 68 69 6c 64 20 7d 0a 20 20 20 20 6d 65 74  hchild }.    met
1120: 68 6f 64 20 70 6f 73 69 74 69 6f 6e 20 20 20 20  hod position    
1130: 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 62  {} { return $myb
1140: 72 61 6e 63 68 70 6f 73 69 74 69 6f 6e 20 7d 0a  ranchposition }.
1150: 0a 20 20 20 20 23 20 54 61 67 20 61 63 65 73 73  .    # Tag acess
1160: 6f 72 20 6d 65 74 68 6f 64 73 2e 0a 0a 20 20 20  or methods...   
1170: 20 6d 65 74 68 6f 64 20 74 61 67 72 65 76 6e 72   method tagrevnr
1180: 20 20 7b 7d 20 20 20 20 7b 20 72 65 74 75 72 6e    {}    { return
1190: 20 24 6d 79 6e 72 20 7d 0a 20 20 20 20 6d 65 74   $mynr }.    met
11a0: 68 6f 64 20 73 65 74 74 61 67 72 65 76 20 7b 72  hod settagrev {r
11b0: 65 76 7d 20 7b 20 73 65 74 20 6d 79 74 61 67 72  ev} { set mytagr
11c0: 65 76 20 24 72 65 76 20 3b 20 72 65 74 75 72 6e  ev $rev ; return
11d0: 20 7d 0a 0a 20 20 20 20 23 20 44 65 72 69 76 65   }..    # Derive
11e0: 64 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 0a 20  d information.. 
11f0: 20 20 20 6d 65 74 68 6f 64 20 6c 6f 64 20 7b 7d     method lod {}
1200: 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 6c 6f 64   { return $mylod
1210: 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 73   }..    method s
1220: 65 74 6c 6f 64 20 7b 6c 6f 64 7d 20 7b 0a 09 73  etlod {lod} {..s
1230: 65 74 20 6d 79 6c 6f 64 20 24 6c 6f 64 0a 09 24  et mylod $lod..$
1240: 73 65 6c 66 20 63 68 65 63 6b 6c 6f 64 0a 09 72  self checklod..r
1250: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20  eturn.    }..   
1260: 20 6d 65 74 68 6f 64 20 63 68 65 63 6b 6c 6f 64   method checklod
1270: 20 7b 7d 20 7b 0a 09 23 20 43 6f 6e 73 69 73 74   {} {..# Consist
1280: 65 6e 63 79 20 63 68 65 63 6b 2e 20 54 68 65 20  ency check. The 
1290: 73 79 6d 62 6f 6c 27 73 20 6c 69 6e 65 2d 6f 66  symbol's line-of
12a0: 2d 64 65 76 65 6c 6f 70 6d 65 6e 74 20 68 61 73  -development has
12b0: 20 74 6f 0a 09 23 20 62 65 20 73 61 6d 65 20 61   to..# be same a
12c0: 73 20 74 68 65 20 6c 69 6e 65 2d 6f 66 2d 64 65  s the line-of-de
12d0: 76 65 6c 6f 70 6d 65 6e 74 20 6f 66 20 69 74 73  velopment of its
12e0: 20 73 6f 75 72 63 65 20 28 70 61 72 65 6e 74 0a   source (parent.
12f0: 09 23 20 72 65 76 69 73 69 6f 6e 20 6f 66 20 61  .# revision of a
1300: 20 62 72 61 6e 63 68 2c 20 72 65 76 69 73 69 6f   branch, revisio
1310: 6e 20 6f 66 20 61 20 74 61 67 20 69 74 73 65 6c  n of a tag itsel
1320: 66 29 2e 0a 0a 09 73 77 69 74 63 68 20 2d 65 78  f)....switch -ex
1330: 61 63 74 20 2d 2d 20 24 6d 79 74 79 70 65 20 7b  act -- $mytype {
1340: 0a 09 20 20 20 20 62 72 61 6e 63 68 20 20 7b 0a  ..    branch  {.
1350: 09 09 23 20 48 6f 77 65 76 65 72 2c 20 69 67 6e  ..# However, ign
1360: 6f 72 65 20 74 68 69 73 20 69 66 20 74 68 65 20  ore this if the 
1370: 62 72 61 6e 63 68 20 73 79 6d 62 6f 6c 20 69 73  branch symbol is
1380: 0a 09 09 23 20 64 65 74 61 63 68 65 64 2e 0a 09  ...# detached...
1390: 09 69 66 20 7b 24 6d 79 62 72 61 6e 63 68 70 61  .if {$mybranchpa
13a0: 72 65 6e 74 20 65 71 20 22 22 7d 20 72 65 74 75  rent eq ""} retu
13b0: 72 6e 0a 0a 09 09 73 65 74 20 73 6c 6f 64 20 5b  rn....set slod [
13c0: 24 6d 79 62 72 61 6e 63 68 70 61 72 65 6e 74 20  $mybranchparent 
13d0: 6c 6f 64 5d 0a 09 20 20 20 20 7d 0a 09 20 20 20  lod]..    }..   
13e0: 20 74 61 67 20 20 20 20 20 7b 20 73 65 74 20 73   tag     { set s
13f0: 6c 6f 64 20 5b 24 6d 79 74 61 67 72 65 76 20 20  lod [$mytagrev  
1400: 20 20 20 20 20 6c 6f 64 5d 20 7d 0a 09 7d 0a 0a       lod] }..}..
1410: 09 69 66 20 7b 24 6d 79 6c 6f 64 20 6e 65 20 24  .if {$mylod ne $
1420: 73 6c 6f 64 7d 20 7b 0a 09 20 20 20 20 74 72 6f  slod} {..    tro
1430: 75 62 6c 65 20 66 61 74 61 6c 20 22 46 6f 72 20  uble fatal "For 
1440: 24 6d 79 74 79 70 65 20 5b 24 6d 79 73 79 6d 62  $mytype [$mysymb
1450: 6f 6c 20 6e 61 6d 65 5d 3a 20 4c 4f 44 20 63 6f  ol name]: LOD co
1460: 6e 66 6c 69 63 74 20 77 69 74 68 20 73 6f 75 72  nflict with sour
1470: 63 65 2c 20 27 5b 24 6d 79 6c 6f 64 20 6e 61 6d  ce, '[$mylod nam
1480: 65 5d 27 20 76 73 2e 20 27 5b 24 73 6c 6f 64 20  e]' vs. '[$slod 
1490: 6e 61 6d 65 5d 27 22 0a 09 20 20 20 20 72 65 74  name]'"..    ret
14a0: 75 72 6e 0a 09 7d 0a 09 72 65 74 75 72 6e 0a 20  urn..}..return. 
14b0: 20 20 20 7d 0a 0a 20 20 20 20 23 20 23 20 23 23     }..    # # ##
14c0: 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23   ### ##### #####
14d0: 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23  ### ############
14e0: 23 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 70 65  #..    method pe
14f0: 72 73 69 73 74 20 7b 7d 20 7b 0a 09 23 20 53 61  rsist {} {..# Sa
1500: 76 65 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69  ve the informati
1510: 6f 6e 20 77 65 20 6e 65 65 64 20 61 66 74 65 72  on we need after
1520: 20 74 68 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 20   the collection 
1530: 70 61 73 73 2e 0a 0a 09 73 65 74 20 66 69 64 20  pass....set fid 
1540: 5b 24 6d 79 66 69 6c 65 20 20 20 69 64 5d 0a 09  [$myfile   id]..
1550: 73 65 74 20 73 69 64 20 5b 24 6d 79 73 79 6d 62  set sid [$mysymb
1560: 6f 6c 20 69 64 5d 0a 09 73 65 74 20 6c 6f 64 20  ol id]..set lod 
1570: 5b 24 6d 79 6c 6f 64 20 20 20 20 69 64 5d 0a 0a  [$mylod    id]..
1580: 09 73 77 69 74 63 68 20 2d 65 78 61 63 74 20 2d  .switch -exact -
1590: 2d 20 24 6d 79 74 79 70 65 20 7b 0a 09 20 20 20  - $mytype {..   
15a0: 20 74 61 67 20 7b 0a 09 09 73 65 74 20 72 69 64   tag {...set rid
15b0: 20 5b 24 6d 79 74 61 67 72 65 76 20 69 64 5d 0a   [$mytagrev id].
15c0: 09 09 73 74 61 74 65 20 74 72 61 6e 73 61 63 74  ..state transact
15d0: 69 6f 6e 20 7b 0a 09 09 20 20 20 20 73 74 61 74  ion {...    stat
15e0: 65 20 72 75 6e 20 7b 0a 09 09 09 49 4e 53 45 52  e run {....INSER
15f0: 54 20 49 4e 54 4f 20 74 61 67 20 28 20 74 69 64  T INTO tag ( tid
1600: 2c 20 20 20 66 69 64 2c 20 20 6c 6f 64 2c 20 20  ,   fid,  lod,  
1610: 73 69 64 2c 20 20 72 65 76 29 0a 09 09 09 56 41  sid,  rev)....VA
1620: 4c 55 45 53 20 20 20 20 20 20 20 20 20 20 28 24  LUES          ($
1630: 6d 79 69 64 2c 20 24 66 69 64 2c 20 24 6c 6f 64  myid, $fid, $lod
1640: 2c 20 24 73 69 64 2c 20 24 72 69 64 29 3b 0a 09  , $sid, $rid);..
1650: 09 20 20 20 20 7d 0a 09 09 7d 0a 09 20 20 20 20  .    }...}..    
1660: 7d 0a 09 20 20 20 20 62 72 61 6e 63 68 20 7b 0a  }..    branch {.
1670: 09 09 6c 61 70 70 65 6e 64 20 6d 61 70 20 40 46  ..lappend map @F
1680: 40 20 5b 65 78 70 72 20 7b 20 28 24 6d 79 62 72  @ [expr { ($mybr
1690: 61 6e 63 68 63 68 69 6c 64 20 20 65 71 20 22 22  anchchild  eq ""
16a0: 29 20 3f 20 22 4e 55 4c 4c 22 20 3a 20 5b 24 6d  ) ? "NULL" : [$m
16b0: 79 62 72 61 6e 63 68 63 68 69 6c 64 20 20 69 64  ybranchchild  id
16c0: 5d 20 7d 5d 0a 09 09 6c 61 70 70 65 6e 64 20 6d  ] }]...lappend m
16d0: 61 70 20 40 50 40 20 5b 65 78 70 72 20 7b 20 28  ap @P@ [expr { (
16e0: 24 6d 79 62 72 61 6e 63 68 70 61 72 65 6e 74 20  $mybranchparent 
16f0: 65 71 20 22 22 29 20 3f 20 22 4e 55 4c 4c 22 20  eq "") ? "NULL" 
1700: 3a 20 5b 24 6d 79 62 72 61 6e 63 68 70 61 72 65  : [$mybranchpare
1710: 6e 74 20 69 64 5d 20 7d 5d 0a 0a 09 09 73 65 74  nt id] }]....set
1720: 20 63 6d 64 20 7b 0a 09 09 20 20 20 20 49 4e 53   cmd {...    INS
1730: 45 52 54 20 49 4e 54 4f 20 62 72 61 6e 63 68 20  ERT INTO branch 
1740: 28 20 62 69 64 2c 20 20 20 66 69 64 2c 20 20 6c  ( bid,   fid,  l
1750: 6f 64 2c 20 20 73 69 64 2c 20 20 72 6f 6f 74 2c  od,  sid,  root,
1760: 20 66 69 72 73 74 2c 20 62 72 61 2c 20 20 70 6f   first, bra,  po
1770: 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29  s              )
1780: 0a 09 09 20 20 20 20 56 41 4c 55 45 53 20 20 20  ...    VALUES   
1790: 20 20 20 20 20 20 20 20 20 20 28 24 6d 79 69 64            ($myid
17a0: 2c 20 24 66 69 64 2c 20 24 6c 6f 64 2c 20 24 73  , $fid, $lod, $s
17b0: 69 64 2c 20 20 40 50 40 2c 20 20 40 46 40 2c 20  id,  @P@,  @F@, 
17c0: 20 24 6d 79 6e 72 2c 20 24 6d 79 62 72 61 6e 63   $mynr, $mybranc
17d0: 68 70 6f 73 69 74 69 6f 6e 29 3b 0a 09 09 7d 0a  hposition);...}.
17e0: 09 09 73 74 61 74 65 20 74 72 61 6e 73 61 63 74  ..state transact
17f0: 69 6f 6e 20 7b 0a 09 09 20 20 20 20 73 74 61 74  ion {...    stat
1800: 65 20 72 75 6e 20 5b 73 74 72 69 6e 67 20 6d 61  e run [string ma
1810: 70 20 24 6d 61 70 20 24 63 6d 64 5d 0a 09 09 7d  p $map $cmd]...}
1820: 0a 09 20 20 20 20 7d 0a 09 7d 0a 0a 09 72 65 74  ..    }..}...ret
1830: 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d  urn.    }..    m
1840: 65 74 68 6f 64 20 44 55 4d 50 20 7b 6c 61 62 65  ethod DUMP {labe
1850: 6c 7d 20 7b 0a 09 70 75 74 73 20 22 24 6c 61 62  l} {..puts "$lab
1860: 65 6c 20 3d 20 24 73 65 6c 66 20 24 6d 79 74 79  el = $self $myty
1870: 70 65 20 5b 24 73 65 6c 66 20 6e 61 6d 65 5d 20  pe [$self name] 
1880: 5c 7b 22 0a 09 73 77 69 74 63 68 20 2d 65 78 61  \{"..switch -exa
1890: 63 74 20 2d 2d 20 24 6d 79 74 79 70 65 20 7b 0a  ct -- $mytype {.
18a0: 09 20 20 20 20 74 61 67 20 7b 0a 09 09 70 75 74  .    tag {...put
18b0: 73 20 22 5c 74 52 5c 74 24 6d 79 74 61 67 72 65  s "\tR\t$mytagre
18c0: 76 22 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 62  v"..    }..    b
18d0: 72 61 6e 63 68 20 7b 0a 09 09 70 75 74 73 20 22  ranch {...puts "
18e0: 5c 74 50 5c 74 24 6d 79 62 72 61 6e 63 68 70 61  \tP\t$mybranchpa
18f0: 72 65 6e 74 22 0a 09 09 70 75 74 73 20 22 5c 74  rent"...puts "\t
1900: 43 5c 74 24 6d 79 62 72 61 6e 63 68 63 68 69 6c  C\t$mybranchchil
1910: 64 22 0a 09 09 70 75 74 73 20 22 5c 74 5c 74 3c  d"...puts "\t\t<
1920: 24 6d 79 6e 72 3e 22 0a 09 20 20 20 20 7d 0a 09  $mynr>"..    }..
1930: 7d 0a 09 70 75 74 73 20 22 5c 7d 22 0a 09 72 65  }..puts "\}"..re
1940: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20  turn.    }..    
1950: 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23  # # ## ### #####
1960: 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23   ######## ######
1970: 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 53  #######.    ## S
1980: 74 61 74 65 0a 0a 20 20 20 20 23 20 50 65 72 73  tate..    # Pers
1990: 69 73 74 65 6e 74 3a 0a 20 20 20 20 23 20 20 20  istent:.    #   
19a0: 20 20 20 20 20 54 61 67 3a 20 6d 79 69 64 20 20       Tag: myid  
19b0: 20 20 20 20 20 20 20 20 20 2d 20 74 61 67 2e 74           - tag.t
19c0: 69 64 0a 20 20 20 20 23 20 20 20 20 20 20 20 20  id.    #        
19d0: 20 20 20 20 20 6d 79 66 69 6c 65 20 20 20 20 20       myfile     
19e0: 20 20 20 20 2d 20 74 61 67 2e 66 69 64 0a 20 20      - tag.fid.  
19f0: 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20    #             
1a00: 6d 79 6c 6f 64 20 20 20 20 20 20 20 20 20 20 2d  mylod          -
1a10: 20 74 61 67 2e 6c 6f 64 0a 20 20 20 20 23 20 20   tag.lod.    #  
1a20: 20 20 20 20 20 20 20 20 20 20 20 6d 79 73 79 6d             mysym
1a30: 62 6f 6c 20 20 20 20 20 20 20 2d 20 74 61 67 2e  bol       - tag.
1a40: 73 69 64 0a 20 20 20 20 23 20 20 20 20 20 20 20  sid.    #       
1a50: 20 20 20 20 20 20 6d 79 74 61 67 72 65 76 20 20        mytagrev  
1a60: 20 20 20 20 20 2d 20 74 61 67 2e 72 65 76 0a 20       - tag.rev. 
1a70: 20 20 20 23 0a 20 20 20 20 23 20 20 20 20 20 42     #.    #     B
1a80: 72 61 6e 63 68 3a 20 6d 79 69 64 20 20 20 20 20  ranch: myid     
1a90: 20 20 20 20 20 20 2d 20 62 72 61 6e 63 68 2e 62        - branch.b
1aa0: 69 64 0a 20 20 20 20 23 09 09 20 20 6d 79 66 69  id.    #..  myfi
1ab0: 6c 65 20 20 20 20 20 20 20 20 20 2d 20 62 72 61  le         - bra
1ac0: 6e 63 68 2e 66 69 64 0a 20 20 20 20 23 09 09 20  nch.fid.    #.. 
1ad0: 20 6d 79 6c 6f 64 20 20 20 20 20 20 20 20 20 20   mylod          
1ae0: 2d 20 62 72 61 6e 63 68 2e 6c 6f 64 0a 20 20 20  - branch.lod.   
1af0: 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 6d   #             m
1b00: 79 73 79 6d 62 6f 6c 20 20 20 20 20 20 20 2d 20  ysymbol       - 
1b10: 62 72 61 6e 63 68 2e 73 69 64 0a 20 20 20 20 23  branch.sid.    #
1b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 79 62               myb
1b30: 72 61 6e 63 68 70 61 72 65 6e 74 20 2d 20 62 72  ranchparent - br
1b40: 61 6e 63 68 2e 72 6f 6f 74 0a 20 20 20 20 23 20  anch.root.    # 
1b50: 20 20 20 20 20 20 20 20 20 20 20 20 6d 79 62 72              mybr
1b60: 61 6e 63 68 63 68 69 6c 64 20 20 2d 20 62 72 61  anchchild  - bra
1b70: 6e 63 68 2e 66 69 72 73 74 0a 20 20 20 20 23 20  nch.first.    # 
1b80: 20 20 20 20 20 20 20 20 20 20 20 20 6d 79 6e 72              mynr
1b90: 20 20 20 20 20 20 20 20 20 20 20 2d 20 62 72 61             - bra
1ba0: 6e 63 68 2e 62 72 61 0a 0a 20 20 20 20 74 79 70  nch.bra..    typ
1bb0: 65 76 61 72 69 61 62 6c 65 20 6d 79 69 64 63 6f  evariable myidco
1bc0: 75 6e 74 65 72 20 30 20 3b 20 23 20 43 6f 75 6e  unter 0 ; # Coun
1bd0: 74 65 72 20 66 6f 72 20 73 79 6d 62 6f 6c 20 69  ter for symbol i
1be0: 64 73 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65  ds..    variable
1bf0: 20 6d 79 69 64 20 20 20 20 20 20 20 20 20 20 20   myid           
1c00: 7b 7d 20 3b 20 23 20 53 79 6d 62 6f 6c 20 69 64  {} ; # Symbol id
1c10: 2e 0a 0a 20 20 20 20 23 23 20 42 61 73 69 63 2c  ...    ## Basic,
1c20: 20 61 6c 6c 20 73 79 6d 62 6f 6c 73 20 5f 5f 5f   all symbols ___
1c30: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a  ______________..
1c40: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 66      variable myf
1c50: 69 6c 65 20 20 20 7b 7d 20 3b 20 23 20 52 65 66  ile   {} ; # Ref
1c60: 65 72 65 6e 63 65 20 74 6f 20 74 68 65 20 66 69  erence to the fi
1c70: 6c 65 20 74 68 65 20 73 79 6d 62 6f 6c 20 69 73  le the symbol is
1c80: 20 69 6e 2e 0a 20 20 20 20 76 61 72 69 61 62 6c   in..    variabl
1c90: 65 20 6d 79 74 79 70 65 20 20 20 7b 7d 20 3b 20  e mytype   {} ; 
1ca0: 23 20 53 79 6d 62 6f 6c 20 74 79 70 65 2c 20 27  # Symbol type, '
1cb0: 74 61 67 27 2c 20 6f 72 20 27 62 72 61 6e 63 68  tag', or 'branch
1cc0: 27 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  '..    variable 
1cd0: 6d 79 6e 72 20 20 20 20 20 7b 7d 20 3b 20 23 20  mynr     {} ; # 
1ce0: 52 65 76 69 73 69 6f 6e 20 6e 75 6d 62 65 72 20  Revision number 
1cf0: 6f 66 20 61 20 27 74 61 67 27 2c 20 62 72 61 6e  of a 'tag', bran
1d00: 63 68 20 6e 75 6d 62 65 72 0a 09 09 09 20 20 20  ch number....   
1d10: 23 20 6f 66 20 61 20 27 62 72 61 6e 63 68 27 2e  # of a 'branch'.
1d20: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79  .    variable my
1d30: 73 79 6d 62 6f 6c 20 7b 7d 20 3b 20 23 20 52 65  symbol {} ; # Re
1d40: 66 65 72 65 6e 63 65 20 74 6f 20 74 68 65 20 73  ference to the s
1d50: 79 6d 62 6f 6c 20 6f 62 6a 65 63 74 20 6f 66 20  ymbol object of 
1d60: 74 68 69 73 0a 09 09 09 20 20 20 23 20 73 79 6d  this....   # sym
1d70: 62 6f 6c 20 61 74 20 74 68 65 20 70 72 6f 6a 65  bol at the proje
1d80: 63 74 20 6c 65 76 65 6c 2e 0a 20 20 20 20 76 61  ct level..    va
1d90: 72 69 61 62 6c 65 20 6d 79 6c 6f 64 20 20 20 20  riable mylod    
1da0: 7b 7d 20 3b 20 23 20 52 65 66 65 72 65 6e 63 65  {} ; # Reference
1db0: 20 74 6f 20 74 68 65 20 6c 69 6e 65 2d 6f 66 2d   to the line-of-
1dc0: 64 65 76 65 6c 6f 70 6d 65 6e 74 0a 09 09 09 20  development.... 
1dd0: 20 20 23 20 6f 62 6a 65 63 74 20 74 68 65 20 73    # object the s
1de0: 79 6d 62 6f 6c 20 62 65 6c 6f 6e 67 73 20 74 6f  ymbol belongs to
1df0: 2e 20 41 6e 0a 09 09 09 20 20 20 23 20 61 6c 74  . An....   # alt
1e00: 65 72 6e 61 74 69 76 65 20 69 64 69 6f 6d 20 77  ernative idiom w
1e10: 6f 75 6c 64 20 62 65 20 74 6f 20 63 61 6c 6c 20  ould be to call 
1e20: 69 74 20 74 68 65 0a 09 09 09 20 20 20 23 20 62  it the....   # b
1e30: 72 61 6e 63 68 20 74 68 65 20 73 79 6d 62 6f 6c  ranch the symbol
1e40: 20 69 73 20 6f 6e 2e 20 54 68 69 73 20 72 65 66   is on. This ref
1e50: 65 72 65 6e 63 65 0a 09 09 09 20 20 20 23 20 69  erence....   # i
1e60: 73 20 74 6f 20 61 20 70 72 6f 6a 65 63 74 2d 6c  s to a project-l
1e70: 65 76 65 6c 20 6f 62 6a 65 63 74 20 28 73 79 6d  evel object (sym
1e80: 62 6f 6c 20 6f 72 0a 09 09 09 20 20 20 23 20 74  bol or....   # t
1e90: 72 75 6e 6b 29 2e 0a 0a 20 20 20 20 23 23 20 42  runk)...    ## B
1ea0: 72 61 6e 63 68 20 73 79 6d 62 6f 6c 73 20 5f 5f  ranch symbols __
1eb0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f  ________________
1ec0: 5f 5f 5f 0a 0a 20 20 20 20 76 61 72 69 61 62 6c  ___..    variabl
1ed0: 65 20 6d 79 62 72 61 6e 63 68 70 61 72 65 6e 74  e mybranchparent
1ee0: 72 65 76 6e 72 20 7b 7d 20 3b 20 23 20 54 68 65  revnr {} ; # The
1ef0: 20 6e 75 6d 62 65 72 20 6f 66 20 74 68 65 20 70   number of the p
1f00: 61 72 65 6e 74 0a 09 09 09 09 20 20 20 20 20 20  arent.....      
1f10: 23 20 72 65 76 69 73 69 6f 6e 2c 20 64 65 72 69  # revision, deri
1f20: 76 65 64 20 66 72 6f 6d 20 6f 75 72 0a 09 09 09  ved from our....
1f30: 09 20 20 20 20 20 20 23 20 62 72 61 6e 63 68 20  .      # branch 
1f40: 6e 75 6d 62 65 72 20 28 6d 79 6e 72 29 2e 0a 20  number (mynr).. 
1f50: 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 62 72     variable mybr
1f60: 61 6e 63 68 70 61 72 65 6e 74 20 20 20 20 20 20  anchparent      
1f70: 7b 7d 20 3b 20 23 20 52 65 66 65 72 65 6e 63 65  {} ; # Reference
1f80: 20 74 6f 20 74 68 65 20 72 65 76 69 73 69 6f 6e   to the revision
1f90: 0a 09 09 09 09 20 20 20 20 20 20 23 20 28 6f 62  .....      # (ob
1fa0: 6a 65 63 74 29 20 77 68 69 63 68 20 73 70 61 77  ject) which spaw
1fb0: 6e 73 20 74 68 65 0a 09 09 09 09 20 20 20 20 20  ns the.....     
1fc0: 20 23 20 62 72 61 6e 63 68 2e 0a 20 20 20 20 76   # branch..    v
1fd0: 61 72 69 61 62 6c 65 20 6d 79 62 72 61 6e 63 68  ariable mybranch
1fe0: 63 68 69 6c 64 72 65 76 6e 72 20 20 7b 7d 20 3b  childrevnr  {} ;
1ff0: 20 23 20 4e 75 6d 62 65 72 20 6f 66 20 74 68 65   # Number of the
2000: 20 66 69 72 73 74 20 72 65 76 69 73 69 6f 6e 0a   first revision.
2010: 09 09 09 09 20 20 20 20 20 20 23 20 63 6f 6d 6d  ....      # comm
2020: 69 74 74 65 64 20 6f 6e 20 74 68 69 73 20 62 72  itted on this br
2030: 61 6e 63 68 2e 0a 20 20 20 20 76 61 72 69 61 62  anch..    variab
2040: 6c 65 20 6d 79 62 72 61 6e 63 68 63 68 69 6c 64  le mybranchchild
2050: 20 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 52 65         {} ; # Re
2060: 66 65 72 65 6e 63 65 20 74 6f 20 74 68 65 20 72  ference to the r
2070: 65 76 69 73 69 6f 6e 0a 09 09 09 09 20 20 20 20  evision.....    
2080: 20 20 23 20 28 6f 62 6a 65 63 74 29 20 66 69 72    # (object) fir
2090: 73 74 20 63 6f 6d 6d 69 74 74 65 64 20 6f 6e 0a  st committed on.
20a0: 09 09 09 09 20 20 20 20 20 20 23 20 74 68 69 73  ....      # this
20b0: 20 62 72 61 6e 63 68 2e 0a 20 20 20 20 76 61 72   branch..    var
20c0: 69 61 62 6c 65 20 6d 79 62 72 61 6e 63 68 70 6f  iable mybranchpo
20d0: 73 69 74 69 6f 6e 20 20 20 20 7b 7d 20 3b 20 23  sition    {} ; #
20e0: 20 52 65 6c 61 74 69 76 65 20 69 64 20 6f 66 20   Relative id of 
20f0: 74 68 65 20 62 72 61 6e 63 68 20 69 6e 0a 09 09  the branch in...
2100: 09 09 20 20 20 20 20 20 23 20 74 68 65 20 66 69  ..      # the fi
2110: 6c 65 2c 20 74 6f 20 73 6f 72 74 20 69 6e 74 6f  le, to sort into
2120: 0a 09 09 09 09 20 20 20 20 20 20 23 20 63 72 65  .....      # cre
2130: 61 74 69 6f 6e 20 6f 72 64 65 72 2e 0a 0a 20 20  ation order...  
2140: 20 20 23 23 20 54 61 67 20 73 79 6d 62 6f 6c 73    ## Tag symbols
2150: 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f   _______________
2160: 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20 20 76  _________..    v
2170: 61 72 69 61 62 6c 65 20 6d 79 74 61 67 72 65 76  ariable mytagrev
2180: 20 7b 7d 20 3b 20 23 20 52 65 66 65 72 65 6e 63   {} ; # Referenc
2190: 65 20 74 6f 20 74 68 65 20 72 65 76 69 73 69 6f  e to the revisio
21a0: 6e 20 6f 62 6a 65 63 74 20 74 68 65 20 74 61 67  n object the tag
21b0: 0a 09 09 09 20 20 20 23 20 69 73 20 6f 6e 2c 20  ....   # is on, 
21c0: 69 64 65 6e 74 69 66 69 65 64 20 62 79 20 27 6d  identified by 'm
21d0: 79 6e 72 27 2e 0a 0a 20 20 20 20 23 20 2e 2e 2e  ynr'...    # ...
21e0: 20 6e 6f 74 68 69 6e 67 20 73 70 65 63 69 61 6c   nothing special
21f0: 20 2e 2e 2e 20 28 6f 6e 6c 79 20 6d 79 6e 72 2c   ... (only mynr,
2200: 20 73 65 65 20 62 61 73 69 63 29 0a 0a 20 20 20   see basic)..   
2210: 20 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23   # # ## ### ####
2220: 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23  # ######## #####
2230: 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 20  ########.    ## 
2240: 49 6e 74 65 72 6e 61 6c 20 6d 65 74 68 6f 64 73  Internal methods
2250: 0a 0a 20 20 20 20 70 72 6f 63 20 53 65 74 75 70  ..    proc Setup
2260: 42 72 61 6e 63 68 20 7b 7d 20 7b 0a 09 75 70 76  Branch {} {..upv
2270: 61 72 20 31 20 6d 79 62 72 61 6e 63 68 70 61 72  ar 1 mybranchpar
2280: 65 6e 74 72 65 76 6e 72 20 6d 79 62 72 61 6e 63  entrevnr mybranc
2290: 68 70 61 72 65 6e 74 72 65 76 6e 72 20 6d 79 6e  hparentrevnr myn
22a0: 72 20 6d 79 6e 72 0a 09 73 65 74 20 6d 79 62 72  r mynr..set mybr
22b0: 61 6e 63 68 70 61 72 65 6e 74 72 65 76 6e 72 20  anchparentrevnr 
22c0: 5b 72 65 76 20 32 62 72 61 6e 63 68 70 61 72 65  [rev 2branchpare
22d0: 6e 74 72 65 76 6e 72 20 20 24 6d 79 6e 72 5d 0a  ntrevnr  $mynr].
22e0: 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20  .return.    }.. 
22f0: 20 20 20 23 20 23 20 23 23 20 23 23 23 20 23 23     # # ## ### ##
2300: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23  ### ######## ###
2310: 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 23  ##########.    #
2320: 23 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a  # Configuration.
2330: 0a 20 20 20 20 70 72 61 67 6d 61 20 2d 68 61 73  .    pragma -has
2340: 74 79 70 65 69 6e 66 6f 20 20 20 20 6e 6f 20 20  typeinfo    no  
2350: 3b 20 23 20 6e 6f 20 74 79 70 65 20 69 6e 74 72  ; # no type intr
2360: 6f 73 70 65 63 74 69 6f 6e 0a 20 20 20 20 70 72  ospection.    pr
2370: 61 67 6d 61 20 2d 68 61 73 69 6e 66 6f 20 20 20  agma -hasinfo   
2380: 20 20 20 20 20 6e 6f 20 20 3b 20 23 20 6e 6f 20       no  ; # no 
2390: 6f 62 6a 65 63 74 20 69 6e 74 72 6f 73 70 65 63  object introspec
23a0: 74 69 6f 6e 0a 20 20 20 20 70 72 61 67 6d 61 20  tion.    pragma 
23b0: 2d 68 61 73 74 79 70 65 6d 65 74 68 6f 64 73 20  -hastypemethods 
23c0: 6e 6f 20 20 3b 20 23 20 74 79 70 65 20 69 73 20  no  ; # type is 
23d0: 6e 6f 74 20 72 65 6c 65 76 61 6e 74 2e 0a 0a 20  not relevant... 
23e0: 20 20 20 23 20 23 20 23 23 20 23 23 23 20 23 23     # # ## ### ##
23f0: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23  ### ######## ###
2400: 23 23 23 23 23 23 23 23 23 23 0a 7d 0a 0a 6e 61  ##########.}..na
2410: 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 76  mespace eval ::v
2420: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72  c::fossil::impor
2430: 74 3a 3a 63 76 73 3a 3a 66 69 6c 65 20 7b 0a 20  t::cvs::file {. 
2440: 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 78 70     namespace exp
2450: 6f 72 74 20 73 79 6d 0a 20 20 20 20 6e 61 6d 65  ort sym.    name
2460: 73 70 61 63 65 20 65 76 61 6c 20 73 79 6d 20 7b  space eval sym {
2470: 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f  ..namespace impo
2480: 72 74 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a  rt ::vc::fossil:
2490: 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 66 69  :import::cvs::fi
24a0: 6c 65 3a 3a 72 65 76 0a 09 6e 61 6d 65 73 70 61  le::rev..namespa
24b0: 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a  ce import ::vc::
24c0: 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a  fossil::import::
24d0: 63 76 73 3a 3a 73 74 61 74 65 0a 09 6e 61 6d 65  cvs::state..name
24e0: 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76  space import ::v
24f0: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72  c::fossil::impor
2500: 74 3a 3a 63 76 73 3a 3a 69 6e 74 65 67 72 69 74  t::cvs::integrit
2510: 79 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 6d 70  y..namespace imp
2520: 6f 72 74 20 3a 3a 76 63 3a 3a 74 6f 6f 6c 73 3a  ort ::vc::tools:
2530: 3a 74 72 6f 75 62 6c 65 0a 20 20 20 20 7d 0a 7d  :trouble.    }.}
2540: 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 23  ..# # ## ### ###
2550: 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23  ## ######## ####
2560: 23 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23  ######### ######
2570: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
2580: 23 23 20 52 65 61 64 79 0a 0a 70 61 63 6b 61 67  ## Ready..packag
2590: 65 20 70 72 6f 76 69 64 65 20 76 63 3a 3a 66 6f  e provide vc::fo
25a0: 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76  ssil::import::cv
25b0: 73 3a 3a 66 69 6c 65 3a 3a 73 79 6d 20 31 2e 30  s::file::sym 1.0
25c0: 0a 72 65 74 75 72 6e 0a                          .return.