Of Metacello, Git,                               Scripting and Things                                      ESUG 2012      ...
“It is not sufficient to manage Smallatlk source files in git                                     ...           for Smalltal...
“Weve built a little package [FileTree] that allows us to save all                         our source in git.             ...
FileTree directory structureThursday, September 20, 2012
What is Git?                    • Disk-based, Distributed Version Control                           System for source code...
Why Git?  “Git really changed the way developers think of merging and                             branching.              ...
Git-Flow                     A successful Git branching model                                                  “Git-Flow” ...
Why Git?  Git makes it possible to leverage GitHub’s most excellent                             tools.Thursday, September ...
“[Git-Flow is] more complicated than I think most developers              and development teams actually require”         ...
GitHub Flow       • Use named branches off master for all              development       • use PULL request to review and ...
GitHub: Pull Request                                                      https://github.com/github/github-services/pull/3...
GitHub: Pull Request                                              https://github.com/github/github-services/pull/373Thursd...
GitHub: Commit Comments                                    https://github.com/github/github-services/pull/373#issuecomment...
GitHub: Pull Request Comments                                  GitHub: Commit Comments                                    ...
TravisCI automatically runs build against Pull Rquests                                            https://github.com/daleh...
GitHub: continuous integration w/Travis CI                                     http://travis-ci.org/#!/dalehenrich/builder...
Sample TravisCI log                                   http://travis-ci.org/#!/dalehenrich/builderCI/jobs/2205548Thursday, ...
travisCI.st for Sample project                                  https://github.com/dalehenrich/sample/blob/master/tests/ba...
Why Git for Smalltalk?           Git can bring sophisticated branch-based workflow           to Smalltalk without having to...
Git/GitHub Ecosystem                    • Cypress                          • Cross-dialect package structure              ...
Cypress       “The goal of the Cypress project is to have a version         controlled environment for cross-dialect proje...
Cypress spec    https://github.com/CampSmalltalk/Cypress/blob/master/img/CypressStructure-STIC2012.pngThursday, September ...
Cypress                               implementations                    • Amber (amber-cypress)                    • Cuis...
FileTree      FileTree is a fully functional Monticello repository type      where packages are stored in Cypress format i...
filetree://     filetree:// <path>             filetree:///opt/git/filetree/packagesThursday, September 20, 2012
github://     github:// <user> / <project> [ : <SHA> ] [ / <path> ]             github://dalehenrich/filetree:master/packag...
BaselineOf                  single #baseline: method in the BaselinOf classThursday, September 20, 2012
ConfigurationOf   Metacello version numbers become tags for git commitsThursday, September 20, 2012
Scripting API         Invented API to replace the “standard” load         expression:          with this expression:Thursd...
Current Status                    • Metacello class for scripts will be                           included in base images ...
Resources/Questionsmailing list:                  http://groups.google.com/group/metacellopreview installation & docs:   h...
Upcoming SlideShare
Loading in …5
×

Of metacello, git, scripting and things

1,055
-1

Published on

Talk of ESUG 2012, Ghent

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

