Versionierung – eine komplizierte Hilfe

Veröffentlicht von Lukas am

Git Bash: Versionierung unter Windows

Git Bash: Versionierung unter Windows

Versionierung in der Softwareentwicklung

Entwickelt man Software, dann ändert man häufig Dateien. Wenn man sich einmal das Beispiel eines Briefs ansieht kommt es oft vor, dass man die Dateien unter unterschiedlichen Namen oder mit Nummern abspeichert. Dies ist für viele der gängige Weg, um die Versionen auseinander halten zu können. Doch in der Softwareentwicklung ist dies nicht mehr praktikabel. Ein Projekt kann schnell mehrere tausend Dateien enthalten. Bei so vielen Dateien ist es unmöglich, die Dateien selbst zu verwalten. An dieser Stelle kannst Du Systeme einsetzen, die Dir diese Arbeit abnehmen. Diese Systeme sind auch für Teams von großer Bedeutung, denn diese entwickeln nicht nur an einem einzigen Rechner.

Was diese Systeme so besonders macht, wie die grundlegende Bedienung funktioniert und was man dafür braucht, das erfährst Du hier!


Wie versionierst du deine Dateien?

Ergebnisse    Archiv


Die Voraussetzungen, welche zu erfüllen sind

Damit Du mit der Versionierung beginnen kannst, brauchst Du einen Workspace. Dein Workspace ist Dein Arbeitsordner, wo Du später Dateien bearbeitest und anlegst. Ich habe mir hierfür direkt im Wurzelverzeichnis meiner Festplatte einen Ordner mit dem Namen Workspace angelegt. Hier rein synchronisiere ich ebenso meine Projekte, die auf dem Server liegen.

Der Hoster

Für die Versionierung Deiner Projekte, kannst Du auf Hoster zurückgreifen, welcher bereits die nötige Infrastruktur zur Verfügung stellt. Das prominenteste Beispiel ist GitHub. Auf GitHub kannst Du Deine Projekte in sogenannten Repositories anlegen. Diese Repositories sind öffentlich und können von jedem eingesehen werden, der Dich auf GitHub findet. Möchtest Du das nicht, musst Du Geld bezahlen, denn das Anlegen von privaten Repositories ist eine Premiumfunktion. Es ist jedoch für das verteilte Arbeiten eine sehr gute Möglichkeit, da die Daten auf der ganzen Welt erreichbar sind und Du dir nicht extra die Mühe machen musst, einen eigenen Server zu betreiben und zu verwalten. Auch wenn Dein Team wachsen sollte, bist du hier sehr flexibel.

Neben den einfach zu erreichenden Repositories hast Du die Möglichkeit, Deine Projekte schnell und unkompliziert zu präsentieren, da nahezu alle Entwickler zumindest von GitHub gehört haben oder dies gar selbst nutzen. Man kann also sagen, dass GitHub der wohl bekannteste Anbieter für Versionierung ist, den man auf dem Markt findet.

Der eigene Hoster

Möchtest Du Deine Projekte hingegen nicht bei einem der prominenten Hostern anlegen, kannst Du dies auch bei einem eigenen Webhoster machen. Einige Webhoster bieten neben einem Speicherort für Deine Website auch die Funktion, den Webspace als Git-Speicherort zu nutzen. Ich nutze für meine Projekte ebenfalls einen Webhoster, der mir diese Funktion zur Verfügung stellt. Dies hat den Vorteil, dass die Repositories zu jeder Zeit erreichbar sind, oft bereits Backups erstellt werden und Du Dich um nicht all zu viel selbst kümmern musst.

Jedoch gibt es bei dieser Möglichkeit eine Einschränkung. Für das Hochladen von Änderungen oder das Herunterladen von Projekten, benötigst Du einen Zugang über SSH zum Server. Meist hat man in seinem Webhosting-Paket hiervon nur einen einzigen, weshalb alle Entwickler über die Zugangsdaten zu diesem verfügen müssen. Entwickelst Du alleine und möchtest den Server nur wegen der Versionierung nutzen, ist dies jedoch kein Problem.

Vertiefe dein Wissen:  Homelab: Das ist meine Infrastruktur

Oder doch ein eigener Server?

