您的位置:首页 > 其它

安装svn(Setup-Subversion-1.7.7)认证失败的解决办法,附加注册服务

2012-12-20 00:23 543 查看
服务器安装Setup-Subversion-1.7.7 安装路径:D:\Subversion

在D:\根目录新建SVN目录做为svn的版本库目录。

接着,在D:\SVN\目录下新建一个项目bobo目录。然后,在该目录上右键,选择:TortoiseSVN -> 在此创建版本库,点击“确定”(注意:不要创建目录结构-理由:由于本人对SVN不了解,经过测试,如果创建了目录结构,那么同步到客户端的项目文件中就会多出三个目录:branches、tags、trunk,目前本人尚未掌握这个功能用法,因此,为了保持同步下来的内容清洁,在此不创建目录结构。)

接下来,开启服务端:

错误开启方法:

svnserve -d -r D:\svn\bobo

正确开启方式:

svnserve -d -r D:\svn

由于认证失败,在网上找了很长一段时间的相关内容,都无法解决。经验尝试终于解决问题:

svnserve.conf内容配置:

[general]
anon-access = read
auth-access = write
password-db = passwd
#authz-db = authz
realm = My First Repository
注意上面我注释了#authz-db = zuthz 这项。如果去掉注释,则必会出现认证失败这一项。

如果其它文件未动,那么,你可以浏览版本库了,浏览地址是:svn://服务器IP/bobo

但是随后发现,没有出现帐号密码,这样就不太安全。

关于svnserve.conf的内容配置来源:SVN 认证失败

解决办法是:

passwd文件内容:

[users]
# harry = harryssecret
# sally = sallyssecret
admin = admin
test = test
格式是:帐号 = 密码 一个用户为一行

接着:将svnserver.conf的内容中:

anon-access = read 改为 anon-access = none 即可。

总结:

一、配置

[general]
anon-access = none   #使非授权用户无法访问 如果该值为read,则非授权用户可读。这就为什么不用输入帐号密码就可访问的原因了
auth-access = write  #使授权用户有写权限
password-db = passwd #指明密码文件路径
#authz-db = authz    #访问控制文件
realm = My First Repository


二、指令

启动服务 执行svnserve -d -r svn服务根目录

svnserve指令用于启动svn服务,-d指明以守护模式运行,svn自动在3690端口监听。3690是默认端口,可以使用“--listen-port=”或者“--listen-host=”来指定其它端口。-r选项用来指定svn服务的根目录,这样用户就可以使用相对路径访问,而不用提供完整路径。

使用以下命令检出 svn checkout svn://127.0.0.1/dir 。IP需要根据具体情况调整,dir为版本库路径,若在启动时已指定则可省略。

版本库信息在版本库文件夹里,所以要删除版本库只需要删除版本库所在的文件夹即可。 另外工作副本只是自己维护的文件夹,可以用Windows直接删掉,对别人没有影响。千万不要使用版本库的删除命令,否则版本库里的内容也会被删除。

三、上面我说了,如果去掉authz-db = zuthz前面的#号,必然认证失败。我在这要纠正一下。无知者无畏啊。经过测试,顺利通过认证

1、将上面的authz-db = authz 前面的 # 号去掉

2、修改authz文件

[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average

[groups]
harry_and_sally = admin,sally # 这里我采用分组形式。因为是团队合作,所以有多个人
# harry_sally_and_joe = harry,sally,&joe

# [/foo/bar]
# harry = rw
# &joe = r
# * =

[bobo:/] #对bobo仓库授权
@harry_and_sally = rw #r 表示读 w 表示写
# * = r # * 通配符,表示所有人,如果去掉前面#号,表示任何人可访问(只读访问,不可写)——注意:经测试,去掉#后,仍需要验证。


如果不采用组的方式,配置如下:

[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average

[groups]
# harry_and_sally = zm2714,sally
# harry_sally_and_joe = harry,sally,&joe

[bobo:/]
admin = rw
# &joe = r
#* =r

#[bobo:/]
#@harry_and_sally = rw
# * = r


注册服务

subversion服务器作为服务启动

subversion服务器支持windows和linux。

在linux下,使用命令启动服务:

svnserve -d -r /svnroot

-d 表示--daemon,即关掉执行命令的窗口,服务继续存在。 -r 表示--root,即指定库的根目录。

而在windows下,用同样的命令也可以,只是关掉cmd窗口后,服务也消失了。这个问题的解决办法,在subversion的1.4版以前,是用svn windows service wrapper,将其包装为服务。而svn1.4以后,是可以直接支持以服务器启动的。方法就是利用windows xp,2000自带的工具service control,执行文件是sc.exe。

注意:要想使用"sc"命令必须安装Windows 2000/2003 Resource Kit(资源工具包),否则使用该命令无效。

在cmd窗口输入命令如下:

sc create svnservice binpath= "D:/Program Files/Subversion/bin/svnserve.exe --service -r D:/mysvn" displayname= "SVNService" depend= Tcpip start= auto
binpath指定svnserve的路径和命令。注意其参数是--service,而不是--daemon. 不能用-d和-i,-t等参数。

start= auto表示服务自动启动。注意,等于号的左边无空格,而右边必须有一个空格

displayname="SVNService" 表示注册服务的名字。

执行完后,系统返回

[SC] CreateService SUCCESS

表示服务创建成功。

启动服务命令:

net start svnservice
停止服务命令:

net stop svnservice
删除服务命令:

sc delete svnservice


自动同步/更新

将以下内容保存为批处理文件,执行后,自动将SVN服务器最新版本同步到WORKING_COPY目录

@echo off

SET PATH=%PATH%;

SET WORKING_COPY=D:\web\iframe_firstYii
svn update %WORKING_COPY% --username xxx --password xxxx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