目次

nvdajp bazaar

2010-12-09 nvdajp の開発メモから bazaarlaunchpad.net の操作に関する情報をまとめました。

nvdajp_devinstaller

launchpad.net におけるブランチ一覧

コミットの英語

lp:~nvdajp の利用

since 2011-12-11

lp:~nvdajp はユーザーではなく nvdajp という名前のチームのリポジトリである。

nishimotz がいま作業している nvdajp プロジェクトは本家のリポジトリからブランチしている。

jpmain ブランチ

残念ながら lp:~nvdajp のデフォルトプロジェクト(mainブランチ)と本家 nvda プロジェクトのブランチの先祖が違うらしく、オーナー権限をいただいたもののうまく push できなかった。

そこで jpmain というブランチ名で push する。

作業するフォルダは lp:~nishimotz/nvdajp/main としてブランチされたフォルダ:

C:\work\nvda\jpmain>bzr push lp:~nvdajp/nvdajp/jpmain
Using default stacking branch /+branch-id/348625 at lp-81649488:///~nvdajp/nvdajp
Created new stacked branch referring to /+branch-id/348625.

この作業の結果 https://code.launchpad.net/~nvdajp/ には lp:~nvdajp/nvdajp/jpmain が表示されるようになった。

なお lp:~nvdajp/nvdajp/MiscellaneousDependencies は問題なく nishimotz のリポジトリから push できた。

2011-12-14 追記 lp:nvdajp が lp:~nvdajp/nvdajp/jpmain を指すように設定した。

2012-05-03 追記 lp:nvdajp を「NVDA 日本語チーム」の開発ブランチとして運用することにした。

以下は過去の記録

2011.2j に向けた作業

2011.1.1j に向けた作業

2010-06-21 自分のブランチを launchpad に作る

アルファリリースに向けた準備

http://bazaar.launchpad.net/~nvdajp/nvdajp/main/files

自分のブランチを作ってみる

$ bzr launchpad-login nishimotz
$ bzr branch lp:nvdajp
$ cd nvdajp/
$ bzr pull

$ bzr info
Standalone tree (format: 2a)
Location:
  branch root: .

Related branches:
    push branch: bzr+ssh://bazaar.launchpad.net/~nvdajp/nvdajp/main/
  parent branch: bzr+ssh://bazaar.launchpad.net/~nvdajp/nvdajp/main/

$ bzr push lp:~nishimotz/nvdajp/development

この状態で

を見ると

ができている。

$ cd ..
$ mkdir lp-nishimotz
$ cd lp-nishimotz
# うまく行かない例
$ bzr branch lp:~nishimotz:/nvdajp/development
bzr: ERROR: Invalid url supplied to transport: "lp:~nishimotz:/nvdajp/developmen
t": No such person or team: nishimotz%3A
# うまくいった例
$ bzr branch bzr+ssh://bazaar.launchpad.net/~nishimotz/nvdajp/development

やや時間がかかるが終了

$ ls
development

日本語IME対応の差分ファイルを取り込んで bzr add / bzr commit する。

$ bzr commit -m "Japanese Input Method Editor support"
Committing to: /cygdrive/c/work/nvdajp/lp-nishimotz/development/
modified source/TSF.py
modified source/core.py
modified source/keyboardHandler.py
added source/nvdajp_dic.py
added source/nvdajp_keyEvents.py
modified source/rcomplib.dll
modified source/config/__init__.py
Committed revision 3503.

$ bzr push lp:~nishimotz/nvdajp/development
Pushed up to revision 3503.

次から bzr push のデフォルトを変えたいときは

bzr push リポジトリ --remember

2010-06-21 nvdajpime レポジトリを作る

launchpad.net サイトでプロジェクトを作る。

ブランチを nvdajpime にする。プロジェクトは指定しないと +junk になるらしい。

https://code.launchpad.net/~nishimotz/+junk/nvdajpime

ローカルで bzr init / bzr add / bzr commit する。

# うまく行かない例
$ bzr push lp:~nishimotz/+junk/nvdajpime
bzr: ERROR: Target directory lp:~nishimotz/+junk/nvdajpime already exists, but d
oes not have a valid .bzr directory. Supply --use-existing-dir to push there any
way.
# うまくいった例
$ bzr push lp:~nishimotz/+junk/nvdajpime --use-existing-dir
Created new branch.

2010-10-10 2010.2 を取り込む bazaar 操作

2010.2 : Code : NVDA Japanese

MiscellaneousDependencies : Code : NVDA Japanese

C:\work\nvdajp\lp\devinstaller\nvda\nvda>bzr info
Standalone tree (format: 2a)
Location:
  branch root: .

Related branches:
    push branch: bzr+ssh://bazaar.launchpad.net/~nishimotz/nvdajp/with_jtalk/
  parent branch: http://bazaar.launchpad.net/~nvdajp/nvdajp/main/

C:\work\nvdajp\lp\devinstaller\nvda\nvda>bzr merge
Merging from remembered parent location http://bazaar.launchpad.net/~nvdajp/nvdajp/main/
Nothing to do.

C:\work\nvdajp\lp\devinstaller\nvda\nvda>bzr merge lp:nvdajp/2010.2

// omitted

Text conflict in source/config/__init__.py
Text conflict in source/gui/__init__.py
Text conflict in source/gui/settingsDialogs.py
Conflict adding file source/locale/ja/LC_MESSAGES/nvda.po.  Moved existing fileto source/locale/ja/LC_MESSAGES/nvda.po.moved.
Conflict adding file source/nvdajp_dic.py.  Moved existing file to source/nvdajp_dic.py.moved.
Conflict adding file source/nvdajp_ime.py.  Moved existing file to source/nvdajp_ime.py.moved.
Conflict adding file source/nvdajp_keyEvents.py.  Moved existing file to source/nvdajp_keyEvents.py.moved.
Conflict adding file source/synthDrivers/_jtalk.py.  Moved existing file to source/synthDrivers/_jtalk.py.moved.
Conflict adding file source/synthDrivers/jtalk.py.  Moved existing file to source/synthDrivers/jtalk.py.moved.
9 conflicts encountered.

いきなりやったら conflict した。。

もとのファイルは moved にリネームされた模様。

以下、nvdadepend の上流からの pull をする。jtalk の dll とバイナリデータはこちらに移っていることを確認できる。

C:\work\nvdajp\lp\devinstaller\nvda\nvdadepend>bzr info
Standalone tree (format: 2a)
Location:
  branch root: .

Related branches:
  parent branch: http://bazaar.launchpad.net/~nvdajp/nvdajp/MiscellaneousDependencies/

C:\work\nvdajp\lp\devinstaller\nvda\nvdadepend>bzr pull
Using saved parent location: http://bazaar.launchpad.net/~nvdajp/nvdajp/MiscellaneousDependencies/

Python を入れ直す

buildout はやりなおさない。

nvdajp/2010.2 をマージして python generate.py して python nvda.pyw できることを確認。

bzr conflicts で怒られるものを修正して bzr resolve FILENAME しておく。

>bzr commit -m "merge lp:nvdajp/2010.2"

>bzr info
Standalone tree (format: 2a)
Location:
  branch root: C:/work/nvdajp/lp/devinstaller/nvda/nvda

Related branches:
    push branch: bzr+ssh://bazaar.launchpad.net/~nishimotz/nvdajp/with_jtalk/
  parent branch: http://bazaar.launchpad.net/~nvdajp/nvdajp/main/
  submit branch: bzr+ssh://bazaar.launchpad.net/%2Bbranch/nvdajp/2010.2/

>bzr push
Using saved push location: bzr+ssh://bazaar.launchpad.net/~nishimotz/nvdajp/with_jtalk/
Pushed up to revision 3530.

2010-11-07 2010.2j を取り込む

https://code.launchpad.net/~nvdajp/nvdajp/2010.2

> cd C:\work\nvdajp\lp\devinstaller\nvda\nvda
> bzr merge lp:nvdajp/2010.2

衝突していると言われる。

conflicts:
  Text conflict in installer/nvda.nsi
  Text conflict in source/versionInfo.py

確認したところバージョン番号の文字列のみ。

手作業で新しい情報に直す。(「<<<<」「====」「>>>>」などの目印を頼りに)

<<<<<<< TREE
	もとのソースコード
=======
	マージされたソースコード
>>>>>>> MERGE-SOURCE

問題なければ衝突が解消したことを bzr に教えてあげるために bzr resolve コマンドを使う。

> bzr resolve installer\nvda.nsi
> bzr resolve source\versionInfo.py

bzr status すると pending merge がある。 bzr status -v するとたくさん出てくる。

念のため、やり直す。

> bzr revert
> bzr merge --pull lp:nvdajp/2010.2

同じだ。こういうものなのか。。

評判の良くなかった zjtalk.py を消す。

> cd C:\work\nvdajp\lp\devinstaller\nvda\nvda\source
> bzr rm synthDrivers\zjtalk.py
deleted source/synthDrivers/zjtalk.py

2010-11-07 miscdepを取りなおす

開発環境のメンテナンス。

C:\work\nvdajp\lp\devinstaller\nvda\nvda\source>python nvda.pyw
Can't read data file: 'synthDrivers/espeak-data\intonations'
Failed to load espeak-data

怒られていた。気づいたら本当に intonations というファイルがない。 devinstaller に頼れなくなったので自力で頑張る。

> cd C:\work\nvdajp\lp
> bzr branch lp:~nvdajp/nvdajp/MiscellaneousDependencies

C:\work\nvdajp\lp\MiscellaneousDependencies\source\synthDrivers

の中の espeak-data フォルダを

C:\work\nvdajp\lp\devinstaller\nvda\nvda\source\synthDrivers

に上書きする。

C:\work\nvdajp\lp\devinstaller\nvda\nvda\source>python nvda.pyw
Wrong version of espeak-data 0x14361 (expects 0x14400) at synthDrivers/espeak-data

起動するようになったが、espeak がエラーを出している。

追記 (2010-11-08) bzr pull したら

All changes applied successfully. Now on revision 19.

となり、espeak-data が新しくなった。エラーが出なくなった。

本家のbranchを作る

since 2010-12-27

目標:本家の更新を効率的に取り込みたい。

本家の "Shared Repository" AccessingAndRunningSourceCode に従ってみる:

cd c:\work
bzr init-repo nvda
cd nvda
bzr branch http://bzr.nvaccess.org/nvda/main

dir すると main がある。

cd c:\work\nvda\main
bzr pull

何も差分はないが、エラーにはならない。本家のリビジョンはこの時点で 3993 である。

nvdajp_jtalk という名前で、これの branch を作ってみる:

cd c:\work\nvda
bzr branch main nvdajp_jtalk

改めて launchpad のドキュメント を読んでみる。

ちなみに c:\work\nvda ディレクトリで bzr push しようとすると「ここはbranchじゃなくてrepositoryだから実行できない」と怒られる。

プロジェクト名を nvda にして、ブランチ nvdajp_jtalk を push してみよう:

C:\work\nvda\nvdajp_jtalk>bzr commit -m "silence driver works"
Committing to: C:/work/nvda/nvdajp_jtalk/
modified source/synthDrivers/silence.py
Committed revision 3994.

C:\work\nvda\nvdajp_jtalk>bzr push lp:~nishimotz/nvda/nvdajp_jtalk
Using default stacking branch /~nvda-core-dev/nvda/main at lp-70167504:///~nishimotz/nvda
Created new stacked branch referring to /~nvda-core-dev/nvda/main.

なんと ~nvda-core-dev/nvda/main と関連付けされてしまった。

https://code.launchpad.net/~nishimotz/nvda/nvdajp_jtalk

じゃあ調子にのって jtalk エンジン一式 add して push しよう:

