Development – Versionsverwaltung mit GIT

Versionsverwaltung mit Git

Was ist Git

Git wurde 2005 von Linus Torvald entwickelt als Versionskontrollsystem fuer den Linux-Kernel. Der Name bedeutet im deutschen Schwachkopf. Schon bei kleinen einzelnen Projekten kann es schonmal vorkommen, dass man den Ueberblick verliert. Gestern ging noch alles heute nicht mehr. Was hab ich in der Zwischenzeit geaendert oder wo ist die Version von vorgestern. Bei Projekten an dem mehrere Personen beteiligt sind wird es noch schwieriger. Gestern ging meine Funktion noch wer hat eine Funktion geaendert die ich benutze etc. Git setzt auf ein verteiltes System. Es gibt keinen zentralen Server der alles verwaltet. Jeder User besitzt auf seinem Rechner eine lokale Kopie des gesamten Projektes.

Installation Git

Wir gehen auf die Hauptseite von Git und laden die aktuelle Version herunter. Aktuell ist die Version 1.7.9 Stand Maerz 2012
Bei der Installation koennen wir fast alle vorgegebenen Einstellungen so lassen wie vorgegeben.
Bei den Select Components darauf achten ,dass Windows Explorer integration aktiviert ist und Additional icons abwaehlen
Bei der Einstellung Adjusting your PATH environment waehlen wir Use Git Bash only
Bei der Einstellung Configuring the line ending conversions waehlen wir Checkout Windows-style, commit Unix-style line endings.
Danach sollte Git ohne Fehler installiert werden.

Erste Schritte

Git ist installiert und nun ? Am besten wir machen das gleich an einem Beispiel. Wir erstellen uns mit dem Explorer ein Verzeichniss z.B. C:\git\HalloWelt und oeffnen mit dem Explorer diesen Ordner. Mit der rechten Maustaste oeffnen wir das Kontextmenue. Dort haben wir 3 Menuepunkte von Git. Wir waehlen Git Init Here. Damit wird ein versteckter Ordner mit Namen .git erstellt. Wenn wir jetzt das Kontextmenue mit der rechten Maustaste oeffnen haben wir schon 5 Git-Menuepunkte. Wir waehlen Git Bash und es oeffnet sich ein Fenster aehnlich einem DOS-Fenster.

GIT_Gitbash
Mit git help erhalten wir eine Uebersicht aller Befehle. Wir benutzen mal git status Eine Meldung erscheint nothing to commit (create/copy files and use „git add“ to track).
Dann erstellen wir in diesem Ordner mit einem Texteditor unser erstes Script ( hallowelt.php ) mit folgenden Inhalt
<? echo „Hallo Welt“; ?>
Wenn wir jetzt git status eingeben sehen wir das unser File als Untracked file bezeichnet wird. Um das zu aendern geben wir 
git add hallowelt.php
git commit hallowelt.php -m „Version 1.0“
ein. Wir aendern jetzt etwas an unserem Script so dass es zb so aussieht
// Dies ist Version 1.1
echo „Hallo Welt“;
und speichern es ab. Wenn wir jetzt git status abfragen sehen wir dass Git bemerkt hat , dass wir etwas geaendert. haben.Wir uebergeben das Git mit
git commit hallowelt.php -m „Version 1.1“ Danach benutzen wir einen neuen Befehl
git log
Es werden zwei Versionen angezeigt.Um noch einmal auf die erste Version zuzugreifen brauchen wir die commit Nummer. es reichen die ersten 4 Zeichen des 40stelligen Strings hinter commit 
git checkout 0c23
bringt uns die Version 1.0 zurueck.Ein wesentlich schoenere Methode ist die Benutzung von SmartGit.

Installation SmartGit

Wir laden uns die aktuelle Version von * SmartGit, aktuell 3.0.2 , und installieren sie.Nach dem Starten bestaetigen wir License Agreement. Bei Type of Usagewaehlen wir Non-commercial use only.
Name und email noch angeben. Bei Hosting Providers‘ lasssen wir es noch ohne. Jetzt werden wir gefragt Open an existing local … und wir waehlen unseren Ordner HalloWelt und legen ein Projekt HalloWelt an. In SmartGit wir im ViewMenu erst mal alle Punkte mit Show.damit muesste unser Script im rechten Fenster erscheinen.Im linken Fenster sollte folgendes stehen.
HalloWElt ( xxxx:Version 1.0 ).Das ist die Version die wir oben zurueckgeholt haben. Wir gehen jetzt ueber das Menu Branch auf Branch Manager , waehlen master und Switch To. Jetzt sind wir wieder auf Version 1.1 und im linken Fenster steht HalloWelt (master). Eine gute Uebersicht erhalten wir ueber den Menuepunkt Log
GIT_Smartgitlog
Im unteren Teil sehen wir schoen die Unterschiede der beiden Versionen. Wir schliessen das Log-Fenster und aendern unser Script zb: 
// Dies ist Version 1.2
echo „Hallo Welt“;
echo „Hallo IP-Symcon“;
Wenn wir es abspeichern aendert sich in SmartGit im linken Fenster der Status unseres Scriptes.Das Script wird rot und der Working Tree State geht auf Modified. Wenn wir jetzt Commit anwaehlen, muessen wir im Fenster eine Commit Message eingeben ( zB „Version 1.2“ ).Im Log Fenster haben wir jetzt drei Versionen, wobei man unten immer schoen die Unterschiede der Versionen sieht wenn man sie anwaehlt.

Git und IPSLibrary

Wer jetzt sein eigenes Modul schon geschrieben hat, wie es zB unter *IPSTwilight – Step by Step zum Modul
beschrieben ist kann ganz einfach dieses mit Git verwalten. Um jetzt unser neues Modul mit Git zu verwalten benutzen wir die IPSLibrary-Funktionen deployund load

IPSUtils_Include („IPSModuleManager.class.php“,“IPSLibrary::install::IPSModuleManager“);
$moduleManager = new IPSModuleManager(„Modul“);
$moduleManager->DeployModule(‚C:\\git\\IPSLibrary\\‘);

Damit wird das Modul mit dem Namen „Modul“ aus IP-Symcon nach dem Git-Repository kopiert. Dort muss man es dann mit Git verwalten ( „commiten“ ). Zum Laden eines Moduls von einem Git-Repository nach IP-Symcon benutzt man

IPSUtils_Include („IPSModuleManager.class.php“,“IPSLibrary::install::IPSModuleManager“);
$moduleManager = new IPSModuleManager(„Modul“);
$moduleManager->LoadModule(‚C:\\git\\IPSLibrary\\‘);

Dies soll nur eine kurze Einfuehrung von Git sein.