2016-06-07 12 views
1

Ich habe jetzt ein bisschen Probleme und ich weiß nicht weiter. Wir haben kürzlich von SVN zu GIT gewechselt. Wenn wir eine Website erstellen, möchten wir, dass sie unter Versionskontrolle steht.Verwendung von GIT auf Live-Servern

Für diesen Fall ist GIT auf allen unseren Kunden-Webspaces zunächst bereits installiert. Die Idee ist, lokal zu entwickeln, die Seite weiter zu entwickeln und nach einer Änderungsanfrage diese auf dem Live-Server "zu veröffentlichen".

Für diesen Fall haben wir unsere eigene gitlab -Instance installiert, wo der Code bereitgestellt wird. Jetzt ist alles soweit in Ordnung.

Aus Sicherheitsgründen habe ich gelesen, dass Sie keine Konfigurationsdateien zur Versionskontrolle hinzufügen sollten. In meinem Beispiel rufen wir die Datei config.php auf. Also habe ich diesen Dateinamen zu meinem .gitignore hinzugefügt und es funktioniert wie erwartet. Jedoch, Wenn Sie wollen, dass andere auch auf dem Projekt entwickeln, wie gehen Sie damit um? Schreiben Sie in eine README auf, wie man eine config.local.php einrichtet und diese Akte in Ihre Hauptkonfigurationsdatei einbaut?

Weiter: Es gibt bestimmte Dateien und Ordner, die vorhanden sein müssen, auch wenn sie leer sein können. Als Beispiel haben wir einen "temp" -Ordner. Ich brauche den Ordner, um dort zu sein, aber der Inhalt ist irrelevant. Ich habe versucht, diese Linie zu .gitignore hinzuzufügen, aber das hat nicht funktioniert:

/temp/* 

Von meinem Verständnis, dass nur Dateien in der Ordner ausschließen sollte, nicht der Ordner selbst, nicht wahr?

Dann noch einmal, und das ist meine letzte Frage: Wenn aus irgendeinem Grund der Kunde/Besitzer Sachen in seiner CSS-Datei (s) ändert, sind Sie nicht mehr synchron, oder? Sie können die zuletzt eingecheckten Dateien nicht einfach ziehen/holen, ohne Probleme zu haben (wenn Sie auch Ihre CSS-Datei bearbeitet haben), da sie in einem Konflikt enden würden. Was ist der Weg dorthin? Ich habe schon einmal von einer vollständigen Synchronisierung gelesen, aber das schützt mich nicht davor, wieder in dieselbe Situation zu geraten, richtig?

Wenn dies nicht die richtige Plattform zu fragen ist, bitte sagen Sie mir. Dank

Antwort

2

Frage 1: Wenn Sie ein leeres Verzeichnis in Ihrem Repository wollen (temp, log) Sie Muss Ort eine Datei dort, die Sie in das Repository hinzufügen. Git verfolgt keine Verzeichnisse, nur Dateien.

Sie können einen leeren .gitkeep in jedem Ordner haben. Aber der Name spielt keine Rolle. Sie könnten auch einen .gitignore in jedem leeren Ordner verwenden.

Frage 2: Es ist nichts falsch daran, Dateien in Ihrem Repository zu konfigurieren. Du musst nur vorsichtig sein mit Geheimnissen. Passwörter für den Datenbankzugriff sollten natürlich geheim sein, aber abhängig von Ihrer Situation könnten auch Adressen von Diensten sein.

Wenn Sie GitLab CI für die Bereitstellung verwenden, können Sie die Konfiguration aus Umgebungsvariablen lesen und diese in GitLab (Projekt -> Einstellungen -> Variablen) festlegen. Diese Variablen sind nicht öffentlich.

Frage 3: Der Kunde könnte einen benutzerdefinierten Zweig haben, den er bei jedem Update des Projekts neu erstellen muss. Sie könnten benutzerdefinierte CSS-Dateien in Ihrem Projekt implementieren, dh das Hochladen der benutzerdefinierten CSS-Datei über eine Konfigurations-/Verwaltungsseite.