HOWTO:Git: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
(Überarbeitung des Skriptes) |
||
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
Hier wird erklärt, wie man in seinem Uni-Home ein Git-Repo einrichtet, in das auch andere Studenten pushen/pullen können. Man sollte dabei beachten, dass bei dieser Methode '''jeder''' der die URL zum Repo kennt, pushen/pullen kann. Wenn man das | Hier wird erklärt, wie man in seinem Uni-Home ein Git-Repo einrichtet, in das auch andere Studenten pushen/pullen können. Man sollte dabei beachten, dass bei dieser Methode '''jeder''' der die URL zum Repo kennt, pushen/pullen kann. Wenn man das verschmerzen kann, hat man sehr zügig ein Repo und kann anfangen kollaborativ zu arbeiten. | ||
== Workaround bei Zugriffsbeschränktem Homeverzeichnis == | == Workaround bei Zugriffsbeschränktem Homeverzeichnis == | ||
Zeile 64: | Zeile 64: | ||
pwd | pwd | ||
Wer diese einzelnen Schritte nicht jedes Mal wiederholen möchte kann auch einfach das folgende Bash-Skript nutzen. | |||
#!/bin/bash | |||
if [ $# == 0 ]; then | |||
read -p "Name des Git-Repositorys: " folder | |||
else | |||
folder=$1 | |||
fi | |||
{ | |||
currfolder=$PWD | |||
rnd_string=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1) | |||
mkdir -p $HOME/gitrepos/$folder-$rnd_string/$folder.git | |||
chmod -R a+x $HOME/gitrepos/$folder-$rnd_string | |||
cd $HOME/gitrepos/$folder-$rnd_string/$folder.git | |||
git init --bare --shared=0666 | |||
path_to_gitfolder=$PWD | |||
cd $currfolder | |||
} >&- | |||
echo $path_to_gitfolder | |||
Nun kann jeder andere mit einem ssh-Zugang wie folgt clonen. | Nun kann jeder andere mit einem ssh-Zugang wie folgt clonen. |
Aktuelle Version vom 16. Dezember 2014, 13:22 Uhr
Hier wird erklärt, wie man in seinem Uni-Home ein Git-Repo einrichtet, in das auch andere Studenten pushen/pullen können. Man sollte dabei beachten, dass bei dieser Methode jeder der die URL zum Repo kennt, pushen/pullen kann. Wenn man das verschmerzen kann, hat man sehr zügig ein Repo und kann anfangen kollaborativ zu arbeiten.
Workaround bei Zugriffsbeschränktem Homeverzeichnis[Bearbeiten]
Wenn alle Teilnehmer im gleichen Jahrgang sind, kann dieser Workaround ignoriert werden. Da die studentischen Homeverzeichnisse nicht homogen organisiert sind, sondern einer gewachsenen Struktur entspringen, muss als erstes überpüft werden, ob alle Teilnehmer Zugriff auf den übergeordneten Ordner haben. Also einmal in dem Home-Verzeichnis, wo das Repo später liegen soll folgendes prüfen:
cd ~/.. pwd
erzeugt z.B. folgende Ausgabe: /informatik2/students/home
Nun müssen alle Teilnehmer, die Zugriff auf das Repo erhalten sollen prüfen, ob sie Zugriff auf den Ordner haben. Falls das nicht der Fall sein sollte, muss ein anderer Teilnehmer das Repo bei sich einrichten.
Grundstruktur Einrichten[Bearbeiten]
Diese Schritte müssen nur einmalig gemacht werden.
Um anderen das Navigieren in das eigene Homeverzeichnis zu erlauben, muss das Execute-Bit gesetzt werden. Damit ist es für andere nicht möglich den Inhalt des Ordners einzusehen.
chmod a+x ~
Ein Ordner für alle Repos macht sich wahrscheinlich gut.
mkdir ~/gitrepos
Dieser muss für alle navigierbar sein. Also muss das Execution-Bit gesetzt werden.
chmod a+x ~/gitrepos
Repo Einrichten[Bearbeiten]
Nun muss noch die Ordnerstruktur angelegt werden. Um etwas "Sicherheit" zu gewähren macht sich eine zufällige Buchstabenkombination am Ende ganz gut. Die zwei Ebenen und die etwas sonderbare Benennung sind gewollt und sind so recht praktikabel.
mkdir -p ~/gitrepos/fgi3-sem-hhoghdf8gu908erg/fgi3-sem.git
Ein zweites Repo würde man dann z.B. anlegen unter
mkdir -p ~/gitrepos/vis-fjouh2o4tuh234nof/vis.git
Diese Art der Bennung hat folgende Vorteile:
- Beim clonen wird der Ordner fgi3-sem ohne die kryptische Buchstabenkombination benannt
- Durch den Präfix "fgi3-sem-" auf erster Ebene sieht man bei einem ls im Ordner gitrepos direkt um welche Repos es sich handelt
- Man hat die Gewissheit, dass niemand die Repo-Url einfach erraten kann und somit Zugriff aufs Repo erlangt
Die Verzeichnisse müssen für alle navigierbar gemacht werden.
chmod -R a+x ~/gitrepos/fgi3-sem-hhoghdf8gu908erg
Nun muss man in das Verzeichnis *.git wechseln
cd ~/gitrepos/fgi3-sem-3hoghdf8gu908erg/fgi3-sem.git
und initialisiert ein neues Repo ohne Working-Directory (bare). Die shared=0666 Option gibt allen Schreib- und Leserechte.
git init --bare --shared=0666
Jetzt muss nur noch der <Pfad> zum clonen ermittelt werde.
pwd
Wer diese einzelnen Schritte nicht jedes Mal wiederholen möchte kann auch einfach das folgende Bash-Skript nutzen.
#!/bin/bash if [ $# == 0 ]; then read -p "Name des Git-Repositorys: " folder else folder=$1 fi { currfolder=$PWD rnd_string=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1) mkdir -p $HOME/gitrepos/$folder-$rnd_string/$folder.git chmod -R a+x $HOME/gitrepos/$folder-$rnd_string cd $HOME/gitrepos/$folder-$rnd_string/$folder.git git init --bare --shared=0666 path_to_gitfolder=$PWD cd $currfolder } >&- echo $path_to_gitfolder
Nun kann jeder andere mit einem ssh-Zugang wie folgt clonen.
git clone <Kennung-des-Zugreifenden>@rzssh1.informatik.uni-hamburg.de:<Pfad>
Angenommen 11sieli hat das Repo angelegt und 5kumpe will drauf zugreifen, sähe der Befehl folgendermaßen aus.
git clone 5kumpe@rzssh1.informatik.uni-hamburg.de:/informatik2/students/home/11sieli/gitrepos/fgi3-sem-3hoghdf8gu908erg/fgi3-sem.git
Wundere dich nicht, wenn der Pfad zu deinem Home davon abweicht. Bei verschiedenen Jahrgängen kann das durchaus der Fall sein.