Smart Git tag version management tool built with Golang.
🏷️ Smart Tag Management: Auto create and bump semantic version tags for Git repositories
⚡ Version Base System: Configurable version carry-over rules (1/10/100)
🎯 Interactive Confirmation: User confirmation for low version base, auto mode for higher bases
🌍 Submodule Support: Independent tag management for main project and submodules
📋 Semantic Versioning: Follows v{major}.{minor}.{patch} format standards
go install github.com/go-mate/tago/cmd/tago@latesttagooutput:
refs/tags/v0.0.0 Wed Feb 12 16:18:18 2025 +0700
refs/tags/v0.0.1 Thu Feb 13 16:43:08 2025 +0700
refs/tags/v0.0.2 Thu Feb 13 18:43:40 2025 +0700
refs/tags/v0.0.3 Wed Apr 30 15:18:56 2025 +0700
refs/tags/v0.0.4 Wed May 7 18:38:38 2025 +0700
Bump from va.b.c to va.b.c+1 and push new tag with user confirmation:
tago bumpOutput:
cd xxx && git push origin v0.0.5
Bump from va.b.c to va.b.c+1 and push new tag without user confirmation:
tago bump -b=100Output:
cd xxx && git push origin v0.0.5
For main project root DIR tag operations:
tago bump main
tago bump main -b=10For submodule DIR tag operations (with path prefix):
cd submodule-dir
tago bump sub-module
tago bump sub-module -b=100The version base (-b parameter) controls version carry-over rules:
- 0 or 1: Interactive mode, requires user confirmation for each operation
- ≥ 2: Auto mode, supports automatic version carry-over
With version base 10:
v1.2.9→v1.3.0(patch reaches base, carries to minor)v1.9.8→v1.9.9(normal increment)v1.9.9→v2.0.0(minor reaches base, carries to major)
# Show all current tags
tago
# Bump tag (with confirmation)
tago bump
# Quick bump without confirmation
tago bump -b=100
# Main project tag bump
tago bump main -b=10
# Submodule tag bump (run from submodule DIR)
cd my-submodule
tago bump sub-module -b=10- After development: Run
tagoto view current tags - Create new version: Run
tago bumpto upgrade version - Automation scenarios: Use
tago bump -b=100to skip confirmation - Multi-module projects: Use corresponding subcommands in different directories
- Auto parse existing tag formats
- Support semantic versioning standards
- Handle version number carry-over logic
- Validate Git repository status
- Low version base: Interactive confirmation for each operation
- High version base: Auto execution, suitable for scripting
- User-friendly prompt messages
- Operation cancellation support
- Main project tags:
v{major}.{minor}.{patch} - Submodule tags:
{path}/v{major}.{minor}.{patch} - Path-aware tag management
- Git submodule compatibility
MIT License. See LICENSE.
Welcome contributions! Report bugs, suggest features, contribute code:
- 🐛 Found a bug? Submit an issue on GitHub with reproduction steps
- 💡 Feature idea? Create an issue to discuss your thoughts
- 📖 Documentation unclear? Report issues to help us improve docs
- 🚀 Need a feature? Share your use case to help us understand the need
- ⚡ Performance issue? Report slow operations to help us optimize
- 🔧 Configuration trouble? Ask questions about complex setups
- 📢 Stay updated? Watch the repository for new releases and features
- 🌟 Success story? Share how this package improved your workflow
- 💬 General feedback? All suggestions and feedback are welcome
For new code contributions, please follow this process:
- Fork: Fork the repository on GitHub (use the web interface)
- Clone: Clone your fork (
git clone https://github.com/yourname/repo-name.git) - Navigate: Enter the cloned directory (
cd repo-name) - Branch: Create a feature branch (
git checkout -b feature/xxx) - Code: Implement your changes and write comprehensive tests
- Test: (Golang projects) Ensure tests pass (
go test ./...) and follow Go style conventions - Document: Update documentation for user-facing changes and use meaningful commit messages
- Stage: Stage your changes (
git add .) - Commit: Commit your changes (
git commit -m "Add feature xxx") with backward-compatible code - Push: Push to your branch (
git push origin feature/xxx) - PR: Open a Pull Request on GitHub (on GitHub web interface) with detailed description
Please ensure tests pass and include relevant documentation updates.
Welcome to contribute to this project by submitting pull requests and reporting issues.
Project Support:
- ⭐ Give a star if this project helps you
- 🤝 Share the project with team members and (golang) programming friends
- 📝 Write blogs about development tools and workflows - we provide writing support
- 🌟 Join the ecosystem - committed to supporting open source and (golang) development scenarios
Happy coding with this package! 🎉