Hex Artifact Content
Not logged in

Artifact d2dc326337397863d1638c69a145914f2d7aa2bf:

File tools/lib/fossil.tcl part of check-in [cdf5e6d8b7] - Encapsulated access to the fossil and cvs applications in their own packages. by aku on 2007-09-13 06:59:24.

0000: 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  # --------------
0010: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0020: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0030: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0040: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
0050: 23 20 52 65 70 6f 73 69 74 6f 72 79 20 6d 61 6e  # Repository man
0060: 61 67 65 6d 65 6e 74 20 28 46 4f 53 53 49 4c 29  agement (FOSSIL)
0070: 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ..# ------------
0080: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
00a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
00b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
00c0: 2d 0a 23 20 52 65 71 75 69 72 65 6d 65 6e 74 73  -.# Requirements
00d0: 0a 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72  ..package requir
00e0: 65 20 54 63 6c 20 38 2e 34 0a 70 61 63 6b 61 67  e Tcl 8.4.packag
00f0: 65 20 72 65 71 75 69 72 65 20 76 63 3a 3a 74 6f  e require vc::to
0100: 6f 6c 73 3a 3a 6c 6f 67 20 20 3b 20 23 20 55 73  ols::log  ; # Us
0110: 65 72 20 66 65 65 64 62 61 63 6b 0a 70 61 63 6b  er feedback.pack
0120: 61 67 65 20 72 65 71 75 69 72 65 20 76 63 3a 3a  age require vc::
0130: 66 6f 73 73 69 6c 3a 3a 63 6d 64 20 3b 20 23 20  fossil::cmd ; # 
0140: 41 63 63 65 73 73 20 74 6f 20 66 6f 73 73 69 6c  Access to fossil
0150: 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 0a 0a 6e   application...n
0160: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a  amespace eval ::
0170: 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 77 73 20 7b  vc::fossil::ws {
0180: 0a 20 20 20 20 76 63 3a 3a 74 6f 6f 6c 73 3a 3a  .    vc::tools::
0190: 6c 6f 67 3a 3a 73 79 73 74 65 6d 20 66 6f 73 73  log::system foss
01a0: 69 6c 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 65  il.    namespace
01b0: 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 74 6f   import ::vc::to
01c0: 6f 6c 73 3a 3a 6c 6f 67 3a 3a 77 72 69 74 65 0a  ols::log::write.
01d0: 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 69 6d      namespace im
01e0: 70 6f 72 74 20 3a 3a 76 63 3a 3a 66 6f 73 73 69  port ::vc::fossi
01f0: 6c 3a 3a 63 6d 64 3a 3a 64 6f 0a 20 20 20 20 6e  l::cmd::do.    n
0200: 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20  amespace import 
0210: 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 63 6d  ::vc::fossil::cm
0220: 64 3a 3a 64 6f 76 61 0a 7d 0a 0a 23 20 2d 2d 2d  d::dova.}..# ---
0230: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0240: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0250: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0260: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0270: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 41 50 49  ----------.# API
0280: 0a 0a 23 20 44 65 66 69 6e 65 20 72 65 70 6f 73  ..# Define repos
0290: 69 74 6f 72 79 20 66 69 6c 65 2c 20 61 6e 64 20  itory file, and 
02a0: 63 6f 6e 6e 65 63 74 20 74 6f 20 77 6f 72 6b 73  connect to works
02b0: 70 61 63 65 20 69 6e 20 43 57 44 2e 0a 0a 70 72  pace in CWD...pr
02c0: 6f 63 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a  oc ::vc::fossil:
02d0: 3a 77 73 3a 3a 6e 65 77 20 7b 7d 20 7b 0a 20 20  :ws::new {} {.  
02e0: 20 20 76 61 72 69 61 62 6c 65 20 66 72 20 20 20    variable fr   
02f0: 20 20 5b 66 69 6c 65 20 6e 6f 72 6d 61 6c 69 7a    [file normaliz
0300: 65 20 5b 66 69 6c 65 75 74 69 6c 3a 3a 74 65 6d  e [fileutil::tem
0310: 70 66 69 6c 65 20 69 6d 70 6f 72 74 32 5f 66 73  pfile import2_fs
0320: 6c 5f 72 70 5f 5d 5d 0a 0a 20 20 20 20 23 20 70  l_rp_]]..    # p
0330: 77 64 20 3d 20 77 6f 72 6b 73 70 61 63 65 0a 20  wd = workspace. 
0340: 20 20 20 64 6f 76 61 20 6e 65 77 20 20 24 66 72     dova new  $fr
0350: 20 3b 20 23 20 63 72 65 61 74 65 20 61 6e 64 0a   ; # create and.
0360: 20 20 20 20 64 6f 76 61 20 6f 70 65 6e 20 24 66      dova open $f
0370: 72 20 3b 20 23 20 63 6f 6e 6e 65 63 74 0a 0a 20  r ; # connect.. 
0380: 20 20 20 77 72 69 74 65 20 30 20 66 6f 73 73 69     write 0 fossi
0390: 6c 20 22 52 65 70 6f 73 69 74 6f 72 79 3a 20 24  l "Repository: $
03a0: 66 72 22 0a 0a 20 20 20 20 72 65 74 75 72 6e 20  fr"..    return 
03b0: 24 66 72 0a 7d 0a 0a 23 20 4d 6f 76 65 20 67 65  $fr.}..# Move ge
03c0: 6e 65 72 61 74 65 64 20 66 6f 73 73 69 6c 20 72  nerated fossil r
03d0: 65 70 6f 73 69 74 6f 72 79 20 74 6f 20 66 69 6e  epository to fin
03e0: 61 6c 20 64 65 73 74 69 6e 61 74 69 6f 6e 0a 0a  al destination..
03f0: 70 72 6f 63 20 3a 3a 76 63 3a 3a 66 6f 73 73 69  proc ::vc::fossi
0400: 6c 3a 3a 77 73 3a 3a 64 65 73 74 69 6e 61 74 69  l::ws::destinati
0410: 6f 6e 20 7b 70 61 74 68 7d 20 7b 0a 20 20 20 20  on {path} {.    
0420: 76 61 72 69 61 62 6c 65 20 66 72 0a 20 20 20 20  variable fr.    
0430: 66 69 6c 65 20 72 65 6e 61 6d 65 20 24 66 72 20  file rename $fr 
0440: 24 70 61 74 68 0a 20 20 20 20 72 65 74 75 72 6e  $path.    return
0450: 0a 7d 0a 0a 6e 61 6d 65 73 70 61 63 65 20 65 76  .}..namespace ev
0460: 61 6c 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a  al ::vc::fossil:
0470: 3a 77 73 20 7b 0a 20 20 20 20 23 20 52 65 70 6f  :ws {.    # Repo
0480: 73 69 74 6f 72 79 20 66 69 6c 65 0a 20 20 20 20  sitory file.    
0490: 76 61 72 69 61 62 6c 65 20 66 72 20 7b 7d 0a 0a  variable fr {}..
04a0: 20 20 20 20 23 20 44 65 62 75 67 20 74 68 65 20      # Debug the 
04b0: 63 6f 6d 6d 69 74 20 63 6f 6d 6d 61 6e 64 20 28  commit command (
04c0: 77 72 69 74 65 20 61 20 54 63 6c 20 73 63 72 69  write a Tcl scri
04d0: 70 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  pt containing th
04e0: 65 0a 20 20 20 20 23 20 65 78 61 63 74 20 63 6f  e.    # exact co
04f0: 6d 6d 61 6e 64 20 75 73 65 64 29 2e 20 41 6e 64  mmand used). And
0500: 20 74 68 65 20 66 69 6c 65 20 74 68 65 20 64 61   the file the da
0510: 74 61 20 67 6f 65 73 20 74 6f 2e 0a 20 20 20 20  ta goes to..    
0520: 76 61 72 69 61 62 6c 65 20 64 65 62 75 67 63 6f  variable debugco
0530: 6d 6d 69 74 20 30 0a 20 20 20 20 76 61 72 69 61  mmit 0.    varia
0540: 62 6c 65 20 64 63 66 69 6c 65 20 20 20 20 20 20  ble dcfile      
0550: 7b 7d 0a 7d 0a 0a 70 72 6f 63 20 3a 3a 76 63 3a  {}.}..proc ::vc:
0560: 3a 66 6f 73 73 69 6c 3a 3a 77 73 3a 3a 64 65 62  :fossil::ws::deb
0570: 75 67 63 6f 6d 6d 69 74 20 7b 66 6c 61 67 7d 20  ugcommit {flag} 
0580: 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 64  {.    variable d
0590: 65 62 75 67 63 6f 6d 6d 69 74 20 24 66 6c 61 67  ebugcommit $flag
05a0: 0a 20 20 20 20 69 66 20 7b 24 64 65 62 75 67 63  .    if {$debugc
05b0: 6f 6d 6d 69 74 7d 20 7b 0a 09 76 61 72 69 61 62  ommit} {..variab
05c0: 6c 65 20 64 63 66 69 6c 65 20 5b 66 69 6c 65 20  le dcfile [file 
05d0: 6e 6f 72 6d 61 6c 69 7a 65 20 63 76 73 32 66 6f  normalize cvs2fo
05e0: 73 73 69 6c 5f 63 6f 6d 6d 69 74 2e 74 63 6c 5d  ssil_commit.tcl]
05f0: 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72  .    }.    retur
0600: 6e 0a 7d 0a 0a 70 72 6f 63 20 3a 3a 76 63 3a 3a  n.}..proc ::vc::
0610: 66 6f 73 73 69 6c 3a 3a 77 73 3a 3a 63 6f 6d 6d  fossil::ws::comm
0620: 69 74 20 7b 62 72 65 61 6b 20 61 70 70 6e 61 6d  it {break appnam
0630: 65 20 6e 6f 73 69 67 6e 20 6d 65 74 61 20 69 67  e nosign meta ig
0640: 6e 6f 72 65 7d 20 7b 0a 20 20 20 20 76 61 72 69  nore} {.    vari
0650: 61 62 6c 65 20 6c 61 73 74 75 75 69 64 0a 20 20  able lastuuid.  
0660: 20 20 76 61 72 69 61 62 6c 65 20 64 65 62 75 67    variable debug
0670: 63 6f 6d 6d 69 74 0a 20 20 20 20 76 61 72 69 61  commit.    varia
0680: 62 6c 65 20 64 63 66 69 6c 65 0a 0a 20 20 20 20  ble dcfile..    
0690: 23 20 43 6f 6d 6d 69 74 20 74 68 65 20 63 75 72  # Commit the cur
06a0: 72 65 6e 74 20 73 74 61 74 65 20 6f 66 20 74 68  rent state of th
06b0: 65 20 77 6f 72 6b 73 70 61 63 65 2e 20 53 63 61  e workspace. Sca
06c0: 6e 20 66 6f 72 20 6e 65 77 20 61 6e 64 0a 20 20  n for new and.  
06d0: 20 20 23 20 72 65 6d 6f 76 65 64 20 66 69 6c 65    # removed file
06e0: 73 20 61 6e 64 20 69 73 73 75 65 20 74 68 65 20  s and issue the 
06f0: 61 70 70 72 6f 70 72 69 61 74 65 20 66 6f 73 73  appropriate foss
0700: 69 6c 20 61 64 64 2f 72 6d 20 63 6f 6d 6d 61 6e  il add/rm comman
0710: 64 73 0a 20 20 20 20 23 20 62 65 66 6f 72 65 20  ds.    # before 
0720: 61 63 74 75 61 6c 6c 79 20 63 6f 6d 69 74 74 69  actually comitti
0730: 6e 67 2e 0a 0a 20 20 20 20 23 20 4d 6f 64 69 66  ng...    # Modif
0740: 69 65 64 2f 52 65 6d 6f 76 65 64 20 66 69 6c 65  ied/Removed file
0750: 73 20 66 69 72 73 74 2c 20 74 68 61 74 20 77 61  s first, that wa
0760: 79 20 74 68 65 72 65 20 77 6f 6e 27 74 20 62 65  y there won't be
0770: 20 61 6e 79 20 41 44 44 45 44 0a 20 20 20 20 23   any ADDED.    #
0780: 20 69 6e 64 69 63 61 74 6f 72 73 2e 20 4e 6f 72   indicators. Nor
0790: 20 52 45 4d 4f 56 45 44 2c 20 6f 6e 6c 79 20 45   REMOVED, only E
07a0: 44 49 54 45 44 2e 20 52 65 6d 6f 76 65 64 20 66  DITED. Removed f
07b0: 69 6c 65 73 20 73 68 6f 77 20 75 70 20 61 73 0a  iles show up as.
07c0: 20 20 20 20 23 20 45 44 49 54 45 44 20 77 68 69      # EDITED whi
07d0: 6c 65 20 74 68 65 79 20 61 72 65 20 6e 6f 74 20  le they are not 
07e0: 72 65 67 69 73 74 65 72 65 64 20 61 73 20 72 65  registered as re
07f0: 6d 6f 76 65 64 2e 0a 0a 20 20 20 20 73 65 74 20  moved...    set 
0800: 61 64 64 65 64 20 20 20 30 0a 20 20 20 20 73 65  added   0.    se
0810: 74 20 72 65 6d 6f 76 65 64 20 30 0a 20 20 20 20  t removed 0.    
0820: 73 65 74 20 63 68 61 6e 67 65 64 20 30 0a 0a 20  set changed 0.. 
0830: 20 20 20 66 6f 72 65 61 63 68 20 6c 69 6e 65 20     foreach line 
0840: 5b 73 70 6c 69 74 20 5b 64 6f 76 61 20 63 68 61  [split [dova cha
0850: 6e 67 65 73 5d 20 5c 6e 5d 20 7b 0a 09 72 65 67  nges] \n] {..reg
0860: 73 75 62 20 7b 5e 5c 73 2a 45 44 49 54 45 44 5c  sub {^\s*EDITED\
0870: 73 2a 7d 20 24 6c 69 6e 65 20 7b 7d 20 70 61 74  s*} $line {} pat
0880: 68 0a 09 69 66 20 7b 5b 49 47 4e 4f 52 45 20 24  h..if {[IGNORE $
0890: 69 67 6e 6f 72 65 20 24 70 61 74 68 5d 7d 20 63  ignore $path]} c
08a0: 6f 6e 74 69 6e 75 65 0a 0a 09 69 66 20 7b 21 5b  ontinue...if {![
08b0: 66 69 6c 65 20 65 78 69 73 74 73 20 24 70 61 74  file exists $pat
08c0: 68 5d 7d 20 7b 0a 09 20 20 20 20 64 6f 76 61 20  h]} {..    dova 
08d0: 72 6d 20 24 70 61 74 68 0a 09 20 20 20 20 69 6e  rm $path..    in
08e0: 63 72 20 72 65 6d 6f 76 65 64 0a 09 20 20 20 20  cr removed..    
08f0: 77 72 69 74 65 20 32 20 66 6f 73 73 69 6c 20 22  write 2 fossil "
0900: 2d 20 20 24 70 61 74 68 22 0a 09 7d 20 65 6c 73  -  $path"..} els
0910: 65 20 7b 0a 09 20 20 20 20 69 6e 63 72 20 63 68  e {..    incr ch
0920: 61 6e 67 65 64 0a 09 20 20 20 20 77 72 69 74 65  anged..    write
0930: 20 32 20 66 6f 73 73 69 6c 20 22 2a 20 20 24 70   2 fossil "*  $p
0940: 61 74 68 22 0a 09 7d 0a 20 20 20 20 7d 0a 0a 20  ath"..}.    }.. 
0950: 20 20 20 23 20 4e 6f 77 20 6c 6f 6f 6b 20 66 6f     # Now look fo
0960: 72 20 75 6e 72 65 67 69 73 74 65 72 65 64 20 61  r unregistered a
0970: 64 64 65 64 20 66 69 6c 65 73 2e 0a 0a 20 20 20  dded files...   
0980: 20 66 6f 72 65 61 63 68 20 70 61 74 68 20 5b 73   foreach path [s
0990: 70 6c 69 74 20 5b 64 6f 76 61 20 65 78 74 72 61  plit [dova extra
09a0: 5d 20 5c 6e 5d 20 7b 0a 09 69 66 20 7b 5b 49 47  ] \n] {..if {[IG
09b0: 4e 4f 52 45 20 24 69 67 6e 6f 72 65 20 24 70 61  NORE $ignore $pa
09c0: 74 68 5d 7d 20 63 6f 6e 74 69 6e 75 65 0a 09 64  th]} continue..d
09d0: 6f 76 61 20 61 64 64 20 24 70 61 74 68 0a 09 69  ova add $path..i
09e0: 6e 63 72 20 61 64 64 65 64 0a 09 77 72 69 74 65  ncr added..write
09f0: 20 32 20 66 6f 73 73 69 6c 20 22 2b 20 20 24 70   2 fossil "+  $p
0a00: 61 74 68 22 0a 20 20 20 20 7d 0a 0a 20 20 20 20  ath".    }..    
0a10: 23 20 4e 6f 77 20 63 6f 6d 6d 69 74 2c 20 75 73  # Now commit, us
0a20: 69 6e 67 20 74 68 65 20 70 72 6f 76 69 64 65 64  ing the provided
0a30: 20 6d 65 74 61 20 64 61 74 61 2c 20 61 6e 64 20   meta data, and 
0a40: 63 61 70 74 75 72 65 20 74 68 65 20 75 75 69 64  capture the uuid
0a50: 0a 20 20 20 20 23 20 6f 66 20 74 68 65 20 6e 65  .    # of the ne
0a60: 77 20 62 61 73 65 6c 69 6e 65 2e 0a 0a 20 20 20  w baseline...   
0a70: 20 66 6f 72 65 61 63 68 20 7b 75 73 65 72 20 6d   foreach {user m
0a80: 65 73 73 61 67 65 20 74 73 74 61 6d 70 7d 20 24  essage tstamp} $
0a90: 6d 65 74 61 20 62 72 65 61 6b 0a 0a 20 20 20 20  meta break..    
0aa0: 73 65 74 20 6d 65 73 73 61 67 65 20 5b 6a 6f 69  set message [joi
0ab0: 6e 20 5b 6c 69 73 74 20 5c 0a 09 09 09 20 20 20  n [list \....   
0ac0: 22 2d 2d 20 4f 72 69 67 69 6e 61 6c 6c 79 20 62  "-- Originally b
0ad0: 79 20 24 75 73 65 72 20 40 20 24 74 73 74 61 6d  y $user @ $tstam
0ae0: 70 22 20 5c 0a 09 09 09 20 20 20 22 2d 2d 20 49  p" \....   "-- I
0af0: 6d 70 6f 72 74 65 64 20 62 79 20 24 61 70 70 6e  mported by $appn
0b00: 61 6d 65 22 20 5c 0a 09 09 09 20 20 20 24 6d 65  ame" \....   $me
0b10: 73 73 61 67 65 5d 20 5c 6e 5d 0a 0a 20 20 20 20  ssage] \n]..    
0b20: 73 65 74 20 63 6d 64 20 5b 6c 69 73 74 20 63 6f  set cmd [list co
0b30: 6d 6d 69 74 20 2d 6d 20 24 6d 65 73 73 61 67 65  mmit -m $message
0b40: 5d 0a 20 20 20 20 69 66 20 7b 24 6e 6f 73 69 67  ].    if {$nosig
0b50: 6e 7d 20 7b 20 6c 61 70 70 65 6e 64 20 63 6d 64  n} { lappend cmd
0b60: 20 2d 2d 6e 6f 73 69 67 6e 20 7d 0a 0a 20 20 20   --nosign }..   
0b70: 20 69 66 20 7b 24 64 65 62 75 67 63 6f 6d 6d 69   if {$debugcommi
0b80: 74 7d 20 7b 0a 09 66 69 6c 65 75 74 69 6c 3a 3a  t} {..fileutil::
0b90: 77 72 69 74 65 46 69 6c 65 20 24 64 63 66 69 6c  writeFile $dcfil
0ba0: 65 20 22 24 63 6d 64 5c 6e 22 0a 20 20 20 20 7d  e "$cmd\n".    }
0bb0: 0a 0a 20 20 20 20 23 20 53 74 6f 70 2c 20 64 6f  ..    # Stop, do
0bc0: 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79 20 63 6f   not actually co
0bd0: 6d 6d 69 74 2e 0a 20 20 20 20 69 66 20 7b 24 62  mmit..    if {$b
0be0: 72 65 61 6b 7d 20 72 65 74 75 72 6e 0a 0a 20 20  reak} return..  
0bf0: 20 20 69 66 20 7b 5b 63 61 74 63 68 20 7b 0a 09    if {[catch {..
0c00: 64 6f 20 24 63 6d 64 0a 20 20 20 20 7d 20 6c 69  do $cmd.    } li
0c10: 6e 65 5d 7d 20 7b 0a 09 69 66 20 7b 21 5b 73 74  ne]} {..if {![st
0c20: 72 69 6e 67 20 6d 61 74 63 68 20 22 2a 6e 6f 74  ring match "*not
0c30: 68 69 6e 67 20 68 61 73 20 63 68 61 6e 67 65 64  hing has changed
0c40: 2a 22 20 24 6c 69 6e 65 5d 7d 20 7b 0a 09 20 20  *" $line]} {..  
0c50: 20 20 72 65 74 75 72 6e 20 2d 63 6f 64 65 20 65    return -code e
0c60: 72 72 6f 72 20 24 6c 69 6e 65 0a 09 7d 0a 0a 09  rror $line..}...
0c70: 23 20 27 4e 6f 74 68 69 6e 67 20 63 68 61 6e 67  # 'Nothing chang
0c80: 65 64 27 20 63 61 6e 20 68 61 70 70 65 6e 20 66  ed' can happen f
0c90: 6f 72 20 63 68 61 6e 67 65 73 65 74 73 20 63 6f  or changesets co
0ca0: 6e 74 61 69 6e 69 6e 67 20 6f 6e 6c 79 0a 09 23  ntaining only..#
0cb0: 20 64 65 61 64 2d 66 69 72 73 74 20 72 65 76 69   dead-first revi
0cc0: 73 69 6f 6e 73 20 6f 66 20 6f 6e 65 20 6f 72 20  sions of one or 
0cd0: 6d 6f 72 65 20 66 69 6c 65 73 2e 20 46 6f 72 20  more files. For 
0ce0: 66 6f 73 73 69 6c 20 77 65 0a 09 23 20 72 65 2d  fossil we..# re-
0cf0: 75 73 65 20 74 68 65 20 6c 61 73 74 20 62 61 73  use the last bas
0d00: 65 6c 69 6e 65 2e 20 54 4f 44 4f 3a 20 4d 61 72  eline. TODO: Mar
0d10: 6b 20 74 68 65 6d 20 61 73 20 62 72 61 6e 63 68  k them as branch
0d20: 70 6f 69 6e 74 2c 0a 09 23 20 61 6e 64 20 66 6f  point,..# and fo
0d30: 72 20 77 68 61 74 20 66 69 6c 65 2e 0a 0a 09 77  r what file....w
0d40: 72 69 74 65 20 31 20 66 6f 73 73 69 6c 20 22 55  rite 1 fossil "U
0d50: 4e 43 48 41 4e 47 45 44 2c 20 6b 65 65 70 69 6e  NCHANGED, keepin
0d60: 67 20 6c 61 73 74 22 0a 0a 09 72 65 74 75 72 6e  g last"...return
0d70: 20 5b 6c 69 73 74 20 24 6c 61 73 74 75 75 69 64   [list $lastuuid
0d80: 20 30 20 30 20 30 5d 0a 20 20 20 20 7d 0a 0a 20   0 0 0].    }.. 
0d90: 20 20 20 73 65 74 20 6c 69 6e 65 20 5b 73 74 72     set line [str
0da0: 69 6e 67 20 74 72 69 6d 20 24 6c 69 6e 65 5d 0a  ing trim $line].
0db0: 20 20 20 20 72 65 67 73 75 62 20 2d 6e 6f 63 61      regsub -noca
0dc0: 73 65 20 2d 2d 20 7b 5e 5c 73 2a 4e 65 77 5f 56  se -- {^\s*New_V
0dd0: 65 72 73 69 6f 6e 3a 5c 73 2a 7d 20 24 6c 69 6e  ersion:\s*} $lin
0de0: 65 20 7b 7d 20 75 75 69 64 0a 0a 20 20 20 20 73  e {} uuid..    s
0df0: 65 74 20 6c 61 73 74 75 75 69 64 20 24 75 75 69  et lastuuid $uui
0e00: 64 0a 20 20 20 20 72 65 74 75 72 6e 20 5b 6c 69  d.    return [li
0e10: 73 74 20 24 75 75 69 64 20 24 61 64 64 65 64 20  st $uuid $added 
0e20: 24 72 65 6d 6f 76 65 64 20 24 63 68 61 6e 67 65  $removed $change
0e30: 64 5d 0a 7d 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d  d].}..# --------
0e40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0e50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0e60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0e70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0e80: 2d 2d 2d 2d 2d 0a 23 20 49 6e 74 65 72 6e 61 6c  -----.# Internal
0e90: 20 68 65 6c 70 65 72 20 63 6f 6d 6d 61 6e 64 73   helper commands
0ea0: 0a 0a 70 72 6f 63 20 3a 3a 76 63 3a 3a 66 6f 73  ..proc ::vc::fos
0eb0: 73 69 6c 3a 3a 77 73 3a 3a 49 47 4e 4f 52 45 20  sil::ws::IGNORE 
0ec0: 7b 69 67 6e 6f 72 65 20 70 61 74 68 7d 20 7b 0a  {ignore path} {.
0ed0: 20 20 20 20 72 65 74 75 72 6e 20 5b 75 70 6c 65      return [uple
0ee0: 76 65 6c 20 23 30 20 5b 6c 69 6e 73 65 72 74 20  vel #0 [linsert 
0ef0: 24 69 67 6e 6f 72 65 20 65 6e 64 20 24 70 61 74  $ignore end $pat
0f00: 68 5d 5d 0a 7d 0a 0a 6e 61 6d 65 73 70 61 63 65  h]].}..namespace
0f10: 20 65 76 61 6c 20 3a 3a 76 63 3a 3a 66 6f 73 73   eval ::vc::foss
0f20: 69 6c 3a 3a 77 73 20 7b 0a 20 20 20 20 6e 61 6d  il::ws {.    nam
0f30: 65 73 70 61 63 65 20 65 78 70 6f 72 74 20 6e 65  espace export ne
0f40: 77 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 64 65  w destination de
0f50: 62 75 67 63 6f 6d 6d 69 74 20 63 6f 6d 6d 69 74  bugcommit commit
0f60: 0a 7d 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .}..# ----------
0f70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0f80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0f90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0fa0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0fb0: 2d 2d 2d 0a 23 20 52 65 61 64 79 0a 0a 70 61 63  ---.# Ready..pac
0fc0: 6b 61 67 65 20 70 72 6f 76 69 64 65 20 76 63 3a  kage provide vc:
0fd0: 3a 66 6f 73 73 69 6c 3a 3a 77 73 20 31 2e 30 0a  :fossil::ws 1.0.
0fe0: 72 65 74 75 72 6e 0a                             return.