Ticket #31635

日本語チームの git ブランチ運用

Open Date: 2013-07-01 00:01 Last Update: 2017-08-06 20:17

Reporter: nishimoto Owner: nishimoto
Type: Support Request Status: Closed
Component: 運営 MileStone: (None)
Priority: 6 Severity: 6
Resolution: Fixed

Details

2013.2 以降のリリースに向けて本家の git ブランチ運用方針が変わったので、日本語版の開発方針を整理しなおしたいと思います。

本家の新しい方針:

  • 新機能の開発はトピックブランチで作業される
  • 開発された機能は next という名前のブランチにマージされ、next という名前のスナップショットで公開される
  • next スナップショットで2週間以上テストされた機能は master ブランチにマージされる。master は常にベータ版の位置づけ。
  • どうやら master が next をマージするのではなく、トピックブランチを next と master がそれぞれマージする、という運用らしい
  • 翻訳は master を対象に行う。リリース3週間前から1週間前までの2週間を「ストリング・フリーズ」として、この期間に master が翻訳完了となるように作業される。
  • ストリング・フリーズが終わったら、リリース1週間前にリリース候補 (RC) ブランチができる。すぐにリリース候補を公開。リリース候補ブランチにはバグ修正以外はコミットしない。最低でも1週間、問題がないことを確認して、正式版をリリースする。

http://community.nvda-project.org/wiki/ReleaseProcess

ここ何回かのリリースで翻訳チームの作業の足並みをそろえるのに苦労しており 2012.3.1, 2013.1.1 と修正が必要になったこと、2013.1 のリリースが大幅に遅れたことへの反省から、このような方針変更をしたものと思います。

日本語チームの作業:

  • 本家 master および next ブランチの日本語版が常にビルドできるようにする。
  • 本家 master を日本語化した jpbeta ブランチを保守して、ここから「日本語公開ベータ版」を作成する。またこのブランチを分岐させて「日本語リリース版」を作成する。
  • 本家 next を日本語化した jpalpha ブランチを、必要に応じて更新する。
  • jpbeta または jpalpha から「日本語テスト版」を作成する。
  • 日本語版のための個別の変更は本家 master または jpbeta から分岐したトピックブランチで作業して、必要に応じて jpalpha や jpbeta にマージする。
  • jptools/00memo.txt に日本語でサブモジュールの更新とビルドの手順を書いています。

追記(2015年3月7日)jpalpha ブランチからも日本語テスト版が作成されることを明確化しました。

追記(2014年6月10日)上記は6月3日のコメントに従って修正しました。修正前は以下の通りでした:

  • master ブランチの日本語版が常にビルドできるようにする。具体的には master を日本語化した jpbranch という名前のブランチを保守する。必要に応じて、日本語版の開発スナップショットを作る。(ブランチ名に branch という文字を入れるのは、git ではタグとブランチの名前が区別しにくいため)
  • next ブランチは情報収集だけにして、日本語版を作ることはしない。
  • ストリング・フリーズが始まったら、終わるまで本家の翻訳をする。
  • 本家がリリース候補ブランチを切ったら、日本語版のリリース候補ブランチを作り、日本語版の準備を開始する。

以下、チケットを立てた当時のコメント:

  • 本家の記事によると次のリリース目標日として8月15日が挙がっていますが、目標通りにリリースされるかどうかはわかりません。
  • いずれにせよ NVDA 日本語チームの8月17日のイベント予定を考慮すると、本家が予定通りのリリースをしたとしても日本語チームは8月末から9月最初くらいをリリース目標にしておくのが妥当と思います。

Attachment File List

No attachments

Ticket History (3/21 Histories)

2013-07-01 00:01 Updated by: nishimoto
  • New Ticket "2013.2 以降の nvdajp ブランチ運用とリリース計画" created
2013-08-15 15:18 Updated by: nishimoto
Comment

本家がほぼ予告通り、今日 2013.2 のリリース候補1を発表しました。

本家のリポジトリにはリリース候補を意味するらしい rc というブランチができています。

リリースごとにブランチを作るのではないようです。

日本語チームのリポジトリには release-2013.2jp ブランチを作り、本家 rc をマージしました。

各国語の翻訳状況は下記のとおりですが、日本語の翻訳は追いついています。

http://community.nvda-project.org/wiki/Translate

2013-09-18 23:43 Updated by: nishimoto
Comment

本家の next ブランチと同じような考え方で、jpnext ブランチを作ることにしました。

今後は下記のように運用したいと思います。

jpbranch: master ブランチ+日本語化(安定版):日本語ベータ版(リリース版の準備)のためのブランチ

jpnext: master ブランチ+日本語化(実験版):日本語テスト版のためのブランチ

原則として jpnext にはフィーチャーブランチからのマージを行い、jpbranch には元のフィーチャーブランチからマージしなおす。jpnext からどこかにマージしてはいけない。

本家の規則に合わせて、リリースブランチにつける release-2013.3jp のような名前は今後はタグの名前にして、リリースブランチにはもっと短い名前をつけることを検討中です。

また、jpnext ブランチはいまのところ bitbucket だけに置いています。

2013-09-20 14:15 Updated by: nishimoto
Comment

jpnext ブランチからのテスト版の扱いについて、もう少しルールを整理してみます。

  • jpnext に盛り込む新機能や変更は、チケット単位で採用・不採用を判断する
  • テスト版による評価は、本家版のストリングフリーズ(本家リリースの約3週間前)で終了し、日本語版に採用するか不採用とするかをその時点で決める
  • 本家版のストリングフリーズ以降は、日本語版ではバグ修正やテキスト解析の改良だけを行い、そのほかの独自の新機能や変更を行わない
