Why: deploying a new build meant manually finding and killing the old
process, rebuilding and re-launching with the right flags; dev and prod
instances could collide on ports, data dirs or kill each other.
Evidence: live matrix on the worktree - dev deploy (stop -> make build
-> start with health check), redeploy swaps the pid and keeps seeded
data, prod deploys alongside dev on separate port/data with fully
isolated /api/projects, port takeover is refused with the owning
process named while the running env stays up, stop clears pidfile and
frees the port. A pid-capture bug (compound-background subshell wrote
the wrapper pid instead of the server) was caught and fixed during the
first live run.
Impact: scripts/svc.sh <dev|prod> [deploy|stop|start|restart|status|
logs]; runtime/<env>/{data,svc.pid,svc.log,svc.env} isolation; defaults
dev 127.0.0.1:8788 / prod 127.0.0.1:8787 overridable via SVC_* env
vars (incl. SVC_PROD_DSN for the PG tier); make svc ENV=... shortcut;
runtime/ gitignored. Safety: only processes started by the script are
stopped (pidfile + /proc cmdline double check).
Refs: feature/svc-env-script task card.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
feature/svc-env-script:环境服务管理脚本
scripts/svc.sh dev|prod [deploy|stop|start|restart|status|logs];make svc ENV=... 快捷入口。
Why: deploying a new build meant manually finding and killing the old process, rebuilding and re-launching with the right flags; dev and prod instances could collide on ports, data dirs or kill each other. Evidence: live matrix on the worktree - dev deploy (stop -> make build -> start with health check), redeploy swaps the pid and keeps seeded data, prod deploys alongside dev on separate port/data with fully isolated /api/projects, port takeover is refused with the owning process named while the running env stays up, stop clears pidfile and frees the port. A pid-capture bug (compound-background subshell wrote the wrapper pid instead of the server) was caught and fixed during the first live run. Impact: scripts/svc.sh <dev|prod> [deploy|stop|start|restart|status| logs]; runtime/<env>/{data,svc.pid,svc.log,svc.env} isolation; defaults dev 127.0.0.1:8788 / prod 127.0.0.1:8787 overridable via SVC_* env vars (incl. SVC_PROD_DSN for the PG tier); make svc ENV=... shortcut; runtime/ gitignored. Safety: only processes started by the script are stopped (pidfile + /proc cmdline double check). Refs: feature/svc-env-script task card.