Clang Format Pre-Commit
pythonのインストール
学校のパソコンには多分インストールされている!
↓のサイトから、pythonインストーラーをダウンロード
https://www.python.org/downloads/windows/
Stable Releasesから、Windows insallerを選ぼう! たぶん 64-bitでいいよ!

インストーラーを起動すると、こういう画面になると思います


まず、Add python.exe to PATHにチェックを入れよう!!!
必ず、Add python.exe to PATHにチェックを入れよう!!!
そしたら、 Customize installationを押そう!

上のような画面になるよ! 全部チェックつけてていいと思う! 少なくとも pip はチェックつけよう

こういう画面になるよ!
Add Python to environment variables にはチェックを入れよう!
あとはインストール先のフォルダとか指定して、Installを押せばいけるはず
コマンドプロンプトで試しに py --version とか押して動いたらOK
pre-commitのインストール
pip install pre-commitリポジトリにpre-commitを適用
pre-commit install上のコマンドを「プロジェクトのルートディレクトリ」で実行!!
- 「プロジェクトのルートディレクトリ」が適切な言い方か分からないけど、
.gitフォルダとか.sln(ソリューションファイル)が置いてあるフォルダ!!
.git/hooks にpre-commit ってファイル(拡張子なし)があればOK
使うとき!
このようなコードがあったとします!
※ FormatTest.cpp に書かれています!

このコードをコミットしようと思います!

すると…

怒られました!
Failedと書いていますね! コミットに失敗しました!
files were modified by this hook とあるように、勝手に編集してくれてます!
下図のように! わあ、きれい!

あとは、「変更」メニューから、clang-format が自動で行った変更をステージングしよう!

<aside>
「ステージング済みをコミット」じゃなくて、「すべてをコミット」の場合でも動きます
</aside>
もしも、下の画像みたいな警告が出たら!

この警告は、
一つのファイルの一部分だけをコミットをしようとした際に発生する可能性があります。
pre-commitの流れは、
- 未ステージングの変更をスタッシュする
- clang-formatが、ステージングされたファイルを自動で修正する
- 未ステージングの変更を元に戻す
ってなっていると思われます。
で、clang-formatが書き換えた箇所と、スタッシュしていた箇所が被っているとコンフリクトが発生すると思われます。
この警告が出た際は、clang-formatによる書き換えは無かったことにされるので、ファイルがぶっ壊れることはないです。
で、対策としては
- すべての変更をステージングしてしまう
- 手動でclang-formatを動かして、ファイルを修正させてからコミット
Ctrl + K → Ctrl + Dで現在開いているファイルをclang-formatに修正されることができるよ
- pre-commitを無視してコミット
- どうしてもpre-commitをスキップしたい時だけ、下記のようにコマンドを
git commit -m "your message" --no-verify