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