2013-10-15 08:38 Updated by: nishimoto
Comment

本件に関連して、2013.3jp の作業の大まかな順序は以下の通りです。

本家がリリース準備に入る11月1日ごろ、日本語版独自の改良の締め切り(その時点で未完成の作業は 2014.1jp に先送り)を行う。

11月1日以降は最終リリース(本家版は11月22日ごろ、日本語版は1週間から2週間後)まで、JTalk および日本語点訳のテキスト解析辞書の改良(影響の範囲が限定されるのでリリース直前までチューニングがしやすい)と、そのほかの調整を行う。

2013-10-29 18:13 Updated by: nishimoto
  • Severity Update from 5 - Medium to 6
  • Priority Update from 5 - Medium to 6
  • Summary Updated
Comment

いままで jpnext で行った作業を jpbranch にマージしました。

今後の 2013.3jp の開発は jpbranch で行います。

本家が rc ブランチを作ったら以下のように作業する予定です。

  • 本家 rc をブランチして jp2013.3 ブランチを作る
  • jp2013.3 ブランチに jpbranch をマージする
  • jp2013.3 で日本語版の開発を行いながら、もし本家 rc が更新されたら本家 rc からマージする
  • release-2013.3jp はブランチの名前ではなく jp2013.3 におけるタグの名前として使う

このチケットの概要を「2013.2 以降の nvdajp ブランチ運用とリリース計画」から「日本語チームの git ブランチ運用」に変更して、探しやすいように優先度・重要度を高くしますが、マイルストーンは設定せず、このまま開発者向けの情報提供のチケットとして使います。

2013-11-16 12:26 Updated by: nishimoto
Comment

本家が 2013.3 RC1 をリリースしたことを踏まえて、bitbucket に jp2013.3 ブランチを作りました。

https://bitbucket.org/nvdajp/nvdajp/branch/jp2013.3

作業記録:現状の rc に origin rc (本家 rc )をマージ、ここから分岐させて jp2013.3 ブランチを作り、さらに jpbranch をマージしました。

2013-12-13 07:09 Updated by: nishimoto
Comment

本家の 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>
2013-12-16 15:22 Updated by: nishimoto
Comment

本家 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/*

他にもあるかも知れませんが、現状で確認できたのは以上です。

2013-12-18 18:12 Updated by: nishimoto
Comment

下記のコミットで、本家の 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

2013-12-23 12:00 Updated by: nishimoto
Comment

いままで 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
2014-01-28 16:39 Updated by: nishimoto
Comment

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

ですべての依存ファイルをダウンロード・ビルドできるはずです。

2014-02-07 20:40 Updated by: nishimoto
  • Owner Update from (None) to nishimoto
  • Resolution Update from None to Remind
  • Component Update from (None) to 運営
2014-04-28 17:46 Updated by: nishimoto
Comment

jptools に私が作業に使っているバッチファイルをいくつか追加して、 00memo.txt に手順やバッチファイルの説明を書くことにしました。

サブモジュールの取得:

git submodule update --init --recursive

スナップショットのビルド:

最上位のディレクトリで以下を実行

1) jptools\setup-vc2013.cmd
2) jptools\setupMiscDepsJp.cmd
3) jptools\build.cmd

日本語エンジン系を更新しない場合は 1) 2) は不要。
2014-06-03 13:48 Updated by: nishimoto
Comment

本家の next ブランチをもっと日頃から追っておかないと、日本語環境に影響を与えるような修正に気づきにくいので、日本語テスト版の方針を見直したいと思っています。

現状:

  • master ブランチの日本語版が常にビルドできるようにする。具体的には master を日本語化した jpbranch という名前のブランチを保守する。必要に応じて、日本語版の開発スナップショットを作る。(ブランチ名に branch という文字を入れるのは、git ではタグとブランチの名前が区別しにくいため)
  • next ブランチは情報収集だけにして、日本語版を作ることはしない。

見直し案:

  • 本家 master および next ブランチの日本語版が常にビルドできるようにする。
  • 本家 master を日本語化した jpbeta ブランチを保守して、ここから「日本語(公開)ベータ版」を作成する。またこのブランチを分岐させて「日本語リリース版」を作成する。
  • 本家 next を日本語化した jpalpha ブランチを保守して、ここから「日本語テスト版」を作成する。
  • 日本語版のための個別の変更は本家 master または jpbeta から分岐したトピックブランチで作業して、必要に応じて jpalpha や jpbeta にマージする。
2014-06-03 15:05 Updated by: nishimoto
Comment

本家の 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 参照。

2014-06-10 16:53 Updated by: nishimoto
  • Details Updated
2014-06-10 22:02 Updated by: nishimoto
Comment

本家チケット 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 にマージされました。

2015-03-07 15:01 Updated by: nishimoto
  • Details Updated
2015-07-03 11:59 Updated by: nishimoto
Comment

本家の下記のようなページを作る必要がある:

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

2017-08-06 20:17 Updated by: nishimoto
  • Ticket Close date is changed to 2017-08-06 20:17
  • Status Update from Open to Closed
  • Resolution Update from Remind to Fixed
Comment

特に問題も残っていないのでクローズします。

Edit

Please login to add comment to this ticket » Login