gogs 源码阅读笔记 001
gogs项目相当不错,本笔记实际是基于gogs fork版本 git-122a66f.
(gitea版本由来)[https://blog.gitea.io/2016/12/welcome-to-gitea/]
TODO
- 源码结构
- 编译执行
- 功能表一览
- 功能对应源码走读
源码结构
gogs的源码结构,应该是遵循了作者的 go项目代码规范 。
以下为一般项目结构,根据不同的 Web 框架习惯,可使用括号内的文字替换;根据不同的项目类型和需求,可*增删某些结构:
- templates (views) # 模板文件
- public (static) # 静态文件
- css
- fonts
- img
- js
- routers (controllers) # 路由逻辑处理
- models # 数据逻辑层
- modules # 子模块
- setting # 应用配置存取
- cmd # 命令行程序命令
- conf # 默认配置
- locale # i18n 本地化文件
- custom # 自定义配置
- data # 应用生成数据文件
- log # 应用生成日志文件
编译执行
参考 gitea 或 gogs 的编译命令:
TAGS="sqlite" make build
或
go build -tags 'sqlite'
后记
gogs支持多种数据库后端: mysql, postgres, mssql, sqlite3.
为了方便启动和测试,我选择了sqlite3,但因为对golang的不熟悉,
折腾了很久却无法找到sqlite3的install选项。
实际,我已经手动安装过go-sqlite3
,看了 models_sqlite.go
文件,也设置了 EnableSQLite3 = true
。
其实原因就在此文件的头上 // +build sqlite
,构建的时候必须指定tags.
启动
./gitea web
功能表一览
gitea是类似github的git服务器,参考下面的介绍,可以比较方便的知道gitea都支持什么功能。
- What is Gitea?
- Purpose
- Features