Ein Tutorial für die GIT - Struktur einer klassischen Giwt-App in singulären Graphmodulen.
Unter /var/lib/graph/module/<Graphmodulprefix>/giwt findet man folgende Ordner Struktur
| Ordner | Verwendung |
|---|---|
<giwtapp_name> |
Die Live-Version die aktuell verwendet wird. |
<giwtapp_name>_preview |
Die Preview-Version, in diesem Ordner werden neue Features zur Abnahme bereitgestellt. Dies sollte immer eine funktionierende Version sein. Damit Sie vom Prozesseigner zum Release freigeben werden kann. |
<giwtapp_name>_dev |
Die Entwickler-Version, in diesem Ordner werden neue Features entwickelt. |
Um Remote's in einem Ordner zu setzen siehe Git Remote.
Der Remote von der Live-Version ist die Preview Version.
git remote add origin ../<giwtapp_name>_preview
Nach dem hinzufügen des Remotes sollte man folgendes mit git remote -v sehen.
origin ../<giwtapp_name>_preview (fetch)
origin ../<giwtapp_name>_preview (push)
Die Push-Url wird auf den String 'DISALLOWED' gesetzt, um mögliches pushen in das Repository zu verhindern.
git remote set-url --push origin DISALLOWED
Damit keine Feature-Branches in das Live-System kommen wird die git configuration angepasst, dass nur der master-branch und tags aus der Preview geladen werden können.
Die Git config unter .git/config sollte wie folgt aussehen.
[remote "origin"]
url = ../<giwtapp_name>_preview
fetch = +refs/heads/master:refs/remotes/origin/master
fetch = +refs/heads/tags/*:refs/remotes/origin/tags/*
pushurl = DISALLOWED
Der Remote von der Preview-Version ist die Dev Version.
git remote add dev ../<giwtapp_name>_dev
Nach dem hinzufügen des Remotes sollte man folgendes mit git remote -v sehen.
dev ../<giwtapp_name>_dev (fetch)
dev ../<giwtapp_name>_dev (push)
Die Push-Url wird auf den String 'DISALLOWED' gesetzt, um mögliches pushen in das Repository zu verhindern.
git remote set-url --push dev DISALLOWED
Der Remote von der Dev-Version ist die Preview Version.
git remote add origin ../<giwtapp_name>_preview
Nach dem hinzufügen des Remotes sollte man folgendes mit git remote -v sehen.
origin ../<giwtapp_name>_dev (fetch)
origin ../<giwtapp_name>_dev (push)
Die Push-Url wird auf den String 'DISALLOWED' gesetzt, um mögliches pushen in das Repository zu verhindern.
git remote set-url --push origin DISALLOWED
Nachdem Remote-Setup sollten die Verzeichnisse folgende Konfiguration für die Remotes haben.
Die Live-Version <giwtapp_name> hat als Remote origin den Preview Ordner <giwtapp_name>_preview.
origin ../<giwtapp_name>_preview (fetch)
origin DISALLOWED (push)
Die Preview-Version <giwtapp_name>_preview hat als Remote dev den Entwickler Ordner <giwtapp_name>_dev.
dev ../<giwtapp_name>_dev (fetch)
dev DISALLOWED (push)
Die Entwickler-Version <giwtapp_name>_dev hat als Remote origin den Preview Ordner <giwtapp_name>_preview.
origin ../<giwtapp_name>_preview (fetch)
origin DISALLOWED (push)
Um ein neues Feature zu entwicklen wird in <giwtapp_name>_dev von dem entsprechenden Entwickler ein neuer Branch angelegt. Git Branch
git branch <branch-name>
oder erstellen und direkt auschecken.
git checkout -b <branch-name>
In diesem Branch kann der Entwickler beliebig Änderungen vornehmen. Ist das Feature fertiggestellt und getestet!, kann es unter /<giwtapp_name>_preview zur Abnahme bereitgestellt werden.
Wir wechseln in den Ordner /<giwtapp_name>_preview.
Dort holen wir uns die Änderungen aus /<giwtapp_name>_dev und checken diese aus.
git fetch dev
git checkout <feature-name>
Jetzt kann der Prozesseigner die Änderungen unter /<giwtapp_name>_preview einsehen und abnehemen.
Sind weiter Arbeiten an dem Feature notwendig werden diese im Entwicklungsbranch unter /<giwtapp_name>_dev implementiert.
Mit git pull können diese in /<giwtapp_name>_preview veröffentlicht werden.
git pull dev <branch>
Nachdem die Änderungen durch den Prozesseigner abgenommen wurden, können diese in das Live-System übernommen werden. Dazu wird im /<giwtapp_name>_preview Ordner der master Branch auf den Stand von dem neuen Feature <feature-name> Branch gebracht.
Unter /<giwtapp_name>_preview
git checkout master
git merge --ff-only <feature-name>
Die Version zur Freigabe wird mit einem Tag versehen.
git tag <tag-name>
Unter /<giwtapp_name> wird der neue Tag ausgecheckt.
git fetch
git checkout <tag-name>
Der Entwicklungs Branch zum erstellen des Features wird in der DEV gelöscht.
Unter /<giwtapp_name>_dev:
git branch -d <branch-name>
Unter /<giwtapp_name>_preview:
git fetch --prune dev
Optional kann --prune als default Konfiguration für git fetch eingestellt werden:
git config --global fetch.prune true