この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
社内用の開発の為、ノートPCで自宅⇔会社で同じリポジトリを使いたいという要望がわりと多くあると思いますが、そんな時に便利なソフトウェアを紹介します。まず、以下の図をみてください


上記のイメージにある通り、社内にいる人間はそのままリポジトリへアクセスできますが、その人がノートPCをもって自宅へ帰り、チェックアウトしようとしてもできません。


もし社内にsshログインできるようなゲートウェイサーバがあるのであれば、そのサーバを使ってポートフォワードをしてチェックアウトすればひとまず目的は達成できそうです。 でも、なんか不便だと思います。やり方は様々かと思いますが、社内では
% svn co http://repo.example.co.jp/prjname/
とするだけで事足りたのに、ポートフォワードを使って外出先からチェックアウトする時は
% svn co http://localhost:8080/prjname/
みたいな事をしなくてはならず、スマートじゃない気がします。そもそもリポジトリのURLを同等に扱いたいです。 これをtsocksというコマンドで解決したいと思います。MacユーザはMacPortsから導入するのが楽です。
% sudo port install tsocks
設定ファイルを準備します。以下のような感じで。
% cat /opt/local/etc/tsocks.conf
server = 127.0.0.1
server_port = 1080
tordns_enable = false
server_type = 5
この状態でゲートウェイサーバへログインをして、セッションを貼るようにしてみます。
% ssh -D 1080 ゲートウェイサーバ
上記セッションを活かした状態で、社内ネットワークの「外」からアクセスしてみます。 社内にいるときにチェックアウトしたコマンドの先頭に”tsocks”をつけるだけでsocks経由でのアクセスにすることができます。
% tsocks svn co http://repo.example.com/prjname/
あとはソースコードにバンバンコミットです。社内では
% svn ci -m "test commit" filename
などとして普段通りアクセスしていればよいですし、外出先などでは
% tsocks svn ci -m "test commit" filename
のように、tsocksをつければいいだけです。 subversionを例に使いましたが、gitでも同じ事です。 これだったらあまり難しい事を考えず、どこでも同じURLをつかってリポジトリにアクセスできるので、便利じゃないかと思います。