Programmieren im Team: Versionierung

Programmieren im Team – Versionierung

Je größer deine Programme und Projekte werden, umso mehr wirst du irgendwann mit einem Team programmieren. Dafür gibt es ein paar Regeln und Methoden um sich erstens, die Arbeit gegenseitig nicht kaputt zu machen und zweitens die Arbeit so zu managen, dass sich keiner in die Quere kommt(und evtl. etwas doppelt programmiert). Nur so schafft ihr es, das Programm zu entwickeln welches ihr euch vorstellt und dies in einer akzeptablen Zeit. Zwei Themen und passende zwei Technologien möchte ich dir heute kurz vorstellen, damit du weißt was im Team auf dich zukommt.

Was ist Versionierung? Hier gibt es zwei Anwendungsfälle, zum einen solltest du deine Software in verschiedenen Versionen veröffentlichen. So können deine Nutzer immer sehen welche Version sie benutzen und prüfen ob es Updates gibt. Das andere ist das Programmieren zusammen mit deinen Teamkollegen. Stell dir mal vor du und dein Kollege arbeiten an einem Feature (weil dieses viel Arbeit macht). Jeder von euch hat eine Kopie des gesamten Quellcodes, oder ihr arbeitet gemeinsam auf einem Server. Und nun passiert es: Ihr bearbeitet die gleiche Datei; und das auch noch gleichzeitig. Wer jetzt zuerst abspeichert hat seine Änderungen drin, der andere kann von vorne beginnen. Damit so etwas nicht passiert, gibt es Versionsverwaltungssysteme wie Subversion und Git.

Subversion

Subversion oder kurz SVN ist ein zentrales Tool zum Verwalten des Quellcodes. Somit brauchst du einen Server auf dem der Subversion-Server läuft. Jeder der dann damit arbeiten möchte braucht einen SVN-Client. Diese gibt es grafisch, aber auch auf Kommandozeilenebene. Ist der Server einmal eingerichtet gibt es ein paar Workflows um mit dem Quellcode und SVN zu arbeiten. Hier eine Auflistung der Kommandozeilenbefehle und eine kurze Erklärung dazu.

Neuen Quelltextordner im SVN erstellen

Mit svn mkdir kann man auf dem Server einen neuen Ordner anlegen. Von diesem Ordner kann man sich nun eine Arbeitskopie holen und Dateien hinzufügen.

Arbeitskopie holen

Mit svn checkout kann man sich eine Arbeitskopie vom SVN-Server holen, das heißt wenn du noch keine Arbeitskopie hast, verwendest du svn checkout.

Arbeitskopie speichern

Hast du deine Änderungen gemacht und möchtest diese auf dem Server sichern, verwendest du svn commit -m „Dein Kommentar zur Änderung“. Der Parameter -m steht für Message. Das heißt jede Änderung, die du einpflegst, musst du mit einem Kommentar bestücken.

Quelltextdateien hinzufügen und löschen

Wenn du neue Dateien hinzufügen oder löschen möchtest verwendest du svn add und svn delete. Hier musst du darauf achten, dass du deine Änderungen noch mit svn commit speichern musst! Ansonsten hast du die Dateien nur in deiner Arbeitskopie als hinzugefügt oder gelöscht markiert.

Arbeitskopie aktualisieren

Wenn du mit mehreren Kollegen an einem Projekt arbeitest, kann es durchaus öfter vorkommen, dass du mal einen neuen Stand des Quellcodes benötigst. Diesen aktualisierst du mit svn update. Jetzt kommt’s, SVN wird nun die aktuellste Kopie auf dem SVN-Server herunterladen und mit deinen Änderungen zusammenfügen. Im Regelfall funktioniert dies super. In gewissen Ausnahmen kann es aber zu Problemen kommen, dann markiert dir SVN, die Dateien mit einem Konflikt.

Konflikte

Konflikt bedeutet lediglich, dass du und dein Kollege die selbe Codezeile verändert haben. Nun musst du mit deinem Kollegen sprechen und klären was dort passiert ist. Hier ist Kommunikation das Zauberwort! Manchmal ist es aber auch direkt ersichtlich, was passiert ist und man kann den Konflikt von alleine lösen. Ist der Konflikt gelöst führst du den Befehl aus: svn resolve deineDatei.code. Beim resolve musst du immer die Datei mitangeben.

Zweige (Branch und Merge)

Wenn es öfter zu Konflikten kommen sollte, liegt dies daran, dass du und dein Kollege zu nah an den selben Features arbeitet. In diesem Fall ist es vielleicht sinnvoller einen Entwicklungszweig zu erstellen. Ein Zweig also ein Branch ist eine Kopie eines Ordners, welche aber später wieder in den ursprünglichen Ordner zusammengeführt werden kann. Dies macht man mit den Befehlen svn copy und svn merge.

Git

Ein weiteres und sehr verbreitetes Versionsverwaltungssystem ist Git. Git ist im Gegenteil zu SVN ein verteiltes System. Bei Git klonst (kopierst) du den Original Quellcode lokal auf deine Platte mit git clone. Danach gibt es 3 verschiedene Stellen. Der Originalcode (HEAD genannt), den Index (Stage), und deine Arbeitskopie. Der Index ist eine Zwischenstufe. Mit git add schlägst du deine Änderungen vor (in den Index). Mit git commit kannst du deine Änderungen in die HEAD-Kopie einpflegen. Allerdings bist du immernoch lokal! Erst mit git push kommen deine Änderungen auf den entfernten Server. Um deine Kopien zu aktualisieren verwendest du git pull.

Fazit

 

Dass du an diesem Punkt noch nicht direkt mit SVN und git loslegen kannst, sollte dir klar sein. Dies sollte jetzt nur eine kleine Einführung in die Versionierung gewesen sein, eine umfassende Einführung gibt es auf Anfrage. Außerdem gibt es natürlich noch andere Systeme, die ich hier nicht behandelt habe. Nun hast du einen kleinen Einblick in die Versionsverwaltung bekommen. Wie sieht es bei dir aus? Hast bereits Erfahrungen in der Arbeit im Team bekommen? Kommentiere unten und lass uns darüber diskutieren!

Das könnte dich auch interessieren

1 Antwort

Trackbacks & Pingbacks

  1. […] Bei der Versionierung lernt man gemeinsam in einem oder mehreren Quellcodes zu arbeiten ohne, dass Änderungen verloren gehen. Auch dazu gibt es eine kleinen Einstieg in einem Artikel! […]

Dein Kommentar

An Diskussion beteiligen?
Hinterlasse uns Deinen Kommentar!

Schreibe einen Kommentar

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