« 転職活動中。 | メイン | svn 入門(その2) »

svn 入門

  1. 運用中の最新ファイルでローカルの作業コピーを更新
  2. emacs(meadow) で編集
  3. ediff で差分確認
  4. 更新

というのを手作業で繰り返すのはもうイヤだ。
いい加減バージョン管理システムが必要だ。

つーわけで、Subversion にスムーズに移行すべく調査、検討した。
現在の構成は以下の通り、
  • Subversion 1.3.2 (cygwin 版)
  • meadow 2.10 (based on GNU Emacs 21.4.1)
  • vc-svn.el (Jim Blandy 版)

方針として、極力フロントエンドで調整する。
バックエンドの設定項目にも、ざっと目を通しておくけど、デフォルト前提で。

◆ Subversion

cygwin の setup.exe でインストール。
いつのまにか、~/.subversion/ ができている。
/.subversion/ 以下のファイルでいろいろ設定できるので、要チェック。
参考: http://subversion.bluegate.org/doc/book.html#svn.advanced.confarea.opts

今回は、とりあえず、日本語でログ書けるように設定した。

このあと、emacs の設定で utf-8-dos をデフォルトにするので、これで良い。

ついでに、locale も UTF-8 に合わせないと端末でログなどの表示が化ける。


svnadmin, svn のメモ:


◆ emacs の日本語の扱いを調整

久しぶりに、 .emacs を整理した。
meadow なので、sjis-dos デフォルトで無問題だったんだけど、
Subversion は UTF-8 前提だし、まー今後の事も考えて、
utf-8-dos をデフォルトに変更した。
(ただし Windows なら、入力と出力だけは、japanese-shift-jis-dos ですよと)

以下、日本語環境部分を .emacs より抜粋。


しかし、
(setq default-buffer-file-coding-system '...)
とか、
(setq-default buffer-file-coding-system '...)
とか、
(set-default-buffer-file-coding-system '...)
とか、紛らわしいので勘弁して欲しい。

ちなみに、
「PuTTY 上の emacs」と meadow のモードラインの違いを、始めてちゃんと見た。
…文字端末を使っている場合、csは3文字になり、それぞれ、
キーボード入力のコーディングシステム、
画面出力のコーディングシステム、
編集中のファイルのコーディングシステムです。
、だそうです。
参考: http://www.bookshelf.jp/texi/emacs-20.6-man-jp/emacs_4.html#SEC11
このおかげで、
  • keyboard-coding-system
  • terminal-coding-system
  • buffer-file-coding-system
という 3 つのパラメータを意識したら気のせいかスッキリした。

あと、何となく Customize とかで設定しちゃってた部分とバッティングして苦労した。

◆ vc-svn

vc-svn を入手。Subversion のソースツリーの中の、/contrib/client-side/vc-svn.el です。
vc は標準でバンドルされてるので、vc-svn.el を load-path に置いて、
って書くだけで良い。

以降、 vc 経由で cygwin の svn が呼ばれる。

vc のメモ:
参考: http://www.bookshelf.jp/texi/emacs-20.6-man-jp/emacs_15.html#SEC118
チェックアウト、チェックイン、追加は、

コレだけ(!)で済む。
衝突したら、vc-merge( C-x vm ), vc-resolve-conflicts とかするんだと思う(あとで試す)。
困ったら、

で、調べる。

◆ linux とかではどうなの?

emacs の設定さえ頑張れば、linux でも問題ない(ように見える)。

◆宿題

  • vc で削除ってどうやるの?
  • M-x ediff-revision で差分が見れるけど、
    vc-merge, vc-resolve-conflicts
    と、どう絡んでくれるか?
    上手く絡んで欲しい。ediff 最強。
  • ログの書き込みは問題ないが、
    locale を UTF-8 に合わせないと表示が化ける。
    だけど、cygwin の locale は腐っている。タスケテ。
  • 実は TortoiseSVN も入れているんだけど、
    cygwin のパスが Windows 的に素直じゃないので、
    共有とか難しいんだろうか?
    それ以前の問題として、Subversion のバージョンが違うので、
    レポジトリとかのフォーマットが互換性が無い模様。しばらく様子見。

トラックバック

このエントリーのトラックバックURL:
http://tonextone.com/type/app/mt-tb.cgi/7

この一覧は、次のエントリーを参照しています: svn 入門:

» Subversion 送信元 yamaGu's PukiWiki Plus! (PukiWiki/TrackBack 0.3)
svnadmin create /var/svn/repos svn import -m 'start' /home/yamagu/matlab/sim ... [詳しくはこちら]

コメント (4)

衝突がある場合、vc-merge( C-x v m )とすると、

Lorem ipsum dolor sit amet,
consectetur adipisicing elit,
<<<<<<< .mine
変更したい
=======
でも、かぶった
>>>>>>> .r4
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.

となる。

そのまま meadow を終了して、再度そのファイルを開くと、

Lorem ipsum dolor sit amet,^M
consectetur adipisicing elit,^M
<<<<<<< .mine
変更したい^M
=======
でも、かぶった^M
>>>>>>> .r4
sed do eiusmod tempor incididunt^M
ut labore et dolore magna aliqua.^M

となってしまう。

どうも、cygwin 版 svn は、
「<<<<<<< .mine」とか挿入した行の、改行コードの扱いが苦手のようだ。

http://rogiken.org/wiki/index.php?Subversion%A4%CE%C6%B3%C6%FE%A4%C8%BB%C8%CD%D1#content_1_9

しばらくは、TortoiseSVN のバージョンも 1.3.2 に下げて、
不備を補いながらへ併用しようかな。

衝突の解消がどうにも VC のマニュアルどおりにならないので、

・meadow 3.00-dev (based on GNU Emacs 22.0.90.1)
・vc-svn.el (FSF 版)

も試用中。

こっちの構成だとマニュアルどおり ediff が援用される。
そろそろ meadow3 に乗り換えても良いかも知れない。

あと、VC で削除は、
M-x vc-delete-file
でいける?

後でまとめて、エントリする。

ちなみに、cvs のメモ:

cd /home/master/;
mkdir -p ./cvs_test/work/;

# レポジトリを作る。
setenv CVSROOT ':local:/home/master/cvs_test/REPOSITORY/';
cvs init;

# /path/to/source/ からレポジトリへインポート。
cd /path/to/source/;
cvs import -m 'start' module vendor release;

# レポジトリから作業コピーへチェックアウト。
cd /home/master/cvs_test/work/;
cvs checkout module;

# 困ったら…
cvs -H;

[既存のディレクトリ]を svn 管理下に置きたい場合:

$ svn mkdir [レポジトリ上のディレクトリのURL];
$ svn checkout [レポジトリ上のディレクトリのURL] [作業コピーディレクトリのパス];

[既存のディレクトリ]から、[作業コピーディレクトリ]に、ファイルを移動。

$svn add foo;

念のため[作業コピーディレクトリ]でテスト。問題なければ、

$svn commit;

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

最近のコメント

» master on svn 入門 :
└ [既存のディレクトリ...
» master on svn 入門 :
└ ちなみに、cvs の...
» master on svn 入門 :
└ 衝突の解消がどうにも...
» master on svn 入門 :
└ 衝突がある場合、vc...

アーカイブ

フィード

このブログ

RSS 2.0 / ATOM

AdSense

del.icio.us

flickr