Plan: Make WorktreeService config-driven (base branch, branch prefix)#
Summary#
Replace hardcoded origin/master and default 'feat' branch prefix in WorktreeService with values sourced from TenantConfigService. This makes branch management config-driven, unblocking tenant-aware branch operations.
Files#
| File | Action | Description |
|---|---|---|
src/worktree/worktree.service.ts | modify | Inject TenantConfigService, replace origin/master with origin/${defaultBaseBranch}, use tenantConfig.branchPrefix as default |
src/worktree/worktree.module.ts | modify | Import TenantModule |
src/worktree/worktree.service.spec.ts | modify | Add TenantConfigService mock, add test case with defaultBaseBranch: 'main' |
Steps#
- Inject TenantConfigService into WorktreeService — Add
TenantConfigServiceto constructor. CallgetConfig()to readdefaultBaseBranchandbranchPrefixat the point of use (not constructor-time, since config may vary per invocation in future multi-tenant scenarios). - Replace hardcoded
origin/master— Line 130: change'origin/master'to`origin/${tenantConfig.defaultBaseBranch}`in thegit worktree add -bcall insidegetOrCreateWorktree(). - Make default branchPrefix config-driven — Change the
branchPrefix = 'feat'default parameter ingetOrCreateWorktree()(line 27) andcleanupWorktree()(line 149) to usetenantConfig.branchPrefixwhen no explicit prefix is passed. Use a sentinel default (undefined) and resolve inside the method body. - Import TenantModule in WorktreeModule — Add
TenantModuletoimportsarray inworktree.module.ts. - Update unit tests — Add
TenantConfigServicemock (returning{ defaultBaseBranch: 'master', branchPrefix: 'feat' }by default). Add test case wheredefaultBaseBranch: 'main'verifiesorigin/mainis used. Verify explicitbranchPrefixcaller override still takes precedence.
Verification#
tsc --noEmitpasses with no type errorsnpm run lintpasses with zero warningsnpm run testpasses — all existing tests still pass with default config values, new test withdefaultBaseBranch: 'main'passes
Risks#
- Dependency on #348:
TenantConfigServiceandTenantModulemust exist before implementation. If #348 is not yet merged intorc/multi-tenant, this task is blocked.