feat: add git_tag config option to disable tagging on milestone completion (#532)
feat: Add git_tag config option to disable tagging on milestone completion
This commit is contained in:
@@ -160,6 +160,7 @@ function loadConfig(cwd) {
|
|||||||
model_profile: 'balanced',
|
model_profile: 'balanced',
|
||||||
commit_docs: true,
|
commit_docs: true,
|
||||||
search_gitignored: false,
|
search_gitignored: false,
|
||||||
|
git_tag: true,
|
||||||
branching_strategy: 'none',
|
branching_strategy: 'none',
|
||||||
phase_branch_template: 'gsd/phase-{phase}-{slug}',
|
phase_branch_template: 'gsd/phase-{phase}-{slug}',
|
||||||
milestone_branch_template: 'gsd/{milestone}-{slug}',
|
milestone_branch_template: 'gsd/{milestone}-{slug}',
|
||||||
@@ -193,6 +194,7 @@ function loadConfig(cwd) {
|
|||||||
model_profile: get('model_profile') ?? defaults.model_profile,
|
model_profile: get('model_profile') ?? defaults.model_profile,
|
||||||
commit_docs: get('commit_docs', { section: 'planning', field: 'commit_docs' }) ?? defaults.commit_docs,
|
commit_docs: get('commit_docs', { section: 'planning', field: 'commit_docs' }) ?? defaults.commit_docs,
|
||||||
search_gitignored: get('search_gitignored', { section: 'planning', field: 'search_gitignored' }) ?? defaults.search_gitignored,
|
search_gitignored: get('search_gitignored', { section: 'planning', field: 'search_gitignored' }) ?? defaults.search_gitignored,
|
||||||
|
git_tag: get('git_tag', { section: 'planning', field: 'git_tag' }) ?? defaults.git_tag,
|
||||||
branching_strategy: get('branching_strategy', { section: 'git', field: 'branching_strategy' }) ?? defaults.branching_strategy,
|
branching_strategy: get('branching_strategy', { section: 'git', field: 'branching_strategy' }) ?? defaults.branching_strategy,
|
||||||
phase_branch_template: get('phase_branch_template', { section: 'git', field: 'phase_branch_template' }) ?? defaults.phase_branch_template,
|
phase_branch_template: get('phase_branch_template', { section: 'git', field: 'phase_branch_template' }) ?? defaults.phase_branch_template,
|
||||||
milestone_branch_template: get('milestone_branch_template', { section: 'git', field: 'milestone_branch_template' }) ?? defaults.milestone_branch_template,
|
milestone_branch_template: get('milestone_branch_template', { section: 'git', field: 'milestone_branch_template' }) ?? defaults.milestone_branch_template,
|
||||||
@@ -598,6 +600,7 @@ function cmdConfigEnsureSection(cwd, raw) {
|
|||||||
model_profile: 'balanced',
|
model_profile: 'balanced',
|
||||||
commit_docs: true,
|
commit_docs: true,
|
||||||
search_gitignored: false,
|
search_gitignored: false,
|
||||||
|
git_tag: true,
|
||||||
branching_strategy: 'none',
|
branching_strategy: 'none',
|
||||||
phase_branch_template: 'gsd/phase-{phase}-{slug}',
|
phase_branch_template: 'gsd/phase-{phase}-{slug}',
|
||||||
milestone_branch_template: 'gsd/{milestone}-{slug}',
|
milestone_branch_template: 'gsd/{milestone}-{slug}',
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ Configuration options for `.planning/` directory behavior.
|
|||||||
```json
|
```json
|
||||||
"planning": {
|
"planning": {
|
||||||
"commit_docs": true,
|
"commit_docs": true,
|
||||||
"search_gitignored": false
|
"search_gitignored": false,
|
||||||
|
"git_tag": true
|
||||||
},
|
},
|
||||||
"git": {
|
"git": {
|
||||||
"branching_strategy": "none",
|
"branching_strategy": "none",
|
||||||
@@ -19,6 +20,7 @@ Configuration options for `.planning/` directory behavior.
|
|||||||
|--------|---------|-------------|
|
|--------|---------|-------------|
|
||||||
| `commit_docs` | `true` | Whether to commit planning artifacts to git |
|
| `commit_docs` | `true` | Whether to commit planning artifacts to git |
|
||||||
| `search_gitignored` | `false` | Add `--no-ignore` to broad rg searches |
|
| `search_gitignored` | `false` | Add `--no-ignore` to broad rg searches |
|
||||||
|
| `git_tag` | `true` | Create git tags on milestone completion |
|
||||||
| `git.branching_strategy` | `"none"` | Git branching approach: `"none"`, `"phase"`, or `"milestone"` |
|
| `git.branching_strategy` | `"none"` | Git branching approach: `"none"`, `"phase"`, or `"milestone"` |
|
||||||
| `git.phase_branch_template` | `"gsd/phase-{phase}-{slug}"` | Branch template for phase strategy |
|
| `git.phase_branch_template` | `"gsd/phase-{phase}-{slug}"` | Branch template for phase strategy |
|
||||||
| `git.milestone_branch_template` | `"gsd/{milestone}-{slug}"` | Branch template for milestone strategy |
|
| `git.milestone_branch_template` | `"gsd/{milestone}-{slug}"` | Branch template for milestone strategy |
|
||||||
|
|||||||
@@ -8,7 +8,8 @@
|
|||||||
},
|
},
|
||||||
"planning": {
|
"planning": {
|
||||||
"commit_docs": true,
|
"commit_docs": true,
|
||||||
"search_gitignored": false
|
"search_gitignored": false,
|
||||||
|
"git_tag": true
|
||||||
},
|
},
|
||||||
"parallelization": {
|
"parallelization": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
|
|||||||
@@ -531,6 +531,11 @@ fi
|
|||||||
|
|
||||||
<step name="git_tag">
|
<step name="git_tag">
|
||||||
|
|
||||||
|
<config-check>
|
||||||
|
Read `planning.git_tag` from `.planning/config.json` (default: `true` if not set).
|
||||||
|
If `git_tag` is `false` → skip this step entirely, proceed to `git_commit_milestone`.
|
||||||
|
</config-check>
|
||||||
|
|
||||||
Create git tag:
|
Create git tag:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ Parse current values (default to `true` if not present):
|
|||||||
- `workflow.verifier` — spawn verifier during execute-phase
|
- `workflow.verifier` — spawn verifier during execute-phase
|
||||||
- `model_profile` — which model each agent uses (default: `balanced`)
|
- `model_profile` — which model each agent uses (default: `balanced`)
|
||||||
- `git.branching_strategy` — branching approach (default: `"none"`)
|
- `git.branching_strategy` — branching approach (default: `"none"`)
|
||||||
|
- `planning.git_tag` — create git tags on milestone completion (default: `true`)
|
||||||
</step>
|
</step>
|
||||||
|
|
||||||
<step name="present_settings">
|
<step name="present_settings">
|
||||||
@@ -83,6 +84,15 @@ AskUserQuestion([
|
|||||||
{ label: "Per Phase", description: "Create branch for each phase (gsd/phase-{N}-{name})" },
|
{ label: "Per Phase", description: "Create branch for each phase (gsd/phase-{N}-{name})" },
|
||||||
{ label: "Per Milestone", description: "Create branch for entire milestone (gsd/{version}-{name})" }
|
{ label: "Per Milestone", description: "Create branch for entire milestone (gsd/{version}-{name})" }
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: "Create git tags on milestone completion?",
|
||||||
|
header: "Git Tagging",
|
||||||
|
multiSelect: false,
|
||||||
|
options: [
|
||||||
|
{ label: "Yes (Recommended)", description: "Tag releases with version (e.g., v1.0) on milestone completion" },
|
||||||
|
{ label: "No", description: "Skip git tagging — use if your project doesn't use tags or uses a different convention" }
|
||||||
|
]
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
```
|
```
|
||||||
@@ -100,6 +110,10 @@ Merge new settings into existing config.json:
|
|||||||
"plan_check": true/false,
|
"plan_check": true/false,
|
||||||
"verifier": true/false
|
"verifier": true/false
|
||||||
},
|
},
|
||||||
|
"planning": {
|
||||||
|
...existing_planning,
|
||||||
|
"git_tag": true/false
|
||||||
|
},
|
||||||
"git": {
|
"git": {
|
||||||
"branching_strategy": "none" | "phase" | "milestone"
|
"branching_strategy": "none" | "phase" | "milestone"
|
||||||
}
|
}
|
||||||
@@ -124,6 +138,7 @@ Display:
|
|||||||
| Plan Checker | {On/Off} |
|
| Plan Checker | {On/Off} |
|
||||||
| Execution Verifier | {On/Off} |
|
| Execution Verifier | {On/Off} |
|
||||||
| Git Branching | {None/Per Phase/Per Milestone} |
|
| Git Branching | {None/Per Phase/Per Milestone} |
|
||||||
|
| Git Tagging | {On/Off} |
|
||||||
|
|
||||||
These settings apply to future /gsd:plan-phase and /gsd:execute-phase runs.
|
These settings apply to future /gsd:plan-phase and /gsd:execute-phase runs.
|
||||||
|
|
||||||
@@ -139,7 +154,7 @@ Quick commands:
|
|||||||
|
|
||||||
<success_criteria>
|
<success_criteria>
|
||||||
- [ ] Current config read
|
- [ ] Current config read
|
||||||
- [ ] User presented with 5 settings (profile + 3 workflow toggles + git branching)
|
- [ ] User presented with 6 settings (profile + 3 workflow toggles + git branching + git tagging)
|
||||||
- [ ] Config updated with model_profile, workflow, and git sections
|
- [ ] Config updated with model_profile, workflow, and git sections
|
||||||
- [ ] Changes confirmed to user
|
- [ ] Changes confirmed to user
|
||||||
</success_criteria>
|
</success_criteria>
|
||||||
|
|||||||
Reference in New Issue
Block a user