fix(git): add git.base_branch config to replace hardcoded main target
Adds `git.base_branch` config option that controls the target branch for PRs and merges. When unset, auto-detects from origin/HEAD and falls back to "main". This fixes projects using `master`, `develop`, or any other default branch — previously `/gsd:ship` would create PRs targeting `main` (which may not exist) and `/gsd:complete-milestone` would try to checkout `main` and fail. Changes: - config.cjs: add git.base_branch to valid config keys - planning-config.md: document the option with auto-detect behavior - ship.md: detect base branch at init, use in PR create, branch detection, push report, and completion report - complete-milestone.md: detect base branch, use for squash merge and merge-with-history checkout targets - 1 new test for config-set git.base_branch Usage: gsd-tools config-set git.base_branch master Or auto-detect (default — reads origin/HEAD): git.base_branch: null Closes #1466 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -242,6 +242,16 @@ describe('config-set command', () => {
|
||||
assert.strictEqual(config.workflow.use_worktrees, false);
|
||||
});
|
||||
|
||||
test('sets git.base_branch for non-main default branches', () => {
|
||||
writeConfig(tmpDir, {});
|
||||
|
||||
const result = runGsdTools('config-set git.base_branch master', tmpDir);
|
||||
assert.ok(result.success, `Command failed: ${result.error}`);
|
||||
|
||||
const config = readConfig(tmpDir);
|
||||
assert.strictEqual(config.git.base_branch, 'master');
|
||||
});
|
||||
|
||||
test('errors when no key path provided', () => {
|
||||
const result = runGsdTools('config-set', tmpDir);
|
||||
assert.strictEqual(result.success, false);
|
||||
|
||||
Reference in New Issue
Block a user