配置svn服务器

SVN 配置

1、序言

                 Subversion是一个自由,开源的版本控制系统,是CVS的接班人。目前,绝大数开源软件都使用SVN作为代码版本管理软件。在Subversion管理下,文件和目录可以超越时空。Subversion将文件存放在中心版本库里。这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况。这样就可以籍此将数据恢复到以前的版本,并可以查看数据的更改细节。Subversion的版本库可以通过网络访问,从而使用户可以在不同的电脑上进行操作。

                 比如我有一个项目,有很多文件,包括项目的相关文档,图表等,它们都被放在一个文件夹内。随着项目的发展,文件夹内的会增加新的文件,而老的文件也会被修改,同时也许会有一些文件会被删除。在版本控制系统下,每一次对该项目文件夹下的改动,都会被记录,如果哪个文件被删错了,或是想把文档恢复到以前的版本,可以轻而易举的达到。更了不起的是,如果该项目被一个团队来执行,该团队的每一个成员都可以对项目内的文件进行管理和同步,这样就可以保持大家永远 on the same page。

2、建立自己的Repository

2.1 基础知识

   在Subversion(以下简称svn)中有两个概念要清楚,一个是repository(以下简称repo),一个是working copy(以下简称wc)。repo是项目所在的地方,wc是你做修改的地方,两者的内容可以完全一样,也可以完全不同。你在wc中所做的修改可以commit到repo中,如果你成功地把wc中的内容commit到repo中,那么repo就会自动更新一个版本(revision)。如果不对wc中所做的修改进行commit操作,则wc中所做的任何修改都不好对项目产生任何影响。如果需要,我们可以随时把wc替换成任何一个revision。

           此次SVN是在Ubuntu10.04中配置的,首先,在虚拟机中安装Ubuntu,安装成功后,安装svn打开“终端”,在“终端”中输入:

$sudo apt-get install subversion

这样SVN就完成了。

2.2 建立自己的repo

我准备把版本库建立在/home目录下,首先,在/home目录下新建一个svnroot的目录,在终端中执行:

$ sudo mkdir svnroot

这样就创建了svnroot目录,然后在svnroot下创建repository目录:

$ sudo mkdir repository

然后就可以创建名为test的版本库,在终端中运行:

$ cd /home/svnroot/repository

$ sudo svnadmin create test

若创建成功,则Subversion的安装便成功完成。

             在此,我们可以为版本库通过—fs-type参数明确的指定文件系统类型,可选的值包括fsfs和bdb。缺省值采用fsfs的数据存储形式。如果想要使用bdb作为数据格式,则:

$ sudo svnadmin create --fs-type bdb \test

2.3 导入源代码

现在,我们有一个可用的版本库了,接下来:

$ sudo mkdir -p import/(trunk,branches,tags)

在/home/svnroot目录下创建import目录,它包含trunk,branches,tags三个子目录。

$ sudo import /home/svnroot/import/  file:///home/svnroot/repository/test  -m "Init repository"

通过这条语句将/home/svnroot/import下的目录和文件导入到刚创建的Subversion版本库中,提交后的revision为1。这里,/home/svnroot/import可以使用相对路径,但是file:///home/svnroot/repository/test必须是绝对路径。”-m”是这一版本的注解。

2.4 建立working copy

此后,如果在本地电脑上想checkout刚才建立的repo,只需在任何路径下输入:

$ svn checkout file:///home/svnroot/repository/test working-copy

完成一个working copy的建立。Windows用户需要把路径格式换成file:///X:/path/to/repo。其中X:为repo的盘符。

在wc建立后,我们就可以在里面做任意的修改,如果不满意可以直接用svnrevert恢复,在适当时候就可以将其提交到repo中去。这样就产生了新的版本。

3、用svnserve搭建Subversion服务器

上面介绍了本机上建立repo自用,但如果想把repo放在网络上供其他用户checkout,则还需要架设svn服务器。

设定用户的验证和相应的权限

首先进入到conf目录,并打开svnserve.conf文件。

 $ cd /home/svnroot/repository/test/conf/

 $ sudo vi svnserve.conf

找到以下几行,并把它们之前的“#”去掉,注意,每一行前的空格也同时去掉,否则会出错。

anon-access = read
auth-access = write
password-db = passwd

authz-db = authz

其中anon-access和auth-access分别是匿名和授权用户的权限,默认匿名用户为只读权限,我们将其修改为“none”,拒绝匿名用户的访问。Password-db后的passwd则为定义用户名和密码的文件路径,这个默认与svnserve.conf在同一目录。

anon-access = none

下面配置passwd中内容:

$ sudo vi passwd

在passwd文件的最后增加一行:

[users]

# harry = harrysseret

# sally = sallyssecret

testsvn=test

这样就给testsvn用户忘repo中些权限。

下面配置authz中的内容:

$vi authz

在[groups]下添加,修改内容如下:


它表示群组中的成员对仓库的各个目录的访问权限。

在命令行中运行:

$ killall svnserver;svnserve -d -r /home/svnroot/repository/

这样就启动了svnserve,接下来我们就可以用svn checkout svn://IP/test来创建一个working copy,我们可以在其中做任意修改。

4、用Apache搭建Subversion服务器

4.1准备工作

首先确定Apache正确安装,mod_dav和mod_dav_svn这两个模块也被启动。

 $ sudo apt-get install apache2

$sudo apt-get install libapache2-svn

确定mod_dav和mod_dav_svn被打开:

$aemnmod dav dav-svn

4.2修改版本库所有者

目前,Repository目录依然为root用户所有,为了让用户能够通过Apache正常读写该目录,我们需要将该目录以及该目录的上层目录svnroot的所有权交给Apache httpd。

进入/home目录,修改svn仓库的所有者:

$ sudo chown -R www-data:www-data svnroot

4.3生成身份认证文件

身份认证文件保存用户的用户名和密码,用于确定用户身份。

身份认证文件放在/home/svnroot/repository下,文件名为pwdfile。

$ sudo htpasswd -c /home/svnroot/repository/pwdfile first-user

然后输入密码,第一次添加用户时需要加“-c”,之后就不要加了,否则会替换原先的加入的。

$ sudo htpasswd -c  /home/svnroot/repository/pwdfile second-user

pwdfile文件的内容如下:


最后将pwdfile文件的所有者改为www-data。

4.4创建授权文件

授权文件用于确定每个用户对特定目录的操作权限,格式参考版本库下的conf/authz。我们把conf下的authz文件复制到/home/svnroot/reporsitory目录下,然后加以修改。

转到repository目录下,修改authz文件:

$sudo vi authz

Authz文件修改后的内容如下:


将authz文件的所有者改为www-data。

4.5修改Apache配置文件

执行:

$ sudo vi /etc/apache2/mods-available/dav_svn.conf

修改dav_svn文件中的内容,如下:


最后重启Apache,打开浏览器访问http://IP/svn/test,输入合法的用户名和密码便可以访问版本库了。

$ sudo /etc/init.d/apache2 restart 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值