Erkunden der Quellcodeverwaltung und Versionsverwaltung
Die Verwendung der Quell- und Versionssteuerung ist eine grundlegende DevOps-Praxis. Es ist auch eine Voraussetzung für praktiken wie kontinuierliche Integration und Infrastruktur als Code, von denen beide entscheidend sind, um das vollständige DevOps-Potenzial zu erreichen. Die Organisation in unserem Beispielszenario sollte ihre aktuelle Strategie für die Entwicklung von Software für die Zusammenarbeit und den Übergang zu einem verteilten Versionskontrollmodell wie Git überprüfen, insbesondere in Anbetracht der Pläne, GitHub für die Verwaltung des Softwarelebenszyklus zu verwenden. Dies erfordert jedoch ein solides Verständnis der Prinzipien der Versions- und Quellcodeverwaltung und deren Vorteile, die wir hier behandeln werden.
Quellcodeverwaltung und Versionsverwaltung
Die Begriffe Quellcodeverwaltung und Versionssteuerung werden häufig austauschbar verwendet, und in vielen Kontexten beziehen sie sich auf dasselbe Konzept. Im Allgemeinen sind beide mit der Vorgehensweise verknüpft, Änderungen an Code in einer gemeinsamen Entwicklungsumgebung zu verwalten. Es können jedoch differenzierte Szenarien auftreten, in denen ihre Bedeutung etwas anders ist. In diesen Szenarien legt Quellcodeverwaltung ein System fest, das Änderungen an Quellcodedateien verwaltet, während Versionssteuerung die Änderungsverwaltung eines beliebigen Dateityps für Zwecke umfasst, die über den Quellcode hinausgehen. In Zukunft verwenden wir aus Gründen der Konsistenz den Begriff Versionssteuerung, um Git-basierte Softwarerepositorys darzustellen, die in GitHub und Azure DevOps verfügbar sind.
Was sind die Vorteile der Versionssteuerung?
Die Versionssteuerung verfolgt Änderungen an Dateien innerhalb des Verwaltungsbereichs. Dies bietet eine vielzahl von Vorteilen:
Verlaufs- und Versionsverfolgung: Sie haben die Möglichkeit, den Verlauf der Änderungen an jeder Datei zu überprüfen, einschließlich der Möglichkeit, zu bestimmen, wann jede einzelne Änderung stattgefunden hat und was deren Umfang war. Dies bietet auch Rückverfolgbarkeit, in der Regel durch Zuordnen jeder Gruppe von Änderungen zu einem eindeutigen Bezeichner.
Rollback und Wiederherstellung: Wenn ein Fehler auftritt, können Sie Änderungen einfach rückgängig machen, um die bekannte und funktionierende Version der betroffenen Datei wiederherzustellen.
Verzweigung und Zusammenführen von: Wenn Sie die Funktionalität des aktuellen Codes erweitern müssen, indem Sie ein weiteres Feature hinzufügen oder einen neu entdeckten Fehler beheben, können Sie eine sogenannte Verzweigung erstellen, mit der Sie unabhängig von der vorhandenen Codebasis arbeiten können. Die neue Verzweigung ist zunächst mit dem Mainbranch identisch, der den aktuellen Code hostet. Nachdem Sie die Änderungen abgeschlossen haben, führen Sie die neue Verzweigung mit der Hauptzweigung zusammen. Dies kann zwar immer noch zu Konflikten führen (wenn ein anderer Entwickler beschlossen hat, denselben Satz von Dateien in der Zwischenzeit über eine andere Verzweigung zu ändern), aber sein Bereich ist begrenzt und kann in der Regel leicht identifiziert und gelöst werden.
Zusammenarbeit und parallele Entwicklung: Konfliktlösungsbestimmungen, die durch Verzweigung und Zusammenführung ergänzt werden, erleichtern das Arbeiten mehrerer Entwickler an derselben Codebasis, was die Effizienz erhöht. Mit verteilten Steuerungssystemen wie Git ist es sogar möglich, Code in einem getrennten Modus zu erstellen. Die Zusammenarbeit umfasst auch gegenseitige Peer-Überprüfungen von Pull-Anfragen, förderung des Wissensaustauschs und der Transparenz.
Automatisierung: Versionskontrolle ist ein wesentlicher Bestandteil der kontinuierlichen Integration und automatisierten Bereitstellung. Automatisierte Builds und Tests können automatisch ausgelöst werden, wenn eine neue Version des Codes an das Versionskontroll-Repository übertragen oder mit der Hauptzweigung zusammengeführt wird. Verschiedene Versionen des Codes können in verschiedenen Umgebungen bereitgestellt werden.