Bashskript zur Aktualisierung von Repositories

Bei mir auf der Festplatte liegen einige Quelltext in Form von Subversion und Git Repositories. Da es mühsam wäre jedes einzelne Repository zu aktualisieren, habe ich mir ein kleines Skript geschrieben, welches diese Aufgabe abnimmt:

#bash

#Update repositories script
#Copyright (c) 2012 by seeseekey <>
#
#This program is free software: you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation, either version 3 of the License, or
#(at your option) any later version.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License
#along with this program.  If not, see <http://www.gnu.org/licenses/>.

SCRIPTPATH=$(pwd);

#Git
for directory in `find $SCRIPTPATH -name ".git" -type d`;
do
  echo $directory;
  cd $directory/..;
  git pull;
done

#Subversion
for directory in `find $SCRIPTPATH -name ".svn" -type d`;
do
  echo $directory;
  cd $directory/..;
  svn update;
done

#Pfad zurücksetzen
cd $SCRIPTPATH;

Das Skript selbst steht dabei unter GPLv3 und kann auch direkt auf Github unter https://github.com/seeseekey/archive/blob/master/Bash/Git/updateRepositories.sh gefunden werden.

Git Repository umziehen

Manchmal möchte man ein Git Repository von Server A auf Server B umziehen (in diesem Fall von Google Code zu Github). Das ganze ist dabei relativ unproblematisch. Zuerst wird das bestehende Repository geklont:

git clone https://code.google.com/p/cscl/

In der GitHub Oberfläche erstellen wir nun ein neues Repository (in diesem Fall mit dem Namen „CSCL“). Danach entfernen wir den alten Remote und weisen einen neuen hinzu:

git remote rm origin
git remote add origin :seeseekey/CSCL.git

Mittels „git remote -v“ kann man sich die bestehenden „Remotes“ anschauen. Nachdem der neue Remote gesetzt wurden laden wir das Repository (mittels „push“) bei GitHub hoch:

git push -u origin master

Damit ist der Umzug abgeschlossen.

Weitere Informationen gibt es unter:
https://help.github.com/articles/removing-a-remote

Gesetze in Git

Manchmal gibt es seltsame Ideen, wie z.B. sämtliche Gesetze in ein Git Repository zu packen. Was auf den ersten Blick skurril klingt, hat aber durchaus einen interessanten Nebenaspekt. So kann man bereits heute die Gesetze im Internet einsehen. Das Git Repository hat allerdings den Vorteil, dass man nun auch die Änderungen der Gesetzte verfolgen kann. Wer sich das ganze anschauen möchte findet das Repository unter https://github.com/bundestag/gesetze.

Weitere Informationen gibt es unter:
http://www.golem.de/news/bundesgit-ein-git-repository-fuer-deutsche-gesetze-1208-93709.html

GitHub SSH Schlüssel unter Windows hinzufügen

Vor ein paar Tagen gab es einen Artikel darüber wie man den SSH Schlüssel für GitHub unter Ubuntu hinzufügt. Heute gibt es das ganze für Windows. Nach der Installation von TortiseGit starten wir die Git Bash welche im Startmenü zu finden ist. Dort erzeugen wir dann den SSH Schlüssel mittels:

ssh-keygen -t rsa -C ""

Diese Schlüssel fügen wir nun unter GitHub (https://github.com/account/ssh) hinzu. Dazu öffnen wir die Datei id_rsa.pub welche sich im Ordner .ssh befindet. Der .ssh Ordner ist dabei in den Eigenen Dateien zu finden.

Das Problem an dieser Variante ist das damit das auschecken nur in der Git Bash aber nicht direkt in TortiseGit funktioniert, da dieses einen anderes Schlüsselformat nutzt. Um einen Schlüssel im PuTTY Format zu erzeugen muss zuerst die Software PuTTYgen.exe (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) heruntergeladen werden. Nach dem Start der Anwendung sieht das ganze so aus:

Dort drücken wir auf den Button Generate und bewegen die Maus in dem leeren Bereich um Zufallsdaten für die Schlüsselgenerierung zu liefern. Nachdem der Schlüssel erzeugt würde, drücken wir die Buttons Save public key und Save private key um die beiden Schlüssel zu sichern. Der Public Key kann dabei direkt aus der Anwendung in das GitHub Profil kopiert werden.

Beim git clone muss nun nur noch die PuTTY Private Key Datei angeben werden und schon sollte auch hier das auschecken auch hier ohne Probleme funktionieren.

Weitere Informationen gibt es unter:
http://help.github.com/win-set-up-git/

SSH Schlüssel für Github unter Ubuntu und Mac OS X hinzufügen

Wenn man ein Git Repository bei GitHub hat, so ist es doch recht nervig mit diesem per HTTPS zu arbeiten, da man dort für jede Anwendung sein GitHub Passwort eingeben muss. Einfacher ist es wenn man seinen Public SSH Key bei GitHub hinterlegt. Dabei wird hier davon ausgegangen das man noch keinen SSH Schlüssel besitzt. Um sich einen solchen anzulegen wechselt man auf die Konsole und gibt dort:

ssh-keygen -t rsa -C ""

ein, wobei die Mailadresse natürlich zu ersetzen ist. In seinem Homeverzeichnis hat man nun im Ordner .ssh eine Datei namens id_rsa.pub welche man in einem Texteditor öffnen sollte. Nun geht man auf die Seite https://github.com/account/ssh und fügt dort einen neuen Schlüssel (Add another public key) hinzu. Dabei kopiert man die Zeichenkette aus der id_rsa.pub Datei in das Feld Key. Anschließend kann man sich ein Git Repository über SSH mittels:

git clone :Invertika/data.git

holen und (die entsprechenden Rechte vorausgesetzt) problemlos mittels

git push

die getätigten Änderungen wieder in das GitHub Repository bringen, ohne ein Passwort eingeben zu müssen. Unter Mac OS X funktioniert das ganze im übrigen genauso.

Weitere Informationen gibt es unter:
http://help.github.com/win-set-up-git/