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:
GitHub Classroom Starter Course: https://classroom.github.com/a/GivcHivJ

Zusätzliche Quellen: