Bazaarでcommit --amend

Bazaar Advent Calendar用に書きかけてて、結局出番のなかった「プラグインを作ってみる」というネタがあって、仕上げてアップしようかと思っていたら、ちょうど@hikaruworldさんのブログに同じテーマのエントリが掲載されました。

僕が書こうと思っていたこともほぼ網羅されているので、プラグインの作り方について特に書くことはなくなったんですが、せっかくなので説明用のサンプルとして作ったプラグインをさらしておきます。

続きを読む

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の流儀です。

かゆ うま

*1:Gitでいうところのmaster、Mercurialでいうところのdefault、BazaarではSVN時代の慣習に従ってtrunkと名付けることが多いようです

tiplogプラグインを使ってみる

Gitには、reflogというコマンドがあって、ブランチのHEADがどのように移動してきたかを確認することができます。rebaseに失敗したときとか、間違えてresetしすぎちゃったときとかに復元するのに、とても便利(だそう)です。

Bazaarにはそういうの無いの?と思ったら、bzr-tiplogプラグインというプラグインがありました。

続きを読む

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のどちらかが必要です。

Pythonパッケージ

ビルド

  1. Bazaar project files : Bazaarから、ソースをダウンロードして展開します。
  2. 展開したフォルダ上で、以下のコマンドを実行します。
    $ make
    $ python setup.py build
  3. ビルドが成功したら、以下のコマンドでインストールします。
    $ python setup.py install

プラグインの配置

  1. プラグイン配置用のフォルダを適当な場所に作成します。
  2. BZR_PLUGIN_PATHという環境変数を定義して、そこに今作ったフォルダのパスを指定します。
  3. Launchpadなどから必要なプラグインをダウンロードして、そのフォルダに配置します。
(おまけ)bzr-svnプラグインとsubvertpyについて

bzr-svnプラグインを使いたい場合は、subvertpyというPythonパッケージをまずインストールしないといけないのですが、これが面倒なのでやり方をまとめておきます。

  1. python svn bindingのインストール
  2. Subversion-devの配置
  3. subvertpyのビルド
    • これで、subvertpyがビルドできるようになりました。この状態で、以下のコマンドを実行します。
      $ easy_install subvertpy