Ich würde keine Zweige archivieren. Anders ausgedrückt, Zweige archivieren sich. Sie möchten sicherstellen, dass die für Archäologen relevanten Informationen auf zuverlässige Weise gefunden werden können. Sie sind zuverlässig, da sie die tägliche Entwicklung unterstützen und dem Prozess der Erledigung der Arbeit keinen zusätzlichen Schritt hinzufügen. Das heißt, ich glaube nicht, dass die Leute daran denken werden, ein Tag hinzuzufügen, wenn sie mit einem Zweig fertig sind.
Hier sind zwei einfache Schritte, die der Archäologie und Entwicklung sehr helfen .
- Verknüpfen Sie jeden Aufgabenzweig mit einem zugehörigen Problem im Issue-Tracker mithilfe einer einfachen Namenskonvention .
- Verwenden Sie
git merge --no-ff
diese Option immer zum Zusammenführen von Aufgabenzweigen. Sie möchten, dass das Zusammenführungs-Commit und die Verlaufsblase auch nur für ein Commit ausgeführt werden.
Das ist es. Warum? Weil ich als Code-Archäologe selten anfange zu wissen, was an einem Zweig gearbeitet wurde. Viel häufiger ist es der Grund, warum in all den schreienden neun Höllen der Code so geschrieben ist?! Ich muss den Code ändern, aber er hat einige seltsame Funktionen, und ich muss sie rätseln, um zu vermeiden, dass etwas Wichtiges kaputt geht.
Der nächste Schritt besteht git blame
darin, die zugehörigen Commits zu finden und dann zu hoffen, dass die Protokollnachricht erklärend ist. Wenn ich tiefer graben muss, werde ich herausfinden, ob die Arbeit in einem Zweig erledigt wurde, und den Zweig als Ganzes lesen (zusammen mit seinem Kommentar im Issue-Tracker).
Sagen wir git blame
Punkte bei Commit XYZ. Ich öffne einen Git-Verlaufsbrowser (gitk, GitX git log --decorate --graph
usw.), finde Commit XYZ und sehe ...
AA - BB - CC - DD - EE - FF - GG - II ...
\ /
QQ - UU - XYZ - JJ - MM
Da ist meine Filiale! Ich weiß, dass QQ, UU, XYZ, JJ und MM alle Teil desselben Zweigs sind, und ich sollte in ihren Protokollnachrichten nach Einzelheiten suchen. Ich weiß, dass GG ein Merge-Commit sein wird und den Namen des Zweigs hat, der hoffentlich mit einem Problem im Tracker verbunden ist.
Wenn ich aus irgendeinem Grund einen alten Zweig finden möchte, kann ich ihn ausführen git log
und im Merge-Commit nach dem Zweignamen suchen. Es ist selbst in sehr großen Repositories schnell genug.
Das meine ich, wenn ich sage, dass Filialen sich selbst archivieren.
Das Markieren jedes Zweigs fügt unnötige Arbeit hinzu, um Dinge zu erledigen (ein kritischer Prozess, der rücksichtslos rationalisiert werden sollte), fasst die Tag-Liste (nicht von Leistung, sondern menschlicher Lesbarkeit) mit Hunderten von Tags zusammen, die nur sehr gelegentlich nützlich sind und nicht. Es ist sogar sehr nützlich für die Archäologie.
git checkout [rev] file