首页 > 代码库 > SVN 服务器的搭建

SVN 服务器的搭建

      当做大的项目是,svn是代码管理的好工具,如果是用自己的服务器,那么需要搭建SVN服务器。 

    Subversion是一款非常优秀的svn服务器工具,笔者采用VisualSVN server ,因为它集成了apache,不用再进行过多的配置。

     首先下载安装 VisualSvn Server

      

     选择VisualSVN ,然后下载。

  


        Download 之后,进行VisualSVN的安装

       

     点next

      

       继续next

     
    

   location 选择安装VisualSVN Server 的目录

    Repositories 是代码版本位置

    Server Port为svn服务器的端口,默认为443,启用https连接

    安装完成后

    

  

接下来我们安装TortoiseSVN,双击安装包,进入下一步.如图:

点击Next,进入下一步,如图:

选择接受,然后点击Next,进入下一步,如图:

选择安装路径,然后点击Next,进入下一步,如图:

点击Install,开始安装,如图:

等待安装完成,安装完成后如图:

接下来我们安装简体中文语言包,这个非常简单,一路Next就行,就不截图了.语言包安装完成以后在桌面任意空白地方单击鼠标右键,会在右键菜单里找到SVN,如图:

选择设置,进入下一步,如图:

在右边的语言里面选择简体中文,然后点击应用,确定,汉化即完成,如图:

首先打开VisualSVN Server Manager,如图:

可以在窗口的右边看到版本库的一些信息,比如状态,日志,用户认证,版本库等.要建立版本库,需要右键单击左边窗口的Repositores,如图:

在弹出的右键菜单中选择Create New Repository或者新建->Repository,进入下一步:

输入版本库名称,勾上Create default structure复选框(推荐这么做).点击OK,版本库就创建好了,版本库中会默认建立trunk,branches,tags三个文件夹,如图:

这时候我们将项目导入到版本库中,找到你的项目文件夹,在项目文件夹上点击鼠标右键,找到SVN菜单,选择导入,如图:

在弹出的对话框中填上版本库URL,这个URL可以从VisualSVN Server Manager中获取,在你的版本库上单击右键,选择Copy URL to Clipboard,这样就把版本库URL复制到你的剪贴版了.如图:

将复制的版本库URL粘贴上,在URL后面加上trunk子路径.然后在导入信息里面填上导入信息"导入项目到版本库".如图:

点击确定,所选中的项目就会被导入到版本库中.如图:

项目导入到版本库以后,不能随便让谁都能够读写版本库,所以需要建立用户组和用户.

在VisualSVN Server Manager窗口的左侧右键单击用户组,选择Create User或者新建->User,如图:

在弹出的对话框中填写User name和Password,然后点击OK,如图:

用相同的方式分别创建用户Develpoer1,Develpoer2,Develpoer3,Test1,Test2,Manger六个用户,分别代表3个开发人员,两个测试人员和一个项目经理,如图:

然后我们建立用户组,在VisualSVN Server Manager窗口的左侧右键单击用户组,选择Create Group或者新建->Group,如图:

在弹出窗口中填写Group name为Developers,然后点Add按钮,在弹出的窗口中选择三个Developer,加入到这个组,然后点Ok,如图:

用相同的方式创建组Managers,Testers,如图:

接下来我们给用户组设置权限,在MyRepository上单击右键,选择属性,如图:

在弹出的对话框中,选择Security选项卡,点击Add按钮,选中Developers,Managers,Testers三个组,然后添加进来,给Developers,Managers权限设置为Read/Write,Tester权限设置为Read Only,如图:

到此,服务端就完成了.

接下来,我们用客户端去检出代码,在桌面空白处单击右键,选择SVN检出,在弹出的对话框中填写版本库URL(具体获取方式,上面讲上传项目到版本库的时候讲过),选择检出目录,点击确定.如图:

开始检出项目,如图:

检出完成之后,我们打开工作副本文件夹,会看到所有文件和文件夹都有一个绿色的√.如图:

至此,创建版本库和使用TortoiseSVN导入项目,检出项目已经介绍完毕.

  此时在一个局域网的人就可以用SVN客户端提交代码了。

 笔者的服务器是阿里云主机,所以必须得让VisualSvn sever能让外网访问,只要把地址改为 https://你的域名或IP/svn/yc/

 yc是建立的版本库。

  然后就可以通过浏览器web的方式或者 svn客户端提交代码。但是当采用https连接时,笔者的svn始终连不上visualsvn,已连接就崩溃,最后笔者只好换成了HTTP连接,自定义端口为8080

  但是接下来的问题是,笔者的目的是用svn管理服务器apache下的网站目录,方便的提交代码,并更新网站目录。

  当笔者用svn提交成功时,发现并不能改变网站目录下的文件。

   百度了好久才发现,服务器端的ViusalSVN需要编辑一个hooks钩子,把svn客户端提交的代码更新到相应的网站目录。而不是它的版本仓库。

   具体方法是,在服务器和客户端分别用svn checkout,注意要同时检出,以便版本一样.然后编写svn 钩子

    

实施:

1.创建web站点目录 d:\www

2.将项目检出到d:\www(可在服务器上安装tortoiseSVN来检出)

3.右击我的电脑--管理--服务,找到visualSVN serve ,右击选择属性---登陆--选择本地系统用户(允许与桌面交互)
保存,重启visualsvn服务

4.在代码库的hooks目录里新建post-commit.bat,贴入以下代码:


1@echo off
2SET REPOS=%1
3SET REV=%2
4SET DIR=%REPOS%/hooks
5SET WORKING_COPY=D:\www
6SET PATH=%PATH%;
7svn update %WORKING_COPY% --username admin --password admin
admin admin是你的svn登陆帐户密码。 

PS.建议你需要把svn安装目录下的bin目录添加到你的环境变量中。


       如果小乌龟svn提交时 提示 fail start hooks, 那么应该是VisualSVN Server 读写权限的问题。

       解决办法:  在windows 服务中,修改VisualSVN服务的登录账号为本机。。

     就可以了。