Menu

Migration von Gogs zu Gitea

Ich hatte letztes Jahr bereits hier im Blog über Gogs berichtet und die Installation auf einem Uberspace beschrieben. Lange Zeit war ich mit dem git Server sehr zufrieden, gerade die Performance empfand ich als unvergleichbar gut. Mit der Zeit geriet die Entwicklung allerdings immer mal wieder ins Stocken, Issues blieben unbeantwortet und die Pull Request stapelten sich. Teilweise war der Entwickler Monate lang gar nicht erreichbar und Bugs blieben dadurch lange Zeit ungefixt.

Und genau hier liegt auch das Kernproblem. DER Entwickler, das Projekt wird allein durch einen einzelnen Entwickler betreut. Natürlich steht es jedem frei andere an seinem Projekt mitarbeiten zu lassen oder, wie im Fall von Gogs, eben halt nicht. Diese Entscheidung muss man akzeptieren und kann man auch niemandem verübeln. Allerdings finde ich das aus Sicht der Community keinen guten Ansatz. Jeder hat mal Urlaub oder braucht eine Auszeit aber ein tolles Projekt über Wochen "im Regen stehen zu lassen" führt früher oder später zu einer Abwanderung der Benutzer.

Aus diesem Grund habe ich meinen Gogs Server vor kurzem zu dem Fork Gitea migriert. Gitea wird im Gegensatz zu Gogs von insgesamt 10 Maintainern betreut, die in regelmäßigen Abständen gewählt werden, was für mein Geschmack der deutlich elegantere Ansatz ist.

Eine Migration ist bis zur Gogs Version 0.9.115 möglich und ist auch in der offiziellen Doku von Gitea beschrieben. Hier meine Vorgehensweise auf einem Uberspace im Schnelldurchlauf:

  1. # stop gogs daemon
  2. svc -d ~/service/gogs
  3. # create gitea dir
  4. mkdir -p $HOME/opt/gitea/custom/conf
  5. # move gogs custom config
  6. mv GOGS-DIR/custom/conf/app.ini $HOME/opt/gitea/custom/conf
  7. mv GOGS-DIR/data $HOME/opt/gitea/data
  8. mv gogs-repositories/  $HOME/opt/gitea/gitea-repositories/
  9.  
  10. # database backup
  11. mysqldump -u UUSER -p UUSER_gogs > gogs.sql
  12. # create new database
  13. mysql -u UUSER -p
  14. CREATE DATABASE UUSER_gitea;
  15. quit;
  16. # import database dump
  17. mysql -u UUSER -p UUSER_gitea < gogs.sql
  18.  
  19. # install gitea from binary
  20. go get -d -u code.gitea.io/gitea
  21. cd $GOPATH/src/code.gitea.io/gitea
  22. # Get new tags from the remote
  23. git fetch --tags
  24. # Get the latest tag name
  25. latestTag=$(git describe --tags `git rev-list --tags --max-count=1`)
  26. git checkout $latestTag
  27. TAGS="bindata"
  28. make generate build
  29. mv ./gitea $HOME/opt/gitea/gitea-"$latestTag"
  30. ln -s ~/opt/gitea/gitea-latest gitea-"$latestTag"

Anschließend müssen noch ein paar Einstellungen in der app.ini angepasst werden.

  1. [database]
  2. DB_TYPE  = mysql
  3. NAME     = UUSER_gitea
  4. [repository]
  5. ROOT = /home/UUSER/opt/gitea/repositories
  6. [log]
  7. MODE      = file
  8. ROOT_PATH = /home/UUSER/var/log/gitea

Bevor man den Dienst nach der Migration wieder starten kann, habe ich den alten Service gelöscht und für Gogs neu angelegt. Da der Prozess im Uberspace Wiki bereits sehr gut dokumentiert ist, verzichte ich an dieser Stelle auf eine Beschreibung.

Nachdem man den Service wieder gestartet hat, sollte das Webinterface von Gitea wie gewohnt erreichbar sein. Bei mir jedenfalls verlief die Migration ohne größere Schwierigkeiten.

Euch hat der Beitrag gefallen, ihr habt Fragen oder Anregungen? Hinterlasst mir einen Kommentar oder diskutiert im OSBN-Chat.
Geeklabor am : Gitea source update
Nach der Migration von Gogs zu Gitea stellte sich mir die Frage, wie installiere ich Updates und wie werde ich bei einer neuen Version automatisch benachrichtigt. Da ich keine zufriedenstellende Lösung gefunden habe und das manuelle installieren von Updat
Geeklabor am : Gogs auf Uberspace installieren
Gogs oder "Go Git Service" ist eine in der Programmiersprache Go geschriebene Webanwendung für git ähnlich GitHub oder GitLab. Gogs ist eine reine self-hosted Lösung und muss auf dem eigene Server installiert werden. Das Projekt hat mit der Version 0.8 de

Kommentare

Linear Verschachtelt
Max

Max

Danke für den hilfreichen Artikel!

Habe auch gleich mal auf gitea umgestellt, da ich sowieso gogs mal wieder updaten wollte.

Bei der Installation/Migration wollte gitea nicht so recht, und warf einen Fehler bezüglich der Datenbank ins Logfile: "gitea Error 1071: Specified key was too long; max key length is 1000 bytes".

Auf github in den issues fündig geworden bin ich hier: https://github.com/go-gitea/gitea/issues/3060

Anscheinend mag gitea ab Version 1.3 die MyISAM Engine in MySQL für die "deleted_branch" table nicht mehr so ganz. Nach einer Umstellung der Engine auf InnoDB über PhpMyAdmin für die table schnurrt jetzt gitea aber fröhlich :-)

Da auf uberspace z.T. auch ein paar Instanzen laufen, die älteres MySQL als 5.5.5 nutzen, kann es hierbei zu dem besagten Fehler kommen.

Dachte ich sag mal bescheid hier :-)

Robert Kaussow

Hi Max,

danke für den Hinweis :-) ja auf den Fehler bin ich tatsächlich auch gestossen. Hatte ich aber wohl vergessen zu dokumentieren. Also danke nochmal für deinen Kommentar.

Viele Grüsse

Kommentar schreiben

Die angegebene E-Mail-Adresse wird nicht veröffentlicht, sondern nur für eventuelle Benachrichtigungen verwendet.
Die Formatierung der Kommentare ist über Markdown möglich.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Gravatar Autoren-Bilder werden unterstützt.
Markdown-Formatierung erlaubt