在Windows服务器塔建SVN服务器端,我们推荐使用VisualSVN Server来实现主要的SVN端,他在Windows上比Subversion更容易让新手操作。而Subversion在Windows需要一定的动手能力。而VisualSVN Server也是免费的,不需要费用及其他的顾虑!
1、到官方网站下载VisualSVN Server
官方网址:https://www.visualsvn.com/server/download/
如图显示:目前最新版本为4.3.4版本,根据你的服务器多少位下下载相应的版本即可。
2、在下载完成后,我们进行VisualSVN Server 安装,其安装过程也非常简单,如:
我们点击下一步(Next)
这里我们要打勾,意思是同意软件协议。打勾后我们点击下一步(Next)
这里VisualSVN默认即可,两个单选按钮大概意思为服务器和管理控制台或只有管理控制权限
选择VisualSVN Server安装路径、库、端口及备份,可以自由设置自己的路径。
Location为安装路径、Repositories为库目录、Server Port为端口、Backups为备份地址
注:你可以选择HTTP和HTTPS两种协议,如需使用svn协议也非常的方便,在1.4版本后,Subversion加入了Service运行的功能。端口号可以任意定义。对于HTTPS的端口号默认可以选择443和8443,对于HTTP默认可以选择80、8080和81。个人偏向于使用HTTPS的8443端口,原因很简单HTTPS安全性比较高,虽然443端口是标准HTTPS端口,但如果做WEB开发那肯定就有麻烦,同时Skype也会使用这个端口进行某些通讯。还有就是下面的用于验证的身份,一个是windows验证,一个是Subversion身份验证这里默认是Subversion身份验证。
选择1:Use subversion authentication(使用subversion身份验证)
VisualSVN Server will authenticate users based on internal list of users and their passwords(VisualSVN Server将验证用户基于内部用户和密码的列表)
选择2:Use Windows authentication(recommended for Active Directory environments)使用Windows身份验证(推荐活动目录环境)
VisualSVN Server will authenticate users based on their Windows or Active Directory credentials,with Single Sin-On and two-factor authentication support.(VisualSVN Server 将验证用户根据他们的窗户或Active Directory凭证,与单一的罪和两因素身份验证的支持。)
这个我们选择默认即可
选择安装Install
正在安装文件
安装完成后会询问你是否需要运行VisualSVN Server Manager(一个非常有用的管理工具)
我们默认打开即可,选择Finish
打开控制面板工具既是VisualSVN Server Manager
这即完成了首要安装过程,下面我们来讲讲如何去配置和使用VisualSVN Server完成我们要的
3、修改VisualSVN Server 配置,如修改我们的链接访问SVN 地址URL
右键-选择Properties选项
这是弹出的基本配置控制设置,我们选择我们要设置的Network 网络配置
如图,改成你的服务器IP即可,然后我们可以根据设置的服务器IP访问,如:https://188.188.188.188:8443/svn/
这是基础界面展示信息说明
下面我们来添加一个代码库操作,点击创建一个新的代码库
如上图:在左侧Repository【代码库】右键-Create New Repository...【创建一个新的代码库】或选择新建也一样可以。
如上图说明如下
创建新的存储库-存储库类型-选择新的存储库类型
有两个选择
1、常规FSFS库
创建一个常规的基于标准FSFS subversion存储库数据存储
2、分布式VDFS库
创建一个分布式subversion存储库基于VisualSVN分布式文件系统。VDFS库作为标准subversion存储库,并允许地理分布站点之间的数据复制。
我们只需要默认即可选择第一个。
输入你要创建库的名称,如:rocschool
empty repository(recommended option)空库(默认推荐)
single-project repository(with the top-level'trunk','branches'and 'tags'folders)项目存储库,选择会创建trunk、branches、tags三个子目录
我们默认即可。
库访问权限-指定初始新存储库访问权限
选择1:没有访问权限
选择2:全部subversion用户有读/写访问
选择3:自定义权限
我们还是保持默认即可,点击创建Create
你的创建信息,点击完成Finish
这样我们就完成了一个库的创建,完成后我们需要给他增加访问用户帐号及密码,如下图
在左侧选择Users右键-Create User【创建用户】...或新建-User...
User name【用户名】
Password【密码】
Confirm password【确认密码】
点击OK后我们创建了一个rocschool的用户和密码,密码和用户名区分大小写,需注意。
下面我们给我们创建的库添加用户和权限,如下图
在左侧选择Repositories然后在选择我们创建的库rocschool,然后右键选择Properties...【属性】设置
如图,我们打开了设置面版,我们选择Add...按钮进行添加
如下图
完成了添加及选择了权限。设置好才能使用帐号进入访问操作。我们可以把默认的Everyone权限更改
这样我们就添加完了整个库和用户,然后我们就可以签入源代码到SVN服务器库中,如我在我电脑创建了一个项目,rocschool,我要把这个项目 的源代码签入到服务器SVN代码库(rocschool)里,我们来操作一下。如下图
右键代码库rocschool,点击Copy URL to Clipbaoard【意思为复制rocschool服务器访问网址】,复制出来的如:https://188.188.188.188:8443/svn/rocschool/
这个就是我们外网访问的SVN的网址,我们在电脑导出一下,如下图
右键你项目文件-选择小乌龟TortoiseSVN-导出功能
打开导出来,将出现这个界面,把网址复制进入即可,点击确定。输入我们添加的帐号rocschool和密码即可访问。
如上图
输入正确后签入,这样子就显示完成了。
注:我们的端口是8443,如果你用的是阿里云或腾讯云等服务器一定要到你的服务器配置一下安全组,开放外网8443端口访问。
签入后我们可以看到有一个.svn库管理文件夹,这代码正常。我们新建一个1.txt然后右键-TortoiseSVN-加入【加入版本库】
如下添加成功后显示+号,代码添加正常
我们添加完后需要提交到SVN服务器上,如下图提交
如下图点击提交
提交成功,我们看下服务器
服务器上文件已经提交上来,可以看到1.txt。这样子我们就完成了
关联【绑定服务器目录】
如果我们在服务器的网站,然关联【绑定】这个库到服务器网站的目录怎么操作呢?我们可以来操作一下。
这里是我服务器本身就有网站,想创建一个SVN来管理服务器的网站,或服务器本身就有一个目录,我要绑定进去目录。
如果你的服务器是linux,你可参考在宝塔面板下安装SVN服务端 进行关联
我们来操作吧...
1、如我要把rocschool关联到服务器目录D:\wwwroot\www.rocschool.com下
2、点击这两个其中一个都可以,进入命令操作
3、进入VisualSVN Server PowerShell,这样我们就可以执行SVN命令集合,SVN可参考svn 常用命令大全例子集合版
4、我们使用命令svn checkout 来进行检出到D:/wwwroot/www.rocschool.com目录里,也既是同步关联到此目录。
5、如下是操作检出的所有代码
Windows PowerShell 版权所有 (C) Microsoft Corporation。保留所有权利。 Welcome to VisualSVN Server PowerShell! List of VisualSVN Server cmdlets: Get-Command -Module VisualSVN Get help for a cmdlet: help <cmdlet-name> or <cmdlet-name> -? Get online help for a cmdlet: help <cmdlet-name> -Online PS D:\Repositories> svn checkout https://188.188.188.188:8443/svn/rocschool D:/wwwroot/www.rocschool.com Error validating server certificate for 'https://188.188.188.188:8443': - The certificate is not issued by a trusted authority. Use the fingerprint to validate the certificate manually! - The certificate hostname does not match. Certificate information: - Hostname: iZ1ozirrx7fzthZ - Valid: from Nov 4 07:20:42 2021 GMT until Nov 2 07:20:42 2031 GMT - Issuer: iZ1ozirrx7fzthZ - Fingerprint: FB:0D:18:44:E8:0F:2C:2A:12:08:BF:2F:1D:E2:6A:A7:5D:4E:2D:4B (R)eject, accept (t)emporarily or accept (p)ermanently? t Authentication realm: <https://188.188.188.188:8443> VisualSVN Server Password for 'Administrator': ************** Authentication realm: <https://188.188.188.188:8443> VisualSVN Server Username: rocschool Password for 'rocschool': ************ A D:\wwwroot\www.rocschool.com\1.txt Checked out revision 1. PS D:\Repositories>
5.1、分析上图,我们需要执行检出操作,如下
svn checkout https://188.188.188.188:8443/svn/rocschool D:/wwwroot/www.rocschool.com
执行如上代码后需要选择权限 输入 t即可
然后要求我们输入服务器登录帐号Administrator密码,输入即可
然后是是输入SVN添加的帐号rocschool 回车
在然后输入SVN添加帐号rocschool的密码,输入回车即可
这样就完成了检出操作。
如图检出了.svn版本控制,1.txt是前台添加的,不需要管。
这样子就算完成一半,我们需要在本地提交是同步更新至此目录,他和linux不一样的写法,下面我们来操作一下。
6、添加在VisualSVN 钩子脚本,同步到web应用目录
方法一:如果你安装了宝塔,可以在宝塔里添加,如:
在宝塔文件里目录里找到创建版本库的目录,我们上面创建的是D:/Repositories/rocschool
然后进入hooks目录里,如图
然后新建一个文件,名为post-commit.bat
然后我们把如下句法复制进去
@echo off SET REPOS=%1 SET USER=%2 SET SVN="C:\Program Files\VisualSVN Server\bin\svn.exe" SET DIR="D:\wwwroot\www.rocschool.com" (call %SVN% update %DIR% --username rocschool --password rocschool --non-interactive)
如上句法里的SVN=是你安装的SVN地址,我们前面安装的是C盘,如上地址,你要检查你的是否一样
DIR为同步的目录地址,改为你的地址即可
最后一行里的username 后面的rocschool这里是你的帐号,改为你的帐号即可 password 密码,这里我们输入的是rocschool把这个改成你的密码
然后我们保存即可
方法二:也可以在服务器目录找到你目录操作,如下图:
找到创建的库目录,并进入到hooks目录下,如:D:\Repositories\rocschool\hooks
在目录下创建一个文本文件,名字为post-commit.txt如下图
打开文件并复制如下代码进入保存
@echo off SET REPOS=%1 SET USER=%2 SET SVN="C:\Program Files\VisualSVN Server\bin\svn.exe" SET DIR="D:\wwwroot\www.rocschool.com" (call %SVN% update %DIR% --username rocschool --password rocschool --non-interactive)
保存后我们需要把这个文件改成post-commit.bat可执行文件,如下先把文件扩展名显示出来我们才可以改
然后我们把post-commit.txt文件后名字后面的.txt改成.bat如下图
这样子就完成了我们本机提交代码同步更新命令,但还不行,因为我们提交的时候他们出现如下代码,如果你的不出现那就正常了,如果出现来看看怎么操作
注:这是因为权限问题,调用钩子post-commit.bat的时候服务却使用的是 用户"network service(网络服务)" 而它只是一个阉割鸡而已,根本木有传说中的写操作权限... 如下提交错误
post-commit hook failed (exit code 1) with output: ...
我们来给他操作一下
找到控制面板\系统和安全\管理工具\服务
服务里面找到如下VisualSVN HTTP Service 或VisualSVN Service 名称,看你版本叫什么。右键属性
找到登录选项里,看此帐户为网络服务,这个是不对的,没有权限,所以你提交他们出错。我们需要改为服务器users组中的用户,可以自己添加也可以使用服务器登录帐号
我们可以去添加一个帐号进行管理,到控制面版找到计算机管理打开
如下图展示的用户
也可右键新建一个
然后即可回到服务中配置、点击浏览、高级、立即查找,找到刚才新建的rocschool选择,然后确定定。
在确定
如下图,密码处需要输入 你刚创建rocschool里的密码,确定保存。
如下图,保存后我们需要重起一下服务
重新启动后,你可以去试试你提交还有没有问题,如果没有问题表示你完成了所有操作。
如果你在使用或其它错误可以在留言,我们将为你解答
其它错误说明:
svn: E230001: Server SSL certificate verification failed: certificate issued for a different hostname, issuer is not trusted
svn: E230001:服务器的SSL证书验证失败:证明为一个不同的主机名,发行人并不可信
解决:此错误是你在配置服务帐号里的帐号没有验证成功,SSL,一般是因为你在服务-登录里选择本地系统,然后勾选的设置桌面交互或者管理员权限而出错,请你按上面的在此帐户里配置一个user组帐号即可解决。