HOWTO:Git: Unterschied zwischen den Versionen

Aus Fachschaft_Informatik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
(Überarbeitung des Skriptes)
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
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.