Versionskontrollsystem „so einfach wie Türen“ oder wie man in ein paar Stunden den Umgang mit Git erlernt. In einem bestimmten Verzeichnis erstellen. GIT speichert eine vollständige Kopie des Repositorys lokal. Subversion führt einen Verlauf der Änderungen auf dem Server

💖 Gefällt es dir? Teilen Sie den Link mit Ihren Freunden

Lasst es uns herausfinden“, Was ist ein Versionskontrollsystem?” (VCS) und warum es so wichtig ist. Und schauen wir uns auch an Vergleich von Versionskontrollsystemen.

Versionskontrollsystem (VCS) ist ein System, mit dem Sie Änderungen an einer Datei (oder einem Satz von Dateien) im Laufe der Zeit aufzeichnen und später zu einer bestimmten Version zurückkehren können. Die Versionskontrolle kann für jede Art von Datei verwendet werden: entweder Software-Quellcode, Bilder, Seitenlayouts usw.

Verteiltes Versionskontrollsystem

Und in manchen Fällen kann es je nach Art des Problems, das der Server darstellt, dazu kommen, dass einige Dateiversionen beschädigt werden oder verloren gehen. Wir haben gesehen, dass wir in einem zentralisierten Versionskontrollsystem ein Problem hatten, bei dem Entwickler vom Server abhängig waren, und es bestand die Notwendigkeit, ein Versionskontrollsystem zu erstellen, bei dem jeder Entwickler eine Kopie von allem auf seinem Computer hatte. Hier entstanden verteilte Versionskontrollsysteme. Im Gegensatz zu zentralisierten Systemen, bei denen Kopien von Versionen auf dem Server liegen, funktionieren verteilte Versionskontrollsysteme so, dass Clients keine Kopien von Dateien für Versionen, sondern auch Kopien von Dateiversionen erstellen.

Die Verwendung von VCS (VCS) ermöglicht es, Dateien in den Zustand vor Änderungen zurückzusetzen, zu sehen, wer zuletzt Änderungen vorgenommen hat (und dadurch das Problem verursacht hat) und vieles mehr. Einfach ausgedrückt, wenn Sie etwas verletzt haben (z. B. verloren haben). erforderliche Datei, Änderungen vorgenommen, die zu Fehlern geführt haben), dann können Sie in aller Ruhe alles korrigieren.

Mit anderen Worten: Jeder Entwickler verfügt über eine Kopie aller Versionen der Dateien, sodass die Arbeit unabhängig vom Server bleibt und die Arbeit auch dann fortgesetzt wird, wenn der Server nicht mehr funktioniert. Mit verteilten Versionskontrollsystemen können Sie arbeiten verschiedene Gruppen Menschen, während sie gleichzeitig am selben Projekt arbeiten.

In diesem Artikel haben wir die Bedeutung von Versionskontrollsystemen gesehen und wie sie die Gesamtorganisation und Qualität unserer Arbeit verbessern und Diskussionen und andere häufige Probleme zwischen Teams reduzieren können. In diesem Artikel werden wir die verfügbaren Versionskontrolllösungen diskutieren, die Vor- und Nachteile der Verwendung eines Versionskontrollsystems diskutieren und ein Beispiel für die Verwendung eines Versionskontrollsystems in Webprojekten vorstellen. Die Schwierigkeit, Änderungen am Software-Quellcode zu verwalten, zu überwachen und zu synchronisieren, wenn mehrere Entwickler an einem Projekt beteiligt sind, ist ein wiederkehrendes Problem und hat seine eigenen einzigartigen Merkmale in der Entwicklung von Websystemen.

Ein einfaches Beispiel für die Verwendung der Versionskontrolle wäre das einfache Kopieren von Dateien in ein separates Verzeichnis (möglicherweise sogar mit Zeitstempel). Dieser Ansatz ist sehr verbreitet und gleichzeitig sehr fehleranfällig (Sie können die falschen Dateien kopieren, sich in Verzeichnissen verlieren und Änderungen an den falschen Stellen vornehmen). Um dieses Problem zu lösen, verwenden Sie lokale SVCs (lokaler SLE) mit einer einfachen Datenbank, die alle Änderungen an Dateien aufzeichnet.

Die Softwareentwicklung erfolgt fast immer im Team und kontrolliert die Änderungen jedes Entwicklers, um die Integrität zu gewährleisten Quellcode Software ist ein wiederkehrender Bedarf. Daher kann die Verwendung eines Tools, das es mehreren Benutzern ermöglicht, gleichzeitig Änderungen vorzunehmen, zu einem verbesserten Entwicklungsprozess führen.

Ein kollaboratives Versionskontrollsystem ist ein Tool zur Verwaltung der kollaborativen Softwareentwicklung, das es einem Entwicklerteam ermöglicht, an einem Satz Quelldateien zu arbeiten, sodass Änderungen integriert und in einem Repository gespeichert werden, das alle diese Änderungen speichert.

Beispiel eines lokalen Versionskontrollsystems − R.C.S..

Zentralisiertes Versionskontrollsystem SVN (Subversion), CVS und Perforce

Bei der Interaktion mit anderen Entwicklern ist die Verwendung eines lokalen Versionskontrollsystems nicht mehr geeignet. Zu diesem Zweck wurde ein neuer Typ erfunden SLEZentralisiertes Versionskontrollsystem (CSKV). Solche Systeme verfügen über einen einzigen Server, der alle Dateiversionen enthält, und Clients empfangen diese Dateien. Beispiele für CSCVs sind SVN-Versionskontrollsystem (Subversion), CVS Und Notgedrungen.

Wir werden eine Fallstudie vorstellen, die die für diese Integration verfügbaren Tools, die Verwendungsmöglichkeiten, Vorteile und möglichen Einschränkungen dieser Integration sowie die Verbesserungsmöglichkeiten des verwendeten Tools demonstriert. Versionskontrollsysteme.

Teamarbeit in einem Softwareprojekt erfordert einen Prozess zur Verwaltung von Ressourcen, Personen, Zeit, Anforderungen und Ergebnissen. Dies unterscheidet sich nicht vom Quellcode der Software, die entwickelt oder gewartet wird. Obwohl dies ein weiterer Aspekt ist, der während des Entwicklungszyklus überwacht werden muss, gibt es einige Einschränkungen. Im Gegensatz zu Menschen, Anforderungen und Materialien unterliegt der Software-Quellcode während des Entwicklungsprozesses täglich mehreren Änderungen. Abhängig von der Größe des Teams kann das Änderungsvolumen Tausende erreichen.


Alle Entwickler CSKV wird (bis zu einem gewissen Grad) herausfinden können, was andere Entwickler tun. Administratoren haben die volle Kontrolle über das Projekt: Sie können steuern, wer was tun darf.

Trotz der Tatsache, dass ein zentralisiertes Versionskontrollsystem eine Reihe von Vorteilen bietet lokales System Die Versionskontrolle weist schwerwiegende Mängel auf. Wenn der Server für einen bestimmten Zeitraum ausfällt, können Clients die Versionskontrolle nicht verwenden, um Änderungen zu speichern und diese Änderungen mit anderen Clients zu teilen. Oder wenn die Daten auf dem Server verloren gehen (z. B. die Festplatte), dann geht das gesamte Projekt verloren.

Diese Änderungen müssen nicht nur umfangreich sein, sondern auch reversibel und harmonisch integriert sein und die Codeintegrität gewährleisten. All dies manuell durchzuführen ist ein komplexer Prozess, der fehleranfällig ist und oft unmöglich wird, wenn das Team verteilt und zu groß ist oder das Änderungsvolumen erheblich ist. In diesen Fällen ist es am wichtigsten, dass ein Tool verwendet wird, mit dem Sie diese Verwaltung automatisieren können.

Bei den meisten Softwareprojekten sind verschiedene Entwickler beteiligt, die über einen langen Zeitraum gleichzeitig an verschiedenen Dateigruppen arbeiten. Daher ist es wichtig, dass alle von verschiedenen Entwicklern vorgenommenen Änderungen gespeichert und nachverfolgt werden, um aufzuzeichnen, wer was wann getan hat. Die Identifizierung der für die Änderung verantwortlichen Person ermöglicht eine Zuweisung der Verantwortung sowie einen direkten Bezug bei Selbstzweifeln. Wichtiger als die Kontrolle darüber, wer was getan hat, um verschiedene Änderungen in ein Ergebnis zu integrieren, ist, dass die Zusammenarbeit tatsächlich konstruktiv auf ein gemeinsames Endergebnis hinarbeitet und nicht auf parallele unvollständige Ergebnisse.

Dezentrales Versionskontrollsystem Git, Mercurial, Bazaar, Darcs

Um das Problem zentralisierter SVNs zu lösen, verwenden Sie einen anderen Typ SLE. Dezentrales VCS (DSKV)- Clients kopieren das gesamte Repository, anstatt einfach einen Snapshot aller Dateien herunterzuladen (den Status der Dateien zu einem bestimmten Zeitpunkt). In diesem Fall kann bei einem Serverausfall das Client-Repository auf einen anderen, funktionierenden Server kopiert werden, da dieses Repository eine vollständige Sicherung aller Daten darstellt.

Die Hauptfunktionen eines Versionskontrollsystems bestehen darin, den Verlauf und den entsprechenden Status der im Laufe der Zeit an Dateien vorgenommenen Änderungen zu bewahren und die Beiträge der verschiedenen Entwickler, die am Projekt arbeiten, zu integrieren. Diese Fallstudie wurde im Rahmen der Entwicklung eines Content-Management-Systems für einen großen Privatkunden durchgeführt. An der Entwicklung dieses Projekts waren fünf Personen beteiligt, darunter Analysten, ein Teamleiter, Anwendungsentwickler, die auf dem Server arbeiten, sowie Programmierer für Front-End- und Browser-Interaktion.

Es gibt viele Dateiversionskontrollsysteme. Welches ist besser? Was soll man wählen – GIT oder Subversion?

Jeder Entwickler steht früher oder später vor der Notwendigkeit, Änderungen in Softwareprojektdateien zu verfolgen und entscheidet sich für ein Versionskontrollsystem.

Für dieses Projekt haben wir einige Versionskontrollsysteme analysiert, die verwendet werden könnten. Lokale und Remote-Repository-Konzepte und eine breite Palette von Funktionen über Befehlszeile Bringen Sie sehr nützliche Ressourcen in das Team, aber für die Beteiligten und das betreffende Projekt ist ein tieferes Verständnis des Versionskontrollprozesses erforderlich, das wir brauchen schnelle Entscheidung, was eine Mindestbefehlsebene erfordern würde. Abbildung 2 zeigt den Startbildschirm der auf dem Server installierten Anwendung.

Außer der Installation des Assistenten sind praktisch keine weiteren Schritte erforderlich. Sowohl das Plugin als auch der Versionskontrollserver wurden von derselben Firma entwickelt, was ein Faktor für die nahtlose Integration war. Normalerweise stoßen wir im Softwareentwicklungsprozess auf einige Probleme wie die Versionsspeicherung und die gemeinsame Nutzung von Quellcode durch mehrere Entwickler. Es ist immer noch möglich, kleine Unternehmen oder Teams mit wenig Reife zu finden, die „Versionskontrolle“ durch einen manuellen Prozess und die gemeinsame Nutzung eines Netzwerkordners nutzen.

Versionskontrollsysteme werden nicht nur von Programmierern verwendet. Tatsächlich werden sie für jeden nützlich sein, der gerne noch einmal zurückgehen und weitere Rezensionen lesen möchte frühere Version Dokument oder Datei, die geändert wurde. Im Wesentlichen handelt es sich bei der beliebten Dropbox um ein Dateiversionskontrollsystem.

In diesem Artikel werde ich die Hauptunterschiede zwischen dem Steuerungssystem auflisten GIT-Versionen von der konservativeren und vielen vertrauten Subversion.

Diese Vorgehensweise ist mit viel verschwendeter Arbeit verbunden, insbesondere wenn mehrere Entwickler an demselben Projekt arbeiten, und ist aufgrund der hohen Komplexität bei der Versionsklassifizierung und der Verwirrung bei der Definition unpraktisch aktuelle Version, sowie bei der Versionsintegration, wenn Sie Zugriff auf dieselbe Datei haben.

