Installation der benötigten Software

Linux

PHP und git sollten über die Standard-Paketquellen installiert werden können. Danach muss Composer installiert werden, siehe dazu https://getcomposer.org/download/.
Das Skript zur Migration ist auf Github, zur Installation müssen folgende Schritte befolgt werden:

 

git clone https://github.com/Dachaz/trac-to-gitlab
cd trac-to-gitlab
composer install

 

Windows

TortoiseGit und Composer können über die jeweiligen Seiten heruntergeladen und auf dem üblichen Weg installiert werden.

Migration der Issues

Aktivieren der RPC Schnittstelle von Trac

Die RPC-Schnittstelle von Trac kann nur von den SSELab-Admins freigegeben werden. Dazu reicht ein Ticket beim SD, das wird dann entsprechend weitergeleitet.

Auslesen des Secret Tokens von Gitlab

Für den Zugriff auf die Web API von Gitlab wird das Secret Token aus dem Benutzerprofil von Gitlab benötigt, dieses ist dort unter Profile Settings → Account zu finden.

Erstellen eines Gitlab Projektes und Herausfinden der ID des Projektes

Um die Migration durchführen zu können, muss vorher ein Projekt im Gitlab erstellt werden. Leider unterstützt die Gitlab Web API kein Zugriff auf Projekte mit dem Projektnamen, sondern nur mit der ID. Die ID eines Projektes kann über die Seite https://git.rwth-aachen,de/api/v3/projects?private_token=<secret token> ausgelesen werden.

Durchführen der Migration

Um die Migration durchzuführen, reicht folgender Aufruf (im trac-to-gitlab Verzeichnis):

 

php migrate.php -t https://<username>%40rwth:<passwort>@sselab.rwth-aachen.de/lab2/private/trac/<Projektname> -g https://git.rwth-aachen.de -k <secret-token> -p <ID> -q <Ticket query> -m "<ab123456@rwth=john.doe, cd345678@sselab=jane.doe"

 

Zur Ticket Query (-q): Hier kann eine beliebige Anfrage eingefügt werden, Beispiele sind hier zu finden. Um beispielsweise alle neuen Tickets zu migrieren, reicht "status=new".
Wahlweise kann anstelle der Ticket Query auch eine Trac Komponente mit dem Parameter -c angegeben werden, Standard in Trac ist component1. Der Aufruf sähe dann wie folgt aus:

 

php migrate.php -t https://<username>%40rwth:<passwort>@sselab.rwth-aachen.de/lab2/private/trac/<Projektname> -g https://git.rwth-aachen.de -k <secret-token> -p <ID> -c component1 -m "<ab123456@rwth=john.doe, cd345678@sselab=jane.doe"

 

Zur User Map (-t): Das Format ist <SSELab-Benutzer=Gitlab-Benutzer>.

Installation of required Software

Linux

PHP and git should be installable via the package manager of the used distribution. After that composer has to be installed, please consult https://getcomposer.org/download/ for further instructions.
The script for the migration itself is hosted on Github, to be installed as follows:

git clone https://github.com/Dachaz/trac-to-gitlab
cd trac-to-gitlab
composer install

Windows

TortoiseGit and Composer can be downloaded on their respective sites and installed via the usual way.

Migration of issues

Activation of the RPC API in trac

To be able to access the RPC API in trac it has to be cleared by an SSELab admin. Please raise a ticket (mail to servicedesk@itc.rwth-aachen.de), it will be forwarded.

Getting the secret token of Gitlab

To be able to access the web api of Gitlab the secret token is required, to be found under profile settings → account.

Creating a Gitlab project and discovering its id

To be able to do the actual migration, a Gitlab project has to be created. Unfortunately, the Gitlab web api doesn't allow access to projects using the project name, but only with the id. The id can be found on the page https://git.rwth-aachen,de/api/v3/projects?private_token=<secret token>.

Actual Migration

To do the migration, the following command line should suffice:

php migrate.php -t https://<username>%40rwth:<password>@sselab.rwth-aachen.de/lab2/private/trac/<project name> -g https://git.rwth-aachen.de -k <secret-token> -p <ID> -q <ticket query> -m "<ab123456@rwth=john.doe, cd345678@sselab=jane.doe"

Regarding the ticket query (-q): Any query can be inserted here, examples are on this page. To migrate only all new tickets, "status=new" should be used.
Instead of using the ticket query, a trac component can be used with the parameter c standard component in trac is component1. In that case the command line looks like this:

php migrate.php -t https://<username>%40rwth:<password>@sselab.rwth-aachen.de/lab2/private/trac/<project name> -g https://git.rwth-aachen.de -k <secret-token> -p <ID> -c component1 -m "<ab123456@rwth=john.doe, cd345678@sselab=jane.doe"

Regarding the user map (-t): The format is <SSELab-user=Gitlab-user>.