SlideShare a Scribd company logo
1 of 31
Download to read offline
Of Metacello, Git,
                               Scripting and Things
                                      ESUG 2012
                                     Dale Henrichs
                                       VMware




Thursday, September 20, 2012
“It is not sufficient to manage Smallatlk source files in git
                                     ...
           for Smalltalk we need to manage package structure”

                                                           Dale Henrichs
                                                         before January 2012




Thursday, September 20, 2012
“We've 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 numerous
times 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#a4339381

Thursday, September 20, 2012
FileTree directory structure




Thursday, September 20, 2012
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
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
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
Why Git?




  Git makes it possible to leverage GitHub’s most excellent
                             tools.
Thursday, September 20, 2012
“[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.html




Thursday, September 20, 2012
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.html

Thursday, September 20, 2012
GitHub: Pull Request




                                                      https://github.com/github/github-services/pull/377
Thursday, September 20, 2012
GitHub: Pull Request




                                              https://github.com/github/github-services/pull/373



Thursday, September 20, 2012
GitHub: Commit Comments




                                    https://github.com/github/github-services/pull/373#issuecomment-7586837

Thursday, September 20, 2012
GitHub: Pull Request Comments




                                  GitHub: Commit Comments




                                                    https://github.com/github/github-services/pull/373




Thursday, September 20, 2012
TravisCI automatically runs build against Pull Rquests




                                            https://github.com/dalehenrich/builderCI/pull/14




Thursday, September 20, 2012
GitHub: continuous integration w/Travis CI




                                     http://travis-ci.org/#!/dalehenrich/builderCI/builds/2205547



Thursday, September 20, 2012
Sample TravisCI log




                                   http://travis-ci.org/#!/dalehenrich/builderCI/jobs/2205548




Thursday, September 20, 2012
travisCI.st for Sample project




                                  https://github.com/dalehenrich/sample/blob/master/tests/baselineTravisCI.st




Thursday, September 20, 2012
Why Git for Smalltalk?




           Git can bring sophisticated branch-based workflow
           to Smalltalk without having to build it from scratch!

Thursday, September 20, 2012
Git/GitHub Ecosystem
                    • Cypress
                          • Cross-dialect package structure
                    • FileTree
                          • Monticello integration w/Git
                    • MetacelloPreview
                          • filetree:// and github:// repo types
                          • BaselineOf and ConfigurationOf
                          • Scripting API
Thursday, September 20, 2012
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/Cypress




Thursday, September 20, 2012
Cypress spec




    https://github.com/CampSmalltalk/Cypress/blob/master/img/CypressStructure-STIC2012.png




Thursday, September 20, 2012
Cypress
                               implementations
                    • Amber (amber-cypress)
                    • Cuis (cuis-cypress)
                    • GemStone (FileTree)
                    • Pharo (FileTree)
                    • Squeak (FileTree)
                    • VW (STIG)
                                 https://github.com/CampSmalltalk/Cypress#cypress-implementations


Thursday, September 20, 2012
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/filetree


Thursday, September 20, 2012
filetree://
     filetree:// <path>

             filetree:///opt/git/filetree/packages




Thursday, September 20, 2012
github://
     github:// <user> / <project> [ : <SHA> ] [ / <path> ]

             github://dalehenrich/filetree:master/packages
             github://dalehenrich/filetree:1.0/packages
             github://dalehenrich/filetree:a772ac2ecc/packages




Thursday, September 20, 2012
BaselineOf




                  single #baseline: method in the BaselinOf class




Thursday, September 20, 2012
ConfigurationOf




   Metacello version numbers become tags for git commits


Thursday, September 20, 2012
Scripting API
         Invented API to replace the “standard” load
         expression:



          with this expression:




Thursday, September 20, 2012
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 Git
Thursday, September 20, 2012
Resources/Questions

mailing list:                  http://groups.google.com/group/metacello
preview 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

More Related Content

Similar to Of metacello, git, scripting and things

Similar to Of metacello, git, scripting and things (20)

Open up your platform with Open Source and GitHub
Open up your platform with Open Source and GitHubOpen up your platform with Open Source and GitHub
Open up your platform with Open Source and GitHub
 
Getting started With GIT
Getting started With GITGetting started With GIT
Getting started With GIT
 
JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentials
JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -EssentialsJAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentials
JAZOON'13 - Thomas Hug & Bartosz Majsak - Git Workshop -Essentials
 
Mini-training: Let’s Git It!
Mini-training: Let’s Git It!Mini-training: Let’s Git It!
Mini-training: Let’s Git It!
 
Git hub visualstudiocode
Git hub visualstudiocodeGit hub visualstudiocode
Git hub visualstudiocode
 
Git for Android Developers
Git for Android DevelopersGit for Android Developers
Git for Android Developers
 
Git best practices workshop
Git best practices workshopGit best practices workshop
Git best practices workshop
 
August OpenNTF Webinar - Git and GitHub Explained
August OpenNTF Webinar - Git and GitHub ExplainedAugust OpenNTF Webinar - Git and GitHub Explained
August OpenNTF Webinar - Git and GitHub Explained
 
Untangling4
Untangling4Untangling4
Untangling4
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
 
Spring Projects Infrastructure
Spring Projects InfrastructureSpring Projects Infrastructure
Spring Projects Infrastructure
 
Spring Projects Infrastructure
Spring Projects InfrastructureSpring Projects Infrastructure
Spring Projects Infrastructure
 
Complete Dojo
Complete DojoComplete Dojo
Complete Dojo
 
Git Merge, Resets and Branches
Git Merge, Resets and BranchesGit Merge, Resets and Branches
Git Merge, Resets and Branches
 
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCDKubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
 
Git and Github workshop
Git and Github workshopGit and Github workshop
Git and Github workshop
 
Workflows using Git GitHub | Edureka
Workflows using Git GitHub | EdurekaWorkflows using Git GitHub | Edureka
Workflows using Git GitHub | Edureka
 
Git training with Devaamo
Git training with DevaamoGit training with Devaamo
Git training with Devaamo
 
That's (g)it! par Sébastien Dawans CETIC
That's (g)it! par Sébastien Dawans CETICThat's (g)it! par Sébastien Dawans CETIC
That's (g)it! par Sébastien Dawans CETIC
 
Global Azure Bootcamp Québec - Container on Azure
Global Azure Bootcamp Québec - Container on AzureGlobal Azure Bootcamp Québec - Container on Azure
Global Azure Bootcamp Québec - Container on Azure
 

More from ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
ESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
ESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
ESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
ESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
ESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
ESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
ESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
ESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
ESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
ESUG
 

More from ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Recently uploaded (20)

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 

Of metacello, git, scripting and things

  • 1. Of Metacello, Git, Scripting and Things ESUG 2012 Dale Henrichs VMware Thursday, September 20, 2012
  • 2. “It is not sufficient to manage Smallatlk source files in git ... for Smalltalk we need to manage package structure” Dale Henrichs before January 2012 Thursday, September 20, 2012
  • 3. “We've 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 numerous times 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#a4339381 Thursday, September 20, 2012
  • 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. 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. 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. Why Git? Git makes it possible to leverage GitHub’s most excellent tools. Thursday, September 20, 2012
  • 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.html Thursday, September 20, 2012
  • 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.html Thursday, September 20, 2012
  • 11. GitHub: Pull Request https://github.com/github/github-services/pull/377 Thursday, September 20, 2012
  • 12. GitHub: Pull Request https://github.com/github/github-services/pull/373 Thursday, September 20, 2012
  • 13. GitHub: Commit Comments https://github.com/github/github-services/pull/373#issuecomment-7586837 Thursday, September 20, 2012
  • 14. GitHub: Pull Request Comments GitHub: Commit Comments https://github.com/github/github-services/pull/373 Thursday, September 20, 2012
  • 15. TravisCI automatically runs build against Pull Rquests https://github.com/dalehenrich/builderCI/pull/14 Thursday, September 20, 2012
  • 16. GitHub: continuous integration w/Travis CI http://travis-ci.org/#!/dalehenrich/builderCI/builds/2205547 Thursday, September 20, 2012
  • 17. Sample TravisCI log http://travis-ci.org/#!/dalehenrich/builderCI/jobs/2205548 Thursday, September 20, 2012
  • 18. travisCI.st for Sample project https://github.com/dalehenrich/sample/blob/master/tests/baselineTravisCI.st Thursday, September 20, 2012
  • 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. Git/GitHub Ecosystem • Cypress • Cross-dialect package structure • FileTree • Monticello integration w/Git • MetacelloPreview • filetree:// and github:// repo types • BaselineOf and ConfigurationOf • Scripting API Thursday, September 20, 2012
  • 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/Cypress Thursday, September 20, 2012
  • 22. Cypress spec https://github.com/CampSmalltalk/Cypress/blob/master/img/CypressStructure-STIC2012.png Thursday, September 20, 2012
  • 23. Cypress implementations • Amber (amber-cypress) • Cuis (cuis-cypress) • GemStone (FileTree) • Pharo (FileTree) • Squeak (FileTree) • VW (STIG) https://github.com/CampSmalltalk/Cypress#cypress-implementations Thursday, September 20, 2012
  • 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/filetree Thursday, September 20, 2012
  • 25. filetree:// filetree:// <path> filetree:///opt/git/filetree/packages Thursday, September 20, 2012
  • 26. github:// github:// <user> / <project> [ : <SHA> ] [ / <path> ] github://dalehenrich/filetree:master/packages github://dalehenrich/filetree:1.0/packages github://dalehenrich/filetree:a772ac2ecc/packages Thursday, September 20, 2012
  • 27. BaselineOf single #baseline: method in the BaselinOf class Thursday, September 20, 2012
  • 28. ConfigurationOf Metacello version numbers become tags for git commits Thursday, September 20, 2012
  • 29. Scripting API Invented API to replace the “standard” load expression: with this expression: Thursday, September 20, 2012
  • 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 Git Thursday, September 20, 2012
  • 31. Resources/Questions mailing list: http://groups.google.com/group/metacello preview 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