Benutze GIT

Hier eine kurze Beschreibung, welche Software wie installiert werden muss um mit Git gut arbeiten zu können. Ebenso werden Befehlsfolgen für die einfache Verwendung noch folgen. Sowie auch allgemeine Informationen um sich das leben zu erleichtern.

Installation auf einen Debian Server

Am einfachsten ist es, wenn man die Konfiguration mit einem Benutzer auf dem Computer selbst durchnimmt. Dafür erzeugt man mit folgenden Befehl einen Private/Public-Key, anfallende Abfragen mit Enter bestätigen:

ssh-keygen -b 2048 -t rsa

Den Public-Key dann in den weiter unten angegeben Verzeichnis kopieren, damit der gitolite-Benutzer dran kommt.

Sollte bei den meisten Distributionen ähnlich funktionieren. (WICHTIG: Der Pfad in den alle Daten von gitolite gelegt werden ist der Home-Pfad des Benutzers, diesen könnte man, nach der Paket-Installation, mit dem Befehl vipw anpassen, aber bitte Vorsicht, damit die Datei nicht zuerstört wird, da sonst keine Anmeldung mehr funktioniert)

#Installieren der Packet
apt-get install git gitweb gitolite python-setuptools
# Kopiere den Haupt-Public-Key ins TempVerzeichniss
# mit folgenden Namen: /tmp/username.pub
# Wechsle auf den User gitolite
su gitolite
# Start gitolite Setup, username.pub wird Hauptadmin
gl-setup /tmp/username.pub
# Klone das Repo von deinem Server für weitere Einstellungen
git clone gitolite@server:gitolite-admin

Konfiguration von gitweb

Im gitweb ("/etc/gitweb.conf") müssen nur 2 Ordner-Pfade angepasst werden, und zwar muss die “$projectroot” auf das repositories-Verzeichnis zeigen, welches auf erster Ebene im Benutzerverzeichnis vom gitolite liegt. Und die “$projects_list” muss noch auf die Datei “projects.list” zeigen, welche im selben Verzeichnis wie das Repository liegt. Kleines Beispiel einer kompletten config, bei der das Homeverzeichnis vom gitolite unter “/srv/gitolite” liegt:

# path to git projects (<project>.git)
$projectroot = "/srv/gitolite/repositories/";
# directory to use for temp files
$git_temp = "/tmp";
# target of the home link on top of all pages
#$home_link = $my_uri || "/";
# html text to include at home page
$home_text = "indextext.html";
# file with project list; by default, simply scan the projectroot dir.
$projects_list = "/srv/gitolite/projects.list";
# stylesheet to use
$stylesheet = "gitweb.css";
# javascript code for gitweb
$javascript = "gitweb.js";
# logo to use
$logo = "git-logo.png";
# the &#039;favicon&#039;
$favicon = "git-favicon.png";

Konfiguration von gitolite

Comming soon…

Git Client

Die Verschiedenen Windows-Clients

  • git (Grundbasis, wird von den Nachfolgenden benötigt)
    Liefert eine Bash-Shell mit, in der gearbeitet wird. Für eine Shell sehr gute Anzeige der Informationen zum Repo. Zusätzlich existiert noch gitk als graphische Anzeige der Historie.
  • Git Extensions Mein aktueller Favorit. Ist eine eigenständige GUI, welche schön die Befehle für git kapselt. Anzeige einer History der zuletzt geöffneten Elemente, erstellen von Favoriten mit Gruppierungen, einfache Anzeige des aktuellen Branches und einfacher wechsel möglich, Gute graphische Aufbereitung des Historie, …
    Leider aktuell nur auf Englisch, aber ja nicht wirklich schlimm.
  • TortoiseGIT Arbeiten wie mit TortoiseSVN, fügt sich als Kontextmenu in den Explorer ein. Leider auch nur auf Englisch.

Egal welche Installation, würde ich unter Windows immer empfehlen das Putty bzw Plink benutzt werden sollte, und nicht über openssh. Putty bzw Plink harmoniert einfach viel besser mit Windows und ist schöner und einfacher zu konfigurieren. Zum weiteren ist es einfach um durch einen Proxy zu kommen.

Verschiedene Server-URL

Alle Werte in []-Klammern sind Optional. Werte in {}-Klammern sind Variablen die entsprechend von ihnen versorgt werden müssen

  • ssh://gitolite@{Server}[:{Port}]/{Projekt}
    Beispiel: ssh://gitolite@example.com:85/meinProjekt
    Beispiel: ssh://gitolite@example.com:85/Unterverzeichnis/meinProjekt
  • git://{Server}/{Projekt}
    git://example.com/meinProjekt
  • {sshUser}@{Server}:{Projekt}
    gitolite@example.com:meinProjekt
    gitolite@example.com:Unterverzeichnis/meinProjekt
  • {PuttySessionName}:{Projekt}
    Dazu im Nachfolgenden Kapitel mehr…

Verbindung mit SSH-Protokoll zum Git-Repo hinter einem Proxy

Wichtig: Der Proxy selbst darf den Port nicht blocken. Dies bedeutet, das entweder am Proxy den Port 22 nicht geblockt ist, oder man den SSH-Port auf einen nicht blockierten Port stellt. Häufig funktionieren Port 80 (http) und Port 443 (https).

Der zweite Vorteil diese Weges ist, das alle Einstellungen im Putty vorgenommen werden und nur noch der Name der gespeicherten Session beim git clone angegeben werden muss.

Als Url wird folgender Befehl verwendet (Zur Einfachheit benutzt man häufig trotzdem den Git-Servernamen als Sessionname, also auch beim git-clone-Befehl):

git clone example.com:meinProjekt meinProjekt

Damit nun noch die ganze Verbindung durch den Proxy führt, muss Putty geöffnet werden. Dort müssen dann folgende Einstellungen unter den passenden Tabs eingestellt werden:

  • Session: Hostname und Port des Git-Servers
  • Connection->Proxy: Proxy-Type (bei mir http), Name und Port des Proxyservers, Benutzername und Passwort für die Proxyanmeldung. Alle anderen Einstellungen so lassen!
  • Connection->Data: Bei “Auto-Login username” muss gitolite eingetragen werden
  • Connection->SSH->Auth: Bei “Private key file for authentication” muss der Pfad zu ihrem Private Key Eingetragen werden.

Nun wieder auf die erste Seite zurück und bei “Saved Sessions” einen eindeutigen Namen eingeben, zur Einfachheit den des Git-Servers, in unseren Beispiel “example.com”.

Es ist sehr wichtig der Session den gleichen Namen wie beim “git clone” zu geben, weil plink so alle Einstellungen von der Putty Session findet und benutzt. Nämlich wenn Plink versucht den Rechnernamen aufzulösen, schaut es zuerst mit dem Rechnernamen auf die Namen der gespeicherten Sessions, wenn es dort nichts findet dann geht es direkt über die DNS-Auflösung.

Git Befehle

Comming soon…