ラベル Bazaar の投稿を表示しています。 すべての投稿を表示
ラベル Bazaar の投稿を表示しています。 すべての投稿を表示

2010-03-27

Emacs のバージョン管理が CVS から bzr へと変更

ついに Emacs が、バージョン管理ツールを従来の CVS から分散型のバージョン管理システムへと変更した。数ある分散型バージョン管理システムの中から選ばれたのは Bazaar (コマンド名は bzr)。バージョン管理システムの変更は 2009 年末に行なわれたらしい。

Bzr のバージョンを確認する

Emacs の最新ソースを取得するには、bzr のバージョンが 2.0 以上である必要がある。

$ bzr --version
Bazaar (bzr) 2.0.2
  Python interpreter: /usr/bin/python 2.6.4
  Python standard library: /usr/lib/python2.6
  Platform: Linux-2.6.31-20-generic-i686-with-Ubuntu-9.10-karmic
  bzrlib: /usr/lib/python2.6/dist-packages/bzrlib
  Bazaar configuration: /home/masayuki/.bazaar
  Bazaar log file: /home/masayuki/.bzr.log

Copyright 2005, 2006, 2007, 2008, 2009 Canonical Ltd.
http://bazaar-vcs.org/

bzr comes with ABSOLUTELY NO WARRANTY.  bzr is free software, and
you may use, modify and redistribute it under the terms of the GNU
General Public License version 2 or later.

bzr のバージョンが 2.0 以降であることを確認したら、Emacs のソースコードを取得してみませう。

ソースコードの取得

bzr では、最初にソースコードを取得する時は branch コマンドを使う。

$ mkdir ~/project/
$ cd ~/project
$ bzr branch --stacked http://bzr.savannah.gnu.org/r/emacs/trunk emacs-bzr

ソースコードを最新にする時は pull コマンドを使う

$ cd ~/project/emacs-bzr
$ bzr pull

これで最新のソースコードが取得できる。コンパイル作業の詳細は、中にある INSTALL.BZR を読まれたし。

ref

Bazaar を使った Emacs の開発については、詳しい Wiki があるので、時間のある方はそちらも参照されたし。

よければ過去記事もどうぞ。

あとがき -- git と比べて

bzr は、git に比べるとスピードに難があった (少くとも 2 年前は)。そのかわり、git よりも手軽で使い易いインターフェースが魅力的。小さなプロジェクトを作る時は、ぼくもずっと bzr を使っていた時期がある。

最近は、(ようやく) 複雑な git のコマンドを覚えてきたので git 一本になってしまったけれど、bzr は初心者にも優しくそれでいて使い易い、とても良い分散型バージョン管理システムだと思う。

ぼくが一番 bzr を使っていたのはバージョンが 1.0 になる前だったけど、気が付けば 2.1.0 が出ている。これを機会にちょっと勉強し直してみやうかしらん。

2007-12-27

Bazaar でメール・アドレスを設定する

バージョン管理システム Bazaar で、commit 時につくユーザー名 (+ メール・アドレス) の設定方法が変わったのでメモ。

設定ファイルは

  • ~/.bazaar/bazaar.conf

ここに、次のやうに書く。

[DEFAULT]
email=Masayuki Ataka  <foo.bar@hogehoge.com>

設定が上手くいったかどうか確かめるには、bazaar 管理下のディレクトリーで次のコマンドを打つ。

$ bzr whoami
Masayuki Ataka  <foo.bar@hogehoge.com>

設定した名前が表示されれば OK。

ちなみに、email の設定方法は bzr コマンドを使って得られる。このエントリーも、そのヘルプを見て書いた。せっかくなので、全文引用しませう。

$ bzr help files
Files

On Linux:   ~/.bazaar/bazaar.conf
On Windows: C:\\Documents and Settings\\username\\Application Data\\bazaar\\2.0\\bazaar.conf