Die letzte Möglichkeit besteht darin, dass man sich selbst einen Versionierungsserver installiert. Dies kann ein Raspberry Pi sein, ein NAS oder auch ein richtiger Server. Die Entwicklerdaten liegen jederzeit in deinem Netzwerk und Du musst diese nicht in fremde Hände geben. Doch wenn Du von außerhalb zugreifen möchtest, wirst Du auf Hindernisse stoßen. Denn das eigene Netzwerk ist im Normalfall nicht von außen erreichbar und sollte auch nicht geöffnet werden, sofern man sich nicht wirklich damit auskennt.

Allerdings bietet sich bei einem eigenen Server die Möglichkeit, dass Du für jeden Entwickler ein eigenes Benutzerkonto anlegen kannst, so dass Du jederzeit Änderungen den Accounts zuordnen kannst. Niemand muss sich hier einen Account teilen, was auch das Problem der Zugangsdaten löst.

Beachte bei dieser Möglichkeit, dass Du für den Server verantwortlich bist. Du musst selbst Backups anfertigen und Dich um den Server kümmern. Dieser braucht Updates und Pflege, denn das passiert nicht von allein.

Die Entscheidung

Welchen Weg Du schlussendlich gehst, musst Du selbst entscheiden. Niemand kennt Deine Anforderungen und Deine Wünsche so gut, wie Du selbst. Für den Anfang würde ich Dir zu GitHub raten, da Du dort schnell loslegen kannst und keine weiteren Einrichtungsarbeiten erledigen musst. Es genügt eine Registrierung und dann kann es auch schon losgehen. Wenn Du allerdings bereits einen Webspace hast, welcher die Funktion zur Verfügung stellt, dann wäre das eine Alternative. Hier musst Du meist auch keine großen Konfigurationen erledigen. Informiere Dich hierfür bei Deinem Webhoster und frage ihn, ob das in Deinem Paket zur Verfügung steht.

Was die Versionierung genau tut

Die Versionierung soll Dir den Überblick über Änderungen an Dateien erleichtern. Es werden unterschiedliche Versionen Deiner Datei gespeichert und Du kannst Dir die Änderungen anzeigen lassen. Solltest Du nun feststellen, dass Dir eine ältere Version der Datei besser gefällt oder die neuere Version einer Software nicht funktionieren, kannst Du ganz einfach eine ältere Version wiederherstellen.

Ebenso versieht man jeden Commit – das Speichern im lokalen Repository – mit einem Kommentar, so dass Du auch im Nachhinein noch nachvollziehen kannst, was sich an Deinem Workspace geändert hat. Hast Du beispielsweise eine Software geschrieben und eine neue Methode in den Quellcode eingefügt, wirst Du das in den Commit schreiben. Je mehr Informationen Du in den Commit packst, desto genauer lässt es sich nachvollziehen, was passiert ist. Genauso verhält es sich, wenn Du nach kleineren Änderungen schon Commits durchführst.

Nach dem Commit führst Du ein Push aus. Beim Push wird dein lokales Repository auf den Server geschoben, welcher Deine Versionen zu den anderen packt. Auf das zentrale Repository haben alle Entwickler – falls Du mit mehreren arbeitest – Zugriff und jeder sieht, was passiert ist. Entwickelst Du hingegen alleine, allerdings auf mehreren Rechnern, so kannst Du dieses zentrale Repository auch als Austausch zwischen Deinen Rechnern nutzen.

Vertiefe dein Wissen:  Raus aus der Cloud mit dem iPhone

Beispiel: Du arbeitest am Morgen an deinem Rechner und möchtest am Nachmittag auf dem Laptop im Garten weiter arbeiten. Nachdem Du deine Änderungen auf deinem Rechner gemacht hast, schiebst Du diese per Push auf den Server mit deinem Änderungskommentar. Nachdem Du an den Laptop gewechselt hast, holst Du Dir die aktuelle Version vom Server und hast den Stand deiner Entwicklung wieder zur Hand. Nun kannst Du problemlos weiter arbeiten ohne von Hand viel kopieren zu müssen. Das Versionierungssystem entscheidet hierbei eigenständig, welche Dateien es synchronisieren muss und welche nicht.

