Einleitung
Ohne Github geht es auch. Im LAN oder über den eigenen Webserver.
Insgesamt ist die einfache Installation und Anforderung ohne weitere Benutzerrechte zum eingrenzen derer Möglichkeiten schnell erledigt.
Will man verschiedene Rechte an einzelne Benutzer vergeben wird es schon schwieriger.
Der einfache Weg
…sieht wie folgt aus:
- Installation von Git Anwendungen und notwendige oder optionale Tools
- Git Benutzer erstellen
- SSH Schlüssel der Benutzer die darauf zugreifen dürfen einrichten
- git-shell einrichten so das ein normaler SSH Zugang zum Git Benutzer nicht mehr möglich ist
Installation
Es werden noch weitere nützliche Tools mit installiert. In der Basis wird unter Debian nur das git
Paket benötigt.
aptitude install git gitweb git-svn gitstats subversion subversion-tools
- gitweb: Nach Einrichtung können Repositories über den Browser betrachtet werden
- git-svn: Zum Arbeiten mit svn unter git oder zur Überführung von svn in git
- gitstats: Statistiken eines git Repositories in HTML
- subversion subversion-tools: Die Tools die man für svn im allgm. benötigt
- Nützlich: gitk und git-gui: Zwei verschiedene GUIs zum Betrachten von Repositories
Git Benutzer erstellen
Es wird ein Standard Benutzer eingerichtet der sich nicht mittels Passwort anmelden darf. Über SSH mit Schlüssel allerdings schon. Dazu komme ich später.
adduser --shell /bin/bash --home /home/git --disabled-password git
Das Kommando Ausführen und den Anweisungen (Name, Telefon, Büro… können leer gelassen werden) folgen.
SSH Schlüssel Einrichten
Als nächstes müssen die öffentlichen SSH Schlüssel (id_rsa.pub) aller beteiligten Personen eingerichtet werden damit man über SSH den Git Account und seine Repositories erreichen kann.
# Zum Benutzer git wechseln su - git mkdir /home/git/.ssh chmod 700 /home/git/.ssh # öffentliche SSH Schlüssel einrichten cat /wo/liegt/der/schlüssel/id_rsa.pub >> /home/git/.ssh/authorized_keys cat /wo/liegt/der/nächste/schlüssel/id_rsa.pub >> /home/git/.ssh/authorized_keys # Rechte setzen sonnst klappt die Authentifizierung nicht chmod 600 /home/git/.ssh/authorized_keys
Repositories
In dem neuen Git Account gibt es nun noch keine Repositories. Wird gitweb
verwendet empfehle ich einen Unterordner für die Projekte anzulegen damit dieser Ordner für gitweb
konfiguriert werden kann.
# z.B.: mkdir ~/projects
Neues Repository Anlegen
Ein neues und „nacktes“ Repository wird wie folgt angelegt:
cd ~/projects/ git init --bare project-1.git
P.s.: Ein mit –bare oder –mirror erzeugtes Git Repository eignet sich nicht um darin direkt zu arbeiten!
Mit git clone git@meingitserver:projects/<projektname>.git
kann nun jeder dieses Projekt klonen der Zugriff zum Git Account hat und kann seine Arbeit damit machen.
Migration
Zur Überführung von Projekten könnt Ihr je nach Voraussetzung verschiedene Wege gehen.
Angenommen Ihr habt lokal ein Github Projekt und wollt erst einmal alles zentral haben bevor etwas an die Öffentlichkeit geht.
Klar, man kann von jeder Git Instanz aus auch zu Github pushen aber es soll zuerst in die Zentrale (unserem Git Server).
Man klont zunächst das Github Projekt als –mirror:
cd projects/ git clone --bare --mirror https://github.com/<username>/<projektname>.git
Für dieses Projekt soll dann künftig git@meingitserver:projects/<projektname>.git
die erste Adresse für pull, fetch und push sein.
So oder so ähnlich kann mit all deinen anderen Projekten verfahren werden.
Modifizierung bestehender Repositories
Alle bestehenden Repositories auf den verschiedenen Rechnern oder bei Mitarbeitern müssen nun angepasst werden.
Github benutzt ja „origin“ als haupt remote. Da es öffentlich ist erzeuge ich ein neues „public“ remote in meiner lokalen Kopie was ja sinngemäss viel treffender ist und verwende nochmals die gleiche Github URL dafür:
login meinuser cd /bestehendes/github/projekt git remote add public https://github.com/<username>/<projektname>.git
Anschliessend ändere ich einfach die URL des „origin“ Zweigs zu unserem Git Server:
git remote set-url origin git@meingitserver:projects/project-1.git
Falls „origin
“ bei euch anders benannt ist (bei mir ist es z.b. „master“ als remote und der „master“ branch nennt sich bei mir „stable“, dann den anderen Name verwenden! In meinem Fall also „master“.
Wichtig wäre zu prüfen ob bestehende branches immer noch auf „origin“ zeigen oder zum „public“ Zweig! Ein cat .git/config
zeigt wo das remote = <hin zeigt>. Es sollte „origin“ (remote = origin) je branch dort stehen. Wenn nicht die Datei entweder von Hand editieren oder mittels git branch –help dann das neuen remote setzen.
Nun kann mit git pull | fetch | push von und zu unserem Git Server gearbeitet werden.
Mit z.B. git pull public kann der pull nach Github erfolgen um von dort Neuerungen zu ziehen.
Git-Shell Einrichten
Zwei wichtige Sachen:
- Mit der git-shell wird der klassische SSH Zugang gesperrt. Es werden dann nur noch Git- Kommandos akzeptiert
- Zur git-shell können Scripte zur Ausführung hinterlegt werden und zu besseren Vorbereitung legt man daher am besten schon mal den dafür vorgesehenen Ordner an: /home/git/git-shell-commands
# Optional: Für limitierte Befehlszugriffe kopiere die default scripte nach ~/git-shell-commands sudo cp -r /usr/share/doc/git/contrib/git-shell-commands /home/git/ sudo chmod 750 /home/git/git-shell-commands/* # Rechte setzen sudo chown -R git:git /home/git/ # Git Shell scharf schalten sudo chsh -s /usr/bin/git-shell git
Weiterführende Themen
Intern:
- Git – „Merge Conflicts“ – Konflikte auf die schnelle Beheben
- git svn in 5 Minuten
- git stash – Die aktuelle Arbeit merken, speichern und zurück
- Der eigene GIT Server
Extern:
Schreibe einen Kommentar
Du musst angemeldet sein, um einen Kommentar abzugeben.