KiCadプロジェクトをgitで管理してみる

Category: 電子工作

以前の記事でKiCadのデータを公開したのですが、その際、どうやって公開しようか考えていました。
まず思いつくのはzipにして置いておく方法です。
別に問題はないのですが、変更したら自動的に更新されるようにしたいのと、以前からKiCadもバージョン管理したいと思っていたので、どうしたものかと。

git管理

ところでKiCadのファイル形式.kicad_pro .kicad_pcb .kicad_schはいずれも中身はテキストファイルでテキストエディタで表示することができます。

KiCadのファイルの中身をテキストエディタで開いた様子

ということはgitで管理できるのでは?

とりあえずgit initしてみる。
配線の長さを変更してgit diffを確認してみると

おぉ、配線の長さを変更したっぽいことがわかります。

しかし、テキストで差分を見ても具体的にどういった目的の変更かわからないのでメリットはあまりないような気がします。

試しに簡単な回路を作成して、全選択で左にちょっとだけ移動。diffで変更された行を確認すると、全ての部品の座標が変更されたのでなんと470行が変更されていました。
これではmergeなどの操作はキツそうです。ましてコンフリクトなんてしたら...
mainブランチにcommitするだけという使い方に留めるのが良さそうです。

とはいえ使い慣れたgitでバージョン管理できるというのは非常に魅力的です。

Git integration

一応、KiCad自身にも8.0からgit管理機能があるらしく、設定>バージョン管理にGitトラッキングを有効化という項目があります。(現在はデフォルトで有効 3018d7af)

Git GUI integration into kicad - Issue (#10441)
ADDED: Git integration support - merge requests (!1730)

この状態でKiCadを開くとルートにブランチが表示され、ファイル名の横にgitのステータスが表示されるようになりました。

ファイルを右クリックするとバージョン管理という項目が表示されます。

以下の機能がサポートされています。

  • Push/Pull support
  • Commit support
  • Basic merge (ours/theirs)
  • Revert commits
  • Create/switch branches

詳しい使い方はKicadのドキュメントを確認してください。
KiCad 9.0 Reference Manual #Git integration

どちらを使うべきか

KiCadのgit機能はコマンドラインでは使えない特別な機能があるわけではありません。一方でコマンドから高度な操作をするメリットはKiCadにおいては無さそうです。

最初のIssueに以下のように書かれています。

(DeepL翻訳)
GitはKiCadプロジェクトの追跡やバージョン管理を行う非常に有用な手段です。現在、Gitタスクはターミナル経由で実行する必要があり、ターミナルに関するある程度の高度な知識を要するため、新規ユーザーやGitに不慣れな経験豊富な電気技術者にも利用しづらい状況です。KiCadにVS CodeスタイルのGitメニューがあれば有益でしょう。

やはりgitに不慣れなユーザーのための機能のようなので、慣れている人は普通にコマンドから操作でも良さそうです。

使ってみて気になったのはKiCad上でgit関係の操作をしようとすると時々、KiCadがフリーズすることで、調べたところ現時点では安定性の問題が多くあるようです。
この問題があるので、自分はKiCadのgit機能は無効化して、コマンドラインのみで操作しています。

gitignore

使っている方はわかると思いますが、KiCadはキャッシュとかバックアップでいろんなファイルを自動で作りやがるので.gitignoreで除外しておく必要があります。
自分は公式ドキュメントのファイル一覧を参考にこんな感じにしています。
.DS_Storeはmac関係、buildは自分がガーバーデータの出力に使ってるフォルダです。

.DS_Store

build

*-backups
*.kicad_prl
*.kicad_wks
*.net
*.bak
*.lck

fp-info-cache

Note

githubにkicadのgitignoreテンプレートがありました。
https://github.com/github/gitignore/blob/main/KiCad.gitignore