Artifact 6b47975f7e937d02faa6ece353a854028a961c96:
File tools/cvs2fossil/lib/c2f_fossil.tcl part of check-in [7208c7ac4d] - Changes to cvs2fossil to import tcllib CVS into fossil on Win32* using ::file instead of file in snit methods to get the core file command * taking care of files that only differ in case in the Attic and the repo on case insensitive FS * passing platform specific
by mjanssen on 2008-01-28 23:57:27.
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 46 6f 73 ########..## Fos 0200: 73 69 6c 2c 20 61 20 68 65 6c 70 65 72 20 63 6c sil, a helper cl 0210: 61 73 73 20 6d 61 6e 61 67 69 6e 67 20 74 68 65 ass managing the 0220: 20 61 63 63 65 73 73 20 74 6f 20 66 6f 73 73 69 access to fossi 0230: 6c 20 72 65 70 6f 73 69 74 6f 72 69 65 73 2e 0a l repositories.. 0240: 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 .# # ## ### #### 0250: 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 # ######## ##### 0260: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 ######## ####### 0270: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 ##############.# 0280: 23 20 52 65 71 75 69 72 65 6d 65 6e 74 73 0a 0a # Requirements.. 0290: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 package require 02a0: 54 63 6c 20 38 2e 34 20 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 3b 20 23 20 52 65 71 75 69 72 65 64 ; # Required 02d0: 20 72 75 6e 74 69 6d 65 2e 0a 70 61 63 6b 61 67 runtime..packag 02e0: 65 20 72 65 71 75 69 72 65 20 66 69 6c 65 75 74 e require fileut 02f0: 69 6c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 il 0300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 ; 0310: 23 20 54 65 6d 70 2e 64 69 72 2f 66 69 6c 65 0a # Temp.dir/file. 0320: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 package require 0330: 73 6e 69 74 20 20 20 20 20 20 20 20 20 20 20 20 snit 0340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0350: 20 20 20 20 3b 20 23 20 4f 4f 20 73 79 73 74 65 ; # OO syste 0360: 6d 2e 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 m..package requi 0370: 72 65 20 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 74 72 re vc::tools::tr 0380: 6f 75 62 6c 65 20 20 20 20 20 20 20 20 20 20 20 ouble 0390: 20 20 20 20 20 20 20 3b 20 23 20 45 72 72 6f 72 ; # Error 03a0: 20 72 65 70 6f 72 74 69 6e 67 2e 0a 70 61 63 6b reporting..pack 03b0: 61 67 65 20 72 65 71 75 69 72 65 20 76 63 3a 3a age require vc:: 03c0: 74 6f 6f 6c 73 3a 3a 6c 6f 67 20 20 20 20 20 20 tools::log 03d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 03e0: 3b 20 23 20 55 73 65 72 20 66 65 65 64 62 61 63 ; # User feedbac 03f0: 6b 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 k.package requir 0400: 65 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d e vc::fossil::im 0410: 70 6f 72 74 3a 3a 63 76 73 3a 3a 69 6e 74 65 67 port::cvs::integ 0420: 72 69 74 79 20 20 3b 20 23 20 53 74 61 74 65 20 rity ; # State 0430: 69 6e 74 65 67 72 69 74 79 20 63 68 65 63 6b 73 integrity checks 0440: 2e 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 ...# # ## ### ## 0450: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 ### ######## ### 0460: 23 23 23 23 23 23 23 23 23 23 20 23 23 23 23 23 ########## ##### 0470: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0480: 0a 23 23 0a 0a 73 6e 69 74 3a 3a 74 79 70 65 20 .##..snit::type 0490: 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d ::vc::fossil::im 04a0: 70 6f 72 74 3a 3a 63 76 73 3a 3a 66 6f 73 73 69 port::cvs::fossi 04b0: 6c 20 7b 0a 20 20 20 20 23 20 23 20 23 23 20 23 l {. # # ## # 04c0: 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 ## ##### ####### 04d0: 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 0a # #############. 04e0: 20 20 20 20 23 23 20 50 75 62 6c 69 63 20 41 50 ## Public AP 04f0: 49 0a 0a 20 20 20 20 63 6f 6e 73 74 72 75 63 74 I.. construct 0500: 6f 72 20 7b 7d 20 7b 0a 09 73 65 74 20 6d 79 72 or {} {..set myr 0510: 65 70 6f 73 69 74 6f 72 79 20 5b 66 69 6c 65 75 epository [fileu 0520: 74 69 6c 3a 3a 74 65 6d 70 66 69 6c 65 20 63 76 til::tempfile cv 0530: 73 32 66 6f 73 73 69 6c 5f 72 65 70 6f 5f 5d 0a s2fossil_repo_]. 0540: 09 73 65 74 20 6d 79 77 6f 72 6b 73 70 61 63 65 .set myworkspace 0550: 20 20 5b 66 69 6c 65 75 74 69 6c 3a 3a 74 65 6d [fileutil::tem 0560: 70 66 69 6c 65 20 63 76 73 32 66 6f 73 73 69 6c pfile cvs2fossil 0570: 5f 77 73 70 63 5f 5d 0a 09 3a 3a 66 69 6c 65 20 _wspc_]..::file 0580: 64 65 6c 65 74 65 20 24 6d 79 77 6f 72 6b 73 70 delete $myworksp 0590: 61 63 65 0a 09 3a 3a 66 69 6c 65 20 6d 6b 64 69 ace..::file mkdi 05a0: 72 20 20 24 6d 79 77 6f 72 6b 73 70 61 63 65 0a r $myworkspace. 05b0: 0a 09 44 6f 20 6e 65 77 20 5b 3a 3a 66 69 6c 65 ..Do new [::file 05c0: 20 6e 61 74 69 76 65 6e 61 6d 65 20 24 6d 79 72 nativename $myr 05d0: 65 70 6f 73 69 74 6f 72 79 5d 0a 09 24 73 65 6c epository]..$sel 05e0: 66 20 49 6e 57 6f 72 6b 73 70 61 63 65 20 3b 20 f InWorkspace ; 05f0: 44 6f 20 6f 70 65 6e 20 5b 3a 3a 66 69 6c 65 20 Do open [::file 0600: 6e 61 74 69 76 65 6e 61 6d 65 20 24 6d 79 72 65 nativename $myre 0610: 70 6f 73 69 74 6f 72 79 5d 0a 09 24 73 65 6c 66 pository]..$self 0620: 20 52 65 73 74 6f 72 65 50 77 64 0a 09 72 65 74 RestorePwd..ret 0630: 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 urn. }.. # 0640: 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 # ## ### ##### 0650: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 ######## ####### 0660: 23 23 23 23 23 23 0a 20 20 20 20 23 23 0a 0a 20 ######. ##.. 0670: 20 20 20 6d 65 74 68 6f 64 20 72 6f 6f 74 20 7b method root { 0680: 7d 20 7b 0a 09 23 20 54 68 65 20 69 64 20 6f 66 } {..# The id of 0690: 20 74 68 65 20 72 6f 6f 74 20 6d 61 6e 69 66 65 the root manife 06a0: 73 74 20 69 73 20 68 61 72 64 77 69 72 65 64 20 st is hardwired 06b0: 69 6e 74 6f 20 66 6f 73 73 69 6c 2e 20 54 68 69 into fossil. Thi 06c0: 73 0a 09 23 20 6d 61 6e 69 66 65 73 74 20 69 73 s..# manifest is 06d0: 20 63 72 65 61 74 65 64 20 77 68 65 6e 20 61 20 created when a 06e0: 6e 65 77 20 72 65 70 6f 73 69 74 6f 72 79 20 69 new repository i 06f0: 73 20 6d 61 64 65 20 28 53 65 65 0a 09 23 20 27 s made (See..# ' 0700: 6e 65 77 27 2c 20 69 6e 20 74 68 65 20 63 6f 6e new', in the con 0710: 73 74 72 75 63 74 6f 72 29 2e 0a 09 72 65 74 75 structor)...retu 0720: 72 6e 20 31 0a 20 20 20 20 7d 0a 0a 20 20 20 20 rn 1. }.. 0730: 6d 65 74 68 6f 64 20 77 6f 72 6b 73 70 61 63 65 method workspace 0740: 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 {} { return $my 0750: 77 6f 72 6b 73 70 61 63 65 20 7d 0a 0a 20 20 20 workspace }.. 0760: 20 6d 65 74 68 6f 64 20 69 6d 70 6f 72 74 66 69 method importfi 0770: 6c 65 73 20 7b 6d 61 70 7d 20 7b 0a 09 23 20 6d les {map} {..# m 0780: 61 70 20 3d 20 6c 69 73 74 20 28 69 6e 73 74 72 ap = list (instr 0790: 75 63 74 69 6f 6e 29 2c 20 69 6e 73 74 72 75 63 uction), instruc 07a0: 74 69 6f 6e 20 3d 20 61 64 64 7c 64 65 6c 74 61 tion = add|delta 07b0: 0a 09 23 20 61 64 64 20 20 20 3d 20 6c 69 73 74 ..# add = list 07c0: 20 28 27 41 27 2c 20 70 61 74 68 29 0a 09 23 20 ('A', path)..# 07d0: 64 65 6c 74 61 20 3d 20 6c 69 73 74 20 28 27 44 delta = list ('D 07e0: 27 2c 20 70 61 74 68 2c 20 73 72 63 29 0a 0a 09 ', path, src)... 07f0: 6c 6f 67 20 77 72 69 74 65 20 33 20 66 6f 73 73 log write 3 foss 0800: 69 6c 20 7b 49 6d 70 6f 72 74 69 6e 67 20 72 65 il {Importing re 0810: 76 69 73 69 6f 6e 73 2e 2e 2e 7d 0a 0a 09 61 72 visions...}...ar 0820: 72 61 79 20 73 65 74 20 69 64 20 7b 7d 0a 09 24 ray set id {}..$ 0830: 73 65 6c 66 20 49 6e 57 6f 72 6b 73 70 61 63 65 self InWorkspace 0840: 0a 0a 09 73 65 74 20 6e 20 20 20 30 0a 09 73 65 ...set n 0..se 0850: 74 20 6d 61 78 20 5b 6c 6c 65 6e 67 74 68 20 24 t max [llength $ 0860: 6d 61 70 5d 0a 0a 09 66 6f 72 65 61 63 68 20 69 map]...foreach i 0870: 6e 73 6e 20 24 6d 61 70 20 7b 0a 09 20 20 20 20 nsn $map {.. 0880: 6c 6f 67 20 70 72 6f 67 72 65 73 73 20 33 20 66 log progress 3 f 0890: 6f 73 73 69 6c 20 24 6e 20 24 6d 61 78 20 3b 20 ossil $n $max ; 08a0: 69 6e 63 72 20 6e 0a 0a 09 20 20 20 20 73 74 72 incr n... str 08b0: 75 63 74 3a 3a 6c 69 73 74 20 61 73 73 69 67 6e uct::list assign 08c0: 20 24 69 6e 73 6e 20 63 6d 64 20 70 61 20 70 62 $insn cmd pa pb 08d0: 0a 09 20 20 20 20 73 77 69 74 63 68 20 2d 65 78 .. switch -ex 08e0: 61 63 74 20 2d 2d 20 24 63 6d 64 20 7b 0a 09 09 act -- $cmd {... 08f0: 41 20 7b 0a 09 09 20 20 20 20 6c 6f 67 20 77 72 A {... log wr 0900: 69 74 65 20 38 20 66 6f 73 73 69 6c 20 7b 49 6d ite 8 fossil {Im 0910: 70 6f 72 74 69 6e 67 20 20 20 3c 24 70 61 3e 2c porting <$pa>, 0920: 7d 0a 0a 09 09 20 20 20 20 23 20 52 65 73 75 6c }.... # Resul 0930: 74 20 3d 20 27 69 6e 73 65 72 74 65 64 20 61 73 t = 'inserted as 0940: 20 72 65 63 6f 72 64 20 3a 46 4f 4f 3a 27 0a 09 record :FOO:'.. 0950: 09 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 . # 0960: 20 30 20 20 20 20 20 20 20 20 31 20 20 32 20 20 0 1 2 0970: 20 20 20 33 0a 09 09 20 20 20 20 73 65 74 20 72 3... set r 0980: 65 73 20 5b 44 6f 20 74 65 73 74 2d 63 6f 6e 74 es [Do test-cont 0990: 65 6e 74 2d 70 75 74 20 24 70 61 5d 0a 09 09 20 ent-put $pa]... 09a0: 20 20 20 69 6e 74 65 67 72 69 74 79 20 61 73 73 integrity ass 09b0: 65 72 74 20 7b 0a 09 09 09 5b 72 65 67 65 78 70 ert {....[regexp 09c0: 20 7b 5e 69 6e 73 65 72 74 65 64 20 61 73 20 72 {^inserted as r 09d0: 65 63 6f 72 64 20 5c 64 2b 24 7d 20 24 72 65 73 ecord \d+$} $res 09e0: 5d 0a 09 09 20 20 20 20 7d 20 7b 55 6e 61 62 6c ]... } {Unabl 09f0: 65 20 74 6f 20 70 72 6f 63 65 73 73 20 75 6e 65 e to process une 0a00: 78 70 65 63 74 65 64 20 66 6f 73 73 69 6c 20 6f xpected fossil o 0a10: 75 74 70 75 74 20 27 24 72 65 73 27 7d 0a 09 09 utput '$res'}... 0a20: 20 20 20 20 73 65 74 20 69 64 28 24 70 61 29 20 set id($pa) 0a30: 5b 6c 69 6e 64 65 78 20 24 72 65 73 20 33 5d 0a [lindex $res 3]. 0a40: 09 09 7d 0a 09 09 44 20 7b 0a 09 09 20 20 20 20 ..}...D {... 0a50: 6c 6f 67 20 77 72 69 74 65 20 38 20 66 6f 73 73 log write 8 foss 0a60: 69 6c 20 7b 43 6f 6d 70 72 65 73 73 69 6e 67 20 il {Compressing 0a70: 3c 24 70 61 3e 2c 20 61 73 20 64 65 6c 74 61 20 <$pa>, as delta 0a80: 6f 66 20 3c 24 70 62 3e 7d 0a 0a 09 09 20 20 20 of <$pb>}.... 0a90: 20 44 6f 20 74 65 73 74 2d 63 6f 6e 74 65 6e 74 Do test-content 0aa0: 2d 64 65 6c 74 69 66 79 20 24 69 64 28 24 70 61 -deltify $id($pa 0ab0: 29 20 24 69 64 28 24 70 62 29 20 31 0a 09 09 7d ) $id($pb) 1...} 0ac0: 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 24 73 65 6c .. }..}..$sel 0ad0: 66 20 52 65 73 74 6f 72 65 50 77 64 0a 0a 09 6c f RestorePwd...l 0ae0: 6f 67 20 77 72 69 74 65 20 33 20 66 6f 73 73 69 og write 3 fossi 0af0: 6c 20 44 6f 6e 65 2e 0a 09 72 65 74 75 72 6e 20 l Done...return 0b00: 5b 61 72 72 61 79 20 67 65 74 20 69 64 5d 0a 20 [array get id]. 0b10: 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 }.. method 0b20: 20 66 69 6e 61 6c 69 7a 65 20 7b 64 65 73 74 69 finalize {desti 0b30: 6e 61 74 69 6f 6e 7d 20 7b 0a 09 3a 3a 66 69 6c nation} {..::fil 0b40: 65 20 72 65 6e 61 6d 65 20 2d 66 6f 72 63 65 20 e rename -force 0b50: 24 6d 79 72 65 70 6f 73 69 74 6f 72 79 20 24 64 $myrepository $d 0b60: 65 73 74 69 6e 61 74 69 6f 6e 0a 09 3a 3a 66 69 estination..::fi 0b70: 6c 65 20 64 65 6c 65 74 65 20 2d 66 6f 72 63 65 le delete -force 0b80: 20 24 6d 79 77 6f 72 6b 73 70 61 63 65 0a 09 24 $myworkspace..$ 0b90: 73 65 6c 66 20 64 65 73 74 72 6f 79 0a 09 72 65 self destroy..re 0ba0: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 turn. }.. 0bb0: 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 # # ## ### ##### 0bc0: 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######## ###### 0bd0: 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 0a 0a #######. ##.. 0be0: 20 20 20 20 74 79 70 65 6d 65 74 68 6f 64 20 73 typemethod s 0bf0: 65 74 6c 6f 63 61 74 69 6f 6e 20 7b 70 61 74 68 etlocation {path 0c00: 7d 20 7b 0a 09 73 65 74 20 6d 79 66 6f 73 73 69 } {..set myfossi 0c10: 6c 63 6d 64 20 20 20 20 24 70 61 74 68 0a 09 73 lcmd $path..s 0c20: 65 74 20 6d 79 6e 65 65 64 6c 6f 63 61 74 69 6f et myneedlocatio 0c30: 6e 20 30 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 n 0..return. 0c40: 7d 0a 0a 20 20 20 20 74 79 70 65 6d 65 74 68 6f }.. typemetho 0c50: 64 20 76 61 6c 69 64 61 74 65 20 7b 7d 20 7b 0a d validate {} {. 0c60: 09 69 66 20 7b 21 24 6d 79 6e 65 65 64 6c 6f 63 .if {!$myneedloc 0c70: 61 74 69 6f 6e 7d 20 7b 0a 09 20 20 20 20 69 66 ation} {.. if 0c80: 20 7b 21 5b 66 69 6c 65 75 74 69 6c 3a 3a 74 65 {![fileutil::te 0c90: 73 74 20 24 6d 79 66 6f 73 73 69 6c 63 6d 64 20 st $myfossilcmd 0ca0: 65 66 72 78 20 6d 73 67 5d 7d 20 7b 0a 09 09 74 efrx msg]} {...t 0cb0: 72 6f 75 62 6c 65 20 66 61 74 61 6c 20 22 42 61 rouble fatal "Ba 0cc0: 64 20 70 61 74 68 20 66 6f 72 20 66 6f 73 73 69 d path for fossi 0cd0: 6c 20 65 78 65 63 75 74 61 62 6c 65 3a 20 24 6d l executable: $m 0ce0: 73 67 22 0a 09 20 20 20 20 7d 0a 09 7d 20 65 6c sg".. }..} el 0cf0: 73 65 20 7b 0a 09 20 20 20 20 74 72 6f 75 62 6c se {.. troubl 0d00: 65 20 66 61 74 61 6c 20 22 44 6f 6e 27 74 20 6b e fatal "Don't k 0d10: 6e 6f 77 20 77 68 65 72 65 20 74 6f 20 66 69 6e now where to fin 0d20: 64 20 74 68 65 20 27 66 6f 73 73 69 6c 27 20 65 d the 'fossil' e 0d30: 78 65 63 75 74 61 62 6c 65 22 0a 09 7d 0a 09 72 xecutable"..}..r 0d40: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 eturn. }.. 0d50: 20 74 79 70 65 63 6f 6e 73 74 72 75 63 74 6f 72 typeconstructor 0d60: 20 7b 0a 09 73 65 74 20 6c 6f 63 61 74 69 6f 6e {..set location 0d70: 20 5b 61 75 74 6f 5f 65 78 65 63 6f 6b 20 66 6f [auto_execok fo 0d80: 73 73 69 6c 5d 0a 09 73 65 74 20 6d 79 6e 65 65 ssil]..set mynee 0d90: 64 6c 6f 63 61 74 69 6f 6e 20 5b 65 78 70 72 20 dlocation [expr 0da0: 7b 24 6c 6f 63 61 74 69 6f 6e 20 65 71 20 22 22 {$location eq "" 0db0: 7d 5d 0a 09 69 66 20 7b 24 6d 79 6e 65 65 64 6c }]..if {$myneedl 0dc0: 6f 63 61 74 69 6f 6e 7d 20 72 65 74 75 72 6e 0a ocation} return. 0dd0: 09 24 74 79 70 65 20 73 65 74 6c 6f 63 61 74 69 .$type setlocati 0de0: 6f 6e 20 24 6c 6f 63 61 74 69 6f 6e 0a 09 72 65 on $location..re 0df0: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 turn. }.. 0e00: 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 # # ## ### ##### 0e10: 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######## ###### 0e20: 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 53 #######. ## S 0e30: 74 61 74 65 0a 0a 20 20 20 20 76 61 72 69 61 62 tate.. variab 0e40: 6c 65 20 6d 79 70 77 64 20 20 20 20 20 20 20 20 le mypwd 0e50: 7b 7d 20 3b 20 23 20 50 61 74 68 20 74 6f 20 6c {} ; # Path to l 0e60: 61 73 74 20 43 57 44 0a 20 20 20 20 76 61 72 69 ast CWD. vari 0e70: 61 62 6c 65 20 6d 79 72 65 70 6f 73 69 74 6f 72 able myrepositor 0e80: 79 20 7b 7d 20 3b 20 23 20 50 61 74 68 20 74 6f y {} ; # Path to 0e90: 20 6f 75 72 20 66 6f 73 73 69 6c 20 64 61 74 61 our fossil data 0ea0: 62 61 73 65 2e 0a 20 20 20 20 76 61 72 69 61 62 base.. variab 0eb0: 6c 65 20 6d 79 77 6f 72 6b 73 70 61 63 65 20 20 le myworkspace 0ec0: 7b 7d 20 3b 20 23 20 50 61 74 68 20 74 6f 20 74 {} ; # Path to t 0ed0: 68 65 20 77 6f 72 6b 73 70 61 63 65 20 66 6f 72 he workspace for 0ee0: 20 6f 75 72 20 66 6f 73 73 69 6c 0a 09 09 09 20 our fossil.... 0ef0: 20 20 20 20 20 20 23 20 64 61 74 61 62 61 73 65 # database 0f00: 2e 0a 0a 20 20 20 20 74 79 70 65 76 61 72 69 61 ... typevaria 0f10: 62 6c 65 20 6d 79 66 6f 73 73 69 6c 63 6d 64 20 ble myfossilcmd 0f20: 20 20 20 3b 20 23 20 50 61 74 68 20 74 6f 20 66 ; # Path to f 0f30: 6f 73 73 69 6c 20 65 78 65 63 75 74 61 62 6c 65 ossil executable 0f40: 2e 0a 20 20 20 20 74 79 70 65 76 61 72 69 61 62 .. typevariab 0f50: 6c 65 20 6d 79 6e 65 65 64 6c 6f 63 61 74 69 6f le myneedlocatio 0f60: 6e 20 3b 20 23 20 42 6f 6f 6c 65 61 6e 2c 20 69 n ; # Boolean, i 0f70: 6e 64 69 63 61 74 65 73 20 69 66 20 75 73 65 72 ndicates if user 0f80: 20 68 61 73 20 74 6f 0a 09 09 09 09 20 20 23 20 has to..... # 0f90: 74 65 6c 6c 20 75 73 20 77 68 65 72 65 20 66 6f tell us where fo 0fa0: 73 73 69 6c 20 6c 69 76 65 73 20 6f 72 20 6e 6f ssil lives or no 0fb0: 74 2e 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 t... # # ## # 0fc0: 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 ## ##### ####### 0fd0: 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 0a # #############. 0fe0: 20 20 20 20 23 23 20 49 6e 74 65 72 6e 61 6c 20 ## Internal 0ff0: 6d 65 74 68 6f 64 73 0a 0a 20 20 20 20 70 72 6f methods.. pro 1000: 63 20 44 6f 20 7b 61 72 67 73 7d 20 7b 0a 09 23 c Do {args} {..# 1010: 20 38 2e 35 3a 20 65 78 65 63 20 24 6d 79 66 6f 8.5: exec $myfo 1020: 73 73 69 6c 63 6d 64 20 7b 2a 7d 24 61 72 67 73 ssilcmd {*}$args 1030: 0a 09 72 65 74 75 72 6e 20 5b 65 76 61 6c 20 5b ..return [eval [ 1040: 6c 69 6e 73 65 72 74 20 24 61 72 67 73 20 30 20 linsert $args 0 1050: 65 78 65 63 20 24 6d 79 66 6f 73 73 69 6c 63 6d exec $myfossilcm 1060: 64 5d 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d d]]. }.. m 1070: 65 74 68 6f 64 20 49 6e 57 6f 72 6b 73 70 61 63 ethod InWorkspac 1080: 65 20 7b 7d 20 7b 20 73 65 74 20 6d 79 70 77 64 e {} { set mypwd 1090: 20 5b 70 77 64 5d 20 3b 20 63 64 20 24 6d 79 77 [pwd] ; cd $myw 10a0: 6f 72 6b 73 70 61 63 65 20 3b 20 72 65 74 75 72 orkspace ; retur 10b0: 6e 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 52 n }. method R 10c0: 65 73 74 6f 72 65 50 77 64 20 20 7b 7d 20 7b 20 estorePwd {} { 10d0: 63 64 20 24 6d 79 70 77 64 20 20 20 20 20 20 20 cd $mypwd 10e0: 3b 20 73 65 74 20 6d 79 70 77 64 20 7b 7d 20 20 ; set mypwd {} 10f0: 20 20 3b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 ; return }.. 1100: 20 20 23 20 23 20 23 23 20 23 23 23 20 23 23 23 # # ## ### ### 1110: 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 ## ######## #### 1120: 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 #########. ## 1130: 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 0a Configuration.. 1140: 20 20 20 20 70 72 61 67 6d 61 20 2d 68 61 73 74 pragma -hast 1150: 79 70 65 69 6e 66 6f 20 20 20 20 6e 6f 20 20 3b ypeinfo no ; 1160: 20 23 20 6e 6f 20 74 79 70 65 20 69 6e 74 72 6f # no type intro 1170: 73 70 65 63 74 69 6f 6e 0a 20 20 20 20 70 72 61 spection. pra 1180: 67 6d 61 20 2d 68 61 73 69 6e 66 6f 20 20 20 20 gma -hasinfo 1190: 20 20 20 20 6e 6f 20 20 3b 20 23 20 6e 6f 20 6f no ; # no o 11a0: 62 6a 65 63 74 20 69 6e 74 72 6f 73 70 65 63 74 bject introspect 11b0: 69 6f 6e 0a 0a 20 20 20 20 23 20 23 20 23 23 20 ion.. # # ## 11c0: 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 ### ##### ###### 11d0: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 ## ############# 11e0: 0a 7d 0a 0a 6e 61 6d 65 73 70 61 63 65 20 65 76 .}..namespace ev 11f0: 61 6c 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a al ::vc::fossil: 1200: 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 20 7b 0a 20 :import::cvs {. 1210: 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 78 70 namespace exp 1220: 6f 72 74 20 66 6f 73 73 69 6c 0a 20 20 20 20 6e ort fossil. n 1230: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 20 20 amespace eval 1240: 66 6f 73 73 69 6c 20 7b 0a 09 6e 61 6d 65 73 70 fossil {..namesp 1250: 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a ace import ::vc: 1260: 3a 74 6f 6f 6c 73 3a 3a 74 72 6f 75 62 6c 65 0a :tools::trouble. 1270: 09 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 .namespace impor 1280: 74 20 3a 3a 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6c t ::vc::tools::l 1290: 6f 67 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 6d og..namespace im 12a0: 70 6f 72 74 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 port ::vc::fossi 12b0: 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a l::import::cvs:: 12c0: 69 6e 74 65 67 72 69 74 79 0a 20 20 20 20 7d 0a integrity. }. 12d0: 7d 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 }..# # ## ### ## 12e0: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 ### ######## ### 12f0: 23 23 23 23 23 23 23 23 23 23 20 23 23 23 23 23 ########## ##### 1300: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 1310: 0a 23 23 20 52 65 61 64 79 0a 0a 70 61 63 6b 61 .## Ready..packa 1320: 67 65 20 70 72 6f 76 69 64 65 20 76 63 3a 3a 66 ge provide vc::f 1330: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 ossil::import::c 1340: 76 73 3a 3a 66 6f 73 73 69 6c 20 31 2e 30 0a 72 vs::fossil 1.0.r 1350: 65 74 75 72 6e 0a eturn.