{"id":42863201,"url":"https://github.com/bvieira/sv4git","last_synced_at":"2026-01-30T12:40:56.687Z","repository":{"id":36975893,"uuid":"222271236","full_name":"bvieira/sv4git","owner":"bvieira","description":"Semantic version and conventional commits for git","archived":false,"fork":false,"pushed_at":"2023-06-07T15:01:48.000Z","size":237,"stargazers_count":66,"open_issues_count":7,"forks_count":9,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-06-20T10:21:41.023Z","etag":null,"topics":["changelog","cli","conventional-commits","git","go","semantic-release","semantic-versioning","versioning"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bvieira.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-11-17T15:42:29.000Z","updated_at":"2024-05-30T06:42:06.000Z","dependencies_parsed_at":"2024-06-19T00:13:37.453Z","dependency_job_id":"9b756f06-0af7-4d80-92e7-ba4279152111","html_url":"https://github.com/bvieira/sv4git","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/bvieira/sv4git","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bvieira%2Fsv4git","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bvieira%2Fsv4git/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bvieira%2Fsv4git/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bvieira%2Fsv4git/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bvieira","download_url":"https://codeload.github.com/bvieira/sv4git/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bvieira%2Fsv4git/sbom","scorecard":{"id":259548,"data":{"date":"2025-08-11","repo":{"name":"github.com/bvieira/sv4git","commit":"20e64f8fcf75fb706df83aa9125018b85b98f630"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":0,"reason":"Found 0/9 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/pull-request.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:73: update your workflow using https://app.stepsecurity.io/secureworkflow/bvieira/sv4git/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:84: update your workflow using https://app.stepsecurity.io/secureworkflow/bvieira/sv4git/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:96: update your workflow using https://app.stepsecurity.io/secureworkflow/bvieira/sv4git/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/bvieira/sv4git/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/bvieira/sv4git/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/bvieira/sv4git/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/bvieira/sv4git/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/bvieira/sv4git/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/bvieira/sv4git/pull-request.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pull-request.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/bvieira/sv4git/pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/bvieira/sv4git/pull-request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull-request.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/bvieira/sv4git/pull-request.yml/master?enable=pin","Info:   0 out of   9 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v2.9.0 not signed: https://api.github.com/repos/bvieira/sv4git/releases/89857698","Warn: release artifact v2.8.1 not signed: https://api.github.com/repos/bvieira/sv4git/releases/72644388","Warn: release artifact v2.8.0 not signed: https://api.github.com/repos/bvieira/sv4git/releases/63931329","Warn: release artifact v2.7.0 not signed: https://api.github.com/repos/bvieira/sv4git/releases/60671566","Warn: release artifact v2.6.0 not signed: https://api.github.com/repos/bvieira/sv4git/releases/58266498","Warn: release artifact v2.9.0 does not have provenance: https://api.github.com/repos/bvieira/sv4git/releases/89857698","Warn: release artifact v2.8.1 does not have provenance: https://api.github.com/repos/bvieira/sv4git/releases/72644388","Warn: release artifact v2.8.0 does not have provenance: https://api.github.com/repos/bvieira/sv4git/releases/63931329","Warn: release artifact v2.7.0 does not have provenance: https://api.github.com/repos/bvieira/sv4git/releases/60671566","Warn: release artifact v2.6.0 does not have provenance: https://api.github.com/repos/bvieira/sv4git/releases/58266498"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 27 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T10:30:45.464Z","repository_id":36975893,"created_at":"2025-08-17T10:30:45.464Z","updated_at":"2025-08-17T10:30:45.464Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28912914,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T12:13:43.263Z","status":"ssl_error","status_checked_at":"2026-01-30T12:13:22.389Z","response_time":66,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["changelog","cli","conventional-commits","git","go","semantic-release","semantic-versioning","versioning"],"created_at":"2026-01-30T12:40:55.986Z","updated_at":"2026-01-30T12:40:56.682Z","avatar_url":"https://github.com/bvieira.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003esv4git\u003c/h1\u003e\n  \u003cp align=\"center\"\u003eA command line tool (CLI) to validate commit messages, bump version, create tags and generate changelogs!\u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/bvieira/sv4git/releases/latest\"\u003e\u003cimg alt=\"Release\" src=\"https://img.shields.io/github/release/bvieira/sv4git.svg?style=for-the-badge\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://pkg.go.dev/github.com/bvieira/sv4git/v2\"\u003e\u003cimg alt=\"Go Reference\" src=\"https://img.shields.io/badge/-Reference-blue?style=for-the-badge\u0026logo=go\u0026labelColor=gray\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/bvieira/sv4git/stargazers\"\u003e\u003cimg alt=\"GitHub stars\" src=\"https://img.shields.io/github/stars/bvieira/sv4git?style=for-the-badge\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/bvieira/sv4git/releases/latest\"\u003e\u003cimg alt=\"GitHub release (latest by date)\" src=\"https://img.shields.io/github/downloads/bvieira/sv4git/latest/total?color=blue\u0026style=for-the-badge\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/bvieira/sv4git/releases/latest\"\u003e\u003cimg alt=\"GitHub all releases\" src=\"https://img.shields.io/github/downloads/bvieira/sv4git/total?color=blue\u0026style=for-the-badge\"\u003e\u003c/a\u003e\n    \u003ca href=\"/LICENSE\"\u003e\u003cimg alt=\"Software License\" src=\"https://img.shields.io/badge/license-MIT-informational.svg?style=for-the-badge\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/bvieira/sv4git/actions?workflow=ci\"\u003e\u003cimg alt=\"GitHub Actions Status\" src=\"https://img.shields.io/github/actions/workflow/status/bvieira/sv4git/ci.yml?style=for-the-badge\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://goreportcard.com/report/github.com/bvieira/sv4git\"\u003e\u003cimg alt=\"Go Report Card\" src=\"https://goreportcard.com/badge/github.com/bvieira/sv4git?style=for-the-badge\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://conventionalcommits.org\"\u003e\u003cimg alt=\"Conventional Commits\" src=\"https://img.shields.io/badge/Conventional%20Commits-1.0.0-informational.svg?style=for-the-badge\"\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\n## Getting Started\n\n### Pre Requirements\n\n- Git 2.17+\n\n### Installing\n\n- Download the latest release and add the binary to your path.\n- Optional: Set `SV4GIT_HOME` to define user configs. Check the [Config](#config) topic for more information.\n\nIf you want to install from source using `go install`, just run:\n\n```bash\n# keep in mind that with this, it will compile from source and won't show the version on cli -h.\ngo install github.com/bvieira/sv4git/v2/cmd/git-sv@latest\n\n# if you want to add the version on the binary, run this command instead.\nSV4GIT_VERSION=$(go list -f '{{ .Version }}' -m github.com/bvieira/sv4git/v2@latest | sed 's/v//') \u0026\u0026 go install --ldflags \"-X main.Version=$SV4GIT_VERSION\" github.com/bvieira/sv4git/v2/cmd/git-sv@v$SV4GIT_VERSION\n```\n\n### Config\n\n#### YAML\n\nThere are 3 config levels when using sv4git: [default](#default), [user](#user), [repository](#repository). All of them are merged considering the follow priority: **repository \u003e user \u003e default**.\n\nTo see the current config, run:\n\n```bash\ngit sv cfg show\n```\n\n##### Configuration Types\n\n###### Default\n\nTo check the default configuration, run:\n\n```bash\ngit sv cfg default\n```\n\n###### User\n\nFor user config, it is necessary to define the `SV4GIT_HOME` environment variable, eg.:\n\n```bash\nSV4GIT_HOME=/home/myuser/.sv4git # myuser is just an example.\n```\n\nAnd create a `config.yml` file inside it, eg.:\n\n```bash\n.sv4git\n└── config.yml\n```\n\n###### Repository\n\nCreate a `.sv4git.yml` file on the root of your repository, eg.: [.sv4git.yml](.sv4git.yml).\n\n##### Configuration format\n\n```yml\nversion: \"1.1\" #config version\n\nversioning: # versioning bump\n    update-major: [] # Commit types used to bump major.\n    update-minor: [feat] # Commit types used to bump minor.\n    update-patch: [build, ci, chore, fix, perf, refactor, test] # Commit types used to bump patch.\n    # When type is not present on update rules and is unknown (not mapped on commit message types);\n    # if ignore-unknown=false bump patch, if ignore-unknown=true do not bump version\n    ignore-unknown: false\n\ntag:\n    pattern: '%d.%d.%d' # Pattern used to create git tag.\n    filter: '' # Enables you to filter for considerable tags using git pattern syntax\n\nrelease-notes:\n    # Deprecated!!! please use 'sections' instead!\n    # Headers names for release notes markdown. To disable a section just remove the header \n    # line. It's possible to add other commit types, the release note will be created \n    # respecting the following order: feat, fix, refactor, perf, test, build, ci, chore, docs, style, breaking-change.\n    headers: \n        breaking-change: Breaking Changes\n        feat: Features\n        fix: Bug Fixes\n    \n    sections: # Array with each section of release note. Check template section for more information.\n        - name: Features # Name used on section.\n          section-type: commits # Type of the section, supported types: commits, breaking-changes.\n          commit-types: [feat] # Commit types for commit section-type, one commit type cannot be in more than one section.\n        - name: Bug Fixes\n          section-type: commits\n          commit-types: [fix]\n        - name: Breaking Changes\n          section-type: breaking-changes\n\nbranches: # Git branches config.\n    prefix: ([a-z]+\\/)? # Prefix used on branch name, it should be a regex group.\n    suffix: (-.*)? # Suffix used on branch name, it should be a regex group.\n    disable-issue: false # Set true if there is no need to recover issue id from branch name.\n    skip: [master, main, developer] # List of branch names ignored on commit message validation.\n    skip-detached: false # Set true if a detached branch should be ignored on commit message validation.\n\ncommit-message:\n    types: [build, ci, chore, docs, feat, fix, perf, refactor, revert, style, test] # Supported commit types.\n    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'.\n    scope:\n        # Define supported scopes, if blank, scope will not be validated, if not, only scope listed will be valid.\n        # Don't forget to add \"\" on your list if you need to define scopes and keep it optional.\n        values: []\n    footer:\n        issue: # Use \"issue: {}\" if you wish to disable issue footer.\n            key: jira # Name used to define an issue on footer metadata.\n            key-synonyms: [Jira, JIRA] # Supported variations for footer metadata.\n            use-hash: false # If false, use :\u003cspace\u003e separator. If true, use \u003cspace\u003e# separator.\n            add-value-prefix: '' # Add a prefix to issue value.\n    issue:\n        regex: '[A-Z]+-[0-9]+' # Regex for issue id.\n```\n\n#### Templates\n\n**sv4git** uses *go templates* to format the output for `release-notes` and `changelog`, to see how the default template is configured check [template directory](cmd/git-sv/resources/templates). On v2.7.0+, its possible to overwrite the default configuration by adding `.sv4git/templates` on your repository. The cli expects that at least 2 files exists on your directory: `changelog-md.tpl` and `releasenotes-md.tpl`.\n\n```bash\n.sv4git\n└── templates\n    ├── changelog-md.tpl\n    └── releasenotes-md.tpl\n```\n\nEverything inside `.sv4git/templates` will be loaded, so it's possible to add more files to be used as needed.\n\n##### Variables\n\nTo execute the template the `releasenotes-md.tpl` will receive a single **ReleaseNote** and `changelog-md.tpl` will receive a list of **ReleaseNote** as variables.\n\nEach **ReleaseNoteSection** will be configured according with `release-notes.section` from config 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.\n\n| section-type | ReleaseNoteSection |\n| -- | -- |\n| commits | ReleaseNoteCommitsSection |\n| breaking-changes | ReleaseNoteBreakingChangeSection |\n\n\u003e :warning: currently only `commits` and `breaking-changes` are supported as `section-types`, using a different value for this field will make the section to be removed from the template variables.\n\nCheck below the variables available:\n\n```go\nReleaseNote\n  Release     string // 'v' followed by version if present, if not tag will be used instead.\n  Tag         string // Current tag, if available.\n  Version     *Version // Version from tag or next version according with semver.\n  Date        time.Time\n  Sections    []ReleaseNoteSection // ReleaseNoteCommitsSection or ReleaseNoteBreakingChangeSection\n  AuthorNames []string // Author names recovered from commit message (user.name from git)\n\nVersion\n  Major      int\n  Minor      int\n  Patch      int\n  Prerelease string\n  Metadata   string\n  Original   string\n\nReleaseNoteCommitsSection // SectionType == commits\n  SectionType      string\n  SectionName      string\n  Types            []string\n  Items            []GitCommitLog\n  HasMultipleTypes bool\n\nReleaseNoteBreakingChangeSection // SectionType == breaking-changes\n  SectionType string\n  SectionName string\n  Messages    []string\n\nGitCommitLog\n  Date       string\n  Timestamp  int\n  AuthorName string\n  Hash       string\n  Message    CommitMessage\n\nCommitMessage\n  Type             string\n  Scope            string\n  Description      string\n  Body             string\n  IsBreakingChange bool\n  Metadata         map[string]string\n```\n\n##### Functions\n\nBeside the [go template functions](https://pkg.go.dev/text/template#hdr-Functions), the folowing functions are availiable to use in the templates. Check [formatter_functions.go](sv/formatter_functions.go) to see the functions implementation.\n\n###### timefmt\n\n**Usage:** timefmt time \"2006-01-02\"\n\nReceive a time.Time and a layout string and returns a textual representation of the time according with the layout provided. Check \u003chttps://pkg.go.dev/time#Time.Format\u003e for more information.\n\n###### getsection\n\n**Usage:** getsection sections \"Features\"\n\nReceive a list of ReleaseNoteSection and a Section name and returns a section with the provided name. If no section is found, it will return `nil`.\n\n### Running\n\nRun `git-sv` to get the list of available parameters:\n\n```bash\ngit-sv\n```\n\n#### Run as git command\n\nIf `git-sv` is configured on your path, you can use it like a git command:\n\n```bash\ngit sv\ngit sv current-version\ngit sv next-version\n```\n\n#### Usage\n\nUse `--help` or `-h` to get usage information, don't forget that some commands have unique options too:\n\n```bash\n# sv help\ngit-sv -h\n\n# sv release-notes command help\ngit-sv rn -h\n```\n\n##### Available commands\n\n| Variable                     | description                                                    | has options or subcommands |\n| ---------------------------- | -------------------------------------------------------------- | :------------------------: |\n| config, cfg                  | Show config information.                                       |     :heavy_check_mark:     |\n| current-version, cv          | Get last released version from git.                            |            :x:             |\n| next-version, nv             | Generate the next version based on git commit messages.        |            :x:             |\n| commit-log, cl               | List all commit logs according to range as jsons.              |     :heavy_check_mark:     |\n| commit-notes, cn             | Generate a commit notes according to range.                    |     :heavy_check_mark:     |\n| release-notes, rn            | Generate release notes.                                        |     :heavy_check_mark:     |\n| changelog, cgl               | Generate changelog.                                            |     :heavy_check_mark:     |\n| tag, tg                      | Generate tag with version based on git commit messages.        |            :x:             |\n| commit, cmt                  | Execute git commit with convetional commit message helper.     |     :heavy_check_mark:     |\n| validate-commit-message, vcm | Use as prepare-commit-message hook to validate commit message. |     :heavy_check_mark:     |\n| help, h                      | Shows a list of commands or help for one command.              |            :x:             |\n\n##### Use range\n\nCommands like `commit-log` and `commit-notes` has a range option. Supported range types are: `tag`, `date` and `hash`.\n\nBy default, it's used [--date=short](https://git-scm.com/docs/git-log#Documentation/git-log.txt---dateltformatgt) at `git log`, all dates returned from it will be in `YYYY-MM-DD` format.\n\nRange `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 a old repository with a lot of commits. This behavior was maintained to not break the retrocompatibility.\n\nRange `date` use git log `--since` and `--until`. It's possible to use all supported formats from [git log](https://git-scm.com/docs/git-log#Documentation/git-log.txt---sinceltdategt). If `end` is in `YYYY-MM-DD` format, `sv` will add a day on git log command to make the end date inclusive.\n\nRange `tag` and `hash` are used on git log [revision range](https://git-scm.com/docs/git-log#Documentation/git-log.txt-ltrevisionrangegt). If `end` is empty, `HEAD` will be used instead.\n\n```bash\n# get commit log as json using a inclusive range\ngit-sv commit-log --range hash --start 7ea9306~1 --end c444318\n\n# return all commits after last tag\ngit-sv commit-log --range tag\n```\n\n##### Use validate-commit-message as prepare-commit-msg hook\n\nConfigure your `.git/hooks/prepare-commit-msg`:\n\n```bash\n#!/bin/sh\n\nCOMMIT_MSG_FILE=$1\nCOMMIT_SOURCE=$2\nSHA1=$3\n\ngit sv vcm --path \"$(pwd)\" --file \"$COMMIT_MSG_FILE\" --source \"$COMMIT_SOURCE\"\n```\n\n**Tip**: you can configure a directory as your global git templates using the command below:\n\n```bash\ngit config --global init.templatedir '\u003cYOUR TEMPLATE DIR\u003e'\n```\n\nCheck [git config docs](https://git-scm.com/docs/git-config#Documentation/git-config.txt-inittemplateDir) for more information!\n\n## Development\n\n### Makefile\n\nRun `make` to get the list of available actions:\n\n```bash\nmake\n```\n\n#### Make configs\n\n| Variable   | description             |\n| ---------- | ----------------------- |\n| BUILDOS    | Build OS.               |\n| BUILDARCH  | Build arch.             |\n| ECHOFLAGS  | Flags used on echo.     |\n| BUILDENVS  | Var envs used on build. |\n| BUILDFLAGS | Flags used on build.    |\n\n| Parameters | description                          |\n| ---------- | ------------------------------------ |\n| args       | Parameters that will be used on run. |\n\n```bash\n#variables\nBUILDOS=\"linux\" BUILDARCH=\"amd64\" make build\n\n#parameters\nmake run args=\"-h\"\n```\n\n### Build\n\n```bash\nmake build\n```\n\nThe binary will be created on `bin/$BUILDOS_$BUILDARCH/git-sv`.\n\n### Tests\n\n```bash\nmake test\n```\n\n### Run\n\n```bash\n#without args\nmake run\n\n#with args\nmake run args=\"-h\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbvieira%2Fsv4git","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbvieira%2Fsv4git","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbvieira%2Fsv4git/lists"}