Ich habe kürzlich begonnen, meinen Code der Versionskontrolle zu unterstellen (im Labor arbeite ich unter SVN und meine eigenen Codes in github (offensichtlich mit git)). Vor der Verwendung der Versionskontrolle habe ich so etwas gemacht. Ich hatte einen Ordner mit dem Namen der Bibliothek in vielen Ordnern mit der Versionsnummer. Jedes Mal, wenn ich anfangen wollte, an einer neueren Version zu arbeiten, habe ich eine Kopie der letzten Version erstellt, den Namen in die neue Version geändert und mit der Implementierung begonnen.
Dies scheint jedoch überflüssig zu sein, wenn der Ordner unter Versionskontrolle gestellt wird. Abgesehen von Redundanz würde jemand, der die neueste Version erhalten möchte, alle Versionen herunterladen, wenn er nur import
s / clone
s ist.
Jetzt sehe ich viele Möglichkeiten, dies mit der Versionskontrolle zu tun, aber da ich neu darin bin, weiß ich nicht, welche besser zu warten wären.
Methode 1: Verwenden von Tags
Wenn ich Tags richtig verstanden hätte, hätten Sie Ihren Hauptzweig, Sie schreiben fest, was Sie geändert haben, und versehen sie mit einer Version. Wenn Sie dann eine Arbeitskopie davon erhalten möchten, erhalten Sie die mit einem bestimmten Tag. (korrigiere mich wenn ich falsch liege)
Methode 2: Verzweigungsversionen
Bei dieser Methode wäre der Hauptzweig der Entwicklungszweig. Hin und wieder, wenn eine stabile Version erstellt wird (sagen wir v1.2.0
mal), erstellen Sie einen Zweig für diese Version und verpflichten sich nie dazu. Wenn Sie auf diese Weise eine bestimmte Version herunterladen möchten, erhalten Sie den Code aus diesem Zweig. Obwohl ich sagte, dass Sie sich nie dazu verpflichten, können Sie möglicherweise Fehlerbehebungen vornehmen und einen Commit für den Zweig einer alten Version durchführen, um die alte Version am Laufen zu halten. Wenn zum Beispiel die aktuelle Version ist v2.0
, aber es gibt Leute, die sie verwenden möchten v1.2
, können Sie einen anderen Zweig von bekommen v1.2
, nämlich v1.2.1
und die Fehlerbehebungen festschreiben, oder einfach die gleiche Version behalten wie v1.2
und nur die Fehlerbehebungen festschreiben.
Die Zweige würden also so aussehen:
v1.2.1 v1.2.2
/ /
v1.0.0 v1.2.0--------- v2.0.0
/ / /
-------------------------------------- dev
Auf diese Weise haben Sie Zweige für jedes kleinere Versionsupdate. (Beachten Sie, dass in der obigen Grafik v1.2.1 und v1.2.2 oder nach der Veröffentlichung von v2.0.0 erstellt wurden und daher nicht Teil der Entwicklung zwischen v1.2.0 und v2.0.0 waren. Stellen Sie sich dies als Unterstützung für ältere Versionen vor.)
Methode 3: Verzweigungsentwicklung
Diese Methode ist das Gegenteil der vorherigen. Der Hauptzweig wäre die neueste stabile Version. Wenn Sie an einer neuen Version arbeiten, erstellen Sie einen Zweig (für die Entwicklung), bearbeiten Ihren Code und führen ihn, wenn er stabil ist, mit dem Hauptzweig zusammen.
In diesem Fall sehen die Zweige folgendermaßen aus:
________ ____ ________________ _____ dev
/ \/ \/ \/
---------------------------------- latest_version
Wahrscheinlich muss dies in Verbindung mit Tags gemacht werden, oder?
Die Frage!
Wie auch immer, meine Frage ist, welche dieser Methoden erweist sich aufgrund Ihrer Erfahrung als praktikabler? Gibt es eine bekannte beste Methode (die ich möglicherweise nicht selbst herausgefunden habe)? Wie werden diese Dinge gewöhnlich gemacht?