SlideShare a Scribd company logo
Version Control
                             !=
                   Dependency Management

                   Patrick van Dissel
                   http://ikoodi.nl
                   pvdissel@tricode.nl
                   @pvdissel
October 29, 2010
Note



This presentation is focussed on and for PHP
 projects, but the principal can be applied on
   projects in other programming language
PHP
Common project structure
            Nice separation:
            ●   Application
            ●   Libraries
            ●   Public
Common structure in VCS

          Single directory structure




          Libraries copied in every project;
          causing duplication
Subversion
    (svn)
With Subversion (SVN)
Common structure in VCS




       svn:externals to tags
       As it should be used
With Subversion (SVN)
Common structure in VCS




       svn:externals to trunk
       As it's often used
Getting externals in SVN
External fetching on SVN checkout
svn:externals
Pros:
●   svn:externals fixes duplication


Cons:
●   Externals are hidden in SVN metadata
●   Externals are NOT read-only(!)
●   Externals can ONLY point to a SVN repository
●   Makes branching/tagging harder
svn:externals



Makes a rudimentary dependency manager from
                 Subversion
How do others handle
dependency management?
*nix
with Make
           A solution the *nix way




●   Compile won't succeed until all required
    dependencies are available
●   Configurable to use optional dependencies
    when available
Java
with Maven
A solution the Java way
with Maven
A solution the Java way
PHP
Solutions available for PHP



        a framework and distribution system
        for reusable PHP components
Solutions available for PHP


Pyrus (PHP5.3.1+) is a tool to manage PEAR
packages. Pyrus simplifies and improves the PEAR
experience. Features include:
● Standalone tool (pyrus.phar)

● Can be integrated into application

● Pear repository management/connection

● Dependency Management

● Packaging in the PHAR format (PHp Archive)
Solutions available for PHP



        PHing Is Not GNU make.
        A PHP project build system/tool based
        on Apache Ant
Solutions available for PHP




 Use a Version Control System like
Subversion to control code versions
Solutions available for PHP




     Use a build tool like
    Phing to "build" projects
Solutions available for PHP




    Use Pear as repository for
    libraries and applications
Solutions available for PHP




    Use Pyrus to integrate the
        Pear repository with
Phing for dependency management
So..?
It isn't working yet!!




Currently Phing doesn't have
 a plugin to work with Pyrus
        (October 29, 2010)
Resources
●   Phing - www.phing.info
●   Pear - http://pear.php.net
●   Pear2 / Pyrus - http://pear2.php.net
    Pyrus presentation: http://slidesha.re/cIAcgp
●   Extending Phing -
    http://phing.info/docs/guide/stable/chapters/ExtendingPhing.html
●   Phar - http://php.net/phar
●   Pake - http://pake-project.com
●   Make - http://en.wikipedia.org/wiki/Make_(software)
●   Apache Maven - http://maven.apache.org
●   Apache Ant - http://ant.apache.org
●   Apache Ivy - http://ant.apache.org/ivy
Questions?

More Related Content

PDF
Beginning with Composer - Dependency manager in php
PDF
Continuous Integration In Php
PPTX
Framework
PPTX
Python powerpoint
PDF
Bootify Yyour App from Zero to Hero
PDF
An Introduction to Go
PDF
OSGi and Java 9+ - BJ Hargrave (IBM)
PDF
Debugging (Django) application in PyCharm
Beginning with Composer - Dependency manager in php
Continuous Integration In Php
Framework
Python powerpoint
Bootify Yyour App from Zero to Hero
An Introduction to Go
OSGi and Java 9+ - BJ Hargrave (IBM)
Debugging (Django) application in PyCharm

Similar to Version Control != Dependency Management (20)

KEY
Continuous Integration Step-by-step
PPTX
Php core. get rid of bugs and contribute
PDF
Versioning for Developers
PDF
Care and Feeding of Large Web Applications
ODP
PPTX
Session 2
PPTX
Session 2
PPTX
Continuous Integration and development environment approach
KEY
Development tools
PDF
Version Control with SVN
PDF
Passing the Joel Test in the PHP World (phpbnl10)
PPTX
[Mas 500] Software Development Strategies
PPT
Presentation 1 open source tools in continuous integration environment v1.0
PPTX
Version Control and Continuous Integration
PDF
Services, tools & practices for a software house
PDF
Tool up your lamp stack
PDF
Tool Up Your LAMP Stack
PPTX
Subversion and bug tracking
PDF
Alpes Jug (29th March, 2010) - Apache Maven
Continuous Integration Step-by-step
Php core. get rid of bugs and contribute
Versioning for Developers
Care and Feeding of Large Web Applications
Session 2
Session 2
Continuous Integration and development environment approach
Development tools
Version Control with SVN
Passing the Joel Test in the PHP World (phpbnl10)
[Mas 500] Software Development Strategies
Presentation 1 open source tools in continuous integration environment v1.0
Version Control and Continuous Integration
Services, tools & practices for a software house
Tool up your lamp stack
Tool Up Your LAMP Stack
Subversion and bug tracking
Alpes Jug (29th March, 2010) - Apache Maven
Ad

More from Tricode (part of Dept) (20)

