In einem herkömmlichen VCS kann ich verstehen, warum Sie keine ungelösten Dateien festschreiben, weil Sie den Build unterbrechen könnten. Ich verstehe jedoch nicht, warum Sie nicht aufgelöste Dateien in einem DVCS nicht festschreiben sollten (einige von ihnen verhindern tatsächlich, dass Sie die Dateien festschreiben).
Stattdessen denke ich, dass Ihr Repository für Push und Pull gesperrt sein sollte , aber nicht für Commits.
Das Festschreiben während des Zusammenführungsprozesses hat mehrere Vorteile (wie ich es sehe):
- Die tatsächlichen Änderungen der Zusammenführung sind im Verlauf.
- Wenn die Zusammenführung sehr umfangreich war, konnten Sie regelmäßige Festschreibungen vornehmen.
- Wenn Sie einen Fehler gemacht haben, ist es viel einfacher, ein Rollback durchzuführen (ohne die gesamte Zusammenführung wiederholen zu müssen).
- Die Dateien können als ungelöst markiert bleiben, bis sie als aufgelöst markiert werden. Dies würde ein Drücken / Ziehen verhindern.
Möglicherweise kann auch eine Reihe von Änderungssätzen als Zusammenführung fungieren, anstatt nur einer. Auf diese Weise können Sie weiterhin Tools wie verwenden git rerere
.
Warum wird das Festschreiben mit nicht aufgelösten Dateien verpönt / verhindert? Gibt es einen anderen Grund als die Tradition?
hg 1.6
nach einer Zusammenführung werden Dateien als ungelöst markiert. hg
wird nicht lassen Sie sich verpflichten , bis Sie sie als gelöst markiert haben (nicht notwendigerweise bedeutet , man muss sie eigentlich lösen, aber ich würde davon ausgehen , dass die Idee ist).
hg
tatsächlich eine Liste der Dateien, die als "gelöst" (mit hg resolve
) markiert wurden oder nicht . Wenn sich U
auf dieser Liste Dateien befinden , können Sie keine Commits ausführen.
hg resolve
wird speziell für Zusammenführungen mit Konflikten verwendet; Siehe selenic.com/mercurial/hg.1.html#resolve . Note that Mercurial will not let you commit files with unresolved merge conflicts. You must use hg resolve -m ... before you can commit after a conflicting merge.