SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
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?

Más contenido relacionado

Destacado (7)

ICOS EcoTour Presentation CH 091910
ICOS EcoTour Presentation CH 091910ICOS EcoTour Presentation CH 091910
ICOS EcoTour Presentation CH 091910
 
Code Management (Version Control)
Code Management (Version Control)Code Management (Version Control)
Code Management (Version Control)
 
SVN Best Practices
SVN Best PracticesSVN Best Practices
SVN Best Practices
 
SVN Usage & Best Practices
SVN Usage & Best PracticesSVN Usage & Best Practices
SVN Usage & Best Practices
 
Source Code Control System (SCCS)
Source Code Control System (SCCS)Source Code Control System (SCCS)
Source Code Control System (SCCS)
 
Version Control with SVN
Version Control with SVNVersion Control with SVN
Version Control with SVN
 
Svn Basic Tutorial
Svn Basic TutorialSvn Basic Tutorial
Svn Basic Tutorial
 

Similar a Version Control != Dependency Management

Learn PHP Lacture1
Learn PHP Lacture1Learn PHP Lacture1
Learn PHP Lacture1
ADARSH BHATT
 

Similar a Version Control != Dependency Management (20)

Build and deploy scientific Python Applications
Build and deploy scientific Python Applications  Build and deploy scientific Python Applications
Build and deploy scientific Python Applications
 
Python as Web Development
Python as Web Development Python as Web Development
Python as Web Development
 
Top 10 php frameworks in 2021
Top 10 php frameworks in 2021Top 10 php frameworks in 2021
Top 10 php frameworks in 2021
 
Wc13
Wc13Wc13
Wc13
 
Getting Started with PHP Extensions
Getting Started with PHP ExtensionsGetting Started with PHP Extensions
Getting Started with PHP Extensions
 
PHP vs Python Which is Best for Web Development.pdf
PHP vs Python Which is Best for Web Development.pdfPHP vs Python Which is Best for Web Development.pdf
PHP vs Python Which is Best for Web Development.pdf
 
Docker based-Pipelines with Codefresh
Docker based-Pipelines with CodefreshDocker based-Pipelines with Codefresh
Docker based-Pipelines with Codefresh
 
Learn PHP Lacture1
Learn PHP Lacture1Learn PHP Lacture1
Learn PHP Lacture1
 
Top 6 php framework
Top 6 php frameworkTop 6 php framework
Top 6 php framework
 
Extending ZF & Extending With ZF
Extending ZF & Extending With ZFExtending ZF & Extending With ZF
Extending ZF & Extending With ZF
 
Creating Custom Solutions with FME and Python
Creating Custom Solutions with FME and PythonCreating Custom Solutions with FME and Python
Creating Custom Solutions with FME and Python
 
Effectively using Open Source with conda
Effectively using Open Source with condaEffectively using Open Source with conda
Effectively using Open Source with conda
 
Python tutorial
Python tutorialPython tutorial
Python tutorial
 
Dr. Tanvi FOCP Unit-2 Session-1 PPT (Revised).pdf
Dr. Tanvi FOCP Unit-2 Session-1 PPT (Revised).pdfDr. Tanvi FOCP Unit-2 Session-1 PPT (Revised).pdf
Dr. Tanvi FOCP Unit-2 Session-1 PPT (Revised).pdf
 
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
 
Managing frontend libs in your php project
Managing frontend libs in your php projectManaging frontend libs in your php project
Managing frontend libs in your php project
 
Exploring PHP's Built-in Functions
Exploring PHP's Built-in FunctionsExploring PHP's Built-in Functions
Exploring PHP's Built-in Functions
 
Python workshop
Python workshopPython workshop
Python workshop
 
Python workshop
Python workshopPython workshop
Python workshop
 
Research paper on python by Rj
Research paper on python by RjResearch paper on python by Rj
Research paper on python by Rj
 

Último

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Último (20)

What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 

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