Contains the user's default configuration. The section ``[DEFAULT]`` is
used to define general configuration that will be applied everywhere.
The section ``[ALIASES]`` can be used to create command aliases for
commonly used options.

A typical config file might look something like:

  [DEFAULT]
  email=John Doe <jdoe@isp.com>

  [ALIASES]
  commit = commit --strict
  log10 = log --short -r -10..-1

ref

2007-02-07

Bazaar 0.14 のインストール & Bazaar 小史

分散型バージョン管理システム Bazaar の最新版 0.14 をインストールした。インストール・メモを書いておく。

インストール・メモ

ダウンロードは、こちらから。最新 0.14 を入手。

展開したら、root になって、python 2.4 でインストール・スクリプトを実行。それだけ。

$ tar xzvf ~/download/bzr-0.14.tar.gz
$ cd bzr-0.14
# python2.4 setup.py install

Bazaar-NG 0.8 系からのアップデート

Bazaar の最新情報のチェックをさぼっていたので、今回は 0.8 から 0.14 へと大きなアップデートになってしまった。これだけバージョンが開いてしまうと、いくつかトラブルが発生する。その対処法のメモ。

まず、Bazaar の設定ファイル ~/.bazaar/branches.conf の名称が ~/.bazaar/locations.conf に変更された。

mv ~/.bazaar/branches.conf ~/.bazaar/locations.conf

Bazaar のユーザー名 (Log に書き込まれる) などの設定はこのファイルで行なう。一応、locations.conf のサンプル。

[DEFAULT]
email=Masayuki Ataka  <ma.sayuki.ataka@yahoo.com>

それから、0.14 をインストールして bzr コマンド (何でもいい) を実行すると、こんなエラー・メッセージが表示されるようになる。

Unable to load plugin 'conflicts' from '/usr/lib/python2.4/site-packages/bzrlib/
plugins'
bzr: ERROR: exceptions.ImportError: No module named parsers.expat

これは、Bazaar 0.14 では使われなくなった xml.py というファイルが残っているのが問題らしい。同様に、plugins/conflicts.py というファイルもエラーを引き起こす。この二つのファイルは削除する。

# rm /usr/lib/python2.4/site-packages/bzrlib/xml.py*
# rm /usr/lib/python2.4/site-packages/bzrlib/plugins/conflicts.py*

Bazaar 小史

Bazaar は半年位い前までは、Bazaar-NG と呼ばれていたツール。もともと GNU Arch というバージョン管理ツールがあり、そこから Bazaar というソフトが分岐した。そして、もっと先進的な取り組みを行なうために、Bazaar-NG がフルスクラッチから書かれた。その成果は Bazaar へとフィードバックされるはずだった。

しかし、Bazaar-NG は (旧) Bazaar より素晴らしかったらしい (ぼくは旧 Bazaar を使ったことがないので、比較はできない)。Bazaar-NG は Bazaar と名を変え、旧 Bazaar は、Baz もしくは Bazaar-1.X もしくは Baz-1.X と呼ばれるようになった。

ref

2007-01-18

Bazaar-NG が Bazaar になっていた

個人のソース・コード管理には、分散型バージョン管理システム Bazaar-NG を使ってる。ひさしぶりに、Bazaar-NG の公式ページ

を訪ねてみた所、Bazaar のページに飛ばされた。

プロジェクトの名前も、Bazaar-NG から Bazaar になってる。あれ? でも、Bazaar-NG は Bazaar の実験場ちたいな位置付けじゃなかったっけ? 過去に、ぼくはこんなことを書いてる。

Bazaar-NG はスクラッチから始まったプロジェクトで、GNU Arch や他のシステムから一番いいアイディアを取って来ようと言うものです。出来上がったプロトタイプは、Bazaar へフィードバックされるでしょう。

clmemo@aka: GNU Arch のメンテナー より引用

Bazaar のページをパッと見る限り、どうやら Bazaar-NG が Bazaar を置き換えてしまったやうに見える。う〜ん、最近情報を追ってなかったから、全然裏事情が掴めないや。とりあえず、Bazaar をバージョン・アップしておかなきゃ。後で時間があったら、もう少し突っ込んで調べやう。

2005-11-20

VC 下にある ChangeLog メモのバックアップを取る

VC管理下のファイルのバックアップ」というエントリーで、ひげぽんさんが ChangeLog メモファイルを誤操作で削除してしまい、過去二週間分のデータをなくしたとあった。

ChangeLog メモファイルはバージョン・コントロールの Subversion で管理していたものの、最後の commit が二週間前であったらしい。運がなかったのは、Emacs は VC で管理しているファイルのバックアップは取らないこと。もしバックアップが取られていたら、もう少し被害は小さかったろうにとある。

バージョン・コントロールはバックアップを取ることも重要な役割だから、Emacs が重複する機能の一方を機能オフにするのは理に適ってる。ただ、VC のバックアップのタイミングは人任せなので、ひげぽんさんのようにバックアップを取っていないと不幸になる。その対処法として、ひげぽんさんのエントリーは、「バージョン・コントロール管理ファイルでもバックアップを取る設定」

(setq vc-make-backup-files t)

で最後を締めくくっている。ただ、このコードを入れると VC で管理している全てのファイルでバックアップ・ファイルができてしまう。

ChangeLog メモファイルだけ、バックアップ・ファイルを作るようにした方がスマートじゃなかろうか。もしそうしたければ、ファイル変数を使う手がある。方法は簡単で、ChangeLog メモファイルの末尾に次のようなコードを入れるだけ。

^L
;;; Local Variables: ***
;;; mode: change-log ***
;;; clmemo-mode: t ***
;;; vc-make-backup-files: t ***
;;; End: ***

バックアップ・ファイルのできる VC

ひげぽん氏のエントリーのコメントで、miyagawa 氏が

svkを使うと .svn ディレクトリがないので普通にバックアップファイルができます。

と書いている。基本、Emacs は VC 管理下のバックアップ・ファイルは作らない方針だから、svk 用のコードがまだ書かれてないだけじゃないかと思う。(svk は使ってないので当て推量だけど) もしそうなら、いつか誰かが svk 用のコードを書いて、バックアップ・ファイルが作られなくなる日が来るかもしれない。そして、大低そういう事に気づくのはバックアップ・ファイルが要る時だったりするもの。

実はこれ、自戒的なコメント。ぼくの使ってる Bazaar-NG という VC ツールもバックアップ・ファイルを作ってしまう。時々思い出して、バックアップを まだ 作るか確かめるようにしよう。

2005-10-27

Bazaar-NG のコマンドライン補完 |zsh|

Bazaar-NG には、zsh (と bash) のコマンドライン補完用ファイルが同梱されている。darcs の補完入力でも書いたけど、僕は zsh 使いなので、zsh の設定方法をば書いておく。

補完ファイルの追加

zsh 補完用のファイルは、以下の場所にある。

  • bzr-0.X.X/contrib/zsh/_bzr

これを、zsh の completion 用のディレクトリー (ここでは、~/etc/zsh とする) にコピーして、.zshrc に次のコードを追加する。

