Backend Versionierung einführen

Git installieren und einrichten

Installation (unter CentOS):

sudo yum install git

 
Einrichtung:

git config --global user.name "John Doe" 
git config --global user.email johndoe@example.com

Gitignore Datei anlegen

In allen Codebeispielen muss ${live_umgebung} und ${dev_umgebung} durch den Pfad zur jeweiligen Instanz ersetzt werden.

.gitignore

artikelimages
*.csv

 

Dateien in beiden Umgebungen anlegen.

nano ${dev_umgebung}/.gitignore
nano ${live_umgebung}/.gitignore

Repositorys initalisieren

Dev Instanz:

cd ${dev_umgebung} 
git init
git add -A
git commit -m "intial checkin"
git branch -m dev 
git remote add live ${live_umgebung}

 

Live Instanz:

cd ${live_umgebung} 
git init
git add -A
git commit -m "intial checkin"
git branch -m live 
git remote add dev ${dev_umgebung}

Repositorys untereinander synchronisieren

Push Live-Branch in Dev-Umgebung.

cd ${live_umgebung} 
git push dev live

 

Führe Live- und Dev-Branch zusammen.

cd ${dev_umgebung} 
git checkout dev
git merge live
# wenn Konflikte auftreten git mergetool verwenden.

 

Die Live-Umgebung aktualisieren.

git push live dev

Update mysqldiff.php

Die mysqldiff.php liegt im connector Verzeichnis und muss in beiden motrade Instanzen den Parameter –compare-data-table-filter unterstützen. Falls dies nicht der Fall seien sollt, bitte auf eine Version updaten, die das kann.

Hooks einrichten

pre-commit:

#!/bin/sh

host=localhost
user="user"
pass="pass"
db1="datenbase1"
db2="datenbase2"
table_filter=mocrm_ipadconfig,mocrm_keys,mocrm_ipfields,mocrm_menu,mocrm_meta,mocrm_policy,mocrm_language
output_file=mysql_diff.sql

php connector/mysqldiff.php --host ${host} --user ${user} --pwd ${pass} --database1 ${db1} --database2 ${db2} --ignore-columnposition --ignore-columncomment --compare-data --compare-data-mode INSERT-UPDATE --compare-data-table-filter ${table_filter} --overwrite --output-file ${output_file}

git add ${output_file}

post-commit:

#!/bin/sh

output_file=mysql_diff.sql
rm ${output_file}

 
Dev Instanz:

db1="dev_DB"
db2="live_DB"
nano ${dev_umgebung}/.git/hooks/pre-commit
nano ${dev_umgebung}/.git/hooks/post-commit

 
Live Instanz:

db1="live_DB"
db2="dev_DB"
nano ${live_umgebung}/.git/hooks/pre-commit
nano ${live_umgebung}/.git/hooks/post-commit

Git Grundlagen

Einfacher Überblick über Git in deutsch.
Eine weiter Seite die nicht so verspielt ist.

Workflow Bsp

Schaue welche Dateien sich geändert haben:

git diff --cached

 

Den MySQL-Diff anschauen (danach bitte wieder löschen):

git checkout mysql_diff.sql

 

Fügt alle geänderten Datei zum Index (Index: alle Dateien die commited werden) hinzu:

git add -A

 

Commited alle Dateien im Index:

git commit -m "commit message"

 

Merged den Dev-Branch in den Live-Branch (vorher commiten):

git checkout live
git merge dev
git checkout dev

 

Synchronisiert die Branches zwischen der Dev und der Live Version:

git push ${remote_name} ${branch_name}
git pull ${remote_name} ${branch_name}

cd ${dev_umgebung}
git push live dev
cd ${live_umgebung}
git pull dev live