Hex Artifact Content
Not logged in

Artifact 55a6ec9011f9335bac80172c4d49a7989ef2f116:

File tools/cvs2fossil/lib/c2f_fossil.tcl part of check-in [b7fc4d9d04] - Extended test-import-manifest to return not only the record-id, but the hash uuid as well. Extended the fossil accessor class with methods for regular and branch tagging. Split the initialization from construction (needed for when we split the import pass into three), and a method to set/retrieve the accessor's configuration (persistence across passes). by aku on 2008-03-05 03:35:16.

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 46 6f 73 73 69 6c 2c 20 61 20 68 65 6c 70  # Fossil, a help
0210: 65 72 20 63 6c 61 73 73 20 6d 61 6e 61 67 69 6e  er class managin
0220: 67 20 74 68 65 20 61 63 63 65 73 73 20 74 6f 20  g the access to 
0230: 66 6f 73 73 69 6c 20 72 65 70 6f 73 69 74 6f 72  fossil repositor
0240: 69 65 73 2e 0a 0a 23 20 23 20 23 23 20 23 23 23  ies...# # ## ###
0250: 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20   ##### ######## 
0260: 23 23 23 23 23 23 23 23 23 23 23 23 23 20 23 23  ############# ##
0270: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0280: 23 23 23 0a 23 23 20 52 65 71 75 69 72 65 6d 65  ###.## Requireme
0290: 6e 74 73 0a 0a 70 61 63 6b 61 67 65 20 72 65 71  nts..package req
02a0: 75 69 72 65 20 54 63 6c 20 38 2e 34 20 20 20 20  uire 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 20 20 3b 20 23 20 52 65 71           ; # Req
02d0: 75 69 72 65 64 20 72 75 6e 74 69 6d 65 2e 0a 70  uired runtime..p
02e0: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 66  ackage require f
02f0: 69 6c 65 75 74 69 6c 20 20 20 20 20 20 20 20 20  ileutil         
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 54 65 6d 70 2e 64 69 72 2f     ; # Temp.dir/
0320: 66 69 6c 65 0a 70 61 63 6b 61 67 65 20 72 65 71  file.package req
0330: 75 69 72 65 20 73 6e 69 74 20 20 20 20 20 20 20  uire snit       
0340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0350: 20 20 20 20 20 20 20 20 20 3b 20 23 20 4f 4f 20           ; # OO 
0360: 73 79 73 74 65 6d 2e 0a 70 61 63 6b 61 67 65 20  system..package 
0370: 72 65 71 75 69 72 65 20 76 63 3a 3a 74 6f 6f 6c  require vc::tool
0380: 73 3a 3a 74 72 6f 75 62 6c 65 20 20 20 20 20 20  s::trouble      
0390: 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 20              ; # 
03a0: 45 72 72 6f 72 20 72 65 70 6f 72 74 69 6e 67 2e  Error reporting.
03b0: 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65  .package require
03c0: 20 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6c 6f 67 20   vc::tools::log 
03d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
03e0: 20 20 20 20 20 3b 20 23 20 55 73 65 72 20 66 65       ; # User fe
03f0: 65 64 62 61 63 6b 0a 70 61 63 6b 61 67 65 20 72  edback.package r
0400: 65 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 73 69  equire vc::fossi
0410: 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a  l::import::cvs::
0420: 69 6e 74 65 67 72 69 74 79 20 20 3b 20 23 20 53  integrity  ; # S
0430: 74 61 74 65 20 69 6e 74 65 67 72 69 74 79 20 63  tate integrity c
0440: 68 65 63 6b 73 2e 0a 0a 23 20 23 20 23 23 20 23  hecks...# # ## #
0450: 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23  ## ##### #######
0460: 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 20  # ############# 
0470: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0480: 23 23 23 23 23 0a 23 23 0a 0a 73 6e 69 74 3a 3a  #####.##..snit::
0490: 74 79 70 65 20 3a 3a 76 63 3a 3a 66 6f 73 73 69  type ::vc::fossi
04a0: 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a  l::import::cvs::
04b0: 66 6f 73 73 69 6c 20 7b 0a 20 20 20 20 23 20 23  fossil {.    # #
04c0: 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23   ## ### ##### ##
04d0: 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23  ###### #########
04e0: 23 23 23 23 0a 20 20 20 20 23 23 20 50 75 62 6c  ####.    ## Publ
04f0: 69 63 20 41 50 49 0a 0a 20 20 20 20 63 6f 6e 73  ic API..    cons
0500: 74 72 75 63 74 6f 72 20 7b 7d 20 7b 0a 09 72 65  tructor {} {..re
0510: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20  turn.    }..    
0520: 6d 65 74 68 6f 64 20 69 6e 69 74 69 61 6c 69 7a  method initializ
0530: 65 20 7b 7d 20 7b 0a 09 73 65 74 20 6d 79 72 65  e {} {..set myre
0540: 70 6f 73 69 74 6f 72 79 20 5b 66 69 6c 65 75 74  pository [fileut
0550: 69 6c 3a 3a 74 65 6d 70 66 69 6c 65 20 63 76 73  il::tempfile cvs
0560: 32 66 6f 73 73 69 6c 5f 72 65 70 6f 5f 5d 0a 09  2fossil_repo_]..
0570: 73 65 74 20 6d 79 77 6f 72 6b 73 70 61 63 65 20  set myworkspace 
0580: 20 5b 66 69 6c 65 75 74 69 6c 3a 3a 74 65 6d 70   [fileutil::temp
0590: 66 69 6c 65 20 63 76 73 32 66 6f 73 73 69 6c 5f  file cvs2fossil_
05a0: 77 73 70 63 5f 5d 0a 09 3a 3a 66 69 6c 65 20 64  wspc_]..::file d
05b0: 65 6c 65 74 65 20 24 6d 79 77 6f 72 6b 73 70 61  elete $myworkspa
05c0: 63 65 0a 09 3a 3a 66 69 6c 65 20 6d 6b 64 69 72  ce..::file mkdir
05d0: 20 20 24 6d 79 77 6f 72 6b 73 70 61 63 65 0a 0a    $myworkspace..
05e0: 09 44 6f 20 6e 65 77 20 5b 3a 3a 66 69 6c 65 20  .Do new [::file 
05f0: 6e 61 74 69 76 65 6e 61 6d 65 20 24 6d 79 72 65  nativename $myre
0600: 70 6f 73 69 74 6f 72 79 5d 0a 09 24 73 65 6c 66  pository]..$self
0610: 20 49 6e 57 6f 72 6b 73 70 61 63 65 20 3b 20 44   InWorkspace ; D
0620: 6f 20 6f 70 65 6e 20 5b 3a 3a 66 69 6c 65 20 6e  o open [::file n
0630: 61 74 69 76 65 6e 61 6d 65 20 24 6d 79 72 65 70  ativename $myrep
0640: 6f 73 69 74 6f 72 79 5d 0a 09 24 73 65 6c 66 20  ository]..$self 
0650: 52 65 73 74 6f 72 65 50 77 64 0a 0a 09 6c 6f 67  RestorePwd...log
0660: 20 77 72 69 74 65 20 38 20 66 6f 73 73 69 6c 20   write 8 fossil 
0670: 7b 53 63 72 61 74 63 68 20 72 65 70 6f 73 69 74  {Scratch reposit
0680: 6f 72 79 20 63 72 65 61 74 65 64 20 40 20 24 6d  ory created @ $m
0690: 79 72 65 70 6f 73 69 74 6f 72 79 7d 0a 09 6c 6f  yrepository}..lo
06a0: 67 20 77 72 69 74 65 20 38 20 66 6f 73 73 69 6c  g write 8 fossil
06b0: 20 7b 53 63 72 61 74 63 68 20 77 6f 72 6b 73 70   {Scratch worksp
06c0: 61 63 65 20 20 63 72 65 61 74 65 64 20 40 20 24  ace  created @ $
06d0: 6d 79 77 6f 72 6b 73 70 61 63 65 20 7d 0a 09 72  myworkspace }..r
06e0: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20  eturn.    }..   
06f0: 20 6d 65 74 68 6f 64 20 6c 6f 61 64 20 7b 72 20   method load {r 
0700: 77 7d 20 7b 0a 09 73 65 74 20 6d 79 72 65 70 6f  w} {..set myrepo
0710: 73 69 74 6f 72 79 20 24 72 0a 09 73 65 74 20 6d  sitory $r..set m
0720: 79 77 6f 72 6b 73 70 61 63 65 20 20 24 77 0a 0a  yworkspace  $w..
0730: 09 6c 6f 67 20 77 72 69 74 65 20 38 20 66 6f 73  .log write 8 fos
0740: 73 69 6c 20 7b 53 63 72 61 74 63 68 20 72 65 70  sil {Scratch rep
0750: 6f 73 69 74 6f 72 79 20 66 6f 75 6e 64 20 40 20  ository found @ 
0760: 24 6d 79 72 65 70 6f 73 69 74 6f 72 79 7d 0a 09  $myrepository}..
0770: 6c 6f 67 20 77 72 69 74 65 20 38 20 66 6f 73 73  log write 8 foss
0780: 69 6c 20 7b 53 63 72 61 74 63 68 20 77 6f 72 6b  il {Scratch work
0790: 73 70 61 63 65 20 20 66 6f 75 6e 64 20 40 20 24  space  found @ $
07a0: 6d 79 77 6f 72 6b 73 70 61 63 65 7d 0a 09 72 65  myworkspace}..re
07b0: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20  turn.    }..    
07c0: 6d 65 74 68 6f 64 20 73 70 61 63 65 20 7b 7d 20  method space {} 
07d0: 7b 0a 09 72 65 74 75 72 6e 20 5b 6c 69 73 74 20  {..return [list 
07e0: 24 6d 79 72 65 70 6f 73 69 74 6f 72 79 20 24 6d  $myrepository $m
07f0: 79 77 6f 72 6b 73 70 61 63 65 5d 0a 20 20 20 20  yworkspace].    
0800: 7d 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 23  }..    # # ## ##
0810: 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23  # ##### ########
0820: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20   #############. 
0830: 20 20 20 23 23 0a 0a 20 20 20 20 6d 65 74 68 6f     ##..    metho
0840: 64 20 72 6f 6f 74 20 7b 7d 20 7b 0a 09 23 20 54  d root {} {..# T
0850: 68 65 20 69 64 20 6f 66 20 74 68 65 20 72 6f 6f  he id of the roo
0860: 74 20 6d 61 6e 69 66 65 73 74 20 69 73 20 68 61  t manifest is ha
0870: 72 64 77 69 72 65 64 20 69 6e 74 6f 20 66 6f 73  rdwired into fos
0880: 73 69 6c 2e 20 54 68 69 73 0a 09 23 20 6d 61 6e  sil. This..# man
0890: 69 66 65 73 74 20 69 73 20 63 72 65 61 74 65 64  ifest is created
08a0: 20 77 68 65 6e 20 61 20 6e 65 77 20 72 65 70 6f   when a new repo
08b0: 73 69 74 6f 72 79 20 69 73 20 6d 61 64 65 20 28  sitory is made (
08c0: 53 65 65 0a 09 23 20 27 6e 65 77 27 2c 20 69 6e  See..# 'new', in
08d0: 20 74 68 65 20 63 6f 6e 73 74 72 75 63 74 6f 72   the constructor
08e0: 29 2e 0a 09 72 65 74 75 72 6e 20 31 0a 20 20 20  )...return 1.   
08f0: 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 77   }..    method w
0900: 6f 72 6b 73 70 61 63 65 20 7b 7d 20 7b 20 72 65  orkspace {} { re
0910: 74 75 72 6e 20 24 6d 79 77 6f 72 6b 73 70 61 63  turn $myworkspac
0920: 65 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20  e }..    method 
0930: 69 6d 70 6f 72 74 66 69 6c 65 73 20 7b 6d 61 70  importfiles {map
0940: 7d 20 7b 0a 09 23 20 6d 61 70 20 3d 20 6c 69 73  } {..# map = lis
0950: 74 20 28 69 6e 73 74 72 75 63 74 69 6f 6e 29 2c  t (instruction),
0960: 20 69 6e 73 74 72 75 63 74 69 6f 6e 20 3d 20 61   instruction = a
0970: 64 64 7c 64 65 6c 74 61 0a 09 23 20 61 64 64 20  dd|delta..# add 
0980: 20 20 3d 20 6c 69 73 74 20 28 27 41 27 2c 20 70    = list ('A', p
0990: 61 74 68 29 0a 09 23 20 64 65 6c 74 61 20 3d 20  ath)..# delta = 
09a0: 6c 69 73 74 20 28 27 44 27 2c 20 70 61 74 68 2c  list ('D', path,
09b0: 20 73 72 63 29 0a 0a 09 6c 6f 67 20 77 72 69 74   src)...log writ
09c0: 65 20 33 20 66 6f 73 73 69 6c 20 7b 49 6d 70 6f  e 3 fossil {Impo
09d0: 72 74 69 6e 67 20 72 65 76 69 73 69 6f 6e 73 2e  rting revisions.
09e0: 2e 2e 7d 0a 0a 09 61 72 72 61 79 20 73 65 74 20  ..}...array set 
09f0: 69 64 20 7b 7d 0a 09 24 73 65 6c 66 20 49 6e 57  id {}..$self InW
0a00: 6f 72 6b 73 70 61 63 65 0a 0a 09 73 65 74 20 6e  orkspace...set n
0a10: 20 20 20 30 0a 09 73 65 74 20 6d 61 78 20 5b 6c     0..set max [l
0a20: 6c 65 6e 67 74 68 20 24 6d 61 70 5d 0a 0a 09 66  length $map]...f
0a30: 6f 72 65 61 63 68 20 69 6e 73 6e 20 24 6d 61 70  oreach insn $map
0a40: 20 7b 0a 09 20 20 20 20 6c 6f 67 20 70 72 6f 67   {..    log prog
0a50: 72 65 73 73 20 33 20 66 6f 73 73 69 6c 20 24 6e  ress 3 fossil $n
0a60: 20 24 6d 61 78 20 3b 20 69 6e 63 72 20 6e 0a 0a   $max ; incr n..
0a70: 09 20 20 20 20 73 74 72 75 63 74 3a 3a 6c 69 73  .    struct::lis
0a80: 74 20 61 73 73 69 67 6e 20 24 69 6e 73 6e 20 63  t assign $insn c
0a90: 6d 64 20 70 61 20 70 62 0a 09 20 20 20 20 73 77  md pa pb..    sw
0aa0: 69 74 63 68 20 2d 65 78 61 63 74 20 2d 2d 20 24  itch -exact -- $
0ab0: 63 6d 64 20 7b 0a 09 09 41 20 7b 0a 09 09 20 20  cmd {...A {...  
0ac0: 20 20 6c 6f 67 20 77 72 69 74 65 20 38 20 66 6f    log write 8 fo
0ad0: 73 73 69 6c 20 7b 49 6d 70 6f 72 74 69 6e 67 20  ssil {Importing 
0ae0: 20 20 3c 24 70 61 3e 2c 7d 0a 0a 09 09 20 20 20    <$pa>,}....   
0af0: 20 23 20 52 65 73 75 6c 74 20 3d 20 27 69 6e 73   # Result = 'ins
0b00: 65 72 74 65 64 20 61 73 20 72 65 63 6f 72 64 20  erted as record 
0b10: 3a 46 4f 4f 3a 27 0a 09 09 20 20 20 20 23 20 20  :FOO:'...    #  
0b20: 20 20 20 20 20 20 20 20 20 30 20 20 20 20 20 20           0      
0b30: 20 20 31 20 20 32 20 20 20 20 20 33 0a 09 09 20    1  2     3... 
0b40: 20 20 20 73 65 74 20 72 65 73 20 5b 44 6f 20 74     set res [Do t
0b50: 65 73 74 2d 63 6f 6e 74 65 6e 74 2d 70 75 74 20  est-content-put 
0b60: 24 70 61 5d 0a 09 09 20 20 20 20 69 6e 74 65 67  $pa]...    integ
0b70: 72 69 74 79 20 61 73 73 65 72 74 20 7b 0a 09 09  rity assert {...
0b80: 09 5b 72 65 67 65 78 70 20 7b 5e 69 6e 73 65 72  .[regexp {^inser
0b90: 74 65 64 20 61 73 20 72 65 63 6f 72 64 20 5c 64  ted as record \d
0ba0: 2b 24 7d 20 24 72 65 73 5d 0a 09 09 20 20 20 20  +$} $res]...    
0bb0: 7d 20 7b 55 6e 61 62 6c 65 20 74 6f 20 70 72 6f  } {Unable to pro
0bc0: 63 65 73 73 20 75 6e 65 78 70 65 63 74 65 64 20  cess unexpected 
0bd0: 66 6f 73 73 69 6c 20 6f 75 74 70 75 74 20 27 24  fossil output '$
0be0: 72 65 73 27 7d 0a 09 09 20 20 20 20 73 65 74 20  res'}...    set 
0bf0: 69 64 28 24 70 61 29 20 5b 6c 69 6e 64 65 78 20  id($pa) [lindex 
0c00: 24 72 65 73 20 33 5d 0a 09 09 7d 0a 09 09 44 20  $res 3]...}...D 
0c10: 7b 0a 09 09 20 20 20 20 6c 6f 67 20 77 72 69 74  {...    log writ
0c20: 65 20 38 20 66 6f 73 73 69 6c 20 7b 43 6f 6d 70  e 8 fossil {Comp
0c30: 72 65 73 73 69 6e 67 20 3c 24 70 61 3e 2c 20 61  ressing <$pa>, a
0c40: 73 20 64 65 6c 74 61 20 6f 66 20 3c 24 70 62 3e  s delta of <$pb>
0c50: 7d 0a 0a 09 09 20 20 20 20 44 6f 20 74 65 73 74  }....    Do test
0c60: 2d 63 6f 6e 74 65 6e 74 2d 64 65 6c 74 69 66 79  -content-deltify
0c70: 20 24 69 64 28 24 70 61 29 20 24 69 64 28 24 70   $id($pa) $id($p
0c80: 62 29 20 31 0a 09 09 7d 0a 09 20 20 20 20 7d 0a  b) 1...}..    }.
0c90: 09 7d 0a 09 24 73 65 6c 66 20 52 65 73 74 6f 72  .}..$self Restor
0ca0: 65 50 77 64 0a 0a 09 6c 6f 67 20 77 72 69 74 65  ePwd...log write
0cb0: 20 33 20 66 6f 73 73 69 6c 20 44 6f 6e 65 2e 0a   3 fossil Done..
0cc0: 09 72 65 74 75 72 6e 20 5b 61 72 72 61 79 20 67  .return [array g
0cd0: 65 74 20 69 64 5d 0a 20 20 20 20 7d 0a 0a 20 20  et id].    }..  
0ce0: 20 20 6d 65 74 68 6f 64 20 69 6d 70 6f 72 74 72    method importr
0cf0: 65 76 69 73 69 6f 6e 20 7b 6c 61 62 65 6c 20 75  evision {label u
0d00: 73 65 72 20 6d 65 73 73 61 67 65 20 64 61 74 65  ser message date
0d10: 20 70 61 72 65 6e 74 20 72 65 76 69 73 69 6f 6e   parent revision
0d20: 73 7d 20 7b 0a 09 23 20 4d 61 73 73 61 67 65 20  s} {..# Massage 
0d30: 74 68 65 20 63 6f 6d 6d 69 74 20 6d 65 73 73 61  the commit messa
0d40: 67 65 20 74 6f 20 72 65 6d 65 6d 62 65 72 20 74  ge to remember t
0d50: 68 65 20 6f 6c 64 20 75 73 65 72 20 6e 61 6d 65  he old user name
0d60: 0a 09 23 20 77 68 69 63 68 20 64 69 64 20 74 68  ..# which did th
0d70: 65 20 63 6f 6d 6d 69 74 20 69 6e 20 43 56 53 2e  e commit in CVS.
0d80: 0a 0a 09 73 65 74 20 6d 65 73 73 61 67 65 20 22  ...set message "
0d90: 42 79 20 24 75 73 65 72 3a 5c 6e 24 6d 65 73 73  By $user:\n$mess
0da0: 61 67 65 22 0a 0a 09 6c 6f 67 20 77 72 69 74 65  age"...log write
0db0: 20 32 20 66 6f 73 73 69 6c 20 7b 3d 3d 20 24 75   2 fossil {== $u
0dc0: 73 65 72 20 40 20 5b 63 6c 6f 63 6b 20 66 6f 72  ser @ [clock for
0dd0: 6d 61 74 20 24 64 61 74 65 5d 7d 0a 09 6c 6f 67  mat $date]}..log
0de0: 20 77 72 69 74 65 20 32 20 66 6f 73 73 69 6c 20   write 2 fossil 
0df0: 7b 2d 3e 20 24 70 61 72 65 6e 74 7d 0a 09 6c 6f  {-> $parent}..lo
0e00: 67 20 77 72 69 74 65 20 39 20 66 6f 73 73 69 6c  g write 9 fossil
0e10: 20 7b 25 25 20 5b 6a 6f 69 6e 20 5b 73 70 6c 69   {%% [join [spli
0e20: 74 20 24 6d 65 73 73 61 67 65 20 5c 6e 5d 20 22  t $message \n] "
0e30: 5c 6e 25 25 20 22 5d 7d 0a 0a 09 6c 61 70 70 65  \n%% "]}...lappe
0e40: 6e 64 20 63 6d 64 20 44 6f 20 74 65 73 74 2d 69  nd cmd Do test-i
0e50: 6d 70 6f 72 74 2d 6d 61 6e 69 66 65 73 74 20 24  mport-manifest $
0e60: 64 61 74 65 20 24 6d 65 73 73 61 67 65 0a 09 69  date $message..i
0e70: 66 20 7b 24 70 61 72 65 6e 74 20 6e 65 20 22 22  f {$parent ne ""
0e80: 7d 20 7b 20 6c 61 70 70 65 6e 64 20 63 6d 64 20  } { lappend cmd 
0e90: 2d 70 20 24 70 61 72 65 6e 74 20 7d 0a 09 66 6f  -p $parent }..fo
0ea0: 72 65 61 63 68 20 7b 66 72 69 64 20 66 70 61 74  reach {frid fpat
0eb0: 68 20 66 6c 61 62 65 6c 7d 20 24 72 65 76 69 73  h flabel} $revis
0ec0: 69 6f 6e 73 20 7b 0a 09 20 20 20 20 6c 61 70 70  ions {..    lapp
0ed0: 65 6e 64 20 63 6d 64 20 2d 66 20 24 66 72 69 64  end cmd -f $frid
0ee0: 20 24 66 70 61 74 68 0a 09 20 20 20 20 6c 6f 67   $fpath..    log
0ef0: 20 77 72 69 74 65 20 31 32 20 66 6f 73 73 69 6c   write 12 fossil
0f00: 20 7b 2a 2a 20 3c 5b 66 6f 72 6d 61 74 20 25 35   {** <[format %5
0f10: 64 20 24 66 72 69 64 5d 3e 20 3d 20 3c 24 66 6c  d $frid]> = <$fl
0f20: 61 62 65 6c 3e 7d 0a 09 7d 0a 0a 09 23 20 72 75  abel>}..}...# ru
0f30: 6e 20 66 6f 73 73 69 6c 20 74 65 73 74 2d 63 6f  n fossil test-co
0f40: 6d 6d 61 6e 64 20 70 65 72 66 6f 72 6d 69 6e 67  mmand performing
0f50: 20 74 68 65 20 69 6d 70 6f 72 74 2e 0a 09 6c 6f   the import...lo
0f60: 67 20 77 72 69 74 65 20 31 32 20 66 6f 73 73 69  g write 12 fossi
0f70: 6c 20 7b 09 5b 6c 72 65 70 6c 61 63 65 20 24 63  l {.[lreplace $c
0f80: 6d 64 20 33 20 33 20 40 40 5d 7d 0a 0a 09 24 73  md 3 3 @@]}...$s
0f90: 65 6c 66 20 49 6e 57 6f 72 6b 73 70 61 63 65 0a  elf InWorkspace.
0fa0: 09 73 65 74 20 72 65 73 20 5b 65 76 61 6c 20 24  .set res [eval $
0fb0: 63 6d 64 5d 0a 09 24 73 65 6c 66 20 52 65 73 74  cmd]..$self Rest
0fc0: 6f 72 65 50 77 64 0a 0a 09 69 6e 74 65 67 72 69  orePwd...integri
0fd0: 74 79 20 61 73 73 65 72 74 20 7b 0a 09 20 20 20  ty assert {..   
0fe0: 20 5b 72 65 67 65 78 70 20 7b 5e 69 6e 73 65 72   [regexp {^inser
0ff0: 74 65 64 20 61 73 20 72 65 63 6f 72 64 20 5c 64  ted as record \d
1000: 2b 2c 20 5b 30 2d 39 61 2d 66 41 2d 46 5d 2b 24  +, [0-9a-fA-F]+$
1010: 7d 20 24 72 65 73 5d 0a 09 7d 20 7b 55 6e 61 62  } $res]..} {Unab
1020: 6c 65 20 74 6f 20 70 72 6f 63 65 73 73 20 75 6e  le to process un
1030: 65 78 70 65 63 74 65 64 20 66 6f 73 73 69 6c 20  expected fossil 
1040: 6f 75 74 70 75 74 20 27 24 72 65 73 27 7d 0a 09  output '$res'}..
1050: 73 65 74 20 72 69 64 20 20 5b 73 74 72 69 6e 67  set rid  [string
1060: 20 74 72 69 6d 20 5b 6c 69 6e 64 65 78 20 24 72   trim [lindex $r
1070: 65 73 20 33 5d 20 2c 5d 0a 09 73 65 74 20 75 75  es 3] ,]..set uu
1080: 69 64 20 5b 6c 69 6e 64 65 78 20 24 72 65 73 20  id [lindex $res 
1090: 34 5d 0a 0a 09 6c 6f 67 20 77 72 69 74 65 20 32  4]...log write 2
10a0: 20 66 6f 73 73 69 6c 20 7b 3d 3d 20 24 72 69 64   fossil {== $rid
10b0: 20 28 24 75 75 69 64 29 7d 0a 0a 09 72 65 74 75   ($uuid)}...retu
10c0: 72 6e 20 5b 6c 69 73 74 20 24 72 69 64 20 24 75  rn [list $rid $u
10d0: 75 69 64 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20  uid].    }..    
10e0: 6d 65 74 68 6f 64 20 74 61 67 20 7b 75 75 69 64  method tag {uuid
10f0: 20 6e 61 6d 65 7d 20 7b 0a 09 6c 6f 67 20 77 72   name} {..log wr
1100: 69 74 65 20 32 20 66 6f 73 73 69 6c 20 7b 54 61  ite 2 fossil {Ta
1110: 67 20 27 24 6e 61 6d 65 27 20 40 20 24 75 75 69  g '$name' @ $uui
1120: 64 7d 0a 0a 09 24 73 65 6c 66 20 49 6e 57 6f 72  d}...$self InWor
1130: 6b 73 70 61 63 65 0a 09 44 6f 20 74 61 67 20 61  kspace..Do tag a
1140: 64 64 20 73 79 6d 2d 24 6e 61 6d 65 20 24 75 75  dd sym-$name $uu
1150: 69 64 0a 09 24 73 65 6c 66 20 52 65 73 74 6f 72  id..$self Restor
1160: 65 50 77 64 0a 09 72 65 74 75 72 6e 0a 20 20 20  ePwd..return.   
1170: 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 62   }..    method b
1180: 72 61 6e 63 68 6d 61 72 6b 20 7b 75 75 69 64 20  ranchmark {uuid 
1190: 6e 61 6d 65 7d 20 7b 0a 09 23 20 57 65 20 64 6f  name} {..# We do
11a0: 20 6e 6f 74 20 6d 61 72 6b 20 74 68 65 20 74 72   not mark the tr
11b0: 75 6e 6b 0a 09 69 66 20 7b 24 6e 61 6d 65 20 65  unk..if {$name e
11c0: 71 20 22 3a 74 72 75 6e 6b 3a 22 7d 20 72 65 74  q ":trunk:"} ret
11d0: 75 72 6e 0a 0a 09 6c 6f 67 20 77 72 69 74 65 20  urn...log write 
11e0: 32 20 66 6f 73 73 69 6c 20 7b 42 65 67 69 6e 20  2 fossil {Begin 
11f0: 62 72 61 6e 63 68 20 27 24 6e 61 6d 65 27 20 40  branch '$name' @
1200: 20 24 75 75 69 64 7d 0a 0a 09 24 73 65 6c 66 20   $uuid}...$self 
1210: 49 6e 57 6f 72 6b 73 70 61 63 65 0a 09 44 6f 20  InWorkspace..Do 
1220: 74 61 67 20 62 72 61 6e 63 68 20 73 79 6d 2d 24  tag branch sym-$
1230: 6e 61 6d 65 20 24 75 75 69 64 0a 09 24 73 65 6c  name $uuid..$sel
1240: 66 20 52 65 73 74 6f 72 65 50 77 64 0a 09 72 65  f RestorePwd..re
1250: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20  turn.    }..    
1260: 6d 65 74 68 6f 64 20 62 72 61 6e 63 68 63 61 6e  method branchcan
1270: 63 65 6c 20 7b 75 75 69 64 20 6e 61 6d 65 7d 20  cel {uuid name} 
1280: 7b 0a 09 23 20 54 68 65 20 74 72 75 6e 6b 20 69  {..# The trunk i
1290: 73 20 75 6e 6d 61 72 6b 65 64 2c 20 74 68 75 73  s unmarked, thus
12a0: 20 63 61 6e 63 65 6c 6c 61 74 69 6f 6e 20 69 73   cancellation is
12b0: 20 6e 6f 74 20 6e 65 65 64 65 64 0a 09 23 20 65   not needed..# e
12c0: 69 74 68 65 72 2e 0a 09 69 66 20 7b 24 6e 61 6d  ither...if {$nam
12d0: 65 20 65 71 20 22 3a 74 72 75 6e 6b 3a 22 7d 20  e eq ":trunk:"} 
12e0: 72 65 74 75 72 6e 0a 0a 09 6c 6f 67 20 77 72 69  return...log wri
12f0: 74 65 20 32 20 66 6f 73 73 69 6c 20 7b 43 61 6e  te 2 fossil {Can
1300: 63 65 6c 20 62 72 61 6e 63 68 20 27 24 6e 61 6d  cel branch '$nam
1310: 65 27 20 40 20 24 75 75 69 64 7d 0a 0a 09 24 73  e' @ $uuid}...$s
1320: 65 6c 66 20 49 6e 57 6f 72 6b 73 70 61 63 65 0a  elf InWorkspace.
1330: 09 44 6f 20 74 61 67 20 64 65 6c 65 74 65 20 73  .Do tag delete s
1340: 79 6d 2d 24 6e 61 6d 65 20 24 75 75 69 64 0a 09  ym-$name $uuid..
1350: 24 73 65 6c 66 20 52 65 73 74 6f 72 65 50 77 64  $self RestorePwd
1360: 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a  ..return.    }..
1370: 20 20 20 20 6d 65 74 68 6f 64 20 66 69 6e 61 6c      method final
1380: 69 7a 65 20 7b 64 65 73 74 69 6e 61 74 69 6f 6e  ize {destination
1390: 7d 20 7b 0a 09 6c 6f 67 20 77 72 69 74 65 20 32  } {..log write 2
13a0: 20 66 6f 73 73 69 6c 20 7b 46 69 6e 61 6c 69 7a   fossil {Finaliz
13b0: 65 2c 20 72 65 62 75 69 6c 64 69 6e 67 20 72 65  e, rebuilding re
13c0: 70 6f 73 69 74 6f 72 79 7d 0a 09 44 6f 20 72 65  pository}..Do re
13d0: 62 75 69 6c 64 20 5b 3a 3a 66 69 6c 65 20 6e 61  build [::file na
13e0: 74 69 76 65 6e 61 6d 65 20 24 6d 79 72 65 70 6f  tivename $myrepo
13f0: 73 69 74 6f 72 79 5d 0a 0a 09 3a 3a 66 69 6c 65  sitory]...::file
1400: 20 72 65 6e 61 6d 65 20 2d 66 6f 72 63 65 20 24   rename -force $
1410: 6d 79 72 65 70 6f 73 69 74 6f 72 79 20 24 64 65  myrepository $de
1420: 73 74 69 6e 61 74 69 6f 6e 0a 09 3a 3a 66 69 6c  stination..::fil
1430: 65 20 64 65 6c 65 74 65 20 2d 66 6f 72 63 65 20  e delete -force 
1440: 24 6d 79 77 6f 72 6b 73 70 61 63 65 0a 09 24 73  $myworkspace..$s
1450: 65 6c 66 20 64 65 73 74 72 6f 79 0a 0a 09 6c 6f  elf destroy...lo
1460: 67 20 77 72 69 74 65 20 32 20 66 6f 73 73 69 6c  g write 2 fossil
1470: 20 7b 64 65 73 74 69 6e 61 74 69 6f 6e 20 24 64   {destination $d
1480: 65 73 74 69 6e 61 74 69 6f 6e 7d 0a 09 72 65 74  estination}..ret
1490: 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23  urn.    }..    #
14a0: 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20   # ## ### ##### 
14b0: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23  ######## #######
14c0: 23 23 23 23 23 23 0a 20 20 20 20 23 23 0a 0a 20  ######.    ##.. 
14d0: 20 20 20 74 79 70 65 6d 65 74 68 6f 64 20 73 65     typemethod se
14e0: 74 6c 6f 63 61 74 69 6f 6e 20 7b 70 61 74 68 7d  tlocation {path}
14f0: 20 7b 0a 09 73 65 74 20 6d 79 66 6f 73 73 69 6c   {..set myfossil
1500: 63 6d 64 20 20 20 20 24 70 61 74 68 0a 09 73 65  cmd    $path..se
1510: 74 20 6d 79 6e 65 65 64 6c 6f 63 61 74 69 6f 6e  t myneedlocation
1520: 20 30 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d   0..return.    }
1530: 0a 0a 20 20 20 20 74 79 70 65 6d 65 74 68 6f 64  ..    typemethod
1540: 20 76 61 6c 69 64 61 74 65 20 7b 7d 20 7b 0a 09   validate {} {..
1550: 69 66 20 7b 21 24 6d 79 6e 65 65 64 6c 6f 63 61  if {!$myneedloca
1560: 74 69 6f 6e 7d 20 7b 0a 09 20 20 20 20 69 66 20  tion} {..    if 
1570: 7b 21 5b 66 69 6c 65 75 74 69 6c 3a 3a 74 65 73  {![fileutil::tes
1580: 74 20 24 6d 79 66 6f 73 73 69 6c 63 6d 64 20 65  t $myfossilcmd e
1590: 66 72 78 20 6d 73 67 5d 7d 20 7b 0a 09 09 74 72  frx msg]} {...tr
15a0: 6f 75 62 6c 65 20 66 61 74 61 6c 20 22 42 61 64  ouble fatal "Bad
15b0: 20 70 61 74 68 20 66 6f 72 20 66 6f 73 73 69 6c   path for fossil
15c0: 20 65 78 65 63 75 74 61 62 6c 65 3a 20 24 6d 73   executable: $ms
15d0: 67 22 0a 09 20 20 20 20 7d 0a 09 7d 20 65 6c 73  g"..    }..} els
15e0: 65 20 7b 0a 09 20 20 20 20 74 72 6f 75 62 6c 65  e {..    trouble
15f0: 20 66 61 74 61 6c 20 22 44 6f 6e 27 74 20 6b 6e   fatal "Don't kn
1600: 6f 77 20 77 68 65 72 65 20 74 6f 20 66 69 6e 64  ow where to find
1610: 20 74 68 65 20 27 66 6f 73 73 69 6c 27 20 65 78   the 'fossil' ex
1620: 65 63 75 74 61 62 6c 65 22 0a 09 7d 0a 09 72 65  ecutable"..}..re
1630: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20  turn.    }..    
1640: 74 79 70 65 63 6f 6e 73 74 72 75 63 74 6f 72 20  typeconstructor 
1650: 7b 0a 09 73 65 74 20 6c 6f 63 61 74 69 6f 6e 20  {..set location 
1660: 5b 61 75 74 6f 5f 65 78 65 63 6f 6b 20 66 6f 73  [auto_execok fos
1670: 73 69 6c 5d 0a 09 73 65 74 20 6d 79 6e 65 65 64  sil]..set myneed
1680: 6c 6f 63 61 74 69 6f 6e 20 5b 65 78 70 72 20 7b  location [expr {
1690: 24 6c 6f 63 61 74 69 6f 6e 20 65 71 20 22 22 7d  $location eq ""}
16a0: 5d 0a 09 69 66 20 7b 24 6d 79 6e 65 65 64 6c 6f  ]..if {$myneedlo
16b0: 63 61 74 69 6f 6e 7d 20 72 65 74 75 72 6e 0a 09  cation} return..
16c0: 24 74 79 70 65 20 73 65 74 6c 6f 63 61 74 69 6f  $type setlocatio
16d0: 6e 20 24 6c 6f 63 61 74 69 6f 6e 0a 09 72 65 74  n $location..ret
16e0: 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23  urn.    }..    #
16f0: 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20   # ## ### ##### 
1700: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23  ######## #######
1710: 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 53 74  ######.    ## St
1720: 61 74 65 0a 0a 20 20 20 20 76 61 72 69 61 62 6c  ate..    variabl
1730: 65 20 6d 79 70 77 64 20 20 20 20 20 20 20 20 7b  e mypwd        {
1740: 7d 20 3b 20 23 20 50 61 74 68 20 74 6f 20 6c 61  } ; # Path to la
1750: 73 74 20 43 57 44 0a 20 20 20 20 76 61 72 69 61  st CWD.    varia
1760: 62 6c 65 20 6d 79 72 65 70 6f 73 69 74 6f 72 79  ble myrepository
1770: 20 7b 7d 20 3b 20 23 20 50 61 74 68 20 74 6f 20   {} ; # Path to 
1780: 6f 75 72 20 66 6f 73 73 69 6c 20 64 61 74 61 62  our fossil datab
1790: 61 73 65 2e 0a 20 20 20 20 76 61 72 69 61 62 6c  ase..    variabl
17a0: 65 20 6d 79 77 6f 72 6b 73 70 61 63 65 20 20 7b  e myworkspace  {
17b0: 7d 20 3b 20 23 20 50 61 74 68 20 74 6f 20 74 68  } ; # Path to th
17c0: 65 20 77 6f 72 6b 73 70 61 63 65 20 66 6f 72 20  e workspace for 
17d0: 6f 75 72 20 66 6f 73 73 69 6c 0a 09 09 09 20 20  our fossil....  
17e0: 20 20 20 20 20 23 20 64 61 74 61 62 61 73 65 2e       # database.
17f0: 0a 0a 20 20 20 20 74 79 70 65 76 61 72 69 61 62  ..    typevariab
1800: 6c 65 20 6d 79 66 6f 73 73 69 6c 63 6d 64 20 20  le myfossilcmd  
1810: 20 20 3b 20 23 20 50 61 74 68 20 74 6f 20 66 6f    ; # Path to fo
1820: 73 73 69 6c 20 65 78 65 63 75 74 61 62 6c 65 2e  ssil executable.
1830: 0a 20 20 20 20 74 79 70 65 76 61 72 69 61 62 6c  .    typevariabl
1840: 65 20 6d 79 6e 65 65 64 6c 6f 63 61 74 69 6f 6e  e myneedlocation
1850: 20 3b 20 23 20 42 6f 6f 6c 65 61 6e 2c 20 69 6e   ; # Boolean, in
1860: 64 69 63 61 74 65 73 20 69 66 20 75 73 65 72 20  dicates if user 
1870: 68 61 73 20 74 6f 0a 09 09 09 09 20 20 23 20 74  has to.....  # t
1880: 65 6c 6c 20 75 73 20 77 68 65 72 65 20 66 6f 73  ell us where fos
1890: 73 69 6c 20 6c 69 76 65 73 20 6f 72 20 6e 6f 74  sil lives or not
18a0: 2e 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 23  ...    # # ## ##
18b0: 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23  # ##### ########
18c0: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20   #############. 
18d0: 20 20 20 23 23 20 49 6e 74 65 72 6e 61 6c 20 6d     ## Internal m
18e0: 65 74 68 6f 64 73 0a 0a 20 20 20 20 70 72 6f 63  ethods..    proc
18f0: 20 44 6f 20 7b 61 72 67 73 7d 20 7b 0a 09 23 20   Do {args} {..# 
1900: 38 2e 35 3a 20 65 78 65 63 20 24 6d 79 66 6f 73  8.5: exec $myfos
1910: 73 69 6c 63 6d 64 20 7b 2a 7d 24 61 72 67 73 0a  silcmd {*}$args.
1920: 09 6c 6f 67 20 77 72 69 74 65 20 31 34 20 66 6f  .log write 14 fo
1930: 73 73 69 6c 20 7b 44 6f 69 6e 67 20 27 24 61 72  ssil {Doing '$ar
1940: 67 73 27 7d 0a 09 72 65 74 75 72 6e 20 5b 65 76  gs'}..return [ev
1950: 61 6c 20 5b 6c 69 6e 73 65 72 74 20 24 61 72 67  al [linsert $arg
1960: 73 20 30 20 65 78 65 63 20 24 6d 79 66 6f 73 73  s 0 exec $myfoss
1970: 69 6c 63 6d 64 5d 5d 0a 20 20 20 20 7d 0a 0a 20  ilcmd]].    }.. 
1980: 20 20 20 6d 65 74 68 6f 64 20 49 6e 57 6f 72 6b     method InWork
1990: 73 70 61 63 65 20 7b 7d 20 7b 20 73 65 74 20 6d  space {} { set m
19a0: 79 70 77 64 20 5b 70 77 64 5d 20 3b 20 63 64 20  ypwd [pwd] ; cd 
19b0: 24 6d 79 77 6f 72 6b 73 70 61 63 65 20 3b 20 72  $myworkspace ; r
19c0: 65 74 75 72 6e 20 7d 0a 20 20 20 20 6d 65 74 68  eturn }.    meth
19d0: 6f 64 20 52 65 73 74 6f 72 65 50 77 64 20 20 7b  od RestorePwd  {
19e0: 7d 20 7b 20 63 64 20 24 6d 79 70 77 64 20 20 20  } { cd $mypwd   
19f0: 20 20 20 20 3b 20 73 65 74 20 6d 79 70 77 64 20      ; set mypwd 
1a00: 7b 7d 20 20 20 20 3b 20 72 65 74 75 72 6e 20 7d  {}    ; return }
1a10: 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 23  ..    # # ## ###
1a20: 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20   ##### ######## 
1a30: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20  #############.  
1a40: 20 20 23 23 20 43 6f 6e 66 69 67 75 72 61 74 69    ## Configurati
1a50: 6f 6e 0a 0a 20 20 20 20 70 72 61 67 6d 61 20 2d  on..    pragma -
1a60: 68 61 73 74 79 70 65 69 6e 66 6f 20 20 20 20 6e  hastypeinfo    n
1a70: 6f 20 20 3b 20 23 20 6e 6f 20 74 79 70 65 20 69  o  ; # no type i
1a80: 6e 74 72 6f 73 70 65 63 74 69 6f 6e 0a 20 20 20  ntrospection.   
1a90: 20 70 72 61 67 6d 61 20 2d 68 61 73 69 6e 66 6f   pragma -hasinfo
1aa0: 20 20 20 20 20 20 20 20 6e 6f 20 20 3b 20 23 20          no  ; # 
1ab0: 6e 6f 20 6f 62 6a 65 63 74 20 69 6e 74 72 6f 73  no object intros
1ac0: 70 65 63 74 69 6f 6e 0a 0a 20 20 20 20 23 20 23  pection..    # #
1ad0: 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23   ## ### ##### ##
1ae0: 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23  ###### #########
1af0: 23 23 23 23 0a 7d 0a 0a 6e 61 6d 65 73 70 61 63  ####.}..namespac
1b00: 65 20 65 76 61 6c 20 3a 3a 76 63 3a 3a 66 6f 73  e eval ::vc::fos
1b10: 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73  sil::import::cvs
1b20: 20 7b 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 65   {.    namespace
1b30: 20 65 78 70 6f 72 74 20 66 6f 73 73 69 6c 0a 20   export fossil. 
1b40: 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61     namespace eva
1b50: 6c 20 20 20 66 6f 73 73 69 6c 20 7b 0a 09 6e 61  l   fossil {..na
1b60: 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a  mespace import :
1b70: 3a 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 74 72 6f 75  :vc::tools::trou
1b80: 62 6c 65 0a 09 6e 61 6d 65 73 70 61 63 65 20 69  ble..namespace i
1b90: 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 74 6f 6f 6c  mport ::vc::tool
1ba0: 73 3a 3a 6c 6f 67 0a 09 6e 61 6d 65 73 70 61 63  s::log..namespac
1bb0: 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 66  e import ::vc::f
1bc0: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63  ossil::import::c
1bd0: 76 73 3a 3a 69 6e 74 65 67 72 69 74 79 0a 20 20  vs::integrity.  
1be0: 20 20 7d 0a 7d 0a 0a 23 20 23 20 23 23 20 23 23    }.}..# # ## ##
1bf0: 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23  # ##### ########
1c00: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 20 23   ############# #
1c10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c20: 23 23 23 23 0a 23 23 20 52 65 61 64 79 0a 0a 70  ####.## Ready..p
1c30: 61 63 6b 61 67 65 20 70 72 6f 76 69 64 65 20 76  ackage provide v
1c40: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72  c::fossil::impor
1c50: 74 3a 3a 63 76 73 3a 3a 66 6f 73 73 69 6c 20 31  t::cvs::fossil 1
1c60: 2e 30 0a 72 65 74 75 72 6e 0a                    .0.return.