by shigemk2

当面は技術的なことしか書かない

三連休の運び

流れを雑にしたためる

  1. デビルマンの実写映画を見ながらrundeckのドキュメントのtypoを直すなどしていたら、ふと思い立っていつも使っているterminatorの貢献をしたくなった
  2. アギトのラスト5話を見ながらterminatorのサイトを見てみると、ソース管理はBazaarでやっていることが分かった
  3. リポジトリのファイルパスはghqで管理しているけど、ghqってGit以外も管理できたっけ?
  4. Subversionでghq getが実行できるか試したけどできない。 -p オプションを常に付けて実行していたのが原因だった。-pオプションはGitにしか対応していないのが分かった。
  5. ソースコードを見たらGit以外もSubversionとかMercurialとかのリポジトリにも対応しているのが分かる。でもBazaarは対応していない
  6. Bazaar対応を実装したらいいんじゃね? Golang全然知らないけど
  7. ソースコードをさらに読み進めると、ghqがやっているのはclone/shallow clone/updateの3つだけのようだ だったらイケるぜ!
  8. Gitでいうところのgit cloneってBazaarだとどうやるんだろう→bzr checkout/bzr branchの2種類がある これってどうやって対応したらいいんだろうと思い悩む
  9. 2種類あるなら2種類実装したらいいんじゃないか?
  10. cloneは.gitconfigを見てどのVCSコマンドを実行したらいいか判定しているけど、updateは直下のドットディレクトリを見ているようだ
  11. でも.bzrだけじゃcheckoutしたものかbranchしたものか分からない。しかもbranchしたものはpullで、checkoutしたものはupdateで挙動が違う 何が違うんだろう
  12. checkoutしたリポジトリとbranchしたリポジトリの差分をdiffで取ると、.bzr/branch/branch.confが違うことが分かった
  13. .bzr/branch/branch.confの中身でpullすべきかupdateすべきか判断しているっぽい。Bazaarのソースコードをみるとparent_locationの設定で判定しているようだ
  14. shalow cloneはcheckoutにしか対応していないことを知る
  15. テストファーストでテストを書く
  16. 他の実装を見ながらBazaar対応のプロダクトコードを書く
  17. branch.confの中身を見てpullするかupdateするか判定する実装を書く
  18. テストが通ること、ghq getghq get --shallow(checkout版だけ)もghq get -uも問題なく動くことを確認する
  19. 途中、例の万年カレンダーを受け取りに人と会うために離席
  20. 勧められるままにプライムビデオでメイドインアビスを見ながら挙動に問題がないことを再度確認してプルリクを投げる フィードバックを待つ。
  21. なお、Bazaarって今じゃそんなに積極的に開発していないから、若干無駄足気味な気もする。
  22. 物見遊山でYRP野比に行く

成果物はこちらです。

github.com

買ったもの

S.I.C. 仮面ライダーギルス & アナザーアギト

S.I.C. 仮面ライダーギルス & アナザーアギト