Seit einigen Tagen bietet Github private Repositories auch kostenlos an. Wir sehen uns an, wie wir ein bestehendes Repository von Bitbucket nach Github migrieren.

Hinweis: Bitte testet erst die Migration, bevor ihr die originalen Dateien löscht. Es kann immer mal etwas schiefgehen.

Die Neuigkeit von Github

Github hat Anfang des Jahres einen Artikel zu den Repositories veröffentlicht. Für Einzelpersonen sind die privaten Repositories ab sofort kostenlos nutzbar. Ansonsten musste ein Anwender um die 8-10 $ pro Monat bezahlen, wenn mich nicht alles täuscht.

Als Privatperson für Hobbyprojekte lohnt es sich nicht wirklich. Vor allem, wenn man zwischendurch 2-3 Wochen hat, an denen nichts programmiert wird. Aus dem Grund habe ich meine privaten Projekte auf Gitlab bzw. Bitbucket gehostet.

Migration

Im Folgenden schauen wir uns an, wie wir ein Projekt von Bitbucket nach Github umziehen können. Derzeit habe ich nur ein privates Repository dort angelegt. Mich hat es immer etwas gestört, dass ich die prinzipiell gleichen Sachen auf verschiedenen Plattformen speichere.

Quellcode migrieren

Die Migration des Quellcodes kann auf zwei Wegen erfolgen. Der Importer von Github kann ein fremdes Projekt automatisch importieren. Im zweiten Fall (siehe weiter unten) müssen wir selbst Hand anlegen.

1. Repository nach Github importieren

Den Menüpunkt findet ihr oben rechts im Menü (1). Anschließend gebt ihr die URL zu eurem Repository ein (2). Unter 3 könnt ihr den Namen des lokalen Repositories definieren. Wählt anschließend aus, ob das Projekt privat oder öffentlich ist (4). Zum Abschluss muss nur noch der Startknopf betätigt werden.

Beim Testen habe ich gemerkt, dass Github auch private Repositories importiert. In diesem Fall erscheint eine Maske für den Benutzernamen und das Kennwort.

Nachdem ein neues Repository angelegt wurde, erklärt euch Github automatisch, wie ihr bestehenden Code übernehmt.

2. Anleitung von Github um ein Projekt anzulegen oder importieren

Das ist der händische Teil. Entweder kann wieder der Importer verwendet werden. Ansonsten muss die „origin“ von deinem lokalen Projekt geändert und anschließend neu gepusht werden.
Durch push werden alle commits an Github übertragen und die Historie bleibt erhalten.

Wenn ihr bereits eine remote origin für das Projekt habt, zeigt euch git remote add origin eine Fehlermeldung an. Um die URL zu ändern verwendet git remote set-url origin [GITHUB_PROJEKT_URL].
An dieser Stelle hätte ich mir einen Hinweis auf der Importseite gewünscht.

Das Wiki könnt ihr nur händisch migrieren. Dazu muss das Wiki lokal geklont werden. Lest hierzu bitte die Dokumentation von Github (Adding or editing wiki pages) oder Bitbucket (Clone and edit pages) um das Wiki lokal zu klonen.

Das Wiki von Github konnte ich erst klonen, nachdem ich auf der Webseite eine neue Seite angelegt habe. Mir ist es leider nicht gelungen die Historie zu übernehmen, indem ich die URL ändere.
Ich habe die Dokumente mittels kopieren & einfügen von dem Bitbucket-Wiki-Ordner in den Github-Wiki-Ordner übertragen. Mittels git add und git push habe ich die Dokumente veröffentlicht.

Hinweis: Die Funktionen „Wiki“ und „Github-Pages“ sind für private Repositories deaktiviert. Hierfür braucht ihr einen Pro Account. Bei öffentlichen Repositories stehen die Funktionen uneingeschränkt zur Verfügung.

Tickets/Issues migrieren

Leider werden die Tickets nicht automatisch übernommen. Hierfür benötigen wir ein externes Programm. Ich verwende das Programm von
Jeff Widman (https://github.com/jeffwidman/bitbucket-issue-migration). Um das Script zu verwenden, müsst ihr Python installieren.

Der Aufruf ist relativ selbsterklärend aufgrund der Projekt-Readme:

python3 migrate.py bitbucket_repo github_repo github_username

Ihr müsst hierbei beachten, dass das Repository (repo) immer im Format <user>/<project> angegeben wird. Für meinen Fall habe ich den Parameter --skip-attribution-for ergänzt. Nach der Migration sieht ein Ticket folgendermaßen aus:

3. Ticket nach der Migration von Bitbucket nach Github

Das originale Ticket wird verlinkt, gefolgt vom originalen Text. In Github gibt es keine Kategorien wie Typ, Priorität oder Version. Das Script fügt diese Werte als Label hinzu.
Nach der Migration hatte ich daher knapp 30 verschiedene Labels.

Stichprobenhaft habe ich die Tickets überprüft. Mir sind dabei keine Fehler aufgefallen. Die Kommentare eines Tickets waren ebenfalls angehängt und sogar Bilder innerhalb der Tickets wurden übertragen.

Fazit

Wie man sehen kann ist eine Migration von Bitbucket nach Github fast problemlos möglich. Ich finde es schade, dass Wikis und Pages in privaten Repositories nicht erlaubt sind. Öffentliche Projekte haben diesbezüglich keine Einschränkungen.
Das Skript für die Tickets funktioniert wunderbar. Wie immer, nach einer Migration, muss man das Projekt (bzw. die Tickets) aufräumen. Für die Versionen (Bitbucket) gibt es die Meilensteine (Github) als Gegenstück. Der Aufwand ist, je nach Projektgröße, überschaubar.

Werdet ihr eure Projekte auch nach Github umziehen oder gibt es für euch keinen Grund? Ich bin froh, nur noch einen Ort für meine Projekte zu nutzen und freue mich über eure Kommentare 🙂


Bildnachweis: Pixabay.com