windows系统使我们经常使用的操作系统怎么才能使用我们现在经常使用的操作系统不变的情况下继续我们的SVN之旅,我们在综合了好动种方法的同时感觉这些内容非常贴近我们SVN在Windows种的应用与配置.
1.下载文件,
下载最新版本subversion,我这里选择svn-1.4.5-setup.exe
下载 "Subversion Windows Service" 软件包
下载 TortoiseSVN shell integration utility
2.安装Subversion 服务器
由于我下载的是setup.exe版本,安装程序安装后会自动设置系统变量.如果你下载的是zip版就需要手动设置系统变量.
setup.exe版直接安装就可以了.安装到D:/Program Files/Subversion
首先创建SVN储存库(repository)
svnadmin create F:/svn/
repository创建完毕后会在目录下生成若干个文件和文件夹,dav目录是提供给Apache与mod_dav_svn使用的目录,让它们存储内部数据;db目录就是所有版本控制的数据文件;hooks目录放置hook脚本文件的目录;locks用来放置Subversion文件库锁定数据的目录,用来追踪存取文件库的客户端;format文件是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号;
3.配置SVN服务器
(这个位置就是在你建储存库的地方F:/svn)
打开/conf/目录,打开svnserve.conf找到一下两句:
# [general]
# password-db = passwd
# anon-access = none
# auth-access = write
去之每行开头的#,其中第二行是指定身份验证的文件名,即passwd文件.anon-access = none 是匿名用户不能访问,必须要有用户名和密码。(注意:问题就出在这,一定要注意格式去掉注释后要顶格不能有空)
同样打开passwd文件,将
# [users]
# harry = harryssecret
# sally = sallyssecret
格式为“用户名 = 密码”,如可插入一行:admin = admin888,即为系统添加一个用户名为admin,密码为admin888的用户
4.运行SVN服务器
运行SVN服务
在命令行执行
svnserve --daemon --root F:/svn
服务启动,--daemon可简写为-d,--root可简写为-r,可以建立一个批处理文件并放在windows启动组中便于开机就运行SVN服务(注意:这是临时打开的服务,命令执行后不能关闭窗口)
也可以制定subversion工作的端口:svnserve -d -r f:/svn --listen-port 9999
用后台服务的方式可以设置开机自动执行。
D:/Program Files/Subversion/bin>sc create svnservice binpath= "C:/Program Files/Subversion/bin/svnserve.exe --service -r f:/svn --listen-port 9999"
就可以用net svnservice stop 或者start来启动服务了 也可以在Sevices.msc来启动了。
5、用客户端访问
格式:svn://服务器IP
---------------------------------------------------------------------------------------------------------
基于svnserve的服务器,权限文件authz配置的常见问题及解答
最近在我用Subversion论坛(http://www.iUseSVN.com/bbs)经常有人提到这样的问题:
为什么我的客户端没有写权限?
为什么我的权限没有起作用?
总结他们的配置,发现
都是用svnserve作为服务器,
都在svnserve.conf中使用了authz-db选项
原因可能如下:
1,配置authz时,没有注意svnserve启动参数-r所指定的目录。
这里有两种情况:
A:-r直接指定到版本库(称之为单库svnserve方式)
比如,有一个库project1,位于D:/svn/project1
使用以下命令启动svnserve
[Copy to clipboard] [ - ]CODE:
svnserve -d -r D:/svn/project1
在这种情况下,一个svnserve只能为一个版本库工作
authz文件如果配置成下面这样就是错的,
[Copy to clipboard] [ - ]CODE:
[groups]
admin=user1
dev=user2
[project1:/]
@admin=rw
@doc=r
应该配置成
[Copy to clipboard] [ - ]CODE:
[groups]
admin=user1
dev=user2
[/]
@admin=rw
@doc=r
因为[project1:/]表示库project1的根目录,而按上面的启动参数,是没有库的概念的。
使用类似这样的URL:svn://192.168.0.1/ 即可访问project1
B:-r指定到版本库的上级目录(称之为多库svnserve方式)
同样,有一个库project1,位于D:/svn/project1
如果使用以下命令启动svnserve
[Copy to clipboard] [ - ]CODE:
svnserve -d -r D:/svn
这种情况,一个svnserve可以为多个版本库工作,
这时如果想限制指定库的指定目录,就应该指定具体的库,像这样
[Copy to clipboard] [ - ]CODE:
[groups]
admin=user1
dev=user2
[project1:/]
@admin=rw
@doc=r
如果此时你还用[/],则表示所有库的根目录,同理,[/src]表示所有库的根目录下的src目录
使用类似这样的URL:svn://192.168.0.1/project1 即可访问project1
这样的URL:svn://192.168.0.1/project2 即可访问project2
2,对中文目录进行权限控制时,没有将权限文件authz改为utf-8格式。
svn对于非英文文件名和目录名使用utf-8格式编码处理,要对中文目录进行正确控制,
应该使用无BOM的utf-8格式,如何将默认的文件转为utf-8,
我使用的是UltraEdit的菜单"ASCII to UTF-8 (Unicode Editing)"。在UltraEdit的配置中,可以设置有无BOM