Managing Versions¶

R2X Core provides flexible version management through VersionStrategy implementations. Choose a strategy based on your versioning scheme and how you track changes to data files and system models.

Create a Semantic Versioning Strategy¶

Use semantic versioning (MAJOR.MINOR.PATCH) to manage versions based on the nature of changes:

>>> from r2x_core import SemanticVersioningStrategy
>>> strategy = SemanticVersioningStrategy()
>>> type(strategy).__name__
'SemanticVersioningStrategy'

Create a Git-Based Versioning Strategy¶

Track versions using Git tags and commit hashes:

>>> from r2x_core import GitVersioningStrategy
>>> commits = ["abc123", "def456", "ghi789"]
>>> strategy = GitVersioningStrategy(commits)
>>> type(strategy).__name__
'GitVersioningStrategy'

Work with Version Strategies¶

Both strategies implement the VersionStrategy interface for consistent version management across your project:

>>> from r2x_core import SemanticVersioningStrategy, GitVersioningStrategy, VersionStrategy
>>> semantic = SemanticVersioningStrategy()
>>> commits = ["abc123", "def456", "ghi789"]
>>> git = GitVersioningStrategy(commits)
>>>
>>> # Both implement the same interface
>>> isinstance(semantic, VersionStrategy)
True
>>> isinstance(git, VersionStrategy)
True

See Also¶