bzrからgitに乗り換えたときの話2013-06-01西本卓也 @24motznishimotz (GitHub, BitBucket)NVDA日本語チーム www.nvda.jp1NVDA Japanese Team www.nvda.jp
誰が?2NVDA Project: James Teh, Michael CurranNVDA Workshop in Japan (2012年9月)NVDA Japanese Team www.nvda.jp
NVDA: NonVisual Desktop Access3NVDA Japanese Team www.nvda.jp• オープンソースのスクリーンリーダー• Python と C++ で実装, GPLv2, Windows 対応• オース...
Tracによるチケット管理NVDA Japanese Team www.nvda.jp 4
TracとGitの連携NVDA Japanese Team www.nvda.jp 5Git コミットログにチケット番号Fixes #2999と書かれているTracチケットにGitハッシュ値が書かれている
ブランチの使われ方• git branch –r してみた→• master• release-*** リリースブランチ• 機能ブランチ• ちなみにタグ↓はリリース用NVDA Japanese Team www.nvda.jp 6release...
ブランチ名をTracで検索NVDA Japanese Team www.nvda.jp 7
ブランチの説明がチケットにNVDA Japanese Team www.nvda.jp 8• 実装したけど• 問題があって?• マージされてない• ことがわかる• リリース前にmasterにマージされることもある• 実装とドキュメントは同じコミ...
NVDA Japanese Team www.nvda.jp 9機能ブランチ(トピックブランチ)masterrelease-201x.2release-201x.1
リリースブランチ• 普段はmasterで開発• svn: trunk / bzr: main• リリースが近づくと• master から release-* が分岐• NVDAのコア開発者• リリース準備と並行して新機能の開発• release...
機能ブランチ• どんなときに作られるか• マイルストーン未定、実験的、時間かかること• 名前: inputMethods など具体的• master から分岐• 作業しながらときどきmasterをマージ• 将来masterにうまくマージできるよ...
NVDA Japanese Team www.nvda.jp 12origin/masterjpbranchbb/jpbranchgit remote add bb ….git push bb jpbranchgit fetch origin ...
NVDA Japanese Team www.nvda.jp 13origin/release-2013.1release-2013.1jpbb/release-2013.1jpgit push bb release-2013.1jpgit f...
NVDA日本語版の開発• 本家masterから分岐した jpbranch• 変更は jpbranch にコミット• ときどき本家 master をマージ、衝突の解決• 本家release-*から分岐した release-*jp• まず jpbr...
分散型VCSとしての運用• 本家リポジトリ origin• 日本語版ミラー bb, github, sfjp• GitHubよりBitBucketがアクセシブルらしい• nvdajp organization (team) を作ったNVDA J...
bzrはGitとどう違うか(1)• ブランチごとにレポジトリのURL• http://bzr.nvaccess.org/nvda/inputMethods• http://bzr.nvaccess.org/nvda/releases/2012....
bzrはGitとどう違うか(2)• bzr checkout と bzr branch の使い分け• bzr checkout: 作業コピー作成• bzr update でリモートの更新を取り込む• bzr commit するとサーバーにコミッ...
ある日メールが来たNVDA Japanese Team www.nvda.jp 18
Bzrで遭遇していた謎のバグNVDA Japanese Team www.nvda.jp 19c:¥work¥nvda>bzr branch lp:~nishimotz/nvdajp/MiscellaneousDependenciesmiscd...
Bzrのレポジトリサービス• sourceforge.jp• bzrサポート:あるけど使いにくい• ブランチを作るたびに「申請→承認待ち」• コミットメールの自動送信もできない。。• Launchpad.net• Ubuntuで有名なCanon...
Jamie のメール• Bzrのエコシステムは死んだっぽい• bzr のバグがなおらない• trac-bzr がちゃんと動かない• サーバー更新で Trac を上げたら問題に。。• この際 Git に移行しようと思う• NVDAJPは大丈夫?•...
あっという間に移行• 本家はレポジトリの移行ツールを使用• svn → bzr → git とブランチやタグを維持• 日本語チームはどうしようかと。。• 本家からマージできることが大事なので。。• 本家リリースブランチから分岐• 作業ファイルを...
まとめ• ブランチとマージ• チケット駆動開発• ツールのエコシステム• Windows での Git はやっと安定。。• もっと活用したい• 依存ファイル管理 git submodule で。。• 開発メンバーがついてこれてない• 「NVDA...
Upcoming SlideShare
Loading in …5
×

When NVDA project has migrated from bzr to git

1,445 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,445
On SlideShare
0
From Embeds
0
Number of Embeds
429
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

