Innehållsförteckning |
---|
Processen
...
övergripande
Git flow exempel hämtade från:
...
http://danielkummer.github.io/git-flow-cheatsheet/
Övergripande om processen
- Branchen master innehåller endast taggade produktions-releasermerger från releasbrancher.
- 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, taggas den bed hjälp av mvn ett maven och mergas den till master och taggas med version, efter det mergas ändringar också till develop.
- En support branch är en långlivad 'master-branch' för en viss version.
...
develop-branch: develop
release-branch: release/v<version><version>, tex release/v22.3.0
feature-branch: feature/<JIRA nr>, tex feature/SKLTP-123
...
support-branch: support/<version>, tex support/v.2.3.0
tag: <version>, tex v22.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
...
https://github.com/nvie/gitflow
...
Om du som utvecklare väljer att inte installera git-flow enligt ovan så kan man använda git kommandon för att uppnå samma resultat. Dessa beskrivs separat längs ner på sidan.
...
https://github.com/nvie/gitflow/
...
Införa ny funktionalitet (feature branch)
Starta en feature branch
Kodblock |
---|
─$ 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
Kodblock |
---|
╰─$ git-flow feature publish SKLTP-123
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
Kodblock |
---|
╰─$ git-flow feature finish SKLTP-123
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
Kodblock |
---|
─$ git-flow release start v1.0.0
Switched to a new branch 'release/v1.0.0'
Summary of actions:
- A new branch 'release/v1.0.0' was created, based on 'develop'
- You are now on branch 'release/v1.0.0'
Follow-up actions:
- Bump the version number now!
- Start committing last-minute fixes in preparing your release
- When done, run:
git flow release finish 'v1.0.0' |
Stega upp version i källkoden (pom.xml)
Kodblock |
---|
Från maven-release-plugin 2.1.0 finns möjlighet att sätta konfiguration som underlättar releaser till Git. Rekommenderade versioner på maven-release-plugin är 2.3.2 eller 2.5.1 (ej 2.4).
tagNameFormat, överlagra default namnsättning på version för att tex sätta v.1.0.0
pushChanges,
localCheckout,
autoVersionSubmodules, |
Kodblock | ||||
---|---|---|---|---|
| ||||
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<autoVersionSubmodules>true</autoVersionSubmodules>
<tagNameFormat>v@{project.version}</tagNameFormat>
<pushChanges>false</pushChanges>
<localCheckout>true</localCheckout>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build> |
Kodblock |
---|
╰─$ mvn release:prepare
---
---
---
╰─$ mvn release:perform |
Verifiera att versionen stegats upp och taggats korrekt i git
Kodblock |
---|
╰─$ git stauts
On branch release/v1.0.0
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: pom.xml |
Kodblock |
---|
╰─$ git tag
v1.0.0-RC1 |
Dela ut release branchen så att andra utvecklare kan se den
Kodblock |
---|
╰─$ git-flow release publish v1.0.0 |
Färdiställ release branch
Kodblock |
---|
╰─$ git-flow release finish v.1.0.0
--
--
╰─$ git push --tags |
Göra en rättning på en publicerad release (hotfix branch)
Påbörja en hotfix branch
Kodblock |
---|
╰─$ git-flow hotfix start v.2.3.1 |
Färdigställ en hotfix branch
Kodblock |
---|
╰─$ git-flow hotfix finish v.2.3.1 |
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
Kodblock |
---|
╰─$ git-flow support start v.2.3.0 |
Git flow processen och exempel utan git-flow installerat
Hämta ut develop branchen där utveckling sker
Kodblock |
---|
git clone ssh://user@host/path/to/repo.git
git checkout -b develop origin/develop |
Införa ny funktionalitet (feature branch)
Starta en feature branch
Kodblock |
---|
git checkout -b feature/SKLTP-123 develop |
Dela en feature branch
Kodblock |
---|
git push -u origin feature/SKLTP-123 |
Färdigställ en feature branch
Kodblock |
---|
git pull origin develop
git checkout develop
git merge --no-ff feature/SKLTP-123
git push
git branch -d feature/SKLTP-123 |
Göra en release (release branch)
Starta en release branch
Kodblock |
---|
git checkout -b release/2.3.0 develop |
Stega upp version i källkoden (pom.xml)
Kodblock |
---|
Från maven-release-plugin 2.1.0 finns möjlighet att sätta konfiguration som underlättar releaser till Git. Rekommenderade versioner på maven-release-plugin är 2.3.2 eller 2.5.1 (ej 2.4).
tagNameFormat, överlagra default namnsättning på version för att tex sätta v.1.0.0
pushChanges,
localCheckout,
autoVersionSubmodules, |
Kodblock | ||||
---|---|---|---|---|
| ||||
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<autoVersionSubmodules>true</autoVersionSubmodules>
<tagNameFormat>v@{project.version}</tagNameFormat>
<pushChanges>false</pushChanges>
<localCheckout>true</localCheckout>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build> |
Kodblock |
---|
╰─$ mvn release:prepare
---
---
---
╰─$ mvn release:perform |
Verifiera att versionen stegats upp och taggats korrekt i git
Kodblock |
---|
╰─$ git stauts
On branch release/v2.3.0
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: pom.xml |
Kodblock |
---|
╰─$ git tag
v2.3.0-RC1 |
Dela ut release branchen så att andra utvecklare kan se den
Kodblock |
---|
git push -u origin release/v2.3.0 |
Färdiställ release branch
Kodblock |
---|
git checkout master
git merge --no-ff release/vp-2.3.0
git push
git checkout develop
git merge --no-ff release/2.3.0
git push
git branch -d release/2.3.0
git tag -a 2.3.0 -m "2.3.0 release" master
git push --tags |
Git flow motsvarande git command
https://gist.github.com/JamesMGreene/cdd0ac49f90c987e45ac
Release version hantering (pom filer och taggar)
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.
Kodblock |
---|
─$ git flow init -d |
Införa ny funktionalitet (feature branch)
Göra en release (release branch)
Göra en rättning på en publicerad release (hotfix branch)
...
Påbörja en hotfix branch
Kodblock |
---|
git checkout -b hotfix/SKLTP-112 develop |
Färdigställ en hotfix branch
...
Skapa en långlivad support branch för att kunna göra rättningar på äldre versioner (support branch)
...
Skapa en långlivad support branch
Kodblock |
---|
git checkout -b support/v2.3.0 master
|