配置公网访问内网SVN服务器

一直以来,我都是使用VisualSVN搭设的SVN服务器,由于和molefish同学在一个内网里,直接用PC Name就可以访问代码库。今天想要让两个外地的同学也访问到我机器上的代码库,看来需要改一下配置了。

我首先想到花生壳,通过动态域名解析(DDNS)把域名绑定到路由器的动态ip上,就可以保证外网能访问到我的机器了,但是还需要在路由器上做一些配置,这里以TP-Link路由器为例,在浏览器中打开http://192.168.1.1登录配置页面:

1. 设置静态ip

选择 DHCP服务器 -> 静态地址分配,为内网内的机器分配静态ip

静态ip.jpg

2. 设置端口转发

选择 转发规则 -> 虚拟服务器,将外网对443端口的访问转发到安装了SVN Server服务的机器ip上,这里如果设置了80端口,那么你的Web服务器也会对外可见了

转发.jpg

3. 配置动态DNS

大部分路由器都提供了动态DNS的支持,我的路由器支持花生壳(www.oray.net)和科迈网(www.comexe.com)两家DDNS服务商,在这里填入你在服务商处注册的用户名和密码,登录成功后会看到你绑定的域名

ddns.jpg

以上三步配置完成后,在浏览器中输入SVN Server的地址,如 https://xxxx.gicp.net,能成功打开的话说明配置成功。然后就可以在外网使用TortoiseSVN客户端检出代码了

一键清除SVN信息

当把一个文件夹加入到svn里进行版本管理以后,无论把它复制到什么地方,它都仍然在svn管理之下,其原因是系统在每个目录下都生成了隐藏的.svn目录,里面保存着svn的相关信息。有时候我们需要一个纯净的项目文件,想要删除这些.svn文件夹,要一个一个目录去删是很麻烦的,特别是目录结构比较复杂的时候,能让人抓狂死。

那么有没有批量删除的方法呢,我们知道批处理可以搞定

FOR /r "%1" %%f IN (.svn) DO RD /s /q "%%f"

当然我们希望可以更简单一点,比如直接在某个文件夹上右键就可以清除这些信息,那么我们可以通过注册表来添加右键shell,就像流氓软件常干的那样 o(╯□╰)o

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\清除SVN信息] @="清除.SVN文件夹"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\清除SVN信息\command]
@="cmd.exe /c \"TITLE 清除 %1 中的.SVN文件夹 && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""

新建一个文本文件,写入以上内容,然后重命名为delSvn.reg,双击之

然后找一个文件夹,肆意地凌辱它吧~

delsvn.jpg