Wie würden Sie dieses Szenario in git einrichten:
Meine Quelle hat eine Einstellungsdatei mit Konfigurationseinstellungen, wie z. B. db Verbindungsanmeldeinformationen, etc ... (Dies ist eine Drupal-Quelle und ich verweise auf settings.php)
Wenn Entwickler die Quelle klonen, müssen sie Einstellungen vornehmen, die für ihre Umgebung spezifisch sind. Diese Änderungen sollten natürlich nicht zum Ursprung zurückgeschoben werden. Und gleichzeitig möchte ich, dass sie mit dieser Standardvorlage arbeiten können (da die meisten davon nicht geändert werden).
Also .gitignore funktioniert hier nicht, weil ich es in ihrem ersten Klon will.
Muss ich jedem neuen Entwickler etwas über git update-index --assume-unchanged
beibringen?
Gibt es keinen besseren Weg, dies zu tun?
Ich würde database.php
zu database.php.sample
umbenennen und database.php
zu .gitignore
hinzufügen.
Wenn ein neuer Benutzer auftaucht, kopieren Sie einfach von database.php.sample
nach database.php
und nehmen Sie die entsprechenden Änderungen vor.
Ja, es gibt. Dies ist eine Lösung, die ich bereits veröffentlicht habe.
Verwenden Sie git add -N
auf database.php
dann git add -p
. Bearbeiten Sie das Hunk, um sensible Daten durch Platzhalter zu ersetzen.
Die eine Sache, die Sie im Nachhinein beachten müssen, ist, dass Sie niemals git add .
aus dem Stammverzeichnis des Repositorys nehmen sollten - aber niemand macht das, oder? ;)
Eine bessere Möglichkeit wäre, eine Filter-Treiber , mit einem Smudge-Skript :
Aufbauend auf Pedro Vorschlag (mit database.php
in .gitignore
), würden Sie:
database.php.sample
database.php
durch das Smudgeskript (in git checkout
), nur wenn das private database.php
noch nicht existiert. Ab Version 1.7.4 wird %f
in einer Filterdefinition durch den Pfad der aktuellen Datei ersetzt. Weitere Informationen finden Sie in der Hilfeseite .gitattributes
Tags und Links git