うぃろぅ.log

140字で綴りきれない日々の徒然備忘録

Gitでインクリメントしたバージョンタグを設定するエイリアス

うぃろぅです。

技術系のエントリー全く書いていないので書き方を忘れています。
今いるプロジェクトはそれなりに炎上中です。まだ寒い日も続くしちょうどいいね。

さて、リハビリがてら最近書いたgitエイリアスを置いておきます。
もっと便利なプラグインはたくさんあると思いますが、プロジェクト規約的に多分NGなので…。

何がしたいの

gitのmasterに設定されている最新のタグをv1.2.3としたとき

  • git tag-new --minor "性能改善"v1.3.0 "性能改善"
  • git tag-new --patch "バグ改修"v1.2.4 "バグ改修

と最新のコミットに設定してpushしたい。
※ メジャーアップデートは当分無理そうなので考慮しない()

git-flowが導入されていないため、エイリアスを書いて対応します。
シェルスクリプトの勉強にもなるし良い機会かなと。

かいたもの

ざっくりとした書き方やお手本は以下の記事を参考にした。

rcmdnk.com

rcmdnk.com

.gitconfigに以下を記載

[alias]
  tag-new = "!f () {\
    if [ \"$#\" != 2 ]; then \
      echo \"usage: git tag-new [--minor/--patch] [COMMENT]\";\
      return 1;\
    fi;\
    if [ \"$1\" != \"--minor\" ] && [ $1 != \"--patch\" ]; then \
      echo \"usage: git tag-new [--minor/--patch] [COMMENT]\";\
      return 1;\
    fi;\
    tag=v$(git tag | sed s/v//g | sort -t . -n -k1,1 -k2,2 -k3,3 | tail -n1);\
    if [ \"$1\" == \"--minor\" ]; then \
      tag_minor=${tag#*.};\
      tag_minor=${tag_minor%.*};\
      ((tag_minor++));\
      tag=${tag%%.*}.${tag_minor}.0;\
    else \
      tag_patch=${tag##*.};\
      ((tag_patch++));\
      tag=${tag%.*}.${tag_patch};\
    fi;\
    comment=\"$2\";\
    echo ${tag} ${comment};\
    tagcheck=$(git tag | grep ${tag});\
    if [ \"$tagcheck\" != \"\" ]; then \
      echo \"tag ${tag} exists\";\
      echo \"Please check tag\";\
      return 1;\
    fi;\
    git tag -a ${tag} -m \"${comment}\";\
    git push origin ${tag};\
  };f"

解説

「もっと簡単にかけるよ」という突っ込みはいつでも募集しています。

引数の数を固定

if [ \"$#\" != 2 ]; then .. fi

引数の数が2以外の時は使い方を表示して終了。

参考にしたサイト

it-ojisan.tokyo

オプション判定

if [ \"$1\" != \"--minor\" ] && [ $1 != \"--patch\" ]; then .. fi

上記同様使い方を表示して終了。

[] && [] って書くのね。

参考にしたサイト

qiita.com

最新のタグ取得

tag=v$(git tag | sed s/v//g | sort -t . -n -k1,1 -k2,2 -k3,3 | tail -n1)

  1. git tagの結果から
  2. vを削除して
  3. .で区切った値でソートして
  4. 最後の値を取得

を1行で行っている。
メソッドチェーンみたいで少し楽しい。

マイナー番号設定

  1. tag_minor=${tag#*.};\v1.を削除して
  2. tag_minor=${tag_minor%.*};\.3を削除
  3. インクリメントして
  4. v1 + . + インクリメント後の数値 + .0を設定

としている。一発で取得もできそうな気がする。

参考にしたサイト

dhythm.blog11.fc2.com

パッチ番号取得

  1. tag_patch=${tag##*.};\v1.2.を削除して
  2. インクリメントして
  3. v1.2 + . + インクリメントした数値を設定

としている。こちらの方がシンプル。

コメント設定

引数の値をそのまま設定。
echoで「これで設定するよ!」と教えてくれる。

既存タグチェック

  1. git tagでタグ一覧を取得して
  2. 設定しようとしているタグでgrepして
  3. マッチしたらエラー

としている。ここは参考にしたサイトの写経。

コマンド実行

  1. git tag -a ${tag} -m \"${comment}\";\でタグ設定して
  2. タグ名でpush

pushまでしている。
お試しで一瞬作ってすぐにgit push --delete TAGで消したけれどあんまりお試しはしたくないしタグを消したくもないのでちょっと心理的負荷が大きめ。

できた

このスクリプトで私がhotfixを処理したりリブ管のような人たちがreleaseを処理したりする予定。

そもそも今のプロジェクトはgitSVNだと思って開発している節があったため、改善ついでにこれを書きました。

その話はたぶん長くなるので気力があったら…書くかな…。

私はウマの育成に戻ります。
ではまた。

【セトリ】 UNISON SQUARE GARDEN TOUR 2021 「Normal」 セットリスト

UNISON SQUARE GARDEN
TOUR 2021 「Normal」
セットリストです。

1: Phantom Joke
2: オリオンをなぞる
3: meet the world time
4: アトラクションがはじまる (they call it "NO. 6")
5: メッセンジャーフロム全世界
6: コーヒーカップシンドローム
7: BUSTER DICE MISERY
8: instant EGOIST
9: 10% roll, 10% romance
10: RUNNERS HIGH REPRISE
11: キライ=キライ
12: ぼくたちのしっぱい
13: 流星のスコール
14: パンデミックサドンデス
15: スロウカーヴは打てない (that made me crazy)
16: 君の瞳に恋してない
17: 桜のあと (all quartets lead to the?)
18: mouth to mouse (sent you)
アンコール
19: さわれない歌

f:id:vviilloovv:20210323203939j:plain

【セトリ】 石原夏織 2nd LIVE 「MAKE SMILE」 セットリスト

2021/2/20にパシフィコ横浜にて開催された
石原夏織 2nd LIVE
「MAKE SMILE」
セットリストです。

1: Face to Face
2: DAY: Water Front
NIGHT: 夜とワンダーランド
3: リトルシング
4: Crispy Love
5: フィービー・フィービー
6: ポペラ・ホリカ
7: You & I
8: Taste of Marmalade
9: Diorama-Drama
10: キミしきる
11: DAY: 雨模様リグレット
NIGHT: empathy
12: Ray Rule
13: Against.
14: TEMPEST
15: SUMMER DROP
アンコール
17: Plastic Smile
18: Page Flip

f:id:vviilloovv:20210220201341j:plain

【セトリ】 UNISON SQUARE GARDEN 「USG2020 LIVE (in the) HOUSE -Count Down Style-」 セットリスト

2020/12/31に配信された
USG2020
LIVE (in the) HOUSE -Count Down Style-
セットリストです

1: Hatch I need
2: マーメイドスキャンダラス
3: スロウカーヴは打てない (that made me crazy)
4: Catch up, latency
5: 摂食ビジランテ
6: 夏影テールライト
7: Phantom Joke
8: 世界はファンシー
9: 弥生町ロンリープラネット
10: 春が来てぼくら
11: Simple Simple Anecdote
12: 101回目のプロローグ

おまけ
13: 光のどけき春の日に
14: リニアブルーを聴きながら
15: ピストルギャラクシー
16: ワールドワイド・スーパーガール
17: 天国と地獄
18: センチメンタルピリオド

f:id:vviilloovv:20210101000854p:plain

【セトリ】 小倉唯 ONLINE クリスマス ライブ 2020 〜Winter Twincle Magic〜 セットリスト

2020/12/24に配信された
小倉唯 クリスマス ライブ 2020
〜Winter Twincle Magic〜
セットリストです

1: winter tale
2: Baby Sweet Berry Love
3: ハピネス*センセーション
4: Honey♥Come!!
5: 瞳の国のアリス -Dance Music Edition-
6: ハッピーシンセサイザ
7: 赤いリボン
8: Look@Me♡
9: 雨の森はウソつき
10: Destiny
11: Raise

アンコール
12: I・LOVE・YOU!!
13: Very Merry Happy Christmas

FC限定
14: ライアーシープ
15: ハイタッチ☆メモリー

f:id:vviilloovv:20201224220226j:plain

【セトリ】 水瀬いのり 「Inori Minase 5th ANNIVERSARY LIVE Starry Wishes」 セットリスト

2020/12/5に配信された、
「Inori Minase 5th ANNIVERSARY LIVE Starry Wishes」
セットリストです。

1: 夢のつぼみ
2: Ready Steady Go!
3: MELODY FLAG
4: 笑顔が似合う日
5: Wonder Caravan!
6: 春空
7: アイマイモコ
8: ココロソマリ
9: Harmony ribbon
10: TRUST IN ETERNITY
11: Million Futures
12: Starry Wish
13: BLUE COMPASS
14: Starlight Museum
アンコール
15: Catch the Rainbow!
16: Innocent flower

f:id:vviilloovv:20201205213130p:plain

【セトリ】 UNISON SQUARE GARDEN 「USG2020 LIVE (on the) SEAT」 セットリスト

UNISON SQUARE GARDEN
「USG2020 LIVE (on the) SEAT」
セットリストです。

1: クローバー
2: フルカラープログラム
3: フィクションフリーククライシス
4: 誰かが忘れているかもしれない僕らに大事な001のこと
5: セレナーデが止まらない
6: 世界はファンシー
7: 君はともだち
8: 夏影テールライト
9: Phantom Joke
10: 徹頭徹尾夜な夜なドライブ
11: ライドオンタイム
12: harmonized finale

f:id:vviilloovv:20201117180210j:plain