Versionsverwaltung ist ein allgemeiner Begriff, der die Entwicklung eines
zunächst nicht näher definierten Objekts begleitet (z.B. Asset-Management für
Einrichtungen, PCs). Bei Source Control Management (SCM)
spricht man von einer Versionsverwaltung des Software-Quellcodes, oft im
Zusammenspiel mit anderen Werkzeugen und Workflows, wie automatisierten
Unit-Tests.
Im Unterricht behandeln wir das mit Abstand populärste SCM unserer Zeit: git. Neben der weiten Verbreitung in der Welt der Freien Software wie beim Linux-Kernel (für dessen Verwaltung man es ursprünglich erschuf) wird es inzwischen auch bei Microsoft - u.a. beim Windows-Quelltext - eingesetzt. Neben dem Kommandozeilenclient bieten sich als graphische Benutzeroberflächen etwa GitHub Desktop, SmartGit, GitKraken oder TortoiseGit an. Für Eclipse gibt es ein integriertes Plugin namens EGit, andere IDEs verfügen über Vergleichbares.
Auch wenn Änderungen (Patches) über E-Mails, USB-Sticks, theoretisch
auch Rauchzeichen (:D), etc., ausgetauscht werden können, empfiehlt es sich
für die Zusammenarbeit im Team, ein für alle zugängliches Repositorium auf
einem Server zu hosten. Dieses dient der zentralen Verwaltung des Quellcodes
und sollte gesondert abgesichert und ge-backup-t werden. Ältere
Revisionsverwaltungen wie
CVS
und
SVN
sind stets auf die Erreichbarkeit des Servers angewiesen, ansonsten verweigern
sie einen Großteil ihrer Funktionalität. Bei git hingegen kann man die lokale
Repositoriumskopie jederzeit abändern, da stets das ganze Repositorium lokal
verfügbar gemacht wird. Sobald die Erreichbarkeit wieder gegeben ist,
synchronisiert man sich mit dem Server. In der Fachsprache ausgedrückt sind
CVS/SVN client-server, git hingegen peer-to-peer.
Für das Hosten von öffentlich gemachten Repositorien gibt es viele Möglichkeiten: Populär sind Dienste wie Github, Bitbucket, Gitlab, Google Code sowie JIRA. Diese beinhalten oft auch Projektmanagement-Tools wie Ticketverwaltungen, Wikis, Foren und Programmier-Schnittstellen (APIs), über die zusätzliche Erweiterungen möglich sind. Natürlich werden diese Dienste auch von Firmen und Institutionen genutzt, die gegen Bezahlung den Zugang zu ihren Repositorien sperren - soviel zum Geschäftsmodell dieser Anbieter. Wer will, kann git auch auf seinem eigenen Server installieren, was mit ein bisschen Selbststudium und Kenntnissen in der Webserverkonfiguration machbar ist.
Grundsätzlich empfiehlt es sich, den größtmöglichen Teil eures Codes der keine sensiblen Daten enthält, online zu stellen. Denn dies hat drei Vorteile: