Sollte ich die Django-Migrationsdateien in der .gitigore-Datei hinzufügen?
Sollte ich hinzufügen das Django-migration-Dateien in die .gitignore
- Datei?
Ich habe seit kurzem immer eine Menge von git-Probleme aufgrund von migration, Konflikte und Frage mich, ob ich sollte eine Kennzeichnung der migration-Dateien ignorieren.
Wenn ja, wie würde ich mich über das hinzufügen all die Wanderungen, die ich in meine apps, und indem Sie die .gitignore
Datei?
InformationsquelleAutor der Frage Michael Smith | 2015-01-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zitat aus dem Django-Migrationen-Dokumentation:
Wenn Sie diesen Prozess zu Folgen, Sie sollte nicht immer alle merge-Konflikte in der migration-Dateien.
Zur Abfederung etwaiger Probleme, die Sie derzeit haben, sollten Sie angeben, welche repository-oder Zweigniederlassung hat, die maßgebliche version der migration-Dateien, und verwenden Sie dann git ' s Attribut-Mechanismus zur Angabe der merge-Strategie "uns" für diese Dateien. Dies wird Ihnen sagen, git für immer ignorieren externe änderungen an diesen Dateien und lieber die lokale version.
InformationsquelleAutor der Antwort Sven Marnach
Nicht.
Ich habe über dieses viele Male und ich kann nicht für das Leben von mir, finden Sie einen Fall, wo wir brauchen, Migrationen in der repo.
Wie ich es sehe, ist der endgültige Datensatz des Schemas ist
models.py
. Wenn ich Zusammenführen, ändern und jemand zieht es, alles wird richtig sein, wenn Sie laufenmakemigrations
undmigrate
. Es gibt keine Notwendigkeit, zu definieren, was die Strategie der "unsrigen" ist für Migrationen.Wenn wir brauchen, um zurück Rollen, dann werden wir zurückkehren
models
und zu migrieren. Alles gut, keine Probleme, nie.Beschwert sich keiner, dass ein Feld bereits vorhanden ist, etc.
Ich Frage mich, ob jemand kann mir einen konkreten Fall, wo es einen Vorteil für mich zu haben, um Zusammenführen von einem anderen Entwickler Migrationen-Dateien vor, die ich bekommen kann, um zu arbeiten. Ich weiß, die docs sagen, ich soll, so nehme ich an, es ist so. Aber ich habe noch nie festgestellt, auch eine.
Jemand?
InformationsquelleAutor der Antwort Rob L
Können Sie Folgen Sie den unten Prozess.
Können Sie laufen
makemigrations
lokal und das schafft die migration-Datei. Begehen diese neue Migrations-Datei repo.Meiner Meinung nach sollten Sie nicht laufen
makemigrations
in der Produktion überhaupt. Sie können laufenmigrate
in der Produktion und Sie werden sehen, die Migrationen angewendet werden, die von der migration-Datei, die Sie begangen, von lokalen. Auf diese Weise können Sie vermeiden alle Konflikte.IN LOKALEN ENV zu erstellen, das die migration von Dateien,
Verpflichten sich, nun diese neu erstellte Dateien, so etwas wie unten.
IN der PRODUKTION ENVführen Sie nur die nachstehenden Befehl.
InformationsquelleAutor der Antwort AceLearn
Die Lösung in der Regel verwendet, ist, dass, bevor irgendetwas zusammengeführt master, muss der Entwickler ziehen Sie alle remote-änderungen. Wenn es einen Konflikt gibt in der migration-Versionen, die er umbenennen soll seine lokalen migration (die Fernbedienung wurde von anderen devs, und, potenziell, die in der Produktion), N+1.
Während der Entwicklung könnte es okay sein, nur nicht-Begehen Migranten (nicht fügen Sie einen ignorieren obwohl, nur nicht
add
). Aber wenn man einmal in Serie gegangen sind, benötigen Sie Sie, um das schema in sync mit Modell ändert.Anschließend müssen Sie die Datei Bearbeiten, und ändern Sie die
dependencies
auf die neueste remote-version.Dies funktioniert für Django-Migrationen, ebenso wie andere, ähnliche apps (sqlalchemy+alembic, RoR, etc.).
InformationsquelleAutor der Antwort WhyNotHugo
Zitat aus der 2018 docs, Django 2.0. (zwei separate Befehle =
makemigrations
undmigrate
)https://docs.djangoproject.com/en/2.0/intro/tutorial02/
InformationsquelleAutor der Antwort trthhrtz
Ich kann mir nicht vorstellen, warum würden Sie sich Konflikte, es sei denn, Sie Bearbeiten die Migrationen irgendwie? Das endet meist schlecht, wenn sich jemand findet einige intermediate begeht, dann werden Sie nicht ein Upgrade von der richtigen version, und die Kopie der Datenbank beschädigt werden.
Den Prozess, den ich verfolge ist Recht einfach - wenn Sie die Modelle für eine app, die Sie auch verpflichten, eine migration, und dann dass migration nicht ändern - wenn Sie etwas anderes in das Modell, dann ändern Sie das Modell und Begehen neue migration neben Ihren änderungen.
In greenfield-Projekten kann man oft löschen Sie die Migrationen und ganz von vorn beginnen mit einem 0001_ migration, wenn Sie loslassen, aber wenn Sie Produktions-code, dann können Sie nicht (obwohl Sie können squash-Migrationen nach unten in einem).
InformationsquelleAutor der Antwort Anthony Briggs
Fühlt sich an wie Sie würden anpassen müssen, git workflow, statt zu ignorieren Konflikte.
Ideal, jedes neue feature wird entwickelt, in einem anderen Zweig, und verschmolz wieder mit einem pull-request.
PR können nicht zusammengeführt werden, wenn es einen Konflikt gibt, also wer muss fusionieren seine Funktion braucht, um den Konflikt zu lösen, Migrationen enthalten.
InformationsquelleAutor der Antwort Sdra
Kurze Antwort
Ich schlage vor, ohne Migrationen in der repo. Nach dem code zusammenzuführen, führen Sie einfach
./manage.py makemigrations
und Sie sind alle gesetzt.Lange Antwort
Ich glaube nicht, dass Sie sich setzen sollte-Migrationen-Dateien in repo. Es verdirbt die migration Staaten in andere person die dev-Umgebung und andere Art und Stadium-Umgebung. (siehe Zucker-Tang ' s Kommentar für Beispiele).
In meiner Sicht der Zweck von Django-Migrationen ist, um Lücken zwischen früheren Modell Mitgliedstaaten und den neuen Modell-Staaten, und dann serialise die Lücke. Wenn Ihr Modell änderungen, die nach der code-merge, können Sie einfach tun
makemigrations
zu finden, aus der Lücke. Warum wollen Sie manuell und gezielt Zusammenführen anderen Migrationen, wenn Sie können das gleiche zu erreichen, automatisch und bug-frei? Django-Dokumentation sagt,; bitte halten Sie es so. Zum Zusammenführen von Migrationen manuell, müssen Sie vollständig verstehen, was der andere geändert haben und eine Abhängigkeit von den änderungen. Das ist eine Menge Aufwand und ist fehleranfällig. Also tracking-Modelle-Datei ist ausreichend.
Es ist ein gutes Thema auf den workflow. Ich bin offen für andere Optionen.
InformationsquelleAutor der Antwort Diansheng