Mit der Versionskontrolle werden diese Versionierungsaktivitäten automatisiert und die grundlegenden Befehle stehen dem Versionierungsvorgang im Plugin zur Verfügung. Dieser Befehl wird verwendet, wenn Sie mit der Versionierung einer Anwendung beginnen.

GIT speichert eine vollständige Kopie des Repositorys lokal. Subversion führt einen Verlauf der Änderungen auf dem Server

In Subversion wird das Repository auf einem Server gespeichert – nur die neuesten Versionen der Dateien werden auf dem Computer gespeichert. GIT speichert auf Ihrem Computer Vollversion die gesamte Geschichte der Veränderungen.

Dieser Unterschied verändert grundlegend die Fähigkeit, mit Dokumenten zu arbeiten.

Es kann für beides verwendet werden bestehende Anwendungen, und für Anwendungen, deren Entwicklung noch am Anfang steht. Update: Ermöglicht Entwicklern mit Zugriff auf das Repository das Hochladen letzte Version Anwendung, die entwickelt wird, wie in Abbildung 3 mit der hervorgehobenen Elementnummer 1 und in Abbildung 4 mit der hervorgehobenen Elementnummer dargestellt.




Diese Aktion wird mit dem Befehl „Sperre freigeben“ ausgeführt, wie in Abbildung 4 unter der hervorgehobenen Elementnummer 6 dargestellt. Verlauf anzeigen: Ermöglicht Entwicklern, den Änderungsverlauf einer Datei oder eines Ordners zu überprüfen. Dieser Verlauf zeigt die im Laufe der Zeit vorgenommenen Änderungen und zeigt den Autor, die Textnachricht, die der Autor beim Festschreiben gesendet hat, das Datum und eine numerische Revisions-ID an. Für jedes aufgelistete Element können detailliertere Informationen zu dieser Änderung angezeigt werden, die die geänderten linearen Änderungen anzeigen, wie in Abbildung 4 in hervorgehobenem Element Nr. 5 dargestellt.

Sie benötigen keinen Zugriff auf den Server, um eine geänderte Datei in der Versionskontrolle zu speichern

Mit einem Versionskontrollsystem können Sie nur die darin gespeicherten Änderungen vergleichen und wiederherstellen. Subversion erfordert Netzwerkzugriff auf den Server, um eine geänderte Datei im Repository zu speichern (festzuschreiben). GIT kann jederzeit eine neue Version einer Datei speichern.

Es ist möglich, dass das Projekt versioniert ist, aber es gibt Dateien, die Teil des Projekts sind und nicht in den Versionskontrollprozess einbezogen werden. Diese Möglichkeit besteht, weil es einige Dateien geben kann, die nicht benötigt werden oder nicht versioniert werden können und daher nicht in die Versionierung einbezogen werden. Während des Aktualisierungs- oder Commit-Vorgangs stellen Sie möglicherweise fest, dass dieselbe Datei von verschiedenen Entwicklern geändert wurde.

Es bleibt dem Entwickler überlassen, ob seine Kopie oder die Version eines anderen Entwicklers als Masterkopie behalten wird. Ein unverzichtbares Werkzeug in der modernen Softwareentwicklung ist eine Art Versionskontrollsystem. Versionskontrollsysteme ermöglichen Ihnen die Nachverfolgung Ihrer Software an der Grundlinie. Sie können Änderungen verfolgen, zu früheren Schritten zurückkehren und verzweigen, um alternative Versionen von Dateien und Verzeichnissen zu erstellen.

Wenn Dateien lokal vorhanden sind, wird GIT schneller

Das stimmt – für die meisten Dinge, die Sie tun werden, ist GIT schneller, da alles lokal auf Ihrem Computer geschieht. Natürlich, wenn Sie Änderungen am Repository weiterleiten Remote-Server, das wird einige Zeit dauern. (Und ein Versionskontrollsystem nur auf Ihrem Computer zu belassen, ist nicht sehr klug – vor allem, wenn Sie es haben kostenloses Hosting für Versionskontrollsysteme). Das Übertragen neuer Dateiversionen sowie das Vergleichen und Anzeigen von Änderungen erfolgt jedoch fast sofort.

