Processen
Processen övergripande
Git flow exempel hämtade från:
https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
http://nvie.com/posts/a-successful-git-branching-model/
http://danielkummer.github.io/git-flow-cheatsheet/
Övergripande om processen
- Branchen master innehåller endast taggade produktions-releaser.
- Branchen develop är där ny funktionalitet införs (integration branch)
- Varje feature utvecklas i en egen branch med develop som ursprunglig branch.
- När en feature är klar mergas den tillbaka in i develop.
- När branchen develop innehåller tillräckligt med features för en release, skapas en release-branch, och samtidigt startas utvecklingen för nästa release.
- I release-branch görs endast bug-fixar och dokumentationsuppdateringar.
- När den release-branch är redo att skeppas, mergas den till master och taggas med version, efter det mergas ändringar till develop.
- En support branch är en långlivad 'master-branch' för en viss version.
Namnkonventioner
develop-branch: develop
release-branch: release/v<version>, tex release/v2.3.0
feature-branch: feature/<JIRA nr>, tex feature/SKLTP-123
hotfix-branch: hotfix/<JIRA nr>, tex hotfix/SKLTP-123
support-branch: support/<version>, tex support/v.2.3.0
tag: <version>, tex v2.3.0
kommentar: ex SKLTP-123: Loggning av payload skall vara konfigurerbar av/på
SKLTP/NTjP/Inera's Informationstjänster git branch mot driftmiljö
Git flow processen och exempel med git-flow installerat
Nedan exempel med verktyget git-flow och motsvarande git kommandon om man inte har tillgång till verktyget
https://github.com/nvie/gitflow
https://github.com/nvie/gitflow/wiki/Command-Line-Arguments
Git flow motsvarande git command
https://gist.github.com/JamesMGreene/cdd0ac49f90c987e45ac
Installera verktyget git flow
Git flow kommer med git installation (verifierat på Windows)
Git flow första gången
Git flow krävs att man kör init det första gången. Med parametrar -d tar det default konfiguration.
─$ git flow init -d
Införa ny funktionalitet (feature branch)
Starta en feature branch
─$ git flow feature start SKLTP-123 Switched to a new branch 'feature/SKLTP-123' Summary of actions: - A new branch 'feature/SKLTP-123' was created, based on 'develop' - You are now on branch 'feature/SKLTP-123' Now, start committing on your feature. When done, use: git flow feature finish SKLTP-123
Dela en feature branch
Obs: Om ni har gjort ändringar innan publish/push då ni måste pusha kod först till remote.
╰─$ git flow feature publish Total 0 (delta 0), reused 0 (delta 0) To git@github.com:skltp-aggregerandetjanster/riv.clinicalprocess.healthcond.basic.GetAggregatedObservation.git * [new branch] feature/SKLTP-123 -> feature/SKLTP-123 Already on 'feature/SKLTP-123' Your branch is up-to-date with 'origin/feature/SKLTP-123'. Summary of actions: - A new remote branch 'feature/SKLTP-123' was created - The local branch 'feature/SKLTP-123' was configured to track the remote branch - You are now on branch 'feature/SKLTP-123'
Färdigställ en feature branch
╰─$ git flow feature finish Switched to branch 'develop' Already up-to-date. Deleted branch feature/SKLTP-123 (was 039205e). Summary of actions: - The feature branch 'feature/SKLTP-123' was merged into 'develop' - Feature branch 'feature/SKLTP-123' has been removed - You are now on branch 'develop'
Göra en release (release branch)
Starta en release branch
Ersätt x.x.x med lämplig version nummer.
Man kan bara ha en release branch åt gången.
─$ git flow release start x.x.x Switched to a new branch 'release/x.x.x' Summary of actions: - A new branch 'release/x.x.x' was created, based on 'develop' - You are now on branch 'release/x.x.x - Bump the version number now! - Start committing last-minute fixes in preparing your release - When done, run: git flow release finish 'x.x.x'
Stega upp version i källkoden (pom.xml) genom att köra update-versions och slutföra med git flow release publish så att andra utvecklare kan se den
╰─$ mvn org.apache.maven.plugins:maven-release-plugin:2.5.3:update-versions -DdevelopmentVersion=x.x.x-RC1-SNAPSHOT ╰─$ git commit -a -m "Updated pom version to RC1-SNAPSHOT" ╰─$ git flow release publish
Release RC version:er
╰─$ mvn org.apache.maven.plugins:maven-release-plugin:2.5.3:prepare -DtagNameFormat=@{project.version} ╰─$ mvn org.apache.maven.plugins:maven-release-plugin:2.5.3:perform -Darguments="-Dmaven.deploy.skip=true" eller om man har behörighet att checka in på Nexus ╰─$ mvn org.apache.maven.plugins:maven-release-plugin:2.5.3:perform
Release utan RC version:er. Final release.
Obs: Stega upp version i källkoden (pom.xml) genom att ange nästa utvecklingscykel till x.x+1.x-SNAPSHOT (exempel: 1.1.0-SNAPSHOT)
╰─$ mvn org.apache.maven.plugins:maven-release-plugin:2.5.3:prepare -DtagNameFormat=@{project.version} ╰─$ mvn org.apache.maven.plugins:maven-release-plugin:2.5.3:perform -Darguments="-Dmaven.deploy.skip=true" eller om man har behörighet att checka in på Nexus ╰─$ mvn org.apache.maven.plugins:maven-release-plugin:2.5.3:perform
Färdiställ release branch,
-n ska undvika skapa tag på master och -p ska pusha
╰─$ git flow release finish -n -p ..... ..... Summary of actions: - Release branch 'release/1.0.0' has been merged into 'master' - Master branch 'master' has been back-merged into 'develop' - Release branch 'release/1.0.0' has been locally deleted; it has been remotely deleted from 'origin' - 'develop', 'master' and tags have been pushed to 'origin' - You are now on branch 'develop'
Göra en rättning på en publicerad release (hotfix branch)
En hotfix branch får endast göras för senaste release:en annars bör man göra en support branch.
Påbörja en hotfix branch
╰─$ git flow hotfix start x.x.x
Färdigställ en hotfix branch
╰─$ git flow hotfix finish
Skapa en långlivad support branch för att kunna rättningar på äldre versioner (support branch)
Påbörja en långlivad support branch
Endast från tags/
╰─$ git flow support start 1.0.0 tags/1.0.0
Stega upp version i källkoden (pom.xml) genom att köra update-versions och slutföra med git push. Hantera denna branch som en vanlig branch.
╰─$ mvn org.apache.maven.plugins:maven-release-plugin:2.5.3:update-versions -DdevelopmentVersion=1.0.1-RC1-SNAPSHOT ╰─$ git commit -a -m "Updated pom version to RC1-SNAPSHOT" ╰─$ git push origin support/1.0.0
Fortsätta göra release:er från den här branch:en och skapa taggar varje gång man gör release. Som sagt är det en långlivad branch och behövs en merge till develop får man göra det manuellt.