| 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''' Dit is stiekum nog een gepiel. Je wilt je lokale changesets rebasen naar een recente SVN changeset en dan ''dcommit'' doen; daarna ''git-svn'' en ''mirror/git-svn'' bijwerken en de lokale branch (als naam) verwijderen en de commits uit de oude branch die niet meer bereikbaar zijn, garbage collecten. De kunst is om merge-commits te vermijden. |
| 249 | | |
| | 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 en verdwijnt die -- de commits worden allemaal omgezet in SVN commits. |
| | 246 | - '''Maak branch''' Kies een naam voor de lokale branch. Als het voor een ticket is, gebruik dan de naam ''ticketNNNN'' met het ticket nummer erin. Hiermee houd je de ticket-branches duidelijk zichtbaar ten opzichte van feature- en experimenteer-branches. Start de branch op ''git-svn'' zodat je vanaf een bekende SVN revisie begint: |
| | 247 | {{{ |
| | 248 | git checkout git-svn |
| | 249 | git checkout -b ticketNNNN |
| | 250 | }}} |
| | 251 | - '''Wissel branch''' Als je tussendoor van branch wilt wisselen -- bijvoorbeeld om verder te werken aan een ander ticket of om ''git-svn'' bij te werken -- dan gebruik je weer `git checkout`, bijvoorbeeld een van deze: |
| | 252 | {{{ |
| | 253 | git checkout git-svn |
| | 254 | git checkout ticketNNNN |
| | 255 | }}} |
| | 256 | - '''SVN bijwerken''' Zoals gewoonlijk kan je de branch ''git-svn'' bijwerken zoals hierboven beschreven. Maar daarmee heb je niet je eigen wijzigingen overgezet naar (git-)commits vanaf de meest recente SVN revisie. Daarvoor moet je eerst bijwerken vanuit SVN, en dan je eigen commits er bovenop zetten: |
| | 257 | {{{ |
| | 258 | git checkout git-svn |
| | 259 | git pull --rebase |
| | 260 | git checkout ticketNNNN |
| | 261 | git rebase git-svn |
| | 262 | }}} |
| | 263 | - '''Geschiedenis aanpassen''' In git doe je heel vaak kleine commits en er kunnen ook "tussentijdse" tussen zitten die op zichzelf niet interessant zijn. Je kunt een branch met commits interactief herschrijven door commits samen te voegen en log-messages te veranderen, voordat je ze naar SVN stuurt. Daarvoor gebruik je de `-i` vlag bij rebase: |
| | 264 | {{{ |
| | 265 | git checkout ticketNNNN |
| | 266 | git rebase -i git-svn |
| | 267 | }}} |
| | 268 | Dit start een tekst-editor op met instructies over hoe je de commits kunt her-ordenen of anders aanpassen. |
| | 269 | - '''Branch afmaken''' Ben je helemaal klaar met een branch en wil je de commits in die branch overzetten naar SVN zodat ze ook echt in OpenAC zitten, dan doe je eerst SVN bijwerken, daarna SVN push en tot slot gooi je de branch weg -- in feite gooi je alleen de naam van de branch weg, de commits blijven staan want ze zitten dan al in SVN. Bijwerken en push staan hierboven beschreven. Weggooien van de branch gaat tenslotte zo: |
| | 270 | {{{ |
| | 271 | git checkout git-svn |
| | 272 | git branch -d ticketNNNN |
| | 273 | }}} |