Sehen wir uns in zwei Schritten an, wie die Software installiert wird verschiedene Wege, von denen jedes seine eigenen Vorteile hat. In diesem Tutorial wird davon ausgegangen, dass Sie als angemeldeter Benutzer angemeldet sind. Hier erfahren Sie, wie Sie ihn erstellen. Das ist das meiste schneller Weg, aber die Version ist möglicherweise älter als die neueste Version. Anschließend können Sie das Programm herunterladen und installieren. Sie müssen weiterhin die Einrichtungsschritte befolgen, die wir im Abschnitt „Einrichtung“ beschrieben haben. Sie können dies also vorerst überspringen.

Dies dauert länger und wird vom Paketmanager nicht unterstützt, ermöglicht Ihnen jedoch das Herunterladen der neuesten Version und gibt Ihnen eine gewisse Kontrolle über die Optionen, die Sie hinzufügen, wenn Sie Anpassungen vornehmen möchten. Dies ist in den Standard-Repositorys verfügbar, sodass wir unseren lokalen Paketindex aktualisieren und dann die Pakete installieren können. Die Version, die Sie sehen, wenn Sie zur Projektseite gelangen, ist der Zweig, an dem aktiv gearbeitet wird.

GIT speichert „Nuggets“ von Dateien in komprimierter Form. Subversion speichert Änderungen in Dateien

Für den Anwender ist dies ein grundlegender Unterschied, da das erhaltene Ergebnis identisch ist.

GIT gewährleistet die Dateiintegrität

Für alle Dateien, die zur Versionskontrolle gespeichert werden, verwendet GIT den SHA1-Hash. In der Praxis wird dadurch die Möglichkeit ausgeschlossen, eine Datei zu ändern, ohne dass das Versionskontrollsystem dies bemerkt.

Entpacken Sie die heruntergeladene Datei und navigieren Sie durch Eingabe zum resultierenden Verzeichnis. Sie können das Paket nun kompilieren und installieren, indem Sie die folgenden zwei Befehle eingeben. Dadurch wird in Ihrem aktuellen Verzeichnis ein neues Verzeichnis erstellt, in dem Sie das Paket neu kompilieren und neu installieren können letzte Version wie du es oben getan hast. Dies führt zu einem Überschreiben alte Version mit der neuen Version.

Wir können fortfahren und diese Informationen durch Eingabe hinzufügen. Wir können alle Konfigurationselemente sehen, die durch Eingabe definiert wurden. Wie Sie sehen, hat dies ein etwas anderes Format. Die Informationen werden in einer Konfigurationsdatei gespeichert, die Sie manuell bearbeiten können Texteditor auf die folgende Weise.

Es ist sehr schwierig, mit GIT Daten zu verlieren

Da alle Änderungen tatsächlich auf Ihrem Computer gespeichert werden und alle Änderungen, die GIT tatsächlich nur zum Repository hinzufügt, ist es sehr schwierig, etwas zu verlieren. Wenn Sie die geänderte Datei im Repository gespeichert haben, können Sie sie jederzeit wiederherstellen aktuellen Zustand. Und wenn Sie das Repository mit dem Befehl git push auf einem Remote-Server gespeichert haben, geht die Wahrscheinlichkeit, die Datei zu verlieren, gegen Null.

Ehrlich gesagt hat mir GIT wirklich gut gefallen. Durch die Verwendung dieses Systems werden einige Einschränkungen beseitigt, die mit Subversion nur schwer zu implementieren sind. Beispielsweise ist die Speicherung eines Repositorys auf verschiedenen Servern möglich, aber schwierig zu implementieren, und in GIT gehört dies zur Standardfunktionalität. Andererseits kann die Verwendung von Subverison in manchen Situationen einfacher sein. Und jedes Versionskontrollsystem ist eine ganz erhebliche Verbesserung gegenüber keinem Versionskontrollsystem.



Freunden erzählen