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