昨天下午搭好的SVN,今早竟然发现不能随机启动。下面的方法可以解决:
以前的svnserve要想成为windows服务,必须依赖于svnservice或其他工具。从Subversion1.4开始,Subversion本身就集成了Windows服务的工具。
将svn设置成为系统服务自动运行的方法:
在Windows NT中(包括Windows XP, Windows 2000, Windows 2003 Server,Windows7)本身包含了一个安装服务的工具,叫做"Service Control",也就是sc.exe。
例如我的Subversion安装在"C:subversion",版本库在"D:svn_repository",而我希望对应的Subversion服务名为svnservice,安装这个svn服务的命令就可以这样写:
sc create svnservice
binpath= "C:subversionbinsvnserve.exe --service -r D:svn_repository"
displayname= "SVNService"
depend= Tcpip
start= auto
上面的命令中,如果缺少“start= auto”则安装的服务不会随Windows的启动而启动。如果服务安装的有问题,你可能需要删除服务。要删除前面添加的服务,只需要运行"sc delete svnservice","svnservice"就是我们创建服务时使用的名字。
请注意,因为便于察看,上面的命令分为多行,但在实际执行时应该写在一行里。另外,在以前启动svnserve时会使用"-d"选项,也就是守护进程模式,在这里不能使用,会导致服务无法启动。同样,"-i"和"-t"选项也不能使用。(注意:cmd命令运行时要“run as administrator”)
在命令行窗口执行完这个命令之后,服务还没有启动,你可以继续运行
net start svnservice
启动这个服务(命令“net stop svnservice”可以停止服务)。
另外还有两点需要小心处理。首先,如果路径中包括空格,一定要用“”处理“"”号,例如上面的例子中如果svnserve.exe在“C:Program Filessubversion”中,则整个命令如下:
sc create svnservice
binpath= ""C:Program FilesSubversionbinsvnserve.exe" --service -r D:svn_repository"
displayname= "SVNService"
depend= Tcpip
start= auto
其次,sc对选项的格式还有要求,例如“depend= Tcpip”不能写为“depend = Tcpip”或“depend=Tcpip”,也就是“=”前不能有空各,而后面必须有空格。