Documentation
¶
Overview ¶
Package strategy implements the 6 version strategies that discover candidate base versions from git history and configuration.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BaseVersion ¶
type BaseVersion struct {
// Source is a human-readable description of where this version came from.
Source string
// ShouldIncrement indicates whether this version should be bumped before
// comparison with other candidates.
ShouldIncrement bool
// SemanticVersion is the version found by the strategy.
SemanticVersion semver.SemanticVersion
// BaseVersionSource is the git commit this version originated from.
// Nil for external sources (e.g., config next-version).
BaseVersionSource *git.Commit
// BranchNameOverride overrides the branch name used for pre-release
// tag generation. Used by VersionInBranchName strategy.
BranchNameOverride string
// Explanation records the reasoning chain for how this version was derived.
// Nil when explain mode is disabled.
Explanation *Explanation
}
BaseVersion represents a candidate version found by a strategy.
func (BaseVersion) String ¶
func (bv BaseVersion) String() string
String returns a human-readable representation of the base version.
type ConfigNextVersionStrategy ¶
type ConfigNextVersionStrategy struct{}
ConfigNextVersionStrategy returns a version from the next-version config field.
func NewConfigNextVersionStrategy ¶
func NewConfigNextVersionStrategy() *ConfigNextVersionStrategy
NewConfigNextVersionStrategy creates a new ConfigNextVersionStrategy.
func (*ConfigNextVersionStrategy) GetBaseVersions ¶
func (s *ConfigNextVersionStrategy) GetBaseVersions( ctx *context.GitVersionContext, ec config.EffectiveConfiguration, explain bool, ) ([]BaseVersion, error)
func (*ConfigNextVersionStrategy) Name ¶
func (s *ConfigNextVersionStrategy) Name() string
type Explanation ¶
type Explanation struct {
// Strategy is the name of the strategy that produced this version.
Strategy string
// Steps records the reasoning chain in order.
Steps []string
}
Explanation records how a strategy derived a BaseVersion.
func NewExplanation ¶
func NewExplanation(strategy string) *Explanation
NewExplanation creates a new Explanation for the given strategy name.
func (*Explanation) Add ¶
func (e *Explanation) Add(step string)
Add appends a reasoning step. Nil-safe.
func (*Explanation) Addf ¶
func (e *Explanation) Addf(format string, args ...any)
Addf appends a formatted reasoning step. Nil-safe.
type FallbackStrategy ¶
type FallbackStrategy struct {
// contains filtered or unexported fields
}
FallbackStrategy returns the base version (default 1.0.0) from the root commit.
func NewFallbackStrategy ¶
func NewFallbackStrategy(store *git.RepositoryStore) *FallbackStrategy
NewFallbackStrategy creates a new FallbackStrategy.
func (*FallbackStrategy) GetBaseVersions ¶
func (s *FallbackStrategy) GetBaseVersions( ctx *context.GitVersionContext, ec config.EffectiveConfiguration, explain bool, ) ([]BaseVersion, error)
func (*FallbackStrategy) Name ¶
func (s *FallbackStrategy) Name() string
type MergeMessageStrategy ¶
type MergeMessageStrategy struct {
// contains filtered or unexported fields
}
MergeMessageStrategy returns versions from merge commit messages.
func NewMergeMessageStrategy ¶
func NewMergeMessageStrategy(store *git.RepositoryStore) *MergeMessageStrategy
NewMergeMessageStrategy creates a new MergeMessageStrategy.
func (*MergeMessageStrategy) GetBaseVersions ¶
func (s *MergeMessageStrategy) GetBaseVersions( ctx *context.GitVersionContext, ec config.EffectiveConfiguration, explain bool, ) ([]BaseVersion, error)
func (*MergeMessageStrategy) Name ¶
func (s *MergeMessageStrategy) Name() string
type TaggedCommitStrategy ¶
type TaggedCommitStrategy struct {
// contains filtered or unexported fields
}
TaggedCommitStrategy returns versions from git tags on the current branch.
func NewTaggedCommitStrategy ¶
func NewTaggedCommitStrategy(store *git.RepositoryStore) *TaggedCommitStrategy
NewTaggedCommitStrategy creates a new TaggedCommitStrategy.
func (*TaggedCommitStrategy) GetBaseVersions ¶
func (s *TaggedCommitStrategy) GetBaseVersions( ctx *context.GitVersionContext, ec config.EffectiveConfiguration, explain bool, ) ([]BaseVersion, error)
func (*TaggedCommitStrategy) Name ¶
func (s *TaggedCommitStrategy) Name() string
type TrackReleaseBranchesStrategy ¶
type TrackReleaseBranchesStrategy struct {
// contains filtered or unexported fields
}
TrackReleaseBranchesStrategy combines release branch versions and main branch tags for branches that track release branches (e.g., develop).
func NewTrackReleaseBranchesStrategy ¶
func NewTrackReleaseBranchesStrategy(store *git.RepositoryStore) *TrackReleaseBranchesStrategy
NewTrackReleaseBranchesStrategy creates a new TrackReleaseBranchesStrategy.
func (*TrackReleaseBranchesStrategy) GetBaseVersions ¶
func (s *TrackReleaseBranchesStrategy) GetBaseVersions( ctx *context.GitVersionContext, ec config.EffectiveConfiguration, explain bool, ) ([]BaseVersion, error)
func (*TrackReleaseBranchesStrategy) Name ¶
func (s *TrackReleaseBranchesStrategy) Name() string
type VersionInBranchNameStrategy ¶
type VersionInBranchNameStrategy struct {
// contains filtered or unexported fields
}
VersionInBranchNameStrategy returns a version from the branch name for release branches.
func NewVersionInBranchNameStrategy ¶
func NewVersionInBranchNameStrategy(store *git.RepositoryStore) *VersionInBranchNameStrategy
NewVersionInBranchNameStrategy creates a new VersionInBranchNameStrategy.
func (*VersionInBranchNameStrategy) GetBaseVersions ¶
func (s *VersionInBranchNameStrategy) GetBaseVersions( ctx *context.GitVersionContext, ec config.EffectiveConfiguration, explain bool, ) ([]BaseVersion, error)
func (*VersionInBranchNameStrategy) Name ¶
func (s *VersionInBranchNameStrategy) Name() string
type VersionStrategy ¶
type VersionStrategy interface {
// Name returns the human-readable name of this strategy.
Name() string
// GetBaseVersions computes zero or more candidate base versions.
// When explain is true, strategies populate Explanation on each
// returned BaseVersion.
GetBaseVersions(
ctx *context.GitVersionContext,
ec config.EffectiveConfiguration,
explain bool,
) ([]BaseVersion, error)
}
VersionStrategy is the interface implemented by all version discovery strategies.
func AllStrategies ¶
func AllStrategies(store *git.RepositoryStore) []VersionStrategy
AllStrategies returns all version strategies in priority order. Strategies are evaluated in this order during base version selection:
- ConfigNextVersion — explicit next-version override
- TaggedCommit — version tags on branch history
- MergeMessage — versions from merge/squash commit messages
- VersionInBranchName — version extracted from release branch names
- TrackReleaseBranches — release branch + main tag tracking (for develop)
- Fallback — default base version when no other strategy matches