svn-mode for xyzzy

Table of Contents


はじめに

svn-mode for xyzzy は、xyzzy上でSubversionリポジトリに格納されているファイルをチェックアウトしたりチェックインしたり出来るマイナーモードです。

あまり難しいことは出来ませんが、簡単な事なら十分使えるのではないかと思います。ここでは、svn-mode for xyzzyのインストールの仕方や簡単な操作方法を説明します。

なお、Subversionは既にインストールしてsvnコマンドが普通に使える状態になっているものとします。


準備するもの

svn-modeをインストールする前に用意するものがあります。svn-modeはxml-parser-modoki.lに依存しており、svn-modeをインストールする前にxml-parser-modoki.lをインストールする必要があります。

xml-parser-modoki.lはNetInstallerからインストールしましょう。

NetInstallerの説明や入手方法については割愛させていただきます。分からない方はhttp://xyzzy.s53.xrea.com/wiki/?QuickTour%2Fext%2FNetInstallerを参考にしてインストールしてください。


install

xml-parser-modoki.l(xmlpm)のインストールが終わったら、そのままNetInstallerでsvn-modeもインストールしてください。

svn-modeをインストールするためのNetInstaller用パッケージリストは http://www5d.biglobe.ne.jp/~lostland/xyzzy/packages.l です。


環境設定

NetInstallerからインストールしたら即使える……ようになっていれば便利なんですが、あいにくとsvn-modeはそんなに便利ではありません。インストール後に環境設定が必要です。といってもそんなに難しい設定が必要なわけではありません。xyzzyの初期設定ファイル~/.xyzzyかsiteinit.lに以下を記述するだけです。

(require "svn/svn")

上の1行を記述したらそのまま保存し、xyzzyを一度終了させて、もう一度立ち上げなおすだけで環境設定は終了です(siteinit.lに記述した方は、ダンプファイルの再作成が必要です。siteinit.lに記述し、保存した後、xyzzyを終了するまでは一緒ですが、xyzzyを再度立ち上げる際にShift+Ctrlキーを押しながら立ち上げてください。そうすることによってダンプファイルを再作成するはずです)。


使ってみる

インストールが終了したら、さっそく使ってみましょう。

svn checkout

Subversionのリポジトリからファイルを取り出します。CVSのcheckoutと同じですね。

  1. xyzzyのバッファ上でM-x svn-checkout
  2. ミニバッファにチェックアウトしたいSubversionリポジトリのパスを入力します
  3. チェックアウト先のパスを入力します

svn-checkoutが終了するとこのようにチェックアウトしたファイルの一覧が表示されます。

ディレクトリにもきちんとチェックアウトされています。

svn checkin

ワーキングコピーの変更したファイルをリポジトリにコミットします。CVSのcheckinと同じです。

  1. svn checkoutでチェックアウトしたファイルを変更後、保存します。保存すると、モードラインがちょっとだけ変わります(リビジョンの後ろに*が付きます)。
  2. C-c iでコミット時のメッセージを作成するバッファを表示します
  3. コミット時のメッセージを入力します
  4. C-c C-cコミットします

svn update

ワーキングコピーのファイルをリポジトリのファイルと比較して最新の状態にします。

  1. svn checkoutでチェックアウトしたファイルを開きます。
  2. C-c uアップデート

ワーキングコピー全体をアップデートするには、アップデートしたいディレクトリの中のファイルを一つ開いて、C-c Uします。

svn add, svn delete, svn copy, svn move

svn add      C-c a
svn delete   C-c "
svn copy     C-c =
svn move     C-c -

変更を加えたいバッファ上で入力してください。サブコマンドの詳細についてはSubversionのマニュアルなどを参考にしてください。

svn lock, svn unlock

svn checkoutでチェックアウトしたファイルをロックするには、ロックしたいファイルを開いて、開いたファイルのバッファ上でC-c Kします。ミニバッファにロック時のコメントを入力して、Enterを押します。問題がなければロックが成功します。

ロックしたファイルは--no-unlockオプションが指定されていない限りコミットするごとに自動的に解除されますが、コミットせずにロックを解除するためには、ロックを解除したいファイルバッファ上でC-c Uします。

他の人がかけたロックを横取りするには、svn lockコマンドの実行時に--forceオプションを指定します。

その他のコマンドについて

ファイルのステータスを確認するにはC-c s及びC-c S
表示される情報はsvn statusで表示される情報と同じです。ただし、~/.xyzzyなどで

(setq *svn-use-parse-status* t)

とした場合にはsvn statusの出力を解析してもう少しだけ情報を増やして表示させることが出来ます

