gogs 源码阅读笔记 001

时间:2021-04-07 08:58:41

gogs 源码阅读笔记 001

gogs项目相当不错,本笔记实际是基于gogs fork版本 git-122a66f.

gitea

(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都支持什么功能。

gitea 介绍

  • What is Gitea?
  • Purpose
  • Features