subversion的配置
作者:admin 日期:2012-05-23
工作需要和Takwai一起开发,于是找到Subversion和TortoiseSVN并用我的机器做服务器来实现版本控制,Subversion是个开源的版本控制服务端软件,而TortoiseSVN就是Subversion客户端之一,下面记录下我的安装过程。
Subversion下载(当前版本是1.4.5):进入下载页面
TortoiseSVN与语言包下载(当前版本1.4.7):进入下载页面
下载下来后先安装Subversion,目录最好采用英文,因为我是在虚拟机里安装只有一个C盘,所以安装路径为:C:\Subversion,当然建议你安装在别的盘,以后重做系统只要用命令安装下服务就可以用了。TortoiseSVN的安装目录采用默认即可,安装完成后需要重启。
接下来创建版本库,在这里我把我的版本库指定为C:\SVN\Repository,右击Repository目录,选择TortoiseSVN->在此创建版本库,版本库类型选择默认(FSFS),确定后创建成功。命令行创建命令为:
svnadmin create c:\svn\repository
这时C:\SVN\Repository目录内就会出现若干文件夹及文件。
下面是实现身份验证,打开C:\SVN\Repository\conf\svnserve.conf文件,去掉password-db = passwd前面的#号来指定密码库文件为passwd文件,然后打开passwd文件,在# sally = sallyssecret后面加入你的身份验证信息,格式为“用户名 = 密码”,我这里添写:admin = admin888
接着启动Subversion,DOS命令为:svnserve –daemon –root c:\svn\repository ,这时候Subversion开始监听3690端口等待客户端连接,如果像我一样是内网用户,就要在路由器内设置把3690映射一下,这样别人才可以通过公网IP访问到你的Subversion服务,如果想把Subversion安装成服务让他随系统自动启用,就用如下命令。
sc create svnserve binpath= "c:\subversion\bin\svnserve.exe --service --root c:\svn\repository" displayname= "Subversion" depend= tcpip start= auto
注意路径,然后启动Subversion服务:net start svnserve 。
至此Subversion完装完成,下面可以使用TortoiseSVN来连接了,首先找到要上传到版本库的网站目录,然后右击目录,选择TortoiseSVN->导入,我这里的版本库URL添写:svn://localhost/inan_blog,这里的localhost你可以换成你的IP,后面的inan_blog是要放在版本库中源代码的别名,便于分类,点击确定,然后输入在passwd文件里设置的验证信息,开始连接并开始上传源码。
导入完成后就可以通知对方取出版本库中的源码开始开发了,首先在本地建立一个存放项目源码的文件夹,然后右击该文件夹,选择“SVN检出”,这里假设我的公网IP是58.52.168.2,然后版本库URL就应该添写:svn://58.52.168.2/inan_blog ,检出至目录默认就是当前新建的目录,然后点击确定,出现验证对话框,同样输入在passwd文件里设定的验证信息,就开始下载源码至本地并可以进行开发了。
修改了源码之后,被修改的文件的图标会自动标识出已更改,这时只需要右击该文件夹,选择“SVN提交”,TortoiseSVN就会列出整个目录已更改的文件,在信息栏里输入一下修改说明,好让别人知道你修改了什么,点击确实就可以把最新修改的源码上传到版本库中,当然在你修改源码之前,应该右击该文件夹,选择“SVN检出”来从版本库检查源码是否有更新并下载最新源码到本地再进行开发,“TortoiseSVN->显示日志”菜单项可以显示对方修改了什么。
如果两人同时在修改了一个文件并提交,TortoiseSVN就会检查修改的代码是否在同一行,如果不是在同一行,它会自动将代码合并,如果在同一行,TortoiseSVN就会显示冲突,这时就需要手动来修改了,具体操作就不多说了,可以参考TortoiseSVN手册,或者下面的教程:
http://svn.coollittlethings.com/document.php
补充:
关于权限设置
————————————————————
独立运行的Subversion权限设置很简单,首先打开snvserve.conf,去掉下面一行的注释
authz-db = authz
然后打开同一目录下的authz这个文件,这个文件便是整个权限控制的核心,先来看一个例子:
[groups]
dev-group = liudong,xfliang
design-group = newidea
[/]
@dev-group = rw
@design-group = r
* =
[/doc]
@design-group = rw
[/webapp]
@design-group = rw
接下来我给大家解释一下这个文件,相信就可以明白Subversion如何来做权限控制的了。
首先我定义了两个组,一个开发组(dev-group),一个设计组(design-group),接下来我让dev-group对整个目录有读写的权限,而design-group只有读权限。但是接下来的两个子目录design-group就有读写权限,也就是说设计组可以读取整个项目,但只能修改doc以及webapp这两个子目录。
*= 这行表示其他人不能读写。当然也可以直接指定某个用户,例如我想让liudong这个用户可以读写webapp目录,那设置如下:
[/webapp]
@design-group = rw
liudong = rw