Hex Artifact Content
Not logged in

Artifact 821db50884d603f7b9a4e879f78f140d8d0832c1:

File tools/cvs2fossil/lib/c2f_project.tcl part of check-in [67c24820c7] - Reworked the whole handling of meta data (author, commit message, plus project/branch information), so that revisions now store only the meta id, everything else is stored centrally. All the relevant pieces (author, cmessage, symbols, projects) now also get numeric ids assigned early instead of when being saved to the state. Project ids are loaded from the state now too. by aku on 2007-10-14 01:58:07.

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 50 72 6f  ########..## Pro
0200: 6a 65 63 74 2c 20 70 61 72 74 20 6f 66 20 61 20  ject, part of a 
0210: 43 56 53 20 72 65 70 6f 73 69 74 6f 72 79 2e 20  CVS repository. 
0220: 4d 75 6c 74 69 70 6c 65 20 69 6e 73 74 61 6e 63  Multiple instanc
0230: 65 73 20 61 72 65 20 70 6f 73 73 69 62 6c 65 2e  es are possible.
0240: 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 23  ..# # ## ### ###
0250: 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23  ## ######## ####
0260: 23 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23  ######### ######
0270: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
0280: 23 23 20 52 65 71 75 69 72 65 6d 65 6e 74 73 0a  ## Requirements.
0290: 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65  .package require
02a0: 20 54 63 6c 20 38 2e 34 20 20 20 20 20 20 20 20   Tcl 8.4        
02b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
02c0: 20 20 20 20 20 20 20 3b 20 23 20 52 65 71 75 69         ; # Requi
02d0: 72 65 64 20 72 75 6e 74 69 6d 65 2e 0a 70 61 63  red runtime..pac
02e0: 6b 61 67 65 20 72 65 71 75 69 72 65 20 73 6e 69  kage require sni
02f0: 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  t               
0300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0310: 20 20 20 3b 20 23 20 4f 4f 20 73 79 73 74 65 6d     ; # OO system
0320: 2e 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72  ..package requir
0330: 65 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d  e vc::fossil::im
0340: 70 6f 72 74 3a 3a 63 76 73 3a 3a 66 69 6c 65 20  port::cvs::file 
0350: 20 20 20 20 20 20 20 20 3b 20 23 20 43 56 53 20          ; # CVS 
0360: 61 72 63 68 69 76 65 20 66 69 6c 65 2e 0a 70 61  archive file..pa
0370: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 76 63  ckage require vc
0380: 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74  ::fossil::import
0390: 3a 3a 63 76 73 3a 3a 73 74 61 74 65 20 20 20 20  ::cvs::state    
03a0: 20 20 20 20 3b 20 23 20 53 74 61 74 65 20 73 74      ; # State st
03b0: 6f 72 61 67 65 2e 0a 70 61 63 6b 61 67 65 20 72  orage..package r
03c0: 65 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 73 69  equire vc::fossi
03d0: 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a  l::import::cvs::
03e0: 70 72 6f 6a 65 63 74 3a 3a 73 79 6d 20 3b 20 23  project::sym ; #
03f0: 20 50 65 72 20 70 72 6f 6a 65 63 74 20 73 79 6d   Per project sym
0400: 62 6f 6c 73 2e 0a 70 61 63 6b 61 67 65 20 72 65  bols..package re
0410: 71 75 69 72 65 20 73 74 72 75 63 74 3a 3a 6c 69  quire struct::li
0420: 73 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20  st              
0430: 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 20              ; # 
0440: 41 64 76 61 6e 63 65 64 20 6c 69 73 74 20 6f 70  Advanced list op
0450: 65 72 61 74 69 6f 6e 73 2e 2e 0a 0a 23 20 23 20  erations....# # 
0460: 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23  ## ### ##### ###
0470: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23  ##### ##########
0480: 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23  ### ############
0490: 23 23 23 23 23 23 23 23 23 0a 23 23 20 0a 0a 73  #########.## ..s
04a0: 6e 69 74 3a 3a 74 79 70 65 20 3a 3a 76 63 3a 3a  nit::type ::vc::
04b0: 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a  fossil::import::
04c0: 63 76 73 3a 3a 70 72 6f 6a 65 63 74 20 7b 0a 20  cvs::project {. 
04d0: 20 20 20 23 20 23 20 23 23 20 23 23 23 20 23 23     # # ## ### ##
04e0: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23  ### ######## ###
04f0: 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 23  ##########.    #
0500: 23 20 50 75 62 6c 69 63 20 41 50 49 0a 0a 20 20  # Public API..  
0510: 20 20 63 6f 6e 73 74 72 75 63 74 6f 72 20 7b 70    constructor {p
0520: 61 74 68 20 72 7d 20 7b 0a 09 73 65 74 20 6d 79  ath r} {..set my
0530: 62 61 73 65 20 20 20 20 20 20 20 24 70 61 74 68  base       $path
0540: 0a 09 73 65 74 20 6d 79 72 65 70 6f 73 69 74 6f  ..set myreposito
0550: 72 79 20 24 72 0a 09 72 65 74 75 72 6e 0a 20 20  ry $r..return.  
0560: 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20    }..    method 
0570: 62 61 73 65 20 7b 7d 20 7b 20 72 65 74 75 72 6e  base {} { return
0580: 20 24 6d 79 62 61 73 65 20 7d 0a 0a 20 20 20 20   $mybase }..    
0590: 6d 65 74 68 6f 64 20 70 72 69 6e 74 62 61 73 65  method printbase
05a0: 20 7b 7d 20 7b 0a 09 69 66 20 7b 24 6d 79 62 61   {} {..if {$myba
05b0: 73 65 20 65 71 20 22 22 7d 20 7b 72 65 74 75 72  se eq ""} {retur
05c0: 6e 20 3c 52 65 70 6f 73 69 74 6f 72 79 3e 7d 0a  n <Repository>}.
05d0: 09 72 65 74 75 72 6e 20 24 6d 79 62 61 73 65 0a  .return $mybase.
05e0: 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f      }..    metho
05f0: 64 20 73 65 74 69 64 20 7b 69 64 7d 20 7b 20 73  d setid {id} { s
0600: 65 74 20 6d 79 69 64 20 24 69 64 20 3b 20 72 65  et myid $id ; re
0610: 74 75 72 6e 20 7d 0a 0a 20 20 20 20 6d 65 74 68  turn }..    meth
0620: 6f 64 20 61 64 64 66 69 6c 65 20 7b 72 63 73 20  od addfile {rcs 
0630: 75 73 72 20 65 78 65 63 75 74 61 62 6c 65 7d 20  usr executable} 
0640: 7b 0a 09 73 65 74 20 6d 79 66 69 6c 65 73 28 24  {..set myfiles($
0650: 72 63 73 29 20 5b 6c 69 73 74 20 24 75 73 72 20  rcs) [list $usr 
0660: 24 65 78 65 63 75 74 61 62 6c 65 5d 0a 09 72 65  $executable]..re
0670: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20  turn.    }..    
0680: 6d 65 74 68 6f 64 20 66 69 6c 65 6e 61 6d 65 73  method filenames
0690: 20 7b 7d 20 7b 0a 09 72 65 74 75 72 6e 20 5b 6c   {} {..return [l
06a0: 73 6f 72 74 20 2d 64 69 63 74 20 5b 61 72 72 61  sort -dict [arra
06b0: 79 20 6e 61 6d 65 73 20 6d 79 66 69 6c 65 73 5d  y names myfiles]
06c0: 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74  ].    }..    met
06d0: 68 6f 64 20 66 69 6c 65 73 20 7b 7d 20 7b 0a 09  hod files {} {..
06e0: 72 65 74 75 72 6e 20 5b 54 68 65 46 69 6c 65 73  return [TheFiles
06f0: 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 64 65 6c  ].    }..    del
0700: 65 67 61 74 65 20 6d 65 74 68 6f 64 20 64 65 66  egate method def
0710: 61 75 74 68 6f 72 20 20 20 74 6f 20 6d 79 72 65  author   to myre
0720: 70 6f 73 69 74 6f 72 79 0a 20 20 20 20 64 65 6c  pository.    del
0730: 65 67 61 74 65 20 6d 65 74 68 6f 64 20 64 65 66  egate method def
0740: 63 6d 65 73 73 61 67 65 20 74 6f 20 6d 79 72 65  cmessage to myre
0750: 70 6f 73 69 74 6f 72 79 0a 0a 20 20 20 20 6d 65  pository..    me
0760: 74 68 6f 64 20 64 65 66 6d 65 74 61 20 7b 62 69  thod defmeta {bi
0770: 64 20 61 69 64 20 63 69 64 7d 20 7b 0a 09 72 65  d aid cid} {..re
0780: 74 75 72 6e 20 5b 24 6d 79 72 65 70 6f 73 69 74  turn [$myreposit
0790: 6f 72 79 20 64 65 66 6d 65 74 61 20 24 6d 79 69  ory defmeta $myi
07a0: 64 20 24 62 69 64 20 24 61 69 64 20 24 63 69 64  d $bid $aid $cid
07b0: 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74  ].    }..    met
07c0: 68 6f 64 20 67 65 74 73 79 6d 62 6f 6c 20 7b 6e  hod getsymbol {n
07d0: 61 6d 65 7d 20 7b 0a 09 69 66 20 7b 21 5b 69 6e  ame} {..if {![in
07e0: 66 6f 20 65 78 69 73 74 73 20 6d 79 73 79 6d 62  fo exists mysymb
07f0: 6f 6c 73 28 24 6e 61 6d 65 29 5d 7d 20 7b 0a 09  ols($name)]} {..
0800: 20 20 20 20 73 65 74 20 6d 79 73 79 6d 62 6f 6c      set mysymbol
0810: 73 28 24 6e 61 6d 65 29 20 5c 0a 09 09 5b 73 79  s($name) \...[sy
0820: 6d 20 25 41 55 54 4f 25 20 24 6e 61 6d 65 20 5b  m %AUTO% $name [
0830: 24 6d 79 72 65 70 6f 73 69 74 6f 72 79 20 64 65  $myrepository de
0840: 66 73 79 6d 62 6f 6c 20 24 6d 79 69 64 20 24 6e  fsymbol $myid $n
0850: 61 6d 65 5d 5d 0a 09 7d 0a 09 72 65 74 75 72 6e  ame]]..}..return
0860: 20 24 6d 79 73 79 6d 62 6f 6c 73 28 24 6e 61 6d   $mysymbols($nam
0870: 65 29 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20  e).    }..    # 
0880: 70 61 73 73 20 49 20 70 65 72 73 69 73 74 65 6e  pass I persisten
0890: 63 65 0a 20 20 20 20 6d 65 74 68 6f 64 20 70 65  ce.    method pe
08a0: 72 73 69 73 74 20 7b 7d 20 7b 0a 09 73 74 61 74  rsist {} {..stat
08b0: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 7b 0a  e transaction {.
08c0: 09 20 20 20 20 23 20 50 72 6f 6a 65 63 74 20 64  .    # Project d
08d0: 61 74 61 20 66 69 72 73 74 2e 20 52 65 71 75 69  ata first. Requi
08e0: 72 65 64 20 73 6f 20 74 68 61 74 20 77 65 20 68  red so that we h
08f0: 61 76 65 20 69 74 73 20 69 64 0a 09 20 20 20 20  ave its id..    
0900: 23 20 72 65 61 64 79 20 66 6f 72 20 74 68 65 20  # ready for the 
0910: 66 69 6c 65 73 2e 0a 0a 09 20 20 20 20 73 74 61  files....    sta
0920: 74 65 20 72 75 6e 20 7b 0a 09 09 49 4e 53 45 52  te run {...INSER
0930: 54 20 49 4e 54 4f 20 70 72 6f 6a 65 63 74 20 28  T INTO project (
0940: 70 69 64 2c 20 20 6e 61 6d 65 29 0a 09 09 56 41  pid,  name)...VA
0950: 4c 55 45 53 20 20 20 20 20 20 20 20 20 20 20 20  LUES            
0960: 20 20 28 4e 55 4c 4c 2c 20 24 6d 79 62 61 73 65    (NULL, $mybase
0970: 29 3b 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 73  );..    }..    s
0980: 65 74 20 6d 79 69 64 20 5b 73 74 61 74 65 20 69  et myid [state i
0990: 64 5d 0a 0a 09 20 20 20 20 23 20 54 68 65 6e 20  d]...    # Then 
09a0: 61 6c 6c 20 66 69 6c 65 73 2c 20 77 69 74 68 20  all files, with 
09b0: 70 72 6f 70 65 72 20 62 61 63 6b 72 65 66 65 72  proper backrefer
09c0: 65 6e 63 65 20 74 6f 20 74 68 65 69 72 0a 09 20  ence to their.. 
09d0: 20 20 20 23 20 70 72 6f 6a 65 63 74 2e 0a 0a 09     # project....
09e0: 20 20 20 20 66 6f 72 65 61 63 68 20 7b 72 63 73      foreach {rcs
09f0: 20 69 74 65 6d 7d 20 5b 61 72 72 61 79 20 67 65   item} [array ge
0a00: 74 20 6d 79 66 69 6c 65 73 5d 20 7b 0a 09 09 73  t myfiles] {...s
0a10: 74 72 75 63 74 3a 3a 6c 69 73 74 20 61 73 73 69  truct::list assi
0a20: 67 6e 20 24 69 74 65 6d 20 75 73 72 20 65 78 65  gn $item usr exe
0a30: 63 75 74 61 62 6c 65 0a 09 09 73 74 61 74 65 20  cutable...state 
0a40: 72 75 6e 20 7b 0a 09 09 20 20 20 20 49 4e 53 45  run {...    INSE
0a50: 52 54 20 49 4e 54 4f 20 66 69 6c 65 20 28 66 69  RT INTO file (fi
0a60: 64 2c 20 20 70 69 64 2c 20 20 20 6e 61 6d 65 2c  d,  pid,   name,
0a70: 20 76 69 73 69 62 6c 65 2c 20 65 78 65 63 29 0a   visible, exec).
0a80: 09 09 20 20 20 20 56 41 4c 55 45 53 20 20 20 20  ..    VALUES    
0a90: 20 20 20 20 20 20 20 28 4e 55 4c 4c 2c 20 24 6d         (NULL, $m
0aa0: 79 69 64 2c 20 24 72 63 73 2c 20 24 75 73 72 2c  yid, $rcs, $usr,
0ab0: 20 20 20 20 24 65 78 65 63 75 74 61 62 6c 65 29      $executable)
0ac0: 3b 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a  ;...}..    }..}.
0ad0: 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20  .return.    }.. 
0ae0: 20 20 20 23 20 70 61 73 73 20 49 49 20 70 65 72     # pass II per
0af0: 73 69 73 74 65 6e 63 65 0a 20 20 20 20 6d 65 74  sistence.    met
0b00: 68 6f 64 20 70 65 72 73 69 73 74 72 65 76 20 7b  hod persistrev {
0b10: 7d 20 7b 0a 09 73 74 61 74 65 20 74 72 61 6e 73  } {..state trans
0b20: 61 63 74 69 6f 6e 20 7b 0a 09 20 20 20 20 23 20  action {..    # 
0b30: 54 4f 44 4f 3a 20 70 65 72 20 70 72 6f 6a 65 63  TODO: per projec
0b40: 74 20 70 65 72 73 69 73 74 65 6e 63 65 20 28 73  t persistence (s
0b50: 79 6d 62 6f 6c 73 2c 20 6d 65 74 61 20 64 61 74  ymbols, meta dat
0b60: 61 29 0a 09 20 20 20 20 66 6f 72 65 61 63 68 20  a)..    foreach 
0b70: 66 20 5b 54 68 65 46 69 6c 65 73 5d 20 7b 0a 09  f [TheFiles] {..
0b80: 09 24 66 20 70 65 72 73 69 73 74 0a 09 20 20 20  .$f persist..   
0b90: 20 7d 0a 09 7d 0a 09 72 65 74 75 72 6e 0a 20 20   }..}..return.  
0ba0: 20 20 7d 0a 0a 20 20 20 20 23 20 23 20 23 23 20    }..    # # ## 
0bb0: 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23  ### ##### ######
0bc0: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23  ## #############
0bd0: 0a 20 20 20 20 23 23 20 53 74 61 74 65 0a 0a 20  .    ## State.. 
0be0: 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 62 61     variable myba
0bf0: 73 65 20 20 20 20 20 20 20 20 20 20 20 7b 7d 20  se           {} 
0c00: 3b 20 23 20 50 72 6f 6a 65 63 74 20 64 69 72 65  ; # Project dire
0c10: 63 74 6f 72 79 0a 20 20 20 20 76 61 72 69 61 62  ctory.    variab
0c20: 6c 65 20 6d 79 69 64 20 20 20 20 20 20 20 20 20  le myid         
0c30: 20 20 20 20 7b 7d 20 3b 20 23 20 50 72 6f 6a 65      {} ; # Proje
0c40: 63 74 20 69 64 20 69 6e 20 74 68 65 20 70 65 72  ct id in the per
0c50: 73 69 73 74 65 6e 74 20 73 74 61 74 65 2e 0a 20  sistent state.. 
0c60: 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 66 69     variable myfi
0c70: 6c 65 73 20 20 20 2d 61 72 72 61 79 20 7b 7d 20  les   -array {} 
0c80: 3b 20 23 20 4d 61 70 73 20 72 63 73 20 61 72 63  ; # Maps rcs arc
0c90: 68 69 76 65 20 74 6f 20 74 68 65 69 72 20 75 73  hive to their us
0ca0: 65 72 20 66 69 6c 65 73 2e 0a 20 20 20 20 76 61  er files..    va
0cb0: 72 69 61 62 6c 65 20 6d 79 66 6f 62 6a 20 20 20  riable myfobj   
0cc0: 20 20 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 46          {} ; # F
0cd0: 69 6c 65 20 6f 62 6a 65 63 74 73 20 66 6f 72 20  ile objects for 
0ce0: 74 68 65 20 72 63 73 20 61 72 63 68 69 76 65 73  the rcs archives
0cf0: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79  .    variable my
0d00: 72 65 70 6f 73 69 74 6f 72 79 20 20 20 20 20 7b  repository     {
0d10: 7d 20 3b 20 23 20 52 65 70 6f 73 69 74 6f 72 79  } ; # Repository
0d20: 20 74 68 65 20 70 72 6a 65 63 74 20 62 65 6c 6f   the prject belo
0d30: 6e 67 73 20 74 6f 2e 0a 20 20 20 20 76 61 72 69  ngs to..    vari
0d40: 61 62 6c 65 20 6d 79 73 79 6d 62 6f 6c 73 20 2d  able mysymbols -
0d50: 61 72 72 61 79 20 7b 7d 20 3b 20 23 20 4d 61 70  array {} ; # Map
0d60: 20 73 79 6d 62 6f 6c 20 6e 61 6d 65 73 20 74 6f   symbol names to
0d70: 20 70 72 6f 6a 65 63 74 2d 6c 65 76 65 6c 20 73   project-level s
0d80: 79 6d 62 6f 6c 20 6f 62 6a 65 63 74 73 2e 0a 0a  ymbol objects...
0d90: 20 20 20 20 23 20 23 20 23 23 20 23 23 23 20 23      # # ## ### #
0da0: 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23  #### ######## ##
0db0: 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 20  ###########.    
0dc0: 23 23 20 49 6e 74 65 72 6e 61 6c 20 6d 65 74 68  ## Internal meth
0dd0: 6f 64 73 0a 0a 20 20 20 20 70 72 6f 63 20 54 68  ods..    proc Th
0de0: 65 46 69 6c 65 73 20 7b 7d 20 7b 0a 09 75 70 76  eFiles {} {..upv
0df0: 61 72 20 31 20 6d 79 66 69 6c 65 73 20 6d 79 66  ar 1 myfiles myf
0e00: 69 6c 65 73 20 6d 79 66 6f 62 6a 20 6d 79 66 6f  iles myfobj myfo
0e10: 62 6a 20 73 65 6c 66 20 73 65 6c 66 0a 09 69 66  bj self self..if
0e20: 20 7b 21 5b 6c 6c 65 6e 67 74 68 20 24 6d 79 66   {![llength $myf
0e30: 6f 62 6a 5d 7d 20 7b 0a 09 20 20 20 20 73 65 74  obj]} {..    set
0e40: 20 6d 79 66 6f 62 6a 20 5b 45 6d 70 74 79 46 69   myfobj [EmptyFi
0e50: 6c 65 73 20 6d 79 66 69 6c 65 73 5d 0a 09 7d 0a  les myfiles]..}.
0e60: 09 72 65 74 75 72 6e 20 24 6d 79 66 6f 62 6a 0a  .return $myfobj.
0e70: 20 20 20 20 7d 0a 0a 20 20 20 20 70 72 6f 63 20      }..    proc 
0e80: 45 6d 70 74 79 46 69 6c 65 73 20 7b 66 76 7d 20  EmptyFiles {fv} 
0e90: 7b 0a 09 75 70 76 61 72 20 31 20 24 66 76 20 6d  {..upvar 1 $fv m
0ea0: 79 66 69 6c 65 73 20 73 65 6c 66 20 73 65 6c 66  yfiles self self
0eb0: 0a 09 73 65 74 20 72 65 73 20 7b 7d 0a 09 66 6f  ..set res {}..fo
0ec0: 72 65 61 63 68 20 69 74 65 6d 20 5b 6c 73 6f 72  reach item [lsor
0ed0: 74 20 2d 64 69 63 74 20 5b 61 72 72 61 79 20 6e  t -dict [array n
0ee0: 61 6d 65 73 20 6d 79 66 69 6c 65 73 5d 5d 20 7b  ames myfiles]] {
0ef0: 0a 09 20 20 20 20 73 74 72 75 63 74 3a 3a 6c 69  ..    struct::li
0f00: 73 74 20 61 73 73 69 67 6e 20 24 69 74 65 6d 20  st assign $item 
0f10: 66 20 65 78 65 63 75 74 61 62 6c 65 0a 09 20 20  f executable..  
0f20: 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 66    lappend res [f
0f30: 69 6c 65 20 25 41 55 54 4f 25 20 24 66 20 24 65  ile %AUTO% $f $e
0f40: 78 65 63 75 74 61 62 6c 65 20 24 73 65 6c 66 5d  xecutable $self]
0f50: 0a 09 7d 0a 09 72 65 74 75 72 6e 20 24 72 65 73  ..}..return $res
0f60: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 23 20  .    }..    # # 
0f70: 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23  ## ### ##### ###
0f80: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23  ##### ##########
0f90: 23 23 23 0a 20 20 20 20 23 23 20 43 6f 6e 66 69  ###.    ## Confi
0fa0: 67 75 72 61 74 69 6f 6e 0a 0a 20 20 20 20 70 72  guration..    pr
0fb0: 61 67 6d 61 20 2d 68 61 73 74 79 70 65 69 6e 66  agma -hastypeinf
0fc0: 6f 20 20 20 20 6e 6f 20 20 3b 20 23 20 6e 6f 20  o    no  ; # no 
0fd0: 74 79 70 65 20 69 6e 74 72 6f 73 70 65 63 74 69  type introspecti
0fe0: 6f 6e 0a 20 20 20 20 70 72 61 67 6d 61 20 2d 68  on.    pragma -h
0ff0: 61 73 69 6e 66 6f 20 20 20 20 20 20 20 20 6e 6f  asinfo        no
1000: 20 20 3b 20 23 20 6e 6f 20 6f 62 6a 65 63 74 20    ; # no object 
1010: 69 6e 74 72 6f 73 70 65 63 74 69 6f 6e 0a 20 20  introspection.  
1020: 20 20 70 72 61 67 6d 61 20 2d 68 61 73 74 79 70    pragma -hastyp
1030: 65 6d 65 74 68 6f 64 73 20 6e 6f 20 20 3b 20 23  emethods no  ; #
1040: 20 74 79 70 65 20 69 73 20 6e 6f 74 20 72 65 6c   type is not rel
1050: 65 76 61 6e 74 2e 0a 0a 20 20 20 20 23 20 23 20  evant...    # # 
1060: 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23  ## ### ##### ###
1070: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23  ##### ##########
1080: 23 23 23 0a 7d 0a 0a 6e 61 6d 65 73 70 61 63 65  ###.}..namespace
1090: 20 65 76 61 6c 20 3a 3a 76 63 3a 3a 66 6f 73 73   eval ::vc::foss
10a0: 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 20  il::import::cvs 
10b0: 7b 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20  {.    namespace 
10c0: 65 78 70 6f 72 74 20 70 72 6f 6a 65 63 74 0a 20  export project. 
10d0: 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61     namespace eva
10e0: 6c 20 70 72 6f 6a 65 63 74 20 7b 0a 09 6e 61 6d  l project {..nam
10f0: 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a  espace import ::
1100: 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f  vc::fossil::impo
1110: 72 74 3a 3a 63 76 73 3a 3a 66 69 6c 65 0a 09 6e  rt::cvs::file..n
1120: 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20  amespace import 
1130: 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d  ::vc::fossil::im
1140: 70 6f 72 74 3a 3a 63 76 73 3a 3a 73 74 61 74 65  port::cvs::state
1150: 0a 09 23 20 49 6d 70 6f 72 74 20 6e 6f 74 20 72  ..# Import not r
1160: 65 71 75 69 72 65 64 2c 20 61 6c 72 65 61 64 79  equired, already
1170: 20 61 20 63 68 69 6c 64 20 6e 61 6d 65 73 70 61   a child namespa
1180: 63 65 2e 0a 09 23 20 6e 61 6d 65 73 70 61 63 65  ce...# namespace
1190: 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 66 6f   import ::vc::fo
11a0: 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76  ssil::import::cv
11b0: 73 3a 3a 70 72 6f 6a 65 63 74 3a 3a 73 79 6d 0a  s::project::sym.
11c0: 20 20 20 20 7d 0a 7d 0a 0a 23 20 23 20 23 23 20      }.}..# # ## 
11d0: 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23  ### ##### ######
11e0: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23  ## #############
11f0: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23   ###############
1200: 23 23 23 23 23 23 0a 23 23 20 52 65 61 64 79 0a  ######.## Ready.
1210: 0a 70 61 63 6b 61 67 65 20 70 72 6f 76 69 64 65  .package provide
1220: 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70   vc::fossil::imp
1230: 6f 72 74 3a 3a 63 76 73 3a 3a 70 72 6f 6a 65 63  ort::cvs::projec
1240: 74 20 31 2e 30 0a 72 65 74 75 72 6e 0a           t 1.0.return.