程序人生

写优雅的程序,做优雅的人

使用 proxychains 访问远程 svn 服务器

| Comments

有多种方法能让 svn 访问远程内部 svnserv 服务器.

一是使用 svn+ssh://… 形式的 repos url,这种方法简单便捷,缺点是内外网访问使用的 repos url 不一致,需要建立多个 work copy, 而且使用 svn+ssh:// 时,使用的 svn 用户为 ssh 的用户。

二是使用 vpn,缺点在于建立 vpn 比较麻烦,特别是 vpn 需要服务器和路由器的支持,常常会出现无法使用的情况。

三是使用 ssh tunnel 和 proxychains 建立 svn 到远程内部 svn 服务器的通信通道,这种方法可以使 work copy 一致,svn 用户一致,麻烦 的地方在于需要额外安装一个软件 proxychains,使用时必须启用 ssh tunnel 和 wrap svn 命令。

下面详细介绍第三种方法的使用。

1.安装 proxychains 软件。下载 proxychains 代码(目前最新是3.1),如果是 Mac 系统还要对代码加一个补丁 参见:ProxyChains for Mac OS X patch

需要特别注意的是,使用的时候请更改执行脚本 proxychains 中 DYLD_INSERT_LIBRARIES 为正确的路径。

2.启用 ssh tunnel。执行一个命令即可,例如

1
   ssh -Nf <user>@<host> -D 127.0.0.1:9050


为方便使用,可把它放到一个 shell 文件中。

3.wrap svn命令。 使用方法是每个svn命令前加上 proxychains 即可,例如

1
2
   proxychains svn up
   proxychains svn commit

为避免每次使用都敲一次 proxychains,可以建立一个 alias。 在 ~/.bash_profile 中增加一行

1
   `alias psvn="/opt/local/bin/proxychains svn"

这样就可以使用下面简单的命令了:

1
2
3
  psvn up
  psvn commit
  psvn stat -r

Comments