Freeciv in HTML5 umgesetzt

Mit der Reihe Sid Meier’s Civilization wurde vor einigen Jahrzehnten ein Spiel geschaffen, welches auch heute noch viele Fans hat. Mit dem Spiel Freeciv gibt es seit über 10 Jahren eine freie Implementation des Spielprinzips. Neben Versionen für Linux, Mac OS X, Windows oder Amiga OS gibt es seit einiger Zeit eine HTML5 Umsetzung von Freeciv, welche ebenfalls unter der GPL lizenziert ist.

Freeciv im Browser

Freeciv im Browser

Die Browser-Version kann man dabei im Einzelplayer, als auch im Multiplayermodus spielen. Die Spielbarkeit der Umsetzung ist auch auf Mobilgeräten wie Tablets gegeben. Spielen kann man die HTML5 Version unter play.freeciv.org. Der Quelltexte für Freeciv sind in einem Subversion-Repository zu finden.

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 <seeseekey@gmail.com>
#
#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.

Google Code SVN Repository in Git Repository umwandeln

Möchte man sein Google Code Subversion Repository mit der kompletten History in ein Git Repository umwandeln so ist das erstaunlich einfach. Im ersten Schritt sollte man die Project committers unter Adminster -> Project Members entfernen (sicher ist sicher). Dann sollte unter Adminster -> Source der Repository Typ auf Git gestellt werden.

Hier wird dabei ausgegangen das die Projektstruktur in etwa so aussieht:

branches
tags
trunk

Zuerst legt man im Homeverzeichnis eine Datei namens .netrc an und füllt sie mit folgendem Inhalt:

machine code.google.com login seeseekey@example.com password geheim

Den genauen Inhalt erfährt man dabei auch wenn man auf die Google Code Seite https://code.google.com/hosting/settings geht. Bevor es weitergeht installiert man mittels:

apt-get install git-svn

das Paket git-svn. Dieses Paket ist dabei für den Großteil der Konvertierung zuständig. Nun öffnet man ein Terminal und gibt dort folgendes ein (der Projektname muss natürlich angepasst werden):

git svn clone --stdlayout https://invertika.googlecode.com/svn invertika
cd invertika
git remote add googlecode https://code.google.com/p/invertika
git push --all googlecode

Anschließend fügt man die Project committers wieder hinzu und kann nun mit dem Git Repository arbeiten. Problematisch ist allerdings, das das Push Limit 500 MiB beträgt. Größere Repositories kann man damit nicht ohne weiteres pushen.

Weitere Informationen gibt es unter:
http://code.google.com/p/support/wiki/ConvertingSvnToGit
http://code.google.com/p/support/issues/detail?id=5790
http://code.google.com/p/support/issues/detail?id=5816
http://code.google.com/p/support/wiki/GitFAQ

SVN-Begrifflichkeiten

Wenn man von einem anderen Version Control System auf SVN wechselt bzw. zum ersten Mal ein VCS benutzt so wird man über einige neue Begriffe stolpern welche ich hier erklären möchte.

Repository
Das Repository bezeichnet das Archiv der Quelltexte (oder was auch immer man mittels SVN verwaltet). In dem Repository befinden sich sämtliche Revisionen des Projektes.

trunk, branch und tag
In einem SVN Repository gibt es drei Verzeichnisse names trunk, branch und tag. Im Verzeichnis trunk befindet sich die aktuelle Entwicklungszweig. Das branch Verzeichnis enthält Abspaltungen z.B. um größere Änderungen zu testen. Möchte man solche Änderung machen erzeugt man aus dem trunk einen neuen Branch. Im tag Verzeichnis können die Releaseversionen “gelagert” werden.

Revision
Eine Revision bezeichnet die Version des Repostiories bzw. einer Datei in ebend diesem. Wenn das Repository z.B. die Revision 53 hat und man fügt eine neue bzw. ändert eine bestehende Datei des Repository so steigt deren Revision um 1. Die neue Revision ist dann 54.

Checkout
Im Gegensatz zu VC Systemen wie Visual SourceSafe bezeichnet ein Checkout bei SVN das holen einer Arbeitskopie des Repository vom Server.

Lock
Ein Lock benötigt man dann wenn man eine Datei bearbeiten möchte. Dadurch wird die Datei gesperrt, so das andere Nutzer sie nicht bearbeiten können (je nach Einstellung). Möchte man die bearbeitete Datei nun zurück in Reposity bringen so macht man ein Commit.

Commit
Mit einem Commit werden die veränderten Dateien wieder ins Repository hochgeladen.

Weitere Informationen unter:
http://de.wikipedia.org/wiki/Subversion_(Software)

SVN Server Hosting

Ich war vor einiger Zeit auf der Suche nach einem Hostingdienst für SVN Server. Hintergrund war das ich meine privaten Sourcecodes nicht mehr nur auf einem Rechner benutzen wollte sondern über die Entwicklung auf mehreren Rechnern betrieb (und betreibe). Natürlich hätte ich einen SVN Server aufsetzen können und diesen benutzen können. Doch wollte ich mich nicht mit Dingen wie der Aktualisierung des Servers etc. aufhalten.

Also ging die Suche los. Es gibt eine relativ überschaubare Anzahl von SVN Hosting Diensten. Die meisten dieser Dienste waren für meine Zwecke schlicht überteuert oder die Server standen in den USA, was in diesem Fall ein K.O. Kriterium war :) Nach etlichen Stunden (okay es waren nur anderthalb :)) fand ich dann endlich etwas was meinen Vorstellungen entsprach.

Der Dienstleister nennt sich Quaritsch und Winkler Web Services und ist unter https://www.qwws.net/ zu finden. Die Preise dort sind sehr moderat, selbst das teuerste Paket kostet nur 8 € im Monat. Man muss auch nicht die Katze im Sack kaufen, da man auch einen Testserver für eine Woche testen kann. Ich benutze nun seit einiger Zeit das developerSVN-Paket und bin doch rundum zufrieden :)