🕶️

Semantic Versioning に従って git の tag を作成し、 push してくれるツール gittag を作った

2022/08/17に公開

バージョンの管理が面倒な理由

  • github などの remote の最新バージョンが何なのか毎回調べるのが大変
    • git ls-remote --tags で remote の最新のタグを確認出来るが、 Semantic Versioning でソートして最新のバージョンを探すのが大変
  • ローカルで作成して、 push するときに計2回バージョンタグを間違えないように入力しないといけない

gittag

  • Go で簡単なツールを作って解決してみた

https://github.com/kazz187/gittag

gittag は何をやってくれるか

  • git ls-remote --tags でタグ一覧を取得
  • Semantic Versioning に適合するタグをソートして最新のタグを検索
  • 次のバージョンをユーザーに提案し、選択してもらう
  • ユーザーが選んだバージョンでタグを作成し、リモートに push する

gittag は簡単に使える

  • go install github.com/kazz187/gittag@latest
  • 実行したいレポジトリで gittag と打つだけ
  • 他にも便利なオプションがあるので詳しくは README を参照してみてほしい

今回使って便利だったパッケージを簡単に紹介

  • github.com/Masterminds/semver/v3
    • Semantic Versioning ライブラリ
  • github.com/go-git/go-git/v5
    • Go 上で git を操作できるライブラリ (ファイルもメモリも)
  • github.com/rivo/tview
    • Interactive な Terminal UI ライブラリ
  • gopkg.in/alecthomas/kingpin.v2
    • cli 作成ライブラリ

Next action

  • Windows のディレクトリサポート (c:\ とか)
  • ssh key ではなく github token を使った git 操作
  • 作成した tag で Github Deployment を作成してくれるオプションの追加
  • PR 歓迎

Discussion