Files
forge/README.zh-cn.md
zeekayandHanzo Dev a0b748828a refactor(brand): purge upstream naming from user- and operator-visible surfaces
Audited what users and operators actually see, not raw grep counts. The
rendered DOM, page titles, meta and footer on git.hanzo.ai were already
clean; the frontend bundle is clean on main (the live hits were a stale
deployed image, v1.26.19). What survived was server-side text and locales.

User-visible:
- Locale values: 12 -> 0 across 11 languages. The bulk was the admin
  self-check telling operators to run "gitea doctor convert"; our binary
  is gitd, so the instruction was wrong as well as off-brand.
- Credential prompt realm when OAuth2 is disabled (the branch whose job is
  to NOT match Git Credential Manager's "Gitea" probe).
- Admin diagnosis download is hanzo-git-diagnosis-*.zip; dump artifacts are
  hanzo-git-dump-*.zip / hanzo-git-db.sql.
- Azure AD icon gradient ids no longer carry the upstream name. Source
  hygiene only: svgo cleanupIds already rewrote them before shipping.

Outbound identity (what third parties see):
- User-Agent to OAuth providers, haveibeenpwned and remote LFS servers is
  now Hanzo Git. The git-lfs "git-lfs/<version>" prefix is untouched;
  some LFS servers parse it.

Operator-visible:
- CLI help, descriptions and examples name gitd, not gitea. Several were
  telling operators to run commands that do not exist.
- Migration/startup failure text (wrong-DB-version, no-SQLite-support,
  collation warning, internal-API contact error). The "upgrade to Gitea
  1.6.4 first" note keeps the upstream name: that release is a real point
  in the schema lineage and renaming it would make it a lie.
- Prometheus namespace gitea_ -> hanzogit_. Verified metrics are disabled
  on git.hanzo.ai, so no dashboard exists to break; this is the cheapest
  moment to do it.
- Default log file, PID file, and the container entrypoint message.
- Our own X-* headers are now function-namespaced per the platform's
  vendor-free convention: X-Cache-Debug, X-Internal-Auth,
  X-LFS-Content-Length, X-Vite-Dev-Server. Every side ships in one binary,
  so the rename is atomic.

Correctness found on the way:
- LLM.md documented GITEA__<section>__<KEY>; only GIT__ is accepted and
  there is no fallback, so a stale GITEA__ var is silently ignored.
- EnvConfigKeyPrefixGitea held "GIT__" — name now matches its value.
- api_packages_container_test.go still asserted the old registry realm
  while the code emits ours, so that test could not pass.
- README told developers to run ./gitea web; docs/build-setup.md told
  contributors to clone go-gitea/gitea instead of this fork.

Deliberately kept, and why, recorded in LLM.md: MIT attribution, dependency
import paths, addressing values whose rename silently redirects (webhook
type, .gitea/ repo conventions, index and analyzer names, /data/gitea),
the GCM interop realm, and three wire contracts with external consumers
(X-GITEA-OTP, webhook delivery headers, mail headers) that need an owner
decision rather than a blind rename.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-26 13:50:17 -07:00

1.2 KiB
Raw Permalink Blame History

Hanzo Git

License: MIT

Hanzo 自托管的 Git 平台 — Git 托管、代码审查、问题跟踪、包仓库,以及兼容于 GitHub Actions 的 CI/CD,并通过 hanzo.id OIDC 原生集成 IAM。服务位于 git.hanzo.ai。

本项目是 Gitea(MIT)的白牌分支。上游版权与许可完整保留于 LICENSE;身份验证改接 Hanzo IAM 而非本地账号,产品品牌为 Hanzo Git。

构建与部署

如同每个 Hanzo 仓库,只有一种方式:根目录的 hanzo.yml 声明镜像与测试; 约七行的 .hanzo/workflows/cicd.yml 导入 hanzoai/ci,在我们自己的 runner 上构建并推送 ghcr.io/hanzoai/git。切勿在本地构建镜像。

运行中的服务定义于 hanzoai/universe(git operator App CR):单写入者 SQLite 部署,配置经由 GIT__<section>__<KEY> 环境变量契约注入,OIDC 登录对接 hanzo.id。

开发

本地环境请见 docs/development.md。构建完成后,运行 ./gitd web 启动服务器,或 ./gitd help 查看所有命令。