2012-05-13 3 views
6

Ich arbeite manchmal mit Codeigniter, und nachdem ich die Entwicklung auf der lokalen Site fertig bin, muss ich die Dateien auf den Server migrieren. Alle Dateien im Ordner /config/ müssen geändert werden, damit sie mit den Servereinstellungen übereinstimmen. Es ist nicht richtig, ein komplettes Commit für diese Änderungen zu machen. Muss ich Git einfach dazu bringen, diese Dateien komplett zu ignorieren, oder gibt es eine Möglichkeit, diese Änderungen zu verfolgen und sie im richtigen Moment mit Git anzuwenden?Was ist der richtige Weg, um eine "Version für den Server" zu erhalten - mit nur Konfigurationsdateien geändert, in Git?

+0

Sie vielleicht ein git after_deploy Haken schreiben könnte, die das tun würde? – lenswipe

Antwort

7

Sie könnten immer versioniert:

  • zwei „Wert Konfigurationsdateien“, mit den richtigen Werten für jede Umgebung
  • eine Vorlage Konfigurationsdatei mit dem Wert Platzhalter in ihm (zum Beispiel @@[email protected]@)
  • ein Skript generiert die tatsächliche Konfigurationsdatei in Abhängigkeit von der aktuellen Umgebung
  • eine content filter driver die beim Auschecken wird das Skript auslösen, um das Rig zu generieren HT Konfigurationsdatei.

content filter driver

Hinweis: die Vorlage Konfigurationsdatei vermutet hat einen erkennbaren Inhalt (die Filter haben keinen Namen oder den Pfad der Datei). Siehe "Git equivalent of subversion's $URL$ keyword expansion" für mehr über die Begrenzung des Git Content Filtertreibers.

1

Es hängt von Ihren Bedürfnissen ab. In meiner Firma benutzen wir andere Annäherung. Wir haben verschiedene Umgebungen geschaffen (wo der Stern ist interner Projektname):..

  • Entwick - Website auf Domain läuft ** local.com *
  • Test - Website läuft auf Domäne Test *. company.com
  • beta -.. beta * company.com
  • Produktion - jede andere Domäne.

Basierend auf dem Domain-Namen wechseln wir automatisch Konfigurationen. Basicly config-Datei wie folgt aussieht:

<?php 
return array(
    '_env' => array(
    'devel' => array(
     // config for devel 
    ), 
    'production' => array(
     // config for production 
    ) 
) 
); 
?> 

Einige Rahmen (AFAIR Zend), um die Umgebungsnamen in Virtual Host config (oder .htaccess) gesetzt. Sie sollten sich ansehen: zend framework auto switch production staging test .. etc

Haben Sie sich CI-Dokumentation angesehen? Es gibt eine section darüber.

0

Erstellen Sie zwei Ordner im Ordner config. Einer heißt development und der andere ist production. Kopieren Sie nun config.php, database.php usw. in jeden dieser Ordner. Wenn Sie sich jetzt auf dem Produktionsserver befinden, überprüft CodeIgniter zuerst den Ordner production für die Dateien. Wenn es nicht vorhanden ist, wird die Standarddatei im Ordner config verwendet. Wenn Sie sich in der Entwicklungsumgebung befinden, überprüft CodeIgniter zuerst den Ordner development.

Wenn Sie möchten, dass eine Konfigurationsdatei mit der Produktions- und Entwicklungsumgebung identisch ist, behalten Sie sie im Ordner config.

Wenn Sie die Umgebung fügen Sie dann den folgenden Code in .htaccess-Datei festlegen möchten:

#This code for Development Environment 
SetEnv CI_ENV development 

und

#This code for Production Environment 
SetEnv CI_ENV production 
Verwandte Themen