Gitea의 공식 홈페이지에 마이그레이션 방법이 적힌 페이지가 있는데 구 버전에서 구 버전으로 이전하는 내용이 담겨 있다.

이대로 따라해서 과연 안전하게 마이그레이션 할 수 있을지 의심이 들던 찰나 다른 페이지를 발견했다.

마지막으로 공홈 마이그레이션 방법 페이지에서 찾을 수 있는 더 최신의 Gitea로의 이전에 대한 링크를 통해 마이그레이션을 성공할 수 있었다.

우선 내 Gogs는 Docker 환경에서 실행되고 있었고, Gitea 역시 Docker 환경에서 실행하는게 목표다.

Gogs Docker와 연결해둔 volume 디렉토리를 gogs-data라고 치고 Gitea Docker와 연결할 volume 디렉토리를 gitea-data라고 치자.

cp -rf gogs-data gitea-data
cd gitea-data
rm -rf git/.ssh/environment
mv git/gogs-repositories git/gitea-repositories
mv gogs gitea
mv gitea/data/gogs.db gitea/data/gitea.db
cd git/gitea-repositories
find . -type f \( -name pre-receive -o -name post-receive \) -exec rm -f {} \;
cd -

이제 파일들을 수정해야 한다.

gitea-data/git/.gitconfig : 적절하게 Gogs, gogs를 Gitea, gitea 등으로 수정

gitea-data/gitea/conf/app.ini : 아래를 참고해 상황에 맞게 수정한다
[database].NAME : gitea
[database].PATH : /data/gitea/data/gitea.db
[repository].ROOT : /data/git/gitea-repositories

gitea-data/gitea/data/gitea.db : 다음 쿼리를 날려준다
UPDATE version SET version=13;

이제 Gitea Docker를 1.1.4부터 순차적으로 하나씩 올려줄 차례다.

docker pull gitea/gitea:1.1.4
docker pull gitea/gitea:1.2.3
docker pull gitea/gitea:1.3.3
docker pull gitea/gitea:1.4.3
docker pull gitea/gitea:1.5.3
docker pull gitea/gitea:1.6.4
docker pull gitea/gitea:1.7.6
docker pull gitea/gitea:1.8.3
docker pull gitea/gitea:1.9.6
docker pull gitea/gitea:1.10.6
docker pull gitea/gitea:1.11.8
docker pull gitea/gitea:1.12.3
docker pull gitea/gitea:latest
docker run --detach --name=gitea --volume /path/to/gitea-data:/data gitea/gitea:1.1.4
# 한번 접속/로그인해서 상태 확인해보고
docker stop gitea && docker rm gitea
# ...
docker run --detach --name=gitea --volume /path/to/gitea-data:/data gitea/gitea:1.12.3
# 접속/로그인해서 상태 확인
docker stop gitea && docker rm gitea
docker run --detach --name=gitea --volume /path/to/gitea-data:/data gitea/gitea:latest

마지막으로 Web UI의 사이트 관리 메뉴에서 .ssh/authorized_keys 업데이트를 수행해준다.

ref:
https://docs.gitea.io/en-us/upgrade-from-gogs/
https://awk.space/blog/gogs-to-gitea/
https://github.com/go-gitea/gitea/issues/4286