Artifact 4cf480aa539c7a199e26f4deac9588b3a9f4721f:
File
tools/lib/cvs_csets.tcl
part of check-in
[ae54e928c2]
- Further work on the CVS frontend. The main parts for doing the extraction and management of changesets are now in a separate package.
by
aku on
2007-09-17 07:05:01.
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 43 56 53 29 2c 20 43 agement (CVS), C
0070: 68 61 6e 67 65 73 65 74 20 67 72 6f 75 70 69 6e hangeset groupin
0080: 67 20 61 6e 64 20 73 74 6f 72 61 67 65 2e 0a 0a g and storage...
0090: 23 20 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 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
00d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a ---------------.
00e0: 23 20 52 65 71 75 69 72 65 6d 65 6e 74 73 0a 0a # Requirements..
00f0: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 package require
0100: 54 63 6c 20 38 2e 34 0a 0a 6e 61 6d 65 73 70 61 Tcl 8.4..namespa
0110: 63 65 20 65 76 61 6c 20 3a 3a 76 63 3a 3a 63 76 ce eval ::vc::cv
0120: 73 3a 3a 77 73 3a 3a 63 73 65 74 73 3a 3a 43 75 s::ws::csets::Cu
0130: 72 72 65 6e 74 20 7b 7d 0a 0a 23 20 2d 2d 2d 2d rrent {}..# ----
0140: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0150: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0160: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0170: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0180: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 41 50 49 0a ---------.# API.
0190: 0a 23 20 76 63 3a 3a 63 76 73 3a 3a 77 73 3a 3a .# vc::cvs::ws::
01a0: 63 73 65 74 73 3a 3a 69 6e 69 74 20 20 20 2d 20 csets::init -
01b0: 49 6e 69 74 69 61 6c 69 7a 65 20 61 63 63 75 6d Initialize accum
01c0: 75 6c 61 74 6f 72 0a 23 20 76 63 3a 3a 63 76 73 ulator.# vc::cvs
01d0: 3a 3a 77 73 3a 3a 63 73 65 74 73 3a 3a 61 64 64 ::ws::csets::add
01e0: 20 20 20 20 2d 20 41 64 64 20 74 69 6d 65 6c 69 - Add timeli
01f0: 6e 65 20 65 6e 74 72 79 20 74 6f 20 61 63 63 75 ne entry to accu
0200: 6d 75 6c 6f 72 2c 20 6d 61 79 20 67 65 6e 65 72 mulor, may gener
0210: 61 74 65 20 6e 65 77 20 63 73 65 74 0a 23 20 76 ate new cset.# v
0220: 63 3a 3a 63 76 73 3a 3a 77 73 3a 3a 63 73 65 74 c::cvs::ws::cset
0230: 73 3a 3a 64 6f 6e 65 20 20 20 2d 20 43 6f 6d 70 s::done - Comp
0240: 6c 65 74 65 20 63 73 65 74 20 67 65 6e 65 72 61 lete cset genera
0250: 74 69 6f 6e 2e 0a 23 0a 23 20 76 63 3a 3a 63 76 tion..#.# vc::cv
0260: 73 3a 3a 77 73 3a 3a 63 73 65 74 73 3a 3a 67 65 s::ws::csets::ge
0270: 74 20 69 64 20 2d 20 47 65 74 20 64 61 74 61 20 t id - Get data
0280: 6f 66 20 61 20 63 73 65 74 2e 0a 23 20 76 63 3a of a cset..# vc:
0290: 3a 63 76 73 3a 3a 77 73 3a 3a 63 73 65 74 73 3a :cvs::ws::csets:
02a0: 3a 6e 75 6d 20 20 20 20 2d 20 47 65 74 20 6e 75 :num - Get nu
02b0: 6d 62 65 72 20 6f 66 20 63 73 65 74 73 2e 0a 0a mber of csets...
02c0: 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d # --------------
02d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
02e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
02f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0300: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a ---------------.
0310: 23 20 41 50 49 20 49 6d 70 6c 65 6d 65 6e 74 61 # API Implementa
0320: 74 69 6f 6e 0a 0a 70 72 6f 63 20 3a 3a 76 63 3a tion..proc ::vc:
0330: 3a 63 76 73 3a 3a 77 73 3a 3a 63 73 65 74 73 3a :cvs::ws::csets:
0340: 3a 69 6e 69 74 20 7b 7d 20 7b 0a 20 20 20 20 43 :init {} {. C
0350: 75 72 72 65 6e 74 3a 3a 43 6c 65 61 72 0a 20 20 urrent::Clear.
0360: 20 20 72 65 74 75 72 6e 0a 7d 0a 0a 70 72 6f 63 return.}..proc
0370: 20 3a 3a 76 63 3a 3a 63 76 73 3a 3a 77 73 3a 3a ::vc::cvs::ws::
0380: 63 73 65 74 73 3a 3a 61 64 64 20 7b 64 61 74 65 csets::add {date
0390: 20 66 69 6c 65 20 72 65 76 69 73 69 6f 6e 20 6f file revision o
03a0: 70 65 72 61 74 69 6f 6e 20 61 75 74 68 6f 72 20 peration author
03b0: 63 6d 73 67 7d 20 7b 0a 20 20 20 20 69 66 20 7b cmsg} {. if {
03c0: 21 5b 43 75 72 72 65 6e 74 3a 3a 45 6d 70 74 79 ![Current::Empty
03d0: 5d 20 26 26 20 5b 43 75 72 72 65 6e 74 3a 3a 4e ] && [Current::N
03e0: 65 77 20 24 66 69 6c 65 20 24 72 65 76 69 73 69 ew $file $revisi
03f0: 6f 6e 20 24 61 75 74 68 6f 72 20 24 63 6d 73 67 on $author $cmsg
0400: 5d 7d 20 7b 0a 09 53 61 76 65 20 5b 43 75 72 72 ]} {..Save [Curr
0410: 65 6e 74 3a 3a 43 6f 6d 70 6c 65 74 65 5d 0a 20 ent::Complete].
0420: 20 20 20 7d 0a 20 20 20 20 43 75 72 72 65 6e 74 }. Current
0430: 3a 3a 41 64 64 20 24 64 61 74 65 20 24 66 69 6c ::Add $date $fil
0440: 65 20 24 72 65 76 69 73 69 6f 6e 20 24 6f 70 65 e $revision $ope
0450: 72 61 74 69 6f 6e 20 24 61 75 74 68 6f 72 20 24 ration $author $
0460: 63 6d 73 67 0a 20 20 20 20 72 65 74 75 72 6e 0a cmsg. return.
0470: 7d 0a 0a 70 72 6f 63 20 3a 3a 76 63 3a 3a 63 76 }..proc ::vc::cv
0480: 73 3a 3a 77 73 3a 3a 63 73 65 74 73 3a 3a 64 6f s::ws::csets::do
0490: 6e 65 20 7b 7d 20 7b 0a 20 20 20 20 69 66 20 7b ne {} {. if {
04a0: 21 5b 43 75 72 72 65 6e 74 3a 3a 45 6d 70 74 79 ![Current::Empty
04b0: 5d 7d 20 7b 0a 09 53 61 76 65 20 5b 43 75 72 72 ]} {..Save [Curr
04c0: 65 6e 74 3a 3a 43 6f 6d 70 6c 65 74 65 5d 0a 20 ent::Complete].
04d0: 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 0a }. return.
04e0: 7d 0a 0a 70 72 6f 63 20 3a 3a 76 63 3a 3a 63 76 }..proc ::vc::cv
04f0: 73 3a 3a 77 73 3a 3a 63 73 65 74 73 3a 3a 67 65 s::ws::csets::ge
0500: 74 20 7b 69 64 7d 20 7b 0a 20 20 20 20 76 61 72 t {id} {. var
0510: 69 61 62 6c 65 20 63 73 65 74 73 0a 20 20 20 20 iable csets.
0520: 72 65 74 75 72 6e 20 20 24 63 73 65 74 73 28 24 return $csets($
0530: 69 64 29 0a 7d 0a 0a 70 72 6f 63 20 3a 3a 76 63 id).}..proc ::vc
0540: 3a 3a 63 76 73 3a 3a 77 73 3a 3a 63 73 65 74 73 ::cvs::ws::csets
0550: 3a 3a 6e 75 6d 20 7b 7d 20 7b 0a 20 20 20 20 76 ::num {} {. v
0560: 61 72 69 61 62 6c 65 20 63 73 65 74 73 0a 20 20 ariable csets.
0570: 20 20 72 65 74 75 72 6e 20 5b 61 72 72 61 79 20 return [array
0580: 73 69 7a 65 20 63 73 65 74 73 5d 0a 7d 0a 0a 23 size csets].}..#
0590: 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------
05a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
05b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
05c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
05d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 --------------.#
05e0: 20 49 6e 74 65 72 6e 61 6c 20 68 65 6c 70 65 72 Internal helper
05f0: 20 63 6f 6d 6d 61 6e 64 73 3a 20 43 68 61 6e 67 commands: Chang
0600: 65 73 65 74 20 69 6e 73 70 65 63 74 69 6f 6e 20 eset inspection
0610: 61 6e 64 20 63 6f 6e 73 74 72 75 63 74 69 6f 6e and construction
0620: 2e 0a 0a 70 72 6f 63 20 3a 3a 76 63 3a 3a 63 76 ...proc ::vc::cv
0630: 73 3a 3a 77 73 3a 3a 63 73 65 74 73 3a 3a 53 61 s::ws::csets::Sa
0640: 76 65 20 7b 64 61 74 61 7d 20 7b 0a 20 20 20 20 ve {data} {.
0650: 76 61 72 69 61 62 6c 65 20 63 73 65 74 73 0a 20 variable csets.
0660: 20 20 20 76 61 72 69 61 62 6c 65 20 6e 63 73 0a variable ncs.
0670: 0a 20 20 20 20 73 65 74 20 63 73 65 74 73 28 24 . set csets($
0680: 6e 63 73 29 20 24 64 61 74 61 0a 20 20 20 20 69 ncs) $data. i
0690: 6e 63 72 20 6e 63 73 0a 20 20 20 20 72 65 74 75 ncr ncs. retu
06a0: 72 6e 0a 7d 0a 0a 70 72 6f 63 20 3a 3a 76 63 3a rn.}..proc ::vc:
06b0: 3a 63 76 73 3a 3a 77 73 3a 3a 63 73 65 74 73 3a :cvs::ws::csets:
06c0: 3a 43 75 72 72 65 6e 74 3a 3a 43 6c 65 61 72 20 :Current::Clear
06d0: 7b 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c {} {. variabl
06e0: 65 20 20 20 20 73 74 61 72 74 20 20 20 7b 7d 20 e start {}
06f0: 3b 20 23 20 64 61 74 65 20 74 68 65 20 63 68 61 ; # date the cha
0700: 6e 67 65 73 65 74 20 62 65 67 69 6e 73 0a 20 20 ngeset begins.
0710: 20 20 76 61 72 69 61 62 6c 65 20 20 20 20 63 6d variable cm
0720: 73 67 20 20 20 20 7b 7d 20 3b 20 23 20 63 6f 6d sg {} ; # com
0730: 6d 69 74 20 6d 65 73 73 61 67 65 20 6f 66 20 74 mit message of t
0740: 68 65 20 63 68 61 6e 67 65 73 65 74 0a 20 20 20 he changeset.
0750: 20 76 61 72 69 61 62 6c 65 20 20 20 20 61 75 74 variable aut
0760: 68 6f 72 20 20 7b 7d 20 3b 20 23 20 75 73 65 72 hor {} ; # user
0770: 20 63 72 65 61 74 69 6e 67 20 74 68 65 20 63 68 creating the ch
0780: 61 6e 67 65 73 65 74 0a 20 20 20 20 76 61 72 69 angeset. vari
0790: 61 62 6c 65 20 20 20 20 6c 61 73 74 64 20 20 20 able lastd
07a0: 7b 7d 20 3b 20 23 20 76 65 72 73 69 6f 6e 20 64 {} ; # version d
07b0: 65 70 74 68 20 6f 66 20 6c 61 73 74 20 61 64 64 epth of last add
07c0: 65 64 20 66 69 6c 65 2e 0a 20 20 20 20 76 61 72 ed file.. var
07d0: 69 61 62 6c 65 20 20 20 20 72 65 6d 6f 76 65 64 iable removed
07e0: 20 7b 7d 20 3b 20 23 20 66 69 6c 65 20 2d 3e 20 {} ; # file ->
07f0: 72 65 76 69 73 69 6f 6e 20 6f 66 20 72 65 6d 6f revision of remo
0800: 76 65 64 20 66 69 6c 65 73 2e 0a 20 20 20 20 76 ved files.. v
0810: 61 72 69 61 62 6c 65 20 20 20 20 61 64 64 65 64 ariable added
0820: 20 20 20 7b 7d 20 3b 20 23 20 66 69 6c 65 20 2d {} ; # file -
0830: 3e 20 72 65 76 69 73 69 6f 6e 20 6f 66 20 61 64 > revision of ad
0840: 64 65 64 20 66 69 6c 65 73 2e 0a 20 20 20 20 76 ded files.. v
0850: 61 72 69 61 62 6c 65 20 20 20 20 63 68 61 6e 67 ariable chang
0860: 65 64 20 7b 7d 20 3b 20 23 20 66 69 6c 65 20 2d ed {} ; # file -
0870: 3e 20 72 65 76 69 73 69 6f 6e 20 6f 66 20 6d 6f > revision of mo
0880: 64 69 66 69 65 64 20 66 69 6c 65 73 2e 0a 20 20 dified files..
0890: 20 20 76 61 72 69 61 62 6c 65 20 20 20 20 66 69 variable fi
08a0: 6c 65 73 0a 20 20 20 20 61 72 72 61 79 20 75 6e les. array un
08b0: 73 65 74 20 66 69 6c 65 73 20 2a 0a 20 20 20 20 set files *.
08c0: 61 72 72 61 79 20 73 65 74 20 20 20 66 69 6c 65 array set file
08d0: 73 20 7b 7d 20 20 20 3b 20 23 20 66 69 6c 65 20 s {} ; # file
08e0: 2d 3e 20 72 65 76 69 73 69 6f 6e 0a 20 20 20 20 -> revision.
08f0: 72 65 74 75 72 6e 0a 7d 0a 0a 70 72 6f 63 20 3a return.}..proc :
0900: 3a 76 63 3a 3a 63 76 73 3a 3a 77 73 3a 3a 63 73 :vc::cvs::ws::cs
0910: 65 74 73 3a 3a 43 75 72 72 65 6e 74 3a 3a 45 6d ets::Current::Em
0920: 70 74 79 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72 pty {} {. var
0930: 69 61 62 6c 65 20 73 74 61 72 74 0a 20 20 20 20 iable start.
0940: 72 65 74 75 72 6e 20 5b 65 78 70 72 20 7b 24 73 return [expr {$s
0950: 74 61 72 74 20 65 71 20 22 22 7d 5d 0a 7d 0a 0a tart eq ""}].}..
0960: 70 72 6f 63 20 3a 3a 76 63 3a 3a 63 76 73 3a 3a proc ::vc::cvs::
0970: 77 73 3a 3a 63 73 65 74 73 3a 3a 43 75 72 72 65 ws::csets::Curre
0980: 6e 74 3a 3a 4e 65 77 20 7b 6e 66 69 6c 65 20 6e nt::New {nfile n
0990: 72 65 76 69 73 69 6f 6e 20 6e 61 75 74 68 6f 72 revision nauthor
09a0: 20 6e 63 6d 73 67 7d 20 7b 0a 20 20 20 20 75 70 ncmsg} {. up
09b0: 76 61 72 20 31 20 72 65 61 73 6f 6e 20 72 65 61 var 1 reason rea
09c0: 73 6f 6e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 son. variable
09d0: 20 63 6d 73 67 0a 20 20 20 20 76 61 72 69 61 62 cmsg. variab
09e0: 6c 65 20 61 75 74 68 6f 72 0a 20 20 20 20 76 61 le author. va
09f0: 72 69 61 62 6c 65 20 6c 61 73 74 64 0a 20 20 20 riable lastd.
0a00: 20 76 61 72 69 61 62 6c 65 20 66 69 6c 65 73 0a variable files.
0a10: 0a 20 20 20 20 23 20 55 73 65 72 20 63 68 61 6e . # User chan
0a20: 67 65 0a 20 20 20 20 69 66 20 7b 24 6e 61 75 74 ge. if {$naut
0a30: 68 6f 72 20 6e 65 20 24 61 75 74 68 6f 72 7d 20 hor ne $author}
0a40: 7b 0a 09 73 65 74 20 72 65 61 73 6f 6e 20 75 73 {..set reason us
0a50: 65 72 0a 09 72 65 74 75 72 6e 20 31 0a 20 20 20 er..return 1.
0a60: 20 7d 0a 0a 20 20 20 20 23 20 46 69 6c 65 20 61 }.. # File a
0a70: 6c 72 65 61 64 79 20 69 6e 20 63 75 72 72 65 6e lready in curren
0a80: 74 20 63 73 65 74 0a 20 20 20 20 69 66 20 7b 5b t cset. if {[
0a90: 69 6e 66 6f 20 65 78 69 73 74 73 20 66 69 6c 65 info exists file
0aa0: 73 28 24 6e 66 69 6c 65 29 5d 7d 20 7b 0a 09 73 s($nfile)]} {..s
0ab0: 65 74 20 72 65 61 73 6f 6e 20 66 69 6c 65 0a 09 et reason file..
0ac0: 72 65 74 75 72 6e 20 31 0a 20 20 20 20 7d 0a 0a return 1. }..
0ad0: 20 20 20 20 23 20 43 75 72 72 65 6e 74 20 63 73 # Current cs
0ae0: 65 74 20 74 72 75 6e 6b 2f 62 72 61 6e 63 68 20 et trunk/branch
0af0: 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d 20 65 different from e
0b00: 6e 74 72 79 2e 0a 20 20 20 20 73 65 74 20 6e 64 ntry.. set nd
0b10: 65 70 74 68 20 5b 6c 6c 65 6e 67 74 68 20 5b 73 epth [llength [s
0b20: 70 6c 69 74 20 24 6e 72 65 76 69 73 69 6f 6e 20 plit $nrevision
0b30: 2e 5d 5d 0a 20 20 20 20 69 66 20 7b 28 24 6c 61 .]]. if {($la
0b40: 73 74 64 20 3d 3d 20 32 29 20 21 3d 20 28 24 6e std == 2) != ($n
0b50: 64 65 70 74 68 20 3d 3d 20 32 29 7d 20 7b 0a 09 depth == 2)} {..
0b60: 73 65 74 20 72 65 61 73 6f 6e 20 64 65 70 74 68 set reason depth
0b70: 2f 24 6c 61 73 74 64 2f 24 6e 64 65 70 74 68 2f /$lastd/$ndepth/
0b80: 28 24 6e 72 65 76 69 73 69 6f 6e 29 2f 24 6e 66 ($nrevision)/$nf
0b90: 69 6c 65 0a 09 72 65 74 75 72 6e 20 31 0a 20 20 ile..return 1.
0ba0: 20 20 7d 0a 0a 20 20 20 20 23 20 43 6f 6d 6d 69 }.. # Commi
0bb0: 74 20 6d 65 73 73 61 67 65 20 63 68 61 6e 67 65 t message change
0bc0: 64 0a 20 20 20 20 69 66 20 7b 24 6e 63 6d 73 67 d. if {$ncmsg
0bd0: 20 6e 65 20 24 63 6d 73 67 7d 20 7b 0a 09 73 65 ne $cmsg} {..se
0be0: 74 20 72 65 61 73 6f 6e 20 63 6d 73 67 2f 3c 3c t reason cmsg/<<
0bf0: 24 6e 63 6d 73 67 3e 3e 0a 09 72 65 74 75 72 6e $ncmsg>>..return
0c00: 20 31 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 1. }.. #
0c10: 54 68 65 20 6e 65 77 20 65 6e 74 72 79 20 73 74 The new entry st
0c20: 69 6c 6c 20 62 65 6c 6f 6e 67 73 20 74 6f 20 74 ill belongs to t
0c30: 68 65 20 63 75 72 72 65 6e 74 20 63 68 61 6e 67 he current chang
0c40: 65 73 65 74 0a 20 20 20 20 72 65 74 75 72 6e 20 eset. return
0c50: 30 0a 7d 0a 0a 70 72 6f 63 20 3a 3a 76 63 3a 3a 0.}..proc ::vc::
0c60: 63 76 73 3a 3a 77 73 3a 3a 63 73 65 74 73 3a 3a cvs::ws::csets::
0c70: 43 75 72 72 65 6e 74 3a 3a 41 64 64 20 7b 6e 64 Current::Add {nd
0c80: 61 74 65 20 6e 66 69 6c 65 20 6e 72 65 76 69 73 ate nfile nrevis
0c90: 69 6f 6e 20 6e 6f 70 65 72 61 74 69 6f 6e 20 6e ion noperation n
0ca0: 61 75 74 68 6f 72 20 6e 63 6d 73 67 7d 20 7b 0a author ncmsg} {.
0cb0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 73 74 61 variable sta
0cc0: 72 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 rt. variable
0cd0: 63 6d 73 67 0a 20 20 20 20 76 61 72 69 61 62 6c cmsg. variabl
0ce0: 65 20 61 75 74 68 6f 72 0a 20 20 20 20 76 61 72 e author. var
0cf0: 69 61 62 6c 65 20 6c 61 73 74 64 0a 20 20 20 20 iable lastd.
0d00: 76 61 72 69 61 62 6c 65 20 72 65 6d 6f 76 65 64 variable removed
0d10: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 61 64 . variable ad
0d20: 64 65 64 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ded. variable
0d30: 20 63 68 61 6e 67 65 64 0a 20 20 20 20 76 61 72 changed. var
0d40: 69 61 62 6c 65 20 66 69 6c 65 73 0a 0a 20 20 20 iable files..
0d50: 20 69 66 20 7b 24 73 74 61 72 74 20 65 71 20 22 if {$start eq "
0d60: 22 7d 20 7b 73 65 74 20 73 74 61 72 74 20 24 6e "} {set start $n
0d70: 64 61 74 65 7d 0a 20 20 20 20 73 65 74 20 63 6d date}. set cm
0d80: 73 67 20 20 20 20 20 20 20 20 20 20 24 6e 63 6d sg $ncm
0d90: 73 67 0a 20 20 20 20 73 65 74 20 61 75 74 68 6f sg. set autho
0da0: 72 20 20 20 20 20 20 20 20 24 6e 61 75 74 68 6f r $nautho
0db0: 72 0a 20 20 20 20 73 65 74 20 6c 61 73 74 64 20 r. set lastd
0dc0: 20 20 20 20 20 20 20 20 5b 6c 6c 65 6e 67 74 68 [llength
0dd0: 20 5b 73 70 6c 69 74 20 24 6e 72 65 76 69 73 69 [split $nrevisi
0de0: 6f 6e 20 2e 5d 5d 0a 20 20 20 20 73 65 74 20 66 on .]]. set f
0df0: 69 6c 65 73 28 24 6e 66 69 6c 65 29 20 24 6e 72 iles($nfile) $nr
0e00: 65 76 69 73 69 6f 6e 0a 0a 20 20 20 20 69 66 20 evision.. if
0e10: 7b 24 6e 6f 70 65 72 61 74 69 6f 6e 20 65 71 20 {$noperation eq
0e20: 22 52 22 7d 20 7b 0a 09 6c 61 70 70 65 6e 64 20 "R"} {..lappend
0e30: 72 65 6d 6f 76 65 64 20 24 6e 66 69 6c 65 20 24 removed $nfile $
0e40: 6e 72 65 76 69 73 69 6f 6e 0a 20 20 20 20 7d 20 nrevision. }
0e50: 65 6c 73 65 69 66 20 7b 24 6e 6f 70 65 72 61 74 elseif {$noperat
0e60: 69 6f 6e 20 65 71 20 22 41 22 7d 20 7b 0a 09 6c ion eq "A"} {..l
0e70: 61 70 70 65 6e 64 20 61 64 64 65 64 20 20 20 24 append added $
0e80: 6e 66 69 6c 65 20 24 6e 72 65 76 69 73 69 6f 6e nfile $nrevision
0e90: 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 6c . } else {..l
0ea0: 61 70 70 65 6e 64 20 63 68 61 6e 67 65 64 20 24 append changed $
0eb0: 6e 66 69 6c 65 20 24 6e 72 65 76 69 73 69 6f 6e nfile $nrevision
0ec0: 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 . }. retur
0ed0: 6e 0a 7d 0a 0a 70 72 6f 63 20 3a 3a 76 63 3a 3a n.}..proc ::vc::
0ee0: 63 76 73 3a 3a 77 73 3a 3a 63 73 65 74 73 3a 3a cvs::ws::csets::
0ef0: 43 75 72 72 65 6e 74 3a 3a 43 6f 6d 70 6c 65 74 Current::Complet
0f00: 65 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 e {} {. varia
0f10: 62 6c 65 20 73 74 61 72 74 0a 20 20 20 20 76 61 ble start. va
0f20: 72 69 61 62 6c 65 20 63 6d 73 67 0a 20 20 20 20 riable cmsg.
0f30: 76 61 72 69 61 62 6c 65 20 61 75 74 68 6f 72 0a variable author.
0f40: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c 61 73 variable las
0f50: 74 64 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 td. variable
0f60: 72 65 6d 6f 76 65 64 0a 20 20 20 20 76 61 72 69 removed. vari
0f70: 61 62 6c 65 20 61 64 64 65 64 0a 20 20 20 20 76 able added. v
0f80: 61 72 69 61 62 6c 65 20 63 68 61 6e 67 65 64 0a ariable changed.
0f90: 0a 20 20 20 20 73 65 74 20 72 65 73 20 5b 6c 69 . set res [li
0fa0: 73 74 20 5c 0a 09 09 64 61 74 65 20 20 20 20 24 st \...date $
0fb0: 73 74 61 72 74 20 5c 0a 09 09 61 75 74 68 6f 72 start \...author
0fc0: 20 20 24 61 75 74 68 6f 72 20 5c 0a 09 09 63 6d $author \...cm
0fd0: 73 67 20 20 20 20 24 63 6d 73 67 20 5c 0a 09 09 sg $cmsg \...
0fe0: 72 65 6d 6f 76 65 64 20 24 72 65 6d 6f 76 65 64 removed $removed
0ff0: 20 5c 0a 09 09 61 64 64 65 64 20 20 20 24 61 64 \...added $ad
1000: 64 65 64 20 5c 0a 09 09 63 68 61 6e 67 65 64 20 ded \...changed
1010: 24 63 68 61 6e 67 65 64 20 5c 0a 09 09 6c 61 73 $changed \...las
1020: 74 64 20 20 20 24 6c 61 73 74 64 5d 0a 20 20 20 td $lastd].
1030: 20 43 6c 65 61 72 0a 20 20 20 20 72 65 74 75 72 Clear. retur
1040: 6e 20 24 72 65 73 0a 7d 0a 0a 23 20 2d 2d 2d 2d n $res.}..# ----
1050: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1060: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1070: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1080: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 49 6e 74 65 ---------.# Inte
10a0: 72 6e 61 6c 73 0a 0a 6e 61 6d 65 73 70 61 63 65 rnals..namespace
10b0: 20 65 76 61 6c 20 3a 3a 76 63 3a 3a 63 76 73 3a eval ::vc::cvs:
10c0: 3a 77 73 3a 3a 63 73 65 74 73 20 7b 0a 0a 20 20 :ws::csets {..
10d0: 20 20 23 20 43 73 65 74 20 73 74 6f 72 61 67 65 # Cset storage
10e0: 0a 0a 20 20 20 20 23 20 63 73 65 74 73 3a 20 69 .. # csets: i
10f0: 64 20 2d 3e 20 64 69 63 74 0a 20 20 20 20 23 20 d -> dict. #
1100: 64 69 63 74 3a 20 64 61 74 65 0a 20 20 20 20 23 dict: date. #
1110: 20 20 20 20 20 20 20 61 75 74 68 6f 72 0a 20 20 author.
1120: 20 20 23 20 20 20 20 20 20 20 63 73 6d 67 0a 20 # csmg.
1130: 20 20 20 23 20 20 20 20 20 20 20 72 65 6d 6f 76 # remov
1140: 65 64 0a 20 20 20 20 23 20 20 20 20 20 20 20 61 ed. # a
1150: 64 64 65 64 0a 20 20 20 20 23 20 20 20 20 20 20 dded. #
1160: 20 63 68 61 6e 67 65 64 0a 20 20 20 20 23 20 20 changed. #
1170: 20 20 20 20 20 6c 61 73 74 64 0a 0a 20 20 20 20 lastd..
1180: 76 61 72 69 61 62 6c 65 20 20 6e 63 73 20 20 20 variable ncs
1190: 30 20 20 3b 20 23 20 43 6f 75 6e 74 65 72 20 66 0 ; # Counter f
11a0: 6f 72 20 63 68 61 6e 67 65 73 65 74 73 0a 20 20 or changesets.
11b0: 20 20 76 61 72 69 61 62 6c 65 20 20 63 73 65 74 variable cset
11c0: 73 0a 20 20 20 20 61 72 72 61 79 20 73 65 74 20 s. array set
11d0: 63 73 65 74 73 20 7b 7d 20 3b 20 23 20 43 68 61 csets {} ; # Cha
11e0: 6e 67 65 73 65 74 20 64 61 74 61 0a 0a 20 20 20 ngeset data..
11f0: 20 23 20 44 61 74 61 20 6f 66 20 74 68 65 20 63 # Data of the c
1200: 75 72 72 65 6e 74 20 63 68 61 6e 67 65 73 65 74 urrent changeset
1210: 20 62 75 69 6c 74 20 66 72 6f 6d 20 74 69 6d 65 built from time
1220: 6c 69 6e 65 20 65 6e 74 72 69 65 73 2e 0a 20 20 line entries..
1230: 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c namespace eval
1240: 20 43 75 72 72 65 6e 74 20 7b 0a 09 76 61 72 69 Current {..vari
1250: 61 62 6c 65 20 20 73 74 61 72 74 20 20 20 7b 7d able start {}
1260: 20 3b 20 23 20 64 61 74 65 20 74 68 65 20 63 68 ; # date the ch
1270: 61 6e 67 65 73 65 74 20 62 65 67 69 6e 73 0a 09 angeset begins..
1280: 76 61 72 69 61 62 6c 65 20 20 63 6d 73 67 20 20 variable cmsg
1290: 20 20 7b 7d 20 3b 20 23 20 63 6f 6d 6d 69 74 20 {} ; # commit
12a0: 6d 65 73 73 61 67 65 20 6f 66 20 74 68 65 20 63 message of the c
12b0: 68 61 6e 67 65 73 65 74 0a 09 76 61 72 69 61 62 hangeset..variab
12c0: 6c 65 20 20 61 75 74 68 6f 72 20 20 7b 7d 20 3b le author {} ;
12d0: 20 23 20 75 73 65 72 20 63 72 65 61 74 69 6e 67 # user creating
12e0: 20 74 68 65 20 63 68 61 6e 67 65 73 65 74 0a 09 the changeset..
12f0: 76 61 72 69 61 62 6c 65 20 20 6c 61 73 74 64 20 variable lastd
1300: 20 20 7b 7d 20 3b 20 23 20 76 65 72 73 69 6f 6e {} ; # version
1310: 20 64 65 70 74 68 20 6f 66 20 6c 61 73 74 20 61 depth of last a
1320: 64 64 65 64 20 66 69 6c 65 2e 0a 09 76 61 72 69 dded file...vari
1330: 61 62 6c 65 20 20 72 65 6d 6f 76 65 64 20 7b 7d able removed {}
1340: 20 3b 20 23 20 66 69 6c 65 20 2d 3e 20 72 65 76 ; # file -> rev
1350: 69 73 69 6f 6e 20 6f 66 20 72 65 6d 6f 76 65 64 ision of removed
1360: 20 66 69 6c 65 73 2e 0a 09 76 61 72 69 61 62 6c files...variabl
1370: 65 20 20 61 64 64 65 64 20 20 20 7b 7d 20 3b 20 e added {} ;
1380: 23 20 66 69 6c 65 20 2d 3e 20 72 65 76 69 73 69 # file -> revisi
1390: 6f 6e 20 6f 66 20 61 64 64 65 64 20 66 69 6c 65 on of added file
13a0: 73 2e 0a 09 76 61 72 69 61 62 6c 65 20 20 63 68 s...variable ch
13b0: 61 6e 67 65 64 20 7b 7d 20 3b 20 23 20 66 69 6c anged {} ; # fil
13c0: 65 20 2d 3e 20 72 65 76 69 73 69 6f 6e 20 6f 66 e -> revision of
13d0: 20 6d 6f 64 69 66 69 65 64 20 66 69 6c 65 73 2e modified files.
13e0: 0a 09 76 61 72 69 61 62 6c 65 20 20 66 69 6c 65 ..variable file
13f0: 73 0a 09 61 72 72 61 79 20 73 65 74 20 66 69 6c s..array set fil
1400: 65 73 20 7b 7d 20 20 20 3b 20 23 20 66 69 6c 65 es {} ; # file
1410: 20 2d 3e 20 72 65 76 69 73 69 6f 6e 0a 20 20 20 -> revision.
1420: 20 7d 0a 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 }.. namespac
1430: 65 20 65 78 70 6f 72 74 20 69 6e 69 74 20 61 64 e export init ad
1440: 64 20 64 6f 6e 65 20 67 65 74 20 6e 75 6d 0a 7d d done get num.}
1450: 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ..# ------------
1460: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1470: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1480: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1490: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
14a0: 2d 0a 23 20 52 65 61 64 79 0a 0a 70 61 63 6b 61 -.# Ready..packa
14b0: 67 65 20 70 72 6f 76 69 64 65 20 76 63 3a 3a 63 ge provide vc::c
14c0: 76 73 3a 3a 77 73 3a 3a 63 73 65 74 73 20 31 2e vs::ws::csets 1.
14d0: 30 0a 72 65 74 75 72 6e 0a 0.return.