mirror of
https://github.com/github/spec-kit.git
synced 2026-07-07 14:39:00 +08:00
* test: cover namespaced git branch templates
Assisted-by: Codex (model: GPT-5, autonomous)
* feat: support namespaced git branch templates
Assisted-by: Codex (model: GPT-5, autonomous)
* test: cover git branch template edge cases
Assisted-by: Codex (model: GPT-5, autonomous)
* fix: harden git branch template parsing
Assisted-by: Codex (model: GPT-5, autonomous)
* fix: address git branch template review feedback
Address Copilot review feedback for branch_prefix help text, namespaced GIT_BRANCH_NAME fallback behavior, final-segment validation docs, and Bash UTF-8 byte reporting.
Assisted-by: Codex (model: GPT-5, autonomous)
* fix: reject slug-scoped branch templates
Reject branch templates that place {slug} before {number}, because that makes namespace scanning depend on the generated feature slug and can reset numbering per feature name.
Assisted-by: Codex (model: GPT-5, autonomous)
* fix: ignore malformed timestamp refs when numbering
Align branch-number scanning with feature-branch validation so malformed timestamp-looking refs do not inflate sequential numbering. Also updates the stale git-common comment called out in review.
Assisted-by: Codex (model: GPT-5, autonomous)
50 lines
1.9 KiB
Markdown
50 lines
1.9 KiB
Markdown
---
|
|
description: "Validate current branch follows feature branch naming conventions"
|
|
---
|
|
|
|
# Validate Feature Branch
|
|
|
|
Validate that the current Git branch follows the expected feature branch naming conventions.
|
|
|
|
## Prerequisites
|
|
|
|
- Check if Git is available by running `git rev-parse --is-inside-work-tree 2>/dev/null`
|
|
- If Git is not available, output a warning and skip validation:
|
|
```
|
|
[specify] Warning: Git repository not detected; skipped branch validation
|
|
```
|
|
|
|
## Validation Rules
|
|
|
|
Get the current branch name:
|
|
|
|
```bash
|
|
git rev-parse --abbrev-ref HEAD
|
|
```
|
|
|
|
The branch name's final path segment must start with one of these feature markers:
|
|
|
|
1. **Sequential**: `[0-9]{3,}-` (e.g., `001-feature-name`, `042-fix-bug`, `1000-big-feature`, `jdoe/web/008-guided-tour`)
|
|
2. **Timestamp**: `[0-9]{8}-[0-9]{6}-` (e.g., `20260319-143022-feature-name`, `jdoe/web/20260319-143022-feature-name`)
|
|
|
|
## Execution
|
|
|
|
If on a feature branch (matches either pattern):
|
|
- Output: `✓ On feature branch: <branch-name>`
|
|
- Check if the corresponding spec directory exists under `specs/`:
|
|
- For sequential branches, look for `specs/<prefix>-*` where prefix matches the numeric portion, regardless of branch namespace prefixes
|
|
- For timestamp branches, look for `specs/<prefix>-*` where prefix matches the `YYYYMMDD-HHMMSS` portion, regardless of branch namespace prefixes
|
|
- If spec directory exists: `✓ Spec directory found: <path>`
|
|
- If spec directory missing: `⚠ No spec directory found for prefix <prefix>`
|
|
|
|
If NOT on a feature branch:
|
|
- Output: `✗ Not on a feature branch. Current branch: <branch-name>`
|
|
- Output: `Feature branches should be named like: 001-feature-name, 20260319-143022-feature-name, or <namespace>/001-feature-name`
|
|
|
|
## Graceful Degradation
|
|
|
|
If Git is not installed or the directory is not a Git repository:
|
|
- Check the `SPECIFY_FEATURE` environment variable as a fallback
|
|
- If set, validate that value against the naming patterns
|
|
- If not set, skip validation with a warning
|