メインコンテンツ

MATLAB での Git フックの使用

R2024b 以降

この例では、MATLAB® で Git™ フックを使用してコミット ワークフローを標準化する方法を示します。Git フックは、コミット、マージ、コミットのプッシュなどの操作によってトリガーできるカスタム スクリプトです。

Windows® システムにおいて MATLAB で Git フックを使用するには、コマンド ライン版の Git のインストール時に、.sh ファイルを Bash で実行できるようにしてください。詳細については、その他の設定を参照してください。

例を開いて、サポート ファイルをダウンロードします。このリポジトリには 3 つのサンプル フックが含まれています。.git/hooks フォルダーに、commit-msgpre-commit、および prepare-commit-msg フックが含まれています。これらのサンプル フックの内容を調べて編集するか、テンプレートとして使用して独自のフックを作成します。.git フォルダーが表示されない場合は、隠しファイルおよびフォルダーを表示するように設定を調整します。詳細については、現在のフォルダーの設定を参照してください。

Repository folder hierarchy showing three hooks in the .git/hooks folder

コミット メッセージのカスタマイズ

prepare-commit-msg フックを使用して既定のコミット メッセージを変更し、ブランチ名や問題追跡 ID などの情報を含むようにカスタマイズします。この例では、prepare-commit-msg はコミット メッセージにプロジェクト名 -PROJ123- を追加します。

[ファイル] パネルで右クリックし、[ソース管理]、[コミット] を選択します。[変更をコミット] ダイアログ ボックスで、既定のコミット メッセージの最後に -PROJ123- が含まれます。

あるいは、[ソース管理] Source Control panel icon パネルで [コミット] をクリックします。[ソース管理] アイコンがサイドバーにない場合は、[パネルをさらに開く] ボタン Open more panels icon をクリックし、[ソース管理] パネルを選択します。

Files browser showing a context menu with the Source Control > Commit option selectedCommit Changes dialog box that includes the list of modified files, a comment field that includes "-PROJ123-", and the Commit and Cancel buttons

コミット前のファイルの検査

pre-commit フックを使用して、コミットしようとしているファイルを検査します。コードの品質、書式の問題、およびタイプミスをチェックするように pre-commit をカスタマイズできます。フックで指定したチェックが失敗した場合、pre-commit はコミットをキャンセルします。この例では、pre-commit は変更済みファイル内にテキスト「TODO」がないかチェックします。

この例では、saveUnsavedMFiles.m ファイルには「TODO」コメントが含まれています。変更をコミットしようとすると、コミット操作によって、pre-commit フックで指定したエラーがスローされます。

Error dialog forwarding the error from the pre-commit hook

saveUnsavedMFiles.m ファイルを開き、すべての「TODO」を削除します。その後、再度コミットします。

最終コミット メッセージの検証

commit-msg フックを使用して、最終コミット メッセージを検査および検証します。commit-msg は、最終コミット メッセージが適用されているガイドラインに準拠していない場合、コミットをキャンセルします。この例の commit-msg では、すべてのコミット メッセージが、コミットのタイプを指定する「fix:」、「feat:」、「doc:」、または「test:」で始まる必要があります。

コミット メッセージの先頭にコミット タイプを含めずにコミットしようとすると、コミット操作によって、commit-msg フックで指定したエラーがスローされます。[変更をコミット] ダイアログ ボックスでコミット メッセージ「Add saveUnsavedFiles utility」を入力し、[コミット] をクリックします。

Error dialog forwarding the error from the commit-msg hook

あるいはcommit関数を使用してプログラムで変更をコミットすることもできます。

localrepo = gitrepo(path/to/repo/folder)
commit(localrepo, Message="Add saveUnsavedFiles utility");
Error using matlab.git.GitRepository/commit>i_doCommit
The 'commit-msg' hook aborted the operation.

Caused by:
ERROR: Commit message does not start with 'fix:', 'feat:', 'doc:', or 'test:'

Git フックを使用して、マージやプッシュのワークフローなど、他のワークフローを改善するには、.git/hooks フォルダーにフックを追加します。R2024a 以降の MATLAB Git 統合では、pre-commitcommit-msgpost-commitprepare-commit-msgpre-pushpre-merge-commitpost-checkout、および post-merge の各フックがサポートされています。

参考

トピック