PDF
The Top Benefits of Magnolia CMS’s Inspirational Open Suite Ideology
PPTX
Agile QA 2017: A New Hope
PDF
Mobile Sensor Networks based on Smartphone devices and Web Services
PPTX
Keeping Your Clients Happy and Your Management Even Happier
PDF
Intro to JHipster
PDF
Porn, the leading influencer of Technology
PDF
De 4 belangrijkste risicofactoren van het nearshoring proces
PDF
Internet Addiction (Social Media Edition)
PPTX
Kids Can Code - an interactive IT workshop
PPTX
RESTful API - Best Practices
PDF
Deep Learning - STM 6
PDF
How Technology is Affecting Society - STM 6
ODP
Monolithic to Microservices Architecture - STM 6
PDF
Customers speak on Magnolia CMS
PDF
Quality Nearshoring met Tricode
PDF
AEM Digital Assets Management - What's new in 6.2?
PDF
10 nearshoring it trends om in 2016 te volgen
PDF
Tricode & Magnolia
PDF
Why you should use Adobe Experience Manager Mobile
PDF
Introducing: Tricode's Software Factory
The Top Benefits of Magnolia CMS’s Inspirational Open Suite Ideology
Agile QA 2017: A New Hope
Mobile Sensor Networks based on Smartphone devices and Web Services
Keeping Your Clients Happy and Your Management Even Happier
Intro to JHipster
Porn, the leading influencer of Technology
De 4 belangrijkste risicofactoren van het nearshoring proces
Internet Addiction (Social Media Edition)
Kids Can Code - an interactive IT workshop
RESTful API - Best Practices
Deep Learning - STM 6
How Technology is Affecting Society - STM 6
Monolithic to Microservices Architecture - STM 6
Customers speak on Magnolia CMS
Quality Nearshoring met Tricode
AEM Digital Assets Management - What's new in 6.2?
10 nearshoring it trends om in 2016 te volgen
Tricode & Magnolia
Why you should use Adobe Experience Manager Mobile
Introducing: Tricode's Software Factory
Ad

Recently uploaded (20)

PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
KodekX | Application Modernization Development
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
cuic standard and advanced reporting.pdf
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Empathic Computing: Creating Shared Understanding
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
NewMind AI Weekly Chronicles - August'25 Week I
Dropbox Q2 2025 Financial Results & Investor Presentation
Unlocking AI with Model Context Protocol (MCP)
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
KodekX | Application Modernization Development
Encapsulation_ Review paper, used for researhc scholars
cuic standard and advanced reporting.pdf
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
Empathic Computing: Creating Shared Understanding
Advanced methodologies resolving dimensionality complications for autism neur...
Understanding_Digital_Forensics_Presentation.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Building Integrated photovoltaic BIPV_UPV.pdf

Version Control != Dependency Management

  • 1. Version Control != Dependency Management Patrick van Dissel http://ikoodi.nl pvdissel@tricode.nl @pvdissel October 29, 2010
  • 2. Note This presentation is focussed on and for PHP projects, but the principal can be applied on projects in other programming language
  • 3. PHP
  • 4. Common project structure Nice separation: ● Application ● Libraries ● Public
  • 5. Common structure in VCS Single directory structure Libraries copied in every project; causing duplication
  • 6. Subversion (svn)
  • 7. With Subversion (SVN) Common structure in VCS svn:externals to tags As it should be used
  • 8. With Subversion (SVN) Common structure in VCS svn:externals to trunk As it's often used
  • 10. External fetching on SVN checkout
  • 11. svn:externals Pros: ● svn:externals fixes duplication Cons: ● Externals are hidden in SVN metadata ● Externals are NOT read-only(!) ● Externals can ONLY point to a SVN repository ● Makes branching/tagging harder
  • 12. svn:externals Makes a rudimentary dependency manager from Subversion
  • 13. How do others handle dependency management?
  • 14. *nix
  • 15. with Make A solution the *nix way ● Compile won't succeed until all required dependencies are available ● Configurable to use optional dependencies when available
  • 16. Java
  • 17. with Maven A solution the Java way
  • 18. with Maven A solution the Java way
  • 19. PHP
  • 20. Solutions available for PHP a framework and distribution system for reusable PHP components
  • 21. Solutions available for PHP Pyrus (PHP5.3.1+) is a tool to manage PEAR packages. Pyrus simplifies and improves the PEAR experience. Features include: ● Standalone tool (pyrus.phar) ● Can be integrated into application ● Pear repository management/connection ● Dependency Management ● Packaging in the PHAR format (PHp Archive)
  • 22. Solutions available for PHP PHing Is Not GNU make. A PHP project build system/tool based on Apache Ant
  • 23. Solutions available for PHP Use a Version Control System like Subversion to control code versions
  • 24. Solutions available for PHP Use a build tool like Phing to "build" projects
  • 25. Solutions available for PHP Use Pear as repository for libraries and applications
  • 26. Solutions available for PHP Use Pyrus to integrate the Pear repository with Phing for dependency management
  • 27. So..?
  • 28. It isn't working yet!! Currently Phing doesn't have a plugin to work with Pyrus (October 29, 2010)
  • 29. Resources ● Phing - www.phing.info ● Pear - http://pear.php.net ● Pear2 / Pyrus - http://pear2.php.net Pyrus presentation: http://slidesha.re/cIAcgp ● Extending Phing - http://phing.info/docs/guide/stable/chapters/ExtendingPhing.html ● Phar - http://php.net/phar ● Pake - http://pake-project.com ● Make - http://en.wikipedia.org/wiki/Make_(software) ● Apache Maven - http://maven.apache.org ● Apache Ant - http://ant.apache.org ● Apache Ivy - http://ant.apache.org/ivy