When NVDA project has migrated from bzr to git

  1. 1. bzrからgitに乗り換えたときの話2013-06-01西本卓也 @24motznishimotz (GitHub, BitBucket)NVDA日本語チーム www.nvda.jp1NVDA Japanese Team www.nvda.jp
  2. 2. 誰が?2NVDA Project: James Teh, Michael CurranNVDA Workshop in Japan (2012年9月)NVDA Japanese Team www.nvda.jp
  3. 3. NVDA: NonVisual Desktop Access3NVDA Japanese Team www.nvda.jp• オープンソースのスクリーンリーダー• Python と C++ で実装, GPLv2, Windows 対応• オーストラリア NV Access +コミュニティ• 40以上の言語で利用可能• バージョン管理の変遷• 2006年4月 最初は Subversion• 2010年3月 Bazaar に移行(分散型へ)• 2013年4月 Git に移行• Trac のチケット管理と連携
  4. 4. Tracによるチケット管理NVDA Japanese Team www.nvda.jp 4
  5. 5. TracとGitの連携NVDA Japanese Team www.nvda.jp 5Git コミットログにチケット番号Fixes #2999と書かれているTracチケットにGitハッシュ値が書かれている
  6. 6. ブランチの使われ方• git branch –r してみた→• master• release-*** リリースブランチ• 機能ブランチ• ちなみにタグ↓はリリース用NVDA Japanese Team www.nvda.jp 6release-0.5release-0.5.nextrelease-0.6p1….release-2011.1.1rc1release-2011.1beta1release-2011.1beta2release-2011.1rc1release-2011.2origin/HEAD -> origin/masterorigin/NVDARemoteControlorigin/addon-packagingorigin/bitmapTrackingorigin/deadFocusorigin/displayModelRtlSupportorigin/geckoRichTextEditingorigin/labelObjectsorigin/masterorigin/msaaTestVBuforigin/normalizeArabicCharsorigin/nvWaveEnhancementsorigin/pythonConsoleCompletionorigin/release-0.5origin/release-0.6p3origin/release-2013.1origin/smartDictionariesorigin/tonesInThreadorigin/touchRevieworigin/vbufFocusReadingorigin/vbufGuessFormFieldLabelsorigin/vc10origin/winEventsInprocess
  7. 7. ブランチ名をTracで検索NVDA Japanese Team www.nvda.jp 7
  8. 8. ブランチの説明がチケットにNVDA Japanese Team www.nvda.jp 8• 実装したけど• 問題があって?• マージされてない• ことがわかる• リリース前にmasterにマージされることもある• 実装とドキュメントは同じコミットで更新(たいてい)
  9. 9. NVDA Japanese Team www.nvda.jp 9機能ブランチ(トピックブランチ)masterrelease-201x.2release-201x.1
  10. 10. リリースブランチ• 普段はmasterで開発• svn: trunk / bzr: main• リリースが近づくと• master から release-* が分岐• NVDAのコア開発者• リリース準備と並行して新機能の開発• release-* にコミット:翻訳とバグ修正• その後 release-* から master にマージ• master にコミット:新機能の追加10NVDA Japanese Team www.nvda.jp
  11. 11. 機能ブランチ• どんなときに作られるか• マイルストーン未定、実験的、時間かかること• 名前: inputMethods など具体的• master から分岐• 作業しながらときどきmasterをマージ• 将来masterにうまくマージできるように• 作業が終わったら• masterにマージ、機能ブランチは削除NVDA Japanese Team www.nvda.jp 11
  12. 12. NVDA Japanese Team www.nvda.jp 12origin/masterjpbranchbb/jpbranchgit remote add bb ….git push bb jpbranchgit fetch origin mastergit merge FETCH_HEAD
  13. 13. NVDA Japanese Team www.nvda.jp 13origin/release-2013.1release-2013.1jpbb/release-2013.1jpgit push bb release-2013.1jpgit fetch origin release-2013.1git merge FETCH_HEADjpbranch
  14. 14. NVDA日本語版の開発• 本家masterから分岐した jpbranch• 変更は jpbranch にコミット• ときどき本家 master をマージ、衝突の解決• 本家release-*から分岐した release-*jp• まず jpbranch をマージ• 変更は release-*jp にコミット• ときどき本家 release-* をマージ、衝突の解決• リリースが終わったら jpbranch にマージ• メンテナンスリリースに備えてブランチは残すNVDA Japanese Team www.nvda.jp 14
  15. 15. 分散型VCSとしての運用• 本家リポジトリ origin• 日本語版ミラー bb, github, sfjp• GitHubよりBitBucketがアクセシブルらしい• nvdajp organization (team) を作ったNVDA Japanese Team www.nvda.jp 15> git remote -vorigin git://git.nvaccess.org/nvda.git (fetch)origin git://git.nvaccess.org/nvda.git (push)bb ssh://git@bitbucket.org/nvdajp/nvdajp.git (fetch)bb ssh://git@bitbucket.org/nvdajp/nvdajp.git (push)github git@github.com:nvdajp/nvdajp.git (fetch)github git@github.com:nvdajp/nvdajp.git (push)sfjp nishimoto@git.sourceforge.jp:/gitroot/nvdajp/nvdajp.git (fetch)sfjp nishimoto@git.sourceforge.jp:/gitroot/nvdajp/nvdajp.git (push)
  16. 16. bzrはGitとどう違うか(1)• ブランチごとにレポジトリのURL• http://bzr.nvaccess.org/nvda/inputMethods• http://bzr.nvaccess.org/nvda/releases/2012.3• ブランチごとに作業ディレクトリが必要• リビジョンが通し番号• マージをマージすると 3493.1.13 みたいに• マージは作業ファイルへ。コミット必要• Git だとリポジトリにいきなりマージ• Git は集合モデル、bzr は時系列モデルNVDA Japanese Team www.nvda.jp 16
  17. 17. bzrはGitとどう違うか(2)• bzr checkout と bzr branch の使い分け• bzr checkout: 作業コピー作成• bzr update でリモートの更新を取り込む• bzr commit するとサーバーにコミットされる• Subversion 的な運用• bzr branch: 新しいブランチの作成• bzr merge, bzr commit リモートの更新取り込み• bzr push するとリモートに反映される• 分散型としての運用NVDA Japanese Team www.nvda.jp 17
  18. 18. ある日メールが来たNVDA Japanese Team www.nvda.jp 18
  19. 19. Bzrで遭遇していた謎のバグNVDA Japanese Team www.nvda.jp 19c:¥work¥nvda>bzr branch lp:~nishimotz/nvdajp/MiscellaneousDependenciesmiscdepConnected (version 2.0, client Twisted)Authentication (publickey) successful!Secsh channel 1 opened.bzr: ERROR: Unprintable exception TransformRenameFailed: dict={errno: 13,from_path: uC:/work/nvda/miscdep/.bzr/checkout/limbo/new-3, to_path:uC:/work/nvda/miscdep/source, why: [Error 5]¥x83A¥x83N¥x83Z¥x83X¥x82¥xaa¥x8b¥x91¥x94¥xdb¥x82¥xb3¥x82¥xea¥x82¥xdc¥x82¥xb5¥x82¥xbd¥x81B‘}, fmt=’Failed torename %(from_path)s to %(to_path)s: %(why)s‘,error=UnicodeDecodeError(ascii, [Error 5]¥x83A¥x83N¥x83Z¥x83X¥x82¥xaa¥x8b¥x91¥x94¥xdb¥x82¥xb3¥x82¥xea¥x82¥xdc¥x82¥xb5¥x82¥xbd¥x81B, 10, 11, ordinal not in range(128))
  20. 20. Bzrのレポジトリサービス• sourceforge.jp• bzrサポート:あるけど使いにくい• ブランチを作るたびに「申請→承認待ち」• コミットメールの自動送信もできない。。• Launchpad.net• Ubuntuで有名なCanonicalのサービス• レポジトリが lp:nvdajp と書ける• Bzrの開発が停滞• 2012年夏以降、bzr コア開発者が不在という話NVDA Japanese Team www.nvda.jp 20
  21. 21. Jamie のメール• Bzrのエコシステムは死んだっぽい• bzr のバグがなおらない• trac-bzr がちゃんと動かない• サーバー更新で Trac を上げたら問題に。。• この際 Git に移行しようと思う• NVDAJPは大丈夫?• “significant fork of NVDA”• とりあえず答えた• git レポジトリだけ教えてくれれば。NVDA Japanese Team www.nvda.jp 21
  22. 22. あっという間に移行• 本家はレポジトリの移行ツールを使用• svn → bzr → git とブランチやタグを維持• 日本語チームはどうしようかと。。• 本家からマージできることが大事なので。。• 本家リリースブランチから分岐• 作業ファイルを日本語版でごそっと上書き• まとめて commit した。。• 日本語版固有の履歴の移行をあきらめた• 日本語版 5/21 リリース www.nvda.jpNVDA Japanese Team www.nvda.jp 22
  23. 23. まとめ• ブランチとマージ• チケット駆動開発• ツールのエコシステム• Windows での Git はやっと安定。。• もっと活用したい• 依存ファイル管理 git submodule で。。• 開発メンバーがついてこれてない• 「NVDAユーザ会広島」もやっていますNVDA Japanese Team www.nvda.jp 23

×