有多种方法能让 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
|
|
为方便使用,可把它放到一个 shell 文件中。
3.wrap svn命令。 使用方法是每个svn命令前加上 proxychains 即可,例如
1 2 |
|
为避免每次使用都敲一次 proxychains,可以建立一个 alias。 在 ~/.bash_profile 中增加一行
1
|
|
这样就可以使用下面简单的命令了:
1 2 3 |
|