日常のsubversion

やりたいことは,自宅と職場のFreeBSDマシンで,シームレスにプログラミングを継続したいということなんです.そこで,こんなことをやってます.

  • まずどちらかのマシン(私の場合は職場のマシン)でsubversionサーバをたて,開発ディレクトリをインポートとチェックアウトをする.例えば

# svnadmin create /var/svn/develop
# svn import ~/develop file:///var/svn/develop
# cd ~/project
# svn checkout file:///var/svn/develop

  • プログラミング中の画面も継続させるためにscreenを使う.

# screen -s develop -T develop

  • 他方のマシン(私の場合は自宅マシン)でチェックアウトする.ただし職場マシンはファイアーウォールで直接svn+ssh://が使えないので,ポートフォワードも準備する.

# ssh -l tullio -L 8022:subversionサーバ:22 職場のproxyサーバ
(あらかじめ~/.subversion/configのtunnelセクションで,
ssh=$SVN_SSH ssh -p 8022
を設定しておく)
# svn checkout svn+ssh://localhost/var/svn/develop
# screen -s develop -T develop

一度設定が終われば,あとは

# svn update
(延々とプログラミングする)
# svn commit

です.ただしファイアーウォールの外では,ポートフォワードが必要です.

あと,ファイルはsvn updateで同期がとれるのですが,emacsの中のバッファには前のファイルが入っています.だからsvn updateしたあと,エディタで編集作業に入ると,

foo.cc changed on disk; really edit the buffer? (y, n, r or C-h)

って聞かれます.これが面倒なので,emacsに(多分デフォルトで付いてくる)auto-revert-modeを使うのがラクだと思います.

M-x auto-revert-mode

試しにemacsのバッファで編集中のファイルを,あえて別にもう一度開いて編集して保存すると,元のバッファの内容がにょきっと編集されたものに変わります.

これで開発環境はいつもシームレス.