gogs库/表研究

基于版本Gogs version 0.12.4

一直想把gogs上的库迁移到社区版的gitea上,但因高版本已经不支持自动迁移所以自己研究了一下gogs库/表结构。

一个简单导出表数据的方式:

./gogs backup

不用等它执行完成,当它提示在备份repositories就可以终止它,然后在/tmp/gogs-backup-*/db目录下就可以看到导出的表数据,一个表一个文件(json格式)。

表名 说明
Repository.json 库表(库名,备注,是否是镜像,分组ID)。
User.json 用户/分组表,上个表中只有分组ID,名称需要到这个表中查找。
Action.json 这个表最大但也最没什么用,可以清空为库文件瘦身。

其它就没什么有用的表数据了,与库相关的内容都没有存在表中,应该都是从repo中获取的。


库操作(sqlite3)

$ sqlite3 gogs.db

sqlite> .database
main: /media/wii/disk1t/gogs/data/gogs.db
sqlite> .tables
access                    label                     star
access_token              lfs_object                team
action                    login_source              team_repo
attachment                milestone                 team_user
collaboration             mirror                    two_factor
comment                   notice                    two_factor_recovery_code
deploy_key                org_user                  upload
email_address             protect_branch            user
follow                    protect_branch_whitelist  version
hook_task                 public_key                watch
issue                     pull_request              webhook
issue_label               release
issue_user                repository

sqlite> select count(*) from action;
32387

# 释放空间 (库文件缩小)
sqlite> vacuum;

sqlite> .q