Semantic versioning tool for git based on conventional commits.
:
.gitsv/config.yaml or .gitsv/config.yml in repository root (first found)To check the default configuration, run:
Shellgit sv cfg default
Yamlversioning: update-major: [] # Commit types used to bump major. update-minor: [feat] # Commit types used to bump minor. update-patch: [build, ci, chore, fix, perf, refactor, test] # Commit types used to bump patch. # When type is not present on update rules and is unknown (not mapped on commit message types); # if ignore-unknown=false bump patch, if ignore-unknown=true do not bump version. ignore-unknown: false tag: pattern: "%d.%d.%d" # Pattern used to create git tag. filter: "" # Enables you to filter for considerable tags using git pattern syntax. release-notes: sections: # Array with each section of release note. Check template section for more information. - name: Features # Name used on section. section-type: commits # Type of the section, supported types: commits, breaking-changes. commit-types: [feat] # Commit types for commit section-type, one commit type cannot be in more than one section. - name: Bug Fixes section-type: commits commit-types: [fix] - name: Breaking Changes section-type: breaking-changes branches: # Git branches config. prefix: ([a-z]+\/)? # Prefix used on branch name, it should be a regex group. suffix: (-.*)? # Suffix used on branch name, it should be a regex group. disable-issue: false # Set true if there is no need to recover issue id from branch name. skip: [master, main, developer] # List of branch names ignored on commit message validation. skip-detached: false # Set true if a detached branch should be ignored on commit message validation. commit-message: # Supported commit types. types: [ build, ci, chore, docs, feat, fix, perf, refactor, revert, style, test, ] header-selector: "" # You can put in a regex here to select only a certain part of the commit message. Please define a regex group 'header'. scope: # Define supported scopes, if blank, scope will not be validated, if not, only scope listed will be valid. # Don't forget to add "" on your list if you need to define scopes and keep it optional. values: [] footer: issue: # Use "issue: {}" if you wish to disable issue footer. key: jira # Name used to define an issue on footer metadata. key-synonyms: [Jira, JIRA] # Supported variations for footer metadata. use-hash: false # If false, use :<space> separator. If true, use <space># separator. add-value-prefix: "" # Add a prefix to issue value. issue: regex: "[A-Z]+-[0-9]+" # Regex for issue id.
git-sv uses go templates to format the output for release-notes and changelog, to see how the default template is configured check template directory. It's possible to overwrite the default configuration by adding .gitsv/templates on your repository.
Shell.gitsv └── templates ├── changelog-md.tpl └── releasenotes-md.tpl
Everything inside .gitsv/templates will be loaded, so it's possible to add more files to be used as needed.
To execute the template the releasenotes-md.tpl will receive a single ReleaseNote and changelog-md.tpl will receive a list of ReleaseNote as variables.
Each ReleaseNoteSection will be configured according with release-notes.section from configuration file. The order for each section will be maintained and the SectionType is defined according with section-type attribute as described on the table below.
| section-type | ReleaseNoteSection |
|---|---|
| commits | ReleaseNoteCommitsSection |
| breaking-changes | ReleaseNoteBreakingChangeSection |
:warning: currently only
commitsandbreaking-changesare supported assection-types, using a different value for this field will make the section to be removed from the template variables.
Use --help or -h to get usage information, don't forget that some commands have unique options too:
Shell$ git-sv --help NAME: git-sv - Semantic version for git. USAGE: git-sv [global options] command [command options] [arguments...] VERSION: 20e64f8 COMMANDS: config, cfg cli configuration current-version, cv get last released version from git next-version, nv generate the next version based on git commit messages commit-log, cl list all commit logs according to range as json commit-notes, cn generate a commit notes according to range release-notes, rn generate release notes changelog, cgl generate changelog tag, tg generate tag with version based on git commit messages commit, cmt execute git commit with conventional commit message helper validate-commit-message, vcm use as prepare-commit-message hook to validate and enhance commit message help, h Shows a list of commands or help for one command GLOBAL OPTIONS: --help, -h show help --version, -v print the version
If git-sv is configured on your path, you can also use it like a git command.
Shellgit sv git sv current-version git sv next-version
Commands like commit-log and commit-notes has a range option. Supported range types are: tag, date and hash.
By default, it's used --date=short at git log, all dates returned from it will be in YYYY-MM-DD format.
Range tag will use git for-each-ref refs/tags to get the last tag available if start is empty, the others types won't use the existing tags. It's recommended to always use a start limit in an old repository with a lot of commits.
Range date use git log --since and --until. It's possible to use all supported formats from git log. If end is in YYYY-MM-DD format, sv will add a day on git log command to make the end date inclusive.
Range tag and hash are used on git log revision range. If end is empty, HEAD will be used instead.
Shell# get commit log as json using a inclusive range git-sv commit-log --range hash --start 7ea9306~1 --end c444318 # return all commits after last tag git-sv commit-log --range tag
For git-sv to work, the git tag information must be present. Some CI systems omit the tags by default during the clone and it might be necessary to fetch tags manually.
The default clone plugin skips tags. This behavior can be changed by one of the following methods:
tags: true when using `plugins/git-cloneSpecial thanks to all contributors. If you would like to contribute, please see the instructions.
This project is a fork of sv4git from Beatriz Vieira. Thanks for your work.
This project is licensed under the MIT License - see the LICENSE file for details.
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429