一、svn服务端和客户端安装:
1、安装程序:
服务端程序:Setup-Subversion-1.8.17.msi
客户端程序:TortoiseSVN-1.9.7.27907-x64-svn-1.9.7.msi
注意,安装过程中,建议放在盘符根目录,即安装路径中不要有空格和中文。
以往做开发的经验得知,空格和中文会导致错误或bug出现。
如果环境变量路径是C:\Program Files (x86)\Subversion\bin; 建议修改。
不存在说服务端和客户端程序版本不一致等问题。
2、重启电脑!!!!!
3、安装后检查:
安装完成后,重启电脑。
重启电脑,
1)、cmd窗口中输入命令echo %path%,检查svn环境变量路径是否正确。
2)、服务端的是否在客户端前面(是否需要C:\TortoiseSVN\bin没测试)。
比喻:
C:\Subversion\bin;C:\TortoiseSVN\bin;
3)、在命令行输入svn --version,看能否正确得到提示;以及版本号是否是服务端程序的版本号[svn,版本 1.8.17 (r1770682)]。
如果你此时获取不到版本号信息,或获取到的版本号为 1.9.7 说明服务端环境变量路径错误或没配置。
4)、在随便位置点击鼠标右键,看看右键菜单上是否出现SVN Checkout和TortoiseSVN选项。
4、如果以上操作,cmd窗口打印的环境变量中,svn服务端和客户端路径正确,
Subversion在TortoiseSVN前面,任意位置的鼠标右键菜单中有相应的选项,
证明svn安装正确。
二、svn服务器端配置:
1、正确安装好svn后,需要创建服务器仓库:
X:\......>svnadmin create 仓库目录名
如:
K:\test>svnadmin create DKRepos
2、修改服务器访问权限:
打开仓库目录下的conf/svnserve.conf文件,去掉"# "开启相关权限,注意#和空格一起去掉。
关于匿名访问的权限,自行决定是否修改:(一般只允许只读或不让访问)
# anon-access = read
# auth-access = write
用户账号密码访问配置,改成需要账号密码验证:
# password-db = passwd
改成:
password-db = passwd
去掉上面代码行前的#和空格,否则连svn时会提示conf/svnserve.conf文件27行错误
开启了用户账号密码验证后,再打开仓库目录下的conf/passwd文件,在内容最后添加用户:
格式:
用户名=密码
如:
dk=954120245
3、cmd窗口启动svn服务器(启动后cmd窗口不要关闭,若关闭了则svn服务就停止了):
X:\......>svnserve -d -r 仓库路径\仓库名
如:
K:\test>svnserve -d -r DKRepos 或 C:\>svnserve -d -r K:\test\DKRepos
-d :后台运行
-r :以root的身份运行
如果觉得命令行启动服务麻烦,后面有创建系统服务的代码
4、验证svn服务器是否启动成功:
在任意位置鼠标右键,选择TortoiseSVN -> Repo-browser,
在出现的URL窗口中,输入
svn://localhost
或
svn://127.0.0.1
或
svn://当前电脑所在的局域网IP地址
然后确定,看是否能登录上,试试上传下载文件操作。
此时,你电脑有了svn中心服务器了,也有了链接服务器的乌龟壳客户端了。
如果想让别人连你的svn服务器怎么办?告诉别人你的IP地址就可以了,让他连你ip。
比喻:svn://当前电脑所在的局域网IP地址
三、svn系统服务创建:
语法:
sc create 服务的名称 binPath= "\"svn服务器端程序路径\" --service -r 服务器仓库路径" displayname= "显示的名称" depend= Tcpip start= auto
"服务的名称"是给电脑识别的,比喻你要用命令行启动、停止、删除或创建服务时用到的名字。
"显示的名称"是给人看的,比喻你打开系统服务窗口后寻找的名字。
你只需要修改svn服务器端程序路径、服务器仓库路径和显示的名称即可,其他的都别动。
正确方法1:
sc create svnservice binpath= "\"C:\Subversion\bin\svnserve.exe\" --service -r K:\test\DKRepos" displayname= "SVNServer" depend= Tcpip start= auto
正确方法2(未验证):
sc create SVNServer binPath= "C:\Subversion\bin\svnserve --service -r K:\test\DKRepos"
注意:K:\test\DKRepos路径必须是指向服务器仓库的,如果是指向K:\test则是无效的。
完整代码(新建文本文档,粘贴下面代码,保存,更改文件后缀名为bat,用管理员权限运行bat文件,去系统服务窗口查找SVNServer):
**bat代码*************************************************
@echo off
@sc create svnservice binpath= "\"C:\Subversion\bin\svnserve.exe\" --service -r K:\test\DKRepos" displayname= "SVNServer" depend= Tcpip start= auto
@net start svnservice
pause
**bat代码*************************************************
多说一句,cmd窗口输入services.msc,就可以打开系统服务窗口
四、启动停止svn服务:
启动服务:
net start svnservice
停止服务:
net stop svnservice
删除创建的服务:
sc delete svnservice
注意:如果创建服务或删除服务失败,有可能是没有超级管理员权限,用超级管理员模式运行。
五、连不上svn服务器的问题:
*错误提示***********************************************
Unable to connect to a repository at URL 'svn://...'
期望文件系统格式在"1"到"6"之间;发现格式"7"
********************************************************
是否遇到了上面错误提示?*_*
如果你按照我的步骤操作,是不会遇到这个问题的。
不是网上所说的,什么客户端程序版本号高于服务端的。
我一开始为什么强调环境变量?
是因为Subversion的环境变量没配置,或路径错误,或在TortoiseSVN的环境变量后面,
故在创建服务器仓库时,使用了TortoiseSVN\bin下的svnadmin命令。
跟客户端服务端版本号没关系,跟其他操作流程没关系,跟服务创建没关系。
于是,解决这个问题很简单,更改环境变量,确保在cmd下输入svn --version,能得到的是服务端程序的版本号。
再重新执行创建和配置服务器仓库操作即可。