Gitocean
Gitocean is a small Go-based Git hosting platform for personal use. It provides a CLI, minimal server-rendered web UI, JSON HTTP API, MySQL metadata storage, and HTTP Smart Git transport. There is no SSH transport.
Quickstart
go run ./cmd/gitocean init
go run ./cmd/gitocean server --config storage/config.json
In another shell:
go run ./cmd/gitocean register
go run ./cmd/gitocean login
go run ./cmd/gitocean repo create demo --public
go run ./cmd/gitocean clone USER/demo
Open the minimal web UI at the server URL, for example:
http://localhost:8080/repos
Web UI routes include /repos, /login, /register, /repos/new, and /{username}/{repo}.
Storage
Bare repositories are stored under:
storage/repos/{owner}/{repo}.git
Server config defaults to:
storage/config.json
CLI auth config defaults to:
~/.config/gitocean/config.json
Web UI
The web UI is intentionally minimal and server-rendered. It supports repository search, login/register/logout, repository creation, repository file browsing, plain-text file viewing, simple textarea-based file editing for users with write access, and forking public repositories. Private repositories cannot be forked.
Development
Run checks with:
gofmt -w .
go test ./...
go vet ./...
go test -cover ./...
Optional integration tests:
go test -tags=integration ./...
GITOOCEAN_TEST_MYSQL_DSN='user:pass@tcp(127.0.0.1:3306)/gitocean_test?parseTime=true' go test -tags=integration ./...
Code layout
cmd/gitocean/ thin executable entrypoint
internal/app/ application command dispatch and domain handlers
internal/model/ shared data models
internal/config/ client/server config helpers
internal/dbutil/ MySQL connection helpers
internal/gitutil/ reusable Git command helpers
internal/httputil/ JSON HTTP helpers
internal/backup/ backup/restore helpers
internal/validate/ name and branch validators
plans/ phase plans