fpath=(~/etc/zsh $fpath)
autoload -U ~/etc/zsh/*(:t)
autoload -U compinit && compinit

zsh を起動し直せば、設定が反映される。

もうちょっと賢い (?) zsh 補完

[2005-10-19]、much improved zsh completion script から始まる (Bazaar-NG ML 内の) 一連のスレッドで、もう少し賢い zsh 用の completion script が公開された。このスクリプトは、[2005-10-27] 現在、Bazaar-NG の開発版には含まれていない。ファイルは以下の場所で手に入る。

設定は上と同じ。

2005-10-26

Bazaar-NG の branch format をアップグレードする

調子に乗って Bazaar-NG のバージョンを 0.0.9 から 0.1.1 に上げたら、bzr のコマンドが全く通らなくなってしまった。エラー・メッセージはこんな感じ。

$ bzr log
bzr: ERROR: command: '/usr/bin/bzr' 'log'
pwd: /home/foo/path/to/your/bzr-project
unsupported branch format: sorry, branch format u'Bazaar-NG branch, format 0.0.4\n' not supported
  at /usr/lib/python2.4/site-packages/bzrlib/branch.py line 515, in _check_format()
  see ~/.bzr.log for debug information

これは、Bazaar-NG のリポジトリーの形式 (branch format というのかな?) が変更されたのが原因らしい。新しい format は、weave format と呼ぶそうな。

リポジトリーのアップグレードは、ソース・ツリーの中で bzr upgrade と打つだけでよいみたい。

$ pwd
/home/foo/path/to/your/bzr-project
$ bzr upgrade
starting upgrade of /home/foo/path/to/your/bzr-project
making backup of tree history
./.bzr has been backed up to ./.bzr.backup
if conversion fails, you can move this directory back to .bzr
if it succeeds, you can remove this directory if you wish
starting upgrade from format 4 to 5
note: upgrade may be faster if all store files are ungzipped first
upgraded to weaves:
      17 revisions and inventories
       0 revisions not present
      45 texts
starting upgrade from format 5 to 6
adding prefixes to weaves
adding prefixes to revision-store
this branch is in the most current format
finished

アップグレードは、あっという間に終わる。でも、念のため、ディレクトリーのコピーを取ってからやることをお勧めする。

一応、Bazaar-NG 0.1.1 の bzr help upgrade を和訳 (意訳) しておく。

ブランチのストレージを最新のフォーマットにアップグレードする。

(bzr の) check コマンドや bzr の開発者は、時々このコマンドを実行するようアドバイスするでしょう。

このバージョン (0.1.1) のこのコマンドは、0.0.8 及びそれ以前のバージョンで使われていた full-text storage から weave format (v5) にアップグレードします。

2005-10-25

開発版 Bazaar-NG を入手する

開発版 Bazaar-NG を get する方法について。つまり、 CVScvs checkoutBazaar-NG でやる方法。

CVS で開発版を get するとは、リモートにあるレポジトリーから最新の状態のソース・ツリー一式をローカルにコピーすること。一方、 Bazaar-NG では、リモートにあるレポジトリーそのものをローカルにコピーする。そのため、レポジトリーはリモート側 (開発元) とローカル側 (手元) に二つ出来てしまう。そして、十人が開発版を get すれば、11 のレポジトリーが出来る。これが分散型バージョン管理システムの特徴。

Bazaar-NG では、最新版を手に入れるコマンドを branch と呼んでいる ( getbranch の alias)。つまり分散型バージョン管理においては、最新版の get は、新しくブランチを作るのと変わりがない、ということ。

Bazaar-NG の公式開発版は、以下のアドレスにある。

最新版の入手と更新

Bazaar-NG の開発版は以下のコマンドで手に入る。

$ bzr branch http://bazaar-ng.org/bzr/bzr.dev

全てのバージョンをダウンロードしようとするので、とても時間がかかった。mirror とか、無いのかな?

更新は、bzr.dev ディレクトリー内で

$ bzr pull

branch コマンドと pull コマンドは、ローカルのレポジトリーに対しても (当然) 有効。例えば、 foo というプロジェクトを bzr でバージョン管理していたとして、新しいブランチを作る場合は、こんな風にする。

$ ls
foo
$ bzr branch foo foo-new-branch
$ ls
foo foo-new-branch

古いバージョンを手に入れる

先の foo プロジェクトで、古いバージョンが欲しくなったとする。その場合、revision number を -r オプションで指定して branch コマンドを実行する。例えば、欲しい revision number が 15 だとすると、次のような感じ。

$ ls
foo foo-new-branch
$ bzr branch foo foo-old -r15
$ ls
foo foo-new-branch foo-old

revision number は、 log コマンドで調べられる ( revno が revision number)。

$ bzr log

2005-10-22

Bazaar-NG install / quick start

分散型バージョン管理システムの一つ、 Bazaar-NG をインストールして使ってる。バージョン 0.0.9 のインストール方法を書こうと思って、 Official Page を見てみたら、最新版は 0.1.1 になってた。何気に細めにアップデートされてるのかしらん。新版の変更点なんかをチェックするのは後回しにして、とりあえずインストールと quick start を書いてみる。ちなみに、分散型バージョン管理システムには他に GNU Archdarcs がある。

インストール

Bazaar-NG は pure Python なアプリケーション。インストールには、バージョン 2.4 以上の Python が必須。

Bazaar-NG のダウンロード・ページから、Official 最新版 0.1.1 をダウンロードして展開。Python のセットアップ・スクリプトを実行するだけ。

$ tar xzvf bzr-0.1.1.tar.gz
$ cd bzr-0.1.1
# python2.4 setup.py install

管理者権限がない場合は、symbolic link を張る。これだけで使えてしまうのも、 Python スクリプトならでは。src を ~/src に展開したとして、これを ~/bin にインストールする場合、次のようにする。

$ ln -s ~/bazaar-0.1.1/bzr ~/bin/bzr

bzr quick start

Bazaar-NG のコマンド名は bzr。チュートリアルには、以下のサイトがとても詳しい。

上記サイトの前では、蛇足以外の何ものでもないけれども、quick start... 手元の freeleaf.js というファイルを登録する場合。

$ ls
.  ..  freeleaf.js
$ bzr init                            ; .bzr ディレクトリーの作成
$ bzr status                          ; 登録ファイルの確認
$ bzr add -v freeleaf.js              ; ファイルをレポジトリーに登録
$ bzr commit -m "initial revision"    ; 登録を反映
$ bzr log                             ; ログを見る。

darcs と同じように、レポジトリーはカレント・ディレクトリーに出来る。 RCS と同じと言った方が早い? darcs, RCS と違うのは、レポジトリー名が . で始まる。つまり隠しファイル。カレント・ディレクトリーで rm -rf * して消える心配がないのは嬉しい (でも一つ上の階層で rm -rf すると、やっぱり消えちゃうんだよね)。

メール・アドレスの設定

bzr は、commiter の名前 (メール・アドレス) を次の順序で調べてる。

  1. $BZREMAIL
  2. .bzr/email
  3. ~/.bzr.conf/email
  4. $EMAIL

~/.bzr.conf/email を開いて次のように書いておくとよいかな。

Masayuki Ataka  <ataka@foo.com>

2005-08-28

GNU Arch のメンテナー

GNU Arch の最近の動向に関する自分用のメモ。

まず、GNU Arch のバージョン 2 が公開された。

といっても、スナップショットな段階みたい。そして、GNU Arch のメンテナー Tom Load 氏が降板。

これからの開発がどうなるかは、現在未定みたい。Revc の開発が続くのか、GNU Arch は終わってしまうのかしらん。

ところで、ML で何度か出てくる Bazaar と Bazaar-NG について、まとめてる FAQ があったので、抜粋して意訳しておく。

Bazaar (1.0) は GNU Arch から分岐したプロジェクトです。互換性の問題は残るものの、(GNU Arch で問題だった) ユーザー・インターフェースの問題の解決を試みています。Bazaar-NG はスクラッチから始まったプロジェクトで、GNU Arch や他のシステムから一番いいアイディアを取って来ようと言うものです。出来上がったプロトタイプは、Bazaar へフィードバックされるでしょう。

いま、一番熱いのは Bazaar-NG らしい。ただ、Python なツールなんだよね。もう少し、様子を見てみよう。