gogs 表结构研究
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