# Gitocean Gitocean is a small Go-based Git hosting platform for personal use. It provides a CLI, JSON HTTP API, MySQL metadata storage, and HTTP Smart Git transport. There is no web UI and no SSH transport. ## Quickstart ```bash go run ./cmd/gitocean init go run ./cmd/gitocean server --config storage/config.json ``` In another shell: ```bash 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 ``` ## Storage Bare repositories are stored under: ```text storage/repos/{owner}/{repo}.git ``` Server config defaults to: ```text storage/config.json ``` CLI auth config defaults to: ```text ~/.config/gitocean/config.json ``` ## Development Run checks with: ```bash gofmt -w . go test ./... go vet ./... go test -cover ./... ``` Optional integration tests: ```bash 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 ```text 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 ```