« Persica V0.40 公開 | Main | Dynamic DNS »

2005.01.18

トンネル工事

おれは CVS 大好き人間であり Persica の開発も asagi box の管理も CVS を利用している。

ところで Persica の開発は仕事場と自宅で行っているのだが、俸給生活者であり二児の父親でもあるおれにとってはそのどちらでもまとまった開発時間の確保は困難である。おのずと細切れの空き時間を寄せ集めて作業することになる。

ここで問題になるのは CVS リポジトリの扱いである。仕事場のファイアウォールはHTTPとHTTPSしか通さず、ネットワーク的に分断されているため、自宅の Linux サーバ上のリポジトリに仕事場からアクセスすることは出来ない。もちろんその逆も不可能である。

どちらの場所でも CVS を使う。それはおれの中では大前提である。しかし仕事場と自宅で別々にリポジトリを用意し、それぞれでコミットするなど論外もいいところで、一つのファイルを複数のリポジトリで管理した日には履歴が分散して CVS のメリットが損なわれてしまう。

なのでおれはミラーリングを行った。リポジトリそのものをコピーするのだ。手作業で。

具体的には帰宅前と就寝前にそれぞれの場所でリポジトリをアーカイヴし USB メモリに放り込み、出勤後と帰宅後にアーカイヴを展開してリポジトリを丸ごと入れ替えるのである。これなら一応編集履歴も一貫するし妙な衝突も起こらない。

しかし面倒は面倒なのだ。USB メモリを仕事場に置き忘れたりすると、その日が金曜なら週末丸々作業が停滞してしまう。というか一度実際に停滞した。これはストレスだ。

そこで業を煮やしたおれは仕事場から自宅にトンネルを掘ることにし、この度ついに開通に漕ぎ付けたのである。その立役者が stone だ。自宅サーバは固定 IP を持っていないので、その点で若干面倒を強いられているが、リポジトリを持ち歩く暴挙に比べれば屁でもない。

以下、その手順のメモ。

1.自宅 ADSL モデムの設定
 → ポート X へのアクセスはサーバに回す
2.自宅サーバの設定
 → stone はポート X への接続を ポート 22 に回す
 → stone はトラブル対策として cron で定期的に起動
3.仕事場マシン設定(常時)
 → Cygwin の $CVSROOT の設定
  → プロトコルは ext
  → ユーザ名は自宅サーバのもの
  → ホスト名は localhost
  → リポジトリパスは 自宅サーバのもの
4.仕事場マシン設定(利用時)
 → stone はポート 22 へのアクセスを自宅 IP のポート X へ回す

これで仕事場のマシン上の Cygwin から cvs コマンドを発行すると、localhost の stone が自宅サーバのポート X に転送してくれる。そして自宅サーバの stone がポート X へのアクセスをポート 22 に回し、これで仕事場と自宅との間に SSH 通信が確立するわけだ。

不便があると言えば仕事場の stone を起動する際にいちいち自宅サーバの IP を調べて stone.cfg を書き換えなければならない点だが、そのくらいは我慢しなければならんのだろうな。

|

« Persica V0.40 公開 | Main | Dynamic DNS »

Comments

dynamic dnsを使えばいいんじゃないかと思う今日このごろ、いかがお過ごしでしょうか。って言うかあけましておめでとうございます今年もよろしくお願いします(遅いよ)。ちなみに私はdnsdns.orgと知り合いが個人的に動かしてるのを利用させてもらってます。家にトンネル掘るのに便利です。
近況でも書きますか。asagiさんと同じ二児の父&&仙台在住(これはあまり関係無いな)でありながら、早くも人狼BBSでは11回目をプレイ中であります。既に人狼廃人です。駄目駄目です。村の数ももう600を越えて、相変わらず参加するのに一苦労です。asagiさんとも一度ご一緒したいですね。
んではまた。

Posted by: ぐるり | 2005.01.18 05:42 PM

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference トンネル工事:

« Persica V0.40 公開 | Main | Dynamic DNS »