http://bazaar.launchpad.net/~nishimotz/nvda/nvdajp_jtalk/revision/3995

できた。。

どうなってるのか念のため確認:

https://code.launchpad.net/~nvda-core-dev/nvda/main

bzr.nvaccess.org から自動的にミラーする設定らしい。自分が push したブランチの本家は bzr.nvaccess.org だったので関連付けがうまくいったのだろう。。

TODO: 本家のリビジョンが上がったときに、簡単にマージできるかどうか確認したい。

追記:miscdep っぽいものを作った:

追記:ブランチ名を変えました 2011-01-16

2010-12-29 nvdajp をマージしてみる

cd c:\work\nvda
bzr branch nvdajp_jtalk nvdajp_work
cd nvdajp_work
C:\work\nvda\nvdajp_work>bzr merge c:\work\nvdajp\with_jtalk\nvda
+N  readme_nvdajp.txt
+N  source/locale/ja/LC_MESSAGES/nvda.po
+N  source/locale/ja/LC_MESSAGES/nvda.po.moved
+N  source/nvdajp_dic.py
+N  source/nvdajp_dic.py.moved
+N  source/nvdajp_ime.py
+N  source/nvdajp_ime.py.moved
+N  source/nvdajp_keyEvents.py
+N  source/nvdajp_keyEvents.py.moved
+N  source/nvdajpime.dll
+N  source/synthDrivers/_jtalk_core.py
+N  source/synthDrivers/_nvdajp_eng_dic.py
+N  source/synthDrivers/_nvdajp_jtalk.py
+N  source/synthDrivers/jtalk/
+N  source/synthDrivers/jtalk/bep-eng.dic
+N  source/synthDrivers/jtalk/dic/
+N  source/synthDrivers/jtalk/dic/COPYING
+N  source/synthDrivers/jtalk/dic/char.bin
+N  source/synthDrivers/jtalk/dic/dicrc
+N  source/synthDrivers/jtalk/dic/left-id.def
+N  source/synthDrivers/jtalk/dic/matrix.bin
+N  source/synthDrivers/jtalk/dic/pos-id.def
+N  source/synthDrivers/jtalk/dic/rewrite.def
+N  source/synthDrivers/jtalk/dic/right-id.def
+N  source/synthDrivers/jtalk/dic/sys.dic
+N  source/synthDrivers/jtalk/dic/unk.dic
+N  source/synthDrivers/jtalk/eng_dic_maker.py
+N  source/synthDrivers/jtalk/libmecab.dll
+N  source/synthDrivers/jtalk/libopenjtalk.dll
+N  source/synthDrivers/jtalk/mecabrc
+N  source/synthDrivers/jtalk/mei_normal/
+N  source/synthDrivers/jtalk/mei_normal/COPYRIGHT.txt
+N  source/synthDrivers/jtalk/mei_normal/README.txt
+N  source/synthDrivers/jtalk/mei_normal/dur.pdf
+N  source/synthDrivers/jtalk/mei_normal/gv-lf0.pdf
+N  source/synthDrivers/jtalk/mei_normal/gv-mgc.pdf
+N  source/synthDrivers/jtalk/mei_normal/gv-switch.inf
+N  source/synthDrivers/jtalk/mei_normal/lf0.pdf
+N  source/synthDrivers/jtalk/mei_normal/lf0.win1
+N  source/synthDrivers/jtalk/mei_normal/lf0.win2
+N  source/synthDrivers/jtalk/mei_normal/lf0.win3
+N  source/synthDrivers/jtalk/mei_normal/lpf.pdf
+N  source/synthDrivers/jtalk/mei_normal/lpf.win1
+N  source/synthDrivers/jtalk/mei_normal/mgc.pdf
+N  source/synthDrivers/jtalk/mei_normal/mgc.win1
+N  source/synthDrivers/jtalk/mei_normal/mgc.win2
+N  source/synthDrivers/jtalk/mei_normal/mgc.win3
+N  source/synthDrivers/jtalk/mei_normal/pdr.pdf
+N  source/synthDrivers/jtalk/mei_normal/tree-dur.inf
+N  source/synthDrivers/jtalk/mei_normal/tree-gv-lf0.inf
+N  source/synthDrivers/jtalk/mei_normal/tree-gv-mgc.inf
+N  source/synthDrivers/jtalk/mei_normal/tree-lf0.inf
+N  source/synthDrivers/jtalk/mei_normal/tree-lpf.inf
+N  source/synthDrivers/jtalk/mei_normal/tree-mgc.inf
+N  source/synthDrivers/jtalk/mei_normal/tree-pdr.inf
+N  source/synthDrivers/jtalk/voice/
+N  source/synthDrivers/jtalk/voice/COPYING
+N  source/synthDrivers/jtalk/voice/INSTALL
+N  source/synthDrivers/jtalk/voice/README
+N  source/synthDrivers/jtalk/voice/dur.pdf
+N  source/synthDrivers/jtalk/voice/gv-lf0.pdf
+N  source/synthDrivers/jtalk/voice/gv-mgc.pdf
+N  source/synthDrivers/jtalk/voice/gv-switch.inf
+N  source/synthDrivers/jtalk/voice/lf0.pdf
+N  source/synthDrivers/jtalk/voice/lf0.win1
+N  source/synthDrivers/jtalk/voice/lf0.win2
+N  source/synthDrivers/jtalk/voice/lf0.win3
+N  source/synthDrivers/jtalk/voice/mgc.pdf
+N  source/synthDrivers/jtalk/voice/mgc.win1
+N  source/synthDrivers/jtalk/voice/mgc.win2
+N  source/synthDrivers/jtalk/voice/mgc.win3
+N  source/synthDrivers/jtalk/voice/tree-dur.inf
+N  source/synthDrivers/jtalk/voice/tree-gv-lf0.inf
+N  source/synthDrivers/jtalk/voice/tree-gv-mgc.inf
+N  source/synthDrivers/jtalk/voice/tree-lf0.inf
+N  source/synthDrivers/jtalk/voice/tree-mgc.inf
+N  source/synthDrivers/nvdajp_jtalk.py
+N  user_docs/ja/readme.txt
 M  installer/nvda.nsi
  * nvdaHelper/remote/inProcess.cpp
 M  source/IAccessibleHandler.py
 M  source/JABHandler.py
 M  source/api.py
 M  source/appModuleHandler.py
 M  source/aria.py
 M  source/baseObject.py
 M  source/characterSymbols.py
 M* source/config/__init__.py
 M* source/core.py
 M  source/cursorManager.py
 M  source/globalVars.py
 M  source/gui/__init__.py
 M  source/gui/settingsDialogs.py
 M  source/keyLabels.py
 M* source/keyboardHandler.py
-D  source/locale/ja/LC_MESSAGES/nvda.po
 M  source/mouseHandler.py
 M  source/nvda_service.py
 M  source/nvwave.py
 M  source/queueHandler.py
 M  source/sayAllHandler.py
 M  source/scriptHandler.py
 M  source/setup.py
 M  source/shellapi.py
 M  source/shlobj.py
 M  source/speech.py
 M  source/speechDictHandler.py
 M  source/speechViewer.py
 M  source/synthDriverHandler.py
R   source/synthDrivers/_jtalk_core.py => source/synthDrivers/_jtalk_core.py.moved
R   source/synthDrivers/_nvdajp_jtalk.py => source/synthDrivers/_nvdajp_jtalk.py.moved
R   source/synthDrivers/jtalk/ => source/synthDrivers/jtalk.moved/
R   source/synthDrivers/nvdajp_jtalk.py => source/synthDrivers/nvdajp_jtalk.py.moved
 M  source/tones.py
 M  source/ui.py
 M  source/versionInfo.py
 M  source/winConsoleHandler.py
 M  source/winInputHook.py
 M  source/winKernel.py
 M  source/winUser.py
Text conflict in installer/nvda.nsi
Text conflict in source/core.py
Text conflict in source/keyLabels.py
Text conflict in source/keyboardHandler.py
Text conflict in source/speech.py
Text conflict in source/synthDriverHandler.py
Conflict adding file source/synthDrivers/_jtalk_core.py.  Moved existing file to source/synthDrivers/_jtalk_core.py.moved.
Conflict adding file source/synthDrivers/_nvdajp_jtalk.py.  Moved existing file to source/synthDrivers/_nvdajp_jtalk.py.moved.
Conflict adding file source/synthDrivers/jtalk.  Moved existing file to source/synthDrivers/jtalk.moved.
Conflict adding file source/synthDrivers/nvdajp_jtalk.py.  Moved existing file to source/synthDrivers/nvdajp_jtalk.py.moved.
Text conflict in source/winConsoleHandler.py
11 conflicts encountered.

C:\work\nvda\nvdajp_work>

まあ衝突が起きるのはしょうがないので、一つずつ作業する。

installer/nvda.nsi から順番に、エディタで修正して、bzr resolve (ファイル名) する。

nvdajpの方を生かすかどうかは内容を見て判断。

例えば source/core.py は

<<<<<<< TREE
		log.error("Error cleaning up treeInterceptors",exc_info=True)
	log.debug("Terminating global plugin handler")
	globalPluginHandler.terminate()
=======
		log.error("Error cleaning up virtualBuffers",exc_info=True)
>>>>>>> MERGE-SOURCE

なので、これは TREE かなあ。などと。

bzr status すれば「あと何が衝突しているか」わかる。

nvdajpをブランチしてみる

since 2010-12-29

C:\work\nvda>bzr branch lp:nvdajp nvdajp_main

できた。

C:\work\nvda>cd nvdajp_main

C:\work\nvda\nvdajp_main>bzr info
Repository tree (format: 2a)
Location:
  shared repository: C:/work/nvda
  repository branch: .

Related branches:
  parent branch: bzr+ssh://bazaar.launchpad.net/%2Bbranch/nvdajp/

ちゃんと shared repo のメンバーとして扱われているらしい。

こっちはどうか: https://code.launchpad.net/~nvdajp/nvdajp/2010.2

C:\work\nvda>bzr branch lp:nvdajp/2010.2 nvdajp_2010_2

できた。

特定のリビジョンを呼び出すには?

C:\work\nvda>bzr branch lp:nvdajp/2010.2 nvdajp_2010_2_r3876 -r 3876
Branched 3876 revision(s).

launchpad.net のリポジトリ lp:~k-tsuzi/nvdajp/main を k_tsuzi というディレクトリ名を指定して取り出す:

C:\work\nvda>bzr branch lp:~k-tsuzi/nvdajp/main k_tsuzi

修正して自分のレポジトリに push する:

C:\work\nvda\k_tsuzi>bzr push lp:~nishimotz/nvdajp/main
Using default stacking branch /~nvdajp/nvdajp/main at lp-86694864:///~nishimotz/nvdajp
Created new stacked branch referring to /~nvdajp/nvdajp/main.

これを nvdajp_main というディレクトリでやるべきだったか。。

本家のmainをブランチしてnvdajpをマージする

since 2011-04-08

C:\work\nvda\releases_2011.1 にnvdajpのブランチがあるとする:

> cd C:\work\nvda
> bzr branch http://bzr.nvaccess.org/nvda/main nvaccess_main
Branched 4158 revision(s).

> cd nvaccess_main
> bzr merge ..\releases_2011.1

(omitted)
 M  installer/nvda.nsi
 M  nvdaHelper/archBuild_sconscript
 M  source/config/__init__.py
 M  source/core.py
 M  source/gui/__init__.py
 M  source/gui/settingsDialogs.py
 M  source/keyboardHandler.py
 M  source/locale/ja/LC_MESSAGES/nvda.po
 M  source/setup.py
 M  source/speech.py
 M  user_docs/ja/userGuide.t2t
All changes applied successfully.