一、搭建 Subversion 服务器

1、首先需要安装 subversion 这个软件:
sudo apt-get install subversion

注:使用apt-get安装软件,ubuntu默认将软件下载到 /etc/bash_completion.d/ 目录下,可使用 sudoapt-get source packagename 下载源码包,也是下载到 /etc/bash_completion.d/下。

2、在 /home/yuchao 下建立一个 repo,名称为 svnproject:
svnadmin create /home/yuchao/svnproject

3、然后把 ~/works/andriod_src 目录下的内容导入到这个 repo 中:
svn import -m "projectName" ~/works/andriod_src file:///home/yuchao/svnproject

4、最后给这个 repo 建立一个 svn 自带的 svnserve:
sudo svnserve -d -r /home/declan/svnproject  或者  sudo svnserve -d -r /home/yuchao/svnproject --listen-host 0.0.0.0 --listen-port 3690

5、svn服务器默认使用3690端口号,svn要使用非默认端口,可以在svnserve后面加一个 --listen-port 21 来修改svn使用的端口号:

svnserve -d -r /home/declan/svnproject --listen-port 21

6、查看进程使用端口号及结束进程

使用命令 sudo netstat -ntlp,可以查看到目前系统网络服务器的运行情况,然后使用 sudo kill -9 pid,结束进程。

或者 ps -ef|grep svnserve 查看进程,并使用killall svnserve来关闭进程。

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

现在我们先建立一个叫 project1 的 repo,然后转到 project1中:

svnadmin create d:\svnprojects\project1
cd d:\svnprojects\project1

project1 目录下有一堆目录,进入 conf 并打开 svnserve.conf 这个文件,找到以下几行,并把前面的注解符号 ‘#’ 去掉,注意千万在每行的前面别留任何空格。
anon-access = read
auth-access = write
password-db = passwd
其中 anon-access 和 auth-access分别为匿名和有权限用户的权限,默认给匿名用户只读的权限,这很好,我们不需要改它们。但如果想拒绝匿名用户的访问,只需把 read 改成 none就能达到目的。password-db 后的 passwd 则为定义用户名及密码的文件路径。这个文件默认跟 snvserve.conf在同一个目录,下面看看怎么配置 passwd 中的内容。

[user]
# harry = harryssecret
# sally = sallyssecret

harry 和 sally 这两行分别定义了可以对 repo 进行写入的用户的用户名和密码。我们可以在下面加上自己的用户名和密码,比如

testsvn = tester

这样就给了用户 testsvn 往 repo 中写的权限。存盘退出后,svn 服务器就算正式可以运行了!把所有需要管理的项目都放在d:\svnprojects 这个目录下,像正常那样用 svnadmin create 命令建立 repo,如果要 checkoutrepo,则在命令行中输入:

svn checkout svn://192.168.0.1/project1

如果要 commit 刚需要输入刚才设置好的用户名和密码:

svn commit -m "we are commiting changes!" --username testsvn --password tester

二、 利用apache 搭建基于http的svn 服务器

1.Subversion 已经包含在 main 仓库中。所以,要安装 Subversion,您只需要简单的运行:
$ sudo apt-get install subversion
$ sudo apt-get install libapache2-svn

2. 服务器配置
(1) 创建 SVN 仓库
许多位置都可以放置 Subversion 文件仓库,其中两个最常用的是:/usr/local/svn 以及 /home/svn。我存放在 /home/svn.
(2) 创建目录:
$ sudo mkdir -p /home/svn/myproject
(3) 创建Subversion库:
$ sudo svnadmin create /home/svn/myproject
(4) 将所有权授予Apache(www-data), 使之能对库文件进行读写操作:
$ sudo chown -R www-data:www-data /home/svn/myproject

3、配置Apache2(使用基本验证方式,即用户名和密码)
修改/etc/apache2/mods-available/dav_svn.conf, 将对应行改为:
     <Location /repos>
       DAV svn
       SVNPath  /home/svn/myproject
       AuthType Basic
       AuthName “Subversion repository”
       AuthUserFile /etc/subversion/passwd
       <LimitExcept GET PROPFIND OPTIONS REPORT>
         Require valid-user
       </LimitExcept>
     </Location>
可选步骤:添加用户验证文件(添加后,andyluo使用Subversion就不用输入密码了):
    # sudo htpasswd -c /etc/subversion/passwd andyluo

 (Apache提供了一个htpasswd工具来管理可接受的用户名和密码,这些就是你希望赋予Subversion特别权限的用户。)

或者让我们通过一个新文件给例如Sally和Harry用户赋提交权限,首先,我们需要添加他们到密码文件。

$ htpasswd -cm /etc/svn-auth-file harry
New password: *****
Re-type new password: *****
Adding password for user harry
$ htpasswd -m /etc/svn-auth-file sally
New password: *******
Re-type new password: *******
Adding password for user sally

    下一步,你需要在httpd.confLocation区里添加一些指示来告诉Apache如何来使用这些密码文件,AuthType指示指定系统使用的认证类型,这种情况下,我们需要指定Basic认证系统,AuthName是你提供给认证域一个任意名称,大多数浏览器会在向用户询问名称和密码的弹出窗口里显示这个名称,最终,使用AuthUserFile指示来指定使用htpasswd创建的密码文件的位置。

添加完这三个指示,你的<Location>区块一定像这个样子:

<Location /svn>
DAV svn
SVNParentPath /usr/local/svn
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /etc/svn-auth-file
</Location>

4、重启Apache2:
    # sudo /etc/init.d/apache2 restart
5、打开浏览器,访问http://localhost/repos, 就可以看到Subversion库的网页。
6、添加/home/andyluo/workspace中的文件到http://localhost/repos下的workspace目录
    $ svn import -m “操作注释” /home/andyluo/workspace http://localhost/repos/workspace
7、checkout http://localhost/repos/workspace 中的文件到/home/andyluo/test
    $ svn checkout http://localhost/repos/workspace /home/andyluo/test    

 posted on 2010-07-13 09:31  chao_yu  阅读(934)  评论(0编辑  收藏  举报