Changes between Version 9 and Version 10 of Documentatie/Ontwikkelaar/Omgeving/Tools


Ignore:
Timestamp:
04/16/13 08:58:43 (13 years ago)
Author:
adriaan
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Documentatie/Ontwikkelaar/Omgeving/Tools

    v9 v10  
    195195Git is een gedistribueerd versiebeheer systeem met een zeer uitgebreide toolset en een nogal cryptische ''core'' -- een kern waarmee je wel alles kunt. Git beschikt ook over een goeie SVN bridge, zodat je met git kunt werken en  de gedistribueerde kenmerken van git kunt gebruiken en '''tegelijk''' ook gecontroleerd met Subversion om kunt gaan. Hierdoor wordt het mogelijk om samen te werken in git en dan af te ronden in Subversion. 
    196196 
     197 
     198[[NoteBox(tip, Hier staat alleen hoe je OpenAC-specifieke handelingen voor git moet ondernemen. Een [http://git-scm.com/book/en/Git-Basics algemene handleiding voor git] is het boek Pro Git (gratis via de git site).)]] 
     199 
    197200=== Starten === 
    198201 
    199  - '''Initiele Clone''' Maakt een clone in de directory `openac-git` en gaat vervolgens 
    200    de (remote) development branch volgen. Bij de eerste clone komt er een foutmelding 
     202 - '''SSH''' Maak eerst een SSH-key aan waarmee je naar de FENAC server kunt SSH'en. Hiervoor is een gebruikers-login op de server zelf nodig. Je kan alleen vanaf Audcom bij die server. Configureer SSH vervolgens zo dat je een nette alias (zeg ''openac'') voor die verbinding. Dat kan door in je `~/.ssh/config` dit op te nemen: 
     203   {{{ 
     204Host openac 
     205        HostName svn.openac.fenac.nl 
     206        User mijzelf 
     207        IdentityFile ~/.ssh/id_openac 
     208}}} 
     209 - '''Initiele Clone''' Dit maakt een clone in de directory `openac-git` en gaat vervolgens 
     210   de (remote) development branch volgen. Bij de eerste clone komt er misschien een foutmelding 
    201211   dat er geen checkout gemaakt kan worden omdat HEAD geen remote-ref heeft. Die kan 
    202212   je negeren, want je wilt toch een andere branch volgen. 
    203213   {{{ 
    204 git clone -o mirror ssh://trac2/home/svn/openac-git 
     214git clone -o mirror ssh://openac/home/svn/openac-git 
    205215cd openac-git/ 
     216git checkout -t mirror/git-svn 
    206217git svn init --prefix=mirror/ https://svn.openac.fenac.nl/development 
    207218git svn dcommit 
     
    223234=== Workflow === 
    224235 
    225 (advanced dingen zoals samenwerken aan een branch in git en later afmaken naar SVN) 
    226  
     236Op de manier zoals hierboven is omschreven kan je git gebruiken als SVN client. Enig voordeel ten opzichte van SVN zelf is dat je ook lokale commits kunt doen en iets lokaal af kunt maken zonder dat je tussentijdse commits naar SVN hoeft te doen. Aan het eind van de rit kan je met ''dcommit'' je changesets naar SVN pushen. Eventueel kan je ook met '''branches''' werken om changesets onafhankelijk van elkaar te ontwikkelen, of om verschillende problemen los van elkaar op te lossen. 
     237 
     238Het plaatje hieronder laat een (eenvoudige) grafische weergave zien van branches in git tijdens OpenAC ontwikkeling. 
     239 
     240[[Image(branches.png)]] 
     241 
     242De branch ''git-svn'' komt overeen met SVN zelf. Er zijn twee remote branches, een genaamd ''backups'' (voor een niet nader gespecificeerd feature) en een genaamd ''ticket5150'' (om [#5150 dat ticket] op te lossen). De ticket-branch is net geopend en loopt vanaf de nieuwste SVN revisie verder. De backups-branch is een stuk ouder. Onder normale omstandigheden zouden er meer branches zijn van wisselende ouderdom, en ook een mengsel van lokale en remote branches. 
     243 
     244 
     245 - '''Lokale branch''' Om een ticket op te lossen in een aparte (lokale, heel goedkope) branch, maak je een branch, schakel je daar op over, werk je normaal en doe je gewoon git commits. Af-en-toe controleer je dat je hele geschiedenis van fixes nog werkt ten opzichte van wat er nu in SVN staat. Je kan tussendoor ook wisselen naar andere branches of naar de huidige staat van SVN als je aan iets anders moet werken. Tenslotte maak je de branch af met ''dcommit'' en verdwijnt het als lokale branch -- de commits worden allemaal omgezet in SVN commits. 
     246   - '''Maak branch''' 
     247   - '''Wissel branch''' 
     248   - '''Branch afmaken''' 
     249 - '''Remote branch''' Als je wilt samenwerken aan een feature, maar niet wilt dat dit meteen zichtbaar is in SVN, of als je een bugfix hebt maar die wilt laten reviewer, dan kan je een lokale branch als '''remote''' branch in de git repository pushen. Dan wordt de branch zichtbaar voor anderen die de git repository gebruiken, maar wordt het niet naar SVN gepusht. Hierdoor kan er "onzichtbaar" aan iets gewerkt worden totdat het af is, en kan iets goed getest worden voordat het in SVN komt. 
     250   - '''Branch publiceren''' 
     251   - '''Branches volgen''' 
     252   - '''Branch afmaken''' 
    227253=== Infrastructuur === 
    228254 
    229 (dit is de documentatie over hoe de git-svn infrastructuur op de server is geconfigureerd) 
     255(dit is de documentatie over hoe de git-svn infrastructuur op de server is geconfigureerd; dat gaat allemaal volgens de handleiding van tfnico.com)