cvst - smalltalk solutions 2001

22
CVST Cross dialect team development (Camp Smalltalk Demo) Martin Kobetic Smalltalk Solutions 2001

Upload: martin-kobetic

Post on 01-Jul-2015

419 views

Category:

Technology


5 download

DESCRIPTION

CVST: Smalltalk to CVS bridge

TRANSCRIPT

Page 1: CVST - Smalltalk Solutions 2001

CVSTCross dialect team development

(Camp Smalltalk Demo)

Martin KobeticSmalltalk Solutions 2001

Page 2: CVST - Smalltalk 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

Page 3: CVST - Smalltalk Solutions 2001

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

Page 4: CVST - Smalltalk Solutions 2001

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

Page 5: CVST - Smalltalk Solutions 2001

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

Page 6: CVST - Smalltalk Solutions 2001

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

Page 7: CVST - Smalltalk Solutions 2001

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)

Page 8: CVST - Smalltalk Solutions 2001

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)

Page 9: CVST - Smalltalk Solutions 2001

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’

Page 10: CVST - Smalltalk Solutions 2001

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

Page 11: CVST - Smalltalk Solutions 2001

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

Page 12: CVST - Smalltalk Solutions 2001

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

Page 13: CVST - Smalltalk Solutions 2001

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

Page 14: CVST - Smalltalk Solutions 2001

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

Page 15: CVST - Smalltalk Solutions 2001

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

Page 16: CVST - Smalltalk Solutions 2001

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)

Page 17: CVST - Smalltalk Solutions 2001

10/19/10 Smalltalk Solutions 2001 17

CVST: Demonstration

Page 18: CVST - Smalltalk Solutions 2001

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)

Page 19: CVST - Smalltalk Solutions 2001

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 ?

Page 20: CVST - Smalltalk Solutions 2001

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 ?

Page 21: CVST - Smalltalk Solutions 2001

10/19/10 Smalltalk Solutions 2001 21

CVST: Limitations

✔Non-atomic update/commit✔Class-level versioning (granularity)

Page 22: CVST - Smalltalk Solutions 2001

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