CVSTCross dialect team development
(Camp Smalltalk Demo)
Martin KobeticSmalltalk Solutions 2001
10/19/10 Smalltalk Solutions 2001 2
Bits of History
✔Roots– sqcvs (Squeak) = cvs client implementation– CVSTProject (VW3) = st/cvs bridge
✔Merged as CVST (February 2000)✔cvstproj (former CVSTProject)
– 0.5 (March 2000) - portable– 0.6 (July 2000) - VW & Squeak
10/19/10 Smalltalk Solutions 2001 3
CVS: In a Nutshell
✔Versioning of directory trees with text files✔Concurrent merge/commit model✔Network or file system access to repository✔Programming language independent✔Widely used (sourceforge.net)✔Open-source
10/19/10 Smalltalk Solutions 2001 4
CVS: Dissected
✔Working copy (checkout, release)– A copy of the source tree– Supporting CVS subdirectories
✔Repository (init, import, export, admin)– Source trees with RCS files– cvsroot directory with configuration files
✔update, commit, add, remove, tag, diff
10/19/10 Smalltalk Solutions 2001 5
CVS: Unleashed
✔Branching and merging(tag -b, update -j)
✔Modules (file & directory grouping)✔History logging and browsing
(log, history, annotate, status)✔Semi-reserved check-outs
(watch add/remove, edit, unedit)✔Customized commit, update and tag actions
10/19/10 Smalltalk Solutions 2001 6
CVS: Strikes Back
✔Rename or move => add and remove✔Naive differencing algorithm
(diffs don’t respect chunk boundaries)✔Hardwired conflict marking mechanism✔Non-conformant directory handling✔Limited binary file support
10/19/10 Smalltalk Solutions 2001 7
CVS & ST: Issues
✔ST file-outs change too much(alphabetic ordering)
✔Reasonable file granularity(class files)
✔Mapping the directory structure(directory ~ parcel/package/changeset/...)
✔File ordering constraints(order class files before loading)
10/19/10 Smalltalk Solutions 2001 8
ST & ST: Issues
✔Source code format(SIF, XML?, …)
✔Tool portability✔Base library compatibility
(ANSI, Camp Smalltalk)✔Language level compatibility
(Namespaces vs. Class & Pool vars)
10/19/10 Smalltalk Solutions 2001 9
CVST: Participating Parties
✔ Project (Thingy)– Package (Core)
• Class A
• Class B
– Package (Tools)• Class C
• ClassExtension B
– Package (Support)• Class D
• ClassExtension X
✔ Root Dir ‘Thingy’– Directory ‘Core’
• ClassFile ‘A.cls’
• ClassFile ‘B.cls’
– Directory ‘Tools’• ClassFile ‘C.cls’
• ClassFile ‘B.cls’
– Directory ‘Support’• ClassFile ‘D.cls’
• ClassFile ‘X.cls’
10/19/10 Smalltalk Solutions 2001 10
SourceController
CVST: Infrastructure
C l a s s AC l a s s B
P a c k a g e C o r e
C l a s s CC l a s s B ( E x t )
P a c k a g e T o o l s
I m a g e
A . c l sB . c l s
D i r C o r e
C . c l sB . c l s
D i r T o o l s
D i r T h i n g y
SourceCodec
SystemController
ModuleCore
ModuleTools
ProjectThingy
10/19/10 Smalltalk Solutions 2001 11
CVST: Operations
✔Compute Diffs– between directories and packages
✔Update– state from directories into packages
✔Commit– state from packages into directories
10/19/10 Smalltalk Solutions 2001 12
CVST: Development Cycle
✔I) Update– cvs update & project update
✔II) Development– project commit
✔III) Merge– cvs update [ & project update ]
✔IV) Commit– [ project commit & ] cvs commit
10/19/10 Smalltalk Solutions 2001 13
CVST: Update
✔Goal: Update the image with the latest state in the repository
✔Process: (very simple)– cvs update– project update
✔Issues:– none
10/19/10 Smalltalk Solutions 2001 14
CVST: Development
✔Goal: Make some progress✔Process:
– usual smalltalk development– project commit– issue necessary cvs add/remove commands
✔Issues:– manual add/remove is tedious and error prone
10/19/10 Smalltalk Solutions 2001 15
CVST: Merge
✔Goal: Merge changes with the latest state in the repository
✔Process:– cvs update (source files merged)– if conflicts => resolve– project update (image state merged)
✔Issues:– conflict makes .cls file unloadable
10/19/10 Smalltalk Solutions 2001 16
CVST: Commit
✔Goal: Bring the changes into the repository✔Process:
– cvs commit
✔Issues:– none (thanks to merge phase)
10/19/10 Smalltalk Solutions 2001 17
CVST: Demonstration
10/19/10 Smalltalk Solutions 2001 18
CVST: Yes!
✔Cross-dialect development (VW & Squeak)✔Cross-language development (ST & C)✔Long distance development (Sourceforge)✔Low maintenance (Filesystem)✔High customizability (Simple)✔File based VC required (not limited to
CVS)
10/19/10 Smalltalk Solutions 2001 19
CVST: No!
✔Single dialect with a solution (ENVY, StORE)
✔Don’t want to learn using a file based VC✔High component movement ?✔Very large projects ?
10/19/10 Smalltalk Solutions 2001 20
CVST: To do
✔More ports (Dolphin coming)✔UI for all platforms (not just VW)✔Integrated conflict resolution✔Hierarchical modules✔XML format, other formats ?✔Integrated CVS client ?✔More field testing ?
10/19/10 Smalltalk Solutions 2001 21
CVST: Limitations
✔Non-atomic update/commit✔Class-level versioning (granularity)
10/19/10 Smalltalk Solutions 2001 22
CVST: Credentials
✔sqcvs– Squeak - Goran Hultgren
✔cvstproj– VW - Martin Kobetic– Squeak - Mark A. Schwenk, Gerardo Richarte– Dolphin (coming) - Joey Gibson
✔CU @ http://cvstproj.sourceforge.net
Top Related