windows环境下搭建svn服务器
需求:为了搭建持续集成环境,必须有个SCM系统来存储代码,这里选择Subversion 。
一、软件下载
1)服务端:Subversion
进入网站:http://sourceforge.net/projects/win32svn/ 下载最新包,如:Setup-Subversion-1.7.8.msi ,双击安装。安装路径自己选择,如:C:\Program Files,系统会自动生成Subversion子目录。安装完成后完整路径为:C:\Program Files\Subversion。
因为要用到C:\Program Files\Subversion下的一些命令,如svnadmin,应在系统环境变量中配置其Path,如下图所示:
图1
2)客户端:TortoiseSVN
进入网站:http://sourceforge.net/projects/tortoisesvn/?source=dlp 下载最新包:TortoiseSVN-1.7.11.23600-win32-svn-1.7.8.msi,双击直接安装
二.建立Repository(保存文档各个版本的数据库),必须建立在服务端
1)在服务器端建立一个空目录,如:D:\Huangqin\Tools\SvnRepository\project1。(这个过程可以省略,在第三步的时候可以自动创建)
2)进入dos
3)svnadmin create --fs-type fsfs D:\Huangqin\Tools\SvnRepository\ project1
注意:
A》svnadmin安装时已经自动加到系统路径了(若没,在照图1所示加入);
B》 --fs-type中间没有空格;
C》这里选择了 Berkeley Database(BDB)方式做为版本库的类型;
D》 也可用TortoiseSVN这个客户端工具实现创建(是的,安装好客户端后,在相应的目录右击,在右键菜单中创建);
E》 D:\Huangqin\Tools\SvnRepository是版本库的位置(代码仓库目录,集中放代码的地
方),也可以取别的名字,别的路径,一个版本库可以包含多个项目;
F》 project1是某个项目名称。
三.在服务端配置Repository,主要的目的是控制访问权限和添加用户。
1)打开D:\Huangqin\Tools\SvnRepository\ project1 \conf\svnserve.conf
2)把以下行前的#去掉,保存
# anon-access = read
# auth-access = write
# password-db = passwd
其中anon-access = read表示匿名用户可读,也可改成none或者write,分别表示没权限和可写,如果anon-access设成可写了,就是谁都可以改代码了,这是我们不希望的。
auth-access = write表示认证用户可写。
password-db = passwd表示密码文件是passwd。
编辑passwd内容如下:
[users]
svn = pass
表示有个用户叫svn,密码是pass,下面可以再添加用户
3)多个用户就加多行
四.在服务端启动subversion服务器。
1)进入dos
2)svnserve.exe -d -r D:\Huangqin\Tools\SvnRepository
3)服务启动后,在服务器端的3690端口监听客户端的连接请求。
4)参数的作用是:当在客户端用“svn://xxx/ project1”(xxx可以是服务器端主机名或ip)访问服务器的Repository时, 服务器会知道你要访问的Repository路径是“D:\Huangqin\Tools\SvnRepository\ project1”。
5)如果当我有两个完全不相干的项目要进行版本控制时,可以再建立一个空目录
“D:\Huangqin\Tools\SvnRepository\project2”,并在其中再建立一个Repository,
此时客户端就可以用“svn: //xxx/project2”访问“D:\Huangqin\Tools\SvnRepository \project2”下的Repository。
6)如果想要注册为window服务,
首先进入dos,
在终端执行:sc create svnserver binpath= "C:\Program Files\Subversion\bin\svnserve.exe --service -r D:\Huangqin\Tools\SvnRepository" displayname= "SVNService" depend= Tcpip start= auto
注意:
A》请务必在一行内输入。如depend= Tcpip中,=后有一个空格,这个一定要注意。
B》 svnservice ,用sc delete 命令删除时用这个命令,用这个名字
C》displayname:使用这个名字给用户显示看的
D》SVNService是服务名,也可以替换
E》C:\Program Files\Subversion是服务器安装svn的路径,可以替换
7)如果想注销window服务
进入dos
sc delete SVNService
6 步骤可以用 bat 脚本实现:
注册成windows服务的脚本(setupSVNService.bat):
sc create svnserver binpath= "C:\Program Files\Subversion\bin\svnserve.exe --service -r D:\Huangqin\Tools\SvnRepository" displayname= "SVNService" depend= Tcpip start= auto
7
sc start svnserve
pause
解释:
sc 是windows 环境下注册服务的工具,后面都是它需要的参数,binpath:服务所要运行的目标程序。
摘除windows服务的脚本(deleteSVNService.bat):
sc delete svnserve
pause
五、在客户端安装eclipse的svn插件,安装好后几乎无需任何配置
在线安装方式的url是http://subclipse.tigris.org/update
六、在客户端,首先确保服务打开,打开视图,window -> show view -> other -> svn -> svn资源库
右键单击,新建->资源库位置-> svn://xxx/项目名称,出现一个资源库,
右键单击,取出为->作为新项目取出,并用向导配置。选yes
java->java项目,next->finish.
七、在客户端,在eclipse的左边视图项目根目录下加文件夹,加文件,然后
在eclipse的左边视图的文件夹或根路径下提交,更新。(右键单击)
所有的操作都在eclipse的界面内完成,工作效率极高。比TortoiseSVN方便,
注意eclipse的配置文件不要提交上去,就是建立eclipse项目时会自动建立在项目文件夹里的两三个文件。
因为是“作为新项目取出”。
=================总结========================
一、服务器配置:
我们要采用svnserve做服务器,不用apache,因为这个简单,也够用了。
首先建立一个仓库,用来存储所有今后要管理的项目,比如F:\SVN,然后把SVNService的可执行文件解压出来放到Subversion安装目录下的bin目录,用它来把svnserve安装称为Windows服务,这样它就可以随着计算机启动自动启动了,在命令提示符下进入Subversion安装目录下的bin目录,执行命令:
SVNService -install -d -r F:\SVN
这里F:\SVN是我们的代码仓库所在目录。
执行完后,服务已经安装,但是没有启动也没有配置成自动启动,需要手工在Windows服务管理里面设定。这样,服务器端就配置好了。
因为TortoiseSVN和资源管理器紧密结合,所有功能都在右键菜单里
二、 使用
1. 建立项目。在代码仓库目录里,这里是F:\SVN,建立一个新目录,名字改成你项目的名字,这里用test。在这个目录上点击右键,选择Create Repository here,在弹出的对话框里选择数据库类型,两种数据库具体差别请看《Version Control with Subversion》这本书,我们选择FSFS,点击OK后,项目仓库就建立成功了。
2. 设定访问权限。进入刚建的项目仓库的conf目录,编辑文件svnserve.conf,将上面那些注释去掉,文件内容如下:
[general]
anon-access = read
auth-access = write
password-db = passwd.conf
其中anon-access = read表示匿名用户可读,也可改成none或者write,分别表示没权限和可写,如果anon-access设成可写了,就是谁都可以改代码了,这是我们不希望的。
auth-access = write表示认证用户可写。
password-db = passwd.conf表示密码文件是passwd.conf。
在svnserve.conf所在目录新建一个文件passwd.conf,编辑内容如下:
[users]
flmn = password
表示有个用户叫flmn,密码是password,下面可以再添加用户。
3. 将代码导入项目仓库。在要导入仓库的目录上面点击右键,点击TortoiseSVN项的子菜单Import…在URl里面填写svn://服务器IP/test,这里test就是刚刚建立的项目仓库,在下面填入注释,点击OK,弹出提示输入用户名密码对话框,填入flmn和password,就可以把代码导入仓库了。刚刚导入的文件并没有显示被svn管理,现在把这个目录里文件都删除,再在右键菜单里选择SVN Checkout…就可以导出代码,再看这个目录,就有个小图标在文件夹图标下面了。
4. 对于其它操作,和CVS差不多,这里就不赘述了。可以参考TortoiseSVN帮助文件。
============================================
SVN的错误:Error: Can't connect to host '': 由于目标机器积极拒绝,无法连接:
安装完TSVN之后,checkout时报错,并且后来在cmd命令行下,测试svn的3690端口是否打开:telnet localhost 3690 ,结果也是不成功,后来发现少执行了一步操作。
正确的做法:安装完TSVN之后,在subversion的安装路径下,找到bin文件夹,需要完成下面几步操作:
1、在下面新建一个setupservice.bat文件,内容是
sc create svnserve binpath= "C:\Program Files\Subversion\bin\svnserve.exe --service -r d:\svnhome" depend= Tcpip start= auto
sc start svnserve
pause
保存
2、运行,这是在服务里可找到一个名为svnserve的服务。这样就不会报“由于目标机器积极拒绝,无法连接。”这个错了。
我后来找到了我是因为没有执行第二步,所以svnserve没有作为一个服务启动。
这是在cmd命令行下查看打开的端口:netstat -ano就看到3690端口打开了
========================================
手动处理windows服务:
使用 sc 安装一个服务 telnet
sc create TlntSvr binPath= “D:\WINDOWS\system32\tlntsvr.exe ” DisplayName= “Telnet ”
[SC] OpenService FAILED 1060:
没有已安装的服务存在
SC常用命令参数
sc create 创建一个服务
sc delete 删除一个服务
sc query 查询服务
sc config 配置服务
sc stop 关闭服务
sc start 开启服务
sc pause 暂停服务
SC简介
SC是一个与NT服务控制器,服务进程进行通信的控制台程序,它可以查询和修改已安装服务的数据库。
语法:sc [command] [service name]
… ,选项为“\\ServerName”的形式。
主要的命令包括:query,config,qc,delete,create,GetDisplayName,GetKeyName,EnumDepend等。