Subversionを ssh 経由で使おう(ApacheもWebDAVも必要ないよ)

Subversionをローカルだけでなく本格的にサーバーで使おうと思うといつも障害になるのが以下の誤解だ。(というか今日まで誤解していた)


Apacheで難しい設定をしなくてはならない
Apacheの使用は必須ではない。インストールにaprというApache由来のライブラリが必要なだけ。


WebDAVとかいうよく分からない仕組みを理解しなければならない
⇒同じく必須ではない


svnserverとかいうサーバを常駐させる必要がある
⇒同じく必須ではない


結局すべて、誤解でだった。
個人で使うならば、もっと簡単(?)というか親しみやすい方法があり、それが「ssh経由でアクセス」である。


自分的に ssh の理解も怪しかったのであわせて手順メモを残しておきます。
subversionのインストールは yum でやっていますが環境に合わせて下さい。

1.ssh設定

以下ユーザー名は higepon とする
1-1.鍵の作成

ssh-keygen -t dsa # 生成するキーの名前は任意でよい

1-2.公開鍵の設定
ログインしようとしているサーバーで
/home/higepon/.ssh/authorized_keys2を編集
先ほど生成した .pubの公開鍵の中身を追記する
1-3.クライアント側で秘密鍵を設定する
1-3-1. 適当な場所たとえば /home/higepon/tmp/秘密鍵 を置く
1-3-2. ssh taro@サーバ -i /home/higepon/tmp/秘密鍵 でログインしてみる
1-3-3. ログインできれば1段階目クリア
1-3-4. 秘密鍵の内容をクライアント側の /home/higepon/.ssh/id_dsaとして保存する
1-3-5. ssh taro@サーバー でログインできればOK

2.subversionのインストールと動作確認

以下サーバー上での作業
2-1. sudo yum install subversion # 簡単!
2-2. mkdir /home/higepon/svn/repos
2-3 svnadmin create /home/higepon/svn/repos # リポジトリ作成
2-4 svn import myproject file:///home/higepon/svn/repos -m "initial import" # インポート

3.subversionssh経由で

3-1. クライアントからssh経由で subversion を操作
3-2. svn checkout svn+ssh://higepon@サーバ/home/higepon/svn/repos myproject # svn+ssh://でアクセス!


というわけで ssh 経由で簡単にアクセスできました。
簡単にポイントをまとめると

  • subversionを公開するサーバに ssh できる環境を整える
  • svn コマンド xx svn+ssh://・・・の形式でアクセスすること

となります。


しかし意外と誰でも使いそうな情報がまとまってないんだなぁ。みんなはまじめにマニュアルを熟読しているんだろうか?


ちなみに1-3-4.ですでに別のサーバ用の id_dsa 存在場合は追記でよいのだろうか?(教えてエロイ人)


ちなみに2
この後きっと、 ViewCVSのインストールでレポジトリの公開、Emacsからコミットとかを調べ始めると思うのですが、もし良いサイトを知っていたら教えてくださいませ。

Subversionを ssh 経由で使おう2(Emacsのvc-svnを利用する) - Higepon’s blogへ続きます。


Subversion実践入門―達人プログラマに学ぶバージョン管理
Mike Mason でびあんぐる
オーム社 (2005/08)
売り上げランキング: 1,628
おすすめ度の平均: 4
4Subversion解説書」との比較
「Subversion」解説書 <バージョン管理システム> Linux world favorite series
Subversion開発プロジェクト 上平 哲 佐藤 竜一
IDGジャパン (2004/12)
売り上げランキング: 22,112
おすすめ度の平均: 4
4 読みやすいです
3 Subversionはまずこれを!
5 やはり書籍は読みやすい

「普通のやつらの下を行け: assert_caller()」を読んで

普通のやつらの下を行け: assert_caller() - bkブログ面白いです。

assert_caller() とは、特定の関数からの関数呼び出しだけを通すためのアサーションです。

このアサーション開発の動機や使い道も面白いのですが、さらにコードも興味深い。
ここまでやるかという感じでw。
__builtin_return_address(0)は、知らなかったのですがMonaでの例外の実装にも使えそうな気がしてきました。
ELFの実装をしたころが懐かしいですがすっかり忘れてるなぁ。。