Graph-IT

A guide to Git (Screwerk Giwt-Apps)

Ein Tutorial für die GIT - Struktur einer klassischen Giwt-App in singulären Graphmodulen.

Die Ordner Struktur

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.

Remote Setup für die Ordner

Um Remote's in einem Ordner zu setzen siehe Git Remote.

<giwtapp_name>

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

<giwtapp_name>_preview

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

<giwtapp_name>_dev

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)

Entwicklung eines neuen Feature's

Entwicklung

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.

Zur Abnahme bereitstellen

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.

Nacharbeiten zu einem Feature

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>

Release

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>

Löschen des Entwicklungs-Branches

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