No Downloads
Views
Total Views
1,055
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Of metacello, git, scripting and things

  1. 1. Of Metacello, Git, Scripting and Things ESUG 2012 Dale Henrichs VMwareThursday, September 20, 2012
  2. 2. “It is not sufficient to manage Smallatlk source files in git ... for Smalltalk we need to manage package structure” Dale Henrichs before January 2012Thursday, September 20, 2012
  3. 3. “Weve built a little package [FileTree] that allows us to save all our source in git. ... In short, we save and load all the monticello packages on our project as smalltalk source files.We use git to merge and not monticello. ... We are 5-6 developers on the project, committing numeroustimes a day. We currently have about 1100 classes and 23500 methods managed in this way.” Otto Behrens January 2012 http://forum.world.st/Smalltalk-for-small-projects-only-tt4336237.html#a4339381Thursday, September 20, 2012
  4. 4. FileTree directory structureThursday, September 20, 2012
  5. 5. What is Git? • Disk-based, Distributed Version Control System for source code • `Clone` repository to local disk for off-line work • Each `clone` is a complete copy of repository • Merge changes to/from any other `clone`Thursday, September 20, 2012
  6. 6. Why Git? “Git really changed the way developers think of merging and branching. ... merging/branching has always been considered a bit scary ...with Git, these actions are extremely cheap and simple, and they are considered one of the core parts of your daily workflow” A successful Git branching model “Git-Flow” January 2010 Vincent Driessen http://nvie.com/posts/a-successful-git-branching-model/Thursday, September 20, 2012
  7. 7. Git-Flow A successful Git branching model “Git-Flow” January 2010 Vincent Driessen http://nvie.com/posts/a-successful-git-branching-model/Thursday, September 20, 2012
  8. 8. Why Git? Git makes it possible to leverage GitHub’s most excellent tools.Thursday, September 20, 2012
  9. 9. “[Git-Flow is] more complicated than I think most developers and development teams actually require” GitHub Flow August 2011 Scott Chacon http://scottchacon.com/2011/08/31/github-flow.htmlThursday, September 20, 2012
  10. 10. GitHub Flow • Use named branches off master for all development • use PULL request to review and merge work into master branch • deploy as soon as you merge into the master branch GitHub Flow August 2011 Scott Chacon http://scottchacon.com/2011/08/31/github-flow.htmlThursday, September 20, 2012
  11. 11. GitHub: Pull Request https://github.com/github/github-services/pull/377Thursday, September 20, 2012
  12. 12. GitHub: Pull Request https://github.com/github/github-services/pull/373Thursday, September 20, 2012
  13. 13. GitHub: Commit Comments https://github.com/github/github-services/pull/373#issuecomment-7586837Thursday, September 20, 2012
  14. 14. GitHub: Pull Request Comments GitHub: Commit Comments https://github.com/github/github-services/pull/373Thursday, September 20, 2012
  15. 15. TravisCI automatically runs build against Pull Rquests https://github.com/dalehenrich/builderCI/pull/14Thursday, September 20, 2012
  16. 16. GitHub: continuous integration w/Travis CI http://travis-ci.org/#!/dalehenrich/builderCI/builds/2205547Thursday, September 20, 2012
  17. 17. Sample TravisCI log http://travis-ci.org/#!/dalehenrich/builderCI/jobs/2205548Thursday, September 20, 2012
  18. 18. travisCI.st for Sample project https://github.com/dalehenrich/sample/blob/master/tests/baselineTravisCI.stThursday, September 20, 2012
  19. 19. Why Git for Smalltalk? Git can bring sophisticated branch-based workflow to Smalltalk without having to build it from scratch!Thursday, September 20, 2012
  20. 20. Git/GitHub Ecosystem • Cypress • Cross-dialect package structure • FileTree • Monticello integration w/Git • MetacelloPreview • filetree:// and github:// repo types • BaselineOf and ConfigurationOf • Scripting APIThursday, September 20, 2012
  21. 21. Cypress “The goal of the Cypress project is to have a version controlled environment for cross-dialect projects. We do not aim to replace existing dialect solutions.” https://github.com/CampSmalltalk/CypressThursday, September 20, 2012
  22. 22. Cypress spec https://github.com/CampSmalltalk/Cypress/blob/master/img/CypressStructure-STIC2012.pngThursday, September 20, 2012
  23. 23. Cypress implementations • Amber (amber-cypress) • Cuis (cuis-cypress) • GemStone (FileTree) • Pharo (FileTree) • Squeak (FileTree) • VW (STIG) https://github.com/CampSmalltalk/Cypress#cypress-implementationsThursday, September 20, 2012
  24. 24. FileTree FileTree is a fully functional Monticello repository type where packages are stored in Cypress format instead of .mcz fomat. FileTree is SCM neutral and can be used with git, mercurial, svn, etc. https://github.com/dalehenrich/filetreeThursday, September 20, 2012
  25. 25. filetree:// filetree:// <path> filetree:///opt/git/filetree/packagesThursday, September 20, 2012
  26. 26. github:// github:// <user> / <project> [ : <SHA> ] [ / <path> ] github://dalehenrich/filetree:master/packages github://dalehenrich/filetree:1.0/packages github://dalehenrich/filetree:a772ac2ecc/packagesThursday, September 20, 2012
  27. 27. BaselineOf single #baseline: method in the BaselinOf classThursday, September 20, 2012
  28. 28. ConfigurationOf Metacello version numbers become tags for git commitsThursday, September 20, 2012
  29. 29. Scripting API Invented API to replace the “standard” load expression: with this expression:Thursday, September 20, 2012
  30. 30. Current Status • Metacello class for scripts will be included in base images for Pharo2.0 and Squeak4.4. • MetacelloPreview 1.0-beta.32.2 • looking for a few git savvy users to use the preview release • FsGit • in-image support for GitThursday, September 20, 2012
  31. 31. Resources/Questionsmailing list: http://groups.google.com/group/metacellopreview installation & docs: https://github.com/dalehenrich/metacello-work/blob/master/README.md Metacello Dr. will be IN today and Thursday All questions will be answered!Thursday, September 20, 2012
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×