Hex Artifact Content
Not logged in

Artifact c6beb0fbbb66803abb0992c32f581b4655a04c5e:

File tools/lib/cvs_csets.tcl part of check-in [a9dcf09124] - Trim the commit messages to remove irrelevant leading and trailing line-endings. by aku on 2007-09-20 07:33:12.

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 76  :init {} {.    v
0350: 61 72 69 61 62 6c 65 20 6e 63 73 20 30 0a 20 20  ariable ncs 0.  
0360: 20 20 43 75 72 72 65 6e 74 3a 3a 43 6c 65 61 72    Current::Clear
0370: 0a 20 20 20 20 72 65 74 75 72 6e 0a 7d 0a 0a 70  .    return.}..p
0380: 72 6f 63 20 3a 3a 76 63 3a 3a 63 76 73 3a 3a 77  roc ::vc::cvs::w
0390: 73 3a 3a 63 73 65 74 73 3a 3a 61 64 64 20 7b 64  s::csets::add {d
03a0: 61 74 65 20 66 69 6c 65 20 72 65 76 69 73 69 6f  ate file revisio
03b0: 6e 20 6f 70 65 72 61 74 69 6f 6e 20 61 75 74 68  n operation auth
03c0: 6f 72 20 63 6d 73 67 7d 20 7b 0a 20 20 20 20 69  or cmsg} {.    i
03d0: 66 20 7b 21 5b 43 75 72 72 65 6e 74 3a 3a 45 6d  f {![Current::Em
03e0: 70 74 79 5d 20 26 26 20 5b 43 75 72 72 65 6e 74  pty] && [Current
03f0: 3a 3a 4e 65 77 20 24 66 69 6c 65 20 24 72 65 76  ::New $file $rev
0400: 69 73 69 6f 6e 20 24 61 75 74 68 6f 72 20 24 63  ision $author $c
0410: 6d 73 67 5d 7d 20 7b 0a 09 53 61 76 65 20 5b 43  msg]} {..Save [C
0420: 75 72 72 65 6e 74 3a 3a 43 6f 6d 70 6c 65 74 65  urrent::Complete
0430: 5d 0a 20 20 20 20 7d 0a 20 20 20 20 43 75 72 72  ].    }.    Curr
0440: 65 6e 74 3a 3a 41 64 64 20 24 64 61 74 65 20 24  ent::Add $date $
0450: 66 69 6c 65 20 24 72 65 76 69 73 69 6f 6e 20 24  file $revision $
0460: 6f 70 65 72 61 74 69 6f 6e 20 24 61 75 74 68 6f  operation $autho
0470: 72 20 24 63 6d 73 67 0a 20 20 20 20 72 65 74 75  r $cmsg.    retu
0480: 72 6e 0a 7d 0a 0a 70 72 6f 63 20 3a 3a 76 63 3a  rn.}..proc ::vc:
0490: 3a 63 76 73 3a 3a 77 73 3a 3a 63 73 65 74 73 3a  :cvs::ws::csets:
04a0: 3a 64 6f 6e 65 20 7b 7d 20 7b 0a 20 20 20 20 69  :done {} {.    i
04b0: 66 20 7b 21 5b 43 75 72 72 65 6e 74 3a 3a 45 6d  f {![Current::Em
04c0: 70 74 79 5d 7d 20 7b 0a 09 53 61 76 65 20 5b 43  pty]} {..Save [C
04d0: 75 72 72 65 6e 74 3a 3a 43 6f 6d 70 6c 65 74 65  urrent::Complete
04e0: 5d 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75  ].    }.    retu
04f0: 72 6e 0a 7d 0a 0a 70 72 6f 63 20 3a 3a 76 63 3a  rn.}..proc ::vc:
0500: 3a 63 76 73 3a 3a 77 73 3a 3a 63 73 65 74 73 3a  :cvs::ws::csets:
0510: 3a 67 65 74 20 7b 69 64 7d 20 7b 0a 20 20 20 20  :get {id} {.    
0520: 76 61 72 69 61 62 6c 65 20 63 73 65 74 73 0a 20  variable csets. 
0530: 20 20 20 72 65 74 75 72 6e 20 20 24 63 73 65 74     return  $cset
0540: 73 28 24 69 64 29 0a 7d 0a 0a 70 72 6f 63 20 3a  s($id).}..proc :
0550: 3a 76 63 3a 3a 63 76 73 3a 3a 77 73 3a 3a 63 73  :vc::cvs::ws::cs
0560: 65 74 73 3a 3a 6e 75 6d 20 7b 7d 20 7b 0a 20 20  ets::num {} {.  
0570: 20 20 76 61 72 69 61 62 6c 65 20 63 73 65 74 73    variable csets
0580: 0a 20 20 20 20 72 65 74 75 72 6e 20 5b 61 72 72  .    return [arr
0590: 61 79 20 73 69 7a 65 20 63 73 65 74 73 5d 0a 7d  ay size csets].}
05a0: 0a 0a 70 72 6f 63 20 3a 3a 76 63 3a 3a 63 76 73  ..proc ::vc::cvs
05b0: 3a 3a 77 73 3a 3a 63 73 65 74 73 3a 3a 69 73 54  ::ws::csets::isT
05c0: 72 75 6e 6b 20 7b 69 64 7d 20 7b 0a 20 20 20 20  runk {id} {.    
05d0: 76 61 72 69 61 62 6c 65 20 63 73 65 74 73 0a 20  variable csets. 
05e0: 20 20 20 61 72 72 61 79 20 73 65 74 20 63 73 20     array set cs 
05f0: 24 63 73 65 74 73 28 24 69 64 29 0a 20 20 20 20  $csets($id).    
0600: 72 65 74 75 72 6e 20 5b 65 78 70 72 20 7b 24 63  return [expr {$c
0610: 73 28 6c 61 73 74 64 29 20 3d 3d 20 32 7d 5d 0a  s(lastd) == 2}].
0620: 7d 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 73 65  s::ws::csets::se
0640: 74 50 61 72 65 6e 74 4f 66 20 7b 69 64 20 70 61  tParentOf {id pa
0650: 72 65 6e 74 7d 20 7b 0a 20 20 20 20 76 61 72 69  rent} {.    vari
0660: 61 62 6c 65 20 63 73 65 74 73 0a 20 20 20 20 6c  able csets.    l
0670: 61 70 70 65 6e 64 20 20 63 73 65 74 73 28 24 69  append  csets($i
0680: 64 29 20 70 61 72 65 6e 74 20 24 70 61 72 65 6e  d) parent $paren
0690: 74 0a 20 20 20 20 72 65 74 75 72 6e 0a 7d 0a 0a  t.    return.}..
06a0: 70 72 6f 63 20 3a 3a 76 63 3a 3a 63 76 73 3a 3a  proc ::vc::cvs::
06b0: 77 73 3a 3a 63 73 65 74 73 3a 3a 70 61 72 65 6e  ws::csets::paren
06c0: 74 4f 66 20 7b 69 64 7d 20 7b 0a 20 20 20 20 76  tOf {id} {.    v
06d0: 61 72 69 61 62 6c 65 20 20 20 20 20 20 63 73 65  ariable      cse
06e0: 74 73 0a 20 20 20 20 61 72 72 61 79 20 73 65 74  ts.    array set
06f0: 20 63 73 20 24 63 73 65 74 73 28 24 69 64 29 0a   cs $csets($id).
0700: 20 20 20 20 72 65 74 75 72 6e 20 20 20 24 63 73      return   $cs
0710: 28 70 61 72 65 6e 74 29 0a 7d 0a 0a 23 20 2d 2d  (parent).}..# --
0720: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0730: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0740: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0750: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0760: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 49 6e  -----------.# In
0770: 74 65 72 6e 61 6c 20 68 65 6c 70 65 72 20 63 6f  ternal helper co
0780: 6d 6d 61 6e 64 73 3a 20 43 68 61 6e 67 65 73 65  mmands: Changese
0790: 74 20 69 6e 73 70 65 63 74 69 6f 6e 20 61 6e 64  t inspection and
07a0: 20 63 6f 6e 73 74 72 75 63 74 69 6f 6e 2e 0a 0a   construction...
07b0: 70 72 6f 63 20 3a 3a 76 63 3a 3a 63 76 73 3a 3a  proc ::vc::cvs::
07c0: 77 73 3a 3a 63 73 65 74 73 3a 3a 53 61 76 65 20  ws::csets::Save 
07d0: 7b 64 61 74 61 7d 20 7b 0a 20 20 20 20 76 61 72  {data} {.    var
07e0: 69 61 62 6c 65 20 63 73 65 74 73 0a 20 20 20 20  iable csets.    
07f0: 76 61 72 69 61 62 6c 65 20 6e 63 73 0a 0a 20 20  variable ncs..  
0800: 20 20 73 65 74 20 63 73 65 74 73 28 24 6e 63 73    set csets($ncs
0810: 29 20 24 64 61 74 61 0a 20 20 20 20 69 6e 63 72  ) $data.    incr
0820: 20 6e 63 73 0a 20 20 20 20 72 65 74 75 72 6e 0a   ncs.    return.
0830: 7d 0a 0a 70 72 6f 63 20 3a 3a 76 63 3a 3a 63 76  }..proc ::vc::cv
0840: 73 3a 3a 77 73 3a 3a 63 73 65 74 73 3a 3a 43 75  s::ws::csets::Cu
0850: 72 72 65 6e 74 3a 3a 43 6c 65 61 72 20 7b 7d 20  rrent::Clear {} 
0860: 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 20  {.    variable  
0870: 20 20 73 74 61 72 74 20 20 20 7b 7d 20 3b 20 23    start   {} ; #
0880: 20 64 61 74 65 20 74 68 65 20 63 68 61 6e 67 65   date the change
0890: 73 65 74 20 62 65 67 69 6e 73 0a 20 20 20 20 76  set begins.    v
08a0: 61 72 69 61 62 6c 65 20 20 20 20 63 6d 73 67 20  ariable    cmsg 
08b0: 20 20 20 7b 7d 20 3b 20 23 20 63 6f 6d 6d 69 74     {} ; # commit
08c0: 20 6d 65 73 73 61 67 65 20 6f 66 20 74 68 65 20   message of the 
08d0: 63 68 61 6e 67 65 73 65 74 0a 20 20 20 20 76 61  changeset.    va
08e0: 72 69 61 62 6c 65 20 20 20 20 61 75 74 68 6f 72  riable    author
08f0: 20 20 7b 7d 20 3b 20 23 20 75 73 65 72 20 63 72    {} ; # user cr
0900: 65 61 74 69 6e 67 20 74 68 65 20 63 68 61 6e 67  eating the chang
0910: 65 73 65 74 0a 20 20 20 20 76 61 72 69 61 62 6c  eset.    variabl
0920: 65 20 20 20 20 6c 61 73 74 64 20 20 20 7b 7d 20  e    lastd   {} 
0930: 3b 20 23 20 76 65 72 73 69 6f 6e 20 64 65 70 74  ; # version dept
0940: 68 20 6f 66 20 6c 61 73 74 20 61 64 64 65 64 20  h of last added 
0950: 66 69 6c 65 2e 0a 20 20 20 20 76 61 72 69 61 62  file..    variab
0960: 6c 65 20 20 20 20 72 65 6d 6f 76 65 64 20 7b 7d  le    removed {}
0970: 20 3b 20 23 20 66 69 6c 65 20 2d 3e 20 72 65 76   ; # file -> rev
0980: 69 73 69 6f 6e 20 6f 66 20 72 65 6d 6f 76 65 64  ision of removed
0990: 20 66 69 6c 65 73 2e 0a 20 20 20 20 76 61 72 69   files..    vari
09a0: 61 62 6c 65 20 20 20 20 61 64 64 65 64 20 20 20  able    added   
09b0: 7b 7d 20 3b 20 23 20 66 69 6c 65 20 2d 3e 20 72  {} ; # file -> r
09c0: 65 76 69 73 69 6f 6e 20 6f 66 20 61 64 64 65 64  evision of added
09d0: 20 66 69 6c 65 73 2e 0a 20 20 20 20 76 61 72 69   files..    vari
09e0: 61 62 6c 65 20 20 20 20 63 68 61 6e 67 65 64 20  able    changed 
09f0: 7b 7d 20 3b 20 23 20 66 69 6c 65 20 2d 3e 20 72  {} ; # file -> r
0a00: 65 76 69 73 69 6f 6e 20 6f 66 20 6d 6f 64 69 66  evision of modif
0a10: 69 65 64 20 66 69 6c 65 73 2e 0a 20 20 20 20 76  ied files..    v
0a20: 61 72 69 61 62 6c 65 20 20 20 20 66 69 6c 65 73  ariable    files
0a30: 0a 20 20 20 20 61 72 72 61 79 20 75 6e 73 65 74  .    array unset
0a40: 20 66 69 6c 65 73 20 2a 0a 20 20 20 20 61 72 72   files *.    arr
0a50: 61 79 20 73 65 74 20 20 20 66 69 6c 65 73 20 7b  ay set   files {
0a60: 7d 20 20 20 3b 20 23 20 66 69 6c 65 20 2d 3e 20  }   ; # file -> 
0a70: 72 65 76 69 73 69 6f 6e 0a 20 20 20 20 72 65 74  revision.    ret
0a80: 75 72 6e 0a 7d 0a 0a 70 72 6f 63 20 3a 3a 76 63  urn.}..proc ::vc
0a90: 3a 3a 63 76 73 3a 3a 77 73 3a 3a 63 73 65 74 73  ::cvs::ws::csets
0aa0: 3a 3a 43 75 72 72 65 6e 74 3a 3a 45 6d 70 74 79  ::Current::Empty
0ab0: 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62   {} {.    variab
0ac0: 6c 65 20 73 74 61 72 74 0a 20 20 20 20 72 65 74  le start.    ret
0ad0: 75 72 6e 20 5b 65 78 70 72 20 7b 24 73 74 61 72  urn [expr {$star
0ae0: 74 20 65 71 20 22 22 7d 5d 0a 7d 0a 0a 70 72 6f  t eq ""}].}..pro
0af0: 63 20 3a 3a 76 63 3a 3a 63 76 73 3a 3a 77 73 3a  c ::vc::cvs::ws:
0b00: 3a 63 73 65 74 73 3a 3a 43 75 72 72 65 6e 74 3a  :csets::Current:
0b10: 3a 4e 65 77 20 7b 6e 66 69 6c 65 20 6e 72 65 76  :New {nfile nrev
0b20: 69 73 69 6f 6e 20 6e 61 75 74 68 6f 72 20 6e 63  ision nauthor nc
0b30: 6d 73 67 7d 20 7b 0a 20 20 20 20 75 70 76 61 72  msg} {.    upvar
0b40: 20 31 20 72 65 61 73 6f 6e 20 72 65 61 73 6f 6e   1 reason reason
0b50: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 6d  .    variable cm
0b60: 73 67 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  sg.    variable 
0b70: 61 75 74 68 6f 72 0a 20 20 20 20 76 61 72 69 61  author.    varia
0b80: 62 6c 65 20 6c 61 73 74 64 0a 20 20 20 20 76 61  ble lastd.    va
0b90: 72 69 61 62 6c 65 20 66 69 6c 65 73 0a 0a 20 20  riable files..  
0ba0: 20 20 23 20 55 73 65 72 20 63 68 61 6e 67 65 0a    # User change.
0bb0: 20 20 20 20 69 66 20 7b 24 6e 61 75 74 68 6f 72      if {$nauthor
0bc0: 20 6e 65 20 24 61 75 74 68 6f 72 7d 20 7b 0a 09   ne $author} {..
0bd0: 73 65 74 20 72 65 61 73 6f 6e 20 75 73 65 72 0a  set reason user.
0be0: 09 72 65 74 75 72 6e 20 31 0a 20 20 20 20 7d 0a  .return 1.    }.
0bf0: 0a 20 20 20 20 23 20 46 69 6c 65 20 61 6c 72 65  .    # File alre
0c00: 61 64 79 20 69 6e 20 63 75 72 72 65 6e 74 20 63  ady in current c
0c10: 73 65 74 0a 20 20 20 20 69 66 20 7b 5b 69 6e 66  set.    if {[inf
0c20: 6f 20 65 78 69 73 74 73 20 66 69 6c 65 73 28 24  o exists files($
0c30: 6e 66 69 6c 65 29 5d 7d 20 7b 0a 09 73 65 74 20  nfile)]} {..set 
0c40: 72 65 61 73 6f 6e 20 66 69 6c 65 0a 09 72 65 74  reason file..ret
0c50: 75 72 6e 20 31 0a 20 20 20 20 7d 0a 0a 20 20 20  urn 1.    }..   
0c60: 20 23 20 43 75 72 72 65 6e 74 20 63 73 65 74 20   # Current cset 
0c70: 74 72 75 6e 6b 2f 62 72 61 6e 63 68 20 64 69 66  trunk/branch dif
0c80: 66 65 72 65 6e 74 20 66 72 6f 6d 20 65 6e 74 72  ferent from entr
0c90: 79 2e 0a 20 20 20 20 73 65 74 20 6e 64 65 70 74  y..    set ndept
0ca0: 68 20 5b 6c 6c 65 6e 67 74 68 20 5b 73 70 6c 69  h [llength [spli
0cb0: 74 20 24 6e 72 65 76 69 73 69 6f 6e 20 2e 5d 5d  t $nrevision .]]
0cc0: 0a 20 20 20 20 69 66 20 7b 28 24 6c 61 73 74 64  .    if {($lastd
0cd0: 20 3d 3d 20 32 29 20 21 3d 20 28 24 6e 64 65 70   == 2) != ($ndep
0ce0: 74 68 20 3d 3d 20 32 29 7d 20 7b 0a 09 73 65 74  th == 2)} {..set
0cf0: 20 72 65 61 73 6f 6e 20 64 65 70 74 68 2f 24 6c   reason depth/$l
0d00: 61 73 74 64 2f 24 6e 64 65 70 74 68 2f 28 24 6e  astd/$ndepth/($n
0d10: 72 65 76 69 73 69 6f 6e 29 2f 24 6e 66 69 6c 65  revision)/$nfile
0d20: 0a 09 72 65 74 75 72 6e 20 31 0a 20 20 20 20 7d  ..return 1.    }
0d30: 0a 0a 20 20 20 20 23 20 43 6f 6d 6d 69 74 20 6d  ..    # Commit m
0d40: 65 73 73 61 67 65 20 63 68 61 6e 67 65 64 0a 20  essage changed. 
0d50: 20 20 20 69 66 20 7b 24 6e 63 6d 73 67 20 6e 65     if {$ncmsg ne
0d60: 20 24 63 6d 73 67 7d 20 7b 0a 09 73 65 74 20 72   $cmsg} {..set r
0d70: 65 61 73 6f 6e 20 63 6d 73 67 2f 3c 3c 24 6e 63  eason cmsg/<<$nc
0d80: 6d 73 67 3e 3e 0a 09 72 65 74 75 72 6e 20 31 0a  msg>>..return 1.
0d90: 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 54 68 65      }..    # The
0da0: 20 6e 65 77 20 65 6e 74 72 79 20 73 74 69 6c 6c   new entry still
0db0: 20 62 65 6c 6f 6e 67 73 20 74 6f 20 74 68 65 20   belongs to the 
0dc0: 63 75 72 72 65 6e 74 20 63 68 61 6e 67 65 73 65  current changese
0dd0: 74 0a 20 20 20 20 72 65 74 75 72 6e 20 30 0a 7d  t.    return 0.}
0de0: 0a 0a 70 72 6f 63 20 3a 3a 76 63 3a 3a 63 76 73  ..proc ::vc::cvs
0df0: 3a 3a 77 73 3a 3a 63 73 65 74 73 3a 3a 43 75 72  ::ws::csets::Cur
0e00: 72 65 6e 74 3a 3a 41 64 64 20 7b 6e 64 61 74 65  rent::Add {ndate
0e10: 20 6e 66 69 6c 65 20 6e 72 65 76 69 73 69 6f 6e   nfile nrevision
0e20: 20 6e 6f 70 65 72 61 74 69 6f 6e 20 6e 61 75 74   noperation naut
0e30: 68 6f 72 20 6e 63 6d 73 67 7d 20 7b 0a 20 20 20  hor ncmsg} {.   
0e40: 20 76 61 72 69 61 62 6c 65 20 73 74 61 72 74 0a   variable start.
0e50: 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 6d 73      variable cms
0e60: 67 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 61  g.    variable a
0e70: 75 74 68 6f 72 0a 20 20 20 20 76 61 72 69 61 62  uthor.    variab
0e80: 6c 65 20 6c 61 73 74 64 0a 20 20 20 20 76 61 72  le lastd.    var
0e90: 69 61 62 6c 65 20 72 65 6d 6f 76 65 64 0a 20 20  iable removed.  
0ea0: 20 20 76 61 72 69 61 62 6c 65 20 61 64 64 65 64    variable added
0eb0: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 68  .    variable ch
0ec0: 61 6e 67 65 64 0a 20 20 20 20 76 61 72 69 61 62  anged.    variab
0ed0: 6c 65 20 66 69 6c 65 73 0a 0a 20 20 20 20 69 66  le files..    if
0ee0: 20 7b 24 73 74 61 72 74 20 65 71 20 22 22 7d 20   {$start eq ""} 
0ef0: 7b 73 65 74 20 73 74 61 72 74 20 24 6e 64 61 74  {set start $ndat
0f00: 65 7d 0a 20 20 20 20 73 65 74 20 63 6d 73 67 20  e}.    set cmsg 
0f10: 20 20 20 20 20 20 20 20 20 24 6e 63 6d 73 67 0a           $ncmsg.
0f20: 20 20 20 20 73 65 74 20 61 75 74 68 6f 72 20 20      set author  
0f30: 20 20 20 20 20 20 24 6e 61 75 74 68 6f 72 0a 20        $nauthor. 
0f40: 20 20 20 73 65 74 20 6c 61 73 74 64 20 20 20 20     set lastd    
0f50: 20 20 20 20 20 5b 6c 6c 65 6e 67 74 68 20 5b 73       [llength [s
0f60: 70 6c 69 74 20 24 6e 72 65 76 69 73 69 6f 6e 20  plit $nrevision 
0f70: 2e 5d 5d 0a 20 20 20 20 73 65 74 20 66 69 6c 65  .]].    set file
0f80: 73 28 24 6e 66 69 6c 65 29 20 24 6e 72 65 76 69  s($nfile) $nrevi
0f90: 73 69 6f 6e 0a 0a 20 20 20 20 69 66 20 7b 24 6e  sion..    if {$n
0fa0: 6f 70 65 72 61 74 69 6f 6e 20 65 71 20 22 52 22  operation eq "R"
0fb0: 7d 20 7b 0a 09 6c 61 70 70 65 6e 64 20 72 65 6d  } {..lappend rem
0fc0: 6f 76 65 64 20 24 6e 66 69 6c 65 20 24 6e 72 65  oved $nfile $nre
0fd0: 76 69 73 69 6f 6e 0a 20 20 20 20 7d 20 65 6c 73  vision.    } els
0fe0: 65 69 66 20 7b 24 6e 6f 70 65 72 61 74 69 6f 6e  eif {$noperation
0ff0: 20 65 71 20 22 41 22 7d 20 7b 0a 09 6c 61 70 70   eq "A"} {..lapp
1000: 65 6e 64 20 61 64 64 65 64 20 20 20 24 6e 66 69  end added   $nfi
1010: 6c 65 20 24 6e 72 65 76 69 73 69 6f 6e 0a 20 20  le $nrevision.  
1020: 20 20 7d 20 65 6c 73 65 20 7b 0a 09 6c 61 70 70    } else {..lapp
1030: 65 6e 64 20 63 68 61 6e 67 65 64 20 24 6e 66 69  end changed $nfi
1040: 6c 65 20 24 6e 72 65 76 69 73 69 6f 6e 0a 20 20  le $nrevision.  
1050: 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 0a 7d    }.    return.}
1060: 0a 0a 70 72 6f 63 20 3a 3a 76 63 3a 3a 63 76 73  ..proc ::vc::cvs
1070: 3a 3a 77 73 3a 3a 63 73 65 74 73 3a 3a 43 75 72  ::ws::csets::Cur
1080: 72 65 6e 74 3a 3a 43 6f 6d 70 6c 65 74 65 20 7b  rent::Complete {
1090: 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65  } {.    variable
10a0: 20 73 74 61 72 74 0a 20 20 20 20 76 61 72 69 61   start.    varia
10b0: 62 6c 65 20 63 6d 73 67 0a 20 20 20 20 76 61 72  ble cmsg.    var
10c0: 69 61 62 6c 65 20 61 75 74 68 6f 72 0a 20 20 20  iable author.   
10d0: 20 76 61 72 69 61 62 6c 65 20 6c 61 73 74 64 0a   variable lastd.
10e0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 72 65 6d      variable rem
10f0: 6f 76 65 64 0a 20 20 20 20 76 61 72 69 61 62 6c  oved.    variabl
1100: 65 20 61 64 64 65 64 0a 20 20 20 20 76 61 72 69  e added.    vari
1110: 61 62 6c 65 20 63 68 61 6e 67 65 64 0a 0a 20 20  able changed..  
1120: 20 20 73 65 74 20 72 65 73 20 5b 6c 69 73 74 20    set res [list 
1130: 5c 0a 09 09 64 61 74 65 20 20 20 20 24 73 74 61  \...date    $sta
1140: 72 74 20 5c 0a 09 09 61 75 74 68 6f 72 20 20 24  rt \...author  $
1150: 61 75 74 68 6f 72 20 5c 0a 09 09 63 6d 73 67 20  author \...cmsg 
1160: 20 20 20 5b 73 74 72 69 6e 67 20 74 72 69 6d 20     [string trim 
1170: 24 63 6d 73 67 5d 20 5c 0a 09 09 72 65 6d 6f 76  $cmsg] \...remov
1180: 65 64 20 24 72 65 6d 6f 76 65 64 20 5c 0a 09 09  ed $removed \...
1190: 61 64 64 65 64 20 20 20 24 61 64 64 65 64 20 5c  added   $added \
11a0: 0a 09 09 63 68 61 6e 67 65 64 20 24 63 68 61 6e  ...changed $chan
11b0: 67 65 64 20 5c 0a 09 09 6c 61 73 74 64 20 20 20  ged \...lastd   
11c0: 24 6c 61 73 74 64 5d 0a 20 20 20 20 43 6c 65 61  $lastd].    Clea
11d0: 72 0a 20 20 20 20 72 65 74 75 72 6e 20 24 72 65  r.    return $re
11e0: 73 0a 7d 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d  s.}..# ---------
11f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1200: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1210: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1220: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1230: 2d 2d 2d 2d 0a 23 20 49 6e 74 65 72 6e 61 6c 73  ----.# Internals
1240: 0a 0a 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c  ..namespace eval
1250: 20 3a 3a 76 63 3a 3a 63 76 73 3a 3a 77 73 3a 3a   ::vc::cvs::ws::
1260: 63 73 65 74 73 20 7b 0a 0a 20 20 20 20 23 20 43  csets {..    # C
1270: 73 65 74 20 73 74 6f 72 61 67 65 0a 0a 20 20 20  set storage..   
1280: 20 23 20 63 73 65 74 73 3a 20 69 64 20 2d 3e 20   # csets: id -> 
1290: 64 69 63 74 0a 20 20 20 20 23 20 64 69 63 74 3a  dict.    # dict:
12a0: 20 64 61 74 65 0a 20 20 20 20 23 20 20 20 20 20   date.    #     
12b0: 20 20 61 75 74 68 6f 72 0a 20 20 20 20 23 20 20    author.    #  
12c0: 20 20 20 20 20 63 73 6d 67 0a 20 20 20 20 23 20       csmg.    # 
12d0: 20 20 20 20 20 20 72 65 6d 6f 76 65 64 0a 20 20        removed.  
12e0: 20 20 23 20 20 20 20 20 20 20 61 64 64 65 64 0a    #       added.
12f0: 20 20 20 20 23 20 20 20 20 20 20 20 63 68 61 6e      #       chan
1300: 67 65 64 0a 20 20 20 20 23 20 20 20 20 20 20 20  ged.    #       
1310: 6c 61 73 74 64 0a 0a 20 20 20 20 76 61 72 69 61  lastd..    varia
1320: 62 6c 65 20 20 6e 63 73 20 20 20 30 20 20 3b 20  ble  ncs   0  ; 
1330: 23 20 43 6f 75 6e 74 65 72 20 66 6f 72 20 63 68  # Counter for ch
1340: 61 6e 67 65 73 65 74 73 0a 20 20 20 20 76 61 72  angesets.    var
1350: 69 61 62 6c 65 20 20 63 73 65 74 73 0a 20 20 20  iable  csets.   
1360: 20 61 72 72 61 79 20 73 65 74 20 63 73 65 74 73   array set csets
1370: 20 7b 7d 20 3b 20 23 20 43 68 61 6e 67 65 73 65   {} ; # Changese
1380: 74 20 64 61 74 61 0a 0a 20 20 20 20 23 20 44 61  t data..    # Da
1390: 74 61 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  ta of the curren
13a0: 74 20 63 68 61 6e 67 65 73 65 74 20 62 75 69 6c  t changeset buil
13b0: 74 20 66 72 6f 6d 20 74 69 6d 65 6c 69 6e 65 20  t from timeline 
13c0: 65 6e 74 72 69 65 73 2e 0a 20 20 20 20 6e 61 6d  entries..    nam
13d0: 65 73 70 61 63 65 20 65 76 61 6c 20 43 75 72 72  espace eval Curr
13e0: 65 6e 74 20 7b 0a 09 76 61 72 69 61 62 6c 65 20  ent {..variable 
13f0: 20 73 74 61 72 74 20 20 20 7b 7d 20 3b 20 23 20   start   {} ; # 
1400: 64 61 74 65 20 74 68 65 20 63 68 61 6e 67 65 73  date the changes
1410: 65 74 20 62 65 67 69 6e 73 0a 09 76 61 72 69 61  et begins..varia
1420: 62 6c 65 20 20 63 6d 73 67 20 20 20 20 7b 7d 20  ble  cmsg    {} 
1430: 3b 20 23 20 63 6f 6d 6d 69 74 20 6d 65 73 73 61  ; # commit messa
1440: 67 65 20 6f 66 20 74 68 65 20 63 68 61 6e 67 65  ge of the change
1450: 73 65 74 0a 09 76 61 72 69 61 62 6c 65 20 20 61  set..variable  a
1460: 75 74 68 6f 72 20 20 7b 7d 20 3b 20 23 20 75 73  uthor  {} ; # us
1470: 65 72 20 63 72 65 61 74 69 6e 67 20 74 68 65 20  er creating the 
1480: 63 68 61 6e 67 65 73 65 74 0a 09 76 61 72 69 61  changeset..varia
1490: 62 6c 65 20 20 6c 61 73 74 64 20 20 20 7b 7d 20  ble  lastd   {} 
14a0: 3b 20 23 20 76 65 72 73 69 6f 6e 20 64 65 70 74  ; # version dept
14b0: 68 20 6f 66 20 6c 61 73 74 20 61 64 64 65 64 20  h of last added 
14c0: 66 69 6c 65 2e 0a 09 76 61 72 69 61 62 6c 65 20  file...variable 
14d0: 20 72 65 6d 6f 76 65 64 20 7b 7d 20 3b 20 23 20   removed {} ; # 
14e0: 66 69 6c 65 20 2d 3e 20 72 65 76 69 73 69 6f 6e  file -> revision
14f0: 20 6f 66 20 72 65 6d 6f 76 65 64 20 66 69 6c 65   of removed file
1500: 73 2e 0a 09 76 61 72 69 61 62 6c 65 20 20 61 64  s...variable  ad
1510: 64 65 64 20 20 20 7b 7d 20 3b 20 23 20 66 69 6c  ded   {} ; # fil
1520: 65 20 2d 3e 20 72 65 76 69 73 69 6f 6e 20 6f 66  e -> revision of
1530: 20 61 64 64 65 64 20 66 69 6c 65 73 2e 0a 09 76   added files...v
1540: 61 72 69 61 62 6c 65 20 20 63 68 61 6e 67 65 64  ariable  changed
1550: 20 7b 7d 20 3b 20 23 20 66 69 6c 65 20 2d 3e 20   {} ; # file -> 
1560: 72 65 76 69 73 69 6f 6e 20 6f 66 20 6d 6f 64 69  revision of modi
1570: 66 69 65 64 20 66 69 6c 65 73 2e 0a 09 76 61 72  fied files...var
1580: 69 61 62 6c 65 20 20 66 69 6c 65 73 0a 09 61 72  iable  files..ar
1590: 72 61 79 20 73 65 74 20 66 69 6c 65 73 20 7b 7d  ray set files {}
15a0: 20 20 20 3b 20 23 20 66 69 6c 65 20 2d 3e 20 72     ; # file -> r
15b0: 65 76 69 73 69 6f 6e 0a 20 20 20 20 7d 0a 0a 20  evision.    }.. 
15c0: 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 78 70     namespace exp
15d0: 6f 72 74 20 69 6e 69 74 20 61 64 64 20 64 6f 6e  ort init add don
15e0: 65 20 67 65 74 20 6e 75 6d 20 69 73 54 72 75 6e  e get num isTrun
15f0: 6b 20 73 65 74 50 61 72 65 6e 74 4f 66 20 70 61  k setParentOf pa
1600: 72 65 6e 74 4f 66 0a 7d 0a 0a 23 20 2d 2d 2d 2d  rentOf.}..# ----
1610: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1620: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1630: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1640: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1650: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 52 65 61 64  ---------.# Read
1660: 79 0a 0a 70 61 63 6b 61 67 65 20 70 72 6f 76 69  y..package provi
1670: 64 65 20 76 63 3a 3a 63 76 73 3a 3a 77 73 3a 3a  de vc::cvs::ws::
1680: 63 73 65 74 73 20 31 2e 30 0a 72 65 74 75 72 6e  csets 1.0.return
1690: 0a                                               .