Files
zeekay bc3da4c82b gitd: the fork ships one daemon, and it is not called gitea
The binary was gitea and admin work was `gitea admin ...`. Nothing in this fork
is Gitea, so the daemon is now `gitd`: EXECUTABLE, /app/gitd/gitd, the
/usr/local/bin/gitd wrapper, the s6 service, the CLI's own name, and the delegate
each repository's git hooks execute.

The delegate is the whole risk. Every repo on disk carries
hooks/<hook>.d/<binary> containing setting.AppPath verbatim, and the outer
hooks/<hook> runs EVERY executable in <hook>.d/ and rejects the push if any exits
non-zero. So this rename is a migration, not a rename, and it is safe only
because both halves move together:

  * AppPath moves (/usr/local/bin/gitea -> /usr/local/bin/gitd), which is what
    makes routers.syncAppConfForGit re-run SyncRepositoryHooks over every
    repository on the first boot after the upgrade — and it runs inside
    InitWebInstalled, i.e. before the listener opens, so no push can ever meet a
    stale hook. `gitd admin regenerate hooks` remains the manual lever.
  * createDelegateHooks now deletes legacyDelegateHookNames. Without it each repo
    would keep BOTH hooks/<hook>.d/gitea and .../gitd, the stale one would exit
    127, and every push would fail forever. It deletes LAST: dying midway leaves
    two delegates and a loud failure, where deleting first would leave none and
    silently bypass every server-side check.
  * checkDelegateHooks reports a surviving legacy delegate before any other
    check, so `doctor --fix` heals a repo the sync missed.

Anything OUTSIDE this repo that invokes the binary by absolute path must move in
the same change that bumps the image tag — today that is the oauth-sync init
container in hanzoai/universe, which runs /app/gitea/gitea.

Deleted rather than renamed: snap/ (published a snap literally named gitea),
contrib/service/* and contrib/fhs-compliant-script (service units for a gitea
binary we no longer build) and contrib/upgrade.sh (fetched upstream Gitea from
dl.gitea.com and installed it OVER ours). We ship one artifact, the container.

Deliberately untouched: /data/gitea, gitea.db, /var/lib/gitea, /etc/gitea. Those
are the durable volume layout of a live server, and moving them is a data
migration with nothing to do with the binary's name.
2026-07-26 11:32:30 -07:00

27 lines
707 B
TOML

root = "."
tmp_dir = ".air"
[build]
pre_cmd = ["killall -9 gitd 2>/dev/null || true"] # kill off potential zombie processes from previous runs
cmd = "make --no-print-directory backend"
entrypoint = ["./gitd"]
delay = 2000
include_ext = ["go", "tmpl"]
include_file = ["main.go"]
include_dir = ["cmd", "models", "modules", "options", "routers", "services"]
exclude_dir = [
"models/fixtures",
"models/migrations/fixtures",
"modules/avatar/identicon/testdata",
"modules/avatar/testdata",
"modules/git/tests",
"modules/migration/file_format_testdata",
"routers/private/tests",
"services/gitdiff/testdata",
]
exclude_regex = ["_test.go$", "_gen.go$"]
stop_on_error = true
[log]
main_only = true