Giter Club home page Giter Club logo

husky-settings's Introduction

husky-settings

husky の設定などを記述

適用

適用対象のディレクトリより scripts/copy.sh を実行する。

当リポジトリと同一階層に対象がある場合

sh ../husky-settings/scripts/copy.sh

当リポジトリと同一階層に対象があり Yarn Workspaces を使用している場合

  • Yarn Workspaces 用の調整が必要
sh ../husky-settings/scripts/copy-yarn-workspaces.sh

内容

prepare-commit-msg

ブランチ名から / を区切り文字としてチケット番号を抽出してコミットメッセージに反映させる。

$ git branch 
* issue-1/XXX

チケット番号のプレフィクスを issue- とした場合に、
コミット時に "issue-1 コミットメッセージ" として自動的にチケット番号が付加される。

prepare-commit-msg 設定

scripts/prepare-commit-msg.sh にて使用している以下の変数に指定する必要がある。

# GitHub 向けのブランチのプレフィクス
# `{issue-}123`
GITHUB_BRANCH_PREFIX="issue-"
# GitHub 向けのコミットログのプレフィクス
GITHUB_ISSUE_PREFIX="#"
# チケット番号のプレフィクス
# `{ISS-}123`
TICKET_PREFIX="ISS-"

使用ライブラリ

husky のスクリプトの実行タイミングの調整に使用

  • lefthook.yml で変更ファイルのパスにより実行内容を指定する。
  • .husk/ 配下は lefthook により自動で更新されるため手動での変更を行わない。

husky-settings's People

Contributors

yskuga avatar

Watchers

 avatar

husky-settings's Issues

Yarn Workspaces 考慮

Yarn Workspaces 考慮

Yarn Workspaces に合うようにコピーを行う。

対応

  • package.json 調整
    • 当プロジェクトの workspaces 指定削除
  • 不要ディレクトリ削除
  • ディレクトリでのコピー

パスの絶対での指定

パスの絶対での指定

対応

  • モノレポなどの場合にファイルのパスなどが相対であると問題が発生することがあるので絶対で指定する。

チケット番号検知の変更

チケット番号検知の変更

対応

ブランチ名の先頭にチケット番号を位置させているが、中間を許容する。

チケット番号入力時の全角空白について

チケット番号入力時の全角空白について

チケット番号が任意で入力されていて、
その後に全角の空白が入っていた場合正規表現に引っかからず単に頭に付与される?

以下の課題があり、加えて少々特殊な状況なためいったん置いておく。

問題

  • WSL 上で動作させた場合に正規表現中に全角文字が入っていると
    UTF-8 関連の warning が出て文字化けする。

`.husky/` 配下の `.gitignore` 指定

.husky/ 配下の .gitignore 指定

lefthookpre-commit などの定義を自動で書き換えるため .husky/ 配下を .gitignore に指定する。

  • hook の種類を追加した際など変更が行われる。
  • Windows 環境では lefthook.exe の指定があるなど設置個所でそれぞれ生成させたほうが問題が発生しない。
# .husky/ 配下の変更は lefthook に任せる
.husky/

prepare-commit-msg の設定を husky に追加

prepare-commit-msg の設定を husky に追加

Gitのコミットメッセージに自動でブランチ名を入れる方法 - Zenn

  • prepare-commit-msg の設定を husky に追加

ブランチ名取得詳細

cut などを使用して / による分割と対象列の指定

チケット番号が ISS-123 とした場合

  • ISS-123/test
    • 1 列目を対象
  • ysKuga/ISS-123/test
    • 2 列目を対象

チケット番号の有効判定

チケット番号が正しく取得された場合に使用対象とする。

  • test ブランチ
    • チケット番号がないパターン
    • .env などでひな形となる ISS などを設定する?

ユーザーのチケット番号任意入力

どちらを優先させるかなどの判定が必要になるので現状はなしで

  • ブランチ名は ISS-123/test だが、メッセージに ISS-999 test: test などと記述された場合
    どちらの対応を行うか?
    • メッセージは上書きする?
      • sed などの正規表現により大雑把に上書き対象を検出してしまう。
      • ただし 半角 全角 スペースと スペースの有無 により他メッセージを消さないようにする必要
    • ISS-999 を尊重する?

ユーザーの任意入力を尊重する場合は以下のような条件が必要となりそうなため、
面倒であれば上書きで統一してよさそう?

  • チケット番号の正当性 .env などに設定したひな形をもとにチケット番号のフォーマットを確認

husky の導入から prepare-commit-msg の設定まで

husky の導入から prepare-commit-msg の設定まで

プロジェクトの基本設定

pre-commit-msg によるブランチ名を基としたコミットのプレフィクス付与

Gitのコミットメッセージに自動でブランチ名を入れる方法 - Zenn

  • prepare-commit-msg の設定を husky に追加
    #4

README

  • README への記述
    #10

修正

  • .editorconfig 設置
    #11

  • 複数行の場合に全行にチケット番号が付与されるので修正が必要
    #13

  • 念のため .husky/prepare-commit-msg の段階で ROOT_DIR を付与したものを渡すようにする。
    #15

#15 での対応
ROOT_DIR=$(pwd)
readonly COMMIT_MSG_FILE="$ROOT_DIR/$1"
readonly COMMIT_SOURCE=$2

・・・

sh ./scripts/prepare-commit-msg.sh $COMMIT_MSG_FILE $COMMIT_SOURCE

発展

環境変数設定ファイルなどの使用

  • チケット番号を含まない場合の抑止
  • チケット番号のプレフィックス指定
    • TICKET_PREFIX により指定
  • ブランチのどの部分を対象とするかなど
    • ysKuga/issue-123/~, issue-123/~ などの列指定
    • TICKET_COL により指定
  • ブランチの実態とチケット番号のプレフィクスを違えたい場合
    #17
    • issue-123/~ -> "#123 コミット"

コピースクリプト

コピースクリプト

別プロジェクトに適用する際に移植対象を確認するのが面倒なので
コピーするスクリプトを作成する。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.