Top Banner
Versionsverwaltung von Softwareartefakten Dr. Thorsten Arendt Marburg, 05. November 2015
38

Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

Aug 15, 2019

Download

Documents

truongphuc
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

Versionsverwaltung von

Softwareartefakten

Dr. Thorsten Arendt

Marburg, 05. November 2015

Page 2: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

Überblick

• Warum ist die Versionsverwaltung von Softwareartefakten wichtig?

• Wie verwaltet man Softwareartefakte?

– Versionskontrolle für Anforderungsdokumente, Modelle, Code,

Testdateien, Dokumentationen, etc.

– Möglichst unabhängiges Arbeiten im Team

– Wie erhält man konsistente Konfigurationen?

• Einführung in Versionsverwaltungswerkzeuge

– Subversion (SVN): Zentrale Verwaltung von Dateien und Ordnern

– Git: Verteilte Versionsverwaltung

2 Software-Evolution WS 2015/2016

Page 3: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

Versionsprobleme

• Vermeide Fragen und Probleme wie diese:

– Welche ist die neueste Version eines Softwaresystems?

– Ich kann eine ältere Version der Software nicht finden.

– Ich kann eine bestimmte Version des Softwaresystems nicht

erstellen, weil bestimmte Dateien fehlen.

– Eine gerade erstellte Datei wurde von einer älteren Version

überschrieben, weil

• gerade nicht aufgepasst wurde.

• sie parallel geändert wurde.

3 Software-Evolution WS 2015/2016

Page 4: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

Gründe für Versionsprobleme

• Software ist einfach zu ändern.

• Mehrere Personen dürfen dieselben Artefakte ändern, eventuell

sogar zur gleichen Zeit.

• Es ist einfach,

– Inkonsistenzen zu erzeugen.

– schwer erkennbare Fehler zu erzeugen.

• Beispiele:

– Zwei Entwickler führen unabhängig voneinander Änderungen an

verschiedenen Klassen durch. Diese passen nicht zueinander.

– Source Code geändert: Binärcode, Design, Dokumentation und Tests

werden inkonsistent.

4 Software-Evolution WS 2015/2016

Page 5: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

Motivation für klassische Versionsverwaltung

• Ein Versionsverwaltungssystem soll das gemeinschaftliche Arbeiten

an Dokumenten ermöglichen.

• Hauptproblem:

– Wie ermöglicht das Versionsverwaltungssystem den Nutzern Zugang zu

gemeinsamen Dokumenten, ohne versehentlich Informationen zu

löschen?

• Ansatz:

– Alle gemeinschaftlich genutzten Dokumente werden in einem Repository

(einem speziellen Datenbehälter) verwaltet.

– Die Nutzer bekommen Lese- bzw. Schreibzugang zu Dokumenten im

Repository.

– Werkzeuge: CVS, SVN, Git, etc.

5 Software-Evolution WS 2015/2016

Page 6: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Zwei Nutzer (Harry und Sally)

entscheiden sich, an

demselben Dokument (A) zu

arbeiten.

• Beide führen verschiedene

Änderungen an ihren lokalen

Versionen des Dokuments

durch.

• Die lokalen Versionen werden

nacheinander in das

Repository geschrieben.

• Sally überschreibt dadurch

eventuell Änderungen von

Harry.

[Version Control with Subversion]

6 Software-Evolution WS 2015/2016

Das Problem

Page 7: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Harry sperrt das

Dokument und arbeitet

lokal daran.

• Sally möchte das

Dokument lesen, es ist

aber gesperrt.

• Harry schreibt sein

geändertes Dokument ins

Repository und entsperrt

es.

• Sally kann nun das

Dokument lesen und für

andere sperren.

[Version Control with Subversion]

7 Software-Evolution WS 2015/2016

Problemlösung 1: Sperren von Dokumenten

Page 8: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Administrative Probleme

– Gesperrte Dokumente werden vergessen zu entsperren. Andere

Nutzer kommen an die gesperrten Dokumente nicht ran.

• Unnötige Sequentialisierung der Arbeit

– Wenn zwei Nutzer ein Dokument an verschiedenen Stellen

ändern möchten, könnten sie dies auch gleichzeitig tun.

• Falsches Gefühl von Sicherheit

– Zwei Nutzer arbeiten getrennt auf den Dokumenten A und B.

Was passiert, wenn A von B abhängig ist? A und B passen nicht

mehr zusammen. Die Nutzer müssen dieses Problem

diskutieren.

