bzr log -r date:tomorrow..
Bazaar Advent Calendar最終日は、Bazaarの今後について、いくつかのキーワードとともに話をしようと思います。
最後までネタがアレでごめんなさい。
PythonベースインストールしたBazaarでTortoiseBzrを動かす。
Windowsの場合、スタンドアロンexeとして動作するBazaarか、Python.exeスクリプトとして動作するBazaarかのどちらを選択できます。
手軽なのはスタンドアロンexeの方で、インストーラを実行するだけで基本的な機能と主要なプラグイン、GUIクライアントなど一通り使えるようになります。
それとくらべるとPythonスクリプト版の方は色々と面倒はありますが、別のプログラムからBazaarのPython APIを利用できたり、Apache上でBazaarのサーバをホストできるようになるなど、色々とメリットもあります。
※Pythonスクリプト版のBazaarを動作させるための手順は、 WindowsでBazaarをビルドするためのメモ - wonderful_pandaの日記 にまとめてあります。
ただ、Pythonスクリプト版の場合、TortoiseBzrがそのままでは動作しません。これを動くようにするためにいくつかのステップがあるので、それを説明します。
続きを読むブランチのメインラインのイメージについてしゃらくさい話をするよ
まじめな説明
Bazaarのブランチの履歴には、メインラインという概念があります。
絵で見たほうが早いですね。これが、trunkのメインラインです。
つまり、他所のブランチで発生した細かな履歴を隠して、「そのブランチで真に注目すべき履歴の流れ」だけを取り出したのが、そのブランチの「メインライン」な訳です。
しゃらくさい説明
trunkブランチ*1は、そのプロジェクトの「正史」であり、そのメインラインは「年表」です。
そこでは、個々人の暮らしがどうだったかというような細かい情報は見えません。
逆に、trunk以外のフィーチャブランチなんかは、個々人にフォーカスしたものだと考えることができます。「オレ」ブランチでは「子供ができた」とか「転職した」がメインラインの履歴で、「総理が代わった」とか「Jobsが成仏」とか「談志が死んだ」とかはメインではない履歴ってかんじ。
まとめ
個々のブランチは比較的担当者の好き勝手なコミットを許す一方で、trunkのメインラインはプロジェクトの歴史を一目で把握できるようなきれいな年表にすることを強く意識するのが、Bazaarの流儀です。
かゆ うま
WindowsでBazaarをビルドするためのメモ
WindowsでBazaarを使うためには、スタンドアロンインストーラを使えばいいんですが、Python Baseでインストールしておくと、PythonスクリプトからBazaarのAPIを叩けたりして何かと便利です。
Python Basedインストーラも配布されているんですが、せっかくなので、何かと面倒なWindowsでのビルド手順をまとめておきます。
Linuxの場合はPackage管理システムに任せておけば良しなにしてくれるのでいいですね。
必要なもの
以下のモジュールをインストールします。
※Python Basedインストーラを使う場合は、コンパイラは必要ありませんが、その他のものは同じようにインストールしておく必要があります。
Python関連
インタプリタは、2.6.xか2.7.xをインストールします。 Download Python | Python.org
コンパイラ
コンパイラとして、Visual Studio 2008か、MinGWのどちらかが必要です。
- Visual Studio
- Express Edition(フリーのもの)で構わないので、ここ(http://www.microsoft.com/japan/msdn/vstudio/2008/product/express/)からVisual Studio 2008 C++ Expressをダウンロードしてインストールします。
- Visual Studioを使う場合、さらにGNU MakeとGNU Gettextも必要になります。GnuWin32(GnuWin32 Packages)からダウンロードしてインストールするか、MinGW/MSYSをインストールします。
- MinGW
- ここ(MinGW - Minimalist GNU for Windows - Browse Files at SourceForge.net)から、mingw-get-inst-xxxxxxxx.exeをダウンロードしてインストールします。インストール時にMSYS Base Systemも選択しておきます。
- MinGWを使う場合、そのままではPythonパッケージのビルドに失敗するので、以下のように環境を修正します。
Pythonパッケージ
- distribute
- distribute · PyPI からソースをダウンロードして展開し、そのフォルダで以下のコマンドを実行します。
$ python setup.py install
- distribute · PyPI からソースをダウンロードして展開し、そのフォルダで以下のコマンドを実行します。
- pycurl
- 公式ではPython2.5までしかバイナリが配布されていないので、自分でビルドする必要があります。
非公式のものでよければ、ここ(Python Extension Packages for Windows - Christoph Gohlke)でインストーラが配布されています。
- 公式ではPython2.5までしかバイナリが配布されていないので、自分でビルドする必要があります。
- win32 extension
- ここ(Python for Windows Extensions - Browse /pywin32/Build216 at SourceForge.net)からインストーラをダウンロードしてインストールします。
- pyqt4 (qbzr、bzr explorerを使う場合)
- ここ(Riverbank | Software | PyQt | PyQt4 Download)からインストーラをダウンロードしてインストールします。
- pycrypto、paramiko、cython、pyrex、docutils
- 以下のコマンドを実行します。
$ easy_install pycrypto
$ easy_install paramiko
$ easy_install cython
$ easy_install pyrex
$ easy_install docutils
- 以下のコマンドを実行します。
ビルド
- Bazaar project files : Bazaarから、ソースをダウンロードして展開します。
- 展開したフォルダ上で、以下のコマンドを実行します。
$ make
$ python setup.py build - ビルドが成功したら、以下のコマンドでインストールします。
$ python setup.py install
プラグインの配置
- プラグイン配置用のフォルダを適当な場所に作成します。
- BZR_PLUGIN_PATHという環境変数を定義して、そこに今作ったフォルダのパスを指定します。
- Launchpadなどから必要なプラグインをダウンロードして、そのフォルダに配置します。
(おまけ)bzr-svnプラグインとsubvertpyについて
bzr-svnプラグインを使いたい場合は、subvertpyというPythonパッケージをまずインストールしないといけないのですが、これが面倒なのでやり方をまとめておきます。
- python svn bindingのインストール
- Python2.6の場合は、ここ(http://sourceforge.net/projects/win32svn/files/1.6.17/svn-win32-1.6.17_py.zip)からダウンロードしてインストールできます。
- Python2.7の場合、公式なバイナリは無いので、ここ(http://trac.edgewall.org/attachment/wiki/TracSubversion/svn-win32-1.6.15_py_2.7.zip)からダウンロードして解凍し、svnとlibsvnを$PYTHON_HOME/lib/site-packagesに放り込んでください。
- Subversion-devの配置
- http://sourceforge.net/projects/win32svn/files/1.6.17/svn-win32-1.6.17_dev.zip をダウンロードして解凍し、そのパスをSVN_DEV環境変数に設定します。
- http://subversion.tigris.org/files/documents/15/32472/db-4.4.20-win32.zip をダウンロードして解凍し、そのパスをSVN_BDB環境変数に設定します。
- http://subversion.tigris.org/files/documents/15/20739/svn-win32-libintl.zip をダウンロードして解凍し、そのパスをSVN_LIBINTL環境変数に設定します。
- subvertpyのビルド
- これで、subvertpyがビルドできるようになりました。この状態で、以下のコマンドを実行します。
$ easy_install subvertpy
- これで、subvertpyがビルドできるようになりました。この状態で、以下のコマンドを実行します。