hzforge manages four Forge services. Each is an independent drop-in; install, uninstall, and diagnose them separately.
Shared setup for every service:
- create
/opt/<svc>/toolswith conventional permissions; - create the
hzsvn/hzgitgroup if missing (forgechgrps repos to it; theapache+appsmembership those repos need is provisioned by the forge setup); - create the
<hub>.conf.d/{svn,git}include dirs (0700, apache); - write
00-forge-<svc>.confand validate + reload.
Per-tool repository blocks (
svn/svn.conf,git/git.conf,git/gitExternal.conf) come from the hub's existing MySQL-driven generator. hzforge includes them; it does not generate them.
mod_dav_svn serves each repo at /tools/<name>/svn via a <Location> with
SVNPath /opt/svn/tools/<name> and LDAP auth (from the generated svn.conf).
Because it's a <Location> handler, the drop-in adds a [END] shield so the CMS
catch-all rewrite doesn't capture /tools/<name>/svn.
- Packages:
subversion+mod_dav_svn(from the AppStreamsubversionmodule — stream1.10for py27,1.14for py36), plus the Py SWIG bindings (subversion-pythonfrom hubzero for py27,python3-subversionfrom the 1.14 module for py36) — which also light up Trac's repo browser. - Repos:
/opt/svn/tools/<name>.
git-http-backend serves /tools/<name>/git/<name> via a ScriptAliasMatch
(GIT_PROJECT_ROOT=/opt/git/tools). Because it's alias-based it self-diverts at
translate-name, so no carve-out is required (a [END] is still added for parity
with the m4 behavior on non-protocol paths).
- Package:
git. - Repos:
/opt/git/tools/<name>.
Same mechanism as git but rooted at /opt/gitExternal/tools and served at
/tools/<name>/gitExternal/<name>. Used for repositories mirrored/published
outside the hub's own git area.
- Package:
git. - Repos:
/opt/gitExternal/tools/<name>.
Per-tool Trac environments under /opt/trac/tools/<name>, served at the Trac
verbs (wiki, timeline, roadmap, browser, changeset, ticket,
newticket, report, query, search, admin, prefs, login, logout,
about, diff, attachment, raw-attachment, export, chrome, log,
pygments).
- Handler: mod_wsgi (default) or mod_python — see architecture.
- Packages:
hubzero-trac-mysqlauthz(providesHubzeroPermissionStoreand thehubzeroplugincomponents the envs require); for the mod_wsgi handler, build deps (gcc,python2-devel,httpd-devel) plus Trac core +mod_wsgi==4.9.4via pip. Thehubzero-tracmetapackage is deliberately not installed — its%postpip-installs Trac 1.0.13 and subvertpy, both unwanted (hzforge pins Trac viaTRAC_SPECand uses the SWIGsvn.corefromsubversion-python). - Envs:
/opt/trac/tools/<name>(paired with the matching/opt/svn/tools/<name>repository for the browser). - Repo browser is optional — see Trac ↔ Subversion are decoupled.