SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
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?

Contenu connexe

En vedette

ICOS EcoTour Presentation CH 091910
ICOS EcoTour Presentation CH 091910ICOS EcoTour Presentation CH 091910
ICOS EcoTour Presentation CH 091910jeffrey buderer
 
Code Management (Version Control)
Code Management (Version Control)Code Management (Version Control)
Code Management (Version Control)Y. Thong Kuah
 
SVN Best Practices
SVN Best PracticesSVN Best Practices
SVN Best Practicesabackstrom
 
SVN Usage & Best Practices
SVN Usage & Best PracticesSVN Usage & Best Practices
SVN Usage & Best PracticesAshraf Fouad
 
Source Code Control System (SCCS)
Source Code Control System (SCCS)Source Code Control System (SCCS)
Source Code Control System (SCCS)Saurabh Kumar
 
Version Control with SVN
Version Control with SVNVersion Control with SVN
Version Control with SVNPHPBelgium
 

En vedette (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
 

Similaire à Version Control != Dependency Management

Build and deploy scientific Python Applications
Build and deploy scientific Python Applications  Build and deploy scientific Python Applications
Build and deploy scientific Python Applications Ramakrishna Reddy
 
Python as Web Development
Python as Web Development Python as Web Development
Python as Web Development SamWas1
 
Top 10 php frameworks in 2021
Top 10 php frameworks in 2021Top 10 php frameworks in 2021
Top 10 php frameworks in 2021MaryamAnwar10
 
Getting Started with PHP Extensions
Getting Started with PHP ExtensionsGetting Started with PHP Extensions
Getting Started with PHP ExtensionsMichaelBrunoLochemem
 
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.pdfchristiemarie4
 
Docker based-Pipelines with Codefresh
Docker based-Pipelines with CodefreshDocker based-Pipelines with Codefresh
Docker based-Pipelines with CodefreshCodefresh
 
Learn PHP Lacture1
Learn PHP Lacture1Learn PHP Lacture1
Learn PHP Lacture1ADARSH BHATT
 
Extending ZF & Extending With ZF
Extending ZF & Extending With ZFExtending ZF & Extending With ZF
Extending ZF & Extending With ZFRalph Schindler
 
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 PythonSafe Software
 
Effectively using Open Source with conda
Effectively using Open Source with condaEffectively using Open Source with conda
Effectively using Open Source with condaTravis Oliphant
 
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).pdfRahulSingh190790
 
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)Per Henrik Lausten
 
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 projectMassimiliano Arione
 
Exploring PHP's Built-in Functions
Exploring PHP's Built-in FunctionsExploring PHP's Built-in Functions
Exploring PHP's Built-in FunctionsEmma Thompson
 
Python workshop
Python workshopPython workshop
Python workshopShiraz LUG
 

Similaire à 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
 

Dernier

Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 

Dernier (20)

Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 

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