Home / LinuxUser / 2010 / 06 / Der feine Unterschied

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(179 Punkte bei 5 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)
Mageia 2 ist fertig
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.
AA_hemden_123rf-406942_Kirill_Zdorov.png

© Kirill Zdorov, 123rf.com

Der feine Unterschied

Versionsverwaltung mit Git

10.05.2010 Linus Torvalds persönlich schneiderte seinem Betriebssystem das Versionskontrollsystem Git auf den Leib. Damit lässt sich aber nicht nur der Kernel verwalten, Sie können damit auch Ihre eigene Projekte pflegen.

Kernel-Guru Greg Kroah-Hartmann hat fleißig gezählt: Im Jahr 2007 wuchs der Linux Kernel am Tag im Schnitt um 4500 Zeilen Quelltext – mittlerweile dürften es eher noch mehr sein. Um den Überblick über den Code zu behalten, verwenden die Kernel-Entwickler Git [1]. Dabei handelt es sich um ein sogenanntes Version Control System (VCS), das im Prinzip ähnlichen Systemen wie CVS (Concurrent Versions System, [2]) oder SVN (Subversion [3]) entspricht. Allerdings ist Git, verglichen mit diesen Werkzeugen, wesentlich mächtiger – und komplizierter.

Wenn Sie auf der Suche nach einer Versionsverwaltung für Ihr eigenes Softwareprojekt sind, ist Git sicher einen Blick wert. Dieser Artikel verschafft Ihnen einen Überblick über die grundlegenden Funktionen der Torvaldsschen Erfindung und verrät Ihnen, wie Sie eigene Repositories anlegen und verwenden oder auf jene anderer Entwickler zugreifen und deren Änderungen in Ihr eigenes Git-Verzeichnis übernehmen. Einen historischen Überblick über die Versionskontrolle des Linux-Kernels im Allgemeinen und von Git im Speziellen zeigt der Kasten "Git: Not macht erfinderisch".

Kleines Git-Glossar

Der folgende Abschnitt erklärt wichtige Begriffe im Zusammenhang mit Git. Kennen Sie bereits andere Versionskontrollsysteme, dann meinen die Begriffe dort möglicherweise etwas anderes als bei Git.

Repository: Die Oberbezeichnung für einen kompletten Baum sämtlicher Dateien und der gesamten History eines spezifischen Programms. Linus Torvalds entwickelt Linux beispielsweise in einem Repository namens linux-2.6. Um ein Projekt mit Git zu verwalten, benötigen Sie immer ein solches Repository.

Branch: Ein Entwicklungszweig in einem Repository. Branches entstehen, um den Inhalt eines Repositories in unterschiedliche Richtungen weiter zu entwickeln. Ganz typische Beispiele für Branches sind die stabilen und die Entwicklungszweige von Programmen. Beide Branches befinden sich im gleichen Repository, der Code der Branches kann sich aber deutlich unterscheiden. Bei der Arbeit mit Git arbeiten Sie immer in einem Branch; legen Sie keinen neuen explizit an, befinden Sie sich im master-Branch. Branches lassen sich miteinander ganz oder teilweise synchronisieren; in solchen Fällen spricht man von "Branch Merges". Der Begriff "Merge" meint allgemein das Zusammenführen von Veränderungen aus verschiedenen Quellen.

Tag: Ein Alias für den Zustand eines Branches (zum Beispiel des master-Branches) zu einem Zeitpunkt X.

Commit: Dieser Begriff steht für das Einpflegen einer lokalen Änderung in das Versionskontrollsystem. Entwickler arbeiten mit lokalen Verzeichnissen. Dort vorgenommene Änderungen landen nicht automatisch im VCS. Erst nach einem Commit durch einen Entwickler stehen die Modifikationen im VCS bereit, sodass dort auch für andere bereitstehen.

Los geht's

Als Anschauungsobjekt für diesen Artikel dient der Linux-Kernel. Sie erfahren, wie Sie auf einem Server ein Repository auf Grundlage des offiziellen Linux-2.6-Repositories erstellen und wie Sie einen lokalen Checkout dieses Repositories erstellen, Modifikationen vornehmen und diese zurück in das Repository auf dem Server spielen. Git funktioniert dezentral, was den Entwicklern ermöglicht, jederzeit mit einer lokalen Kopie eines Repositories zu arbeiten. Damit auch andere etwas davon haben, sollten Sie die Änderungen aber in einem Repository veröffentlichen.

Git ist seit Längerem Bestandteil der großen Distributionen wie OpenSuse, Ubuntu, Fedora oder Mandriva. Entsprechend verwenden Sie zur Installation den Paketmanager Ihrer Distribution. Installieren Sie darüber hinaus auch das Git-Webfrontend git-web. Um die korrekte Installation zu prüfen, geben Sie den Aufruf git help in der Konsole ein, worauf das Programm die Hilfeseite anzeigt (Abbildung 1).

Abbildung 1: Nach der Installation von Git zeigt die Eingabe von git help auf der Kommandozeile diese Ausgabe.

Bevor Sie Repositories anlegen oder modifizieren, müssen Sie Git erst einmal grundlegend konfigurieren. Dazu gehört die Angabe Ihres Namens und Ihrer E-Mail-Adresse, die später zum festen Bestandteil eines jeden Git-Commits werden. Optional teilen Sie Git mit, welchen Editor Sie bevorzugen. Die notwendigen Befehle zeigt Listing 1. Git legt damit in Ihrem persönlichen Verzeichnis eine Datei namens .gitconfig an, die diese Angaben enthält.

Listing 1

$ git config --global user.name "Ihr Name
"
$ git config --global user.email ihrname
@beispiel
.de
$ git config --global core.editor vim
$ git config --global color.branch "auto"
$ git config --global color.status "auto"
$ git config --global color.diff "auto"

Den Git-Server installieren

Dieser Artikel geht davon aus, dass Sie ein öffentliches Git-Verzeichnis anlegen, auf das prinzipiell jedermann lesend zugreifen darf. Entwickler mit eigenem Account auf dem Server dürfen außerdem ihre Änderungen in Form von Commits in das Git-Repository einspielen. Damit das klappt, brauchen Sie zunächst den Git-Server.

Legen Sie einen Ordner an, der Ihre Git-Repositories enthält, etwa /home/git, und bestimmen Sie als besitzende Gruppe und User jeweils git. Sofern noch nicht vorhanden, installieren Sie danach einen Inetd-Daemon und öffnen dessen Konfiguration /etc/inetd.conf. Dort tragen Sie die folgende Zeile ein:

git stream tcp nowait gitserver /usr/bin/git-daemon git-daemon --inetd --verbose --base-path=/home/git

Damit ist der Git-Daemon eingerichtet. Zugriff auf die Repositories erhalten Sie und andere später über die URL http://server /name . Heißt ein Repository also linux-2.6-local und der Hostname des Servers git.example.org, wäre die vollständige URL für das Repository entsprechend http://git.example.org/linux-2.6-local. Der zugehörige Ordner im Dateisystem wäre dann /home/git/linux-2.6-local.

Beachten Sie: Je nach verwendeter Distribution ist die Funktion export-all entweder aktiv oder abgeschaltet. Ist sie aus, führt das dazu, dass der Git-Daemon nicht alle Ordner in /home/git automatisch erfasst. Um sicherzustellen, dass der Git-Daemon ein Repository immer exportiert, legen Sie im Ordner des Repositories auf Ihrem Server die Datei git-daemon-export-ok an.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

1643 Hits
Wertung: 69 Punkte (1 Stimme)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...