CVST Cross dialect team development (Camp Smalltalk Demo) Martin Kobetic Smalltalk Solutions 2001
Bits of History <ul><li>Roots </li></ul><ul><ul><li>sqcvs (Squeak) = cvs client implementation </li></ul></ul><ul><ul><li>...
CVS: In a Nutshell <ul><li>Versioning of directory trees with text files </li></ul><ul><li>Concurrent merge/commit model <...
CVS: Dissected <ul><li>Working copy (checkout, release) </li></ul><ul><ul><li>A copy of the source tree </li></ul></ul><ul...
CVS: Unleashed <ul><li>Branching and merging (tag -b, update -j) </li></ul><ul><li>Modules (file & directory grouping) </l...
CVS: Strikes Back <ul><li>Rename or move => add and remove </li></ul><ul><li>Naive differencing algorithm (diffs don’t res...
CVS & ST: Issues <ul><li>ST file-outs change too much (alphabetic ordering) </li></ul><ul><li>Reasonable file granularity ...
ST & ST: Issues <ul><li>Source code format (SIF, XML?, …) </li></ul><ul><li>Tool portability </li></ul><ul><li>Base librar...
CVST: Participating Parties <ul><li>Project (Thingy) </li></ul><ul><ul><li>Package (Core) </li></ul></ul><ul><ul><ul><li>C...
CVST: Infrastructure SourceController SourceCodec SystemController Module Core Module Tools Project Thingy
CVST: Operations <ul><li>Compute Diffs </li></ul><ul><ul><li>between directories and packages </li></ul></ul><ul><li>Updat...
CVST: Development Cycle <ul><li>I) Update </li></ul><ul><ul><li>cvs update & project update </li></ul></ul><ul><li>II) Dev...
CVST: Update <ul><li>Goal: Update the image with the latest state in the repository </li></ul><ul><li>Process: (very simpl...
CVST: Development <ul><li>Goal: Make some progress </li></ul><ul><li>Process: </li></ul><ul><ul><li>usual smalltalk develo...
CVST: Merge <ul><li>Goal: Merge changes with the latest state in the repository </li></ul><ul><li>Process: </li></ul><ul><...
CVST: Commit <ul><li>Goal: Bring the changes into the repository </li></ul><ul><li>Process: </li></ul><ul><ul><li>cvs comm...
CVST: Demonstration SHOWTIME !
CVST: Yes! <ul><li>Cross-dialect development (VW & Squeak) </li></ul><ul><li>Cross-language development (ST & C) </li></ul...
CVST: No! <ul><li>Single dialect with a solution (ENVY, StORE) </li></ul><ul><li>Don’t want to learn using a file based VC...
CVST: To do <ul><li>More ports (Dolphin coming) </li></ul><ul><li>UI for all platforms (not just VW) </li></ul><ul><li>Int...
CVST: Limitations <ul><li>Non-atomic update/commit </li></ul><ul><li>Class-level versioning (granularity) </li></ul>
CVST: Credentials <ul><li>sqcvs </li></ul><ul><ul><li>Squeak - Goran Hultgren </li></ul></ul><ul><li>cvstproj </li></ul><u...
Upcoming SlideShare
Loading in …5
×

CVST - Smalltalk Solutions 2001

836 views

Published on

CVST: Smalltalk to CVS bridge

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
836
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

CVST - Smalltalk Solutions 2001

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

×