git sparse-checkout を活用して、/qmk_firmware/keyboards/内の使わないキーボードを抹消する
見返したときに5行で思い出せる概要
git sparse-checkout init --cone
git sparse-checkout add 【ディレクトリ名/ファイル】
※1
で登録 or 設定ファイルを直接編集
生成ファイルは /.git/info/sparse-checkout に在り
git sparse-checkout reapply
で復帰
今回の記事はqmk_firmwareには興味がある
だけど git hubにはあまり詳しくないというユーザーを対象としています。
最初の5行で大体何が書いてあるか理解できたという方は、以下の文章は読まなくても大丈夫です。
また、windows環境で実行していますが、MACやLinuxの方もおそらく同じ手順で同様のことができると思います。
まだ一度もローカルの変更をコミットしたことがない、
pull?push?なにそれ怖いという方はTakeshi ISHII様のこちらの記事を参考にしてみてください。
git に対する苦手意識が少しだけ軽くなると思います。
さて、私は自宅では設計段階の自作キーボード(以下 自作キ)を、出先ではcorne chocolate を使用しています。
その関係で、corneのキーマップに対して行った変更を 自作キにも適用したいという場面が度々あり、
コードエディタでcorneと自作キの欄を行ったり来たりしていました。
この時間は無駄なので使わないキーボードのキーマップファイルをリモートから読み込まないようにしてみます。
これを
こうする(sweetgrapesというのが設計中の自作キ)。
今回はgit sparse-checkout
というコマンドを使用します。
これは、リポジトリの中から設定されたディレクトリのみをローカル環境に構築することができるコマンドです。
git をまだインストールしていないという方は公式サイトからダウンロードしてください。
sparse-checkout を利用するには
qmk_firmware/ に cd
で移動した後
git sparse-checkout init --cone
を実行します。
windowsの場合
コマンドラインツールはgit bashがおすすめ。
このコマンドによって
/qmk_firmware/.git/info/ に
sparse-checkout というファイルが生成されます。
--cone
はルートディレクトリ配下のファイルのみ読み込むというオプションです。
結果、qmkのディレクトリ構造は以下のようになります。
ディレクトリ無し …その他ファイル ……
もともとのqmkのディレクトリ構造(2021/12/10時点)は
.build/ .git/ .vscode/ .github/ api_data/ bin/ builddefs/ data/ docs/ drivers/ keyboards/ layouts/ lib/ platforms/ quantum/ tests/ tmk_core/ users/ util/ …その他ファイル ……
のようになっていますが、
docs/ layouts/ users/
以外は重要なディレクトリばかりなので、
次はこれらのディレクトリを読み込むよう設定します。
コマンドは
git sparse-checkout add 【directory/file】
※1
です。
追加するファイルやディレクトリはスペース区切りで複数同時に登録できるので、
git sparse-checkout add .github api_data builddefs data bin data drivers lib platforms quantum tests tmk_core util
をコピペして実行するとkeyboards以外のすべての必要なディレクトリを読み込むことができます。
お使いのqmkのバージョンによっては足りないディレクトリや存在しないディレクトリが混じっていたりするので、github のサイトでご自身のqmk_frimware リポジトリを見つつエラーを消してみてください。
あとはあなたの使っているキーボード設定を
git sparse-checkout add keyboards/【your keyboard】
で追加していくだけです。※2
Linux系の方はスラッシュをバックスラッシュに読み替えてください。
/qmk_firmware/.git/info/sparse-checkout に生成された設定ファイルを見てみると、
/* !/*/ /keyboards/ !/keyboards/*/ /bin/ /data/ /drivers/ /keyboards/crkbd/ /keyboards/miniaxe/ /keyboards/sweetgrapes/ /lib/ /platforms/ /quantum/ /tests/ /tmk_core/ /util/ /.github/
私の場合はこんな感じになっていました。
ここに手作業でファイルを追加したあと、
git sparse-checkout reapply
としても同様のことができるので、cliでうまくいかない場合は試してみてください。
解説は以上です。お疲れ様でした。
※1 ファイルとディレクトリの順番が気になってたので入れ替えました。
※2 add keyboard/【…… と、複数形のsが抜けていました。申し訳ありません。(21/12/10 21:17)
参考にしたサイト:
konweb様 | 【Git】基本コマンド
カック様 | モノリポ時代に知っておくと便利な「git sparse-checkout」
晴栄リコ様 | Git sparse-checkout を試してみる
kenzauros様 | git sparse-checkout を無効にするには