公司的笔记本是WinXP系统,在其上部署SVN时非常顺利,很快搞定。
而自己的笔记本是Vista系统,在其上部署SVN的时候遇到了很大的问题,让我甚至想把Vista系统换装成XP。好在最后问题解决了,记录下来供人参考。
0、考虑到以后都要在自己这台Vista笔记本上导入、导出文件,所以固定IP是比较重要的,固定为:192.168.1.250,网关和DNS都是192.168.1.1,也就是路由器的IP。
1、首先要安装最新版本的Silksvn(要选择Complete安装,否则只有客户端而没有服务端程序),下载地址是:https://www.sliksvn.com/en/download,目前的版本是:1.6.3。接着安装TortoiseSVN,目前版本也是1.6.3。
2、安装完成后,创建新目录D:/Repository/svn_repos,在该目录中创建repository(TSVN->Create Repository Here)。
接着修改D:/Repository/svn_repos/conf/中的svnserve.conf和passwd文件,创建供我使用的用户名和密码。具体步骤此处略。
3、启动SVN Server服务,运行下列命令:
svnserve -d -r D:/Repository/svn_repos
服务启动后, 用下列命令查看repository中的文件,得到了不同的结果:
- svn ls svn://localhost——可以工作
- 用TSVN的Repository Browser查看,URL输入svn://localhost——出错,错误提示:svn: Can't connect to host '192.168.1.250': No connection could be made because the target machine actively refused it.
- svn ls svn://192.168.1.250(本机IP)——出错,错误提示:svn: Can't connect to host '192.168.1.250': No connection could be made because the target machine actively refused it.
- svn ls svn://127.0.0.1——出错,错误提示:svn: Can't connect to host '192.168.1.250': No connection could be made because the target machine actively refused it.
- 上面的这些URL在Winxp下都是可以使用的。
4、用“netstat -a | find "3690" ”命令查看端口,发现SVN默认打开的端口3690未绑定到特定的IP,而是貌似IP丢失了,如下所示:
TCP [::]:3690 Simon-PC:0 LISTENING
而同样的配置过程在WinXP上是能工作的,SVN打开的端口应当绑定到本机自身上,如下所示:
TCP Simon-PC:3690 Simon-PC:0 LISTENING
上Google搜索相应的文章,说一种可能是IPv6造成的,建议关闭IPv6(在网络连接属性设置中,具体步骤略)。但是关闭IPv6后好像并不管用,svn ls svn://192.168.1.250和TSVN仍然是出现原来的错误,眼看在这台笔记本上不能作为server了,要不就重装系统到XP去。
5、看到了svn.exe程序的一个参数,--listen-host,试着绑定本机的固定IP,看能否奏效。使用如下的命令:
svnserve -d -r D:/Repository/svn_repos --listen-host 192.168.1.250
还好的确奏效,从本机使用如下命令可以看到Repos中的文件。第一次访问时要输入用户名和密码,在svnserve.conf和passwd文件中修改。
- 用TSVN的Repository Browser查看,URL输入svn://192.168.1.250——工作正常
- svn ls svn://192.168.1.250——工作正常
- 从局域网的其他机子上访问svn ls svn://192.168.1.250——工作正常
- 但是svn://localhost 和 svn://127.0.0.1都不能使用。
用“netstat -a | find "3690" “命令查看SVN打开的端口,发现3690端口已经绑定到了特定的IP上,如下所示:
TCP 192.168.1.250:3690 Simon-PC:0 LISTENING
6、分析:
可能是因为我固定了Vista机器的IP,造成必须将监听主机绑定到本机的固定IP上。如果我让机子动态获取IP,也许不用--listen-host参数也能够使用SVN了,但我没有验证这一想法。
==========================================
问题补充:
重装系统后,出现如下错误:期望文件系统格式在“1”到“3”之间;发现格式“4”。
这个问题是SilkSVN和Tortoise SVN之间版本不匹配造成的,将两者都安装到最新版本,则问题解决。