這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
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 # 應用組建記錄檔檔案
編譯執行
- install gogs from source
- install gitea from source
參考 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