Einfach den Überblick behalten

Wenn Du viele Repositories auf Deinem Server angelegt hast, ist es oft ganz schön unübersichtlich sich per SSH zurechtzufinden. Hierfür kannst Du grafische Oberflächen nutzen. Einerseits hast Du die Möglichkeit Software auf Deinem Rechner zu installieren, andererseits kannst Du ein Webinterface auf dem Server installieren. Das Webinterface bietet hierbei den Vorteil, dass Du auf allen Rechnern ohne zusätzliche Software deine Repositories durchsuchen kannst.

Ein schickes und minimalistisches Webinterface ist beispielsweise GitList. Dieses wurde in PHP geschrieben und kann somit auf jedem Webserver ausgeführt werden, auch bei einem Webhoster. Mit GitList kannst Du durch Deine Repositories navigieren, Änderungen verfolgen und die Commit-Kommentare lesen. Derzeit nutze ich dieses Webinterface ebenfalls für meine Repositories bei meinem Webhoster. Hierbei habe ich das Interface über eine eigene Subdomain erreichbar gemacht, gleichzeitig allerdings auch durch Zugangsdaten geschützt. Somit kann ich selbst entscheiden, wer diese Repositories durchsuchen darf.

Doch nicht nur für Entwickler ist das Thema interessant

Bisher habe ich im Bezug auf Versionierung viel über Entwicklung geschrieben. Doch auch für Personen, die keine Software entwickeln, kann ein solches System interessant sein. Du kannst Deine Dokumente in Deinem Versionierungssystem speichern und ersparst Dir und Deiner Festplatte das Speichern von vielen Dateien mit jeweils kleinen Änderungen.

Hierfür legst Du Dir eine Repository an, speicherst Deine Dokumente darin und verfährst genauso, wie es Entwickler tun. Nachdem Du Deine Dokument in Dein Repository gepusht hast, kannst Du Änderungen ganz leicht einsehen und um Zweifel doch wieder zu einer älteren Version greifen.

Schlusswort

Ich beschäftige mich erst seit kurzem wirklich mit Versionierung, auch wenn ich schon länger die Vorzüge kannte. Doch ich kann nur jeder Person dazu raten, ein solches System einzusetzen, da es die Arbeit enorm erleichtert. Auch das Arbeiten über mehrere Rechner wird so zum Kinderspiel. Einzig und allein die lange Einarbeitungszeit, bis man alle Funktionen kennt und versteht, ist oft ein Hindernis. Doch wenn man sich über die Thematik informiert und bereit ist, ein wenig seiner wertvollen Zeit zu investieren, hat man sich sein digitales Leben um einiges erleichtert.

Hoffentlich werde ich noch einige interessante Erfahrungen machen, so dass ich ab und an noch etwas hierzu schreiben kann. Bis dahin wünsche ich jedem viel Erfolg beim Programmieren und viel Spaß mit der Versionierung von seinen Dateien.


Verweise zum Thema Versionierung

github.com: gehostetes Versionierungssystem

gitlab.com: Alternative zu GitHub

gitlist.com: Webinterface für Git-Repositories

git-scm.com: Git Grundlagen

thomas-krenn.de: Git Grundbegriffe


Edits:

09.09.17: Umfrage hinzugefügt


Avatar-Foto

Lukas

Als Softwareentwickler und Projektmanager mit einem Master of Science in Wirtschaftsinformatik weiß ich genau, wie die Dinge in der IT zu funktionieren haben. In meinem Blog kombiniere ich seit mehr als 7 Jahren mein Wissen mit meiner Neugier im Bereich Smart Home. Transparenz und Praxisnähe stehen für mich dabei im Vordergrund. Mein Fokus liegt vor allem auf der Software ioBroker, da ich mein eigenes Smart Home damit betreibe. Meine Beiträge basieren somit nicht nur auf theoretischem Know-how, sondern auch auf praktischen Erfahrungen aus meinem vernetzten Zuhause. Mein persönliches Ziel ist es, dir Einblicke in das Smart Home zu geben, die dich wirklich voranbringen.

0 Kommentare

Schreibe einen Kommentar

Avatar-Platzhalter

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert