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 .