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 | Beschreibung |
|---|---|---|
<giwtapp_name> |
Live | In diesem Ordner wird die aktuellste freigegeben Version bereitgestellt. |
<giwtapp_name>_preview |
Preview | In diesem Ordner werden neue Features zur Abnahme bereitgestellt. Dies muss immer eine funktionierende Version sein, damit sie vom Prozesseigner zum Release freigeben werden kann. |
<giwtapp_name>_<dev> |
Entwickler | In diesen Ordnern werden neue Features entwickelt. Es kann mehrere solcher Ordner geben. |
Um remotes in einem Ordner zu setzen siehe Git Remote.
Im Live-Ordner wird ein remote origin auf den Preview-Ordner hinzugefügt.
git remote add origin ../<giwtapp_name>_preview
Nach dem Hinzufügen des remote 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 dem Preview-Ordner 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
Im Preview-Ordner werden remotes auf die Entwickler-Ordner hinzugefügt.
git remote add <dev> ../<giwtapp_name>_<dev>
Nach dem Hinzufügen der 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
Im Entwickler-Ordner wir ein remote origin auf den Preview-Ordner hinzugefügt.
git remote add origin ../<giwtapp_name>_preview
Nach dem Hinzufügen des remote 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
Nachdem Setup der remotes sollten die Verzeichnisse folgende Konfiguration für diese haben.
Der Live-Ordner <giwtapp_name> hat als remote origin den Preview-Ordner <giwtapp_name>_preview.
origin ../<giwtapp_name>_preview (fetch)
origin DISALLOWED (push)
Der Preview-Ordner <giwtapp_name>_preview hat als remotes <dev> die Entwickler-Ordner <giwtapp_name>_<dev>.
<dev> ../<giwtapp_name>_<dev> (fetch)
<dev> DISALLOWED (push)
Die Entwickler-Ordner <giwtapp_name>_<dev> haben 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 <feature-name>
oder erstellen und direkt auschecken.
git checkout -b <feature-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 abnehmen.
Sind weiter Arbeiten an dem Feature notwendig werden diese im Entwickler-Ordner unter /<giwtapp_name>_<dev> implementiert.
Mit git pull können diese im Preview-Ordner veröffentlicht werden.
git pull <dev> <feature-name>
Nachdem die Änderungen durch den Prozesseigner abgenommen wurden, können diese in den Live-Ordner übernommen werden. Dazu wird im Preview-Ordner der master Branch auf den Stand von dem <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>
Im Live-Ordner wird der neue Tag ausgecheckt.
git fetch
git checkout <tag-name>
Der <feature-name> Branch zum Erstellen des Features wird im Entwickler-Ordner gelöscht.
Unter /<giwtapp_name>_<dev>:
git branch -d <feature-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