日本語チームの git ブランチ運用
本家がほぼ予告通り、今日 2013.2 のリリース候補1を発表しました。
本家のリポジトリにはリリース候補を意味するらしい rc というブランチができています。
リリースごとにブランチを作るのではないようです。
日本語チームのリポジトリには release-2013.2jp ブランチを作り、本家 rc をマージしました。
各国語の翻訳状況は下記のとおりですが、日本語の翻訳は追いついています。
本家の next ブランチと同じような考え方で、jpnext ブランチを作ることにしました。
今後は下記のように運用したいと思います。
jpbranch: master ブランチ+日本語化(安定版):日本語ベータ版(リリース版の準備)のためのブランチ
jpnext: master ブランチ+日本語化(実験版):日本語テスト版のためのブランチ
原則として jpnext にはフィーチャーブランチからのマージを行い、jpbranch には元のフィーチャーブランチからマージしなおす。jpnext からどこかにマージしてはいけない。
本家の規則に合わせて、リリースブランチにつける release-2013.3jp のような名前は今後はタグの名前にして、リリースブランチにはもっと短い名前をつけることを検討中です。
また、jpnext ブランチはいまのところ bitbucket だけに置いています。
jpnext ブランチからのテスト版の扱いについて、もう少しルールを整理してみます。
本件に関連して、2013.3jp の作業の大まかな順序は以下の通りです。
本家がリリース準備に入る11月1日ごろ、日本語版独自の改良の締め切り(その時点で未完成の作業は 2014.1jp に先送り)を行う。
11月1日以降は最終リリース(本家版は11月22日ごろ、日本語版は1週間から2週間後)まで、JTalk および日本語点訳のテキスト解析辞書の改良(影響の範囲が限定されるのでリリース直前までチューニングがしやすい)と、そのほかの調整を行う。
いままで jpnext で行った作業を jpbranch にマージしました。
今後の 2013.3jp の開発は jpbranch で行います。
本家が rc ブランチを作ったら以下のように作業する予定です。
このチケットの概要を「2013.2 以降の nvdajp ブランチ運用とリリース計画」から「日本語チームの git ブランチ運用」に変更して、探しやすいように優先度・重要度を高くしますが、マイルストーンは設定せず、このまま開発者向けの情報提供のチケットとして使います。
本家が 2013.3 RC1 をリリースしたことを踏まえて、bitbucket に jp2013.3 ブランチを作りました。
https://bitbucket.org/nvdajp/nvdajp/branch/jp2013.3
作業記録:現状の rc に origin rc (本家 rc )をマージ、ここから分岐させて jp2013.3 ブランチを作り、さらに jpbranch をマージしました。
本家の master レポジトリで以下の git のサブモジュールを取り込む変更が行われました。
結果として Python, git, Windows SDK 以外の依存パッケージをすべて nvda のビルドシステムの中でインストールするようになる。
このビルドシステムの動作確認、および日本語版レポジトリへの反映は、2013.3jp リリース後に速やかに実施したいと思います。
以下、nvda-devel に投稿された報告です:
Hi developers, Please note that branch t525 has just been merged into master. This now means that all dependencies of NVDA (excluding Git, Python and the Windows SDK) are now included via git submodules. There is now no longer any need to download or install any dependencies other than the exclusions mentioned above. However, you must remember to tell git to fetch and checkout the submodules. For an existing master branch: * Firstly its probably a good idea to remove the existing include/espeak directory, as espeak is now included as a git submodule as well. * Ensure your master branch is up to date: git pull * Initialize, fetch and checkout all new submodules: git submodule update --init In future after doing git pull, you should do git submodule update to ensure you always have the most up to date submodule revision for the current branch revision. If cloning NVDA's git repository for the first time: add --recursive to the commandline to ensure you fetch and checkout all needed submodules. E.g. git clone --recursive <url>
本家 master ブランチを新しいビルドシステムでビルドできることを確認しました。
告知されていた通り、事前に include/espeak を削除しておかないと git submodule update --init に失敗します。
ひとつ注意事項としては scons.py が内部で実行されるときに、拡張子 .py が Python 処理系に関連付けされている必要があります。
Python 2.7 を普通にインストールしただけの環境なら問題はないはずですが、後からテキストエディタなどに関連付けした場合には、scons を実行したときにテキストエディタが開いてしまいます。
現在 nvdajpmiscdep が提供していて、削除しても新しいシステムでのビルドに支障がない(コマンドプロンプトおよびPowerShellで scons source user_docs launcher が失敗しない)フォルダ・ファイルは以下の通りです:
include/espeak/* include/AcrobatAccess/* include/ia2/* include/libMinHook/* source/brlapi.pyd source/configobj.py source/validate.py txt2tags.py installer/UAC.dll installer/waves/nvda_logo.wav tools/*
他にもあるかも知れませんが、現状で確認できたのは以上です。
下記のコミットで、本家の master (2014.1に向けたベータ版ブランチ)と jp2013.3 がマージされた新しい jpbranch になりました。
また nvdajpmiscdep から不要なファイルが削除されました。
nvdajp jpbranch 6451a9a nvdajpmiscdep master bc84053
念のために 7z 形式の miscdep アーカイブを下記に置きます。
https://dl.dropboxusercontent.com/u/62564469/nvdajp-miscdep-188-bc84053.7z
いままで nvdajp レポジトリと nvdajpmiscdep レポジトリを組み合わせて ビルドをするために、7z ファイルを作って展開しなおす、という手間をかけていましたが、 本家の miscDeps の仕組みをまねて、git のサブモジュールで取り込むようにしました。
後述の情報のとおり、サブモジュールのソースとしては bitbucket のレポジトリを参照しています。
nvdajp リポジトリの jptools サブディレクトリで setupMiscDepsJp.cmd を実行すると、 miscDepsJp サブモジュールの中身をコンパイル、mecab 辞書のコンパイル、 必要なファイルのコピー、テンポラリファイルの削除までを行います。
いままで使ったスクリプトを流用していて、無駄な部分が多いですが、 今後、整理していく予定です。
この変更を踏まえて、今後は miscdep レポジトリに mecab 辞書のバイナリを 入れるのをやめたいと思います。
また 7z ファイルの dropbox での共有も終了したいと思います。
引き続き、miscDepsJp の中で使っている OpenJTalk のソースを、 さらにサブモジュールとして分離することを検討しています。
To ssh://git@bitbucket.org/nvdajp/nvdajp.git ef32341..2a42237 jpbranch -> jpbranch [submodule "miscDepsJp"] path = miscDepsJp url = https://bitbucket.org/nvdajp/nvdajpmiscdep.git
Open JTalk 1.07 を NVDA 日本語版に取り込んで nvdajp のサブモジュールに統合する作業は 2014.1jp で完了しました。
チケット #30704 をご参照ください。
https://sourceforge.jp/ticket/browse.php?group_id=4221&tid=30704
現在は nvdajp リポジトリをチェックアウトして
git submodule update --init --recursive cd jptools setupMiscDepsJp.cmd
ですべての依存ファイルをダウンロード・ビルドできるはずです。
jptools に私が作業に使っているバッチファイルをいくつか追加して、 00memo.txt に手順やバッチファイルの説明を書くことにしました。
サブモジュールの取得: git submodule update --init --recursive スナップショットのビルド: 最上位のディレクトリで以下を実行 1) jptools\setup-vc2013.cmd 2) jptools\setupMiscDepsJp.cmd 3) jptools\build.cmd 日本語エンジン系を更新しない場合は 1) 2) は不要。
本家の next ブランチをもっと日頃から追っておかないと、日本語環境に影響を与えるような修正に気づきにくいので、日本語テスト版の方針を見直したいと思っています。
現状:
見直し案:
本家の liblouis submodule の参照先が master と next で違うので、 安直に本家リポジトリの next で git submodule update すると
fatal: reference is not a tree: 1e1e7587cfbc263b351644e52fdaf2684103d6c8 Unable to checkout '1e1e7587cfbc263b351644e52fdaf2684103d6c8' in submodule path 'include/liblouis'
のエラーがでる。
url = https://github.com/liblouis/liblouis.git
になっているかどうか確認すべき場所:
.gitmodules .git/config .git/modules/include/liblouis/config
うまくいかないので、スクラッチからやってみる:
> git clone git://git.nvaccess.org/nvda.git nvdaorigin > cd nvdaorigin > git checkout next
こうすると .gitmodules は下記のようになっている:
[submodule "include/liblouis"] path = include/liblouis url = https://github.com/liblouis/liblouis.git
これで下記のようにすると新しい liblouis リポジトリからサブモジュールが取得できる:
> git submodule update --init --recursive
liblouis のリポジトリが変更された経緯は #28958 参照。
本家チケット 4103 より liblouis 2.5.4 レポジトリに切り替えたときの操作:
1. git submodule sync 2. cd include\liblouis 3. git fetch -t 4. cd ..\.. 5. git submodule update
Upgrade to liblouis 2.5.4
http://community.nvda-project.org/ticket/4103
本家 master にマージされました。
本家の下記のようなページを作る必要がある:
http://community.nvda-project.org/wiki/AccessingAndRunningSourceCode
NVDA 日本語版( jpbeta ブランチ)のソースを github から取るには:
git clone --recursive -b jpbeta git@github.com:nvdajp/nvdajp.git
その先の説明は jptools\readme.txt
https://github.com/nvdajp/nvdajp/blob/jpbeta/jptools/readme.txt
特に問題も残っていないのでクローズします。
2013.2 以降のリリースに向けて本家の git ブランチ運用方針が変わったので、日本語版の開発方針を整理しなおしたいと思います。
本家の新しい方針:
http://community.nvda-project.org/wiki/ReleaseProcess
ここ何回かのリリースで翻訳チームの作業の足並みをそろえるのに苦労しており 2012.3.1, 2013.1.1 と修正が必要になったこと、2013.1 のリリースが大幅に遅れたことへの反省から、このような方針変更をしたものと思います。
日本語チームの作業:
追記(2015年3月7日)jpalpha ブランチからも日本語テスト版が作成されることを明確化しました。
追記(2014年6月10日)上記は6月3日のコメントに従って修正しました。修正前は以下の通りでした:
以下、チケットを立てた当時のコメント: