WEB-Shop Update: Unterschied zwischen den Versionen
Yogi (Diskussion | Beiträge) |
Yogi (Diskussion | Beiträge) K (hat „ECB Update“ nach „WEB-Shop Update“ verschoben) |
(kein Unterschied)
|
Version vom 10. Mai 2010, 16:56 Uhr
ECB-Update
Voraussetzung
- Du hast einen ECB Shop installiert der in einer nicht aktuellen Version läuft.
- Du hast Änderungen an Dateien vorgenommen (Shop, Template). Hierzu gehören nicht die ECB-Module, da diese die Shop-Basis nicht beeinflussen.
- Für diese Anleitung benötigst Du eine Unix-Umgebung, z.B. einen SSH-Zugang zu deinem Server oder eine Lokale unix installation (cygwin könnte auch gehen)
Vorgehen
- mache eine Sicherung von allen Dateien und der Datenbank
- Besorge Dir die Voll-Version der installierten ECB und alle Updates bis zur aktuellen Version.
Annahme
Dein Shop der Version V1.0.4 befindet sich im Unter-Verzeichnis shop, die aktuelle gibt es eine ECB V1.0.8
Vorbereitung
- Du befindest dich im Verzeichnis welches das Shop-Verzeichnis enthält.
- Entpacke die Voll-Version der ECB Software - dieses wird in dem Unterverzeichnis ecombase ausgepackt.
- benenne das Verzeichnis ecombase um, neuer Name: ECB
- Entpacke alle Shop-Updates von V1.0.5 - V1.0.8 - die Reihenfolge ist wichtig - aufsteigend auspacken. Diese werden erneut in dem Verzeichnis ecombase ausgepackt.
- Wenn Dein Shop auf einem der beiden ECB-Templates (yaml / gunnart_v1) basiert so benenne das jeweilige Template Verzeichnis in ECB und ecombase auf deinen Template-Namen um.
Update
Speichere das u.a. Script als "EcbUpdateCheck" in dem aktuellen Verzeichnis, ändere die Dateirechte so, dass Du es ausführen darfst: chmod +x EcbUpdateCheck Rufe das Script auf - dabei gibst Du folgende Parameter an:
- Optionen - siehe unten
- Shopverzeichnis
Aufruf Beispiele
- ./EcbUpdateCheck MeinTemplate
- ./EcbUpdateCheck --patch MeinTemplate
- ./EcbUpdateCheck --patch --update MeinTemplate
Die Ausgabe sieht beim 1. Beispiel wie folgt aus:
diff ECB_V1.0/create_account.php html/create_account.php diff ECB_V1.0/checkout_shipping.php html/checkout_shipping.php diff ECB_V1.0/advanced_search_result.php html/advanced_search_result.php diff ECB_V1.0/inc/xtc_href_link_directurl.inc.php html/inc/xtc_href_link_directurl.inc.php diff ECB_V1.0/inc/bluegate_seo.inc.php html/inc/bluegate_seo.inc.php
Hier sind nun alle Dateien aufgelistet die im Update enthalten sind und gegenüber deinem Shop modifiziert wurden. Der ausgegebene Befehl macht nun einen Abgleich über die Dateien (Copy&Paste + Enter zum ausführen). Diese Änderungen solltest Du nun in der entsprechenden Datei im ecombase Verzeichnis einarbeiten. Nachdem Du alle Dateien überarbeitet hast kannst Du die Dateien aus dem ecombase Verzeichnis in dein Shop-Verzeichnis kopieren und den Updater ausführen - nun sollte der Shop auf der aktuellen Version laufen.
Optionen für das Script
Wenn Du dich mit 'patch' auskennst So kannst Du das Script mit folgenden Optionen ausführen:
- --patch - erzeugt ein "| patch -p1 ecomase" hinter der "diff" Ausgabe
- --update - führt das diff&patch aus - Du sollstest Wissen was z.B. die folgenden Ausgaben aus dem Patch bedeuten:
patching file ecombase/includes/modules/default.php Hunk #1 FAILED at 234. Hunk #2 succeeded at 282 (offset 1 line). Hunk #3 succeeded at 330 (offset 1 line). 1 out of 3 hunks FAILED -- saving rejects to file ecombase/includes/modules/default.php.rej
der Code
#!/bin/bash ###################################### # # compare ECB-Update files with # original shop file and # live shop file (may be modified) # # # Directory containing the orig shop version ecb=ECB if [ -z "$1" ]; then echo "usage: $0 <shopdir>" exit fi comp=$1 find ecombase/ -type f | while read f do # extract ecombase/ from filename o=$(echo $f | cut -c 10-) if [ -e $ecb/$o -a -e $comp/$o ]; then old=$(md5sum $ecb/$o | cut -d ' ' -f 1) new=$(md5sum $comp/$o | cut -d ' ' -f 1) if [ "$old" != "$new" ]; then cmd="diff $ecb/$o $comp/$o" if [ "$patch" ]; then cmd=$(echo $cmd | sed 's/^diff/diff -Naur/') cmd="$cmd | patch -p1 ecombase/$o" if [ "$update" ]; then eval $cmd else echo $cmd fi else echo $cmd fi fi fi done;