Meadow から Subversion を使ってみる

Subversionのごくごく基本は掴めたので、
ついでにpsvn.elというElispを使って
MeadowからSubversionを使ってみることにした。
psvn.elを使うにはpsvn.elをsite-lisp以下に置いて、
以下を.emcasに追加すればOK。

;;; psvn の設定
;; EmacsからSubversionを使う
(require 'psvn)


で、早速使ってみたんだけど、
いやー・・・これが全然分からない( ´・ω・`)
とりあえず今回分かったことをメモしておく。
以下、全ての操作はMeadow上で行う。

リポジトリの作成

まずSVNで使うリポジトリ用のディレクトリを用意する。
C-x f /svn/で、/svn/をdiredで開き、+ を入力してディレクトリの作成。
ディレクトリ名はjinro。
(人狼のプロジェクトなのです。)


次にリポジトリの作成。
M-x svn-admin-create がそのものずばりなコマンドっぽいけど、
うまくリポジトリができてるのか不安なので、
eshellから以下を入力する方が安心。

> svnadmin create /svn/jinro/

インポート

リポジトリにバージョン管理するファイルとディレクトリをインポートするため、
C-x f ~/ruby/jinro/ で移動。
+ で3つのディレクトリ trunk、tags、branches を作る。
そして、元々 ~/ruby/jinro/ にあったファイルとディレクトリを、
丸ごと trunk 以下に移動させる。
ファイルとディレクトリの上で m を押せば * マークがつき、
C を入力するとマークしたものをまとめて移動できる。
psvnでのインポートは、たぶんきっと M-x svn-admin-start-import
から行うのだろうけど、これがほんとによく分からないので、
やっぱりeshellから以下のようにインポートする。

C:\home\gan2\ruby\jinro> svn import . file:///c:/svn/jinro/

リビジョン1をコミットしました。
というメッセージが出ればOK。

インポート(psvn)

M-x svn-admin-start-create をすると、
ローカルにリポジトリを作るか?と聞かれるがこれは n と答えておく。
リポジトリのURLは file:///c:/svn/jinro/。
ちなみに、y と答えておいて、
/svn/jinro/と入力すると、
file://c:/svn/jinro/ は間違ったURLですみたいなことを言われる。
うん間違ってるね。file:/// のところ / 1つ足りないよ。
だから y とはしないで n とすること。
それでなんか、diredっぽいバッファが開くんだけど、
ここで何をどうしたらインポートしたことになるのかが分からない・・・。

チェックアウト

チェックアウトも、M-x svn-checkout を使うと、
できたようなできてないようなよく分からないことになるので、
やっぱりeshellでやる*1。


だけどその前に、このままだとチェックアウトができないので、
.svn以外のファイルとディレクトリを一旦全部消す。
diredなら、d を入力したところに、 D マークがつく。
まとめてマークをつけて、x で一括削除。


チェックアウトは以下のコマンドでOK。

C:\home\gan2\ruby\jinro> svn checkout file:///c:/svn/jinro/ .

これで、リビジョン1をチェックアウトしましたって出る。

ここから psvn の出番

ここからは分かる。
M-x svn-status で dired チックなバッファが表示され、
バージョン管理されているファイルやディレクトリと、
そのリビジョンを確認することができる。
ファイルを編集すればその頭に M がつく。
コミットしたいファイルの上で c を入力すれば、
コメント用のバッファが開く。
コメントを入力して(しなくてもいいけどした方がいい。)、
C-c C-c でコミットされる。
アップデートは U を押せばできる。Add は A。

参考

  • http://www-aos.eps.s.u-tokyo.ac.jp/~takagi/SubversionMemo.html
    • Subversionのよくまとまった解説。psvnの紹介は下の方にある。
  • psvn
    • psvn.elのコメントの和訳(ちょっと古い。)
  • http://viz.is-a-geek.com/~viz/cw/index.php?psvn
    • よく使うコマンドが表でまとめられている。
  • pcl-cvs
    • psvnはpcl-cvsとほぼ使い方が同じようなので、ここも参考になる。

*1:たぶんだけどインポートまでがちゃんとできてるなら、M-x svn-checkout は問題なく動くと思う。