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,如下图所示:


windows环境下搭建svn服务器
 

 

 

图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等。

 

相关推荐