この画面の見方についてですが、表示の仕方は違うものの、基本的にsvn statusコマンドで表示される情報と一緒です。左から順にファイル、もしくはディレクトリの状態を表し(CONDITIONカラム)、次にファイル、もしくはディレクトリの属性の状態(PROPERTYカラム)、作業コピーがロックされているかどうか(LOCK-Cカラム)、追加予告されているかどうか(SCHEカラム)、ファイル、もしくはディレクトリがsvn switchによって切り替えられているかどうか(SW-Cカラム)、作業リビジョン/最後にコミットされたリビジョン(Rev/Lastカラム)、最後にコミットしたユーザー(AUTHORカラム)、ファイル、もしくはディレクトリ名(FILE/DIRカラム)となります。

また、ファイルがロックされている場合、ファイル名の前にロックされていることを表す[K]というマークが表示されます。

ワーキングコピーのファイルをリポジトリのファイルと比較するdiffを実行するコマンドはC-c dです。
xyzzyのdiff-modeを使う場合はC-c Dです。
特定のリビジョンとの差異を調べるにはC-u C-c dでリビジョン番号を入力します。あるいはC-u C-c Dでリビジョン番号を入力します。

ファイルの変更を取り消す場合には、C-c rで改めて変更を取り消すかどうか聞いてくるので、取り消す場合はyを入力します。


svnオプションについて

xyzzyの設定ファイル(~/.xyzzy, siteinit.l)等で指定します。指定方法は、

(svn-set-option OPTION-NAME [OPTION-VALUE])

となります。

OPTION-NAMEにはsvnスイッチをそのまま記述し、OPTION-VALUEにはOPTION-NAMEが"--username"や"--password"などのときにユーザIDやパスワードを入力する際に使います。

例 ユーザID、パスワード、--verboseオプションを設定する場合
~/.xyzzyやsiteinit.lに以下を記述します。

(svn-set-option "--username" "LKPTeam")
(svn-set-option "--password" "hogehoge")
(svn-set-option "--verbose")

使用できるスイッチの一覧がsvn-misc.lにあります(*svn-options*)ので、参考にしてください。

また、svnのスイッチとは別にsvn-modeのオプションもあります。文字や背景の色設定が主ですが、svn-parse.lやreadme.txtに指定できるオプションの一覧や設定方法がありますので、設定する場合は~/.xyzzyやsiteinit.lに記述してください。


svn-dired

Subversionリポジトリの中をemacsのdiredのように表示するモードです。ただし、emacsにあるようなdiredやdired-xのように機能豊富なわけではありません。

  1. xyzzyのバッファ上でM-x svn-dired
  2. 表示したいリポジトリのパスを入力します
  3. 入力したリポジトリが表示されます

svn-diredで使えるコマンドは以下の通りです。

key binding
--- -------
RET svn-dired-enter         サブディレクトリ上で実行した場合、
                            そのサブディレクトリを表示します
SPC svn-dired-enter         上記と同じです
"   svn-dired-delete        svn deleteと同じです
=   svn-dired-copy          svn copyと同じです
E   svn-dired-export-force  svn export --forceと同じです
]   svn-dired-cat           svn catと同じです
b   svn-dired-blame         svn blameと同じです
c   svn-dired-checkout      svn checkoutと同じです
d   svn-dired-diff          svn diffと同じです
e   svn-dired-export        svn exportと同じです
k   svn-dired-mkdir         svn mkdirと同じです
l   svn-dired-log           svn logと同じです
m   svn-dired-move          svn moveと同じです
p   svn-dired-proplist      svn proplistと同じです
q   svn-dired-exit          svn-diredを終了します
r   svn-dired-reload-list   Subversionリポジトリに対してsvn listします
u   svn-dired-up-dir        可能ならば一つ上のディレクトリに移動します

svn-diredで使えるコマンドは全てリポジトリに直接作用するコマンドですので、削除や移動などのコマンドを使う際には十分気をつけてください


既知の問題

svn-mode0.0.1.9における既知の問題として、--show-updatesオプションを指定し、*svn-use-parse-status*変数がtであるときにsvn statusコマンドの実行結果に必要のない文字が表示されます。動作に支障はありませんが、回避する方法を以下に示します。

svn diffコマンド実行時に比較するファイルのリビジョンを表示する箇所の文字が文字化けする

これらの問題は次のリリース時に修正される予定です。


バグレポート等は ykaltenative@mue.biglobe.ne.jp まで。

For svn-mode0.0.1.9 $Id: svn-mode.html 13 2005-07-06 13:46:34Z lkpteam $