8 Software-Evolution WS 2015/2016

Wie gut ist Problemlösung 1?

Page 9: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Harry und Sally kopieren

das Dokument in ihre

lokalen Ordner.

• Beide arbeiten

unabhängig daran.

• Sally schreibt als Erste

das Dokument in das

Repository zurück.

• Harry kann das

Dokument nicht

zurückschreiben:

– „out of date“

[Version Control with Subversion]

9 Software-Evolution WS 2015/2016

Problemlösung 2: Mischen von Dokumenten

Page 10: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Harry vergleicht seine

lokale Version mit der

aktuellen Version im

Repository.

• Beide Versionen werden

gemischt.

• Die neue (gemischte)

Version wird

zurückgeschrieben.

• Die neue Version kann

ausgelesen werden.

[Version Control with Subversion]

10 Software-Evolution WS 2015/2016

Problemlösung 2: Mischen von Dokumenten

Page 11: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Ein Dokument liegt in zwei Versionen vor.

– Die Änderungen eines Nutzers überlappen sich mit den Änderungen des zweiten Nutzers.

– Diese Situation wird Konflikt genannt.

• Lassen sich zwei Dokumente immer mischen?

– Die Unterschiede zwischen zwei Versionen lassen sich durch Werkzeuge anzeigen.

– Ein Nutzer (eventuell in Absprache mit dem zweiten Nutzer) entscheidet jeden einzelnen Konflikt.

11 Software-Evolution WS 2015/2016

Wie gut ist Problemlösung 2?

Page 12: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

12 Software-Evolution WS 2015/2016

Problemlösung 2: Mischen von Dokumenten

Zwei unabhängige Dokumente

werden gemischt. Dazu müssen

Korrespondenzen gefunden werden.

Ausgehend von einer Original-

version werden Differenzen

berechnet und gemischt.

Zwei-Wege-Mischen Drei-Wege-Mischen

Page 13: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Softwareartefakte

sind in Ordnern

gegliedert.

• Versionsverwaltung

sollte nicht nur die

Dateien, sondern

auch die Ordner

verwalten.

13 Software-Evolution WS 2015/2016

Revisionen

[Version Control with Subversion]

Revision: Ein Zustand der zu verwaltenden Softwareartefakte

Page 14: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Open Source Software

– 2000 von CollabNet entwickelt

– Seit 2009 bei Apache

• Features

– Versionierung von Ordnern und Dateien

– Auch das Umbenennen, Erzeugen und Löschen von Ordnern werden festgehalten.

– Sammlung von Änderungen wird als Transaktion verwaltet.

• Subversion für Eclipse

– Subclipse

– Subversive

• Subversion im Windows Datei-Explorer

– TortoiseSVN

14 Software-Evolution WS 2015/2016

Subversion (SVN)

Page 15: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Software für verteilte Versionsverwaltung ohne zentralen Server

• Lokale Kopie des gesamten Repositories– Lokale Funktionalität ähnlich wie bei SVN

• Neue Features:– Versionen als Schnappschüsse eines Mini-Dateisystems

– Nichtlineare Entwicklung: einfaches Branching und Merging

– Datenabgleich zwischen verschiedenen Repositories möglich

• Werkzeuge:– Git Cloud Hosting: GitHub, GitLab, BitBucket, etc.

– Git Client: z.B. Atlassian SourceTree

– Git in Eclipse: EGit

– Git im Datei-Explorer: TortoiseGit

15 Software-Evolution WS 2015/2016

Git

Page 16: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

Ein zentrales Repository für die

Arbeitsgruppe

– z.B. in der Cloud

[Atlassian SourceTree]

16 Software-Evolution WS 2015/2016

Aufbau eines zentralen Repository

[Bitbucket]

Lokale Arbeitsbereiche oder

lokale Repositories

Page 17: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Eclipse Plugin: EGit

• Wechsel zur Git Repository Perspective

• Versionsverwaltung starten:

– Neues Git Repository anlegen mit Create

– Vorhandenes Repository kopieren mit Clone

– Vorhandenes Projekt in ein neues Repository legen: Team → Share Project

• Lokales Arbeiten in der Java-Perspektive.

– Git-Befehle unter Team → …

17 Software-Evolution WS 2015/2016

Git in Eclipse

[EGit]

Page 18: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Um eine lokale Kopie des

entfernten Repository zu erstellen

• Auswahl einzelner Branches

• Angabe des lokalen Ordners

18 Software-Evolution WS 2015/2016

