Versiebeheer
@CoenJacobs - #wcnl 2012
Coen Jacobs

• @CoenJacobs
• http://coenjacobs.me


• Internetbureau Haboes, in Amsterdam
• Vanaf 1 april werk ik voor
Versiebeheer
Versiebeheer




• Beheren revisies van dezelfde bestanden
Versiebeheer



• Beheren revisies van dezelfde bestanden
• Wijzigingen bekijken en vergelijken
Versiebeheer


• Beheren revisies van dezelfde bestanden
• Wijzigingen bekijken en vergelijken
• Verschillende revisies samenvoegen
Versiebeheer


• Beheren revisies van dezelfde bestanden
• Wijzigingen bekijken en vergelijken
• Verschillende revisies samenvoegen
• Versies vastleggen (0.1, 0.2, 0.3 etc.)
Waarom versiebeheer?
Waarom versiebeheer?
Terminologie
Terminologie




•   Repository
Terminologie



•   Repository

•   Working copy
Terminologie



•   Repository

•   Working copy

•   Commit
Terminologie


•   Repository

•   Working copy

•   Commit

•   Branch
Terminologie


•   Repository

•   Working copy

•   Commit

•   Branch

•   Merge
Terminologie


•   Repository

•   Working copy

•   Commit             •   Checkout

•   Branch

•   Merge
Terminologie


•   Repository

•   Working copy
                       •   Checkout
•   Commit
                       •   Conflict
•   Branch

•   Merge
Terminologie


•   Repository

•   Working copy       •   Checkout

•   Commit             •   Conflict

•   Branch             •   Tag

•   Merge
Terminologie


•   Repository
                       •   Checkout
•   Working copy
                       •   Conflict
•   Commit
                       •   Tag
•   Branch
                       •   Fork
•   Merge
Verschillende soorten
Verschillende soorten



• Centraal
       • CSV, Subversion (SVN)
Verschillende soorten


• Centraal
       • CSV, Subversion (SVN)
• Decentraal
       • Git, Mercurial, Bazaar, SVK
Centraal
Centralized version control
Centraal
           Centralized version control




• Server waar je naar commit en van update
Centraal
           Centralized version control




• Server waar je naar commit en van update
• Eén centrale repository
Centraal
                    Centralized version control




Via Betterexplained.com: http://betterexplained.com/articles/intro-to-distributed-version-control-i"ustrated/
Decentraal
Distributed version control
Decentraal
           Distributed version control




• Lokale commits op lokale repository
Decentraal
           Distributed version control




• Lokale commits op lokale repository
• Pushen naar één of meerdere servers
Decentraal
           Distributed version control




• Lokale commits op lokale repository
• Pushen naar één of meerdere servers
• Updaten van of naar andere gebruikers
Decentraal
           Distributed version control



• Lokale commits op lokale repository
• Pushen naar één of meerdere servers
• Updaten van of naar andere gebruikers
• Meeste bewerkingen lokaal, dus sneller
Decentraal
                    Distributed version control




Via Betterexplained.com: http://betterexplained.com/articles/intro-to-distributed-version-control-i"ustrated/
Hoe werkt het nou in de praktijk?
Hoe werkt het nou in de praktijk?




• Pas een file aan
Hoe werkt het nou in de praktijk?




• Pas een file aan
• Sla je wijzigingen op
Hoe werkt het nou in de praktijk?



• Pas een file aan
• Sla je wijzigingen op
• Deel je wijzigingen
Hoe werkt het nou in de praktijk?



• Pas een file aan
• Sla je wijzigingen op
• Deel je wijzigingen
• Haal nieuwe wijzigingen op
Hoe werkt het nou in de praktijk?



• Pas een file aan
• Sla je wijzigingen op        COMMIT

• Deel je wijzigingen
• Haal nieuwe wijzigingen op
Hoe werkt het nou in de praktijk?



• Pas een file aan
• Sla je wijzigingen op        COMMIT

• Deel je wijzigingen          PUSH

• Haal nieuwe wijzigingen op
Hoe werkt het nou in de praktijk?



• Pas een file aan
• Sla je wijzigingen op    COMMIT

• Deel je wijzigingen      PUSH

• Haal nieuwe wijzigingen op PULL
Hoe werkt het nou in de praktijk?



• Pas een file aan                                                                   COMMIT

                                                                                    COMMIT
• Sla je wijzigingen op                                         COMMIT
                                                                                    COMMIT

• Deel je wijzigingen                                           PUSH                COMMIT

                                                                                    COMMIT
• Haal nieuwe wijzigingen op PULL


            Via nvie.com: http://nvie.com/posts/a-successful-git-branching-model/
Experimenteren?
Experimenteren?




• Experimenteer
Experimenteren?



• Experimenteer
• Bekijk je wijzigingen
Experimenteren?


• Experimenteer
• Bekijk je wijzigingen
• Combineer je wijzigingen
Experimenteren?


• Experimenteer
• Bekijk je wijzigingen
• Combineer je wijzigingen
• Of maak ze ongedaan
Experimenteren?


• Experimenteer              BRANCH

• Bekijk je wijzigingen
• Combineer je wijzigingen
• Of maak ze ongedaan
Experimenteren?


• Experimenteer              BRANCH

• Bekijk je wijzigingen      DIFF

• Combineer je wijzigingen
• Of maak ze ongedaan
Experimenteren?


• Experimenteer              BRANCH

• Bekijk je wijzigingen      DIFF

• Combineer je wijzigingen   MERGE

• Of maak ze ongedaan
Experimenteren?


• Experimenteer              BRANCH

• Bekijk je wijzigingen      DIFF

• Combineer je wijzigingen   MERGE

• Of maak ze ongedaan        REVERT
Experimenteren?




BRANCH

         DIFF
                                            MERGE



Via nvie.com: http://nvie.com/posts/a-successful-git-branching-model/
Oké, dat was Git (onder andere)
        But what about Github?
Github
Soortgelijke web apps

    Beanstalk
    beanstalkapp.com
    git én svn
Soortgelijke web apps

    Beanstalk
    beanstalkapp.com
    git én svn




    Bitbucket
    beanstalkapp.com
    git en mercurial
Github




• github.com
Github



• github.com
• Web gebaseerde hosting voor Git repositories
Github


• github.com
• Web gebaseerde hosting voor Git repositories
• Issue tracking
Github


• github.com
• Web gebaseerde hosting voor Git repositories
• Issue tracking
• “Social coding”
WordPress plugins op Git(Hub)
WordPress plugins op Git(Hub)

• WordPress plugin repository is SVN
WordPress plugins op Git(Hub)

• WordPress plugin repository is SVN
• Let’s push it #om Git!
WordPress plugins op Git(Hub)




• git-svn: http://teleogistic.net/2011/05/revisiting-
  git-github-and-the-wordpress-org-plugin-
  repository/ @boone
WordPress plugins op Git(Hub)



• git-svn: http://teleogistic.net/2011/05/revisiting-
  git-github-and-the-wordpress-org-plugin-
  repository/ @boone

• http://scribu.net/blog/deploying-from-git-to-
  svn.html @scribu
Deploying from git to svn




• Shell script
Deploying from git to svn



• Shell script
• plugins-deploy
Deploying from git to svn


• Shell script
• plugins-deploy
• Klaar!
Deploying from git to svn

• Shell script
• plugins-deploy
• Klaar!
• Tags?
     • plugin-deploy "ta$ing version
       $TAG_NAME" tags/$TAG_NAME
Bedankt
         Any questions?



•   Coen Jacobs

•   http://coenjacobs.me

•   @CoenJacobs

Versiebeheer