{"id":15356830,"url":"https://github.com/linyows/git-semv","last_synced_at":"2025-09-01T06:33:13.073Z","repository":{"id":49438824,"uuid":"158497676","full_name":"linyows/git-semv","owner":"linyows","description":"🔖 Git plugin for Semantic Versioning","archived":false,"fork":false,"pushed_at":"2024-09-04T13:40:40.000Z","size":66,"stargazers_count":23,"open_issues_count":1,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-08-30T00:53:31.373Z","etag":null,"topics":["git","git-plugin","release","semantic-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/linyows.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":"2018-11-21T05:52:00.000Z","updated_at":"2024-09-04T13:40:44.000Z","dependencies_parsed_at":"2025-01-03T14:44:06.483Z","dependency_job_id":"2f03860a-8030-4e2b-bde5-709187620c34","html_url":"https://github.com/linyows/git-semv","commit_stats":{"total_commits":110,"total_committers":1,"mean_commits":110.0,"dds":0.0,"last_synced_commit":"0273840d5072e437f70c5c9ec6cc5d376716b7f4"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/linyows/git-semv","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linyows%2Fgit-semv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linyows%2Fgit-semv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linyows%2Fgit-semv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linyows%2Fgit-semv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linyows","download_url":"https://codeload.github.com/linyows/git-semv/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linyows%2Fgit-semv/sbom","scorecard":{"id":591676,"data":{"date":"2025-08-11","repo":{"name":"github.com/linyows/git-semv","commit":"0273840d5072e437f70c5c9ec6cc5d376716b7f4"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.1,"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/23 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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Warn: no topLevel permission defined: .github/workflows/lint.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Warn: no topLevel permission defined: .github/workflows/test.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/build.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/linyows/git-semv/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/linyows/git-semv/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/linyows/git-semv/lint.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/linyows/git-semv/lint.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/lint.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/linyows/git-semv/lint.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/linyows/git-semv/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/linyows/git-semv/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/linyows/git-semv/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/linyows/git-semv/test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/linyows/git-semv/test.yml/main?enable=pin","Info:   0 out of   8 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 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":"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":"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 v1.2.0 not signed: https://api.github.com/repos/linyows/git-semv/releases/44799644","Warn: release artifact v1.1.0 not signed: https://api.github.com/repos/linyows/git-semv/releases/16194654","Warn: release artifact v1.0.3 not signed: https://api.github.com/repos/linyows/git-semv/releases/14338243","Warn: release artifact v1.0.2 not signed: https://api.github.com/repos/linyows/git-semv/releases/14307378","Warn: release artifact v1.0.1 not signed: https://api.github.com/repos/linyows/git-semv/releases/14234432","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/linyows/git-semv/releases/44799644","Warn: release artifact v1.1.0 does not have provenance: https://api.github.com/repos/linyows/git-semv/releases/16194654","Warn: release artifact v1.0.3 does not have provenance: https://api.github.com/repos/linyows/git-semv/releases/14338243","Warn: release artifact v1.0.2 does not have provenance: https://api.github.com/repos/linyows/git-semv/releases/14307378","Warn: release artifact v1.0.1 does not have provenance: https://api.github.com/repos/linyows/git-semv/releases/14234432"],"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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"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 8 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-20T22:06:27.793Z","repository_id":49438824,"created_at":"2025-08-20T22:06:27.793Z","updated_at":"2025-08-20T22:06:27.793Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273082408,"owners_count":25042282,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-01T02:00:09.058Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["git","git-plugin","release","semantic-versioning"],"created_at":"2024-10-01T12:30:09.411Z","updated_at":"2025-09-01T06:33:12.990Z","avatar_url":"https://github.com/linyows.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\n:bookmark:\u003cbr\u003e\n\u003cb\u003eGit Semantic Versioning\u003c/b\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003egit-semv\u003c/strong\u003e: This is a \u003ca href=\"https://git-scm.com/\"\u003eGit\u003c/a\u003e plugin for \u003ca href=\"https://semver.org/\"\u003eSemantic Versioning\u003c/a\u003e.\n\u003c/p\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/linyows/git-semv/actions/workflows/test.yml\"\u003e\u003cimg alt=\"GitHub Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/linyows/git-semv/test.yml?branch=main\u0026label=Test\u0026style=for-the-badge\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/linyows/git-semv/actions/workflows/build.yml\"\u003e\u003cimg alt=\"GitHub Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/linyows/git-semv/build.yml?branch=main\u0026style=for-the-badge\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/linyows/git-semv/releases\"\u003e\u003cimg src=\"http://img.shields.io/github/release/linyows/git-semv.svg?style=for-the-badge\" alt=\"GitHub Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/linyows/git-semv/blob/main/LICENSE\"\u003e\u003cimg src=\"http://img.shields.io/badge/license-MIT-blue.svg?style=for-the-badge\" alt=\"MIT License\"\u003e\u003c/a\u003e\n  \u003ca href=\"http://godoc.org/github.com/linyows/git-semv\"\u003e\u003cimg src=\"http://img.shields.io/badge/go-documentation-blue.svg?style=for-the-badge\" alt=\"Go Documentation\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/linyows/git-semv\"\u003e \u003cimg src=\"https://img.shields.io/codecov/c/github/linyows/git-semv.svg?style=for-the-badge\" alt=\"codecov\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nThe usefulness of Semantic Versioning has been accepted by OSS in advance.\nAnd, with the appearance of Go modules, Semantic Versioning became indispensable for the development of the Go library.\nHowever, `git tag` used for versioning can not support pre-releases and sorts including build information for managing Semantic Versioning.\nAlso, it is not easy to increment the version.\nThis `git-semv` is a CLI tool for solving these problems and functions as git subcommand.\n\nJapanese: https://tomohisaoda.com/posts/2018/do-semantic-versioning-for-app.html\n\nInstallation\n--\n\nDownload the binary in [Github Releases][release] and place it in the directory where `$PATH` passed.\nOr, you can download using `go get` depending on the version of Go1.11 or higher.\n\n```sh\n$ go get -u github.com/linyows/git-semv/cmd/git-semv\n```\n\n### Homebrew\n\n```sh\n$ brew tap linyows/git-semv\n$ brew install git-semv\n```\n\nUsage\n--\n\nShow list:\n\n```sh\n# Only release versions\n$ git semv\nv0.0.1\nv0.0.2\nv1.0.0\nv1.1.0\nv1.1.1\n\n# All versions including pre-release\n$ git semv -a\nv0.0.1\nv0.0.2\nv1.0.0-alpha.0+a2a784b.linyows\nv1.0.0-beta.0+ba8a247.foobar\nv1.0.0-rc.0\nv1.0.0-rc.1\nv1.0.0\nv1.1.0\nv1.1.1\nv2.0.0-alpha.0\n```\n\nShow latest version:\n\n```sh\n$ git semv now\nv1.1.1\n```\n\nShow next version(major|minor|patch):\n\n```sh\n# Next patch version\n$ git semv patch\nv1.1.2\n\n# Next minor version\n$ git semv minor\nv1.2.0\n\n# Next major version\n$ git semv major\nv2.0.0\n```\n\nUse options(pre|pre-name|build|build-name|bump):\n\n```sh\n# Next pre-release as major\n$ git semv major --pre\nv2.0.0-alpha.1\n\n# Specify pre-release name as major\n$ git semv major --pre-name beta\nv2.0.0-beta.0\n\n# Next minor version with build info\n$ git semv minor --build\nv1.2.0+9125b23.linyows\n\n# Specify build name\n$ git semv minor --build-name superproject\nv1.2.0+superproject\n\n# Create tag and Push origin\n$ git semv patch --bump\nBumped version to v1.1.2\n#==\u003e git tag v1.1.2 \u0026\u0026 git push origin v1.1.2\n```\n\n[release]: https://github.com/linyows/git-semv/releases\n\nVS.\n--\n\n### motemen/gobump\n\n[gobump][gobump] will increment the version according to semver in version in the source code.\nOn the other hand, `git-semv` does not do anything to the source code.\nEven if you do, you just create a tag and push it remotely.\nWhen focusing on `Go`, `Go` can add version and other information to the build, so there is no need to manage version in code.\nAlso, in other languages, you can easily replace them in code by combining with commands such as `sed`.\n\nand `git-semv` supports versioning of pre-release and build information.\n\n[gobump]: https://github.com/motemen/gobump\n\nDevelopment flow\n--\n\nThe assumed development flow is...\n\n1. Development\n1. Remote push\n1. Pull-request create\n1. Continuous Integration\n1. Master branch merge\n1. Tag create and push(git-semv)\n1. Continuous Integration\n1. Release create([goreleaser][goreleaser])\n\nGenerally, development in Go will upload the product binary to github releases and release the product.\nThere is a great tool called [goreleaser][goreleaser] which makes that work easier.\nBy running this tool on the CI, we will automatically release the binary after pushing the created tag.\nAnd `git-semv` solves troublesome versioning and tag creation problem which is the next bottleneck.\n\n[goreleaser]: https://github.com/goreleaser/goreleaser\n\nContribution\n------------\n\n1. Fork ([https://github.com/linyows/git-semv/fork](https://github.com/linyows/git-semv/fork))\n1. Create a feature branch\n1. Commit your changes\n1. Rebase your local changes against the master branch\n1. Run test suite with the `go test ./...` command and confirm that it passes\n1. Run `gofmt -s`\n1. Create a new Pull Request\n\nAuthor\n--\n\n[linyows](https://github.com/linyows)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinyows%2Fgit-semv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinyows%2Fgit-semv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinyows%2Fgit-semv/lists"}