sea side she side

写真と山、資格が好きなアラフォーエンジニアのブログ

Ruby on Rails with Mac OS X 10.5 (3)

      2011/03/19

コマンド一覧はあるものの、操作方法がよくわからない。Google様にお伺いするもSubversionもpsvn.elもそれほど普及していないのか記事がすくない。

とりあえず動作確認しながら使い方をメモしてみる。

想定しているディレクトリは下記の通り。

o レポジトリ
/svn-repos/
+ project1/
+ trunk/
+ tags/
+ branches/

o 作業用コピー
~/svn-works/
+ project1/
+ trunk/
+ tags/
+ branches/

o 初回importするときだけの一時的なもの
/tmp/
+ project1/
+ trunk/
+ tags/
+ branches

これからemacs上で行いたいシェルコマンドは以下の通り。

$ mkdir /svn-repos
$ mkdir /svn-repos/project1
$ svnadmin create /svn-repos/project1
$ mkdir /tmp/project1
$ mkdir /tmp/project1/trunk
$ mkdir /tmp/project1/tags
$ mkdir /tmp/project1/branches
$ cd /tmp/project1
$ svn import . file:///svn-repos/project1/
$ cd
$ rm -rf /tmp/project1
$ mkdir ~/svn-works
$ mkdir ~/svn-works/project1
$ cd ~/svn-works/project1
$ svn co file:///svn-repos/project1/ .

リポジトリディレクトリを準備し、importするための一時的にディレクトリを作成する。importしたディレクトリからそのままcoできないので別なところを用意する。もしくはいったん消すという方法もあるけれど...。それから手元にcoするところまでをまずやってみる。

emacsを起動して、C-x dでdiredを起動。/へ移動して+でsvn-reposを作成する。svn-reposに移動してproject1を作成。

M-x svn-admin-createでCreate a svn repository at:と聞かれるので、/svn-reposを指定しリポジトリを作成する。

次に一時ディレクトリ。同じようにdiredで/tmpに移動、project1とtrunk、tags、branchesを作成。project1へ移動して、M-x svn-admin-start-importを実行。Create local repository?と聞かれるのでnを選択(svn-admin-createですでに作成済み)。するとRepository Url:と表示されるのでfile:///svn-repos/project1/を指定。するとdiredと似たpsvnのバッファが現れる。branches以下3つのディレクトリをAでadd指定する。cでcommitしてメッセージログを入力。C-c C-cでCommitできる。

diredに戻ってもういらない/tmp/project1を削除。~/にsvn-worksとその下にproject1を作成し、project1以下に移動。M-x svn-checkoutでfile:///svn-repos/project1/を指定するとcheckoutできる。

無理にdiredを使う必要もないし、psvnもcommitするあたりから使えればいいかなぁという感じ。

diredの操作方法の簡単なまとめ。

コマンド 説明
C-x d 起動
n, p ↑↓
RET, e, f 開く
^ cd ..
d 削除マークを付ける
x 削除マークが付いたのを実際に削除
R mv
C cp
s ソート。または「C-u s -lSr」など
D rm
+ mkdir
Z gzip
g ディレクトリ内容再読み込み
i サブディレクトリの内容を表示。$ で表示トグル
m マークする。ディレクトリのとこにつけると全ファイルに
u マークをはずず
t マークの反転
A マークしたファイルを検索。M-, で次のマッチ箇所へ
Q マークしたファイルに対して、query-replace-regex
= diff
M-= 「*~」とdiff
~ 「*~」に削除マーク
% d regexp ファイル名にマッチしたら削除マーク

psvn.elの操作方法の簡単なまとめ。

コマンド svnでのコマンド
g svn status -v
= svn diff
U svn update
c svn commit
A svn add
m set-user-mark
c commit
C-c C-c メッセージログ入力後実際にcommit

 - IT