鯨飲馬食

いろいろつまみ食いで勉強したことのメモ書き

Gitに1バイト貢献して学んだこと

f:id:yoichi22:20190228223313p:plain

自分が日常的に使っている Git というソフトウェアに1文字修正をフィードバックして取り込んでもらいました。たった1バイトでも恩返しできたことが嬉しかったので共有します。

きっかけ

仕事でメンテナンスしてるアプリケーションのソースコードを同僚と一緒に見ている時に、私が手元のターミナルで

$ git checkout -

としたら、「それなあに?」と聞かれました。こういうTIPSは、知っておくと日々の作業の中で繰り返していることの手間を減らしてくれるので、他の人にも紹介してみようと思って、Qiitaに書こうとしました。

仕組みを知りたい

ただ使い方だけ書いて伝えてもいいけど、Gitのソースコードは公開されているので、どういう仕組みでその機能が実現されているのか知りたいと思いました。 こういった特定の小さな機能とか、何かのエラーとか、ターゲットを絞ってやるとコードリーディングは捗ります。 ソースコードを検索してそれっぽい箇所のあたりを付けたら、 git blame でコミットメッセージと差分を引っ張り出して、機能実装がされたコミットを特定してその差分を読むと、だいたいどういう仕組みで実現されているのかが読み解けます。

調べたことは

qiita.com

に書きました。

ドキュメントではどう書いてあるか

調べたことをまとめて共有するのはよいですが、僕のつたない文章のみで伝えるよりは、公式ドキュメントに説明があるならその内容を紹介しておくとわかりやすいと思いました。今回注目していた2つのコミットのうち片方でドキュメントの更新がされていることがわかりました。 そしてその差分を見ている時にドキュメントの誤記に気付いたのでフィードバックしようと思いました。

フィードバックの方法を探す

github.com

に記載されている通り、フィードバックは GitHub のプルリクエストではなく、 git/SubmittingPatches at master · git/git · GitHub に従って行う必要があります。

具体的には git fomat-patch で作成したパッチを git send-email でメーリングリスト に送信すればよくて、

git.wiki.kernel.org

に記載されてるように、登録してなくても送信可能です。

で、送信しようとしたら git send-email がエラーを吐いたので、Gmail の Web UI で本文にパッチを貼り付けて送信したのですが、それが良くなかった。

https://marc.info/?l=git&m=155098585332149&w=2marc.info

SubmittingPatches をちゃんと読んでいれば、そこからリンクされている

git/git-format-patch.txt at master · git/git · GitHub

GMailについて注意が書かれていました:

GMail does not have any way to turn off line wrapping in the web
interface, so it will mangle any emails that you send.  You can however
use "git send-email" and send your patches through the GMail SMTP server, or
use any IMAP email client to connect to the google IMAP server and forward
the emails through that.

メンテナに無駄な手間をかけさせてしまったのは申し訳なかったです。その後 git send-email で出ていたエラーも解消できたのでやり方をまとめました。

qiita.com

小さなことでもアウトプットすると決めることで、芋づる式にたくさんの学び(gitへのフィードバックの方法、GMailでgit send-emailする設定、ドキュメントをちゃんと読んでいればメンテナの貴重な時間を節約できたこと)が得られました。 貢献した1バイトはその後のコミットで消えてもう残っていないようですが、経験と学びは消えないので今後も小さなOSS貢献を続けていきます。