Clone eines Git Repository

[EGit]

Page 19: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Push lädt einen lokalen

Branch oder eine Reihe

von Commits in ein

entferntes Repository.

– zum Veröffentlichen

von Beiträgen

• Pull lädt einen Branch

aus einem entfernten

Repository.

19 Software-Evolution WS 2015/2016

Laden lokaler Sourcen

Page 20: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

20 Software-Evolution WS 2015/2016

Entferntes Repository

Page 21: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Start der Versionierung:

– git add <filename>

• Datei auschecken:

– git checkout <filename>

• Versionierungsabfragen:

– git status (Status der Dateien)

– git log (Historie)

• Änderungsanzeige (vor commit)

– git diff

• Datei einchecken:

– git add <filename> ( Index)

git commit (indizierte Dateien)

– git commit –a <filename>

• Datei aus Repository löschen:

– git rm <filename>

21 Software-Evolution WS 2015/2016

Typische Git-Befehle auf lokalem Repository

Page 22: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Version: Mini-Dateisystem in einem Zustand

• Unveränderte Dateien werden nicht kopiert.

• Git fügt nur Daten hinzu.

[ProGit]

22 Software-Evolution WS 2015/2016

Versionen als Schnappschüsse

Page 23: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Ein zentrales Repository

• Lokales Mischen

– Beispiel: John kann nach Jessica kein Push ausführen. Er muss ihre Änderungen holen und lokal mischen.

– Das Holen von Änderungen (fetch, pull) führt zu einem neuen Branch.

– Das lokale Mischen (merge) führt zwei Branches zusammen.

23 Software-Evolution WS 2015/2016

Austausch zwischen Repositories: Ein

Beispielablauf

[ProGit]

Page 24: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Gründe für mehrere

Zweige:

– Verschiedene Alternativen

gleichzeitig ausprobieren

– Normales „Geschäft“ und

größerer Evolutionsschritt

– Releases

• Unterscheidung in den

zentralen Branch und

weiteren Branches

Original

1. Branch

2. Branch

3. Branch

24 Software-Evolution WS 2015/2016

Verschiedene Revisionszweige (Branches)

Page 25: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

Commit-Objekt

• Referenz auf einen

Schnappschuss

• Commit-Objekte zeigen

jeweils auf das vorige.

• Weitere Einträge sind

– der Autor,

– der Committer und

– die Commit-Message

25 Software-Evolution WS 2015/2016

Branches (1)

[ProGit]

Page 26: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Der Default-Branch

heisst „master“.

• Zwei Branches

können auf denselben

Schnappschuss

verweisen.

• Der aktuelle Branch

heisst „HEAD“.

26 Software-Evolution WS 2015/2016

Branches (2)

Page 27: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Die Historie läuft

auseinander:

Beispiel:

– „master“-Branch

– „testing“-Branch

• Der Nutzer kann…

– beliebig zwischen den

Branches wechseln.

– die Branches

zusammenführen

27 Software-Evolution WS 2015/2016

Branches (3)

Page 28: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Merging von

aufeinander-

folgenden

Commits /

Schnappschüssen

• Fast Forward

28 Software-Evolution WS 2015/2016

Merging (1)

Page 29: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Merging von

auseinander

laufenden

Commits /

Schnappschüssen

• 3-Wege-Mischen

– Ein neuer

Schnappschuss

entsteht

• Merge Commit

– Mehrere

Vorgänger

29 Software-Evolution WS 2015/2016

Merging (2)

Page 30: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Alternatives

Merging von

aufeinander-

folgenden Commits /

Schnappschüssen

• Verwendung eines

Patches des einen

auf den anderen

Schnappschuss

• Anschließender Fast

Forward

30 Software-Evolution WS 2015/2016

Rebasing

Page 31: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

31 Software-Evolution WS 2015/2016

Beispiel für

Branches

http://nvie.com/posts/a-successful-git-branching-model/

Page 32: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Entwicklerteam arbeitet auf dem Hauptzweig.

• Erstellung eines Release-Zweigs

– Z.B.: branches/1.0

• Team arbeitet parallel:

– Intensives Testen der Release-Version

– Neue Features in der Hauptversion (für Version 2.0)

• Der Release-Zweig bekommt ein Tag und wird releast.

– Tag: ein Schnappschuss des Projekts

– Z.B: /tags/1.0.0

• Der Release-Zweig wird weiter gepflegt.

– Z.B.: nach Fehlerbeseitigung /tags/1.0.1

