初めてのQMKプルリクエスト

Takeshi Nishio

Tag:

keyboard

qmk

git

GitHub


初めておこなったQMKへのプルリクエストについて。
どういう風におこなったのかをメモ。

前書き

自分で設計したJonesキーボードを訳あり版ながらも販売を始めたことをきっかけに、正規ルートでファームウェアを提供したいと思ってプルリクした。

masterへコミットしてごめんなさい

1年くらい前に”本家QMKのリポジトリ”からフォークしていたものを使っているが、ErgoDashのキーマップやSU120を使った評価用キーボード、自分で設計したColiceやJonesのファイルを、(いちいちブランチを作ったり切り替えたりするのが面倒になり)すべてmasterへコミットしていた。

そのままプルリクすると雑多なものまで送られてしまうため、一度リセットする必要があった。

ちょっと困った状況をツイートしたら、@mteiさんが解決方法を教えてくれた。

自分がmasterへコミットしていたものを退避しておいて、この”同期のとれていない git ブランチの再同期”の手順をおこなって、フォークしたリポジトリのmasterをクリーンな状態に戻した。

その後、開発用ブランチを作り、退避しておいたものを適宜コミットした。

退避していたものの中に.gitsubmoduleが混入していたのに気づかず、ちょっと面倒なことになったが、

git checkout [混入前のコミットハッシュ] .gitmodules

で、混入する前の状態に戻して解決。

プルリク前

QMK キーボードガイドライン”を読み、キーボード、キーマップとして求められるファイルを用意する。

単にキーボードを動作させるためだけだったら必要ないもの、例えばreadme.mdinfo.jsonなどを追加。
info.jsonはKeyboard Layout Editorのデータを元に作成したが、ちゃんとできてるかよくわからない。 QMK Configuratorへ読み込ませてみたが、Jones JPスタイルの逆向きISOエンターがちゃんと表示されない。

次に”PR チェックリスト”の”キーマップのPR”と”キーボードのPR”を読み、求められる要件に合わせる。

使っていないレイアウトやコメントアウトした処理を消したり、重複がないようにしたり。
LOWERとRAISE同時押しでADJUSTレイヤーにする処理を書き換えたりもした。

以上を開発用ブランチ”develop_Jones”で色々やっておいて、「よっしゃ、これで完成や!」となったタイミングで、プルリクを出すためのブランチ”Add-jones-v.0.3-and-v.0.3.1-keyboard”を作成した。

プルリクっ!!

GitHubで、プルリク用ブランチを表示して、”Pull Request”をポチッと。

”Open a pull request”の画面になる。
(別のブランチ(develop_Jones)でスクリーンショットを撮ってるので、ブランチ名が違ってるのは勘弁)

上部の枠内が、

本家のqmk_firmware masterブランチ ← 自分のqmk_firmware プルリク用ブランチ

になっていることを確認。

次のように必要事項を記入する。

記入したら”Create pull request”をポチッとして、プルリクを発射。

ブルリク後

自動チェックでFail

プルリク発射から数分以内に、自動チェックの”PR Lint Keyboards”でFailとなった。
エラー内容を見てみると、「キーボードのディレクトリに”readme.md”が無い」のが原因だった。

☒ Missing keyboards/jones/v.0.3/readme.md
87
☒ Lint check failed!
88
linting jones/v.0.3.1
89
☒ Missing keyboards/jones/v.0.3.1/readme.md
90
☒ Lint check failed!
91
Error: Process completed with exit code 2.

キーボードの親ディレクトリに置いてあればOKだと思い違いをしていたので、見つからないファイルを正しく配置してプルリク用ブランチへコミット。
GitHubの自分のqmk_firmwareへpushしてしばらくすると、全てのチェックでOKとなった。

レビュー(その1)

自動チェックにパスしてから3日ほどで、最初のレビューがついた。

カスタムマトリクスの”lite”化にちょっと手こずったけど、提案・変更依頼の通りの修正をプルリク用ブランチへコミットした。

レビュー(その2)

それから半日ほどで、もう1件のレビューがついた。

次のように変更して、プルリク用ブランチへコミットした。

レビューへの対応後

作業の流れがよくわからないけれど、”Changes requested”のところから、レビューしてくれた人の右側の”・・・”を押して”Re-request review”をポチッとしておいた。

その後2日ほど進展なし。