„Hallo, Amigo!“

"Hallo!"

„Heute erzähle ich Ihnen etwas über Versionskontrollsysteme.“

„Wie Sie wahrscheinlich bereits wissen, sind Programme oft sehr umfangreich und das Schreiben dauert sehr lange. Manchmal verbringen Dutzende von Menschen Jahre damit, ein Programm zu schreiben.“

„Projekte mit Millionen von Codezeilen sind Realität.“

„Wow.“

„Es ist alles sehr kompliziert. Die Leute stören sich oft gegenseitig und ändern oft denselben Code und so weiter und so fort.“

„Um Ordnung in dieses Chaos zu bringen, begannen Programmierer, Versionskontrollsysteme für ihren Code zu verwenden.“

Ein Versionskontrollsystem ist ein Programm, das aus einem Client und einem Server besteht.

„Das Programm speichert Daten (den von Programmierern geschriebenen Code) auf einem Server, und Programmierer ergänzen oder ändern sie mithilfe von Clients.“

„Der Hauptunterschied zwischen einem Versionskontrollsystem und Programmen, die lediglich die gemeinsame Arbeit an Dokumenten ermöglichen, besteht darin, dass alle vorherigen Versionen aller Dokumente (Codedateien) gespeichert werden.“

„Können Sie mir weitere Einzelheiten nennen. Wie funktioniert das alles?“

„Stellen Sie sich vor, Sie sind Programmierer und möchten kleine Änderungen am Quellcode eines Programms vornehmen, das in einem Repository auf dem Server gespeichert ist.“

„Das müssen Sie tun:“

„1) Melden Sie sich beim Server an.“

„2) Kopieren Sie die neueste Version aller Dateien mit dem Befehl „Auschecken“ auf Ihren Computer.“

„3) Nehmen Sie Änderungen an den erforderlichen Dateien vor.“

„4) Führen Sie das Programm lokal aus, um sicherzustellen, dass es kompiliert und ausgeführt wird.“

„5) Senden Sie Ihre ‚Änderungen‘ mit dem Commit-Befehl an den Server.“

„Das macht grundsätzlich Sinn.“

„Aber es gibt noch mehr. Stellen Sie sich vor, Sie kommen morgens zur Arbeit, aber in Indien ist es bereits Mittagszeit. Ihre indischen Kollegen haben also bereits Änderungen vorgenommen und ihre Änderungen in Ihr Repository auf dem Server übernommen.“

„Sie müssen mit der neuesten Version des Codes arbeiten. Führen Sie also den Update- Befehl aus.“

„Wie unterscheidet sich das von Checkout ?“

Checkout ist darauf ausgelegt, alle Dateien des Repositorys zu kopieren, aber Update aktualisiert nur die Dateien, die auf dem Server aktualisiert wurden, seit Sie das letzte Mal einen Checkout- / Update- Befehl ausgeführt haben.“

„So ungefähr funktioniert es:“

Kasse :

Versionskontrollsysteme - 1

„Nehmen wir an, wir haben Datei B geändert und möchten sie auf den Server hochladen. Dazu müssen wir den Commit- Befehl verwenden.“

Versionskontrollsysteme - 2

„Und so funktioniert der Update- Befehl:“

Versionskontrollsysteme - 3

„Wie interessant! Gibt es noch andere Befehle?“

„Ja, es gibt einige. Aber sie variieren je nachdem, welches Versionskontrollprogramm Sie wählen. Ich versuche also, nur die allgemeinen Prinzipien zu erklären.“

„Es gibt auch eine Operation namens Zusammenführen – die Vereinigung zweier Dokumente. Angenommen, zwei Programmierer ändern gleichzeitig dieselbe Datei. Dann lässt das Programm auf dem Server nicht zu, dass beide Änderungen festgeschrieben werden. Wer zuerst festschreibt, darf seine hinzufügen.“ oder ihre Veränderungen.

„Also, was macht die andere Person?“

„Er oder sie wird aufgefordert, einen Update- Vorgang durchzuführen , um die neuesten Änderungen vom Server abzurufen. Übrigens ist es eine gute Vorgehensweise, vor dem Festschreiben ein Update durchzuführen .“

„Während des Update-Vorgangs versucht das Client-Programm dann, die lokalen Änderungen mit den vom Server empfangenen Änderungen zusammenzuführen.“

„Wenn die Programmierer verschiedene Teile der Datei geändert haben, kann das Versionskontrollprogramm diese wahrscheinlich erfolgreich zusammenführen.  Wenn sich die Änderungen an derselben Stelle befinden, meldet das Versionskontrollprogramm einen Zusammenführungskonflikt und fordert den Benutzer auf, dies manuell durchzuführen.“ die Änderungen zusammenführen.

„Das passiert zum Beispiel oft, wenn beide Programmierer etwas am Ende einer Datei hinzufügen.“

„Ich verstehe. Insgesamt erscheint das vernünftig.“

„Und da ist noch etwas: Äste.“

„Stellen Sie sich vor, dass zwei Programmierer eines Teams die Aufgabe haben, dasselbe Modul neu zu schreiben. Oder noch besser: es von Grund auf neu zu schreiben. Bis dieses Modul abgeschlossen ist, kann das Programm nicht ausgeführt werden und wird möglicherweise nicht einmal kompiliert.“

„Was sollen sie also tun?“

„Sie kommen voran, indem sie Zweige zum Repository hinzufügen. Grob gesagt bedeutet dies, dass das Repository in zwei Teile geteilt wird. Nicht nach Dateien oder Verzeichnissen, sondern nach Versionen.“

„Stellen Sie sich vor , Elektrizität wurde nie entdeckt und Roboter wurden nie erfunden. Dann hätte es die drei Befreiungskriege nie gegeben und die gesamte Menschheitsgeschichte wäre einen völlig anderen Weg gegangen.

„Dieser Weg ist ein alternativer Zweig der Geschichte.“

„Oder Sie können sich einen Zweig einfach als eine Kopie des Repositorys vorstellen. Mit anderen Worten, wir haben irgendwann einen Klon des Repositorys auf dem Server erstellt, sodass zusätzlich zum Haupt-Repository (oft als Trunk bezeichnet ) ), wir haben eine weitere Filiale .

„Nun, das scheint verständlicher zu sein.

„Warum konnten Sie nicht einfach sagen, dass wir das Repository kopiert haben?“

„Das ist kein einfaches Kopieren.“

„Diese Äste lassen sich nicht nur vom Stamm trennen, sondern auch mit ihm verschmelzen.“

„Mit anderen Worten, einige Arbeiten können in einem Zweig erledigt werden, und wenn es fertig ist, können Sie den Repository-Zweig zum Repository-Stamm hinzufügen?“

"Ja."

„Und was passiert mit den Akten?“

„Die Dateien werden zusammengeführt.“

„Nun, das hört sich cool an. Ich hoffe, dass es in Aktion genauso cool ist.“

„Und noch mehr. Okay, lass uns eine Pause machen.“

„ Hier gibt es eine Menge nützlicher Informationen  “