Posts Tagged ‘Bazaar’

OS X Mountain Lion セットアップ日記 4 Bazaar激闘編

激闘なんかしたくなかった。

MacOSXDownloads – wiki.bazaar.canonical.com

最新の Stable、Snow Leopard (10.6 – Python 2.6) 2.5.0 をインストールしました。
Mountain Lion 用どころか Lion 用のインストーラーもないんだよね。

でも Bazaar Explorer を起動できたので大丈夫だと思っていた、まだ幸せだった、あの頃。

地獄変

盆休み明けにコードの編集始めようリポジトリを選択したら Bazaar Explorer がぶち落ちやがった。

$ bzr explorer
QKqueueFileSystemWatcherEngine::addPaths: open: Too many open files
QKqueueFileSystemWatcherEngine::addPaths: open: Too many open files
QKqueueFileSystemWatcherEngine::addPaths: open: Too many open files
QKqueueFileSystemWatcherEngine::addPaths: open: Too many open files
QKqueueFileSystemWatcherEngine::addPaths: open: Too many open files
QKqueueFileSystemWatcherEngine::addPaths: open: Too many open files
QKqueueFileSystemWatcherEngine::addPaths: open: Too many open files
QKqueueFileSystemWatcherEngine::addPaths: open: Too many open files
〜 250行位略 〜
QKqueueFileSystemWatcherEngine::addPaths: open: Too many open files
QEventDispatcherUNIXPrivate(): Unable to create thread pipe: Too many open files
QEventDispatcherUNIXPrivate(): Can not continue without a thread pipe
zsh: abort      bzr explorer

(´・ω・`)

いろいろ試してみるとターミナルから操作しても bzr-svn プラグインでエラーとなることが判明。

$ bzr log
〜 略 〜
revno: 14
committer: Junya Murabe 
branch nick: trunk
timestamp: Mon 2011-05-09 19:12:41 +0900
message:
  chkPassowordCharをapp_modelに移動。chkFilenameChar作成。
bzr: ERROR: exceptions.ImportError: Unable to load subvertpy extensions: dlopen(/Library/Python/2.6/site-packages/subvertpy/repos.so, 2): Symbol not found: _svn_fs__path_change2_create
  Referenced from: /usr/lib/libsvn_fs-1.0.dylib
  Expected in: /usr/local/lib/libsvn_fs_util-1.0.dylib
 in /usr/lib/libsvn_fs-1.0.dylib

Traceback (most recent call last):
  File "/Library/Python/2.6/site-packages/bzrlib/commands.py", line 930, in exception_to_return_code
    return the_callable(*args, **kwargs)
  File "/Library/Python/2.6/site-packages/bzrlib/commands.py", line 1141, in run_bzr
    ret = run(*run_argv)
  File "/Library/Python/2.6/site-packages/bzrlib/commands.py", line 673, in run_argv_aliases
    return self.run(**all_cmd_args)
  File "/Library/Python/2.6/site-packages/bzrlib/commands.py", line 697, in run
    return self._operation.run_simple(*args, **kwargs)
  File "/Library/Python/2.6/site-packages/bzrlib/cleanup.py", line 136, in run_simple
    self.cleanups, self.func, *args, **kwargs)
  File "/Library/Python/2.6/site-packages/bzrlib/cleanup.py", line 166, in _do_with_cleanups
    result = func(*args, **kwargs)
  File "/Library/Python/2.6/site-packages/bzrlib/commands.py", line 1158, in ignore_pipe
    result = func(*args, **kwargs)
  File "/Library/Python/2.6/site-packages/bzrlib/builtins.py", line 2895, in run
    Logger(b, rqst).show(lf)
  File "/Library/Python/2.6/site-packages/bzrlib/log.py", line 382, in show
    self._show_body(lf)
  File "/Library/Python/2.6/site-packages/bzrlib/log.py", line 412, in _show_body
    lf.log_revision(lr)
  File "/Library/Python/2.6/site-packages/bzrlib/log.py", line 1558, in log_revision
    lines.extend(self.custom_properties(revision.rev))
  File "/Library/Python/2.6/site-packages/bzrlib/log.py", line 1476, in custom_properties
    lines = self._foreign_info_properties(revision)
  File "/Library/Python/2.6/site-packages/bzrlib/log.py", line 1498, in _foreign_info_properties
    foreign.foreign_vcs_registry.parse_revision_id(rev.revision_id)
  File "/Library/Python/2.6/site-packages/bzrlib/foreign.py", line 185, in parse_revision_id
    foreign_vcs = self.get(revid.split("-")[0])
  File "/Library/Python/2.6/site-packages/bzrlib/registry.py", line 177, in get
    return self._dict[self._get_key_or_default(key)].get_obj()
  File "/Library/Python/2.6/site-packages/bzrlib/registry.py", line 74, in get_obj
    self._obj = get_named_object(self._module_name, self._member_name)
  File "/Library/Python/2.6/site-packages/bzrlib/pyutils.py", line 51, in get_named_object
    obj = __import__(module_name, {}, {}, from_list)
  File "/Library/Python/2.6/site-packages/bzrlib/plugins/svn/mapping.py", line 23, in 
    from subvertpy import properties
  File "/Library/Python/2.6/site-packages/subvertpy/__init__.py", line 130, in 
    raise ImportError("Unable to load subvertpy extensions: %s" % e)
ImportError: Unable to load subvertpy extensions: dlopen(/Library/Python/2.6/site-packages/subvertpy/repos.so, 2): Symbol not found: _svn_fs__path_change2_create
  Referenced from: /usr/lib/libsvn_fs-1.0.dylib
  Expected in: /usr/local/lib/libsvn_fs_util-1.0.dylib
 in /usr/lib/libsvn_fs-1.0.dylib

bzr 2.6b2 on python 2.6.7 (Darwin-12.0.0-x86_64-i386-64bit)
arguments: ['/usr/local/bin/bzr', 'log']
plugins: bash_completion[2.6b2], bzrtools[2.5.0], changelog_merge[2.6b2],
    colo[0.4.0], email[unknown], explorer[1.3.0], fastimport[0.14.0dev],
    git[0.6.8], keychain[0.1.0], launchpad[2.6b2], loom[2.2.0],
    netrc_credential_store[2.6b2], news_merge[2.6b2], pipeline[1.4.0],
    po_merge[2.6b2], qbzr[0.23.0], rewrite[0.6.3], svn[1.2.2], upload[1.1.0],
    weave_fmt[2.6b2], xmloutput[0.8.8]
encoding: 'utf-8', fsenc: 'utf-8', lang: 'ja_JP.UTF-8'

*** Bazaar has encountered an internal error.  This probably indicates a
    bug in Bazaar.  You can help us fix it by filing a bug report at
        https://bugs.launchpad.net/bzr/+filebug
    including this traceback and a description of the problem.

中央リポジトリは Subversion なので死活問題。

解決編

bzr-svn
先に解決したのは bzr-svn。こいつのエラーが原因で explorer も落ちてるのかも?と思っていたので(違ったのですが)先に対処しました。

エラーメッセージを読むと subvertpy でエラーが出ています。調べると Mercurial でも Mountain Lion で Subversion 連携が動作しなくなったとの情報などありました。

JavelinDev ブログ: Mountain Lionでpython関係のライブラリが動かなくなったのを復旧した手順

bzr-svn も subvertpy でエラーが起きているので入れなおすことにしました。インストールの邪魔になるので、まず、元のファイルをどかします。消すのは怖いので mv しました。

$ sudo mv /Library/Python/2.6/site-packages/subvertpy ~/
$ sudo mv /Library/Python/2.6/site-packages/subvertpy-0.8.10-py2.6.egg-info ~/

そしてインストール。

$ sudo easy_install-2.6 subvertpy

bzr-svn 復活!

$ bzr commit
Committing to: svn+http://###.###.###.###/##/#######
modified app/controllers/jobs_controller.php
/Library/Python/2.6/site-packages/bzrlib/plugins/svn/commit.py:252: DeprecationWarning: bzrlib.revisiontree.InventoryRevisionTree._get_inventory was deprecated in version 2.5.0.
  for child_name, child_ie in base_tree.inventory[file_id].children.iteritems():
/Library/Python/2.6/site-packages/bzrlib/plugins/svn/commit.py:703: DeprecationWarning: bzrlib.revisiontree.InventoryRevisionTree._get_inventory was deprecated in version 2.5.0.
  return self.old_tree.inventory[file_id]
/Library/Python/2.6/site-packages/bzrlib/plugins/svn/commit.py:685: DeprecationWarning: bzrlib.revisiontree.InventoryRevisionTree._get_inventory was deprecated in version 2.5.0.
  old_ie = self.old_tree.inventory[file_id]
/Library/Python/2.6/site-packages/bzrlib/plugins/svn/commit.py:303: DeprecationWarning: bzrlib.revisiontree.InventoryRevisionTree._get_inventory was deprecated in version 2.5.0.
  base_tree.inventory[child_ie.file_id].parent_id != child_ie.parent_id):
/Library/Python/2.6/site-packages/bzrlib/plugins/svn/commit.py:364: DeprecationWarning: bzrlib.revisiontree.InventoryRevisionTree._get_inventory was deprecated in version 2.5.0.
  base_tree.inventory[child_ie.file_id].parent_id != child_ie.parent_id):
Committed revision 83.

commit 時に非推奨ワーニング(DeprecationWarning)がでたりしてますが動作しているようです。

Bazaar Explorer
Bug #926439 “Can’t open project in GUI “Too many open files”” : Bugs : Bazaar Explorer

の #9 にあげてくださってる workaround-926439.patch で解決しました。

$ cd /Library/Python/2.6/site-packages/bzrlib/plugins/explorer
$ sudo patch -p0 -b < ~/Downloads/workaround-926439.patch

ここにたどり着くまで、長かった。

調べたりやってみたりしたけどたぶん無駄だったこと

プリインストールの Python が2.7系も入るようになったので(Lionから?)2.6系を使用している Bazaar が動かなくなるという不具合が過去に発生していたようです。コードを見たところこの不具合への対処は入っていました。

Bazaar Explorer が落ちる件、ダウンロードページに「 QT をバージョンアップしてみなよ」とか書いてあるので QT の再インストールを何通りかの方法でやってみましたが症状は変わりませんでした。結果的に Homebrew で入れた QT を使用している状態ですが今回のエラー対処には影響していないとおもいます(たぶん)。

こんな状態だと Bazaar 、オススメできないなぁ。

Facebooktwitterlinkedintumblrmail

BootCampでインストールしたWindowsをVMware Fusionで動かしてたら気をつけよう

BootCampでインストールしたWindowsをVMwareで動かしてるときにBootCampのアップデートするのはやめよう。

普通はやらないとは思う。

ところがやっちゃったんだ。 ウッカリ

どうなったか。

  • もともと不安定になっていたせいもあってか動作させてるMakBookがハングアップ。
  • 仕方がなく電源を強制断。
  • 祈りながら再起動。かなり待たされたがOSX起動。ホッ。
  • BootCampに切り替えて起動。無理。
  • セーフモードで再起動。Explorer落ちる。デバッガも落ちる。冷汗。
  • 再起動。Windows正常起動。セーフモード偉大。
  • BootCampアップデート。
  • Windowsでの作業があったのでバージョン管理ソフトのUI、Bazaar Explorerを起動、できない!うぁ
  • アンインストール後再インストールを繰り返すも回復せず。
  • AppData¥Roaming¥bazaarを削除して再インストール。Bazaar Explorer起動!作業中に電源落とされたのが原因?
  • BootCampで使うWindowsでのキーバインドがおかしい。KbdAppleがキーボードをみつけられなくなってるっぽい。
  • KbdAppleの再インストールで回復。

という目にあって午前がまるっと潰れた。

あと経験上、BootCampのWindowsをVMware上で動かしているときはWindows Updateするのもやめたほうが良い。

これもわかってるのに何度もウッカリやってしまってたりする。私の環境だと結構な確率で正常起動しなくなる。これもBootCampでセーフモードで起動すると直る事が多い。

いろいろと積み上がってきて精神的に追われてるんだけど、トラブルで時間とられてたら逆に落ち着いてきたので書いてみた。

Facebooktwitterlinkedintumblrmail

ぼっちBazaar

5/21(土)、『NAGASAKI-IT hands-on Spring 2011』に参加して、ライトニングトークしてきました。

弊社の吉田くんが

「ひとりぎっと 〜ひとりで使うバージョン管理システム導入編〜」

というGitのハンズオンをやるとのことだったので、それにからめて

「ぼっちBazaar 〜ぼっちを感じるバージョン管理〜」

というわけです。

今回、HTML Slidyでスライドを作りましたのでそのまま貼り付けます(slideクラスのdivには枠を付けました)。

目論見としてはスライド自体をBazaarでバージョン管理して編集しながら実演するつもりだったのですが、残念!

時間がたりませんでした(5分枠で何しようとしてるんだという意見多数)。

ぼっちBazaar

〜 ぼっちを感じるバージョン管理 〜

村部淳也(@murave)

3大分散バージョン管理システムといえば


  • Git
  • Mercurial(hg)
  • Bazaar(bzr)

 

異論はありますまい。

ぼっち


数年前からBazaarを使っていますが

他に使ってる人に会ったことがない。

 

何故だろう。

選択理由


  • 日本語ファイル名に強い(Subversion程度には)
    • 日本語ディレクトリで変な動きをしたりはします。残念ながら。
  • Bazaar Explorer の存在

弱点


ともかく日本語の情報が少なかった

 

ドキュメントは日本語化されてるんですがね

弱点解消


しかし、今年になって

「Bazaarでござ~る。猿でもできる分散バージョン管理“超”入門」

というすばらしい記事が!

さぁ「Bazaarでござ〜る」で検索!

エテ公め!


と言いたい所だけど某社のサルの方が上にでてくるのだった。

 

弱えぇ orz

 

「Bazaarでござ〜る バージョン管理」とでも検索してください

最後に、一言


ぼっちになりたくなければGitを使っとくといいと思います。

 

以上。

時間まで適当に実演


Bazaar Explorer 最高

Bazaar Explorer を使うのがお勧め(当然、コマンドラインでも使えますが)。

  • Mac や Linux ならターミナルから起動 
    • bzr explorer
  • Windowsならメニューやアイコンから起動

    管理の基本

    • 共有リポジトリ作成 init-repo (必須ではありません) 
      • 複数のブランチで効率的にディスクを利用させるためのディレクトリを共有リポジトリという。
    • ディレクトリのブランチ化 init 
      • 管理の基本となるディレクトリをブランチという。
    • ブランチ作成 branch
    • 他のブランチを取得 pull (merge) 
      • 他のブランチの変更を取得する場合も使用します。
      • 作業後に他のブランチの変更を取得する場合はmergeを使用する。
    • 作業ブランチに反映 commit
    • 他のブランチに反映 push

      独特(?)なしくみ

      • チェックアウト(バインド・ブランチ) 
        • 他のブランチ(以降、親と呼びます)にバインドされたブランチをチェックアウトという(たぶん)。
        • コミット(commit)すると親にも反映されたり。
        • さらにSubversionっぽくなる感じ。
           

          おわり

      Facebooktwitterlinkedintumblrmail