Hex Artifact Content
Not logged in

Artifact 4c39a15ec8c635f4b0d6d20060cfd443546c9e82:

File tools/lib/fossil.tcl part of check-in [8469631cc9] - Extended import app with switch to stop execution just before a specific changeset, to aid in debugging problems. by aku on 2007-09-08 03:48:40.

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 0a 6e 61 6d 65 73  e Tcl 8.4..names
00f0: 70 61 63 65 20 65 76 61 6c 20 3a 3a 66 6f 73 73  pace eval ::foss
0100: 69 6c 20 7b 7d 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d  il {}..# -------
0110: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0120: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0130: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0140: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0150: 2d 2d 2d 2d 2d 2d 0a 23 20 41 50 49 0a 0a 23 20  ------.# API..# 
0160: 44 65 66 69 6e 65 20 72 65 70 6f 73 69 74 6f 72  Define repositor
0170: 79 20 66 69 6c 65 2c 20 61 6e 64 20 63 6f 6e 6e  y file, and conn
0180: 65 63 74 20 74 6f 20 77 6f 72 6b 73 70 61 63 65  ect to workspace
0190: 20 69 6e 20 43 57 44 2e 0a 0a 70 72 6f 63 20 3a   in CWD...proc :
01a0: 3a 66 6f 73 73 69 6c 3a 3a 6e 65 77 20 7b 7d 20  :fossil::new {} 
01b0: 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 66  {.    variable f
01c0: 72 20 20 20 20 20 5b 66 69 6c 65 20 6e 6f 72 6d  r     [file norm
01d0: 61 6c 69 7a 65 20 5b 66 69 6c 65 75 74 69 6c 3a  alize [fileutil:
01e0: 3a 74 65 6d 70 66 69 6c 65 20 69 6d 70 6f 72 74  :tempfile import
01f0: 32 5f 66 73 6c 5f 72 70 5f 5d 5d 0a 20 20 20 20  2_fsl_rp_]].    
0200: 76 61 72 69 61 62 6c 65 20 66 6f 73 73 69 6c 0a  variable fossil.
0210: 0a 20 20 20 20 23 20 70 77 64 20 3d 20 77 6f 72  .    # pwd = wor
0220: 6b 73 70 61 63 65 0a 20 20 20 20 65 78 65 63 20  kspace.    exec 
0230: 24 66 6f 73 73 69 6c 20 6e 65 77 20 20 24 66 72  $fossil new  $fr
0240: 20 3b 20 23 20 63 72 65 61 74 65 20 61 6e 64 0a   ; # create and.
0250: 20 20 20 20 65 78 65 63 20 24 66 6f 73 73 69 6c      exec $fossil
0260: 20 6f 70 65 6e 20 24 66 72 20 3b 20 23 20 63 6f   open $fr ; # co
0270: 6e 6e 65 63 74 0a 0a 20 20 20 20 4c 6f 67 20 69  nnect..    Log i
0280: 6e 66 6f 20 22 20 20 20 20 46 6f 73 73 69 6c 3a  nfo "    Fossil:
0290: 20 20 20 20 24 66 72 22 0a 0a 20 20 20 20 72 65      $fr"..    re
02a0: 74 75 72 6e 20 24 66 72 0a 7d 0a 0a 23 20 44 65  turn $fr.}..# De
02b0: 66 69 6e 65 20 6c 6f 67 67 69 6e 67 20 63 61 6c  fine logging cal
02c0: 6c 62 61 63 6b 20 63 6f 6d 6d 61 6e 64 0a 0a 70  lback command..p
02d0: 72 6f 63 20 3a 3a 66 6f 73 73 69 6c 3a 3a 66 65  roc ::fossil::fe
02e0: 65 64 62 61 63 6b 20 7b 6c 6f 67 63 6d 64 7d 20  edback {logcmd} 
02f0: 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c  {.    variable l
0300: 63 20 24 6c 6f 67 63 6d 64 0a 20 20 20 20 72 65  c $logcmd.    re
0310: 74 75 72 6e 0a 7d 0a 0a 23 20 4d 6f 76 65 20 67  turn.}..# Move g
0320: 65 6e 65 72 61 74 65 64 20 66 6f 73 73 69 6c 20  enerated fossil 
0330: 72 65 70 6f 73 69 74 6f 72 79 20 74 6f 20 66 69  repository to fi
0340: 6e 61 6c 20 64 65 73 74 69 6e 61 74 69 6f 6e 0a  nal destination.
0350: 0a 70 72 6f 63 20 3a 3a 66 6f 73 73 69 6c 3a 3a  .proc ::fossil::
0360: 64 65 73 74 69 6e 61 74 69 6f 6e 20 7b 70 61 74  destination {pat
0370: 68 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c  h} {.    variabl
0380: 65 20 66 72 0a 20 20 20 20 66 69 6c 65 20 72 65  e fr.    file re
0390: 6e 61 6d 65 20 24 66 72 20 24 70 61 74 68 0a 20  name $fr $path. 
03a0: 20 20 20 72 65 74 75 72 6e 0a 7d 0a 0a 6e 61 6d     return.}..nam
03b0: 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 66 6f  espace eval ::fo
03c0: 73 73 69 6c 20 7b 0a 20 20 20 20 23 20 52 65 70  ssil {.    # Rep
03d0: 6f 73 69 74 6f 72 79 20 66 69 6c 65 0a 20 20 20  ository file.   
03e0: 20 76 61 72 69 61 62 6c 65 20 66 72 20 7b 7d 0a   variable fr {}.
03f0: 0a 20 20 20 20 23 20 46 6f 73 73 69 6c 20 61 70  .    # Fossil ap
0400: 70 6c 69 63 61 74 69 6f 6e 0a 20 20 20 20 76 61  plication.    va
0410: 72 69 61 62 6c 65 20 66 6f 73 73 69 6c 20 5b 61  riable fossil [a
0420: 75 74 6f 5f 65 78 65 63 6f 6b 20 66 6f 73 73 69  uto_execok fossi
0430: 6c 5d 0a 0a 20 20 20 20 23 20 44 65 62 75 67 20  l]..    # Debug 
0440: 74 68 65 20 63 6f 6d 6d 69 74 20 63 6f 6d 6d 61  the commit comma
0450: 6e 64 20 28 77 72 69 74 65 20 61 20 54 63 6c 20  nd (write a Tcl 
0460: 73 63 72 69 70 74 20 63 6f 6e 74 61 69 6e 69 6e  script containin
0470: 67 20 74 68 65 0a 20 20 20 20 23 20 65 78 61 63  g the.    # exac
0480: 74 20 63 6f 6d 6d 61 6e 64 20 75 73 65 64 29 2e  t command used).
0490: 20 41 6e 64 20 74 68 65 20 66 69 6c 65 20 74 68   And the file th
04a0: 65 20 64 61 74 61 20 67 6f 65 73 20 74 6f 2e 0a  e data goes to..
04b0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 64 65 62      variable deb
04c0: 75 67 63 6f 6d 6d 69 74 20 30 0a 20 20 20 20 76  ugcommit 0.    v
04d0: 61 72 69 61 62 6c 65 20 64 63 66 69 6c 65 20 20  ariable dcfile  
04e0: 20 20 20 20 7b 7d 0a 7d 0a 0a 70 72 6f 63 20 3a      {}.}..proc :
04f0: 3a 66 6f 73 73 69 6c 3a 3a 64 65 62 75 67 63 6f  :fossil::debugco
0500: 6d 6d 69 74 20 7b 66 6c 61 67 7d 20 7b 0a 20 20  mmit {flag} {.  
0510: 20 20 76 61 72 69 61 62 6c 65 20 64 65 62 75 67    variable debug
0520: 63 6f 6d 6d 69 74 20 24 66 6c 61 67 0a 20 20 20  commit $flag.   
0530: 20 69 66 20 7b 24 64 65 62 75 67 63 6f 6d 6d 69   if {$debugcommi
0540: 74 7d 20 7b 0a 09 76 61 72 69 61 62 6c 65 20 64  t} {..variable d
0550: 63 66 69 6c 65 20 5b 66 69 6c 65 20 6e 6f 72 6d  cfile [file norm
0560: 61 6c 69 7a 65 20 63 76 73 32 66 6f 73 73 69 6c  alize cvs2fossil
0570: 5f 63 6f 6d 6d 69 74 2e 74 63 6c 5d 0a 20 20 20  _commit.tcl].   
0580: 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 0a 7d 0a   }.    return.}.
0590: 0a 70 72 6f 63 20 3a 3a 66 6f 73 73 69 6c 3a 3a  .proc ::fossil::
05a0: 63 6f 6d 6d 69 74 20 7b 62 72 65 61 6b 20 61 70  commit {break ap
05b0: 70 6e 61 6d 65 20 6e 6f 73 69 67 6e 20 6d 65 74  pname nosign met
05c0: 61 20 69 67 6e 6f 72 65 7d 20 7b 0a 20 20 20 20  a ignore} {.    
05d0: 76 61 72 69 61 62 6c 65 20 66 6f 73 73 69 6c 0a  variable fossil.
05e0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c 61 73      variable las
05f0: 74 75 75 69 64 0a 20 20 20 20 76 61 72 69 61 62  tuuid.    variab
0600: 6c 65 20 64 65 62 75 67 63 6f 6d 6d 69 74 0a 20  le debugcommit. 
0610: 20 20 20 76 61 72 69 61 62 6c 65 20 64 63 66 69     variable dcfi
0620: 6c 65 0a 0a 20 20 20 20 23 20 43 6f 6d 6d 69 74  le..    # Commit
0630: 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 61   the current sta
0640: 74 65 20 6f 66 20 74 68 65 20 77 6f 72 6b 73 70  te of the worksp
0650: 61 63 65 2e 20 53 63 61 6e 20 66 6f 72 20 6e 65  ace. Scan for ne
0660: 77 20 61 6e 64 0a 20 20 20 20 23 20 72 65 6d 6f  w and.    # remo
0670: 76 65 64 20 66 69 6c 65 73 20 61 6e 64 20 69 73  ved files and is
0680: 73 75 65 20 74 68 65 20 61 70 70 72 6f 70 72 69  sue the appropri
0690: 61 74 65 20 66 6f 73 73 69 6c 20 61 64 64 2f 72  ate fossil add/r
06a0: 6d 20 63 6f 6d 6d 61 6e 64 73 0a 20 20 20 20 23  m commands.    #
06b0: 20 62 65 66 6f 72 65 20 61 63 74 75 61 6c 6c 79   before actually
06c0: 20 63 6f 6d 69 74 74 69 6e 67 2e 0a 0a 20 20 20   comitting...   
06d0: 20 23 20 4d 6f 64 69 66 69 65 64 2f 52 65 6d 6f   # Modified/Remo
06e0: 76 65 64 20 66 69 6c 65 73 20 66 69 72 73 74 2c  ved files first,
06f0: 20 74 68 61 74 20 77 61 79 20 74 68 65 72 65 20   that way there 
0700: 77 6f 6e 27 74 20 62 65 20 61 6e 79 20 41 44 44  won't be any ADD
0710: 45 44 0a 20 20 20 20 23 20 69 6e 64 69 63 61 74  ED.    # indicat
0720: 6f 72 73 2e 20 4e 6f 72 20 52 45 4d 4f 56 45 44  ors. Nor REMOVED
0730: 2c 20 6f 6e 6c 79 20 45 44 49 54 45 44 2e 20 52  , only EDITED. R
0740: 65 6d 6f 76 65 64 20 66 69 6c 65 73 20 73 68 6f  emoved files sho
0750: 77 20 75 70 20 61 73 0a 20 20 20 20 23 20 45 44  w up as.    # ED
0760: 49 54 45 44 20 77 68 69 6c 65 20 74 68 65 79 20  ITED while they 
0770: 61 72 65 20 6e 6f 74 20 72 65 67 69 73 74 65 72  are not register
0780: 65 64 20 61 73 20 72 65 6d 6f 76 65 64 2e 0a 0a  ed as removed...
0790: 20 20 20 20 73 65 74 20 61 64 64 65 64 20 20 20      set added   
07a0: 30 0a 20 20 20 20 73 65 74 20 72 65 6d 6f 76 65  0.    set remove
07b0: 64 20 30 0a 20 20 20 20 73 65 74 20 63 68 61 6e  d 0.    set chan
07c0: 67 65 64 20 30 0a 0a 20 20 20 20 66 6f 72 65 61  ged 0..    forea
07d0: 63 68 20 6c 69 6e 65 20 5b 73 70 6c 69 74 20 5b  ch line [split [
07e0: 65 78 65 63 20 24 66 6f 73 73 69 6c 20 63 68 61  exec $fossil cha
07f0: 6e 67 65 73 5d 20 5c 6e 5d 20 7b 0a 09 72 65 67  nges] \n] {..reg
0800: 73 75 62 20 7b 5e 5c 73 2a 45 44 49 54 45 44 5c  sub {^\s*EDITED\
0810: 73 2a 7d 20 24 6c 69 6e 65 20 7b 7d 20 70 61 74  s*} $line {} pat
0820: 68 0a 09 69 66 20 7b 5b 49 47 4e 4f 52 45 20 24  h..if {[IGNORE $
0830: 69 67 6e 6f 72 65 20 24 70 61 74 68 5d 7d 20 63  ignore $path]} c
0840: 6f 6e 74 69 6e 75 65 0a 0a 09 69 66 20 7b 21 5b  ontinue...if {![
0850: 66 69 6c 65 20 65 78 69 73 74 73 20 24 70 61 74  file exists $pat
0860: 68 5d 7d 20 7b 0a 09 20 20 20 20 65 78 65 63 20  h]} {..    exec 
0870: 24 66 6f 73 73 69 6c 20 72 6d 20 24 70 61 74 68  $fossil rm $path
0880: 0a 09 20 20 20 20 69 6e 63 72 20 72 65 6d 6f 76  ..    incr remov
0890: 65 64 0a 09 20 20 20 20 4c 6f 67 20 69 6e 66 6f  ed..    Log info
08a0: 20 22 20 20 20 20 20 20 20 20 2a 2a 20 2d 20 24   "        ** - $
08b0: 70 61 74 68 22 0a 09 7d 20 65 6c 73 65 20 7b 0a  path"..} else {.
08c0: 09 20 20 20 20 69 6e 63 72 20 63 68 61 6e 67 65  .    incr change
08d0: 64 0a 09 20 20 20 20 4c 6f 67 20 69 6e 66 6f 20  d..    Log info 
08e0: 22 20 20 20 20 20 20 20 20 2a 2a 20 2a 20 24 70  "        ** * $p
08f0: 61 74 68 22 0a 09 7d 0a 20 20 20 20 7d 0a 0a 20  ath"..}.    }.. 
0900: 20 20 20 23 20 4e 6f 77 20 6c 6f 6f 6b 20 66 6f     # Now look fo
0910: 72 20 75 6e 72 65 67 69 73 74 65 72 65 64 20 61  r unregistered a
0920: 64 64 65 64 20 66 69 6c 65 73 2e 0a 0a 20 20 20  dded files...   
0930: 20 66 6f 72 65 61 63 68 20 70 61 74 68 20 5b 73   foreach path [s
0940: 70 6c 69 74 20 5b 65 78 65 63 20 24 66 6f 73 73  plit [exec $foss
0950: 69 6c 20 65 78 74 72 61 5d 20 5c 6e 5d 20 7b 0a  il extra] \n] {.
0960: 09 69 66 20 7b 5b 49 47 4e 4f 52 45 20 24 69 67  .if {[IGNORE $ig
0970: 6e 6f 72 65 20 24 70 61 74 68 5d 7d 20 63 6f 6e  nore $path]} con
0980: 74 69 6e 75 65 0a 09 65 78 65 63 20 24 66 6f 73  tinue..exec $fos
0990: 73 69 6c 20 61 64 64 20 24 70 61 74 68 0a 09 69  sil add $path..i
09a0: 6e 63 72 20 61 64 64 65 64 0a 09 4c 6f 67 20 69  ncr added..Log i
09b0: 6e 66 6f 20 22 20 20 20 20 20 20 20 20 2a 2a 20  nfo "        ** 
09c0: 2b 20 24 70 61 74 68 22 0a 20 20 20 20 7d 0a 0a  + $path".    }..
09d0: 20 20 20 20 23 20 4e 6f 77 20 63 6f 6d 6d 69 74      # Now commit
09e0: 2c 20 75 73 69 6e 67 20 74 68 65 20 70 72 6f 76  , using the prov
09f0: 69 64 65 64 20 6d 65 74 61 20 64 61 74 61 2c 20  ided meta data, 
0a00: 61 6e 64 20 63 61 70 74 75 72 65 20 74 68 65 20  and capture the 
0a10: 75 75 69 64 0a 20 20 20 20 23 20 6f 66 20 74 68  uuid.    # of th
0a20: 65 20 6e 65 77 20 62 61 73 65 6c 69 6e 65 2e 0a  e new baseline..
0a30: 0a 20 20 20 20 66 6f 72 65 61 63 68 20 7b 75 73  .    foreach {us
0a40: 65 72 20 6d 65 73 73 61 67 65 20 74 73 74 61 6d  er message tstam
0a50: 70 7d 20 24 6d 65 74 61 20 62 72 65 61 6b 0a 0a  p} $meta break..
0a60: 20 20 20 20 73 65 74 20 6d 65 73 73 61 67 65 20      set message 
0a70: 5b 6a 6f 69 6e 20 5b 6c 69 73 74 20 5c 0a 09 09  [join [list \...
0a80: 09 20 20 20 22 2d 2d 20 4f 72 69 67 69 6e 61 6c  .   "-- Original
0a90: 6c 79 20 62 79 20 24 75 73 65 72 20 40 20 24 74  ly by $user @ $t
0aa0: 73 74 61 6d 70 22 20 5c 0a 09 09 09 20 20 20 22  stamp" \....   "
0ab0: 2d 2d 20 49 6d 70 6f 72 74 65 64 20 62 79 20 24  -- Imported by $
0ac0: 61 70 70 6e 61 6d 65 22 20 5c 0a 09 09 09 20 20  appname" \....  
0ad0: 20 24 6d 65 73 73 61 67 65 5d 20 5c 6e 5d 0a 0a   $message] \n]..
0ae0: 20 20 20 20 69 66 20 7b 24 6e 6f 73 69 67 6e 7d      if {$nosign}
0af0: 20 7b 0a 09 73 65 74 20 63 6d 64 20 5b 6c 69 73   {..set cmd [lis
0b00: 74 20 65 78 65 63 20 24 66 6f 73 73 69 6c 20 63  t exec $fossil c
0b10: 6f 6d 6d 69 74 20 2d 6d 20 24 6d 65 73 73 61 67  ommit -m $messag
0b20: 65 20 2d 2d 6e 6f 73 69 67 6e 5d 0a 20 20 20 20  e --nosign].    
0b30: 7d 20 65 6c 73 65 20 7b 0a 09 73 65 74 20 63 6d  } else {..set cm
0b40: 64 20 5b 6c 69 73 74 20 65 78 65 63 20 24 66 6f  d [list exec $fo
0b50: 73 73 69 6c 20 63 6f 6d 6d 69 74 20 2d 6d 20 24  ssil commit -m $
0b60: 6d 65 73 73 61 67 65 5d 0a 20 20 20 20 7d 0a 0a  message].    }..
0b70: 20 20 20 20 69 66 20 7b 24 64 65 62 75 67 63 6f      if {$debugco
0b80: 6d 6d 69 74 7d 20 7b 0a 09 66 69 6c 65 75 74 69  mmit} {..fileuti
0b90: 6c 3a 3a 77 72 69 74 65 46 69 6c 65 20 24 64 63  l::writeFile $dc
0ba0: 66 69 6c 65 20 22 5c 23 21 74 63 6c 73 68 5c 6e  file "\#!tclsh\n
0bb0: 24 63 6d 64 5c 6e 22 0a 20 20 20 20 7d 0a 0a 20  $cmd\n".    }.. 
0bc0: 20 20 20 23 20 53 74 6f 70 2c 20 64 6f 20 6e 6f     # Stop, do no
0bd0: 74 20 61 63 74 75 61 6c 6c 79 20 63 6f 6d 6d 69  t actually commi
0be0: 74 2e 0a 20 20 20 20 69 66 20 7b 24 62 72 65 61  t..    if {$brea
0bf0: 6b 7d 20 72 65 74 75 72 6e 0a 0a 20 20 20 20 69  k} return..    i
0c00: 66 20 7b 5b 63 61 74 63 68 20 7b 0a 09 65 76 61  f {[catch {..eva
0c10: 6c 20 24 63 6d 64 0a 20 20 20 20 7d 20 6c 69 6e  l $cmd.    } lin
0c20: 65 5d 7d 20 7b 0a 09 69 66 20 7b 21 5b 73 74 72  e]} {..if {![str
0c30: 69 6e 67 20 6d 61 74 63 68 20 22 2a 6e 6f 74 68  ing match "*noth
0c40: 69 6e 67 20 68 61 73 20 63 68 61 6e 67 65 64 2a  ing has changed*
0c50: 22 20 24 6c 69 6e 65 5d 7d 20 7b 0a 09 20 20 20  " $line]} {..   
0c60: 20 72 65 74 75 72 6e 20 2d 63 6f 64 65 20 65 72   return -code er
0c70: 72 6f 72 20 24 6c 69 6e 65 0a 09 7d 0a 0a 09 23  ror $line..}...#
0c80: 20 27 4e 6f 74 68 69 6e 67 20 63 68 61 6e 67 65   'Nothing change
0c90: 64 27 20 63 61 6e 20 68 61 70 70 65 6e 20 66 6f  d' can happen fo
0ca0: 72 20 63 68 61 6e 67 65 73 65 74 73 20 63 6f 6e  r changesets con
0cb0: 74 61 69 6e 69 6e 67 20 6f 6e 6c 79 0a 09 23 20  taining only..# 
0cc0: 64 65 61 64 2d 66 69 72 73 74 20 72 65 76 69 73  dead-first revis
0cd0: 69 6f 6e 73 20 6f 66 20 6f 6e 65 20 6f 72 20 6d  ions of one or m
0ce0: 6f 72 65 20 66 69 6c 65 73 2e 20 46 6f 72 20 66  ore files. For f
0cf0: 6f 73 73 69 6c 20 77 65 0a 09 23 20 72 65 2d 75  ossil we..# re-u
0d00: 73 65 20 74 68 65 20 6c 61 73 74 20 62 61 73 65  se the last base
0d10: 6c 69 6e 65 2e 20 54 4f 44 4f 3a 20 4d 61 72 6b  line. TODO: Mark
0d20: 20 74 68 65 6d 20 61 73 20 62 72 61 6e 63 68 70   them as branchp
0d30: 6f 69 6e 74 2c 0a 09 23 20 61 6e 64 20 66 6f 72  oint,..# and for
0d40: 20 77 68 61 74 20 66 69 6c 65 2e 0a 0a 09 4c 6f   what file....Lo
0d50: 67 20 69 6e 66 6f 20 22 20 20 20 20 20 20 20 20  g info "        
0d60: 55 4e 43 48 41 4e 47 45 44 2c 20 6b 65 65 70 69  UNCHANGED, keepi
0d70: 6e 67 20 6c 61 73 74 22 0a 0a 09 72 65 74 75 72  ng last"...retur
0d80: 6e 20 5b 6c 69 73 74 20 24 6c 61 73 74 75 75 69  n [list $lastuui
0d90: 64 20 30 20 30 20 30 5d 0a 20 20 20 20 7d 0a 0a  d 0 0 0].    }..
0da0: 20 20 20 20 73 65 74 20 6c 69 6e 65 20 5b 73 74      set line [st
0db0: 72 69 6e 67 20 74 72 69 6d 20 24 6c 69 6e 65 5d  ring trim $line]
0dc0: 0a 20 20 20 20 72 65 67 73 75 62 20 2d 6e 6f 63  .    regsub -noc
0dd0: 61 73 65 20 2d 2d 20 7b 5e 5c 73 2a 4e 65 77 5f  ase -- {^\s*New_
0de0: 56 65 72 73 69 6f 6e 3a 5c 73 2a 7d 20 24 6c 69  Version:\s*} $li
0df0: 6e 65 20 7b 7d 20 75 75 69 64 0a 0a 20 20 20 20  ne {} uuid..    
0e00: 73 65 74 20 6c 61 73 74 75 75 69 64 20 24 75 75  set lastuuid $uu
0e10: 69 64 0a 20 20 20 20 72 65 74 75 72 6e 20 5b 6c  id.    return [l
0e20: 69 73 74 20 24 75 75 69 64 20 24 61 64 64 65 64  ist $uuid $added
0e30: 20 24 72 65 6d 6f 76 65 64 20 24 63 68 61 6e 67   $removed $chang
0e40: 65 64 5d 0a 7d 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d  ed].}..# -------
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 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0e90: 2d 2d 2d 2d 2d 2d 0a 23 20 49 6e 74 65 72 6e 61  ------.# Interna
0ea0: 6c 20 68 65 6c 70 65 72 20 63 6f 6d 6d 61 6e 64  l helper command
0eb0: 73 0a 0a 70 72 6f 63 20 3a 3a 66 6f 73 73 69 6c  s..proc ::fossil
0ec0: 3a 3a 49 47 4e 4f 52 45 20 7b 69 67 6e 6f 72 65  ::IGNORE {ignore
0ed0: 20 70 61 74 68 7d 20 7b 0a 20 20 20 20 72 65 74   path} {.    ret
0ee0: 75 72 6e 20 5b 75 70 6c 65 76 65 6c 20 23 30 20  urn [uplevel #0 
0ef0: 5b 6c 69 6e 73 65 72 74 20 24 69 67 6e 6f 72 65  [linsert $ignore
0f00: 20 65 6e 64 20 24 70 61 74 68 5d 5d 0a 7d 0a 0a   end $path]].}..
0f10: 70 72 6f 63 20 3a 3a 66 6f 73 73 69 6c 3a 3a 4c  proc ::fossil::L
0f20: 6f 67 20 7b 6c 65 76 65 6c 20 74 65 78 74 7d 20  og {level text} 
0f30: 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c  {.    variable l
0f40: 63 0a 20 20 20 20 75 70 6c 65 76 65 6c 20 23 30  c.    uplevel #0
0f50: 20 5b 6c 69 6e 73 65 72 74 20 24 6c 63 20 65 6e   [linsert $lc en
0f60: 64 20 24 6c 65 76 65 6c 20 24 74 65 78 74 5d 0a  d $level $text].
0f70: 20 20 20 20 72 65 74 75 72 6e 0a 7d 0a 0a 70 72      return.}..pr
0f80: 6f 63 20 3a 3a 66 6f 73 73 69 6c 3a 3a 4e 6f 70  oc ::fossil::Nop
0f90: 20 7b 61 72 67 73 7d 20 7b 7d 0a 0a 6e 61 6d 65   {args} {}..name
0fa0: 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 66 6f 73  space eval ::fos
0fb0: 73 69 6c 20 7b 0a 20 20 20 20 23 20 4c 6f 67 67  sil {.    # Logg
0fc0: 69 6e 67 20 63 61 6c 6c 62 61 63 6b 2e 20 4e 6f  ing callback. No
0fd0: 20 6c 6f 67 67 69 6e 67 20 62 79 20 64 65 66 61   logging by defa
0fe0: 75 6c 74 2e 0a 20 20 20 20 76 61 72 69 61 62 6c  ult..    variabl
0ff0: 65 20 6c 63 20 3a 3a 66 6f 73 73 69 6c 3a 3a 4e  e lc ::fossil::N
1000: 6f 70 0a 7d 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d  op.}..# --------
1010: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1020: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1030: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1040: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1050: 2d 2d 2d 2d 2d 0a 23 20 52 65 61 64 79 0a 0a 70  -----.# Ready..p
1060: 61 63 6b 61 67 65 20 70 72 6f 76 69 64 65 20 66  ackage provide f
1070: 6f 73 73 69 6c 20 31 2e 30 0a 72 65 74 75 72 6e  ossil 1.0.return
1080: 0a                                               .