32 Software-Evolution WS 2015/2016

Arbeiten mit Releases

Page 33: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Welche Konfigurationselemente haben wir?

– D.h. Dateien welcher Typen müssen versionsverwaltet werden?

• Nach welchen Strategien werden die Versionen verwaltet?

– Nach welchen Änderungen muss eingecheckt werden?

– Wann darf eingecheckt werden?

• Wer hat welche Rollen und Verantwortlichkeiten?

– Welche Personen sind für welche Komponenten zuständig?

• Welche Werkzeuge sollen benutzt werden?

– Häufig können nicht alle Dateitypen gleich gut verwaltet werden.

• Wo liegt das (Haupt-) Repository?

33 Software-Evolution WS 2015/2016

Versionsmanagement-Aktivitäten

Page 34: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

Kleines Projekt

– Kleines Team

– Ein zentrales

Repository

– Jedes Team-Mitglied

darf alle Dateien lesen

und schreiben.

– Bekanntes Modell

34 Software-Evolution WS 2015/2016

Versionierung in verschiedenen

Entwicklungsprozessen (1)

[Kamann]

Page 35: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Der Integration Manager liest Änderungen und integriert sie in

die Hauptversion.

• Er hat Schreibzugriff auf das Haupt-Repository.

• Alle anderen Entwickler haben Lesezugriff.

35 Software-Evolution WS 2015/2016

Versionierung in verschiedenen

Entwicklungsprozessen (2)

Mittelgroßes Projekt

• Jedes Entwicklerteam hat

ein eigenes Repository.

– Die eigenen Entwickler

haben Schreibzugriff.

– Alle anderen Entwickler

haben Lesezugriff.

[Kamann]

Page 36: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

Sehr großes Projekt

– Hunderte von

Entwicklern

– Hierarchische

Versionierung

– Leutnant: Integration

Manager für einen Teil

des Projekts

– Diktator: Integration

Manager für alle Teile

des Projekts

• Er hat Schreibzugriff auf

das Haupt-Repository.

36 Software-Evolution WS 2015/2016

Versionierung in verschiedenen

Entwicklungsprozessen (3)

[Kamann]

Page 37: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

• Wesentliche Features der Versionsverwaltung:

– Softwareentwicklungs-Artefakte sind ständigen Änderungen

unterworfen, die versioniert werden sollen.

– Unterstützung für nebenläufiges Arbeiten im Team.

– Konsistente Konfigurationen durch die Versionierung von Ordnern

und Dateien

– Häufiges Commit mit Dokumentation der Änderungen

– Verteilte Repositories für verteilte Versionskontrolle im Projekt

• Fortschritt in der Werkzeugentwicklung für Versionsverwaltung:

– CVS SVN Git

• Das Arbeiten mit Zweigen ist einfach und „billig“.

– Es macht das Arbeiten mit mehreren Releases einfacher.

– Es erlaubt eine entspannte und sichere Durchführung von

Evolutionsschritten.

37 Software-Evolution WS 2015/2016

Zusammenfassung

Page 38: Versionsverwaltung von Softwareartefakten - uni-marburg.de · –Diese Situation wird Konflikt genannt. •Lassen sich zwei Dokumente immer mischen? –Die Unterschiede zwischen zwei

Sekundär-Literatur

38 Software-Evolution WS 2015/2016

• S. M. Easterbrook, E. E. Beck, J. S. Goodlet, L. Plowman, M. Sharplesand C. C. Wood: A Survey of Empirical Studies of Conflict, Easterbrook, S. M. (ed), 1993 CSCW: Cooperation or Conflict?, Springer-Verlag, pp. 1-68

• Ben Collins-Sussman, Brian W. Fitzpatrick, C. Michael Pilato: Version Control with Subversion, 2011, online erhältlich unter http://svnbook.red-bean.com/

• Apache Subversion: http://subversion.apache.org/

• Subversive: http://www.eclipse.org/subversive/

• Subclipse: http://subclipse.tigris.org/

• Scott Chacon, Ben Straub: ProGit, 2nd Edition, 2014, online erhältlich unter http://git-scm.com/book

• GitHub: http://github.com/

• Bitbucket: http://bitbucket.org/

• Atlassian SourceTree: http://sourcetreeapp.com/

• EGit: http://www.eclipse.org/egit/

• Thorsten Kamann: GIT oder Subversion? Sei kein Depp!, Eclipse Magazin, Ausgabe 1-2011